Release coccinelle-0.2.3rc1
authorCoccinelle <cocci@diku.dk>
Sun, 3 Oct 2010 12:03:51 +0000 (14:03 +0200)
committerRene Rydhof Hansen <rrh@cs.aau.dk>
Sun, 3 Oct 2010 12:03:51 +0000 (14:03 +0200)
Release Candidate 1 for coccinelle-0.2.3

233 files changed:
Makefile
Makefile.release [new file with mode: 0644]
changes.txt
cocci.ml
cocci.mli
commitmsg
commons/common.ml
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
demos/orgmode.cocci
docs/manual/cocci_syntax.tex
docs/manual/copyright.txt
docs/manual/examples.tex
docs/manual/installing.tex
docs/manual/introduction.tex
docs/manual/isomorphisms.tex
docs/manual/macros.tex
docs/manual/main.tex
docs/manual/main_grammar.pdf
docs/manual/main_grammar.tex
docs/manual/main_options.tex
docs/manual/manual.pdf
docs/manual/options.pdf
docs/manual/parsing.tex
docs/manual/python.tex
docs/manual/spatch_options.tex
docs/manual/tips.tex
editors/emacs/cocci.el
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/config.ml.in
globals/flag.ml
main.ml
parsing_c/ast_c.ml
parsing_c/compare_c.ml
parsing_c/cpp_token_c.ml
parsing_c/flag_parsing_c.ml
parsing_c/parser_c.mly
parsing_c/pretty_print_c.ml
parsing_c/type_annoter_c.ml
parsing_c/unparse_c.ml
parsing_c/unparse_cocci.ml
parsing_c/unparse_cocci.mli
parsing_c/unparse_hrule.ml
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.mli
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_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/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/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/._d/pycaml.d [new file with mode: 0644]
pycaml/dllpycaml_stubs.so [new file with mode: 0755]
pycaml/libpycaml_stubs.a [new file with mode: 0644]
pycaml/pycaml.a [new file with mode: 0644]
pycaml/pycaml.cma [new file with mode: 0644]
pycaml/pycaml.cmi [new file with mode: 0644]
pycaml/pycaml.cmo [new file with mode: 0644]
pycaml/pycaml.cmx [new file with mode: 0644]
pycaml/pycaml.cmxa [new file with mode: 0644]
pycaml/pycaml.customtop [new file with mode: 0755]
pycaml/pycaml.o [new file with mode: 0644]
pycaml/pycaml_ml.o [new file with mode: 0644]
python/coccilib/org.py
python/no_pycocci.ml
python/no_pycocci_aux.ml
python/yes_pycocci.ml
python/yes_pycocci_aux.ml
standard.iso
test.ml
testing.ml
testing.mli
tests/bad_kfree.c [new file with mode: 0644]
tests/bad_kfree.cocci [new file with mode: 0644]
tests/bad_kfree.res [new file with mode: 0644]
tests/double_lines.c [new file with mode: 0644]
tests/double_lines.cocci [new file with mode: 0644]
tests/double_lines.res [new file with mode: 0644]
tests/fnty.c [new file with mode: 0644]
tests/fnty.cocci [new file with mode: 0644]
tests/fnty.res [new file with mode: 0644]
tests/insdef.c [new file with mode: 0644]
tests/insdef.cocci [new file with mode: 0644]
tests/insdef.res [new file with mode: 0644]
tools/alloc_free.ml
tools/bridge.ml
tools/dir_stats.ml
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
tools/spp.ml

index 1a4cad6..62afbfe 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -238,14 +238,14 @@ distclean::
 preinstall: scripts/spatch scripts/spatch.opt scripts/spatch.byte
 
 # user will use spatch to run spatch.opt (native)
-scripts/spatch:
+scripts/spatch: Makefile.config
        cp scripts/spatch.sh scripts/spatch.tmp2
        sed "s|SHAREDIR|$(SHAREDIR)|g" scripts/spatch.tmp2 > scripts/spatch.tmp
        sed "s|LIBDIR|$(LIBDIR)|g" scripts/spatch.tmp > scripts/spatch
        rm -f scripts/spatch.tmp2 scripts/spatch.tmp
 
 # user will use spatch to run spatch (bytecode)
-scripts/spatch.byte:
+scripts/spatch.byte: Makefile.config
        cp scripts/spatch.sh scripts/spatch.byte.tmp3
        sed "s|\.opt||" scripts/spatch.byte.tmp3 > scripts/spatch.byte.tmp2
        sed "s|SHAREDIR|$(SHAREDIR)|g" scripts/spatch.byte.tmp2 \
@@ -257,7 +257,7 @@ scripts/spatch.byte:
                scripts/spatch.byte.tmp
 
 # user will use spatch.opt to run spatch.opt (native)
-scripts/spatch.opt:
+scripts/spatch.opt: Makefile.config
        cp scripts/spatch.sh scripts/spatch.opt.tmp2
        sed "s|SHAREDIR|$(SHAREDIR)|g" scripts/spatch.opt.tmp2 \
                > scripts/spatch.opt.tmp
@@ -342,214 +342,10 @@ version:
 
 
 ##############################################################################
-# Package rules
+# Deb package (for Ubuntu) and release rules
 ##############################################################################
 
-PACKAGE=$(PRJNAME)-$(VERSION)
-CCPACKAGE=coccicheck-$(CCVERSION)
-
-BINSRC=spatch env.sh env.csh standard.h standard.iso \
-       *.txt \
-       docs/manual/manual.pdf docs/manual/options.pdf docs/manual/main_grammar.pdf docs/spatch.1 \
-       docs/manual/cocci-python.txt \
-       demos/*
-BINSRC-PY=$(BINSRC) $(PYLIB) python/coccilib/
-BINSRC2=$(BINSRC:%=$(PACKAGE)/%)
-BINSRC2-PY=$(BINSRC-PY:%=$(PACKAGE)/%)
-
-TMP=/tmp
-OCAMLVERSION=$(shell ocaml -version |perl -p -e 's/.*version (.*)/$$1/;')
-
-# Procedure to do first time:
-#  cd ~/release
-#  cvs checkout coccinelle -dP
-#  cd coccinelle
-#
-# Procedure to do each time:
-#
-#  1) make prepackage # WARN: These will clean your local rep. of pending modifications
-#
-#  UPDATE VERSION number in globals/config.ml.in
-#  and commit it with
-#
-#  2) make release
-#
-#  The project is then automatically licensified.
-#
-#  Remember to comment the -g -dtypes in this Makefile
-#  You can also remove a few things, for instance I removed in this
-#   Makefile things related to popl/ and popl09/
-#  make sure that ocaml is the distribution ocaml of /usr/bin, not ~pad/...
-#
-#  3) make package
-#
-#  if WEBSITE is set properly, you can also run 'make website'
-# Check that run an ocaml in /usr/bin
-
-# To test you can try compile and run spatch from different instances
-# like my ~/coccinelle, ~/release/coccinelle, and the /tmp/coccinelle-0.X
-# downloaded from the website.
-
-# For 'make srctar' it must done from a clean
-# repo such as ~/release/coccinelle. It must also be a repo where
-# the scripts/licensify has been run at least once.
-# For the 'make bintar' I can do it from my original repo.
-
-prepackage:
-       cvs up -CdP
-       $(MAKE) distclean
-       sed -i "s|^OCAMLCFLAGS=.*$$|OCAMLCFLAGS=|" Makefile
-
-release:
-       cvs ci -m "Release $(VERSION)" globals/config.ml.in
-       $(MAKE) licensify
-
-package:
-       $(MAKE) package-src
-       $(MAKE) package-nopython
-       $(MAKE) package-python
-
-package-src:
-       $(MAKE) distclean       # Clean project
-       $(MAKE) srctar
-       $(MAKE) coccicheck
-
-package-nopython:
-       $(MAKE) distclean       # Clean project
-       ./configure --without-python
-       $(MAKE) docs
-       $(MAKE) bintar
-       $(MAKE) bytecodetar
-       $(MAKE) staticbintar
-
-package-python:
-       $(MAKE) distclean       # Clean project
-       ./configure             # Reconfigure project with Python support
-       $(MAKE) docs
-       $(MAKE) bintar-python
-       $(MAKE) bytecodetar-python
-
-
-# I currently pre-generate the parser so the user does not have to
-# install menhir on his machine. We could also do a few cleanups.
-# You may have first to do a 'make licensify'.
-#
-# update: make docs generates pdf but also some ugly .log files, so
-# make clean is there to remove them while not removing the pdf
-# (only distclean remove the pdfs).
-srctar:
-       make distclean
-       make docs
-       make clean
-       cp -a .  $(TMP)/$(PACKAGE)
-       cd $(TMP)/$(PACKAGE); cd parsing_cocci/; make parser_cocci_menhir.ml
-       cd $(TMP); tar cvfz $(PACKAGE).tgz --exclude-vcs $(PACKAGE)
-       rm -rf  $(TMP)/$(PACKAGE)
-
-
-bintar: all
-       rm -f $(TMP)/$(PACKAGE)
-       ln -s `pwd` $(TMP)/$(PACKAGE)
-       cd $(TMP); tar cvfz $(PACKAGE)-bin-x86.tgz --exclude-vcs $(BINSRC2)
-       rm -f $(TMP)/$(PACKAGE)
-
-staticbintar: all.opt
-       rm -f $(TMP)/$(PACKAGE)
-       ln -s `pwd` $(TMP)/$(PACKAGE)
-       make static
-       cd $(TMP); tar cvfz $(PACKAGE)-bin-x86-static.tgz --exclude-vcs $(BINSRC2)
-       rm -f $(TMP)/$(PACKAGE)
-
-# add ocaml version in name ?
-bytecodetar: all
-       rm -f $(TMP)/$(PACKAGE)
-       ln -s `pwd` $(TMP)/$(PACKAGE)
-       make purebytecode
-       cd $(TMP); tar cvfz $(PACKAGE)-bin-bytecode-$(OCAMLVERSION).tgz --exclude-vcs $(BINSRC2)
-       rm -f $(TMP)/$(PACKAGE)
-
-bintar-python: all
-       rm -f $(TMP)/$(PACKAGE)
-       ln -s `pwd` $(TMP)/$(PACKAGE)
-       cd $(TMP); tar cvfz $(PACKAGE)-bin-x86-python.tgz --exclude-vcs $(BINSRC2-PY)
-       rm -f $(TMP)/$(PACKAGE)
-
-# add ocaml version in name ?
-bytecodetar-python: all
-       rm -f $(TMP)/$(PACKAGE)
-       ln -s `pwd` $(TMP)/$(PACKAGE)
-       make purebytecode
-       cd $(TMP); tar cvfz $(PACKAGE)-bin-bytecode-$(OCAMLVERSION)-python.tgz --exclude-vcs $(BINSRC2-PY)
-       rm -f $(TMP)/$(PACKAGE)
-
-coccicheck:
-       cp -a `pwd`/scripts/coccicheck $(TMP)/$(CCPACKAGE)
-       tar cvfz $(TMP)/$(CCPACKAGE).tgz -C $(TMP) --exclude-vcs $(CCPACKAGE)
-       rm -rf $(TMP)/$(CCPACKAGE)
-
-clean-packages::
-       rm -f $(TMP)/$(PACKAGE).tgz
-       rm -f $(TMP)/$(PACKAGE)-bin-x86.tgz
-       rm -f $(TMP)/$(PACKAGE)-bin-x86-static.tgz
-       rm -f $(TMP)/$(PACKAGE)-bin-bytecode-$(OCAMLVERSION).tgz
-       rm -f $(TMP)/$(PACKAGE)-bin-x86-python.tgz
-       rm -f $(TMP)/$(PACKAGE)-bin-bytecode-$(OCAMLVERSION)-python.tgz
-       rm -f $(TMP)/$(CCPACKAGE).tgz
-
-#
-# No need to licensify 'demos'. Because these is basic building blocks
-# to use SmPL.
-#
-TOLICENSIFY=ctl engine globals parsing_cocci popl popl09 python scripts tools
-licensify:
-       ocaml str.cma tools/licensify.ml
-       set -e; for i in $(TOLICENSIFY); do cd $$i; ocaml str.cma ../tools/licensify.ml; cd ..; done
-
-# When checking out the source from diku sometimes I have some "X in the future"
-# error messages.
-fixdates:
-       echo do 'touch **/*.*'
-
-#fixCVS:
-#      cvs update -d -P
-#      echo do 'rm -rf **/CVS'
-
-ocamlversion:
-       @echo $(OCAMLVERSION)
-
-
-##############################################################################
-# Packaging rules -- To build deb packages
-##############################################################################
-EXCL_SYNC=--exclude ".git"          \
-       --exclude ".gitignore"      \
-       --exclude ".cvsignore"      \
-       --exclude "tests"           \
-       --exclude "TODO"            \
-       --cvs-exclude
-
-prepack:
-       rsync -a $(EXCL_SYNC) . $(TMP)/$(PACKAGE)
-       $(MAKE) -C $(TMP)/$(PACKAGE) licensify
-       rm -rf $(TMP)/$(PACKAGE)/tools
-
-packsrc: prepack
-#      $(MAKE) -C $(TMP)/$(PACKAGE)/debian lucid
-       $(MAKE) -C $(TMP)/$(PACKAGE)/debian karmic
-       $(MAKE) push
-       rm -rf  $(TMP)/$(PACKAGE)/
-
-push:
-       cd $(TMP)/ && for p in `ls $(PRJNAME)_$(VERSION).deb*_source.changes`; do dput $(PRJNAME) $$p ; done
-       rm -rf $(TMP)/$(PRJNAME)_$(VERSION).deb*_source.changes
-       rm -rf $(TMP)/$(PRJNAME)_$(VERSION).deb*_source.$(PRJNAME).upload
-       rm -rf $(TMP)/$(PRJNAME)_$(VERSION).deb*.dsc
-       rm -rf $(TMP)/$(PRJNAME)_$(VERSION).deb*.tar.gz
-
-packbin: prepack
-       $(MAKE) -C $(TMP)/$(PACKAGE)/debian binary
-       rm -rf  $(TMP)/$(PACKAGE)/
-       rm -rf $(TMP)/$(PRJNAME)_$(VERSION).deb*_source.build
+include Makefile.release
 
 ##############################################################################
 # Developer rules
diff --git a/Makefile.release b/Makefile.release
new file mode 100644 (file)
index 0000000..d3a5c0b
--- /dev/null
@@ -0,0 +1,228 @@
+
+##############################################################################
+# Release rules to generate website archives
+##############################################################################
+
+PACKAGE=$(PRJNAME)-$(VERSION)
+CCPACKAGE=coccicheck-$(CCVERSION)
+
+EXCLUDE=debian
+
+BINSRC=spatch env.sh env.csh standard.h standard.iso \
+       *.txt \
+       docs/manual/manual.pdf docs/manual/options.pdf docs/manual/main_grammar.pdf docs/spatch.1 \
+       docs/manual/cocci-python.txt \
+       demos/*
+BINSRC-PY=$(BINSRC) $(PYLIB) python/coccilib/
+
+EXCL=$(EXCLUDE:%=--exclude=$(PACKAGE)/%)
+BINSRC2=$(BINSRC:%=$(PACKAGE)/%)
+BINSRC2-PY=$(BINSRC-PY:%=$(PACKAGE)/%)
+
+TMP=/tmp
+OCAMLVERSION=$(shell ocaml -version |perl -p -e 's/.*version (.*)/$$1/;')
+
+# Procedure to do first time:
+#  cd ~/release
+#  cvs checkout coccinelle -dP
+#  cd coccinelle
+#
+# Procedure to do each time:
+#
+#  1) make prerelease # WARN: These will clean your local rep. of pending modifications
+#
+#  UPDATE VERSION number in globals/config.ml.in
+#  and commit it with
+#
+#  2) make release
+#
+#  The project is then automatically licensified.
+#
+#  Remember to comment the -g -dtypes in this Makefile
+#  You can also remove a few things, for instance I removed in this
+#   Makefile things related to popl/ and popl09/
+#  make sure that ocaml is the distribution ocaml of /usr/bin, not ~pad/...
+#
+#  3) make package
+#
+#  if WEBSITE is set properly, you can also run 'make website'
+# Check that run an ocaml in /usr/bin
+
+# To test you can try compile and run spatch from different instances
+# like my ~/coccinelle, ~/release/coccinelle, and the /tmp/coccinelle-0.X
+# downloaded from the website.
+
+# For 'make srctar' it must done from a clean
+# repo such as ~/release/coccinelle. It must also be a repo where
+# the scripts/licensify has been run at least once.
+# For the 'make bintar' I can do it from my original repo.
+
+prerelease:
+       cvs up -CdP
+       $(MAKE) distclean
+       sed -i "s|^OCAMLCFLAGS=.*$$|OCAMLCFLAGS=|" Makefile
+
+release:
+       cvs ci -m "Release $(VERSION)" globals/config.ml.in
+       $(MAKE) licensify
+
+package:
+       $(MAKE) package-src
+       $(MAKE) package-nopython
+       $(MAKE) package-python
+
+package-src:
+       $(MAKE) distclean       # Clean project
+       $(MAKE) srctar
+       $(MAKE) coccicheck
+
+package-nopython:
+       $(MAKE) distclean       # Clean project
+       ./configure --without-python
+       $(MAKE) docs
+       $(MAKE) bintar
+       $(MAKE) bytecodetar
+       $(MAKE) staticbintar
+
+package-python:
+       $(MAKE) distclean       # Clean project
+       ./configure             # Reconfigure project with Python support
+       $(MAKE) docs
+       $(MAKE) bintar-python
+       $(MAKE) bytecodetar-python
+
+
+# I currently pre-generate the parser so the user does not have to
+# install menhir on his machine. We could also do a few cleanups.
+# You may have first to do a 'make licensify'.
+#
+# update: make docs generates pdf but also some ugly .log files, so
+# make clean is there to remove them while not removing the pdf
+# (only distclean remove the pdfs).
+srctar:
+       make distclean
+       make docs
+       make clean
+       cp -a .  $(TMP)/$(PACKAGE)
+       cd $(TMP)/$(PACKAGE); cd parsing_cocci/; make parser_cocci_menhir.ml
+       cd $(TMP); tar cvfz $(PACKAGE).tgz --exclude-vcs $(EXCL) $(PACKAGE)
+       rm -rf  $(TMP)/$(PACKAGE)
+
+
+bintar: all
+       rm -f $(TMP)/$(PACKAGE)
+       ln -s `pwd` $(TMP)/$(PACKAGE)
+       cd $(TMP); tar cvfz $(PACKAGE)-bin-x86.tgz --exclude-vcs $(BINSRC2)
+       rm -f $(TMP)/$(PACKAGE)
+
+staticbintar: all.opt
+       rm -f $(TMP)/$(PACKAGE)
+       ln -s `pwd` $(TMP)/$(PACKAGE)
+       make static
+       cd $(TMP); tar cvfz $(PACKAGE)-bin-x86-static.tgz --exclude-vcs $(BINSRC2)
+       rm -f $(TMP)/$(PACKAGE)
+
+# add ocaml version in name ?
+bytecodetar: all
+       rm -f $(TMP)/$(PACKAGE)
+       ln -s `pwd` $(TMP)/$(PACKAGE)
+       make purebytecode
+       cd $(TMP); tar cvfz $(PACKAGE)-bin-bytecode-$(OCAMLVERSION).tgz --exclude-vcs $(BINSRC2)
+       rm -f $(TMP)/$(PACKAGE)
+
+bintar-python: all
+       rm -f $(TMP)/$(PACKAGE)
+       ln -s `pwd` $(TMP)/$(PACKAGE)
+       cd $(TMP); tar cvfz $(PACKAGE)-bin-x86-python.tgz --exclude-vcs $(BINSRC2-PY)
+       rm -f $(TMP)/$(PACKAGE)
+
+# add ocaml version in name ?
+bytecodetar-python: all
+       rm -f $(TMP)/$(PACKAGE)
+       ln -s `pwd` $(TMP)/$(PACKAGE)
+       make purebytecode
+       cd $(TMP); tar cvfz $(PACKAGE)-bin-bytecode-$(OCAMLVERSION)-python.tgz --exclude-vcs $(BINSRC2-PY)
+       rm -f $(TMP)/$(PACKAGE)
+
+coccicheck:
+       cp -a `pwd`/scripts/coccicheck $(TMP)/$(CCPACKAGE)
+       tar cvfz $(TMP)/$(CCPACKAGE).tgz -C $(TMP) --exclude-vcs $(CCPACKAGE)
+       rm -rf $(TMP)/$(CCPACKAGE)
+
+clean-packages::
+       rm -f $(TMP)/$(PACKAGE).tgz
+       rm -f $(TMP)/$(PACKAGE)-bin-x86.tgz
+       rm -f $(TMP)/$(PACKAGE)-bin-x86-static.tgz
+       rm -f $(TMP)/$(PACKAGE)-bin-bytecode-$(OCAMLVERSION).tgz
+       rm -f $(TMP)/$(PACKAGE)-bin-x86-python.tgz
+       rm -f $(TMP)/$(PACKAGE)-bin-bytecode-$(OCAMLVERSION)-python.tgz
+       rm -f $(TMP)/$(CCPACKAGE).tgz
+
+#
+# No need to licensify 'demos'. Because these is basic building blocks
+# to use SmPL.
+#
+TOLICENSIFY=ctl engine globals parsing_cocci popl popl09 python scripts tools
+licensify:
+       ocaml str.cma tools/licensify.ml
+       set -e; for i in $(TOLICENSIFY); do cd $$i; ocaml str.cma ../tools/licensify.ml; cd ..; done
+
+# When checking out the source from diku sometimes I have some "X in the future"
+# error messages.
+fixdates:
+       echo do 'touch **/*.*'
+
+#fixCVS:
+#      cvs update -d -P
+#      echo do 'rm -rf **/CVS'
+
+ocamlversion:
+       @echo $(OCAMLVERSION)
+
+
+##############################################################################
+# Packaging rules -- To build deb packages
+##############################################################################
+#
+# Run 'make packsrc' to build a Deb source package
+#
+# The package is prepared in $(TMP), usually /tmp
+# Once the package has been build, it is uploaded
+# to a PPA on launchpad.
+#
+# You should have a "coccinelle" project configured
+# for dput in your ~/.dput.cf file.
+#
+# The 'packbin' target is to build a deb package
+# locally. It is only for testing purpose.
+#
+
+EXCL_SYNC=--exclude ".git"          \
+       --exclude ".gitignore"      \
+       --exclude ".cvsignore"      \
+       --exclude "tests"           \
+       --exclude "TODO"            \
+       --cvs-exclude
+
+packsrc: prepack
+       $(MAKE) -C $(TMP)/$(PACKAGE)/debian lucid
+       $(MAKE) -C $(TMP)/$(PACKAGE)/debian karmic
+       $(MAKE) push
+       rm -rf  $(TMP)/$(PACKAGE)/
+
+packbin: prepack
+       $(MAKE) -C $(TMP)/$(PACKAGE)/debian binary
+       rm -rf  $(TMP)/$(PACKAGE)/
+       rm -rf $(TMP)/$(PRJNAME)_$(VERSION).deb*_source.build
+
+prepack:
+       rsync -a $(EXCL_SYNC) . $(TMP)/$(PACKAGE)
+       $(MAKE) -C $(TMP)/$(PACKAGE) licensify
+       rm -rf $(TMP)/$(PACKAGE)/tools
+
+push:
+       cd $(TMP)/ && for p in `ls $(PRJNAME)_$(VERSION).deb*_source.changes`; do dput $(PRJNAME) $$p ; done
+       rm -rf $(TMP)/$(PRJNAME)_$(VERSION).deb*_source.changes
+       rm -rf $(TMP)/$(PRJNAME)_$(VERSION).deb*_source.$(PRJNAME).upload
+       rm -rf $(TMP)/$(PRJNAME)_$(VERSION).deb*.dsc
+       rm -rf $(TMP)/$(PRJNAME)_$(VERSION).deb*.tar.gz
index cd6ec9f..97724f2 100644 (file)
 - Add more information in documentation, man pages and wiki
 
 
+* 0.2.3
+** Language:
+- <= constraints relating an expression metavariable to one or more
+  inherited expression metavariables that it should be a subexpression of
+- the -inplace and -outplace options have been renamed -in_place and
+  -out_place.  -in_place no longer makes a backup.  A backup can be
+  requested using the option -backup_suffix, eg -backup_suffix .bk
+- identifiers can be constrained to be different from an inherited
+  identifier metavariable, or from a set containing both concrete
+  identifiers and inherited identifier metavariables.
+
+** Features:
+- drop inconsistent paths check when only one node was matched
+- allow #define id with no definition
+- attempt to add newlines in the generated code when function calls in the
+  smpl cause passing column 80
+- allow - in front of statement level nests, if everything inside the nest
+  is also -
+
+** Bugfix:
+- drop inconsistent paths check when only one node was matched
+- better take into account virtual rules when selecting glimpse tokens
+- print diff when only a comment is added
+- the type of the C code !x should be int regardless of the type of x
+- allow python code at the beginning of an included file
+- better adjustment of whitespace when deleting adjacent lines.  Thanks to
+  Wolfram Sang for pointing out the problem.
+- allow metavariables to be inherited from included files
+- allow ? on goto
+- more graceful failure on finding a strange character in a macro parameter
+  list
+- support Parameter metavariables
+- add space after the last comma in an added portion of an argument list
+
 * 0.2.2
 ** Language:
 - Added ToTestExpression to iso language, see standard.iso for an
 - isomorphisms don't apply under signed/unsigned, to prevent the creation
   of things like unsigned signed int.  Need a better solution for this.
 
-
 * 0.1.3
 
 ** Features: 
index 59cbe46..0ddd588 100644 (file)
--- a/cocci.ml
+++ b/cocci.ml
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Common
 
 module CCI = Ctlcocci_integration
@@ -1158,7 +1180,7 @@ let apply_python_rule r cache newes e rules_that_have_matched
     begin
       let (_, mv, _) = r.scr_ast_rule in
       let ve =
-       (List.map (function (n,v) -> (("virtual",n),Ast_c.MetaIdVal v))
+       (List.map (function (n,v) -> (("virtual",n),Ast_c.MetaIdVal (v,[])))
           !Flag.defined_virtual_env) @ e in
       let not_bound x = not (Pycocci.contains_binding ve x) in
       (match List.filter not_bound mv with
@@ -1635,7 +1657,9 @@ let pre_engine2 (coccifile, isofile) =
         function
             InitialScriptRuleCocciInfo(r) ->
               (if List.mem r.language languages
-               then failwith ("double initializer found for "^r.language));
+               then
+                failwith
+                  ("double initializer found for "^r.language));
               if interpret_dependencies [] [] r.scr_dependencies
               then
                 begin
index d2b6546..a2f0cba 100644 (file)
--- a/cocci.mli
+++ b/cocci.mli
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Common
 
 (* full_engine takes (coccifile, isofile) and cfiles in parameters and
dissimilarity index 99%
index c522439..660b462 100644 (file)
--- a/commitmsg
+++ b/commitmsg
@@ -1,46 +1,3 @@
-Release coccinelle-0.2.2
-
-** Language:
-   - Added ToTestExpression to iso language, see standard.iso for an
-     explanation
-   - Added depends on to initialize and finalize script code
-
-** Features:
-   - Update Emacs mode (cocci.el) to support 'virtual' rules and fix other
-     keywords sush as 'depends on', 'using', 'disable'
-   - better treatment of != 0 in isos, communtativity for ==/!= for all
-     constants
-   - allow adding // comments and blank lines (even after cocci + code)
-   - Add support for multiple -I options
-
-** Bugfix:
-   - correct interaction between virtual rules and included .cocci files
-   - improvement in treatment of ! in isos, to avoid duplicating + code
-   - improvement in treatment of metavars as isos, to avoid duplicating + code
-     between toplevel and variable instantiation
-   - test expression of smpl conditional, etc no longer assumed to have type
-     int
-   - correct + line numbers in the patch produced when using *
-   - iso constant metavariable matches an identifier whose name is all capital
-     letters, eg NULL
-   - allow / at the end of the name of a directory (-dir) or patch prefix
-     (-patch)
-   - dropped space in + code after the binding of a type metavariable that is
-     a pointer type
-   - better handling of . or .. in -dir name
-   - allow keywords and metavariable names in identifier constraints (not sure
-     keywords is very useful, though)
-   - no lubtype on arguments of && and || in SmPL
-   - allow unknown as type for array indices in SmPL
-   - support matching of static annotation on functions that are both static
-     and inline
-   - support ENOTDIR error in Common.lfile_exists, to allow for the case where
-     an include file is in a subdirectory that exists but is an ordinary file,
-     not a directory.
-   - better management of unbound position variables that appear in
-     constraints
-   - cause python parser to skip over // comments, hoping that // is not
-     meaningful inside python
-   - require + on every line of a multiline comment
-   - correct calculation of line numbers when there is script code
-   - always annotate arguments of && || and ! as test expressions in C code.
+Release coccinelle-0.2.3rc1
+
+Release Candidate 1 for coccinelle-0.2.3
index 5bf1316..2d26605 100644 (file)
@@ -1394,7 +1394,7 @@ exception WrongFormat of string
 (* old: let _TODO () = failwith "TODO",  now via fix_caml with raise Todo *)
 
 let internal_error s = failwith ("internal error: "^s)
-let error_cant_have x = internal_error ("cant have this case" ^(dump x))
+let error_cant_have x = internal_error ("cant have this case" ^(dump x))
 let myassert cond = if cond then () else failwith "assert error"
 
 
index 4f86223..b387722 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 
 (* ---------------------------------------------------------------------- *)
 (* Types                                                                  *)
index ee029fb..d39ad0a 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (*external c_counter : unit -> int = "c_counter"*)
 let timeout = 800
 (* Optimize triples_conj by first extracting the intersection of the two sets,
@@ -471,6 +493,7 @@ let merge_subBy eqx (===) (>+<) sub sub' =
 ;;
 
 (* NOTE: functor *)
+(* How could we accomadate subterm constraints here??? *)
 let merge_sub sub sub' =
   merge_subBy SUB.eq_mvar SUB.eq_val SUB.merge_val sub sub'
 
index d7f9735..2fe9d10 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Ast_ctl
 
 module type SUBST =
index 50c5d41..dc6669c 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* option -verbose_ctl_engine *)
 let verbose_ctl_engine = ref false
 
index 3f4cfdf..25adfc9 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Common
 open Format
 
index 9fbafe3..3e14c42 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 
 val pp_ctl:
  ('pred -> unit) * ('mvar -> unit) -> bool (* inline_let_def *) ->
index 32ab52a..c8dbad2 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 
 (* ********************************************************************** *)
 (* Module: EXAMPLE_ENGINE (instance of CTL_ENGINE)                        *)
index 34448df..3ad9c75 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* **********************************************************************
  *
  * Wrapping for FUNCTORS and MODULES
index 231dc2c..caab704 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 type info = int
 
 type ('pred, 'mvar) wrapped_ctl =
index d72baad..d2ffdff 100644 (file)
@@ -37,11 +37,17 @@ coccilib.org.print_safe_link (p2[0], "arr[i]")
 print ""
 
 cocci.print_main ("foo", p1)
-cocci.print_sec ("foo", p2)
+cocci.print_sec  ("foo", p2)
 cocci.print_secs ("foo", p2)
 
 print ""
 
+cocci.print_main ("", p1)
+cocci.print_sec  ("", p2)
+cocci.print_secs ("", p2)
+
+print ""
+
 cocci.print_main ("foo", p1, "ovl-face3")
-cocci.print_sec ("foo", p2, "ovl-face4")
+cocci.print_sec  ("foo", p2, "ovl-face4")
 cocci.print_secs ("foo", p2, "ovl-face4")
index c10585b..8929f7e 100644 (file)
@@ -32,6 +32,7 @@ A HTML version of this documentation is available online at
   \RULE{\rt{include\_cocci}}
   \CASE{using \NT{string}}
   \CASE{using \NT{pathToIsoFile}}
+  \CASE{virtual \T{id} \ANY{, \T{id}}}
 
   \RULE{\rt{changeset}}
   \CASE{\NT{metavariables} \NT{transformation}}
@@ -47,6 +48,11 @@ not be use in this code.  Spatch scans the script code for the next
 \texttt{@} and considers that to be the beginning of the next rule, even if
 \texttt{@} occurs within e.g., a string or a comment.
 
+\texttt{virtual} keyword is used to declare virtual rules. Virtual
+rules may be subsequently used as a dependency for the rules in the
+SmPL file. Whether a virtual rule is defined or not is controlled by
+the \texttt{-D} option on the command line.
+
 % Between the metavariables and the transformation rule, there can be a
 % specification of constraints on the names of the old and new files,
 % analogous to the filename specifications in the standard patch syntax.
@@ -74,11 +80,6 @@ section.
   \RULE{\rt{rulename}}
   \CASE{\T{id} \OPT{extends \T{id}} \OPT{depends on \NT{dep}} \opt{\NT{iso}}
     \opt{\NT{disable-iso}} \opt{\NT{exists}} \opt{expression}}
-  \CASE{script:\T{language} \OPT{depends on \NT{dep}}}
-
-  \RULE{\rt{script\_init\_final}}
-  \CASE{initialize:\T{language}}
-  \CASE{finalize:\T{language}}
 
   \RULE{\rt{dep}}
   \CASE{\NT{pnrule}}
@@ -191,8 +192,9 @@ constrained by its type.
   \CASE{\NT{pmid} \~{}= \NT{regexp}}
 
   \RULE{\rt{pmid\_with\_not\_eq}}
-  \CASE{\NT{pmid} \OPT{!= \T{id}}}
-  \CASE{\NT{pmid} \OPT{!= \ttlb~\NT{COMMA\_LIST}\mth{(}\T{id}\mth{)} \ttrb}}
+  \CASE{\NT{pmid} \OPT{!= \NT{id\_or\_meta}}}
+  \CASE{\NT{pmid}
+     \OPT{!= \ttlb~\NT{COMMA\_LIST}\mth{(}\NT{id\_or\_meta}\mth{)} \ttrb}}
 
   \RULE{\rt{pmid\_with\_virt\_or\_not\_eq}}
   \CASE{virtual.\T{id}}
@@ -206,6 +208,10 @@ constrained by its type.
   \CASE{\T{id}}
   \CASE{\T{integer}}
 
+  \RULE{\rt{id\_or\_meta}}
+  \CASE{\T{id}}
+  \CASE{\T{rulename\_id}.\T{id}}
+
   \RULE{\rt{pmid\_with\_not\_eq\_mid}}
   \CASE{\NT{pmid} \OPT{!= \NT{mid}}}
   \CASE{\NT{pmid} \OPT{!= \ttlb~\NT{COMMA\_LIST}\mth{(}\NT{mid}\mth{)} \ttrb}}
@@ -238,8 +244,8 @@ typing, metavariables for scripts do not include type declarations.
   \RULE{\rt{script\_metavariables}}
   \CASE{@ script:\NT{language} \OPT{depends on \NT{dep}} @
         \any{\NT{script\_metadecl}} @@}
-  \CASE{@ initialize:\NT{language} @}
-  \CASE{@ finalize:\NT{language} @}
+  \CASE{@ initialize:\NT{language} \OPT{depends on \NT{dep}} @}
+  \CASE{@ finalize:\NT{language} \OPT{depends on \NT{dep}} @}
 
   \RULE{\rt{language}} \CASE{python}
 
@@ -812,7 +818,7 @@ in a concise way.
 %%% Local Variables:
 %%% mode: LaTeX
 %%% TeX-master: "main_grammar"
-%%% coding: latin-9
+%%% coding: utf-8
 %%% TeX-PDF-mode: t
 %%% ispell-local-dictionary: "american"
 %%% End:
index 3b35fcb..085de10 100644 (file)
@@ -4,5 +4,6 @@ Copyright (C) 2010 INRIA, University of Copenhagen DIKU
 Copyright (C) 2009, Julia Lawall, Yoann Padioleau, Nicolas Palix
 
     Permission is granted to copy, distribute and/or modify this document
-    under the terms of the GNU Free Documentation License, Version 1.3.
+    under the terms of the GNU Free Documentation License, Version 1.3;
+    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
     A copy of the license is included in the file license.txt
index c9b715f..22951cc 100644 (file)
@@ -536,7 +536,7 @@ Begins by foo: foobar
 %%% Local Variables:
 %%% mode: LaTeX
 %%% TeX-master: "main_grammar"
-%%% coding: latin-9
+%%% coding: utf-8
 %%% TeX-PDF-mode: t
 %%% ispell-local-dictionary: "american"
 %%% End:
index e405401..5be272a 100644 (file)
 \section{Running Coccinelle}
 %coupling: with readme.txt 
 
+
+%%% Local Variables:
+%%% mode: LaTeX
+%%% coding: utf-8
+%%% TeX-PDF-mode: t
+%%% ispell-local-dictionary: "american"
+%%% End:
index 430f2a2..88ed3bc 100644 (file)
@@ -39,6 +39,16 @@ simply do:
 \begin{verbatim}
 $ spatch -sp_file ex1.cocci *.c
 \end{verbatim}
+
+
+Coccinelle primarily targets ANSI C, and supports some GCC extensions.  It
+has only partial support for K\&R C.  K\&R function declarations are only
+recognized if the parameter declarations are indented.  Furthermore, the
+parameter names are subsequently considered to be type names, due to
+confusion with function prototypes, in which a name by itself is indeed the
+name of a type.
+
+
 %command line: 
 
 %can do inplace, or with git, cf chapter on developing ...
@@ -57,3 +67,10 @@ $ spatch -sp_file ex1.cocci *.c
 
 %features:
 %src: darcs manual
+
+%%% Local Variables:
+%%% mode: LaTeX
+%%% coding: utf-8
+%%% TeX-PDF-mode: t
+%%% ispell-local-dictionary: "american"
+%%% End:
index c0348f1..3b4be14 100644 (file)
@@ -1,2 +1,9 @@
 \chapter{Isomorphisms and \texttt{standard.iso}}
 
+
+%%% Local Variables:
+%%% mode: LaTeX
+%%% coding: utf-8
+%%% TeX-PDF-mode: t
+%%% ispell-local-dictionary: "american"
+%%% End:
index 0f44e3d..5001ca4 100644 (file)
@@ -4,4 +4,5 @@
 \newcommand{\cpp}{\texttt{cpp}\xspace}
 
 
-\newcommand{\cocciversion}{0.2.1\xspace}
+\newcommand{\cocciversion}{0.2.2\xspace}
+
index c06003a..e757d98 100644 (file)
@@ -13,6 +13,7 @@
 \usepackage{times}
 \usepackage{fullpage}
 
+\usepackage[utf8]{inputenc}
 \usepackage[T1]{fontenc}
 
 \usepackage{amsmath}
@@ -128,22 +129,27 @@ It is organized as follows:
 
 %coupling: copyright.txt
 Coccinelle copyright is\\
-\copyright 2010, University of Copenhagen DIKU and INRIA.\\
-\copyright 2005-2009, University of Copenhagen DIKU and Ecole des Mines de Nantes.
+\copyright~2010, University of Copenhagen DIKU and INRIA.\\
+\copyright~2005-2009, University of Copenhagen DIKU and Ecole des Mines de Nantes.
 
 Coccinelle is open source and can be freely redistributed under the
 terms of the GNU General Public License version 2. See the file
-\verb+license.txt+ in the distribution for licensing information.
+\verb+license.txt+ in the distribution for licensing information.\\
 
-The present documentation is copyright 2008, 2009 Yoann Padioleau
-and Julia Lawall and distributed under the terms of the
-GNU Free Documentation License version 1.3.
+\noindent
+Copyright \copyright~2010,  Nicolas Palix, Julia Lawall, and Gilles Muller\\
+Copyright \copyright~2008, 2009, Yoann Padioleau, Nicolas Palix, Julia Lawall, and Gilles Muller\\
+    Permission is granted to copy, distribute and/or modify this document
+    under the terms of the GNU Free Documentation License, Version 1.3;
+    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+    A copy of the license is included in the section entitled "GNU
+    Free Documentation License".
 
 \section*{Availability}
 
 Coccinelle can be freely downloaded
-from \verb+http://coccinelle.lip6.fr/+.
-This website contains also additional information.
+from \url{http://coccinelle.lip6.fr}.\\
+This website contains also additional information and a wiki website.
 
 
 \part{User Manual}
@@ -188,6 +194,11 @@ This website contains also additional information.
 % Appendix
 %******************************************************************************
 
+\part{Appendix}
+
+\chapter*{GNU Free Documentation License}
+
+\input{license.txt}
 %index
 
 {\small
@@ -201,3 +212,11 @@ This website contains also additional information.
 %******************************************************************************
 
 \end{document}
+
+%%% Local Variables:
+%%% mode: LaTeX
+%%% TeX-master: t
+%%% coding: utf-8
+%%% TeX-PDF-mode: t
+%%% ispell-local-dictionary: "american"
+%%% End:
index b64df05..30653b9 100644 (file)
Binary files a/docs/manual/main_grammar.pdf and b/docs/manual/main_grammar.pdf differ
index 38c628d..25a3d20 100644 (file)
@@ -3,8 +3,8 @@
 \usepackage{times}
 \usepackage{fullpage}
 
+\usepackage[utf8]{inputenc}
 \usepackage[T1]{fontenc}
-%\usepackage[latin9]{inputenc}
 
 \usepackage{ifthen}
 \usepackage{hevea}
 
 \end{document}
 
+%%% Local Variables:
+%%% mode: LaTeX
+%%% TeX-master: t
+%%% coding: utf-8
+%%% TeX-PDF-mode: t
+%%% ispell-local-dictionary: "american"
+%%% End:
index 8e9a787..72248e6 100644 (file)
@@ -1,5 +1,8 @@
 \documentclass{article}
 
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+
 \usepackage{ifthen}
 
 \usepackage{fullpage}
 \input{spatch_options}
 
 \end{document}
+
+%%% Local Variables:
+%%% mode: LaTeX
+%%% TeX-master: t
+%%% coding: utf-8
+%%% TeX-PDF-mode: t
+%%% ispell-local-dictionary: "american"
+%%% End:
index 54b13f6..e8e15cd 100644 (file)
Binary files a/docs/manual/manual.pdf and b/docs/manual/manual.pdf differ
dissimilarity index 90%
index 9eb276d..1ef1131 100644 (file)
Binary files a/docs/manual/options.pdf and b/docs/manual/options.pdf differ
index 1d17780..e8dae3e 100644 (file)
@@ -1 +1,9 @@
-\chapter{Parsing C, \cpp, and \texttt{standard.h}}
\ No newline at end of file
+\chapter{Parsing C, \cpp, and \texttt{standard.h}}
+
+
+%%% Local Variables:
+%%% mode: LaTeX
+%%% coding: utf-8
+%%% TeX-PDF-mode: t
+%%% ispell-local-dictionary: "american"
+%%% End:
index ef9367d..abe25ae 100644 (file)
@@ -1,4 +1,8 @@
 \documentclass{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+
 \usepackage{listings}
 
 \begin{document}
@@ -42,8 +46,8 @@ def print_secs(ps, msg="", color="ovl-face2") :
 
 %%% Local Variables:
 %%% mode: LaTeX
-%%% TeX-master: "python"
-%%% coding: latin-9
+%%% TeX-master: t
+%%% coding: utf-8
 %%% TeX-PDF-mode: t
 %%% ispell-local-dictionary: "american"
 %%% End:
index 62fff3a..fd2eb5c 100644 (file)
@@ -296,9 +296,9 @@ type specifications on expression metavariables, then the default is {\bf
 -local\_includes}.  Otherwise the default is {\bf -no\_includes}.  At most
 one of these options can be specified.}
 
-\normal{-I $\langle$path$\rangle$}{ This option specifies the directory in
-  which to find non-local include files.  This option should be used only
-  once, as each use will overwrite the preceding one.}
+\normal{-I $\langle$path$\rangle$}{ This option specifies a directory
+  in which to find non-local include files.  This option can be used
+  several times.}
 
 \rare{-relax\_include\_path}{This option when combined with -all\_includes
   causes the search for local
@@ -442,9 +442,15 @@ Normally, the only output is a diff printed to standard output.
 
 \rare{-o $\langle$file$\rangle$}{ The output file.}
 
-\rare{-inplace}{ Modify the input file.}
+\rare{-in\_place}{ Modify the input file.  By default, the input file is
+  overwritten, with no backup.}
 
-\rare{-outplace}{ Store modifications in a .cocci\_res file.}
+\rare{-backup\_suffix}{The suffix of the file to use in making a backup of
+  the original file(s).  This suffix should include the leading ``.'', if
+  one is desired.  This option only has an effect when the option
+  {\tt -in\_place} is also used.}
+
+\rare{-out\_place}{ Store modifications in a .cocci\_res file.}
 
 \rare{-no\_show\_diff}{ Normally, a diff between the original and transformed
 code is printed on the standard output.  This option causes this not to be
@@ -520,3 +526,11 @@ condition occurs, rather than only once.}
 
 \developer{-pad, -hrule $\langle$dir$\rangle$, -xxx, -l1}{}
 
+
+%%% Local Variables:
+%%% mode: LaTeX
+%%% TeX-master: "main_options"
+%%% coding: utf-8
+%%% TeX-PDF-mode: t
+%%% ispell-local-dictionary: "american"
+%%% End:
index 978fd30..6b755b7 100644 (file)
@@ -41,7 +41,7 @@ Finally, it will generate \verb|bar = readb(foo)| as expected.
 %%% Local Variables:
 %%% mode: LaTeX
 %%% TeX-master: "main_grammar"
-%%% coding: latin-9
+%%% coding: utf-8
 %%% TeX-PDF-mode: t
 %%% ispell-local-dictionary: "american"
 %%% End:
index bf2a786..072e4a9 100644 (file)
@@ -33,6 +33,7 @@
 
 ;;; History
 
+;; 2010-04-02 Nico: Fix 'script' with 'depends on'. Add 'when forall', 'when any'
 ;; 2010-02-01 Nico: Add support for 'disable', 'using', scripting, 'virtual' rules
 ;; 2009-11-05 Nico: Cleanups, Change shortcut % to C-M-% (% is used in Python rule)
 ;; Some cleanups done by Rene Rydhof Hansen
     (((background dark)) (:foreground "purple")))
   "Highlighting lines to be matched (sgrep)")
 
+(defface cocci-script-face
+  '((((background light)) (:foreground "red"))
+    (((background dark)) (:foreground "SeaGreen3")))
+  "Highlighting script language name")
+
 
 ;; can look in lexer_cocci.mll for new identifiers
 
     (2 'cocci-script-face t)
     )
 
-   ("@.*\\b\\(script\\)[ \t]*:[ \t]*\\(.*\\)[ \t]*@"
+   ("@.*\\b\\(script\\)[ \t]*:[ \t]*\\([^ ]*\\)[ \t]*.*@"
     (1 'cocci-special-face t)
     (2 'cocci-script-face t)
     )
    ("\\bWHEN[ \t]+!=" . 'font-lock-keyword-face)
    ("\\bwhen[ \t]+=" . 'font-lock-keyword-face)
    ("\\bWHEN[ \t]+=" . 'font-lock-keyword-face)
+   ("\\bwhen[ \t]+forall" . 'font-lock-keyword-face)
+   ("\\bWHEN[ \t]+forall" . 'font-lock-keyword-face)
+   ("\\bwhen[ \t]+any" . 'font-lock-keyword-face)
+   ("\\bWHEN[ \t]+any" . 'font-lock-keyword-face)
 
    ; used in iso files
    ("<=>" . 'font-lock-keyword-face)
index dd6a128..f9df539 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 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 cebc2a5..af6749e 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 type cocci_predicate = Lib_engine.predicate * string Ast_ctl.modif
 type formula =
     (cocci_predicate,string, Wrapper_ctl.info) Ast_ctl.generic_ctl
index 8978836..9ffd8b3 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* for MINUS and CONTEXT, pos is always None in this file *)
 (*search for require*)
 (* true = don't see all matched nodes, only modified ones *)
@@ -218,7 +240,8 @@ let elim_opt =
 
     | (Ast.Dots(_,_,_,_)::Ast.OptStm(stm)::(Ast.Dots(_,_,_,_) as u)::urest,
        d0::s::d1::rest)
-    | (Ast.Nest(_,_,_,_,_)::Ast.OptStm(stm)::(Ast.Dots(_,_,_,_) as u)::urest,
+    | (Ast.Nest(_,_,_,_,_,_,_)::Ast.OptStm(stm)::(Ast.Dots(_,_,_,_) as u)
+       ::urest,
        d0::s::d1::rest) -> (* why no case for nest as u? *)
         let l = Ast.get_line stm in
         let new_rest1 = stm :: (dots_list (u::urest) (d1::rest)) in
@@ -323,7 +346,7 @@ let elim_opt =
             Ast.inherited = inh_both;
             Ast.saved_witness = saved_both}]
 
-    | ([Ast.Nest(_,_,_,_,_);Ast.OptStm(stm)],[d1;_]) ->
+    | ([Ast.Nest(_,_,_,_,_,_,_);Ast.OptStm(stm)],[d1;_]) ->
        let l = Ast.get_line stm in
        let rw = Ast.rewrap stm in
        let rwd = Ast.rewrap stm in
@@ -605,7 +628,7 @@ and get_before_e s a =
   match Ast.unwrap s with
     Ast.Dots(d,w,_,aft) ->
       (Ast.rewrap s (Ast.Dots(d,get_before_whencode w,a,aft)),a)
-  | Ast.Nest(stmt_dots,w,multi,_,aft) ->
+  | Ast.Nest(starter,stmt_dots,ender,w,multi,_,aft) ->
       let w = get_before_whencode w in
       let (sd,_) = get_before stmt_dots a in
       (*let a =
@@ -626,7 +649,8 @@ and get_before_e s a =
                | _ -> true)
            | _ -> true)
          a in*)
-      (Ast.rewrap s (Ast.Nest(sd,w,multi,a,aft)),[Ast.Other_dots stmt_dots])
+      (Ast.rewrap s (Ast.Nest(starter,sd,ender,w,multi,a,aft)),
+       [Ast.Other_dots stmt_dots])
   | Ast.Disj(stmt_dots_list) ->
       let (dsl,dsla) =
        List.split (List.map (function e -> get_before e a) stmt_dots_list) in
@@ -711,7 +735,7 @@ and get_after_e s a =
   match Ast.unwrap s with
     Ast.Dots(d,w,bef,_) ->
       (Ast.rewrap s (Ast.Dots(d,get_after_whencode a w,bef,a)),a)
-  | Ast.Nest(stmt_dots,w,multi,bef,_) ->
+  | Ast.Nest(starter,stmt_dots,ender,w,multi,bef,_) ->
       let w = get_after_whencode a w in
       let (sd,_) = get_after stmt_dots a in
       (*let a =
@@ -732,7 +756,8 @@ and get_after_e s a =
                | _ -> true)
            | _ -> true)
          a in*)
-      (Ast.rewrap s (Ast.Nest(sd,w,multi,bef,a)),[Ast.Other_dots stmt_dots])
+      (Ast.rewrap s (Ast.Nest(starter,sd,ender,w,multi,bef,a)),
+       [Ast.Other_dots stmt_dots])
   | Ast.Disj(stmt_dots_list) ->
       let (dsl,dsla) =
        List.split (List.map (function e -> get_after e a) stmt_dots_list) in
@@ -747,7 +772,7 @@ and get_after_e s a =
            (function
                Ast.Other x ->
                  (match Ast.unwrap x with
-                   Ast.Dots(_,_,_,_) | Ast.Nest(_,_,_,_,_) ->
+                   Ast.Dots(_,_,_,_) | Ast.Nest(_,_,_,_,_,_,_) ->
                      failwith
                        "dots/nest not allowed before and after stmt metavar"
                  | _ -> ())
@@ -755,7 +780,7 @@ and get_after_e s a =
                  (match Ast.undots x with
                    x::_ ->
                      (match Ast.unwrap x with
-                       Ast.Dots(_,_,_,_) | Ast.Nest(_,_,_,_,_) ->
+                       Ast.Dots(_,_,_,_) | Ast.Nest(_,_,_,_,_,_,_) ->
                          failwith
                            ("dots/nest not allowed before and after stmt "^
                             "metavar")
@@ -1530,9 +1555,9 @@ let rec dots_and_nests plus nest whencodes bef aft dotcode after label
   plus_modifier
     (dots_au is_strict ((after = Tail) or (after = VeryEnd))
        label (guard_to_strict guard) wrapcode just_nest
-      (ctl_and_ns dotcode
-        (ctl_and_ns (ctl_and_ns (ctl_not bef_aft) ornest) labelled))
-      aft ender quantifier)
+       (ctl_and_ns dotcode
+          (ctl_and_ns (ctl_and_ns (ctl_not bef_aft) ornest) labelled))
+       aft ender quantifier)
 
 and get_whencond_exps e =
   match Ast.unwrap e with
@@ -1893,7 +1918,7 @@ and statement stmt after quantified minus_quantified
                  llabel slabel true guard)
              stmt_dots_list))
 
-  | Ast.Nest(stmt_dots,whencode,multi,bef,aft) ->
+  | 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 *)
 
@@ -1906,12 +1931,20 @@ and statement stmt after quantified minus_quantified
       (* no minus version because when code doesn't contain any minus code *)
       let new_quantified = Common.union_set bfvs quantified in
 
+      let dot_code =
+       match Ast.get_mcodekind starter with (*ender must have the same mcode*)
+         Ast.MINUS(_,_,_,_) as d ->
+            (* no need for the fresh metavar, but ... is a bit weird as a
+              variable name *)
+           Some(make_match (make_meta_rule_elem d ([],[],[])))
+       | _ -> None in
+
       quantify guard bfvs
        (let dots_pattern =
          statement_list stmt_dots (a2n after) new_quantified minus_quantified
            None llabel slabel true guard in
        dots_and_nests multi
-         (Some dots_pattern) whencode bef aft None after label
+         (Some dots_pattern) whencode bef aft dot_code after label
          (process_bef_aft new_quantified minus_quantified
             None llabel slabel true)
          (function x ->
@@ -2167,12 +2200,16 @@ and statement stmt after quantified minus_quantified
        Common.union_set mb1fvs
          (Common.union_set mb2fvs
             (Common.union_set mb3fvs minus_quantified)) in
+      let not_minus = function Ast.MINUS(_,_,_,_) -> false | _ -> true in
       let optim1 =
        match (Ast.undots body,
               contains_modif rbrace or contains_pos rbrace) with
          ([body],false) ->
            (match Ast.unwrap body with
-             Ast.Nest(stmt_dots,[],false,_,_) ->
+             Ast.Nest(starter,stmt_dots,ender,[],false,_,_)
+               (* perhaps could optimize for minus case too... TODO *)
+               when not_minus (Ast.get_mcodekind starter)
+             ->
             (* special case for function header + body - header is unambiguous
               and unique, so we can just look for the nested body anywhere
               else in the CFG *)
index 9e43721..33d564f 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 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 6a99509..6e8b144 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* on the first pass, onlyModif is true, so we don't see all matched nodes,
 only modified ones *)
 
@@ -223,10 +245,10 @@ and statement testfn mcode tail stmt : 'a list list =
       then []
       else Common.union_all processed
 
-  | Ast.Nest(stmt_dots,whencode,true,_,_) ->
+  | Ast.Nest(starter,stmt_dots,ender,whencode,true,_,_) ->
       statement_list testfn mcode false stmt_dots
 
-  | Ast.Nest(stmt_dots,whencode,false,_,_) -> []
+  | Ast.Nest(starter,stmt_dots,ender,whencode,false,_,_) -> []
 
   | Ast.Dots(_,whencodes,_,_) -> []
 
index fca0030..8b38708 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 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 c78dda1..aaf3231 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Common
 
 open Ast_c
@@ -319,3 +341,31 @@ let eq_type a b =
 
 let merge_type a b =
   Common.profile_code "C_vs_c" (fun () -> merge_type2 a b)
+
+
+(* ------------------------------------------------------------------------- *)
+
+(* This seemed like a reasonable place to put this, given the file name,
+but not sure that it is the case...  This has to be compatible with the
+function equal_inh_metavarval.  It is indeed not so clear why that is
+defined in cocci_vs_c.ml, and not here, since it is comparing C code to C
+code. *)
+
+let subexpression_of_expression small_exp big_exp =
+  let res = ref false in (* because no appropriate functional visitor... *)
+  let expr (k,bigf) big_exp =
+    (* comparison used in Cocci_vs_c.equal_inh_metavarval *)
+    (* have to strip each subexp, because stripping puts some offsets in the
+       term rather than setting everything to 0.  No idea why... *)
+    if small_exp =*= Lib_parsing_c.al_inh_expr big_exp
+    then res := true
+    else k big_exp in
+  let bigf = { Visitor_c.default_visitor_c with Visitor_c.kexpr = expr } in
+  Visitor_c.vk_expr bigf big_exp;
+  (*Printf.printf "comparison gives %b\n" !res;
+  Pretty_print_c.pp_expression_simple small_exp;
+  Format.print_newline();
+  Pretty_print_c.pp_expression_simple big_exp;
+  Format.print_newline();
+  Printf.printf "--------------------------------\n";*)
+  !res
index 3603abc..86e9c83 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
 
 val eq_type : Ast_c.fullType -> Ast_c.fullType -> bool
 val merge_type : Ast_c.fullType -> Ast_c.fullType -> Ast_c.fullType
+
+val subexpression_of_expression : Ast_c.expression -> Ast_c.expression -> bool
index 47386ae..6315bed 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 
 (* 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
index 6e48faa..5acf0df 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* ---------------------------------------------------------------- *)
 (* code to check for ambiguities *)
 
@@ -91,19 +113,24 @@ let create_formulas _ =
          let match_roots =
            List.map (function n -> Ast_ctl.Pred(Node(n)))
              (List.sort compare !roots) in
-         let roots =
+         let or_roots =
            List.fold_left
              (function prev -> function cur -> Ast_ctl.Or(prev,cur))
              (List.hd match_roots) (List.tl match_roots) in
-         (node,
-          Ast_ctl.AF(Ast_ctl.BACKWARD,Ast_ctl.NONSTRICT,
-                     Ast_ctl.Or(roots,Ast_ctl.Pred(After))),
-          Ast_ctl.And
-            (Ast_ctl.NONSTRICT,
-             Ast_ctl.Not(roots),
-             Ast_ctl.EX
-               (Ast_ctl.BACKWARD,
-                Ast_ctl.EU(Ast_ctl.BACKWARD,roots,match_node))))
+         (* no point to search if no path, and the presence of after
+            in the AF formula can make things slow *)
+         if List.mem node !roots
+         then acc
+         else
+           (node,
+            Ast_ctl.AF(Ast_ctl.BACKWARD,Ast_ctl.NONSTRICT,
+                       Ast_ctl.Or(or_roots,Ast_ctl.Pred(After))),
+            Ast_ctl.And
+              (Ast_ctl.NONSTRICT,
+               Ast_ctl.Not(or_roots),
+               Ast_ctl.EX
+                 (Ast_ctl.BACKWARD,
+                  Ast_ctl.EU(Ast_ctl.BACKWARD,or_roots,match_node))))
           (*exef
              (wrap(Ast_ctl.And(Ast_ctl.NONSTRICT,match_node,exef(roots))))*)
          :: acc)
index b803cd7..c4c0fa8 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 type witness =
     (Ograph_extended.nodei, unit,
      (Ograph_extended.nodei, unit, unit) Ast_ctl.generic_ctl list)
index 64354e5..c726fb9 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* Yoann Padioleau, Julia Lawall
  *
  * Copyright (C) 2006, 2007, 2008 Ecole des Mines de Nantes
@@ -258,7 +280,7 @@ let equal_storage a b =
 
 let equal_metavarval valu valu' =
   match valu, valu' with
-  | Ast_c.MetaIdVal a, Ast_c.MetaIdVal b -> a =$= b
+  | Ast_c.MetaIdVal (a,_), Ast_c.MetaIdVal (b,_) -> a =$= b
   | Ast_c.MetaFuncVal a, Ast_c.MetaFuncVal b -> a =$= b
   | Ast_c.MetaLocalFuncVal a, Ast_c.MetaLocalFuncVal b ->
       (* do something more ? *)
@@ -270,7 +292,7 @@ let equal_metavarval valu valu' =
    * just isomorphisms). => TODO call isomorphism_c_c instead of
    * =*=. Maybe would be easier to transform ast_c in ast_cocci
    * and call the iso engine of julia. *)
-  | Ast_c.MetaExprVal a, Ast_c.MetaExprVal b ->
+  | Ast_c.MetaExprVal (a,_), Ast_c.MetaExprVal (b,_) ->
       Lib_parsing_c.al_expr a =*= Lib_parsing_c.al_expr b
   | Ast_c.MetaExprListVal a, Ast_c.MetaExprListVal b ->
       Lib_parsing_c.al_arguments a =*= Lib_parsing_c.al_arguments b
@@ -315,7 +337,7 @@ metavariables containing expressions are stripped in advance. But don't
 know which one is which... *)
 let equal_inh_metavarval valu valu'=
   match valu, valu' with
-  | Ast_c.MetaIdVal a, Ast_c.MetaIdVal b -> a =$= b
+  | Ast_c.MetaIdVal (a,_), Ast_c.MetaIdVal (b,_) -> a =$= b
   | Ast_c.MetaFuncVal a, Ast_c.MetaFuncVal b -> a =$= b
   | Ast_c.MetaLocalFuncVal a, Ast_c.MetaLocalFuncVal b ->
       (* do something more ? *)
@@ -327,7 +349,7 @@ let equal_inh_metavarval valu valu'=
    * just isomorphisms). => TODO call isomorphism_c_c instead of
    * =*=. Maybe would be easier to transform ast_c in ast_cocci
    * and call the iso engine of julia. *)
-  | Ast_c.MetaExprVal a, Ast_c.MetaExprVal b ->
+  | Ast_c.MetaExprVal (a,_), Ast_c.MetaExprVal (b,_) ->
       Lib_parsing_c.al_inh_expr a =*= Lib_parsing_c.al_inh_expr b
   | Ast_c.MetaExprListVal a, Ast_c.MetaExprListVal b ->
       Lib_parsing_c.al_inh_arguments a =*= Lib_parsing_c.al_inh_arguments b
@@ -720,44 +742,39 @@ let dots2metavar (_,info,mcodekind,pos) =
   (("","..."),info,mcodekind,pos)
 let metavar2dots (_,info,mcodekind,pos) = ("...",info,mcodekind,pos)
 
-let satisfies_iconstraint c id : bool =
+let satisfies_regexpconstraint c id : bool =
   match c with
-      A.IdNoConstraint -> true
-    | A.IdNegIdSet l -> not (List.mem id l)
-    | A.IdRegExp (_,recompiled) ->
-       if Str.string_match recompiled id 0 then
-         true
-       else
-         false
-    | A.IdNotRegExp (_,recompiled) ->
-       if Str.string_match recompiled id 0 then
-         false
-       else
-         true
+    A.IdRegExp (_,recompiled)    -> Str.string_match recompiled id 0
+  | A.IdNotRegExp (_,recompiled) -> not (Str.string_match recompiled id 0)
+
+let satisfies_iconstraint c id : bool =
+  not (List.mem id c)
 
 let satisfies_econstraint c exp : bool =
-    match Ast_c.unwrap_expr exp with
-       Ast_c.Ident (name) ->
-         (
-           match name with
-               Ast_c.RegularName     rname -> satisfies_iconstraint c (Ast_c.unwrap_st rname)
-             | Ast_c.CppConcatenatedName _ ->
-                 pr2_once ("WARNING: Unable to apply a constraint on a CppConcatenatedName identifier !"); true
-             | Ast_c.CppVariadicName     _ ->
-                 pr2_once ("WARNING: Unable to apply a constraint on a CppVariadicName identifier !"); true
-             | Ast_c.CppIdentBuilder     _ ->
-                 pr2_once ("WARNING: Unable to apply a constraint on a CppIdentBuilder identifier !"); true
-         )
-      | Ast_c.Constant cst ->
-         (match cst with
-            | Ast_c.String (str, _) -> satisfies_iconstraint c str
-            | Ast_c.MultiString strlist ->
-                pr2_once ("WARNING: Unable to apply a constraint on an multistring constant !"); true
-            | Ast_c.Char  (char , _) -> satisfies_iconstraint c char
-            | Ast_c.Int   (int  , _) -> satisfies_iconstraint c int
-            | Ast_c.Float (float, _) -> satisfies_iconstraint c float
-         )
-      | _ -> pr2_once ("WARNING: Unable to apply a constraint on an expression !"); true
+  let warning s = pr2_once ("WARNING: "^s); false in
+  match Ast_c.unwrap_expr exp with
+    Ast_c.Ident (name) ->
+      (match name with
+       Ast_c.RegularName     rname ->
+         satisfies_regexpconstraint c (Ast_c.unwrap_st rname)
+      | Ast_c.CppConcatenatedName _ ->
+         warning
+           "Unable to apply a constraint on a CppConcatenatedName identifier!"
+      | Ast_c.CppVariadicName     _ ->
+         warning
+           "Unable to apply a constraint on a CppVariadicName identifier!"
+      | Ast_c.CppIdentBuilder     _ ->
+         warning
+           "Unable to apply a constraint on a CppIdentBuilder identifier!")
+  | Ast_c.Constant cst ->
+      (match cst with
+      | Ast_c.String (str, _) -> satisfies_regexpconstraint c str
+      | Ast_c.MultiString strlist ->
+         warning "Unable to apply a constraint on an multistring constant!"
+      | Ast_c.Char  (char , _) -> satisfies_regexpconstraint c char
+      | Ast_c.Int   (int  , _) -> satisfies_regexpconstraint c int
+      | Ast_c.Float (float, _) -> satisfies_regexpconstraint c float)
+  | _ -> warning "Unable to apply a constraint on an expression!"
 
 (*---------------------------------------------------------------------------*)
 (* toc:
@@ -832,52 +849,31 @@ let rec (expression: (A.expression, Ast_c.expression) matcher) =
               acc >|+|> compatible_type ta tb) fail
        ) >>=
        (fun () () ->
-          match constraints with
-              Ast_cocci.NoConstraint ->
-                let max_min _ =
-                  Lib_parsing_c.lin_col_by_pos (Lib_parsing_c.ii_of_expr expb) in
-                  X.envf keep inherited (ida, Ast_c.MetaExprVal expb, max_min)
-                    (fun () ->
-                       X.distrf_e ida expb >>=
-                         (fun ida expb ->
-                            return (
-                              A.MetaExpr (ida,constraints,keep,opttypa,form,inherited)+>
-                                A.rewrap ea,
-                              expb
-                            ))
-                    )
-
-            | Ast_cocci.NotIdCstrt cstrt ->
-                X.check_idconstraint satisfies_econstraint cstrt eb
-                  (fun () ->
-                     let max_min _ =
-                       Lib_parsing_c.lin_col_by_pos (Lib_parsing_c.ii_of_expr expb) in
-                       X.envf keep inherited (ida, Ast_c.MetaExprVal expb, max_min)
-                         (fun () ->
-                            X.distrf_e ida expb >>=
-                              (fun ida expb ->
-                                 return (
-                                   A.MetaExpr (ida,constraints,keep,opttypa,form,inherited)+>
-                                     A.rewrap ea,
-                                   expb
-                                 ))
-                         ))
-
-            | Ast_cocci.NotExpCstrt cstrts ->
-                X.check_constraints_ne expression cstrts eb
-                  (fun () ->
-                     let max_min _ =
-                       Lib_parsing_c.lin_col_by_pos (Lib_parsing_c.ii_of_expr expb) in
-                       X.envf keep inherited (ida, Ast_c.MetaExprVal expb, max_min)
-                         (fun () ->
-                            X.distrf_e ida expb >>=
-                              (fun ida expb ->
-                                 return (
-                                   A.MetaExpr (ida,constraints,keep,opttypa,form,inherited)+>
-                                     A.rewrap ea,
-                                   expb
-                                 ))
-                         )))
+         let meta_expr_val l x = Ast_c.MetaExprVal(x,l) in
+         match constraints with
+           Ast_cocci.NoConstraint -> return (meta_expr_val [],())
+         | Ast_cocci.NotIdCstrt cstrt ->
+             X.check_idconstraint satisfies_econstraint cstrt eb
+               (fun () -> return (meta_expr_val [],()))
+         | Ast_cocci.NotExpCstrt cstrts ->
+             X.check_constraints_ne expression cstrts eb
+               (fun () -> return (meta_expr_val [],()))
+         | Ast_cocci.SubExpCstrt cstrts ->
+             return (meta_expr_val cstrts,()))
+         >>=
+       (fun wrapper () ->
+         let max_min _ =
+           Lib_parsing_c.lin_col_by_pos (Lib_parsing_c.ii_of_expr expb) in
+         X.envf keep inherited (ida, wrapper expb, max_min)
+           (fun () ->
+             X.distrf_e ida expb >>=
+             (fun ida expb ->
+               return (
+               A.MetaExpr (ida,constraints,keep,opttypa,form,inherited)+>
+               A.rewrap ea,
+               expb
+                 ))
+               ))
       else fail
 
   (* old:
@@ -1198,12 +1194,16 @@ let rec (expression: (A.expression, Ast_c.expression) matcher) =
           ((B.ParenExpr (eb), typ), [ib1;ib2])
       ))))
 
-  | A.NestExpr(exps,None,true), eb ->
+  | A.NestExpr(starter,exps,ender,None,true), eb ->
+      (match A.get_mcodekind starter with
+       A.MINUS _ -> failwith "TODO: only context nests supported"
+      |        _ -> ());
       (match A.unwrap exps with
        A.DOTS [exp] ->
          X.cocciExpExp expression exp eb >>= (fun exp eb ->
             return (
-            (A.NestExpr(A.rewrap exps (A.DOTS [exp]),None,true)) +> wa,
+            (A.NestExpr
+              (starter,A.rewrap exps (A.DOTS [exp]),ender,None,true)) +> wa,
             eb
             )
          )
@@ -1275,6 +1275,16 @@ and (ident_cpp: info_ident -> (A.ident, B.name) matcher) =
 
 and (ident: info_ident -> (A.ident, string * Ast_c.info) matcher) =
  fun infoidb ida ((idb, iib)) -> (* (idb, iib) as ib *)
+   let check_constraints constraints idb =
+     let meta_id_val l x = Ast_c.MetaIdVal(x,l) in
+     match constraints with
+       A.IdNoConstraint -> return (meta_id_val [],())
+     | A.IdNegIdSet (str,meta) ->
+        X.check_idconstraint satisfies_iconstraint str idb
+          (fun () -> return (meta_id_val meta,()))
+     | A.IdRegExpConstraint re ->
+        X.check_idconstraint satisfies_regexpconstraint re idb
+          (fun () -> return (meta_id_val [],())) in
   X.all_bound (A.get_inherited ida) >&&>
   match A.unwrap ida with
   | A.Id sa ->
@@ -1287,12 +1297,12 @@ and (ident: info_ident -> (A.ident, string * Ast_c.info) matcher) =
       else fail
 
   | A.MetaId(mida,constraints,keep,inherited) ->
-      X.check_idconstraint satisfies_iconstraint constraints idb
-        (fun () ->
+      check_constraints constraints idb >>=
+      (fun wrapper () ->
       let max_min _ = Lib_parsing_c.lin_col_by_pos [iib] in
       (* use drop_pos for ids so that the pos is not added a second time in
         the call to tokenf *)
-      X.envf keep inherited (A.drop_pos mida, Ast_c.MetaIdVal (idb), max_min)
+      X.envf keep inherited (A.drop_pos mida, wrapper idb, max_min)
        (fun () ->
         tokenf mida iib >>= (fun mida iib ->
           return (
@@ -1303,8 +1313,8 @@ and (ident: info_ident -> (A.ident, string * Ast_c.info) matcher) =
 
   | A.MetaFunc(mida,constraints,keep,inherited) ->
       let is_function _ =
-       X.check_idconstraint satisfies_iconstraint constraints idb
-            (fun () ->
+       check_constraints constraints idb >>=
+       (fun wrapper () ->
           let max_min _ = Lib_parsing_c.lin_col_by_pos [iib] in
           X.envf keep inherited (A.drop_pos mida,Ast_c.MetaFuncVal idb,max_min)
            (fun () ->
@@ -1327,8 +1337,8 @@ and (ident: info_ident -> (A.ident, string * Ast_c.info) matcher) =
   | A.MetaLocalFunc(mida,constraints,keep,inherited) ->
       (match infoidb with
       | LocalFunction ->
-         X.check_idconstraint satisfies_iconstraint constraints idb
-            (fun () ->
+         check_constraints constraints idb >>=
+         (fun wrapper () ->
           let max_min _ = Lib_parsing_c.lin_col_by_pos [iib] in
           X.envf keep inherited
            (A.drop_pos mida,Ast_c.MetaLocalFuncVal idb, max_min)
index 63fccf3..b4f1a7b 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (*****************************************************************************)
 (* Cocci vs C *)
 (*****************************************************************************)
index 4ba7f5c..1b9f524 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Common
 
 open Ograph_extended
@@ -456,8 +478,8 @@ let strip env =
     (function (v,vl) ->
       let vl =
        match vl with
-         Ast_c.MetaExprVal a ->
-           Ast_c.MetaExprVal(Lib_parsing_c.al_inh_expr a)
+         Ast_c.MetaExprVal (a,c) ->
+           Ast_c.MetaExprVal(Lib_parsing_c.al_inh_expr a,c)
        | Ast_c.MetaExprListVal a ->
            Ast_c.MetaExprListVal(Lib_parsing_c.al_inh_arguments a)
        | Ast_c.MetaStmtVal a ->
index 00059d8..3edb984 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Ograph_extended
 
 val labels_for_ctl :
index c685886..5e18fef 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module CTL = Ast_ctl
 
 let prelude =
index 9dc13a4..1d5a5e8 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val totex :
   string ->
     Ast_cocci.rule list ->
index 81b982b..ca07510 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 let debug_engine = ref false
 
 (* false = simpler formulas, only for debugging *)
index 0a28952..128ff88 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 let debug_engine = ref false
 let verbose_matcher = ref true
 
index be16941..87e3cb3 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Common
 
 (* When in a semantic patch there is f(X) ... f(X) we want to force
index 604ebac..171bb4b 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Ograph_extended
 
 (*****************************************************************************)
index 05b4a2c..26fb1f5 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
index 05b4a2c..26fb1f5 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
index fa1c82a..877022f 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* ----------------------------------------------------------------------- *)
 (* Entry point *)
 
index 89abfb4..fd7b11a 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* Yoann Padioleau
  *
  * Copyright (C) 2006, 2007 Ecole des Mines de Nantes
@@ -362,51 +384,101 @@ module XMATCH = struct
           else None
 
       | None ->
-          let valu' =
-            match valu with
-              Ast_c.MetaIdVal a        -> Ast_c.MetaIdVal a
-            | Ast_c.MetaFuncVal a      -> Ast_c.MetaFuncVal a
-            | Ast_c.MetaLocalFuncVal a -> Ast_c.MetaLocalFuncVal a (*more?*)
-            | Ast_c.MetaExprVal a ->
-               Ast_c.MetaExprVal
-                 (if strip
-                 then Lib_parsing_c.al_expr a
-                 else Lib_parsing_c.semi_al_expr a)
-            | Ast_c.MetaExprListVal a ->
-               Ast_c.MetaExprListVal
-                 (if strip
-                 then Lib_parsing_c.al_arguments a
-                 else Lib_parsing_c.semi_al_arguments a)
-
-            | Ast_c.MetaStmtVal a ->
-               Ast_c.MetaStmtVal
-                 (if strip
-                 then Lib_parsing_c.al_statement a
-                 else Lib_parsing_c.semi_al_statement a)
-            | Ast_c.MetaTypeVal a ->
-               Ast_c.MetaTypeVal
-                 (if strip
-                 then Lib_parsing_c.al_type a
-                 else Lib_parsing_c.semi_al_type a)
-
-            | Ast_c.MetaInitVal a ->
-               Ast_c.MetaInitVal
-                 (if strip
-                 then Lib_parsing_c.al_init a
-                 else Lib_parsing_c.semi_al_init a)
-
-            | Ast_c.MetaListlenVal a -> Ast_c.MetaListlenVal a
-
-            | Ast_c.MetaParamVal a -> failwith "not handling MetaParamVal"
-            | Ast_c.MetaParamListVal a ->
-               Ast_c.MetaParamListVal
-                 (if strip
-                 then Lib_parsing_c.al_params a
-                 else Lib_parsing_c.semi_al_params a)
-
-            | Ast_c.MetaPosVal (pos1,pos2) -> Ast_c.MetaPosVal (pos1,pos2)
-            | Ast_c.MetaPosValList l -> Ast_c.MetaPosValList l
-          in Some (tin.binding +> Common.insert_assoc (k, valu'))
+         let success valu' =
+           Some (tin.binding +> Common.insert_assoc (k, valu')) in
+          (match valu with
+            Ast_c.MetaIdVal (a,c)    ->
+             (* c is a negated constraint *)
+             let rec loop = function
+                 [] -> success(Ast_c.MetaIdVal(a,[]))
+               | c::cs ->
+                   let tmp =
+                     Common.optionise
+                       (fun () -> tin.binding0 +> List.assoc c) in
+                   (match tmp with
+                     Some (Ast_c.MetaIdVal(v,_)) ->
+                       if a =$= v
+                       then None (* failure *)
+                       else success(Ast_c.MetaIdVal(a,[]))
+                   | Some _ -> failwith "Not possible"
+                   | None -> success(Ast_c.MetaIdVal(a,[]))) in
+             loop c
+          | Ast_c.MetaFuncVal a      ->
+             success(Ast_c.MetaFuncVal a)
+          | Ast_c.MetaLocalFuncVal a ->
+             success(Ast_c.MetaLocalFuncVal a) (*more?*)
+          | Ast_c.MetaExprVal (a,c) ->
+             (* c in the value is only to prepare for the future in which
+                we figure out how to have subterm constraints on unbound
+                variables.  Now an environment will only contain expression
+                values with empty constraints, as all constraints are
+                resolved at binding time *)
+             let stripped =
+               if strip
+               then Lib_parsing_c.al_expr a
+               else Lib_parsing_c.semi_al_expr a in
+             let inh_stripped = Lib_parsing_c.al_inh_expr a in
+             let rec loop = function
+                 [] -> success(Ast_c.MetaExprVal(stripped,[]))
+               | c::cs ->
+                   let tmp =
+                     Common.optionise
+                       (fun () -> tin.binding0 +> List.assoc c) in
+                   (match tmp with
+                     Some (Ast_c.MetaExprVal(v,_)) ->
+                       if C_vs_c.subexpression_of_expression inh_stripped v
+                       then loop cs (* forget satisfied constraints *)
+                       else None (* failure *)
+                   | Some _ -> failwith "not possible"
+                     (* fail if this should be a subterm of something that
+                        doesn't exist *)
+                   | None -> None) in
+             loop c
+          | Ast_c.MetaExprListVal a ->
+             success
+               (Ast_c.MetaExprListVal
+                  (if strip
+                  then Lib_parsing_c.al_arguments a
+                  else Lib_parsing_c.semi_al_arguments a))
+               
+          | Ast_c.MetaStmtVal a ->
+             success
+               (Ast_c.MetaStmtVal
+                  (if strip
+                  then Lib_parsing_c.al_statement a
+                  else Lib_parsing_c.semi_al_statement a))
+          | Ast_c.MetaTypeVal a ->
+             success
+               (Ast_c.MetaTypeVal
+                  (if strip
+                  then Lib_parsing_c.al_type a
+                  else Lib_parsing_c.semi_al_type a))
+               
+          | Ast_c.MetaInitVal a ->
+             success
+               (Ast_c.MetaInitVal
+                  (if strip
+                  then Lib_parsing_c.al_init a
+                  else Lib_parsing_c.semi_al_init a))
+               
+          | Ast_c.MetaListlenVal a -> success(Ast_c.MetaListlenVal a)
+               
+          | Ast_c.MetaParamVal a ->
+             success
+               (Ast_c.MetaParamVal
+                  (if strip
+                  then Lib_parsing_c.al_param a
+                  else Lib_parsing_c.semi_al_param a))
+          | Ast_c.MetaParamListVal a ->
+             success
+               (Ast_c.MetaParamListVal
+                  (if strip
+                  then Lib_parsing_c.al_params a
+                  else Lib_parsing_c.semi_al_params a))
+               
+          | Ast_c.MetaPosVal (pos1,pos2) ->
+             success(Ast_c.MetaPosVal (pos1,pos2))
+          | Ast_c.MetaPosValList l -> success (Ast_c.MetaPosValList l))
 
   let envf keep inherited = fun (k, valu, get_max_min) f tin ->
     let x = Ast_cocci.unwrap_mcode k in
index 9641023..539fbfc 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 
 val match_re_node :
   string list (* dropped isos *) ->
index c054cea..d880125 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* two goals: first drop from the environments things that are not used,
    and second prompt for the names of fresh variables that are used *)
 
@@ -55,7 +77,7 @@ let get_vars = function
     Lib_engine.Match(re) -> (Ast.get_fvs re, Ast.get_fresh re)
   | _ -> ([],[])
 
-let string2val str = Lib_engine.NormalMetaVal(Ast_c.MetaIdVal(str))
+let string2val str = Lib_engine.NormalMetaVal(Ast_c.MetaIdVal(str,[]))
 
 (* ----------------------------------------------------------------------- *)
 (* Get values for fresh variables *)
@@ -92,7 +114,7 @@ let process_tree inherited_env l =
                     | Ast.SeedId id ->
                         try
                           (match List.assoc id env with
-                            Lib_engine.NormalMetaVal(Ast_c.MetaIdVal(str)) ->
+                            Lib_engine.NormalMetaVal(Ast_c.MetaIdVal(str,_)) ->
                               str
                           | _ -> failwith "bad id value")
                         with
index b9c030a..bf1c06e 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val process :
     Ast_cocci.meta_name list (* used after *) ->
       (Ast_cocci.meta_name * Lib_engine.metavar_binding_kind2) list
index 04286bb..deba5b7 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Common.Infix
 
 open Lib_engine
@@ -30,10 +52,10 @@ let pp = Common.pp
 let pp_meta (_,x) = pp x
 
 let rec pp_binding_kind = function
-  | Ast_c.MetaIdVal        s -> pp ("id " ^ s)
+  | Ast_c.MetaIdVal        (s,_) -> pp ("id " ^ s)
   | Ast_c.MetaFuncVal      s -> pp ("func " ^ s)
   | Ast_c.MetaLocalFuncVal s -> pp ("localfunc " ^ s)
-  | Ast_c.MetaExprVal      expr -> Pretty_print_c.pp_expression_simple expr
+  | Ast_c.MetaExprVal      (expr,_) -> Pretty_print_c.pp_expression_simple expr
   | Ast_c.MetaExprListVal  expr_list -> pp "<<exprlist>>"
   | Ast_c.MetaInitVal      ini ->
       Pretty_print_c.pp_init_simple ini
index 7ca906f..b217367 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 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 fbe81de..1c142d6 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 type marker =
     NoMark | BefMark of string | AftMark of string
   | BefAftMark of string * string
index e9f6162..55c220f 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* Yoann Padioleau
  *
  * Copyright (C) 2006, 2007 Ecole des Mines de Nantes
index aaabd4c..0b57d32 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* note that now we do the transformation via side effect on ast *)
 val transform :
   string (* rule name *) -> string list (* dropped isos *) ->
index f7b10c5..26ad3bc 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* the inputs *)
 let show_c = ref false
 let show_cocci = ref false
index f1b8fd4..6cefbb9 100644 (file)
@@ -1,4 +1,4 @@
-let version = "0.2.2"
+let version = "0.2.3rc1"
 
 let path =
   try (Sys.getenv "COCCINELLE_HOME")
index 6e26234..24b58ce 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 let sgrep_mode2 = ref false
 
 let show_misc = ref true
diff --git a/main.ml b/main.ml
index f088e9f..f180c38 100644 (file)
--- a/main.ml
+++ b/main.ml
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Common
 module FC = Flag_cocci
 
@@ -35,7 +57,9 @@ module FC = Flag_cocci
 let cocci_file = ref ""
 
 let output_file = ref ""
-let inplace_modif = ref false  (* but keeps a .cocci_orig *)
+let inplace_modif = ref false  (* but keeps nothing *)
+let backup_suffix =
+  ref (None : string option) (* suffix for backup if one is desired *)
 let outplace_modif = ref false (* generates a .cocci_res  *)
 let preprocess = ref false     (* run the C preprocessor before cocci *)
 let compat_mode = ref false
@@ -268,9 +292,11 @@ let short_options = [
 
   "-o", Arg.Set_string output_file,
   "   <file> the output file";
-  "-inplace", Arg.Set inplace_modif,
+  "-in_place", Arg.Set inplace_modif,
   "   do the modification on the file directly";
-  "-outplace", Arg.Set outplace_modif,
+  "-backup_suffix", Arg.String (function s -> backup_suffix := Some s),
+  "   suffix to use when making a backup for inplace";
+  "-out_place", Arg.Set outplace_modif,
   "   store modifications in a .cocci_res file";
 
   "-U", Arg.Int (fun n -> Flag_parsing_c.diff_lines := Some (i_to_s n)),
@@ -331,7 +357,7 @@ let short_options = [
     "  guess what";
 
   "-date",   Arg.Unit (fun () ->
-    pr2 "version: $Date: 2010/03/09 08:29:04 $";
+    pr2 "version: $Date: 2010/05/03 11:10:04 $";
     raise (Common.UnixExit 0)
     ),
   "   guess what";
@@ -700,7 +726,7 @@ let glimpse_filter (coccifile, isofile) dir =
     None -> pr2 "no glimpse keyword inferred from snippet"; None
   | Some [query] ->
       (let suffixes = if !include_headers then ["c";"h"] else ["c"] in
-      pr2 ("glimpse request = " ^ query);
+      Printf.fprintf stderr "%s\n" ("glimpse request = " ^ query);
       let command = spf "glimpse -y -H %s -N -W -w '%s'" dir query in
       let (glimpse_res,stat) = Common.cmd_to_list_and_status command in
       match stat with
@@ -870,7 +896,10 @@ let main_action xs =
            outopt +> Common.do_option (fun outfile ->
              if !inplace_modif
              then begin
-                Common.command2 ("cp "^infile^" "^infile^".cocci_orig");
+               (match !backup_suffix with
+                 Some backup_suffix ->
+                   Common.command2 ("cp "^infile^" "^infile^backup_suffix)
+               | None -> ());
                 Common.command2 ("cp "^outfile^" "^infile);
              end;
 
@@ -975,18 +1004,20 @@ let main () =
     | [x] when !test_mode    ->
        begin
          let prefix = "tests/" in
-         try
-              FC.include_path := [prefix^"include"];
-              Testing.testone prefix x !compare_with_expected
-         with error ->
-           let testfile = prefix ^ x ^ ".cocci" in
-           if not (Sys.file_exists testfile) then
+         let testfile = x ^ ".cocci" in
+           if Sys.file_exists (prefix ^ testfile) then
              begin
-               FC.include_path := ["include"];
-               Testing.testone "" x !compare_with_expected
+               FC.include_path := [prefix^"include"];
+               Testing.testone prefix x !compare_with_expected
              end
            else
-             raise error
+             if Sys.file_exists testfile then
+               begin
+                 FC.include_path := ["include"];
+                 Testing.testone "" x !compare_with_expected
+               end
+             else
+               pr2 (spf "ERROR: File %s does not exist" testfile)
        end
 
     | []  when !test_all ->
index 149d031..2c4c5ff 100644 (file)
@@ -685,11 +685,14 @@ and program = toplevel list
  *)
 and metavars_binding = (Ast_cocci.meta_name, metavar_binding_kind) assoc
   and metavar_binding_kind =
-  | MetaIdVal        of string
+  | MetaIdVal        of string *
+                       Ast_cocci.meta_name list (* negative constraints *)
   | MetaFuncVal      of string
   | MetaLocalFuncVal of string
 
-  | MetaExprVal      of expression (* a "clean expr" *)
+  | MetaExprVal      of expression (* a "clean expr" *) *
+                       (*subterm constraints, currently exprs*)
+                       Ast_cocci.meta_name list
   | MetaExprListVal  of argument wrap2 list
   | MetaParamVal     of parameterType
   | MetaParamListVal of parameterType wrap2 list
index 9888185..43fd3cf 100644 (file)
@@ -249,13 +249,13 @@ let compare_ast filename1 filename2  =
 
 
 (* Pass only "true" comments, dont pass TCommentMisc and TCommentCpp *)
-let is_normal_space_or_comment = function
-  | Parser_c.TComment _
+let is_normal_space_or_comment to_expected = function
   | Parser_c.TCommentSpace _
   | Parser_c.TCommentNewline _
 
 (*  | Parser_c.TComma _ *) (* UGLY, because of gcc_opt_comma isomorphism  *)
       -> true
+  | Parser_c.TComment _ -> to_expected (* only ignore in compare to expected *)
   | _ -> false
 
 
@@ -263,7 +263,7 @@ let is_normal_space_or_comment = function
  * because when there is a notparsablezone in generated_file, I
  * don't issue a PbOnlyInNotParsedCorrectly
  *)
-let do_compare_token adjust_cvs filename1 filename2 =
+let do_compare_token adjust_cvs to_expected filename1 filename2 =
 
   let rec loop xs ys =
     match xs, ys with
@@ -298,8 +298,10 @@ let do_compare_token adjust_cvs filename1 filename2 =
   in
   let final_loop xs ys =
     loop
-      (xs +> List.filter (fun x -> not (is_normal_space_or_comment x)))
-      (ys +> List.filter (fun x -> not (is_normal_space_or_comment x)))
+      (xs +>
+       List.filter (fun x -> not (is_normal_space_or_comment to_expected x)))
+      (ys +>
+       List.filter (fun x -> not (is_normal_space_or_comment to_expected x)))
   in
 
   (*
@@ -356,16 +358,16 @@ let do_compare_token adjust_cvs filename1 filename2 =
 
   res, xs
 
-let compare_token = do_compare_token true
+let compare_token = do_compare_token true true
 
 
 (*****************************************************************************)
 
 (* compare to a res file *)
-let compare_default = do_compare_token true
+let compare_default = do_compare_token true true
 
 (* compare to the source of the transformation *)
-let compare_to_original = do_compare_token false
+let compare_to_original = do_compare_token false false
 
 
 let compare_result_to_string (correct, diffxs) =
index ac88346..1c25d90 100644 (file)
@@ -498,6 +498,7 @@ let macro_body_to_maybe_hint body =
       )
   | xs -> DefineBody body
 
+exception Bad_param
 
 let rec (define_parse: Parser_c.token list -> (string * define_def) list) =
  fun xs ->
@@ -507,49 +508,56 @@ let rec (define_parse: Parser_c.token list -> (string * define_def) list) =
       (* note: the macro could be badly written and have no closing ')' for
        * its param, which would make us go too far away, but I don't think
        * it's important to handle such an error *)
-      let (tokparams, _, xs) =
-        xs +> Common.split_when (function TCPar _ -> true | _ -> false) in
-      let (body, _, xs) =
-        xs +> Common.split_when (function TDefEOL _ -> true | _ -> false) in
-      let params =
-        tokparams +> Common.map_filter (function
-        | TComma _ -> None
-        | TIdent (s, _) -> Some s
-
-        (* TODO *)
-        | TDefParamVariadic (s, _) -> Some s
-        (* TODO *)
-        | TEllipsis _ -> Some "..."
-
-        | x ->
-            (* bugfix: param of macros can be tricky *)
-            let s = TH.str_of_tok x in
-            if s ==~ Common.regexp_alpha
-            then begin
-              pr2 (spf "remapping: %s to a macro parameter" s);
-              Some s
-            end
-            else
-              error_cant_have x
-        ) in
-      (* bugfix: also substitute to ident in body so cpp_engine will
-       * have an easy job.
-       *)
-      let body = body +> List.map (fun tok ->
-        match tok with
-        | TIdent _ -> tok
-        | _ ->
-            let s = TH.str_of_tok tok in
-            let ii = TH.info_of_tok tok in
-            if s ==~ Common.regexp_alpha && List.mem s params
-            then begin
-              pr2 (spf "remapping: %s to an ident in macro body" s);
-              TIdent (s, ii)
-            end
-            else tok
-      ) +> List.map (TH.visitor_info_of_tok Ast_c.make_expanded) in
-      let def = (s, (s, Params params, macro_body_to_maybe_hint body)) in
-      def::define_parse xs
+      let def =
+       try
+         let (tokparams, _, xs) =
+            xs +> Common.split_when (function TCPar _ -> true | _ -> false) in
+         let (body, _, xs) =
+            xs +> Common.split_when (function TDefEOL _ -> true | _ -> false) in
+         let params =
+            tokparams +> Common.map_filter (function
+              | TComma _ -> None
+              | TIdent (s, _) -> Some s
+
+              (* TODO *)
+              | TDefParamVariadic (s, _) -> Some s
+              (* TODO *)
+              | TEllipsis _ -> Some "..."
+
+              | x ->
+              (* bugfix: param of macros can be tricky *)
+                 let s = TH.str_of_tok x in
+                 if s ==~ Common.regexp_alpha
+                 then begin
+                   pr2 (spf "remapping: %s to a macro parameter" s);
+                   Some s
+                 end
+                 else
+                   begin
+                     pr2 (spf "bad character %s in macro parameter list" s);
+                     raise Bad_param
+                   end)  in
+          (* bugfix: also substitute to ident in body so cpp_engine will
+           * have an easy job.
+           *)
+         let body = body +> List.map (fun tok ->
+            match tok with
+            | TIdent _ -> tok
+            | _ ->
+               let s = TH.str_of_tok tok in
+               let ii = TH.info_of_tok tok in
+               if s ==~ Common.regexp_alpha && List.mem s params
+               then begin
+                 pr2 (spf "remapping: %s to an ident in macro body" s);
+                 TIdent (s, ii)
+               end
+               else tok) +>
+           List.map (TH.visitor_info_of_tok Ast_c.make_expanded) in
+         Some (s, (s, Params params, macro_body_to_maybe_hint body))
+       with Bad_param -> None in
+      (match def with
+       Some def -> def::define_parse xs
+      |        None -> define_parse xs)
 
   | TDefine i1::TIdentDefine (s,i2)::xs ->
       let (body, _, xs) =
index 1106dd4..8852ffa 100644 (file)
@@ -249,6 +249,8 @@ let spacing = ref LINUX
 let set_linux_spacing _ = spacing := LINUX (*follow the conventions of Linux*)
 let set_smpl_spacing _ = spacing := SMPL   (*use spacing from the SP*)
 
+let max_width = 78
+
 (*****************************************************************************)
 
 (* drop back edges made by proper loop constructs -
index 2560b74..f63cdba 100644 (file)
@@ -1617,6 +1617,14 @@ start_fun2: decl_spec declaratorfd
 /*(* workarounds *)*/
 /*(*----------------------------*)*/
 
+/* It would be very nice if we could make declarator aware that this is
+coming from a function definition.  Then on the ( and ) cases, it could
+set the state to something other than InParameter.  Then the case
+(TIdent (s, i1)::(TComma _|TCPar _)::_ , (TComma _ |TOPar _)::_ )
+in parsing_hacks.ml would not have to consider K&R variable declarations
+as typedefs.  Unfortunately, doing something about this problem seems to
+introduce conflicts in the parser. */
+
 declaratorfd:
  | declarator { et "declaratorfd" (); $1, Ast_c.noattr }
  /*(* gccext: *)*/
index 801e2a6..ff542fb 100644 (file)
@@ -427,7 +427,7 @@ let mk_pretty_printers
       | (ParenType t, _)                           -> pp_base_type t sto
       | (Array (eopt, t), [i1;i2])                 -> pp_base_type t sto
       | (FunctionType (returnt, paramst), [i1;i2]) ->
-          pp_base_type returnt sto
+          pp_base_type returnt sto;
 
 
       | (StructUnion (su, sopt, fields),iis) ->
index a55753a..9c7fc4b 100644 (file)
@@ -907,7 +907,8 @@ let annotater_expr_visitor_subpart = (fun (k,bigf) expr ->
 
     | Unary (e, Not) ->
         k expr; (* recurse to set the types-ref of sub expressions *)
-        Ast_c.get_type_expr e
+       (* the result of ! is always 0 or 1, not the argument type *)
+        make_info_def (type_of_s "int")
     | Unary (e, Tilde) ->
         k expr; (* recurse to set the types-ref of sub expressions *)
         Ast_c.get_type_expr e
index 0cabad4..23a6fc6 100644 (file)
@@ -59,6 +59,7 @@ type token2 =
           int option (* orig index, abstracting away comments and space *)
   | Fake2
   | Cocci2 of string * int (* line *) * int (* lcol *) * int (* rcol *)
+       * Unparse_cocci.nlhint option
   | C2 of string
   | Indent_cocci2
   | Unindent_cocci2 of bool (* true for permanent, false for temporary *)
@@ -96,7 +97,7 @@ let print_token1 = function
 let str_of_token2 = function
   | T2 (t,_,_) -> TH.str_of_tok t
   | Fake2 -> ""
-  | Cocci2 (s,_,_,_) -> s
+  | Cocci2 (s,_,_,_,_) -> s
   | C2 s -> s
   | Indent_cocci2 -> ""
   | Unindent_cocci2 _ -> ""
@@ -111,7 +112,7 @@ let print_token2 = function
        | Ctx -> "" in
       "T2:"^b_str^TH.str_of_tok t
   | Fake2 -> "fake"
-  | Cocci2 (s,_,lc,rc) -> Printf.sprintf "Cocci2:%d:%d%s" lc rc s
+  | Cocci2 (s,_,lc,rc,_) -> Printf.sprintf "Cocci2:%d:%d%s" lc rc s
   | C2 s -> "C2:"^s
   | Indent_cocci2 -> "Indent"
   | Unindent_cocci2 _ -> "Unindent"
@@ -299,7 +300,12 @@ let displace_fake_nodes toks =
 (*****************************************************************************)
 
 let comment2t2 = function
-    (Token_c.TCommentCpp x,(info : Token_c.info)) ->
+    (Token_c.TCommentCpp
+       (* not sure iif the following list is exhaustive or complete *)
+       (Token_c.CppAttr|Token_c.CppMacro|Token_c.CppPassingCosWouldGetError),
+     (info : Token_c.info)) ->
+      C2(info.Common.str)
+  | (Token_c.TCommentCpp x,(info : Token_c.info)) ->
       C2("\n"^info.Common.str^"\n")
   | x -> failwith (Printf.sprintf "unexpected comment %s" (Common.dump x))
 
@@ -354,8 +360,8 @@ let expand_mcode toks =
     let (mcode,env) =
       Ast_c.mcode_and_env_of_cocciref ((info_of_token1 t).cocci_tag) in
 
-    let pr_cocci s ln col rcol =
-      push2 (Cocci2(s,ln,col,rcol)) toks_out  in
+    let pr_cocci s ln col rcol hint =
+      push2 (Cocci2(s,ln,col,rcol,hint)) toks_out  in
     let pr_c info =
       (match Ast_c.pinfo_of_info info with
        Ast_c.AbstractLineTok _ ->
@@ -369,7 +375,7 @@ let expand_mcode toks =
       List.iter (fun x -> Common.push2 (comment2t2 x) toks_out) in
 
     let pr_barrier ln col = (* marks a position, used around C code *)
-      push2 (Cocci2("",ln,col,col)) toks_out  in
+      push2 (Cocci2("",ln,col,col,None)) toks_out  in
     let pr_nobarrier ln col = () in (* not needed for linux spacing *)
 
     let pr_cspace _ = push2 (C2 " ") toks_out in
@@ -638,7 +644,7 @@ let remove_minus_and_between_and_expanded_and_fake xs =
            @ (adjust_within_minus cp (t2::xs))
        | (T2(_,Min adj2,_) as t2)::xs ->
            let is_whitespace_or_plus = function
-               (T2 _) as x -> is_space x
+               (T2 _) as x -> is_whitespace x
              | _ -> true (*plus*) in
            if List.for_all is_whitespace_or_plus not_minus_list
            then
@@ -752,7 +758,7 @@ let rec add_space xs =
   match xs with
   | [] -> []
   | [x] -> [x]
-  | (Cocci2(sx,lnx,_,rcolx) as x)::((Cocci2(sy,lny,lcoly,_)) as y)::xs
+  | (Cocci2(sx,lnx,_,rcolx,_) as x)::((Cocci2(sy,lny,lcoly,_,_)) as y)::xs
     when !Flag_parsing_c.spacing = Flag_parsing_c.SMPL &&
       not (lnx = -1) && lnx = lny && not (rcolx = -1) && rcolx < lcoly ->
        (* this only works within a line.  could consider whether
@@ -766,7 +772,78 @@ let rec add_space xs =
       then x::C2 " "::(add_space (y::xs))
       else x::(add_space (y::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
+should be followed by a space or a newline and indent. *)
+let add_newlines toks tabbing_unit =
+  let create_indent n =
+    let (tu,tlen) = 
+      match tabbing_unit with
+       Some ("\t",_) -> ("\t",8)
+      | Some ("",_) -> ("\t",8) (* not sure why... *)
+      | Some (s,_) -> (s,String.length s) (* assuming only spaces *)
+      |        None -> ("\t",8) in
+    let rec loop seen =
+      if seen + tlen <= n
+      then tu ^ loop (seen + tlen)
+      else String.make (n-seen) ' ' in
+    loop 0 in
+  let check_for_newline count x = function
+      Some (start,space_cell) when count > Flag_parsing_c.max_width ->
+       space_cell := "\n"^(create_indent x);
+       Some (x + (count - start))
+    | _ -> None in
+  (* the following is for strings that may contain newline *)
+  let string_length s count =
+    let l = list_of_string s in
+    List.fold_left
+      (function count ->
+       function
+           '\t' -> count + 8
+         | '\n' -> 0
+         | c -> count + 1)
+      count l in
+  let rec loop info count = function
+      [] -> []
+    | ((T2(tok,_,_)) as a)::xs ->
+       a :: loop info (string_length (TH.str_of_tok tok) count) xs
+    | ((Cocci2(s,line,lcol,rcol,hint)) as a)::xs ->
+       let (stack,space_cell) = info in
+       let rest =
+         match hint with
+           None -> loop info (count + (String.length s)) xs
+         | Some Unparse_cocci.StartBox ->
+             let count = count + (String.length s) in
+             loop (count::stack,space_cell) count xs
+         | Some Unparse_cocci.EndBox ->
+             let count = count + (String.length s) in
+             (match stack with
+               [x] ->
+                 (match check_for_newline count x space_cell with
+                   Some count -> loop ([],None) count xs
+                 | None -> loop ([],None) count xs)
+             | _ -> loop (List.tl stack,space_cell) count xs)
+         | Some (Unparse_cocci.SpaceOrNewline sp) ->
+             let count = count + (String.length s) + 1 (*space*) in
+             (match stack with
+               [x] ->
+                 (match check_for_newline count x space_cell with
+                   Some count -> loop (stack,Some (x,sp)) count xs
+                 | None -> loop (stack,Some (count,sp)) count xs)
+             | _ -> loop info count xs) in
+       a :: rest
+    | ((C2(s)) as a)::xs -> a :: loop info (string_length s count) xs
+    | Fake2 :: _ | Indent_cocci2 :: _
+    | Unindent_cocci2 _::_ ->
+       failwith "unexpected fake, indent, or unindent" in
+  let redo_spaces prev = function
+      Cocci2(s,line,lcol,rcol,Some (Unparse_cocci.SpaceOrNewline sp)) ->
+        C2 !sp :: Cocci2(s,line,lcol,rcol,None) :: prev
+    | t -> t::prev in
+  (match !Flag_parsing_c.spacing with
+    Flag_parsing_c.SMPL -> toks
+  | _ -> List.rev (List.fold_left redo_spaces [] (loop ([],None) 0 toks)))
 
 (* When insert some new code, because of a + in a SP, we must add this
  * code at the right place, with the good indentation. So each time we
@@ -836,7 +913,7 @@ let rec adjust_indentation xs =
     | [] ->  []
 (* patch: coccinelle *)
     | ((T2 (tok,_,_)) as x)::(T2 (Parser_c.TCommentNewline s, _, _))::
-      ((Cocci2 ("{",_,_,_)) as a)::xs
+      ((Cocci2 ("{",_,_,_,_)) as a)::xs
       when started && str_of_token2 x =$= ")" ->
        (* to be done for if, etc, but not for a function header *)
        x::(C2 " ")::a::(aux started xs)
@@ -857,7 +934,7 @@ let rec adjust_indentation xs =
          None -> aux started xs
        | Some (tu,_) ->
            _current_tabbing := (!_current_tabbing)^tu;
-           Cocci2 (tu,-1,-1,-1)::aux started xs)
+           Cocci2 (tu,-1,-1,-1,None)::aux started xs)
     | Unindent_cocci2(permanent)::xs ->
        (match !tabbing_unit with
          None -> aux started xs
@@ -865,7 +942,7 @@ let rec adjust_indentation xs =
            _current_tabbing := remtab tu (!_current_tabbing);
            aux started xs)
     (* border between existing code and cocci code *)
-    | ((T2 (tok,_,_)) as x)::((Cocci2("\n",_,_,_)) as y)::xs
+    | ((T2 (tok,_,_)) as x)::((Cocci2("\n",_,_,_,_)) as y)::xs
       when str_of_token2 x =$= "{" ->
        x::aux true (y::Indent_cocci2::xs)
     | ((Cocci2 _) as x)::((T2 (tok,_,_)) as y)::xs
@@ -873,15 +950,15 @@ let rec adjust_indentation xs =
        x::aux started (y::Unindent_cocci2 true::xs)
     (* starting the body of the function *)
     | ((T2 (tok,_,_)) as x)::xs when str_of_token2 x =$= "{" ->  x::aux true xs
-    | ((Cocci2("{",_,_,_)) as a)::xs -> a::aux true xs
-    | ((Cocci2("\n",_,_,_)) as x)::Unindent_cocci2(false)::xs ->
+    | ((Cocci2("{",_,_,_,_)) as a)::xs -> a::aux true xs
+    | ((Cocci2("\n",_,_,_,_)) as x)::Unindent_cocci2(false)::xs ->
         x::aux started xs
-    | ((Cocci2("\n",_,_,_)) as x)::xs ->
+    | ((Cocci2("\n",_,_,_,_)) as x)::xs ->
             (* dont inline in expr because of weird eval order of ocaml *)
         let s = !_current_tabbing in
-        x::Cocci2 (s,-1,-1,-1)::aux started xs
+        x::Cocci2 (s,-1,-1,-1,None)::aux started xs
     | x::xs -> x::aux started xs in
-  aux false xs
+  (aux false xs,!tabbing_unit)
 
 
 let rec find_paren_comma = function
@@ -1048,11 +1125,12 @@ let pp_program2 xs outfile  =
            then drop_minus toks (* nothing to do for sgrep *)
            else
               (* phase2: can now start to filter and adjust *)
-              let toks = adjust_indentation toks in
+              let (toks,tu) = adjust_indentation toks in
              let toks = adjust_before_semicolon toks in(*before remove minus*)
               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
+             let toks = add_newlines toks tu in
               let toks = fix_tokens toks in
              toks in
 
index 6b9cb59..af78f20 100644 (file)
@@ -33,6 +33,7 @@ exception CantBeInPlus
 (*****************************************************************************)
 
 type pos = Before | After | InPlace
+type nlhint = StartBox | EndBox | SpaceOrNewline of string ref
 
 let unknown = -1
 
@@ -44,8 +45,11 @@ let rec do_all
 (* Just to be able to copy paste the code from pretty_print_cocci.ml. *)
 let print_string s line lcol =
   let rcol = if lcol = unknown then unknown else lcol + (String.length s) in
-  pr s line lcol rcol in
-let print_text s = pr s unknown unknown unknown in
+  pr s line lcol rcol None in
+let print_string_with_hint hint s line lcol =
+  let rcol = if lcol = unknown then unknown else lcol + (String.length s) in
+  pr s line lcol rcol (Some hint) in
+let print_text s = pr s unknown unknown unknown None in
 let close_box _ = () in
 let force_newline _ = print_text "\n" in
 
@@ -144,7 +148,6 @@ let mcode fn (s,info,mc,pos) =
                    | Ast.Indent s -> s in
                  print_string str line col; Some line
              | Some lb when line =|= lb ->
-                 Printf.printf "some, line same case\n";
                  let str = match str with Ast.Noindent s | Ast.Indent s -> s in
                  print_string str line col; Some line
              | _ ->
@@ -224,22 +227,15 @@ let dots between fn d =
   | Ast.STARS(l) -> print_between between fn l
 in
 
-let nest_dots multi fn f d =
-  let mo s = if multi then "<+"^s else "<"^s in
-  let mc s = if multi then s^"+>" else s^">" in
-  match Ast.unwrap d with
-    Ast.DOTS(l) ->
-      print_text (mo "..."); f(); start_block();
-      print_between force_newline fn l;
-      end_block(); print_text (mc "...")
-  | Ast.CIRCLES(l) ->
-      print_text (mo "ooo"); f(); start_block();
-      print_between force_newline fn l;
-      end_block(); print_text (mc "ooo")
-  | Ast.STARS(l) ->
-      print_text (mo "***"); f(); start_block();
-      print_between force_newline fn l;
-      end_block(); print_text (mc "***")
+let nest_dots starter ender fn f d =
+  mcode print_string starter;
+  f(); start_block();
+  (match Ast.unwrap d with
+    Ast.DOTS(l)    -> print_between force_newline fn l
+  | Ast.CIRCLES(l) -> print_between force_newline fn l
+  | Ast.STARS(l)   -> print_between force_newline fn l);
+  end_block();
+  mcode print_string ender
 in
 
 (* --------------------------------------------------------------------- *)
@@ -250,7 +246,7 @@ let rec ident i =
       Ast.Id(name) -> mcode print_string name
     | Ast.MetaId(name,_,_,_) ->
        handle_metavar name (function
-                              | (Ast_c.MetaIdVal id) -> print_text id
+                              | (Ast_c.MetaIdVal (id,_)) -> print_text id
                               | _ -> raise Impossible
                            )
     | Ast.MetaFunc(name,_,_,_) ->
@@ -282,14 +278,9 @@ let rec expression e =
     Ast.Ident(id) -> ident id
   | Ast.Constant(const) -> mcode constant const
   | Ast.FunCall(fn,lp,args,rp) ->
-      expression fn; mcode print_string_box lp;
-      let comma e =
-       expression e;
-       match Ast.unwrap e with
-         Ast.EComma(cm) -> pr_space()
-       | _ -> () in
-      dots (function _ -> ()) comma args;
-      close_box(); mcode print_string rp
+      expression fn; mcode (print_string_with_hint StartBox) lp;
+      dots (function _ -> ()) arg_expression args;
+      mcode (print_string_with_hint EndBox) rp
   | Ast.Assignment(left,op,right,_) ->
       expression left; pr_space(); mcode assignOp op;
       pr_space(); expression right
@@ -330,7 +321,7 @@ let rec expression e =
 
   | Ast.MetaExpr (name,_,_,_typedontcare,_formdontcare,_) ->
       handle_metavar name  (function
-        | Ast_c.MetaExprVal exp ->
+        | Ast_c.MetaExprVal (exp,_) ->
             pretty_print_c.Pretty_print_c.expression exp
         | _ -> raise Impossible
       )
@@ -348,13 +339,14 @@ let rec expression e =
       if generating
       then print_disj_list expression exp_list
       else raise CantBeInPlus
-  | Ast.NestExpr(expr_dots,Some whencode,multi) when generating ->
-      nest_dots multi expression
+  | Ast.NestExpr(starter,expr_dots,ender,Some whencode,multi)
+    when generating ->
+      nest_dots starter ender expression
        (function _ -> print_text "   when != "; expression whencode)
        expr_dots
-  | Ast.NestExpr(expr_dots,None,multi) when generating ->
-      nest_dots multi expression (function _ -> ()) expr_dots
-  | Ast.NestExpr(_) -> raise CantBeInPlus
+  | Ast.NestExpr(starter,expr_dots,ender,None,multi) when generating ->
+      nest_dots starter ender expression (function _ -> ()) expr_dots
+  | Ast.NestExpr _ -> raise CantBeInPlus
   | Ast.Edots(dots,Some whencode)
   | Ast.Ecircles(dots,Some whencode)
   | Ast.Estars(dots,Some whencode) ->
@@ -374,6 +366,14 @@ let rec expression e =
   | Ast.OptExp(exp) | Ast.UniqueExp(exp) ->
       raise CantBeInPlus
 
+and arg_expression e =
+  match Ast.unwrap e with
+    Ast.EComma(cm) ->
+      (* space is only used by add_newline, and only if not using SMPL
+        spacing.  pr_cspace uses a " " in unparse_c.ml.  Not so nice... *)
+      mcode (print_string_with_hint (SpaceOrNewline (ref " ")))  cm
+  | _ -> expression e
+
 and  unaryOp = function
     Ast.GetRef -> print_string "&"
   | Ast.DeRef -> print_string "*"
@@ -637,7 +637,11 @@ and parameterTypeDef p =
   | Ast.Param(ty,None) -> fullType ty
 
   | Ast.MetaParam(name,_,_) ->
-      failwith "not handling MetaParam"
+      handle_metavar name
+       (function
+           Ast_c.MetaParamVal p ->
+              pretty_print_c.Pretty_print_c.param p
+          | _ -> raise Impossible)
   | Ast.MetaParamList(name,_,_,_) ->
       failwith "not handling MetaParamList"
 
@@ -867,9 +871,9 @@ let rec statement arity s =
           stmt_dots_list;
         print_text "\n)")
       else raise CantBeInPlus
-  | Ast.Nest(stmt_dots,whn,multi,_,_) when generating ->
+  | Ast.Nest(starter,stmt_dots,ender,whn,multi,_,_) when generating ->
       pr_arity arity;
-      nest_dots multi (statement arity)
+      nest_dots starter ender (statement arity)
        (function _ ->
          print_between force_newline
            (whencode (dots force_newline (statement "")) (statement "")) whn;
@@ -1062,7 +1066,13 @@ in
              | Ast.Token(t,_) when List.mem t ["if";"for";"while";"do"] ->
                  (* space always needed *)
                  pr_space(); false
-             | _ -> true in
+             | Ast.ExpressionTag(e) ->
+                 (match Ast.unwrap e with
+                   Ast.EComma _ ->
+                     (* space always needed *)
+                     pr_space(); false 
+                 | _ -> true)
+             | t -> true in
            let indent_needed =
              let rec loop space_after indent_needed = function
                  [] -> indent_needed
index 54cf9c8..73200a4 100644 (file)
@@ -1,11 +1,13 @@
 exception CantBeInPlus
 
 type pos = Before | After | InPlace
+type nlhint = StartBox | EndBox | SpaceOrNewline of string ref
 
 val pp_list_list_any :
   Ast_c.metavars_binding list *
   (* pr cocci *)
-  (string -> int (*line*) -> int (*lcol*) -> int (*rcol*) -> unit) *
+  (string -> int (*line*) -> int (*lcol*) -> int (*rcol*) -> nlhint option
+    -> unit) *
     (Ast_c.info -> unit) (* pr c *) *
     (unit -> unit) (* pr C space *) *
     (unit -> unit) (* pr space *) *
index f6a780c..9f23e45 100644 (file)
@@ -135,7 +135,7 @@ let get_function_name rule env =
   match names with
     [name] ->
       (match env_lookup (function nm -> nm = name) env with
-       Ast_c.MetaIdVal(s) | Ast_c.MetaFuncVal(s)
+       Ast_c.MetaIdVal(s,_) | Ast_c.MetaFuncVal(s)
       | Ast_c.MetaLocalFuncVal(s) -> s
       |        _ -> error rule "not possible")
   | _ -> error rule "inconsistent rule generation"
@@ -227,7 +227,7 @@ let print_extra_typedefs pr env =
       match vl with
        Ast_c.MetaIdVal(_) | Ast_c.MetaFuncVal(_)
       | Ast_c.MetaLocalFuncVal(_) -> ()
-      | Ast_c.MetaExprVal(exp) -> Visitor_c.vk_expr bigf exp
+      | Ast_c.MetaExprVal(exp,_) -> Visitor_c.vk_expr bigf exp
       | Ast_c.MetaExprListVal(args) -> Visitor_c.vk_argument_list bigf args
       | Ast_c.MetaParamVal(param) -> Visitor_c.vk_param bigf param
       | Ast_c.MetaParamListVal(params) -> Visitor_c.vk_param_list bigf params
@@ -264,8 +264,8 @@ let rename argids env =
        match vl with
         Ast_c.MetaIdVal(_) | Ast_c.MetaFuncVal(_)
        | Ast_c.MetaLocalFuncVal(_) -> vl
-       | Ast_c.MetaExprVal(exp) ->
-          Ast_c.MetaExprVal(Visitor_c.vk_expr_s bigf exp)
+       | Ast_c.MetaExprVal(exp,c) ->
+          Ast_c.MetaExprVal(Visitor_c.vk_expr_s bigf exp,c)
        | Ast_c.MetaExprListVal(args) ->
           Ast_c.MetaExprListVal(Visitor_c.vk_arguments_s bigf args)
        | Ast_c.MetaParamVal(param) ->
@@ -478,7 +478,7 @@ let pp_rule local_metas ast env srcfile =
          error rule "not an abstract line" in
     let pr_space _ = pr " " in
     Unparse_cocci.pp_list_list_any
-      ([env], (fun s _ _ _ -> pr s), pr_c, pr_space, pr_space, pr,
+      ([env], (fun s _ _ _ -> pr s), pr_c, pr_space, pr_space, pr,
        (fun _ _ -> ()), (function _ -> ()), (function _ -> ()))
       true printable Unparse_cocci.InPlace;
     print_end pr;
index 0b8fbe9..9a83b82 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Ast0 = Ast0_cocci
 module V0 = Visitor_ast0
 module VT0 = Visitor_ast0_types
index 636c91b..2932028 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val compute_adjacency : Ast0_cocci.rule -> Ast0_cocci.rule
index c4881f2..09d041f 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 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 *)
 
index 647c3a1..34f8e9c 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val process : Ast0_cocci.rule -> Ast0_cocci.rule
index 44e1bca..dda5557 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 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. *)
@@ -790,7 +812,7 @@ and statement tgt stm =
       let arity =
        stm_same (mcode2line goto) (List.map mcode2arity [goto;sem]) in
       let goto = mcode goto in
-      let l = ident false tgt l in
+      let l = ident false arity l in
       let sem = mcode sem in
       make_rule_elem stm tgt arity (Ast0.Goto(goto,l,sem))
   | Ast0.Return(ret,sem) ->
index 9a3ab2d..9f6d0eb 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val minus_arity : Ast0_cocci.rule -> Ast0_cocci.rule
index 659763a..921e991 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Ast = Ast_cocci
 
 (* --------------------------------------------------------------------- *)
@@ -158,8 +180,9 @@ and expression = base_expression wrap
 
 and constraints =
     NoConstraint
-  | NotIdCstrt     of Ast.idconstraint
+  | NotIdCstrt     of Ast.reconstraint
   | NotExpCstrt    of expression list
+  | SubExpCstrt    of Ast.meta_name list
 
 and listlen = Ast.meta_name mcode option
 
index 4cd02f9..902c894 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* --------------------------------------------------------------------- *)
 (* Modified code *)
 
@@ -148,8 +170,9 @@ and expression = base_expression wrap
 
 and constraints =
     NoConstraint
-  | NotIdCstrt     of Ast_cocci.idconstraint
+  | NotIdCstrt     of Ast_cocci.reconstraint
   | NotExpCstrt    of expression list
+  | SubExpCstrt    of Ast_cocci.meta_name list
 
 and listlen = Ast_cocci.meta_name mcode option
 
index 0411cdc..53d3770 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 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
@@ -375,9 +397,11 @@ and expression e =
     | Ast0.EComma(cm)         -> Ast.EComma(mcode cm)
     | Ast0.DisjExpr(_,exps,_,_)     ->
        Ast.DisjExpr(List.map expression exps)
-    | Ast0.NestExpr(_,exp_dots,_,whencode,multi) ->
+    | Ast0.NestExpr(starter,exp_dots,ender,whencode,multi) ->
+       let starter = mcode starter in
        let whencode = get_option expression whencode in
-       Ast.NestExpr(dots expression exp_dots,whencode,multi)
+       let ender = mcode ender in
+       Ast.NestExpr(starter,dots expression exp_dots,ender,whencode,multi)
     | Ast0.Edots(dots,whencode) ->
        let dots = mcode dots in
        let whencode = get_option expression whencode in
@@ -401,6 +425,7 @@ and constraints c =
       Ast0.NoConstraint        -> Ast.NoConstraint
     | Ast0.NotIdCstrt   idctrt -> Ast.NotIdCstrt idctrt
     | Ast0.NotExpCstrt  exps   -> Ast.NotExpCstrt (List.map expression exps)
+    | Ast0.SubExpCstrt  ids    -> Ast.SubExpCstrt ids
 
 (* --------------------------------------------------------------------- *)
 (* Types *)
@@ -721,9 +746,10 @@ and statement s =
       | Ast0.Disj(_,rule_elem_dots_list,_,_) ->
          Ast.Disj(List.map (function x -> statement_dots seqible x)
                     rule_elem_dots_list)
-      | Ast0.Nest(_,rule_elem_dots,_,whn,multi) ->
+      | Ast0.Nest(starter,rule_elem_dots,ender,whn,multi) ->
          Ast.Nest
-           (statement_dots Ast.Sequencible rule_elem_dots,
+           (mcode starter,statement_dots Ast.Sequencible rule_elem_dots,
+            mcode ender,
             List.map
               (whencode (statement_dots Ast.Sequencible)
                 (statement Ast.NotSequencible))
index 92fe22e..2198e6b 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val ast0toast :
     string -> Ast_cocci.dependency -> string list (* dropped isos *) ->
       Ast_cocci.exists -> Ast0_cocci.rule -> bool list -> Ast_cocci.ruletype ->
index 998e52c..1446b48 100644 (file)
  *)
 
 
-(* Constraints on Meta-* Identifiers, Functions *)
-type idconstraint =
-    IdNoConstraint
-  | IdNegIdSet      of string list
-  | IdRegExp        of string * Str.regexp
-  | IdNotRegExp     of string * Str.regexp
+(*
+ * 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.
+ *)
+
 
 (* --------------------------------------------------------------------- *)
 (* Modified code *)
@@ -197,7 +212,10 @@ and base_expression =
   | EComma         of string mcode (* only in arg lists *)
 
   | DisjExpr       of expression list
-  | NestExpr       of expression dots * expression option * multi
+  | NestExpr       of string mcode (* <.../<+... *) *
+                     expression dots *
+                     string mcode (* ...>/...+> *) * 
+                      expression option * multi
 
   (* can appear in arg lists, and also inside Nest, as in:
    if(< ... X ... Y ...>)
@@ -211,8 +229,19 @@ and base_expression =
 
 and constraints =
     NoConstraint
-  | NotIdCstrt     of idconstraint
+  | NotIdCstrt     of reconstraint
   | NotExpCstrt    of expression list
+  | SubExpCstrt    of meta_name list
+
+(* Constraints on Meta-* Identifiers, Functions *)
+and idconstraint =
+    IdNoConstraint
+  | IdNegIdSet         of string list * meta_name list
+  | IdRegExpConstraint of reconstraint
+
+and reconstraint =
+  | IdRegExp        of string * Str.regexp
+  | IdNotRegExp     of string * Str.regexp
 
 (* ANY = int E; ID = idexpression int X; CONST = constant int X; *)
 and form = ANY | ID | LocalID | CONST (* form for MetaExp *)
@@ -474,7 +503,8 @@ and base_statement =
                     statement (*decl*) dots * case_line list * rule_elem(*}*)
   | Atomic        of rule_elem
   | Disj          of statement dots list
-  | Nest          of statement dots *
+  | Nest          of string mcode (* <.../<+... *) * statement dots *
+                    string mcode (* ...>/...+> *) * 
                     (statement dots,statement) whencode list * multi *
                     dots_whencode list * dots_whencode list
   | FunDecl       of rule_elem (* header *) * rule_elem (* { *) *
index a894f9a..5381972 100644 (file)
  *)
 
 
-(* Constraints on Meta-* Identifiers, Functions *)
-type idconstraint =
-    IdNoConstraint
-  | IdNegIdSet      of string list
-  | IdRegExp        of string * Str.regexp
-  | IdNotRegExp     of string * Str.regexp
+(*
+ * 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.
+ *)
+
 
 (* --------------------------------------------------------------------- *)
 (* Modified code *)
@@ -182,7 +197,10 @@ and base_expression =
   | EComma         of string mcode (* only in arg lists *)
 
   | DisjExpr       of expression list
-  | NestExpr       of expression dots * expression option * multi
+  | NestExpr       of string mcode (* <.../<+... *) *
+                     expression dots *
+                     string mcode (* ...>/...+> *) * 
+                      expression option * multi
 
   (* can appear in arg lists, and also inside Nest, as in:
    if(< ... X ... Y ...>)
@@ -196,8 +214,19 @@ and base_expression =
 
 and constraints =
     NoConstraint
-  | NotIdCstrt     of idconstraint
+  | NotIdCstrt     of reconstraint
   | NotExpCstrt    of expression list
+  | SubExpCstrt    of meta_name list
+
+(* Constraints on Meta-* Identifiers, Functions *)
+and idconstraint =
+    IdNoConstraint
+  | IdNegIdSet         of string list * meta_name list
+  | IdRegExpConstraint of reconstraint
+
+and reconstraint =
+  | IdRegExp        of string * Str.regexp
+  | IdNotRegExp     of string * Str.regexp
 
 and form = ANY | ID | LocalID | CONST (* form for MetaExp *)
 
@@ -451,7 +480,8 @@ and base_statement =
                     statement (*decl*) dots * case_line list * rule_elem(*}*)
   | Atomic        of rule_elem
   | Disj          of statement dots list
-  | Nest          of statement dots *
+  | Nest          of string mcode (* <.../<+... *) * statement dots *
+                    string mcode (* ...>/...+> *) * 
                     (statement dots,statement) whencode list * multi *
                     dots_whencode list * dots_whencode list
   | FunDecl       of rule_elem (* header *) * rule_elem (* { *) *
index 28633c4..2d95149 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 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
index 2b52885..8d57309 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val check_meta :
     string ->
     Ast_cocci.metavar list (* old metavariables *) ->
index fb1c37c..58791f2 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 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 52ac9eb..bf1914b 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val comm_assoc :
     Ast0_cocci.rule -> string (* rule name *) ->
       string list (* dropped isos *) -> Ast0_cocci.rule
index d843977..6325aae 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* Computes starting and ending logical lines for statements and
 expressions.  every node gets an index as well. *)
 
@@ -29,6 +51,12 @@ module Ast = Ast_cocci
 (* --------------------------------------------------------------------- *)
 (* Result *)
 
+(* This is a horrible hack.  We need to have a special treatment for the code
+inside a nest, and this is to avoid threading that information around
+everywhere *)
+let in_nest_count = ref 0
+let check_attachable v = if !in_nest_count > 0 then false else v
+
 let mkres x e left right =
   let lstart = Ast0.get_info left in
   let lend = Ast0.get_info right in
@@ -41,8 +69,8 @@ let mkres x e left right =
       Ast0.offset = lstart.Ast0.pos_info.Ast0.offset;} in
   let info =
     { Ast0.pos_info = pos_info;
-      Ast0.attachable_start = lstart.Ast0.attachable_start;
-      Ast0.attachable_end = lend.Ast0.attachable_end;
+      Ast0.attachable_start = check_attachable lstart.Ast0.attachable_start;
+      Ast0.attachable_end = check_attachable lend.Ast0.attachable_end;
       Ast0.mcode_start = lstart.Ast0.mcode_start;
       Ast0.mcode_end = lend.Ast0.mcode_end;
       (* only for tokens, not inherited upwards *)
@@ -71,8 +99,10 @@ let mkmultires x e left right (astart,start_mcodes) (aend,end_mcodes) =
       Ast0.offset = lstart.Ast0.pos_info.Ast0.offset; } in
   let info =
     { Ast0.pos_info = pos_info;
-      Ast0.attachable_start = if !inherit_attachable then astart else false;
-      Ast0.attachable_end = if !inherit_attachable then aend else false;
+      Ast0.attachable_start =
+      check_attachable (if !inherit_attachable then astart else false);
+      Ast0.attachable_end =
+      check_attachable (if !inherit_attachable then aend else false);
       Ast0.mcode_start = start_mcodes;
       Ast0.mcode_end = end_mcodes;
       (* only for tokens, not inherited upwards *)
@@ -118,7 +148,8 @@ let promote_to_statement stm mcodekind =
     {info with
       Ast0.pos_info = new_pos_info;
       Ast0.mcode_start = [mcodekind]; Ast0.mcode_end = [mcodekind];
-      Ast0.attachable_start = true; Ast0.attachable_end = true} in
+      Ast0.attachable_start = check_attachable true;
+      Ast0.attachable_end = check_attachable true} in
   {(Ast0.wrap ()) with Ast0.info = new_info; Ast0.mcodekind = ref mcodekind}
 
 let promote_to_statement_start stm mcodekind =
@@ -131,13 +162,16 @@ let promote_to_statement_start stm mcodekind =
     {info with
       Ast0.pos_info = new_pos_info;
       Ast0.mcode_start = [mcodekind]; Ast0.mcode_end = [mcodekind];
-      Ast0.attachable_start = true; Ast0.attachable_end = true} in
+      Ast0.attachable_start = check_attachable true;
+      Ast0.attachable_end = check_attachable true} in
   {(Ast0.wrap ()) with Ast0.info = new_info; Ast0.mcodekind = ref mcodekind}
 
 (* mcode is good by default *)
 let bad_mcode (t,a,info,mcodekind,pos,adj) =
   let new_info =
-    {info with Ast0.attachable_start = false; Ast0.attachable_end = false} in
+    {info with
+      Ast0.attachable_start = check_attachable false;
+      Ast0.attachable_end = check_attachable false} in
   (t,a,new_info,mcodekind,pos,adj)
 
 let get_all_start_info l =
@@ -174,11 +208,11 @@ let dot_list is_dots fn = function
       let last = List.hd backward in
       let first_info =
        { (Ast0.get_info first) with
-         Ast0.attachable_start = first_attachable;
+         Ast0.attachable_start = check_attachable first_attachable;
          Ast0.mcode_start = first_mcode } in
       let last_info =
        { (Ast0.get_info last) with
-         Ast0.attachable_end = last_attachable;
+         Ast0.attachable_end = check_attachable last_attachable;
          Ast0.mcode_end = last_mcode } in
       let first = Ast0.set_info first first_info in
       let last = Ast0.set_info last last_info in
@@ -191,7 +225,9 @@ let dots is_dots prev fn d =
   | (None,Ast0.DOTS([])) ->
       Ast0.set_info d
        {(Ast0.get_info d)
-       with Ast0.attachable_start = false; Ast0.attachable_end = false}
+       with
+         Ast0.attachable_start = check_attachable false;
+         Ast0.attachable_end = check_attachable false}
   | (_,Ast0.DOTS(x)) ->
       let (l,lstart,lend) = dot_list is_dots fn x in
       mkres d (Ast0.DOTS l) lstart lend
@@ -205,17 +241,21 @@ let dots is_dots prev fn d =
 (* --------------------------------------------------------------------- *)
 (* Identifier *)
 
-let rec ident i =
+(* for #define name, with no value, to compute right side *)
+let mkidres a b c d r = (mkres a b c d,r)
+
+let rec full_ident i =
   match Ast0.unwrap i with
       Ast0.Id(name) as ui ->
-       let name = promote_mcode name in mkres i ui name name
+       let name = promote_mcode name in mkidres i ui name name name
     | Ast0.MetaId(name,_,_)
     | Ast0.MetaFunc(name,_,_) | Ast0.MetaLocalFunc(name,_,_) as ui ->
-       let name = promote_mcode name in mkres i ui name name
+       let name = promote_mcode name in mkidres i ui name name name
     | Ast0.OptIdent(id) ->
-       let id = ident id in mkres i (Ast0.OptIdent(id)) id id
+       let (id,r) = full_ident id in mkidres i (Ast0.OptIdent(id)) id id r
     | Ast0.UniqueIdent(id) ->
-       let id = ident id in mkres i (Ast0.UniqueIdent(id)) id id
+       let (id,r) = full_ident id in mkidres i (Ast0.UniqueIdent(id)) id id r
+and ident i = let (id,_) = full_ident i in id
 
 (* --------------------------------------------------------------------- *)
 (* Expression *)
@@ -593,14 +633,14 @@ let rec define_param p =
       let res = define_param dp in
       mkres p (Ast0.UniqueDParam(res)) res res
 
-let define_parameters x =
+let define_parameters x id =
   match Ast0.unwrap x with
-    Ast0.NoParams -> x (* no info, should be ignored *)
+    Ast0.NoParams -> (x,id) (* no info, should be ignored *)
   | Ast0.DParams(lp,dp,rp) ->
       let dp = dots is_define_param_dots None define_param dp in
       let l = promote_mcode lp in
       let r = promote_mcode rp in
-      mkres x (Ast0.DParams(lp,dp,rp)) l r
+      (mkres x (Ast0.DParams(lp,dp,rp)) l r, r)
 
 (* --------------------------------------------------------------------- *)
 (* Top-level code *)
@@ -731,7 +771,27 @@ let rec statement s =
     | Ast0.Nest(starter,rule_elem_dots,ender,whencode,multi) ->
        let starter = bad_mcode starter in
        let ender = bad_mcode ender in
-       let rule_elem_dots = dots is_stm_dots None statement rule_elem_dots in
+       let wrapper f =
+         match Ast0.get_mcode_mcodekind starter with
+           Ast0.MINUS _ ->
+             (* if minus, then all nest code has to be minus.  This is
+                checked at the token level, in parse_cocci.ml.  All nest code
+                is also unattachable.  We strip the minus annotations from
+                the nest code because in the CTL another metavariable will
+                take care of removing all the code matched by the nest.
+                Without stripping the minus annotations, we would get a
+                double transformation.  Perhaps there is a more elegant
+                way to do this in the CTL, but it is not easy, because of
+                the interaction with the whencode and the implementation of
+                plus *)
+             in_nest_count := !in_nest_count + 1;
+             let res = f() in
+             in_nest_count := !in_nest_count - 1;
+             res
+         | _ -> f() in
+       let rule_elem_dots =
+         wrapper
+           (function _ -> dots is_stm_dots None statement rule_elem_dots) in
        mkres s (Ast0.Nest(starter,rule_elem_dots,ender,whencode,multi))
          (promote_mcode starter) (promote_mcode ender)
     | Ast0.Dots(dots,whencode) ->
@@ -791,9 +851,9 @@ let rec statement s =
     | Ast0.Include(inc,stm) ->
        mkres s (Ast0.Include(inc,stm)) (promote_mcode inc) (promote_mcode stm)
     | Ast0.Define(def,id,params,body) ->
-       let id = ident id in
-       let params = define_parameters params in
-       let body = dots is_stm_dots None statement body in
+       let (id,right) = full_ident id in
+       let (params,prev) = define_parameters params right in
+       let body = dots is_stm_dots (Some prev) statement body in
        mkres s (Ast0.Define(def,id,params,body)) (promote_mcode def) body
     | Ast0.OptStm(stm) ->
        let stm = statement stm in mkres s (Ast0.OptStm(stm)) stm stm
@@ -847,14 +907,17 @@ let top_level t =
 (* Entry points *)
 
 let compute_lines attachable_or x =
+  in_nest_count := 0;
   inherit_attachable := attachable_or;
   List.map top_level x
 
 let compute_statement_lines attachable_or x =
+  in_nest_count := 0;
   inherit_attachable := attachable_or;
   statement x
 
 let compute_statement_dots_lines attachable_or x =
+  in_nest_count := 0;
   inherit_attachable := attachable_or;
   statement_dots x
 
index 6faa8de..5395aba 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val compute_lines : bool -> Ast0_cocci.rule -> Ast0_cocci.rule
 
 val compute_statement_dots_lines : bool ->
index 096002d..eafd4d2 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 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,
index 123d484..07365da 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val context_neg :
     Ast0_cocci.rule -> Ast0_cocci.rule ->
       (Ast0_cocci.top_level * Ast0_cocci.top_level) list
index 48ddc71..562cd75 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
 
index 84dd031..2ca4644 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* types that clutter the .mly file *)
 (* for iso metavariables, true if they can only match nonmodified, unitary
    metavariables *)
index 40d510a..b2014ff 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Ast = Ast_cocci
 module V = Visitor_ast
 
@@ -171,7 +193,7 @@ and disjexp e =
   | Ast.MetaExprList(_,_,_,_) | Ast.EComma(_) -> [e]
   | Ast.DisjExpr(exp_list) ->
       List.concat (List.map disjexp exp_list)
-  | Ast.NestExpr(expr_dots,whencode,multi) ->
+  | Ast.NestExpr(starter,expr_dots,ender,whencode,multi) ->
       (* not sure what to do here, so ambiguities still possible *)
       [e]
   | Ast.Edots(dots,_) | Ast.Ecircles(dots,_) | Ast.Estars(dots,_) -> [e]
index 9c838c4..d7f5702 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val disj :
     Ast_cocci.rule_with_metavars list -> Ast_cocci.rule_with_metavars list
index c375bd8..460721b 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* uses E rather than A and adds comments indicating the start and end of
 each matched term *)
 
index b5ff789..09d7bd9 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 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 *)
@@ -86,8 +108,16 @@ let collect_refs include_constraints =
   let astfvident recursor k i =
     bind (k i)
       (match Ast.unwrap i with
-       Ast.MetaId(name,_,_,_) | Ast.MetaFunc(name,_,_,_)
-      | Ast.MetaLocalFunc(name,_,_,_) -> [metaid name]
+       Ast.MetaId(name,idconstraint,_,_) | Ast.MetaFunc(name,idconstraint,_,_)
+      | Ast.MetaLocalFunc(name,idconstraint,_,_) ->
+         let metas =
+           if include_constraints
+           then
+             match idconstraint with
+               Ast.IdNegIdSet (_,metas) -> metas
+             | _ -> []
+           else [] in
+         bind (List.rev metas) [metaid name]
       | _ -> option_default) in
 
   let rec type_collect res = function
@@ -101,10 +131,26 @@ let collect_refs include_constraints =
   let astfvexpr recursor k e =
     bind (k e)
       (match Ast.unwrap e with
-       Ast.MetaExpr(name,_,_,Some type_list,_,_) ->
+       Ast.MetaExpr(name,constraints,_,Some type_list,_,_) ->
          let types = List.fold_left type_collect option_default type_list in
-         bind [metaid name] types
-      | Ast.MetaErr(name,_,_,_) | Ast.MetaExpr(name,_,_,_,_,_) -> [metaid name]
+         let extra =
+           if include_constraints
+           then
+             match constraints with
+               Ast.SubExpCstrt l -> l
+             | _ -> []
+           else [] in
+         bind extra (bind [metaid name] types)
+      | Ast.MetaErr(name,constraints,_,_)
+      | Ast.MetaExpr(name,constraints,_,_,_,_) ->
+         let extra =
+           if include_constraints
+           then
+             match constraints with
+               Ast.SubExpCstrt l -> l
+             | _ -> []
+           else [] in
+         bind extra [metaid name]
       | Ast.MetaExprList(name,None,_,_) -> [metaid name]
       | Ast.MetaExprList(name,Some (lenname,_,_),_,_) ->
          [metaid name;metaid lenname]
index 7875d0b..e720430 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* Used after things can only have one binding.  Positions can have many
 bindings.  These are combined in ctlcocciintegration, ie after the CTL
 generation. *)
index a387c64..c503d12 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
 module V0 = Visitor_ast0
index 07f4b35..d6417a9 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val process : string (* name *) -> Ast_cocci.metavar list ->
   string list (* dropped isos *) ->
     Ast0_cocci.rule -> Ast0_cocci.rule -> Ast_cocci.ruletype ->
index 83854d1..3c2f055 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* get a list of all of the constants in the - slice of a SmPL file, to be
 used to select which files to process *)
 
@@ -72,8 +94,8 @@ let get_minus_constants bind orbind =
     | Ast.DisjExpr(exps) ->
        disj_union_all (List.map r.V.combiner_expression exps)
     | Ast.Edots(_,_) | Ast.Ecircles(_,_) | Ast.Estars(_,_) -> []
-    | Ast.NestExpr(expr_dots,whencode,false) -> []
-    | Ast.NestExpr(expr_dots,whencode,true) ->
+    | Ast.NestExpr(starter,expr_dots,ender,whencode,false) -> []
+    | Ast.NestExpr(starter,expr_dots,ender,whencode,true) ->
        r.V.combiner_expression_dots expr_dots
     | _ -> k e in
 
@@ -112,8 +134,9 @@ let get_minus_constants bind orbind =
       Ast.Disj(stmt_dots) ->
        disj_union_all (List.map r.V.combiner_statement_dots stmt_dots)
     | Ast.Dots(d,whn,_,_) | Ast.Circles(d,whn,_,_) | Ast.Stars(d,whn,_,_) -> []
-    | Ast.Nest(stmt_dots,whn,false,_,_) -> []
-    | Ast.Nest(stmt_dots,whn,true,_,_) -> r.V.combiner_statement_dots stmt_dots
+    | Ast.Nest(starter,stmt_dots,ender,whn,false,_,_) -> []
+    | Ast.Nest(starter,stmt_dots,ender,whn,true,_,_) ->
+       r.V.combiner_statement_dots stmt_dots
     | _ -> k e in
 
   V.combiner bind option_default
index fc5219f..a48ed3a 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val get_constants : Ast_cocci.rule list -> string list list
index 90a0aa3..c3406e6 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Ast = Ast_cocci
 module V = Visitor_ast
 module TC = Type_cocci
@@ -249,8 +271,8 @@ let do_get_constants constants keywords env neg_pos =
        bind (k e) (bind (minherited name) (minherited lenname))
     | Ast.SizeOfExpr(sizeof,exp) -> bind (keywords "sizeof") (k e)
     | Ast.SizeOfType(sizeof,lp,ty,rp) -> bind (keywords "sizeof") (k e)
-    | Ast.NestExpr(expr_dots,wc,false) -> option_default
-    | Ast.NestExpr(expr_dots,wc,true) ->
+    | Ast.NestExpr(starter,expr_dots,ender,wc,false) -> option_default
+    | Ast.NestExpr(starter,expr_dots,ender,wc,true) ->
        r.V.combiner_expression_dots expr_dots
     | Ast.DisjExpr(exps) ->
        disj_union_all (List.map r.V.combiner_expression exps)
@@ -347,8 +369,8 @@ let do_get_constants constants keywords env neg_pos =
     match Ast.unwrap s with
       Ast.Disj(stmt_dots) ->
        disj_union_all (List.map r.V.combiner_statement_dots stmt_dots)
-    | Ast.Nest(stmt_dots,whn,false,_,_) -> option_default
-    | Ast.Nest(stmt_dots,whn,true,_,_) ->
+    | Ast.Nest(starter,stmt_dots,ender,whn,false,_,_) -> option_default
+    | Ast.Nest(starter,stmt_dots,ender,whn,true,_,_) ->
        r.V.combiner_statement_dots stmt_dots
     | Ast.OptStm(s) -> option_default
     | Ast.Dots(d,whn,_,_) | Ast.Circles(d,whn,_,_) | Ast.Stars(d,whn,_,_) ->
@@ -521,16 +543,16 @@ let get_constants rules neg_pos_vars =
                  let (cur_info,cur_plus) =
                    rule_fn cur in_plus ((nm,True)::env)
                      neg_pos_vars in
-                 if List.for_all all_context.V.combiner_top_level cur
-                 then (rest_info,cur_plus,(nm,cur_info)::env,nm::locals)
-                 else
+                 (match dependencies env dep with
+                   False -> (rest_info,cur_plus,env,locals)
+                 | dependencies ->
+                     if List.for_all all_context.V.combiner_top_level cur
+                     then (rest_info,cur_plus,(nm,cur_info)::env,nm::locals)
+                     else
               (* no constants if dependent on another rule; then we need to
                  find the constants of that rule *)
-                   match dependencies env dep with
-                     False -> (rest_info,cur_plus,env,locals)
-                   | dependencies ->
                        (build_or (build_and dependencies cur_info) rest_info,
-                        cur_plus,env,locals))
+                        cur_plus,env,locals)))
          (False,[],[],[])
          (List.combine (rules : Ast.rule list) neg_pos_vars) in
       interpret true info
index 5d6788d..e7cdc48 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val get_constants :
     Ast_cocci.rule list ->
       (((Ast_cocci.meta_name list) list) list) (*negated pos vars*) ->
index 86f450d..e6391da 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* create an index for each constructor *)
 (* current max is 147 *)
 
index 63f6117..d9a1cf1 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 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 7ad8c5a..f09bb8b 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 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. *)
@@ -957,7 +979,7 @@ let merge_one : (minus_join_point * Ast0.info * 'a) list *
     m;
   Printf.printf "plus code\n";
   List.iter
-    (function (info,p) ->
+    (function (info,_,p) ->
       Printf.printf "start %d end %d real_start %d real_end %d\n"
        info.Ast0.pos_info.Ast0.logical_start
        info.Ast0.pos_info.Ast0.logical_end
index f25f352..9f2b935 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val insert_plus : Ast0_cocci.rule -> Ast0_cocci.rule -> bool -> unit
 (* bool is true if no isos *)
index 687c942..5dd2065 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module V0 = Visitor_ast0
 module VT0 = Visitor_ast0_types
 module Ast0 = Ast0_cocci
index ac45296..d3ecd82 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val process : Iso_pattern.isomorphism -> unit
 
index 0c83e25..eb1223c 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 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
index 608c22b..9cea445 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 type isomorphism =
     Ast_cocci.metavar list * Ast0_cocci.anything list list * string(*iso name*)
 
index a9e1e4a..d2a4ec8 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 {
 open Parser_cocci_menhir
 module D = Data
@@ -427,6 +449,13 @@ let init _ =
       List.iter (function (name,fn) -> Hashtbl.add metavariables name fn)
        (Hashtbl.find all_metavariables parent))
 
+(* the following is needed to properly tokenize include files.  Because an
+include file is included after seeing a @, so current_line_started is true.
+Current_line_started is not important for parsing the name of a rule, so we
+don't have to reset this value to true after parsing an included file. *)
+let include_init _ =
+  current_line_started := false
+
 let drop_spaces s =
   let len = String.length s in
   let rec loop n =
@@ -513,9 +542,9 @@ rule token = parse
             TOEllipsis (get_current_line_type lexbuf) }
   | "...>" { start_line true; check_context_linetype (tok lexbuf);
             TCEllipsis (get_current_line_type lexbuf) }
-  | "<+..." { start_line true; check_context_linetype (tok lexbuf);
+  | "<+..." { start_line true; check_minus_context_linetype (tok lexbuf);
             TPOEllipsis (get_current_line_type lexbuf) }
-  | "...+>" { start_line true; check_context_linetype (tok lexbuf);
+  | "...+>" { start_line true; check_minus_context_linetype (tok lexbuf);
             TPCEllipsis (get_current_line_type lexbuf) }
 (*
   | "<ooo" { start_line true; check_context_linetype (tok lexbuf);
@@ -629,7 +658,9 @@ rule token = parse
   | ">="           { start_line true;
                     TLogOp(Ast.SupEq,get_current_line_type lexbuf) }
   | "<="           { start_line true;
-                    TLogOp(Ast.InfEq,get_current_line_type lexbuf) }
+                    if !Data.in_meta
+                    then TSub(get_current_line_type lexbuf)
+                    else TLogOp(Ast.InfEq,get_current_line_type lexbuf) }
   | "<"            { start_line true;
                     TLogOp(Ast.Inf,get_current_line_type lexbuf) }
   | ">"            { start_line true;
index 1cab41c..05a85fd 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 {
 open Parser_cocci_menhir
 module D = Data
index b2eec93..42f2004 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* ----------------------------------------------------------------------- *)
 (* Entry point *)
 
index c871899..8cd7da5 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* given parsed minus code and a stream of + code, figure out where to put
 the + code in the mcode of the minus code *)
 
index c21e377..ffe7a07 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val do_merge :
     Ast0_cocci.rule ->
       (Ast_cocci.anything * int * int * int * int) list list list ->
index 891a0af..7813f63 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* exports everything, used only by parser_cocci_menhir.mly *)
 module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
@@ -188,7 +210,7 @@ let iso_adjust first_fn fn first rest =
     front::after -> (first_fn first::front)::after
   | _ -> failwith "not possible"
 
-let check_meta tok =
+let check_meta_tyopt type_irrelevant tok =
   let lookup rule name =
     try
       let info = Hashtbl.find Data.all_metadecls rule in
@@ -254,21 +276,21 @@ let check_meta tok =
               ("incompatible inheritance declaration "^name)))
   | Ast.MetaExpDecl(Ast.NONE,(rule,name),ty) ->
       (match lookup rule name with
-       Ast.MetaExpDecl(_,_,ty1) when ty = ty1 -> ()
+       Ast.MetaExpDecl(_,_,ty1) when type_irrelevant or ty = ty1 -> ()
       | _ ->
          raise
            (Semantic_cocci.Semantic
               ("incompatible inheritance declaration "^name)))
   | Ast.MetaIdExpDecl(Ast.NONE,(rule,name),ty) ->
       (match lookup rule name with
-       Ast.MetaIdExpDecl(_,_,ty1) when ty = ty1 -> ()
+       Ast.MetaIdExpDecl(_,_,ty1) when type_irrelevant or ty = ty1 -> ()
       | _ ->
          raise
            (Semantic_cocci.Semantic
               ("incompatible inheritance declaration "^name)))
   | Ast.MetaLocalIdExpDecl(Ast.NONE,(rule,name),ty) ->
       (match lookup rule name with
-       Ast.MetaLocalIdExpDecl(_,_,ty1) when ty = ty1 -> ()
+       Ast.MetaLocalIdExpDecl(_,_,ty1) when type_irrelevant or ty = ty1 -> ()
       | _ ->
          raise
            (Semantic_cocci.Semantic
@@ -311,7 +333,7 @@ let check_meta tok =
               ("incompatible inheritance declaration "^name)))
   | Ast.MetaConstDecl(Ast.NONE,(rule,name),ty) ->
       (match lookup rule name with
-       Ast.MetaConstDecl(_,_,ty1) when ty = ty1 -> ()
+       Ast.MetaConstDecl(_,_,ty1) when type_irrelevant or ty = ty1 -> ()
       | _ ->
          raise
            (Semantic_cocci.Semantic
@@ -332,6 +354,16 @@ let check_meta tok =
       raise
        (Semantic_cocci.Semantic ("arity not allowed on imported declaration"))
 
+let check_meta m = check_meta_tyopt false m
+
+let check_inherited_constraint meta_name fn =
+  match meta_name with
+    (None,_) -> failwith "constraint must be an inherited variable"
+  | (Some rule,name) ->
+      let i = (rule,name) in
+      check_meta_tyopt true (fn i);
+      i
+
 let create_metadec ar ispure kindfn ids current_rule =
   List.concat
     (List.map
index e78b7a0..d4d78a4 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* splits the entire file into minus and plus fragments, and parses each
 separately (thus duplicating work for the parsing of the context elements) *)
 
@@ -157,6 +179,7 @@ let token2c (tok,_) =
   | PC.TAnd (clt) -> "&"^(line_type2c clt)
   | PC.TEqEq(clt) -> "=="^(line_type2c clt)
   | PC.TNotEq(clt) -> "!="^(line_type2c clt)
+  | PC.TSub(clt) -> "<="^(line_type2c clt)
   | PC.TTildeEq(clt) -> "~="^(line_type2c clt)
   | PC.TTildeExclEq(clt) -> "~!="^(line_type2c clt)
   | PC.TLogOp(op,clt) ->
@@ -306,7 +329,8 @@ let plus_attachable only_plus (tok,_) =
   | PC.TString(_,clt) | PC.TChar(_,clt) | PC.TFloat(_,clt) | PC.TInt(_,clt)
 
   | PC.TOrLog(clt) | PC.TAndLog(clt) | PC.TOr(clt) | PC.TXor(clt)
-  | PC.TAnd (clt) | PC.TEqEq(clt) | PC.TNotEq(clt) | PC.TTildeEq(clt) | PC.TLogOp(_,clt)
+  | PC.TAnd (clt) | PC.TEqEq(clt) | PC.TNotEq(clt) | PC.TTildeEq(clt)
+  | PC.TLogOp(_,clt)
   | PC.TShOp(_,clt) | PC.TPlus(clt) | PC.TMinus(clt) | PC.TMul(clt)
   | PC.TDmOp(_,clt) | PC.TTilde (clt)
 
@@ -323,6 +347,9 @@ let plus_attachable only_plus (tok,_) =
   | PC.TWhen(clt) |  PC.TWhenTrue(clt) |  PC.TWhenFalse(clt)
   | PC.TAny(clt) | PC.TStrict(clt) | PC.TEllipsis(clt)
   (* | PC.TCircles(clt) | PC.TStars(clt) *)
+  | PC.TOEllipsis(clt) | PC.TCEllipsis(clt)
+  | PC.TPOEllipsis(clt) | PC.TPCEllipsis(clt) (* | PC.TOCircles(clt)
+  | PC.TCCircles(clt) | PC.TOStars(clt) | PC.TCStars(clt) *)
 
   | PC.TWhy(clt) | PC.TDotDot(clt) | PC.TBang(clt) | PC.TOPar(clt)
   | PC.TCPar(clt)
@@ -339,11 +366,9 @@ let plus_attachable only_plus (tok,_) =
       else if only_plus then NOTPLUS
       else if line_type clt = D.CONTEXT then PLUS else NOTPLUS
 
-  | PC.TOPar0(clt) | PC.TMid0(clt) | PC.TCPar0(clt)
-  | PC.TOEllipsis(clt) | PC.TCEllipsis(clt)
-  | PC.TPOEllipsis(clt) | PC.TPCEllipsis(clt) (* | PC.TOCircles(clt)
-  | PC.TCCircles(clt) | PC.TOStars(clt) | PC.TCStars(clt) *) -> NOTPLUS
+  | PC.TOPar0(clt) | PC.TMid0(clt) | PC.TCPar0(clt) -> NOTPLUS
   | PC.TMetaPos(nm,_,_,_) -> NOTPLUS
+  | PC.TSub(clt) -> NOTPLUS
 
   | _ -> SKIP
 
@@ -371,7 +396,8 @@ let get_clt (tok,_) =
   | PC.TString(_,clt) | PC.TChar(_,clt) | PC.TFloat(_,clt) | PC.TInt(_,clt)
 
   | PC.TOrLog(clt) | PC.TAndLog(clt) | PC.TOr(clt) | PC.TXor(clt)
-  | PC.TAnd (clt) | PC.TEqEq(clt) | PC.TNotEq(clt) | PC.TTildeEq(clt) | PC.TLogOp(_,clt)
+  | PC.TAnd (clt) | PC.TEqEq(clt) | PC.TNotEq(clt) | PC.TTildeEq(clt)
+  | PC.TSub(clt) | PC.TLogOp(_,clt)
   | PC.TShOp(_,clt) | PC.TPlus(clt) | PC.TMinus(clt) | PC.TMul(clt)
   | PC.TDmOp(_,clt) | PC.TTilde (clt)
 
@@ -473,6 +499,7 @@ let update_clt (tok,x) clt =
   | PC.TEqEq(_) -> (PC.TEqEq(clt),x)
   | PC.TNotEq(_) -> (PC.TNotEq(clt),x)
   | PC.TTildeEq(_) -> (PC.TTildeEq(clt),x)
+  | PC.TSub(_) -> (PC.TSub(clt),x)
   | PC.TLogOp(op,_) -> (PC.TLogOp(op,clt),x)
   | PC.TShOp(op,_) -> (PC.TShOp(op,clt),x)
   | PC.TPlus(_) -> (PC.TPlus(clt),x)
@@ -644,14 +671,15 @@ let split_token ((tok,_) as t) =
   | PC.TFunDecl(clt)
   | PC.TWhen(clt) | PC.TWhenTrue(clt) | PC.TWhenFalse(clt)
   | PC.TAny(clt) | PC.TStrict(clt) | PC.TLineEnd(clt)
-  | PC.TEllipsis(clt) (* | PC.TCircles(clt) | PC.TStars(clt) *) -> split t clt
+  | PC.TEllipsis(clt) (* | PC.TCircles(clt) | PC.TStars(clt) *)
+  | PC.TOEllipsis(clt) | PC.TCEllipsis(clt)
+  | PC.TPOEllipsis(clt) | PC.TPCEllipsis(clt) -> split t clt
 
-  | PC.TOEllipsis(_) | PC.TCEllipsis(_) (* clt must be context *)
-  | PC.TPOEllipsis(_) | PC.TPCEllipsis(_) (* clt must be context *)
 (*
   | PC.TOCircles(_) | PC.TCCircles(_)   (* clt must be context *)
   | PC.TOStars(_) | PC.TCStars(_)       (* clt must be context *)
 *)
+
   | PC.TBang0 | PC.TPlus0 | PC.TWhy0 ->
       ([t],[t])
 
@@ -665,7 +693,8 @@ let split_token ((tok,_) as t) =
       split t clt
 
   | PC.TOrLog(clt) | PC.TAndLog(clt) | PC.TOr(clt) | PC.TXor(clt)
-  | PC.TAnd (clt) | PC.TEqEq(clt) | PC.TNotEq(clt) | PC.TTildeEq(clt) | PC.TTildeExclEq(clt) | PC.TLogOp(_,clt)
+  | PC.TAnd (clt) | PC.TEqEq(clt) | PC.TNotEq(clt) | PC.TTildeEq(clt)
+  | PC.TTildeExclEq(clt) | PC.TSub(clt) | PC.TLogOp(_,clt)
   | PC.TShOp(_,clt) | PC.TPlus(clt) | PC.TMinus(clt) | PC.TMul(clt)
   | PC.TDmOp(_,clt) | PC.TTilde (clt) -> split t clt
 
@@ -946,6 +975,36 @@ let rec translate_when_true_false = function
 
 (* ----------------------------------------------------------------------- *)
 
+(* In a nest, if the nest is -, all of the nested code must also be -.
+All are converted to context, because the next takes care of the -. *)
+let check_nests tokens =
+  let is_minus t =
+    let (line_type,a,b,c,d,e,f,g) = get_clt t in
+    List.mem line_type [D.MINUS;D.OPTMINUS;D.UNIQUEMINUS] in
+  let drop_minus t =
+    let clt = try Some(get_clt t) with Failure _ -> None in
+       match clt with
+         Some (line_type,a,b,c,d,e,f,g) ->
+           (match line_type with
+             D.MINUS -> update_clt t (D.CONTEXT,a,b,c,d,e,f,g)
+           | D.OPTMINUS -> update_clt t (D.OPT,a,b,c,d,e,f,g)
+           | D.UNIQUEMINUS -> update_clt t (D.UNIQUE,a,b,c,d,e,f,g)
+           | _ -> failwith "minus token expected")
+       | None -> t in
+  let rec outside = function
+      [] -> []
+    | ((PC.TPOEllipsis(clt),q) as t)::r when is_minus t -> t :: inside 0 r
+    | t::r -> t :: outside r
+  and inside stack = function
+      [] -> failwith "missing nest end"
+    | ((PC.TPCEllipsis(clt),q) as t)::r ->
+       (drop_minus t)
+       :: (if stack = 0 then outside r else inside (stack - 1) r)
+    | ((PC.TPOEllipsis(clt),q) as t)::r ->
+       (drop_minus t) :: (inside (stack + 1) r)
+    | t :: r -> (drop_minus t) :: (inside stack r) in
+  outside tokens
+
 let check_parentheses tokens =
   let clt2line (_,line,_,_,_,_,_,_) = line in
   let rec loop seen_open = function
@@ -1236,7 +1295,10 @@ let prepare_tokens tokens =
     (translate_when_true_false (* after insert_line_end *)
        (insert_line_end
          (detect_types false
-            (find_function_names (detect_attr (check_parentheses tokens))))))
+            (find_function_names
+               (detect_attr
+                  (check_nests
+                     (check_parentheses tokens)))))))
 
 let prepare_mv_tokens tokens =
   detect_types false (detect_attr tokens)
@@ -1384,7 +1446,7 @@ let parse_iso file =
            let tokens = prepare_tokens (start@tokens) in
             (*
               print_tokens "iso tokens" tokens;
-           *)
+           Ã¥*)
            let entry = parse_one "iso main" PC.iso_main file tokens in
            let entry = List.map (List.map Test_exps.process_anything) entry in
            if more
@@ -1462,6 +1524,7 @@ let eval_depend dep virt =
 let parse file =
   Lexer_cocci.init();
   let rec parse_loop file =
+  Lexer_cocci.include_init ();
   let table = Common.full_charpos_to_pos file in
   Common.with_open_infile file (fun channel ->
   let lexbuf = Lexing.from_channel channel in
@@ -1489,12 +1552,12 @@ let parse file =
          List.iter (function x -> Hashtbl.add Lexer_cocci.rule_names x ())
            virt;
 
-         let (extra_iso_files, extra_rules, extra_virt) =
+         let (extra_iso_files, extra_rules, extra_virt, extra_metas) =
            let rec loop = function
-               [] -> ([],[],[])
-             | (a,b,c)::rest ->
-                 let (x,y,z) = loop rest in
-                 (a::x,b::y,c::z) in
+               [] -> ([],[],[],[])
+             | (a,b,c,d)::rest ->
+                 let (x,y,z,zz) = loop rest in
+                 (a::x,b::y,c::z,d@zz) in
            loop (List.map parse_loop include_files) in
 
           let parse_cocci_rule ruletype old_metas
@@ -1694,21 +1757,28 @@ let parse file =
 
             let (more, rule, metavars, tokens) =
               parse_rule old_metas starts_with_name in
+           let all_metas = metavars @ old_metas in
+
             if more then
-              rule::
-             (loop (metavars @ old_metas) (gen_starts_with_name more tokens))
-            else [rule] in
+             let (all_rules,all_metas) =
+               loop all_metas (gen_starts_with_name more tokens) in
+             (rule::all_rules,all_metas)
+            else ([rule],all_metas) in
+
+         let (all_rules,all_metas) =
+           loop extra_metas (x = PC.TArob) in
 
          (List.fold_left
             (function prev -> function cur -> Common.union_set cur prev)
             iso_files extra_iso_files,
           (* included rules first *)
           List.fold_left (function prev -> function cur -> cur@prev)
-            (loop [] (x = PC.TArob)) (List.rev extra_rules),
-          List.fold_left (@) virt extra_virt (*no dups allowed*))
+            all_rules (List.rev extra_rules),
+          List.fold_left (@) virt extra_virt (*no dups allowed*),
+          (all_metas : 'a list))
       |        _ -> failwith "unexpected code before the first rule\n")
   | (false,[(PC.TArobArob,_)]) | (false,[(PC.TArob,_)]) ->
-      ([],([] : Ast0.parsed_rule list),[] (*virtual rules*))
+      ([],([] : Ast0.parsed_rule list),[] (*virtual rules*), [] (*all metas*))
   | _ -> failwith "unexpected code before the first rule\n" in
   res) in
   parse_loop file
@@ -1716,7 +1786,7 @@ let parse file =
 (* parse to ast0 and then convert to ast *)
 let process file isofile verbose =
   let extra_path = Filename.dirname file in
-  let (iso_files, rules, virt) = parse file in
+  let (iso_files, rules, virt, _metas) = parse file in
   eval_virt virt;
   let std_isos =
     match isofile with
index d34a836..2be34ee 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val process :
     string (* filename *) -> string option (* iso filename *) ->
       bool (* verbose? *) ->
index 3b1f4aa..ff484e3 100644 (file)
  */
 
 
+/*
+ * 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.
+ */
+
+
 %{
 
 (* Not clear how to allow function declarations to specify a return type
index 6fdb1a3..b7b84d2 100644 (file)
@@ -2,140 +2,140 @@ exception Error
 
 type token = 
   | Tvolatile of (
-# 54 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
       (Data.clt)
 # 8 "parser_cocci_menhir.ml"
 )
   | Tvoid of (
-# 50 "parser_cocci_menhir.mly"
+# 72 "parser_cocci_menhir.mly"
       (Data.clt)
 # 13 "parser_cocci_menhir.ml"
 )
   | Tunsigned of (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
 # 18 "parser_cocci_menhir.ml"
 )
   | Tunion of (
-# 50 "parser_cocci_menhir.mly"
+# 72 "parser_cocci_menhir.mly"
       (Data.clt)
 # 23 "parser_cocci_menhir.ml"
 )
   | Ttypedef of (
-# 53 "parser_cocci_menhir.mly"
+# 75 "parser_cocci_menhir.mly"
       (Data.clt)
 # 28 "parser_cocci_menhir.ml"
 )
   | Tstruct of (
-# 50 "parser_cocci_menhir.mly"
+# 72 "parser_cocci_menhir.mly"
       (Data.clt)
 # 33 "parser_cocci_menhir.ml"
 )
   | Tstatic of (
-# 53 "parser_cocci_menhir.mly"
+# 75 "parser_cocci_menhir.mly"
       (Data.clt)
 # 38 "parser_cocci_menhir.ml"
 )
   | Tsigned of (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
 # 43 "parser_cocci_menhir.ml"
 )
   | Tshort of (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
 # 48 "parser_cocci_menhir.ml"
 )
   | Tregister of (
-# 53 "parser_cocci_menhir.mly"
+# 75 "parser_cocci_menhir.mly"
       (Data.clt)
 # 53 "parser_cocci_menhir.ml"
 )
   | Tlong of (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
 # 58 "parser_cocci_menhir.ml"
 )
   | Tlist
   | Tint of (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
 # 64 "parser_cocci_menhir.ml"
 )
   | Tinline of (
-# 53 "parser_cocci_menhir.mly"
+# 75 "parser_cocci_menhir.mly"
       (Data.clt)
 # 69 "parser_cocci_menhir.ml"
 )
   | Tfloat of (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
 # 74 "parser_cocci_menhir.ml"
 )
   | Textern of (
-# 53 "parser_cocci_menhir.mly"
+# 75 "parser_cocci_menhir.mly"
       (Data.clt)
 # 79 "parser_cocci_menhir.ml"
 )
   | Tenum of (
-# 50 "parser_cocci_menhir.mly"
+# 72 "parser_cocci_menhir.mly"
       (Data.clt)
 # 84 "parser_cocci_menhir.ml"
 )
   | Tdouble of (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
 # 89 "parser_cocci_menhir.ml"
 )
   | Tconst of (
-# 54 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
       (Data.clt)
 # 94 "parser_cocci_menhir.ml"
 )
   | Tchar of (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
 # 99 "parser_cocci_menhir.ml"
 )
   | Tauto of (
-# 53 "parser_cocci_menhir.mly"
+# 75 "parser_cocci_menhir.mly"
       (Data.clt)
 # 104 "parser_cocci_menhir.ml"
 )
   | Tattr of (
-# 55 "parser_cocci_menhir.mly"
+# 77 "parser_cocci_menhir.mly"
       (string * Data.clt)
 # 109 "parser_cocci_menhir.ml"
 )
   | TXor of (
-# 93 "parser_cocci_menhir.mly"
+# 115 "parser_cocci_menhir.mly"
        (Data.clt)
 # 114 "parser_cocci_menhir.ml"
 )
   | TWords
   | TWhy0
   | TWhy of (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
 # 121 "parser_cocci_menhir.ml"
 )
   | TWhile of (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
 # 126 "parser_cocci_menhir.ml"
 )
   | TWhenTrue of (
-# 75 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 131 "parser_cocci_menhir.ml"
 )
   | TWhenFalse of (
-# 75 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 136 "parser_cocci_menhir.ml"
 )
   | TWhen of (
-# 75 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
 # 141 "parser_cocci_menhir.ml"
 )
@@ -143,290 +143,295 @@ type token =
   | TUsing
   | TTypedef
   | TTypeId of (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
 # 149 "parser_cocci_menhir.ml"
 )
   | TType
   | TTildeExclEq of (
-# 95 "parser_cocci_menhir.mly"
+# 117 "parser_cocci_menhir.mly"
        (Data.clt)
 # 155 "parser_cocci_menhir.ml"
 )
   | TTildeEq of (
-# 95 "parser_cocci_menhir.mly"
+# 117 "parser_cocci_menhir.mly"
        (Data.clt)
 # 160 "parser_cocci_menhir.ml"
 )
   | TTilde of (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
 # 165 "parser_cocci_menhir.ml"
 )
   | TSwitch of (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
 # 170 "parser_cocci_menhir.ml"
+)
+  | TSub of (
+# 117 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 175 "parser_cocci_menhir.ml"
 )
   | TString of (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 175 "parser_cocci_menhir.ml"
+# 180 "parser_cocci_menhir.ml"
 )
   | TStrict of (
-# 75 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
-# 180 "parser_cocci_menhir.ml"
+# 185 "parser_cocci_menhir.ml"
 )
   | TStatement
   | TSizeof of (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 186 "parser_cocci_menhir.ml"
+# 191 "parser_cocci_menhir.ml"
 )
   | TShOp of (
-# 97 "parser_cocci_menhir.mly"
+# 119 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
-# 191 "parser_cocci_menhir.ml"
+# 196 "parser_cocci_menhir.ml"
 )
   | TScriptData of (
-# 72 "parser_cocci_menhir.mly"
+# 94 "parser_cocci_menhir.mly"
        (string)
-# 196 "parser_cocci_menhir.ml"
+# 201 "parser_cocci_menhir.ml"
 )
   | TScript
   | TRuleName of (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 202 "parser_cocci_menhir.ml"
+# 207 "parser_cocci_menhir.ml"
 )
   | TRightIso
   | TReturn of (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 208 "parser_cocci_menhir.ml"
+# 213 "parser_cocci_menhir.ml"
 )
   | TPure
   | TPtrOp of (
-# 105 "parser_cocci_menhir.mly"
+# 127 "parser_cocci_menhir.mly"
        (Data.clt)
-# 214 "parser_cocci_menhir.ml"
+# 219 "parser_cocci_menhir.ml"
 )
   | TPtVirg of (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 219 "parser_cocci_menhir.ml"
+# 224 "parser_cocci_menhir.ml"
 )
   | TPragma of (
-# 60 "parser_cocci_menhir.mly"
+# 82 "parser_cocci_menhir.mly"
        (Ast_cocci.added_string * Data.clt)
-# 224 "parser_cocci_menhir.ml"
+# 229 "parser_cocci_menhir.ml"
 )
   | TPosition
   | TPosAny
   | TPlusFile of (
-# 84 "parser_cocci_menhir.mly"
+# 106 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 231 "parser_cocci_menhir.ml"
+# 236 "parser_cocci_menhir.ml"
 )
   | TPlus0
   | TPlus of (
-# 99 "parser_cocci_menhir.mly"
+# 121 "parser_cocci_menhir.mly"
        (Data.clt)
-# 237 "parser_cocci_menhir.ml"
+# 242 "parser_cocci_menhir.ml"
 )
   | TPathIsoFile of (
-# 80 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (string)
-# 242 "parser_cocci_menhir.ml"
+# 247 "parser_cocci_menhir.ml"
 )
   | TParameter
   | TPOEllipsis of (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 248 "parser_cocci_menhir.ml"
+# 253 "parser_cocci_menhir.ml"
 )
   | TPCEllipsis of (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 253 "parser_cocci_menhir.ml"
+# 258 "parser_cocci_menhir.ml"
 )
   | TPArob
   | TOrLog of (
-# 90 "parser_cocci_menhir.mly"
+# 112 "parser_cocci_menhir.mly"
        (Data.clt)
-# 259 "parser_cocci_menhir.ml"
+# 264 "parser_cocci_menhir.ml"
 )
   | TOr of (
-# 92 "parser_cocci_menhir.mly"
+# 114 "parser_cocci_menhir.mly"
        (Data.clt)
-# 264 "parser_cocci_menhir.ml"
+# 269 "parser_cocci_menhir.ml"
 )
   | TOn
   | TOPar0 of (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 270 "parser_cocci_menhir.ml"
+# 275 "parser_cocci_menhir.ml"
 )
   | TOPar of (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 275 "parser_cocci_menhir.ml"
+# 280 "parser_cocci_menhir.ml"
 )
   | TOInit of (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 280 "parser_cocci_menhir.ml"
+# 285 "parser_cocci_menhir.ml"
 )
   | TOEllipsis of (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 285 "parser_cocci_menhir.ml"
+# 290 "parser_cocci_menhir.ml"
 )
   | TOCro of (
-# 103 "parser_cocci_menhir.mly"
+# 125 "parser_cocci_menhir.mly"
        (Data.clt)
-# 290 "parser_cocci_menhir.ml"
+# 295 "parser_cocci_menhir.ml"
 )
   | TOBrace of (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 295 "parser_cocci_menhir.ml"
+# 300 "parser_cocci_menhir.ml"
 )
   | TNothing
   | TNotEq of (
-# 95 "parser_cocci_menhir.mly"
+# 117 "parser_cocci_menhir.mly"
        (Data.clt)
-# 301 "parser_cocci_menhir.ml"
+# 306 "parser_cocci_menhir.ml"
 )
   | TNever
   | TName
   | TMul of (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 308 "parser_cocci_menhir.ml"
+# 313 "parser_cocci_menhir.ml"
 )
   | TMinusFile of (
-# 84 "parser_cocci_menhir.mly"
+# 106 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 313 "parser_cocci_menhir.ml"
+# 318 "parser_cocci_menhir.ml"
 )
   | TMinus of (
-# 99 "parser_cocci_menhir.mly"
+# 121 "parser_cocci_menhir.mly"
        (Data.clt)
-# 318 "parser_cocci_menhir.ml"
+# 323 "parser_cocci_menhir.ml"
 )
   | TMid0 of (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 323 "parser_cocci_menhir.ml"
+# 328 "parser_cocci_menhir.ml"
 )
   | TMetaType of (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 328 "parser_cocci_menhir.ml"
+# 333 "parser_cocci_menhir.ml"
 )
   | TMetaStmList of (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 333 "parser_cocci_menhir.ml"
+# 338 "parser_cocci_menhir.ml"
 )
   | TMetaStm of (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 338 "parser_cocci_menhir.ml"
+# 343 "parser_cocci_menhir.ml"
 )
   | TMetaPos of (
-# 69 "parser_cocci_menhir.mly"
+# 91 "parser_cocci_menhir.mly"
        (Parse_aux.pos_info)
-# 343 "parser_cocci_menhir.ml"
+# 348 "parser_cocci_menhir.ml"
 )
   | TMetaParamList of (
-# 67 "parser_cocci_menhir.mly"
+# 89 "parser_cocci_menhir.mly"
        (Parse_aux.list_info)
-# 348 "parser_cocci_menhir.ml"
+# 353 "parser_cocci_menhir.ml"
 )
   | TMetaParam of (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 353 "parser_cocci_menhir.ml"
+# 358 "parser_cocci_menhir.ml"
 )
   | TMetaLocalIdExp of (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 358 "parser_cocci_menhir.ml"
+# 363 "parser_cocci_menhir.ml"
 )
   | TMetaLocalFunc of (
-# 62 "parser_cocci_menhir.mly"
+# 84 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 363 "parser_cocci_menhir.ml"
+# 368 "parser_cocci_menhir.ml"
 )
   | TMetaIterator of (
-# 63 "parser_cocci_menhir.mly"
+# 85 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 368 "parser_cocci_menhir.ml"
+# 373 "parser_cocci_menhir.ml"
 )
   | TMetaInit of (
-# 66 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 373 "parser_cocci_menhir.ml"
+# 378 "parser_cocci_menhir.ml"
 )
   | TMetaIdExp of (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 378 "parser_cocci_menhir.ml"
+# 383 "parser_cocci_menhir.ml"
 )
   | TMetaId of (
-# 62 "parser_cocci_menhir.mly"
+# 84 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 383 "parser_cocci_menhir.ml"
+# 388 "parser_cocci_menhir.ml"
 )
   | TMetaFunc of (
-# 62 "parser_cocci_menhir.mly"
+# 84 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 388 "parser_cocci_menhir.ml"
+# 393 "parser_cocci_menhir.ml"
 )
   | TMetaExpList of (
-# 67 "parser_cocci_menhir.mly"
+# 89 "parser_cocci_menhir.mly"
        (Parse_aux.list_info)
-# 393 "parser_cocci_menhir.ml"
+# 398 "parser_cocci_menhir.ml"
 )
   | TMetaExp of (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 398 "parser_cocci_menhir.ml"
+# 403 "parser_cocci_menhir.ml"
 )
   | TMetaErr of (
-# 64 "parser_cocci_menhir.mly"
+# 86 "parser_cocci_menhir.mly"
        (Parse_aux.expinfo)
-# 403 "parser_cocci_menhir.ml"
+# 408 "parser_cocci_menhir.ml"
 )
   | TMetaDeclarer of (
-# 63 "parser_cocci_menhir.mly"
+# 85 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 408 "parser_cocci_menhir.ml"
+# 413 "parser_cocci_menhir.ml"
 )
   | TMetaConst of (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 413 "parser_cocci_menhir.ml"
+# 418 "parser_cocci_menhir.ml"
 )
   | TMPtVirg
   | TLogOp of (
-# 96 "parser_cocci_menhir.mly"
+# 118 "parser_cocci_menhir.mly"
        (Ast_cocci.logicalOp * Data.clt)
-# 419 "parser_cocci_menhir.ml"
+# 424 "parser_cocci_menhir.ml"
 )
   | TLocal
   | TLineEnd of (
-# 75 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
-# 425 "parser_cocci_menhir.ml"
+# 430 "parser_cocci_menhir.ml"
 )
   | TIteratorId of (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 430 "parser_cocci_menhir.ml"
+# 435 "parser_cocci_menhir.ml"
 )
   | TIterator
   | TIsoType
@@ -440,62 +445,62 @@ type token =
   | TIso
   | TInvalid
   | TInt of (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 446 "parser_cocci_menhir.ml"
+# 451 "parser_cocci_menhir.ml"
 )
   | TInitialize
   | TInitialiser
   | TIncludeNL of (
-# 81 "parser_cocci_menhir.mly"
+# 103 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 453 "parser_cocci_menhir.ml"
+# 458 "parser_cocci_menhir.ml"
 )
   | TIncludeL of (
-# 81 "parser_cocci_menhir.mly"
+# 103 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 458 "parser_cocci_menhir.ml"
+# 463 "parser_cocci_menhir.ml"
 )
   | TInc of (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 463 "parser_cocci_menhir.ml"
+# 468 "parser_cocci_menhir.ml"
 )
   | TIf of (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 468 "parser_cocci_menhir.ml"
+# 473 "parser_cocci_menhir.ml"
 )
   | TIdentifier
   | TIdent of (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 474 "parser_cocci_menhir.ml"
+# 479 "parser_cocci_menhir.ml"
 )
   | TIdExpression
   | TGoto of (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 480 "parser_cocci_menhir.ml"
+# 485 "parser_cocci_menhir.ml"
 )
   | TGenerated
   | TFunction
   | TFunDecl of (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 487 "parser_cocci_menhir.ml"
+# 492 "parser_cocci_menhir.ml"
 )
   | TFresh
   | TForall
   | TFor of (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 494 "parser_cocci_menhir.ml"
+# 499 "parser_cocci_menhir.ml"
 )
   | TFloat of (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 499 "parser_cocci_menhir.ml"
+# 504 "parser_cocci_menhir.ml"
 )
   | TFinalize
   | TExtends
@@ -504,160 +509,160 @@ type token =
   | TEver
   | TError
   | TEqEq of (
-# 95 "parser_cocci_menhir.mly"
+# 117 "parser_cocci_menhir.mly"
        (Data.clt)
-# 510 "parser_cocci_menhir.ml"
+# 515 "parser_cocci_menhir.ml"
 )
   | TEq of (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 515 "parser_cocci_menhir.ml"
+# 520 "parser_cocci_menhir.ml"
 )
   | TElse of (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 520 "parser_cocci_menhir.ml"
+# 525 "parser_cocci_menhir.ml"
 )
   | TEllipsis of (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 525 "parser_cocci_menhir.ml"
+# 530 "parser_cocci_menhir.ml"
 )
   | TDotDot of (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 530 "parser_cocci_menhir.ml"
+# 535 "parser_cocci_menhir.ml"
 )
   | TDot of (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 535 "parser_cocci_menhir.ml"
+# 540 "parser_cocci_menhir.ml"
 )
   | TDo of (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 540 "parser_cocci_menhir.ml"
+# 545 "parser_cocci_menhir.ml"
 )
   | TDmOp of (
-# 98 "parser_cocci_menhir.mly"
+# 120 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
-# 545 "parser_cocci_menhir.ml"
+# 550 "parser_cocci_menhir.ml"
 )
   | TDisable
   | TDepends
   | TDefineParam of (
-# 83 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt * token * int * int)
-# 552 "parser_cocci_menhir.ml"
+# 557 "parser_cocci_menhir.ml"
 )
   | TDefine of (
-# 82 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt * token)
-# 557 "parser_cocci_menhir.ml"
+# 562 "parser_cocci_menhir.ml"
 )
   | TDefault of (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 562 "parser_cocci_menhir.ml"
+# 567 "parser_cocci_menhir.ml"
 )
   | TDeclarerId of (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 567 "parser_cocci_menhir.ml"
+# 572 "parser_cocci_menhir.ml"
 )
   | TDeclarer
   | TDec of (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 573 "parser_cocci_menhir.ml"
+# 578 "parser_cocci_menhir.ml"
 )
   | TCppConcatOp
   | TContinue of (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 579 "parser_cocci_menhir.ml"
+# 584 "parser_cocci_menhir.ml"
 )
   | TContext
   | TConstant
   | TComma of (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 586 "parser_cocci_menhir.ml"
+# 591 "parser_cocci_menhir.ml"
 )
   | TChar of (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 591 "parser_cocci_menhir.ml"
+# 596 "parser_cocci_menhir.ml"
 )
   | TCase of (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 596 "parser_cocci_menhir.ml"
+# 601 "parser_cocci_menhir.ml"
 )
   | TCPar0 of (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 601 "parser_cocci_menhir.ml"
+# 606 "parser_cocci_menhir.ml"
 )
   | TCPar of (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 606 "parser_cocci_menhir.ml"
+# 611 "parser_cocci_menhir.ml"
 )
   | TCEllipsis of (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 611 "parser_cocci_menhir.ml"
+# 616 "parser_cocci_menhir.ml"
 )
   | TCCro of (
-# 103 "parser_cocci_menhir.mly"
+# 125 "parser_cocci_menhir.mly"
        (Data.clt)
-# 616 "parser_cocci_menhir.ml"
+# 621 "parser_cocci_menhir.ml"
 )
   | TCBrace of (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 621 "parser_cocci_menhir.ml"
+# 626 "parser_cocci_menhir.ml"
 )
   | TBreak of (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 626 "parser_cocci_menhir.ml"
+# 631 "parser_cocci_menhir.ml"
 )
   | TBang0
   | TBang of (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 632 "parser_cocci_menhir.ml"
+# 637 "parser_cocci_menhir.ml"
 )
   | TAssign of (
-# 109 "parser_cocci_menhir.mly"
+# 131 "parser_cocci_menhir.mly"
        (Ast_cocci.assignOp * Data.clt)
-# 637 "parser_cocci_menhir.ml"
+# 642 "parser_cocci_menhir.ml"
 )
   | TArobArob
   | TArob
   | TAny of (
-# 75 "parser_cocci_menhir.mly"
+# 97 "parser_cocci_menhir.mly"
        (Data.clt)
-# 644 "parser_cocci_menhir.ml"
+# 649 "parser_cocci_menhir.ml"
 )
   | TAndLog of (
-# 91 "parser_cocci_menhir.mly"
+# 113 "parser_cocci_menhir.mly"
        (Data.clt)
-# 649 "parser_cocci_menhir.ml"
+# 654 "parser_cocci_menhir.ml"
 )
   | TAnd of (
-# 94 "parser_cocci_menhir.mly"
+# 116 "parser_cocci_menhir.mly"
        (Data.clt)
-# 654 "parser_cocci_menhir.ml"
+# 659 "parser_cocci_menhir.ml"
 )
   | EOF
 
 and _menhir_jeton = token
 
 
-# 23 "parser_cocci_menhir.mly"
+# 45 "parser_cocci_menhir.mly"
   
 
 (* Not clear how to allow function declarations to specify a return type
@@ -672,7 +677,7 @@ module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
 module P = Parse_aux
 
-# 676 "parser_cocci_menhir.ml"
+# 681 "parser_cocci_menhir.ml"
 let _eRR =
   Error
 
@@ -686,278 +691,280 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
     fun _tok ->
       match _tok with
       | EOF ->
-          176
+          177
       | TAnd _ ->
-          175
+          176
       | TAndLog _ ->
-          174
+          175
       | TAny _ ->
-          173
+          174
       | TArob ->
-          172
+          173
       | TArobArob ->
-          171
+          172
       | TAssign _ ->
-          170
+          171
       | TBang _ ->
-          169
+          170
       | TBang0 ->
-          168
+          169
       | TBreak _ ->
-          167
+          168
       | TCBrace _ ->
-          166
+          167
       | TCCro _ ->
-          165
+          166
       | TCEllipsis _ ->
-          164
+          165
       | TCPar _ ->
-          163
+          164
       | TCPar0 _ ->
-          162
+          163
       | TCase _ ->
-          161
+          162
       | TChar _ ->
-          160
+          161
       | TComma _ ->
-          159
+          160
       | TConstant ->
-          158
+          159
       | TContext ->
-          157
+          158
       | TContinue _ ->
-          156
+          157
       | TCppConcatOp ->
-          155
+          156
       | TDec _ ->
-          154
+          155
       | TDeclarer ->
-          153
+          154
       | TDeclarerId _ ->
-          152
+          153
       | TDefault _ ->
-          151
+          152
       | TDefine _ ->
-          150
+          151
       | TDefineParam _ ->
-          149
+          150
       | TDepends ->
-          148
+          149
       | TDisable ->
-          147
+          148
       | TDmOp _ ->
-          146
+          147
       | TDo _ ->
-          145
+          146
       | TDot _ ->
-          144
+          145
       | TDotDot _ ->
-          143
+          144
       | TEllipsis _ ->
-          142
+          143
       | TElse _ ->
-          141
+          142
       | TEq _ ->
-          140
+          141
       | TEqEq _ ->
-          139
+          140
       | TError ->
-          138
+          139
       | TEver ->
-          137
+          138
       | TExists ->
-          136
+          137
       | TExpression ->
-          135
+          136
       | TExtends ->
-          134
+          135
       | TFinalize ->
-          133
+          134
       | TFloat _ ->
-          132
+          133
       | TFor _ ->
-          131
+          132
       | TForall ->
-          130
+          131
       | TFresh ->
-          129
+          130
       | TFunDecl _ ->
-          128
+          129
       | TFunction ->
-          127
+          128
       | TGenerated ->
-          126
+          127
       | TGoto _ ->
-          125
+          126
       | TIdExpression ->
-          124
+          125
       | TIdent _ ->
-          123
+          124
       | TIdentifier ->
-          122
+          123
       | TIf _ ->
-          121
+          122
       | TInc _ ->
-          120
+          121
       | TIncludeL _ ->
-          119
+          120
       | TIncludeNL _ ->
-          118
+          119
       | TInitialiser ->
-          117
+          118
       | TInitialize ->
-          116
+          117
       | TInt _ ->
-          115
+          116
       | TInvalid ->
-          114
+          115
       | TIso ->
-          113
+          114
       | TIsoArgExpression ->
-          112
+          113
       | TIsoDeclaration ->
-          111
+          112
       | TIsoExpression ->
-          110
+          111
       | TIsoStatement ->
-          109
+          110
       | TIsoTestExpression ->
-          108
+          109
       | TIsoToTestExpression ->
-          107
+          108
       | TIsoTopLevel ->
-          106
+          107
       | TIsoType ->
-          105
+          106
       | TIterator ->
-          104
+          105
       | TIteratorId _ ->
-          103
+          104
       | TLineEnd _ ->
-          102
+          103
       | TLocal ->
-          101
+          102
       | TLogOp _ ->
-          100
+          101
       | TMPtVirg ->
-          99
+          100
       | TMetaConst _ ->
-          98
+          99
       | TMetaDeclarer _ ->
-          97
+          98
       | TMetaErr _ ->
-          96
+          97
       | TMetaExp _ ->
-          95
+          96
       | TMetaExpList _ ->
-          94
+          95
       | TMetaFunc _ ->
-          93
+          94
       | TMetaId _ ->
-          92
+          93
       | TMetaIdExp _ ->
-          91
+          92
       | TMetaInit _ ->
-          90
+          91
       | TMetaIterator _ ->
-          89
+          90
       | TMetaLocalFunc _ ->
-          88
+          89
       | TMetaLocalIdExp _ ->
-          87
+          88
       | TMetaParam _ ->
-          86
+          87
       | TMetaParamList _ ->
-          85
+          86
       | TMetaPos _ ->
-          84
+          85
       | TMetaStm _ ->
-          83
+          84
       | TMetaStmList _ ->
-          82
+          83
       | TMetaType _ ->
-          81
+          82
       | TMid0 _ ->
-          80
+          81
       | TMinus _ ->
-          79
+          80
       | TMinusFile _ ->
-          78
+          79
       | TMul _ ->
-          77
+          78
       | TName ->
-          76
+          77
       | TNever ->
-          75
+          76
       | TNotEq _ ->
-          74
+          75
       | TNothing ->
-          73
+          74
       | TOBrace _ ->
-          72
+          73
       | TOCro _ ->
-          71
+          72
       | TOEllipsis _ ->
-          70
+          71
       | TOInit _ ->
-          69
+          70
       | TOPar _ ->
-          68
+          69
       | TOPar0 _ ->
-          67
+          68
       | TOn ->
-          66
+          67
       | TOr _ ->
-          65
+          66
       | TOrLog _ ->
-          64
+          65
       | TPArob ->
-          63
+          64
       | TPCEllipsis _ ->
-          62
+          63
       | TPOEllipsis _ ->
-          61
+          62
       | TParameter ->
-          60
+          61
       | TPathIsoFile _ ->
-          59
+          60
       | TPlus _ ->
-          58
+          59
       | TPlus0 ->
-          57
+          58
       | TPlusFile _ ->
-          56
+          57
       | TPosAny ->
-          55
+          56
       | TPosition ->
-          54
+          55
       | TPragma _ ->
-          53
+          54
       | TPtVirg _ ->
-          52
+          53
       | TPtrOp _ ->
-          51
+          52
       | TPure ->
-          50
+          51
       | TReturn _ ->
-          49
+          50
       | TRightIso ->
-          48
+          49
       | TRuleName _ ->
-          47
+          48
       | TScript ->
-          46
+          47
       | TScriptData _ ->
-          45
+          46
       | TShOp _ ->
-          44
+          45
       | TSizeof _ ->
-          43
+          44
       | TStatement ->
-          42
+          43
       | TStrict _ ->
-          41
+          42
       | TString _ ->
+          41
+      | TSub _ ->
           40
       | TSwitch _ ->
           39
@@ -1318,6 +1325,8 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           Obj.repr _v
       | TString _v ->
           Obj.repr _v
+      | TSub _v ->
+          Obj.repr _v
       | TSwitch _v ->
           Obj.repr _v
       | TTilde _v ->
@@ -1398,19 +1407,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           Obj.repr _v
   
   let default_reduction =
-    (16, "\000\000\000\000\002\155\000z\000\000\000\000\002\227\001J\000\000\001H\001I\001G\000\000\001L\001K\000\001\000\000\001\136\000\000\000\000\000\138\000\000\000\000\001x\000\163\000\000\000\000\000\150\000\000\000\000\000\155\000\154\000\000\000\151\000\000\000\149\000\000\000\000\000\000\000\153\000\000\000\152\003\026\003\025\000\000\000\000\000\143\000\000\000\000\000\148\000\147\000\000\000\144\000\000\000\142\000\000\000\000\000\000\000\146\000\000\000\145\000\000\000\157\000\000\000\000\000\162\000\161\000\000\000\158\000\000\000\165\000\000\001D\001C\000\000\000\166\000\000\000\164\000\137\000\000\000\156\000\000\000\171\000\000\000\000\000\000\000\160\000\000\000\000\000\000\003\016\000\000\000\000\000\000\000\000\000\000\003\021\000\000\000\000\000\168\000\000\003\023\000\000\000\000\000\000\003\146\002e\000\000\003\144\000\000\002\127\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\143\003\145\002k\001?\002j\001=\001>\002i\002h\002g\002c\000\000\000\000\002d\001\012\000\000\002f\000\000\003\142\000\000\000c\001<\002F\000\000\000\000\002I\000\000\000\015\000\000\000\000\000\000\000\000\001\013\002b\002n\000[\000\021\000]\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\132\002#\000R\001\022\000^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\\\000T\000\000\000S\001\023\000\000\002L\001\024\000\014\000\016\000\000\000\000\000\193\000\000\000\000\000\180\000\000\000\000\000\185\000\184\000\000\000\181\000\000\000\179\000\000\000\000\000\000\000\183\000\000\000\182\000\000\000\000\000\173\000\000\000\000\000\178\000\177\000\000\000\174\000\000\000\172\000\000\000\000\000\000\000\176\000\000\000\175\000\000\000\187\000\000\000\000\000\192\000\191\000\000\000\188\000\000\000\195\000\000\000\000\000\196\000\000\000\194\000\000\000\186\000\000\000\201\000\000\000\000\000\000\000\190\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\140\000\000\000\000\000\000\000\000\000\000\000\000\002\n\000\209\000\000\000\000\000n\000o\002\t\001\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\220\000\215\000\000\001\237\000\000\000\000\000\000\000\000\000\208\000\206\000\221\000\000\001\128\000\000\000\000\003\018\000\000\003\017\000\000\000\000\000\000\000\000\000\000\000\198\000\000\000\000\000\000\000\000\000\199\000\197\000\000\000\000\003\020\003\024\000\189\000\000\000\000\001\027\000\000\000\000\002G\002J\000\000\002H\002K\003u\003v\003t\000\000\002l\003s\000\000\002\134\000\000\000\000\002\133\002\132\002\131\002\130\002\129\002}\000\000\000\000\002~\000\000\002\128\000\000\000\000\000g\002T\000\000\000\000\002W\000\000\000\000\002Z\000\000\000\000\002U\002X\000\000\002V\002Y\002\136\002|\003\131\003\132\003\130\003\129\000h\000\000\000\000\000W\000\000\000V\001 \000\000\001\246\000\000\000\000\000\000\000\000\000\000\001\017\001\252\000\000\000\000\001\160\000U\0001\001\n\000_\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\000\000\0003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002m\000\000\000\204\000\000\000\000\001\231\000\000\001\150\001\212\000\000\000\000\001\230\000\000\001\148\001\211\000\000\000\000\000d\000\000\002\135\000\000\000\000\003\134\003\133\000\000\001\247\000\000\000\000\003x\003w\000\000\000Q\000\205\000\000\001z\000\000\003\019\000\000\000\000\000\000\000\000\000\169\000\167\000\000\001\021\000\000\000\000\000\170\000\159\000\000\000\000\001b\000\000\001a\000\000\001p\000\000\001\138\000\000\000\000\000\000\003H\000\000\000\000\003;\000\000\000\000\003@\003?\000\000\003<\000\000\003:\000\000\000\000\000\000\003>\000\000\003=\000\000\000\000\0034\000\000\000\000\0039\0038\000\000\0035\000\000\0033\000\000\000\000\000\000\0037\000\000\0036\000\000\003B\000\000\000\000\003G\003F\000\000\003C\000\000\003J\000\000\000\000\003K\000\000\003I\000\000\003A\000\000\003P\000\000\000\000\000\000\003E\000\000\000\000\003o\000\000\000\000\000\000\000\000\003O\003D\000\000\003q\000\000\000\000\002\243\003p\000\130\000\000\000\249\000\000\000\000\000\000\000\000\003M\000\000\000\000\000\000\000\000\003N\003L\000\000\000\000\003f\000\000\000\000\003Y\000\000\000\000\003^\003]\000\000\003Z\000\000\003X\000\000\000\000\000\000\003\\\000\000\003[\000\000\000\000\003R\000\000\000\000\003W\003V\000\000\003S\000\000\003Q\000\000\000\000\000\000\003U\000\000\003T\000\000\003`\000\000\000\000\003e\003d\000\000\003a\000\000\003h\000\000\000\000\003i\000\000\003g\000\000\003_\000\000\003n\000\000\000\000\000\000\003c\000\000\000\000\000\000\000\000\003m\003b\000\000\000\000\000\000\000\000\003k\000\000\000\000\000\000\000\000\003l\003j\003\012\003\014\003\015\003\013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\211\000\210\000\000\000\000\000w\000\000\000\000\000\000\002r\000\000\000\000\000\000\002z\000\000\000\000\002y\000\000\003\127\002x\002w\002v\002u\002t\001^\002p\000\000\000\000\002q\000\000\002s\000\000\000\000\000\000\000\000\000\000\000e\002M\000\000\000\000\002P\000\000\000\000\002S\000\000\000\000\002N\002Q\000\000\002O\002R\002{\002o\000f\003|\003}\003{\003z\003~\000\000\000\000\000\000\000\000\001\t\001\008\000\000\000\000\000\000\000\000\000\000\001T\000\000\001\019\001Q\000\000\001\007\001W\000\000\000\000\000\000\001X\000\000\000\000\001Y\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Z\000\000\001V\000\000\000\000\001\\\000\000\000\000\000\000\000\000\000\000\000\000\000t\000q\000r\001]\001S\000\000\001R\000\000\000\242\000\000\002\221\000\000\000\000\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\245\000\000\000\000\000\248\000\000\000\000\000\000\000\000\000\000\000\000\001B\000\000\000\000\000\000\000\235\000\000\000\232\000\000\000\000\000\000\000\000\000\000\000\243\000\000\000\239\000\000\000\000\000\000\000\000\000\240\000\000\000\236\000\000\000\000\000\000\002\140\000\000\000\000\000\000\000\000\002\147\000\000\000\000\002\146\002\145\002\144\002\143\002\142\002\138\000\000\000\000\002\139\000\000\002\141\000\000\000\000\000i\002[\000\000\000\000\002^\000\000\000\000\002a\000\000\000\000\002\\\002_\000\000\002]\002`\002\149\002\137\003\138\003\139\003\137\003\136\000j\000\000\000\000\000Z\000\000\000Y\000\000\002\148\000\000\001\213\000X\000?\001\031\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\141\003\140\000\000\003\003\000\000\003\002\000\000\000\000\000\000\000\000\003\153\000\000\000\000\000\000\003\154\000\000\000\018\000\000\000\000\000\000\003\149\000\000\001\162\000\000\000\000\000\000\000\222\002\249\001v\001u\001N\001M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\014\001\015\000\255\000\000\001\134\000\000\000\000\000\254\000\250\000\000\001\001\000\251\001\000\000\000\003\005\000\000\003\004\002\246\000\000\000\000\000\000\000\000\000\000\002\255\000\000\000\000\000\000\000\000\003\000\002\248\000\000\003\006\000\000\002\250\000\000\000\226\000\000\003\t\000\000\001P\000\000\000\000\003\030\000\000\003%\000\228\000\000\000\233\000\000\003\031\000\227\000\000\003 \000\000\003'\000\000\000\000\000\000\000\000\000\246\000\000\000\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\244\000\000\000\000\000\247\000\000\000\000\000\000\000\000\001A\000\000\000\000\000\000\000\234\000\000\000\231\000\000\000\000\000\000\000\000\000\000\000\241\000\000\000\237\000\224\000\223\000\000\003(\003)\000\000\003*\000\000\003+\000\000\001O\002\253\000\000\000\000\001\235\000\000\001\158\001\217\000\000\002\247\000\000\000\000\000\000\002\252\000\000\000\000\000\000\0015\000\000\001/\000\000\0010\000\000\001:\001.\0019\000\000\003\008\001;\000\000\000\229\000\000\000\000\000\000\000\000\0017\0012\001\232\000\000\0013\000\000\0014\000\000\001\152\001\214\000\000\000\000\000\000\001\242\000\000\001\240\000\000\000\000\001\244\001\238\000\000\001\245\001\239\000\000\003\n\001\248\000\000\000\225\000\000\000\000\001\233\000\000\001\154\001\215\000\000\003\150\000\000\003\147\000\000\003\148\000\019\000\020\000\000\000\000\002\199\000\000\002\198\000\000\000\000\002\201\000\000\002\200\000\000\000\000\000\000\002\019\000\000\000\000\002\023\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\026\000\000\000\000\002\029\000\000\002\013\000\000\000\000\002\016\000\000\000\000\000\000\002\020\000\000\000\000\002\024\000\000\000\000\001\234\000\000\000\000\002\017\000\000\000\000\002\021\002\196\002\014\000\000\002\197\000\000\000\000\000\000\000\000\002\027\000\000\002\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\025\000\000\000\000\002\028\000\000\002\012\000\000\000\000\002\015\000\000\000\000\000\000\002\018\000\000\000\000\002\022\000\000\001\156\001\216\000\000\002\202\000\000\000\000\000\000\003\151\000\017\000u\000\000\003\152\000\000\000\000\002\217\000\000\000\000\003\011\000a\000\000\000\000\000\000\000b\000\000\003\001\000\000\001|\000\000\001\130\002\254\000\000\000\000\001h\000\000\001g\000\000\001q\000\000\001\144\000\000\000\000\000\000\001f\000\000\001e\000\000\001n\000\000\001\142\000\000\000\000\000\000\001m\000\000\000\000\000\000\001j\000\000\001i\000\000\001o\000\000\001\146\000\000\000\000\000\000\001k\000\000\000\000\000\000\001d\000\000\001c\000\000\001r\000\000\001\140\000\000\000\000\000\000\001l\000\002\000\000\000N\000O\000\000\000\000\002\165\002\169\002\173\002\161\002\158\000\000\000\000\002\170\002\177\002\162\002\176\002\160\002\175\002\164\002\156\002\163\002\172\002\159\002\166\002\157\002\168\002\174\002\171\002\167\001\180\001\179\000\127\000\000\000\000\002\237\000\000\000\000\002\211\000\000\000\000\002\213\002\212\002\186\000\000\000\000\002\245\002\179\002\178\002\180\000\000\001\192\000M\001s\000\003\000\000\000\000\002\152\000\000\002!\000\000\000\129\000\000\000\000\002\241\000\000\000\000\000\000\000y\000\000\000\000\002\225\000\000\002\006\002\005\001\174\002\188\000\000\001\208\000\000\002\153\000\000\000\000\000{\000\000\000\000\002\229\000\000\001\189\000\000\000\000\001\185\000\000\000\000\000\000\001\188\000\000\001\187\000\000\000\000\000\000\000\000\000\000\000\000\001\209\000\000\001\183\000\000\001\182\000\000\000v\000\000\000\000\002\219\000\000\000\000\001\178\000\000\000\000\000}\000\000\000\000\002\233\000\000\000\000\002\194\000\000\002\193\000\000\000\000\000\000\002\004\002\003\002\191\002'\002\182\002\192\000\000\001\195\000\000\000\000\000\000\001\191\000\000\001\197\000\000\000\000\001\186\000\000\000\000\000\000\002\184\000~\000\000\000\000\002\235\000\000\002\183\000\000\001\193\000\000\000\000\001\194\000\000\000\000\000\000\000\000\000\000\000\000\001\210\000\000\001\184\000\000\001\254\000\128\000\000\000\000\002\239\000\000\000\000\000\000\001F\000x\001E\000\000\000\000\002\223\000\000\002\000\001\255\001\172\002\187\000\000\000|\000\000\000\000\002\231\000\000\000\000\000\000\000\000\002\002\002\001\002\189\002%\002\181\002\190\000\000\001\202\000\000\001\206\000\000\000\000\001\198\000\000\000\000\000\000\001\190\000\000\001\196\000\000\000\000\000\000\000\000\001\177\000\000\000\000\001\205\000\000\001\204\000\000\000\000\000\000\000\000\001\201\000\000\000\000\001\200\000\000\001\199\000\000\000\000\000\000\000\000\001\203\000\000\001\207\000\000\000\000\001t\000\004\000\000\001\181\000\005\000\000\000\000\001#\000\006\000\000\001\221\001\222\001\220\000\000\001\219\003\027\001\168\000\000\000\007\000\000\001\224\001\225\001\223\000\000\000\000\000\000\000\000\001%\000\000\000\000\000\000\000\000\001*\001,\001+\001&\001(\001'\000\000\000\000\000\000\000\000\000\000\003!\003.\000\000\003\"\000\000\003#\000\000\000\000\003\028\000\000\000\000\000\000\000\000\003-\000\000\000\000\003,\001\229\001\228\000\000\000\000\001\170\001\218\001\226\000\000\000\000\000\000\000\000\002\008\000\000\000\000\000l\000m\002\007\000\000\000\000\000\000\000\218\000\000\001~\000\000\000\000\000\217\000\213\000\000\000\000\000\000\000\000\001@\000\000\0031\000\000\0032\000\000\000\000\001\251\001\249\000\000\001\250\000\008\000\000\000\t\000\000\0026\0027\0025\000\000\0024\000\000\000\n\000\000\0029\002:\0028\000\000\002<\000\000\000\000\000\000\002.\000\000\000\000\0020\000\000\002*\000\000\002,\000\000\0021\000\000\0022\000\000\002+\002)\002=\001\176\0023\000\000\002?\000\000\002>\000\000\002@\000\000\002\195\000\011\000\000\000\000\000\000\000\000\000\000\000\000\002A\000\000\000\000\002D\000\000\002C\000\000\002B\001\002\000\000\000\000\000\000\000\000\001\003\002E\000\000\000\000\002\206\000\000\000\000\000\000\000\000\002\207\000\000\000\000\001\"\000\000\000\000\000\000\000\000\000\000\002\215\000k\000\000\000\000\001\011\000\000\001\029\001\028\000\000\001`\000\000\002\205\001\166\001\164\000\000\000\000\000\000\000\000\002\208\000\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\204\000\000\000\000\000\000\000\000\000\000\000\000\002\203\000\000\000\013\000\000\000\000\000\000\000\000\000\000\002\210\000\000\000\000\000\000\002\209")
+    (16, "\000\000\000\000\002\158\000z\000\000\000\000\002\231\001J\000\000\001H\001I\001G\000\000\001L\001K\000\001\000\000\001\137\000\000\000\000\000\138\000\000\000\000\001y\000\163\000\000\000\000\000\150\000\000\000\000\000\155\000\154\000\000\000\151\000\000\000\149\000\000\000\000\000\000\000\153\000\000\000\152\003\030\003\029\000\000\000\000\000\143\000\000\000\000\000\148\000\147\000\000\000\144\000\000\000\142\000\000\000\000\000\000\000\146\000\000\000\145\000\000\000\157\000\000\000\000\000\162\000\161\000\000\000\158\000\000\000\165\000\000\001D\001C\000\000\000\166\000\000\000\164\000\137\000\000\000\156\000\000\000\171\000\000\000\000\000\000\000\160\000\000\000\000\000\000\003\020\000\000\000\000\000\000\000\000\000\000\003\025\000\000\000\000\000\168\000\000\003\027\000\000\000\000\000\000\003\152\002h\000\000\003\150\000\000\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\149\003\151\002n\001?\002m\001=\001>\002l\002k\002j\002f\000\000\000\000\002g\001\012\000\000\002i\000\000\003\148\000\000\000c\001<\002I\000\000\000\000\002L\000\000\000\015\000\000\000\000\000\000\000\000\001\013\002e\002q\000[\000\021\000]\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\132\002$\000R\001\022\000^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\\\000T\000\000\000S\001\023\000\000\002O\001\024\000\014\000\016\000\000\000\000\000\193\000\000\000\000\000\180\000\000\000\000\000\185\000\184\000\000\000\181\000\000\000\179\000\000\000\000\000\000\000\183\000\000\000\182\000\000\000\000\000\173\000\000\000\000\000\178\000\177\000\000\000\174\000\000\000\172\000\000\000\000\000\000\000\176\000\000\000\175\000\000\000\187\000\000\000\000\000\192\000\191\000\000\000\188\000\000\000\195\000\000\000\000\000\196\000\000\000\194\000\000\000\186\000\000\000\201\000\000\000\000\000\000\000\190\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\140\000\000\000\000\000\000\000\000\000\000\000\000\002\011\000\209\000\000\000\000\000n\000o\002\n\001\235\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\220\000\215\000\000\001\236\000\000\000\000\000\000\000\000\000\208\000\206\000\221\000\000\001\129\000\000\000\000\003\022\000\000\003\021\000\000\000\000\000\000\000\000\000\000\000\198\000\000\000\000\000\000\000\000\000\199\000\197\000\000\000\000\003\024\003\028\000\189\000\000\000\000\001\027\000\000\000\000\002J\002M\000\000\002K\002N\003{\003|\003z\000\000\002o\003y\000\000\002\137\000\000\000\000\002\136\002\135\002\134\002\133\002\132\002\128\000\000\000\000\002\129\000\000\002\131\000\000\000\000\000g\002W\000\000\000\000\002Z\000\000\000\000\002]\000\000\000\000\002X\002[\000\000\002Y\002\\\002\139\002\127\003\137\003\138\003\136\003\135\000h\000\000\000\000\000W\000\000\000V\001 \000\000\001\245\000\000\000\000\000\000\000\000\000\000\001\017\001\251\000\000\000\000\001\161\000U\0001\001\n\000_\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\000\000\0003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002p\000\000\000\204\000\000\000\000\001\230\000\000\001\151\001\211\000\000\000\000\001\229\000\000\001\149\001\210\000\000\000\000\000d\000\000\002\138\000\000\000\000\003\140\003\139\000\000\001\246\000\000\000\000\003~\003}\000\000\000Q\000\205\000\000\001{\000\000\003\023\000\000\000\000\000\000\000\000\000\169\000\167\000\000\001\021\000\000\000\000\000\170\000\159\000\000\000\000\001c\000\000\001b\000\000\001q\000\000\001\139\000\000\000\000\000\000\003N\000\000\000\000\003A\000\000\000\000\003F\003E\000\000\003B\000\000\003@\000\000\000\000\000\000\003D\000\000\003C\000\000\000\000\003:\000\000\000\000\003?\003>\000\000\003;\000\000\0039\000\000\000\000\000\000\003=\000\000\003<\000\000\003H\000\000\000\000\003M\003L\000\000\003I\000\000\003P\000\000\000\000\003Q\000\000\003O\000\000\003G\000\000\003V\000\000\000\000\000\000\003K\000\000\000\000\003u\000\000\000\000\000\000\000\000\003U\003J\000\000\003w\000\000\000\000\002\247\003v\000\130\000\000\000\249\000\000\000\000\000\000\000\000\003S\000\000\000\000\000\000\000\000\003T\003R\000\000\000\000\003l\000\000\000\000\003_\000\000\000\000\003d\003c\000\000\003`\000\000\003^\000\000\000\000\000\000\003b\000\000\003a\000\000\000\000\003X\000\000\000\000\003]\003\\\000\000\003Y\000\000\003W\000\000\000\000\000\000\003[\000\000\003Z\000\000\003f\000\000\000\000\003k\003j\000\000\003g\000\000\003n\000\000\000\000\003o\000\000\003m\000\000\003e\000\000\003t\000\000\000\000\000\000\003i\000\000\000\000\000\000\000\000\003s\003h\000\000\000\000\000\000\000\000\003q\000\000\000\000\000\000\000\000\003r\003p\003\016\003\018\003\019\003\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\211\000\210\000\000\000\000\000w\000\000\000\000\000\000\002u\000\000\000\000\000\000\002}\000\000\000\000\002|\000\000\003\133\002{\002z\002y\002x\002w\001_\002s\000\000\000\000\002t\000\000\002v\000\000\000\000\000\000\000\000\000\000\000e\002P\000\000\000\000\002S\000\000\000\000\002V\000\000\000\000\002Q\002T\000\000\002R\002U\002~\002r\000f\003\130\003\131\003\129\003\128\003\132\000\000\000\000\000\000\000\000\001\t\001\008\000\000\000\000\000\000\000\000\000\000\001U\000\000\001\019\001R\000\000\001\007\001X\000\000\000\000\000\000\001Y\000\000\000\000\001Z\000\000\001\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\000\000\000\000\000\000\000\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\001W\000\000\000\000\001]\000\000\000\000\000\000\000\000\000\000\000\000\000t\000q\000r\001^\001T\000\000\001S\000\000\000\242\000\000\002\225\000\000\000\000\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\245\000\000\000\000\000\248\000\000\000\000\000\000\000\000\000\000\000\000\001B\000\000\000\000\000\000\000\235\000\000\000\232\000\000\000\000\000\000\000\000\000\000\000\243\000\000\000\239\000\000\000\000\000\000\000\000\000\240\000\000\000\236\000\000\000\000\000\000\002\143\000\000\000\000\000\000\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\000i\002^\000\000\000\000\002a\000\000\000\000\002d\000\000\000\000\002_\002b\000\000\002`\002c\002\152\002\140\003\144\003\145\003\143\003\142\000j\000\000\000\000\000Z\000\000\000Y\000\000\002\151\000\000\001\212\000X\000?\001\031\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\147\003\146\000\000\003\007\000\000\003\006\000\000\000\000\000\000\000\000\003\159\000\000\000\000\000\000\003\160\000\000\000\018\000\000\000\000\000\000\003\155\000\000\001\163\000\000\000\000\000\000\000\222\002\253\001w\001v\001N\001M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\014\001\015\000\255\000\000\001\135\000\000\000\000\000\254\000\250\000\000\001\001\000\251\001\000\000\000\003\t\000\000\003\008\002\250\000\000\000\000\000\000\000\000\000\000\003\003\000\000\000\000\000\000\000\000\003\004\002\252\000\000\003\n\000\000\002\254\000\000\000\226\001O\000\000\003\013\000\000\001Q\000\000\000\000\003$\000\000\003+\000\228\000\000\000\233\000\000\003%\000\227\000\000\003&\000\000\003-\000\000\000\000\000\000\000\000\000\246\000\000\000\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\244\000\000\000\000\000\247\000\000\000\000\000\000\000\000\001A\000\000\000\000\000\000\000\234\000\000\000\231\000\000\000\000\000\000\000\000\000\000\000\241\000\000\000\237\000\224\000\223\000\000\003.\003/\000\000\0030\000\000\0031\000\000\001P\003\001\000\000\000\000\001\234\000\000\001\159\001\216\000\000\002\251\000\000\000\000\000\000\003\000\000\000\000\000\000\000\0015\000\000\001/\000\000\0010\000\000\001:\001.\0019\000\000\003\012\001;\000\000\000\229\000\000\000\000\000\000\000\000\0017\0012\001\231\000\000\0013\000\000\0014\000\000\001\153\001\213\000\000\000\000\000\000\001\241\000\000\001\239\000\000\000\000\001\243\001\237\000\000\001\244\001\238\000\000\003\014\001\247\000\000\000\225\000\000\000\000\001\232\000\000\001\155\001\214\000\000\003\156\000\000\003\153\000\000\003\154\000\019\000\020\000\000\000\000\002\203\000\000\002\202\000\000\000\000\002\205\000\000\002\204\000\000\000\000\000\000\002\020\000\000\000\000\002\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\027\000\000\000\000\002\030\000\000\002\014\000\000\000\000\002\017\000\000\000\000\000\000\002\021\000\000\000\000\002\025\000\000\000\000\001\233\000\000\000\000\002\018\000\000\000\000\002\022\002\200\002\015\000\000\002\201\000\000\000\000\000\000\000\000\002\028\000\000\002\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\026\000\000\000\000\002\029\000\000\002\013\000\000\000\000\002\016\000\000\000\000\000\000\002\019\000\000\000\000\002\023\000\000\001\157\001\215\000\000\002\206\000\000\000\000\000\000\003\157\000\017\000u\000\000\003\158\000\000\000\000\002\221\000\000\000\000\003\015\000a\000\000\000\000\000\000\000b\000\000\003\005\000\000\001}\000\000\001\131\003\002\000\000\000\000\001i\000\000\001h\000\000\001r\000\000\001\145\000\000\000\000\000\000\001g\000\000\001f\000\000\001o\000\000\001\143\000\000\000\000\000\000\001n\000\000\000\000\000\000\001k\000\000\001j\000\000\001p\000\000\001\147\000\000\000\000\000\000\001l\000\000\000\000\000\000\001e\000\000\001d\000\000\001s\000\000\001\141\000\000\000\000\000\000\001m\000\002\000\000\000N\000O\000\000\000\000\002\168\002\172\002\176\002\164\002\161\000\000\000\000\002\173\002\180\002\165\002\179\002\163\002\178\002\167\002\159\002\166\002\175\002\162\002\169\002\160\002\171\002\177\002\174\002\170\001\179\001\178\000\128\000\000\000\000\002\243\000\000\000\000\002\215\000\000\000\000\002\217\002\216\002\190\000\000\000\000\002\249\002\182\002\181\002\183\000\000\001\191\000M\001t\000\003\000\000\000\000\002\155\000\000\002\"\000\000\000\129\000\000\000\000\002\245\000\000\000\000\000\000\000y\000\000\000\000\002\229\000\000\002\007\002\006\001\173\002\191\000\000\001\207\000\000\002\156\000\000\000\000\000{\000\000\000\000\002\233\000\000\001\188\000\000\000\000\001\184\000\000\000\000\000\000\001\187\000\000\001\186\000\000\000\000\000\000\000\000\000\000\000\000\001\208\000\000\001\182\000\000\001\181\000\000\000v\000\000\000\000\002\223\000\000\000\000\001\177\000\000\000\000\000~\000\000\000\000\002\239\000\000\000\000\002\198\000\000\002\197\000\000\000\000\000\000\002\005\002\004\002\195\002*\002\186\002\196\000\000\001\194\000\000\000\000\000\000\001\190\000\000\001\196\000\000\000\000\001\185\000\000\000\000\000\000\002\188\000\127\000\000\000\000\002\241\000\000\002\187\000\000\001\192\000\000\000\000\001\193\000\000\000\000\000\000\000\000\000\000\000\000\001\209\000\000\001\183\000\000\001\253\000|\000\000\000\000\002\235\000\000\000\000\000\000\000\000\003 \003\031\000\000\000\000\001F\000x\001E\000\000\000\000\002\227\000\000\001\255\001\254\002\001\002\184\002&\002\000\000\000\000}\000\000\000\000\002\237\000\000\000\000\000\000\000\000\002\003\002\002\002\194\002\192\002(\002\185\002\193\000\000\001\201\000\000\001\205\000\000\000\000\001\197\000\000\000\000\000\000\001\189\000\000\001\195\000\000\000\000\000\000\000\000\001\176\000\000\000\000\001\204\000\000\001\203\000\000\000\000\000\000\000\000\001\200\000\000\000\000\001\199\000\000\001\198\000\000\000\000\000\000\000\000\001\202\000\000\001\206\000\000\000\000\001u\000\004\000\000\001\180\000\005\000\000\000\000\001#\000\006\000\000\001\220\001\221\001\219\000\000\001\218\003!\001\169\000\000\000\007\000\000\001\223\001\224\001\222\000\000\000\000\000\000\000\000\001%\000\000\000\000\000\000\000\000\001*\001,\001+\001&\001(\001'\000\000\000\000\000\000\000\000\000\000\003'\0034\000\000\003(\000\000\003)\000\000\000\000\003\"\000\000\000\000\000\000\000\000\0033\000\000\000\000\0032\001\228\001\227\000\000\000\000\001\171\001\217\001\225\000\000\000\000\000\000\000\000\002\t\000\000\000\000\000l\000m\002\008\000\000\000\000\000\000\000\218\000\000\001\127\000\000\000\000\000\217\000\213\000\000\000\000\000\000\000\000\001@\000\000\0037\000\000\0038\000\000\000\000\001\250\001\248\000\000\001\249\000\008\000\000\000\t\000\000\0029\002:\0028\000\000\0027\000\000\000\n\000\000\002<\002=\002;\000\000\002?\000\000\000\000\000\000\0021\000\000\000\000\0023\000\000\002-\000\000\002/\000\000\0024\000\000\0025\000\000\002.\002,\002@\001\175\0026\000\000\002B\000\000\002A\000\000\002C\000\000\002\199\000\011\000\000\000\000\000\000\000\000\000\000\000\000\002D\000\000\000\000\002G\000\000\002F\000\000\002E\001\002\000\000\000\000\000\000\000\000\001\003\002H\000\000\000\000\002\210\000\000\000\000\000\000\000\000\002\211\000\000\000\000\001\"\000\000\000\000\000\000\000\000\000\000\002\219\000k\000\000\000\000\001\011\000\000\001\029\001\028\000\000\001a\000\000\002\209\001\167\001\165\000\000\000\000\000\000\000\000\002\212\000\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\208\000\000\000\000\000\000\000\000\000\000\000\000\002\207\000\000\000\013\000\000\000\000\000\000\000\000\000\000\002\214\000\000\000\000\000\000\002\213")
   
   let error =
-    (177, "\000\000\000\001\128\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\016\002\024\000\000\016!\128\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\128\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\001\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\001\128\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\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\224\000\000\000\000\000\000\000\015Z\175\000\004\000 \000\002\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\0200\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\004\170\026\001@\134\168 $3\0020\026\001\016\239\004\128\001\028\200b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\187G\000\000\000\196\000\004\000`F\001\000 \008@\000\000\000\153\012@H\161\128\000\000\"\000\002\001 #\000\128\016\004 \000\000\000L\134 \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\008\128\000\128H\008\192 \004\001\008\000\000\000\019!\136\t\0200\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\136\000\008\004\128\140\002\000@\016\128\000\000\0012\024\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\161\128\000\000\"\000\002\001 #\000\128\016\004 \000\000\000L\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\000\000\000\000\000\000\000\000\000\000\008\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\004\138\024\000\000\002 \000 \018\0020\008\001\000B\000\000\000\004\200b\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\136\000\008\004\128\140\002\000@\016\128\000\000\0012\024\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\023h\224\000\000\024\128\000\128\012\008\192 \004\001\008\000\000\000\019!\136\t\0200\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002e\012\000\000\001\016\000\016\t\001\024\004\000\128!\000\000\000\002d1\001\"\134\000\000\000\136\000\008\004\128\140\002\000@\016\128\000\000\0012\024\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$P\192\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\0200\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\016\000\000\000\000\000\000\000\145C\000\000\000D\000\004\002@F\001\000 \008@\000\000\000\153\012@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$P\192\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\0200\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002e\012\000\000\001\016\000\016\t\001\024\004\000\128!\000\000\000\002d1\001\"\134\000\000\000\136\000\008\004\128\140\002\000@\016\128\000\000\0012\024\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$P\192\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\0200\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\000\000\000\000\000\000\000\000\000\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\000H\161\128\000\000\"\000\002\001 #\000\128\016\004 \000\000\000L\134 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018(`\000\000\008\128\000\128H\008\192 \004\001\008\000\000\000\019!\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002E\012\000\000\001\016\000\016\t\001\024\004\000\128!\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\145C\000\000\000D\000\004\002@F\001\000 \008@\000\000\000\153\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\016\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\t\0200\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\245\170\240\000@\002\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000\136\000\008\132\128\140\002\000@\016\128\000\000\0012\024\189j\188\000\016\000\128\000\008  \000\000\000\000\008\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\015Z\175\000D\000 \000\002\008\008\000\000\000\000\002\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\003\214\171\192\001\000\008\000\000\130\002\000\000\000\000\000\128\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\245\170\240\000@\002\000\000 \128\128\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\001\000\000H\161\128\000\000\"\000\002\001 #\000\128\016\004 \000\000\000L\134 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\002\000\016\000\001\004\004\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\016\000\002\000\000\000\000\000\000\000\000\016\000\002 \000\000\000\000\000\002\144\000$\026\005\001\157\160\000\016\144\008\002\000 \132A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\001 \208(\012\237\000\000\132\128@\000\001\004\002\008\000\000\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 \000H4\n\003;@\000! \016\000\000A\000\130\000\000\000\000\002\144\000$\026\005\001\157\160\000\016\144\008\002\000 \128A\000\000\000\000\001H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \158\181^\000\008\164@\t\006\129Pgh\000\004$\002\000\128\008 \016OZ\175\000\004R \004\131@\1683\180\000\002\018\001\000@\004\016\008 \000\000\000\000)\000\002A\160P\025\218\000\001\t\000\128\000\002\008\004\019\214\171\192\001\020\136\001 \208*\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\000\000\000\000\164\000\t\006\129@gh\000\004$\002\000\128\008 \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\020\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\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 \000H4\n\003;@\000! \016\004\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\001H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \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\t\000\000D\1936Y,\000\000P\002\004\000\000\221\001\t\225\220\000\000\000\000\000\000\000\000\000\000\000 \000\000\000@\000\000\000\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\"\145\000$\026\005A\159\160\000\016\144\008\002\000 \144A\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\002\"\0080\t`\000\002\128\016\000\000\006\200\000M\014\224\000\000\000\000R\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\018\000\000\136\130l\"X\000\000\160\004\000\000\001\178\000\019\195\184\000\000\000\000\020\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\136\130l\"X\000\000\160\004\000\000\0012\000\019\193\184\000\000\000\000\020\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\004\128\000\" \155\008\150\000\000(\001\000\000\000L\128\004\240n\000\000\000\000\005 \000H4\n\003;@\000! \016\004\000A\000\130\000\000\001 \000\008\136&\194%\128\000\n\000@\000\000\019 \001<\027\128\000\000\000\001H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\000\000H\000\002\"\t\176\137`\000\002\128\016\000\000\004\200\000O\006\224\000\000\000\000R\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\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 \000H4\n\003;@\000! \016\004\000A\000\130\000\000\001 \000\008\136&\194%\128\000\n\000@\000\000\019 \001<\027\128\000\000\000\001H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\000\000H\000\002\"\t\176\137`\000\002\128\016\000\000\004\200\000O\006\224\000\000\000\000R\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\018\000\000\136\130l\"X\000\000\160\004\000\000\0012\000\019\193\184\000\000\000\000\020\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\004\128\000\" \155\008\150\000\000(\001\000\000\000L\128\004\240n\000\000\000\000\005 \000H4\n\003;@\000! \016\004\000A\000\130\000\000\001 \000\008\136&\194%\128\000\n\000@\000\000\019 \001<\027\128\000\000\000\001H\000\018\013\002\128\206\208\000\008H\004\001\128\016@ \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\000R\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\000\000H\000\002\"\t\176\137`\000\002\128\016\000\000\004\200\000O\006\224\000\000\000\000R\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\018\000\000\136\130l\"X\000\000\160\004\000\000\0012\000\019\193\184\000\000\000\000\020\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\004\128\000\" \155\008\150\000\000(\001\000\000\000L\128\004\240n\000\000\000\000\005 \000H4\n\003;@\000! \016\004\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\164\000\t\006\129@gh\000\004$\002\000\128\008 \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\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\014\181Z\000\008\000@\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000$P\192\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\160@\000\000\008\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\004\138\024\000\000\002 \000 \018\0020\008\001\000B\000\000\000\004\200b\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\136\000\008\004\128\140\002\000@\016\128\000\000\0012\024\128\145C\000\000\000D\000\004\002@F\001\000 \008@\000\000\000\153\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\018(`\000\000\008\128\000\128H\008\192 \004\001\008\000\000\000\019!\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\138\024\000\000\002 \000 \018\0020\008\001\000B\000\000\000\004\200b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\000\000\000\000\000\000\000H\161\128\000\000\"\000\002\001 #\000\128\016\004 \000\000\000L\134 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018(`\000\000\008\128\000\128H\008\192 \004\001\008\000\000\000\019!\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001P \000\000\004\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\002E\012\000\000\001\016\000\016\t\001\024\004\000\128!\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\153C\000\000\000D\000\004\002@F\001\000 \008@\000\000\000\153\012@H\161\128\000\000\"\000\002\001 #\000\128\016\004 \000\000\000L\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\0200\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002E\012\000\000\001\016\000\016\t\001\024\004\000\128!\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\004\000\000\000\000\000\000\000$P\192\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\0200\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002E\012\000\000\001\016\000\016\t\001\024\004\000\128!\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\153C\000\000\000D\000\004\002@F\001\000 \008@\000\000\000\153\012@H\161\128\000\000\"\000\002\001 #\000\128\016\004 \000\000\000L\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\0200\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002E\012\000\000\001\016\000\016\t\001\024\004\000\128!\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\004\000\000\000\008\000\000\000\000\000\000\000H\161\128\000\000\"\000\002\001 #\000\128\016\004 \000\000\000L\134 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018(`\000\000\008\128\000\128H\008\192 \004\001\008\000\000\000\019!\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\138\024\000\000\002 \000 \018\0020\008\001\000B\000\000\000\004\200b\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\136\000\008\004\128\140\002\000@\016\128\000\000\0012\024\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\002\000\000\000\000\000\000\000\018(`\000\000\008\128\000\128H\008\192 \004\001\008\000\000\000\019!\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\138\024\000\000\002 \000\"\018\0020\008\001\000B\000\000\000\004\200b\245\170\240\000@\002\000\000 \128\128\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\002\000\000\145C\000\000\000D\000\004\002@F\001\000 \008@\000\000\000\153\012@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015Z\175\000\004\000 \000\002\008\008\000\000\000\000\002\000\000\000\000\000@\007\173W\128\002\000\016\000\001\004\004\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\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\008\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\015Z\175\000\004\000 \000\002\000\008\192\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\004@\000\245\170\240\000@\002\000\000 \000\140\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\128\000\000\128\000\000\001\000\000\000\000\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\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\000z\213x\000 \001\000\000\016\000F\000\000\000\000\000\000\002\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\136\000\030\181^\000\008\000@\000\004\000\017\128\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\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000=j\188\000\016\000\128\000\008\000#\000\000\000\000\000\000\001\000\000\008\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\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\016\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\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\001\214\171@\001\000\008\000\000\000\002\000\000\000\000\000\128\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\245\170\240\000@\002\000\000 \128\128\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\002\000\000\145C\000\000\000D\000\004\002@F\001\000 \008@\000\000\000\153\012@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$P\192\000\000\017\000\001\016\144\017\128@\008\002\016\000\000\000&C\023\173W\128\002\000\016\000\001\004\004\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\000\004\138\024\000\000\002 \000 \018\0020\008\001\000B\000\000\000\004\200b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\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\004@\000\245\170\240\000E\"\000H4\n\131?@\000! \016\004\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\001H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\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\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\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\000\000\000\000\016\000\000\000\000\000\001H\000\018\013\002\128\206\208\000\008H\004\000\000\016@ \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\002\144\000$\026\005\001\157\160\000\016\144\008\000\000 \128A\000\000\000\000\001H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \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\000R\000\004\131@\1603\180\000\002\018\001\000\000\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\001 \208(\012\237\000\000\132\128@\000\001\004\002\008\000\000\000\000\n@\000\144h\020\006v\128\000B@ \000\000\130\001\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\144\000\004\008\017d\146\128\000\004\000\000@\000\013P\016\004\017\128\000\000\000\000\000\000\000\000\000\000\002\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\007\173W\128\002)\016\002A\160T\025\250\000\001\t\000\128 \002\t\004\016\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\005 \000H4\n\003;@\000! \016\004\000A\000\130\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\001\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\000@\001\022\001(\000\000@\000\000\000\000\209\000\000A\024\000\000\000\000\n@\000\144h\020\006v\128\000B@ \008\000\130\001\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\002\144\000$\026\005\001\157\160\000\016\144\008\002\000 \128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\016\000\000\000\000\000\000\000\000\000\016\000\000@\000\000\000\000\008\n@\000\144h\020\006v\128\000B@ \000\000\130\001\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\002\144\000$\026\005\001\157\160\000\016\144\008\002\000 \128A\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\002A\160P\025\218\000\001\t\000\128\000\002\008\004\016\000\000\000\000\000\000\000\016\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\001\000\004X\004\160\000\001\000\000\000\000\002D\000\001\000`\000\000\000\000)\000\002A\160P\025\218\000\001\t\000\128\000\002\008\004\016\000\000\t\000\000@\001\022\001(\000\000@\000\000\000\000\145\000\000@\024\000\000\000\000\n@\000\144h\020\006v\128\000B@ \000\000\130\001\004\000\000\002@\000\016\000E\128J\000\000\016\000\000\000\000$@\000\016\006\000\000\000\000\002\144\000$\026\005\001\157\160\000\016\144\008\000\000 \128A\000\000\000\144\000\004\000\017`\018\128\000\004\000\000\000\000\t\016\000\004\001\128\000\000\000\000\164\000\t\006\129@gh\000\004$\002\000\000\008 \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\002A\160P\025\218\000\001\t\000\128\000\002\008\004\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\n@\000\144h\020\006v\128\000B@ \000\000\130\001\004\000\000\002@\000\016\000E\128J\000\000\016\000\000\000\000$@\000\016\006\000\000\000\000\002\144\000$\026\005\001\157\160\000\016\144\008\000\000 \128A\000\000\000\144\000\004\000\017`\018\128\000\004\000\000\000\000\t\016\000\004\001\128\000\000\000\000\164\000\t\006\129@gh\000\004$\002\000\000\008 \016@\000\000$\000\001\000\004X\004\160\000\001\000\000\000\000\002D\000\001\000`\000\000\000\000)\000\002A\160P\025\218\000\001\t\000\128\000\002\008\004\016\000\000\t\000\000@\001\022\001(\000\000@\000\000\000\000\145\000\000@\024\000\000\000\000\n@\000\144h\020\006v\128\000B@ \000\000\130\001\004\000\000\002@\000\016\000E\128J\000\000\016\000\000\000\000$@\000\016\006\000\000\000\000\002\144\000$\026\005\001\157\160\000\016\144\008\003\000 \128A\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\164\000\t\006\129@gh\000\004$\002\000\000\008 \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\002A\160P\025\218\000\001\t\000\128\000\002\008\004\016\000\000\t\000\000@\001\022\001(\000\000@\000\000\000\000\145\000\000@\024\000\000\000\000\n@\000\144h\020\006v\128\000B@ \000\000\130\001\004\000\000\002@\000\016\000E\128J\000\000\016\000\000\000\000$@\000\016\006\000\000\000\000\002\144\000$\026\005\001\157\160\000\016\144\008\000\000 \128A\000\000\000\144\000\004\000\017`\018\128\000\004\000\000\000\000\t\016\000\004\001\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\002\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\005 \000H4\n\003;@\000! \016\004\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\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\008\000\000\000\000\000\000\000\000\000\002\000\003\214\171\192\001\000\008\000\000\128\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\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\004\000\000\000\000\000\000R\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\245\170\240\000E\"\000H4\n\131;@\000! \016\004\000A\000\130\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\003\214\171\192\001\020\136\001 \208*\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\000\016\000\000\000\000\000\000\000\000\128\000\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\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\136\000\008\132\128\140\002\000@\016\128\000\000\0012\024\189j\188\000\016\000\128\000\008  \000\000\000\000\008\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\128\000$P\192\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\145C\000\000\000D\000\004\002@F\001\000 \008@\000\000\000\153\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\008\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\011\214\171\192\001\000\008\000\000\128\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\245\170\240\000@\002\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\016\000\000\000\000\000\000\000\008\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\003\255\175\224\129\028\138\001\000\198+\142\239\008\001\158\160\192\0025D\n\t\235U\224\000\128\004\000\000@\001\000\000\000\000\000\000\000\000\000\000\000\000\000\016\001\000\160BD\016\002\024\128\000\t\000\008v\130@\000\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*\004\000\000\000\128\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\002\000 \020\008H\130\000C\016\000\001 \001\014\208H\000\017\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\001\128\008\005\002\018 \128\016\196\000\000H\000C\180\018\000\004`\000\000\000@\004\002\129\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P!\"\008\001\012@\000\004\128\004;A \000F\000\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 \020\008H\130\000C\016\000\001 \001\014\208H\000\017\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\008\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 \002\001@\132\136 \0041\000\000\018\000\016\237\004\128\001\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P!\"\008\001\012@\000\004\128\004;A \000F\000\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\002\000\000\000@\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\n\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\004\002\129\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000 \002\001@\132\136 \0041\000\000\018\000\016\237\004\128\001\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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@(\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\n\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\016\001\000\160BD\016\002\024\128\000\t\000\008v\130@\000\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\004\000@(\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\n\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\004\002\129\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000 \002\001@\132\136 \0041\000\000\018\000\016\237\004\128\001\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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@(\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\n\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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 \002\001@\132\136 \0041\000\000\018\000\016\237\004\128\001\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P!\"\008\001\012@\000\004\128\004;A \000F\000\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 \020\008H\130\000C\016\000\001 \001\014\208H\000\017\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\128\008\005\002\018 \128\016\196\000\000H\000C\180\018\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\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\008\000\128P!\"\008\001\012@\000\004\128\004;A \000F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\008\000@\000\004\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\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@\004\002\129\t\016@\012b\000\000$\000!\218\t\000\0020\000\001\235U\224\000\128\004\000\000A\001\000\000\000\000\000@\000\008\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\008\000\128P!\"\008\001\012@\000\004\128\004;A \000F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\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\008\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\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\008\000\000\128\000\000\001\000\000\000\000\000\000\003\214\171\192\001\000\008\000\000\130\002\000\000\000\000\000\128\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\008\000\000\016\001\000\160BD\016\002\024\128\000\t\000\008v\130@\000\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\004\000@(\016\145\004\000\198 \000\002@\002\029\160\144\000#\000\000\030\181^\000\008\000@\000\004\016\016\000\000\000\000\004\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\128\008\005\002\018 \128\016\196\000\000H\000C\180\018\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\000u\170\208\000@\002\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P!\"\008\001\012@\000\004\128\004;A \000F\000\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\002\000\000\000@\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\n\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\004\002\129\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000 \002\001@\132\136 \0041\000\000\018\000\016\237\004\128\001\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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@(\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\n\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\016\001\000\160BD\016\002\024\128\000\t\000\008v\130@\000\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\004\000@(\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\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\129\000\000\000 \000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\128\008\005\002\018 \128\016\196\000\000H\000C\180\018\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`\002\001@\132\136 \0041\000\000\018\000\016\237\004\128\001\024\000\000\000\016\001\000\160BD\016\002\024\128\000\t\000\008v\130@\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000 \020\008H\130\000C\016\000\001 \001\014\208H\000\017\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\128\008\005\002\018 \128\016\196\000\000H\000C\180\018\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\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\008\000\128P!\"\008\001\012@\000\004\128\004;A \000F\000\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 \020\008H\130\000C\016\000\001 \001\014\208H\000\017\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\128\008\005\002\018 \128\016\196\000\000H\000C\180\018\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`\002\001@\132\136 \0041\000\000\018\000\016\237\004\128\001\024\000\000\000\016\001\000\160BD\016\002\024\128\000\t\000\008v\130@\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000 \020\008H\130\000C\016\000\001 \001\014\208H\000\017\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\128\008\005\002\018 \128\016\196\000\000H\000C\180\018\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\016\001\000\160BD\016\002\024\128\000\t\000\008v\130@\000\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\004\000@(\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\n\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\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\002\129\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\016\000\000\000\000\000\000\000\004\000@(\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\n\004$A\0001\136\000\000\144\000\135h$\000\008\192\000\007\173W\128\002\000\016\000\001\004\004\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\000\000 \002\001@\132\136 \0041\000\000\018\000\016\237\004\128\001\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\000\000\000\000\000\000\030\181^\000\008\000@\000\004\016\016\000\000\000\000\004\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\128\008\005\002\018 \128\016\196\000\000H\000C\180\018\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 \002\001@\132\136 \0061\000\000\018\000\016\237\004\128\001\024\000\000\245\170\240\000@\002\000\000 \128\128\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\002\000\000\004\000@(\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\002\000r\008\004\003\016\162;\180 \006z\131\000\008\197\016( \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\020\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\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\127\245\252\000 \001\000\000\016\000@\000@\000\000\016\000\000\001\128B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015Z\175\000\004\000 \000\002\000\008\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\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\004\000\000\000\000\000\000\005 \000H5\n\003{@\000! \016\004\000A\000\130\000\000\000\000\002\144\000 \025\133\001\157\160\0000\144\008\n\128 \130A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\008\006\001@gh\000\012$\002\000\000\008 \016@\000\000\000\000R\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \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\001\235U\224\000\138D\000\144h\021\006v\128\000B@ \008\000\130\001\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\008\006\001@gh\000\012$\002\000\000\008 \016@\000\000\000\000R\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\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 \000@0\n\003;@\000a \016\000\000A\000\130\000\000\000\000\002\144\000 \024\005\001\157\160\0000\144\008\000\000 \128A=j\188\000\017H\128\018\013\002\160\206\208\000\008H\004\001\000\016@ \128\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\000R\000\004\003\000\1603\180\000\006\018\001\000\000\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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 @\131$\148\000\000 \000\002\000\000B\128\132\000\012\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=j\188\000\017H\128\018\013\002\160\207\208\000\008H\004\001\000\016H \128\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\002A\160P\025\218\000\001\t\000\128 \002\008\004\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\008\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000@\000\000\000\000\000\020\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\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\001H\000\016\012\194\128\206\208\000\024H\004\005@\016A \128\000\000H\000\002&\t\178\201`\000\002\128\016 \000\006\232\008J\014\224\000\000\000@R\000\004\0030\1603\180\000\006\018\001\001P\004\016H \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\020\128\001 \212(\013\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\000\000\000\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\002\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\t\000\000@\193\006I,\000\000@\000\004\000\000\205\001\t\001\024\000\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 \000@3\n\003;@\000a \016\017\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\128\000\000\000\000\000\000\000\000\164\000\008\006a@gh\000\012$\002\002 \008 \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\016\000\000\000\000\000\000\000\000\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\016\000A\128J\000\000\016\000\000\000\000 @\002\000\006\000\000\000\000\002\144\000 \024\005\001\157\160\0000\144\008\000\000 \128A\000\000\000\128\000\004\000\016`\018\128\000\004\000\000\000\000\008\016\000\128\001\128\000\000\000\000\164\000\008\006\001@gh\000\012$\002\000\000\008 \016@\000\000 \000\001\000\004\024\004\160\000\001\000\000\000\000\002\004\000 \000`\000\000\000\000)\000\002\001\128P\025\218\000\003\t\000\128\000\002\008\004\016\000\000\008\000\000@\001\006\001(\000\000@\000\000\000\000\129\000\008\000\024\000\000\000\000\n@\000\128`\020\006v\128\000\194@ \000\000\130\001\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\002\144\000 \024\005\001\157\160\0000\144\008\000\000 \128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\008\006\001@gh\000\012$\002\000\000\008 \016@\000\000 \000\001\000\004\024\004\160\000\001\000\000\000\000\002\004\000 \000`\000\000\000\000)\000\002\001\128P\025\218\000\003\t\000\128\000\002\008\004\016\000\000\008\000\000@\001\006\001(\000\000@\000\000\000\000\129\000\008\000\024\000\000\000\000\n@\000\128`\020\006v\128\000\194@ \000\000\130\001\004\000\000\002\000\000\016\000A\128J\000\000\016\000\000\000\000 @\002\000\006\000\000\000\000\002\144\000 \024\005\001\157\160\0000\144\008\000\000 \128A\000\000\000\128\000\004\000\016`\018\128\000\004\000\000\000\000\008\016\000\128\001\128\000\000\000\000\164\000\008\006\001@gh\000\012$\002\000\000\008 \016@\000\000 \000\001\000\004\024\004\160\000\001\000\000\000\000\002\004\000 \000`\000\000\000\000)\000\002\001\128P\025\218\000\003\t\000\128\000\002\008\004\016\000\000\008\000\000@\001\006\001(\000\000@\000\000\000\000\129\000\008\000\024\000\000\000\000\n@\000\128`\020\006v\128\000\194@ \000\000\130\001\004\000\000\002\000\000\016\000A\128J\000\000\016\000\000\000\000 @\002\000\006\000\000\000\000\002\144\000 \024\005\001\157\160\0000\144\008\000\000 \128A\000\000\000\128\000\004\000\016`\018\128\000\004\000\000\000\000\008\016\000\128\001\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\008\000\000\000\000\000\000\n@\000\128f\020\006v\128\000\194@ *\000\130\t\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\002\144\000 \025\133\001\157\160\0000\144\008\n\128 \130A\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\164\000\008\006a@gh\000\012$\002\002\160\008 \144@\000\000\000\000R\000\004\0030\1603\180\000\006\018\001\001\016\004\016H \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\020\128\001\000\204(\012\237\000\001\132\128@T\001\004\018\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\004\000\000\000\000\000\000\000\000\000\000\000\000\000\128\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\128\000\008\192\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000=j\188\000\016\000\128\000\008\000#\000\000\000\000\000\000\001\000\000\008\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\001\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\020\128\001 \212(\013\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\t\000\000\000\000\000\000\000\000\008\000\001\000\000\000\000\000\000\000\000\004\000\004\128\000\000\000\000\000\000\000\004\000\000\128\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\015Z\175\000\004\000 \000\002\000\008\192\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\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\016\000\000\000\000\000\000\000\000\000\000\016\000\002\000\000\000\000\000\000\002\144\000$\026\133\001\189\160\000\016\144\008\002\000 \128A\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\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\001\214\171@\001\000\008\000\000\000\002\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\016\000\000\000\000\000\000\000\000\000\000\016\000\002\000\000\000\000\000\000\002\144\000$\026\133\001\189\160\000\016\144\008\002\000 \128A\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\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\128\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\005 \000H5\n\003{@\000! \016\004\000A\000\130\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\016\004 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\001\255\215\240@\142E\000\144j\021\199w\132\000\207P`\t\030\163\013\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\002\144\000 \024\005\001\157\160\0000\144\008\000\000 \128A\000\000\000\000\001H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \158\181^\000\008\164@\t\006\129Pgh\000\004$\002\000\128\008 \016@\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\128\000\000\000\000\000\n@\000\128`\020\006v\128\000\194@ \000\000\130\001\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\020\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\000\000\n@\000\144h\020\006v\128\000B@ \008\000\130\001\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\002\144\000 \024\005\001\157\160\0000\144\008\000\000 \128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\008\006\001@gh\000\012$\002\000\000\008 \016@\000\000\000\000R\000\004\003\000\1603\180\000\006\018\001\000\000\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\000\"`\155,\150\000\000(\001\002\000\000j\128\128\160\238\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=j\188\000\017H\128\018\013\002\160\207\208\000\008H\004\001\000\016H \128\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\002A\160P\025\218\000\001\t\000\128 \002\008\004\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\008\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\002\"\t\176\137`\000\002\128\016\000\000\006\136\000\n\014\224\000\000\000\000R\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\002@\000\017\016M\132K\000\000\020\000\128\000\000$@\000P7\000\000\000\000\002\144\000 \024\005\001\157\160\0000\144\008\000\000 \128A\000\000\000\144\000\004D\019a\018\192\000\005\000 \000\000\t\016\000\020\013\192\000\000\000\000\164\000\008\006\001@gh\000\012$\002\000\000\008 \016@\000\000$\000\001\017\004\216D\176\000\001@\008\000\000\002D\000\005\003p\000\000\000\000)\000\002\001\128P\025\218\000\003\t\000\128\000\002\008\004\016\000\000\t\000\000DA6\017,\000\000P\002\000\000\000\145\000\001@\220\000\000\000\000\n@\000\128`\020\006v\128\000\194@ \000\000\130\001\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\002\144\000 \024\005\001\157\160\0000\144\008\000\000 \128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\008\006\001@gh\000\012$\002\000\000\008 \016@\000\000$\000\001\017\004\216D\176\000\001@\008\000\000\002D\000\005\003p\000\000\000\000)\000\002\001\128P\025\218\000\003\t\000\128\000\002\008\004\016\000\000\t\000\000DA6\017,\000\000P\002\000\000\000\145\000\001@\220\000\000\000\000\n@\000\128`\020\006v\128\000\194@ \000\000\130\001\004\000\000\002@\000\017\016M\132K\000\000\020\000\128\000\000$@\000P7\000\000\000\000\002\144\000 \024\005\001\157\160\0000\144\008\000\000 \128A\000\000\000\144\000\004D\019a\018\192\000\005\000 \000\000\t\016\000\020\013\192\000\000\000\000\164\000\008\006\001@gh\000\012$\002\000\000\008 \016@\000\000$\000\001\017\004\216D\176\000\001@\008\000\000\002D\000\005\003p\000\000\000\000)\000\002A\160P\025\218\000\001\t\000\1280\002\008\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\n@\000\128`\020\006v\128\000\194@ \000\000\130\001\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\002\144\000 \024\005\001\157\160\0000\144\008\000\000 \128A\000\000\000\144\000\004D\019a\018\192\000\005\000 \000\000\t\016\000\020\013\192\000\000\000\000\164\000\008\006\001@gh\000\012$\002\000\000\008 \016@\000\000$\000\001\017\004\216D\176\000\001@\008\000\000\002D\000\005\003p\000\000\000\000)\000\002\001\128P\025\218\000\003\t\000\128\000\002\008\004\016\000\000\t\000\000DA6\017,\000\000P\002\000\000\000\145\000\001@\221\235U\224\000\138D\000\144h\021\006v\128\000B@ \008\000\130\001\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\164\002\t\006\129@gh\000\004$\002\000\128\008 \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\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\255\215\240x\142E\000\128c\021\199w\132\000\207P`\001\026\162\005\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\002\144\000$\026\005\001\157\160\000\016\144\008\002\000 \128A\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\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\000\002A\160P\025\218\000\001\t\000\128 \002\008\004\016\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\128\000\000\000@\000\000\000\000\000\000A\016\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\250\254\008\017\200\160\016\012B\184\238\240\128\025\234\012\000#T@\160\159\253\127\004\008\228P\t\006\161|wx@\012\245\006\000\145\170(PO\254\191\131\196r(\004\003\024\174;\188 \006z\131\000\008\213\016( \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\255\191\240\241\028\138\001\000\198/\142\239\024\001\158\164\192\002=G\026\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248 G\"\128@1\138\227\187\194\000g\1680\000\141Q\002\130\127\245\252\016#\145@$\026\133\241\221\225\0003\212\024\002F\168\161A?\250\254\008\017\200\160\018\013B\184\238\240\128\025\234\012\001#TA\160\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\002\000r\008\004\003\016\162;\180 \006z\131\000\008\197\016( \000\000\001\0009\004\002\001\136Q\029\218\016\003=A\128\004b\136\020\016\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001H\004\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\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\000R\001\004\131@\1603\180\000\002\018\001\000@\004\016\008 \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\020\128\001 \208(\012\237\000\000\132\128@\016\001\004\130\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000 \007 \128@1\n#\187B\000g\1680\000\140Q\002\130\000\000\000\016\003\144@ \024\133\017\221\161\0003\212\024\000F(\129A\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\008\000\001\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000D\000\000\000\000\000\000\000\000\000\000\000\000\001\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\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\136\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\004\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\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\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\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\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\144\000$\026\005\001\157\160\000\016\144\008\002\000 \128A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\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\128\000\000\000\000\000\000\000\000\000\000\000\000\003\214\171\192\001\020\136\001 \208*\012\253\000\000\132\128@\016\001\004\130\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000 \007 \128@1\n#\187B\000g\1680\000\140Q\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\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\001\255\215\240@\142E\000\144j\021\199w\132\000\207P`\t\026\162\005\004\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#\145@ \024\197\241\221\227\0003\212\152\000G\168\227Y\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\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\007\255_\193\0029\020\002\001\140W\029\2220\003=A\128\004j\136\020\016\000\000\000\000\000\000\000 \016\000\000\000\016\000\000\000\000\016\000\000\000\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248 G\"\128@1\138\227\187\198\000g\1680\000\141Q\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\000H\000\002&\t\178\201`\002\002\128\016$\000\006\232\008\n\014\224\000\000\000\000\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\001\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248 G\"\128H5\n\227\187\198\000g\1680\004\141Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\250\254\008\017\200\160\016\012b\184\238\241\128\025\234\012\000#T@\172\192\000\000\000\000\000\000\000\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\007\173W\128\002)\016\002A\160T\025\250\000\001\t\000\128 \002\t\004\016\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\008\000\008\000\000\140\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\001\000\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\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\001\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\000\128\004\000\000@\001\024\000\000\000\000\000\000\008\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\164\000\t\006\161@oh\000\004$\002\000\128\008 \016@\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\001\235U\224\000\128\004\000\000@\001\024\000\000\000\000\000\000\008\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\002\000\000@\000\000\000\000\000\000R\000\004\131P\1607\180\000\002\018\001\000@\004\016\008 \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:\213h\000 \001\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\004\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\002\000\000@\000\000\000\000\000\000R\000\004\131P\1607\180\000\002\018\001\000@\004\016\008 \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\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\253\127\004\008\228P\t\006\161\\wx\192\012\245\006\000\145\170 V`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\016\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\255\235\248 G\"\128H5\n\227\187\198\000g\1680\004\141Q\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\004\000\004\000\000F\001\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\128\028\130\001\000\196(\142\237\008\001\158\160\192\0021D\n\008\000\000\000\000\000\000\000\000\000\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\008\000\000\000\000\000\000\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\008\000\000\000\000\000\000\000\000\000\002\000\003\255\191\240\129\028\142\0010\212/\142\239\024\003\158\164\1922=GZ\204\000\000\000@\014A\000\128b\020Gv\132\000\207P`\001\024\162\005\004\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#\145@ \024\197\241\221\225\0003\212\024\000G\168\227A\000\000\000\000\000\000\000\002\001\000\000\000\000\000\000\000\000\001\000\000\000\000\031\253\127\004\008\228P\008\0061|wx@\012\245\006\000\017\2348\208@\000\000\000\000\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\001\255\215\240@\142E\000\144j\023\199w\132\000\207P`\t\030\163\141\004\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#\145@$\026\133\241\221\225\0003\212\024\002G\168\227A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\031\253\127\004\008\228P\008\0061|wx@\012\245\006\000\017\170(P@\000\000\000\000\000\000\000\128@\016\000\000\000\000\000\000\000@\000\004\000\007\255_\193\0029\020\002\001\140_\029\222\016\003=A\128\004j\138\020\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\008\004\002\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\031\253\127\004\008\228P\t\006\161|wx@\012\245\006\000\145\170(P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\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\016\000\016\001\001\024\000\000\000 \000\000\000\000@\000\000\000\000\000\000\000\128\006\002\000\000\000\000\000@\000\000\002\000\000\008\000\191\250\254\008\017\200\160\016\012b\184\238\240\128\025\234\012\000#T@\160\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\017\000\192@\000\000\000\000\008\000\000\000@\000\001\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\255\175\224\129\028\142\0010\212+\142\239\008\003\158\160\192\0185DJ\013\255\215\240@\142E\000\128c\021\199w\132\000\207P`\001\026\162\005\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?\250\254\008\017\200\224\019\013B\184\238\240\1289\234\012\001#TD\160\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\016\000\031\253\127\004\008\228P\t\006\161|wx@\012\245\006\000\145\170(P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\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\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\004\002\001\000\000\000\001\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\015\254\191\130\004r(\004\131P\174;\188`\006z\131\000H\213\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\247\235\248\000E\"\128@0\n\131;\192\000a \016\000\001Q\002\130\000\000\000\000\002\144\008$\026\005\001\157\160\000\016\144\008\002\000 \128A\000\000\000\000\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\007\191_\192\002)\020\002\001\128T\025\222\000\003\t\000\128\000\n\136\020\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\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=j\188\000\016\000\128\000\008\000 \000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\001\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\020\128\001 \212(\013\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\140\000\000\000\016\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\002\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\002\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\003\214\171\192\001\000\008\000\000\128\0020\000\000\000\000\000\000\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\016\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\001H\000\018\013B\128\222\208\000\008H\004\001\000\016@ \128\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\128\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\n@\000\144j\020\006\246\128\000B@ \008\000\130\001\004\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\029j\180\000\016\000\128\000\000\000 \000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\001\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\020\128\001 \212(\013\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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=\250\254\000\017H\160\016\012\002\160\206\240\000\024H\004\000\000T@\160\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\001\003\004\025$\176\001\001\000\000\018\000\003\020\004\004\004`\000\000\000\000\000\000\128\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\n@\000\144j\020\006\246\128\000B@ \008\000\130\001\004\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\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\001\235U\224\000\138D\000\144h\021\006~\128\000B@ \008\000\130A\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\002\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\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\016\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000 \001\000\000\016\000F\000\000\000\000\000\000\002\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\002\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\002A\168P\027\218\000\001\t\000\128 \002\008\004\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\016\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\001H\000\018\013B\128\222\208\000\008H\004\001\000\016@ \128\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\003\173V\128\002\000\016\000\000\000\004\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\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\144\000$\026\133\001\189\160\000\016\144\008\002\000 \128A\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\016\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\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\008\000\000\000\128\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\004\000\004\000@F\000\000\000\008\000\000\000\000\016\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\016@\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\015\254\191\130\004r(\004\003\024\174;\188 \006z\131\000\008\213\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\005 \000H4\n\003;@\000! \016\004\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000?\250\254\008\017\200\160\018\013B\184\238\240\128\025\234\012\001#\212a\160\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\008\002\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248\000@\002\000\000 \000\128\000\128\000\000 \000\000\003\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\016\000\000\000\000\000\000\000/\254\191\130\004r(\004\003\024\174;\188 \006z\131\000\008\213\016( \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\255\175\224\129\028\138\001\000\198+\142\239\008\001\158\160\192\0025D\n\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000R\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\008\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\008\000\000\000\000\020\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\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 \000H4\n\003;@\000! \016\004\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\016\000\000\000\000\000\000\000\008\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\020\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\002\000\000\000\000\000\000\000\001\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\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\008\001\200 \016\012B\136\238\208\128\025\234\012\000#\020@\160\128\000\000\000\000\000 \000\000\000\000\000\000\000\016\000\000\000\000\000\000\000 \000\000\002\000r\008\004\003\016\162;\180 \006z\131\000\008\197\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\128\028\130\001\000\196(\142\237\008\001\158\160\192\0021D\n\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000R\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\008\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\008\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\255\235\248\000@\002\000\000 \000\128\000\128\000\000 \000\000\001\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\191\250\254\000\016\000\128\000\008\000 \000 \000\000\008\000\000\000@\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\254\191\128\004\000 \000\002\000\008\000\008\000\000\002\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\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\001\000\000\000\000\000\000\000\000\128\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\001H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\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\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\001\235U\225\001\192\132\137 B\001\000\000\018\000\016\165\004\128\001\024\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\016\000\000\000\000\000\000\000\002\000 \020\008H\130\000\002\000\000\001 \001\014\208H\000\017\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\128\000\000\000\000\004\000@(\016\017\004\000\004\000\000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\016\001\000\160BD\016\000\016\000\000\t\000\008v\130@\000\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\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\004\000\000\128\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\008\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\008\000\000\000\000\000\000\008\128\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\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\007\002\018 \129\008\004\000\000H\000B\144\018\000\004`\000\003\214\171\192\003\129\008\000@\132\002\000\000$\000!H\t\000\0020\000\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\000\160BF\016\000\016\000\000\t\000\008v\130@\000\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\004\000@(\016\145\004\000\004\000\000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\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\128\008\005\002\018 \128\000\128\000\000H\000C\180\018\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\128\000\000@\000\000\000\000\000\000\004\000\000\000\000\000\000\000\002\000\000\001\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@\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\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\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\007\173W\128\007\002\018\000\129\008\004\000\000H\000B\144\018\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\001\235U\224\001\192\132\000 B\001\000\000\018\000\016\164\004\128\001\008\000\000\000\016\001\000\160BD\016\000\016\000\000\t\000\008v\130@\000\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\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\129\000\000\002\000 \020\008H\130\000\002\000\000\001 \001\014\208H\000\017\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \002\001@\132\136 \000 \000\000\018\000\016\237\004\128\001\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\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@(\016\145\004\000\004\000\000\002@\002\029\160\144\000#\000\000\000\002\000 \020\008H\130\000\002\000\000\005 \001\014\208H\000\017\192\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\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\016\001\000\160BD\016\000\016\000\000\t\000\008v\130@\000\140\000\000\000\008\000\128P!\"\008\001\008\000\000\020\128\004;A \000G\000\000\000\004\000@(\016\145\004\000\004\000\000\002@\002\029\160\144\000#\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\016\n\004$A\000\001\000\000\000\144\000\135h$\000\008\192\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\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\030\181^\000\008\000@\000\004\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\016 \003\214\171\192\001\000\008\000\000\128\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\004\000\000\008\000\128P!\"\008\001\012\000\000\004\128\004;A \000F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\016\n\004$A\000\001\000\000\000\144\000\135h$\000\008\192\000\000\000\000\000\000\000\000\000\000\000\000\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\008\000\000\000 \002\001@\132\136 \000 \000\000\018\000\016\237\004\128\001\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\000\000\000\000 \000\000\016\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\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@\004\002\129\t\016@\004@\000\000$\000!\218\t\000\0020\000\000\000 \002\001@\132\136 \000 \000\000\018\000\016\237\004\128\001\024\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\000\000\000\008\000\128P!\"\008\000\008\000\000\004\128\004;A \000F\000\000\000\004\000@.\016\145\004\000\020\000\000\n@\002\029\160\144\000#\128\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\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 \002\001@\132\136 \000 \000\000\018\000\016\237\004\128\001\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\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@\168\016\145\004\000\004\000\000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\004\000\000\000\016\001\002\160BD\016\000\016\000\000\t\000\008v\130@\000\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\000\000\006\000\000\000\000\016\000\000\008\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\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@\004\002\129\t\016@\000@\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P!\"\008\000\012\000\000\004\128\004;A \000F\000\000\000\004\000@(\016\145\004\000\148\000\000\n@\002\029\160\144\000#\128\000\000\002\000 \020\008H\130\000\002\000\000\001 \001\014\208H\000\017\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\128\008\005\002\018 \128\000\128\000\000H\000C\180\018\000\004`\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\004\000@(\016\145\004\000\006\000\000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\016\000\000\000@\004\002\129\t\016@\000@\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\000\000\000\000\016\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\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\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@\004\002\129\t\016@\000@\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\000\128P!\"\008\000\008\000\000\004\128\004;A \000F\000\000\000\000\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\000\000\008\000\000\004\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\016\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\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\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\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\008\000\128P!\"\008\000\008\000\000\004\128\004;A \000F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\n\004$A\000\001\000\000\000\144\000\135h$\000\008\192\000\000\000\128\008\005\194\018 \128\002\128\000\001H\000C\180\018\000\004p\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=n\188@8\016\145\004\008D \000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\001\000\016\n\004\004A\000\001\000\000\000\144\000\135h$\000\008\192\000\000\000\128\008\005\194\018 \128\002\192\000\001H\000C\180\018\000\004p\000\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\001@\132\136 \000 \000\000\018\000\016\237\004\128\001\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\007\173\215\136\007\002\018 \129\008\196\000\000H\000C\180\018\000\004`\000\000\000@\004\002\129\t\016@\000@\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P!\"\008\000\008\000\000\004\128\004;A \000F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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@\004\002\129\t\016@\008@\000\000$\000!\218\t\000\0020\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\016\001\000\160BD\016\000\016\000\000\t\000\008v\130@\000\140\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\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\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\000z\213x@p!\"H\016\128@\000\004\128\004)A \000F\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\000R\000\004\131@\2243\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000R\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\239\252 G\"\128H=\014\227\187\194\000g\1690\004\141Q\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\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\003\255\191\240\129\028\138\001 \244+\142\239\008\001\158\164\192\0185D\n\205\239\223\248\000\128\004\000\000@\001\000\000\000\000\000\002\000\000\000\000\000\000\247\239\252\000@\002\000\000 \000\128\000\000\000\000\001\000\000\000\000\000\000{\247\254\000 \001\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\000\000\000\000\000\000H\161\128\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000$P\192\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\018(`\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\t\0200\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\007\255_\193\2269\020\002\001\140W\029\222\016\003=A\128\004j\136\020\019\255\175\224\129\028\138\001\000\198+\142\239\008\001\158\160\192\0025D\n\008\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248 G\"\128@1\138\227\187\194\000g\1680\000\141Q\002\179\000\000\000\000\000\000\000\004\002\000\000\000\000\000\000\000\000\002\000\000\000\024\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\001\000\128@\000\000\000\000\000\000\000\000@\000\000\003\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\255\175\224\129\028\138\001 \212+\142\239\008\001\158\160\192\0185D\n\204\000\000\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 \000@3\n\003;@\000a \016\021\000A\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\127\007\136\228P\008\0061\\wx@\012\245\006\000\017\170 PO\254\191\130\004r(\004\003\024\174;\188 \006z\131\000\008\213\016( \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\003\255\175\224\129\028\138\001\000\198+\142\239\008\001\158\160\192\0025D\n\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248<G\"\128@1\138\227\187\194\000g\1680\000\141Q\002\130\127\245\252\016#\145@ \024\197q\221\225\0003\212\024\000F\168\129A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\191\127\224\002\000\016\000\001\000\004\000\000\000\000\001\008\000\000\000\000\000\000\t\0200\000\000\000\000\000@\000\004`\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\004\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\007\173W\128\002\000\016\000\001\000\004`\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\004@\000\245\170\240\000@\002\000\000 \000\140\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\001\000\000\001\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\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\136\000\030\181^\000\008\000@\000\004\000\017\128\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\128\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\255\235\248 G\"\128H5\n\227\187\194\000g\1680\004\141Q\006\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\001\000\128\000\000\000\000\000\000\000\000\128\000\000\006 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\255_\193\0029\020\002A\168W\029\222\016\003=A\128$j\136\021\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\138\024\000\000\000 \000 \000\0020\000\000\000B\000\000\000\000\000b\000\000\000\000\000\008\008\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\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\020\128\001 \2088\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000R\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\255\191\240\129\028\138\001 \244;\142\239\008\001\158\164\192\0185D\n\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\015\254\255\194\004r(\004\131\208\174;\188 \006z\147\000H\213\016+0\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\255\191\240\129\028\138\001\000\198+\142\239\008\001\158\164\192\0025D\n\204\000\000\000\000\000\000\000\016\008\000\000\000\000\000\000\000\000\008\000\000\000b\255\239\252 G\"\128@1\138\227\187\194\000g\1690\000\141Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000?\251\255\008\017\200\160\018\013B\184\238\240\128\025\234L\001#T@\172\223\253\255\132\008\228P\008\0061\\wx@\012\245&\000\017\170 V`\000\000\000\000\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\001\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\255\223\248@\142E\000\144j\021\199w\132\000\207R`\t\026\162\005f\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#\145@$\026\133q\221\225\0003\212\152\002F\168\129Y\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\255\132\008\228P\t\006\161\\wx@\012\245&\000\145\170 V`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018(`\000\000\000\128\000\128\000\008\192\000\000\001\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\253\255\132\008\228P\t\006\161\\wx@\012\245&\000\145\170 V`\000\000\000\000\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\001\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\255\223\248@\142E\000\144j\021\199w\132\000\207R`\t\026\162\005f\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\008\000\008\000\000\140\000\000\000\016\128\000\000\000\000\024\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\016\000@\000\000\000\000\000\000\000\001\002D\240\003\000\000\001\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\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\000\000\008\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\002\004\000\000\000\000\000\000\000\016\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\004\000\128\000\000\000\000\000 \000\001\002\000\000\000\000\000\000\000\008\000\000\000\008\000\000\000\000\008\000\000\000\008\000\000\000\000\000\000\000\002\024\001\000\001\000\160\000\000\000\000\000\008\000\000@\128\000\000\000\000\000\000\002\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\128\000\000\000\128\000\000\000\000\000\000\000!\128\016\000\000\n\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\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\128\000\000\000\000\000\000\000\000\000\000\000#\128\024\000\000\008\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\016\000\000\000\000\000\000\000\000\000\000\000\0040\003\000\000\001\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\002\024\001\000\000\000\128\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\134\000@\004\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\008`\004\000\000\002\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\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\001\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\008\000\000\008\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\008\000\000\000\000\000\000\000\000\000\000\000\0028\001\128\000\000\128\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\001\012\000\192\000\000@\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\134\000@\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000C\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000!\128\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\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\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\008\000\000\000\000\000\000\000\000\000\000\000\002\024\001\128\000\000\128\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\001\012\000\128\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\134\000@\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000C\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\008\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\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\004\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\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\001\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")
+    (178, "\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\012\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\001\128\000\000\000\000\000\000\000\000\000\000\128\016\192\000\000\129\012\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\252\000\000\000\000\000\000\000\001\235U\224\000\128\002\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\000H\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\018\168h\005\001\013P@Hf\004`4\002!\222\t\000\0029\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000]\163\128\000\0001\000\001\000\024\017\128@\008\002\016\000\000\000&C\016\018(`\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\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\000D\000\004\002@F\001\000 \008@\000\000\000\153\012@H\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\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\001\"\134\000\000\000D\000\004\002@F\001\000 \008@\000\000\000\153\012@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018(`\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\018(`\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\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\000D\000\004\002@F\001\000 \008@\000\000\000\153\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\001v\142\000\000\000\196\000\004\000`F\001\000 \008@\000\000\000\153\012@H\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\202\024\000\000\001\016\000\016\t\001\024\004\000\128!\000\000\000\002d1\001\"\134\000\000\000D\000\004\002@F\001\000 \008@\000\000\000\153\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\004\138\024\000\000\001\016\000\016\t\001\024\004\000\128!\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\000H\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\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\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000H\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\138\024\000\000\001\016\000\016\t\001\024\004\000\128!\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\000H\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\202\024\000\000\001\016\000\016\t\001\024\004\000\128!\000\000\000\002d1\001\"\134\000\000\000D\000\004\002@F\001\000 \008@\000\000\000\153\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\004\138\024\000\000\001\016\000\016\t\001\024\004\000\128!\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\000H\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\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\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\018(`\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\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\000D\000\004\002@F\001\000 \008@\000\000\000\153\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\004\138\024\000\000\001\016\000\016\t\001\024\004\000\128!\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\000H\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\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\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000H\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\000\128\002\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\001\"\134\000\000\000D\000\004B@F\001\000 \008@\000\000\000\153\012^\181^\000\008\000 \000\002\008\008\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\001\235U\224\008\128\002\000\000 \128\128\000\000\000\000 \000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\008\000 \000\002\008\008\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000@\000\000\000\128\000\000\000\000\000\001\235U\224\000\128\002\000\000 \128\128\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\018(`\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000 \000\128\000\008  \000\000\000\000\008\000\001\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\128\000\000\000\000\000\000\000\000\000\000\000\000\016\000\002\000\000\000\000\000\000\000\000\016\000\002 \000\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\001\000\016B \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\t \000H4\n\003;@\000! \016\004\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\146\000\004\131@\1603\180\000\002\018\001\000\000\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t \000H4\n\003;@\000! \016\000\000A\000\130\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\000\000\000\000\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008'\173W\128\002$\136\001 \208*\012\237\000\000\132\128@\016\001\004\002\t\235U\224\000\137\"\000H4\n\131;@\000! \016\004\000A\000\130\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\000\000\016@ \158\181^\000\008\146 \004\131@\1683\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000$\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t \000H4\n\003;@\000! \016\004\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\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\001\019\004\217d\176\000\001@\008\016\000\003t\004'\135p\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\000z\213x\000\"H\128\018\013\002\160\207\208\000\008H\004\001\000\016H \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\018\000\000DA\006\001,\000\000P\002\000\000\000\217\000\t\161\220\000\000\000\000\t \000H4\n\003;@\000! \016\004\000A\000\130\000\000\001 \000\004D\019a\018\192\000\005\000 \000\000\013\144\000\158\029\192\000\000\000\000\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\004D\019a\018\192\000\005\000 \000\000\t\144\000\158\013\192\000\000\000\000\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\018\000\000DA6\017,\000\000P\002\000\000\000\153\000\t\224\220\000\000\000\000\t \000H4\n\003;@\000! \016\004\000A\000\130\000\000\001 \000\004D\019a\018\192\000\005\000 \000\000\t\144\000\158\013\192\000\000\000\000\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\018\000\000DA6\017,\000\000P\002\000\000\000\153\000\t\224\220\000\000\000\000\t \000H4\n\003;@\000! \016\004\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\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t \000H4\n\003;@\000! \016\004\000A\000\130\000\000\001 \000\004D\019a\018\192\000\005\000 \000\000\t\144\000\158\013\192\000\000\000\000\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\018\000\000DA6\017,\000\000P\002\000\000\000\153\000\t\224\220\000\000\000\000\t \000H4\n\003;@\000! \016\004\000A\000\130\000\000\001 \000\004D\019a\018\192\000\005\000 \000\000\t\144\000\158\013\192\000\000\000\000\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\018\000\000DA6\017,\000\000P\002\000\000\000\153\000\t\224\220\000\000\000\000\t \000H4\n\003;@\000! \016\004\000A\000\130\000\000\001 \000\004D\019a\018\192\000\005\000 \000\000\t\144\000\158\013\192\000\000\000\000\146\000\004\131@\1603\180\000\002\018\001\000`\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\t \000H4\n\003;@\000! \016\004\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\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\018\000\000DA6\017,\000\000P\002\000\000\000\153\000\t\224\220\000\000\000\000\t \000H4\n\003;@\000! \016\004\000A\000\130\000\000\001 \000\004D\019a\018\192\000\005\000 \000\000\t\144\000\158\013\192\000\000\000\000\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\018\000\000DA6\017,\000\000P\002\000\000\000\153\000\t\224\220\000\000\000\000\t \000H4\n\003;@\000! \016\004\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$\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\003\173V\128\002\000\008\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\004\138\024\000\000\001\016\000\016\t\001\024\004\000\128!\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\021\002\000\000\000 \000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\018(`\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\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\000D\000\004\002@F\001\000 \008@\000\000\000\153\012@H\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\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\001\"\134\000\000\000D\000\004\002@F\001\000 \008@\000\000\000\153\012@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018(`\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\018(`\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\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\000D\000\004\002@F\001\000 \008@\000\000\000\153\012@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005@\128\000\000\008\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\004\138\024\000\000\001\016\000\016\t\001\024\004\000\128!\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\000L\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\018(`\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\138\024\000\000\001\016\000\016\t\001\024\004\000\128!\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\016\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\004\138\024\000\000\001\016\000\016\t\001\024\004\000\128!\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\000H\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\138\024\000\000\001\016\000\016\t\001\024\004\000\128!\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\000L\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\018(`\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\138\024\000\000\001\016\000\016\t\001\024\004\000\128!\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\001\000\000\000\002\000\000\000\000\000\000\000\018(`\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\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\000D\000\004\002@F\001\000 \008@\000\000\000\153\012@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018(`\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\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\000D\000\004\002@F\001\000 \008@\000\000\000\153\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\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\001\"\134\000\000\000D\000\004\002@F\001\000 \008@\000\000\000\153\012@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018(`\000\000\004@\000D$\004`\016\002\000\132\000\000\000\t\144\197\235U\224\000\128\002\000\000 \128\128\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\000H\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\000\128\002\000\000 \128\128\000\000\000\000 \000\000\000\000\004\000z\213x\000 \000\128\000\008  \000\000\000\000\008\000\001\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\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\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\008\000\000\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\001\235U\224\000\128\002\000\000 \000\140\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\008\128\001\235U\224\000\128\002\000\000 \000\140\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\004\000\000\004\000\000\000\008\000\000\000\000\136\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\128\000\000\000\000\128\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000z\213x\000 \000\128\000\008\000#\000\000\000\000\000\000\001\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\"\000\007\173W\128\002\000\008\000\000\128\0020\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\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\004\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\008\000 \000\002\000\008\192\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\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\008\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\008\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\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\014\181Z\000\008\000 \000\000\000\008\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000@\000\000\000\128\000\000\000\000\000\001\235U\224\000\128\002\000\000 \128\128\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\000H\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\138\024\000\000\001\016\000\017\t\001\024\004\000\128!\000\000\000\002d1z\213x\000 \000\128\000\008  \000\000\000\000\008\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\018(`\000\000\004@\000@$\004`\016\002\000\132\000\000\000\t\144\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\000\000\000\000\000\000\000\000\000\008\128\001\235U\224\000\137\"\000H4\n\131?@\000! \016\004\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\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\000\000\000\000\000\000\146\000\004\131@\1603\180\000\002\018\001\000\000\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\000\000\016@ \128\000\000\000\000\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t \000H4\n\003;@\000! \016\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\146\000\004\131@\1603\180\000\002\018\001\000\000\004\016\008 \000\000\000\000$\128\001 \208(\012\237\000\000\132\128@\000\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\001\002\004Y$\160\000\001\000\000\016\000\003T\004\001\004`\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\000z\213x\000\"H\128\018\013\002\160\207\208\000\008H\004\001\000\016H \128\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\t \000H4\n\003;@\000! \016\004\000A\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\001\000\004X\004\160\000\001\000\000\000\000\003D\000\001\004`\000\000\000\000$\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \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\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\001\000\000\000\000\000 $\128\001 \208(\012\237\000\000\132\128@\000\001\004\002\008\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \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\002H\000\018\013\002\128\206\208\000\008H\004\000\000\016@ \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\004\128\000\016\000E\128J\000\000\016\000\000\000\000$@\000\016\006\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\000\000\016@ \128\000\000H\000\001\000\004X\004\160\000\001\000\000\000\000\002D\000\001\000`\000\000\000\000$\128\001 \208(\012\237\000\000\132\128@\000\001\004\002\008\000\000\004\128\000\016\000E\128J\000\000\016\000\000\000\000$@\000\016\006\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\000\000\016@ \128\000\000H\000\001\000\004X\004\160\000\001\000\000\000\000\002D\000\001\000`\000\000\000\000$\128\001 \208(\012\237\000\000\132\128@\000\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\000\000\016@ \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$\128\001 \208(\012\237\000\000\132\128@\000\001\004\002\008\000\000\004\128\000\016\000E\128J\000\000\016\000\000\000\000$@\000\016\006\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\000\000\016@ \128\000\000H\000\001\000\004X\004\160\000\001\000\000\000\000\002D\000\001\000`\000\000\000\000$\128\001 \208(\012\237\000\000\132\128@\000\001\004\002\008\000\000\004\128\000\016\000E\128J\000\000\016\000\000\000\000$@\000\016\006\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\000\000\016@ \128\000\000H\000\001\000\004X\004\160\000\001\000\000\000\000\002D\000\001\000`\000\000\000\000$\128\001 \208(\012\237\000\000\132\128@\000\001\004\002\008\000\000\004\128\000\016\000E\128J\000\000\016\000\000\000\000$@\000\016\006\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\001\128\016@ \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$\128\001 \208(\012\237\000\000\132\128@\000\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\000\000\016@ \128\000\000H\000\001\000\004X\004\160\000\001\000\000\000\000\002D\000\001\000`\000\000\000\000$\128\001 \208(\012\237\000\000\132\128@\000\001\004\002\008\000\000\004\128\000\016\000E\128J\000\000\016\000\000\000\000$@\000\016\006\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\000\000\016@ \128\000\000H\000\001\000\004X\004\160\000\001\000\000\000\000\002D\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\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\004\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\t \000H4\n\003;@\000! \016\004\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\016\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\016\000\030\181^\000\008\000 \000\002\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\000\000\000\000\000\t \000H4\n\003;@\000! \016\004\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\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\000\137\"\000H4\n\131;@\000! \016\004\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\030\181^\000\008\146 \004\131@\1683\180\000\002\018\001\000@\004\016\008 \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\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\004\000\000\128\000\000\000\000\000\000\000\004\000\000\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000D\000\004B@F\001\000 \008@\000\000\000\153\012^\181^\000\008\000 \000\002\008\008\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\016\000\004\138\024\000\000\001\016\000\016\t\001\024\004\000\128!\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\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\001\000\000H\161\128\000\000\017\000\001\000\144\017\128@\008\002\016\000\000\000&C\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^\181^\000\008\000 \000\002\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\000\128\002\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\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\128\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\031\253\127\004\008\210(\004\003\024\174;\188 \006z\131\000\008\213\016('\173W\128\002\000\008\000\000\128\002\000\000\000\000\000\000\000\000\000\000\000\000\000 \002\001@BD\016\002\024\128\000\t\000\008v\130@\000\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\021\002\000\000\000 \000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\128\008\005\001\t\016@\008b\000\000$\000!\218\t\000\0020\000\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\128P\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\000\002\000 \020\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\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\008\005\001\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\008\005\001\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\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@\128\000\000\008\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000 \002\001@BD\016\002\024\128\000\t\000\008v\130@\000\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\006\000 \020\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\000\000\128\008\005\001\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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 \020\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\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\001@BD\016\002\024\128\000\t\000\008v\130@\000\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\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\128\000\000\000\000\000\000\000 \002\001@BD\016\002\024\128\000\t\000\008v\130@\000\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\002\000 \020\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\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\001@BD\016\002\024\128\000\t\000\008v\130@\000\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\006\000 \020\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\000\000\128\008\005\001\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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 \020\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\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\001@BD\016\002\024\128\000\t\000\008v\130@\000\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\000\000\000\000\000\000\000\000\000\001\000\000\000\002\000\000\000\000\000\000\000\000\128\008\005\001\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\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\008\005\001\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\000\128P\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\002\000\008\000\000\128\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\002\000 \020\004$A\0001\136\000\000\144\000\135h$\000\008\192\000\007\173W\128\002\000\008\000\000\130\002\000\000\000\000\000\128\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\004\000\000\008\000\128P\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\002\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\000\000\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\008\000\000\000\000\000\000\030\181^\000\008\000 \000\002\008\008\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\016\000\000 \002\001@BD\016\002\024\128\000\t\000\008v\130@\000\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\002\000 \020\004$A\0001\136\000\000\144\000\135h$\000\008\192\000\007\173W\128\002\000\008\000\000\130\002\000\000\000\000\000\128\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\004\000\000\008\000\128P\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\235U\160\000\128\002\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\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@\128\000\000\008\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000 \002\001@BD\016\002\024\128\000\t\000\008v\130@\000\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\006\000 \020\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\000\000\128\008\005\001\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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 \020\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\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\001@BD\016\002\024\128\000\t\000\008v\130@\000\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\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\128\000\000\000\000\000\000\000 \002\001@BD\016\002\024\128\000\t\000\008v\130@\000\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\002\000 \020\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001P \000\000\002\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\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\008\005\001\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000 \002\001@BD\016\002\024\128\000\t\000\008v\130@\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\008\005\001\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\000\128P\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\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\008\005\001\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\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\008\005\001\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000 \002\001@BD\016\002\024\128\000\t\000\008v\130@\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\008\005\001\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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 \002\001@BD\016\002\024\128\000\t\000\008v\130@\000\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\002\000 \020\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\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\001@BD\016\002\024\128\000\t\000\008v\130@\000\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\002\000 \020\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\000\000\000\000\000\000\000\002\000 \020\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\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\001@BD\016\003\024\128\000\t\000\008v\130@\000\140\000\000z\213x\000 \000\128\000\008  \000\000\000\000\008\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\128\008\005\001\t\016@\008b\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\002\000\000\000\000\000\000\007\173W\128\002\000\008\000\000\130\002\000\000\000\000\000\128\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\004\000\000\008\000\128P\016\145\004\000\134 \000\002@\002\029\160\144\000#\000\000\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\008\005\001\t\016@\012b\000\000$\000!\218\t\000\0020\000\001\235U\224\000\128\002\000\000 \128\128\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\002\000 \020\004$A\000!\136\000\000\144\000\135h$\000\008\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \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@\013 \128@1\n#\187B\000g\1680\000\140Q\002\130\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\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \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\001\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\000 \000\128\000\008\000 \000 \000\000\008\000\000\000\192!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\000\128\002\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\004\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000@\000\008\000\000\000\000\000\000\t \000H5\n\003{@\000! \016\004\000A\000\130\000\000\000\000\002H\000\016\012\194\128\206\208\000\024H\004\005@\016A \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$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\000\000\t \000H4\n\003;@\000! \016\004\000A\000\130\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\007\173W\128\002$\136\001 \208*\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\000\000\t \000H4\n\003;@\000! \016\004\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\146\000\004\003\000\1603\180\000\006\018\001\000\000\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t \000@0\n\003;@\000a \016\000\000A\000\130\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \158\181^\000\008\146 \004\131@\1683\180\000\002\018\001\000@\004\016\008 \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\t \000@0\n\003;@\000a \016\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\016\000\000@\129\006I(\000\000@\000\004\000\000\133\001\008\000\024\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\030\181^\000\008\146 \004\131@\1683\244\000\002\018\001\000@\004\018\008 \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\002H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\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\004\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t \000H4\n\003;@\000! \016\004\000A\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\002\000\000\000\000\000\000\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\146\000\004\0030\1603\180\000\006\018\001\001P\004\016H \000\000\018\000\000D\1936Y,\000\000P\002\004\000\000\221\001\tA\220\000\000\000\008\t \000@3\n\003;@\000a \016\021\000A\004\130\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\146\000\004\131P\1607\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\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\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\000H\000\001\003\004\025$\176\000\001\000\000\016\000\0034\004$\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\t \000@3\n\003;@\000a \016\017\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$\128\001\000\204(\012\237\000\001\132\128@D\001\004\002\008\000\000\000\000\000\000\000\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\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\004\000\000\016\000A\128J\000\000\016\000\000\000\000 @\002\000\006\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \128\000\000@\000\001\000\004\024\004\160\000\001\000\000\000\000\002\004\000 \000`\000\000\000\000$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\004\000\000\016\000A\128J\000\000\016\000\000\000\000 @\002\000\006\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \128\000\000@\000\001\000\004\024\004\160\000\001\000\000\000\000\002\004\000 \000`\000\000\000\000$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \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$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\004\000\000\016\000A\128J\000\000\016\000\000\000\000 @\002\000\006\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \128\000\000@\000\001\000\004\024\004\160\000\001\000\000\000\000\002\004\000 \000`\000\000\000\000$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\004\000\000\016\000A\128J\000\000\016\000\000\000\000 @\002\000\006\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \128\000\000@\000\001\000\004\024\004\160\000\001\000\000\000\000\002\004\000 \000`\000\000\000\000$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\004\000\000\016\000A\128J\000\000\016\000\000\000\000 @\002\000\006\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \128\000\000@\000\001\000\004\024\004\160\000\001\000\000\000\000\002\004\000 \000`\000\000\000\000$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\004\000\000\016\000A\128J\000\000\016\000\000\000\000 @\002\000\006\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \128\000\000@\000\001\000\004\024\004\160\000\001\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\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$\128\001\000\204(\012\237\000\001\132\128@T\001\004\018\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\016\012\194\128\206\208\000\024H\004\005@\016A \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$\128\001\000\204(\012\237\000\001\132\128@T\001\004\018\008\000\000\000\000\t \000@3\n\003;@\000a \016\017\000A\004\130\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\146\000\004\0030\1603\180\000\006\018\001\001P\004\016H \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\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\004\000\000F\000\000\000\008\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\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\004\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\008\000 \000\002\000\008\192\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\128\000\000\000\000\000\000\000\016\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\146\000\004\131P\1607\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\004\128\000\000\000\000\000\000\000\004\000\000\128\000\000\000\000\000\000\000\001\000\001 \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\001\235U\224\000\128\002\000\000 \000\140\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\008\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\016\000\000\000\000\000\000\000\000\000\000\016\000\002\000\000\000\000\000\000\002H\000\018\013B\128\222\208\000\008H\004\001\000\016@ \128\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\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\014\181Z\000\008\000 \000\000\000\008\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\128\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\016\000\002\000\000\000\000\000\000\002H\000\018\013B\128\222\208\000\008H\004\001\000\016@ \128\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\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\001\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\008\000\000\000\000\000\000\t \000H5\n\003{@\000! \016\004\000A\000\130\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\128!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\007\255_\193\0024\138\001 \212+\142\239\008\001\158\160\192\018=F\026\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \128\000\000\000\000\146\000\004\003\000\1603\180\000\006\018\001\000\000\004\016\008'\173W\128\002$\136\001 \208*\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\146\000\004\003\000\1603\180\000\006\018\001\000\000\004\016\008 \000\000\000\000$\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \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$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\000\000\t \000@0\n\003;@\000a \016\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\018\000\000D\1936Y,\000\000P\002\004\000\000\213\001\001A\220\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\030\181^\000\008\146 \004\131@\1683\244\000\002\018\001\000@\004\018\008 \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\002H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\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\004\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000DA6\017,\000\000P\002\000\000\000\209\000\001A\220\000\000\000\000\t \000H4\n\003;@\000! \016\004\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\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\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\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\004\128\000\017\016M\132K\000\000\020\000\128\000\000$@\000P7\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \128\000\000H\000\001\017\004\216D\176\000\001@\008\000\000\002D\000\005\003p\000\000\000\000$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\004\128\000\017\016M\132K\000\000\020\000\128\000\000$@\000P7\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \128\000\000H\000\001\017\004\216D\176\000\001@\008\000\000\002D\000\005\003p\000\000\000\000$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \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$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\004\128\000\017\016M\132K\000\000\020\000\128\000\000$@\000P7\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \128\000\000H\000\001\017\004\216D\176\000\001@\008\000\000\002D\000\005\003p\000\000\000\000$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\004\128\000\017\016M\132K\000\000\020\000\128\000\000$@\000P7\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \128\000\000H\000\001\017\004\216D\176\000\001@\008\000\000\002D\000\005\003p\000\000\000\000$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\004\128\000\017\016M\132K\000\000\020\000\128\000\000$@\000P7\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\001\128\016@ \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$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \128\000\000H\000\001\017\004\216D\176\000\001@\008\000\000\002D\000\005\003p\000\000\000\000$\128\001\000\192(\012\237\000\001\132\128@\000\001\004\002\008\000\000\004\128\000\017\016M\132K\000\000\020\000\128\000\000$@\000P7\000\000\000\000\002H\000\016\012\002\128\206\208\000\024H\004\000\000\016@ \128\000\000H\000\001\017\004\216D\176\000\001@\008\000\000\002D\000\005\003w\173W\128\002$\136\001 \208*\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\128A \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\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\007\255_\193\2264\138\001\000\198+\142\239\008\001\158\160\192\0025D\n\008\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \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\002H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \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\000A\016\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\127\004\008\210(\004\003\016\174;\188 \006z\131\000\008\213\016('\255_\193\0024\138\001 \212/\142\239\008\001\158\160\192\0185E\n\t\255\215\240x\141\"\128@1\138\227\187\194\000g\1680\000\141Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\255\135\136\210(\004\003\024\190;\188`\006z\147\000\008\245\028k0\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\255\215\240@\141\"\128@1\138\227\187\194\000g\1680\000\141Q\002\130\127\245\252\016#H\160\018\013B\248\238\240\128\025\234\012\001#TP\160\159\253\127\004\008\210(\004\131P\174;\188 \006z\131\000H\213\016h \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\146\000\004\131@\1603\180\000\002\018\001\000@\004\016\008 \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@\013 \128@1\n#\187B\000g\1680\000\140Q\002\130\000\000\000\016\003H \016\012B\136\238\208\128\025\234\012\000#\020@\160\128\000\000\000\000\000\000\000\000\000\000\001\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\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\146\001\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t \016H4\n\003;@\000! \016\004\000A\000\130\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\146\000\004\131@\1603\180\000\002\018\001\000@\004\018\008 \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@\013 \128@1\n#\187B\000g\1680\000\140Q\002\130\000\000\000\016\003H \016\012B\136\238\208\128\025\234\012\000#\020@\160\128\000\000\000\000\000\000\000\000\000\000\001\000\000\000\002\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\008\128\000\000\000\000\000\000\000\000\000\000\000\000\016\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\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\128\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\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\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\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\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\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\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\004\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\008\146 \004\131@\1683\244\000\002\018\001\000@\004\018\008 \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@\013 \128@1\n#\187B\000g\1680\000\140Q\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\008\000\000\000\000\000\000\000\000\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\007\255_\193\0024\138\001 \212+\142\239\024\001\158\160\192\0185D\n\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\253\255\135\136\210(\004\003\024\190;\188`\006z\147\000\008\245\028k0\000\000\000\000\000\000\000\000\000\000\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\031\253\127\004\008\210(\004\003\024\174;\188`\006z\131\000\008\213\016( \000\000\000\000\000\000\000 \016\000\000\000\016\000\000\000\000\016\000\000\000\196\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#H\160\016\012b\184\238\241\128\025\234\012\000#T@\172\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\000\0170M\150K\000\016\020\000\129 \0007@@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\001\000\128@\000\000\000@\000\000\000\000@\000\000\003\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\127\245\252\016#H\160\018\013B\184\238\241\128\025\234\012\001#T@\172\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\255_\193\0024\138\001\000\198+\142\239\024\001\158\160\192\0025D\n\204\000\000\000\000\000\000\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\030\181^\000\008\146 \004\131@\1683\244\000\002\018\001\000@\004\018\008 \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\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\001\000\001\000\000\017\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\008\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\008\000\000\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\001\235U\224\000\128\002\000\000 \000\140\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\008\000\000\000\000\000\000\000\001\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\t \000H5\n\003{@\000! \016\004\000A\000\130\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\001\235U\224\000\128\002\000\000 \000\140\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\008\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\016\000\000\000\000\000\000\000\000\000\000\016\000\002\000\000\000\000\000\000\002H\000\018\013B\128\222\208\000\008H\004\001\000\016@ \128\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\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\014\181Z\000\008\000 \000\000\000\008\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\128\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\016\000\002\000\000\000\000\000\000\002H\000\018\013B\128\222\208\000\008H\004\001\000\016@ \128\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\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\001\255\215\240@\141\"\128H5\n\227\187\198\000g\1680\004\141Q\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@ \016\000\000\000\016\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\127\245\252\016#H\160\018\013B\184\238\241\128\025\234\012\001#T@\160\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\004`\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\016\000\000\000\000\000\000\000\000\000\004\000\000\000\000\001\0004\130\001\000\196(\142\237\008\001\158\160\192\0021D\n\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\001\000\000\000\016\000\000\000\000\000\000\000\000\000\004\000\007\255\127\225\0024\142\0010\212/\142\239\024\003\158\164\1922=GZ\204\000\000\000@\013 \128@1\n#\187B\000g\1680\000\140Q\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\127\004\008\210(\004\003\024\190;\188 \006z\131\000\008\245\028h \000\000\000\000\000\000\000 \016\000\000\000\000\000\000\000\000\016\000\000\000\001\255\215\240@\141\"\128@1\139\227\187\194\000g\1680\000\143Q\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\001\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\255\215\240@\141\"\128H5\011\227\187\194\000g\1680\004\143Q\198\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\127\004\008\210(\004\131P\190;\188 \006z\131\000H\245\028h \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\004\000\000\000\000\000\000\000\000\000\001\000\001\255\215\240@\141\"\128@1\139\227\187\194\000g\1680\000\141QB\130\000\000\000\000\000\000\000\002\001\000@\000\000\000\000\000\000\001\000\000\016\000\031\253\127\004\008\210(\004\003\024\190;\188 \006z\131\000\008\213\020( \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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@\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\001\255\215\240@\141\"\128H5\011\227\187\194\000g\1680\004\141QB\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\016\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\004\000\004\000@F\000\000\000\008\000\000\000\000\016\000\000\000\000\000\000\000\016\000\192@\000\000\000\000\008\000\000\000@\000\001\000\023\255_\193\0024\138\001\000\198+\142\239\008\001\158\160\192\0025D\n\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000D\003\001\000\000\000\000\000 \000\000\001\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\007\255_\193\0024\142\0010\212+\142\239\008\003\158\160\192\0185DJ\013\255\215\240@\141\"\128@1\138\227\187\194\000g\1680\000\141Q\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\007\255_\193\0024\142\0010\212+\142\239\008\003\158\160\192\0185DJ\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\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\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\004\000\000\000\000\000\000\000\000\000\001\000\001\255\215\240@\141\"\128H5\011\227\187\194\000g\1680\004\141QB\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\016\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\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@ \016\000\000\000\016\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\127\245\252\016#H\160\018\013B\184\238\241\128\025\234\012\001#T@\160\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{\245\252\000\"H\160\016\012\002\160\206\240\000\024H\004\000\000T@\160\128\000\000\000\000\146\001\004\131@\1603\180\000\002\018\001\000@\004\016\008 \000\000\000\000\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\030\253\127\000\008\146(\004\003\000\1683\188\000\006\018\001\000\000\021\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\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\007\173W\128\002\000\008\000\000\128\002\000\000\000\000\000\128\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\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\000\000\000\000\000\000\000$\128\001 \212(\013\237\000\000\132\128@\016\001\004\002\008\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\001\000\000\017\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\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\008\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173W\128\002\000\008\000\000\128\0020\000\000\000\000\000\000\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\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\000\000\000\000\000\000\000$\128\001 \212(\013\237\000\000\132\128@\016\001\004\002\008\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\001\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\t \000H5\n\003{@\000! \016\004\000A\000\130\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\003\173V\128\002\000\008\000\000\000\002\000\000\000\000\000\128\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\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\000\000\000\000\000\000\000$\128\001 \212(\013\237\000\000\132\128@\016\001\004\002\008\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\016\000\000\000\000\000\000\000\000\000\004\000\007\191_\192\002$\138\001\000\192*\012\239\000\001\132\128@\000\005D\n\008\000\000\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\012\016d\146\192\004\004\000\000H\000\012P\016\016\017\128\000\000\000\000\000\001\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\t \000H5\n\003{@\000! \016\004\000A\000\130\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\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\001\235U\224\000\137\"\000H4\n\131?@\000! \016\004\000A \130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\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\016\000\016\000\001\024\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\004\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\008\000 \000\002\000\008\192\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\128\000\000\000\000\000\000\000\016\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\146\000\004\131P\1607\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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$\128\001 \212(\013\237\000\000\132\128@\016\001\004\002\008\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\014\181Z\000\008\000 \000\000\000\008\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\128\000\000\000\000\000\000\000\000\000\000\000\000\016\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\146\000\004\131P\1607\180\000\002\018\001\000@\004\016\008 \000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\001\000\000\000\016\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000@\000@\004\004`\000\000\000\128\000\000\000\001\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\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\002\000\000\000\000\000\000\000\000\000\000\001\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\127\245\252\016#H\160\016\012b\184\238\240\128\025\234\012\000#T@\160\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\002H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\007\255_\193\0024\138\001 \212+\142\239\008\001\158\160\192\018=F\026\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\002\016\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 \000\128\000\008\000 \000 \000\000\008\000\000\000\192!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\000\000\000\000\000\000\001\127\245\252\016#H\160\016\012b\184\238\240\128\025\234\012\000#T@\160\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\255_\193\0024\138\001\000\198+\142\239\008\001\158\160\192\0025D\n\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\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\002\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\002H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\000\000\000\000\000\016\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\016\000\000\000\000$\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \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\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$\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\001\000\000\000\000\000\000\000\000\128\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\001\0004\130\001\000\196(\142\237\008\001\158\160\192\0021D\n\008\000\000\000\000\000\001\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\001\000\000\000\016\003H \016\012B\136\238\208\128\025\234\012\000#\020@\160\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\001\0004\130\001\000\196(\142\237\008\001\158\160\192\0021D\n\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\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\002\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\002H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\000\000\000\000\000\016\000\000\000\000\000\000\000\008\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\004\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 \000\128\000\008\000 \000 \000\000\008\000\000\000@\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\023\255_\192\002\000\008\000\000\128\002\000\002\000\000\000\128\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\127\245\252\000 \000\128\000\008\000 \000 \000\000\008\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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$\128\001 \208(\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\001\000\000\000\000\000\000\000\000\128\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\001\235U\225\001\192BD\144!\000\128\000\t\000\008R\130@\000\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\001\000\000\000\000\000\000\000\000 \002\001@BD\016\000\016\000\000\t\000\008v\130@\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\005\001\001\016@\000@\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\000\128P\016\145\004\000\004\000\000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\000\000\000\000\000\000\001\002\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\016\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\128\000\000\000\000\000\000\136\000\000\000\000\000\000\001\002\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\181^\000\028\004$A\002\016\008\000\000\144\000\133 $\000\008\192\000\007\173W\128\007\001\008\000@\132\002\000\000$\000!H\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\128P\016\145\132\000\004\000\000\002@\002\029\160\144\000#\000\000\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\008\005\001\t\016@\000@\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\128\000\000\002\000 \020\004$A\000\001\000\000\000\144\000\135h$\000\008\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\002\004\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\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\000\000\000\000\000\030\181^\000\028\004$\001\002\016\008\000\000\144\000\133 $\000\008@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\235U\224\001\192B\000\016!\000\128\000\t\000\008R\002@\000\132\000\000\000\008\000\128P\016\145\004\000\004\000\000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\016\000\000 \002\001@BD\016\000\016\000\000\t\000\008v\130@\000\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\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 \002\001@BD\016\000\016\000\000\t\000\008v\130@\000\140\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\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\008\005\001\t\016@\000@\000\000$\000!\218\t\000\0020\000\000\000 \002\001@BD\016\000\016\000\000)\000\008v\130@\000\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\000\128P\016\145\004\000\004\000\000\002@\002\029\160\144\000#\000\000\000\002\000 \020\004$A\000!\000\000\002\144\000\135h$\000\008\224\000\000\000\128\008\005\001\t\016@\000@\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\008\000\128P\016\145\004\000\004\000\000\002@\002\029\160\144\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\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\001\235U\224\000\128\002\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 @\007\173W\128\002\000\008\000\000\128\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\001\000\000\002\000 \020\004$A\000!\128\000\000\144\000\135h$\000\008\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\000\000\000\000\000\008\000\128P\016\145\004\000\004\000\000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\000\000\000 \002\001@BD\016\000\016\000\000\t\000\008v\130@\000\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\000\000\003\000\000\000\000\004\000\000\002\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\128\008\005\001\t\016@\004@\000\000$\000!\218\t\000\0020\000\000\000 \002\001@BD\016\000\016\000\000\t\000\008v\130@\000\140\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\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 \020\004$A\000\001\000\000\000\144\000\135h$\000\008\192\000\000\000\128\008\005\193\t\016@\001@\000\000\164\000!\218\t\000\0028\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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 \002\001@BD\016\000\016\000\000\t\000\008v\130@\000\140\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\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\008\021\001\t\016@\000@\000\000$\000!\218\t\000\0020\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\000\129P\016\145\004\000\004\000\000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\000\000\000\001\000\000\000\128\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\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\008\005\001\t\016@\000@\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\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 \020\004$A\000\001\128\000\000\144\000\135h$\000\008\192\000\000\000\128\008\005\t\t\016@\t@\000\000\164\000!\218\t\000\0028\000\000\000 \002\001@BD\016\000\016\000\000\t\000\008v\130@\000\140\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\002\000 \020\004$A\000\001\000\000\000\144\000\135h$\000\008\192\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\008\000\000\000\000\000\000\000\000\000\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\008\005\001\t\016@\000`\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\008\005\001\t\016@\000@\000\000$\000!\218\t\000\0020\000\000\000\000\000\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\008\000\000\000\000\000\000\000\128\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\008\000\000\000\000\000\000\000\000\000\000\000\000\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\004\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\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\008\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\002\000 \020\004$A\000\001\000\000\000\144\000\135h$\000\008\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\008\000\128P\016\145\004\000\004\000\000\002@\002\029\160\144\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\000\000\000\001\000\000\000\128\000\000\000\000\000\000\008\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\002\000 \020\004$A\000\001\000\000\000\144\000\135h$\000\008\192\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\008\000\128P\016\145\004\000\004\000\000\002@\002\029\160\144\000#\000\000\000\002\000 \023\004$A\000\005\000\000\002\144\000\135h$\000\008\224\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173\215\136\007\001\t\016@\132B\000\000$\000!\218\t\000\0020\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\008\000\128P\016\017\004\000\004\000\000\002@\002\029\160\144\000#\000\000\000\002\000 \023$$A\000\005\128\000\002\144\000\135h$\000\008\224\000\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\001@BD\016\000\016\000\000\t\000\008v\130@\000\140\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\004\000\000\000\000\000\000\030\183^ \028\004$A\002\017\136\000\000\144\000\135h$\000\008\192\000\000\000\128\008\005\001\t\016@\000@\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\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 \020\004$A\000\001\000\000\000\144\000\135h$\000\008\192\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\008\000\000\000\000\000\000\000\000\000\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\008\005\001\t\016@\008@\000\000$\000!\218\t\000\0020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\008\000\128P\016\145\004\000\004\000\000\002@\002\029\160\144\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\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\030\181^\016\028\004$I\002\016\008\000\000\144\000\133($\000\008\192\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\002H\000\018\013\003\128\206\208\000\008H\004\001\000\016@ \128\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\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\002H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \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\127\247\254\016#H\160\018\015C\184\238\240\128\025\234L\001#T@\172\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\255\127\225\0024\138\001 \244+\142\239\008\001\158\164\192\0185D\n\205\239\223\248\000\128\002\000\000 \000\128\000\000\000\000\001\000\000\000\000\000\000{\247\254\000 \000\128\000\008\000 \000\000\000\000\000@\000\000\000\000\000\030\253\255\128\008\000 \000\002\000\008\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\004\138\024\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\001\"\134\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000H\161\128\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\018(`\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\031\253\127\007\136\210(\004\003\024\174;\188 \006z\131\000\008\213\016('\255_\193\0024\138\001\000\198+\142\239\008\001\158\160\192\0025D\n\008\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016#H\160\016\012b\184\238\240\128\025\234\012\000#T@\172\192\000\000\000\000\000\000\000\128@\000\000\000\000\000\000\000\000@\000\000\003\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\004\002\001\000\000\000\000\000\000\000\000\001\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\007\255_\193\0024\138\001 \212+\142\239\008\001\158\160\192\0185D\n\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\016\012\194\128\206\208\000\024H\004\005@\016@ \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\001\255\215\240x\141\"\128@1\138\227\187\194\000g\1680\000\141Q\002\130\127\245\252\016#H\160\016\012b\184\238\240\128\025\234\012\000#T@\160\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\007\255_\193\0024\138\001\000\198+\142\239\008\001\158\160\192\0025D\n\204\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#H\160\016\012b\184\238\240\128\025\234\012\000#T@\160\159\253\127\004\008\210(\004\003\024\174;\188 \006z\131\000\008\213\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\030\253\255\128\008\000 \000\002\000\008\000\000\000\000\002\016\000\000\000\000\000\000\018(`\000\000\000\000\000@\000\004`\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\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\024\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\030\181^\000\008\000 \000\002\000\008\192\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\002 \000z\213x\000 \000\128\000\008\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\004\000\000\004\000\000\000\008\000\000\000\000\136\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\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\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\128\001\235U\224\000\128\002\000\000 \000\140\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\128\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\127\245\252\016#H\160\018\013B\184\238\240\128\025\234\012\001#TA\160\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\016\008\004\000\000\000\000\000\000\000\000\004\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\031\253\127\004\008\210(\004\131P\174;\188 \006z\131\000H\213\016+0\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\138\024\000\000\000\016\000\016\000\001\024\000\000\000!\000\000\000\000\0001\000\000\000\000\000\002\002\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\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$\128\001 \2088\012\237\000\000\132\128@\016\001\004\002\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002H\000\018\013\002\128\206\208\000\008H\004\001\000\016@ \128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\255\127\225\0024\138\001 \244;\142\239\008\001\158\164\192\0185D\n\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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#H\160\018\015B\184\238\240\128\025\234L\001#T@\172\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\255\127\225\0024\138\001\000\198+\142\239\008\001\158\164\192\0025D\n\204\000\000\000\000\000\000\000\008\004\000\000\000\000\000\000\000\000\004\000\000\0001\127\247\254\016#H\160\016\012b\184\238\240\128\025\234L\000#T@\172\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\255\127\225\0024\138\001 \212+\142\239\008\001\158\164\192\0185D\n\205\255\223\248@\141\"\128@1\138\227\187\194\000g\1690\000\141Q\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\001\000\128@\000\000\000\000\000\000\000\000@\000\000\003\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\255\223\248@\141\"\128H5\n\227\187\194\000g\1690\004\141Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\031\253\255\132\008\210(\004\131P\174;\188 \006z\147\000H\213\016+0\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\255\223\248@\141\"\128H5\n\227\187\194\000g\1690\004\141Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\161\128\000\000\001\000\001\000\000\017\128\000\000\002\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\001\255\223\248@\141\"\128H5\n\227\187\194\000g\1690\004\141Q\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\001\000\128@\000\000\000\000\000\000\000\000@\000\000\003\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\255\223\248@\141\"\128H5\n\227\187\194\000g\1690\004\141Q\002\179\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\161\128\000\000\001\000\001\000\000\017\128\000\000\002\016\000\000\000\000\003\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\128\001\000\000\000\000\000\000\000\000\004\t\019\192\012\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\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\016\000\000\016\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\001\002\000\000\000\000\000\000\000\008\000\000\000\008\000\000\000\000\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\016 \000\000\000\000\000\000\000\128\000\000\000\128\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\001\000\000\000\000\000\000\000\000\000\000\000\000 \004\000\000\000\000\000\000\128\000\004\008\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\0040\002\000\002\001@\000\000\000\000\000\008\000\000@\128\000\000\000\000\000\000\002\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\016\000\000\000\000\000\000\000\0040\002\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\128\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\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\004p\003\000\000\001\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\016\192\012\000\000\004\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\0040\002\000\000\001\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\000C\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\000C\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\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\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\004p\003\000\000\001\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\001\012\000\192\000\000@\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000C\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\192\008\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0040\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\008\000\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\0040\003\000\000\001\000\000\000\000\008\000\000\000\000\000\000\000\000\000\000\000\001\012\000\128\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000C\000 \000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\192\000\000\000\004\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\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\002\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\002\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")
   
   let action =
-    ((16, "\000\136\000\197\000\000\000\000\000\230\000\197\000\000\000\000\000;\000\000\000\000\000\000\000\199\000\000\000\000\000\000\000\136\000\000\000\240\024*\000\000\018\202\018\202\000\000\000\000+|\018\202\000\000=J\018\202\000\000\000\000\018\202\000\000\018\202\000\000\000\003\000,\018\202\000\000\018\202\000\000\000\000\000\000+\236\018\202\000\000=\134\018\202\000\000\000\000\018\202\000\000\018\202\000\000\000\020\000N\018\202\000\000\018\202\000\000\018\202\000\000=\190\018\202\000\000\000\000\018\202\000\000\018\202\000\000\000\131\000\000\000\000\018\202\000\000\018\202\000\000\000\000\018\202\000\000\018\202\000\000\000p\000\156\018\202\000\000\024*1\014A\200\000\000I\236\001&,\250\001RA\200\000\000\000\198\018\202\000\000J2\000\000\000\131\003N/\144\000\000\000\000;\016\000\000>\148\000\000>\232/\144/\144\020*\020*>\148\020*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000;\156/\144\000\000\000\000;\156\000\000;\156\000\000/\144\000\000\000\000\000\000\023z\000\131\000\000\020*\000\000,J/\144\028>/\144\000\000\000\000\000\000\000\000\000\000\000\000\031\184/\144 \178/\144!\012/\144\"\006/\144\000\000/\144\000\000/\144\"`/\144#Z/\144#\180/\144$\174/\144%\008/\144\0018/\144\000\000\000\000\000\000\000\000\000\000/\144&\002/\144&\\/\144'V/\144\000\000\000\000/\144\000\000\000\000\001\166\000\000\000\000\000\000\000\000\021\156\018\202\000\000\001\142\018\202\000\000=\204\018\202\000\000\000\000\018\202\000\000\018\202\000\000\001\210\002\002\018\202\000\000\018\202\000\000\003x\018\202\000\000?\176\018\202\000\000\000\000\018\202\000\000\018\202\000\000\002\004\002p\018\202\000\000\018\202\000\000\018\202\000\000?\204\018\202\000\000\000\000\018\202\000\000\018\202\000\000\000\131\018\202\000\000\018\202\000\000\018\202\000\000\018\202\000\000\002h\002\198\018\202\000\000=\190A\200\002\140\018\202\000\000J\242J^\000\000\002r\003Z\000\131\002\180\003\208\029\228\000\000\000\000\000\247K\160\000\000\000\000\000\000\000\000\0010\003\206\000Q\0042\029\228\000\141\029\228\000\000\000\000\003\128\000\000\003\174\004\168\029\228\003\246\000\000\000\000\000\000\000\247\000\000\004\014\005\n\000\000\005D\000\000\021\156\001\164A\200\004\150\018\202\000\000=\204A\200\004\218\018\202\000\000\000\000\000\131\005\202\000\000\000\000\000\000\001*\020*\000\000/\144\005\028\000\000\000\000\000\131\000\000\000\000\000\000\000\000\000\000\0056\000\000\000\000\005v\000\000\005z>\148\000\000\000\000\000\000\000\000\000\000\000\000@\202/\144\000\000@\202\000\000@\202>\148\000\000\000\000A\024\000\131\000\000\020*\005\136\000\000/\144\005\200\000\000\000\000\000\131\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000.\006/\144\000\000/\144\000\000\000\000\005\216\000\000\000\013<(\006\144/\144\006j\000\000\000\000>\148\000\013\000\000\000\000\000\000\000\000\000\000:\192>\148L*>\148L`>\148L\164>\148\000\000>\148\000\000>\148M\022>\148M`>\148M\164>\148M\238>\148N2/\144\006B>\148\000\000>\148N|>\148N\192>\148O\n\006N\000\000\006d\000\000\000b/\144\000\000\000b\000\000\000\000\000\152\024*\000\000\000\152\000\000\000\000\006h/\144\000\000\006l\000\000\020*\006l\000\000\000\000\0078\000\000\020*\006p\000\000\000\000\006n\000\000\000\000\003N\000\000\007V\000\000?\176A\200\006z\018\202\000\000\000\000\006\252\000\000\006\138\018\202\000\000\000\000\000v\024*\000\000\024*\000\000\006\136\000\000\000v\000\000\016~\027\142\018\186\000\000\003\186\018\186\000\000\018\186\018\186\000\000\000\000\018\186\000\000\018\186\000\000\006\202\006\246\018\186\000\000\018\186\000\000\005\174\018\186\000\000\018\202\018\186\000\000\000\000\018\186\000\000\018\186\000\000\006\206\006\252\018\186\000\000\018\186\000\000\018\186\000\000\018\206\018\186\000\000\000\000\018\186\000\000\018\186\000\000\000\131\018\186\000\000\018\186\000\000\018\186\000\000\018\186\000\000\006\212\007\000\018\186\000\000\024*\006\184\000\000\018\186A\200\006\178\018\186\000\000\000\000\000\166\000\000\002\022\000\166\000\000\000\000\000\000\007\154\000\000\002\158A\200\006\186\018\186\000\000\018\202A\200\006\196\018\186\000\000\000\000\026\140\018\186\000\000\006\000\018\186\000\000\018\216\018\186\000\000\000\000\018\186\000\000\018\186\000\000\006\244\007\"\018\186\000\000\018\186\000\000\006|\018\186\000\0001\018\018\186\000\000\000\000\018\186\000\000\018\186\000\000\006\250\007&\018\186\000\000\018\186\000\000\018\186\000\0001F\018\186\000\000\000\000\018\186\000\000\018\186\000\000\000\131\018\186\000\000\018\186\000\000\018\186\000\000\018\186\000\000\007\004\0070\018\186\000\000\018\206A\200\006\220\018\186\000\000\000\000\004\016A\200\006\226\018\186\000\0001\018A\200\006\230\018\186\000\000\000\000\000\000\000\000\000\000\000\000\007\176/\144\006\244\021\156\007\206/\144\007\020\007\222/\176\000\000\000\000,\250\000\131\000\000\0024/\144(t\000\000A\202/\144\007,\000\000\020*\007,\000\000\0070\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000BV/\144\000\000BV\000\000BVB\170\020*\0072B\170\000\000\000\000K\254\000\131\000\000\020*\0074\000\000/\144\0076\000\000\000\000\000\131\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000/\144\001\234/\144\007:\000\000\000\000)*\025\220'\162\007\242/\144\000\000\007\188\000\000\000\000\000\131\000\000\000\000\024\218\007~ \004\000\000\007z \004\000\000\002\162\000\000\000\000+RB\170B\254B\170ONB\170O\152B\170\000\000B\170\000\000B\170O\188B\170P B\170PjB\170P\160B\170P\210B\170P\246B\170QLB\170Q\162\000\000\007V\000\000\007f)\224\000\000*\150\007h*\150-&\007j*\150\000\000\000\000\000\000\000\000\000\000\007^\000\000\008D\000\000\000\131\000\000\0024\008F\000\000\001~\008\022\000\131\007p\0084\029\228\007|\002\212\000\000/\144\008`\000\000\007R\007T\008D\029\228\007\138\008j\000\000\003`/\144\008l\000\000\008r\000\000\021\156\000\131\003v/\144\008v\000\000\008~\000\000\000\131\003\148/\144\008\128\000\000\008\130\000\000\000Q\007\212\006\222\000\000C6C\138\020*\007\180\000\000\007\190C\138\000\000\000\000\000\000\000\000\000\000\000\000D\022/\144\000\000D\022\000\000D\022C\138\000\000\000\000\026\222\000\131\000\000\020*\007\192\000\000/\144\007\192\000\000\000\000\000\131\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000-\208/\144\000\000/\144\000\000\007\202\000\000\000b\000\000\000\000\000\000\000\000\000\0002\018C\1382BC\1383LC\1383|C\138\000\000C\138\000\000C\1384\134C\1384\182C\1385\192C\1385\240C\1386\250/\144\007\242C\138\000\000C\1387*C\13884C\1388d\020*\007\204\000\000\000\000/\144\000\000\008\172\000\000\001^\008\130/\144\008N\000\000\008\136/\144\008R\000\000\004\030\000\000\006\222\006\222\001^\000\000\001^\000\000\016~\006\222\006\222\000\000\000\000\000\000\000\000\000\000\000\000\008\160/\144\007\236\021\156\022\138\000\131\008\206\000\000\008\1809^\008\2149^\008\216/\144\008\n\021\156\021\156\000\131\002`\003\228\000\000\000\000\000\000\002`\000\000\003\020\000\131\000\000\000\000\008\012\000\000\000\000\000\000\008\236\000\000\008\238\000\000\000\000\t&\008\214/\144\008\028\t\004\000\000\008\232\020*\008.\021\156\000\000\000\000\008Z\000\000\000#\000\000\005~\000\000\001^\000\000\008\174\000\000\012^\000M\000\000\012^\000\000\000\000\024\218\000\000\002\174\000\000\000\000\t\158\000\000\012^\000\000\008\244\020*\008:\t\026\000\000\000%\000\000\008\234\000\131\008B\t\002\029\228\008H\002\216\000\000/\144\t*\000\000\t\012\029\228\008R\t2\000\000\004~/\144\tN\000\000\tR\000\000\021\156\000\131\004\214/\144\tb\000\000\td\000\000\000\000\000\000\t\158\000\000\000\000\000#\000\000\006\222\000\000\000%\000\000\000\000\003\228\022\138\000\000\003\228\000\000\000\000\008\138\000\000\000\174\000\003\021\156\000\000\004\030\000O\004\030\000\000\000#\000\000\006\222\000\000\006\222\000\000\000\000\000\000\008\132\000\000\000\000\008\142\000\000\003\240\005~\002\026\004\030\000\000\000\000\000\000\002\026\000\000\006\222\000\000\003\240\000\000\000\000\001\178\000\015\016~\000\000\000\015\000\000\008>\016~\000\000\000\000\008>\000\000\000\000\008\142\000\000\000\000\008\148\000\000\004\002\006\222\000\000\004\002\000\000\000\000\t\014\000\000\000#\000\000\006\222\000\000\000\000\000\000\017\2109\178\000\000\tv\000\000\017\210\tx\000\000\t|\000\000,\250\000\131\005\018\000\000/\144\t\136\000\000\004B\tX\000\131\008\176\tp\029\228\008\180\005\148\000\000/\144\t\154\000\000\005\152\000\000/\144\t\156\000\000\021\156\000\131\006P\000\000/\144\t\158\000\000\004\164\017\210\000\000\024\218\006^\000\000/\144\t\160\000\000\000\000\000\000\001\192\000\000\t\130\020*\008\198\t\166\000\000\005\210\000\000\tv\000\131\008\206\t\142\029\228\008\212\006\142\000\000/\144\t\180\000\000\006\168\000\000/\144\t\182\000\000\021\156\000\131\006\224\000\000/\144\t\184\000\000\004\164\000\000\000\000\008\222\000\000\001\192\005\210\t\\\000\000\000\000\000\000\t`\000\000\000P\000\174\000\000\016~\t\182\000\000\000\000/\144\t\024\006\222\000\000\008\238\000\000\000Q\000\000/\176\000\000\000\000\000x\016~\000\000\016~\000\000\008\222\000\000\000x\000\000/\144\002&/\144\000\000/\144\000\000\008\230\000\000\002&\000\000/\144\002&\008\232\000\000\021\156\002\240\021\156\000\000\021\156\000\000\008\234\000\000\002\240\000\000/\144\002&\008\242\000\000,\250\003\152,\250\000\000,\250\000\000\008\250\000\000\003\152\000\000/\144\002&\t\004\000\000\000\000\024\218\000\000\000\000\tr0T\000\000\000\000\000\000\000\000\000\000\tH\004\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000e0T\000\000\004*\005\156\000\000\tN\000\197\000\000\000\000\000\000\003 \005\156\000\000\000\000\000\000\000\000\t\170\000\000\000\000\000\000\000\000\028>\029\158\000\000D\200\000\0000T\000\000\00140T\000\000\001\178\000\t\000\t\000\000\004r\000\t\000\000\t&\000\000\000\000\000\000\000\000\t\174\000\000\030\158\000\000\03120T\000\000\005\0200T\000\000\t\176\000\0000T\t\178\000\000F\220:~\t\180\000\000\t\182\000\000G6<\1940T\t40T\t\186\000\000\t\192\000\000\t\194\000\000\024*\000\000\005\n\024*\000\000\tF\018\186\000\000\000}0T\000\000\003\1920T\000\000\003\184\nF\000\000\nJ\000\0000T0T\tP\000\000\000\000\000\000\000\000\000\000\000\000\t\216\000\000G\2200T\t\218\000\000\t\220\000\0000T\t\226\000\0000T\t\138\000\197\000\000\000\000\004\0300T\000\000\003\184\000\000\t\230\000\0000T\t\232\000\000E6:~0T\tf0T\t\236\000\000\t\238\000\000E\220\000\000\000\000\005\2060T\000\000\005\030\002\178\000\129\000\000\000\000\000\000\005*\000\129\000\000\tj\000\000\000\000\000\000\000\0000T\000\000\006\0120T\000\000\007>\002\142\000\197\tl\000\000\000\000\000\000\000\000\000\000\000\000\t\246\000\000\t\248\000\0000T\t\252\000\000H60T\t\254\000\000\n\000\000\000\0212\t\172H\176.r\000\0000T\n\n\000\000\n\014\000\000\t\224\02120T\n\020\000\0000T\n\022\000\000\n\026\000\000F6\t\1520T\n\030\000\000\n \000\000\000\197\t\144\000\000\000\000\024\218\000\000\000\000\002b\nz\000\000\000\000\004\238\000\000\000\000\000\000/\144\000\000\000\000\000\000\002\190\000\000\005F\000\000\000\000\000\000\004\030A\200A\200A\200\000\000\005\202\005\202\005\202\005\202\000\000\000\000\000\000\000\000\000\000\000\000\001^\016~\nr\013\190\000O\000\000\000\000\001$\000\000\t\158\000\000 \004\t\166\000\000\001^\016~\t\176\015\030\000\000\001^\013\190\000\000\000\000\000\000A\200\014\002\000\000\000\000\000\000\t\250\000\129\n\142J\242\000\000\005BK\204\000\000\000\000\000\000\001R\n\146\000\131\000\000\005B\000\000\006\014J\242\000\000\000\000\t\232\n\160\006\222\t\230\000\000\001$\000\000\t\158\000\000D\140\006Z\000\000\000\000\n\142\000\000\000\000\002b\000\000\005\226\000\000\000\000\000\000/\144\000\000\002\190\000\000\005\238\000\000\000\000\000\000\005~\000\000\n\254\002\178\n\254\000\000\006\222\n\254\000\000\004\014\000\000\006\222\000\000\006\222\000\000\006\222\000\000\011B\000\000\000\000\000\000\000\000\000\000\006\222\000\000\004\014\000\000\006\222\000\000OD\000\000\000\000\008>\n\026\000\197\006\n\n\182\005h\000\000\005h\n\222\000\000\n\224\000\000\n\226\000\000\000\000\006\016\005h\006\024\005h\000\000\000\000\008\216\t\236\000\000\n(\000\197\006\n\t\240\000\000\004\170\n\244\000\000\006\n\007\176\011\008\006L\011\008\000\000\000\000\002\140\000\197\000\000\000)\000\000\000\000\001L\000\000\n\002\000\000\000\000\000\000\nF\000\197\006\n\n\014\000\000\000\000\004\170\006\n\007\176\002\140\000)\001L\n\016\000\000\006\n\007\176\002\140\000)\001L\n\018\000\000\000\197\000\000\011\024\007<\nT\000\197\n\176\000\000\nX\000\197\n\180\000\000"), (16, "\011\233\011\233\011\233\011\233\011\233\011\233\011\233\011\233\011\233\011\233\011\233\000&\011\233\011\233\011\233\011\233\011\233\011\233\011\233\011\233\011\233\011\233\014\218\014\218\001\230\000\n\011\233\001\"\001\238\001\242\000*\015\014\015\014\011\233\016\134\016\022\004^\011\233\011\233\011\233\005\249\007\193\011\233\021\"\014\218\016\022\011\233\011\233\011\233\011\173\016\138\023\202\001\"\015\014\014\218\007\193\006y\011\233\000\n\000\n\011\233\011\233\008y\015\014\012\141\022\206\011\233\011\233\022\002\011\233\001\230\011\233\0007\000;\012\226\001\242\011\233\015\138\011\233\011\233\011\233\011\233\011\233\000\n\017*\012\141\011\233\011\233\011\233\004\138\011\233\011\233\011\233\003i\011\233\011\233\011\233\011\233\003\237\000\006\000\"\011\233\011\233\016\"\016\"\000\n\007\193\007\150\020.\021~\027\218\013V\011\233\011\233\011\233\004u\027\222\011\233\011\233\011\233\011\233\019\254\011\233\004~\011\233\016\"\005\233\011\233\015\002\006\222\011\233\011\233\012\141\012\141\012\141\016\"\006\026\012\141\012\141\016\022\017Z\011\233\011]\000\150\011\233\000\154\011\133\011\133\011\233\011\233\011\233\011\233\004u\011\233\000\226\011\233\006\246\007\193\006y\011\233\011\233\011\233\000\230\011\233\008\210\011\233\011\233\006\222\011\233\007\193\011\233\011\233\007\158\0206\011\233\011\233\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\000.\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\006\129\016\022\019\230\001R\001V\006\129\014\222\014\238\014\254\000\n\014\218\003:\006\129\003B\006Q\003R\006\129\006\129\006\129\015\014\018V\006\129\003Z\004v\001v\006\129\018Z\006\129\000N\007\182\020N\020v\020\134\020\174\020\190\020\230\006\129\011\133\006!\0069\026\018\006I\006\025\006\025\001~\006\129\006\129\001\"\011\133\003b\006\129\006\129\006Q\011\133\011\133\006\129\011\189\006\129\006\129\006\129\006\129\006\129\012\182\019\210\001\"\006\129\006\129\006\129\001\138\006\129\006\129\006\129\016\134\006\129\006\129\006\129\006\129\000\022\000\n\0192\006\129\006\129\001\230\003r\011\133\004\222\012\226\001\242\016\138\011\133\011\133\016\"\006\129\006\129\021\254\000\n\006\129\006\129\006\129\006\129\006\246\006\129\002\206\006\129\027\230\001\"\006\129\006\222\001\230\006\129\006\129\005\030\012\226\001\242\0039\004e\021\242\000\n\0039\006\177\012\141\012\141\011\197\006\129\016\022\012\141\020V\006\129\006\129\006\129\006\129\0039\006\129\014\218\006\129\0039\000\n\011m\006\129\006\129\006\129\005y\015\014\000\n\006\129\006\129\006\153\006\129\006\153\006\129\006\129\006\153\004\213\006\129\006\129\006\153\006\153\006\153\006\153\006\153\006\153\006\153\006\153\006\153\006\153\006\153\006\153\006\153\006\153\006\153\006\153\006\153\006\153\006\153\006\153\006\153\006\153\003\026\006\153\006\177\003f\006\153\006I\003j\004>\006\153\024\242\006\153\006\153\006Q\011v\020^\006\153\006\153\006\153\006\153\006\153\006\153\016\022\006\153\006\153\006\153\024\018\006\153\006\153\003\170\006\153\014\218\001\"\014\218\008\246\011n\006\153\011\130\016\"\006\153\015\014\012\210\015\014\016\166\023\198\006\153\006\153\006\153\006\153\n\158\006\153\020\142\006\153\008\218\001\"\006\153\024\242\006\153\004\213\006\153\006\153\006\153\003\174\000\n\006\153\006\153\006\153\006\153\012\158\006\153\006\153\006\153\012\141\006\153\006\153\006\153\006\153\000\n\0061\004\014\003~\006\153\003\134\006\145\003\150\000\n\006\153\023\202\006\145\006\145\015\142\003\158\006\153\006\153\006\017\000\n\006\153\006\153\006\153\006\153\027\206\006\153\005\225\006\153\006\t\004\018\006\153\006\153\011\170\006\153\006\153\011m\016\"\007\202\016\"\007\210\020\150\007\226\003\166\004&\006\153\001\162\011m\006\153\007\234\006\145\011\205\006\153\006\153\012\214\006\153\016\170\006\153\004B\006\153\020\198\004J\011m\006\153\022\230\022\238\012\141\012\141\008\177\008\177\006\153\012\141\006\153\008\177\006\153\006\153\007\242\003\182\006\153\006\153\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\021\014\001\014\025:\001\022\nZ\001\030\0012\001:\001>\n^\025>\022\246\021\018\006A\015\170\nb\021\170\004N\003\241\008\002\011\205\021\022\001F\021\026\005\225\004z\001\166\nr\013^\015\002\021\030\013b\016\022\013\002\020\206\001N\008\149\014\202\021*\0176\011\157\014\218\021.\005\225\013\"\017\170\001\178\005\225\0212\025r\015\014\001\"\012\158\n*\018*\015\"\013j\025\158\025\170\013>\015&\017f\015\006\012\158\0216\001\218\004\130\001\222\004\177\001b\016\030\015.\004\154\001\"\018\166\013~\001\230\0152\012\158\013\130\011\138\001\242\000\n\013\134\013\138\n\134\013\142\011\165\011m\021:\004\129\0156\021>\n\225\001\230\004\162\008\149\006)\012\226\001\242\022\218\015\146\n\226\013\146\000\n\021B\015:\015>\013\150\015B\021F\000\n\021J\015V\021N\021R\004\141\021V\018V\015b\013\158\006q\016\"\021Z\018Z\004\166\021^\006Y\018^\000\n\025\190\004\174\011m\015\130\021\138\019\006\006a\015\134\015\194\004\177\n\138\021b\013\162\004\198\015\198\021f\021j\023^\013\166\004\177\004\177\008\177\008\177\n\225\004\177\015\206\008\177\013\170\004\202\006\161\006\161\019\210\018\146\002\"\006\161\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\016\206\001\014\025:\001\022\nZ\001\030\0012\001:\001>\n^\025>\004\210\004\129\022\014\023\194\nb\027\166\004\129\004\129\012\158\011}\008\014\001F\008\022\027F\008&\001\166\nr\013^\004\129\004\129\013b\008.\nR\011\141\001N\nV\014\202\004\230\006\169\025N\006i\nZ\021\142\016\238\027J\001\178\n^\025R\014\218\021\146\018\194\027N\018\214\004\129\015\"\013j\025\158\015\014\0086\015&\017\174\t.\012\158\t6\001\218\tF\001\222\004\193\001b\016\030\015.\004\250\tN\018\150\013~\001\230\0152\005\014\013\130\011\138\001\242\019N\013\134\013\138\n\134\013\142\025\003\025\007\022\182\004\017\0156\025\011\008F\022J\021\158\011e\004\013\019R\006\169\tV\011\141\n\226\013\146\005.\023\218\015:\015>\013\150\015B\006\246\000\n\011u\015V\027V\005R\004\141\025\254\001\230\015b\013\158\005\241\012\226\001\242\tr\027n\tz\011\181\t\138\004\013\016\"\025+\025/\015\130\tf\t\146\0253\015\134\015\194\018\198\n\138\018\218\013\162\026c\015\198\018\242\027^\005^\013\166\005f\004\193\026g\019\022\000\n\004\161\015\206\005\186\013\170\011\149\006\185\006\185\026j\t\154\002\"\006\185\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\019n\001\014\025:\001\022\nZ\001\030\0012\001:\001>\n^\025>\023\182\004\017\019\130\005\198\nb\006I\004\017\004\017\004\013\t\170\006\018\001F\006\"\004\013\004\013\001\166\nr\013^\004\017\027>\013b\006*\026\131\026\135\001N\004\013\014\202\026\139\026\163\026\167\019\158\024\002\026*\026\171\011U\001\178\003]\027~\014\218\011U\011U\004\013\006\170\004\017\015\n\013j\018\246\015\014\027v\015&\004\013\011U\027v\019\026\001\218\028^\001\222\004\221\001b\015*\015.\022\230\022\238\027\190\013~\001\230\0152\006\206\013\130\011\138\001\242\028n\013\134\013\138\n\134\013\142\011U\019r\006\214\012\149\0156\007\014\007\026\007&\0072\007>\007J\005\013\005\t\007^\019\134\n\226\013\146\007n\007~\015:\015>\013\150\015B\024\014\000\n\007\134\015V\004\241\004\237\004\141\005\013\005\t\015b\013\158\007\171\007\246\007\250\008:\027\182\008>\008\158\008\162\019\162\016\"\008\178\008\194\015\130\008\238\008\141\008\254\015\134\015\194\004\221\n\138\t\018\013\162\tZ\015\198\t^\t\158\t\162\013\166\004\221\004\221\n\002\n\006\n\026\004\221\015\206\n2\013\170\nF\008\185\008\185\nf\nn\002\"\008\185\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\nv\001\014\n~\001\022\nZ\001\030\0012\001:\001>\n^\005\013\005\t\n\130\n\182\n\194\nb\n\202\011\014\011.\008\141\004\129\011:\001F\011~\011\150\011\162\001\166\nr\013^\005\013\005\t\013b\011\190\011\202\0272\001N\007\201\014\202\012R\012Z\012j\012v\012\146\012\154\012\174\012\186\001\178\006\137\012\194\014\218\007\201\012\198\006\137\006\137\012\206\015\n\013j\012\222\015\014\012\238\015&\012\246\012\250\013\n\006\137\001\218\013\018\001\222\013*\001b\015*\015.\0132\013F\013N\013~\001\230\0152\013Z\013\130\011\138\001\242\013r\013\134\013\138\n\134\013\142\013z\013\206\006\137\013\218\0156\014\"\014\154\014\194\014\214\014\226\004\021\014\234\014\242\014\250\007\201\n\226\013\146\027\142\015F\015:\015>\013\150\015B\015N\000\n\015^\015V\027\162\015f\015n\015v\004\129\015b\013\158\027\250\027\166\004\129\004\129\015~\015\186\015\202\015\210\027n\016\"\015\222\015\226\015\130\015\234\004\129\004\129\015\134\015\194\015\238\n\138\015\246\013\162\015\254\015\198\016\014\016.\016r\013\166\016z\016~\016\142\007\201\016\150\016\154\015\206\016\162\013\170\016\178\016\186\004\129\016\194\016\198\002\"\007\201\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\016\214\001\014\016\222\001\022\nZ\001\030\0012\001:\001>\n^\016\246\016\254\017N\017\150\017\162\nb\018\022\018\"\018B\004\021\018n\018z\001F\018\130\004\021\004\021\001\166\nr\013^\018\158\018\170\013b\018\178\018\182\018\190\001N\004\021\014\202\018\206\018\226\018\254\019\"\019:\019B\019F\019V\001\178\019^\019b\014\218\019j\019z\019\142\019\170\019\190\015\n\013j\019\206\015\014\019\222\015&\004\021\019\246\027v\020\006\001\218\020\018\001\222\020C\001b\015*\015.\020k\020\131\020\163\013~\001\230\0152\020\187\013\130\011\138\001\242\020\219\013\134\013\138\n\134\013\142\020\243\021\n\021&\012\149\0156\021\150\021\195\022\026\022/\022W\022c\022s\022{\022\142\022\151\n\226\013\146\022\159\022\167\015:\015>\013\150\015B\022\194\000\n\022\234\015V\022\242\023\002\023\031\023/\0237\015b\013\158\023C\023N\023s\023\127\023\146\023\155\023\163\023\230\024\026\016\"\0247\024?\015\130\024K\024[\024c\015\134\015\194\024n\n\138\024\131\013\162\024\139\015\198\024\146\024\159\024\171\013\166\024\179\024\190\024\199\024\207\024\219\024\246\015\206\025~\013\170\025\166\012\149\012\149\025\182\025\234\002\"\012\149\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\025\242\001\014\025:\001\022\nZ\001\030\0012\001:\001>\n^\025>\026\022\026:\026>\026F\nb\026o\0276\027B\027R\027Z\027b\001F\027\139\027\146\027\159\001\166\nr\013^\nR\027\170\013b\nV\027\186\027\239\001N\025N\014\202\nZ\027\254\028\011\028/\028K\n^\025R\028Z\001\178\028b\028k\028r\028{\000\000\000\000\000\000\000\000\015\"\013j\000\000\000\000\000\000\015&\026\186\000\000\000\000\000\000\001\218\000\000\001\222\000\000\001b\016\030\015.\000\000\000\000\016\134\013~\001\230\0152\000\000\013\130\011\138\001\242\000\000\013\134\013\138\n\134\013\142\000\000\000\000\000\000\016\138\0156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\226\013\146\000\000\000\000\015:\015>\013\150\015B\001\230\000\n\000\000\015V\012\226\001\242\004\141\000\000\000\000\015b\013\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\015\130\000\000\000\000\000\000\015\134\015\194\000\000\n\138\000\000\013\162\000\000\015\198\000\n\000\000\000\000\013\166\000\000\004\161\000\000\000\000\000\000\000\000\015\206\000\000\013\170\000\000\008\157\008\157\000\000\000\000\002\"\008\157\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\000\000\001\014\000\000\001\022\nZ\001\030\0012\001:\001>\n^\000\000\000\000\000\000\000\000\000\000\nb\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\001\166\nr\013^\000\000\000\000\013b\000\000\000\000\000\000\001N\000\000\014\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\"\013j\000\000\000\000\000\000\015&\0166\000\000\000\000\000\000\001\218\000\000\001\222\000\000\001b\016\030\015.\000\000\000\000\000\000\013~\001\230\0152\000\000\013\130\011\138\001\242\000\000\013\134\013\138\n\134\013\142\000\000\000\000\000\000\012q\0156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\226\013\146\000\000\000\000\015:\015>\013\150\015B\000\000\000\n\000\000\015V\000\000\000\000\000\000\000\000\000\000\015b\013\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\015\130\000\000\000\000\000\000\015\134\015\194\000\000\n\138\000\000\013\162\000\000\015\198\000\000\000\000\000\000\013\166\000\000\000\000\000\000\000\000\000\000\000\000\015\206\000\000\013\170\000\000\012q\012q\000\000\000\000\002\"\012q\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\000\000\001\014\000\000\001\022\nZ\001\030\0012\001:\001>\n^\000\000\000\000\000\000\000\000\000\000\nb\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\001\166\nr\013^\nR\000\000\013b\nV\000\000\000\000\001N\025N\014\202\nZ\000\000\000\000\000\000\000\000\n^\025R\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\"\013j\000\000\000\000\000\000\015&\025\130\000\000\000\000\000\000\001\218\000\000\001\222\000\000\001b\016\030\015.\000\000\000\000\000\000\013~\001\230\0152\000\000\013\130\011\138\001\242\000\000\013\134\013\138\n\134\013\142\000\000\000\000\000\000\012\182\0156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\226\013\146\000\000\000\000\015:\015>\013\150\015B\001\230\000\n\000\000\015V\012\226\001\242\000\000\000\000\000\000\015b\013\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\015\130\000\000\000\000\000\000\015\134\015\194\000\000\n\138\000\000\013\162\000\000\015\198\000\n\000\000\000\000\013\166\000\000\004\161\000\000\000\000\000\000\000\000\015\206\000\000\013\170\000\000\012\189\012\189\000\000\000\000\002\"\012\189\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\000\000\001\014\000\000\001\022\nZ\001\030\0012\001:\001>\n^\000\000\000\000\000\000\000\000\000\000\nb\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\001\166\nr\013^\000\000\000\000\013b\000\000\000\000\000\000\001N\000\000\014\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\"\013j\000\000\000\000\000\000\015&\025\130\000\000\000\000\000\000\001\218\000\000\001\222\000\000\001b\016\030\015.\000\000\000\000\000\000\013~\001\230\0152\000\000\013\130\011\138\001\242\000\000\013\134\013\138\n\134\013\142\000\000\000\000\000\000\000\000\0156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\226\013\146\000\000\000\000\015:\015>\013\150\015B\000\000\000\n\000\000\015V\000\000\000\000\000\000\000\000\000\000\015b\013\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\015\130\000\000\000\000\000\000\015\134\015\194\000\000\n\138\000\000\013\162\000\000\015\198\000\000\000\000\000\000\013\166\000\000\000\000\000\000\000\000\000\000\000\000\015\206\000\000\013\170\000\000\012\185\012\185\000\000\000\000\002\"\012\185\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\000\000\001\014\000\000\001\022\nZ\001\030\0012\001:\001>\n^\000\000\000\000\000\000\000\000\000\000\nb\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\001\166\nr\013^\000\000\000\000\013b\000\000\000\000\000\000\001N\000\000\014\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\"\013j\000\000\000\000\000\000\015&\017\226\000\000\000\000\000\000\001\218\000\000\001\222\000\000\001b\016\030\015.\000\000\000\000\000\000\013~\001\230\0152\000\000\013\130\011\138\001\242\000\000\013\134\013\138\n\134\013\142\000\000\000\000\000\000\000\000\0156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\226\013\146\000\000\000\000\015:\015>\013\150\015B\000\000\000\n\000\000\015V\000\000\000\000\000\000\000\000\000\000\015b\013\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\015\130\000\000\000\000\000\000\015\134\015\194\000\000\n\138\000\000\013\162\000\000\015\198\000\000\000\000\000\000\013\166\000\000\000\000\000\000\000\000\000\000\000\000\015\206\000\000\013\170\000\000\000R\000V\000f\000\170\002\"\000\174\nR\000\178\000\246\nV\000\254\000\000\001\014\000\000\001\022\nZ\001\030\0012\001:\001>\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\001F\000\000\000\000\000\000\001\166\000\000\013^\000\000\000\000\013b\000\000\000\000\000\000\001N\000\000\018b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018r\013j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\001b\000\000\000\000\000\000\000\000\000\000\013~\001\230\000\000\000\000\013\130\001\238\001\242\000\000\013\134\013\138\n\134\013\142\000\000\000\000\000\000\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\226\013\146\000\000\000\000\000\000\000\000\013\150\000\000\000\000\000\n\000\000\000\000\000\000\007\214\005\217\000\000\000\000\005\217\013\158\000\000\005\217\008\026\005\217\008Z\005\217\000\000\005\217\000\000\t:\005\217\000\000\005\217\005\217\000\000\005\217\005\217\005\217\005\217\n\138\000\000\013\162\005\217\018v\005\217\005\217\005\217\013\166\005\217\000\000\005\217\005\217\000\000\005\217\018~\005\217\013\170\005\217\005\217\005\217\005\217\005\217\002\"\005\217\000\000\005\217\000\000\005\217\005\217\000\000\000\000\005\217\005\217\005\217\005\217\008\186\000\000\000\000\005\217\005\217\000Z\000\000\005\217\t\n\005\217\n\018\000\000\005\217\000Z\005\217\000Z\005\217\005\217\000\000\005\217\000Z\000\000\000\000\000\000\005\217\000\000\000\000\000\000\005\217\005\217\000\000\000\000\005\217\000\000\000\000\000\000\000\000\005\217\005\217\005\217\005\217\000\000\005\217\000\000\005\217\005\217\000\000\005\217\000\000\005\217\005\217\005\217\005\217\005\217\005\217\005\217\000\000\005\217\005\217\005\217\005\217\005\217\005\217\005\217\005\217\005\217\005\217\005\217\000\000\005\217\005\217\005\217\005\217\005\217\005\217\000\000\005\217\000\000\005\217\000\000\000\000\005\217\000\000\000\000\000\000\005\217\005\217\000\000\000\000\005\217\000\000\005\217\000\000\005\217\005\217\005\217\005\217\000\000\005\217\005\217\005\217\005\217\005\217\000\000\000\000\000\000\000\000\005\217\005\217\000\000\000\000\000\000\005\217\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\001F\000\000\000\000\000\000\001\166\000\000\001\170\000\000\000\000\001\174\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\178\000\000\000\000\001\182\000\000\000\000\000\000\000\000\000\000\001\206\001\202\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\001b\000\000\000\000\000\000\000\000\000\000\001\226\001\230\000\000\000\000\001\234\001\238\001\242\002F\001\246\001\250\000\000\001\254\000\000\000\000\000\000\000\000\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\002\000\000\000\000\000\000\000\000\002\006\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000R\007\190\007\198\000\170\000\000\000\174\000\000\008\n\008N\002\018\008V\021\014\008f\000\000\008n\000\000\008v\008\130\001:\008\138\000\000\002\022\000\000\021\018\000\000\000\000\000\000\002\026\000\000\000\000\004a\000\000\021\022\008\146\021\026\000\000\002\030\000\000\000\000\000\000\000\000\021\030\002\"\000\000\000\000\000\000\024j\000\000\000\000\021*\000\000\000\000\000\000\021.\003.\0036\000\170\000\000\000\174\0212\003z\003\190\000\000\003\198\000\000\003\214\008\170\003\222\000\000\003\230\003\242\022\170\003\250\000\000\000\000\0216\023\166\000\000\000\000\nb\008\182\000\000\000\000\000\000\000\000\000\000\004\002\000\000\000\000\000\000\001\166\nr\013^\000\000\000\000\013b\000\000\000\000\000\000\004\n\021:\014\202\000\000\021>\000\000\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\000\000\000\000\021B\000\000\000\000\015R\013j\021F\000\n\021J\015&\021N\021R\000\000\021V\001\218\000\000\001\222\000\000\004\026\021Z\015.\000\000\021^\000\000\013~\001\230\0152\000\000\013\130\011\138\001\242\000\000\013\134\013\138\000\000\013\142\000\000\021b\000\000\000\000\0156\021f\021j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\226\013\146\000\000\000\000\015:\015>\013\150\015B\000\000\000\n\000\000\015V\000\000\000\000\000\000\000\000\000\000\015b\013\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\015\130\nb\000\000\000\000\015\134\015\194\000\000\000\000\000\000\013\162\000\000\015\198\001\166\nr\013^\013\166\000\000\013b\000\000\000\000\000\000\000\000\015\206\014\202\013\170\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013f\013j\000\000\000\000\000\000\015&\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\015.\000\000\000\000\000\000\013~\001\230\0152\000\000\013\130\011\138\001\242\000\000\013\134\013\138\000\000\013\142\000\000\000\000\000\000\000\000\0156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\226\013\146\000\000\000\000\015:\015>\013\150\015B\000\000\000\n\000\000\015V\000\000\000\000\000\000\000\000\000\000\015b\013\158\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\197\000\000\015\130\013\197\000\000\000\000\015\134\015\194\000\000\000\000\000\000\013\162\000\000\015\198\000\000\000\000\000\000\013\166\000\000\000\000\000\000\013\197\000\000\000\000\015\206\013\197\013\170\000\000\002:\013\197\000\000\000\000\002\"\000\000\000\000\013\197\000\000\000\000\013\197\013\197\000\000\013\197\013\197\000\000\000\000\002B\000\000\013\197\005&\000\000\000\000\013\197\000\000\000\000\013\197\000\000\013\197\013\197\000\000\000\000\000\000\000\000\000\000\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\013\197\001\014\013\197\001\022\000\000\001\030\0012\001:\001>\000\000\000\000\000\000\000\000\013\197\000\000\000\000\000\000\000\000\000\000\000\000\0052\000\000\001F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001N\000\000\000\000\000\000\013\197\013\197\000\000\013\197\013\197\0056\000\000\013\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005>\001^\000\000\000\000\000\000\013\197\000\000\000\000\013\197\013\197\013\197\013\197\000\000\000\000\000\000\001b\013\197\013\197\013\197\000\000\013\197\013\197\013\197\001=\001=\001=\001=\000\000\001=\000\000\001=\001=\000\000\001=\000\000\001=\000\000\001=\000\000\001=\001=\001=\001=\000\000\000\000\004\237\000\000\020\254\004\237\000\000\000\000\000\000\000\000\000\000\000\000\001=\001=\001=\000\000\000\000\000\000\000\000\000\000\000\000\001=\000\000\004\237\000\000\000\000\001=\004\237\000\000\001=\004\237\004\237\000\000\001=\000\000\000\000\021\002\004\237\000\000\001=\004\237\004\237\000\000\004\237\004\237\000\000\001=\004\237\000\000\004\237\004\237\001=\000\000\004\237\000\000\000\000\004\237\000\000\004\237\004\237\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\004\237\001=\004\237\000\000\001=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\237\000\000\000\000\000\000\001=\000\000\000\000\004\237\000\000\001=\000\n\001=\000\000\000\000\001=\000\000\021\006\000\000\000\000\000\000\000\000\000\000\001=\000\000\000\000\001=\004\237\004\237\000\000\004\237\005\t\004\237\000\000\004\237\000\000\000\000\000\000\000\000\000\000\004\241\001=\004\237\004\241\000\000\001=\001=\004\237\000\000\000\000\004\237\000\000\004\237\000\000\000\000\000\000\021\198\000\000\004\237\004\237\004\237\004\241\004\237\004\237\004\237\004\241\000\000\000\000\004\241\004\241\000\000\000\000\000\000\000\000\000\000\004\241\000\000\000\000\004\241\004\241\000\000\004\241\004\241\000\000\000\000\004\241\000\000\004\241\004\241\000\000\000\000\004\241\000\000\000\000\004\241\000\000\004\241\004\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\"\t*\000\170\000\000\000\174\000\000\tn\t\178\000\000\t\186\004\241\t\202\004\241\t\210\000\000\t\218\t\230\000\000\t\238\000\000\000\000\000\000\000\000\004\241\000\000\000\000\000\000\000\000\000\000\000\000\004\241\000\000\t\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\254\000\000\000\000\000\000\004\241\004\241\000\000\004\241\005\013\004\241\000\000\004\241\000\000\000\000\000\000\000\000\000\000\014\025\000\000\004\241\014\025\000\000\000\000\000\000\004\241\000\000\000\000\004\241\000\000\004\241\000\000\000\000\000\000\000\000\n\014\004\241\004\241\004\241\014\025\004\241\004\241\004\241\014\025\000\000\000\000\013\190\014\025\000\000\000\000\000\000\000\000\000\000\014\025\000\000\000\000\014\025\014\025\000\000\014\025\014\025\000\000\000\000\013\198\000\000\014\025\013\210\000\000\000\000\014\025\000\000\000\000\014\025\000\000\014\025\014\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\007\190\007\198\000\170\000\000\000\174\000\000\008\n\008N\000\000\008V\014\025\008f\014\025\008n\000\000\008v\008\130\001:\008\138\000\000\000\000\000\000\000\000\014\025\000\000\000\000\000\000\000\000\000\000\000\000\013\222\000\000\008\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\008\154\000\000\000\000\000\000\014\025\014\025\000\000\014\025\000\000\013\226\000\000\014\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\234\008\170\000\000\000\000\000\000\000\000\000\000\000\000\014\025\000\000\014\025\000\000\000\000\000\000\000\000\008\182\014\025\014\025\014\025\000\000\014\025\014\025\014\025\ne\ne\ne\ne\000\000\ne\000\000\ne\ne\000\000\ne\000\000\ne\000\000\ne\000\000\ne\ne\ne\ne\000\000\000\000\001\137\000\000\000\000\001\137\000\000\000\000\000\000\000\000\000\000\000\000\ne\ne\ne\000\000\000\000\000\000\000\000\000\000\000\000\ne\000\000\001\137\000\000\000\000\ne\001\137\000\000\021\214\000\000\001\137\000\000\021\222\000\000\000\000\000\000\001\137\000\000\ne\001\137\001\137\000\000\001\137\001\137\000\000\ne\000\000\000\000\001\137\000\000\ne\000\000\001\137\000\000\000\000\001\137\000\000\001\137\001\137\ne\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\137\ne\001\137\000\000\ne\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\137\000\000\000\000\000\000\ne\000\000\000\000\000\000\000\000\ne\000\000\ne\000\000\000\000\ne\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ne\000\000\000\000\ne\001\137\002V\000\000\001\137\001\137\000\000\000\000\001\137\000\000\000\000\000\000\000\000\000\000\000\000\ne\000\000\000\000\000\000\0222\ne\001\137\000\000\000\000\001\137\001\137\001\137\001\137\000\000\000\000\000\000\000\000\002\254\001\137\001\137\000\000\001\137\001\137\001\137\nU\nU\nU\nU\000\000\nU\000\000\nU\nU\000\000\nU\000\000\nU\000\000\nU\000\000\nU\nU\nU\nU\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nU\nU\nU\000R\000V\000f\000\170\000\000\000\174\nU\000\178\000\246\000\000\000\254\nU\001\014\000\000\001\022\000\000\001\030\0012\001:\001>\000\000\000\000\000\000\000\000\nU\000\000\000\000\000\000\000\000\000\000\000\000\nU\000\000\001F\000\000\000\000\nU\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nU\001N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nU\001^\000\000\nU\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001b\nU\000\000\000\000\004R\004V\nU\000\000\nU\000\000\000\000\nU\000\000\nY\nY\nY\nY\000\000\nY\nU\nY\nY\nU\nY\000\000\nY\000\000\nY\000\000\nY\nY\nY\nY\000\000\000\000\000\000\000\000\nU\000\000\000\000\000\000\021\218\nU\000\000\000\000\nY\nY\nY\000\000\000\000\000\000\000\000\000\000\000\000\nY\000\000\000\000\000\000\000\000\nY\000\000\004Z\0226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nY\000\000\000\000\000\000\000\000\000\000\000\000\nY\000\000\000\000\003U\000\000\nY\000\000\000\000\000R\007\190\007\198\000\170\000\000\000\174\nY\008\n\008N\000\000\008V\000\000\008f\000\000\008n\000\000\008v\008\130\001:\008\138\000\000\000\000\000\000\000\000\000\000\000\000\nY\000\000\000\000\nY\000\000\000\000\022>\008\146\022Z\000\000\000\000\000\000\000\000\000\000\000\000\022f\nY\000\000\000\000\000\000\008\154\nY\000\000\nY\000\000\000\000\nY\000\000\000\000\000\000\000\000\000\000\000\000\022~\nY\000\000\000\000\nY\000\000\000\000\008\170\000\000\000\000\000\000\000\000\022\170\000\000\000\000\000\000\000\000\000\000\000\000\nY\000\000\008\182\000\000\000\000\nY\000\000\000\000\000\000\000\000\000\000\002v\000\000\000\000\002\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\202\000\000\000\000\023\"\000\000\000\000\000\000\000\000\000\000\000\000\002~\000\000\000\000\000\000\002\t\000\000\023:\000\000\002\t\000\000\000\000\023F\000\000\008u\002\134\000\000\023v\002\t\002\t\000\000\002\230\002\238\000\000\000\000\023\130\000\000\002\t\024B\000\000\000\000\002\166\000\000\001\166\002\142\n\166\002\158\002\t\n\170\000\000\000\000\000\000\000\000\024N\000\000\000\000\000\000\000\000\024f\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\002\174\000\000\002\t\000\000\000\000\n\174\011\006\000\000\000\000\011n\011\134\000\000\000\000\002\t\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\206\001\230\000\000\000\000\n\210\011\138\001\242\000\000\n\214\n\218\000\000\n\222\000\000\000\000\002\182\000\000\000\000\002\t\002\t\000\000\000\000\002\150\000\000\000}\000\000\000\000\000}\n\226\n\230\000\000\000\000\000\000\000\000\n\234\002\t\000\000\000\n\002\t\002\t\002\t\002\t\000\000\000\000\000\000\002~\n\242\002\t\002\t\000}\002\246\002\190\002\t\000}\006\t\000\000\011\142\000\000\011\170\002\134\000\000\000\000\000}\000}\000\000\000}\000}\000\000\n\246\000e\000\000\000}\000e\000\000\n\250\002\166\000\000\000\000\002\142\000\000\002\158\000}\000\000\n\254\000\000\000\000\000\000\000\000\000\000\002\"\000e\000\000\000\000\000\000\000e\000\000\000\000\000\000\000e\000\000\000\000\002\174\000\000\000}\002\134\000\000\000\000\000e\000e\000\000\000e\000e\000\000\000\000\000}\000\000\000e\000\000\000\000\000\000\000e\000\000\000\000\002\142\000\000\002\158\000e\000\000\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\182\000\000\000\000\000}\000}\000\000\000e\002\150\000e\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\000\000}\000}\000}\000}\000\000\000\000\000\000\000\000\000\000\000}\000}\000\000\000}\002\190\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\150\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\000e\000e\000\000\000\000\000\000\000]\000\000\000e\000e\000]\000e\000e\000e\000]\000\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\000\000\002\142\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\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\142\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\000a\002\150\000a\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\000\000]\000]\000]\000]\000\000\000\000\000\000\000\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\150\000\000\000q\000\000\000\000\000q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000a\000\000\000\000\000a\000a\000a\000a\000\000\000\000\000\000\002~\000\000\000a\000a\000q\000a\000a\000a\000q\000\000\000\000\000\000\000\000\000\000\002\134\000\000\000\000\000q\000q\000\000\000q\000q\000\000\000\000\000i\000\000\000q\000i\000\000\000\000\000q\000\000\000\000\002\142\000\000\002\158\000q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002~\000\000\000\000\000\000\000i\000\000\000\000\000\000\000i\000\000\000\000\002\174\000\000\000q\002\134\000\000\000\000\000i\000i\000\000\000i\000i\000\000\000\000\000q\000\000\000i\000\000\000\000\000\000\000i\000\000\000\000\002\142\000\000\002\158\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\000q\000\000\000\000\000q\000q\000\000\000i\002\150\000i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000i\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\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\150\000\000\000m\000\000\000\000\000m\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\002~\000\000\000i\000i\000m\000i\000i\000i\000m\000\000\000\000\000\000\000\000\000\000\002\134\000\000\000\000\000m\000m\000\000\000m\000m\000\000\000\000\000u\000\000\000m\000u\000\000\000\000\000m\000\000\000\000\002\142\000\000\002\158\000m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002~\000\000\000\000\000\000\000u\000\000\000\000\000\000\000u\000\000\000\000\002\174\000\000\000m\002\134\000\000\000\000\000u\000u\000\000\000u\000u\000\000\000\000\000m\000\000\000u\000\000\000\000\000\000\002\166\000\000\000\000\002\142\000\000\002\158\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\000\000m\000\000\000\000\000m\000m\000\000\002\174\002\150\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000u\000m\000\000\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\002\182\000\000\000\000\000u\000u\000\000\000\000\002\150\000\000\002v\000\000\000\000\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000u\000\000\000\000\000u\000u\000u\000u\000\000\000\000\000\000\002~\000\000\000u\000u\000\133\000u\000u\000u\000\133\000\000\000\000\000\000\000\000\000\000\002\134\000\000\000\000\000\133\000\133\000\000\000\133\002\238\000\000\000\000\002v\000\000\000\133\000y\000\000\000\000\002\166\000\000\000\000\002\142\000\000\002\158\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002~\000\000\000\000\000\000\000y\000\000\000\000\000\000\000y\000\000\000\000\002\174\000\000\000\133\002\134\000\000\000\000\000y\000y\000\000\000y\000y\000\000\000\000\000\133\000\000\000y\000\000\000\000\000\000\002\166\000\000\000\000\002\142\000\000\002\158\000y\000\000\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\182\000\000\000\000\000\133\000\133\000\000\002\174\002\150\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\000\133\000\000\000\000\000\133\000\133\000\133\000\133\000\000\000\000\000\000\000\000\000\000\000\133\000\133\000\000\002\246\002\190\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\182\000\000\000\000\000y\000y\000\000\000\000\002\150\000\000\002v\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\000\000\000\000\000y\000y\000y\000y\000\000\000\000\000\000\002~\000\000\000y\000y\000\129\000y\002\190\000y\000\129\000\000\000\000\000\000\000\000\000\000\002\134\000\000\000\000\000\129\000\129\000\000\000\129\002\238\000\000\000\000\011\146\000\000\000\129\000\000\000\000\000\000\002\166\000\000\004E\002\142\004E\002\158\000\129\004E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004E\000\000\000\000\000\000\002\174\000\000\000\129\000\000\000\000\004E\004E\000\000\000\000\004E\004E\000\000\000\000\000\129\000\000\004E\000\000\004E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004E\004E\000\000\000\000\004E\004E\004E\000\000\004E\004E\000\000\004E\000\000\000\000\002\182\000\000\000\000\000\129\000\129\000\000\000\000\002\150\000\000\000\000\000\000\000\000\000\000\004E\004E\000\000\000\000\000\000\000\000\004E\000\129\000\000\004E\000\129\000\129\000\129\000\129\000\000\000\000\000\000\000\000\004E\000\129\000\129\000\000\000\129\002\190\000\129\000\000\004E\000\000\004E\001\166\004E\n\166\000\000\000\000\n\170\000\000\000\000\000\000\000\000\000\000\004E\000\000\000\000\000\000\000\000\000\000\004E\000\000\000\000\001\178\000\000\000\000\004E\000\000\000\000\004E\000\000\000\000\n\174\011\006\000\000\004E\011n\011\134\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\206\001\230\000\000\000\000\n\210\011\138\001\242\000\000\n\214\n\218\000\000\n\222\000\000\000\000\000\000\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\226\n\230\000\000\000\000\000\000\000\000\n\234\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\001\166\000\000\n\166\n\242\000\000\n\170\000\000\000\000\000\000\000\000\000\000\006\t\000\000\011\142\000\000\011\170\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\000\000\n\246\000\000\000\000\000\000\n\174\011\006\n\250\000\000\011n\011\134\000\000\000\000\012\138\000\000\001\218\n\254\001\222\000\000\000\000\000\000\000\000\002\"\000\000\000\000\n\206\001\230\000\000\000\000\n\210\011\138\001\242\000\000\n\214\n\218\000\000\n\222\000\000\000\000\000\000\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\226\n\230\000\000\000\000\000\000\000\000\n\234\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\001\166\000\000\n\166\n\242\000\000\n\170\000\000\000\000\000\000\000\000\000\000\006\t\000\000\011\142\000\000\011\170\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\000\000\n\246\000\000\000\000\000\000\n\174\011\006\n\250\000\000\011n\011\134\000\000\000\000\011\178\000\000\001\218\n\254\001\222\000\000\000\000\000\000\000\000\002\"\000\000\000\000\n\206\001\230\000\000\000\000\n\210\011\138\001\242\000\000\n\214\n\218\000\000\n\222\000\000\000\000\000\000\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\226\n\230\000\000\000\000\000\000\000\000\n\234\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\001\166\000\000\n\166\n\242\000\000\n\170\000\000\000\000\000\000\000\000\000\000\006\t\000\000\011\142\000\000\011\170\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\000\000\n\246\000\000\000\000\000\000\n\174\011\006\n\250\000\000\011n\011\134\000\000\000\000\005i\000\000\001\218\n\254\001\222\000\000\000\000\000\000\000\000\002\"\000\000\000\000\n\206\001\230\000\000\000\000\n\210\011\138\001\242\000\000\n\214\n\218\000\000\n\222\000\000\000\000\000\000\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\226\n\230\000\000\011\226\000\000\000\000\n\234\000\000\003)\000\n\000j\003)\000r\000\000\000\130\003)\000\000\003)\n\242\000\000\000\000\000\138\003)\003)\011\234\000\000\006\t\000\000\011\142\000\000\011\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\242\000\000\n\246\000\000\000\000\000\000\0122\012:\n\250\000\000\000\146\003)\000\000\000\000\001\189\003)\012\018\n\254\000\000\011\250\000\000\012\n\000\000\002\"\000\000\000\000\003%\000\000\000\182\003%\000\190\003)\000\206\003%\000\000\003%\000\000\000\000\000\000\000\214\003%\003%\012\026\003)\000\162\000\000\000\000\000\000\000\000\000\000\000\000\003)\000\000\000\000\000\000\003)\003)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000\222\003%\000\000\000\000\000\000\003%\000\000\000\000\000\000\000\000\003)\000\000\000\000\000\000\000\000\012\"\000\000\000\000\000\000\000\000\003)\003%\012\002\001\137\000\000\003)\001\137\000\000\000\000\000\000\000\000\000\000\000\000\003%\000\238\005Q\000\000\000\000\000\000\000\000\000\000\003%\000\000\000\000\001\137\003%\003%\000\000\001\137\000\000\012B\012*\001\137\000\000\000\000\003%\003)\000\000\001\137\003)\003)\000\000\000\000\003)\001\137\001\137\003%\000\000\003)\003)\000\000\000\000\000\000\003)\001\137\000\000\003%\001\137\000\000\001\137\001\137\003%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\001\137\001\014\001\137\001\022\nZ\001\030\0012\001:\001>\n^\000\000\000\000\003%\001\137\000\000\003%\003%\000\000\000\000\003%\000\000\000\000\001F\000\000\003%\003%\000\000\000\000\000\000\003%\000\000\000\000\000\000\000\000\000\000\001N\000\000\000\000\000\000\001\137\002N\000\000\001\137\001\137\000\000\000\000\001\137\000\000\001\166\000\000\n\166\000\000\000\000\n\170\000\000\001^\000\000\000\000\000\000\001\137\000\000\001j\001\137\001\137\000\000\001\137\000\000\000\000\001\178\001b\003\n\001\137\001\137\000\000\001\137\001\137\001\137\n\174\011\006\000\000\000\000\011n\011\134\000\000\000\000\n\134\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\206\001\230\000\000\000\000\n\210\011\138\001\242\000\000\n\214\n\218\000\000\n\222\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\001\161\000\000\000\000\001\161\000\000\000\000\n\226\n\230\000\000\000\000\000\000\000\000\n\234\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\001\161\n\138\000\000\n\242\001\161\000\000\001\153\000\000\001\161\001\153\000\000\006\t\000\000\000\000\001\161\011\170\000\000\001\161\001\161\000\000\001\161\001\161\000\000\000\000\000\000\n\246\001\161\001\153\000\000\000\000\001\161\n\250\000\000\001\161\000\000\001\161\001\161\001\201\000\000\000\000\n\254\001\153\000\000\000\000\000\000\001\153\002\"\001\153\001\153\005\217\000\000\000\000\000\000\000\000\000\000\000\000\001\161\001\153\001\161\000\000\001\153\005\217\001\153\000\000\000\000\000\000\000\000\000\000\000\000\001\161\005\217\000\000\005\217\ni\ni\000\000\000\000\000\000\000\000\005\217\000\000\000\000\000\000\001\153\005\217\000\000\000\000\005\217\000\000\000\000\000\000\005\217\000\000\000\000\000\000\001\161\014\014\005\217\001\161\000\000\000\000\000\000\001\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ni\000\000\005\217\000Z\000\000\000\000\000\000\001\161\000\000\001\161\000\000\001\153\005\250\000\000\001\153\014\022\001\161\001\161\001\153\001\161\001\161\001\161\000\000\000\000\000\000\ni\000\000\005\217\000\000\000\000\005\217\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\000\000\000\000\000\000\006\002\005\217\000\000\000\000\001\153\001\153\005\217\005\217\005\217\000\000\005\217\005\217\000\000\005\217\000\000\000\000\000\000\000\000\000\000\005\217\000\000\000\000\005\217\000\000\000\000\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\217\000\000\000\000\000\000\005\217\005\217\ni\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\000\000\001\014\000\000\001\022\nZ\001\030\0012\001:\001>\n^\001\166\000\000\001\170\000\000\000\000\001\174\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\014\206\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\001\182\000\000\001N\000\000\000\000\000\000\001\198\001\202\000\000\001\210\000\000\n\162\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\001^\000\000\000\000\000\000\001\226\001\230\000\000\011\154\001\234\001\238\001\242\000\000\001\246\001\250\001b\001\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\014\000\000\000\000\n\134\000\000\002\002\000\000\000\000\000\000\000\000\002\006\000\000\021\018\000\n\000\000\000\000\000\000\000\000\000\000\023J\000\000\021\022\002\014\021\026\n\189\n\189\000\000\000\000\000\000\000\n\021\030\000\000\002\018\008\133\000\000\021\"\000\000\000\000\021*\000\000\000\000\000\000\021.\000\000\002\022\000\000\000\000\000\000\0212\000\000\002\026\000\000\000\000\008\133\000\000\008\133\000\000\006\001\n\138\002\030\022\250\000\000\n\189\000\000\0216\002\"\000\000\006\001\000\000\000\000\000\000\000\000\006\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\n\189\005\217\021:\000\000\005\217\021>\000\000\t~\005\217\000\000\005\217\000\000\000\000\000\000\000\000\005\217\005\217\000\000\021B\000\000\005\217\000\000\000\000\021F\000\n\021J\000\000\021N\021R\005\217\021V\005\217\000\000\t\190\005\217\000\000\021Z\000\000\005\217\021^\000\000\000\000\005\217\005\217\000\000\000\000\005\217\000\000\000\000\000\000\005\217\000\000\000\000\000\000\021b\005\217\005\217\005\217\021f\021j\n\189\000\000\005\217\000\000\005\217\000\000\001f\005\217\n>\005\217\000\000\000Z\005\217\000Z\005\217\000\000\005\217\005\217\000\000\000\000\000\000\000\000\005\217\000\000\000\000\000\000\005\217\005\217\000\000\000\000\000\000\000\000\000\000\005\217\000\000\000\000\005\217\005\217\005\217\000Z\005\217\000\000\000\000\005\217\000\000\000\000\000\000\005\217\000\000\000\000\000\000\000\000\000\000\005\217\000\000\000\000\000\000\005\217\005\217\005\217\005\217\000\000\005\217\005\217\000\000\005\217\005\217\000\000\000\000\000\000\000\000\005\217\000\000\000\000\005\217\000\000\000\000\000\000\000\000\005\217\000\000\000\000\000\000\000\000\005\217\005\217\005\217\014B\005\217\005\217\014\146\005\217\000\000\005\217\005\217\000\000\005\217\005\217\000\000\000\000\005\217\000\000\000\000\000\000\000\000\005\217\005\217\000\000\014J\000\000\005\217\001%\002\025\000\000\001%\005\217\002\025\000\000\000\000\005\217\005\217\000\000\014R\000\000\000\000\002\025\002\025\000\000\014\162\014\170\000\000\000\000\014J\000\000\002\025\000\000\001%\000\000\014r\000\000\001%\014Z\000\000\014j\002\025\000\000\014R\000\000\000\000\001%\001%\000\000\001%\001%\000\000\000\000\000\000\000\000\001%\000\000\000\000\000\000\014r\000\000\014z\014Z\002\025\014j\001%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014z\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\014\130\000\000\000\000\002\025\000\000\000\000\000\000\014b\000\000\000\000\000\000\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\025\014\130\002\025\000\000\001%\000\000\000\000\000\000\014b\002\025\002\025\000\000\014\178\014\138\002\025\000\000\000\000\000\000\001\013\000\000\000\000\001\013\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%\014\138\001%\001\013\000\000\000\000\001\005\001\013\000\000\001\005\000\000\001\013\000\000\000\000\000\000\000\000\000\000\014R\000\000\000\000\001\013\001\013\000\000\001\013\001\013\000\000\000\000\001\005\000\000\001\013\000\000\001\005\000\000\001\013\000\000\001\005\014Z\000\000\014j\001\013\000\000\001\005\000\000\000\000\001\005\001\005\000\000\001\005\001\005\000\000\000\000\000\000\000\000\001\005\000\000\000\000\000\000\001\005\000\000\001\013\014Z\001\013\001\005\001\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\005\000\000\001\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\005\000\000\001\013\000\000\000\000\001\013\000\000\000\000\000\000\014b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\013\001\005\001\013\000\000\001\005\000\000\000\000\000\000\014b\001\013\001\013\000\000\001\013\001\013\001\013\000\000\000\000\000\000\001\t\000\000\000\000\001\t\000\000\000\000\001\005\000\000\001\005\000\000\000\000\000\000\000\000\000\000\000\000\001\005\001\005\000\000\001\005\001\005\001\005\001\t\000\000\000\000\001\025\001\t\000\000\001\025\000\000\001\t\000\000\000\000\000\000\000\000\000\000\001\t\000\000\000\000\001\t\001\t\000\000\001\t\001\t\000\000\000\000\014J\000\000\001\t\000\000\001\025\000\000\001\t\000\000\001\025\014Z\000\000\001\t\001\t\000\000\014R\000\000\000\000\001\025\001\025\000\000\001\025\001\025\000\000\000\000\000\000\000\000\001\025\000\000\000\000\000\000\001\025\000\000\001\t\014Z\001\t\014j\001\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014z\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\001\t\000\000\000\000\001\t\000\000\000\000\000\000\014b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\t\001\025\001\t\000\000\001\025\000\000\000\000\000\000\014b\001\t\001\t\000\000\001\t\001\t\001\t\000\000\000\000\000\000\001\017\000\000\000\000\001\017\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\014J\000\000\000\000\001\021\001\017\000\000\001\021\000\000\001\017\000\000\000\000\000\000\000\000\000\000\014R\000\000\000\000\001\017\001\017\000\000\001\017\001\017\000\000\000\000\014J\000\000\001\017\000\000\001\021\000\000\001\017\000\000\001\021\014Z\000\000\014j\001\017\000\000\014R\000\000\000\000\001\021\001\021\000\000\001\021\001\021\000\000\000\000\000\000\000\000\001\021\000\000\000\000\000\000\001\021\000\000\001\017\014Z\001\017\014j\001\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014z\000\000\001\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\021\000\000\001\017\000\000\000\000\001\017\000\000\000\000\000\000\014b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\017\001\021\001\017\000\000\001\021\000\000\000\000\000\000\014b\001\017\001\017\000\000\001\017\001\017\001\017\000\000\000\000\000\000\001\029\000\000\000\000\001\029\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\014J\000\000\000\000\014B\001\029\000\000\001-\000\000\001\029\000\000\000\000\000\000\000\000\000\000\014R\000\000\000\000\001\029\001\029\000\000\001\029\001\029\000\000\000\000\014J\000\000\001\029\000\000\001-\000\000\014r\000\000\001-\014Z\000\000\014j\001\029\000\000\014R\000\000\000\000\001-\001-\000\000\001-\014\170\000\000\000\000\000\000\000\000\001-\000\000\000\000\000\000\014r\000\000\014z\014Z\001\029\014j\001-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014z\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\014\130\000\000\000\000\001\029\000\000\000\000\000\000\014b\000\000\000\000\000\000\000\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\014\130\001\029\000\000\001-\000\000\000\000\000\000\014b\001\029\001\029\000\000\001\029\001\029\001\029\000\000\000\000\000\000\014B\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\014\178\014\138\001-\014J\000\000\000\000\014B\001!\000\000\001)\000\000\001!\000\000\000\000\000\000\000\000\000\000\014R\000\000\000\000\001!\001!\000\000\001!\001!\000\000\000\000\014J\000\000\001!\000\000\001)\000\000\014r\000\000\001)\014Z\000\000\014j\001!\000\000\014R\000\000\000\000\001)\001)\000\000\001)\014\170\000\000\000\000\000\000\000\000\001)\000\000\000\000\000\000\014r\000\000\014z\014Z\001!\014j\001)\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\014z\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\014\130\000\000\000\000\001!\000\000\000\000\000\000\014b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\014\130\001!\000\000\001)\000\000\000\000\000\000\014b\001!\001!\000\000\001!\014\138\001!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001)\001\166\001)\001\170\000\000\000\000\001\174\000\000\000\000\001)\001)\000\000\001)\014\138\001)\008\133\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\001\182\000\000\000\000\000\000\000\000\000\000\001\198\001\202\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\001\222\001\166\000\000\001\170\000\000\000\000\001\174\000\000\001\226\001\230\000\000\000\000\001\234\001\238\001\242\018f\001\246\001\250\000\000\001\254\000\000\001\178\000\000\000\000\001\182\000\000\000\000\000\000\000\000\000\000\001\198\001\202\000\000\001\210\000\000\000\000\002\002\000\000\000\000\000\000\001\218\002\006\001\222\000\000\000\n\000\000\000\000\000\000\000\000\000\000\001\226\001\230\000\000\002\014\001\234\001\238\001\242\000\000\001\246\001\250\000\000\001\254\000\000\002\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\022\000\000\021\014\002\002\000\000\000\000\002\026\000\000\002\006\000\000\000\000\000\n\000\000\000\000\021\018\002\030\000\000\000\000\000\000\000\000\002\014\002\"\000\000\021\022\000\000\021\026\000\000\000\000\000\000\000\000\002\018\000\000\021\030\000\000\000\000\000\000\000\000\021\"\000\000\000\000\021*\000\000\002\022\000\000\021.\000\000\006R\000\000\002\026\006\162\0212\000\000\000\000\000\000\000\000\000\000\000\000\002\030\000\000\000\000\000\000\023\138\000\000\002\"\n\145\000\000\0216\006Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006b\000\000\000\000\000\000\002\017\000\000\006\178\006\186\n\145\000\000\021:\000\000\000\000\021>\000\000\000\000\006\130\000\000\000\000\006j\001\166\006z\001\170\000\000\000\000\001\174\021B\000\000\000\000\000\000\000\000\021F\000\n\021J\000\000\021N\021R\000\000\021V\000\000\001\178\000\000\006\138\001\182\021Z\000\000\000\000\021^\000\000\001\198\0076\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\001\222\021b\000\000\000\000\000\000\021f\021j\n\145\001\226\001\230\000\000\000\000\001\234\001\238\001\242\000\000\001\246\001\250\000\000\001\254\006\146\000\000\000\000\002\017\000\000\000\000\000\000\006r\000\000\001\166\000\000\001\170\000\000\000\000\001\174\000\000\002\002\000\000\000\000\000\000\000\000\002\006\000\000\000\000\000\n\002\017\000\000\000\000\000\000\001\178\000\000\000\000\001\182\002\014\000\000\006\194\006\154\000\000\001\198\002\n\000\000\001\210\000\000\002\018\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\000\002\022\000\000\000\000\001\226\001\230\000\000\002\026\001\234\001\238\001\242\000\000\001\246\001\250\000\000\001\254\002\030\006\030\000\000\000\000\000\000\000\000\002\"\000\000\000\000\004=\000\000\004=\000\000\000\000\004=\000\000\002\002\000\000\000\000\000\000\000\000\002\006\000\000\000\000\000\n\000\000\000\000\000\000\000\000\004=\000\000\000\000\004=\002\014\000\000\000\000\000\000\000\000\004=\004=\000\000\004=\000\000\002\018\000\000\000\000\000\000\000\000\004=\000\000\004=\000\000\000\000\000\000\000\000\002\022\000\000\000\000\004=\004=\021\014\002\026\004=\004=\004=\000\000\004=\004=\000\000\004=\002\030\000\000\021\018\000\000\000\000\000\000\002\"\000\000\000\000\000\000\000\000\021\022\000\000\021\026\000\000\000\000\004=\000\000\000\000\000\000\021\030\004=\000\000\000\000\004=\021\"\000\000\000\000\021*\000\000\000\000\000\000\021.\004=\000\000\000\000\000\000\000\000\0212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\134\000\000\000\000\000\000\005\217\0216\004=\005\217\000v\000\000\000\000\005\217\004=\005\217\000\000\000\000\000\000\000\000\005\217\005\217\000\000\004=\000\000\000\000\000\000\000\000\000\000\004=\n\145\000\000\021:\000\000\000\000\021>\005\217\000\000\000\000\005\217\000\194\000\000\000\000\005\217\000\000\005\217\000\000\005\217\021B\000\000\005\217\005\217\000\000\021F\000\n\021J\000\000\021N\021R\000\000\021V\000\000\000\000\000\000\005\217\000\000\021Z\005\217\001\002\021^\000\000\005\217\000\000\005\217\005\217\003F\000Z\005\217\005\217\005\217\005\217\005\217\000\000\000\000\021b\005\217\005\217\005\217\021f\021j\n\145\005\217\005\217\000\000\000\000\000\000\000\000\005\217\000\000\000\000\000\000\005\217\000\000\000\000\000\000\005\217\000Z\000\000\000\000\005\217\000\000\000\000\005\217\000\000\000\000\000\000\005\217\005\217\000\000\000\000\000\000\005\217\005\217\000\000\000\000\005\217\000\000\005\217\000\000\004\030\000\000\005\217\005\217\000\000\000Z\000\000\004\242\005\217\000\000\000\000\000\000\000Z\005\217\000\000\005\217\005\217\000\000\000\000\000\000\005\217\005\217\000\000\005\217\000\000\000\000\000\000\005\217\005\217\005\217\005\217\000\000\005\217\005\217\000\000\000\000\005\217\005\217\000\000\000\000\000\000\005\217\005\217\000\000\000\000\000\000\005\217\000\000\005\217\000\000\000\000\005\217\000\000\000\000\000\000\000\000\005\217\000\000\005\217\005\217\000\000\000\000\005\217\005\217\000\000\000\000\005\217\000\000\000\000\000\000\000\000\005\217\005\217\001\166\000\000\001\186\005\217\000\000\001\190\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\217\000\000\000\000\005\217\005\217\000\000\001\178\005\217\000\000\001\182\005\217\005\217\005\217\005\217\005\217\001\194\001\214\005\217\001\210\005\217\005\217\000\000\000\000\000\000\005\217\001\218\000\000\001\222\001\166\000\000\001\186\000\000\000\000\001\190\000\000\005j\001\230\000\000\000\000\005n\001\238\001\242\000\000\005r\005v\000\000\005z\000\000\001\178\000\000\000\000\001\182\000\000\000\000\000\000\000\000\000\000\001\194\007\030\000\000\001\210\000\000\000\000\005~\000\000\000\000\000\000\001\218\005\130\001\222\000\000\000\n\000\000\000\000\000\000\000\000\000\000\005j\001\230\000\000\005\138\005n\001\238\001\242\000\000\005r\005v\000\000\005z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\217\000\000\000\000\005\217\003\138\005\142\000\000\005\217\005~\005\217\000\000\005\146\000\000\005\130\005\217\005\217\000\n\005\217\003\202\000\000\005\150\005\217\000\000\005\217\000\000\005\138\002\"\000\000\005\217\005\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\217\000\000\000\000\000\000\005\217\000\000\005\142\000\000\000\000\000\000\000\000\000\000\005\146\000\000\005\217\000\000\000\000\000\000\005\217\000\000\005\217\005\150\000\000\000\000\007f\000\000\000\000\002\"\000\000\000Z\000\000\000\000\005\217\000\000\005\217\000\000\000\000\000\000\000\000\000\000\005\217\000\000\000\000\000Z\005\217\005\217\005\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\217\000\000\000\000\000\000\005\217\005\217\000\000\000\000\000\000\000\000\000\000\005\217\000\000\000\000\005\217\000\000\000\000\000\000\000\000\000\000\000\000\005\217\000\000\000\000\000\000\005\217\005\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\217\000\000\000\000\000\000\000\000\005\217\000\000\000\000\000\000\000\000\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\217\000\000\000\000\005\217\005\217\000\000\000\000\005\217\000\000\000\000\000\000\000\000\005\217\005\217\005\217\000\000\000\000\005\217\005\217\000\000\001\166\005\217\001\186\000\000\000\000\001\190\005\217\005\217\000\000\000\000\000\000\005\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\001\182\013\253\000\000\000\000\013\253\000\000\001\194\005\134\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\013\253\000\000\000\000\000\000\005j\001\230\000\000\005\170\005n\001\238\001\242\000\000\005r\005v\013\253\005z\000\000\000\000\013\253\000\000\013\253\013\253\000\000\000\000\005\178\000\000\000\000\005\190\000\000\000\000\013\253\000\000\005~\013\253\000\000\013\253\000\000\005\130\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000R\000V\000f\000\170\005\138\000\174\nR\000\178\000\246\nV\000\254\013\253\001\014\025:\001\022\nZ\001\030\0012\001:\001>\n^\025>\000\000\000\000\000\000\000\000\005\142\000\000\000\000\000\000\000\000\005\202\005\146\001F\000\000\000\000\000\000\000\000\001\166\000\000\n\166\005\150\000\000\n\170\000\000\000\000\001N\002\"\000\000\000\000\013\253\013\253\000\000\013\253\000\000\005\206\000\000\013\253\001\178\000\000\000\000\000\000\000\000\000\000\000\000\005\214\001^\n\174\n\186\000\000\000\000\000\000\001j\000\000\000\000\013\253\000\000\001\218\000\000\001\222\001b\013\253\000\000\000\000\000\000\013\253\013\253\n\206\001\230\000\000\000\000\n\210\001\238\001\242\000\000\n\214\n\218\000\000\n\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\166\000\000\n\166\000\000\000\000\n\170\n\226\n\230\000\000\000\000\000\000\000\000\n\234\000\000\000\n\000\n\000\000\000\000\000\000\004\141\001\178\000\000\000\000\000\000\n\242\000\000\000\000\000\000\000\000\n\174\n\238\000\000\000\000\001n\000\000\000\000\000\000\000\000\000\000\001\218\000\000\001\222\001\166\000\000\n\166\000\000\n\246\n\170\000\000\n\206\001\230\000\000\n\250\n\210\001\238\001\242\000\000\n\214\n\218\000\000\n\222\n\254\001\178\000\000\000\000\000\000\000\000\002\"\000\000\000\181\000\000\n\174\011\006\000\000\000\000\000\000\n\226\n\230\000\000\000\000\000\000\001\218\n\234\001\222\000\000\000\n\000\000\000\000\000\000\000\000\011\234\n\206\001\230\000\000\n\242\n\210\001\238\001\242\000\000\n\214\n\218\000\000\n\222\000\000\011\242\000\000\000\000\000\000\000\000\000\000\000\181\000\181\001\166\000\000\013^\000\000\n\246\013b\n\226\n\230\012\018\000\000\n\250\011\250\n\234\012\n\000\000\000\n\000\000\000\000\000\000\n\254\001\178\000\000\000\000\000\000\n\242\002\"\000\000\000\000\000\000\013f\014\186\000\000\000\000\000\000\012\026\000\000\000\000\000\000\000\000\001\218\000\000\001\222\001\166\000\000\013^\000\000\n\246\013b\000\000\013~\001\230\000\000\n\250\013\130\001\238\001\242\000\000\013\134\013\138\000\000\013\142\n\254\001\178\000\000\000\000\000\000\000\000\002\"\000\000\000\000\000\000\013f\013j\012\"\000\000\000\000\n\226\013\146\000\000\000\000\012\002\001\218\013\150\001\222\000\000\000\n\000\000\000\000\000\000\000\000\000\000\013~\001\230\000\181\013\158\013\130\001\238\001\242\000\000\013\134\013\138\000\000\013\142\000\000\000\000\000\000\000\000\000\000\000\181\012*\000\000\000\000\001\166\000\000\013^\000\000\013\162\013b\n\226\013\146\000\000\000\000\013\166\000\000\013\150\000\000\000\000\000\n\000\000\000\000\000\000\013\170\001\178\000\000\000\000\000\000\013\158\002\"\000\000\000\000\nR\013f\013\154\nV\000\000\000\000\000\000\025N\000\000\nZ\000\000\001\218\000\000\001\222\n^\025R\000\000\000\000\013\162\000\000\000\000\013~\001\230\000\000\013\166\013\130\001\238\001\242\000\000\013\134\013\138\000\000\013\142\013\170\000\000\008}\000\000\000\000\000\000\002\"\000\000\000\000\000\000\000\000\000\000\016\134\000\000\008}\n\226\013\146\000\000\000\000\000\000\000\000\013\150\000\000\008}\000\n\008}\000\000\000\000\016\138\000\000\000\000\000\000\008}\013\158\000\000\000\000\000\000\008}\000\000\000\000\008}\000\000\000\000\000\000\008}\021\226\000\000\000\000\001\230\000\000\008}\000\000\012\226\001\242\000\000\013\162\000\000\023\134\000\000\000\000\000\000\013\166\000\000\000\000\000\000\000\000\008}\000\000\000\000\021\018\013\170\000\000\000\000\000\000\000\000\000\000\002\"\000\000\021\022\000\000\021\026\000\000\000\000\000\n\000\000\000\000\000\000\021\030\004\161\000\000\000\000\008}\021\"\000\000\008}\021*\000\000\000\000\000\000\021.\000\000\000\000\000\000\000\000\000\000\0212\000\000\008}\000\000\000\000\000\000\000\000\008}\008}\008}\000\000\008}\008}\000\000\008}\000\000\0216\023\166\000\000\000\000\008}\000\000\000\000\008}\000\000\000\000\007\137\007\137\000\000\000\000\000\000\007\137\000\000\000\000\000\000\007\241\000\000\000\000\008}\000\000\000\000\021:\008}\008}\021>\000\000\000\000\007\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\241\021B\007\241\000\000\000\000\000\000\021F\000\n\021J\007\241\021N\021R\000\000\021V\007\241\000\000\000\000\007\241\000\000\021Z\000\000\007\241\021^\000\000\021\014\000\000\000\000\007\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\018\021b\000\000\000\000\000\000\021f\021j\007\241\023\166\021\022\000\000\021\026\000\000\000\000\000\000\000\000\000\000\000\000\021\030\000\000\000\000\000\000\000\000\021\"\000\000\000\000\021*\000\000\000\000\000\000\021.\000\000\007\241\000\000\000\000\007\241\0212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\186\007\241\000\000\000\000\000\000\0216\007\241\007\241\007\241\000\000\007\241\007\241\000\000\007\241\000\000\000\000\000\000\000\000\000\000\007\241\000\000\000\000\007\241\000\000\022j\000\000\000\000\000\000\000\000\000\000\021:\000\000\000\000\021>\000\000\000\000\021\018\007\241\000\000\000\000\000\000\007\241\007\241\000\000\000\000\021\022\021B\021\026\000\000\000\000\000\000\021F\000\n\021J\021\030\021N\021R\000\000\021V\021\"\000\000\000\000\021*\000\000\021Z\000\000\021.\021^\000\000\022\130\000\000\000\000\0212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\018\021b\000\000\000\000\000\000\021f\021j\0216\000\000\021\022\000\000\021\026\000\000\000\000\000\000\000\000\000\000\000\000\021\030\000\000\000\000\000\000\000\000\021\"\000\000\000\000\021*\000\000\000\000\000\000\021.\000\000\021:\000\000\000\000\021>\0212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021B\000\000\000\000\000\000\0216\021F\000\n\021J\000\000\021N\021R\000\000\021V\000\000\000\000\000\000\000\000\000\000\021Z\000\000\000\000\021^\000\000\021\014\000\000\000\000\000\000\000\000\000\000\021:\000\000\000\000\021>\000\000\000\000\021\018\021b\000\000\000\000\000\000\021f\021j\000\000\000\000\021\022\021B\021\026\000\000\000\000\000\000\021F\000\n\021J\021\030\021N\021R\000\000\021V\021\"\000\000\000\000\021*\000\000\021Z\000\000\021.\021^\000\000\021\014\000\000\000\000\0212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\018\021b\000\000\000\000\000\000\021f\021j\023&\000\000\021\022\000\000\021\026\000\000\000\000\000\000\000\000\000\000\000\000\021\030\000\000\000\000\000\000\000\000\021\"\000\000\000\000\021*\000\000\000\000\000\000\021.\000\000\021:\000\000\000\000\021>\0212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021B\021\014\000\000\000\000\024R\021F\000\n\021J\000\000\021N\021R\000\000\021V\021\018\000\000\000\000\000\000\000\000\021Z\000\000\000\000\021^\021\022\000\000\021\026\000\000\000\000\000\000\000\000\021:\000\000\021\030\021>\000\000\000\000\000\000\021b\000\000\000\000\021*\021f\021j\000\000\021.\000\000\021B\000\000\000\000\000\000\0212\021F\000\n\021J\000\000\021N\021R\000\000\021V\000\000\000\000\000\000\000\000\000\000\021Z\000\000\0216\021^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021b\000\000\000\000\000\000\021f\021j\000\000\000\000\000\000\021:\000\000\000\000\021>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021B\000\000\000\000\000\000\000\000\021F\024r\021J\000\000\021N\021R\000\000\021V\000\000\000\000\000\000\000\000\000\000\021Z\000\000\000\000\021^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021b\000\000\000\000\000\000\021f\021j\004M\004M\004M\004M\000\000\004M\000\000\004M\004M\000\000\004M\000\000\004M\000\000\004M\000\000\004M\004M\004M\004M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001r\000\000\000\000\000\000\004M\000\000\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\004M\001\014\000\000\001\022\000\000\001\030\0012\001:\001>\000\000\000\000\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\004M\000\254\001F\001\014\000\000\001\022\004M\001\030\0012\001:\001>\000\000\000\000\000\000\004M\001N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001^\000\000\001N\000\000\000\000\000\000\001j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001b\000\000\000\000\000\000\000\000\000\000\000\000\004M\001^\000\000\000\000\000\000\000\000\000\000\001j\000\000\000R\000V\000f\000\170\000\000\000\174\001b\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\n\000\000\000\000\000\000\000\000\000\000\000\000\001F\004M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001n\001N\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\000\000\001^\001n\000\000\012U\000\000\000\000\001j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001b\000\000\000\000\000\000\025\246\004V\000\000\000R\000V\000f\000\170\0021\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\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\001F\001\014\000\n\001\022\000\000\001\030\0012\001:\001>\000\000\000\000\000\000\000\000\001N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025\250\001F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001^\000\000\001N\013\225\000\000\000\000\000\000\000\000\000\000\003M\000\000\000\000\002)\000\000\001b\000\000\000\000\000\000\004R\004V\000\000\000\000\001^\000\000\013\225\000\237\000\000\000\000\000\237\000\000\000\000\011\030\000\000\000\000\000\000\000\000\001b\000\000\013\225\000\000\025\246\004V\000\000\000\000\013\225\013\225\006Z\000\000\011&\000\000\000\000\0112\000\213\000\000\013\225\000\213\000\000\013\225\000\000\013\225\006b\000\000\000\000\000\000\000\237\000\000\000\237\000\237\000\000\000\000\000\000\000\000\000\000\000\213\000\000\004b\006\130\000\000\000\000\006j\013\225\006z\000\000\000\000\000\000\000\000\000\205\006b\000\000\000\205\000\000\000\213\000\000\000\213\000\213\000\000\000\000\026\002\000\000\000\000\011>\000\000\006\138\000\213\000\000\000\000\006j\000\205\006z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\225\000\000\000\205\000\000\000\000\011B\000\205\013\225\000\205\000\205\000\213\000\000\000\000\000\000\000\000\011J\000\000\000\000\000\205\000\000\013\225\006j\006\146\000\205\000\209\000\237\000\000\000\209\000\000\006r\000\000\000\000\000\000\000\000\000\000\013\225\013\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\205\000\209\000\000\000\237\000\000\000\213\000\000\000\000\000\213\000\000\000\000\000\000\006r\000\237\006\154\000\209\000\000\000\225\000\000\000\209\000\225\000\209\000\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\213\000\209\000\000\000\000\006j\000\000\000\209\000\000\006Z\000\205\000\213\000\213\000\205\000\000\000\000\000\000\006r\000\000\000\000\000\000\000\000\000\217\006b\000\000\000\217\000\000\000\225\000\209\000\225\000\225\000\000\000\000\000\000\000\000\000\205\000\000\000\000\000\000\000\225\000\000\000\000\006j\006Z\006z\000\205\000\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006b\000\000\000\221\000\000\000\217\000\221\000\217\000\217\006\138\000\000\000\209\000\000\000\000\000\209\000\000\000\000\000\217\006r\000\000\006j\000\000\006z\000\000\006Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\209\000\229\006b\000\000\000\229\000\000\000\221\000\217\000\221\000\221\000\209\000\209\000\225\000\000\000\000\000\225\000\000\000\000\000\221\006r\000\000\006j\006Z\006z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006b\000\225\006R\000\000\000\229\000\245\000\229\000\229\006\138\000\000\000\217\000\225\000\225\000\217\000\000\000\000\006\130\006r\000\000\006j\000\000\006z\000\000\006Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\217\006R\006b\000\000\000\233\000\000\000\245\006\138\000\245\006\186\000\217\000\217\000\221\000\000\000\000\000\221\000\000\000\000\006\130\006r\000\000\006j\006Z\006z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006b\000\221\006R\000\000\000\233\000\241\000\233\000\233\006\138\000\000\006\146\000\221\000\221\000\229\000\000\nR\006\130\006r\nV\006j\000\000\006z\025N\006Z\nZ\000\000\000\000\000\000\000\000\n^\025R\000\000\000\000\000\000\000\000\000\229\000\157\006b\000\000\000\000\000\000\000\241\006\138\000\241\006\186\000\229\000\229\006\146\000\000\000\000\000\245\000\000\000\000\006\130\006r\000\000\006j\000\157\006z\000\000\016\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\242\000\245\000\149\000\000\000\000\016\138\000\157\000\157\006\138\000\000\006\146\006\194\006\154\000\233\000\000\000\000\000\157\006r\000\000\011\250\000\153\012\n\000\000\000\149\000\000\001\230\000\000\000\000\000\000\012\226\001\242\000\000\000\000\000\000\000\000\000\233\000\000\000\149\000\000\000\000\000\000\000\153\000\157\000\149\000\149\000\233\006\154\006\146\000\000\000\000\000\241\000\000\000\000\000\149\006r\000\153\011\250\000\000\000\149\000\000\000\n\000\153\000\153\000\000\000\000\004\161\000\000\000\000\000\000\000\000\000\169\000\153\000\241\000\000\011\250\000\000\000\153\000\000\000\000\000\149\000\000\000\157\000\241\006\154\000\000\000\000\000\000\000\000\012\002\000\000\000\000\011\234\000\000\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\157\000\000\000\000\000\000\011\242\000\000\000\161\008\233\008\233\000\000\000\169\000\169\008\233\000\000\000\000\000\157\000\157\000\149\000\000\000\000\000\169\000\000\000\000\011\250\012\002\012\n\000\000\011\234\000\000\000\000\000\000\000\000\000\000\000\165\000\000\000\153\000\000\000\149\000\000\000\000\000\000\011\242\012\002\000\000\000\000\000\000\012\026\000\161\000\161\000\000\000\000\000\000\000\149\000\149\011\234\000\153\000\000\000\161\000\173\000\000\011\250\000\000\012\n\000\000\000\000\000\000\000\000\000\000\011\242\000\000\000\153\000\153\000\000\000\000\000\165\000\165\011\226\000\000\000\000\011\234\000\000\000\000\000\000\000\161\000\165\000\169\000\000\011\250\000\000\012\n\000\000\000\000\012\002\011\242\000\000\000\000\000\000\011\234\000\000\000\173\000\173\000\000\000\000\000\000\000\000\000\169\000\000\000\000\000\000\012\018\012\026\011\242\011\250\000\000\012\n\000\000\000\000\000\189\012:\011\226\000\169\000\169\000\161\000\000\000\000\000\000\000\000\012\018\000\000\012\002\011\250\000\000\012\n\000\000\000\000\012\026\000\000\000\000\000\000\000\000\011\234\000\000\000\161\000\000\000\000\000\000\000\000\000\000\000\000\000\165\000\000\000\000\000\000\012\026\011\242\000\000\012\002\000\161\000\161\000\000\000\177\000\177\011\226\000\000\000\000\000\000\000\000\000\000\000\000\000\165\012\018\000\000\000\000\011\250\012\"\012\n\000\000\000\000\000\000\000\000\000\000\012\002\000\000\011\234\000\165\000\165\000\000\000\000\000\000\000\000\000\000\000\000\012\"\000\000\000\173\000\000\012\026\011\242\000\000\012\002\000\000\000\000\000\000\000\185\012:\000\000\000\000\000\000\000\000\000\173\000\173\000\000\000\189\012\018\000\000\000\000\011\250\000\000\012\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012B\012*\000\000\000\000\000\000\000\000\000\000\000\000\012\"\000\000\000\000\000\000\012\026\000\000\000\000\012\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\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\177\012*\000\000\000\000\000\000\000\000\000\000\000\000\012\"\000\000\000\000\000\000\000\000\000\000\000\000\012\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\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\012*"))
+    ((16, "\000\136\000\193\000\000\000\000\t\156\000\193\000\000\000\000\000\021\000\000\000\000\000\000\000\199\000\000\000\000\000\000\000\136\000\000\001^,4\000\000\018\212\018\212\000\000\000\000*L\018\212\000\000<\208\018\212\000\000\000\000\018\212\000\000\018\212\000\000\000%\000B\018\212\000\000\018\212\000\000\000\000\000\000*\180\018\212\000\000<\220\018\212\000\000\000\000\018\212\000\000\018\212\000\000\000|\000\244\018\212\000\000\018\212\000\000\018\212\000\000=\012\018\212\000\000\000\000\018\212\000\000\018\212\000\000\000w\000\000\000\000\018\212\000\000\018\212\000\000\000\000\018\212\000\000\018\212\000\000\000\252\001\180\018\212\000\000,4<\208I,\000\000\021@\002&-\176\000EI,\000\000\001\188\018\212\000\000I,\000\000\000w\003z/\226\000\000\000\0009\138\000\000=\212\000\000>`-\228-\228\0206\0206=\212\0206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000:\022-\228\000\000\000\000:\022\000\000:\022\000\000-\228\000\000\000\000\000\000\023\186\000w\000\000\0206\000\000+F-\228\027\232-\228\000\000\000\000\000\000\000\000\000\000\000\000\030\198-\228\031\192-\228 \030-\228!\024-\228\000\000-\228\000\000-\228!v-\228\"p-\228\"\206-\228#\200-\228$&/\226\002\"-\228\000\000\000\000\000\000\000\000\000\000-\228% -\228%~-\228&x-\228\000\000\000\000-\228\000\000\000\000\002x\000\000\000\000\000\000\000\000\001\182\018\212\000\000\000\252\018\212\000\000>\226\018\212\000\000\000\000\018\212\000\000\018\212\000\000\002\180\003\002\018\212\000\000\018\212\000\000\007\230\018\212\000\000?\022\018\212\000\000\000\000\018\212\000\000\018\212\000\000\0030\003\226\018\212\000\000\018\212\000\000\018\212\000\000?\"\018\212\000\000\000\000\018\212\000\000\018\212\000\000\000w\018\212\000\000\018\212\000\000\018\212\000\000\018\212\000\000\003\218\004\006\018\212\000\000= I,\003\238\018\212\000\000I\160IX\000\000\000\031\004\178\000w\004\028\004\230-\176\000\000\000\000\000)JZ\000\000\000\000\000\000\000\000\005\218\005X\000E\005\146-\176\001B-\176\000\000\000\000\004\234\000\000\005\006\005\210-\176\005\022\000\000\000\000\000\000\000)\000\000\0054\006.\000\000\0062\000\000\005\220\000\150I,\005p\018\212\000\000>\226I,\005t\018\212\000\000\000\000\000w\006Z\000\000\000\000\000\000\001v\0206\000\000-\228\005\130\000\000\000\000\000w\000\000\000\000\000\000\000\000\000\000\005\136\000\000\000\000\005\144\000\000\005\148=\212\000\000\000\000\000\000\000\000\000\000\000\000@\020-\228\000\000@\020\000\000@\020=\212\000\000\000\000@\176\000w\000\000\0206\005\156\000\000-\228\005\208\000\000\000\000\000w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000J\166-\228\000\000-\228\000\000\000\000\005\214\000\000\000\000:\192\006\142-\228\006\\\000\000\000\000=\212\000\000\000\000\000\000\000\000\000\000\000\000J\234=\212Kv=\212K\166=\212K\234=\212\000\000=\212\000\000=\212LD=\212L\156=\212L\246=\212M:=\212Mj/\226\0062=\212\000\000=\212M\174=\212N\008=\212N`\006\016\000\000\006\"\000\000\000\132-\228\000\000\000\132\000\000\000\000\002\016,4\000\000\002\016\000\000\000\000\006\"-\228\000\000\006&\000\000\0206\0064\000\000\000\000\007\000\000\000\0206\0068\000\000\000\000\006:\000\000\000\000\003z\000\000\007(\000\000?\022I,\006H\018\212\000\000\000\000\006\226\000\000\006f\018\212\000\000\000\000\000\t,4\000\000,4\000\000\006X\000\000\000\t\000\000\016\150\030\198\018\170\000\000\008d\018\170\000\000\018\170\018\170\000\000\000\000\018\170\000\000\018\170\000\000\006\156\006\200\018\170\000\000\018\170\000\000\t\002\018\170\000\000\018\212\018\170\000\000\000\000\018\170\000\000\018\170\000\000\006\160\006\210\018\170\000\000\018\170\000\000\018\170\000\000\018\226\018\170\000\000\000\000\018\170\000\000\018\170\000\000\000w\018\170\000\000\018\170\000\000\018\170\000\000\018\170\000\000\006\170\006\218\018\170\000\000,4\006\142\000\000\018\196I,\006\144\018\170\000\000\000\000\000=\000\000\002\028\000=\000\000\000\000\000\000\007|\000\000\001\020I,\006\154\018\170\000\000\018\212I,\006\158\018\170\000\000\000\000\007>\018\170\000\000\n\002\018\170\000\0000\174\018\170\000\000\000\000\018\170\000\000\018\170\000\000\006\212\007\002\018\170\000\000\018\170\000\000\n0\018\170\000\0000\198\018\170\000\000\000\000\018\170\000\000\018\170\000\000\006\220\007\012\018\170\000\000\018\170\000\000\018\170\000\0000\202\018\170\000\000\000\000\018\170\000\000\018\170\000\000\000w\018\170\000\000\018\170\000\000\018\170\000\000\018\170\000\000\006\230\007\018\018\170\000\000\018\226I,\006\194\018\170\000\000\000\000\002bI,\006\196\018\170\000\0000\198I,\006\206\018\170\000\000\000\000\000\000\000\000\000\000\000\000\007\150-\228\006\220\021\246\007\156-\228\006\224\007\158-\176\000\000\000\000-\176\000w\000\000\001\192-\228'\152\000\000@\246-\228\006\236\000\000\0206\006\236\000\000\006\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000A\160-\228\000\000A\160\000\000A\160B,\0206\006\246B,\000\000\000\000J\\\000w\000\000\0206\006\252\000\000-\228\007\022\000\000\000\000\000w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000-\228\001,-\228\007\026\000\000\000\000(B\026(&\196\007\230-\228\000\000\007\184\000\000\000\000\000w\000\000\000\000;\\\007n'\152\000\000\007p'\152\000\000\001L\000\000\000\000\023FB,\0312B,*\190B,90B,\000\000B,\000\000B,N\160B,N\194B,O\006B,OFB,O\192B,P\000B,P@B,P\146\000\000\007D\000\000\007T(\236\000\000)\150\007^)\150,\"\007`)\150\000\000\000\000\000\000\000\000\000\000\007V\000\000\008<\000\000\000w\000\000\001\192\008>\000\000\004F\008\020\000w\007j\008,-\176\007p\002*\000\000-\228\008R\000\000\005\252\006\174\0084-\176\007z\008`\000\000\002.-\228\008d\000\000\008l\000\000\005\220\000w\002\190-\228\008p\000\000\008t\000\000\000w\003t-\228\008v\000\000\008x\000\000\001\018\007\196\006\232\000\000B\184CD\0206\007\160\000\000\007\172CD\000\000\000\000\000\000\000\000\000\000\000\000C\208-\228\000\000C\208\000\000C\208CD\000\000\000\000\026\134\000w\000\000\0206\007\174\000\000-\228\007\172\000\000\000\000\000w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000,\204-\228\000\000-\228\000\000\007\186\000\000\000\132\000\000\000\000\000\000\000\000\000\0001\176CD1\224CD2\234CD3\026CD\000\000CD\000\000CD4$CD4TCD5^CD5\142CD6\152/\226\007\242CD\000\000CD6\200CD7\210CD8\002\0206\007\206\000\000\000\000-\228\000\000\008\180\000\000\001`\008\138-\228\008T\000\000\008\142-\228\008X\000\000\000\031\000\000\006\232\006\232\001`\000\000\001`\000\000\016\150\006\232\006\232\000\000\000\000\000\000\000\000\000\000\000\000\008\158-\228\007\228\021\246\022\198\000w\008\202\000\000\008\172/\226\008\214/\226\008\218-\228\008\002\021\246\021\246\000w\002^\001T\000\000\000\000\000\000\002^\000\000\003,\000w\000\000\000\000\008\004\000\000\000\000\000\000\008\238\000\000\008\242\000\000\000\000\t(\008\214-\228\008\"\t\002\000\000\008\232\0206\008,\021\246\000\000\000\000\008Z\000\000\000\015\000\000\005\134\000\000\000\000\001`\000\000\008\176\000\000\012p\004\020\000\000\012p\000\000\000\000\025\028\000\000\004\020\000\000\000\000\t\172\000\000\012p\000\000\008\248\0206\008>\t \000\000\000%\000\000\008\242\000w\008J\t\012-\176\008T\002\146\000\000-\228\t>\000\000\t>-\176\008\144\tv\000\000\004\028-\228\tz\000\000\t|\000\000\005\220\000w\004\156-\228\t~\000\000\t\128\000\000\000\000\000\000\t\172\000\000\000\000\004\020\000\000\006\232\000\000\000%\000\000\000\000\003^\022\198\000\000\003^\000\000\000\000\008\168\000\000\003:\000\003\021\246\000\000\004$\000O\004$\000\000\000\015\000\000\006\232\000\000\006\232\000\000\000\000\000\000\008\164\000\000\000\000\008\182\000\000\004\216\005\134\001V\004$\000\000\000\000\000\000\008J\000\000\006\232\000\000\004\216\000\000\000\000\003\022\000\015\016\150\000\000\000\015\000\000\008J\016\150\000\000\000\000\008J\000\000\000\000\008\182\000\000\000\000\008\188\000\000\004\222\006\232\000\000\004\222\000\000\000\000\t8\000\000\004\020\000\000\006\232\000\000\000\000\000\000\017\2368\254\000\000\t\160\000\000\017\236\t\164\000\000\t\168\000\000-\176\000w\003\140\000\000-\228\t\172\000\000\005\166\t~\000w\008\214\t\150-\176\008\220\003\180\000\000-\228\t\188\000\000\003\244\000\000-\228\t\196\000\000\005\220\000w\004,\000\000-\228\t\198\000\000\005*\017\236\000\000\025\028\004\192\000\000-\228\t\214\000\000\000\000\000\000\003\250\000\000\t\186\0206\t\006\t\236\000\000\007\n\000\000\t\190\000w\t\"\t\234-\176\t0\005\156\000\000-\228\n\020\000\000\005\160\000\000-\228\n\022\000\000\005\220\000w\005\172\000\000-\228\n\024\000\000\005*\000\000\000\000\t>\000\000\003\250\008\230\t\184\000\000\000\000\000\000\t\186\000\000\0020\000\031\000\000\016\150\n\012\000\000\000\000-\228\tn\006\232\000\000\tH\000\000\001\018\000\000-\176\000\000\000\000\002\190\016\150\000\000\016\150\000\000\t6\000\000\002\190\000\000-\228\003\138-\228\000\000-\228\000\000\tN\000\000\003\138\000\000-\228\003\138\tP\000\000\021\246\004 \021\246\000\000\021\246\000\000\tV\000\000\004 \000\000-\228\003\138\tX\000\000-\176\004\226-\176\000\000-\176\000\000\t^\000\000\004\226\000\000-\228\003\138\t`\000\000\000\000\025\028\000\000\000\000\t\206.\194\000\000\000\000\000\000\000\000\000\000\t\170\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\202.\194\000\000\004\132\000x\000\000\t\172\000\193\000\000\000\000\000\000\004\130\000x\000\000\000\000\000\000\000\000\n\n\000\000\000\000\000\000\000\000\027\232\029J\000\000D\142\000\000.\194\000\000\0016.\194\000\000\000?\000K\000K\000\000\002L\000K\000\000\t\136\000\000\000\000\000\000\000\000\n\024\000\000\029\196\000\000\030\198.\194\000\000\000W.\194\000\000\n\028\000\000.\194\n \000\000F\022/P\n$\000\000\n(\000\000F\194;\216.\194\t\166.\194\n0\000\000\n2\000\000\n6\000\000,4\000\000\002\134,4\000\000\t\180\018\170\000\000\000\207.\194\000\000\005l.\194\000\000\003L\n\182\000\000\n\184\000\000.\194.\194\t\216\000\000\000\000\000\000\000\000\000\000\000\000\nt\000\000G\028.\194\nv\000\000\nx\000\000.\194\nz\000\000.\194\n$\000\193\000\000\000\000\005\230.\194\000\000\003L\000\000\n\128\000\000.\194\n\130\000\000D\252/P.\194\n\000.\194\n\134\000\000\n\136\000\000E\168\000\000\000\000\006\026.\194\000\000\002\194\000L\000K\n\008\000\000\000\000\000N\000N\000\000\000\000\000\000\003\186\000N\000\000\n\n\000\000\000\000\000\000\000\000\000\000\000\000.\194\000\000\006f.\194\000\000\001`\004@\000\193\n\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\156\000\000\n\162\000\000.\194\n\164\000\000G\148.\194\n\172\000\000\n\182\000\000\021\140\n^G\238\018\196\000\000.\194\n\190\000\000\n\192\000\000\n\144\021\140.\194\n\200\000\000.\194\n\210\000\000\n\212\000\000.\194\nR.\194\n\224\000\000\n\228\000\000\000\193\nV\000\000\000\000\025\028\000\000\000\000\002z\011F\000\000\000\000\002\174\000\000\000\000\000\000-\228\000\000\000\000\000\000\002\194\000\000\004\248\000\000\000\000\000\000\004$-\176-\176-\176\000\000\002P\002P\002P\002P\000\000\000\000\000\000\000\000\000\000\000\000\001`\016\150\011<\013\210\000O\000\000\000\000\001&\000\000\t\172\000\000'\152\nn\000\000\001`\016\150\n\130\0154\000\000\001`\013\210\000\000\000\000\000\000-\176\006v\000\000\000\000\000\000\n\214\0014\011PI\160\000\000\004\136J\138\000\000\000\000\000\000\t~\011@\000w\000\000\004\136\000\000\004\176I\160\000\000\000\000\n\152\011P\006\232\n\150\000\000\001&\000\000\t\172\000\000;\002\004<\000\000\000\000\011<\000\000\000\000\002z\000\000\005\016\000\000\000\000\000\000-\228\000\000\002\194\000\000\005N\000\000\000\000\000\000\005\134\000\000\011\014\002\144\011\014\000\000\006\232\011\014\000\000\002\144\000\000\006\232\000\000\006\232\000\000\006\232\000\000\t:\000\000\000\000\000\000\000\000\000\000\006\232\000\000\002\144\000\000\006\232\000\000C\170\000\000\000\000\nj\n\200\000\193\005p\011d\003\004\000\000\003\004\011\140\000\000\011\142\000\000\011\144\000\000\000\000\004p\003\004\007r\003\004\000\000\000\000\004\174\n\152\000\000\n\216\000\193\005p\n\160\000\000\nj\011\164\000\000\n|\003P\011\182\000\215\011\182\000\000\000\000\002\030\000\193\000\000\001\152\000\000\000\000\002\178\000\000\n\178\000\000\000\000\000\000\n\238\000\193\005p\n\184\000\000\000\000\nj\n|\003P\002\030\001\152\002\178\n\186\000\000\n|\003P\002\030\001\152\002\178\n\192\000\000\000\193\000\000\011\194\001V\n\252\000\193\011X\000\000\011\000\000\193\011\\\000\000"), (16, "\011\249\011\249\011\249\011\249\011\249\011\249\011\249\011\249\011\249\011\249\011\249\021&\011\249\011\249\011\249\011\249\011\249\011\249\011\249\011\249\011\249\011\249\008}\014\218\011e\022\210\011\249\015\002\000\n\011e\011e\000&\015\014\011\249\001\"\016\138\022\006\011\249\011\249\001~\011\249\011e\007\189\011\249\022\002\007\150\016\022\011\249\011\249\011\249\000*\016\142\008\210\027\226\004>\014\218\007\189\011\157\011\249\001\"\015\006\011\249\011\249\006}\015\014\000\n\011e\011\249\011\249\006\173\011\249\001\230\011\249\0007\000;\012\226\001\242\011\249\001\"\011\249\011\249\011\249\011\249\011\249\015\138\017.\021&\011\249\011\249\011\249\000\n\011\249\011\249\011\249\000\n\011\249\011\249\011\249\011\249\000\006\000\"\021\146\011\249\011\249\016&\003\237\000\n\007\189\021\150\000\n\007\158\023\202\023\222\011\249\011\249\011\249\018Z\022N\011\249\011\249\011\249\011\249\018^\011\249\011\157\011\249\018b\000\150\011\249\006\173\004~\011\249\011\249\012\165\012\165\003:\016&\003B\012\165\003R\004^\017^\011\249\006\026\005\253\011\249\003Z\006\222\004\222\011\249\011\249\011\249\011\249\021\162\011\249\023\226\011\249\000\154\007\189\019\214\011\249\011\249\011\249\000\n\011\249\006}\011\249\011\249\001\"\011\249\007\189\011\249\011\249\006%\003b\011\249\011\249\006\133\006\133\006\133\006\133\006\133\006\133\006\133\006\133\006\133\006\133\006\133\000.\006\133\006\133\006\133\006\133\006\133\006\133\006\133\006\133\006\133\006\133\000\n\016\022\011\197\028\130\006\133\014\222\014\238\014\254\000\226\003r\014\218\006\133\008\246\022\234\022\242\006\133\006\133\023\198\006\133\015\014\028\146\006\133\003.\0036\000\170\006\133\000\174\006\133\003z\003\190\006U\003\198\001\"\003\214\014\218\003\222\006\133\003\230\003\242\011n\003\250\006\029\006\029\015\014\001\230\006\133\006\133\000\230\001\238\001\242\006\133\006\133\024.\004\213\004\002\006\133\011\205\006\133\006\133\006\133\006\133\006\133\021\130\000\n\001\"\006\133\006\133\006\133\004\n\006\133\006\133\006\133\001R\006\133\006\133\006\133\006\133\008\153\011}\000\n\006\133\006\133\000N\007\182\020R\020z\020\138\020\178\020\194\020\234\013V\016&\006\133\006\133\011v\000\n\006\133\006\133\006\133\006\133\020\002\006\133\004\026\006\133\nR\005\237\006\133\nV\006\013\006\133\006\133\025r\011\170\nZ\015\146\016&\021\246\011\130\n^\025v\012\165\012\165\004\138\006\133\011\213\012\165\003i\006\133\006\133\006\133\006\133\012\210\006\133\011}\006\133\004\213\027\254\008\153\006\133\006\133\006\133\004u\028\002\001V\006\133\006\133\006\246\006\133\005\030\006\133\006\133\001v\004e\006\133\006\133\006\157\006\157\006\157\006\157\006\157\006\157\006\157\006\157\006\157\006\157\006\157\n\158\006\157\006\157\006\157\006\157\006\157\006\157\006\157\006\157\006\157\006\157\006\157\004u\n*\006\157\006\157\016\022\016\170\011m\012\158\006\157\006\157\006\157\006\157\001\138\014\218\006\157\006\157\023\198\006\157\006\157\025\022\006\157\001\"\015\014\0202\006\157\006\149\006\157\011}\006\157\006\157\006\149\006\149\006\157\006\157\006\157\006\157\006\157\006\157\006\157\006\157\002\206\012\214\027\242\013\002\006\157\006\157\006\157\006\157\004\161\006\157\006M\023\218\000\n\008\218\006\157\025\022\006\157\027j\006\157\006\157\006\157\006\157\012\158\019\234\006\157\006\157\006\157\006\149\006\157\006\157\006\157\016\138\006\157\006\157\006\157\006\157\008\145\022\018\027n\027\218\006\157\022\234\022\242\006\157\011\141\027r\015\142\016\142\020:\016\022\006\021\006\157\006\157\016\174\016&\006\157\006\157\006\157\006\157\006\246\006\157\006\157\006\157\003\026\028\n\006\157\022\186\001\230\006\157\006\157\006\157\012\226\001\242\011u\003f\013\"\006\157\006\222\011}\006\157\022\250\005\229\006\157\008\189\008\189\020Z\006\157\006\157\008\189\006\157\018\150\006\157\003j\006\157\012\158\017:\008\145\006\157\025'\025+\001\162\005}\000\n\025/\006\157\008\161\006\157\027z\006\157\006\157\018\198\006=\006\157\006\157\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\021\018\001\014\025^\001\022\nZ\001\030\0012\001:\001>\n^\025b\003\170\021\022\006\141\027\130\nb\006M\018\218\006\141\006\141\0196\021\026\001F\021\030\015\170\020b\001\166\nr\003\241\013^\006\141\021\"\013b\016\022\006U\020\146\001N\011}\014\202\021.\008\161\013>\014\218\0212\005\229\018\246\026\135\001\178\006\222\0216\025\150\015\014\006u\018\154\026\139\006\141\015\"\013j\025\194\025\206\012\158\015&\017j\005\229\026\142\021:\001\218\005\229\001\222\004\177\001b\016\030\015.\018\202\012\182\0242\013~\001\230\0152\003\174\013\130\011\138\001\242\012\165\013\134\013\138\n\134\013\142\0065\004\021\021>\027\146\0156\021B\001\230\023\242\004\014\004\018\012\226\001\242\020\154\011}\011\133\n\226\013\146\018\222\021F\015:\015>\013\150\015B\021J\000\n\021N\015V\021R\021V\004\141\021Z\019\026\015b\013\158\027\146\016&\021^\016\210\000\n\021b\004&\000\n\006U\025\226\020\202\018\250\015\130\011\221\n\241\004B\015\134\015\194\004\177\n\138\021f\013\162\012\158\015\198\021j\021n\004J\013\166\004\177\004\177\012\165\012\165\004N\004\177\015\206\012\165\013\170\017\174\006\165\006\165\018.\006E\002\"\006\165\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\021\142\001\014\025^\001\022\nZ\001\030\0012\001:\001>\n^\025b\004\021\016\242\027\162\021\174\nb\004\021\004\021\011\221\n\241\020\210\026\"\001F\019\n\027\154\005\245\001\166\nr\004\021\013^\019\030\012\158\013b\003.\0036\000\170\001N\000\174\014\202\003z\003\190\026N\003\198\004z\003\214\003]\003\222\001\178\003\230\003\242\014\218\003\250\019r\004\021\019\134\027\154\015\"\013j\025\194\015\014\019\162\015&\017\178\004\130\006]\004\002\001\218\006e\001\222\004\193\001b\016\030\015.\018\170\004\154\011\181\013~\001\230\0152\004\n\013\130\011\138\001\242\006-\013\134\013\138\n\134\013\142\004\162\025O\025S\016\"\0156\001\230\025W\004\166\004\174\012\226\001\242\004v\005\013\026\167\026\171\n\226\013\146\006m\026\175\015:\015>\013\150\015B\004\198\000\n\004\026\015V\nR\004\241\004\141\nV\005\013\015b\013\158\025r\001\"\nZ\004\202\027b\004\210\000\n\n^\025v\016&\026\199\026\203\015\130\022\222\011\189\026\207\015\134\015\194\019v\n\138\019\138\013\162\004\230\015\198\004\250\005\014\019\166\013\166\004\017\004\193\005.\005R\000\n\000\n\015\206\005^\013\170\005f\006\181\006\181\011\165\005\186\002\"\006\181\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\012\182\001\014\025^\001\022\nZ\001\030\0012\001:\001>\n^\025b\005\013\005\t\0039\005\198\nb\006\018\0039\006\"\023b\001\230\006*\001F\011\173\012\226\001\242\001\166\nr\004\237\013^\005\013\005\t\013b\t\"\t*\000\170\001N\000\174\014\202\tn\t\178\006\170\t\186\006\206\t\202\023\186\t\210\001\178\t\218\t\230\014\218\t\238\006\214\007\014\007\026\000\n\015\n\013j\019R\015\014\004\161\015&\007&\0072\007>\t\246\001\218\007J\001\222\004\221\001b\015*\015.\007^\019V\007n\013~\001\230\0152\t\254\013\130\011\138\001\242\024\"\013\134\013\138\n\134\013\142\007~\004\013\007\134\012\173\0156\007\171\001\230\007\246\007\250\008:\012\226\001\242\005\t\008>\008\158\n\226\013\146\008\162\008\178\015:\015>\013\150\015B\008\194\000\n\n\014\015V\008\238\008\254\004\141\t\018\005\t\015b\013\158\004\013\tZ\003~\t^\003\134\t\158\003\150\000\n\t\162\016&\n\002\n\006\015\130\003\158\n\026\n2\015\134\015\194\004\221\n\138\nF\013\162\nf\015\198\nn\nv\n~\013\166\004\221\004\221\n\130\n\182\n\194\004\221\015\206\n\202\013\170\011\014\008\197\008\197\011.\003\166\002\"\008\197\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\011:\001\014\011~\001\022\nZ\001\030\0012\001:\001>\n^\007\202\004\013\007\210\011\150\007\226\nb\004\013\004\013\011\162\011\190\003\182\007\234\001F\011\202\012R\012Z\001\166\nr\004\013\013^\012j\012v\013b\012\146\012\154\012\174\001N\007\197\014\202\012\186\012\194\016\022\012\198\012\206\004\013\012\222\012\238\001\178\012\246\007\242\014\218\007\197\012\250\004\013\013\n\027\154\015\n\013j\013\018\015\014\013*\015&\0132\013F\013N\013Z\001\218\013r\001\222\004\213\001b\015*\015.\013z\013\206\013\218\013~\001\230\0152\014\"\013\130\011\138\001\242\008\002\013\134\013\138\n\134\013\142\014\154\008\014\014\194\008\022\0156\008&\014\214\014\226\014\234\014\242\014\250\015F\008.\015N\007\197\n\226\013\146\015^\015f\015:\015>\013\150\015B\015n\000\n\015v\015V\nR\015~\015\186\nV\019R\015b\013\158\025r\015\202\nZ\015\210\015\222\015\226\0086\n^\025v\016&\015\234\015\238\015\130\019V\015\246\015\254\015\134\015\194\016\014\n\138\0162\013\162\016v\015\198\016~\006\246\016\130\013\166\016\146\004\213\016\154\007\197\016\158\001\230\015\206\016\166\013\170\012\226\001\242\016\138\008F\016\182\002\"\007\197\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\016\142\001\014\016\190\001\022\nZ\001\030\0012\001:\001>\n^\016\198\011\149\011\149\000\n\016\202\nb\016\218\016\226\016\250\017\002\001\230\017R\001F\017\154\012\226\001\242\001\166\nr\017\166\013^\018\026\018&\013b\018F\0266\018r\001N\018~\014\202\018\134\t.\018\162\t6\018\174\tF\018\182\018\186\001\178\018\194\018\210\014\218\tN\006M\018\230\019\002\000\n\015\n\013j\001\"\015\014\004\161\015&\019&\tr\019>\tz\001\218\t\138\001\222\019F\001b\015*\015.\019J\t\146\019Z\013~\001\230\0152\tV\013\130\011\138\001\242\019b\013\134\013\138\n\134\013\142\019f\000\n\019n\012\173\0156\019~\019\146\019\174\019\194\019\210\019\226\019\250\011\149\020\n\t\154\n\226\013\146\020\022\020G\015:\015>\013\150\015B\011\149\000\n\tf\015V\004\129\011\149\011\149\020o\020\135\015b\013\158\020\167\020\191\004\017\0039\020\223\020\247\021\014\0039\027V\016&\021*\021\154\015\130\021\199\t\170\022\030\015\134\015\194\000\022\n\138\0223\013\162\022[\015\198\022g\011\149\022w\013\166\022\127\022\146\011\149\011\149\022\155\022\163\015\206\022\171\013\170\022\198\012\173\012\173\022\238\022\246\002\"\012\173\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\023\006\001\014\025^\001\022\nZ\001\030\0012\001:\001>\n^\025b\023#\0233\023;\023G\nb\023R\023w\023\131\023\150\023\159\023\167\001F\027\178\023\210\023\254\001\166\nr\024:\013^\000\n\024[\013b\027\198\024c\024o\001N\004\129\014\202\024\127\028\030\027\202\004\129\004\129\024\135\024\146\004\017\001\178\024\167\024\175\024\182\004\017\004\017\024\195\004\129\004\129\015\"\013j\024\207\024\215\024\226\015&\026\222\004\017\027b\024\235\001\218\024\243\001\222\024\255\001b\016\030\015.\025\026\025\162\025\202\013~\001\230\0152\004\129\013\130\011\138\001\242\025\218\013\134\013\138\n\134\013\142\004\017\026\014\026\022\026:\0156\026^\026b\026j\026\147\027Z\027f\027v\027~\027\134\027\175\n\226\013\146\027\182\027\195\015:\015>\013\150\015B\027\206\000\n\027\222\015V\028\019\028\"\004\141\028/\028S\015b\013\158\028o\028~\028\134\028\143\028\150\028\159\000\000\000\000\000\000\000\000\000\000\000\000\015\130\000\000\000\000\000\000\015\134\015\194\000\000\n\138\000\000\013\162\000\000\015\198\000\000\000\000\000\000\013\166\000\000\000\000\000\000\000\000\000\000\000\000\015\206\000\000\013\170\000\000\008\169\008\169\000\000\000\000\002\"\008\169\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\000\000\001\014\000\000\001\022\nZ\001\030\0012\001:\001>\n^\000\000\000\000\000\000\000\000\000\000\nb\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\001\166\nr\000\000\013^\000\000\000\000\013b\000\000\000\000\000\000\001N\000\000\014\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\"\013j\000\000\000\000\000\000\015&\016:\000\000\000\000\000\000\001\218\000\000\001\222\000\000\001b\016\030\015.\000\000\000\000\000\000\013~\001\230\0152\000\000\013\130\011\138\001\242\000\000\013\134\013\138\n\134\013\142\000\000\000\000\000\000\012\137\0156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\226\013\146\000\000\000\000\015:\015>\013\150\015B\000\000\000\n\000\000\015V\000\000\000\000\000\000\000\000\000\000\015b\013\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\015\130\000\000\000\000\000\000\015\134\015\194\000\000\n\138\000\000\013\162\000\000\015\198\000\000\000\000\000\000\013\166\000\000\000\000\000\000\000\000\000\000\000\000\015\206\000\000\013\170\000\000\012\137\012\137\000\000\000\000\002\"\012\137\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\000\000\001\014\000\000\001\022\nZ\001\030\0012\001:\001>\n^\000\000\000\000\000\000\000\000\000\000\nb\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\001\166\nr\000\000\013^\000\000\000\000\013b\000\000\000\000\000\000\001N\000\000\014\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\"\013j\000\000\000\000\000\000\015&\025\166\000\000\000\000\000\000\001\218\000\000\001\222\000\000\001b\016\030\015.\000\000\000\000\000\000\013~\001\230\0152\000\000\013\130\011\138\001\242\000\000\013\134\013\138\n\134\013\142\000\000\000\000\000\000\000\000\0156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\226\013\146\000\000\000\000\015:\015>\013\150\015B\000\000\000\n\000\000\015V\000\000\000\000\000\000\000\000\000\000\015b\013\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\015\130\000\000\000\000\000\000\015\134\015\194\000\000\n\138\000\000\013\162\000\000\015\198\000\000\000\000\000\000\013\166\000\000\000\000\000\000\000\000\000\000\000\000\015\206\000\000\013\170\000\000\012\213\012\213\000\000\000\000\002\"\012\213\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\000\000\001\014\000\000\001\022\nZ\001\030\0012\001:\001>\n^\000\000\000\000\000\000\000\000\000\000\nb\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\001\166\nr\000\000\013^\000\000\000\000\013b\000\000\000\000\000\000\001N\000\000\014\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\"\013j\000\000\000\000\000\000\015&\025\166\000\000\000\000\000\000\001\218\000\000\001\222\000\000\001b\016\030\015.\000\000\000\000\000\000\013~\001\230\0152\000\000\013\130\011\138\001\242\000\000\013\134\013\138\n\134\013\142\000\000\000\000\000\000\000\000\0156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\226\013\146\000\000\000\000\015:\015>\013\150\015B\000\000\000\n\000\000\015V\000\000\000\000\000\000\000\000\000\000\015b\013\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\015\130\000\000\000\000\000\000\015\134\015\194\000\000\n\138\000\000\013\162\000\000\015\198\000\000\000\000\000\000\013\166\000\000\000\000\000\000\000\000\000\000\000\000\015\206\000\000\013\170\000\000\012\209\012\209\000\000\000\000\002\"\012\209\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\000\000\001\014\000\000\001\022\nZ\001\030\0012\001:\001>\n^\000\000\000\000\000\000\000\000\000\000\nb\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\001\166\nr\000\000\013^\000\000\000\000\013b\000\000\000\000\000\000\001N\000\000\014\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\"\013j\000\000\000\000\000\000\015&\017\230\000\000\000\000\000\000\001\218\000\000\001\222\000\000\001b\016\030\015.\000\000\000\000\000\000\013~\001\230\0152\000\000\013\130\011\138\001\242\000\000\013\134\013\138\n\134\013\142\000\000\000\000\000\000\000\000\0156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\226\013\146\000\000\000\000\015:\015>\013\150\015B\000\000\000\n\000\000\015V\000\000\000\000\000\000\000\000\000\000\015b\013\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\015\130\000\000\000\000\000\000\015\134\015\194\000\000\n\138\000\000\013\162\000\000\015\198\000\000\000\000\000\000\013\166\000\000\000\000\000\000\000\000\000\000\000\000\015\206\000\000\013\170\000\000\000R\000V\000f\000\170\002\"\000\174\nR\000\178\000\246\nV\000\254\000\000\001\014\000\000\001\022\nZ\001\030\0012\001:\001>\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\001F\000\000\000\000\000\000\001\166\000\000\000\000\013^\000\000\000\000\013b\000\000\000\000\000\000\001N\000\000\018f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018v\013j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\001b\000\000\000\000\000\000\000\000\000\000\013~\001\230\000\000\000\000\013\130\001\238\001\242\000\000\013\134\013\138\n\134\013\142\000\000\000\000\000\000\000\000\000\000\000\000\007\214\005\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\226\013\146\000\000\000\000\005\221\005\221\013\150\000\000\005\221\000\n\000\000\005\221\008\026\005\221\000\000\005\221\000\000\005\221\013\158\008Z\005\221\000\000\005\221\005\221\000\000\005\221\005\221\000\000\005\221\nu\nu\005\221\005\221\nu\005\221\005\221\005\221\000\000\n\138\000\000\013\162\005\221\018z\005\221\005\221\000\000\013\166\000\000\005\221\005\221\005\221\005\221\005\221\018\130\005\221\013\170\005\221\005\221\000Z\005\221\000\000\002\"\005\221\005\221\000\000\005\221\008\186\000\000\nu\005\221\005\221\000Z\000\000\005\221\t\n\005\221\000\000\000\000\005\221\000Z\005\221\n\018\005\221\005\221\000\000\005\221\000Z\000\000\000\000\000\000\005\221\000\000\000\000\nu\005\221\005\221\000\000\000\000\005\221\000\000\000\000\000\000\000\000\005\221\005\221\005\221\005\221\005\221\005\221\000\000\005\221\005\221\000\000\005\221\000\000\005\221\005\221\005\221\005\221\005\221\005\221\005\221\000\000\005\221\005\221\005\221\005\221\000\000\005\221\005\221\005\221\005\221\005\221\005\221\005\221\005\221\005\221\005\221\005\221\005\221\005\221\000\000\000\000\000\000\005\221\000\000\000\000\005\221\000\000\000\000\000\000\005\221\005\221\nu\000\000\005\221\000\000\000\000\000\000\005\221\005\221\005\221\005\221\000\000\005\221\005\221\005\221\005\221\005\221\000\000\000\000\000\000\000\000\005\221\005\221\000\000\000\000\000\000\005\221\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\001F\000\000\000\000\000\000\001\166\000\000\000\000\001\170\000\000\000\000\001\174\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\178\000\000\000\000\001\182\000\000\000\000\000\000\000\000\000\000\001\206\001\202\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\001b\000\000\000\000\000\000\000\000\000\000\001\226\001\230\000\000\000\000\001\234\001\238\001\242\002F\001\246\001\250\000\000\001\254\000\000\000\000\000\000\000\000\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\002\000\000\000\000\000\000\000\000\002\006\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\014\004M\004M\004M\004M\000\000\004M\000\000\004M\004M\002\018\004M\000\000\004M\000\000\004M\000\000\004M\004M\004M\004M\000\000\002\022\000\000\000\000\000\000\000\000\000\000\002\026\000\000\001r\004a\000\000\000\000\004M\000\000\000\000\002\030\000\000\000R\007\190\007\198\000\170\002\"\000\174\000\000\008\n\008N\004M\008V\021\018\008f\000\000\008n\000\000\008v\008\130\001:\008\138\000\000\000\000\000\000\021\022\000\000\000\000\000\000\000\000\000\000\004M\000\000\000\000\021\026\008\146\021\030\004M\000\000\000\000\000\000\000\000\000\000\000\000\021\"\004M\000\000\000\000\000\000\024\142\000\000\000\000\021.\000\000\000\000\000\000\0212\000\000\000\000\000\000\000\000\000\000\0216\000\000\000\000\000\000\000\000\000\000\000\000\008\170\000\000\000\000\000\000\000\000\022\174\000\000\000\000\000\000\021:\023\170\000\000\nb\000\000\008\182\000\000\000\000\000\000\004M\000\000\000\000\000\000\000\000\001\166\nr\000\000\013^\000\000\000\000\013b\000\000\000\000\000\000\000\000\021>\014\202\000\000\021B\000\000\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\000\000\000\000\021F\000\000\000\000\015R\013j\021J\000\n\021N\015&\021R\021V\004M\021Z\001\218\000\000\001\222\000\000\000\000\021^\015.\000\000\021b\000\000\013~\001\230\0152\000\000\013\130\011\138\001\242\000\000\013\134\013\138\000\000\013\142\000\000\021f\000\000\000\000\0156\021j\021n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\226\013\146\000\000\000\000\015:\015>\013\150\015B\000\000\000\n\000\000\015V\000\000\000\000\000\000\000\000\nb\015b\013\158\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\166\nr\000\000\013^\015\130\000\000\013b\000\000\015\134\015\194\000\000\000\000\014\202\013\162\000\000\015\198\000\000\000\000\000\000\013\166\000\000\001\178\000\000\000\000\000\000\000\000\015\206\000\000\013\170\000\000\013f\013j\000\000\000\000\002\"\015&\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\015.\000\000\000\000\011\226\013~\001\230\0152\000\000\013\130\011\138\001\242\000\000\013\134\013\138\000\000\013\142\000\000\000\000\000\000\000\000\0156\000\000\000\000\000\000\000\000\011\234\000\000\000\000\000\000\000\000\000\000\n\226\013\146\000\000\000\000\015:\015>\013\150\015B\011\242\000\n\000\000\015V\000\000\000\000\0122\012:\000\000\015b\013\158\000\000\000\000\000\000\000\000\000\000\012\018\000\000\000\000\011\250\000\000\012\n\013\221\015\130\000\000\013\221\000\000\015\134\015\194\000\000\000\000\000\000\013\162\000\000\015\198\000\000\000\000\000\000\013\166\000\000\000\000\000\000\012\026\000\000\013\221\015\206\000\000\013\170\013\221\000\000\000\000\002:\013\221\002\"\000\000\000\000\000\000\000\000\013\221\000\000\000\000\013\221\013\221\000\000\013\221\013\221\000\000\000\000\002B\000\000\013\221\005&\000\000\000\000\013\221\000\000\000\000\013\221\000\000\013\221\013\221\012\"\000\000\000\000\000\000\000\000\000\000\000\000\012\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\221\005U\013\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\221\000\000\000\000\012B\012*\000\000\000\000\0052\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\221\013\221\000\000\013\221\013\221\0056\000\000\013\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005>\000\000\000\000\000\000\000\000\013\221\000\000\000\000\013\221\013\221\013\221\013\221\000\000\000\000\000\000\000\000\013\221\013\221\013\221\000\000\013\221\013\221\013\221\001=\001=\001=\001=\000\000\001=\000\000\001=\001=\000\000\001=\000\000\001=\000\000\001=\000\000\001=\001=\001=\001=\000\000\000\000\004\237\000\000\021\002\004\237\000\000\000\000\000\000\000\000\000\000\000\000\001=\001=\001=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001=\000\000\004\237\000\000\000\000\001=\004\237\000\000\001=\004\237\004\237\000\000\001=\000\000\000\000\021\006\004\237\000\000\001=\004\237\004\237\000\000\004\237\004\237\000\000\001=\004\237\000\000\004\237\004\237\001=\000\000\004\237\000\000\000\000\004\237\000\000\004\237\004\237\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\004\237\001=\004\237\000\000\001=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\237\000\000\000\000\000\000\001=\000\000\000\000\004\237\000\000\001=\000\n\001=\000\000\000\000\001=\000\000\021\n\000\000\000\000\000\000\000\000\000\000\001=\000\000\000\000\001=\004\237\004\237\000\000\004\237\005\t\004\237\000\000\004\237\000\000\000\000\000\000\000\000\000\000\000\000\001=\004\237\000\000\004\241\001=\001=\004\241\000\000\000\000\004\237\000\000\004\237\000\000\000\000\000\000\021\202\000\000\004\237\004\237\004\237\000\000\004\237\004\237\004\237\000\000\004\241\000\000\000\000\000\000\004\241\000\000\000\000\004\241\004\241\000\000\000\000\000\000\000\000\000\000\004\241\000\000\000\000\004\241\004\241\000\000\004\241\004\241\000\000\000\000\004\241\0141\004\241\004\241\0141\000\000\004\241\000\000\000\000\004\241\000\000\004\241\004\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0141\000\000\000\000\000\000\0141\000\000\000\000\013\190\0141\004\241\000\000\004\241\000\000\000\000\0141\000\000\000\000\0141\0141\000\000\0141\0141\004\241\000\000\013\198\000\000\0141\013\210\000\000\004\241\0141\000\000\000\000\0141\000\000\0141\0141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\241\004\241\000\000\004\241\005\013\004\241\000\000\004\241\0141\000\000\0141\000\000\000\000\000\000\000\000\004\241\000\000\000\000\000\000\000\000\004\241\0141\000\000\004\241\000\000\004\241\000\000\000\000\013\222\000\000\000\000\004\241\004\241\004\241\000\000\004\241\004\241\004\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0141\0141\000\000\0141\000\000\013\226\000\000\0141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0141\000\000\0141\000\000\000\000\000\000\000\000\000\000\0141\0141\0141\000\000\0141\0141\0141\nq\nq\nq\nq\000\000\nq\000\000\nq\nq\000\000\nq\000\000\nq\000\000\nq\000\000\nq\nq\nq\nq\000\000\000\000\001\137\000\000\000\000\001\137\000\000\000\000\000\000\000\000\000\000\000\000\nq\nq\nq\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nq\000\000\001\137\000\000\000\000\nq\001\137\000\000\021\218\000\000\001\137\000\000\021\226\000\000\000\000\000\000\001\137\000\000\nq\001\137\001\137\000\000\001\137\001\137\000\000\nq\000\000\000\000\001\137\000\000\nq\000\000\001\137\000\000\000\000\001\137\000\000\001\137\001\137\nq\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\137\nq\001\137\000\000\nq\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\137\000\000\000\000\000\000\nq\000\000\000\000\000\000\000\000\nq\000\000\nq\000\000\000\000\nq\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nq\000\000\000\000\nq\001\137\002V\000\000\001\137\001\137\000\000\000\000\001\137\000\000\000\000\000\000\000\000\000\000\000\000\nq\000\000\000\000\000\000\0226\nq\001\137\000\000\000\000\001\137\001\137\001\137\001\137\000\000\000\000\000\000\000\000\002\254\001\137\001\137\000\000\001\137\001\137\001\137\na\na\na\na\000\000\na\000\000\na\na\000\000\na\000\000\na\000\000\na\000\000\na\na\na\na\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\na\na\na\000\000\000\000\000\000\000\000\000\000\000\000\000\000\na\000\000\000\000\000\000\000\000\na\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\na\ne\ne\ne\ne\000\000\ne\na\ne\ne\000\000\ne\na\ne\000\000\ne\000\000\ne\ne\ne\ne\na\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ne\ne\ne\000\000\000\000\000\000\000\000\000\000\na\000\000\ne\na\000\000\000\000\000\000\ne\000\000\000\000\022:\000\000\000\000\000\000\000\000\000\000\na\000\000\000\000\000\000\ne\na\000\000\na\000\000\000\000\na\ne\000\000\000\000\000\000\000\000\ne\000\000\na\000\000\000\000\na\000\000\000\000\000\000\ne\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\na\000\000\000\000\000\000\021\222\na\000\000\000\000\000\000\ne\000\000\000\000\ne\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ne\000\000\000\000\000\000\000\000\ne\000\000\ne\000\000\000\000\ne\000\000\000R\007\190\007\198\000\170\000\000\000\174\ne\008\n\008N\ne\008V\000\000\008f\000\000\008n\000\000\008v\008\130\001:\008\138\000\000\000\000\002v\000\000\ne\002\198\000\000\000\000\000\000\ne\000\000\000\000\022B\008\146\022^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022j\000\000\002~\000\000\000\000\008\154\002\t\000\000\000\000\000\000\002\t\000\000\000\000\000\000\000\000\000\000\002\134\000\000\022\130\002\t\002\t\000\000\002\230\002\238\000\000\008\170\000\000\000\000\002\t\000\000\022\174\000\000\002\166\000\000\000\181\002\142\000\000\002\158\002\t\008\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\000\000\000\000\011\234\000\000\002\174\022\206\002\t\000\000\023&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\242\002\t\000\000\000\000\000\000\023>\000\181\000\181\000\000\000\000\023J\000\000\008y\000\000\000\000\023z\012\018\000\000\000\000\011\250\000\000\012\n\000\000\023\134\000\000\000\000\024f\002\182\000\000\000\000\002\t\002\t\000\000\000\000\002\150\000}\000\000\000\000\000}\000\000\000\000\024r\012\026\000\000\000\000\000\000\024\138\002\t\000\000\000\000\002\t\002\t\002\t\002\t\000\000\000\000\000\000\002~\000\000\002\t\002\t\000}\002\246\002\190\002\t\000}\000\000\000\000\000\000\000\000\000\000\002\134\000\000\000\000\000}\000}\000\000\000}\000}\000\000\000\000\012\"\000e\000}\000\000\000e\000\000\002\166\012\002\000\000\002\142\000\000\002\158\000}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\181\000\000\000\000\000e\000\000\000\000\000\000\000e\000\000\000\000\000\000\000e\002\174\000\000\000}\000\181\012*\002\134\000\000\000\000\000e\000e\000\000\000e\000e\000}\000\000\000\000\000\000\000e\000\000\000\000\000\000\000e\000\000\000\000\002\142\000\000\002\158\000e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\182\000\000\000\000\000}\000}\000\000\000\000\002\150\000e\000\000\000e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000}\000e\000\000\000}\000}\000}\000}\000\000\000\000\000\000\000\000\000\000\000}\000}\000\000\000}\002\190\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\150\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\000e\000e\000\000\000\000\000\000\000]\000\000\000e\000e\000]\000e\000e\000e\000]\000\000\000\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\142\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\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\142\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\002\150\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\000a\000\000\000\000\000a\000a\000\000\000\000\002\150\000q\000\000\000\000\000q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000a\000\000\000\000\000a\000a\000a\000a\000\000\000\000\000\000\002~\000\000\000a\000a\000q\000a\000a\000a\000q\000\000\000\000\000\000\000\000\000\000\002\134\000\000\000\000\000q\000q\000\000\000q\000q\000\000\000\000\000\000\000i\000q\000\000\000i\000\000\000q\000\000\000\000\002\142\000\000\002\158\000q\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\000i\000\000\000\000\000\000\000i\002\174\000\000\000q\000\000\000\000\002\134\000\000\000\000\000i\000i\000\000\000i\000i\000q\000\000\000\000\000\000\000i\000\000\000\000\000\000\000i\000\000\000\000\002\142\000\000\002\158\000i\000\000\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\150\000i\000\000\000i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000q\000i\000\000\000q\000q\000q\000q\000\000\000\000\000\000\000\000\000\000\000q\000q\000\000\000q\000q\000q\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\150\000m\000\000\000\000\000m\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\002~\000\000\000i\000i\000m\000i\000i\000i\000m\000\000\000\000\000\000\000\000\000\000\002\134\000\000\000\000\000m\000m\000\000\000m\000m\000\000\000\000\000\000\000u\000m\000\000\000u\000\000\000m\000\000\000\000\002\142\000\000\002\158\000m\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\000u\000\000\000\000\000\000\000u\002\174\000\000\000m\000\000\000\000\002\134\000\000\000\000\000u\000u\000\000\000u\000u\000m\000\000\000\000\000\000\000u\000\000\000\000\000\000\002\166\000\000\000\000\002\142\000\000\002\158\000u\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\150\002\174\000\000\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000m\000u\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\002\182\000\000\000\000\000u\000u\000\000\000\000\002\150\002v\000\000\000\000\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000u\000\000\000\000\000u\000u\000u\000u\000\000\000\000\000\000\002~\000\000\000u\000u\000\133\000u\000u\000u\000\133\000\000\000\000\000\000\000\000\000\000\002\134\000\000\000\000\000\133\000\133\000\000\000\133\002\238\000\000\000\000\000\000\002v\000\133\000\000\000y\000\000\002\166\000\000\000\000\002\142\000\000\002\158\000\133\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\000y\000\000\000\000\000\000\000y\002\174\000\000\000\133\000\000\000\000\002\134\000\000\000\000\000y\000y\000\000\000y\000y\000\133\000\000\000\000\000\000\000y\000\000\000\000\000\000\002\166\000\000\000\000\002\142\000\000\002\158\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\182\000\000\000\000\000\133\000\133\000\000\000\000\002\150\002\174\000\000\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\000y\000\000\000\133\000\133\000\133\000\133\000\000\000\000\000\000\000\000\000\000\000\133\000\133\000\000\002\246\002\190\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\182\000\000\000\000\000y\000y\000\000\000\000\002\150\002v\000\000\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\000\000\000\000\000y\000y\000y\000y\000\000\000\000\000\000\002~\000\000\000y\000y\000\129\000y\002\190\000y\000\129\000\000\000\000\000\000\000\000\000\000\002\134\000\000\000\000\000\129\000\129\000\000\000\129\002\238\000\000\011\146\000\000\000\000\000\129\000\000\000\000\000\000\002\166\004E\000\000\002\142\004E\002\158\000\129\004E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004E\000\000\000\000\000\000\002\174\000\000\000\129\000\000\000\000\004E\004E\000\000\000\000\004E\004E\000\000\000\000\000\129\000\000\004E\000\000\004E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004E\004E\000\000\000\000\004E\004E\004E\000\000\004E\004E\000\000\004E\000\000\000\000\002\182\000\000\000\000\000\129\000\129\000\000\000\000\002\150\000\000\000\000\000\000\000\000\000\000\004E\004E\000\000\000\000\000\000\000\000\004E\000\129\000\000\004E\000\129\000\129\000\129\000\129\000\000\000\000\000\000\000\000\004E\000\129\000\129\000\000\000\129\002\190\000\129\000\000\004E\000\000\004E\001\166\004E\000\000\n\166\000\000\000\000\n\170\000\000\000\000\000\000\000\000\004E\000\000\000\000\000\000\000\000\000\000\004E\000\000\000\000\000\000\001\178\000\000\004E\000\000\000\000\004E\000\000\000\000\000\000\n\174\011\006\004E\000\000\011n\011\134\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\206\001\230\000\000\000\000\n\210\011\138\001\242\000\000\n\214\n\218\000\000\n\222\000\000\000\000\000\000\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\226\n\230\000\000\000\000\000\000\000\000\n\234\000\000\001\166\000\n\000\000\n\166\000\000\000\000\n\170\000\000\000\000\000\000\n\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\013\000\000\011\142\001\178\011\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\174\011\006\n\246\000\000\011n\011\134\000\000\000\000\n\250\000\000\001\218\000\000\001\222\000\000\012\138\000\000\000\000\n\254\000\000\000\000\n\206\001\230\000\000\002\"\n\210\011\138\001\242\000\000\n\214\n\218\000\000\n\222\000\000\000\000\000\000\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\226\n\230\000\000\000\000\000\000\000\000\n\234\000\000\001\166\000\n\000\000\n\166\000\000\000\000\n\170\000\000\000\000\000\000\n\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\013\000\000\011\142\001\178\011\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\174\011\006\n\246\000\000\011n\011\134\000\000\000\000\n\250\000\000\001\218\000\000\001\222\000\000\011\178\000\000\000\000\n\254\000\000\000\000\n\206\001\230\000\000\002\"\n\210\011\138\001\242\000\000\n\214\n\218\000\000\n\222\000\000\000\000\000\000\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\226\n\230\000\000\000\000\000\000\000\000\n\234\000\000\001\166\000\n\000\000\n\166\000\000\000\000\n\170\000\000\000\000\000\000\n\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\013\000\000\011\142\001\178\011\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\174\011\006\n\246\000\000\011n\011\134\000\000\000\000\n\250\000\000\001\218\000\000\001\222\000\000\005m\000\000\000\000\n\254\000\000\000\000\n\206\001\230\000\000\002\"\n\210\011\138\001\242\000\000\n\214\n\218\003)\n\222\000j\003)\000r\000\000\000\130\003)\000\000\003)\000\000\000\000\000\000\000\138\003)\003)\000\000\n\226\n\230\000\000\000\000\000\000\000\000\n\234\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\242\000\000\000\000\000\000\000\000\000\000\000\146\003)\006\013\000\000\011\142\003)\011\170\000\000\000\000\000\000\000\000\003%\000\000\000\182\003%\000\190\n\246\000\206\003%\000\000\003%\003)\n\250\000\000\000\214\003%\003%\000\000\001\189\000\000\000\000\n\254\000\157\003)\000\162\000\000\000\000\002\"\000\000\000\000\000\000\003)\000\000\000\000\000\000\003)\003)\000\000\000\000\000\000\000\000\000\000\000\222\003%\000\157\003)\000\000\003%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000\000\011\242\000\000\000\000\000\000\000\000\003%\000\157\000\157\003)\000\000\000\000\000\000\000\000\003)\000\000\000\000\000\157\003%\000\238\011\250\000\000\012\n\000\000\000\000\000\000\003%\000\000\000\000\000\000\003%\003%\000\000\001\137\000\000\000\000\001\137\000\000\000\000\000\000\003%\000\000\000\000\000\157\000\000\003)\000\000\000\000\003)\003)\000\000\003%\003)\000\000\000\000\001\137\000\000\003)\003)\001\137\000\000\003%\003)\001\137\000\000\000\000\003%\000\000\000\000\001\137\000\000\000\000\000\000\000\000\000\000\001\137\001\137\000\000\000\000\000\000\000\000\000\000\000\157\000\000\000\000\001\137\000\000\000\000\001\137\012\002\001\137\001\137\000\000\000\000\000\000\000\000\000\000\003%\000\000\000\000\003%\003%\000\157\000\000\003%\000\000\000\000\000\000\000\000\003%\003%\001\137\000\000\001\137\003%\000\000\000\000\000\157\000\157\000\000\000\000\000\000\000\000\000\000\001\137\000\000\000\000\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\000\000\001\014\000\000\001\022\000\000\001\030\0012\001:\001>\001\137\002N\000\000\001\137\001\137\000\000\000\000\001\137\001\166\000\000\000\000\n\166\000\000\001F\n\170\000\000\000\000\000\000\000\000\000\000\001\137\000\000\000\000\001\137\001\137\000\000\001\137\001N\000\000\001\178\000\000\003\n\001\137\001\137\000\000\001\137\001\137\001\137\n\174\011\006\000\000\000\000\011n\011\134\000\000\000\000\000\000\001^\001\218\000\000\001\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\206\001\230\000\000\001b\n\210\011\138\001\242\000\000\n\214\n\218\000\000\n\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\161\000\000\000\000\001\161\000\000\000\000\000\000\n\226\n\230\000\000\000\000\000\000\000\000\n\234\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\001\161\000\000\000\000\n\242\001\161\000\000\000\000\000\000\001\161\000\000\000\000\006\013\000\000\000\000\001\161\011\170\000\000\001\161\001\161\000\000\001\161\001\161\000\000\000\000\000\000\n\246\001\161\000\000\000\000\000\000\001\161\n\250\000\000\001\161\000\000\001\161\001\161\001\201\000\000\000\000\n\254\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\001\161\000\000\001\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\161\000R\000V\000f\000\170\007\186\000\174\nR\000\178\000\246\nV\000\254\000\000\001\014\025^\001\022\nZ\001\030\0012\001:\001>\n^\025b\000\000\000\000\000\000\001\161\014\014\000\000\001\161\000\000\000\000\000\000\001\161\001F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001N\001\161\000\000\001\161\000\000\000\000\000\000\000\000\000\000\014\022\001\161\001\161\000\000\001\161\001\161\001\161\001\166\000\000\000\000\001\170\001^\000\000\001\174\000\000\000\000\000\000\001j\000\000\000\000\000\000\000\000\014\206\000\000\000\000\001b\000\000\000\000\001\178\004R\004V\001\182\000\000\000\000\000\000\000\000\000\000\001\198\001\202\000\000\001\210\n\134\n\162\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\226\001\230\000\000\011\154\001\234\001\238\001\242\000\000\001\246\001\250\000\n\001\254\000\000\000\000\000\000\004\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\002\002\004Z\000\000\000\000\000\000\002\006\000\000\021\018\000\n\000\000\006\005\n\138\000\000\000\000\000\000\000\000\000\000\002\014\000\000\021\022\006\005\000\000\003U\000\000\000\000\006\005\023N\002\018\021\026\000\000\021\030\n\201\n\201\000\000\000\000\000\000\000\000\000\000\021\"\002\022\000\000\000\000\000\000\021&\000\000\002\026\021.\000\000\008\137\000\000\0212\000\000\000\000\000\000\002\030\000\000\0216\000\000\000\000\000\000\002\"\000\000\000\000\000\000\000\000\000\000\000\000\024\222\022\254\000\000\n\201\000\000\021:\000\000\000\000\000\000\000\000\000\000\021\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\022\000\000\000\000\000\000\000\000\n\201\000\000\021>\000\000\021\026\021B\021\030\000\000\000\000\000\000\000\000\n\157\000\000\000\000\021\"\000\000\000\000\000\000\021F\021&\000\000\000\000\021.\021J\000\n\021N\0212\021R\021V\000\000\021Z\000\000\0216\000\000\000\000\000\000\021^\000\000\000\000\021b\000\000\000\000\000\000\023\142\000\000\000\000\n\157\000\000\021:\000\000\000\000\000\000\000\000\000\000\021f\000\000\000\000\000\000\021j\021n\n\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\157\000\000\021>\000\000\000\000\021B\000\000\000\000\000\000\000\000\000\000\001\166\000\000\000\000\001\170\000\000\000\000\001\174\021F\000\000\000\000\000\000\000\000\021J\000\n\021N\008\137\021R\021V\000\000\021Z\000\000\001\178\000\000\000\000\001\182\021^\000\000\000\000\021b\000\000\001\198\001\202\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\001\222\021f\000\000\000\000\000\000\021j\021n\n\157\001\226\001\230\000\000\000\000\001\234\001\238\001\242\000\000\001\246\001\250\000\000\001\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t:\005\221\000\000\002\002\000\000\000\000\000\000\000\000\002\006\000\000\000\000\000\n\t~\005\221\t\190\005\221\000\000\000\000\000\000\000\000\002\014\000\000\005\221\000\000\005\221\005\221\000\000\005\221\000\000\000\000\002\018\008\137\005\221\000\000\005\221\000\000\005\221\005\221\005\221\000\000\005\221\000\000\002\022\000\000\005\221\000\000\005\221\000\000\002\026\005\221\005\221\005\221\005\221\008\137\005\221\000\000\005\221\002\030\005\221\000\000\000\000\005\221\005\221\002\"\005\221\000\000\005\221\000Z\000\000\000\000\000\000\005\221\000\000\005\221\n>\005\221\000\000\000\000\005\221\000Z\005\221\000Z\000\000\005\221\000\000\005\221\000\000\000\000\000\000\000\000\000\000\005\221\000\000\000\000\005\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\221\000\000\005\221\005\221\005\221\005\221\000\000\000\000\000\000\005\221\005\221\005\221\000\000\005\221\005\221\000\000\005\221\000\000\005\221\000\000\000\000\005\221\005\221\005\221\005\221\005\221\005\221\005\221\005\221\000\000\005\221\000\000\000\000\000\000\005\221\000\000\005\221\005\221\014B\005\221\005\221\014\146\000\000\000\000\005\221\005\221\000\000\000\000\000\000\000\000\000\000\000\000\005\221\000\000\005\221\000\000\005\221\005\221\005\221\005\221\014J\000\000\001%\000\000\002\025\001%\000\000\000\000\002\025\000\000\000\000\000\000\000\000\000\000\014R\000\000\000\000\002\025\002\025\000\000\014\162\014\170\000\000\000\000\014J\000\000\002\025\000\000\001%\000\000\014r\000\000\001%\014Z\000\000\014j\002\025\000\000\014R\000\000\000\000\001%\001%\000\000\001%\001%\000\000\000\000\000\000\000\000\001%\000\000\000\000\000\000\014r\000\000\014z\014Z\002\025\014j\001%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014z\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\014\130\000\000\000\000\002\025\000\000\000\000\000\000\014b\000\000\000\000\000\000\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\025\014\130\002\025\000\000\001%\000\000\000\000\000\000\014b\002\025\002\025\000\000\014\178\014\138\002\025\000\000\000\000\001\013\000\000\000\000\001\013\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%\014\138\001%\001\013\000\000\001\005\000\000\001\013\001\005\000\000\000\000\001\013\000\000\000\000\000\000\000\000\000\000\014R\000\000\000\000\001\013\001\013\000\000\001\013\001\013\000\000\000\000\001\005\000\000\001\013\000\000\001\005\000\000\001\013\000\000\001\005\014Z\000\000\014j\001\013\000\000\001\005\000\000\000\000\001\005\001\005\000\000\001\005\001\005\000\000\000\000\000\000\000\000\001\005\000\000\000\000\000\000\001\005\000\000\001\013\014Z\001\013\001\005\001\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\005\000\000\001\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\005\000\000\001\013\000\000\000\000\001\013\000\000\000\000\000\000\014b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\013\001\005\001\013\000\000\001\005\000\000\000\000\000\000\014b\001\013\001\013\000\000\001\013\001\013\001\013\000\000\000\000\001\t\000\000\000\000\001\t\000\000\000\000\000\000\001\005\000\000\001\005\000\000\000\000\000\000\000\000\000\000\000\000\001\005\001\005\000\000\001\005\001\005\001\005\001\t\000\000\001\025\000\000\001\t\001\025\000\000\000\000\001\t\000\000\000\000\000\000\000\000\000\000\001\t\000\000\000\000\001\t\001\t\000\000\001\t\001\t\000\000\000\000\014J\000\000\001\t\000\000\001\025\000\000\001\t\000\000\001\025\014Z\000\000\001\t\001\t\000\000\014R\000\000\000\000\001\025\001\025\000\000\001\025\001\025\000\000\000\000\000\000\000\000\001\025\000\000\000\000\000\000\001\025\000\000\001\t\014Z\001\t\014j\001\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014z\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\001\t\000\000\000\000\001\t\000\000\000\000\000\000\014b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\t\001\025\001\t\000\000\001\025\000\000\000\000\000\000\014b\001\t\001\t\000\000\001\t\001\t\001\t\000\000\000\000\001\017\000\000\000\000\001\017\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\014J\000\000\001\021\000\000\001\017\001\021\000\000\000\000\001\017\000\000\000\000\000\000\000\000\000\000\014R\000\000\000\000\001\017\001\017\000\000\001\017\001\017\000\000\000\000\014J\000\000\001\017\000\000\001\021\000\000\001\017\000\000\001\021\014Z\000\000\014j\001\017\000\000\014R\000\000\000\000\001\021\001\021\000\000\001\021\001\021\000\000\000\000\000\000\000\000\001\021\000\000\000\000\000\000\001\021\000\000\001\017\014Z\001\017\014j\001\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014z\000\000\001\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\021\000\000\001\017\000\000\000\000\001\017\000\000\000\000\000\000\014b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\017\001\021\001\017\000\000\001\021\000\000\000\000\000\000\014b\001\017\001\017\000\000\001\017\001\017\001\017\000\000\000\000\001\029\000\000\000\000\001\029\000\000\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\014J\000\000\014B\000\000\001\029\001-\000\000\000\000\001\029\000\000\000\000\000\000\000\000\000\000\014R\000\000\000\000\001\029\001\029\000\000\001\029\001\029\000\000\000\000\014J\000\000\001\029\000\000\001-\000\000\014r\000\000\001-\014Z\000\000\014j\001\029\000\000\014R\000\000\000\000\001-\001-\000\000\001-\014\170\000\000\000\000\000\000\000\000\001-\000\000\000\000\000\000\014r\000\000\014z\014Z\001\029\014j\001-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014z\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\014\130\000\000\000\000\001\029\000\000\000\000\000\000\014b\000\000\000\000\000\000\000\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\014\130\001\029\000\000\001-\000\000\000\000\000\000\014b\001\029\001\029\000\000\001\029\001\029\001\029\000\000\000\000\014B\000\000\000\000\001!\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\014\178\014\138\001-\014J\000\000\014B\000\000\001!\001)\000\000\000\000\001!\000\000\000\000\000\000\000\000\000\000\014R\000\000\000\000\001!\001!\000\000\001!\001!\000\000\000\000\014J\000\000\001!\000\000\001)\000\000\014r\000\000\001)\014Z\000\000\014j\001!\000\000\014R\000\000\000\000\001)\001)\000\000\001)\014\170\000\000\000\000\000\000\000\000\001)\000\000\000\000\000\000\014r\000\000\014z\014Z\001!\014j\001)\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\014z\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\014\130\000\000\000\000\001!\000\000\000\000\000\000\014b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\014\130\001!\000\000\001)\000\000\000\000\000\000\014b\001!\001!\000\000\001!\014\138\001!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001)\001\166\001)\000\000\001\170\000\000\000\000\001\174\000\000\001)\001)\000\149\001)\014\138\001)\000\000\018j\000\000\000\000\000\000\000\000\000\000\001\178\000\000\000\000\001\182\000\000\000\000\000\000\000\000\000\000\001\198\001\202\000\149\001\210\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\149\000\000\000\000\000\000\001\226\001\230\000\149\000\149\001\234\001\238\001\242\000\000\001\246\001\250\000\000\001\254\000\149\000\000\000\000\011\250\000\000\000\149\000\000\000\000\001\166\000\000\000\000\001\170\000\000\000\000\001\174\000\000\002\002\000\000\000\000\000\000\000\000\002\006\000\000\000\000\000\n\000\000\000\149\000\000\000\000\001\178\000\000\000\000\001\182\002\014\000\000\000\000\000\000\000\000\001\198\0076\000\000\001\210\000\000\002\018\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\000\002\022\000\000\000\000\001\226\001\230\000\000\002\026\001\234\001\238\001\242\000\149\001\246\001\250\000\000\001\254\002\030\000\000\012\002\000\000\000\000\000\000\002\"\000\000\001\166\000\000\000\000\001\170\000\000\000\000\001\174\000\149\002\002\000\000\000\000\000\000\000\000\002\006\000\000\000\000\000\n\000\000\000\000\000\000\000\000\001\178\000\149\000\149\001\182\002\014\000\000\000\000\000\000\000\000\001\198\002\n\000\000\001\210\000\000\002\018\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\000\002\022\000\000\000\000\001\226\001\230\000\000\002\026\001\234\001\238\001\242\000\000\001\246\001\250\000\000\001\254\002\030\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\006\030\002\002\000\000\000\000\000\000\000\000\002\006\000\000\004=\000\n\nR\004=\000\000\nV\004=\000\000\000\000\025r\002\014\nZ\000\000\000\000\000\000\000\000\n^\025v\000\000\000\000\002\018\004=\000\000\000\000\004=\000\000\000\000\000\000\000\000\000\000\004=\004=\002\022\004=\000\000\000\000\000\000\000\000\002\026\000\000\004=\000\000\004=\000\000\000\000\000\000\000\000\002\030\016\138\000\000\004=\004=\000\000\002\"\004=\004=\004=\000\000\004=\004=\000\000\004=\000\000\004\237\016\142\000\000\004\237\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\004=\001\230\004\237\004=\000\000\012\226\001\242\000\000\000\000\004\237\004\237\000\000\004=\000\000\000\000\000\000\004\237\000\000\000\000\000\000\000\000\000\000\004\237\004\237\000\000\000\000\004\237\000\000\000\000\004\237\000\000\021\018\004\237\000\000\004=\004\237\000\n\004\237\004\237\000\000\004=\004\161\000\000\021\022\000\000\000\000\000\000\000\000\000\000\004=\000\000\000\000\021\026\000\000\021\030\004=\000\000\000\000\004\237\000\000\000\000\000\000\021\"\000\000\000\000\000\000\000\000\021&\000\000\000\000\021.\000\000\000\000\000\000\0212\000\000\000\000\000\000\004\237\000\000\0216\000\000\000\000\000\000\007\133\007\133\000\000\000\000\000\000\007\133\000\000\022\138\000\000\000\000\000\000\000\000\021:\004\237\004\237\000\000\000\000\005\t\004\237\000\000\004\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\237\000\000\000\000\000\000\000\000\004\237\000\000\n\157\004\237\021>\000\000\000\000\021B\000\000\000\000\000\000\004\237\000\000\000\000\000\000\004\237\004\237\000\000\000\000\000\000\021F\000\000\000\000\000\000\000\000\021J\000\n\021N\000\000\021R\021V\000\000\021Z\005\221\000\000\000\000\005\221\000v\021^\005\221\005\221\021b\005\221\000\194\000\000\000\000\005\221\005\221\005\221\000\000\000\000\000\000\000\000\005\221\005\221\000\000\021f\000\000\000\000\000\000\021j\021n\n\157\005\221\000\000\000\000\005\221\001\002\000\000\000\000\005\221\000\000\005\221\005\221\000\000\005\221\005\221\005\221\005\221\005\221\005\221\005\221\005\221\000\000\000\000\005\221\000\000\005\221\005\221\000\000\000\000\000\000\000\000\000\000\000\000\005\221\000\000\000\000\000\000\001f\000\000\005\221\000\000\000\000\000Z\005\221\000\000\005\221\000\000\005\221\000Z\000\000\000\000\005\221\000\000\005\221\000\000\000\000\000\000\005\221\005\221\005\221\000\000\000\000\000\000\005\221\005\221\000\000\000\000\005\221\000\000\000\000\000\000\000\000\000Z\005\221\000\000\005\221\000\000\004\030\005\221\000\000\000\000\000\000\000Z\005\221\005\221\005\221\000\000\005\221\005\221\000\000\000\000\000\000\000\000\005\221\005\221\000\000\000\000\005\221\005\221\005\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\221\005\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\221\000\000\000\000\000\000\000\000\005\221\005\221\000\000\000\000\005\221\005\221\000\000\005\221\005\221\001\166\005\221\005\221\001\186\005\221\005\221\001\190\000\000\000\000\005\221\005\221\005\221\000\000\000\000\000\000\005\221\000\000\000\000\000\000\000\000\000\000\001\178\005\221\000\000\001\182\005\221\005\221\000\000\000\000\005\221\001\194\001\214\005\221\001\210\005\221\005\221\005\221\000\000\000\000\005\221\001\218\000\000\001\222\000\000\005\221\005\221\000\000\000\000\000\000\005\221\005j\001\230\000\000\000\000\005n\001\238\001\242\000\000\005r\005v\000\000\005z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\166\000\000\000\000\001\186\000\000\000\000\001\190\000\000\005~\000\000\000\000\000\000\000\000\005\130\000\000\000\000\000\n\000\000\000\000\000\000\000\000\001\178\000\000\000\000\001\182\005\138\000\000\000\000\000\000\000\000\001\194\007\030\000\000\001\210\005\221\000\000\000\000\005\221\003F\000\000\001\218\005\221\001\222\005\221\000\000\000\000\000\000\005\142\005\221\005\221\005j\001\230\000\000\005\146\005n\001\238\001\242\000\000\005r\005v\005\221\005z\005\150\005\221\003\138\000\000\005\221\005\221\002\"\005\221\003\202\000\000\000\000\005\221\005\221\005\221\005\221\000\000\005~\000\000\005\221\005\221\000\000\005\130\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\138\005\221\000\000\000\000\000\000\004\242\000\000\005\221\000\000\000\000\000Z\005\221\000\000\005\221\000\000\000\000\000\000\005\221\000\000\000\000\000\000\005\221\005\142\000\000\000\000\005\221\005\221\005\221\005\146\000\000\000\000\007f\000\000\005\221\000\000\005\221\000Z\005\150\000\000\005\221\000\000\000\000\000Z\002\"\000\000\005\221\005\221\005\221\000\000\000\000\000\000\005\221\005\221\005\221\000\000\000\000\005\221\005\221\005\221\000\000\000\000\005\221\000\000\000\000\000\000\000\000\000\000\005\221\000\000\000\000\000\000\000\000\005\221\000\000\000\000\000\000\000\000\000\000\005\221\000\000\000\000\000\000\005\221\000\000\000\000\000\000\000\000\005\221\005\221\000\000\000\000\000\000\005\221\005\221\000\000\005\221\005\221\000\000\000\000\005\221\000\000\000\000\000\000\000\000\005\221\005\221\000\000\000\000\000\000\005\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\221\000\000\000\000\005\221\005\221\001\166\005\221\005\221\001\186\005\221\005\221\001\190\005\221\005\221\000\000\000\000\000\000\005\221\005\221\005\221\000\000\000\000\000\000\005\221\000\000\000\000\001\178\000\000\000\000\001\182\000\000\000\000\000\000\000\000\000\000\001\194\005\134\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005j\001\230\000\000\000\000\005n\001\238\001\242\000\000\005r\005v\000\000\005z\000\000\014\021\000\000\000\000\014\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005~\000\000\000\000\000\000\000\000\005\130\000\000\014\021\000\n\000\000\000\000\000\000\000\000\000\000\005\170\000\000\000\000\005\138\000\000\000\000\000\000\014\021\000\000\000\000\000\000\014\021\000\000\014\021\014\021\000\000\000\000\005\178\000\000\000\000\005\190\001\166\000\000\014\021\n\166\005\142\014\021\n\170\014\021\000\000\000\000\005\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\150\000\000\001\178\000\000\000\000\000\000\002\"\000\000\000\000\014\021\000\000\n\174\n\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\000\000\000\005\202\000\000\n\206\001\230\000\000\000\000\n\210\001\238\001\242\000\000\n\214\n\218\000\000\n\222\000\000\000\000\000\000\000\000\000\000\014\021\014\021\000\000\014\021\000\000\005\206\000\000\014\021\000\000\000\000\n\226\n\230\000\000\000\000\000\000\005\214\n\234\000\000\001\166\000\n\000\000\n\166\000\000\000\000\n\170\014\021\000\000\000\000\n\242\000\000\000\000\014\021\000\000\000\000\000\000\014\021\014\021\000\000\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\174\n\238\n\246\000\000\000\000\000\000\000\000\000\000\n\250\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\000\n\254\000\000\000\000\n\206\001\230\000\000\002\"\n\210\001\238\001\242\000\000\n\214\n\218\000\000\n\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\166\000\000\000\000\n\166\000\000\000\000\n\170\n\226\n\230\000\000\000\000\000\000\000\000\n\234\000\000\000\000\000\n\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\n\242\000\000\000\000\000\000\000\000\n\174\011\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\000\n\246\000\000\000\000\n\206\001\230\000\000\n\250\n\210\001\238\001\242\000\000\n\214\n\218\000\000\n\222\n\254\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\166\000\000\000\000\013^\000\000\000\000\013b\n\226\n\230\000\000\000\000\000\000\000\000\n\234\000\000\000\000\000\n\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\n\242\000\000\000\000\000\000\000\000\013f\014\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\000\n\246\000\000\000\000\013~\001\230\000\000\n\250\013\130\001\238\001\242\000\000\013\134\013\138\000\000\013\142\n\254\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\166\000\000\000\000\013^\000\000\000\000\013b\n\226\013\146\000\000\000\000\000\000\000\000\013\150\000\000\000\000\000\n\000\000\000\000\000\000\nR\001\178\000\000\nV\000\000\013\158\000\000\025r\000\000\nZ\013f\013j\000\000\000\000\n^\025v\000\000\000\000\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\000\013\162\000\000\000\000\013~\001\230\000\000\013\166\013\130\001\238\001\242\000\000\013\134\013\138\000\000\013\142\013\170\000\000\000\000\000\000\016\138\000\000\002\"\000\000\001\166\000\000\000\000\013^\000\000\000\000\013b\n\226\013\146\000\000\000\000\000\000\016\142\013\150\000\000\000\000\000\n\000\000\000\000\000\000\000\000\001\178\000\000\000\000\000\000\013\158\000\000\000\000\000\000\000\000\013f\013\154\001\230\000\000\000\000\000\000\012\226\001\242\000\000\000\000\001\218\000\000\001\222\000\000\000\000\000\000\000\000\013\162\000\000\000\000\013~\001\230\000\000\013\166\013\130\001\238\001\242\000\000\013\134\013\138\000\000\013\142\013\170\000\000\000\000\000\000\000\000\000\n\002\"\008\129\000\000\000\000\004\161\000\000\000\000\000\000\000\000\n\226\013\146\000\000\000\000\008\129\000\000\013\150\000\000\000\000\000\n\000\000\000\000\000\000\008\129\000\000\008\129\000\000\000\000\013\158\000\000\000\000\000\000\000\000\008\129\000\000\000\000\000\000\000\000\008\129\000\000\000\000\008\129\000\000\000\000\000\000\008\129\021\230\000\000\008\245\008\245\013\162\008\129\000\000\008\245\000\000\000\000\013\166\023\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\170\000\000\008\129\000\000\021\022\000\000\002\"\000\000\000\000\000\000\000\000\000\000\000\000\021\026\000\000\021\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\"\000\000\000\000\000\000\008\129\021&\000\000\008\129\021.\000\000\000\000\000\000\0212\000\000\000\000\000\000\000\000\000\000\0216\000\000\008\129\000\000\000\000\000\000\000\000\008\129\008\129\008\129\000\000\008\129\008\129\000\000\008\129\000\000\021:\023\170\000\000\000\000\008\129\000\000\000\000\008\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\007\237\008\129\000\000\000\000\021>\008\129\008\129\021B\000\000\000\000\000\000\000\000\007\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021F\007\237\000\000\007\237\000\000\021J\000\n\021N\000\000\021R\021V\007\237\021Z\000\000\000\000\000\000\007\237\000\000\021^\007\237\000\000\021b\000\000\007\237\000\000\000\000\000\000\000\000\000\000\007\237\000\000\000\000\000\000\000\000\000\000\022n\021f\000\000\000\000\000\000\021j\021n\000\000\000\000\000\000\007\237\023\170\021\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\026\000\000\021\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\"\000\000\000\000\000\000\007\237\021&\000\000\007\237\021.\000\000\000\000\000\000\0212\000\000\000\000\000\000\000\000\000\000\0216\000\000\007\237\000\000\000\000\000\000\000\000\007\237\007\237\007\237\000\000\007\237\007\237\000\000\007\237\000\000\021:\000\000\000\000\000\000\007\237\000\000\000\000\007\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\134\007\237\000\000\000\000\021>\007\237\007\237\021B\000\000\000\000\000\000\000\000\021\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021F\021\026\000\000\021\030\000\000\021J\000\n\021N\000\000\021R\021V\021\"\021Z\000\000\000\000\000\000\021&\000\000\021^\021.\000\000\021b\000\000\0212\000\000\021\018\000\000\000\000\000\000\0216\000\000\000\000\000\000\000\000\000\000\000\000\021f\021\022\000\000\000\000\021j\021n\000\000\000\000\000\000\021:\021\026\000\000\021\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\"\000\000\000\000\000\000\000\000\021&\000\000\000\000\021.\000\000\000\000\000\000\0212\000\000\021>\000\000\000\000\021B\0216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\018\021F\000\000\000\000\000\000\023*\021J\000\n\021N\000\000\021R\021V\021\022\021Z\000\000\000\000\000\000\000\000\000\000\021^\000\000\021\026\021b\021\030\000\000\000\000\000\000\000\000\000\000\000\000\021>\021\"\000\000\021B\000\000\000\000\021&\021f\000\000\021.\000\000\021j\021n\0212\000\000\021\018\021F\000\000\000\000\0216\000\000\021J\000\n\021N\000\000\021R\021V\021\022\021Z\000\000\000\000\000\000\000\000\000\000\021^\024v\021\026\021b\021\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\"\000\000\000\000\000\000\000\000\000\000\021f\000\000\021.\000\000\021j\021n\0212\000\000\021>\000\000\000\000\021B\0216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021F\000\000\000\000\000\000\021:\021J\000\n\021N\000\000\021R\021V\000\000\021Z\000\000\000\000\000\000\000\000\000\000\021^\000\000\000\000\021b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021>\000\000\000\000\021B\000\000\000\000\000\000\021f\000\000\000\000\000\000\021j\021n\000\000\000\000\000\000\021F\000\000\000\000\000\000\000\000\021J\024\150\021N\000\000\021R\021V\000\000\021Z\000\000\000\000\000\000\000\000\000\000\021^\000\000\000\000\021b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021f\000\000\000\000\000\000\021j\021n\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\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\000\000\000\254\001F\001\014\000\000\001\022\000\000\001\030\0012\001:\001>\000\000\000\000\000\000\000\000\000\000\001N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000R\000V\000f\000\170\000\000\000\174\000\000\000\178\000\246\001^\000\254\001N\001\014\000\000\001\022\001j\001\030\0012\001:\001>\000\000\000\000\000\000\001b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001^\000\000\001F\000\000\000\000\000\000\001j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001b\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\000\000\000\000\000\000\000\000\000\000\000\000\000\n\000\000\001^\000\000\000\000\000\000\000\000\000\000\001j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001b\000\000\000\000\001n\026\026\004V\000\n\000\000\000\000\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\000\000\001\014\001n\001\022\012e\001\030\0012\001:\001>\000\000\000\000\000\000\013\249\000R\000V\000f\000\170\000\000\000\174\000\n\000\178\000\246\001F\000\254\000\000\001\014\0021\001\022\000\000\001\030\0012\001:\001>\000\000\013\249\000\000\001N\000\000\026\030\000\000\000\000\011\030\000\000\000\000\000\000\000\000\001F\000\000\013\249\001\153\000\000\000\000\001\153\000\000\013\249\013\249\001^\000\000\011&\003M\001N\0112\002)\000\000\013\249\000\000\000\000\013\249\000\000\013\249\001b\001\153\000\000\000\000\004R\004V\000\000\000\000\000\000\000\000\001^\000\000\000\000\006R\000\000\001\153\006\162\000\000\000\000\001\153\013\249\001\153\001\153\000\000\001b\000\000\000\000\000\000\026\026\004V\000\000\001\153\000\000\000\000\001\153\006Z\001\153\000\000\000\000\000\000\011>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006b\000\000\000\000\000\000\002\017\000\000\006\178\006\186\001\153\000\000\013\249\000\000\004b\000\000\000\000\011B\006\130\013\249\000\000\006j\000\000\006z\000\000\000\000\000\000\011J\000\000\000\000\000\000\000\000\013\249\000\000\000\000\000\000\000\237\000\000\026&\000\237\000\000\000\000\000\000\000\000\006\138\000\000\000\000\013\249\013\249\001\153\005\250\000\000\001\153\000\000\000\000\000\000\001\153\000\000\006Z\000\000\000\213\000\000\000\000\000\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006b\000\000\001\153\000\000\000\237\000\000\000\237\000\237\006\002\000\000\000\213\006\146\001\153\001\153\002\017\000\000\006\130\000\000\006r\006j\000\000\006z\000\205\000\000\006b\000\205\000\000\000\000\000\213\000\000\000\213\000\213\000\000\000\000\000\000\000\000\002\017\000\000\000\000\000\000\000\213\000\000\006\138\006j\000\205\006z\006\194\006\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\205\000\000\000\000\000\000\000\205\000\000\000\205\000\205\000\213\000\209\000\000\000\000\000\209\000\000\000\000\000\000\000\205\000\000\000\000\006j\000\000\000\205\000\000\006\146\000\000\000\000\000\237\000\000\000\000\000\000\006r\000\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\205\000\000\000\000\000\209\000\000\000\213\000\237\000\209\000\213\000\209\000\209\000\225\006r\000\000\000\225\000\000\000\237\006\154\000\000\000\209\000\000\000\000\006j\000\000\000\209\000\000\000\000\000\000\000\000\000\000\000\213\000\000\000\000\006Z\000\000\000\000\000\000\000\000\000\000\000\205\000\213\000\213\000\205\000\000\000\000\000\209\006r\006b\000\000\000\000\000\000\000\225\000\000\000\225\000\225\000\000\000\217\000\000\000\000\000\217\000\000\000\000\000\000\000\225\000\205\000\000\006j\000\000\006z\000\000\000\000\000\000\000\000\000\000\000\205\000\205\000\000\000\000\006Z\000\000\000\000\000\000\000\000\000\000\000\209\000\000\000\000\000\209\000\000\006\138\000\221\006r\006b\000\221\000\000\000\000\000\217\000\000\000\217\000\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\217\000\209\000\000\006j\006Z\006z\000\229\000\000\000\000\000\229\000\000\000\209\000\209\000\000\000\000\000\000\000\000\000\000\006b\000\000\000\225\000\000\000\221\000\225\000\221\000\221\000\217\006r\006Z\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\000\006j\000\000\006z\006R\000\000\006b\000\245\000\000\000\225\000\229\000\000\000\229\000\229\000\000\000\000\000\000\000\000\000\000\000\225\000\225\000\000\006\130\000\000\006\138\006j\006Z\006z\000\000\000\217\000\000\000\000\000\217\000\000\000\000\000\000\006r\000\000\000\000\000\000\006b\000\000\000\000\000\000\000\245\000\000\000\245\006\186\006\138\006R\000\000\000\000\000\233\000\000\000\217\000\000\006\130\000\000\000\000\006j\000\000\006z\000\000\000\221\000\217\000\217\000\221\000\000\000\000\000\000\006r\006Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\138\000\000\000\000\006b\000\000\006\146\000\221\000\233\000\229\000\233\000\233\006R\006r\000\000\000\241\000\000\000\221\000\221\000\000\006\130\000\000\000\000\006j\000\000\006z\000\000\000\000\000\000\000\000\000\000\000\229\000\000\000\000\006Z\000\000\000\000\000\000\000\000\000\000\006\146\000\229\000\229\000\245\000\153\000\000\006\138\006r\006b\000\000\000\000\000\000\000\241\000\000\000\241\006\186\000\000\000\000\000\000\000\000\000\000\000\169\000\000\000\000\006\130\000\245\000\153\006j\000\000\006z\000\000\000\000\000\000\000\000\000\000\006\194\006\154\000\000\000\000\000\000\000\153\000\000\000\000\011\234\000\000\006\146\000\153\000\153\000\233\000\000\006\138\000\000\006r\000\000\000\000\000\161\000\153\011\242\000\000\011\250\000\000\000\153\000\000\000\169\000\169\000\000\000\000\000\000\000\000\000\000\000\233\000\000\000\000\000\169\000\000\000\000\011\250\011\234\012\n\000\000\000\233\006\154\000\153\000\000\000\000\000\000\000\000\000\165\000\000\006\146\000\000\011\242\000\241\000\000\000\000\000\000\006r\000\161\000\161\012\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\161\000\000\011\234\011\250\000\000\012\n\000\000\000\241\000\000\000\000\000\000\000\000\000\000\000\000\000\153\000\000\011\242\000\241\006\154\000\000\000\000\012\002\000\165\000\165\000\000\000\000\000\161\000\000\000\000\000\000\000\000\000\169\000\165\000\000\000\153\011\250\000\000\012\n\012\002\000\000\000\000\000\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\153\000\153\000\169\000\000\000\000\000\000\000\000\000\000\000\000\012\026\000\000\000\000\000\000\000\000\011\234\000\000\000\161\000\169\000\169\000\000\000\000\000\000\000\000\012\002\011\226\000\000\000\000\000\000\011\242\000\000\000\000\000\000\000\000\000\000\000\173\000\173\000\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\018\000\000\011\234\011\250\000\165\012\n\000\000\000\161\000\161\000\000\000\000\012\002\011\226\000\000\000\000\000\000\011\242\000\000\000\000\000\000\000\000\000\000\000\189\012:\000\165\000\000\012\026\000\000\000\000\000\000\000\000\000\000\012\018\000\000\011\234\011\250\000\000\012\n\000\000\000\165\000\165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\242\000\000\000\000\000\000\000\000\011\226\000\177\000\177\000\000\000\000\012\026\000\000\000\000\000\000\000\000\000\000\012\018\012\"\000\000\011\250\000\000\012\n\000\000\000\000\012\002\000\000\000\000\011\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\173\000\000\000\000\000\000\011\242\012\026\000\000\000\000\000\000\000\000\000\185\012:\012\"\000\000\000\000\000\173\000\173\000\000\000\000\012\002\012\018\000\000\000\000\011\250\000\000\012\n\000\000\000\000\000\000\000\000\000\000\000\000\000\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\"\000\000\012\026\012B\012*\000\000\000\000\012\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\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\177\012*\000\000\000\000\000\000\000\000\012\"\000\000\000\000\000\000\000\000\000\000\000\000\012\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\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\012*"))
   
   let lhs =
-    (16, "\000\012\000\011\000\n\000\t\000\008\000\007\000\006\000\005\000\004\000\003\000\002\000\001\000\000\001\014\001\014\001\014\001\013\001\013\001\013\001\013\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\t\001\t\001\t\001\t\001\t\001\t\001\t\001\t\001\t\001\t\001\t\001\t\001\t\001\t\001\008\001\008\001\008\001\008\001\007\001\006\001\006\001\006\001\005\001\005\001\005\001\004\001\004\001\004\001\003\001\003\001\003\001\002\001\001\001\000\000\255\000\255\000\254\000\254\000\253\000\253\000\252\000\252\000\251\000\251\000\250\000\249\000\249\000\248\000\248\000\247\000\247\000\247\000\246\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\234\000\233\000\232\000\231\000\231\000\230\000\230\000\229\000\229\000\228\000\228\000\227\000\227\000\227\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\226\000\225\000\224\000\224\000\224\000\224\000\223\000\223\000\222\000\222\000\221\000\221\000\220\000\220\000\220\000\219\000\219\000\219\000\218\000\218\000\218\000\218\000\217\000\217\000\217\000\217\000\216\000\216\000\216\000\216\000\216\000\216\000\216\000\216\000\216\000\216\000\216\000\216\000\216\000\216\000\216\000\216\000\216\000\216\000\216\000\216\000\215\000\214\000\214\000\213\000\213\000\213\000\212\000\212\000\211\000\211\000\211\000\210\000\210\000\209\000\209\000\209\000\208\000\207\000\206\000\206\000\205\000\205\000\204\000\204\000\203\000\203\000\202\000\202\000\201\000\200\000\199\000\199\000\198\000\198\000\197\000\197\000\197\000\196\000\195\000\194\000\194\000\193\000\192\000\192\000\192\000\192\000\192\000\191\000\191\000\191\000\191\000\190\000\190\000\190\000\190\000\189\000\189\000\189\000\189\000\188\000\187\000\187\000\186\000\186\000\186\000\185\000\184\000\184\000\184\000\184\000\183\000\182\000\182\000\181\000\181\000\180\000\180\000\179\000\179\000\179\000\179\000\178\000\178\000\177\000\177\000\177\000\177\000\176\000\176\000\176\000\176\000\175\000\175\000\175\000\175\000\175\000\174\000\173\000\173\000\173\000\172\000\171\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\165\000\165\000\165\000\165\000\165\000\165\000\164\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\134\000\133\000\133\000\132\000\132\000\131\000\131\000\130\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\129\000\128\000\127\000~\000}\000|\000{\000z\000y\000x\000w\000w\000w\000v\000v\000v\000u\000u\000u\000u\000t\000s\000r\000q\000p\000o\000n\000n\000m\000m\000m\000l\000l\000k\000k\000k\000j\000j\000i\000h\000h\000h\000g\000f\000f\000e\000e\000d\000d\000c\000c\000b\000b\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[\000Z\000Z\000Y\000Y\000Y\000Y\000Y\000X\000X\000W\000W\000W\000W\000V\000U\000T\000T\000T\000S\000S\000S\000R\000R\000R\000R\000R\000R\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\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\000J\000J\000J\000J\000J\000J\000J\000J\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000I\000H\000H\000H\000H\000H\000G\000F\000F\000F\000F\000F\000F\000F\000F\000F\000F\000F\000F\000F\000F\000F\000F\000F\000F\000F\000F\000F\000F\000E\000E\000E\000D\000C\000B\000B\000A\000A\000@\000?\000>\000>\000=\000=\000<\000<\000;\000:\000:\000:\000:\000:\000:\000:\0009\0009\0009\0009\0009\0009\0008\0008\0007\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\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\013\000\013\000\013\000\013\000\013")
+    (16, "\000\012\000\011\000\n\000\t\000\008\000\007\000\006\000\005\000\004\000\003\000\002\000\001\000\000\001\016\001\016\001\016\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\013\001\013\001\013\001\013\001\013\001\013\001\013\001\013\001\013\001\013\001\013\001\013\001\013\001\013\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\012\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\n\001\n\001\n\001\n\001\t\001\008\001\008\001\008\001\007\001\007\001\007\001\006\001\006\001\006\001\005\001\005\001\005\001\004\001\003\001\002\001\001\001\001\001\000\001\000\000\255\000\255\000\254\000\254\000\253\000\253\000\252\000\251\000\251\000\250\000\250\000\249\000\249\000\249\000\248\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\234\000\233\000\233\000\232\000\232\000\231\000\231\000\230\000\230\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\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\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\226\000\226\000\225\000\225\000\224\000\224\000\223\000\223\000\222\000\222\000\222\000\221\000\221\000\221\000\220\000\220\000\220\000\220\000\219\000\219\000\219\000\219\000\218\000\218\000\218\000\218\000\218\000\218\000\218\000\218\000\218\000\218\000\218\000\218\000\218\000\218\000\218\000\218\000\218\000\218\000\218\000\218\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\212\000\211\000\211\000\211\000\210\000\209\000\208\000\208\000\207\000\207\000\206\000\206\000\205\000\205\000\204\000\204\000\203\000\202\000\201\000\201\000\200\000\200\000\199\000\199\000\199\000\198\000\197\000\196\000\196\000\195\000\194\000\194\000\194\000\194\000\194\000\193\000\193\000\193\000\193\000\192\000\192\000\192\000\192\000\191\000\191\000\191\000\191\000\190\000\189\000\189\000\188\000\188\000\188\000\187\000\186\000\186\000\186\000\186\000\185\000\184\000\184\000\183\000\183\000\182\000\182\000\181\000\181\000\181\000\181\000\180\000\180\000\179\000\179\000\179\000\179\000\179\000\178\000\178\000\178\000\178\000\177\000\177\000\177\000\177\000\177\000\176\000\175\000\175\000\175\000\174\000\173\000\173\000\172\000\172\000\171\000\171\000\170\000\170\000\169\000\169\000\168\000\168\000\167\000\167\000\167\000\167\000\167\000\167\000\167\000\167\000\166\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\134\000\133\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\132\000\131\000\130\000\129\000\128\000\127\000~\000}\000|\000{\000z\000z\000z\000y\000y\000y\000x\000x\000x\000x\000w\000v\000u\000t\000s\000r\000q\000q\000p\000p\000p\000o\000o\000n\000n\000n\000m\000m\000l\000k\000k\000k\000j\000i\000i\000h\000h\000g\000g\000f\000f\000e\000e\000d\000d\000c\000c\000b\000b\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000a\000`\000`\000_\000_\000^\000^\000]\000]\000\\\000\\\000[\000[\000Z\000Z\000Z\000Z\000Z\000Y\000Y\000X\000X\000X\000X\000W\000V\000U\000U\000U\000T\000T\000T\000S\000S\000S\000S\000S\000S\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\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\000J\000J\000J\000J\000J\000J\000J\000J\000I\000I\000I\000I\000I\000H\000G\000G\000G\000G\000G\000G\000G\000G\000G\000G\000G\000G\000G\000G\000G\000G\000G\000G\000G\000G\000G\000G\000F\000F\000F\000E\000D\000C\000B\000B\000A\000A\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\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\013\000\013\000\013\000\013\000\013")
   
   let goto =
-    ((16, "\002H\000\019\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001/\000\000\001\003\0002\000\000\000\237\000\173\000\000\000\000\000\000\000\022\000\000\000,\000d\000\000\000\000\000\150\000\000\000\198\000\000\000\000\000\000\001`\000\000\001\252\000\000\000\000\000\000\000\000\002\180\000\000\003\152\003\206\000\000\000\000\004Z\000\000\005\022\000\000\000\000\000\000\005J\000\000\005\162\000\000\006>\000\000\006d\006\172\000\000\000\000\006\230\000\000\007\000\000\000\000#\000\000\000\000\007\030\000\000\007.\000\000\000\000\0074\000\000\007J\000\000\000\000\000\000\007\148\000\000\000\238\008\002\0007\000\000\000\000\000\000\002P\000f\000F\000\000\000\000\008t\000\000\008v\000\000\004\186\000\237#\158\000\000\000\000\012\202\000\000\0026\000\000\002\196)z!\196\011\142!\196\0052&z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\026\011\142\000\000\000\000\029r\000\000'T\000\000\t\144\000\000\000\000\000\000\000\000\000\232\000\000\029\192\000\000\000\000\000*\000\000\000\164\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n4\000\000\014\154\000\000\014\232\000\000\015<\000\000\015T\000\000\018\192\000\000\023\202\000\000-\218\000\0007<\000\0007t\000\000)\148\000\000\012v\000\000\000\000\000\000\000\000\000\0007\142\000\0007\164\000\0008\022\000\000\005\248\000\000\000\000\t\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\008\164\000\000\000\000\tb\000\000\tl\t~\000\000\000\000\t\154\000\000\t\218\000\000\000\000\000\000\t\226\000\000\t\238\000\000\000\000\n\016\000\000\n\020\n0\000\000\000\000\nT\000\000\nV\000\000\000\000\000\000\nX\000\000\nh\000\000\nv\000\000\n\136\n\146\000\000\000\000\n\174\000\000\n\186\000\000\002\192\n\194\000\000\n\202\000\000\n\206\000\000\n\208\000\000\000\000\000\000\n\212\000\000\n\214\000\184\000\000\n\230\000\000\002`\017\214\000\000\005j\000\000\006J\000\000\000\000\000,\000\000\000\000\000u\003(\000\000\000\000\000\000\000\000\003\012\000\000\003r\000\000\002\000\000\000\003\200\000\000\000\000\000\000\000\000\000\000\000\000\007\152\000\000\000\000\000\000\000\000\000m\000\000\000\000\000\000\000\000\000\000\000\000\000\002\003|\002*\000\000\n\234\000\000\n\242\002X\000\000\n\248\000\000\000\000\006R\000\000\000\000\000\000\000\000\000\000\"\168\000\0000\138\000\000\000\000\000\000\0040\000\000\000\000\000\000\000\000\000\000\000\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\248&z\000\000\023\208\000\000\026\134\019\140\000\000\000\000\000\000\0044\000\000\030\224\000\000\000\0000\144\000\000\000\000\000\000\004\148\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0006V\000\0006~\000\000\000\000\000\000\000\000\000\191\000\000\000\0000\236\000\000\000\000\000\000\007\138\001*\000\000\000\000\000\000\000\000\000\000\000\000\002d\000\000\004\174\000\000\005n\000\000\011\164\000\000\013\170\000\000\016\130\000\000\016\172\000\000\018\144\000\000\018\222\000\000\020j\000\000*D\000\000\000\146\000\000\020\202\000\000\022F\000\000\031\020\000\000\000\000\000\000\000\000\000\000\000Z1@\000\000\002n\000\000\000\000\000\n\001\172\000\000\002\248\000\000\000\000\000\000\012F\000\000\000\000\000\000&\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\252\004\216\000\000\011\000\000\000\000\000\000\000\000\000\000\000\011\002\000\000\000\000\002P\001\240\000\000\002D\000\000\000\000\000\000\004\030\000\000\012R\001\"\011\004\000\000\000\000\011\008\000\000\011\014\011\018\000\000\000\000\011\022\000\000\011\024\000\000\000\000\000\000\011\026\000\000\011\030\000\000\000\000\011\"\000\000\011*\011.\000\000\000\000\0118\000\000\011<\000\000\000\000\000\000\011@\000\000\011B\000\000\011D\000\000\011F\011R\000\000\000\000\011X\000\000\011`\000\000\004\178\011b\000\000\011z\000\000\011|\000\000\011\132\000\000\000\000\000\000\011\138\000\000\001~\000\000\000\000\011\140\004\246\000\000\011\144\000\000\000\000\002\244\000\000\000\000\000\134\000\000\000\000\000\000\000\000\000\000\004\218\005,\000\000\011\148\000\000\011\152\t\192\000\000\011\154\000\000\000\000\012\164\011\172\000\000\000\000\011\192\000\000\011\214\011\220\000\000\000\000\011\224\000\000\011\244\000\000\000\000\000\000\011\248\000\000\011\254\000\000\000\000\012\000\000\000\012\004\012\018\000\000\000\000\012\028\000\000\012\"\000\000\000\000\000\000\012$\000\000\012&\000\000\012.\000\000\0126\012<\000\000\000\000\012B\000\000\012N\000\000\004\248\012R\000\000\012f\000\000\012~\000\000\012\134\000\000\000\000\000\000\012\142\000\000\012\144\014b\000\000\012\146\000\000\000\000\006H\014j\000\000\012\150\000\000\012\154\016Z\000\000\012\162\000\000\000\000\000\000\000\000\000\000\000\000\000\0001z\000\000#*\000\0001\144\000\000\000\000\000\017\000\000\000\000\001r\007\176\000\000\000\000\015@\004T\000\000\020\142*b\000\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\024\228'\132\000\000\026\180\000\000\029\014\016P(\018\000\000\020\"\000\000\000\000\000\000\006\140\000\000\031\006\000\000\000\0002\018\000\000\000\000\000\000\007:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002 \000\0002\150\000\000\000\000\000\000(\156\000\000\000\000\000\000*|\000\000\000\000\000\000\000\000\008\002\000\000\000\000\000\000\000\000\007N\000\000\000\000+\\\000\000\001@\000\000\000\000\000\000\004`\000\000\t\200\000\000\n\144\000\000\016\250\000\000\022v\000\000 :\000\000!\164\000\000#\180\000\000$\188\000\000&\154\000\000(|\000\000)$\000\000,\234\000\000\000\000\000\000\000\000\000\000*\206\000\000\017H\000\000\022\210\n\222\000\000+,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\234\000\000\000\000\000\000\000\000\0038\000\000\006Z\000\000\000\000\t\014\000\000\000\000\000\000+.\000\000\000\000\000\000\000\000\000\000\0216\000\000\000\000\000\000\000\000+\130\000\000\000\000\000\000\000\000\003\172\012\004\000\000,\n\000\000\000\000\000\000\000\000\012\210\000\000,$\000\000\000\000\000\000\000\000\001\210\000\000\007>\000\000\t\236\000\026(<\000\000\000\000\000\000\006r\000\000\000\000\000\000\000\000\000\000\000\000\017\004(<\000\000\021\008\000\000\030\172\007\022\000\000\000\000\000\000\008\020\000\000\031b\000\000\000\0002\206\000\000\000\000\000\000\008J\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0006\208\000\0006\234\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\000\000\011\144\000\000\013\190\000\000\019^\000\000#\238\000\000'>\000\000't\000\000'\148\000\000)\200\000\000+z\000\0000N\000\000,\128\000\000\004\190\000\0001|\000\0003\184\000\0005\176\000\000(\192\000\000\000\000\000\0003\030\000\000\000\000\000\000\000\254\000\0003D\000\000\000\000\000\0003\168\000\000\000\000\002\188\000\000\024(\000!\001\174\000\000\003\024\000\000\013Z\002\026\007x\000\000\000\000\000\000\000\000\000\000\000\000\000\0003\194\000\000#X\"\002\008R\000\000\000\000\000\000-$\000\000-*\000\000-\172\000\000#\140$\016\007d\0001\008\188\000\000\000\000\000\000\003\200\000\000\000\000\001P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0003\226\000\000\000\000\000\000\000\000 ,\000\000$\226\000\000\000\000\000\000\000\000\000\000\000\000\013\232\000\000\003N\000\000\000\000\000\000\024b\005\018\000\000\024\156\000\000\000\000\012\210\000\000\005\128\000\000\000\000\014>\000\000\024\214\000\000\000\000 \238\000\000\000\000\000\000\019\014\000\000\000\000\006\152\000\000\000\000\025\188\000\000\000\000\000\000,\206\000\000\000\000\000\000\025\208\000\000\000\000\000\000\000\000-\178\000\000\000\000\000\000\000\000\005\132\013\218\000\000.0\000\000\000\000\000\000\000\000\000\000\000\000\014\180\000\000\000\000\005\248\000\000\015\250\000\000\019\014\000\000\000\000\004\200&N\000\000\006\206\000\000\000\000\000\000\000\000\003z\000\000$\248\000\000\0260\005\132\026j\000\000\005\158\000\000\016p\000\000\016\228\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\002\026\164\005\188\026\222\000\000\000\000\000\000\006d\000\000\017\200\000\000\007$\000\000\000\000\019\218\002\180\028r\000\000\007\006\000\000\018>\028\172\000\000\000\000\018\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\168\007\178\000\000\008\018\000\000\000\000\000\000\000\000\006\022\000\000\019\152\000\000\000\000\000\000 \0243\232\000\000\000\000\000\000\030~\000\000\000\000\000\000\000\000\002\212\006\154\000\000\000\000.4\000\000\000\000\003\212\000\000\006\182\000\000\000\000\026\000\000\000\000\000\000\000.6\000\000\000\000\000\000\000\000.\140\000\000\000\000\005\210\007\000\000\000\000\000.\206\000\000\000\000\008~!\022\000\000\007\198\000\000\000\000.\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000!\020\000\000\000\000\000\000\000\n\000\000\000\000\0086\000\000\000\000\027\254\000\000\000\000\000\000/\198\000\000\000\000\000\000\000\000/\230\000\000\000\000\007R\t \000\000\000\000/\236\000\000\000\000\008\164\000\000\000\000\000\000\000\000\003z\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\206\000\000\020\012\000\000\000\000\000\0004\152\000\000\tH\000\000\000\000\000\000\004\208\000\000\005\206\000\000\000\000\007\170\020\128\000\000\021f\000\000\000\000\000\000\008J\000\0004\200\008\1844\238\000\0005J\000\000\000\000\000\000\008\202\000\0005\164\008\218\000\000\000\000%D\t\004%\210\000\000%\232\000\000\000\000\000\000\t\006\000\0005\228\t\n\000\000\000\000\n0\t\022\014\162\000\000\017^\000\000\000\000\000\000\t\026\000\0005\250\t,\000\000\000\000\000\000\003\172\000\000\000\000\000\000\004\210\000\000\000\000\000\000\000\000\000\000\000\000\tP\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\138\000\000\000\000\003(\000\000\000\000\013`\000\000\000\000\000\000\000\000\003\196\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013`\000\000\000\000\013<\000\000\007\216\000\000\000\000\000\022\000\000\005d\012\242\002\018\000\000\000\000\007(\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\t\150\000\000\000\000\000\000\n\138\000\000\000\000\014\012\020\222\000\000\000\000\000\000\000\000\022\172\029\002\000{\000\000\029D\000\000\000\000\000\000\000\000\000\000\000\000\003J\000\000\000\000\006\184\000\000\000\000\012\188\000\000\000\000\000)\000\000\000\000\n\008\000\000\000X\000\000\000\000\000\000\000\000\000k\031r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\"\031\132\000\000\000\000\000\000\000\000\031\148\000\000\000\000\0126\000\000\013r\000\000\000\000\000\000\005\244\000\000\000\188\000\000\000\000\000\000\016n\000\000\000\000\tF\031\154\006\180\000\000!\n\000\000\000\000\000\000\000\000\013:\000\000\000\000\000\000\006\200\000\000\008\226\008>\001\154\000\000\000\000\000\000\000\000\000_\000\000\000\000\000\000\000\000\000\000\000\000\013$\000\000\000\000\007\020\000\000\004\174\013~\001,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\150\000\000\000\000\0188!r\000\000\000\000\000\000\000\000\008\016\000\000\tP\011\138\000\000\022\198\000\000\000\000\000\000\000\000\000\000\002\162\024<\000\000\000\000\030\218\000\000\000\000\000\000\000\000\017\182\000\000\031\014\000\000\000\000\000\000\000\000\000c\000\000\000\000\000\000\004\166\000\000\000\000\000\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\204\000\000\000\000\000\000\000\147\000\000\000\000\000\000\000\000\000\000\000T\n\\\016<\017\146\000\000\007\186\t\182\t\242\t\252\000\000\000\000\000\000\000\000\000\000\000\000\006\024\021\218\000\000\027\024\t\254\000\000\000\000\nd\000\000\022\020\000\000)P\000\000\000\000\0070\022N\000\000\028\230\000\000\008\022\029 \000\000\000\000\000\000\002\200\011\140\000\000\000\000\000\000\000\000\008p\000\000\023l\000\000\008\130\004\018\000\000\000\000\000\000\003\012\000\000\003r\000\000\t\142\000\000\000\000\005\178\000\000\000\000\000\000\000\000\t\130\000\000\000\000\n\178\000\000\023\238\000\000\019\014\013D\000\000\000\000\000\000\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\0000j\000\000\002J\000\000\000\000\000\000\000\000\000\000\000\200\000\000\t\246\n(\011H\000\000\002\142\011\196\000\000\n0\000\000\003\002\000\000\004r\000\000\004\230\000\000\019\014\000\000\000\000\000\000\000\000\000\000\005Z\000\000\n:\000\000\006\202\000\000\019\014\013\178\000\000\000[\000\000\013\168\012\166\000\000\005L\000\000\007\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\252\000\000\n`\000\000\000\000\000\000\000\000\000\000\000\000\013\192\012\176\000\000\000\000\012\210\000\000\000\000\012\184\t4\013\246\000\000\014\000\000\000\000\000\006\026\003\238\000\000\012\228\000\000\000\000\013\030\000\000\000\000\000\000\000\000\000\000\000\000\013\234\012\220\000\000\000\000\000\000\013\006\012\232\tj\n\014\013\006\013<\000\000\000\000\013\012\t\200\n(\013*\013`\000\000\000\000\005\214\000\000\000\000\000\000\000\000\0140\000\000\000\000\000\000\0142\000\000\000\000"), (16, "\003l\003\131\000\018\005\248\000_\000a\001\225\000e\005\163\005m\005n\005\145\007\004\006?\006@\000_\005\194\005m\005n\002\164\004Y\004A\0066\000_\005\245\005\181\007\005\002\164\000\017\003l\003\131\006D\0017\005\146\005m\005n\005>\000\138\001g\000\004\001h\000\149\001\212\000\025\000g\006I\001\140\005\182\006J\005\185\005m\005n\005~\000_\000J\004\019\000_\003n\003l\003\131\000\007\003o\000\005\003N\006N\006s\000_\000a\000b\000e\005o\006t\001B\000_\005|\000\024\003:\006u\005o\004\018\005\127\005m\005n\000\005\000\140\006\030\003n\006G\0026\001g\003o\001h\000\140\000\140\002=\005o\001i\000\141\000\138\001.\001j\000\142\000\149\0010\005\195\005\196\000g\0028\004\136\001\141\003\136\005o\001\181\004\019\0068\003n\003l\003\131\001\"\003o\006G\001\192\000J\000_\000a\001\t\000e\000\151\001w\006\173\003\231\000_\001\027\005\246\005\197\006u\006\174\004\018\0029\003\136\003\197\003\198\005o\005\198\000\140\001\213\003\253\001i\003U\007\013\000_\001j\001\194\000\140\005\195\005\196\003|\006$\000\141\006w\001\186\004\002\000\142\000g\000K\004\003\004\020\0024\003}\004\138\004g\004\019\000\028\003n\004\020\001\012\002=\003o\006x\001w\004U\003\232\006\193\000 \005\219\003|\000h\000J\000\151\004.\001/\001\188\001\214\005\198\001/\006.\004\007\003}\000\004\001\015\004B\0016\004a\005\149\003\253\000\152\001x\004\028\005\008\003\138\004x\000\031\0049\003\140\003|\004\028\000_\005\199\004!\004\002\0049\000\005\000_\004\003\004\020\006y\003}\000\153\003\197\003\198\004\224\000\008\001\217\006\194\006z\003\141\000\"\001\012\006\147\000J\003\142\001%\003\140\0011\003\143\000_\001\028\001\181\001\029\003\144\000\203\001\229\000\154\000\203\004\007\005\244\002\165\001x\004\023\006\149\000$\001\015\003\253\0016\003\141\004\028\000\152\004\252\006\151\003\142\0049\003\140\003|\003\143\001}\000\155\005\245\004\002\003\144\000_\000\194\004\003\004\020\006\195\003}\003l\003\131\000_\000\153\000\157\001\143\002H\006z\003\141\001\012\001\213\006\197\000\144\003\142\001g\000_\001~\003\143\001\172\002\164\004Y\004A\003\144\000_\000a\0019\000e\004\007\000\154\005\130\002\246\004\023\006\199\001\015\002,\0016\000_\001g\004\028\001h\001\145\006\201\000_\0049\003\140\001\223\000_\000a\001>\000e\000_\000\155\000(\001\013\001\148\004\019\000\156\003n\003l\003\131\001\189\003o\000\203\000g\003\234\000\157\003\141\001\"\001\141\000\140\003\200\003\142\001i\000_\006\030\003\143\001j\006u\006\179\004A\003\144\001\027\000g\002=\002\245\001g\000g\001\203\002H\000\138\000g\006\167\000\140\000\147\006\168\001i\003\236\004z\005\255\001j\005\246\001\131\000_\006E\001w\006\006\006Q\005\004\000_\004h\003\136\005\131\001\181\004\019\0026\003n\003l\003\131\004\246\003o\006\000\006\003\005m\005n\003\197\003\198\003-\001w\003F\006\190\000*\000_\001\189\002:\000\203\006u\006\179\004A\000J\003)\000\140\001\186\002\165\001i\000\140\006\172\003\253\001j\004\163\000\141\000_\003\197\003\198\000\142\006&\001\191\003|\000\203\005i\000J\000\013\004\002\005\249\001\234\0029\004\003\004\020\000_\003}\004\132\004j\004\019\001\187\003n\005j\001w\000J\003o\002\166\000\151\004U\001\236\001x\005o\006)\000\016\000\017\006\184\005\172\001\231\001%\000\203\001&\001\204\001\012\001\028\004\007\001\029\003:\000\203\004B\006G\004a\005\006\003\253\001x\001\134\004\028\006\159\006\160\004x\001\192\0049\003\140\003|\001\026\0017\001\012\001\015\004\002\0016\005\134\000/\004\003\004\020\006\185\003}\000J\001\144\001\027\000_\001\233\000J\000\203\006z\003\141\005l\001\015\004\005\0016\003\142\001\015\001\193\0016\003\143\001\015\001E\0016\000\251\003\144\001\145\003\199\005j\001x\004\007\001\146\003G\000\152\004B\001\147\006\187\006\164\003\253\006R\001\148\004\028\006\245\000_\006\189\000h\0049\003\140\003|\001\145\006F\001\186\003:\004\002\004\n\000\153\002H\004\003\004\020\006\185\003}\002\193\001-\001\150\002\197\000\005\006,\002\193\006z\003\141\002\197\001\"\004\005\006v\003\142\003F\003l\003\131\003\143\004\169\000\183\004\186\003\139\003\144\000h\001\027\004\247\003;\004\007\003*\005s\000_\004B\006G\006\187\006u\006\179\004A\000J\004\028\000J\002;\006\189\000\155\0049\003\140\001g\000\184\001h\006\130\004\249\000\185\0003\001(\003l\003m\002\238\000\157\001<\001\028\002\198\001\029\000\140\000\203\002\199\005t\002\198\003\141\003@\003\233\002\199\004\019\003\142\003n\003l\003\131\003\143\003o\005\173\0002\000\203\003\144\000_\000a\001\219\000e\003D\006\186\000J\000_\006\t\005^\006\n\006u\006\179\004A\005\176\000_\000a\0020\000e\000\140\000h\000J\001i\003;\004\015\000J\001j\000\140\001\237\003n\001g\005_\001~\003o\004\016\005b\005m\005n\003\232\006\011\000g\000J\000_\000a\002?\000e\001\236\004\019\006\012\003n\003l\003\131\001$\003o\001w\000g\000J\001\028\002\239\001\029\001g\000\203\001h\006\188\004\181\000_\001O\0005\001l\006u\006\179\004A\004P\006:\006;\002\212\003\019\003$\003\022\004\022\003\253\002\212\000g\005u\002\242\000\140\0017\002\213\001i\004\016\003|\004[\001j\002\213\006\131\004\002\006\132\005o\000\203\004\003\004\020\006\185\003}\004R\004[\004\019\003\025\003n\006\218\000_\006z\003o\002\245\000J\004\005\000\140\001u\001\131\001i\004m\001w\006\196\001j\000_\005\007\0017\004:\002\164\003|\000\138\004\007\002\031\001x\000\149\004B\000h\006\187\005\137\003\253\004G\003}\004\028\003\197\003\198\006\189\004\251\0049\003\140\003|\004\016\001w\002B\007\021\004\002\004\147\005\217\002\247\004\003\004\020\006\185\003}\0007\002\247\003N\004\016\004\187\002x\007\022\006z\003\141\002\248\001\012\004\005\005\138\003\142\006\138\002\250\005\215\003\143\001\215\005\218\005m\005n\003\144\000\140\003\168\001\012\000;\004\007\000\141\003l\003m\004B\000\142\006\187\001\015\003\253\0016\001x\004\028\001\145\005p\006\189\004m\0049\003\140\003|\003\141\005u\001\132\001\015\004\002\0016\001\012\001\152\004\003\004\020\006\185\003}\000\151\005\006\003\144\001\134\000h\000J\000J\006z\003\141\001x\000J\004\005\000=\003\142\000J\003l\003\131\003\143\001\015\006\225\0016\000_\003\144\005o\004c\001\144\000\140\004\007\003n\005\t\000_\004B\003o\006\187\006u\006\179\004A\004^\004\028\000J\005\239\006\189\005\175\0049\003\140\000J\000J\001\145\0014\006\246\006^\004o\001\146\003l\003m\004\020\001\147\005\228\005m\005n\000J\001\148\005\237\003\197\003\198\004z\003\141\005\240\005m\005n\004\019\003\142\003n\003l\003\131\003\143\003o\001\145\000\152\006\140\003\144\002\193\006\002\006\131\002\197\006\132\006\200\000\203\000_\005\008\000?\001\154\002\164\004Y\004A\005\133\004\028\000J\0017\004!\000\153\0049\003l\003\131\006\000\006\003\005m\005n\000\140\000C\003n\001g\004P\001~\003o\002\143\000h\000_\006\253\005o\000h\002\164\004Y\004A\000h\000\154\000J\003|\004\019\005o\003n\003l\003\131\000_\003o\004r\002\238\004}\004\230\003}\002\198\004u\004\249\004Q\002\199\000B\000_\000J\000\155\002\201\002\164\004Y\004A\000\193\006V\000h\000h\004\019\004u\003n\001\018\003\253\000\157\003o\001C\002\166\000\140\005o\0030\001i\000h\003|\004w\001j\000E\005{\004\002\005\131\003\197\003\198\004\003\004\020\006\185\003}\006\030\000J\004\019\000G\003n\004v\006l\006z\003o\002=\006\218\004\005\000J\005|\001\"\004%\004\164\001w\000L\005\127\005m\005n\003\130\000h\005\255\003|\000N\004\007\001\027\000Q\004\172\004B\005\173\006\187\000\203\003\253\002\239\003}\004\028\004\141\000S\006\189\000J\0049\003\140\003|\006\000\006\003\005m\005n\004\002\000J\002\210\002\212\004\003\004\020\002\241\003}\004\255\004g\000_\000f\002\242\000e\003\253\002\213\003\141\004\188\000J\004\005\004\143\003\142\005\245\003\234\003|\003\143\005\016\000W\000J\004\002\003\144\005o\000J\004\003\004\020\004\007\003}\004e\004g\004B\002\245\004a\004\141\003\253\005\018\001x\004\028\000\140\004\005\004!\000g\0049\003\140\003|\003~\003\237\003\238\003\240\004\002\005o\006\031\000h\004\003\004\020\004\007\003}\004\140\004g\004B\001\142\004a\006q\000h\004\142\003\141\004\028\006Z\004\005\004!\003\142\0049\003\140\001\228\003\143\002\247\000J\000_\001%\003\144\001+\006\219\001\144\001\028\004\007\001\029\004\236\000\203\004B\002\248\004a\003l\003\131\002\236\003\141\004\028\002\167\005\019\004!\003\142\0049\003\140\003q\003\143\001\145\004\236\000_\004\197\003\144\001\146\002\164\004Y\004A\001\147\003+\005\018\005\236\004\238\001\148\000h\003l\003\131\005\251\003\141\005\139\005\252\000J\000\138\003\142\003z\000d\000\139\003\143\003\215\006\135\000_\004\237\003\144\005\237\002\164\004Y\004A\001\"\005\240\005m\005n\004\019\002H\003n\005\\\005]\006|\003o\005\026\000\205\002\193\001\027\006\"\002\197\005\253\000\138\005\148\005\029\004\215\000\149\006V\000_\000a\002D\000e\005 \005\028\001\012\003l\003\178\004\019\005\254\003n\003l\003\131\005\028\003o\000\140\005\146\005m\005n\003\230\000\141\005\028\005(\005+\000\142\006b\000_\005.\006V\001\015\006u\0016\004\018\006V\0056\004\016\0059\006\243\005o\000g\005*\005*\000\138\000\140\005<\005\028\000\139\002\198\000\140\005\184\000\151\002\199\0058\000\141\0058\000_\006\176\000\142\006\136\002\164\006\176\000\140\005\028\003n\007\008\006\176\004\019\003o\003n\000h\003\253\005\182\003o\005\185\005m\005n\006e\000_\005o\006\218\003|\006Q\000\208\000\151\006\192\004\002\004\016\000\212\002\193\004\003\004\020\002\197\003}\005\003\004g\003N\000\211\000\140\001%\003\253\0033\006\137\000\141\001\028\004\005\001\029\000\142\000\203\006\191\003|\000\214\007\015\006\182\004\231\004\002\006\148\005\145\006\198\004\003\004\020\004\007\003}\006\145\004g\004B\004\016\004a\002\193\000\152\006\218\002\197\004\028\000\151\004\005\004!\005o\0049\003\140\005\146\005m\005n\006\015\000\216\000\140\002\212\007\t\000\220\002\198\006\254\004\007\000\153\002\199\000\222\004B\006Y\004a\002\213\003\253\007\016\003\141\004\028\000\152\003|\004!\003\142\0049\003\140\003|\003\143\000\225\001\012\000\229\004\002\003\144\003}\006\254\004\003\004\020\006\178\003}\003l\003\131\002\238\000\153\006X\000\228\002\198\006z\003\141\006W\002\199\006\181\006\136\003\142\001\015\000_\0016\003\143\001Q\006u\005o\004\018\003\144\000\231\000\233\000\237\004\020\004\007\000\154\006\221\000\152\004\023\006\183\000\239\006\253\000\138\003l\003m\004\028\000\147\000\241\006\189\006\254\0049\003\140\002\247\001g\006\253\001h\000\245\000_\000\155\000\153\006V\000\244\004\019\000\196\003n\006\\\002\252\0051\003o\003l\003\131\002\212\000\157\003\141\004\028\000\247\002\166\004!\003\142\0049\006\177\000\249\003\143\002\213\000_\000\252\006\223\003\144\006u\000\254\004\018\001\000\001\002\002\239\001\006\001F\003:\000\140\000\140\006S\003n\000\203\000\141\001\011\003o\001;\000\142\000\155\000\140\001A\002\212\001i\001@\003\029\001\222\001j\001\221\001\227\001\241\002\242\001\244\000\159\002\213\001\248\004\019\001\247\003n\001\250\001\252\002\000\003o\002\002\000\151\002\005\000\138\005\152\002\166\002\t\000\139\002\008\003l\003\131\006\180\001w\002\011\005\181\002\013\002\245\002\017\002\019\002\021\002\025\002\247\003\253\005\214\000_\000J\002\024\000\138\002\164\002\027\004\018\000\139\003|\002\029\002 \002\254\005\182\004\002\005\185\005m\005n\004\003\004\020\006\178\003}\005\215\002\"\002$\005\218\005m\005n\002&\006z\003 \002*\0023\006\181\0022\000\140\002A\002\247\002G\002F\000\141\004\019\002\138\003n\000\142\003|\000\138\003o\002J\004\007\001\209\002\248\000h\004\023\006\183\003;\000\152\003}\002M\000\140\004\028\003\253\006Z\006\189\000\141\0049\003\140\001x\000\142\002Q\000\151\003|\002P\001T\002S\005\011\004\002\005o\000\153\004\135\004\003\004\020\006\178\003}\002U\002\166\002Y\005o\003\141\002[\002^\006z\002b\003\142\000\151\006\181\003@\003\143\001\195\002a\000\203\000\140\003\144\000\183\002d\000J\000\141\002f\002j\002l\000\142\004\007\000h\002n\003D\004\023\006\183\002r\003l\003\131\002q\005\255\004\028\002t\003\141\006\189\000\155\0049\003\140\002v\000\184\002y\003\253\000_\000\185\001\145\000\151\002\164\003\146\004\018\000\157\002{\003|\006\000\006\003\005m\005n\004\002\000\152\001\156\003\141\004\003\004\020\002}\003}\003\142\003H\002\127\001g\003\143\001h\002\131\002\137\002\136\003\144\002\142\004|\002\148\003l\003m\000\153\002\147\000\152\004\019\003L\003n\005g\005\143\005\255\003o\005z\005\136\004\007\005\205\005\178\005\213\004\023\004~\005\235\003l\003\131\006\008\005\220\004\028\000\153\006\157\004!\004\011\0049\003\140\006\000\006\003\005m\005n\000_\006\203\005o\004\133\002\164\004\013\004\018\004\135\006\207\000\140\000\152\000h\001i\002\166\001\197\000\181\001j\003\141\006\226\000\140\006\230\003n\003\142\006\231\006\236\003o\003\143\006\237\003l\003\131\006\242\003\144\000\153\000J\005\145\006\241\006\249\004\025\000\155\006\251\004\019\007\001\003n\000_\001w\007\002\003o\002\164\004\026\004A\007\006\007\007\000\157\007\n\007\011\003O\005\146\005m\005n\005o\003\253\000_\000a\002\134\000e\000_\000a\002\140\000e\007\014\003|\007\017\007\018\003S\000\138\004\002\007\026\007\030\000\139\004\003\004\020\000\000\003}\004\019\000\000\003n\000\000\003l\003\131\003o\000\000\000\000\000\000\000_\004|\000\000\004D\002\164\000\000\000\000\000\000\000g\000_\000\000\000\000\000g\002\164\004\026\004A\006\013\004\007\000\000\000\000\000\138\004\023\004~\000\000\000\139\005o\000\000\003|\004\028\001x\000\000\004!\000\000\0049\003\140\000\000\000\140\000\000\003\253\003}\003N\000\141\000\000\000\000\000\000\000\142\000\000\000\000\003|\004\019\000h\003n\000\000\004\002\000\000\003o\003\141\004\003\004\020\000\000\003}\003\142\000\138\000\000\000\138\003\143\000\139\000\000\000\147\000\000\003\144\000\151\004F\006\018\000\138\000\140\000\000\000\000\000\139\000\000\000\141\003\253\000\000\000\000\000\142\000\000\000\000\000\000\004\007\000\000\000\000\003|\004\023\004H\004;\000\000\004\002\001\145\000\000\004\028\004\003\004\020\004J\003}\0049\003\140\003\141\000\000\000\000\000\000\000\151\001\158\004?\000\000\000\000\004\005\000\000\000\140\000\000\000\140\003\148\000\000\000\141\000\000\000\141\000\000\000\142\003\141\000\142\000\140\000\000\004\007\003\142\005\158\000\141\004B\003\143\004C\000\142\001\012\003\253\003\144\004\028\001\012\000\000\004!\000\000\0049\003\140\000\152\003|\004\020\000\151\000\000\000\151\004\002\000\000\003l\003\131\004\003\004\020\000\000\003}\001\015\000\151\0016\004I\001\015\000\000\0016\003\141\000\153\000_\000\000\004\005\003\142\002\164\004\026\004A\003\143\000\000\000\000\000\000\000\000\003\144\0053\000\000\000\000\000\152\000\000\004\007\000\000\004\028\000\000\004B\004!\004C\0049\000\000\000\000\002\193\004\028\000\000\002\197\004!\000_\0049\003\140\000\000\006Q\000\153\000\000\004\019\000\000\003n\000\000\003l\003\131\003o\000\155\000_\000a\002\145\000e\003&\001g\000\000\001h\000\000\003\141\000\152\000_\000\152\000\161\003\142\002\164\004Y\004A\003\143\000\000\000\000\000\000\000\152\003\144\005\181\000\000\001g\000\000\001h\002\234\000\000\000\000\000\153\000\000\000\153\000\140\000\000\000\000\000\155\002\198\000g\000\000\000\000\002\199\000\153\000\000\005\182\000\000\005\185\005m\005n\004\019\000\163\003n\003l\003\131\000\000\003o\000\000\000\183\000\140\000\000\000\000\001i\001g\002\193\001|\001j\002\197\000_\003l\003\129\000\000\002\164\004Y\004A\000\000\000\000\000\000\000\000\000\155\000\140\000\155\003\253\001i\000\000\000\184\000\000\001j\000\000\000\185\000\000\000\155\003|\000\165\001w\000\157\000\000\004\002\000\000\000\000\000\000\004\003\004\020\002\193\003}\000\167\002\197\000\000\004\019\005o\003n\000\000\000\000\000\000\003o\001w\004\005\000\000\000\140\000\140\000\000\001i\000\000\002\198\000\140\001j\003n\002\199\000\000\000_\003o\000\000\004\007\002\164\000\000\002\212\004B\000\000\004C\000\000\000\000\003\253\000\000\004\028\000\000\006[\004!\002\213\0049\003\140\000\000\003|\000\000\001w\000\000\000_\004\002\000\000\002\238\006Q\004\003\004\020\002\198\003}\000\000\004`\002\199\003l\003\131\003N\001\012\003\141\001x\000\000\000\000\004\005\003\142\000\000\000\000\006S\003\143\000\203\000_\000\000\005\236\003\144\002\164\004Y\004A\000_\001\014\004\007\000e\001x\001\015\004B\0016\004a\000\000\003\253\000\000\000\000\004\028\000\000\000\000\004!\005\237\0049\003\140\003|\000\000\005\240\005m\005n\004\002\005\223\002\215\000\000\004\003\004\020\002\212\003}\004\019\004b\003n\003|\003l\003\131\003o\000g\003\141\001x\002\213\004\005\000\000\003\142\000\000\003}\000\000\003\143\001\145\000_\002\239\000\000\003\144\002\164\004\127\004A\000\000\004\007\000\000\000\000\005\181\004B\001\160\004a\000\000\000\000\000\000\002\212\004\028\001\145\003\026\004!\000\000\0049\003\140\001g\002\242\001h\000\000\002\213\000\000\005o\005\182\001\162\005\185\005m\005n\000\000\004\020\004\019\000\000\003n\003l\003\131\000\000\003o\003\141\000\000\003\028\000\138\000\000\003\142\000\000\000\139\002\245\003\143\000\000\000_\000\000\002\247\003\144\002\164\004\127\004A\001g\000\000\001h\000\000\000\000\000\000\000\000\003\253\0055\003\000\006R\004\129\000\000\000\000\000\000\004\028\000\140\003|\004!\001i\0049\000\000\004\002\001j\000\000\000\000\004\003\004\020\003\"\003}\000\000\004t\005o\004\019\002\247\003n\000\000\000\000\000\000\003o\000\140\004\005\000\000\006V\006S\000\141\000\203\000\000\002\248\000\142\000\000\001w\000\000\000\000\001\012\000\140\000\000\004\007\001i\002\166\000\000\004B\001j\004a\003l\003m\003\253\000\000\004\028\004\131\0063\004!\000\000\0049\003\140\000\151\003|\000\000\001\015\003:\0016\004\002\000\000\000\000\000\000\004\003\004\020\001g\003}\001h\001w\000\000\000\000\003l\003\131\000\000\003\141\000\000\000\000\000\000\004\005\003\142\004\149\000\000\000\000\003\143\000\000\000\000\000_\000\000\003\144\000\000\002\164\004\026\004A\000\000\004\007\000\000\000\000\000\140\004B\003n\004\130\000\000\003\253\003o\000\000\004\028\000\000\001x\004!\000\000\0049\003\140\003|\000\000\000\000\000\000\006\024\004\002\000\000\000\000\000\140\004\003\004\020\001i\003}\000\000\004\019\001j\003n\003l\003\131\000\152\003o\003\141\000\000\000\000\004\005\000\000\003\142\002\166\002\193\000\000\003\143\002\197\000_\000\000\001x\003\144\002\164\000\000\004\018\000\000\004\007\000\153\000\000\001w\004B\000\000\004\130\003:\000\000\000\000\000\000\004\028\000\000\000\000\004!\000h\0049\003\140\004.\000\000\000\000\000\000\000\000\001\145\001g\006Z\001h\000\000\000\000\000\000\000\000\000\000\004\019\000\000\003n\003l\003\131\001\164\003o\003\141\000\000\000\000\002\193\000\140\003\142\002\219\003|\002\198\003\143\000\155\000_\002\199\001\192\003\144\002\164\000\000\004\018\000\000\003}\0043\000\000\000\000\001\145\000\169\000\000\003\253\004\253\005a\000\000\000\000\004\135\000\000\001g\000\000\001h\003|\001\166\0047\000\000\000\140\004\002\001x\001i\001\194\004\003\004\020\001j\003}\000\000\005_\004\019\000\000\003n\005b\005m\005n\003o\000\140\000\000\004\005\000\000\002\198\000\000\003l\003\128\002\199\000\000\000\000\000\000\000\000\000\000\000\000\000\138\005\145\001w\004\007\001V\000h\000\000\004B\004.\004C\000\000\003\253\005\013\003\141\004\028\000\140\004\135\004!\001i\0049\003\140\003|\001j\005\146\005m\005n\004\002\003\150\000\000\000_\004\003\004\020\002\212\003}\000\000\000\000\000\000\001y\003l\003\131\000\000\000\000\003\141\005o\002\213\004|\000\140\003\142\003n\0043\001w\003\143\003o\000_\000\000\000\140\003\144\002\164\000\000\004\018\000\141\004\007\000\000\000\000\000\142\004\023\004~\0047\000\000\003\253\000\000\000\000\004\028\000\000\000\000\004!\000\000\0049\003\140\003|\001x\000\000\000\000\000\000\004\002\005o\002\212\000\000\004\003\004\020\000\151\003}\000\000\004\019\001\"\003n\003l\003\131\002\213\003o\003\141\000\000\000\000\004|\000\000\003\142\000\000\000\000\001\027\003\143\000\000\000_\000\000\002\214\003\144\002\164\000\000\004\018\000\000\004\007\000\000\000\000\000\000\004\023\004~\003l\003\131\005\015\001x\000\000\004\028\004\135\000\000\004!\006g\0049\003\140\000\000\000\000\000\000\000_\000\000\000\000\000\000\002\164\004\026\004A\003|\001\145\000\000\001g\004\019\001h\003n\003l\003\131\000\000\003o\003\141\003}\000\000\000\000\001\168\003\142\000\000\000\000\000\000\003\143\000\152\000_\000\000\000\000\003\144\002\164\002\193\004\018\000\000\002\197\000\000\000\000\004\019\000\000\003n\000\000\003\253\006_\003o\000\000\000\000\004\135\000\153\000\000\000\000\005\156\003|\000\000\001\145\000\000\000\000\004\002\000\000\000\000\000\000\004\003\004\020\000\140\003}\000\000\001i\004\019\001\174\003n\001j\000\000\000\000\003o\000\000\001%\004|\003=\002\193\000\000\001\028\002\197\001\029\000\000\000\203\000\000\000\000\000\140\000\000\000\000\005\145\002\198\004\007\000\000\000\000\002\199\004\023\004~\001w\000\000\003\253\006m\005\255\004\028\000\000\004\135\004!\000\000\0049\003\140\003|\000\000\005\146\005m\005n\004\002\000\000\000\000\000\000\004\003\004\020\000\000\003}\000\000\006\000\006\003\005m\005n\000\000\003\253\000\000\003\141\000\000\002\238\004|\000\000\003\142\002\198\000\000\003|\003\143\002\199\000\000\000\000\004\002\003\144\000\000\000\000\004\003\004\020\004\007\003}\000\000\000\000\004\023\004~\000\000\000\000\003\253\000\000\000\000\004\028\000\000\004\005\004!\000\000\0049\003\140\003|\000\000\000_\000\000\000\000\004\002\005o\000\000\001x\004\003\004\020\004\007\003}\000\000\000\000\004B\000\000\004C\000\000\005o\002\212\003\141\004\028\000\000\004|\004!\003\142\0049\003\140\000\000\003\143\000\000\002\213\000\000\000\138\003\144\000\000\001g\000\139\001{\004\007\000\000\000\000\000\000\004\023\004~\000\000\000\000\000\000\002\239\003\141\004\028\003l\003\131\004!\003\142\0049\003\140\000\000\003\143\000\000\006\150\000\000\000\000\003\144\000\000\002\212\000_\006\138\003\026\000\000\002\164\004\026\004A\000\000\002\242\001\145\000\000\002\213\003\141\004\144\003l\003\131\000\000\003\142\000\000\000\000\000\000\003\143\000\140\001\176\000\000\000\140\003\144\000\141\001i\000_\003\028\000\142\001j\002\164\002\247\004A\002\245\000\000\000\000\000\000\004\019\000\000\003n\003l\003\131\000\000\003o\005\169\003\002\000\000\000\000\000\000\000\000\000\000\005\255\004E\000\000\000\151\000_\006 \001w\000\000\002\164\000\000\004\018\000\000\000\000\000\000\000\000\004\019\000\000\003n\003l\003\131\003!\003o\006\000\006\003\005m\005n\002\247\000\000\000\000\000\000\004\017\000\000\000\000\000_\000\000\000\000\000\000\002\164\000\000\004\018\002\248\000\000\000\000\000\000\004\019\000\000\003n\003l\003\131\000\000\003o\000\000\000\000\000\000\002\193\000\000\000\000\002\218\000\000\004\027\000\000\000\000\000_\000\000\000\000\000\000\002\164\000\000\004\018\000\000\006\141\000\000\006\142\004\019\006\131\003n\006\132\003\253\000\203\003o\000\000\000\152\000\000\000\000\001x\005o\000\000\003|\000\000\000\000\000\000\000\000\004\002\000\000\000\000\000\000\004\003\004\020\000\000\003}\000\000\000\000\004\019\000\153\003n\000\000\003\253\000\000\003o\000\140\000\000\004\005\000\000\002\198\000\000\000\000\003|\002\199\000\000\000\000\000\000\004\002\000\000\000\000\000\000\004\003\004\020\004\007\003}\000\000\000\000\004B\000\000\004C\000\000\003\253\000\000\000\000\004\028\000\000\004\146\004!\000\000\0049\003\140\003|\000\000\000\000\000\000\000\000\004\002\000\155\000\000\000\000\004\003\004\020\004\007\003}\000\000\000\000\004B\000\000\004\148\000\000\003\253\000\171\003\141\004\028\000\000\004\021\004!\003\142\0049\003\140\003|\003\143\000\000\000_\000\000\004\002\003\144\000\000\000\000\004\003\004\020\004\007\003}\000_\000\000\004\023\004\024\000\000\006'\003\253\000\000\003\141\004\028\000\000\004\021\004!\003\142\0049\003\140\003|\003\143\000\000\000\000\000\000\004\002\003\144\002\212\000_\004\003\004\020\004\007\003}\000\000\000\000\004\023\004\024\003l\003\131\002\213\000\000\003\141\004\028\000\000\004\021\004!\003\142\0049\003\140\000\000\003\143\000\000\000_\000\000\000\000\003\144\002\164\000\000\004\018\001\"\004\007\000\000\000\000\000\000\004\023\004\024\003l\003\131\000\000\001\"\003\141\004\028\000\000\001\027\004!\003\142\0049\003\140\000\000\003\143\001g\000_\001z\001\027\003\144\002\164\000\000\004\018\000\000\000\000\000\000\000\000\004\019\001\"\003n\003l\003\131\000\000\003o\003\141\000\000\000\000\000\000\002\193\003\142\000\000\002\217\001\027\003\143\000\000\000_\000\000\000\000\003\144\002\164\000\000\004\018\000\000\000\000\000\000\000\000\004\019\000\000\003n\003l\003\131\000\000\003o\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\140\000\000\000\000\001i\000_\000\000\000\000\001j\002\164\000\000\004\018\000\000\000\000\000\000\000\000\004\019\000\000\003n\003l\003\131\000\000\003o\000\000\000\140\000\000\000\000\000\000\002\198\000\000\006c\000\000\002\199\000\000\000_\000\000\001w\000\000\002\164\000\000\004\018\000\000\000\000\000\000\000\000\004\019\000\000\003n\001%\003\253\004(\003o\000\000\001\028\000\000\001\029\000\000\000\203\001%\003|\0040\000\000\000\000\001\028\004\002\001\029\000\000\000\203\004\003\004\020\000\000\003}\000\000\000\000\004\019\000\000\003n\004d\003\253\000\000\003o\000\000\001%\004]\004\175\000\000\000\000\001\028\003|\001\029\000\000\000\203\000\000\004\002\000\000\000\000\000\000\004\003\004\020\004\007\003}\000\000\000\000\004\023\004_\000\000\004\\\003\253\000\000\000\000\004\028\000\000\004]\004!\001x\0049\003\140\003|\000\000\000\000\000\000\000\000\004\002\000\000\000\000\002\212\004\003\004\020\004\007\003}\000\000\000\000\004\023\004_\004p\000\000\003\253\002\213\003\141\004\028\000\000\004q\004!\003\142\0049\003\140\003|\003\143\000\000\000_\000\000\004\002\003\144\000\000\000\000\004\003\004\020\004\007\003}\000\000\000\000\004\023\004s\000\000\004n\003\253\000\000\003\141\004\028\000\000\004]\004!\003\142\0049\003\140\003|\003\143\000\000\000\000\000\000\004\002\003\144\000\000\000\000\004\003\004\020\004\007\003}\000\000\000\000\004\023\004_\003l\003\131\000\000\000\000\003\141\004\028\000\000\006d\004!\003\142\0049\003\140\000\000\003\143\000\000\000_\000\000\000\000\003\144\002\164\000\000\004\018\001\"\004\007\000\000\000\000\000\000\004\023\006f\003l\003\131\000\000\000\000\003\141\004\028\000\000\001\027\004!\003\142\0049\003\140\000\000\003\143\000\000\000_\000\000\000\000\003\144\002\164\000\000\004\018\000\000\000\000\000\000\000\000\004\019\000\000\003n\003l\003\131\000\000\003o\003\141\000\000\000\000\000\000\000\000\003\142\000\000\006o\000\000\003\143\000\000\000_\000\000\000\000\003\144\002\164\002\193\004\018\000\000\002\216\000\000\000\000\004\019\000\000\003n\003l\003\131\000\000\003o\000\000\000\000\004{\000\000\000\000\000\000\000\000\006r\000\000\000\000\000\000\000_\005\145\000\000\000\000\002\164\000\000\004\018\000\000\000\000\000\000\000\000\004\019\000\000\003n\000\000\000\000\000\000\003o\000\000\000\000\004\128\000\000\000\000\005\146\005m\005n\000\138\000\000\000\000\000\000\001S\000\140\000\000\000\000\005\145\002\198\000\000\000\000\000\000\002\199\004\019\000\000\003n\001%\003\253\004\218\003o\000\000\001\028\000\000\001\029\000\000\000\203\000\000\003|\000\000\005\146\005m\005n\004\002\000\000\000\000\000\000\004\003\004\020\000\138\003}\000\000\000\000\000\147\000\000\000\000\000\000\003\253\000\000\000\000\000\000\000\000\004|\000\000\000_\000\140\000\000\003|\000\000\005o\000\141\000\000\004\002\000\000\000\142\000\000\004\003\004\020\004\007\003}\000\000\000\000\004\023\004~\000\000\000\000\003\253\000\000\000\000\004\028\000\000\004|\004!\000\000\0049\003\140\003|\000\000\000\000\000\000\000\151\004\002\005o\000\000\000\140\004\003\004\020\004\007\003}\000\141\000\000\004\023\004~\000\142\000\000\003\253\002\212\003\141\004\028\000\000\006d\004!\003\142\0049\003\140\003|\003\143\000\000\002\213\000\000\004\002\003\144\000\000\000\000\004\003\004\020\004\007\003}\000\000\000\151\004\023\006f\000\000\000\000\003l\003\131\003\141\004\028\000\000\006d\004!\003\142\0049\003\140\000\000\003\143\000\000\000\000\000\000\000_\003\144\000\000\000\000\004\162\000\000\004\007\000\000\003l\003\127\004\023\006f\000\000\000\000\000\000\000\000\003\141\004\028\005\167\000\152\004!\003\142\0049\003\140\000\000\003\143\000\000\004\193\000\000\000\000\003\144\000\000\000\000\000\000\000\138\000\000\000\000\000\000\000\147\000\000\004\196\000\153\003n\000\000\000\000\003\141\003o\000\000\000\000\000_\003\142\005\165\000\000\000\138\003\143\000\000\000\000\000\147\000\152\003\144\001g\005\255\001h\000\140\004\202\003n\000\000\000\000\000_\003o\000\000\000\000\000\197\000\198\000\200\000\201\000\000\000\000\000\000\000\000\000\153\000\000\000\000\006\000\006\003\005m\005n\005\255\000\000\000\140\000\000\000\000\004\239\000\000\000\141\003\136\000\000\001\181\000\142\000\138\000\202\000\000\000\203\000\147\000\000\000\183\000\000\000\000\000\140\006\000\006\003\005m\005n\000\141\000_\000\140\000\000\000\142\001i\000\000\000\000\000\000\001j\000\000\000\151\000\000\000\000\000\000\000\155\000\000\000\000\000\000\000\184\000\000\000\000\000\000\000\185\000\000\005\145\000\000\000\000\003|\000\157\000\151\001G\000\000\005o\005\145\000\000\000\000\001w\004\203\000\000\003}\000\140\005\145\000\000\000\000\005\145\000\141\005\146\005m\005n\000\142\003|\004\241\000\000\000\000\000\000\005\146\005m\005n\005o\000\000\000\000\000\000\003}\005\146\005m\005n\005\146\005m\005n\000\000\000\000\000\000\000\000\000\000\000\000\000\151\003l\003\131\004\206\000\000\000\000\004\242\000\000\004\229\003\140\000\000\000\138\000\000\000\152\000\000\000\147\000_\000\000\002\193\000\000\004\162\002\197\000\000\000\000\000\000\000\000\000_\000\197\001n\000\200\000\201\003\141\000\152\005o\000\000\000\153\003\142\000\000\000\000\001x\003\143\000\000\005o\004\243\000\000\003\144\000\197\002\203\000\200\000\201\005o\000\000\000\000\005o\000\153\000\202\004\196\000\203\003n\000\000\000\183\000\000\003o\000\000\006*\000\000\000\140\000\000\000\000\000\000\000\000\000\141\000\000\000\140\000\202\000\142\000\203\002\198\000\152\000\183\004\202\002\199\000\000\000\155\000\000\000\000\000\000\000\184\000\000\000\000\0061\000\185\000\197\003s\000\200\000\201\000\000\000\157\000\000\001G\000\153\000\151\000\155\000\000\000\000\000\000\000\184\001\145\000\138\000\000\000\185\000\000\000\147\000\000\000\000\000\000\000\157\000\000\001G\000\000\000\202\001\178\000\203\000_\000\000\000\183\000\000\000\138\003l\003\131\000\000\000\147\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\192\000_\000_\000\000\000\000\000\000\004\162\000\155\000\000\005\203\000\000\000\184\005\145\000\000\000\000\000\185\003|\005\208\000\000\000\000\005\232\000\157\000\140\001G\000\000\000\000\004\203\000\141\003}\004\195\000\000\000\142\000\000\002\212\005\146\005m\005n\000\000\000\152\000\000\004\204\000\140\004\196\000\000\003n\002\213\000\141\000\000\003o\000\000\000\142\000\000\000\197\003\255\000\200\000\201\000\000\000\151\002\193\000\000\000\153\002\197\000\000\000\000\005\145\000\000\004\202\004\206\000\000\000\000\004\211\000\000\004\229\003\140\000\138\000\000\000\151\000\000\000\147\000\000\000\202\000\000\000\203\000\000\000\000\000\183\005\146\005m\005n\000_\000\000\000\000\000\000\000\000\000\000\003\141\005o\000\000\000\000\000\000\003\142\000\000\000\000\000\000\003\143\003l\003\131\000\000\000\155\003\144\000\000\000\000\000\184\000\140\002\247\000\000\000\185\002\198\000\000\000\000\000\000\002\199\000\157\000\000\001G\000\000\004M\000\000\003\004\000\140\000\000\000\000\000\000\000\000\000\141\000\152\000\000\000\000\000\142\000\000\000\000\000\000\000\000\003|\000\000\000\000\000\000\000\000\005o\000\197\004\030\000\200\000\201\004\203\000\152\003}\000\000\000\153\000\000\000\000\002\238\000\000\003n\000\000\000\151\000\000\003o\004\204\000\197\004\208\000\200\000\201\000\000\000\000\000\000\000\000\000\153\000\202\000\000\000\203\000\000\000\000\000\183\000\000\000\000\001\179\001\181\000\000\000\138\000\000\000\000\000\000\000\147\000\000\004\206\000\000\000\202\004\211\000\203\004\229\003\140\000\183\000\000\000_\005\230\000\155\000\000\000\000\000\000\000\184\000\000\004S\000\000\000\185\002\212\003\136\000\000\000\000\000\000\000\157\000\000\001G\003\141\000\000\000\155\000\000\002\213\003\142\000\184\000\000\000\000\003\143\000\185\000\000\000\000\000\000\003\144\000\000\000\157\000\000\001G\000\000\000\152\000\140\000\000\000\000\000\000\000\000\000\141\000\000\000\000\003\253\000\142\003l\003\131\000\000\006\022\000\000\000\000\001\183\000\000\003|\000\000\000\000\000\153\000\000\004\002\000\000\000\000\000\000\004\003\000\000\000\000\003}\003\246\005\n\003l\003\131\000\151\000\000\000\000\000\000\000\000\000\000\001\189\004U\000\203\000\000\000\000\000\183\000\000\000\000\000\000\000\000\000\000\002\247\000\000\003\246\004V\000\000\000\000\004\007\003l\003\131\000\000\000\000\000\000\000\000\002\238\003\006\003n\000\138\000\155\000\000\003o\000\147\000\184\000\000\003\140\000\000\000\185\000\000\002\193\003\246\004L\002\197\000\157\000\000\000\000\000\000\000\000\002\238\000\000\003n\000\000\000\000\000\000\003o\000\000\000\000\003\141\000\000\000\000\000\000\000\000\003\142\000\000\000\000\000\000\003\143\000\000\003l\003m\000\000\003\144\000\000\000\152\002\238\000\000\003n\000\000\000\000\000\000\003o\000\000\000\000\000\140\000\000\003l\003\131\001I\000\141\000\000\000\201\000\000\000\142\000\000\000\140\000\153\000\000\000\000\002\198\000\000\000\000\000\000\002\199\000\000\001\210\000\000\003\246\003\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\202\003\253\000\203\000\151\000\000\000\183\000\000\000\000\000\140\000\000\003n\003|\000\000\000\000\003o\000\000\004\002\000\000\000\000\000\000\004\003\000\000\000\000\003}\003\253\002\238\000\000\003n\000\155\000\000\000\000\003o\000\184\000\000\003|\004\005\000\185\000\000\000\000\004\002\000\000\000\000\000\157\004\003\001G\000\000\003}\000\000\000\000\000\000\003\253\004\007\000\000\000\000\000\000\000\000\002\193\000\000\004\005\002\197\003|\000\000\000\000\000\000\000\000\004\002\000\000\000\000\003\140\004\003\000\000\000\000\003}\000\000\004\007\003l\003\131\000\000\000\000\000\000\002\212\000\152\000\000\000\000\004\005\000\000\003l\003\131\000\000\000\000\003\141\003\140\002\213\000\000\000\000\003\142\003\246\004\001\000\182\003\143\004\007\000\000\000\000\000\153\003\144\000\000\000\000\003\246\004X\003|\000\000\000\140\000\000\003\141\000\000\002\198\003\253\003\140\003\142\002\199\000\000\003}\003\143\000\000\003l\003\131\003|\003\144\000\183\000\000\002\238\004\002\003n\000\000\000\000\004\003\003o\000\000\003}\003\141\000\000\002\238\000\000\003n\003\142\003\246\005#\003o\003\143\000\000\004\005\000\155\000\000\003\144\000\000\000\184\000\000\000\000\000\000\000\185\000\000\002\247\000\000\000\000\000\000\000\157\004\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\008\000\000\000\000\000\000\002\238\000\000\003n\000\000\003\140\000\000\003o\000\000\000\000\003\141\000\000\000\000\000\000\000\000\000\000\000\000\003l\003\131\000\000\000\000\000\000\000\000\000\000\003\152\000\000\000\000\003\141\003l\003\131\000\000\000\000\003\142\000\000\002\212\000\000\003\143\000\000\003\246\005%\000\000\003\144\000\000\003\253\000\000\000\000\002\213\000\000\000\000\003\246\005'\000\000\000\000\003|\003\253\000\000\000\000\000\000\004\002\000\000\000\000\000\000\004\003\000\000\003|\003}\000\000\000\000\000\000\004\002\000\000\000\000\002\238\004\003\003n\000\000\003}\004\005\003o\003l\003\131\000\000\000\000\002\238\000\000\003n\000\000\000\000\004\005\003o\000\000\000\000\003\253\004\007\000\000\000\000\000\000\000\000\000\000\000\000\004O\000\138\003|\000\000\004\007\000\147\000\000\004\002\000\000\000\000\003\140\004\003\000\000\000\000\003}\002\247\000_\002\193\000\000\000\000\002\197\003\140\000\000\000\000\000\000\000\000\004\005\000\000\000\000\003\n\000\000\000\000\003\141\000\000\002\238\000\000\003n\003\142\000\000\000\000\003o\003\143\004\007\003\141\000\000\000\000\003\144\000\138\003\142\000\000\000\000\000\147\003\143\000\000\000\000\000\000\000\140\003\144\000\000\003\140\000\000\000\141\000_\003\253\000\000\000\142\000\000\000\000\000\000\000\000\000\000\000\000\000\140\003|\003\253\000\000\002\198\000\000\004\002\000\000\002\199\003\141\004\003\000\000\003|\003}\003\142\000\000\000\000\004\002\003\143\000\151\000\000\004\003\000\000\003\144\003}\004\005\000\000\003l\003m\000\000\000\140\000\000\000\000\000\000\000\000\000\141\004\005\000\000\000\138\000\142\000\000\004\007\001R\000\000\000\138\000\000\000\000\000\000\000\147\000\000\000\000\000\000\004\007\003\253\003l\003m\000\000\000\000\003\140\000_\000\000\000\000\000\138\003|\000\000\000\151\000\147\000\000\004\002\003\140\003l\003m\004\003\000\000\000\000\003}\000\000\000_\000\000\000\000\003\141\000\000\000\140\000\000\003n\003\142\000\000\004\005\003o\003\143\000\000\003\141\000\000\000\140\003\144\000\000\003\142\000\152\000\141\000\140\003\143\002\212\000\142\004\007\000\141\003\144\000\000\000\000\000\142\000\140\000\000\003n\000\000\002\213\001W\003o\000\000\000\140\000\000\000\153\003\140\000\000\000\141\000\000\000\000\000\140\000\142\003n\000\151\000\000\000\000\003o\000\000\000\138\000\151\000\000\000\000\000\147\000\000\001Y\000\000\000\203\003\141\000\152\000\183\000\000\000\000\003\142\000_\000\000\000\000\003\143\000\151\000\000\000\138\000\000\003\144\000\000\000\147\000\000\001W\000\000\000\000\000\000\000\000\000\153\000\000\000\155\000\000\000_\000\000\000\184\000\000\000\000\000\000\000\185\000\000\000\000\000\000\000\000\000\000\000\157\002\247\003|\000\000\001\201\002\193\000\203\000\140\002\197\000\183\000\000\000\000\000\141\000\000\003}\003\012\000\142\000\000\000\000\000\000\000\000\002\193\000\000\000\000\002\197\000\152\000\000\000\000\000\140\003|\000\000\000\152\000\155\000\141\000\000\000\000\000\184\000\142\000\000\000\138\000\185\003}\000\151\000\147\000\000\003|\000\157\000\153\001T\000\152\000\000\000\000\000\000\000\153\000_\000\000\000\000\003}\000\000\000\000\000\140\000\000\000\000\000\151\002\198\000\000\002\176\000\000\002\199\000\000\000\000\000\153\000\000\001\207\000\000\000\203\002\238\000\000\000\183\000\000\002\198\003\141\000\000\000\000\002\199\000\000\000\000\000\000\000\000\002\193\000\000\002\178\002\197\000\203\000\140\003\154\000\183\000\000\000\000\000\141\000\000\000\155\000\000\000\142\000\000\000\184\000\000\000\000\003\141\000\185\000\000\002\193\000\000\000\000\002\197\000\157\000\000\000\000\000\000\000\155\000\152\000\000\003\156\000\184\003\141\000\000\000\000\000\185\000\000\000\151\000\000\000\000\000\138\000\157\000\000\000\000\000\147\002\176\003\158\000\000\000\000\000\152\000\153\000\000\000\140\000\138\000\000\000\000\002\198\000\147\000\000\000\000\002\199\000\000\000\000\000\000\000\000\000\000\003\\\000\000\002\239\002\212\002\195\000\153\000\203\000\000\002\238\000\183\000\000\000\000\002\198\003l\003m\002\213\002\199\000\000\000\000\002\212\003\019\003\020\003\022\000\000\000\000\003^\000\000\000\203\002\242\000\140\000\183\002\213\000\155\000\000\000\141\000\000\000\184\000\000\000\142\000\000\000\185\000\000\000\140\000\000\000\000\000\000\000\157\000\141\000\000\000\152\003\025\000\142\000\000\000\155\000\000\000\000\002\245\000\184\000\000\000\000\000\000\000\185\000\000\000\179\000\151\000\000\003\\\000\157\000\140\000\000\003n\000\153\000\000\000\000\003o\000\138\000\000\000\151\000\000\000\147\000\000\000\000\000\000\000\000\002\247\001\198\000\000\002\212\000\000\000\000\000\138\003\176\002\239\000\203\000\147\000\000\000\183\000\000\003\014\002\213\002\247\000\000\000\000\000\138\000\000\000\000\000\000\000\147\000\000\002\212\003\019\006i\003\022\000\000\002\248\000\000\000\000\000\000\002\242\000\155\000\000\002\213\000\000\000\184\000\000\000\000\000\000\000\185\000\000\000\000\000\140\000\000\000\000\000\157\000\000\000\141\000\000\000\000\000\000\000\142\003\025\000\000\000\152\000\000\002\193\000\140\002\245\002\197\000\000\000\000\000\141\001\170\000\000\000\000\000\142\000\152\000\000\000\000\000\140\001\183\000\000\000\000\000\000\000\141\000\153\000\151\000\000\000\142\002\247\003|\000\000\000\000\000\182\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\151\003}\003\016\000\000\000\000\000\000\000\000\000\000\000\000\000\183\002\247\002\193\000\138\000\151\002\197\000\000\000\147\000\000\000\000\002\238\000\000\002\173\000\183\002\198\002\248\000\000\000\000\002\199\000\000\000\000\000\000\000\000\000\155\000\000\000\000\002\193\000\184\000\000\002\197\000\000\000\185\000\000\000\000\000\000\000\000\000\155\000\157\000\000\000\000\000\184\003l\003m\000\000\000\185\000\138\000\000\000\000\000\000\000\147\000\157\000\000\000\000\000\000\000\152\000\000\000\000\002\238\000\140\003\141\000\000\002\198\000\000\000\141\000\000\002\199\000\000\000\142\000\000\000\152\000\000\000\182\000\000\003\160\002\232\000\000\000\153\000\000\000\000\000\000\000\000\002\238\000\152\000\000\000\000\002\198\001\183\000\000\000\000\002\199\000\000\000\153\000\000\000\151\002\239\000\000\000\140\000\000\003n\002\234\000\140\000\183\003o\000\000\000\153\000\141\000\000\000\000\000\000\000\142\000\000\002\212\003\024\000\138\003\022\000\000\000\183\000\147\000\000\000\000\002\242\000\000\000\000\002\213\000\155\000\000\000\138\000\000\000\184\000\183\000\147\000\000\000\185\000\000\000\000\000\151\000\000\000\000\000\157\000\155\000\000\002\239\003\025\000\184\000\000\000\000\000\000\000\185\002\245\000\000\000\000\000\000\000\155\000\157\000\000\000\000\000\184\000\000\002\212\000\000\000\185\003\026\000\000\0037\000\000\002\239\000\157\002\242\000\140\000\000\002\213\000\152\000\138\000\141\000\000\000\000\000\147\000\142\000\000\000\000\000\000\000\140\002\212\000\000\000\000\002\244\000\141\000\000\002\234\003\028\000\142\002\242\002\247\000\153\002\213\002\245\000\000\003|\000\000\000\000\000\000\000\000\000\000\000\151\000\000\003B\002\248\000\000\000\000\003}\000\000\000\138\000\000\000\152\000\000\000\147\000\151\000\000\000\183\002\245\000\000\000\000\000\000\000\000\000\000\002\193\000\000\000\140\002\197\000\000\002\234\000\000\000\141\003\031\000\000\000\153\000\142\000\000\000\000\002\247\000\000\000\155\000\000\000\000\000\000\000\184\000\000\000\000\003\166\000\185\000\000\000\000\000\000\002\248\000\138\000\157\000\000\000\138\000\147\000\000\000\183\000\147\000\151\002\247\000\000\000\000\000\140\000\000\000\000\000\000\000\000\000\141\000\000\003J\000\000\000\142\003\141\002\248\000\000\000\000\000\140\000\152\000\000\000\155\002\198\000\000\003Q\000\184\002\199\000\000\003\162\000\185\000\000\000\000\000\152\000\000\000\000\000\157\002\234\000\000\000\000\000\151\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\140\000\000\002\234\000\140\000\000\000\141\000\000\000\153\000\141\000\142\000\000\000\000\000\142\000\138\000\000\000\000\000\138\000\147\000\000\000\183\000\147\003\219\000\000\000\000\003\221\000\000\000\000\000\000\000\000\000\000\000\000\000\152\000\183\000\000\000\000\000\151\000\138\000\000\000\151\000\000\000\139\000\000\000\155\000\000\000\000\000\000\000\184\000\000\000\182\000\000\000\185\000\000\000\000\000\153\000\000\000\155\000\157\000\000\000\000\000\184\000\000\000\000\004,\000\185\000\000\000\000\000\000\000\000\000\140\000\157\000\152\000\140\002\212\000\141\000\000\000\000\000\141\000\142\000\183\000\138\000\142\000\138\000\138\000\147\002\213\000\147\000\147\002\234\000\000\003\223\000\000\000\140\000\153\000\000\000\000\000\000\000\141\000\000\000\000\000\000\000\142\000\155\000\000\000\151\000\000\000\184\000\151\000\000\000\000\000\185\000\000\000\000\000\000\000\152\000\000\000\157\000\152\000\183\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\138\000\151\000\000\000\000\000\147\000\182\000\000\000\000\000\182\000\140\000\153\000\140\000\140\000\153\000\141\000\155\000\141\000\141\000\142\000\184\000\142\000\142\000\000\000\185\000\000\000\000\000\000\000\000\002\247\000\157\000\000\000\000\000\000\000\138\000\000\000\183\000\000\000\147\000\183\000\000\000\000\000\000\003\018\000\000\000\151\000\138\000\151\000\151\000\000\000\147\000\000\0045\000\000\000\000\000\000\000\140\000\152\000\000\000\155\000\152\000\141\000\155\000\184\000\000\000\142\000\184\000\185\000\000\000\000\000\185\000\000\000\000\000\157\000\182\000\000\000\157\002\234\000\000\000\153\000\152\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\000\000\140\000\000\000\151\000\000\000\000\000\141\000\000\000\000\000\000\000\142\000\000\000\000\000\140\000\153\000\000\000\183\000\000\000\141\000\183\000\000\000\000\000\142\000\000\000\000\000\000\000\000\004=\000\000\004\167\004\179\000\000\000\000\000\000\000\000\000\152\000\151\000\152\000\152\000\155\000\000\000\000\000\155\000\184\000\000\000\000\000\184\000\185\000\151\000\000\000\185\000\000\002\234\000\157\002\234\002\234\000\157\000\153\000\000\000\153\000\153\000\000\000\155\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\138\000\000\000\000\004\184\000\147\000\000\000\173\000\000\000\000\000\000\000\000\000\152\000\183\000\000\000\183\000\183\000\138\000\000\000\000\000\138\000\147\000\000\000\000\000\147\000\000\000\000\000\000\000\000\002\234\000\000\000\000\000\000\000\000\000\153\000\000\000\155\004\191\000\155\000\155\000\184\000\000\000\184\000\184\000\185\000\152\000\185\000\185\000\000\004\200\000\157\000\000\000\157\000\157\000\000\000\000\000\140\000\152\000\000\000\183\000\000\000\141\002\234\000\000\000\000\000\142\000\000\000\153\000\000\003l\003m\000\000\000\140\000\000\002\234\000\140\000\000\000\141\000\000\000\153\000\141\000\142\000\155\000\138\000\142\000\000\000\184\000\147\000\000\000\000\000\185\000\151\000\183\000\000\000\000\000\000\000\157\006\165\000\000\000\138\000\000\000\000\000\138\000\147\000\183\000\000\000\147\000\151\000\000\000\000\000\151\000\000\000\000\000\000\000\000\000\155\000\000\000\000\000\000\000\184\000\000\000\000\000\000\000\185\000\140\000\000\003n\000\155\000\000\000\157\003o\000\184\000\000\000\000\000\000\000\185\000\000\000\000\000\140\000\000\000\000\000\157\000\000\000\141\000\000\000\000\000\000\000\142\000\138\000\000\000\000\000\000\000\147\000\000\000\140\000\000\000\000\000\140\000\000\000\141\000\000\004\222\000\141\000\142\000\000\000\000\000\142\000\000\000\000\000\152\000\000\000\000\000\000\000\151\000\000\000\000\000\000\004\227\000\000\000\000\004\234\000\000\000\000\000\000\000\000\000\152\002\234\000\000\000\152\000\151\000\138\000\153\000\151\000\000\000\147\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\234\000\140\000\000\002\234\000\000\000\153\000\141\000\000\000\153\000\000\000\142\000\000\000\000\000\000\000\183\000\000\000\000\000\138\003l\003m\000\000\000\147\000\000\003|\000\000\000\000\000\000\000\000\000\138\000\000\000\183\000\000\000\147\000\183\000\000\003}\000\151\000\155\000\000\000\000\000\000\000\184\000\000\000\140\000\000\000\185\000\000\000\000\000\141\000\152\000\000\000\157\000\142\000\155\000\000\000\000\000\155\000\184\000\000\000\000\000\184\000\185\000\000\000\000\000\185\000\152\006F\000\157\000\152\000\000\000\157\000\153\000\140\000\140\000\000\003n\000\000\000\141\000\151\003o\000\000\000\142\001K\000\140\000\000\001q\000\000\000\153\000\141\000\000\000\153\000\000\000\142\000\138\000\000\000\000\000\183\000\147\000\000\000\000\000\138\000\000\003\141\000\000\000\147\000\000\000\000\000\151\000\000\000\000\000\000\000\000\000\183\000\000\000\152\000\183\003\164\000\000\000\151\000\155\000\000\000\000\000\000\000\184\000\000\000\000\000\000\000\185\000\000\000\000\000\000\001\138\000\000\000\157\000\000\000\155\000\153\000\000\000\155\000\184\000\000\000\000\000\184\000\185\000\000\000\000\000\185\000\000\000\140\000\157\000\000\000\000\000\157\000\141\000\000\000\140\000\152\000\142\000\000\000\138\000\141\000\183\000\000\000\147\000\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\185\003|\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\151\000\155\000\152\003}\000\138\000\184\000\000\000\151\000\147\000\185\000\000\000\000\000\000\000\152\000\000\000\157\000\000\000\000\000\000\002\155\000\183\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\000\002\159\000\140\000\000\000\000\000\000\000\153\000\141\000\000\000\000\000\000\000\142\000\000\000\000\000\155\000\138\000\000\000\000\000\184\000\147\000\183\000\000\000\185\000\000\000\000\000\000\000\000\000\000\000\157\000\000\000\140\000\183\000\000\000\000\000\138\000\141\000\000\000\151\000\147\000\142\000\000\003\141\000\000\000\155\000\000\000\000\000\000\000\184\000\000\000\152\000\000\000\185\000\000\000\000\000\155\003\170\000\152\000\157\000\184\000\000\000\000\000\000\000\185\000\000\000\000\000\151\002\206\000\000\000\157\000\000\000\140\000\153\000\000\002\221\000\000\000\141\000\000\000\000\000\153\000\142\000\000\000\000\000\000\000\000\000\138\000\000\000\000\000\000\000\147\000\140\000\000\000\000\003l\003m\000\141\000\000\000\183\000\138\000\142\000\000\000\000\000\147\000\000\000\183\000\000\000\151\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\138\000\000\000\152\000\138\000\147\000\000\000\155\000\147\000\000\000\000\000\184\000\151\000\000\000\155\000\185\000\000\000\000\000\184\000\000\002\223\000\157\000\185\000\000\000\000\000\153\000\000\000\140\000\157\000\000\000\000\000\152\000\141\000\000\000\000\000\140\000\142\003n\000\000\000\000\000\140\003o\000\000\000\000\000\000\000\141\000\000\000\000\003v\000\142\000\183\000\000\000\000\000\153\000\000\000\000\000\140\000\000\000\000\000\140\000\000\000\141\000\151\000\000\000\141\000\142\000\000\000\000\000\142\000\000\000\000\000\152\000\000\000\155\000\000\000\151\000\000\000\184\000\183\000\000\000\000\000\185\000\000\000\000\000\000\000\000\000\000\000\157\003\181\000\000\000\152\000\151\000\138\000\153\000\151\000\000\000\147\000\000\000\000\000\000\000\000\000\155\000\000\000\000\000\000\000\184\000\000\003\186\000\000\000\185\000\000\000\000\000\153\000\000\000\000\000\157\000\138\000\000\000\183\000\000\000\147\000\000\000\000\000\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\003|\000\183\000\000\000\147\000\152\000\155\000\000\000\000\000\000\000\184\000\000\000\140\003}\000\185\000\000\000\000\000\141\000\152\000\000\000\157\000\142\003\190\000\000\000\000\000\155\000\000\000\153\000\000\000\184\000\000\000\000\000\000\000\185\000\152\003\211\000\140\000\152\000\000\000\157\000\153\000\141\000\000\000\000\000\000\000\142\000\138\000\151\000\000\000\000\000\147\003\250\000\183\000\000\004\155\000\140\000\153\000\000\000\000\000\153\000\141\000\000\000\000\000\000\000\142\000\183\000\000\000\000\000\000\000\000\000\000\000\151\000\000\000\000\000\000\000\155\000\000\000\000\000\000\000\184\003\141\000\183\000\000\000\185\000\183\000\000\000\000\000\000\000\155\000\157\000\151\000\138\000\184\000\000\003\172\000\147\000\185\003l\003m\000\000\000\000\000\140\000\157\000\000\000\155\000\000\000\141\000\155\000\184\000\000\000\142\000\184\000\185\000\000\000\000\000\185\000\000\000\000\000\157\000\000\000\000\000\157\000\000\000\138\000\000\000\152\000\000\000\147\000\000\000\000\000\000\000\000\000\000\000\000\000\138\000\000\000\151\000\000\000\147\000\000\000\000\000\000\005\001\000\000\000\000\000\000\000\140\000\153\000\000\000\152\000\000\000\141\000\140\000\000\003n\000\142\000\000\000\000\003o\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\021\000\000\000\152\000\000\000\000\000\153\000\183\000\000\000\000\000\000\000\000\000\000\000\140\000\000\000\138\000\151\000\000\000\141\000\149\005\023\000\000\000\142\000\000\000\140\000\153\000\000\000\000\000\000\000\141\000\155\000\183\000\000\000\142\000\184\000\138\000\000\000\000\000\185\000\149\000\000\000\000\000\000\000\000\000\157\000\000\000\000\000\000\000\151\000\152\000\183\000\000\000\000\000\000\000\155\000\000\000\000\000\000\000\184\000\151\000\000\000\000\000\185\000\000\000\000\000\000\005\025\000\000\000\157\000\000\000\140\000\153\000\000\000\155\000\000\000\141\000\138\000\184\000\000\000\142\000\149\000\185\000\000\000\000\000\000\000\000\000\000\000\157\003|\000\138\000\140\000\000\000\000\000\149\000\152\000\141\000\183\000\000\000\000\000\142\003}\000\000\000\000\000\000\000\000\000\151\000\000\000\000\000\000\000\000\000\000\005\031\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\155\000\000\000\000\000\000\000\184\000\000\000\151\000\152\000\185\000\000\000\000\000\138\000\140\000\000\000\157\000\139\000\000\000\141\000\152\000\000\000\000\000\142\000\183\000\000\005-\000\140\000\000\000\000\000\000\000\153\000\141\000\000\000\000\000\000\000\142\005;\000\000\000\000\000\000\000\138\000\153\000\000\000\000\000\139\000\000\000\155\000\000\000\151\003\141\000\184\000\000\000\000\000\138\000\185\000\183\000\000\000\139\000\000\000\000\000\157\000\151\000\000\003\174\000\138\000\152\000\183\000\140\000\139\000\000\000\000\000\000\000\141\000\000\000\000\000\000\000\142\000\000\000\155\000\000\000\000\000\000\000\184\000\000\000\000\000\152\000\185\000\153\000\000\000\155\000\000\000\000\000\157\000\184\000\000\000\140\000\000\000\185\000\000\000\000\000\141\000\000\000\151\000\157\000\142\000\000\000\000\000\153\000\140\000\000\000\000\000\000\000\154\000\141\000\000\000\000\000\000\000\142\000\000\000\140\000\000\000\138\000\000\000\000\000\141\000\139\000\152\000\000\000\142\000\000\000\151\000\000\000\154\000\000\000\000\000\155\000\000\000\000\000\000\000\152\001\128\000\000\000\000\000\151\000\000\000\000\000\000\000\000\000\153\000\157\000\000\000\000\000\000\000\000\000\151\000\155\000\000\000\000\000\000\000\000\001\130\000\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\157\000\000\000\000\000\000\000\154\000\000\000\000\000\140\000\000\000\000\000\000\000\152\000\141\000\000\000\000\000\000\000\142\000\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\155\000\000\000\000\000\000\000\000\003\133\000\153\000\000\000\000\000\000\000\000\000\000\000\152\000\155\000\157\000\151\000\000\000\000\003\135\000\000\000\000\000\000\000\000\000\000\000\000\000\152\000\000\000\157\000\000\000\000\000\000\000\000\000\000\000\000\000\153\000\000\000\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\000\000\155\000\000\000\000\000\000\000\153\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\000\000\000\000\000\000\000\000\000\000\000\000\000\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\152\000\000\000\155\000\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\155\000\000\000\000\000\187\000\000\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\191"))
+    ((16, "\000\193\000l\000\000\000\000\000\000\000G\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\025\000\000\001C\000\182\000\000\001\019\000\197\000\000\000\000\000\000\000\139\000\000\000[\000\252\000\000\000\000\001t\000\000\001\166\000\000\000\000\000\000\001\206\000\000\002\018\000\000\000\000\000\000\000\000\003@\000\000\003R\003\134\000\000\000\000\004\132\000\000\004\172\000\000\000\000\000\000\005\166\000\000\005\182\000\000\005\208\000\000\006\000\006(\000\000\000\000\006J\000\000\006\200\000\000\000\000\000\000\000\000\007f\000\000\007n\000\000\000\000\007\218\000\000\008\018\000\000\000\000\000\000\008\026\000\000\000\160\008P\000\011\000\000\000\000\000\000\0072\002@\002\240\000\000\000\000\008\170\000\000\000\236\000\000\000\168\000\247\000\023\000\000\000\000\013\196\000\000\002\246\000\000\0028\004\128\000\160\011\002\000\160\003\148\031<\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\226\011\002\000\000\000\000\017\002\000\000\0188\000\000\001^\000\000\000\000\000\000\000\000\002R\000\000\018\144\000\000\000\000\014\156\000\000\023\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n,\000\000\011@\000\000\011D\000\000\015\144\000\000\019\236\000\000\019\240\000\000\023*\000\000\023>\000\000\028`\000\000!\030\000\000\006\026\000\000\006D\000\000\000\000\000\000\000\000\000\000#P\000\000)J\000\0006l\000\000\027v\000\000\000\000\028\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\008\228\000\000\000\000\t\"\000\000\t\132\t\202\000\000\000\000\t\208\000\000\t\218\000\000\000\000\000\000\t\222\000\000\t\224\000\000\000\000\t\230\000\000\t\246\n\016\000\000\000\000\n\024\000\000\n \000\000\000\000\000\000\n*\000\000\n,\000\000\n.\000\000\n2\nB\000\000\000\000\n\130\000\000\n\144\000\000\003\014\n\176\000\000\n\210\000\000\n\220\000\000\n\232\000\000\000\000\000\000\011\000\000\000\011\004\0056\000\000\011\014\000\000\000\194\006\154\000\000\002\216\000\000\004\006\000\000\000\000\007F\000\000\000\000\001\017\003z\000\000\000\000\000\000\000\000\003>\000\000\003P\000\000\008\168\000\000\002\026\000\000\000\000\000\000\000\000\000\000\000\000\008\208\000\000\000\000\000\000\000\000\000\209\000\000\000\000\000\000\000\000\000\000\000\000\0001\003\152\017\172\000\000\011\020\000\000\011\024\019\142\000\000\011\026\000\000\000\000\004\190\000\000\000\000\000\000\000\000\000\000\026\152\000\0000\026\000\000\000\000\000\000\003\190\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\144\000\000\000\000\000\000\000\000\000\000\000\000\006\160\031<\000\000\007\142\000\000\020\216\022\190\000\000\000\000\000\000\004@\000\000 2\000\000\000\0000r\000\000\000\000\000\000\005\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000!\128\000\000&\208\000\000\000\000\000\000\000\000\000\199\000\000\000\0000\186\000\000\000\000\000\000\000n\000s\000\000\000\000\000\000\000\000\000\000\000\000\0006\000\000\004\144\000\000\005\158\000\000\n~\000\000\011^\000\000\012\016\000\000\012\146\000\000\016\142\000\000\027\210\000\000\0302\000\000\014\144\000\000\004\012\000\000\031n\000\000%\172\000\000-\178\000\000\000\000\000\000\000\000\000\000\000\1710\200\000\000\000:\000\000\000\000\000}\001\132\000\000\001\028\000\000\000\000\000\000\005\190\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\001\028\000\000\000\000\000\000\011(\020\254\000\000\011*\000\000\000\000\000\000\000\000\000\000\011,\000\000\000\000\000\129\007\166\000\000\008H\000\000\000\000\000\000\000}\000\000\012\206\001\196\011.\000\000\000\000\011:\000\000\011B\011F\000\000\000\000\011J\000\000\011N\000\000\000\000\000\000\011T\000\000\011V\000\000\000\000\011^\000\000\011d\011f\000\000\000\000\011v\000\000\011~\000\000\000\000\000\000\011\128\000\000\011\146\000\000\011\150\000\000\011\152\011\160\000\000\000\000\011\162\000\000\011\166\000\000\005\218\011\172\000\000\011\174\000\000\011\176\000\000\011\192\000\000\000\000\000\000\011\198\000\000\006\020\000\000\000\000\011\206\023\164\000\000\011\210\000\000\000\000\000`\000\000\000\000\003J\000\000\000\000\000\000\000\000\000\000\006&\025\134\000\000\011\218\000\000\011\224\030\"\000\000\011\228\000\000\000\000\012\236\011\236\000\000\000\000\011\238\000\000\012\004\012\018\000\000\000\000\012\030\000\000\012(\000\000\000\000\000\000\012*\000\000\012,\000\000\000\000\0122\000\000\012:\012<\000\000\000\000\012@\000\000\012B\000\000\000\000\000\000\012R\000\000\012T\000\000\012V\000\000\012X\012Z\000\000\000\000\012b\000\000\012d\000\000\007\008\012v\000\000\012z\000\000\012\154\000\000\012\160\000\000\000\000\000\000\012\162\000\000\012\164\"\028\000\000\012\168\000\000\000\000\007x#d\000\000\012\170\000\000\012\174&\028\000\000\012\176\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\252\000\000#\240\000\0001>\000\000\000\000\000Z\000\000\000\000\001\188\000\214\000\000\000\000\020H%\136\000\000\017$\017\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\000\000\029\028((\000\000\029\184\000\000$\240\0120(\156\000\000\016\214\000\000\000\000\000\000\007\168\000\000 \214\000\000\000\0001^\000\000\000\000\000\000\007\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\212\000\0002\008\000\000\000\000\000\000(\242\000\000\000\000\000\000\022~\000\000\000\000\000\000\000\000\007\206\000\000\000\000\000\000\000\000\031\132\000\000\000\0005t\000\000\000\157\000\000\000\000\000\000\000\025\000\000\001\248\000\000\002\140\000\000\0042\000\000\008\146\000\000\t\164\000\000\014R\000\000\014\170\000\000\017\128\000\000\022\\\000\000\024@\000\000\027*\000\000\031\008\000\000\000\000\000\000\000\000\000\000\007:\000\000)\246\000\000*82X\000\000*\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004R\000\000\000\000\000\000\000\000\005z\000\000\004\216\000\000\000\000\024<\000\000\000\000\000\000*:\000\000\000\000\000\000\000\000\000\000\0258\000\000\000\000\000\000\000\000*\134\000\000\000\000\000\000\000\000\004\004\004r\000\000*\224\000\000\000\000\000\000\000\000\008\176\000\000*\254\000\000\000\000\000\000\000\000\000~\000\000\007|\000\000\015\178\006t(\214\000\000\000\000\000\000\013F\000\000\000\000\000\000\000\000\000\000\000\000\018\246(\214\000\000\021\170\000\000\024\234\013\248\000\000\000\000\000\000\0080\000\000 \240\000\000\000\0002L\000\000\000\000\000\000\008@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0005\148\000\00060\000\000\000\000\000\000\001 \000\000\000\000\000\000\000\000\000\000\000\000\007b\000\000\016T\000\000\018\190\000\000\024h\000\000\025\152\000\000'\n\000\000-\170\000\000/r\000\000/\186\000\0005B\000\000+&\000\000\000&\000\0006\006\000\0006^\000\0006\186\000\000),\000\000\000\000\000\0002\152\000\000\000\000\000\000\004 \000\0002\158\000\000\000\000\000\0002\238\000\000\000\000\0010\000\000\024\200\000!\005\026\000\000\005:\000\000\013\144\002\n\008\014\000\000\000\000\000\000\000\000\000\000\000\000\000\0003\"\000\000$<$\000\008\142\000\000\000\000\000\000+\158\000\000+\234\000\000,D\000\000%$%H\002\154\000\144\008\170\000\000\000\000\000\000\002>\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\0003\162\000\000\000\000\000\000\000\000!<\000\000&\n\000\000\000\000\000\000\000\000\000\000\000\000\014\024\000\000\000\000\005\188\000\000\000\000\000\000\025v\002\164\000\000\026\016\000\000\000\000\008\176\000\000\002\196\000\000\000\000\014\198\000\000\026\206\000\000\000\000!\254\000\000\000\000\000\000\006\204\000\000\000\000\005\002\000\000\000\000\0266\000\000\000\000\000\000,j\000\000\000\000\000\000\027\222\000\000\000\000\000\000\000\000,\136\000\000\000\000\000\000\000\000\004>\011\144\000\000,\194\000\000\000\000\000\000\000\000\000\000\000\000\015N\000\000\000\000\002\238\000\000\015\204\000\000\006\204\000\000\000\000\001\130\tD\000\000\003\006\000\000\000\000\000\000\000\000\001 \000\000&$\000\000\026 \003H\027h\000\000\003h\000\000\016\192\000\000\017>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\254\028&\005\024\028\192\000\000\000\000\000\000\005\154\000\000\017\180\000\000\004\"\000\000\000\000\t\192\004\246\029n\000\000\006\136\000\000\0182\029~\000\000\000\000\019&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\190\0082\000\000\0064\000\000\000\000\000\000\000\000\006V\000\000\019\164\000\000\000\000\000\000\"\1643\176\000\000\000\000\000\000 \024\000\000\000\000\000\000\000\000\0070\006`\000\000\000\000-\008\000\000\000\000\002\236\000\000\007\024\000\000\000\000\030>\000\000\000\000\000\000-.\000\000\000\000\000\000\000\000.\012\000\000\000\000\006\236\008\150\000\000\000\000.\016\000\000\000\000\006\206#\006\000\000\008\194\000\000\000\000.X\000\000\000\000\000\000\000\000\000\000\000\000\000\000#\"\000\000\000\000\000\000\000}\000\000\000\000\008\224\000\000\000\000\"n\000\000\000\000\000\000.\208\000\000\000\000\000\000\000\000.\238\000\000\000\000\008\182\t(\000\000\000\000/\024\000\000\000\000\008.\000\000\000\000\000\000\000\000\001 \000}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002t\000\000\020,\000\000\000\000\000\00048\000\000\t\194\000\000\000\000\000\000\003\154\000\000\005\004\000\000\000\000\006\192\020\238\000\000\021v\000\000\000\000\000\000\008\008\000\0004F\00884`\000\0004\188\000\000\000\000\000\000\008l\000\0004\240\008t\000\000\000\000&\128\008\204&\230\000\000'B\000\000\000\000\000\000\t\020\000\0005\020\t\026\000\000\000\000\020\190\t\132!\192\000\000$\018\000\000\000\000\000\000\t\136\000\0005\128\t\184\000\000\000\000\000\000\000?\000\000\000\000\000\000\007v\000\000\000\000\000\000\000\000\000\000\000\000\005\008\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002X\000\000\000\000\003\026\000\000\000\000\013h\000\000\000\000\000\000\000\000\007\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\013l\000\000\000\000\013B\000\000\000%\000\000\000\000\000\134\000\000\0052\012\246\002\156\000\000\000\000\003\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\252\018\016\000\000\000\000\005\\\000\000\000\000\000\000\021\156\000\000\000\000\0224\023\014\000\000\000\000\000\000\000\000\023\172\027\254\000w\000\000\031\246\000\000\000\000\000\000\000\000\000\000\000\000\008*\000\000\000\000\006\164\000\000\000\000\012\190\000\000\000\000\003n\000\000\000\000\012\194\000\000\000w\000\000\000\000\000\000\000\000\011\n \020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0138 \196\000\000\000\000\000\000\000\000#L\000\000\000\000\003\022\000\000\013z\000\000\000\000\000\000\t\238\000\000\000\186\000\000\000\000\000\000\017X\000\000\000\000\015l$N\011~\000\000$\152\000\000\000\000\000\000\000\000\013>\000\000\000\000\000\000\n4\000\000\001\170\013\016\004\016\000\000\000\000\000\000\008|\008J\000\000\000\000\000\000\000\000\002D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\132\000\000\000\000\016^\000\000\000\029\013\142\003\224\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\144\000\000\000\000\0248%b\000\000\000\000\000\000\000\000\0026\000\000\005\008\011\198\000\000\028\202\000\000\000\000\000\000\000\000\000\000\000\146!\012\000\000\000\000&\176\000\000\000\000\000\000\000\000\nV\000\000)\240\000\000\000\000\000\000\000\000\007D\000\000\000\000\000\000\006\242\000\000\000\000\001\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000/\174\000\000\000\000\000\000\005\028\000\000\000\000\000\000\000\000\000\000\000\004\004\150\007\150\008\220\000\000\005\186\005\212\t\004\t\134\000\000\000\000\000\000\000\000\000\000\000\000\006b\021\244\000\000\030d\007X\000\000\000\000\008\248\000\000\022\232\000\000)\226\000\000\000\000\008\160\023f\000\000\030t\000\000\008\176\031\"\000\000\000\000\000\000\004\242\005\186\000\000\000\000\000\000\000\000\0088\000\000\011<\000\000\000\157\011z\000\000\000\000\000\000\003>\000\000\003P\000\000\t\002\000\000\000\000\0032\000\000\000\000\000\000\000\000\n8\000\000\000\000\t\238\000\000\023\220\000\000\020\236\013L\000\000\000\000\000\000\000\000\000\000\000G\000\000\000\000\000\000\000\000\000\000/\250\000\000\000R\000\000\000\000\000\000\000\000\000\000\001\148\000\000\n\182\t\136\011\200\000\000\002\170\012F\000\000\n\146\000\000\003\164\000\000\004D\000\000\005>\000\000\020\236\000\000\000\000\000\000\000\000\000\000\005\222\000\000\n\162\000\000\006\216\000\000\020\236\013\174\000\000\004\222\000\000\013\160\012\138\000\000\tH\000\000\n\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\168\000\000\011\020\000\000\000\000\000\000\000\000\000\000\000\000\013\166\012\158\000\000\000\000\012\196\000\000\000\000\012\166\t\218\013\226\000\000\013\232\000\000\000\000\t\186\011P\000\000\012\220\000\000\000\000\013\018\000\000\000\000\000\000\000\000\000\000\000\000\013\222\012\204\000\000\000\000\000\000\012\238\012\212\n\166\n\156\012\240\013&\000\000\000\000\012\222\n\176\n\170\012\252\0138\000\000\000\000\n\138\000\000\000\000\000\000\000\000\014\008\000\000\000\000\000\000\014\016\000\000\000\000"), (16, "\003l\003\131\005\196\005\197\002\193\000\138\005?\002\197\0017\000\147\003:\005\164\005n\005o\000\007\000\018\000_\006\017\003l\003\131\002\164\004Z\004B\001.\005|\006|\000\025\000_\000a\001\225\000e\006}\005\198\001\186\000_\003l\003m\000\005\006~\001\212\004\019\000\017\005\199\001g\001\140\001h\005}\006\018\001B\006\019\006\168\006\169\005\128\005n\005o\0010\004\020\001\192\003n\000\013\000\140\000\140\003o\001\188\002\198\000\024\000\141\000g\002\199\0026\000\142\001g\000J\001~\004\020\005p\003n\000_\006\020\002\246\003o\002\164\006\144\001\210\000\016\000\017\001\143\001\194\006\021\002:\001\234\000\140\001\237\003n\000\028\006'\000\138\003o\000\151\000\140\000\147\005t\001i\000\004\006\173\002=\001j\001\141\001\236\005\127\001\236\004\137\000_\003\136\001/\001\181\005p\003N\000 \006\007\0029\000h\006\128\000_\004/\006\176\000\005\000\140\006\177\000_\001i\005}\001\013\002\245\001j\005u\001w\005\128\005n\005o\006\129\006\008\001\213\006\011\005n\005o\001/\001\186\003\253\001\141\000_\000f\000\140\000e\005\196\005\197\000J\000\141\003|\002\166\006P\000\142\002\212\004\002\001w\004\225\003\253\004\003\004\021\000g\003}\004\139\004h\006\145\002\213\000\152\003|\001\187\006/\000J\006\181\004\002\004V\000K\005\220\004\003\004\021\006\130\003}\000\151\000g\000\138\000\182\003|\005\199\000\139\006\131\000\153\004\007\001\012\006\156\005p\004C\003U\004b\003}\004\247\005p\0062\004\029\001\179\001\181\004y\001x\004:\003\140\004\007\005\140\003l\003\131\004\024\006\158\000\183\001\015\005\005\0016\000_\004\029\003\231\004\021\006\160\006\182\004:\003\140\000_\005v\006P\003\141\006~\006\183\004\019\001x\003\142\002\247\006\002\000\155\003\143\000\140\0024\000\184\003\168\003\144\000\141\000\185\000_\003\141\000\142\002\250\002=\000\157\003\142\001\192\001\186\005\t\003\143\001\142\000\152\000h\002\193\003\144\004\029\002\197\003\141\004\"\004\020\004:\003n\003l\003\131\003\232\003o\001\145\002;\001\183\000\151\006\202\003\144\001\144\000\153\000\031\000h\001\193\003\139\000_\002\165\001\150\000\008\002\164\004Z\004B\001g\000_\001\203\002H\001\214\006'\006\003\004Q\001\189\001\145\000\203\001\215\0065\000\183\001\146\002=\006\004\006\005\001\147\001\229\005\007\000\203\001\012\001\148\000\140\001\015\001E\0016\002\198\006\007\006H\006I\002\199\004\020\002\167\003n\000\155\004S\006\203\003o\000\184\005\254\002\193\005b\000\185\002\197\001\015\006M\0016\000\"\000\157\006\008\003+\006\011\005n\005o\000\140\003l\003\131\001i\000J\000\152\005\251\001j\004\016\005`\003\253\001\"\004\252\000J\005c\005n\005o\000_\000$\004\017\003|\006~\006\188\004B\004\023\004\002\001\027\000\153\005\131\004\003\004\021\006\204\003}\004i\003\136\004\017\001\181\001w\000(\001g\006\131\001~\000\140\004\248\006\206\004H\002\198\006P\006'\000J\002\199\001\213\000_\000a\000b\000e\004\017\004\020\002=\003n\004\007\005p\006(\003o\004\024\006\208\001\191\004\250\000\203\003\253\002\212\004\029\000*\006\199\006\210\001Q\004:\003\140\005p\003|\000J\005j\002\213\005\215\004\002\000_\0026\003\233\004\003\004\021\003:\003}\000g\004k\003-\000\140\003F\005k\001i\003\141\002H\004\\\001j\004V\003\142\005\216\0028\000J\003\143\005\219\005n\005o\005\132\003\144\001x\001\217\005\252\004\\\001g\004\007\001~\000_\006-\004C\000\144\004b\003l\003\131\005\182\001\131\004\029\000J\001w\004y\001$\004:\003\140\0029\003\232\001\028\000J\001\029\000_\000\203\002\212\004Q\006~\006\188\004B\003\253\005\183\002\247\006\147\005\186\005n\005o\002\213\002H\003\141\003|\003\234\0067\000J\003\142\004\002\002\252\006+\003\143\004\003\004\021\006\194\003}\003\144\005p\000\140\004R\000J\001i\001g\006\131\001h\001j\004\020\004\005\003n\003\197\003\198\001\026\003o\000\004\0017\000h\003\237\003\238\003\240\000J\005\134\002\193\006\193\004\007\002\197\000h\001\027\004C\003;\006\196\003l\003\131\001\131\001x\004\029\001w\000\005\006\198\005\131\004:\003\140\005p\000\251\0017\001\204\005\135\000_\000/\001\012\002\247\006~\006\188\004B\004\250\003G\000J\0003\001\134\000\140\0014\000\138\001i\003\141\002\254\000\147\001j\001-\003\142\001g\004\182\001h\003\143\001\015\003)\0016\001(\003\144\000\140\004d\001\144\002H\002\198\0002\004;\000J\002\199\004\020\000_\003n\002\166\005\008\006Z\003o\000J\004_\001w\004v\003\234\003\253\006\149\005\221\001\145\006\195\006\140\005\132\006\141\001\146\000\203\003|\000J\001\147\001<\001x\004\002\004v\001\148\000\140\004\003\004\021\006\194\003}\000\141\005\132\001\132\000\140\000\142\004x\001i\006\131\003\236\001O\001j\004\005\000_\003\197\003\198\001\134\006Z\004\253\001\028\004{\001\029\000_\000\203\004w\005\200\002\164\000J\004\007\007\013\003\197\003\198\004C\000\151\006\196\003l\003\131\004n\001\144\004\029\000J\001w\006\198\007\014\004:\003\140\000h\000_\000a\001\t\000e\000_\001x\002\165\001\198\006~\006\188\004B\003\253\002\212\001\145\000J\003N\005]\005^\001\146\005\007\003\141\003|\001\147\000J\002\213\003\142\004\002\001\148\001l\003\143\004\003\004\021\006\194\003}\003\144\005\149\001g\000h\001h\006\014\000g\006\131\0005\001\018\004\020\004\005\003n\004\133\003\197\003\198\003o\001\172\000\138\000h\002\166\004n\000\139\005\147\005n\005o\006\197\004\007\0007\000\152\005\244\004C\005\138\006\196\003l\003\131\006_\001x\004\029\001\145\003:\006\198\006R\004:\003\140\006S\001\183\003*\006e\006_\000_\000\153\002\166\001\148\006~\006\188\004B\000h\000\140\002\247\006W\001i\003\200\003H\000\138\001j\003\141\005\n\000\147\005\139\000h\003\142\003:\003\000\000\140\003\143\000\183\000_\003\199\000\141\003\144\003L\006\\\000\142\000\203\000\138\007\022\005p\000J\000\139\004\020\000h\003n\004\021\006[\001w\003o\003\197\003\198\000\155\001u\001C\003\253\000\184\004\148\001\145\006\205\000\185\004p\003l\003\131\000\151\003|\000\157\0030\004\017\006P\004\002\004\142\001\152\000\140\004\003\004\021\006\194\003}\000\141\000J\005\t\006\127\000\142\003F\001g\006\131\001|\004\029\004&\004\005\004\"\001\012\004:\004{\000\140\000\179\004\011\000_\001\014\000\141\000e\004\144\000_\000\142\000h\004\007\000;\003;\000J\004C\000\151\006\196\003l\003\131\000=\001\015\004\029\0016\000\140\006\198\003n\004:\003\140\005\176\003o\001x\004s\000?\000_\002,\004\142\000\151\006~\006\188\004B\003\253\000h\000g\0017\003;\000\140\000\152\002\166\001i\003\141\003|\006c\001j\003@\003\142\004\002\000C\002\031\003\143\004\003\004\021\006\194\003}\003\144\006b\004\143\002\193\003:\000\153\002\197\006\131\003D\004~\004\020\004\005\003n\000B\000_\000_\003o\003\136\001\223\001w\004\188\006g\003@\003l\003m\000_\006\209\004\007\006k\000\152\000E\004C\002B\006\196\000J\001\145\003l\003\131\004\029\004\017\003D\006\198\000J\004:\003\140\001g\000\182\001{\004\237\001\154\000\152\000\153\000_\001\197\004\164\000g\002\164\004Z\004B\002\238\005_\000h\003|\002\198\006?\000_\003\141\002\199\001\189\006Z\000\203\003\142\000\153\000_\003}\003\143\000\183\005\017\004\239\000\140\003\144\003n\005`\006C\006D\003o\003\138\005c\005n\005o\000J\001\"\004\020\000G\003n\005\019\001x\000\181\003o\000\155\005m\000\140\003\253\000\184\001i\004\165\001\027\000\185\001j\003l\003\131\001\012\003|\000\157\000J\000h\005k\004\002\004/\003\140\000\155\004\003\004\021\006\194\003}\000_\000J\003l\003\131\002\164\004Z\004B\006\131\000J\000\157\001\015\004\005\0016\001w\000_\005\174\003\141\000\203\000_\002\239\002x\003\142\002\164\004Z\004B\003\143\005p\004\007\000h\000_\003\144\004C\006A\006\196\0044\005\173\002\212\003\024\004\029\003\022\004\020\006\198\003n\004:\003\140\002\242\003o\000L\002\213\005\250\002\193\000N\0048\002\197\003\197\003\198\003|\000J\004\020\003\253\003n\000\140\003\197\003\198\003o\000J\003\141\003\025\003}\003|\005\251\003\142\004\173\002\245\004\002\003\143\002\143\000_\004\003\004\021\003\144\003}\005\000\004h\0017\004\170\001\015\004\187\0016\001%\001x\0011\005v\004\005\001\028\005\251\001\029\000_\000\203\004\237\002\201\002\166\006d\000_\000J\000Q\000\140\006Z\000J\004\007\002\198\006n\002\210\004C\002\199\004b\005\020\002\247\000J\002\236\004\029\000J\004\017\004\"\004\231\004:\003\140\006_\005q\004\238\000J\002\248\003\253\000S\005\019\003\141\006\\\000W\000\203\003l\003\131\005\027\003|\001\"\001\231\000J\000\203\004\002\003\141\003\146\003\253\004\003\004\021\003\142\003}\004f\004h\003\143\001\027\005\029\003|\004P\003\144\001\"\001\228\004\002\004\005\005\030\003q\004\003\004\021\005!\003}\004\141\004h\006\133\003z\001g\001\027\001h\005\252\000J\004\007\006u\004\005\005\029\004C\002\193\004b\005\029\002\197\006z\006_\004\029\006\185\002\238\004\"\003n\004:\003\140\004\007\003o\003l\003\131\004C\006\001\004b\006\227\002\212\000d\005\174\004\029\000\203\005)\004\"\003\215\004:\003\140\000_\000h\002\213\003\141\002\164\004Z\004B\001\233\003\142\000\203\005\177\003\230\003\143\005+\000h\000\140\006\157\003\144\001i\002\166\000\205\003\141\001j\000h\005\255\000\140\003\142\004\017\006\200\002\198\003\143\005,\006\146\002\199\005\218\003\144\005/\000\138\000h\003:\004\020\000\139\003n\003l\003\131\004\189\003o\006[\001%\005+\001&\000\208\001w\001\028\005\029\001\029\005\216\000\203\003O\000_\005\219\005n\005o\002\164\004Z\004B\006a\004\198\001%\003\253\001+\002\247\005\240\001\028\000h\001\029\003S\000\203\001g\003|\001h\006\\\004\216\000\203\004\002\003\002\001\192\006\227\004\003\005\237\0057\003}\005:\000\140\005\238\005\241\005n\005o\000\141\004\020\000\212\003n\000\142\004\005\006\255\003o\003l\003\131\0059\006\185\0059\005\238\005\241\005n\005o\005=\001\194\006\185\004\232\004\007\006\234\006\252\000_\006\145\005p\007\030\006~\002\212\004\019\001x\000\151\006`\003\253\005\029\000\140\000\211\003\140\001i\000\214\002\213\007\031\001j\003|\000\216\000\138\000\220\000\222\004\002\000\147\000\225\000h\004\003\004\021\004/\003}\005\004\004h\000\229\003\141\005p\000_\006\191\004\020\003\142\003n\006\227\004\005\003\143\003o\006\207\000\228\001w\003\144\007\006\000\231\000\138\005p\000\138\000\233\000\139\006\201\000\139\004\007\000\237\000\239\000\241\004C\000\245\004b\000_\001g\003\253\001h\004\029\0044\000\244\004\"\001}\004:\003\140\000\140\003|\005\195\005n\005o\000\141\004\002\000\152\002\247\000\142\004\003\004\021\0048\003}\006\154\004h\006\254\007\018\006\228\006\227\000_\003\141\003\004\007\017\007\025\004\005\003\142\000\247\007\024\000\153\003\143\000\140\007\007\000\140\000\249\003\144\000\141\000\151\000\141\000\005\000\142\004\007\000\142\003l\003\131\004C\000\140\004b\001x\001i\000\252\002\166\004\029\001j\003\253\004\"\006\147\004:\003\140\000_\005\229\005n\005o\006~\003|\004\019\005p\000\254\000\151\004\002\000\151\000J\001\000\004\003\004\021\006\187\003}\000\155\001\002\001g\003\141\001h\006<\001w\006\131\003\142\007\006\006\139\006\190\003\143\001\006\000\159\001F\007\006\003\144\002\193\006\230\001\011\002\197\004\020\001;\003n\001A\001@\004\007\003o\003l\003\131\004\024\006\192\001\222\001\221\001\227\001\241\000\152\004\029\001\145\006\186\006\198\001\244\004:\003\140\000_\001\248\005p\001\247\006~\001\250\004\019\001\252\001\156\001T\002\000\002\002\007\007\000\140\000\153\002\005\001i\007\007\002\t\002\008\001j\003\141\001g\000\152\001h\000\152\003\142\002\011\006\232\000\140\003\143\002\013\002\017\002\198\001\195\003\144\000\203\002\199\001x\000\183\004\020\002\019\003n\002\021\002\025\000\153\003o\000\153\002\024\002\027\001w\002\029\003l\003\131\002 \002\"\002$\006\150\006\189\006\151\000h\006\140\000\155\006\141\002&\000\203\000\184\002*\000_\003\253\000\185\0023\002\164\0022\004\019\005\185\000\157\002A\000\140\003|\002G\001i\002F\002\138\004\002\001j\002J\002M\004\003\004\021\006\187\003}\006\140\000\155\006\141\000\155\000\203\005\183\002Q\006\131\005\186\005n\005o\006\190\004<\002P\001\145\000\161\004\020\000\163\003n\002S\003l\003m\003o\001w\002U\002Y\002[\004\007\001\158\002^\004@\004\024\006\192\002b\002a\001x\002d\002f\004\029\002\212\003\253\006\198\005\182\004:\003\140\002j\002l\002n\002r\002q\003|\002\213\005\012\002t\002v\004\002\004\136\003l\003\131\004\003\004\021\006\187\003}\002y\005\183\002{\003\141\005\186\005n\005o\006\131\003\142\005p\000_\006\190\003\143\000\140\002\164\003n\004\019\003\144\002}\003o\000\138\002\127\002\131\002\137\001\209\002\136\002\142\004\007\002\148\002\147\005h\004\024\006\192\005\144\005{\005\137\005\179\001x\004\029\005\214\001\145\006\198\005\236\004:\003\140\003\253\003l\003m\005\246\006\016\004\020\006\166\003n\006\212\001\160\003|\003o\002\215\006\216\006\235\004\002\006\239\003l\003\131\004\003\004\021\003\141\003}\005p\006\240\004\012\003\142\006\245\006\246\006\251\003\143\000\140\006\250\000_\004}\003\144\000\141\002\164\004\014\004\019\000\142\004\134\007\002\007\004\007\n\004\136\002\193\007\011\007\015\002\197\004\007\007\016\007\019\007\020\004\024\004\127\007\023\000\140\007\026\003n\001\145\004\029\007\027\003o\004\"\007#\004:\003\140\000\151\007'\003|\000\000\000\000\004\020\001\162\003n\000\000\000\138\000\000\003o\000\000\000\147\003}\000\138\000\000\000\000\000\000\000\149\000\000\003\141\002\193\000\000\000\000\002\197\003\142\000\000\000\000\003\253\003\143\000\000\000\000\000\000\000\140\003\144\003l\003\131\002\198\003|\000\000\000\000\002\199\000\000\004\002\004\026\000\000\000\000\004\003\004\021\000\138\003}\000_\000\000\001V\000\000\002\164\004\027\004B\005\206\000\000\000\000\000\000\004}\000\000\000\140\000\000\000\000\000\000\000\000\000\141\000\140\000\000\000\000\000\142\000\000\000\141\000\152\000\140\004\007\000\142\003\130\002\198\004\024\004\127\000\000\002\199\001\170\000\000\000\000\004\029\003|\004\020\004\"\003n\004:\003\140\003\253\003o\000\153\000\000\000\000\000\151\003}\003l\003\131\000\140\003|\000\151\000\000\000\000\000\141\004\002\004E\000\000\000\142\004\003\004\021\003\141\003}\000_\000\000\000\000\003\142\002\164\004\027\004B\003\143\000\000\000\000\000\000\004G\003\144\000\000\000\000\000\000\002\212\000\138\000\000\000\000\000\000\000\139\000\000\000\151\000\000\000\000\000\000\004\007\002\213\000\000\005\237\004\024\004I\000\000\003l\003\178\000\000\000\000\004\029\000\000\004\020\004K\003n\004:\003\140\000\000\003o\003l\003\131\000\000\003~\000\000\005\238\005\241\005n\005o\004J\000\000\000\000\000\152\002\212\000\000\000\000\000_\003\253\000\152\003\141\002\164\004\027\004B\000\000\003\142\002\213\000\140\003|\003\143\000\182\000\000\000\141\004\002\003\144\000\153\000\142\004\003\004\021\000\000\003}\000\153\006\006\000\000\000\140\000\000\003n\000\000\000\000\000\000\003o\002\247\004\005\000\000\000\152\000\000\000\000\004\020\000\000\003n\000\183\000\000\000\000\003o\000\151\003\006\000\154\000\000\004\007\003l\003m\005p\004C\000\000\004D\000\000\000\153\000\000\000\000\004\029\000\000\000\000\004\"\000\155\004:\003\140\003\253\000\184\000\000\000\155\000\000\000\185\000\000\000\000\000\194\002\247\003|\000\157\001g\000\000\001h\004\002\000\000\000\157\006\n\004\003\004\021\003\141\003}\003\008\000\000\000\000\003\142\000\000\000\000\000\000\003\143\000\000\000\000\000\000\004\005\003\144\000\000\003l\003\131\000\140\006\008\003n\006\011\005n\005o\003o\000\000\000\000\002\193\000\000\004\007\002\197\000\000\000_\004C\000\152\004D\002\164\004Z\004B\003|\004\029\000\000\003\253\004\"\000\000\004:\003\140\000\140\000\000\000\138\001i\003}\003|\001S\001j\000\000\000\153\004\002\000\000\000\000\000\000\004\003\004\021\000\138\003}\000\000\002\193\000\147\003\141\002\219\006\024\000\000\004\020\003\142\003n\000\000\004\005\003\143\003o\003l\003\131\000\000\003\144\000\140\001w\005p\000\000\002\198\000\000\000\000\000\000\002\199\004\007\000\000\000\000\000_\004C\000\000\004D\002\164\004Z\004B\000\000\004\029\000\155\000\140\004\"\000\000\004:\003\140\000\141\000\000\002\193\000\000\000\142\002\197\000\000\000\000\000\165\000\140\003|\005\182\000\140\000\000\000\141\000\000\002\198\000\000\000\142\000\000\002\199\003\141\003}\000\000\000\000\004\020\003\142\003n\003l\003\131\003\143\003o\000\151\005\183\000\000\003\144\005\186\005n\005o\000\000\000_\000a\0019\000e\000_\000\000\000\151\000\000\002\164\004Z\004B\001x\000\000\000\000\003\253\000\000\000\000\000\000\000\140\000\000\000\000\000\000\002\198\000\000\003|\000\000\002\199\002\173\000\000\004\002\000\000\000\000\000\000\004\003\004\021\002\212\003}\000\000\004a\000\000\000g\000\000\000\000\000\000\004\020\000\000\003n\002\213\004\005\003\141\003o\003l\003\131\000\000\000\138\000\000\000\000\000\000\001R\000\000\005p\000\000\000\000\003\148\004\007\000\000\005\146\000_\004C\000\152\004b\002\164\004\128\004B\002\212\004\029\000\000\003\253\004\"\001\145\004:\003\140\000\000\000\152\000\000\000\000\002\213\003|\005\147\005n\005o\000\153\004\002\001\164\000\000\000\000\004\003\004\021\000\138\003}\001\183\004c\000\147\003\141\000\000\000\153\000\000\004\020\003\142\003n\000\140\004\005\003\143\003o\000_\000\141\002\214\003\144\000\000\000\142\002\212\003l\003m\000\000\000\000\000\000\000\000\004\007\000\000\000\000\000\183\004C\002\213\004b\000\000\000\000\003\253\000\000\004\029\000\000\000\000\004\"\000\000\004:\003\140\004\130\003|\000\151\000\000\003l\003\129\004\002\005p\000\155\000\140\004\003\004\021\000\184\003}\000\141\004u\000\185\000\000\000\142\005\224\000\000\003\141\000\157\000\000\000\000\004\005\003\142\001\012\003l\003\131\003\143\000\000\000\140\000\000\003n\003\144\000\000\000\000\003o\000\000\000\000\004\007\000\000\000\000\000_\004C\000\151\004b\002\164\004\128\004B\001\015\004\029\0016\003\253\004\"\002\247\004:\003\140\000\000\000\140\000\000\003n\000\000\003|\000\000\003o\000\000\000\000\004\002\003\n\000\000\000\000\004\003\004\021\000\000\003}\000\000\000\000\000\152\003\141\000\000\000\000\000\000\004\020\003\142\003n\000\000\004\005\003\143\003o\003l\003\131\000\000\003\144\000\000\000_\000a\001>\000e\004\150\000\153\000\000\000\000\004\007\000\000\000\000\000_\004C\000\000\004\131\002\164\004\027\004B\005\150\004\029\000\000\000\000\004\"\000\000\004:\003\140\004\132\000\152\000\000\000\000\000\000\000\138\000\000\000\138\000\000\000\139\000\000\000\139\003|\000\000\000g\000\197\000\198\000\200\000\201\000\000\000\000\003\141\000\000\000\153\003}\004\020\003\142\003n\000\000\000\000\003\143\003o\000\000\000\000\000\000\003\144\000\000\003l\003\131\000\000\003|\000\000\000\000\000\202\000\000\000\203\000\000\000\000\000\183\000\000\000\000\000\138\003}\000_\003\253\000\147\000\000\002\164\000\000\004\019\000\000\000\140\000\000\000\140\003|\000\000\000\141\000\000\000\141\004\002\000\142\000\155\000\142\004\003\004\021\000\184\003}\000\000\000\000\000\185\000\000\000\000\000\000\000\000\000\000\000\157\000\000\001G\004\005\000\000\000\000\003\141\000\000\004\020\000\000\003n\000\000\000\000\000\151\003o\000\151\000\000\000\000\000\000\004\007\003\150\000\000\000\140\004C\000\000\004\131\000\000\000\141\000\000\000\000\004\029\000\142\003\253\004\"\000\000\004:\003\140\000\000\001g\000\000\001z\000_\003|\000\000\004\254\002\164\000\000\004\002\004\136\003l\003\131\004\003\004\021\000\000\003}\000\000\000\000\000\000\003\141\000\151\000\000\001\012\000\000\003\142\000\000\000_\004\005\003\143\006_\002\164\000\000\004\019\003\144\000_\000a\001\219\000e\000\000\000\000\000\000\000\000\003N\004\007\000\000\002\166\001\015\004C\0016\004D\000\000\000\152\000\000\000\152\004\029\000\140\000\000\004\"\001i\004:\003\140\003\253\001j\000\000\000\000\003:\004\020\000\000\003n\000\000\000\000\003|\003o\000\153\000g\000\153\004\002\000\000\003l\003\131\004\003\004\021\003\141\003}\000\000\000\000\000\000\003\142\000\000\003&\000\000\003\143\001w\000\000\000_\004}\003\144\000\152\002\164\000\000\004\019\000\000\005\014\000\000\003l\003\128\004\136\000\000\000\000\000\000\000\000\004\007\000\000\000\000\002\234\004\024\004\127\000\000\000\000\000\153\000\000\000\155\004\029\000\155\000\000\004\"\000\000\004:\003\140\005\146\000\000\000\000\000\000\000\000\004\020\000\167\003n\000\169\000\000\000\000\003o\003l\003\131\000\000\000\183\000\000\000\000\000\000\000\000\000\000\003\141\005\147\005n\005o\004\021\003\142\000\000\000_\003\253\003\143\000\140\002\164\003n\004\019\003\144\000\000\003o\000\155\003|\001x\005\016\000\184\000\000\004\002\004\136\000\185\000h\004\003\004\021\004/\003}\000\157\000\000\000\000\000\000\000\000\006c\000\000\0052\000\000\000\000\000\000\004}\002\193\000\000\004\029\002\197\004\020\004\"\003n\004:\000\000\000\000\003o\000\000\005\146\001\012\000\000\004\007\000\000\000\138\000\000\004\024\004\127\000\147\005p\000\000\000\000\000\000\004\029\0044\000\000\004\"\000\000\004:\003\140\003\253\005\147\005n\005o\001\015\000\000\0016\006h\000\000\000\000\003|\004\136\0048\000\000\000\000\004\002\001g\006\007\001h\004\003\004\021\003\141\003}\000\140\000\000\000\000\003\142\002\198\000\000\000\000\003\143\002\199\000\000\000\000\004}\003\144\003|\003l\003\131\006\008\000\140\006\011\005n\005o\000\000\000\141\006p\000\000\003}\000\142\004\007\000\000\000\000\000_\004\024\004\127\000\000\002\164\004\027\004B\000\000\004\029\000\000\003\253\004\"\005p\004:\003\140\000\000\000\000\000\138\000\000\000\140\003|\000\139\001i\000\000\000\151\004\002\001j\000\138\000\000\004\003\004\021\000\139\003}\000\000\000\000\005\146\003\141\000\000\000\000\000\000\004\020\003\142\003n\005\153\004}\003\143\003o\003l\003\131\000\000\003\144\000\000\005p\000\000\000\000\000\000\001w\005\147\005n\005o\004\007\000\000\000\000\000_\004\024\004\127\000\000\002\164\000\000\004\019\000\000\004\029\002\212\000\140\004\"\000\000\004:\003\140\000\141\000\000\000\000\000\000\000\142\000\140\002\213\000\138\000\000\000\000\000\141\000\149\000\000\000\000\000\142\002\232\000_\000a\0020\000e\000\000\003\141\000\000\000\152\000\000\004\020\003\142\003n\003l\003\131\003\143\003o\000\151\000\000\000\000\003\144\005\146\006\159\000\000\000\000\002\234\005\159\000\151\005p\000_\000\153\000\000\000\000\002\164\004\027\004B\000\000\000\000\000\000\003\253\001x\000g\000\000\005\147\005n\005o\006v\000\000\000\140\003|\004\136\000\000\000\000\000\141\004\002\000\183\000\000\000\142\004\003\004\021\002\247\003}\000\000\002\193\006\022\000\000\002\197\000\000\000\000\004\020\000\000\003n\000\000\004\005\003\012\003o\000\000\000_\000\155\000\000\000\000\000\000\000\184\003l\003m\000\151\000\185\000\000\005\182\004\007\000\000\000\000\000\157\004C\000\152\004D\000\000\000\000\000\000\000\000\004\029\000\000\003\253\004\"\000\152\004:\003\140\005p\001y\000\000\005\183\000\000\003|\005\186\005n\005o\000\153\004\002\000\000\000\140\000\000\004\003\004\021\002\198\003}\000\000\000\153\002\199\003\141\000\000\004\145\003l\003\131\003\142\000\000\005\157\004}\003\143\000\000\000\140\000\000\003n\003\144\001\"\000\000\003o\000\000\000_\003l\003\127\000\000\002\164\004\007\004B\000\000\000\000\004\024\004\127\001\027\000\000\000\000\003\253\000\152\004\029\000\155\000\000\004\"\000\000\004:\003\140\000\000\003|\000\000\001\012\000\155\000\000\004\002\005p\000\171\000\000\004\003\004\021\000\000\003}\000\153\000\000\000\000\004\020\000\173\003n\000\000\003\141\000\000\003o\000\000\004\005\003\142\001\015\000\000\0016\003\143\000\000\000\000\000_\000\140\003\144\003n\000\000\000\000\000\154\003o\004\007\000\000\000\000\005\170\004C\000\000\004D\003l\003\131\000\000\002\212\004\029\000\000\000\000\004\"\000\000\004:\003\140\000\000\004F\000\000\000\155\002\213\000_\003l\003m\000\156\002\164\000\000\004\019\003|\000_\000a\002?\000e\000\157\000\000\000\000\000\000\003\141\000\000\000\000\003}\000\000\003\142\000\000\000\000\000\000\003\143\000\000\006\007\000\000\000\000\003\144\000\000\001%\000\000\0033\001\"\000\000\001\028\000\000\001\029\004\020\000\203\003n\000\000\000\000\003\253\003o\006!\000g\006\008\001\027\006\011\005n\005o\000\000\003|\000\000\000\140\000\000\003n\004\002\003l\003\131\003o\004\003\004\021\000\000\003}\002\247\003l\003\131\000\000\003|\004\018\000\000\000\000\000\000\000_\000\000\004\147\000\000\002\164\003\014\004\019\003}\000_\003\141\000\000\000\000\002\164\000\000\004\019\000\000\000\000\000\000\004\007\000_\000\000\000\000\004C\003\152\004\149\000\000\000\000\000\000\000\000\004\029\000\000\000\000\004\"\000\000\004:\003\140\000\000\000\000\005p\000\000\004\020\000\000\003n\000\000\000\000\000\000\003o\000\000\004\020\000\000\003n\000\000\000\138\000\000\003o\003\253\000\147\003\141\000\000\000\000\000\000\000\000\003\142\000\000\000\000\003|\003\143\000\000\000_\000\000\004\002\003\144\000\000\000\000\004\003\004\021\000\000\003}\000\000\003l\003\131\001%\003|\003=\000\000\001\"\001\028\000\000\001\029\004\022\000\203\004\028\000\000\000\000\003}\000_\000\000\000\000\000\000\002\164\001\027\004\019\000\000\001\012\000\000\004\007\000\000\000\000\000\140\004\024\004\025\000\000\000\000\000\141\000\000\000\000\004\029\000\142\000\000\004\"\000\000\004:\003\140\000\000\000\000\002\193\000\000\001\015\002\197\0016\000\000\000\000\003\253\000\000\000\000\004\020\000\000\003n\000\000\000\000\003\253\003o\003|\006\027\003\141\000\151\000\000\004\002\000\000\003\142\003|\004\003\004\021\003\143\003}\004\002\003l\003\131\003\144\004\003\004\021\003\141\003}\000\138\000\000\000\000\004\022\000\149\004e\000\000\000\000\000\000\000_\000\000\004^\003\154\002\164\000\000\004\019\000\000\000\000\000\140\004\007\000\000\000\000\002\198\004\024\004\025\000\000\002\199\004\007\000\000\000\000\004\029\004\024\004`\004\"\000\000\004:\003\140\000\000\004\029\000\000\000\000\004\"\000\000\004:\003\140\001%\001g\004)\001h\004\020\001\028\003n\001\029\000\000\000\203\003o\000\140\000\000\003\141\000\152\000\000\000\141\000\000\003\142\003\253\000\142\003\141\003\143\000_\000\000\000\000\003\142\003\144\001I\003|\003\143\000\201\000\000\000\000\004\002\003\144\000\153\000\000\004\003\004\021\000\000\003}\000\000\003l\003\131\000\000\000\000\000\000\000\151\000\000\000\000\000\000\000\000\004\022\000\000\005\146\000\202\000\140\000\203\000_\001i\000\183\000\000\002\164\001j\004\019\000\000\000\000\000\000\004\007\000\000\000\000\000\138\004\024\004\025\002\212\000\139\005\147\005n\005o\004\029\000\000\000\000\004\"\000\155\004:\003\140\002\213\000\184\001\"\000\000\000\000\000\185\000\000\001w\000\000\003\253\000\000\000\157\004\020\001G\003n\000\000\000\000\001\027\003o\003|\000\000\003\141\000\000\000\000\004\002\000\000\003\142\000\000\004\003\004\021\003\143\003}\000\000\003l\003\131\003\144\000\000\004]\000\152\000\000\000\138\000\140\000\000\004^\000\149\000\000\000\141\000\000\000\000\000_\000\142\000\000\000\000\002\164\005p\004\019\000\000\000\000\000\000\004\007\000\153\000\000\000\000\004\024\004`\000\000\000\000\000\000\006\007\002\247\004\029\000\000\000\000\004\"\000\000\004:\003\140\000\000\000\151\002\193\000\000\000\000\002\218\003\016\001x\000\154\000\000\000\000\000\000\004\020\006\008\003n\006\011\005n\005o\003o\000\140\000\000\003\141\000\000\000\000\000\141\000\000\003\142\003\253\000\142\000\000\003\143\000\155\000\000\000\000\000\000\003\144\000\193\003|\000\000\000\000\000\000\000\000\004\002\003l\003\131\000\157\004\003\004\021\001%\003}\0041\003l\003\131\001\028\004q\001\029\000\151\000\203\000\140\000_\000\000\004r\002\198\002\164\000\000\004\019\002\199\000_\000\000\000\000\000\000\002\164\000\000\004\019\000\000\001\145\000\000\004\007\000\152\005p\002\193\004\024\004t\002\217\005\168\000\000\000\000\000\000\004\029\001\166\000\000\004\"\000\000\004:\003\140\000\000\000\000\000\000\000\000\004\020\000\153\003n\000\000\000\000\003\253\003o\000\000\004\020\000\000\003n\000\000\000\000\000\000\003o\003|\000\000\003\141\000\000\000\000\004\002\000\000\003\142\000\000\004\003\004\021\003\143\003}\000\000\000\000\000\000\003\144\000\000\004o\000\152\000\000\000\000\000\140\000\000\004^\004|\002\198\001g\000\000\001h\002\199\000\000\000\000\004\129\000\155\000_\000a\002D\000e\000\000\004\007\000\153\000\000\000\000\004\024\004`\002\212\000\000\000\175\000_\000\000\004\029\003l\003\131\004\"\000\000\004:\003\140\002\213\000\000\003l\003\131\000\000\006l\000\000\000\000\000\154\000\000\000_\000\000\006)\006x\002\164\000\000\004\019\000g\000_\003\253\000\000\003\141\002\164\000\000\004\019\000\140\003\142\003\253\001i\003|\003\143\000\155\001j\000\000\004\002\003\144\000\196\003|\004\003\004\021\000\000\003}\004\002\000\000\000\000\000\157\004\003\004\021\000\000\003}\004\020\000\000\003n\004}\000\000\000\000\003o\001\"\004\020\000\000\003n\004}\001w\000\000\003o\000\000\002\212\000\000\000\000\004\007\000\000\000\000\001\027\004\024\004\127\000\000\002\193\004\007\002\213\002\197\004\029\004\024\004\127\004\"\000\000\004:\003\140\000\000\004\029\003l\003\131\004\"\000\000\004:\003\140\000\000\000\000\000\000\000\000\000\000\006{\000\000\000\138\000\000\000\000\000_\000\147\000\000\003\141\002\164\000\000\004\019\000\000\003\142\000\000\000\000\003\141\003\143\000_\000\000\000\000\003\142\003\144\000\000\000\000\003\143\000\000\001g\000\000\001h\003\144\000\000\000\140\000\000\000\000\000\000\002\198\000\000\002\193\001x\002\199\002\197\003\253\000\000\000\000\004\020\000\000\003n\000\000\001\012\003\253\003o\003|\000\000\000\000\000\000\000\000\004\002\000\140\000\000\003|\004\003\004\021\000\141\003}\004\002\000\000\000\142\000\000\004\003\004\021\000\000\003}\001\015\000\000\0016\006m\000\000\000\000\000\000\001%\000\000\004\176\000\140\006m\001\028\001i\001\029\000\000\000\203\001j\000\000\004\007\000\000\002\238\000\151\004\024\006o\002\198\000\000\004\007\000\000\002\199\004\029\004\024\006o\004\"\001\145\004:\003\140\000\000\004\029\003l\003\131\004\"\000\000\004:\003\140\000\000\000\000\001w\001\168\000\000\000\000\000\000\000\138\000\000\005\146\000_\000\147\000\000\003\141\004\163\000\000\002\212\000\000\003\142\003\253\000\000\003\141\003\143\000_\005\146\000\000\003\142\003\144\002\213\003|\003\143\005\147\005n\005o\004\002\003\144\000\000\004\194\004\003\004\021\000\000\003}\000\000\000\000\000\000\000\000\005\147\005n\005o\000\000\004\197\000\000\003n\006m\000\152\000\000\003o\000\000\000\000\000\000\000\000\002\239\000\000\000\140\000\000\000\000\000\000\000\000\000\141\004\007\000\000\001W\000\142\004\024\006o\004\203\000\153\000\000\002\212\001x\004\029\002\241\000\000\004\"\000\000\004:\003\140\002\242\000\000\000\138\002\213\000\000\000\000\000\147\000\000\005p\001Y\002\247\000\203\000\000\000\151\000\183\000\138\000\000\004\240\000_\000\147\003\136\003\141\001\181\005p\003\018\005\146\003\142\000\000\002\245\000\000\003\143\000_\000\000\000\000\000\000\003\144\000\000\000\155\000\138\000\000\000\000\000\184\000\139\000\000\000\000\000\185\000\000\005\147\005n\005o\000\000\000\157\000\000\000\138\000\000\000\000\000\000\000\147\000\140\006\007\001\145\000\000\000\000\000\141\000\000\003|\000\000\000\142\000\000\000_\000\000\000\140\002\247\000\000\001\174\004\204\000\141\003}\000\000\000\000\000\142\006\008\000\000\006\011\005n\005o\002\248\000\138\000\000\004\242\000\152\000\149\000\000\000\000\000\140\000\151\000\000\000\000\000\000\000\141\000\000\000\000\000\000\000\142\000\197\001n\000\200\000\201\000\151\000\140\000\000\005p\000\153\000\000\000\141\005\166\004\207\000\000\000\142\004\243\000\000\004\230\003\140\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\193\000\151\000\202\000\000\000\203\000_\000\000\000\183\000\000\002\164\000\000\000\000\000\000\000\140\003\141\000\000\000\151\005p\000\141\003\142\000\138\000\000\000\142\003\143\000\147\000\000\000\000\000\000\003\144\000\000\000\155\000\000\000\000\000\000\000\184\000\000\000_\000\000\000\185\000\000\000\000\000\000\000\152\000\000\000\157\003N\001G\000\000\000\000\000\000\000\151\000_\000a\002\134\000e\000\152\000\197\002\203\000\200\000\201\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\197\003s\000\200\000\201\000\000\000\000\000\000\000\140\000\153\000\152\000\000\000\000\000\141\000\000\000\000\000\202\000\142\000\203\000\000\005\204\000\183\000\000\000g\000_\000\152\000\000\000\000\000\000\000\202\000\000\000\203\000\153\000\000\000\183\003l\003\131\000\000\000\000\000\197\003\255\000\200\000\201\000\000\000\155\000\151\000\000\000\153\000\184\000\000\000\000\000_\000\185\000\000\0060\004\163\000\000\000\155\000\157\000\152\001G\000\184\000\000\000\000\000\000\000\185\000\000\000\202\000\000\000\203\000\000\000\157\000\183\001G\000\000\000\000\000\000\000\000\004\244\000\000\000\155\000\153\000\000\000\000\003l\003\131\000\000\000\000\000\000\004\021\001\"\004\197\000\000\003n\000\177\000\155\000\000\003o\000\138\000\184\000_\000\000\000\147\000\185\004\163\001\027\000\154\000\000\000\000\000\157\000\000\001G\000\000\000\000\000_\000\000\004\203\000\000\000\000\000\000\000\000\000\138\000\152\0054\000\000\000\139\000\000\004\196\000\000\000\155\004\029\000\000\000\000\004\"\001\128\004:\000\197\004\031\000\200\000\201\004\197\000\000\003n\000\157\000\153\000\000\003o\000_\000a\002\140\000e\005\146\000\000\000\000\000\140\001\012\000\000\000\000\000\000\000\141\000\000\000\000\000\000\000\142\000\202\004\203\000\203\000\000\000\000\000\183\000\000\000\000\000\000\005\147\005n\005o\000\000\000\140\000\000\001\015\000\000\0016\000\141\000\000\000\000\000\000\000\142\000g\000\000\000\000\000\000\000\151\000\155\003|\000\000\000\000\000\184\000\000\000\000\000\000\000\185\003l\003\131\004\204\000\000\003}\000\157\000\000\001G\003l\003\131\000\000\000\000\001%\000\151\004\219\000\000\004\205\001\028\000\000\001\029\000\000\000\203\003\246\005\011\000\000\000\000\000\000\000\000\000\000\000\000\004N\000\000\000\000\000_\000\000\000\000\005p\002\164\003l\003\131\000\000\003|\000\000\004\207\000\000\000\000\004\212\000\000\004\230\003\140\000\000\004\204\000\000\003}\000\000\000\000\002\238\000\000\003n\000\000\003\246\004W\003o\000\000\002\238\004\205\003n\000\152\000\000\000\000\003o\003\141\000\000\003N\000\000\000\000\003\142\000\000\000\000\005\146\003\143\000\197\004\209\000\200\000\201\003\144\000\000\000\000\000\000\000\153\000\152\000\000\004\207\000\000\002\238\004\212\003n\004\230\003\140\000\000\003o\005\147\005n\005o\000\000\000\000\000\000\000\000\000\000\000\202\000\000\000\203\000\153\000\000\000\183\000\000\005\146\004T\001\012\000\000\003\141\003\136\000\000\000\000\000\000\003\142\000\000\000\000\002\193\003\143\000\000\002\216\000\000\000\000\003\144\000\000\000\000\000\155\005\147\005n\005o\000\184\001\015\005\209\0016\000\185\000\000\000\000\003\253\000\000\000\000\000\157\000\000\001G\003l\003\131\003\253\000\000\003|\000\000\000\155\000\000\000\000\004\002\000\000\005p\003|\004\003\000\000\000\000\003}\004\002\003l\003\131\000\187\004\003\003\246\004M\003}\000\000\000\000\000\000\004\005\000\000\000\140\004\021\003\253\000\000\002\198\000\000\004V\000\000\002\199\000\000\003\246\003\247\003|\000\000\004\007\000\000\000\000\004\002\005p\000\000\002\193\004\003\004\007\002\197\003}\000\000\002\238\000\000\003n\000\000\000\000\003\140\003o\005\146\000\000\0056\004\005\000\000\001g\003\140\001h\000\000\004\029\000\000\002\238\004\"\003n\004:\000\000\000\000\003o\000\000\004\007\003\141\000\000\005\147\005n\005o\003\142\000\000\000\000\003\141\003\143\000\000\000\000\000\000\003\142\003\144\000\000\003\140\003\143\000\000\000\000\000\000\000\000\003\144\002\238\000\000\000\000\000\000\002\198\000\000\000\000\000\000\002\199\003l\003\131\000\000\005\233\000\000\000\000\003\141\000\000\000\000\000\140\000\000\003\142\001i\003l\003\131\003\143\001j\002\212\000\000\000\000\003\144\000\000\003\246\004\001\000\000\000_\000a\002\145\000e\002\213\000\000\000\000\000\000\003\253\005p\003\246\004Y\000\000\000\000\000\000\005\231\000\000\000\000\003|\000\000\000\000\001w\000\000\004\002\000\000\000\000\003\253\004\003\000\000\000\000\003}\002\238\000\000\003n\003l\003\131\003|\003o\000\000\000\000\000g\004\002\004\005\000\000\002\238\004\003\003n\000\000\003}\000\000\003o\002\239\000\000\000\000\000\000\000\000\003\246\005$\004\007\000\000\004\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\212\003\019\003$\003\022\000\000\000\000\000\138\003\140\004\007\002\242\000\149\000\000\002\213\000\000\000\000\000\000\000\000\003l\003\131\000\000\006\007\000\000\002\238\000\000\003n\003\140\000\000\000\000\003o\003\141\001x\003\025\000\000\000\000\003\142\003l\003m\002\245\003\143\003\246\005&\000\000\006\008\003\144\006\011\005n\005o\003\141\006\031\000\000\000\138\000\000\003\142\000\000\000\147\003\253\003\143\000\000\000\000\000\000\000\000\003\144\000\140\003l\003\131\003|\000_\000\141\003\253\000\000\004\002\000\142\000\000\002\238\004\003\003n\000\000\003}\003|\003o\000\000\002\247\000\000\004\002\000\000\003\246\005(\004\003\000\000\004\005\003}\000\140\000\000\003n\000\000\002\248\000\000\003o\001\145\000\151\000\000\000\000\004\005\000\000\001\012\004\007\000\140\000\000\005p\000\000\000\000\000\141\001\176\000\000\003\253\000\142\000\000\000\000\004\007\002\238\000\000\003n\003\140\000\000\003|\003o\000\000\000\000\001\015\004\002\0016\000\000\000\000\004\003\000\000\003\140\003}\000\000\000\000\000\000\000\000\000\000\000\000\000\151\003\141\000\000\000\000\000\000\004\005\003\142\000\000\000\000\000\000\003\143\000\000\000\000\000\000\003\141\003\144\000\000\000\000\000\000\003\142\000\138\004\007\003\253\003\143\000\147\000\000\000\000\000\000\003\144\000\000\000\000\000\000\003|\000\152\000\000\000\138\000_\004\002\003\140\000\147\000\000\004\003\000\000\000\000\003}\000\000\000\000\000\000\000\000\000\000\003|\000_\000\000\000\000\000\000\000\153\004\005\000\000\000\000\000\000\003\141\000\000\003}\000\000\000\000\003\142\000\000\000\000\003\253\003\143\0063\000\000\004\007\000\000\003\144\000\000\000\140\000\152\003|\000\000\000\154\000\141\000\000\004\002\000\000\000\142\000\000\004\003\000\000\003\140\003}\000\140\000\000\000\138\001W\000\000\000\141\000\147\000\000\000\153\000\142\000\000\004\005\000\155\000\000\000\000\000\000\000\000\001\130\000_\000\000\003\141\000\000\000\151\000\000\000\000\003\142\000\157\004\007\001\201\003\143\000\203\000\138\000\000\000\183\003\144\000\147\000\000\000\151\003\141\000\000\000\000\000\000\000\000\000\000\003\140\002\193\000\000\000_\002\197\000\000\000\000\000\000\003\156\000\000\000\000\000\000\000\155\000\000\000\140\000\000\000\184\000\000\000\000\000\141\000\185\000\000\003\141\000\142\000\000\000\000\000\157\003\142\000\000\000\000\000\138\003\143\000\000\000\000\000\147\000\000\003\144\000\000\000\000\000\000\000\000\000\000\000\000\000\140\000\000\000\138\000_\000\000\000\141\000\139\000\000\000\151\000\142\000\000\000\000\000\152\000\000\002\238\000\000\000\000\000\000\002\198\000\000\000\000\000\000\002\199\000\000\000\000\000\000\000\000\000\152\000\000\001T\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\151\000\000\000\000\000\000\000\000\000\000\000\140\002\176\000\000\000\000\000\000\000\141\000\153\000\000\000\000\000\142\000\000\001\207\000\000\000\203\000\000\000\140\000\183\000\000\000\000\000\000\000\141\000\000\000\000\000\000\000\142\000\000\002\178\000\000\000\203\000\000\000\000\000\183\000\000\000\000\000\000\002\193\000\000\000\151\002\197\000\155\000\000\000\000\000\152\000\184\000\000\002\193\000\000\000\185\002\197\000\000\000\000\000\000\000\151\000\157\000\155\000\000\002\239\000\000\000\184\002\176\000\000\000\000\000\185\000\000\000\153\000\000\000\000\000\000\000\157\000\000\000\000\000\152\006\007\002\212\003\019\003\020\003\022\000\000\002\193\000\138\000\000\002\197\002\242\000\147\002\195\002\213\000\203\000\000\003\\\000\183\000\000\002\238\000\000\000\153\006\008\002\198\006\011\005n\005o\002\199\000\000\002\238\000\000\000\000\003\025\002\198\000\000\000\000\000\000\002\199\002\245\000\000\000\155\003^\000\152\000\203\000\184\000\138\000\183\002\193\000\185\000\147\002\197\000\000\000\000\000\000\000\157\000\000\000\000\000\152\000\000\003\\\000\000\000\000\002\238\000\140\000\153\000\000\002\198\000\000\000\141\000\155\002\199\000\000\000\142\000\184\000\000\000\000\000\000\000\185\000\000\000\153\000\000\000\000\002\247\000\157\003\176\000\000\000\203\000\000\005p\000\183\000\138\000\000\000\000\000\000\000\147\000\000\002\248\000\000\000\000\000\000\000\151\000\140\000\000\002\238\002\239\000\138\000\141\002\198\000\000\000\147\000\142\002\199\000\155\000\000\002\239\000\000\000\184\000\000\000\000\000\000\000\185\002\212\003\019\006r\003\022\000\138\000\157\000\155\000\000\000\147\002\242\002\212\000\000\002\213\003\026\000\000\000\000\000\000\000\151\000\000\002\242\000\189\000\000\002\213\000\000\000\000\000\140\002\239\000\000\000\000\000\000\000\141\003\025\000\000\000\000\000\142\000\000\000\000\002\245\000\000\000\000\000\140\003\028\000\000\002\212\000\000\000\141\003\026\002\245\0037\000\142\000\000\000\000\002\242\000\000\000\000\002\213\000\152\000\000\000\000\000\000\000\140\000\000\000\151\000\000\000\138\000\141\000\000\002\239\000\147\000\142\000\000\000\000\006:\002\234\003\028\000\000\000\000\000\151\000\153\000\000\002\245\002\247\003\166\000\000\002\212\003\"\003B\003\026\000\000\000\000\000\000\002\247\000\000\002\242\000\152\002\248\002\213\000\151\000\000\000\000\000\000\000\000\000\138\000\183\000\000\002\248\000\147\000\000\000\000\000\000\000\000\002\234\000\000\000\000\000\000\003\028\000\153\000\000\003!\000\000\000\140\002\245\000\000\000\000\002\247\000\141\000\155\000\000\000\000\000\142\000\184\003J\000\000\000\000\000\185\000\000\000\000\000\000\002\248\000\152\000\157\000\183\003\219\000\000\000\000\000\000\003Q\000\138\000\000\000\000\000\000\000\147\000\000\000\000\000\152\000\000\002\234\000\151\000\140\003\031\000\000\000\153\000\000\000\141\000\155\002\247\000\138\000\142\000\184\000\000\000\147\002\234\000\185\000\000\000\152\000\000\000\153\000\000\000\157\002\248\003\221\000\138\000\000\000\000\000\000\000\147\000\183\000\000\000\000\000\000\000\000\000\182\000\000\000\000\000\000\000\151\000\153\000\000\000\000\000\000\000\000\000\183\000\000\000\140\000\000\000\000\000\000\000\000\000\141\000\155\000\138\000\000\000\142\000\184\000\147\000\000\000\000\000\185\000\000\000\000\000\000\000\183\000\140\000\157\000\155\003\223\000\000\000\141\000\184\000\000\000\000\000\142\000\185\000\000\000\152\000\000\000\000\000\140\000\157\000\000\000\151\000\000\000\141\000\000\000\155\000\138\000\142\000\000\000\184\000\147\000\000\000\182\000\185\000\000\000\000\000\000\000\153\000\000\000\157\000\151\000\000\000\000\000\000\000\000\000\138\000\000\000\140\000\000\000\147\000\000\000\000\000\141\000\152\000\000\000\151\000\142\000\000\000\000\000\000\000\000\000\000\000\183\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\182\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\000\000\000\000\140\000\000\000\151\000\155\000\000\000\141\000\000\000\184\000\000\000\142\000\000\000\185\000\000\000\000\000\000\000\000\000\152\000\157\000\183\000\140\000\000\000\000\000\000\000\000\000\141\003l\003m\004-\000\142\001g\000\000\001h\000\000\000\182\000\000\000\152\000\000\000\151\000\153\000\000\000\000\000\155\0046\000\000\000\000\000\184\000\000\000\000\000\000\000\185\000\152\000\000\002\234\000\000\000\000\000\157\000\151\000\153\000\000\000\000\000\000\000\000\000\000\000\183\000\000\000\000\000\000\002\234\000\000\000\000\000\000\004>\000\153\000\000\000\138\000\000\000\138\000\000\000\147\000\152\000\147\000\140\000\183\003n\000\000\000\140\000\155\003o\001i\000\000\000\184\000\000\001j\000\000\000\185\000\000\002\234\000\183\000\000\000\000\000\157\000\153\000\000\000\000\000\000\000\155\004\168\000\000\000\000\000\184\000\000\000\000\000\138\000\185\000\152\000\000\000\147\000\000\000\000\000\157\000\155\000\000\001w\000\000\000\184\004\180\000\183\000\000\000\185\000\000\000\140\002\234\000\140\000\152\000\157\000\141\000\153\000\141\000\000\000\142\000\000\000\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\155\002\234\000\000\000\000\000\184\000\000\000\153\000\000\000\185\000\000\000\000\000\000\000\183\000\000\000\157\000\000\000\000\000\000\000\151\000\140\000\151\000\000\000\000\000\138\000\141\000\000\000\000\000\147\000\142\000\000\000\000\000\183\000\000\000\000\003|\000\155\000\000\000\000\000\138\000\184\000\000\000\000\000\147\000\185\000\000\000\000\003}\000\000\000\000\000\157\001x\000\000\000\000\000\000\000\155\000\000\000\151\000\000\000\184\000\138\000\000\000\000\000\185\000\147\000\000\000\000\000\000\000\000\000\157\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\141\000\000\000\000\004\185\000\142\004\192\000\000\000\000\000\000\000\000\000\140\000\152\000\000\000\152\000\000\000\141\000\000\000\000\000\000\000\142\003l\003m\000\000\000\000\000\000\000\000\000\000\000\000\002\234\003\141\002\234\000\140\000\151\000\153\001\145\000\153\000\141\000\000\000\000\000\000\000\142\004\201\000\000\003\158\000\000\000\000\000\000\000\151\001\178\000\152\000\138\000\000\000\000\000\000\000\147\000\000\003l\003m\000\183\000\000\000\183\000\000\000\000\000\000\006N\000\000\002\234\000\000\000\151\000\000\000\000\000\153\000\000\000\000\000\000\000\000\000\140\000\000\003n\000\000\000\000\000\155\003o\000\155\000\000\000\184\000\000\000\184\000\138\000\185\000\000\000\185\000\147\000\000\000\000\000\157\000\183\000\157\000\000\000\000\000\000\004\223\006\174\000\000\000\138\000\000\000\140\000\000\000\147\000\152\000\000\000\141\000\140\000\000\003n\000\142\004\228\000\000\003o\000\155\000\000\000\000\000\000\000\184\000\152\000\000\002\234\000\185\000\000\000\000\000\000\000\153\000\000\000\157\000\000\000\000\000\000\004\235\000\000\000\000\000\000\002\234\000\000\000\151\000\140\000\152\000\153\000\000\000\138\000\141\000\000\000\000\000\147\000\142\000\000\000\000\000\183\000\000\000\000\000\000\000\140\000\000\002\234\000\000\000\000\000\141\000\000\000\153\000\000\000\142\000\000\000\183\000\000\000\000\000\000\000\000\000\000\000\000\003|\000\155\000\000\000\151\000\000\000\184\000\138\000\000\000\000\000\185\000\147\000\000\003}\000\138\000\183\000\157\000\155\000\147\000\000\000\151\000\184\000\000\000\000\000\000\000\185\000\000\000\140\000\000\000\000\000\000\000\157\000\141\000\000\000\000\000\000\000\142\003|\000\155\000\000\000\138\000\000\000\184\000\152\000\147\000\000\000\185\000\000\000\000\003}\000\000\000\000\000\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006O\000\000\000\000\000\140\000\151\000\153\000\000\000\000\000\141\000\000\000\140\000\000\000\142\000\138\000\000\000\141\000\000\000\147\000\000\000\142\003\141\000\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\138\000\183\000\000\000\000\000\147\003\160\000\000\000\140\000\152\006O\000\000\000\151\000\141\000\000\000\153\000\000\000\142\000\000\000\151\000\000\000\000\000\000\000\000\000\000\000\155\001K\000\000\003\141\000\184\000\000\000\153\000\000\000\185\000\000\000\000\000\000\000\000\000\000\000\157\000\183\000\140\003\162\000\000\000\000\000\151\000\141\000\000\000\000\000\000\000\142\000\000\000\000\000\152\000\000\000\000\000\183\000\140\000\000\000\000\000\138\000\000\000\141\000\155\000\147\000\000\000\142\000\184\000\000\000\000\001q\000\185\000\000\000\000\000\000\000\153\000\000\000\157\000\151\000\155\000\000\000\000\000\000\000\184\000\000\000\000\000\138\000\185\000\000\000\152\000\147\000\000\000\000\000\157\000\151\000\000\000\152\000\000\000\000\000\000\000\183\000\000\000\000\000\000\000\000\000\000\001\138\000\000\000\000\000\000\000\000\000\153\000\000\001\185\000\000\000\000\000\140\000\000\000\153\000\000\000\138\000\141\000\152\000\155\000\147\000\142\002\193\000\184\000\000\002\197\000\000\000\185\000\000\000\000\000\000\000\000\000\183\000\157\000\000\002\155\000\000\000\000\000\140\000\183\000\153\000\000\000\000\000\141\000\000\000\000\000\000\000\142\000\000\000\151\000\000\000\152\000\000\000\000\000\138\000\155\000\000\000\138\000\147\000\184\000\000\000\147\000\155\000\185\000\000\000\183\000\184\000\152\002\159\000\157\000\185\000\000\000\140\000\153\000\000\000\151\000\157\000\141\002\238\000\000\000\000\000\142\002\198\000\000\002\206\000\000\002\199\000\000\000\155\000\153\000\000\000\000\000\184\000\000\000\000\000\000\000\185\000\138\000\183\000\000\000\000\000\147\000\157\000\000\000\000\000\000\000\000\000\000\000\000\000\151\000\140\000\000\000\000\000\140\000\183\000\141\000\000\000\000\000\141\000\142\000\000\000\155\000\142\000\138\000\000\000\184\000\152\000\147\000\000\000\185\000\000\000\000\000\000\000\000\000\000\000\157\000\000\000\155\000\000\000\000\000\000\000\184\000\000\002\221\000\000\000\185\000\000\000\151\000\153\000\000\000\151\000\157\000\152\000\140\000\000\000\000\000\000\000\000\000\141\000\000\000\000\000\000\000\142\002\239\000\000\000\000\000\000\000\000\000\000\002\223\000\000\000\000\000\000\000\183\000\153\000\000\000\000\000\000\000\000\000\140\002\212\000\000\000\000\003\029\000\141\000\000\000\152\000\138\000\142\002\242\000\151\000\147\002\213\000\000\000\138\000\000\000\155\000\000\000\147\000\183\000\184\000\000\000\000\003v\000\185\000\000\000\000\000\000\000\153\000\000\000\157\000\000\000\000\000\000\000\000\000\000\000\151\002\245\000\000\000\000\000\000\000\000\000\155\000\000\000\152\000\000\000\184\000\152\000\000\000\000\000\185\000\000\000\000\000\183\000\000\000\000\000\157\000\000\000\000\000\000\000\000\003\181\000\000\000\140\003\186\000\000\000\153\000\000\000\141\000\153\000\140\000\000\000\142\000\000\003 \000\141\000\155\000\000\000\000\000\142\000\184\002\247\000\138\000\000\000\185\000\000\000\147\000\152\000\000\000\138\000\157\000\183\000\000\000\147\000\183\002\248\000\000\000\000\000\000\000\000\000\151\000\000\000\138\000\000\003\190\000\000\000\147\000\151\000\000\000\153\000\000\000\000\000\000\000\152\000\155\000\000\000\000\000\155\000\184\000\000\000\000\000\184\000\185\000\000\000\000\000\185\000\000\000\000\000\157\000\000\003\211\000\157\000\000\000\000\000\183\000\153\000\000\000\000\000\140\000\000\000\000\000\000\000\000\000\141\000\000\000\140\000\000\000\142\000\138\000\000\000\141\000\000\000\147\000\000\000\142\000\000\000\000\000\155\000\140\000\000\000\183\000\184\000\000\000\141\000\000\000\185\000\000\000\142\000\000\000\000\000\000\000\157\000\000\000\000\000\138\000\151\000\000\000\152\000\147\000\000\000\000\000\000\000\151\000\155\000\152\000\000\000\000\000\184\000\000\000\000\000\000\000\185\000\138\000\000\003\250\000\151\000\147\000\157\000\000\000\153\000\000\004\156\000\000\000\000\000\140\000\000\000\153\000\000\000\000\000\141\000\000\000\000\000\000\000\142\000\000\003l\003m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\183\000\000\000\000\000\000\000\000\000\000\000\140\000\183\000\000\000\000\000\000\000\141\000\000\000\000\000\000\000\142\002\193\000\151\000\000\002\197\000\000\000\000\000\138\000\155\000\140\000\000\000\147\000\184\000\152\000\141\000\155\000\185\000\138\000\142\000\184\000\152\000\149\000\157\000\185\000\000\000\000\000\000\000\000\000\151\000\157\005\002\000\000\000\140\000\152\003n\000\153\000\000\005\022\003o\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\151\000\000\000\000\000\000\005\024\000\000\000\000\000\000\000\000\000\153\000\000\002\238\000\000\000\000\000\183\002\198\000\000\000\140\000\000\002\199\000\000\000\183\000\141\000\000\000\000\000\000\000\142\000\140\003l\003m\000\000\000\000\000\141\000\152\000\183\000\000\000\142\000\155\000\000\000\000\000\000\000\184\000\000\000\000\000\155\000\185\000\000\000\000\000\184\000\138\005\026\000\157\000\185\000\149\000\151\000\153\000\000\000\155\000\157\000\152\000\000\000\184\000\000\000\000\000\151\000\185\000\000\000\000\000\000\000\000\000\000\000\157\003l\003m\000\000\000\000\005 \000\152\000\000\000\138\000\183\000\153\000\000\000\139\000\140\000\000\003n\000\000\003|\000\000\003o\000\000\000\000\000\000\005.\000\000\002\239\000\000\000\000\000\153\003}\000\000\000\000\000\155\000\000\000\140\000\183\000\184\000\000\000\000\000\141\000\185\000\000\002\212\000\142\000\000\002\244\000\157\003l\003m\000\000\000\000\002\242\000\000\000\183\002\213\000\000\000\000\000\140\000\155\003n\000\152\000\000\000\184\003o\000\140\000\000\000\185\000\000\000\000\000\141\000\152\000\151\000\157\000\142\000\000\000\000\000\155\005<\000\000\002\245\000\184\000\000\000\153\000\000\000\185\000\000\000\000\000\000\000\000\000\000\000\157\000\000\000\153\000\000\000\000\000\000\003\141\000\000\000\000\000\000\000\000\000\151\000\000\000\140\000\000\003n\000\000\000\183\000\000\003o\003\164\000\000\000\000\000\000\000\000\003|\000\000\000\154\000\000\000\000\000\000\000\000\000\000\002\247\000\000\000\000\000\000\003}\000\000\000\000\000\155\000\000\000\000\000\000\000\184\000\000\000\000\002\248\000\185\000\000\000\155\000\000\000\000\000\000\000\157\003\133\000\000\000\000\000\152\000\000\000\000\000\000\000\000\000\000\000\157\000\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\153\003}\000\000\000\000\000\000\000\000\000\000\000\000\000\152\000\000\000\000\000\000\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\141\000\154\000\000\000\000\000\000\000\000\000\153\000\000\000\000\000\000\000\000\003|\000\000\000\000\003\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003}\000\155\000\000\000\000\000\000\000\000\003\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\157\000\000\000\000\000\000\000\000\000\000\003\141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\155\000\000\000\000\000\000\003\172\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\191\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\003\174"))
   
   let semantic_action =
     [|
@@ -1557,9 +1566,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_aexpr = 
-# 1883 "parser_cocci_menhir.mly"
+# 1952 "parser_cocci_menhir.mly"
       ( Ast0.set_arg_exp _1 )
-# 1563 "parser_cocci_menhir.ml"
+# 1572 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -1578,14 +1587,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 67 "parser_cocci_menhir.mly"
+# 89 "parser_cocci_menhir.mly"
        (Parse_aux.list_info)
-# 1584 "parser_cocci_menhir.ml"
+# 1593 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_aexpr = 
-# 1885 "parser_cocci_menhir.mly"
+# 1954 "parser_cocci_menhir.mly"
       ( let (nm,lenname,pure,clt) = _1 in
       let nm = P.clt2mcode nm clt in
       let lenname =
@@ -1593,7 +1602,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
          Some nm -> Some(P.clt2mcode nm clt)
        | None -> None in
       Ast0.wrap(Ast0.MetaExprList(nm,lenname,pure)) )
-# 1597 "parser_cocci_menhir.ml"
+# 1606 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -1615,9 +1624,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_aexpr = 
-# 1893 "parser_cocci_menhir.mly"
+# 1962 "parser_cocci_menhir.mly"
       ( Ast0.set_arg_exp(Ast0.wrap(Ast0.TypeExp(_1))) )
-# 1621 "parser_cocci_menhir.ml"
+# 1630 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -1637,9 +1646,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_any_strict = 
-# 1937 "parser_cocci_menhir.mly"
+# 2006 "parser_cocci_menhir.mly"
             ( Ast.WhenAny )
-# 1643 "parser_cocci_menhir.ml"
+# 1652 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -1659,9 +1668,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_any_strict = 
-# 1938 "parser_cocci_menhir.mly"
+# 2007 "parser_cocci_menhir.mly"
             ( Ast.WhenStrict )
-# 1665 "parser_cocci_menhir.ml"
+# 1674 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -1681,9 +1690,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_any_strict = 
-# 1939 "parser_cocci_menhir.mly"
+# 2008 "parser_cocci_menhir.mly"
             ( Ast.WhenForall )
-# 1687 "parser_cocci_menhir.ml"
+# 1696 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -1703,9 +1712,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_any_strict = 
-# 1940 "parser_cocci_menhir.mly"
+# 2009 "parser_cocci_menhir.mly"
             ( Ast.WhenExists )
-# 1709 "parser_cocci_menhir.ml"
+# 1718 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -1727,9 +1736,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1284 "parser_cocci_menhir.mly"
+# 1313 "parser_cocci_menhir.mly"
                                             ( _1 )
-# 1733 "parser_cocci_menhir.ml"
+# 1742 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -1759,17 +1768,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 1765 "parser_cocci_menhir.ml"
+# 1774 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1286 "parser_cocci_menhir.mly"
+# 1315 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Mul _1 _2 _3 )
-# 1773 "parser_cocci_menhir.ml"
+# 1782 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -1799,17 +1808,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 98 "parser_cocci_menhir.mly"
+# 120 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
-# 1805 "parser_cocci_menhir.ml"
+# 1814 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1288 "parser_cocci_menhir.mly"
+# 1317 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
-# 1813 "parser_cocci_menhir.ml"
+# 1822 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -1839,17 +1848,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 99 "parser_cocci_menhir.mly"
+# 121 "parser_cocci_menhir.mly"
        (Data.clt)
-# 1845 "parser_cocci_menhir.ml"
+# 1854 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1290 "parser_cocci_menhir.mly"
+# 1319 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Plus _1 _2 _3 )
-# 1853 "parser_cocci_menhir.ml"
+# 1862 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -1879,17 +1888,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 99 "parser_cocci_menhir.mly"
+# 121 "parser_cocci_menhir.mly"
        (Data.clt)
-# 1885 "parser_cocci_menhir.ml"
+# 1894 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1292 "parser_cocci_menhir.mly"
+# 1321 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Minus _1 _2 _3 )
-# 1893 "parser_cocci_menhir.ml"
+# 1902 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -1919,17 +1928,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 97 "parser_cocci_menhir.mly"
+# 119 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
-# 1925 "parser_cocci_menhir.ml"
+# 1934 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1294 "parser_cocci_menhir.mly"
+# 1323 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
-# 1933 "parser_cocci_menhir.ml"
+# 1942 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -1959,17 +1968,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 96 "parser_cocci_menhir.mly"
+# 118 "parser_cocci_menhir.mly"
        (Ast_cocci.logicalOp * Data.clt)
-# 1965 "parser_cocci_menhir.ml"
+# 1974 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1296 "parser_cocci_menhir.mly"
+# 1325 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.logic_op op _1 clt _3 )
-# 1973 "parser_cocci_menhir.ml"
+# 1982 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -1999,17 +2008,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 95 "parser_cocci_menhir.mly"
+# 117 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2005 "parser_cocci_menhir.ml"
+# 2014 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1298 "parser_cocci_menhir.mly"
+# 1327 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.Eq _1 _2 _3 )
-# 2013 "parser_cocci_menhir.ml"
+# 2022 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2039,17 +2048,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 95 "parser_cocci_menhir.mly"
+# 117 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2045 "parser_cocci_menhir.ml"
+# 2054 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1300 "parser_cocci_menhir.mly"
+# 1329 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.NotEq _1 _2 _3 )
-# 2053 "parser_cocci_menhir.ml"
+# 2062 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2079,17 +2088,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 94 "parser_cocci_menhir.mly"
+# 116 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2085 "parser_cocci_menhir.ml"
+# 2094 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1302 "parser_cocci_menhir.mly"
+# 1331 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.And _1 _2 _3 )
-# 2093 "parser_cocci_menhir.ml"
+# 2102 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2119,17 +2128,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 92 "parser_cocci_menhir.mly"
+# 114 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2125 "parser_cocci_menhir.ml"
+# 2134 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1304 "parser_cocci_menhir.mly"
+# 1333 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Or _1 _2 _3 )
-# 2133 "parser_cocci_menhir.ml"
+# 2142 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2159,17 +2168,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 93 "parser_cocci_menhir.mly"
+# 115 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2165 "parser_cocci_menhir.ml"
+# 2174 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1306 "parser_cocci_menhir.mly"
+# 1335 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Xor _1 _2 _3 )
-# 2173 "parser_cocci_menhir.ml"
+# 2182 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2199,17 +2208,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 91 "parser_cocci_menhir.mly"
+# 113 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2205 "parser_cocci_menhir.ml"
+# 2214 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1308 "parser_cocci_menhir.mly"
+# 1337 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.AndLog _1 _2 _3 )
-# 2213 "parser_cocci_menhir.ml"
+# 2222 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2239,17 +2248,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _3 in
         let _2 : (
-# 90 "parser_cocci_menhir.mly"
+# 112 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2245 "parser_cocci_menhir.ml"
+# 2254 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_dot_expressions_ = 
-# 1310 "parser_cocci_menhir.mly"
+# 1339 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.OrLog _1 _2 _3 )
-# 2253 "parser_cocci_menhir.ml"
+# 2262 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2271,9 +2280,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1284 "parser_cocci_menhir.mly"
+# 1313 "parser_cocci_menhir.mly"
                                             ( _1 )
-# 2277 "parser_cocci_menhir.ml"
+# 2286 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2303,17 +2312,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2309 "parser_cocci_menhir.ml"
+# 2318 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1286 "parser_cocci_menhir.mly"
+# 1315 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Mul _1 _2 _3 )
-# 2317 "parser_cocci_menhir.ml"
+# 2326 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2343,17 +2352,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 98 "parser_cocci_menhir.mly"
+# 120 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
-# 2349 "parser_cocci_menhir.ml"
+# 2358 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1288 "parser_cocci_menhir.mly"
+# 1317 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
-# 2357 "parser_cocci_menhir.ml"
+# 2366 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2383,17 +2392,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 99 "parser_cocci_menhir.mly"
+# 121 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2389 "parser_cocci_menhir.ml"
+# 2398 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1290 "parser_cocci_menhir.mly"
+# 1319 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Plus _1 _2 _3 )
-# 2397 "parser_cocci_menhir.ml"
+# 2406 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2423,17 +2432,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 99 "parser_cocci_menhir.mly"
+# 121 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2429 "parser_cocci_menhir.ml"
+# 2438 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1292 "parser_cocci_menhir.mly"
+# 1321 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Minus _1 _2 _3 )
-# 2437 "parser_cocci_menhir.ml"
+# 2446 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2463,17 +2472,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 97 "parser_cocci_menhir.mly"
+# 119 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
-# 2469 "parser_cocci_menhir.ml"
+# 2478 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1294 "parser_cocci_menhir.mly"
+# 1323 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
-# 2477 "parser_cocci_menhir.ml"
+# 2486 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2503,17 +2512,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 96 "parser_cocci_menhir.mly"
+# 118 "parser_cocci_menhir.mly"
        (Ast_cocci.logicalOp * Data.clt)
-# 2509 "parser_cocci_menhir.ml"
+# 2518 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1296 "parser_cocci_menhir.mly"
+# 1325 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.logic_op op _1 clt _3 )
-# 2517 "parser_cocci_menhir.ml"
+# 2526 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2543,17 +2552,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 95 "parser_cocci_menhir.mly"
+# 117 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2549 "parser_cocci_menhir.ml"
+# 2558 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1298 "parser_cocci_menhir.mly"
+# 1327 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.Eq _1 _2 _3 )
-# 2557 "parser_cocci_menhir.ml"
+# 2566 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2583,17 +2592,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 95 "parser_cocci_menhir.mly"
+# 117 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2589 "parser_cocci_menhir.ml"
+# 2598 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1300 "parser_cocci_menhir.mly"
+# 1329 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.NotEq _1 _2 _3 )
-# 2597 "parser_cocci_menhir.ml"
+# 2606 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2623,17 +2632,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 94 "parser_cocci_menhir.mly"
+# 116 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2629 "parser_cocci_menhir.ml"
+# 2638 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1302 "parser_cocci_menhir.mly"
+# 1331 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.And _1 _2 _3 )
-# 2637 "parser_cocci_menhir.ml"
+# 2646 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2663,17 +2672,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 92 "parser_cocci_menhir.mly"
+# 114 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2669 "parser_cocci_menhir.ml"
+# 2678 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1304 "parser_cocci_menhir.mly"
+# 1333 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Or _1 _2 _3 )
-# 2677 "parser_cocci_menhir.ml"
+# 2686 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2703,17 +2712,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 93 "parser_cocci_menhir.mly"
+# 115 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2709 "parser_cocci_menhir.ml"
+# 2718 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1306 "parser_cocci_menhir.mly"
+# 1335 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Xor _1 _2 _3 )
-# 2717 "parser_cocci_menhir.ml"
+# 2726 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2743,17 +2752,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 91 "parser_cocci_menhir.mly"
+# 113 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2749 "parser_cocci_menhir.ml"
+# 2758 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1308 "parser_cocci_menhir.mly"
+# 1337 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.AndLog _1 _2 _3 )
-# 2757 "parser_cocci_menhir.ml"
+# 2766 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2783,17 +2792,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 90 "parser_cocci_menhir.mly"
+# 112 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2789 "parser_cocci_menhir.ml"
+# 2798 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_invalid_ = 
-# 1310 "parser_cocci_menhir.mly"
+# 1339 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.OrLog _1 _2 _3 )
-# 2797 "parser_cocci_menhir.ml"
+# 2806 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2815,9 +2824,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1284 "parser_cocci_menhir.mly"
+# 1313 "parser_cocci_menhir.mly"
                                             ( _1 )
-# 2821 "parser_cocci_menhir.ml"
+# 2830 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2847,17 +2856,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2853 "parser_cocci_menhir.ml"
+# 2862 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1286 "parser_cocci_menhir.mly"
+# 1315 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Mul _1 _2 _3 )
-# 2861 "parser_cocci_menhir.ml"
+# 2870 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2887,17 +2896,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 98 "parser_cocci_menhir.mly"
+# 120 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
-# 2893 "parser_cocci_menhir.ml"
+# 2902 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1288 "parser_cocci_menhir.mly"
+# 1317 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
-# 2901 "parser_cocci_menhir.ml"
+# 2910 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2927,17 +2936,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 99 "parser_cocci_menhir.mly"
+# 121 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2933 "parser_cocci_menhir.ml"
+# 2942 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1290 "parser_cocci_menhir.mly"
+# 1319 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Plus _1 _2 _3 )
-# 2941 "parser_cocci_menhir.ml"
+# 2950 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -2967,17 +2976,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 99 "parser_cocci_menhir.mly"
+# 121 "parser_cocci_menhir.mly"
        (Data.clt)
-# 2973 "parser_cocci_menhir.ml"
+# 2982 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1292 "parser_cocci_menhir.mly"
+# 1321 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Minus _1 _2 _3 )
-# 2981 "parser_cocci_menhir.ml"
+# 2990 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3007,17 +3016,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 97 "parser_cocci_menhir.mly"
+# 119 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
-# 3013 "parser_cocci_menhir.ml"
+# 3022 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1294 "parser_cocci_menhir.mly"
+# 1323 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
-# 3021 "parser_cocci_menhir.ml"
+# 3030 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3047,17 +3056,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 96 "parser_cocci_menhir.mly"
+# 118 "parser_cocci_menhir.mly"
        (Ast_cocci.logicalOp * Data.clt)
-# 3053 "parser_cocci_menhir.ml"
+# 3062 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1296 "parser_cocci_menhir.mly"
+# 1325 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.logic_op op _1 clt _3 )
-# 3061 "parser_cocci_menhir.ml"
+# 3070 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3087,17 +3096,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 95 "parser_cocci_menhir.mly"
+# 117 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3093 "parser_cocci_menhir.ml"
+# 3102 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1298 "parser_cocci_menhir.mly"
+# 1327 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.Eq _1 _2 _3 )
-# 3101 "parser_cocci_menhir.ml"
+# 3110 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3127,17 +3136,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 95 "parser_cocci_menhir.mly"
+# 117 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3133 "parser_cocci_menhir.ml"
+# 3142 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1300 "parser_cocci_menhir.mly"
+# 1329 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.NotEq _1 _2 _3 )
-# 3141 "parser_cocci_menhir.ml"
+# 3150 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3167,17 +3176,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 94 "parser_cocci_menhir.mly"
+# 116 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3173 "parser_cocci_menhir.ml"
+# 3182 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1302 "parser_cocci_menhir.mly"
+# 1331 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.And _1 _2 _3 )
-# 3181 "parser_cocci_menhir.ml"
+# 3190 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3207,17 +3216,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 92 "parser_cocci_menhir.mly"
+# 114 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3213 "parser_cocci_menhir.ml"
+# 3222 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1304 "parser_cocci_menhir.mly"
+# 1333 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Or _1 _2 _3 )
-# 3221 "parser_cocci_menhir.ml"
+# 3230 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3247,17 +3256,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 93 "parser_cocci_menhir.mly"
+# 115 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3253 "parser_cocci_menhir.ml"
+# 3262 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1306 "parser_cocci_menhir.mly"
+# 1335 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Xor _1 _2 _3 )
-# 3261 "parser_cocci_menhir.ml"
+# 3270 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3287,17 +3296,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 91 "parser_cocci_menhir.mly"
+# 113 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3293 "parser_cocci_menhir.ml"
+# 3302 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1308 "parser_cocci_menhir.mly"
+# 1337 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.AndLog _1 _2 _3 )
-# 3301 "parser_cocci_menhir.ml"
+# 3310 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3327,17 +3336,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _3 in
         let _2 : (
-# 90 "parser_cocci_menhir.mly"
+# 112 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3333 "parser_cocci_menhir.ml"
+# 3342 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_arith_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_arith_expr_eexpr_nest_expressions_ = 
-# 1310 "parser_cocci_menhir.mly"
+# 1339 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.OrLog _1 _2 _3 )
-# 3341 "parser_cocci_menhir.ml"
+# 3350 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3359,9 +3368,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_arith_expr_expr_invalid_ = 
-# 1284 "parser_cocci_menhir.mly"
+# 1313 "parser_cocci_menhir.mly"
                                             ( _1 )
-# 3365 "parser_cocci_menhir.ml"
+# 3374 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3391,17 +3400,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3397 "parser_cocci_menhir.ml"
+# 3406 "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_ = 
-# 1286 "parser_cocci_menhir.mly"
+# 1315 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Mul _1 _2 _3 )
-# 3405 "parser_cocci_menhir.ml"
+# 3414 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3431,17 +3440,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 98 "parser_cocci_menhir.mly"
+# 120 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
-# 3437 "parser_cocci_menhir.ml"
+# 3446 "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_ = 
-# 1288 "parser_cocci_menhir.mly"
+# 1317 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
-# 3445 "parser_cocci_menhir.ml"
+# 3454 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3471,17 +3480,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 99 "parser_cocci_menhir.mly"
+# 121 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3477 "parser_cocci_menhir.ml"
+# 3486 "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_ = 
-# 1290 "parser_cocci_menhir.mly"
+# 1319 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Plus _1 _2 _3 )
-# 3485 "parser_cocci_menhir.ml"
+# 3494 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3511,17 +3520,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 99 "parser_cocci_menhir.mly"
+# 121 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3517 "parser_cocci_menhir.ml"
+# 3526 "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_ = 
-# 1292 "parser_cocci_menhir.mly"
+# 1321 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Minus _1 _2 _3 )
-# 3525 "parser_cocci_menhir.ml"
+# 3534 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3551,17 +3560,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 97 "parser_cocci_menhir.mly"
+# 119 "parser_cocci_menhir.mly"
        (Ast_cocci.arithOp * Data.clt)
-# 3557 "parser_cocci_menhir.ml"
+# 3566 "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"
+# 1323 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.arith_op op _1 clt _3 )
-# 3565 "parser_cocci_menhir.ml"
+# 3574 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3591,17 +3600,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 96 "parser_cocci_menhir.mly"
+# 118 "parser_cocci_menhir.mly"
        (Ast_cocci.logicalOp * Data.clt)
-# 3597 "parser_cocci_menhir.ml"
+# 3606 "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"
+# 1325 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in P.logic_op op _1 clt _3 )
-# 3605 "parser_cocci_menhir.ml"
+# 3614 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3631,17 +3640,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 95 "parser_cocci_menhir.mly"
+# 117 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3637 "parser_cocci_menhir.ml"
+# 3646 "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"
+# 1327 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.Eq _1 _2 _3 )
-# 3645 "parser_cocci_menhir.ml"
+# 3654 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3671,17 +3680,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 95 "parser_cocci_menhir.mly"
+# 117 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3677 "parser_cocci_menhir.ml"
+# 3686 "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"
+# 1329 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.NotEq _1 _2 _3 )
-# 3685 "parser_cocci_menhir.ml"
+# 3694 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3711,17 +3720,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 94 "parser_cocci_menhir.mly"
+# 116 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3717 "parser_cocci_menhir.ml"
+# 3726 "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_ = 
-# 1302 "parser_cocci_menhir.mly"
+# 1331 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.And _1 _2 _3 )
-# 3725 "parser_cocci_menhir.ml"
+# 3734 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3751,17 +3760,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 92 "parser_cocci_menhir.mly"
+# 114 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3757 "parser_cocci_menhir.ml"
+# 3766 "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_ = 
-# 1304 "parser_cocci_menhir.mly"
+# 1333 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Or _1 _2 _3 )
-# 3765 "parser_cocci_menhir.ml"
+# 3774 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3791,17 +3800,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 93 "parser_cocci_menhir.mly"
+# 115 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3797 "parser_cocci_menhir.ml"
+# 3806 "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_ = 
-# 1306 "parser_cocci_menhir.mly"
+# 1335 "parser_cocci_menhir.mly"
       ( P.arith_op Ast.Xor _1 _2 _3 )
-# 3805 "parser_cocci_menhir.ml"
+# 3814 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3831,17 +3840,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 91 "parser_cocci_menhir.mly"
+# 113 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3837 "parser_cocci_menhir.ml"
+# 3846 "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_ = 
-# 1308 "parser_cocci_menhir.mly"
+# 1337 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.AndLog _1 _2 _3 )
-# 3845 "parser_cocci_menhir.ml"
+# 3854 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3871,17 +3880,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_arith_expr_expr_invalid_ = Obj.magic _3 in
         let _2 : (
-# 90 "parser_cocci_menhir.mly"
+# 112 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3877 "parser_cocci_menhir.ml"
+# 3886 "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_ = 
-# 1310 "parser_cocci_menhir.mly"
+# 1339 "parser_cocci_menhir.mly"
       ( P.logic_op Ast.OrLog _1 _2 _3 )
-# 3885 "parser_cocci_menhir.ml"
+# 3894 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3901,9 +3910,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_arity = 
-# 492 "parser_cocci_menhir.mly"
+# 519 "parser_cocci_menhir.mly"
               ( Ast.UNIQUE )
-# 3907 "parser_cocci_menhir.ml"
+# 3916 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3923,9 +3932,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_arity = 
-# 493 "parser_cocci_menhir.mly"
+# 520 "parser_cocci_menhir.mly"
               ( Ast.OPT )
-# 3929 "parser_cocci_menhir.ml"
+# 3938 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3945,9 +3954,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_arity = 
-# 494 "parser_cocci_menhir.mly"
+# 521 "parser_cocci_menhir.mly"
               ( Ast.MULTI )
-# 3951 "parser_cocci_menhir.ml"
+# 3960 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3962,9 +3971,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_arity = 
-# 495 "parser_cocci_menhir.mly"
+# 522 "parser_cocci_menhir.mly"
                    ( Ast.NONE )
-# 3968 "parser_cocci_menhir.ml"
+# 3977 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -3993,22 +4002,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let r : (
-# 103 "parser_cocci_menhir.mly"
+# 125 "parser_cocci_menhir.mly"
        (Data.clt)
-# 3999 "parser_cocci_menhir.ml"
+# 4008 "parser_cocci_menhir.ml"
         ) = Obj.magic r in
         let i : 'tv_option_eexpr_ = Obj.magic i in
         let l : (
-# 103 "parser_cocci_menhir.mly"
+# 125 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4005 "parser_cocci_menhir.ml"
+# 4014 "parser_cocci_menhir.ml"
         ) = Obj.magic l in
         let _startpos = _startpos_l_ in
         let _endpos = _endpos_r_ in
         let _v : 'tv_array_dec = 
-# 1091 "parser_cocci_menhir.mly"
+# 1120 "parser_cocci_menhir.mly"
                                            ( (l,i,r) )
-# 4012 "parser_cocci_menhir.ml"
+# 4021 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4030,9 +4039,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_assign_expr_eexpr_dot_expressions_ = 
-# 1256 "parser_cocci_menhir.mly"
+# 1285 "parser_cocci_menhir.mly"
                                            ( _1 )
-# 4036 "parser_cocci_menhir.ml"
+# 4045 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4062,19 +4071,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 109 "parser_cocci_menhir.mly"
+# 131 "parser_cocci_menhir.mly"
        (Ast_cocci.assignOp * Data.clt)
-# 4068 "parser_cocci_menhir.ml"
+# 4077 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_eexpr_dot_expressions_ = 
-# 1258 "parser_cocci_menhir.mly"
+# 1287 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in
       Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt,
                                Ast0.set_arg_exp _3,false)) )
-# 4078 "parser_cocci_menhir.ml"
+# 4087 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4104,19 +4113,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4110 "parser_cocci_menhir.ml"
+# 4119 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_eexpr_dot_expressions_ = 
-# 1262 "parser_cocci_menhir.mly"
+# 1291 "parser_cocci_menhir.mly"
       ( Ast0.wrap
          (Ast0.Assignment
             (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) )
-# 4120 "parser_cocci_menhir.ml"
+# 4129 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4138,9 +4147,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_assign_expr_eexpr_nest_expressions_ = 
-# 1256 "parser_cocci_menhir.mly"
+# 1285 "parser_cocci_menhir.mly"
                                            ( _1 )
-# 4144 "parser_cocci_menhir.ml"
+# 4153 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4170,19 +4179,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 109 "parser_cocci_menhir.mly"
+# 131 "parser_cocci_menhir.mly"
        (Ast_cocci.assignOp * Data.clt)
-# 4176 "parser_cocci_menhir.ml"
+# 4185 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_eexpr_nest_expressions_ = 
-# 1258 "parser_cocci_menhir.mly"
+# 1287 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in
       Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt,
                                Ast0.set_arg_exp _3,false)) )
-# 4186 "parser_cocci_menhir.ml"
+# 4195 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4212,19 +4221,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4218 "parser_cocci_menhir.ml"
+# 4227 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_eexpr_nest_expressions_ = 
-# 1262 "parser_cocci_menhir.mly"
+# 1291 "parser_cocci_menhir.mly"
       ( Ast0.wrap
          (Ast0.Assignment
             (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) )
-# 4228 "parser_cocci_menhir.ml"
+# 4237 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4246,9 +4255,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_assign_expr_expr_invalid_ = 
-# 1256 "parser_cocci_menhir.mly"
+# 1285 "parser_cocci_menhir.mly"
                                            ( _1 )
-# 4252 "parser_cocci_menhir.ml"
+# 4261 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4278,19 +4287,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 109 "parser_cocci_menhir.mly"
+# 131 "parser_cocci_menhir.mly"
        (Ast_cocci.assignOp * Data.clt)
-# 4284 "parser_cocci_menhir.ml"
+# 4293 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_unary_expr_expr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_expr_invalid_ = 
-# 1258 "parser_cocci_menhir.mly"
+# 1287 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in
       Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt,
                                Ast0.set_arg_exp _3,false)) )
-# 4294 "parser_cocci_menhir.ml"
+# 4303 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4320,19 +4329,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4326 "parser_cocci_menhir.ml"
+# 4335 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_unary_expr_expr_invalid_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_expr_invalid_ = 
-# 1262 "parser_cocci_menhir.mly"
+# 1291 "parser_cocci_menhir.mly"
       ( Ast0.wrap
          (Ast0.Assignment
             (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) )
-# 4336 "parser_cocci_menhir.ml"
+# 4345 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4354,9 +4363,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_assign_expr_bis = 
-# 1267 "parser_cocci_menhir.mly"
+# 1296 "parser_cocci_menhir.mly"
                                                             ( _1 )
-# 4360 "parser_cocci_menhir.ml"
+# 4369 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4386,19 +4395,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 109 "parser_cocci_menhir.mly"
+# 131 "parser_cocci_menhir.mly"
        (Ast_cocci.assignOp * Data.clt)
-# 4392 "parser_cocci_menhir.ml"
+# 4401 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_bis = 
-# 1269 "parser_cocci_menhir.mly"
+# 1298 "parser_cocci_menhir.mly"
       ( let (op,clt) = _2 in
       Ast0.wrap(Ast0.Assignment(_1,P.clt2mcode op clt,
                                Ast0.set_arg_exp _3,false)) )
-# 4402 "parser_cocci_menhir.ml"
+# 4411 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4428,19 +4437,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_assign_expr_bis = Obj.magic _3 in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4434 "parser_cocci_menhir.ml"
+# 4443 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_assign_expr_bis = 
-# 1273 "parser_cocci_menhir.mly"
+# 1302 "parser_cocci_menhir.mly"
       ( Ast0.wrap
          (Ast0.Assignment
             (_1,P.clt2mcode Ast.SimpleAssign _2,Ast0.set_arg_exp _3,false)) )
-# 4444 "parser_cocci_menhir.ml"
+# 4453 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4462,9 +4471,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_basic_expr_eexpr_dot_expressions_ = 
-# 1253 "parser_cocci_menhir.mly"
+# 1282 "parser_cocci_menhir.mly"
                                                              ( _1 )
-# 4468 "parser_cocci_menhir.ml"
+# 4477 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4486,9 +4495,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_basic_expr_eexpr_nest_expressions_ = 
-# 1253 "parser_cocci_menhir.mly"
+# 1282 "parser_cocci_menhir.mly"
                                                              ( _1 )
-# 4492 "parser_cocci_menhir.ml"
+# 4501 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4510,9 +4519,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_basic_expr_expr_invalid_ = 
-# 1253 "parser_cocci_menhir.mly"
+# 1282 "parser_cocci_menhir.mly"
                                                              ( _1 )
-# 4516 "parser_cocci_menhir.ml"
+# 4525 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4542,22 +4551,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_fun_start = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4548 "parser_cocci_menhir.ml"
+# 4557 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4553 "parser_cocci_menhir.ml"
+# 4562 "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"
+# 984 "parser_cocci_menhir.mly"
       ( Ast0.wrap
          (Ast0.Default(P.clt2mcode "default" _1,P.clt2mcode ":" _2,_3)) )
-# 4561 "parser_cocci_menhir.ml"
+# 4570 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4592,22 +4601,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _4 : 'tv_fun_start = Obj.magic _4 in
         let _3 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4598 "parser_cocci_menhir.ml"
+# 4607 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4604 "parser_cocci_menhir.ml"
+# 4613 "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"
+# 987 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Case(P.clt2mcode "case" _1,_2,P.clt2mcode ":" _3,_4)) )
-# 4611 "parser_cocci_menhir.ml"
+# 4620 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4629,9 +4638,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_cast_expr_eexpr_dot_expressions_ = 
-# 1313 "parser_cocci_menhir.mly"
+# 1342 "parser_cocci_menhir.mly"
                                           ( _1 )
-# 4635 "parser_cocci_menhir.ml"
+# 4644 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4666,23 +4675,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let e : 'tv_cast_expr_eexpr_dot_expressions_ = Obj.magic e in
         let rp : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4672 "parser_cocci_menhir.ml"
+# 4681 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4678 "parser_cocci_menhir.ml"
+# 4687 "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_ = 
-# 1315 "parser_cocci_menhir.mly"
+# 1344 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t,
                             P.clt2mcode ")" rp, e)) )
-# 4686 "parser_cocci_menhir.ml"
+# 4695 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4704,9 +4713,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_cast_expr_eexpr_invalid_ = 
-# 1313 "parser_cocci_menhir.mly"
+# 1342 "parser_cocci_menhir.mly"
                                           ( _1 )
-# 4710 "parser_cocci_menhir.ml"
+# 4719 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4741,23 +4750,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let e : 'tv_cast_expr_eexpr_invalid_ = Obj.magic e in
         let rp : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4747 "parser_cocci_menhir.ml"
+# 4756 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4753 "parser_cocci_menhir.ml"
+# 4762 "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_ = 
-# 1315 "parser_cocci_menhir.mly"
+# 1344 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t,
                             P.clt2mcode ")" rp, e)) )
-# 4761 "parser_cocci_menhir.ml"
+# 4770 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4779,9 +4788,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_cast_expr_eexpr_nest_expressions_ = 
-# 1313 "parser_cocci_menhir.mly"
+# 1342 "parser_cocci_menhir.mly"
                                           ( _1 )
-# 4785 "parser_cocci_menhir.ml"
+# 4794 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4816,23 +4825,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let e : 'tv_cast_expr_eexpr_nest_expressions_ = Obj.magic e in
         let rp : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4822 "parser_cocci_menhir.ml"
+# 4831 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4828 "parser_cocci_menhir.ml"
+# 4837 "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_ = 
-# 1315 "parser_cocci_menhir.mly"
+# 1344 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t,
                             P.clt2mcode ")" rp, e)) )
-# 4836 "parser_cocci_menhir.ml"
+# 4845 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4854,9 +4863,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_cast_expr_expr_invalid_ = 
-# 1313 "parser_cocci_menhir.mly"
+# 1342 "parser_cocci_menhir.mly"
                                           ( _1 )
-# 4860 "parser_cocci_menhir.ml"
+# 4869 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4891,23 +4900,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let e : 'tv_cast_expr_expr_invalid_ = Obj.magic e in
         let rp : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4897 "parser_cocci_menhir.ml"
+# 4906 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4903 "parser_cocci_menhir.ml"
+# 4912 "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_ = 
-# 1315 "parser_cocci_menhir.mly"
+# 1344 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Cast (P.clt2mcode "(" lp, t,
                             P.clt2mcode ")" rp, e)) )
-# 4911 "parser_cocci_menhir.ml"
+# 4920 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4933,9 +4942,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_choose_iso = 
-# 238 "parser_cocci_menhir.mly"
+# 260 "parser_cocci_menhir.mly"
                                                  ( List.map P.id2name _2 )
-# 4939 "parser_cocci_menhir.ml"
+# 4948 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -4959,23 +4968,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4965 "parser_cocci_menhir.ml"
+# 4974 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 4970 "parser_cocci_menhir.ml"
+# 4979 "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_ = 
-# 1678 "parser_cocci_menhir.mly"
+# 1747 "parser_cocci_menhir.mly"
     ( function dot_builder ->
       [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1));
        dot_builder _2] )
-# 4979 "parser_cocci_menhir.ml"
+# 4988 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5000,17 +5009,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_one_dec_decl_ = Obj.magic _2 in
         let _1 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5006 "parser_cocci_menhir.ml"
+# 5015 "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_ = 
-# 1682 "parser_cocci_menhir.mly"
+# 1751 "parser_cocci_menhir.mly"
     ( function dot_builder ->
       [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1)); _2] )
-# 5014 "parser_cocci_menhir.ml"
+# 5023 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5034,23 +5043,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5040 "parser_cocci_menhir.ml"
+# 5049 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5045 "parser_cocci_menhir.ml"
+# 5054 "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_ = 
-# 1678 "parser_cocci_menhir.mly"
+# 1747 "parser_cocci_menhir.mly"
     ( function dot_builder ->
       [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1));
        dot_builder _2] )
-# 5054 "parser_cocci_menhir.ml"
+# 5063 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5075,17 +5084,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_one_dec_name_opt_decl_ = Obj.magic _2 in
         let _1 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5081 "parser_cocci_menhir.ml"
+# 5090 "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_ = 
-# 1682 "parser_cocci_menhir.mly"
+# 1751 "parser_cocci_menhir.mly"
     ( function dot_builder ->
       [Ast0.wrap(Ast0.PComma(P.clt2mcode "," _1)); _2] )
-# 5089 "parser_cocci_menhir.ml"
+# 5098 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5100,9 +5109,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_comma_initializers_edots_when_TEllipsis_initialize__ = 
-# 1144 "parser_cocci_menhir.mly"
+# 1173 "parser_cocci_menhir.mly"
               ( [] )
-# 5106 "parser_cocci_menhir.ml"
+# 5115 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5130,9 +5139,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_d_ in
         let _endpos = _endpos_r_ in
         let _v : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = 
-# 1146 "parser_cocci_menhir.mly"
+# 1175 "parser_cocci_menhir.mly"
       ( (function dot_builder -> [dot_builder d])::r )
-# 5136 "parser_cocci_menhir.ml"
+# 5145 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5162,18 +5171,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let r : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = Obj.magic r in
         let c : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5168 "parser_cocci_menhir.ml"
+# 5177 "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__ = 
-# 1148 "parser_cocci_menhir.mly"
+# 1177 "parser_cocci_menhir.mly"
     ( (function dot_builder -> [i; Ast0.wrap(Ast0.IComma(P.clt2mcode "," c))])::
       r )
-# 5177 "parser_cocci_menhir.ml"
+# 5186 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5188,9 +5197,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_comma_initializers2_edots_when_TEllipsis_initialize__ = 
-# 1152 "parser_cocci_menhir.mly"
+# 1181 "parser_cocci_menhir.mly"
               ( [] )
-# 5194 "parser_cocci_menhir.ml"
+# 5203 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5220,18 +5229,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let r : 'tv_comma_initializers_edots_when_TEllipsis_initialize__ = Obj.magic r in
         let c : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5226 "parser_cocci_menhir.ml"
+# 5235 "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__ = 
-# 1154 "parser_cocci_menhir.mly"
+# 1183 "parser_cocci_menhir.mly"
     ( (function dot_builder -> [i; Ast0.wrap(Ast0.IComma(P.clt2mcode "," c))])::
       r )
-# 5235 "parser_cocci_menhir.ml"
+# 5244 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5253,9 +5262,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_any_strict_ = 
-# 1915 "parser_cocci_menhir.mly"
+# 1984 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5259 "parser_cocci_menhir.ml"
+# 5268 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5277,9 +5286,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_ctype_ = 
-# 1915 "parser_cocci_menhir.mly"
+# 1984 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5283 "parser_cocci_menhir.ml"
+# 5292 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5301,9 +5310,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_d_ident_ = 
-# 1915 "parser_cocci_menhir.mly"
+# 1984 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5307 "parser_cocci_menhir.ml"
+# 5316 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5325,9 +5334,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_ = 
-# 1915 "parser_cocci_menhir.mly"
+# 1984 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5331 "parser_cocci_menhir.ml"
+# 5340 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5349,9 +5358,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_meta_ident_ = 
-# 1915 "parser_cocci_menhir.mly"
+# 1984 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5355 "parser_cocci_menhir.ml"
+# 5364 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5373,9 +5382,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_pure_ident_ = 
-# 1915 "parser_cocci_menhir.mly"
+# 1984 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5379 "parser_cocci_menhir.ml"
+# 5388 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5397,9 +5406,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_ = 
-# 1915 "parser_cocci_menhir.mly"
+# 1984 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5403 "parser_cocci_menhir.ml"
+# 5412 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5417,13 +5426,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe__ = Obj.magic _1 in
+        let _1 : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_not_ceq_or_sub__ = Obj.magic _1 in
         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__ = 
-# 1915 "parser_cocci_menhir.mly"
+        let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_not_ceq_or_sub__ = 
+# 1984 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5427 "parser_cocci_menhir.ml"
+# 5436 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5441,13 +5450,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid__ = Obj.magic _1 in
+        let _1 : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub__ = Obj.magic _1 in
         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__ = 
-# 1915 "parser_cocci_menhir.mly"
+        let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub__ = 
+# 1984 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5451 "parser_cocci_menhir.ml"
+# 5460 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5465,13 +5474,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid__ = Obj.magic _1 in
+        let _1 : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid__ = Obj.magic _1 in
         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__ = 
-# 1915 "parser_cocci_menhir.mly"
+        let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid__ = 
+# 1984 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5475 "parser_cocci_menhir.ml"
+# 5484 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5489,13 +5498,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = Obj.magic _1 in
+        let _1 : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid__ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
-        let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_seed_ = 
-# 1915 "parser_cocci_menhir.mly"
+        let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid__ = 
+# 1984 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5499 "parser_cocci_menhir.ml"
+# 5508 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5513,13 +5522,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos__1_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let _1 : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_x_eq_not_ceq__ = Obj.magic _1 in
+        let _1 : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
-        let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_x_eq_not_ceq__ = 
-# 1915 "parser_cocci_menhir.mly"
+        let _v : 'tv_comma_list_pure_ident_or_meta_ident_with_seed_ = 
+# 1984 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5523 "parser_cocci_menhir.ml"
+# 5532 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5541,9 +5550,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__ = 
-# 1915 "parser_cocci_menhir.mly"
+# 1984 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5547 "parser_cocci_menhir.ml"
+# 5556 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5565,9 +5574,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_comma_list_typedef_ident_ = 
-# 1915 "parser_cocci_menhir.mly"
+# 1984 "parser_cocci_menhir.mly"
                                        ( _1 )
-# 5571 "parser_cocci_menhir.ml"
+# 5580 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5589,9 +5598,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_ = 
-# 1278 "parser_cocci_menhir.mly"
+# 1307 "parser_cocci_menhir.mly"
                                              ( _1 )
-# 5595 "parser_cocci_menhir.ml"
+# 5604 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5631,24 +5640,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let r : 'tv_cond_expr_eexpr_dot_expressions_ = Obj.magic r in
         let dd : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5637 "parser_cocci_menhir.ml"
+# 5646 "parser_cocci_menhir.ml"
         ) = Obj.magic dd in
         let t : 'tv_option_eexpr_ = Obj.magic t in
         let w : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5643 "parser_cocci_menhir.ml"
+# 5652 "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_ = 
-# 1280 "parser_cocci_menhir.mly"
+# 1309 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.CondExpr (l, P.clt2mcode "?" w, t,
                                 P.clt2mcode ":" dd, r)) )
-# 5652 "parser_cocci_menhir.ml"
+# 5661 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5670,9 +5679,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_ = 
-# 1278 "parser_cocci_menhir.mly"
+# 1307 "parser_cocci_menhir.mly"
                                              ( _1 )
-# 5676 "parser_cocci_menhir.ml"
+# 5685 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5712,24 +5721,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let r : 'tv_cond_expr_eexpr_nest_expressions_ = Obj.magic r in
         let dd : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5718 "parser_cocci_menhir.ml"
+# 5727 "parser_cocci_menhir.ml"
         ) = Obj.magic dd in
         let t : 'tv_option_eexpr_ = Obj.magic t in
         let w : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5724 "parser_cocci_menhir.ml"
+# 5733 "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_ = 
-# 1280 "parser_cocci_menhir.mly"
+# 1309 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.CondExpr (l, P.clt2mcode "?" w, t,
                                 P.clt2mcode ":" dd, r)) )
-# 5733 "parser_cocci_menhir.ml"
+# 5742 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5751,9 +5760,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_cond_expr_expr_invalid_ = 
-# 1278 "parser_cocci_menhir.mly"
+# 1307 "parser_cocci_menhir.mly"
                                              ( _1 )
-# 5757 "parser_cocci_menhir.ml"
+# 5766 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5793,24 +5802,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let r : 'tv_cond_expr_expr_invalid_ = Obj.magic r in
         let dd : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5799 "parser_cocci_menhir.ml"
+# 5808 "parser_cocci_menhir.ml"
         ) = Obj.magic dd in
         let t : 'tv_option_eexpr_ = Obj.magic t in
         let w : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 5805 "parser_cocci_menhir.ml"
+# 5814 "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_ = 
-# 1280 "parser_cocci_menhir.mly"
+# 1309 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.CondExpr (l, P.clt2mcode "?" w, t,
                                 P.clt2mcode ":" dd, r)) )
-# 5814 "parser_cocci_menhir.ml"
+# 5823 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5829,16 +5838,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 54 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
       (Data.clt)
-# 5835 "parser_cocci_menhir.ml"
+# 5844 "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"
+# 893 "parser_cocci_menhir.mly"
                    ( P.clt2mcode Ast.Const _1 )
-# 5842 "parser_cocci_menhir.ml"
+# 5851 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5857,16 +5866,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 54 "parser_cocci_menhir.mly"
+# 76 "parser_cocci_menhir.mly"
       (Data.clt)
-# 5863 "parser_cocci_menhir.ml"
+# 5872 "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"
+# 894 "parser_cocci_menhir.mly"
                    ( P.clt2mcode Ast.Volatile _1 )
-# 5870 "parser_cocci_menhir.ml"
+# 5879 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5881,9 +5890,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_continue_struct_decl_list = 
-# 616 "parser_cocci_menhir.mly"
+# 643 "parser_cocci_menhir.mly"
                                      ( [] )
-# 5887 "parser_cocci_menhir.ml"
+# 5896 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5911,9 +5920,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_continue_struct_decl_list = 
-# 617 "parser_cocci_menhir.mly"
+# 644 "parser_cocci_menhir.mly"
                                      ( _1@_2 )
-# 5917 "parser_cocci_menhir.ml"
+# 5926 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5935,9 +5944,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_continue_struct_decl_list = 
-# 618 "parser_cocci_menhir.mly"
+# 645 "parser_cocci_menhir.mly"
                                      ( _1 )
-# 5941 "parser_cocci_menhir.ml"
+# 5950 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -5967,14 +5976,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 5973 "parser_cocci_menhir.ml"
+# 5982 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 5978 "parser_cocci_menhir.ml"
+# 5987 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -5984,28 +5993,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 502 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 5990 "parser_cocci_menhir.ml"
+# 5999 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 5996 "parser_cocci_menhir.ml"
+# 6005 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6003 "parser_cocci_menhir.ml"
+# 6012 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6009 "parser_cocci_menhir.ml"
+# 6018 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6035,14 +6044,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6041 "parser_cocci_menhir.ml"
+# 6050 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6046 "parser_cocci_menhir.ml"
+# 6055 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -6052,28 +6061,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 504 "parser_cocci_menhir.mly"
+# 531 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 6058 "parser_cocci_menhir.ml"
+# 6067 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 6064 "parser_cocci_menhir.ml"
+# 6073 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6071 "parser_cocci_menhir.ml"
+# 6080 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6077 "parser_cocci_menhir.ml"
+# 6086 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6103,14 +6112,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6109 "parser_cocci_menhir.ml"
+# 6118 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6114 "parser_cocci_menhir.ml"
+# 6123 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -6120,28 +6129,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 506 "parser_cocci_menhir.mly"
+# 533 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 6126 "parser_cocci_menhir.ml"
+# 6135 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 6132 "parser_cocci_menhir.ml"
+# 6141 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6139 "parser_cocci_menhir.ml"
+# 6148 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6145 "parser_cocci_menhir.ml"
+# 6154 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6171,14 +6180,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 6177 "parser_cocci_menhir.ml"
+# 6186 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6182 "parser_cocci_menhir.ml"
+# 6191 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -6188,29 +6197,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 535 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 6195 "parser_cocci_menhir.ml"
+# 6204 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 6201 "parser_cocci_menhir.ml"
+# 6210 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6208 "parser_cocci_menhir.ml"
+# 6217 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6214 "parser_cocci_menhir.ml"
+# 6223 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6249,19 +6258,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 6255 "parser_cocci_menhir.ml"
+# 6264 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 6260 "parser_cocci_menhir.ml"
+# 6269 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let r1 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6265 "parser_cocci_menhir.ml"
+# 6274 "parser_cocci_menhir.ml"
         ) = Obj.magic r1 in
         let _startpos = _startpos_r1_ in
         let _endpos = _endpos_m_ in
@@ -6273,33 +6282,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 511 "parser_cocci_menhir.mly"
+# 538 "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*))) )
-# 6284 "parser_cocci_menhir.ml"
+# 6293 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 6290 "parser_cocci_menhir.ml"
+# 6299 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6297 "parser_cocci_menhir.ml"
+# 6306 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6303 "parser_cocci_menhir.ml"
+# 6312 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6329,14 +6338,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6335 "parser_cocci_menhir.ml"
+# 6344 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6340 "parser_cocci_menhir.ml"
+# 6349 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -6346,28 +6355,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 518 "parser_cocci_menhir.mly"
+# 545 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 6352 "parser_cocci_menhir.ml"
+# 6361 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 6358 "parser_cocci_menhir.ml"
+# 6367 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6365 "parser_cocci_menhir.ml"
+# 6374 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6371 "parser_cocci_menhir.ml"
+# 6380 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6402,19 +6411,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6408 "parser_cocci_menhir.ml"
+# 6417 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6413 "parser_cocci_menhir.ml"
+# 6422 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6418 "parser_cocci_menhir.ml"
+# 6427 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -6426,31 +6435,31 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 520 "parser_cocci_menhir.mly"
+# 547 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 6435 "parser_cocci_menhir.ml"
+# 6444 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 6441 "parser_cocci_menhir.ml"
+# 6450 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6448 "parser_cocci_menhir.ml"
+# 6457 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6454 "parser_cocci_menhir.ml"
+# 6463 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6480,14 +6489,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6486 "parser_cocci_menhir.ml"
+# 6495 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6491 "parser_cocci_menhir.ml"
+# 6500 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -6497,28 +6506,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 502 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 6503 "parser_cocci_menhir.ml"
+# 6512 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 6509 "parser_cocci_menhir.ml"
+# 6518 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6516 "parser_cocci_menhir.ml"
+# 6525 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6522 "parser_cocci_menhir.ml"
+# 6531 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6548,14 +6557,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6554 "parser_cocci_menhir.ml"
+# 6563 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6559 "parser_cocci_menhir.ml"
+# 6568 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -6565,28 +6574,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 504 "parser_cocci_menhir.mly"
+# 531 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 6571 "parser_cocci_menhir.ml"
+# 6580 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 6577 "parser_cocci_menhir.ml"
+# 6586 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6584 "parser_cocci_menhir.ml"
+# 6593 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6590 "parser_cocci_menhir.ml"
+# 6599 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6616,14 +6625,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6622 "parser_cocci_menhir.ml"
+# 6631 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6627 "parser_cocci_menhir.ml"
+# 6636 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -6633,28 +6642,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 506 "parser_cocci_menhir.mly"
+# 533 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 6639 "parser_cocci_menhir.ml"
+# 6648 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 6645 "parser_cocci_menhir.ml"
+# 6654 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6652 "parser_cocci_menhir.ml"
+# 6661 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6658 "parser_cocci_menhir.ml"
+# 6667 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6684,14 +6693,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 6690 "parser_cocci_menhir.ml"
+# 6699 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6695 "parser_cocci_menhir.ml"
+# 6704 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -6701,29 +6710,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 535 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 6708 "parser_cocci_menhir.ml"
+# 6717 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 6714 "parser_cocci_menhir.ml"
+# 6723 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6721 "parser_cocci_menhir.ml"
+# 6730 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6727 "parser_cocci_menhir.ml"
+# 6736 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6762,19 +6771,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 6768 "parser_cocci_menhir.ml"
+# 6777 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 6773 "parser_cocci_menhir.ml"
+# 6782 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let r1 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6778 "parser_cocci_menhir.ml"
+# 6787 "parser_cocci_menhir.ml"
         ) = Obj.magic r1 in
         let _startpos = _startpos_r1_ in
         let _endpos = _endpos_m_ in
@@ -6786,33 +6795,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 511 "parser_cocci_menhir.mly"
+# 538 "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*))) )
-# 6797 "parser_cocci_menhir.ml"
+# 6806 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 6803 "parser_cocci_menhir.ml"
+# 6812 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6810 "parser_cocci_menhir.ml"
+# 6819 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6816 "parser_cocci_menhir.ml"
+# 6825 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6842,14 +6851,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6848 "parser_cocci_menhir.ml"
+# 6857 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6853 "parser_cocci_menhir.ml"
+# 6862 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -6859,28 +6868,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 518 "parser_cocci_menhir.mly"
+# 545 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 6865 "parser_cocci_menhir.ml"
+# 6874 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 6871 "parser_cocci_menhir.ml"
+# 6880 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6878 "parser_cocci_menhir.ml"
+# 6887 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6884 "parser_cocci_menhir.ml"
+# 6893 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6915,19 +6924,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6921 "parser_cocci_menhir.ml"
+# 6930 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6926 "parser_cocci_menhir.ml"
+# 6935 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6931 "parser_cocci_menhir.ml"
+# 6940 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -6939,31 +6948,31 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 520 "parser_cocci_menhir.mly"
+# 547 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 6948 "parser_cocci_menhir.ml"
+# 6957 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 6954 "parser_cocci_menhir.ml"
+# 6963 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 6961 "parser_cocci_menhir.ml"
+# 6970 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 6967 "parser_cocci_menhir.ml"
+# 6976 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -6988,9 +6997,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 6994 "parser_cocci_menhir.ml"
+# 7003 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -6999,28 +7008,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 502 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 7005 "parser_cocci_menhir.ml"
+# 7014 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 7011 "parser_cocci_menhir.ml"
+# 7020 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7018 "parser_cocci_menhir.ml"
+# 7027 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7024 "parser_cocci_menhir.ml"
+# 7033 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7045,9 +7054,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7051 "parser_cocci_menhir.ml"
+# 7060 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -7056,28 +7065,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 504 "parser_cocci_menhir.mly"
+# 531 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 7062 "parser_cocci_menhir.ml"
+# 7071 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 7068 "parser_cocci_menhir.ml"
+# 7077 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7075 "parser_cocci_menhir.ml"
+# 7084 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7081 "parser_cocci_menhir.ml"
+# 7090 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7102,9 +7111,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7108 "parser_cocci_menhir.ml"
+# 7117 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -7113,28 +7122,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 506 "parser_cocci_menhir.mly"
+# 533 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 7119 "parser_cocci_menhir.ml"
+# 7128 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 7125 "parser_cocci_menhir.ml"
+# 7134 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7132 "parser_cocci_menhir.ml"
+# 7141 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7138 "parser_cocci_menhir.ml"
+# 7147 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7159,9 +7168,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 7165 "parser_cocci_menhir.ml"
+# 7174 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let _startpos = _startpos_p00_ in
         let _endpos = _endpos_m_ in
@@ -7170,29 +7179,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 535 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 7177 "parser_cocci_menhir.ml"
+# 7186 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 7183 "parser_cocci_menhir.ml"
+# 7192 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7190 "parser_cocci_menhir.ml"
+# 7199 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7196 "parser_cocci_menhir.ml"
+# 7205 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7226,14 +7235,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 7232 "parser_cocci_menhir.ml"
+# 7241 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 7237 "parser_cocci_menhir.ml"
+# 7246 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let _startpos = _startpos_r00_ in
         let _endpos = _endpos_m_ in
@@ -7244,33 +7253,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 511 "parser_cocci_menhir.mly"
+# 538 "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*))) )
-# 7255 "parser_cocci_menhir.ml"
+# 7264 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 7261 "parser_cocci_menhir.ml"
+# 7270 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7268 "parser_cocci_menhir.ml"
+# 7277 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7274 "parser_cocci_menhir.ml"
+# 7283 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7295,9 +7304,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7301 "parser_cocci_menhir.ml"
+# 7310 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -7306,28 +7315,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 518 "parser_cocci_menhir.mly"
+# 545 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 7312 "parser_cocci_menhir.ml"
+# 7321 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 7318 "parser_cocci_menhir.ml"
+# 7327 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7325 "parser_cocci_menhir.ml"
+# 7334 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7331 "parser_cocci_menhir.ml"
+# 7340 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7357,14 +7366,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7363 "parser_cocci_menhir.ml"
+# 7372 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7368 "parser_cocci_menhir.ml"
+# 7377 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let _startpos = _startpos_ty100_ in
         let _endpos = _endpos_m_ in
@@ -7375,31 +7384,31 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 520 "parser_cocci_menhir.mly"
+# 547 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 7384 "parser_cocci_menhir.ml"
+# 7393 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 7390 "parser_cocci_menhir.ml"
+# 7399 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7397 "parser_cocci_menhir.ml"
+# 7406 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7403 "parser_cocci_menhir.ml"
+# 7412 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7424,9 +7433,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 50 "parser_cocci_menhir.mly"
+# 72 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7430 "parser_cocci_menhir.ml"
+# 7439 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -7435,28 +7444,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 528 "parser_cocci_menhir.mly"
+# 555 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" ty])) )
-# 7441 "parser_cocci_menhir.ml"
+# 7450 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 7447 "parser_cocci_menhir.ml"
+# 7456 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7454 "parser_cocci_menhir.ml"
+# 7463 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7460 "parser_cocci_menhir.ml"
+# 7469 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7481,9 +7490,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7487 "parser_cocci_menhir.ml"
+# 7496 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -7492,28 +7501,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 530 "parser_cocci_menhir.mly"
+# 557 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.DoubleType,[P.clt2mcode "double" ty])) )
-# 7498 "parser_cocci_menhir.ml"
+# 7507 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 7504 "parser_cocci_menhir.ml"
+# 7513 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7511 "parser_cocci_menhir.ml"
+# 7520 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7517 "parser_cocci_menhir.ml"
+# 7526 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7538,9 +7547,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7544 "parser_cocci_menhir.ml"
+# 7553 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -7549,28 +7558,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 532 "parser_cocci_menhir.mly"
+# 559 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" ty])) )
-# 7555 "parser_cocci_menhir.ml"
+# 7564 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 7561 "parser_cocci_menhir.ml"
+# 7570 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7568 "parser_cocci_menhir.ml"
+# 7577 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7574 "parser_cocci_menhir.ml"
+# 7583 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7601,9 +7610,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 : (
-# 50 "parser_cocci_menhir.mly"
+# 72 "parser_cocci_menhir.mly"
       (Data.clt)
-# 7607 "parser_cocci_menhir.ml"
+# 7616 "parser_cocci_menhir.ml"
         ) = Obj.magic s00 in
         let _startpos = _startpos_s00_ in
         let _endpos = _endpos_m_ in
@@ -7614,28 +7623,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let i = i0 in
             let s = s0 in
             
-# 534 "parser_cocci_menhir.mly"
+# 561 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)) )
-# 7620 "parser_cocci_menhir.ml"
+# 7629 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 7626 "parser_cocci_menhir.ml"
+# 7635 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7633 "parser_cocci_menhir.ml"
+# 7642 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7639 "parser_cocci_menhir.ml"
+# 7648 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7675,28 +7684,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let i = i0 in
             let s = s0 in
             
-# 536 "parser_cocci_menhir.mly"
+# 563 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.StructUnionName(s, Some i)) )
-# 7681 "parser_cocci_menhir.ml"
+# 7690 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 7687 "parser_cocci_menhir.ml"
+# 7696 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7694 "parser_cocci_menhir.ml"
+# 7703 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7700 "parser_cocci_menhir.ml"
+# 7709 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7736,15 +7745,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 7742 "parser_cocci_menhir.ml"
+# 7751 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 7748 "parser_cocci_menhir.ml"
+# 7757 "parser_cocci_menhir.ml"
         ) = Obj.magic l00 in
         let s00 : 'tv_struct_or_union = Obj.magic s00 in
         let _startpos = _startpos_s00_ in
@@ -7763,36 +7772,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               
 # 39 "standard.mly"
     ( None )
-# 7767 "parser_cocci_menhir.ml"
+# 7776 "parser_cocci_menhir.ml"
               
             in
             
-# 539 "parser_cocci_menhir.mly"
+# 566 "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)) )
-# 7777 "parser_cocci_menhir.ml"
+# 7786 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 7783 "parser_cocci_menhir.ml"
+# 7792 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7790 "parser_cocci_menhir.ml"
+# 7799 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7796 "parser_cocci_menhir.ml"
+# 7805 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7837,15 +7846,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 7843 "parser_cocci_menhir.ml"
+# 7852 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 7849 "parser_cocci_menhir.ml"
+# 7858 "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
@@ -7868,36 +7877,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               
 # 41 "standard.mly"
     ( Some x )
-# 7872 "parser_cocci_menhir.ml"
+# 7881 "parser_cocci_menhir.ml"
               
             in
             
-# 539 "parser_cocci_menhir.mly"
+# 566 "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)) )
-# 7882 "parser_cocci_menhir.ml"
+# 7891 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 7888 "parser_cocci_menhir.ml"
+# 7897 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7895 "parser_cocci_menhir.ml"
+# 7904 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7901 "parser_cocci_menhir.ml"
+# 7910 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -7937,20 +7946,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 7943 "parser_cocci_menhir.ml"
+# 7952 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 7949 "parser_cocci_menhir.ml"
+# 7958 "parser_cocci_menhir.ml"
         ) = Obj.magic l00 in
         let s00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 7954 "parser_cocci_menhir.ml"
+# 7963 "parser_cocci_menhir.ml"
         ) = Obj.magic s00 in
         let _startpos = _startpos_s00_ in
         let _endpos = _endpos_m_ in
@@ -7965,30 +7974,30 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let l = l0 in
             let s = s0 in
             
-# 545 "parser_cocci_menhir.mly"
+# 572 "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)) )
-# 7973 "parser_cocci_menhir.ml"
+# 7982 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 7979 "parser_cocci_menhir.ml"
+# 7988 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 7986 "parser_cocci_menhir.ml"
+# 7995 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 7992 "parser_cocci_menhir.ml"
+# 8001 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8013,9 +8022,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 8019 "parser_cocci_menhir.ml"
+# 8028 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let _startpos = _startpos_p00_ in
         let _endpos = _endpos_m_ in
@@ -8024,28 +8033,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 549 "parser_cocci_menhir.mly"
+# 576 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.TypeName(P.id2mcode p)) )
-# 8030 "parser_cocci_menhir.ml"
+# 8039 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 8036 "parser_cocci_menhir.ml"
+# 8045 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 8043 "parser_cocci_menhir.ml"
+# 8052 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8049 "parser_cocci_menhir.ml"
+# 8058 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8080,14 +8089,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8086 "parser_cocci_menhir.ml"
+# 8095 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8091 "parser_cocci_menhir.ml"
+# 8100 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -8098,15 +8107,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 502 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 8104 "parser_cocci_menhir.ml"
+# 8113 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 8110 "parser_cocci_menhir.ml"
+# 8119 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -8114,13 +8123,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 8118 "parser_cocci_menhir.ml"
+# 8127 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8124 "parser_cocci_menhir.ml"
+# 8133 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8155,14 +8164,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8161 "parser_cocci_menhir.ml"
+# 8170 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8166 "parser_cocci_menhir.ml"
+# 8175 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -8173,15 +8182,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 504 "parser_cocci_menhir.mly"
+# 531 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 8179 "parser_cocci_menhir.ml"
+# 8188 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 8185 "parser_cocci_menhir.ml"
+# 8194 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -8189,13 +8198,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 8193 "parser_cocci_menhir.ml"
+# 8202 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8199 "parser_cocci_menhir.ml"
+# 8208 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8230,14 +8239,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8236 "parser_cocci_menhir.ml"
+# 8245 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8241 "parser_cocci_menhir.ml"
+# 8250 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -8248,15 +8257,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 506 "parser_cocci_menhir.mly"
+# 533 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 8254 "parser_cocci_menhir.ml"
+# 8263 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 8260 "parser_cocci_menhir.ml"
+# 8269 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -8264,13 +8273,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 8268 "parser_cocci_menhir.ml"
+# 8277 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8274 "parser_cocci_menhir.ml"
+# 8283 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8305,14 +8314,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 8311 "parser_cocci_menhir.ml"
+# 8320 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8316 "parser_cocci_menhir.ml"
+# 8325 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -8323,16 +8332,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 535 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 8330 "parser_cocci_menhir.ml"
+# 8339 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 8336 "parser_cocci_menhir.ml"
+# 8345 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -8340,13 +8349,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 8344 "parser_cocci_menhir.ml"
+# 8353 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8350 "parser_cocci_menhir.ml"
+# 8359 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8390,19 +8399,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 8396 "parser_cocci_menhir.ml"
+# 8405 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 8401 "parser_cocci_menhir.ml"
+# 8410 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let r1 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8406 "parser_cocci_menhir.ml"
+# 8415 "parser_cocci_menhir.ml"
         ) = Obj.magic r1 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -8415,20 +8424,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 511 "parser_cocci_menhir.mly"
+# 538 "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*))) )
-# 8426 "parser_cocci_menhir.ml"
+# 8435 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 8432 "parser_cocci_menhir.ml"
+# 8441 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -8436,13 +8445,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 8440 "parser_cocci_menhir.ml"
+# 8449 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8446 "parser_cocci_menhir.ml"
+# 8455 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8477,14 +8486,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8483 "parser_cocci_menhir.ml"
+# 8492 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8488 "parser_cocci_menhir.ml"
+# 8497 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -8495,15 +8504,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 518 "parser_cocci_menhir.mly"
+# 545 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 8501 "parser_cocci_menhir.ml"
+# 8510 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 8507 "parser_cocci_menhir.ml"
+# 8516 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -8511,13 +8520,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 8515 "parser_cocci_menhir.ml"
+# 8524 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8521 "parser_cocci_menhir.ml"
+# 8530 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8557,19 +8566,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8563 "parser_cocci_menhir.ml"
+# 8572 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8568 "parser_cocci_menhir.ml"
+# 8577 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8573 "parser_cocci_menhir.ml"
+# 8582 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -8582,18 +8591,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 520 "parser_cocci_menhir.mly"
+# 547 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 8591 "parser_cocci_menhir.ml"
+# 8600 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 8597 "parser_cocci_menhir.ml"
+# 8606 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -8601,13 +8610,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 8605 "parser_cocci_menhir.ml"
+# 8614 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8611 "parser_cocci_menhir.ml"
+# 8620 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8642,14 +8651,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8648 "parser_cocci_menhir.ml"
+# 8657 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8653 "parser_cocci_menhir.ml"
+# 8662 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -8660,15 +8669,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 502 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 8666 "parser_cocci_menhir.ml"
+# 8675 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 8672 "parser_cocci_menhir.ml"
+# 8681 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -8676,13 +8685,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 8680 "parser_cocci_menhir.ml"
+# 8689 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8686 "parser_cocci_menhir.ml"
+# 8695 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8717,14 +8726,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8723 "parser_cocci_menhir.ml"
+# 8732 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8728 "parser_cocci_menhir.ml"
+# 8737 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -8735,15 +8744,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 504 "parser_cocci_menhir.mly"
+# 531 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 8741 "parser_cocci_menhir.ml"
+# 8750 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 8747 "parser_cocci_menhir.ml"
+# 8756 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -8751,13 +8760,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 8755 "parser_cocci_menhir.ml"
+# 8764 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8761 "parser_cocci_menhir.ml"
+# 8770 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8792,14 +8801,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8798 "parser_cocci_menhir.ml"
+# 8807 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8803 "parser_cocci_menhir.ml"
+# 8812 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -8810,15 +8819,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 506 "parser_cocci_menhir.mly"
+# 533 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 8816 "parser_cocci_menhir.ml"
+# 8825 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 8822 "parser_cocci_menhir.ml"
+# 8831 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -8826,13 +8835,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 8830 "parser_cocci_menhir.ml"
+# 8839 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8836 "parser_cocci_menhir.ml"
+# 8845 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8867,14 +8876,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 8873 "parser_cocci_menhir.ml"
+# 8882 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8878 "parser_cocci_menhir.ml"
+# 8887 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -8885,16 +8894,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 535 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 8892 "parser_cocci_menhir.ml"
+# 8901 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 8898 "parser_cocci_menhir.ml"
+# 8907 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -8902,13 +8911,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 8906 "parser_cocci_menhir.ml"
+# 8915 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 8912 "parser_cocci_menhir.ml"
+# 8921 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -8952,19 +8961,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 8958 "parser_cocci_menhir.ml"
+# 8967 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 8963 "parser_cocci_menhir.ml"
+# 8972 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let r1 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 8968 "parser_cocci_menhir.ml"
+# 8977 "parser_cocci_menhir.ml"
         ) = Obj.magic r1 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -8977,20 +8986,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 511 "parser_cocci_menhir.mly"
+# 538 "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*))) )
-# 8988 "parser_cocci_menhir.ml"
+# 8997 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 8994 "parser_cocci_menhir.ml"
+# 9003 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -8998,13 +9007,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9002 "parser_cocci_menhir.ml"
+# 9011 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9008 "parser_cocci_menhir.ml"
+# 9017 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9039,14 +9048,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9045 "parser_cocci_menhir.ml"
+# 9054 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9050 "parser_cocci_menhir.ml"
+# 9059 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9057,15 +9066,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 518 "parser_cocci_menhir.mly"
+# 545 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 9063 "parser_cocci_menhir.ml"
+# 9072 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 9069 "parser_cocci_menhir.ml"
+# 9078 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9073,13 +9082,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9077 "parser_cocci_menhir.ml"
+# 9086 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9083 "parser_cocci_menhir.ml"
+# 9092 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9119,19 +9128,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9125 "parser_cocci_menhir.ml"
+# 9134 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9130 "parser_cocci_menhir.ml"
+# 9139 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9135 "parser_cocci_menhir.ml"
+# 9144 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9144,18 +9153,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 520 "parser_cocci_menhir.mly"
+# 547 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 9153 "parser_cocci_menhir.ml"
+# 9162 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 9159 "parser_cocci_menhir.ml"
+# 9168 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9163,13 +9172,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9167 "parser_cocci_menhir.ml"
+# 9176 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9173 "parser_cocci_menhir.ml"
+# 9182 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9199,9 +9208,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9205 "parser_cocci_menhir.ml"
+# 9214 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9211,15 +9220,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 502 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 9217 "parser_cocci_menhir.ml"
+# 9226 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 9223 "parser_cocci_menhir.ml"
+# 9232 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9227,13 +9236,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9231 "parser_cocci_menhir.ml"
+# 9240 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9237 "parser_cocci_menhir.ml"
+# 9246 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9263,9 +9272,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9269 "parser_cocci_menhir.ml"
+# 9278 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9275,15 +9284,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 504 "parser_cocci_menhir.mly"
+# 531 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 9281 "parser_cocci_menhir.ml"
+# 9290 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 9287 "parser_cocci_menhir.ml"
+# 9296 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9291,13 +9300,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9295 "parser_cocci_menhir.ml"
+# 9304 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9301 "parser_cocci_menhir.ml"
+# 9310 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9327,9 +9336,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9333 "parser_cocci_menhir.ml"
+# 9342 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9339,15 +9348,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 506 "parser_cocci_menhir.mly"
+# 533 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 9345 "parser_cocci_menhir.ml"
+# 9354 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 9351 "parser_cocci_menhir.ml"
+# 9360 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9355,13 +9364,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9359 "parser_cocci_menhir.ml"
+# 9368 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9365 "parser_cocci_menhir.ml"
+# 9374 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9391,9 +9400,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 9397 "parser_cocci_menhir.ml"
+# 9406 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9403,16 +9412,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 535 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 9410 "parser_cocci_menhir.ml"
+# 9419 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 9416 "parser_cocci_menhir.ml"
+# 9425 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9420,13 +9429,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9424 "parser_cocci_menhir.ml"
+# 9433 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9430 "parser_cocci_menhir.ml"
+# 9439 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9465,14 +9474,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 9471 "parser_cocci_menhir.ml"
+# 9480 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 9476 "parser_cocci_menhir.ml"
+# 9485 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9484,20 +9493,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 511 "parser_cocci_menhir.mly"
+# 538 "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*))) )
-# 9495 "parser_cocci_menhir.ml"
+# 9504 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 9501 "parser_cocci_menhir.ml"
+# 9510 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9505,13 +9514,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9509 "parser_cocci_menhir.ml"
+# 9518 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9515 "parser_cocci_menhir.ml"
+# 9524 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9541,9 +9550,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9547 "parser_cocci_menhir.ml"
+# 9556 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9553,15 +9562,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 518 "parser_cocci_menhir.mly"
+# 545 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 9559 "parser_cocci_menhir.ml"
+# 9568 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 9565 "parser_cocci_menhir.ml"
+# 9574 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9569,13 +9578,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9573 "parser_cocci_menhir.ml"
+# 9582 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9579 "parser_cocci_menhir.ml"
+# 9588 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9610,14 +9619,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9616 "parser_cocci_menhir.ml"
+# 9625 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9621 "parser_cocci_menhir.ml"
+# 9630 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9629,18 +9638,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 520 "parser_cocci_menhir.mly"
+# 547 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 9638 "parser_cocci_menhir.ml"
+# 9647 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 9644 "parser_cocci_menhir.ml"
+# 9653 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9648,13 +9657,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9652 "parser_cocci_menhir.ml"
+# 9661 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9658 "parser_cocci_menhir.ml"
+# 9667 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9684,9 +9693,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 50 "parser_cocci_menhir.mly"
+# 72 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9690 "parser_cocci_menhir.ml"
+# 9699 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9696,15 +9705,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 528 "parser_cocci_menhir.mly"
+# 555 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" ty])) )
-# 9702 "parser_cocci_menhir.ml"
+# 9711 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 9708 "parser_cocci_menhir.ml"
+# 9717 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9712,13 +9721,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9716 "parser_cocci_menhir.ml"
+# 9725 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9722 "parser_cocci_menhir.ml"
+# 9731 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9748,9 +9757,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9754 "parser_cocci_menhir.ml"
+# 9763 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9760,15 +9769,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 530 "parser_cocci_menhir.mly"
+# 557 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.DoubleType,[P.clt2mcode "double" ty])) )
-# 9766 "parser_cocci_menhir.ml"
+# 9775 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 9772 "parser_cocci_menhir.ml"
+# 9781 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9776,13 +9785,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9780 "parser_cocci_menhir.ml"
+# 9789 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9786 "parser_cocci_menhir.ml"
+# 9795 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9812,9 +9821,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9818 "parser_cocci_menhir.ml"
+# 9827 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9824,15 +9833,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 532 "parser_cocci_menhir.mly"
+# 559 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" ty])) )
-# 9830 "parser_cocci_menhir.ml"
+# 9839 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 9836 "parser_cocci_menhir.ml"
+# 9845 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9840,13 +9849,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9844 "parser_cocci_menhir.ml"
+# 9853 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9850 "parser_cocci_menhir.ml"
+# 9859 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9882,9 +9891,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 : (
-# 50 "parser_cocci_menhir.mly"
+# 72 "parser_cocci_menhir.mly"
       (Data.clt)
-# 9888 "parser_cocci_menhir.ml"
+# 9897 "parser_cocci_menhir.ml"
         ) = Obj.magic s00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -9896,15 +9905,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let i = i0 in
             let s = s0 in
             
-# 534 "parser_cocci_menhir.mly"
+# 561 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)) )
-# 9902 "parser_cocci_menhir.ml"
+# 9911 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 9908 "parser_cocci_menhir.ml"
+# 9917 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9912,13 +9921,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9916 "parser_cocci_menhir.ml"
+# 9925 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9922 "parser_cocci_menhir.ml"
+# 9931 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -9964,15 +9973,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let i = i0 in
             let s = s0 in
             
-# 536 "parser_cocci_menhir.mly"
+# 563 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.StructUnionName(s, Some i)) )
-# 9970 "parser_cocci_menhir.ml"
+# 9979 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 9976 "parser_cocci_menhir.ml"
+# 9985 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -9980,13 +9989,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 9984 "parser_cocci_menhir.ml"
+# 9993 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 9990 "parser_cocci_menhir.ml"
+# 9999 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10031,15 +10040,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10037 "parser_cocci_menhir.ml"
+# 10046 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10043 "parser_cocci_menhir.ml"
+# 10052 "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
@@ -10059,23 +10068,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               
 # 39 "standard.mly"
     ( None )
-# 10063 "parser_cocci_menhir.ml"
+# 10072 "parser_cocci_menhir.ml"
               
             in
             
-# 539 "parser_cocci_menhir.mly"
+# 566 "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)) )
-# 10073 "parser_cocci_menhir.ml"
+# 10082 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 10079 "parser_cocci_menhir.ml"
+# 10088 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -10083,13 +10092,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 10087 "parser_cocci_menhir.ml"
+# 10096 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 10093 "parser_cocci_menhir.ml"
+# 10102 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10139,15 +10148,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10145 "parser_cocci_menhir.ml"
+# 10154 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10151 "parser_cocci_menhir.ml"
+# 10160 "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
@@ -10171,23 +10180,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               
 # 41 "standard.mly"
     ( Some x )
-# 10175 "parser_cocci_menhir.ml"
+# 10184 "parser_cocci_menhir.ml"
               
             in
             
-# 539 "parser_cocci_menhir.mly"
+# 566 "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)) )
-# 10185 "parser_cocci_menhir.ml"
+# 10194 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 10191 "parser_cocci_menhir.ml"
+# 10200 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -10195,13 +10204,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 10199 "parser_cocci_menhir.ml"
+# 10208 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 10205 "parser_cocci_menhir.ml"
+# 10214 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10246,20 +10255,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10252 "parser_cocci_menhir.ml"
+# 10261 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10258 "parser_cocci_menhir.ml"
+# 10267 "parser_cocci_menhir.ml"
         ) = Obj.magic l00 in
         let s00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 10263 "parser_cocci_menhir.ml"
+# 10272 "parser_cocci_menhir.ml"
         ) = Obj.magic s00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -10275,17 +10284,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let l = l0 in
             let s = s0 in
             
-# 545 "parser_cocci_menhir.mly"
+# 572 "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)) )
-# 10283 "parser_cocci_menhir.ml"
+# 10292 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 10289 "parser_cocci_menhir.ml"
+# 10298 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -10293,13 +10302,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 10297 "parser_cocci_menhir.ml"
+# 10306 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 10303 "parser_cocci_menhir.ml"
+# 10312 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10329,9 +10338,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 10335 "parser_cocci_menhir.ml"
+# 10344 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -10341,15 +10350,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 549 "parser_cocci_menhir.mly"
+# 576 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.TypeName(P.id2mcode p)) )
-# 10347 "parser_cocci_menhir.ml"
+# 10356 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 10353 "parser_cocci_menhir.ml"
+# 10362 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -10357,13 +10366,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 10361 "parser_cocci_menhir.ml"
+# 10370 "parser_cocci_menhir.ml"
           
         in
         
-# 562 "parser_cocci_menhir.mly"
+# 589 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 10367 "parser_cocci_menhir.ml"
+# 10376 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10382,16 +10391,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let r : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 10388 "parser_cocci_menhir.ml"
+# 10397 "parser_cocci_menhir.ml"
         ) = Obj.magic r in
         let _startpos = _startpos_r_ in
         let _endpos = _endpos_r_ in
         let _v : 'tv_ctype = 
-# 564 "parser_cocci_menhir.mly"
+# 591 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,None)) )
-# 10395 "parser_cocci_menhir.ml"
+# 10404 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10410,16 +10419,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let r : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 10416 "parser_cocci_menhir.ml"
+# 10425 "parser_cocci_menhir.ml"
         ) = Obj.magic r in
         let _startpos = _startpos_r_ in
         let _endpos = _endpos_r_ in
         let _v : 'tv_ctype = 
-# 566 "parser_cocci_menhir.mly"
+# 593 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,None)) )
-# 10423 "parser_cocci_menhir.ml"
+# 10432 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10448,24 +10457,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rp : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10454 "parser_cocci_menhir.ml"
+# 10463 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_midzero_list_ctype_ctype_ = Obj.magic t in
         let lp : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10460 "parser_cocci_menhir.ml"
+# 10469 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let _startpos = _startpos_lp_ in
         let _endpos = _endpos_rp_ in
         let _v : 'tv_ctype = 
-# 568 "parser_cocci_menhir.mly"
+# 595 "parser_cocci_menhir.mly"
     ( let (mids,code) = t in
       Ast0.wrap
        (Ast0.DisjType(P.clt2mcode "(" lp,code,mids, P.clt2mcode ")" rp)) )
-# 10469 "parser_cocci_menhir.ml"
+# 10478 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10493,7 +10502,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_d_ident = 
-# 1082 "parser_cocci_menhir.mly"
+# 1111 "parser_cocci_menhir.mly"
       ( (_1,
         function t ->
           List.fold_right
@@ -10502,7 +10511,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                 Ast0.wrap
                   (Ast0.Array(rest,P.clt2mcode "[" l,i,P.clt2mcode "]" r)))
             _2 t) )
-# 10506 "parser_cocci_menhir.ml"
+# 10515 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10530,9 +10539,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"
+# 867 "parser_cocci_menhir.mly"
  ( Ast0.wrap(Ast0.Param(t, Some i)) )
-# 10536 "parser_cocci_menhir.ml"
+# 10545 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10554,9 +10563,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"
+# 868 "parser_cocci_menhir.mly"
               ( (*verify in FunDecl*) Ast0.wrap(Ast0.Param(t, None)) )
-# 10560 "parser_cocci_menhir.ml"
+# 10569 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10610,44 +10619,44 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rp1 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10616 "parser_cocci_menhir.ml"
+# 10625 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in
         let lp1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10622 "parser_cocci_menhir.ml"
+# 10631 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let rp : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10627 "parser_cocci_menhir.ml"
+# 10636 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let i : 'tv_ident = Obj.magic i in
         let s : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10633 "parser_cocci_menhir.ml"
+# 10642 "parser_cocci_menhir.ml"
         ) = Obj.magic s in
         let lp : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10638 "parser_cocci_menhir.ml"
+# 10647 "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"
+# 871 "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)) )
-# 10651 "parser_cocci_menhir.ml"
+# 10660 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10666,17 +10675,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 10672 "parser_cocci_menhir.ml"
+# 10681 "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"
+# 878 "parser_cocci_menhir.mly"
  ( let (nm,pure,clt) = _1 in
        Ast0.wrap(Ast0.MetaParam(P.clt2mcode nm clt,pure)) )
-# 10680 "parser_cocci_menhir.ml"
+# 10689 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10695,16 +10704,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 10701 "parser_cocci_menhir.ml"
+# 10710 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_ident = 
-# 1627 "parser_cocci_menhir.mly"
+# 1696 "parser_cocci_menhir.mly"
          ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) )
-# 10708 "parser_cocci_menhir.ml"
+# 10717 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10723,17 +10732,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 63 "parser_cocci_menhir.mly"
+# 85 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 10729 "parser_cocci_menhir.ml"
+# 10738 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_ident = 
-# 1629 "parser_cocci_menhir.mly"
+# 1698 "parser_cocci_menhir.mly"
          ( let (nm,constraints,pure,clt) = _1 in
          Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) )
-# 10737 "parser_cocci_menhir.ml"
+# 10746 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10748,9 +10757,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_decl_list_decl_ = 
-# 1649 "parser_cocci_menhir.mly"
+# 1718 "parser_cocci_menhir.mly"
               ( Ast0.wrap(Ast0.DOTS([])) )
-# 10754 "parser_cocci_menhir.ml"
+# 10763 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10772,13 +10781,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_list_decl_ = 
-# 1651 "parser_cocci_menhir.mly"
+# 1720 "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)) )
-# 10782 "parser_cocci_menhir.ml"
+# 10791 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10793,9 +10802,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_decl_list_name_opt_decl_ = 
-# 1649 "parser_cocci_menhir.mly"
+# 1718 "parser_cocci_menhir.mly"
               ( Ast0.wrap(Ast0.DOTS([])) )
-# 10799 "parser_cocci_menhir.ml"
+# 10808 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10817,13 +10826,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_list_name_opt_decl_ = 
-# 1651 "parser_cocci_menhir.mly"
+# 1720 "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)) )
-# 10827 "parser_cocci_menhir.ml"
+# 10836 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10845,9 +10854,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_list_start_decl_ = 
-# 1658 "parser_cocci_menhir.mly"
+# 1727 "parser_cocci_menhir.mly"
                  ( [_1] )
-# 10851 "parser_cocci_menhir.ml"
+# 10860 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10877,17 +10886,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_decl_list_start_decl_ = Obj.magic _3 in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10883 "parser_cocci_menhir.ml"
+# 10892 "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_ = 
-# 1660 "parser_cocci_menhir.mly"
+# 1729 "parser_cocci_menhir.mly"
     ( _1::Ast0.wrap(Ast0.PComma(P.clt2mcode "," _2))::_3 )
-# 10891 "parser_cocci_menhir.ml"
+# 10900 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10912,17 +10921,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_list_comma_decls_TEllipsis_decl__ = Obj.magic _2 in
         let _1 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10918 "parser_cocci_menhir.ml"
+# 10927 "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_ = 
-# 1662 "parser_cocci_menhir.mly"
+# 1731 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Pdots(P.clt2mcode "..." _1))::
       (List.concat(List.map (function x -> x (P.mkpdots "...")) _2)) )
-# 10926 "parser_cocci_menhir.ml"
+# 10935 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10944,9 +10953,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_list_start_name_opt_decl_ = 
-# 1658 "parser_cocci_menhir.mly"
+# 1727 "parser_cocci_menhir.mly"
                  ( [_1] )
-# 10950 "parser_cocci_menhir.ml"
+# 10959 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -10976,17 +10985,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_decl_list_start_name_opt_decl_ = Obj.magic _3 in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 10982 "parser_cocci_menhir.ml"
+# 10991 "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_ = 
-# 1660 "parser_cocci_menhir.mly"
+# 1729 "parser_cocci_menhir.mly"
     ( _1::Ast0.wrap(Ast0.PComma(P.clt2mcode "," _2))::_3 )
-# 10990 "parser_cocci_menhir.ml"
+# 10999 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11011,17 +11020,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_list_comma_decls_TEllipsis_name_opt_decl__ = Obj.magic _2 in
         let _1 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11017 "parser_cocci_menhir.ml"
+# 11026 "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_ = 
-# 1662 "parser_cocci_menhir.mly"
+# 1731 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Pdots(P.clt2mcode "..." _1))::
       (List.concat(List.map (function x -> x (P.mkpdots "...")) _2)) )
-# 11025 "parser_cocci_menhir.ml"
+# 11034 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11040,17 +11049,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 11046 "parser_cocci_menhir.ml"
+# 11055 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_statement = 
-# 1160 "parser_cocci_menhir.mly"
+# 1189 "parser_cocci_menhir.mly"
       ( let (nm,pure,clt) = _1 in
       [Ast0.wrap(Ast0.MetaStmt(P.clt2mcode nm clt,pure))] )
-# 11054 "parser_cocci_menhir.ml"
+# 11063 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11072,13 +11081,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_statement = 
-# 1163 "parser_cocci_menhir.mly"
+# 1192 "parser_cocci_menhir.mly"
       ( List.map
          (function x ->
            Ast0.wrap
              (Ast0.Decl((Ast0.default_info(),Ast0.context_befaft()),x)))
          _1 )
-# 11082 "parser_cocci_menhir.ml"
+# 11091 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11100,9 +11109,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_statement = 
-# 1168 "parser_cocci_menhir.mly"
+# 1197 "parser_cocci_menhir.mly"
               ( [_1] )
-# 11106 "parser_cocci_menhir.ml"
+# 11115 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11131,20 +11140,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11137 "parser_cocci_menhir.ml"
+# 11146 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let t : 'tv_midzero_list_fun_start_fun_start_ = Obj.magic t in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11143 "parser_cocci_menhir.ml"
+# 11152 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_decl_statement = 
-# 1177 "parser_cocci_menhir.mly"
+# 1206 "parser_cocci_menhir.mly"
       ( let (mids,code) = t in
        if List.for_all
            (function x ->
@@ -11154,7 +11163,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       else
          [Ast0.wrap(Ast0.Disj(P.clt2mcode "(" _1, code, mids,
                               P.clt2mcode ")" _3))] )
-# 11158 "parser_cocci_menhir.ml"
+# 11167 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11173,17 +11182,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 11179 "parser_cocci_menhir.ml"
+# 11188 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_statement_expr = 
-# 1190 "parser_cocci_menhir.mly"
+# 1219 "parser_cocci_menhir.mly"
       ( let (nm,pure,clt) = _1 in
       [Ast0.wrap(Ast0.MetaStmt(P.clt2mcode nm clt,pure))] )
-# 11187 "parser_cocci_menhir.ml"
+# 11196 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11205,13 +11214,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_statement_expr = 
-# 1193 "parser_cocci_menhir.mly"
+# 1222 "parser_cocci_menhir.mly"
       ( List.map
          (function x ->
            Ast0.wrap
              (Ast0.Decl((Ast0.default_info(),Ast0.context_befaft()),x)))
          _1 )
-# 11215 "parser_cocci_menhir.ml"
+# 11224 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11233,9 +11242,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_decl_statement_expr = 
-# 1198 "parser_cocci_menhir.mly"
+# 1227 "parser_cocci_menhir.mly"
               ( [_1] )
-# 11239 "parser_cocci_menhir.ml"
+# 11248 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11264,20 +11273,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11270 "parser_cocci_menhir.ml"
+# 11279 "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 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11276 "parser_cocci_menhir.ml"
+# 11285 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_decl_statement_expr = 
-# 1207 "parser_cocci_menhir.mly"
+# 1236 "parser_cocci_menhir.mly"
       ( let (mids,code) = t in
        if List.for_all (function [] -> true | _ -> false) code
       then []
@@ -11286,7 +11295,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))] )
-# 11290 "parser_cocci_menhir.ml"
+# 11299 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11310,17 +11319,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11316 "parser_cocci_menhir.ml"
+# 11325 "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"
+# 999 "parser_cocci_menhir.mly"
       ( [Ast0.wrap(Ast0.TyDecl(t,P.clt2mcode ";" pv))] )
-# 11324 "parser_cocci_menhir.ml"
+# 11333 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11349,9 +11358,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11355 "parser_cocci_menhir.ml"
+# 11364 "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
@@ -11361,16 +11370,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 11365 "parser_cocci_menhir.ml"
+# 11374 "parser_cocci_menhir.ml"
           
         in
         
-# 972 "parser_cocci_menhir.mly"
+# 1001 "parser_cocci_menhir.mly"
       ( List.map
          (function (id,fn) ->
            Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)))
          d )
-# 11374 "parser_cocci_menhir.ml"
+# 11383 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11404,9 +11413,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11410 "parser_cocci_menhir.ml"
+# 11419 "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
@@ -11418,16 +11427,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 11422 "parser_cocci_menhir.ml"
+# 11431 "parser_cocci_menhir.ml"
           
         in
         
-# 972 "parser_cocci_menhir.mly"
+# 1001 "parser_cocci_menhir.mly"
       ( List.map
          (function (id,fn) ->
            Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)))
          d )
-# 11431 "parser_cocci_menhir.ml"
+# 11440 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11449,9 +11458,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_f_ in
         let _endpos = _endpos_f_ in
         let _v : 'tv_decl_var = 
-# 976 "parser_cocci_menhir.mly"
+# 1005 "parser_cocci_menhir.mly"
                ( [f] )
-# 11455 "parser_cocci_menhir.ml"
+# 11464 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11490,15 +11499,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11496 "parser_cocci_menhir.ml"
+# 11505 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11502 "parser_cocci_menhir.ml"
+# 11511 "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
@@ -11508,14 +11517,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 11512 "parser_cocci_menhir.ml"
+# 11521 "parser_cocci_menhir.ml"
           
         in
         
-# 978 "parser_cocci_menhir.mly"
+# 1007 "parser_cocci_menhir.mly"
       (let (id,fn) = d in
       [Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))])
-# 11519 "parser_cocci_menhir.ml"
+# 11528 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11559,15 +11568,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11565 "parser_cocci_menhir.ml"
+# 11574 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11571 "parser_cocci_menhir.ml"
+# 11580 "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
@@ -11579,14 +11588,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 11583 "parser_cocci_menhir.ml"
+# 11592 "parser_cocci_menhir.ml"
           
         in
         
-# 978 "parser_cocci_menhir.mly"
+# 1007 "parser_cocci_menhir.mly"
       (let (id,fn) = d in
       [Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv))])
-# 11590 "parser_cocci_menhir.ml"
+# 11599 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11615,9 +11624,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11621 "parser_cocci_menhir.ml"
+# 11630 "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
@@ -11627,25 +11636,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 11631 "parser_cocci_menhir.ml"
+# 11640 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 11638 "parser_cocci_menhir.ml"
+# 11647 "parser_cocci_menhir.ml"
           
         in
         
-# 983 "parser_cocci_menhir.mly"
+# 1012 "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 )
-# 11649 "parser_cocci_menhir.ml"
+# 11658 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11679,9 +11688,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11685 "parser_cocci_menhir.ml"
+# 11694 "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
@@ -11693,25 +11702,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 11697 "parser_cocci_menhir.ml"
+# 11706 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 11704 "parser_cocci_menhir.ml"
+# 11713 "parser_cocci_menhir.ml"
           
         in
         
-# 983 "parser_cocci_menhir.mly"
+# 1012 "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 )
-# 11715 "parser_cocci_menhir.ml"
+# 11724 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11745,9 +11754,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11751 "parser_cocci_menhir.ml"
+# 11760 "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
@@ -11758,7 +11767,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 11762 "parser_cocci_menhir.ml"
+# 11771 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -11766,18 +11775,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 11770 "parser_cocci_menhir.ml"
+# 11779 "parser_cocci_menhir.ml"
           
         in
         
-# 983 "parser_cocci_menhir.mly"
+# 1012 "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 )
-# 11781 "parser_cocci_menhir.ml"
+# 11790 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11816,9 +11825,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11822 "parser_cocci_menhir.ml"
+# 11831 "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
@@ -11831,7 +11840,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 11835 "parser_cocci_menhir.ml"
+# 11844 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -11839,18 +11848,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 11843 "parser_cocci_menhir.ml"
+# 11852 "parser_cocci_menhir.ml"
           
         in
         
-# 983 "parser_cocci_menhir.mly"
+# 1012 "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 )
-# 11854 "parser_cocci_menhir.ml"
+# 11863 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11889,15 +11898,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11895 "parser_cocci_menhir.ml"
+# 11904 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11901 "parser_cocci_menhir.ml"
+# 11910 "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
@@ -11907,24 +11916,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 11911 "parser_cocci_menhir.ml"
+# 11920 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 11918 "parser_cocci_menhir.ml"
+# 11927 "parser_cocci_menhir.ml"
           
         in
         
-# 991 "parser_cocci_menhir.mly"
+# 1020 "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))] )
-# 11928 "parser_cocci_menhir.ml"
+# 11937 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -11968,15 +11977,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11974 "parser_cocci_menhir.ml"
+# 11983 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 11980 "parser_cocci_menhir.ml"
+# 11989 "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
@@ -11988,24 +11997,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 11992 "parser_cocci_menhir.ml"
+# 12001 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 11999 "parser_cocci_menhir.ml"
+# 12008 "parser_cocci_menhir.ml"
           
         in
         
-# 991 "parser_cocci_menhir.mly"
+# 1020 "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))] )
-# 12009 "parser_cocci_menhir.ml"
+# 12018 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12049,15 +12058,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12055 "parser_cocci_menhir.ml"
+# 12064 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12061 "parser_cocci_menhir.ml"
+# 12070 "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
@@ -12068,7 +12077,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 12072 "parser_cocci_menhir.ml"
+# 12081 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -12076,17 +12085,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 12080 "parser_cocci_menhir.ml"
+# 12089 "parser_cocci_menhir.ml"
           
         in
         
-# 991 "parser_cocci_menhir.mly"
+# 1020 "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))] )
-# 12090 "parser_cocci_menhir.ml"
+# 12099 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12135,15 +12144,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12141 "parser_cocci_menhir.ml"
+# 12150 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12147 "parser_cocci_menhir.ml"
+# 12156 "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
@@ -12156,7 +12165,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 12160 "parser_cocci_menhir.ml"
+# 12169 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -12164,17 +12173,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 12168 "parser_cocci_menhir.ml"
+# 12177 "parser_cocci_menhir.ml"
           
         in
         
-# 991 "parser_cocci_menhir.mly"
+# 1020 "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))] )
-# 12178 "parser_cocci_menhir.ml"
+# 12187 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12233,36 +12242,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12239 "parser_cocci_menhir.ml"
+# 12248 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let rp2 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12244 "parser_cocci_menhir.ml"
+# 12253 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12250 "parser_cocci_menhir.ml"
+# 12259 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12255 "parser_cocci_menhir.ml"
+# 12264 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12261 "parser_cocci_menhir.ml"
+# 12270 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12266 "parser_cocci_menhir.ml"
+# 12275 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let _startpos = _startpos_t_ in
@@ -12271,11 +12280,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 12275 "parser_cocci_menhir.ml"
+# 12284 "parser_cocci_menhir.ml"
           
         in
         
-# 1001 "parser_cocci_menhir.mly"
+# 1030 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -12283,7 +12292,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))] )
-# 12287 "parser_cocci_menhir.ml"
+# 12296 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12347,36 +12356,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12353 "parser_cocci_menhir.ml"
+# 12362 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let rp2 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12358 "parser_cocci_menhir.ml"
+# 12367 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12364 "parser_cocci_menhir.ml"
+# 12373 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12369 "parser_cocci_menhir.ml"
+# 12378 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12375 "parser_cocci_menhir.ml"
+# 12384 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12380 "parser_cocci_menhir.ml"
+# 12389 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let x0 : 'tv_storage = Obj.magic x0 in
@@ -12387,11 +12396,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 12391 "parser_cocci_menhir.ml"
+# 12400 "parser_cocci_menhir.ml"
           
         in
         
-# 1001 "parser_cocci_menhir.mly"
+# 1030 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -12399,7 +12408,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))] )
-# 12403 "parser_cocci_menhir.ml"
+# 12412 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12438,29 +12447,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _5 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12444 "parser_cocci_menhir.ml"
+# 12453 "parser_cocci_menhir.ml"
         ) = Obj.magic _5 in
         let _4 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12449 "parser_cocci_menhir.ml"
+# 12458 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr_list_option = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12455 "parser_cocci_menhir.ml"
+# 12464 "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 = 
-# 1009 "parser_cocci_menhir.mly"
+# 1038 "parser_cocci_menhir.mly"
       ( [Ast0.wrap(Ast0.MacroDecl(_1,P.clt2mcode "(" _2,_3,
                                  P.clt2mcode ")" _4,P.clt2mcode ";" _5))] )
-# 12464 "parser_cocci_menhir.ml"
+# 12473 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12529,42 +12538,42 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12535 "parser_cocci_menhir.ml"
+# 12544 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12541 "parser_cocci_menhir.ml"
+# 12550 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let rp2 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12546 "parser_cocci_menhir.ml"
+# 12555 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12552 "parser_cocci_menhir.ml"
+# 12561 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12557 "parser_cocci_menhir.ml"
+# 12566 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12563 "parser_cocci_menhir.ml"
+# 12572 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12568 "parser_cocci_menhir.ml"
+# 12577 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let _startpos = _startpos_t_ in
@@ -12573,11 +12582,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 12577 "parser_cocci_menhir.ml"
+# 12586 "parser_cocci_menhir.ml"
           
         in
         
-# 1015 "parser_cocci_menhir.mly"
+# 1044 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -12585,7 +12594,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))])
-# 12589 "parser_cocci_menhir.ml"
+# 12598 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12659,42 +12668,42 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12665 "parser_cocci_menhir.ml"
+# 12674 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12671 "parser_cocci_menhir.ml"
+# 12680 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let rp2 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12676 "parser_cocci_menhir.ml"
+# 12685 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12682 "parser_cocci_menhir.ml"
+# 12691 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12687 "parser_cocci_menhir.ml"
+# 12696 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12693 "parser_cocci_menhir.ml"
+# 12702 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12698 "parser_cocci_menhir.ml"
+# 12707 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let x0 : 'tv_storage = Obj.magic x0 in
@@ -12705,11 +12714,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 12709 "parser_cocci_menhir.ml"
+# 12718 "parser_cocci_menhir.ml"
           
         in
         
-# 1015 "parser_cocci_menhir.mly"
+# 1044 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -12717,7 +12726,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))])
-# 12721 "parser_cocci_menhir.ml"
+# 12730 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12751,27 +12760,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12757 "parser_cocci_menhir.ml"
+# 12766 "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 : (
-# 53 "parser_cocci_menhir.mly"
+# 75 "parser_cocci_menhir.mly"
       (Data.clt)
-# 12764 "parser_cocci_menhir.ml"
+# 12773 "parser_cocci_menhir.ml"
         ) = Obj.magic s in
         let _startpos = _startpos_s_ in
         let _endpos = _endpos_pv_ in
         let _v : 'tv_decl_var = 
-# 1023 "parser_cocci_menhir.mly"
+# 1052 "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 )
-# 12775 "parser_cocci_menhir.ml"
+# 12784 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12793,13 +12802,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_define_param_list = 
-# 740 "parser_cocci_menhir.mly"
+# 769 "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)) )
-# 12803 "parser_cocci_menhir.ml"
+# 12812 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12821,9 +12830,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_define_param_list_option = 
-# 764 "parser_cocci_menhir.mly"
+# 793 "parser_cocci_menhir.mly"
                                             ( _1 )
-# 12827 "parser_cocci_menhir.ml"
+# 12836 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12838,9 +12847,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_define_param_list_option = 
-# 765 "parser_cocci_menhir.mly"
+# 794 "parser_cocci_menhir.mly"
                            ( Ast0.wrap(Ast0.DOTS([])) )
-# 12844 "parser_cocci_menhir.ml"
+# 12853 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12862,9 +12871,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_define_param_list_start = 
-# 747 "parser_cocci_menhir.mly"
+# 776 "parser_cocci_menhir.mly"
           ( [Ast0.wrap(Ast0.DParam _1)] )
-# 12868 "parser_cocci_menhir.ml"
+# 12877 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12894,18 +12903,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_define_param_list_start = Obj.magic _3 in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12900 "parser_cocci_menhir.ml"
+# 12909 "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"
+# 778 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.DParam _1)::
        Ast0.wrap(Ast0.DPComma(P.clt2mcode "," _2))::_3 )
-# 12909 "parser_cocci_menhir.ml"
+# 12918 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12930,17 +12939,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let r : 'tv_list_dp_comma_args_TEllipsis__ = Obj.magic r in
         let d : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 12936 "parser_cocci_menhir.ml"
+# 12945 "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"
+# 781 "parser_cocci_menhir.mly"
       ( (P.mkdpdots "..." d)::
        (List.concat (List.map (function x -> x (P.mkdpdots "...")) r)) )
-# 12944 "parser_cocci_menhir.ml"
+# 12953 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -12959,14 +12968,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 82 "parser_cocci_menhir.mly"
+# 104 "parser_cocci_menhir.mly"
        (Data.clt * token)
-# 12965 "parser_cocci_menhir.ml"
+# 12974 "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"
+# 728 "parser_cocci_menhir.mly"
     ( let (clt,ident) = _1 in
       function body ->
        Ast0.wrap
@@ -12983,7 +12992,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                       "unexpected name for a #define")),
              Ast0.wrap Ast0.NoParams,
              body)) )
-# 12987 "parser_cocci_menhir.ml"
+# 12996 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13012,20 +13021,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13018 "parser_cocci_menhir.ml"
+# 13027 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_define_param_list_option = Obj.magic _2 in
         let _1 : (
-# 83 "parser_cocci_menhir.mly"
+# 105 "parser_cocci_menhir.mly"
        (Data.clt * token * int * int)
-# 13024 "parser_cocci_menhir.ml"
+# 13033 "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"
+# 745 "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
@@ -13046,7 +13055,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)) )
-# 13050 "parser_cocci_menhir.ml"
+# 13059 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13068,9 +13077,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_dep = 
-# 226 "parser_cocci_menhir.mly"
+# 248 "parser_cocci_menhir.mly"
                    ( _1 )
-# 13074 "parser_cocci_menhir.ml"
+# 13083 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13102,9 +13111,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_dep = 
-# 227 "parser_cocci_menhir.mly"
+# 249 "parser_cocci_menhir.mly"
                    ( Ast.AndDep(_1, _3) )
-# 13108 "parser_cocci_menhir.ml"
+# 13117 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13136,9 +13145,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_dep = 
-# 228 "parser_cocci_menhir.mly"
+# 250 "parser_cocci_menhir.mly"
                    ( Ast.OrDep (_1, _3) )
-# 13142 "parser_cocci_menhir.ml"
+# 13151 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13153,9 +13162,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 = 
-# 222 "parser_cocci_menhir.mly"
+# 244 "parser_cocci_menhir.mly"
                            ( Ast.NoDep )
-# 13159 "parser_cocci_menhir.ml"
+# 13168 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13185,9 +13194,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_parents_ in
         let _v : 'tv_depends = 
-# 223 "parser_cocci_menhir.mly"
+# 245 "parser_cocci_menhir.mly"
                            ( parents )
-# 13191 "parser_cocci_menhir.ml"
+# 13200 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13212,16 +13221,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_ident = Obj.magic _2 in
         let _1 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13218 "parser_cocci_menhir.ml"
+# 13227 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_designator = 
-# 1124 "parser_cocci_menhir.mly"
+# 1153 "parser_cocci_menhir.mly"
      ( Ast0.DesignatorField (P.clt2mcode "." _1,_2) )
-# 13225 "parser_cocci_menhir.ml"
+# 13234 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13250,22 +13259,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 103 "parser_cocci_menhir.mly"
+# 125 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13256 "parser_cocci_menhir.ml"
+# 13265 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 103 "parser_cocci_menhir.mly"
+# 125 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13262 "parser_cocci_menhir.ml"
+# 13271 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_designator = 
-# 1126 "parser_cocci_menhir.mly"
+# 1155 "parser_cocci_menhir.mly"
      ( Ast0.DesignatorIndex (P.clt2mcode "[" _1,_2,P.clt2mcode "]" _3) )
-# 13269 "parser_cocci_menhir.ml"
+# 13278 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13304,29 +13313,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _5 : (
-# 103 "parser_cocci_menhir.mly"
+# 125 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13310 "parser_cocci_menhir.ml"
+# 13319 "parser_cocci_menhir.ml"
         ) = Obj.magic _5 in
         let _4 : 'tv_eexpr = Obj.magic _4 in
         let _3 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13316 "parser_cocci_menhir.ml"
+# 13325 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 103 "parser_cocci_menhir.mly"
+# 125 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13322 "parser_cocci_menhir.ml"
+# 13331 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__5_ in
         let _v : 'tv_designator = 
-# 1128 "parser_cocci_menhir.mly"
+# 1157 "parser_cocci_menhir.mly"
      ( Ast0.DesignatorRange (P.clt2mcode "[" _1,_2,P.clt2mcode "..." _3,
                             _4,P.clt2mcode "]" _5) )
-# 13330 "parser_cocci_menhir.ml"
+# 13339 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13348,9 +13357,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_dexpr = 
-# 1227 "parser_cocci_menhir.mly"
+# 1256 "parser_cocci_menhir.mly"
                                           ( _1 )
-# 13354 "parser_cocci_menhir.ml"
+# 13363 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13376,9 +13385,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_disable = 
-# 241 "parser_cocci_menhir.mly"
+# 263 "parser_cocci_menhir.mly"
                                                       ( List.map P.id2name _2 )
-# 13382 "parser_cocci_menhir.ml"
+# 13391 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13397,16 +13406,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13403 "parser_cocci_menhir.ml"
+# 13412 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_dot_expressions = 
-# 1236 "parser_cocci_menhir.mly"
+# 1265 "parser_cocci_menhir.mly"
             ( Ast0.wrap(Ast0.Edots(P.clt2mcode "..." _1,None)) )
-# 13410 "parser_cocci_menhir.ml"
+# 13419 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13428,9 +13437,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_dot_expressions = 
-# 1237 "parser_cocci_menhir.mly"
+# 1266 "parser_cocci_menhir.mly"
                    ( _1 )
-# 13434 "parser_cocci_menhir.ml"
+# 13443 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13454,22 +13463,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let d : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13460 "parser_cocci_menhir.ml"
+# 13469 "parser_cocci_menhir.ml"
         ) = Obj.magic d in
         let c : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13465 "parser_cocci_menhir.ml"
+# 13474 "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"
+# 786 "parser_cocci_menhir.mly"
     ( function dot_builder ->
       [Ast0.wrap(Ast0.DPComma(P.clt2mcode "," c)); dot_builder d] )
-# 13473 "parser_cocci_menhir.ml"
+# 13482 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13494,18 +13503,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_ident = Obj.magic _2 in
         let _1 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13500 "parser_cocci_menhir.ml"
+# 13509 "parser_cocci_menhir.ml"
         ) = 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"
+# 789 "parser_cocci_menhir.mly"
     ( function dot_builder ->
       [Ast0.wrap(Ast0.DPComma(P.clt2mcode "," _1));
        Ast0.wrap(Ast0.DParam _2)] )
-# 13509 "parser_cocci_menhir.ml"
+# 13518 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13524,16 +13533,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let d : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13530 "parser_cocci_menhir.ml"
+# 13539 "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_ = 
-# 1925 "parser_cocci_menhir.mly"
+# 1994 "parser_cocci_menhir.mly"
                                                   ( (d,None) )
-# 13537 "parser_cocci_menhir.ml"
+# 13546 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13570,16 +13579,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let w : 'tv_eexpr = Obj.magic w in
         let d : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13576 "parser_cocci_menhir.ml"
+# 13585 "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_ = 
-# 1926 "parser_cocci_menhir.mly"
+# 1995 "parser_cocci_menhir.mly"
                                                   ( (d,Some w) )
-# 13583 "parser_cocci_menhir.ml"
+# 13592 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13598,16 +13607,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let d : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13604 "parser_cocci_menhir.ml"
+# 13613 "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_ = 
-# 1925 "parser_cocci_menhir.mly"
+# 1994 "parser_cocci_menhir.mly"
                                                   ( (d,None) )
-# 13611 "parser_cocci_menhir.ml"
+# 13620 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13644,16 +13653,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let w : 'tv_initialize = Obj.magic w in
         let d : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13650 "parser_cocci_menhir.ml"
+# 13659 "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_ = 
-# 1926 "parser_cocci_menhir.mly"
+# 1995 "parser_cocci_menhir.mly"
                                                   ( (d,Some w) )
-# 13657 "parser_cocci_menhir.ml"
+# 13666 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13672,16 +13681,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let d : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13678 "parser_cocci_menhir.ml"
+# 13687 "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_ = 
-# 1925 "parser_cocci_menhir.mly"
+# 1994 "parser_cocci_menhir.mly"
                                                   ( (d,None) )
-# 13685 "parser_cocci_menhir.ml"
+# 13694 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13718,16 +13727,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let w : 'tv_struct_decl = Obj.magic w in
         let d : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13724 "parser_cocci_menhir.ml"
+# 13733 "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_ = 
-# 1926 "parser_cocci_menhir.mly"
+# 1995 "parser_cocci_menhir.mly"
                                                   ( (d,Some w) )
-# 13731 "parser_cocci_menhir.ml"
+# 13740 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13749,9 +13758,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_eexpr = 
-# 1225 "parser_cocci_menhir.mly"
+# 1254 "parser_cocci_menhir.mly"
                                          ( _1 )
-# 13755 "parser_cocci_menhir.ml"
+# 13764 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13773,7 +13782,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_eexpr_list = 
-# 1869 "parser_cocci_menhir.mly"
+# 1938 "parser_cocci_menhir.mly"
      (let circle x =
        match Ast0.unwrap x with Ast0.Ecircles(_) -> true | _ -> false in
      let star x =
@@ -13784,7 +13793,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
        if List.exists star _1
        then Ast0.wrap(Ast0.STARS(_1))
        else Ast0.wrap(Ast0.DOTS(_1)) )
-# 13788 "parser_cocci_menhir.ml"
+# 13797 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13806,9 +13815,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_eexpr_list_option = 
-# 1908 "parser_cocci_menhir.mly"
+# 1977 "parser_cocci_menhir.mly"
                               ( _1 )
-# 13812 "parser_cocci_menhir.ml"
+# 13821 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13823,9 +13832,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_eexpr_list_option = 
-# 1909 "parser_cocci_menhir.mly"
+# 1978 "parser_cocci_menhir.mly"
                            ( Ast0.wrap(Ast0.DOTS([])) )
-# 13829 "parser_cocci_menhir.ml"
+# 13838 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13847,9 +13856,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_eexpr_list_start = 
-# 1896 "parser_cocci_menhir.mly"
+# 1965 "parser_cocci_menhir.mly"
           ( [_1] )
-# 13853 "parser_cocci_menhir.ml"
+# 13862 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13879,17 +13888,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_eexpr_list_start = Obj.magic _3 in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 13885 "parser_cocci_menhir.ml"
+# 13894 "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_eexpr_list_start = 
-# 1898 "parser_cocci_menhir.mly"
+# 1967 "parser_cocci_menhir.mly"
       ( _1::Ast0.wrap(Ast0.EComma(P.clt2mcode "," _2))::_3 )
-# 13893 "parser_cocci_menhir.ml"
+# 13902 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13909,9 +13918,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_exists = 
-# 244 "parser_cocci_menhir.mly"
+# 266 "parser_cocci_menhir.mly"
           ( Ast.Exists )
-# 13915 "parser_cocci_menhir.ml"
+# 13924 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13931,9 +13940,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_exists = 
-# 245 "parser_cocci_menhir.mly"
+# 267 "parser_cocci_menhir.mly"
           ( Ast.Forall )
-# 13937 "parser_cocci_menhir.ml"
+# 13946 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13948,9 +13957,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 = 
-# 246 "parser_cocci_menhir.mly"
+# 268 "parser_cocci_menhir.mly"
           ( Ast.Undetermined )
-# 13954 "parser_cocci_menhir.ml"
+# 13963 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13972,9 +13981,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_expr = 
-# 1223 "parser_cocci_menhir.mly"
+# 1252 "parser_cocci_menhir.mly"
                                 ( _1 )
-# 13978 "parser_cocci_menhir.ml"
+# 13987 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -13996,9 +14005,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_r_ in
         let _endpos = _endpos_r_ in
         let _v : 'tv_expr_dots_TEllipsis_ = 
-# 1405 "parser_cocci_menhir.mly"
+# 1434 "parser_cocci_menhir.mly"
                                                        ( r )
-# 14002 "parser_cocci_menhir.ml"
+# 14011 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14013,9 +14022,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 = 
-# 217 "parser_cocci_menhir.mly"
+# 239 "parser_cocci_menhir.mly"
                                                   ( () )
-# 14019 "parser_cocci_menhir.ml"
+# 14028 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14038,16 +14047,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let parent : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 14044 "parser_cocci_menhir.ml"
+# 14053 "parser_cocci_menhir.ml"
         ) = Obj.magic parent in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_parent_ in
         let _v : 'tv_extends = 
-# 219 "parser_cocci_menhir.mly"
+# 241 "parser_cocci_menhir.mly"
     ( !Data.install_bindings (parent) )
-# 14051 "parser_cocci_menhir.ml"
+# 14060 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14071,23 +14080,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 84 "parser_cocci_menhir.mly"
+# 106 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 14077 "parser_cocci_menhir.ml"
+# 14086 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 84 "parser_cocci_menhir.mly"
+# 106 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 14082 "parser_cocci_menhir.ml"
+# 14091 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_filespec = 
-# 656 "parser_cocci_menhir.mly"
+# 683 "parser_cocci_menhir.mly"
     ( [Ast0.wrap
          (Ast0.FILEINFO(P.id2mcode _1,
                         P.id2mcode _2))] )
-# 14091 "parser_cocci_menhir.ml"
+# 14100 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14102,9 +14111,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"
+# 822 "parser_cocci_menhir.mly"
                 ( [] )
-# 14108 "parser_cocci_menhir.ml"
+# 14117 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14132,13 +14141,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"
+# 824 "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 )
-# 14142 "parser_cocci_menhir.ml"
+# 14151 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14166,9 +14175,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"
+# 829 "parser_cocci_menhir.mly"
                         ( (Ast0.FType(t))::r )
-# 14172 "parser_cocci_menhir.ml"
+# 14181 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14193,19 +14202,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_fninfo = Obj.magic _2 in
         let _1 : (
-# 53 "parser_cocci_menhir.mly"
+# 75 "parser_cocci_menhir.mly"
       (Data.clt)
-# 14199 "parser_cocci_menhir.ml"
+# 14208 "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"
+# 831 "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 )
-# 14209 "parser_cocci_menhir.ml"
+# 14218 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14230,19 +14239,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_fninfo = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 77 "parser_cocci_menhir.mly"
       (string * Data.clt)
-# 14236 "parser_cocci_menhir.ml"
+# 14245 "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"
+# 836 "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 )
-# 14246 "parser_cocci_menhir.ml"
+# 14255 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14257,9 +14266,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"
+# 842 "parser_cocci_menhir.mly"
                 ( [] )
-# 14263 "parser_cocci_menhir.ml"
+# 14272 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14287,13 +14296,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"
+# 844 "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 )
-# 14297 "parser_cocci_menhir.ml"
+# 14306 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14318,19 +14327,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_fninfo_nt = Obj.magic _2 in
         let _1 : (
-# 53 "parser_cocci_menhir.mly"
+# 75 "parser_cocci_menhir.mly"
       (Data.clt)
-# 14324 "parser_cocci_menhir.ml"
+# 14333 "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"
+# 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 )
-# 14334 "parser_cocci_menhir.ml"
+# 14343 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14355,19 +14364,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_fninfo_nt = Obj.magic _2 in
         let _1 : (
-# 55 "parser_cocci_menhir.mly"
+# 77 "parser_cocci_menhir.mly"
       (string * Data.clt)
-# 14361 "parser_cocci_menhir.ml"
+# 14370 "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"
+# 855 "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 )
-# 14371 "parser_cocci_menhir.ml"
+# 14380 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14382,9 +14391,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 = 
-# 1817 "parser_cocci_menhir.mly"
+# 1886 "parser_cocci_menhir.mly"
                                ([])
-# 14388 "parser_cocci_menhir.ml"
+# 14397 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14410,9 +14419,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_dots = 
-# 1818 "parser_cocci_menhir.mly"
+# 1887 "parser_cocci_menhir.mly"
                                (_2)
-# 14416 "parser_cocci_menhir.ml"
+# 14425 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14440,9 +14449,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_dots = 
-# 1819 "parser_cocci_menhir.mly"
+# 1888 "parser_cocci_menhir.mly"
                                (Ast0.wrap(Ast0.Exp(_1))::_2)
-# 14446 "parser_cocci_menhir.ml"
+# 14455 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14470,9 +14479,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_dots = 
-# 1820 "parser_cocci_menhir.mly"
+# 1889 "parser_cocci_menhir.mly"
                                     (_1@_2)
-# 14476 "parser_cocci_menhir.ml"
+# 14485 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14487,9 +14496,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 = 
-# 1827 "parser_cocci_menhir.mly"
+# 1896 "parser_cocci_menhir.mly"
                                ([])
-# 14493 "parser_cocci_menhir.ml"
+# 14502 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14515,9 +14524,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_dots_or = 
-# 1828 "parser_cocci_menhir.mly"
+# 1897 "parser_cocci_menhir.mly"
                                (_2)
-# 14521 "parser_cocci_menhir.ml"
+# 14530 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14545,9 +14554,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_dots_or = 
-# 1829 "parser_cocci_menhir.mly"
+# 1898 "parser_cocci_menhir.mly"
                                (Ast0.wrap(Ast0.Exp(_1))::_2)
-# 14551 "parser_cocci_menhir.ml"
+# 14560 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14575,9 +14584,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_dots_or = 
-# 1830 "parser_cocci_menhir.mly"
+# 1899 "parser_cocci_menhir.mly"
                                     (_1@_2)
-# 14581 "parser_cocci_menhir.ml"
+# 14590 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14605,9 +14614,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_exp = 
-# 1823 "parser_cocci_menhir.mly"
+# 1892 "parser_cocci_menhir.mly"
                                (_1::_2)
-# 14611 "parser_cocci_menhir.ml"
+# 14620 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14622,9 +14631,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 = 
-# 1833 "parser_cocci_menhir.mly"
+# 1902 "parser_cocci_menhir.mly"
                                ([])
-# 14628 "parser_cocci_menhir.ml"
+# 14637 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14652,9 +14661,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_exp_or = 
-# 1834 "parser_cocci_menhir.mly"
+# 1903 "parser_cocci_menhir.mly"
                                (_1::_2)
-# 14658 "parser_cocci_menhir.ml"
+# 14667 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14669,9 +14678,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 = 
-# 1812 "parser_cocci_menhir.mly"
+# 1881 "parser_cocci_menhir.mly"
                                ([])
-# 14675 "parser_cocci_menhir.ml"
+# 14684 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14699,9 +14708,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_stm = 
-# 1813 "parser_cocci_menhir.mly"
+# 1882 "parser_cocci_menhir.mly"
                                (_1::_2)
-# 14705 "parser_cocci_menhir.ml"
+# 14714 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14729,9 +14738,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_fun_after_stm = 
-# 1814 "parser_cocci_menhir.mly"
+# 1883 "parser_cocci_menhir.mly"
                                (_1@_2)
-# 14735 "parser_cocci_menhir.ml"
+# 14744 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14753,9 +14762,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_fun_start = 
-# 1809 "parser_cocci_menhir.mly"
+# 1878 "parser_cocci_menhir.mly"
                  ( Ast0.wrap(Ast0.DOTS(_1)) )
-# 14759 "parser_cocci_menhir.ml"
+# 14768 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14777,9 +14786,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_func_ident = 
-# 1607 "parser_cocci_menhir.mly"
+# 1676 "parser_cocci_menhir.mly"
          ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) )
-# 14783 "parser_cocci_menhir.ml"
+# 14792 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14798,17 +14807,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 62 "parser_cocci_menhir.mly"
+# 84 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 14804 "parser_cocci_menhir.ml"
+# 14813 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_func_ident = 
-# 1609 "parser_cocci_menhir.mly"
+# 1678 "parser_cocci_menhir.mly"
          ( let (nm,constraints,pure,clt) = _1 in
         Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) )
-# 14812 "parser_cocci_menhir.ml"
+# 14821 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14827,17 +14836,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 62 "parser_cocci_menhir.mly"
+# 84 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 14833 "parser_cocci_menhir.ml"
+# 14842 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_func_ident = 
-# 1612 "parser_cocci_menhir.mly"
+# 1681 "parser_cocci_menhir.mly"
          ( let (nm,constraints,pure,clt) = _1 in
         Ast0.wrap(Ast0.MetaFunc(P.clt2mcode nm clt,constraints,pure)) )
-# 14841 "parser_cocci_menhir.ml"
+# 14850 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14856,18 +14865,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 62 "parser_cocci_menhir.mly"
+# 84 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 14862 "parser_cocci_menhir.ml"
+# 14871 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_func_ident = 
-# 1615 "parser_cocci_menhir.mly"
+# 1684 "parser_cocci_menhir.mly"
   ( let (nm,constraints,pure,clt) = _1 in
         Ast0.wrap
           (Ast0.MetaLocalFunc(P.clt2mcode nm clt,constraints,pure)) )
-# 14871 "parser_cocci_menhir.ml"
+# 14880 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -14925,33 +14934,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rb : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 14931 "parser_cocci_menhir.ml"
+# 14940 "parser_cocci_menhir.ml"
         ) = Obj.magic rb in
         let b : 'tv_fun_start = Obj.magic b in
         let lb : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 14937 "parser_cocci_menhir.ml"
+# 14946 "parser_cocci_menhir.ml"
         ) = Obj.magic lb in
         let rp : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 14942 "parser_cocci_menhir.ml"
+# 14951 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let d : 'tv_decl_list_decl_ = Obj.magic d in
         let lp : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 14948 "parser_cocci_menhir.ml"
+# 14957 "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"
+# 813 "parser_cocci_menhir.mly"
       ( P.verify_parameter_declarations (Ast0.undots d);
        Ast0.wrap(Ast0.FunDecl((Ast0.default_info(),Ast0.context_befaft()),
                               f, i,
@@ -14959,7 +14968,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                               P.clt2mcode ")" rp,
                               P.clt2mcode "{" lb, b,
                               P.clt2mcode "}" rb)) )
-# 14963 "parser_cocci_menhir.ml"
+# 14972 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15003,20 +15012,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pt : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15009 "parser_cocci_menhir.ml"
+# 15018 "parser_cocci_menhir.ml"
         ) = Obj.magic pt in
         let rp : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15014 "parser_cocci_menhir.ml"
+# 15023 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in
         let lp : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15020 "parser_cocci_menhir.ml"
+# 15029 "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
@@ -15026,11 +15035,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 15030 "parser_cocci_menhir.ml"
+# 15039 "parser_cocci_menhir.ml"
           
         in
         
-# 772 "parser_cocci_menhir.mly"
+# 801 "parser_cocci_menhir.mly"
       ( Ast0.wrap
          (Ast0.UnInit
             (s,
@@ -15038,7 +15047,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                (Ast0.FunctionType(Some t,
                                   P.clt2mcode "(" lp, d, P.clt2mcode ")" rp)),
              id, P.clt2mcode ";" pt)) )
-# 15042 "parser_cocci_menhir.ml"
+# 15051 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15087,20 +15096,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pt : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15093 "parser_cocci_menhir.ml"
+# 15102 "parser_cocci_menhir.ml"
         ) = Obj.magic pt in
         let rp : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15098 "parser_cocci_menhir.ml"
+# 15107 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in
         let lp : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15104 "parser_cocci_menhir.ml"
+# 15113 "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
@@ -15112,11 +15121,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 15116 "parser_cocci_menhir.ml"
+# 15125 "parser_cocci_menhir.ml"
           
         in
         
-# 772 "parser_cocci_menhir.mly"
+# 801 "parser_cocci_menhir.mly"
       ( Ast0.wrap
          (Ast0.UnInit
             (s,
@@ -15124,7 +15133,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                (Ast0.FunctionType(Some t,
                                   P.clt2mcode "(" lp, d, P.clt2mcode ")" rp)),
              id, P.clt2mcode ";" pt)) )
-# 15128 "parser_cocci_menhir.ml"
+# 15137 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15146,9 +15155,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_ident = 
-# 1620 "parser_cocci_menhir.mly"
+# 1689 "parser_cocci_menhir.mly"
          ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) )
-# 15152 "parser_cocci_menhir.ml"
+# 15161 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15167,17 +15176,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 62 "parser_cocci_menhir.mly"
+# 84 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 15173 "parser_cocci_menhir.ml"
+# 15182 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_ident = 
-# 1622 "parser_cocci_menhir.mly"
+# 1691 "parser_cocci_menhir.mly"
          ( let (nm,constraints,pure,clt) = _1 in
          Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) )
-# 15181 "parser_cocci_menhir.ml"
+# 15190 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15199,9 +15208,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_i_ in
         let _endpos = _endpos_i_ in
         let _v : 'tv_ident_or_const = 
-# 1574 "parser_cocci_menhir.mly"
+# 1649 "parser_cocci_menhir.mly"
                     ( Ast0.wrap(Ast0.Ident(Ast0.wrap(Ast0.Id(P.id2mcode i)))) )
-# 15205 "parser_cocci_menhir.ml"
+# 15214 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15220,17 +15229,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 15226 "parser_cocci_menhir.ml"
+# 15235 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_ident_or_const = 
-# 1576 "parser_cocci_menhir.mly"
+# 1651 "parser_cocci_menhir.mly"
   ( let (x,clt) = _1 in
         Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) )
-# 15234 "parser_cocci_menhir.ml"
+# 15243 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15249,16 +15258,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 81 "parser_cocci_menhir.mly"
+# 103 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 15255 "parser_cocci_menhir.ml"
+# 15264 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_incl = 
-# 257 "parser_cocci_menhir.mly"
+# 279 "parser_cocci_menhir.mly"
                       ( let (x,_) = _1 in Data.Include(x) )
-# 15262 "parser_cocci_menhir.ml"
+# 15271 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15281,16 +15290,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 15287 "parser_cocci_menhir.ml"
+# 15296 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_incl = 
-# 258 "parser_cocci_menhir.mly"
+# 280 "parser_cocci_menhir.mly"
                       ( Data.Iso(Common.Left(P.id2name _2)) )
-# 15294 "parser_cocci_menhir.ml"
+# 15303 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15313,16 +15322,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 80 "parser_cocci_menhir.mly"
+# 102 "parser_cocci_menhir.mly"
        (string)
-# 15319 "parser_cocci_menhir.ml"
+# 15328 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_incl = 
-# 259 "parser_cocci_menhir.mly"
+# 281 "parser_cocci_menhir.mly"
                       ( Data.Iso(Common.Right _2) )
-# 15326 "parser_cocci_menhir.ml"
+# 15335 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15348,14 +15357,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_incl = 
-# 261 "parser_cocci_menhir.mly"
+# 283 "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) )
-# 15359 "parser_cocci_menhir.ml"
+# 15368 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15381,13 +15390,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 147 "parser_cocci_menhir.mly"
+# 169 "parser_cocci_menhir.mly"
       (Data.incl_iso list)
-# 15387 "parser_cocci_menhir.ml"
+# 15396 "parser_cocci_menhir.ml"
         ) = 
-# 253 "parser_cocci_menhir.mly"
+# 275 "parser_cocci_menhir.mly"
                        ( _1 )
-# 15391 "parser_cocci_menhir.ml"
+# 15400 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15413,13 +15422,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 147 "parser_cocci_menhir.mly"
+# 169 "parser_cocci_menhir.mly"
       (Data.incl_iso list)
-# 15419 "parser_cocci_menhir.ml"
+# 15428 "parser_cocci_menhir.ml"
         ) = 
-# 254 "parser_cocci_menhir.mly"
+# 276 "parser_cocci_menhir.mly"
                        ( _1 )
-# 15423 "parser_cocci_menhir.ml"
+# 15432 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15438,14 +15447,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 81 "parser_cocci_menhir.mly"
+# 103 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 15444 "parser_cocci_menhir.ml"
+# 15453 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_includes = 
-# 662 "parser_cocci_menhir.mly"
+# 689 "parser_cocci_menhir.mly"
     ( Ast0.wrap
              (Ast0.Include(P.clt2mcode "#include"
                              (P.drop_pos (P.drop_aft (P.id2clt _1))),
@@ -15456,7 +15465,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                            P.clt2mcode
                              (Ast.Local (Parse_aux.str2inc (P.id2name _1)))
                              (P.drop_bef clt))) )
-# 15460 "parser_cocci_menhir.ml"
+# 15469 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15475,14 +15484,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 81 "parser_cocci_menhir.mly"
+# 103 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 15481 "parser_cocci_menhir.ml"
+# 15490 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_includes = 
-# 673 "parser_cocci_menhir.mly"
+# 700 "parser_cocci_menhir.mly"
     ( Ast0.wrap
              (Ast0.Include(P.clt2mcode "#include"
                              (P.drop_pos (P.drop_aft (P.id2clt _1))),
@@ -15493,7 +15502,35 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                            P.clt2mcode
                              (Ast.NonLocal (Parse_aux.str2inc (P.id2name _1)))
                              (P.drop_bef clt))) )
-# 15497 "parser_cocci_menhir.ml"
+# 15506 "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 = d;
+            MenhirLib.EngineTypes.startp = _startpos_d_;
+            MenhirLib.EngineTypes.endp = _endpos_d_;
+            MenhirLib.EngineTypes.next = _menhir_stack;
+            };
+          } = _menhir_stack in
+        let d : 'tv_defineop = Obj.magic d in
+        let _startpos = _startpos_d_ in
+        let _endpos = _endpos__2_ in
+        let _v : 'tv_includes = 
+# 711 "parser_cocci_menhir.mly"
+    ( d (Ast0.wrap(Ast0.DOTS([]))) )
+# 15534 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15525,10 +15562,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"
+# 713 "parser_cocci_menhir.mly"
     ( let ty = Ast0.wrap(Ast0.TopExp(Ast0.wrap(Ast0.TypeExp(t)))) in
       d (Ast0.wrap(Ast0.DOTS([ty]))) )
-# 15532 "parser_cocci_menhir.ml"
+# 15569 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15560,7 +15597,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"
+# 716 "parser_cocci_menhir.mly"
     ( let body =
        match b with
          [e] ->
@@ -15570,7 +15607,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
            | _ -> b)
        | _ -> b in
       _1 (Ast0.wrap(Ast0.DOTS(body))) )
-# 15574 "parser_cocci_menhir.ml"
+# 15611 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15592,9 +15629,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_initialize = 
-# 1095 "parser_cocci_menhir.mly"
+# 1124 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.InitExpr(_1)) )
-# 15598 "parser_cocci_menhir.ml"
+# 15635 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15623,22 +15660,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15629 "parser_cocci_menhir.ml"
+# 15666 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_initialize_list = Obj.magic _2 in
         let _1 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15635 "parser_cocci_menhir.ml"
+# 15672 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_initialize = 
-# 1097 "parser_cocci_menhir.mly"
+# 1126 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,_2,P.clt2mcode "}" _3)) )
-# 15642 "parser_cocci_menhir.ml"
+# 15679 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15662,23 +15699,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15668 "parser_cocci_menhir.ml"
+# 15705 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15673 "parser_cocci_menhir.ml"
+# 15710 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_initialize = 
-# 1099 "parser_cocci_menhir.mly"
+# 1128 "parser_cocci_menhir.mly"
       ( Ast0.wrap
          (Ast0.InitList(P.clt2mcode "{" _1,Ast0.wrap(Ast0.DOTS []),
                         P.clt2mcode "}" _2)) )
-# 15682 "parser_cocci_menhir.ml"
+# 15719 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15697,17 +15734,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 66 "parser_cocci_menhir.mly"
+# 88 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 15703 "parser_cocci_menhir.ml"
+# 15740 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_initialize = 
-# 1103 "parser_cocci_menhir.mly"
+# 1132 "parser_cocci_menhir.mly"
       (let (nm,pure,clt) = _1 in
       Ast0.wrap(Ast0.MetaInit(P.clt2mcode nm clt,pure)) )
-# 15711 "parser_cocci_menhir.ml"
+# 15748 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15729,9 +15766,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_initialize2 = 
-# 1109 "parser_cocci_menhir.mly"
+# 1138 "parser_cocci_menhir.mly"
                             ( Ast0.wrap(Ast0.InitExpr(_1)) )
-# 15735 "parser_cocci_menhir.ml"
+# 15772 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15760,22 +15797,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15766 "parser_cocci_menhir.ml"
+# 15803 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_initialize_list = Obj.magic _2 in
         let _1 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15772 "parser_cocci_menhir.ml"
+# 15809 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_initialize2 = 
-# 1111 "parser_cocci_menhir.mly"
+# 1140 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,_2,P.clt2mcode "}" _3)) )
-# 15779 "parser_cocci_menhir.ml"
+# 15816 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15799,23 +15836,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15805 "parser_cocci_menhir.ml"
+# 15842 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15810 "parser_cocci_menhir.ml"
+# 15847 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_initialize2 = 
-# 1113 "parser_cocci_menhir.mly"
+# 1142 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.InitList(P.clt2mcode "{" _1,Ast0.wrap(Ast0.DOTS []),
                       P.clt2mcode "}" _2)) )
-# 15819 "parser_cocci_menhir.ml"
+# 15856 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15845,17 +15882,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_initialize2 = Obj.magic _3 in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15851 "parser_cocci_menhir.ml"
+# 15888 "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 = 
-# 1118 "parser_cocci_menhir.mly"
+# 1147 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.InitGccExt(_1,P.clt2mcode "=" _2,_3)) )
-# 15859 "parser_cocci_menhir.ml"
+# 15896 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15885,17 +15922,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_initialize2 = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15891 "parser_cocci_menhir.ml"
+# 15928 "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 = 
-# 1120 "parser_cocci_menhir.mly"
+# 1149 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.InitGccName(_1,P.clt2mcode ":" _2,_3)) )
-# 15899 "parser_cocci_menhir.ml"
+# 15936 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15917,9 +15954,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_initialize_list = 
-# 1132 "parser_cocci_menhir.mly"
+# 1161 "parser_cocci_menhir.mly"
                          ( Ast0.wrap(Ast0.DOTS(_1)) )
-# 15923 "parser_cocci_menhir.ml"
+# 15960 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15943,17 +15980,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15949 "parser_cocci_menhir.ml"
+# 15986 "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 = 
-# 1135 "parser_cocci_menhir.mly"
+# 1164 "parser_cocci_menhir.mly"
                      ( [_1;Ast0.wrap(Ast0.IComma(P.clt2mcode "," _2))] )
-# 15957 "parser_cocci_menhir.ml"
+# 15994 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -15983,17 +16020,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_initialize_list_start = Obj.magic _3 in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 15989 "parser_cocci_menhir.ml"
+# 16026 "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 = 
-# 1137 "parser_cocci_menhir.mly"
+# 1166 "parser_cocci_menhir.mly"
     ( _1::Ast0.wrap(Ast0.IComma(P.clt2mcode "," _2))::_3 )
-# 15997 "parser_cocci_menhir.ml"
+# 16034 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16021,10 +16058,10 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_d_ in
         let _endpos = _endpos_r_ in
         let _v : 'tv_initialize_list_start = 
-# 1140 "parser_cocci_menhir.mly"
+# 1169 "parser_cocci_menhir.mly"
     ( (P.mkidots "..." d)::
       (List.concat(List.map (function x -> x (P.mkidots "...")) r)) )
-# 16028 "parser_cocci_menhir.ml"
+# 16065 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16044,9 +16081,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_invalid = 
-# 1233 "parser_cocci_menhir.mly"
+# 1262 "parser_cocci_menhir.mly"
            ( raise (Semantic_cocci.Semantic "not matchable") )
-# 16050 "parser_cocci_menhir.ml"
+# 16087 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16061,9 +16098,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 = 
-# 249 "parser_cocci_menhir.mly"
+# 271 "parser_cocci_menhir.mly"
               ( false )
-# 16067 "parser_cocci_menhir.ml"
+# 16104 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16083,9 +16120,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_is_expression = 
-# 250 "parser_cocci_menhir.mly"
+# 272 "parser_cocci_menhir.mly"
               ( true )
-# 16089 "parser_cocci_menhir.ml"
+# 16126 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16111,9 +16148,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_ctype_ = 
-# 1981 "parser_cocci_menhir.mly"
+# 2050 "parser_cocci_menhir.mly"
                 ( Common.Left t )
-# 16117 "parser_cocci_menhir.ml"
+# 16154 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16139,9 +16176,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_ctype_ = 
-# 1982 "parser_cocci_menhir.mly"
+# 2051 "parser_cocci_menhir.mly"
                      ( Common.Right t )
-# 16145 "parser_cocci_menhir.ml"
+# 16182 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16167,9 +16204,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_decl_var_ = 
-# 1981 "parser_cocci_menhir.mly"
+# 2050 "parser_cocci_menhir.mly"
                 ( Common.Left t )
-# 16173 "parser_cocci_menhir.ml"
+# 16210 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16195,9 +16232,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_decl_var_ = 
-# 1982 "parser_cocci_menhir.mly"
+# 2051 "parser_cocci_menhir.mly"
                      ( Common.Right t )
-# 16201 "parser_cocci_menhir.ml"
+# 16238 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16223,9 +16260,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_eexpr_ = 
-# 1981 "parser_cocci_menhir.mly"
+# 2050 "parser_cocci_menhir.mly"
                 ( Common.Left t )
-# 16229 "parser_cocci_menhir.ml"
+# 16266 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16251,9 +16288,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_eexpr_ = 
-# 1982 "parser_cocci_menhir.mly"
+# 2051 "parser_cocci_menhir.mly"
                      ( Common.Right t )
-# 16257 "parser_cocci_menhir.ml"
+# 16294 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16279,9 +16316,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_nest_start_ = 
-# 1981 "parser_cocci_menhir.mly"
+# 2050 "parser_cocci_menhir.mly"
                 ( Common.Left t )
-# 16285 "parser_cocci_menhir.ml"
+# 16322 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16307,9 +16344,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_nest_start_ = 
-# 1982 "parser_cocci_menhir.mly"
+# 2051 "parser_cocci_menhir.mly"
                      ( Common.Right t )
-# 16313 "parser_cocci_menhir.ml"
+# 16350 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16335,9 +16372,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_single_statement_ = 
-# 1981 "parser_cocci_menhir.mly"
+# 2050 "parser_cocci_menhir.mly"
                 ( Common.Left t )
-# 16341 "parser_cocci_menhir.ml"
+# 16378 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16363,9 +16400,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_iso_single_statement_ = 
-# 1982 "parser_cocci_menhir.mly"
+# 2051 "parser_cocci_menhir.mly"
                      ( Common.Right t )
-# 16369 "parser_cocci_menhir.ml"
+# 16406 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16401,13 +16438,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 163 "parser_cocci_menhir.mly"
+# 185 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 16407 "parser_cocci_menhir.ml"
+# 16444 "parser_cocci_menhir.ml"
         ) = 
-# 1949 "parser_cocci_menhir.mly"
+# 2018 "parser_cocci_menhir.mly"
     ( let fn x = Ast0.ExprTag x in P.iso_adjust fn fn e1 el )
-# 16411 "parser_cocci_menhir.ml"
+# 16448 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16443,13 +16480,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 163 "parser_cocci_menhir.mly"
+# 185 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 16449 "parser_cocci_menhir.ml"
+# 16486 "parser_cocci_menhir.ml"
         ) = 
-# 1951 "parser_cocci_menhir.mly"
+# 2020 "parser_cocci_menhir.mly"
     ( let fn x = Ast0.ArgExprTag x in P.iso_adjust fn fn e1 el )
-# 16453 "parser_cocci_menhir.ml"
+# 16490 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16485,13 +16522,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 163 "parser_cocci_menhir.mly"
+# 185 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 16491 "parser_cocci_menhir.ml"
+# 16528 "parser_cocci_menhir.ml"
         ) = 
-# 1953 "parser_cocci_menhir.mly"
+# 2022 "parser_cocci_menhir.mly"
     ( let fn x = Ast0.TestExprTag x in P.iso_adjust fn fn e1 el )
-# 16495 "parser_cocci_menhir.ml"
+# 16532 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16527,15 +16564,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 163 "parser_cocci_menhir.mly"
+# 185 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 16533 "parser_cocci_menhir.ml"
+# 16570 "parser_cocci_menhir.ml"
         ) = 
-# 1955 "parser_cocci_menhir.mly"
+# 2024 "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 )
-# 16539 "parser_cocci_menhir.ml"
+# 16576 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16571,13 +16608,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 163 "parser_cocci_menhir.mly"
+# 185 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 16577 "parser_cocci_menhir.ml"
+# 16614 "parser_cocci_menhir.ml"
         ) = 
-# 1959 "parser_cocci_menhir.mly"
+# 2028 "parser_cocci_menhir.mly"
     ( let fn x = Ast0.StmtTag x in P.iso_adjust fn fn s1 sl )
-# 16581 "parser_cocci_menhir.ml"
+# 16618 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16613,13 +16650,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 163 "parser_cocci_menhir.mly"
+# 185 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 16619 "parser_cocci_menhir.ml"
+# 16656 "parser_cocci_menhir.ml"
         ) = 
-# 1961 "parser_cocci_menhir.mly"
+# 2030 "parser_cocci_menhir.mly"
     ( let fn x = Ast0.TypeCTag x in P.iso_adjust fn fn t1 tl )
-# 16623 "parser_cocci_menhir.ml"
+# 16660 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16655,13 +16692,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 163 "parser_cocci_menhir.mly"
+# 185 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 16661 "parser_cocci_menhir.ml"
+# 16698 "parser_cocci_menhir.ml"
         ) = 
-# 1963 "parser_cocci_menhir.mly"
+# 2032 "parser_cocci_menhir.mly"
     ( let fn x = Ast0.DotsStmtTag x in P.iso_adjust fn fn e1 el )
-# 16665 "parser_cocci_menhir.ml"
+# 16702 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16697,11 +16734,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : (
-# 163 "parser_cocci_menhir.mly"
+# 185 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 16703 "parser_cocci_menhir.ml"
+# 16740 "parser_cocci_menhir.ml"
         ) = 
-# 1965 "parser_cocci_menhir.mly"
+# 2034 "parser_cocci_menhir.mly"
     ( let check_one = function
        [x] -> x
       | _ ->
@@ -16716,7 +16753,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 )
-# 16720 "parser_cocci_menhir.ml"
+# 16757 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16738,13 +16775,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_m_ in
         let _endpos = _endpos_m_ in
         let _v : (
-# 166 "parser_cocci_menhir.mly"
+# 188 "parser_cocci_menhir.mly"
       ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list)
-# 16744 "parser_cocci_menhir.ml"
+# 16781 "parser_cocci_menhir.ml"
         ) = 
-# 183 "parser_cocci_menhir.mly"
+# 205 "parser_cocci_menhir.mly"
                          ( m "" )
-# 16748 "parser_cocci_menhir.ml"
+# 16785 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16770,13 +16807,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_nm_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 150 "parser_cocci_menhir.mly"
+# 172 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 16776 "parser_cocci_menhir.ml"
+# 16813 "parser_cocci_menhir.ml"
         ) = 
-# 198 "parser_cocci_menhir.mly"
+# 220 "parser_cocci_menhir.mly"
                       ( P.make_iso_rule_name_result (P.id2name nm) )
-# 16780 "parser_cocci_menhir.ml"
+# 16817 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16795,16 +16832,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 16801 "parser_cocci_menhir.ml"
+# 16838 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_iter_ident = 
-# 1634 "parser_cocci_menhir.mly"
+# 1703 "parser_cocci_menhir.mly"
          ( Ast0.wrap(Ast0.Id(P.id2mcode _1)) )
-# 16808 "parser_cocci_menhir.ml"
+# 16845 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16823,17 +16860,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 63 "parser_cocci_menhir.mly"
+# 85 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 16829 "parser_cocci_menhir.ml"
+# 16866 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_iter_ident = 
-# 1636 "parser_cocci_menhir.mly"
+# 1705 "parser_cocci_menhir.mly"
          ( let (nm,constraints,pure,clt) = _1 in
          Ast0.wrap(Ast0.MetaId(P.clt2mcode nm clt,constraints,pure)) )
-# 16837 "parser_cocci_menhir.ml"
+# 16874 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16850,7 +16887,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_TMul_ = 
 # 114 "standard.mly"
     ( [] )
-# 16854 "parser_cocci_menhir.ml"
+# 16891 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16875,16 +16912,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let xs : 'tv_list_TMul_ = Obj.magic xs in
         let x : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 16881 "parser_cocci_menhir.ml"
+# 16918 "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 )
-# 16888 "parser_cocci_menhir.ml"
+# 16925 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16901,7 +16938,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_array_dec_ = 
 # 114 "standard.mly"
     ( [] )
-# 16905 "parser_cocci_menhir.ml"
+# 16942 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16931,7 +16968,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_array_dec_ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 16935 "parser_cocci_menhir.ml"
+# 16972 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16948,7 +16985,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_case_line_ = 
 # 114 "standard.mly"
     ( [] )
-# 16952 "parser_cocci_menhir.ml"
+# 16989 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16978,7 +17015,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_case_line_ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 16982 "parser_cocci_menhir.ml"
+# 17019 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -16995,7 +17032,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_comma_decls_TEllipsis_decl__ = 
 # 114 "standard.mly"
     ( [] )
-# 16999 "parser_cocci_menhir.ml"
+# 17036 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17025,7 +17062,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_comma_decls_TEllipsis_decl__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17029 "parser_cocci_menhir.ml"
+# 17066 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17042,7 +17079,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_comma_decls_TEllipsis_name_opt_decl__ = 
 # 114 "standard.mly"
     ( [] )
-# 17046 "parser_cocci_menhir.ml"
+# 17083 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17072,7 +17109,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_comma_decls_TEllipsis_name_opt_decl__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17076 "parser_cocci_menhir.ml"
+# 17113 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17089,7 +17126,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_decl_var_ = 
 # 114 "standard.mly"
     ( [] )
-# 17093 "parser_cocci_menhir.ml"
+# 17130 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17119,7 +17156,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_decl_var_ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17123 "parser_cocci_menhir.ml"
+# 17160 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17136,7 +17173,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_designator_ = 
 # 114 "standard.mly"
     ( [] )
-# 17140 "parser_cocci_menhir.ml"
+# 17177 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17166,7 +17203,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_designator_ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17170 "parser_cocci_menhir.ml"
+# 17207 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17183,7 +17220,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_dp_comma_args_TEllipsis__ = 
 # 114 "standard.mly"
     ( [] )
-# 17187 "parser_cocci_menhir.ml"
+# 17224 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17213,7 +17250,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_dp_comma_args_TEllipsis__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17217 "parser_cocci_menhir.ml"
+# 17254 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17230,7 +17267,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_incl_ = 
 # 114 "standard.mly"
     ( [] )
-# 17234 "parser_cocci_menhir.ml"
+# 17271 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17260,7 +17297,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_incl_ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17264 "parser_cocci_menhir.ml"
+# 17301 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17277,7 +17314,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_ctype__ = 
 # 114 "standard.mly"
     ( [] )
-# 17281 "parser_cocci_menhir.ml"
+# 17318 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17307,7 +17344,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_ctype__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17311 "parser_cocci_menhir.ml"
+# 17348 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17324,7 +17361,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_decl_var__ = 
 # 114 "standard.mly"
     ( [] )
-# 17328 "parser_cocci_menhir.ml"
+# 17365 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17354,7 +17391,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_decl_var__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17358 "parser_cocci_menhir.ml"
+# 17395 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17371,7 +17408,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_eexpr__ = 
 # 114 "standard.mly"
     ( [] )
-# 17375 "parser_cocci_menhir.ml"
+# 17412 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17401,7 +17438,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_eexpr__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17405 "parser_cocci_menhir.ml"
+# 17442 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17418,7 +17455,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_nest_start__ = 
 # 114 "standard.mly"
     ( [] )
-# 17422 "parser_cocci_menhir.ml"
+# 17459 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17448,7 +17485,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_nest_start__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17452 "parser_cocci_menhir.ml"
+# 17489 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17465,7 +17502,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_single_statement__ = 
 # 114 "standard.mly"
     ( [] )
-# 17469 "parser_cocci_menhir.ml"
+# 17506 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17495,7 +17532,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_iso_single_statement__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17499 "parser_cocci_menhir.ml"
+# 17536 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17512,7 +17549,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_ctype__ = 
 # 114 "standard.mly"
     ( [] )
-# 17516 "parser_cocci_menhir.ml"
+# 17553 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17542,7 +17579,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_ctype__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17546 "parser_cocci_menhir.ml"
+# 17583 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17559,7 +17596,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_eexpr__ = 
 # 114 "standard.mly"
     ( [] )
-# 17563 "parser_cocci_menhir.ml"
+# 17600 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17589,7 +17626,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_eexpr__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17593 "parser_cocci_menhir.ml"
+# 17630 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17606,7 +17643,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_fun_after_dots_or__ = 
 # 114 "standard.mly"
     ( [] )
-# 17610 "parser_cocci_menhir.ml"
+# 17647 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17636,7 +17673,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_fun_after_dots_or__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17640 "parser_cocci_menhir.ml"
+# 17677 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17653,7 +17690,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_fun_start__ = 
 # 114 "standard.mly"
     ( [] )
-# 17657 "parser_cocci_menhir.ml"
+# 17694 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17683,7 +17720,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_fun_start__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17687 "parser_cocci_menhir.ml"
+# 17724 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17700,7 +17737,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_rule_elem_statement__ = 
 # 114 "standard.mly"
     ( [] )
-# 17704 "parser_cocci_menhir.ml"
+# 17741 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17730,7 +17767,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_rule_elem_statement__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17734 "parser_cocci_menhir.ml"
+# 17771 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17747,7 +17784,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_statement__ = 
 # 114 "standard.mly"
     ( [] )
-# 17751 "parser_cocci_menhir.ml"
+# 17788 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17777,7 +17814,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_mzl_statement__ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17781 "parser_cocci_menhir.ml"
+# 17818 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17794,7 +17831,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_pair_edots_when_TEllipsis_eexpr__dexpr__ = 
 # 114 "standard.mly"
     ( [] )
-# 17798 "parser_cocci_menhir.ml"
+# 17835 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17833,13 +17870,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 70 "standard.mly"
     ( (x, y) )
-# 17837 "parser_cocci_menhir.ml"
+# 17874 "parser_cocci_menhir.ml"
           
         in
         
 # 116 "standard.mly"
     ( x :: xs )
-# 17843 "parser_cocci_menhir.ml"
+# 17880 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17856,7 +17893,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_whenppdecs_ = 
 # 114 "standard.mly"
     ( [] )
-# 17860 "parser_cocci_menhir.ml"
+# 17897 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17886,7 +17923,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_list_whenppdecs_ = 
 # 116 "standard.mly"
     ( x :: xs )
-# 17890 "parser_cocci_menhir.ml"
+# 17927 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17903,7 +17940,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_choose_iso_ = 
 # 57 "standard.mly"
     ( [] )
-# 17907 "parser_cocci_menhir.ml"
+# 17944 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17927,7 +17964,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_choose_iso_ = 
 # 59 "standard.mly"
     ( x )
-# 17931 "parser_cocci_menhir.ml"
+# 17968 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17944,7 +17981,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_disable_ = 
 # 57 "standard.mly"
     ( [] )
-# 17948 "parser_cocci_menhir.ml"
+# 17985 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17968,7 +18005,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_disable_ = 
 # 59 "standard.mly"
     ( x )
-# 17972 "parser_cocci_menhir.ml"
+# 18009 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -17985,7 +18022,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_filespec_ = 
 # 57 "standard.mly"
     ( [] )
-# 17989 "parser_cocci_menhir.ml"
+# 18026 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18009,7 +18046,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_filespec_ = 
 # 59 "standard.mly"
     ( x )
-# 18013 "parser_cocci_menhir.ml"
+# 18050 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18026,7 +18063,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_minus_start_ = 
 # 57 "standard.mly"
     ( [] )
-# 18030 "parser_cocci_menhir.ml"
+# 18067 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18050,48 +18087,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_minus_start_ = 
 # 59 "standard.mly"
     ( x )
-# 18054 "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_loption_not_ceq_ = 
-# 57 "standard.mly"
-    ( [] )
-# 18071 "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 : 'tv_not_ceq = Obj.magic x in
-        let _startpos = _startpos_x_ in
-        let _endpos = _endpos_x_ in
-        let _v : 'tv_loption_not_ceq_ = 
-# 59 "standard.mly"
-    ( x )
-# 18095 "parser_cocci_menhir.ml"
+# 18091 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18108,7 +18104,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_not_pos_ = 
 # 57 "standard.mly"
     ( [] )
-# 18112 "parser_cocci_menhir.ml"
+# 18108 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18132,7 +18128,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_not_pos_ = 
 # 59 "standard.mly"
     ( x )
-# 18136 "parser_cocci_menhir.ml"
+# 18132 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18149,7 +18145,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_plus_start_ = 
 # 57 "standard.mly"
     ( [] )
-# 18153 "parser_cocci_menhir.ml"
+# 18149 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18173,7 +18169,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_loption_plus_start_ = 
 # 59 "standard.mly"
     ( x )
-# 18177 "parser_cocci_menhir.ml"
+# 18173 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18195,9 +18191,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_t_ in
         let _endpos = _endpos_t_ in
         let _v : 'tv_meta_exp_type = 
-# 486 "parser_cocci_menhir.mly"
+# 513 "parser_cocci_menhir.mly"
     ( [Ast0_cocci.ast0_type_to_type t] )
-# 18201 "parser_cocci_menhir.ml"
+# 18197 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18233,11 +18229,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_m_ in
         let _v : 'tv_meta_exp_type = 
-# 488 "parser_cocci_menhir.mly"
+# 515 "parser_cocci_menhir.mly"
     ( List.map
        (function x -> P.ty_pointerify (Ast0_cocci.ast0_type_to_type x) m)
        t )
-# 18241 "parser_cocci_menhir.ml"
+# 18237 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18266,16 +18262,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_pure_ident = Obj.magic _3 in
         let _1 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 18272 "parser_cocci_menhir.ml"
+# 18268 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_meta_ident = 
-# 1443 "parser_cocci_menhir.mly"
+# 1472 "parser_cocci_menhir.mly"
                                    ( (Some _1,P.id2name _3) )
-# 18279 "parser_cocci_menhir.ml"
+# 18275 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18304,16 +18300,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_pure_ident_kwd = Obj.magic _3 in
         let _1 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 18310 "parser_cocci_menhir.ml"
+# 18306 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_meta_ident = 
-# 1444 "parser_cocci_menhir.mly"
+# 1473 "parser_cocci_menhir.mly"
                                    ( (Some _1,_3) )
-# 18317 "parser_cocci_menhir.ml"
+# 18313 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18335,13 +18331,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_m_ in
         let _endpos = _endpos_m_ in
         let _v : (
-# 158 "parser_cocci_menhir.mly"
+# 180 "parser_cocci_menhir.mly"
       ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list)
-# 18341 "parser_cocci_menhir.ml"
+# 18337 "parser_cocci_menhir.ml"
         ) = 
-# 182 "parser_cocci_menhir.mly"
+# 204 "parser_cocci_menhir.mly"
                        ( m (!Ast0.rule_name) )
-# 18345 "parser_cocci_menhir.ml"
+# 18341 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18384,17 +18380,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 339 "parser_cocci_menhir.mly"
+# 362 "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) )
-# 18392 "parser_cocci_menhir.ml"
+# 18388 "parser_cocci_menhir.ml"
           
         in
         
-# 271 "parser_cocci_menhir.mly"
+# 293 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 18398 "parser_cocci_menhir.ml"
+# 18394 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18441,17 +18437,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__6_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 343 "parser_cocci_menhir.mly"
+# 366 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta ->
       let tok = check_meta(Ast.MetaParamListDecl(arity,name,None)) in
       !Data.add_paramlist_meta name None pure; tok) )
-# 18449 "parser_cocci_menhir.ml"
+# 18445 "parser_cocci_menhir.ml"
           
         in
         
-# 271 "parser_cocci_menhir.mly"
+# 293 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 18455 "parser_cocci_menhir.ml"
+# 18451 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18498,17 +18494,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__6_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 347 "parser_cocci_menhir.mly"
+# 370 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta ->
       let tok = check_meta(Ast.MetaExpListDecl(arity,name,None)) in
       !Data.add_explist_meta name None pure; tok) )
-# 18506 "parser_cocci_menhir.ml"
+# 18502 "parser_cocci_menhir.ml"
           
         in
         
-# 271 "parser_cocci_menhir.mly"
+# 293 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 18512 "parser_cocci_menhir.ml"
+# 18508 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18551,17 +18547,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 351 "parser_cocci_menhir.mly"
+# 374 "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) )
-# 18559 "parser_cocci_menhir.ml"
+# 18555 "parser_cocci_menhir.ml"
           
         in
         
-# 271 "parser_cocci_menhir.mly"
+# 293 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 18565 "parser_cocci_menhir.ml"
+# 18561 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18604,17 +18600,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 355 "parser_cocci_menhir.mly"
+# 378 "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) )
-# 18612 "parser_cocci_menhir.ml"
+# 18608 "parser_cocci_menhir.ml"
           
         in
         
-# 271 "parser_cocci_menhir.mly"
+# 293 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 18618 "parser_cocci_menhir.ml"
+# 18614 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18657,17 +18653,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 359 "parser_cocci_menhir.mly"
+# 382 "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) )
-# 18665 "parser_cocci_menhir.ml"
+# 18661 "parser_cocci_menhir.ml"
           
         in
         
-# 271 "parser_cocci_menhir.mly"
+# 293 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 18671 "parser_cocci_menhir.ml"
+# 18667 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18714,17 +18710,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__6_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 363 "parser_cocci_menhir.mly"
+# 386 "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) )
-# 18722 "parser_cocci_menhir.ml"
+# 18718 "parser_cocci_menhir.ml"
           
         in
         
-# 271 "parser_cocci_menhir.mly"
+# 293 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 18728 "parser_cocci_menhir.ml"
+# 18724 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18767,18 +18763,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 367 "parser_cocci_menhir.mly"
+# 390 "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")) )
-# 18776 "parser_cocci_menhir.ml"
+# 18772 "parser_cocci_menhir.ml"
           
         in
         
-# 271 "parser_cocci_menhir.mly"
+# 293 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 18782 "parser_cocci_menhir.ml"
+# 18778 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18825,18 +18821,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__6_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 372 "parser_cocci_menhir.mly"
+# 395 "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")) )
-# 18834 "parser_cocci_menhir.ml"
+# 18830 "parser_cocci_menhir.ml"
           
         in
         
-# 271 "parser_cocci_menhir.mly"
+# 293 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 18840 "parser_cocci_menhir.ml"
+# 18836 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18883,18 +18879,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__6_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 377 "parser_cocci_menhir.mly"
+# 400 "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")) )
-# 18892 "parser_cocci_menhir.ml"
+# 18888 "parser_cocci_menhir.ml"
           
         in
         
-# 271 "parser_cocci_menhir.mly"
+# 293 "parser_cocci_menhir.mly"
     ( P.create_metadec ar ispure kindfn ids )
-# 18898 "parser_cocci_menhir.ml"
+# 18894 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18929,17 +18925,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__4_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 332 "parser_cocci_menhir.mly"
+# 355 "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) )
-# 18937 "parser_cocci_menhir.ml"
+# 18933 "parser_cocci_menhir.ml"
           
         in
         
-# 274 "parser_cocci_menhir.mly"
+# 296 "parser_cocci_menhir.mly"
     ( P.create_fresh_metadec kindfn ids )
-# 18943 "parser_cocci_menhir.ml"
+# 18939 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -18982,7 +18978,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 384 "parser_cocci_menhir.mly"
+# 407 "parser_cocci_menhir.mly"
     (
      let idfn arity name pure check_meta constraints =
        let tok = check_meta(Ast.MetaIdDecl(arity,name)) in
@@ -18996,17 +18992,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) )
-# 19000 "parser_cocci_menhir.ml"
+# 18996 "parser_cocci_menhir.ml"
           
         in
         
-# 280 "parser_cocci_menhir.mly"
+# 302 "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) )
-# 19010 "parser_cocci_menhir.ml"
+# 19006 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19049,17 +19045,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 400 "parser_cocci_menhir.mly"
+# 423 "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) )
-# 19057 "parser_cocci_menhir.ml"
+# 19053 "parser_cocci_menhir.ml"
           
         in
         
-# 289 "parser_cocci_menhir.mly"
+# 311 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19063 "parser_cocci_menhir.ml"
+# 19059 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19106,18 +19102,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__6_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 404 "parser_cocci_menhir.mly"
+# 427 "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) )
-# 19115 "parser_cocci_menhir.ml"
+# 19111 "parser_cocci_menhir.ml"
           
         in
         
-# 289 "parser_cocci_menhir.mly"
+# 311 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19121 "parser_cocci_menhir.ml"
+# 19117 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19160,17 +19156,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 409 "parser_cocci_menhir.mly"
+# 432 "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) )
-# 19168 "parser_cocci_menhir.ml"
+# 19164 "parser_cocci_menhir.ml"
           
         in
         
-# 289 "parser_cocci_menhir.mly"
+# 311 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19174 "parser_cocci_menhir.ml"
+# 19170 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19213,17 +19209,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 413 "parser_cocci_menhir.mly"
+# 436 "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) )
-# 19221 "parser_cocci_menhir.ml"
+# 19217 "parser_cocci_menhir.ml"
           
         in
         
-# 289 "parser_cocci_menhir.mly"
+# 311 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19227 "parser_cocci_menhir.ml"
+# 19223 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19259,24 +19255,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe__ = Obj.magic ids in
+        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub__ = Obj.magic ids in
         let ispure : 'tv_pure = Obj.magic ispure in
         let ar : 'tv_arity = Obj.magic ar in
         let _startpos = _startpos_ar_ in
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 419 "parser_cocci_menhir.mly"
+# 442 "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) )
-# 19274 "parser_cocci_menhir.ml"
+# 19270 "parser_cocci_menhir.ml"
           
         in
         
-# 294 "parser_cocci_menhir.mly"
+# 316 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19280 "parser_cocci_menhir.ml"
+# 19276 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19317,7 +19313,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe__ = Obj.magic ids in
+        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub__ = Obj.magic ids in
         let l0 : 'tv_option_TLocal_ = Obj.magic l0 in
         let ispure : 'tv_pure = Obj.magic ispure in
         let ar : 'tv_arity = Obj.magic ar in
@@ -19329,11 +19325,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             
 # 39 "standard.mly"
     ( None )
-# 19333 "parser_cocci_menhir.ml"
+# 19329 "parser_cocci_menhir.ml"
             
           in
           
-# 423 "parser_cocci_menhir.mly"
+# 446 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       match l with
        None ->
@@ -19342,13 +19338,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       | Some _ ->
          !Data.add_local_idexp_meta ty name constraints pure;
          check_meta(Ast.MetaLocalIdExpDecl(arity,name,ty))) )
-# 19346 "parser_cocci_menhir.ml"
+# 19342 "parser_cocci_menhir.ml"
           
         in
         
-# 294 "parser_cocci_menhir.mly"
+# 316 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19352 "parser_cocci_menhir.ml"
+# 19348 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19394,7 +19390,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe__ = Obj.magic ids in
+        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub__ = Obj.magic ids in
         let x00 : 'tv_meta_exp_type = Obj.magic x00 in
         let l0 : 'tv_option_TLocal_ = Obj.magic l0 in
         let ispure : 'tv_pure = Obj.magic ispure in
@@ -19409,11 +19405,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             
 # 41 "standard.mly"
     ( Some x )
-# 19413 "parser_cocci_menhir.ml"
+# 19409 "parser_cocci_menhir.ml"
             
           in
           
-# 423 "parser_cocci_menhir.mly"
+# 446 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       match l with
        None ->
@@ -19422,13 +19418,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       | Some _ ->
          !Data.add_local_idexp_meta ty name constraints pure;
          check_meta(Ast.MetaLocalIdExpDecl(arity,name,ty))) )
-# 19426 "parser_cocci_menhir.ml"
+# 19422 "parser_cocci_menhir.ml"
           
         in
         
-# 294 "parser_cocci_menhir.mly"
+# 316 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19432 "parser_cocci_menhir.ml"
+# 19428 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19474,7 +19470,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe__ = Obj.magic ids in
+        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub__ = Obj.magic ids in
         let m0 : 'tv_nonempty_list_TMul_ = Obj.magic m0 in
         let l0 : 'tv_option_TLocal_ = Obj.magic l0 in
         let ispure : 'tv_pure = Obj.magic ispure in
@@ -19485,7 +19481,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let m = m0 in
           let l = l0 in
           
-# 432 "parser_cocci_menhir.mly"
+# 455 "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
@@ -19495,13 +19491,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
       | Some _ ->
          !Data.add_local_idexp_meta ty name constraints pure;
          check_meta(Ast.MetaLocalIdExpDecl(arity,name,ty))) )
-# 19499 "parser_cocci_menhir.ml"
+# 19495 "parser_cocci_menhir.ml"
           
         in
         
-# 294 "parser_cocci_menhir.mly"
+# 316 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19505 "parser_cocci_menhir.ml"
+# 19501 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19542,7 +19538,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe__ = Obj.magic ids in
+        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub__ = Obj.magic ids in
         let m0 : 'tv_nonempty_list_TMul_ = Obj.magic m0 in
         let ispure : 'tv_pure = Obj.magic ispure in
         let ar : 'tv_arity = Obj.magic ar in
@@ -19551,18 +19547,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_metadec = let kindfn =
           let m = m0 in
           
-# 442 "parser_cocci_menhir.mly"
+# 465 "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) )
-# 19560 "parser_cocci_menhir.ml"
+# 19556 "parser_cocci_menhir.ml"
           
         in
         
-# 294 "parser_cocci_menhir.mly"
+# 316 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19566 "parser_cocci_menhir.ml"
+# 19562 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19607,7 +19603,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe__ = Obj.magic ids in
+        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub__ = Obj.magic ids in
         let vl0 : 'tv_meta_exp_type = Obj.magic vl0 in
         let ispure : 'tv_pure = Obj.magic ispure in
         let ar : 'tv_arity = Obj.magic ar in
@@ -19616,18 +19612,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_metadec = let kindfn =
           let vl = vl0 in
           
-# 447 "parser_cocci_menhir.mly"
+# 470 "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) )
-# 19625 "parser_cocci_menhir.ml"
+# 19621 "parser_cocci_menhir.ml"
           
         in
         
-# 294 "parser_cocci_menhir.mly"
+# 316 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19631 "parser_cocci_menhir.ml"
+# 19627 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19663,7 +19659,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe__ = Obj.magic ids in
+        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub__ = Obj.magic ids in
         let ispure : 'tv_pure = Obj.magic ispure in
         let ar : 'tv_arity = Obj.magic ar in
         let _startpos = _startpos_ar_ in
@@ -19673,21 +19669,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             
 # 39 "standard.mly"
     ( None )
-# 19677 "parser_cocci_menhir.ml"
+# 19673 "parser_cocci_menhir.ml"
             
           in
           
-# 452 "parser_cocci_menhir.mly"
+# 475 "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) )
-# 19685 "parser_cocci_menhir.ml"
+# 19681 "parser_cocci_menhir.ml"
           
         in
         
-# 294 "parser_cocci_menhir.mly"
+# 316 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19691 "parser_cocci_menhir.ml"
+# 19687 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19728,7 +19724,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe__ = Obj.magic ids in
+        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub__ = Obj.magic ids in
         let x00 : 'tv_meta_exp_type = Obj.magic x00 in
         let ispure : 'tv_pure = Obj.magic ispure in
         let ar : 'tv_arity = Obj.magic ar in
@@ -19741,21 +19737,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             
 # 41 "standard.mly"
     ( Some x )
-# 19745 "parser_cocci_menhir.ml"
+# 19741 "parser_cocci_menhir.ml"
             
           in
           
-# 452 "parser_cocci_menhir.mly"
+# 475 "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) )
-# 19753 "parser_cocci_menhir.ml"
+# 19749 "parser_cocci_menhir.ml"
           
         in
         
-# 294 "parser_cocci_menhir.mly"
+# 316 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19759 "parser_cocci_menhir.ml"
+# 19755 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19791,24 +19787,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_x_eq_not_ceq__ = Obj.magic ids in
+        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_not_ceq_or_sub__ = Obj.magic ids in
         let ispure : 'tv_pure = Obj.magic ispure in
         let ar : 'tv_arity = Obj.magic ar in
         let _startpos = _startpos_ar_ in
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = let kindfn =
           
-# 458 "parser_cocci_menhir.mly"
+# 481 "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 (Ast0.NotExpCstrt constraints) pure; tok) )
-# 19806 "parser_cocci_menhir.ml"
+      !Data.add_exp_meta None name constraints pure; tok) )
+# 19802 "parser_cocci_menhir.ml"
           
         in
         
-# 298 "parser_cocci_menhir.mly"
+# 321 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
-# 19812 "parser_cocci_menhir.ml"
+# 19808 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -19845,7 +19841,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_x_eq_not_ceq__ = Obj.magic ids in
+        let ids : 'tv_comma_list_pure_ident_or_meta_ident_with_econstraint_not_ceq_or_sub__ = Obj.magic ids in
         let vl0 : 'tv_meta_exp_type = Obj.magic vl0 in
         let ispure : 'tv_pure = Obj.magic ispure in
         let ar : 'tv_arity = Obj.magic ar in
@@ -19854,32 +19850,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_metadec = let kindfn =
           let vl = vl0 in
           
-# 462 "parser_cocci_menhir.mly"
+# 485 "parser_cocci_menhir.mly"
     ( (fun arity name pure check_meta constraints ->
       let ty = Some vl in
-      List.iter
-       (function c ->
-         match Ast0.unwrap c with
-           Ast0.Constant(_) ->
-             if not
-                 (List.exists
-                    (function
-                        Type_cocci.BaseType(Type_cocci.IntType) -> true
-                      | Type_cocci.BaseType(Type_cocci.ShortType) -> true
-                      | Type_cocci.BaseType(Type_cocci.LongType) -> true
-                      | _ -> false)
-                    vl)
-             then failwith "metavariable with int constraint must be an int"
-         | _ -> ())
-       constraints;
+      (match constraints with
+       Ast0.NotExpCstrt constraints ->
+         List.iter
+           (function c ->
+             match Ast0.unwrap c with
+               Ast0.Constant(_) ->
+                 if not
+                     (List.exists
+                        (function
+                            Type_cocci.BaseType(Type_cocci.IntType) -> true
+                          | Type_cocci.BaseType(Type_cocci.ShortType) -> true
+                          | Type_cocci.BaseType(Type_cocci.LongType) -> true
+                          | _ -> false)
+                        vl)
+                 then
+                   failwith "metavariable with int constraint must be an int"
+             | _ -> ())
+           constraints
+      |        _ -> ());
       let tok = check_meta(Ast.MetaExpDecl(arity,name,ty)) in
-      !Data.add_exp_meta ty name (Ast0.NotExpCstrt constraints) pure; tok)
+      !Data.add_exp_meta ty name constraints pure; tok)
     )
 # 19879 "parser_cocci_menhir.ml"
           
         in
         
-# 298 "parser_cocci_menhir.mly"
+# 321 "parser_cocci_menhir.mly"
     ( P.create_metadec_with_constraints ar ispure kindfn ids )
 # 19885 "parser_cocci_menhir.ml"
          in
@@ -19923,7 +19923,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_ar_ in
         let _endpos = _endpos__5_ in
         let _v : 'tv_metadec = 
-# 304 "parser_cocci_menhir.mly"
+# 327 "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 =
@@ -19991,7 +19991,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_ar_ in
         let _endpos = _endpos__9_ in
         let _v : 'tv_metadec = 
-# 314 "parser_cocci_menhir.mly"
+# 337 "parser_cocci_menhir.mly"
     ( P.create_len_metadec ar ispure
        (fun lenname arity name pure check_meta ->
          let tok =
@@ -20058,7 +20058,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_ar_ in
         let _endpos = _endpos__9_ in
         let _v : 'tv_metadec = 
-# 323 "parser_cocci_menhir.mly"
+# 346 "parser_cocci_menhir.mly"
     ( P.create_len_metadec ar ispure
        (fun lenname arity name pure check_meta ->
          let tok =
@@ -20093,7 +20093,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_a_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_midzero_list_ctype_ctype_ = 
-# 1919 "parser_cocci_menhir.mly"
+# 1988 "parser_cocci_menhir.mly"
      ( let (mids,code) = List.split b in (mids,(a::code)) )
 # 20099 "parser_cocci_menhir.ml"
          in
@@ -20123,7 +20123,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_a_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_midzero_list_eexpr_eexpr_ = 
-# 1919 "parser_cocci_menhir.mly"
+# 1988 "parser_cocci_menhir.mly"
      ( let (mids,code) = List.split b in (mids,(a::code)) )
 # 20129 "parser_cocci_menhir.ml"
          in
@@ -20153,7 +20153,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_a_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_midzero_list_expr_eexpr_ = 
-# 1919 "parser_cocci_menhir.mly"
+# 1988 "parser_cocci_menhir.mly"
      ( let (mids,code) = List.split b in (mids,(a::code)) )
 # 20159 "parser_cocci_menhir.ml"
          in
@@ -20183,7 +20183,7 @@ 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_ = 
-# 1919 "parser_cocci_menhir.mly"
+# 1988 "parser_cocci_menhir.mly"
      ( let (mids,code) = List.split b in (mids,(a::code)) )
 # 20189 "parser_cocci_menhir.ml"
          in
@@ -20213,7 +20213,7 @@ 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_ = 
-# 1919 "parser_cocci_menhir.mly"
+# 1988 "parser_cocci_menhir.mly"
      ( let (mids,code) = List.split b in (mids,(a::code)) )
 # 20219 "parser_cocci_menhir.ml"
          in
@@ -20243,7 +20243,7 @@ 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_ = 
-# 1919 "parser_cocci_menhir.mly"
+# 1988 "parser_cocci_menhir.mly"
      ( let (mids,code) = List.split b in (mids,(a::code)) )
 # 20249 "parser_cocci_menhir.ml"
          in
@@ -20273,7 +20273,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_a_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_midzero_list_statement_statement_ = 
-# 1919 "parser_cocci_menhir.mly"
+# 1988 "parser_cocci_menhir.mly"
      ( let (mids,code) = List.split b in (mids,(a::code)) )
 # 20279 "parser_cocci_menhir.ml"
          in
@@ -20303,7 +20303,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_f_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_minus_body = 
-# 630 "parser_cocci_menhir.mly"
+# 657 "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 )
@@ -20335,7 +20335,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_f_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_minus_exp_body = 
-# 644 "parser_cocci_menhir.mly"
+# 671 "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 )
@@ -20365,11 +20365,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 138 "parser_cocci_menhir.mly"
+# 160 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
 # 20371 "parser_cocci_menhir.ml"
         ) = 
-# 178 "parser_cocci_menhir.mly"
+# 200 "parser_cocci_menhir.mly"
                                    ( _1 )
 # 20375 "parser_cocci_menhir.ml"
          in
@@ -20397,11 +20397,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_m_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 138 "parser_cocci_menhir.mly"
+# 160 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
 # 20403 "parser_cocci_menhir.ml"
         ) = 
-# 178 "parser_cocci_menhir.mly"
+# 200 "parser_cocci_menhir.mly"
                                                                        ( m )
 # 20407 "parser_cocci_menhir.ml"
          in
@@ -20429,11 +20429,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_m_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 138 "parser_cocci_menhir.mly"
+# 160 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
 # 20435 "parser_cocci_menhir.ml"
         ) = 
-# 179 "parser_cocci_menhir.mly"
+# 201 "parser_cocci_menhir.mly"
                          ( m )
 # 20439 "parser_cocci_menhir.ml"
          in
@@ -20461,11 +20461,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 135 "parser_cocci_menhir.mly"
+# 157 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
 # 20467 "parser_cocci_menhir.ml"
         ) = 
-# 174 "parser_cocci_menhir.mly"
+# 196 "parser_cocci_menhir.mly"
                            ( _1 )
 # 20471 "parser_cocci_menhir.ml"
          in
@@ -20493,11 +20493,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_m_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 135 "parser_cocci_menhir.mly"
+# 157 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
 # 20499 "parser_cocci_menhir.ml"
         ) = 
-# 174 "parser_cocci_menhir.mly"
+# 196 "parser_cocci_menhir.mly"
                                                            ( m )
 # 20503 "parser_cocci_menhir.ml"
          in
@@ -20525,11 +20525,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_m_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 135 "parser_cocci_menhir.mly"
+# 157 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
 # 20531 "parser_cocci_menhir.ml"
         ) = 
-# 175 "parser_cocci_menhir.mly"
+# 197 "parser_cocci_menhir.mly"
                      ( m )
 # 20535 "parser_cocci_menhir.ml"
          in
@@ -20553,7 +20553,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_minus_start = 
-# 1728 "parser_cocci_menhir.mly"
+# 1797 "parser_cocci_menhir.mly"
                          ( [Ast0.wrap(Ast0.DECL(_1))] )
 # 20559 "parser_cocci_menhir.ml"
          in
@@ -20577,7 +20577,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_minus_start = 
-# 1729 "parser_cocci_menhir.mly"
+# 1798 "parser_cocci_menhir.mly"
                          ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Ty(_1))))] )
 # 20583 "parser_cocci_menhir.ml"
          in
@@ -20601,7 +20601,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_minus_start = 
-# 1730 "parser_cocci_menhir.mly"
+# 1799 "parser_cocci_menhir.mly"
                     ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.TopInit(_1))))] )
 # 20607 "parser_cocci_menhir.ml"
          in
@@ -20625,7 +20625,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_minus_start = 
-# 1732 "parser_cocci_menhir.mly"
+# 1801 "parser_cocci_menhir.mly"
     ( List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1 )
 # 20631 "parser_cocci_menhir.ml"
          in
@@ -20652,14 +20652,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let b : 'tv_ctype = Obj.magic b in
         let a : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
 # 20658 "parser_cocci_menhir.ml"
         ) = Obj.magic a in
         let _startpos = _startpos_a_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_mzl_ctype_ = 
-# 1922 "parser_cocci_menhir.mly"
+# 1991 "parser_cocci_menhir.mly"
                  ( (P.clt2mcode "|" a, b) )
 # 20665 "parser_cocci_menhir.ml"
          in
@@ -20686,14 +20686,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let b : 'tv_eexpr = Obj.magic b in
         let a : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
 # 20692 "parser_cocci_menhir.ml"
         ) = Obj.magic a in
         let _startpos = _startpos_a_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_mzl_eexpr_ = 
-# 1922 "parser_cocci_menhir.mly"
+# 1991 "parser_cocci_menhir.mly"
                  ( (P.clt2mcode "|" a, b) )
 # 20699 "parser_cocci_menhir.ml"
          in
@@ -20720,14 +20720,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let b : 'tv_fun_after_dots_or = Obj.magic b in
         let a : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
 # 20726 "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_ = 
-# 1922 "parser_cocci_menhir.mly"
+# 1991 "parser_cocci_menhir.mly"
                  ( (P.clt2mcode "|" a, b) )
 # 20733 "parser_cocci_menhir.ml"
          in
@@ -20754,14 +20754,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let b : 'tv_fun_start = Obj.magic b in
         let a : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
 # 20760 "parser_cocci_menhir.ml"
         ) = Obj.magic a in
         let _startpos = _startpos_a_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_mzl_fun_start_ = 
-# 1922 "parser_cocci_menhir.mly"
+# 1991 "parser_cocci_menhir.mly"
                  ( (P.clt2mcode "|" a, b) )
 # 20767 "parser_cocci_menhir.ml"
          in
@@ -20788,14 +20788,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let b : 'tv_rule_elem_statement = Obj.magic b in
         let a : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
 # 20794 "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_ = 
-# 1922 "parser_cocci_menhir.mly"
+# 1991 "parser_cocci_menhir.mly"
                  ( (P.clt2mcode "|" a, b) )
 # 20801 "parser_cocci_menhir.ml"
          in
@@ -20822,14 +20822,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let b : 'tv_statement = Obj.magic b in
         let a : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
 # 20828 "parser_cocci_menhir.ml"
         ) = Obj.magic a in
         let _startpos = _startpos_a_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_mzl_statement_ = 
-# 1922 "parser_cocci_menhir.mly"
+# 1991 "parser_cocci_menhir.mly"
                  ( (P.clt2mcode "|" a, b) )
 # 20835 "parser_cocci_menhir.ml"
          in
@@ -20853,7 +20853,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_name_opt_decl = 
-# 853 "parser_cocci_menhir.mly"
+# 882 "parser_cocci_menhir.mly"
             ( _1 )
 # 20859 "parser_cocci_menhir.ml"
          in
@@ -20904,28 +20904,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rp1 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
 # 20910 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_decl_list_name_opt_decl_ = Obj.magic d in
         let lp1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
 # 20916 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let rp : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
 # 20921 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let s : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
 # 20926 "parser_cocci_menhir.ml"
         ) = Obj.magic s in
         let lp : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
 # 20931 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
@@ -20933,7 +20933,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_t_ in
         let _endpos = _endpos_rp1_ in
         let _v : 'tv_name_opt_decl = 
-# 856 "parser_cocci_menhir.mly"
+# 885 "parser_cocci_menhir.mly"
         ( let fnptr =
          Ast0.wrap
            (Ast0.FunctionPointer
@@ -20968,7 +20968,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_nest_after_dots = 
-# 1843 "parser_cocci_menhir.mly"
+# 1912 "parser_cocci_menhir.mly"
                                      (_1@_2)
 # 20974 "parser_cocci_menhir.ml"
          in
@@ -20996,7 +20996,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_nest_after_dots = 
-# 1844 "parser_cocci_menhir.mly"
+# 1913 "parser_cocci_menhir.mly"
                                 (_2)
 # 21002 "parser_cocci_menhir.ml"
          in
@@ -21026,7 +21026,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_nest_after_dots = 
-# 1845 "parser_cocci_menhir.mly"
+# 1914 "parser_cocci_menhir.mly"
                                 ((Ast0.wrap(Ast0.Exp(_1)))::_2)
 # 21032 "parser_cocci_menhir.ml"
          in
@@ -21043,7 +21043,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_nest_after_exp = 
-# 1853 "parser_cocci_menhir.mly"
+# 1922 "parser_cocci_menhir.mly"
                                 ([])
 # 21049 "parser_cocci_menhir.ml"
          in
@@ -21073,7 +21073,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_nest_after_exp = 
-# 1854 "parser_cocci_menhir.mly"
+# 1923 "parser_cocci_menhir.mly"
                                 (_1::_2)
 # 21079 "parser_cocci_menhir.ml"
          in
@@ -21090,7 +21090,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_nest_after_stm = 
-# 1848 "parser_cocci_menhir.mly"
+# 1917 "parser_cocci_menhir.mly"
                                 ([])
 # 21096 "parser_cocci_menhir.ml"
          in
@@ -21120,7 +21120,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_nest_after_stm = 
-# 1849 "parser_cocci_menhir.mly"
+# 1918 "parser_cocci_menhir.mly"
                                 (_1::_2)
 # 21126 "parser_cocci_menhir.ml"
          in
@@ -21150,7 +21150,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_nest_after_stm = 
-# 1850 "parser_cocci_menhir.mly"
+# 1919 "parser_cocci_menhir.mly"
                                 (_1@_2)
 # 21156 "parser_cocci_menhir.ml"
          in
@@ -21181,20 +21181,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let c : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
 # 21187 "parser_cocci_menhir.ml"
         ) = Obj.magic c in
         let e : 'tv_expr_dots_TEllipsis_ = Obj.magic e in
         let _1 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
 # 21193 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_c_ in
         let _v : 'tv_nest_expressions = 
-# 1242 "parser_cocci_menhir.mly"
+# 1271 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.NestExpr(P.clt2mcode "<..." _1,
                              Ast0.wrap(Ast0.DOTS(e (P.mkedots "..."))),
                              P.clt2mcode "...>" c, None, false)) )
@@ -21227,20 +21227,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let c : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
 # 21233 "parser_cocci_menhir.ml"
         ) = Obj.magic c in
         let e : 'tv_expr_dots_TEllipsis_ = Obj.magic e in
         let _1 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
 # 21239 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_c_ in
         let _v : 'tv_nest_expressions = 
-# 1246 "parser_cocci_menhir.mly"
+# 1275 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.NestExpr(P.clt2mcode "<+..." _1,
                              Ast0.wrap(Ast0.DOTS(e (P.mkedots "..."))),
                              P.clt2mcode "...+>" c, None, true)) )
@@ -21266,7 +21266,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_nest_start = 
-# 1840 "parser_cocci_menhir.mly"
+# 1909 "parser_cocci_menhir.mly"
                    ( Ast0.wrap(Ast0.DOTS(_1)) )
 # 21272 "parser_cocci_menhir.ml"
          in
@@ -21288,11 +21288,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : (
-# 169 "parser_cocci_menhir.mly"
+# 191 "parser_cocci_menhir.mly"
       (unit)
 # 21294 "parser_cocci_menhir.ml"
         ) = 
-# 1989 "parser_cocci_menhir.mly"
+# 2058 "parser_cocci_menhir.mly"
                     ( () )
 # 21298 "parser_cocci_menhir.ml"
          in
@@ -21318,11 +21318,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 169 "parser_cocci_menhir.mly"
+# 191 "parser_cocci_menhir.mly"
       (unit)
 # 21324 "parser_cocci_menhir.ml"
         ) = 
-# 1990 "parser_cocci_menhir.mly"
+# 2059 "parser_cocci_menhir.mly"
                     ( () )
 # 21328 "parser_cocci_menhir.ml"
          in
@@ -21344,11 +21344,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : (
-# 169 "parser_cocci_menhir.mly"
+# 191 "parser_cocci_menhir.mly"
       (unit)
 # 21350 "parser_cocci_menhir.ml"
         ) = 
-# 1991 "parser_cocci_menhir.mly"
+# 2060 "parser_cocci_menhir.mly"
                     ( () )
 # 21354 "parser_cocci_menhir.ml"
          in
@@ -21378,7 +21378,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_g_ in
         let _endpos = _endpos_dg_ in
         let _v : 'tv_no_dot_start_end_dexpr_edots_when_TEllipsis_eexpr__ = 
-# 1410 "parser_cocci_menhir.mly"
+# 1439 "parser_cocci_menhir.mly"
   ( function dot_builder ->
       g :: (List.concat(List.map (function (d,g) -> [dot_builder d;g]) dg)) )
 # 21385 "parser_cocci_menhir.ml"
@@ -21400,7 +21400,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let x : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
 # 21406 "parser_cocci_menhir.ml"
         ) = Obj.magic x in
@@ -21434,7 +21434,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let xs : 'tv_nonempty_list_TMul_ = Obj.magic xs in
         let x : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
 # 21440 "parser_cocci_menhir.ml"
         ) = Obj.magic x in
@@ -21469,7 +21469,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_i_ in
         let _v : 'tv_not_ceq = 
-# 1561 "parser_cocci_menhir.mly"
+# 1612 "parser_cocci_menhir.mly"
          ( (if !Data.in_iso
           then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
@@ -21509,7 +21509,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_not_ceq = 
-# 1567 "parser_cocci_menhir.mly"
+# 1618 "parser_cocci_menhir.mly"
   ( (if !Data.in_iso
           then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
@@ -21524,6 +21524,54 @@ 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.state = _menhir_s;
+          MenhirLib.EngineTypes.semv = ceq;
+          MenhirLib.EngineTypes.startp = _startpos_ceq_;
+          MenhirLib.EngineTypes.endp = _endpos_ceq_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let ceq : 'tv_not_ceq = Obj.magic ceq in
+        let _startpos = _startpos_ceq_ in
+        let _endpos = _endpos_ceq_ in
+        let _v : 'tv_not_ceq_or_sub = 
+# 1588 "parser_cocci_menhir.mly"
+                  (Ast0.NotExpCstrt ceq)
+# 21543 "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 = s;
+          MenhirLib.EngineTypes.startp = _startpos_s_;
+          MenhirLib.EngineTypes.endp = _endpos_s_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let s : 'tv_sub = Obj.magic s in
+        let _startpos = _startpos_s_ in
+        let _endpos = _endpos_s_ in
+        let _v : 'tv_not_ceq_or_sub = 
+# 1589 "parser_cocci_menhir.mly"
+                  (Ast0.SubExpCstrt s)
+# 21567 "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 {
@@ -21541,14 +21589,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_i_ in
         let _v : 'tv_not_eqe = 
-# 1542 "parser_cocci_menhir.mly"
+# 1593 "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))))]
         )
-# 21552 "parser_cocci_menhir.ml"
+# 21600 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21582,7 +21630,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_not_eqe = 
-# 1549 "parser_cocci_menhir.mly"
+# 1600 "parser_cocci_menhir.mly"
   ( (if !Data.in_iso
           then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
@@ -21592,7 +21640,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
                Ast0.wrap(Ast0.Ident(Ast0.wrap(Ast0.Id(P.id2mcode i)))))
             l
         )
-# 21596 "parser_cocci_menhir.ml"
+# 21644 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21618,15 +21666,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_i_ in
         let _v : 'tv_not_eqid = 
-# 1521 "parser_cocci_menhir.mly"
+# 1550 "parser_cocci_menhir.mly"
          ( (if !Data.in_iso
           then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
            (* pb: constraints not stored with metavars; too lazy to search for
              them in the pattern *)
           then failwith "constraints not allowed in a generated rule file");
-          Ast.IdNegIdSet([snd i]) )
-# 21630 "parser_cocci_menhir.ml"
+          (match i with
+            (Some rn,id) ->
+              let i =
+                P.check_inherited_constraint i
+                  (function mv -> Ast.MetaIdDecl(Ast.NONE,mv)) in
+              Ast.IdNegIdSet([],[i])
+          | (None,i) -> Ast.IdNegIdSet([i],[])) )
+# 21684 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21660,14 +21714,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_not_eqid = 
-# 1529 "parser_cocci_menhir.mly"
+# 1564 "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");
-          Ast.IdNegIdSet(List.map snd l)
+          let (str,meta) =
+            List.fold_left
+              (function (str,meta) ->
+                function 
+                  (Some rn,id) as i ->
+                    let i =
+                      P.check_inherited_constraint i
+                        (function mv -> Ast.MetaIdDecl(Ast.NONE,mv)) in
+                    (str,i::meta)
+                | (None,i) -> (i::str,meta))
+              ([],[]) l in
+          Ast.IdNegIdSet(str,meta)
         )
-# 21671 "parser_cocci_menhir.ml"
+# 21736 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21693,18 +21758,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_i_ in
         let _v : 'tv_not_pos = 
-# 1581 "parser_cocci_menhir.mly"
+# 1656 "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");
-          match i with
-            (None,_) -> failwith "constraint must be an inherited variable"
-          | (Some rule,name) ->
-              let i = (rule,name) in
-              P.check_meta(Ast.MetaPosDecl(Ast.NONE,i));
-              [i] )
-# 21708 "parser_cocci_menhir.ml"
+          let i =
+            P.check_inherited_constraint i
+              (function mv -> Ast.MetaPosDecl(Ast.NONE,mv)) in
+          [i] )
+# 21771 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21738,21 +21801,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__4_ in
         let _v : 'tv_not_pos = 
-# 1592 "parser_cocci_menhir.mly"
+# 1665 "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");
           List.map
-            (function
-                (None,_) ->
-                  failwith "constraint must be an inherited variable"
-              | (Some rule,name) ->
-                  let i = (rule,name) in
-                  P.check_meta(Ast.MetaPosDecl(Ast.NONE,i));
-                  i)
+            (function i ->
+              P.check_inherited_constraint i
+                (function mv -> Ast.MetaPosDecl(Ast.NONE,mv)))
             l )
-# 21756 "parser_cocci_menhir.ml"
+# 21815 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21774,9 +21833,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_one_dec_decl_ = 
-# 1666 "parser_cocci_menhir.mly"
+# 1735 "parser_cocci_menhir.mly"
         ( _1 )
-# 21780 "parser_cocci_menhir.ml"
+# 21839 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21795,14 +21854,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 67 "parser_cocci_menhir.mly"
+# 89 "parser_cocci_menhir.mly"
        (Parse_aux.list_info)
-# 21801 "parser_cocci_menhir.ml"
+# 21860 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_one_dec_decl_ = 
-# 1668 "parser_cocci_menhir.mly"
+# 1737 "parser_cocci_menhir.mly"
     ( let (nm,lenname,pure,clt) = _1 in
     let nm = P.clt2mcode nm clt in
     let lenname =
@@ -21810,7 +21869,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
        Some nm -> Some(P.clt2mcode nm clt)
       | None -> None in
     Ast0.wrap(Ast0.MetaParamList(nm,lenname,pure)) )
-# 21814 "parser_cocci_menhir.ml"
+# 21873 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21832,9 +21891,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_ = 
-# 1666 "parser_cocci_menhir.mly"
+# 1735 "parser_cocci_menhir.mly"
         ( _1 )
-# 21838 "parser_cocci_menhir.ml"
+# 21897 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21853,14 +21912,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 67 "parser_cocci_menhir.mly"
+# 89 "parser_cocci_menhir.mly"
        (Parse_aux.list_info)
-# 21859 "parser_cocci_menhir.ml"
+# 21918 "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_ = 
-# 1668 "parser_cocci_menhir.mly"
+# 1737 "parser_cocci_menhir.mly"
     ( let (nm,lenname,pure,clt) = _1 in
     let nm = P.clt2mcode nm clt in
     let lenname =
@@ -21868,7 +21927,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
        Some nm -> Some(P.clt2mcode nm clt)
       | None -> None in
     Ast0.wrap(Ast0.MetaParamList(nm,lenname,pure)) )
-# 21872 "parser_cocci_menhir.ml"
+# 21931 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21892,17 +21951,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 21898 "parser_cocci_menhir.ml"
+# 21957 "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 = 
-# 1031 "parser_cocci_menhir.mly"
+# 1060 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.TyDecl(t,P.clt2mcode ";" pv)) )
-# 21906 "parser_cocci_menhir.ml"
+# 21965 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21931,9 +21990,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 21937 "parser_cocci_menhir.ml"
+# 21996 "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
@@ -21943,14 +22002,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 21947 "parser_cocci_menhir.ml"
+# 22006 "parser_cocci_menhir.ml"
           
         in
         
-# 1033 "parser_cocci_menhir.mly"
+# 1062 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)) )
-# 21954 "parser_cocci_menhir.ml"
+# 22013 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -21984,9 +22043,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 21990 "parser_cocci_menhir.ml"
+# 22049 "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
@@ -21998,14 +22057,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22002 "parser_cocci_menhir.ml"
+# 22061 "parser_cocci_menhir.ml"
           
         in
         
-# 1033 "parser_cocci_menhir.mly"
+# 1062 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         Ast0.wrap(Ast0.UnInit(s,fn t,id,P.clt2mcode ";" pv)) )
-# 22009 "parser_cocci_menhir.ml"
+# 22068 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22027,9 +22086,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_f_ in
         let _endpos = _endpos_f_ in
         let _v : 'tv_one_decl_var = 
-# 1035 "parser_cocci_menhir.mly"
+# 1064 "parser_cocci_menhir.mly"
                ( f )
-# 22033 "parser_cocci_menhir.ml"
+# 22092 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22068,15 +22127,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22074 "parser_cocci_menhir.ml"
+# 22133 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22080 "parser_cocci_menhir.ml"
+# 22139 "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
@@ -22086,14 +22145,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 22090 "parser_cocci_menhir.ml"
+# 22149 "parser_cocci_menhir.ml"
           
         in
         
-# 1037 "parser_cocci_menhir.mly"
+# 1066 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
       Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv)) )
-# 22097 "parser_cocci_menhir.ml"
+# 22156 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22137,15 +22196,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22143 "parser_cocci_menhir.ml"
+# 22202 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22149 "parser_cocci_menhir.ml"
+# 22208 "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
@@ -22157,14 +22216,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22161 "parser_cocci_menhir.ml"
+# 22220 "parser_cocci_menhir.ml"
           
         in
         
-# 1037 "parser_cocci_menhir.mly"
+# 1066 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
       Ast0.wrap(Ast0.Init(s,fn t,id,P.clt2mcode "=" q,e,P.clt2mcode ";" pv)) )
-# 22168 "parser_cocci_menhir.ml"
+# 22227 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22193,9 +22252,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22199 "parser_cocci_menhir.ml"
+# 22258 "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
@@ -22205,22 +22264,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 22209 "parser_cocci_menhir.ml"
+# 22268 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 22216 "parser_cocci_menhir.ml"
+# 22275 "parser_cocci_menhir.ml"
           
         in
         
-# 1042 "parser_cocci_menhir.mly"
+# 1071 "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)) )
-# 22224 "parser_cocci_menhir.ml"
+# 22283 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22254,9 +22313,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22260 "parser_cocci_menhir.ml"
+# 22319 "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
@@ -22268,22 +22327,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22272 "parser_cocci_menhir.ml"
+# 22331 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 22279 "parser_cocci_menhir.ml"
+# 22338 "parser_cocci_menhir.ml"
           
         in
         
-# 1042 "parser_cocci_menhir.mly"
+# 1071 "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)) )
-# 22287 "parser_cocci_menhir.ml"
+# 22346 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22317,9 +22376,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22323 "parser_cocci_menhir.ml"
+# 22382 "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
@@ -22330,7 +22389,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 22334 "parser_cocci_menhir.ml"
+# 22393 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -22338,15 +22397,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22342 "parser_cocci_menhir.ml"
+# 22401 "parser_cocci_menhir.ml"
           
         in
         
-# 1042 "parser_cocci_menhir.mly"
+# 1071 "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)) )
-# 22350 "parser_cocci_menhir.ml"
+# 22409 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22385,9 +22444,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22391 "parser_cocci_menhir.ml"
+# 22450 "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
@@ -22400,7 +22459,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22404 "parser_cocci_menhir.ml"
+# 22463 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -22408,15 +22467,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22412 "parser_cocci_menhir.ml"
+# 22471 "parser_cocci_menhir.ml"
           
         in
         
-# 1042 "parser_cocci_menhir.mly"
+# 1071 "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)) )
-# 22420 "parser_cocci_menhir.ml"
+# 22479 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22455,15 +22514,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22461 "parser_cocci_menhir.ml"
+# 22520 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22467 "parser_cocci_menhir.ml"
+# 22526 "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
@@ -22473,24 +22532,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 22477 "parser_cocci_menhir.ml"
+# 22536 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 22484 "parser_cocci_menhir.ml"
+# 22543 "parser_cocci_menhir.ml"
           
         in
         
-# 1047 "parser_cocci_menhir.mly"
+# 1076 "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)) )
-# 22494 "parser_cocci_menhir.ml"
+# 22553 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22534,15 +22593,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22540 "parser_cocci_menhir.ml"
+# 22599 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22546 "parser_cocci_menhir.ml"
+# 22605 "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
@@ -22554,24 +22613,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22558 "parser_cocci_menhir.ml"
+# 22617 "parser_cocci_menhir.ml"
           
         in
         let s =
           
 # 39 "standard.mly"
     ( None )
-# 22565 "parser_cocci_menhir.ml"
+# 22624 "parser_cocci_menhir.ml"
           
         in
         
-# 1047 "parser_cocci_menhir.mly"
+# 1076 "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)) )
-# 22575 "parser_cocci_menhir.ml"
+# 22634 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22615,15 +22674,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22621 "parser_cocci_menhir.ml"
+# 22680 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22627 "parser_cocci_menhir.ml"
+# 22686 "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
@@ -22634,7 +22693,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 22638 "parser_cocci_menhir.ml"
+# 22697 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -22642,17 +22701,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22646 "parser_cocci_menhir.ml"
+# 22705 "parser_cocci_menhir.ml"
           
         in
         
-# 1047 "parser_cocci_menhir.mly"
+# 1076 "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)) )
-# 22656 "parser_cocci_menhir.ml"
+# 22715 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22701,15 +22760,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22707 "parser_cocci_menhir.ml"
+# 22766 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22713 "parser_cocci_menhir.ml"
+# 22772 "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
@@ -22722,7 +22781,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22726 "parser_cocci_menhir.ml"
+# 22785 "parser_cocci_menhir.ml"
           
         in
         let s =
@@ -22730,17 +22789,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22734 "parser_cocci_menhir.ml"
+# 22793 "parser_cocci_menhir.ml"
           
         in
         
-# 1047 "parser_cocci_menhir.mly"
+# 1076 "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)) )
-# 22744 "parser_cocci_menhir.ml"
+# 22803 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22799,36 +22858,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22805 "parser_cocci_menhir.ml"
+# 22864 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let rp2 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22810 "parser_cocci_menhir.ml"
+# 22869 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22816 "parser_cocci_menhir.ml"
+# 22875 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22821 "parser_cocci_menhir.ml"
+# 22880 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22827 "parser_cocci_menhir.ml"
+# 22886 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22832 "parser_cocci_menhir.ml"
+# 22891 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let _startpos = _startpos_t_ in
@@ -22837,11 +22896,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 22841 "parser_cocci_menhir.ml"
+# 22900 "parser_cocci_menhir.ml"
           
         in
         
-# 1057 "parser_cocci_menhir.mly"
+# 1086 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -22849,7 +22908,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)) )
-# 22853 "parser_cocci_menhir.ml"
+# 22912 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -22913,36 +22972,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22919 "parser_cocci_menhir.ml"
+# 22978 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let rp2 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22924 "parser_cocci_menhir.ml"
+# 22983 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22930 "parser_cocci_menhir.ml"
+# 22989 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22935 "parser_cocci_menhir.ml"
+# 22994 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22941 "parser_cocci_menhir.ml"
+# 23000 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 22946 "parser_cocci_menhir.ml"
+# 23005 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let x0 : 'tv_storage = Obj.magic x0 in
@@ -22953,11 +23012,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 22957 "parser_cocci_menhir.ml"
+# 23016 "parser_cocci_menhir.ml"
           
         in
         
-# 1057 "parser_cocci_menhir.mly"
+# 1086 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -22965,7 +23024,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)) )
-# 22969 "parser_cocci_menhir.ml"
+# 23028 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23004,29 +23063,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _5 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23010 "parser_cocci_menhir.ml"
+# 23069 "parser_cocci_menhir.ml"
         ) = Obj.magic _5 in
         let _4 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23015 "parser_cocci_menhir.ml"
+# 23074 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr_list_option = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23021 "parser_cocci_menhir.ml"
+# 23080 "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 = 
-# 1065 "parser_cocci_menhir.mly"
+# 1094 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.MacroDecl(_1,P.clt2mcode "(" _2,_3,
                                  P.clt2mcode ")" _4,P.clt2mcode ";" _5)) )
-# 23030 "parser_cocci_menhir.ml"
+# 23089 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23095,42 +23154,42 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23101 "parser_cocci_menhir.ml"
+# 23160 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23107 "parser_cocci_menhir.ml"
+# 23166 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let rp2 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23112 "parser_cocci_menhir.ml"
+# 23171 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23118 "parser_cocci_menhir.ml"
+# 23177 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23123 "parser_cocci_menhir.ml"
+# 23182 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23129 "parser_cocci_menhir.ml"
+# 23188 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23134 "parser_cocci_menhir.ml"
+# 23193 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let _startpos = _startpos_t_ in
@@ -23139,11 +23198,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 23143 "parser_cocci_menhir.ml"
+# 23202 "parser_cocci_menhir.ml"
           
         in
         
-# 1071 "parser_cocci_menhir.mly"
+# 1100 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -23151,7 +23210,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)))
-# 23155 "parser_cocci_menhir.ml"
+# 23214 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23225,42 +23284,42 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23231 "parser_cocci_menhir.ml"
+# 23290 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let e : 'tv_initialize = Obj.magic e in
         let q : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23237 "parser_cocci_menhir.ml"
+# 23296 "parser_cocci_menhir.ml"
         ) = Obj.magic q in
         let rp2 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23242 "parser_cocci_menhir.ml"
+# 23301 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23248 "parser_cocci_menhir.ml"
+# 23307 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23253 "parser_cocci_menhir.ml"
+# 23312 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23259 "parser_cocci_menhir.ml"
+# 23318 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 23264 "parser_cocci_menhir.ml"
+# 23323 "parser_cocci_menhir.ml"
         ) = Obj.magic lp1 in
         let t : 'tv_ctype = Obj.magic t in
         let x0 : 'tv_storage = Obj.magic x0 in
@@ -23271,11 +23330,11 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 23275 "parser_cocci_menhir.ml"
+# 23334 "parser_cocci_menhir.ml"
           
         in
         
-# 1071 "parser_cocci_menhir.mly"
+# 1100 "parser_cocci_menhir.mly"
       ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -23283,7 +23342,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)))
-# 23287 "parser_cocci_menhir.ml"
+# 23346 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23300,7 +23359,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_TLocal_ = 
 # 29 "standard.mly"
     ( None )
-# 23304 "parser_cocci_menhir.ml"
+# 23363 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23324,7 +23383,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_TLocal_ = 
 # 31 "standard.mly"
     ( Some x )
-# 23328 "parser_cocci_menhir.ml"
+# 23387 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23341,7 +23400,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_TPosAny_ = 
 # 29 "standard.mly"
     ( None )
-# 23345 "parser_cocci_menhir.ml"
+# 23404 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23365,7 +23424,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_TPosAny_ = 
 # 31 "standard.mly"
     ( Some x )
-# 23369 "parser_cocci_menhir.ml"
+# 23428 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23382,7 +23441,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_eexpr_ = 
 # 29 "standard.mly"
     ( None )
-# 23386 "parser_cocci_menhir.ml"
+# 23445 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23406,7 +23465,48 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_eexpr_ = 
 # 31 "standard.mly"
     ( Some x )
-# 23410 "parser_cocci_menhir.ml"
+# 23469 "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_option_not_ceq_or_sub_ = 
+# 29 "standard.mly"
+    ( None )
+# 23486 "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 : 'tv_not_ceq_or_sub = Obj.magic x in
+        let _startpos = _startpos_x_ in
+        let _endpos = _endpos_x_ in
+        let _v : 'tv_option_not_ceq_or_sub_ = 
+# 31 "standard.mly"
+    ( Some x )
+# 23510 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23420,10 +23520,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_option_re_or_not_eqe_ = 
+        let _v : 'tv_option_re_or_not_eqe_or_sub_ = 
 # 29 "standard.mly"
     ( None )
-# 23427 "parser_cocci_menhir.ml"
+# 23527 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23441,13 +23541,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos_x_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let x : 'tv_re_or_not_eqe = Obj.magic x in
+        let x : 'tv_re_or_not_eqe_or_sub = Obj.magic x in
         let _startpos = _startpos_x_ in
         let _endpos = _endpos_x_ in
-        let _v : 'tv_option_re_or_not_eqe_ = 
+        let _v : 'tv_option_re_or_not_eqe_or_sub_ = 
 # 31 "standard.mly"
     ( Some x )
-# 23451 "parser_cocci_menhir.ml"
+# 23551 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23464,7 +23564,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_re_or_not_eqid_ = 
 # 29 "standard.mly"
     ( None )
-# 23468 "parser_cocci_menhir.ml"
+# 23568 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23488,7 +23588,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_option_re_or_not_eqid_ = 
 # 31 "standard.mly"
     ( Some x )
-# 23492 "parser_cocci_menhir.ml"
+# 23592 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23503,9 +23603,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 = 
-# 1790 "parser_cocci_menhir.mly"
+# 1859 "parser_cocci_menhir.mly"
                                                                          ([])
-# 23509 "parser_cocci_menhir.ml"
+# 23609 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23531,9 +23631,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_dots = 
-# 1791 "parser_cocci_menhir.mly"
+# 1860 "parser_cocci_menhir.mly"
                                                                          (_2)
-# 23537 "parser_cocci_menhir.ml"
+# 23637 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23561,9 +23661,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_dots = 
-# 1793 "parser_cocci_menhir.mly"
+# 1862 "parser_cocci_menhir.mly"
                      ( (Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Exp(_1)))))::_2 )
-# 23567 "parser_cocci_menhir.ml"
+# 23667 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23591,9 +23691,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_dots = 
-# 1794 "parser_cocci_menhir.mly"
+# 1863 "parser_cocci_menhir.mly"
                                              ( Ast0.wrap(Ast0.DECL(_1))::_2 )
-# 23597 "parser_cocci_menhir.ml"
+# 23697 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23621,9 +23721,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_dots = 
-# 1796 "parser_cocci_menhir.mly"
+# 1865 "parser_cocci_menhir.mly"
                 ( (List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1)@_2 )
-# 23627 "parser_cocci_menhir.ml"
+# 23727 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23638,9 +23738,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 = 
-# 1786 "parser_cocci_menhir.mly"
+# 1855 "parser_cocci_menhir.mly"
                                                                          ([])
-# 23644 "parser_cocci_menhir.ml"
+# 23744 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23668,9 +23768,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_exp = 
-# 1787 "parser_cocci_menhir.mly"
+# 1856 "parser_cocci_menhir.mly"
                                           ( (Ast0.wrap(Ast0.OTHER(_1)))::_2 )
-# 23674 "parser_cocci_menhir.ml"
+# 23774 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23685,9 +23785,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 = 
-# 1799 "parser_cocci_menhir.mly"
+# 1868 "parser_cocci_menhir.mly"
                                                                          ([])
-# 23691 "parser_cocci_menhir.ml"
+# 23791 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23715,9 +23815,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_stm = 
-# 1800 "parser_cocci_menhir.mly"
+# 1869 "parser_cocci_menhir.mly"
                                           ( (Ast0.wrap(Ast0.OTHER(_1)))::_2 )
-# 23721 "parser_cocci_menhir.ml"
+# 23821 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23745,9 +23845,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_stm = 
-# 1801 "parser_cocci_menhir.mly"
+# 1870 "parser_cocci_menhir.mly"
                                              ( Ast0.wrap(Ast0.DECL(_1))::_2 )
-# 23751 "parser_cocci_menhir.ml"
+# 23851 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23775,9 +23875,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_after_stm = 
-# 1803 "parser_cocci_menhir.mly"
+# 1872 "parser_cocci_menhir.mly"
                 ( (List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1)@_2 )
-# 23781 "parser_cocci_menhir.ml"
+# 23881 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23805,9 +23905,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_f_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_plus_body = 
-# 638 "parser_cocci_menhir.mly"
+# 665 "parser_cocci_menhir.mly"
     ( Top_level.top_level (f@b(*@ew*)) )
-# 23811 "parser_cocci_menhir.ml"
+# 23911 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23835,9 +23935,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_f_ in
         let _endpos = _endpos_b_ in
         let _v : 'tv_plus_exp_body = 
-# 652 "parser_cocci_menhir.mly"
+# 679 "parser_cocci_menhir.mly"
     ( Top_level.top_level (f@[b](*@ew*)) )
-# 23841 "parser_cocci_menhir.ml"
+# 23941 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23863,13 +23963,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 144 "parser_cocci_menhir.mly"
+# 166 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 23869 "parser_cocci_menhir.ml"
+# 23969 "parser_cocci_menhir.ml"
         ) = 
-# 180 "parser_cocci_menhir.mly"
+# 202 "parser_cocci_menhir.mly"
                                  ( _1 )
-# 23873 "parser_cocci_menhir.ml"
+# 23973 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23895,13 +23995,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_p_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 144 "parser_cocci_menhir.mly"
+# 166 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 23901 "parser_cocci_menhir.ml"
+# 24001 "parser_cocci_menhir.ml"
         ) = 
-# 180 "parser_cocci_menhir.mly"
+# 202 "parser_cocci_menhir.mly"
                                                                     ( p )
-# 23905 "parser_cocci_menhir.ml"
+# 24005 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23927,13 +24027,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_p_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 144 "parser_cocci_menhir.mly"
+# 166 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 23933 "parser_cocci_menhir.ml"
+# 24033 "parser_cocci_menhir.ml"
         ) = 
-# 181 "parser_cocci_menhir.mly"
+# 203 "parser_cocci_menhir.mly"
                         ( p )
-# 23937 "parser_cocci_menhir.ml"
+# 24037 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23959,13 +24059,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 141 "parser_cocci_menhir.mly"
+# 163 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 23965 "parser_cocci_menhir.ml"
+# 24065 "parser_cocci_menhir.ml"
         ) = 
-# 176 "parser_cocci_menhir.mly"
+# 198 "parser_cocci_menhir.mly"
                          ( _1 )
-# 23969 "parser_cocci_menhir.ml"
+# 24069 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -23991,13 +24091,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_p_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 141 "parser_cocci_menhir.mly"
+# 163 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 23997 "parser_cocci_menhir.ml"
+# 24097 "parser_cocci_menhir.ml"
         ) = 
-# 176 "parser_cocci_menhir.mly"
+# 198 "parser_cocci_menhir.mly"
                                                         ( p )
-# 24001 "parser_cocci_menhir.ml"
+# 24101 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24023,13 +24123,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_p_ in
         let _endpos = _endpos__2_ in
         let _v : (
-# 141 "parser_cocci_menhir.mly"
+# 163 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 24029 "parser_cocci_menhir.ml"
+# 24129 "parser_cocci_menhir.ml"
         ) = 
-# 177 "parser_cocci_menhir.mly"
+# 199 "parser_cocci_menhir.mly"
                     ( p )
-# 24033 "parser_cocci_menhir.ml"
+# 24133 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24051,9 +24151,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_plus_start = 
-# 1775 "parser_cocci_menhir.mly"
+# 1844 "parser_cocci_menhir.mly"
                           ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Ty(_1))))] )
-# 24057 "parser_cocci_menhir.ml"
+# 24157 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24075,9 +24175,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_plus_start = 
-# 1776 "parser_cocci_menhir.mly"
+# 1845 "parser_cocci_menhir.mly"
                      ( [Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.TopInit(_1))))] )
-# 24081 "parser_cocci_menhir.ml"
+# 24181 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24105,9 +24205,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_start = 
-# 1778 "parser_cocci_menhir.mly"
+# 1847 "parser_cocci_menhir.mly"
                                           ( (Ast0.wrap(Ast0.OTHER(_1)))::_2 )
-# 24111 "parser_cocci_menhir.ml"
+# 24211 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24135,9 +24235,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_start = 
-# 1780 "parser_cocci_menhir.mly"
+# 1849 "parser_cocci_menhir.mly"
                      ( (Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Exp(_1)))))::_2 )
-# 24141 "parser_cocci_menhir.ml"
+# 24241 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24165,9 +24265,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_start = 
-# 1781 "parser_cocci_menhir.mly"
+# 1850 "parser_cocci_menhir.mly"
                                              ( Ast0.wrap(Ast0.DECL(_1))::_2 )
-# 24171 "parser_cocci_menhir.ml"
+# 24271 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24195,9 +24295,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_plus_start = 
-# 1783 "parser_cocci_menhir.mly"
+# 1852 "parser_cocci_menhir.mly"
                 ( (List.map (function x -> Ast0.wrap(Ast0.OTHER(x))) _1)@_2 )
-# 24201 "parser_cocci_menhir.ml"
+# 24301 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24216,16 +24316,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 24222 "parser_cocci_menhir.ml"
+# 24322 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pnrule = 
-# 231 "parser_cocci_menhir.mly"
+# 253 "parser_cocci_menhir.mly"
                    ( Ast.Dep      _1 )
-# 24229 "parser_cocci_menhir.ml"
+# 24329 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24248,16 +24348,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 24254 "parser_cocci_menhir.ml"
+# 24354 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_pnrule = 
-# 232 "parser_cocci_menhir.mly"
+# 254 "parser_cocci_menhir.mly"
                    ( Ast.AntiDep  _2 )
-# 24261 "parser_cocci_menhir.ml"
+# 24361 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24280,16 +24380,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 24286 "parser_cocci_menhir.ml"
+# 24386 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_pnrule = 
-# 233 "parser_cocci_menhir.mly"
+# 255 "parser_cocci_menhir.mly"
                    ( Ast.EverDep  _2 )
-# 24293 "parser_cocci_menhir.ml"
+# 24393 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24312,16 +24412,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 24318 "parser_cocci_menhir.ml"
+# 24418 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_pnrule = 
-# 234 "parser_cocci_menhir.mly"
+# 256 "parser_cocci_menhir.mly"
                    ( Ast.NeverDep _2 )
-# 24325 "parser_cocci_menhir.ml"
+# 24425 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24351,9 +24451,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_pnrule = 
-# 235 "parser_cocci_menhir.mly"
+# 257 "parser_cocci_menhir.mly"
                    ( _2 )
-# 24357 "parser_cocci_menhir.ml"
+# 24457 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24375,9 +24475,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_ = 
-# 1343 "parser_cocci_menhir.mly"
+# 1372 "parser_cocci_menhir.mly"
                                                  ( _1 )
-# 24381 "parser_cocci_menhir.ml"
+# 24481 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24411,24 +24511,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _4 : (
-# 103 "parser_cocci_menhir.mly"
+# 125 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24417 "parser_cocci_menhir.ml"
+# 24517 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr = Obj.magic _3 in
         let _2 : (
-# 103 "parser_cocci_menhir.mly"
+# 125 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24423 "parser_cocci_menhir.ml"
+# 24523 "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_ = 
-# 1345 "parser_cocci_menhir.mly"
+# 1374 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3,
                                       P.clt2mcode "]" _4)) )
-# 24432 "parser_cocci_menhir.ml"
+# 24532 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24458,17 +24558,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_ident = Obj.magic _3 in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24464 "parser_cocci_menhir.ml"
+# 24564 "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_ = 
-# 1348 "parser_cocci_menhir.mly"
+# 1377 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) )
-# 24472 "parser_cocci_menhir.ml"
+# 24572 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24498,18 +24598,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_ident = Obj.magic _3 in
         let _2 : (
-# 105 "parser_cocci_menhir.mly"
+# 127 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24504 "parser_cocci_menhir.ml"
+# 24604 "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_ = 
-# 1350 "parser_cocci_menhir.mly"
+# 1379 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2,
                                     _3)) )
-# 24513 "parser_cocci_menhir.ml"
+# 24613 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24533,17 +24633,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24539 "parser_cocci_menhir.ml"
+# 24639 "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_ = 
-# 1353 "parser_cocci_menhir.mly"
+# 1382 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) )
-# 24547 "parser_cocci_menhir.ml"
+# 24647 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24567,17 +24667,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24573 "parser_cocci_menhir.ml"
+# 24673 "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_ = 
-# 1355 "parser_cocci_menhir.mly"
+# 1384 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) )
-# 24581 "parser_cocci_menhir.ml"
+# 24681 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24611,25 +24711,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _4 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24617 "parser_cocci_menhir.ml"
+# 24717 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr_list_option = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24623 "parser_cocci_menhir.ml"
+# 24723 "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_ = 
-# 1357 "parser_cocci_menhir.mly"
+# 1386 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2,
                              _3,
                              P.clt2mcode ")" _4)) )
-# 24633 "parser_cocci_menhir.ml"
+# 24733 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24651,9 +24751,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_postfix_expr_eexpr_invalid_ = 
-# 1343 "parser_cocci_menhir.mly"
+# 1372 "parser_cocci_menhir.mly"
                                                  ( _1 )
-# 24657 "parser_cocci_menhir.ml"
+# 24757 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24687,24 +24787,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _4 : (
-# 103 "parser_cocci_menhir.mly"
+# 125 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24693 "parser_cocci_menhir.ml"
+# 24793 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr = Obj.magic _3 in
         let _2 : (
-# 103 "parser_cocci_menhir.mly"
+# 125 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24699 "parser_cocci_menhir.ml"
+# 24799 "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_ = 
-# 1345 "parser_cocci_menhir.mly"
+# 1374 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3,
                                       P.clt2mcode "]" _4)) )
-# 24708 "parser_cocci_menhir.ml"
+# 24808 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24734,17 +24834,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_ident = Obj.magic _3 in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24740 "parser_cocci_menhir.ml"
+# 24840 "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_ = 
-# 1348 "parser_cocci_menhir.mly"
+# 1377 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) )
-# 24748 "parser_cocci_menhir.ml"
+# 24848 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24774,18 +24874,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_ident = Obj.magic _3 in
         let _2 : (
-# 105 "parser_cocci_menhir.mly"
+# 127 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24780 "parser_cocci_menhir.ml"
+# 24880 "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_ = 
-# 1350 "parser_cocci_menhir.mly"
+# 1379 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2,
                                     _3)) )
-# 24789 "parser_cocci_menhir.ml"
+# 24889 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24809,17 +24909,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24815 "parser_cocci_menhir.ml"
+# 24915 "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_ = 
-# 1353 "parser_cocci_menhir.mly"
+# 1382 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) )
-# 24823 "parser_cocci_menhir.ml"
+# 24923 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24843,17 +24943,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24849 "parser_cocci_menhir.ml"
+# 24949 "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_ = 
-# 1355 "parser_cocci_menhir.mly"
+# 1384 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) )
-# 24857 "parser_cocci_menhir.ml"
+# 24957 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24887,25 +24987,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _4 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24893 "parser_cocci_menhir.ml"
+# 24993 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr_list_option = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24899 "parser_cocci_menhir.ml"
+# 24999 "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_ = 
-# 1357 "parser_cocci_menhir.mly"
+# 1386 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2,
                              _3,
                              P.clt2mcode ")" _4)) )
-# 24909 "parser_cocci_menhir.ml"
+# 25009 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24927,9 +25027,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_ = 
-# 1343 "parser_cocci_menhir.mly"
+# 1372 "parser_cocci_menhir.mly"
                                                  ( _1 )
-# 24933 "parser_cocci_menhir.ml"
+# 25033 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -24963,24 +25063,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _4 : (
-# 103 "parser_cocci_menhir.mly"
+# 125 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24969 "parser_cocci_menhir.ml"
+# 25069 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr = Obj.magic _3 in
         let _2 : (
-# 103 "parser_cocci_menhir.mly"
+# 125 "parser_cocci_menhir.mly"
        (Data.clt)
-# 24975 "parser_cocci_menhir.ml"
+# 25075 "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_ = 
-# 1345 "parser_cocci_menhir.mly"
+# 1374 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3,
                                       P.clt2mcode "]" _4)) )
-# 24984 "parser_cocci_menhir.ml"
+# 25084 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25010,253 +25110,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_ident = Obj.magic _3 in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25016 "parser_cocci_menhir.ml"
+# 25116 "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_ = 
-# 1348 "parser_cocci_menhir.mly"
+# 1377 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) )
-# 25024 "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_ident = Obj.magic _3 in
-        let _2 : (
-# 105 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 25056 "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_ = 
-# 1350 "parser_cocci_menhir.mly"
-     ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2,
-                                    _3)) )
-# 25065 "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)
-# 25091 "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_ = 
-# 1353 "parser_cocci_menhir.mly"
-     ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) )
-# 25099 "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)
-# 25125 "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_ = 
-# 1355 "parser_cocci_menhir.mly"
-     ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) )
-# 25133 "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 = _4;
-          MenhirLib.EngineTypes.startp = _startpos__4_;
-          MenhirLib.EngineTypes.endp = _endpos__4_;
-          MenhirLib.EngineTypes.next = {
-            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 _4 : (
-# 78 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 25169 "parser_cocci_menhir.ml"
-        ) = Obj.magic _4 in
-        let _3 : 'tv_eexpr_list_option = Obj.magic _3 in
-        let _2 : (
-# 77 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 25175 "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_ = 
-# 1357 "parser_cocci_menhir.mly"
-     ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2,
-                             _3,
-                             P.clt2mcode ")" _4)) )
-# 25185 "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_primary_expr_expr_invalid_ = Obj.magic _1 in
-        let _startpos = _startpos__1_ in
-        let _endpos = _endpos__1_ in
-        let _v : 'tv_postfix_expr_expr_invalid_ = 
-# 1343 "parser_cocci_menhir.mly"
-                                                 ( _1 )
-# 25209 "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 = _4;
-          MenhirLib.EngineTypes.startp = _startpos__4_;
-          MenhirLib.EngineTypes.endp = _endpos__4_;
-          MenhirLib.EngineTypes.next = {
-            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 _4 : (
-# 103 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 25245 "parser_cocci_menhir.ml"
-        ) = Obj.magic _4 in
-        let _3 : 'tv_eexpr = Obj.magic _3 in
-        let _2 : (
-# 103 "parser_cocci_menhir.mly"
-       (Data.clt)
-# 25251 "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_ = 
-# 1345 "parser_cocci_menhir.mly"
-     ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3,
-                                      P.clt2mcode "]" _4)) )
-# 25260 "parser_cocci_menhir.ml"
+# 25124 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25286,17 +25150,253 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_ident = Obj.magic _3 in
         let _2 : (
+# 127 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 25156 "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_ = 
+# 1379 "parser_cocci_menhir.mly"
+     ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2,
+                                    _3)) )
+# 25165 "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 : (
 # 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25292 "parser_cocci_menhir.ml"
+# 25191 "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_ = 
+# 1382 "parser_cocci_menhir.mly"
+     ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) )
+# 25199 "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 : (
+# 108 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 25225 "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_ = 
+# 1384 "parser_cocci_menhir.mly"
+     ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) )
+# 25233 "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 = _4;
+          MenhirLib.EngineTypes.startp = _startpos__4_;
+          MenhirLib.EngineTypes.endp = _endpos__4_;
+          MenhirLib.EngineTypes.next = {
+            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 _4 : (
+# 100 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 25269 "parser_cocci_menhir.ml"
+        ) = Obj.magic _4 in
+        let _3 : 'tv_eexpr_list_option = Obj.magic _3 in
+        let _2 : (
+# 99 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 25275 "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_ = 
+# 1386 "parser_cocci_menhir.mly"
+     ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2,
+                             _3,
+                             P.clt2mcode ")" _4)) )
+# 25285 "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_primary_expr_expr_invalid_ = Obj.magic _1 in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__1_ in
+        let _v : 'tv_postfix_expr_expr_invalid_ = 
+# 1372 "parser_cocci_menhir.mly"
+                                                 ( _1 )
+# 25309 "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 = _4;
+          MenhirLib.EngineTypes.startp = _startpos__4_;
+          MenhirLib.EngineTypes.endp = _endpos__4_;
+          MenhirLib.EngineTypes.next = {
+            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 _4 : (
+# 125 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 25345 "parser_cocci_menhir.ml"
+        ) = Obj.magic _4 in
+        let _3 : 'tv_eexpr = Obj.magic _3 in
+        let _2 : (
+# 125 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 25351 "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_ = 
+# 1374 "parser_cocci_menhir.mly"
+     ( Ast0.wrap(Ast0.ArrayAccess (_1,P.clt2mcode "[" _2,_3,
+                                      P.clt2mcode "]" _4)) )
+# 25360 "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_ident = Obj.magic _3 in
+        let _2 : (
+# 130 "parser_cocci_menhir.mly"
+       (Data.clt)
+# 25392 "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_ = 
-# 1348 "parser_cocci_menhir.mly"
+# 1377 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.RecordAccess(_1, P.clt2mcode "." _2, _3)) )
-# 25300 "parser_cocci_menhir.ml"
+# 25400 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25326,18 +25426,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_ident = Obj.magic _3 in
         let _2 : (
-# 105 "parser_cocci_menhir.mly"
+# 127 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25332 "parser_cocci_menhir.ml"
+# 25432 "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_ = 
-# 1350 "parser_cocci_menhir.mly"
+# 1379 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.RecordPtAccess(_1, P.clt2mcode "->" _2,
                                     _3)) )
-# 25341 "parser_cocci_menhir.ml"
+# 25441 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25361,17 +25461,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25367 "parser_cocci_menhir.ml"
+# 25467 "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_ = 
-# 1353 "parser_cocci_menhir.mly"
+# 1382 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Inc _2)) )
-# 25375 "parser_cocci_menhir.ml"
+# 25475 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25395,17 +25495,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25401 "parser_cocci_menhir.ml"
+# 25501 "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_ = 
-# 1355 "parser_cocci_menhir.mly"
+# 1384 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Postfix (_1, P.clt2mcode Ast.Dec _2)) )
-# 25409 "parser_cocci_menhir.ml"
+# 25509 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25439,25 +25539,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _4 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25445 "parser_cocci_menhir.ml"
+# 25545 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr_list_option = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25451 "parser_cocci_menhir.ml"
+# 25551 "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_ = 
-# 1357 "parser_cocci_menhir.mly"
+# 1386 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.FunCall(_1,P.clt2mcode "(" _2,
                              _3,
                              P.clt2mcode ")" _4)) )
-# 25461 "parser_cocci_menhir.ml"
+# 25561 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25479,9 +25579,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_ = 
-# 1362 "parser_cocci_menhir.mly"
+# 1391 "parser_cocci_menhir.mly"
                 ( Ast0.wrap(Ast0.Ident(_1)) )
-# 25485 "parser_cocci_menhir.ml"
+# 25585 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25500,17 +25600,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 25506 "parser_cocci_menhir.ml"
+# 25606 "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_ = 
-# 1364 "parser_cocci_menhir.mly"
+# 1393 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) )
-# 25514 "parser_cocci_menhir.ml"
+# 25614 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25529,17 +25629,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 25535 "parser_cocci_menhir.ml"
+# 25635 "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_ = 
-# 1367 "parser_cocci_menhir.mly"
+# 1396 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) )
-# 25543 "parser_cocci_menhir.ml"
+# 25643 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25558,17 +25658,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 25564 "parser_cocci_menhir.ml"
+# 25664 "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_ = 
-# 1370 "parser_cocci_menhir.mly"
+# 1399 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) )
-# 25572 "parser_cocci_menhir.ml"
+# 25672 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25587,17 +25687,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 25593 "parser_cocci_menhir.ml"
+# 25693 "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_ = 
-# 1373 "parser_cocci_menhir.mly"
+# 1402 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) )
-# 25601 "parser_cocci_menhir.ml"
+# 25701 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25616,18 +25716,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 25622 "parser_cocci_menhir.ml"
+# 25722 "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_ = 
-# 1376 "parser_cocci_menhir.mly"
+# 1405 "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)) )
-# 25631 "parser_cocci_menhir.ml"
+# 25731 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25646,17 +25746,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 64 "parser_cocci_menhir.mly"
+# 86 "parser_cocci_menhir.mly"
        (Parse_aux.expinfo)
-# 25652 "parser_cocci_menhir.ml"
+# 25752 "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_ = 
-# 1380 "parser_cocci_menhir.mly"
+# 1409 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,clt) = _1 in
      Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) )
-# 25660 "parser_cocci_menhir.ml"
+# 25760 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25675,18 +25775,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 25681 "parser_cocci_menhir.ml"
+# 25781 "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_ = 
-# 1383 "parser_cocci_menhir.mly"
+# 1412 "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)) )
-# 25690 "parser_cocci_menhir.ml"
+# 25790 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25705,18 +25805,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 25711 "parser_cocci_menhir.ml"
+# 25811 "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_ = 
-# 1387 "parser_cocci_menhir.mly"
+# 1416 "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)) )
-# 25720 "parser_cocci_menhir.ml"
+# 25820 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25735,18 +25835,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 25741 "parser_cocci_menhir.ml"
+# 25841 "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"
+# 1420 "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)) )
-# 25750 "parser_cocci_menhir.ml"
+# 25850 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25775,23 +25875,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25781 "parser_cocci_menhir.ml"
+# 25881 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25787 "parser_cocci_menhir.ml"
+# 25887 "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_ = 
-# 1395 "parser_cocci_menhir.mly"
+# 1424 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2,
                            P.clt2mcode ")" _3)) )
-# 25795 "parser_cocci_menhir.ml"
+# 25895 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25820,25 +25920,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25826 "parser_cocci_menhir.ml"
+# 25926 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_midzero_list_eexpr_eexpr_ = Obj.magic _2 in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 25832 "parser_cocci_menhir.ml"
+# 25932 "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_ = 
-# 1398 "parser_cocci_menhir.mly"
+# 1427 "parser_cocci_menhir.mly"
      ( let (mids,code) = _2 in
        Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1,
                               code, mids,
                               P.clt2mcode ")" _3)) )
-# 25842 "parser_cocci_menhir.ml"
+# 25942 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25860,9 +25960,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_ = 
-# 1402 "parser_cocci_menhir.mly"
+# 1431 "parser_cocci_menhir.mly"
                  ( _1 )
-# 25866 "parser_cocci_menhir.ml"
+# 25966 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25884,9 +25984,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_invalid_ = 
-# 1362 "parser_cocci_menhir.mly"
+# 1391 "parser_cocci_menhir.mly"
                 ( Ast0.wrap(Ast0.Ident(_1)) )
-# 25890 "parser_cocci_menhir.ml"
+# 25990 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25905,17 +26005,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 25911 "parser_cocci_menhir.ml"
+# 26011 "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_ = 
-# 1364 "parser_cocci_menhir.mly"
+# 1393 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) )
-# 25919 "parser_cocci_menhir.ml"
+# 26019 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25934,17 +26034,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 25940 "parser_cocci_menhir.ml"
+# 26040 "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_ = 
-# 1367 "parser_cocci_menhir.mly"
+# 1396 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) )
-# 25948 "parser_cocci_menhir.ml"
+# 26048 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25963,17 +26063,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 25969 "parser_cocci_menhir.ml"
+# 26069 "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_ = 
-# 1370 "parser_cocci_menhir.mly"
+# 1399 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) )
-# 25977 "parser_cocci_menhir.ml"
+# 26077 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -25992,17 +26092,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 25998 "parser_cocci_menhir.ml"
+# 26098 "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_ = 
-# 1373 "parser_cocci_menhir.mly"
+# 1402 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) )
-# 26006 "parser_cocci_menhir.ml"
+# 26106 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26021,18 +26121,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26027 "parser_cocci_menhir.ml"
+# 26127 "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_ = 
-# 1376 "parser_cocci_menhir.mly"
+# 1405 "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)) )
-# 26036 "parser_cocci_menhir.ml"
+# 26136 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26051,17 +26151,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 64 "parser_cocci_menhir.mly"
+# 86 "parser_cocci_menhir.mly"
        (Parse_aux.expinfo)
-# 26057 "parser_cocci_menhir.ml"
+# 26157 "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_ = 
-# 1380 "parser_cocci_menhir.mly"
+# 1409 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,clt) = _1 in
      Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) )
-# 26065 "parser_cocci_menhir.ml"
+# 26165 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26080,18 +26180,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26086 "parser_cocci_menhir.ml"
+# 26186 "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_ = 
-# 1383 "parser_cocci_menhir.mly"
+# 1412 "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)) )
-# 26095 "parser_cocci_menhir.ml"
+# 26195 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26110,18 +26210,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26116 "parser_cocci_menhir.ml"
+# 26216 "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_ = 
-# 1387 "parser_cocci_menhir.mly"
+# 1416 "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)) )
-# 26125 "parser_cocci_menhir.ml"
+# 26225 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26140,18 +26240,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26146 "parser_cocci_menhir.ml"
+# 26246 "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"
+# 1420 "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)) )
-# 26155 "parser_cocci_menhir.ml"
+# 26255 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26180,23 +26280,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26186 "parser_cocci_menhir.ml"
+# 26286 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26192 "parser_cocci_menhir.ml"
+# 26292 "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_ = 
-# 1395 "parser_cocci_menhir.mly"
+# 1424 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2,
                            P.clt2mcode ")" _3)) )
-# 26200 "parser_cocci_menhir.ml"
+# 26300 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26225,25 +26325,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26231 "parser_cocci_menhir.ml"
+# 26331 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_midzero_list_eexpr_eexpr_ = Obj.magic _2 in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26237 "parser_cocci_menhir.ml"
+# 26337 "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_ = 
-# 1398 "parser_cocci_menhir.mly"
+# 1427 "parser_cocci_menhir.mly"
      ( let (mids,code) = _2 in
        Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1,
                               code, mids,
                               P.clt2mcode ")" _3)) )
-# 26247 "parser_cocci_menhir.ml"
+# 26347 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26265,9 +26365,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_eexpr_invalid_ = 
-# 1402 "parser_cocci_menhir.mly"
+# 1431 "parser_cocci_menhir.mly"
                  ( _1 )
-# 26271 "parser_cocci_menhir.ml"
+# 26371 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26289,9 +26389,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_ = 
-# 1362 "parser_cocci_menhir.mly"
+# 1391 "parser_cocci_menhir.mly"
                 ( Ast0.wrap(Ast0.Ident(_1)) )
-# 26295 "parser_cocci_menhir.ml"
+# 26395 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26310,17 +26410,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26316 "parser_cocci_menhir.ml"
+# 26416 "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_ = 
-# 1364 "parser_cocci_menhir.mly"
+# 1393 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) )
-# 26324 "parser_cocci_menhir.ml"
+# 26424 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26339,17 +26439,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26345 "parser_cocci_menhir.ml"
+# 26445 "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_ = 
-# 1367 "parser_cocci_menhir.mly"
+# 1396 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) )
-# 26353 "parser_cocci_menhir.ml"
+# 26453 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26368,17 +26468,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26374 "parser_cocci_menhir.ml"
+# 26474 "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_ = 
-# 1370 "parser_cocci_menhir.mly"
+# 1399 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) )
-# 26382 "parser_cocci_menhir.ml"
+# 26482 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26397,17 +26497,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26403 "parser_cocci_menhir.ml"
+# 26503 "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_ = 
-# 1373 "parser_cocci_menhir.mly"
+# 1402 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) )
-# 26411 "parser_cocci_menhir.ml"
+# 26511 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26426,18 +26526,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26432 "parser_cocci_menhir.ml"
+# 26532 "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_ = 
-# 1376 "parser_cocci_menhir.mly"
+# 1405 "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)) )
-# 26441 "parser_cocci_menhir.ml"
+# 26541 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26456,17 +26556,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 64 "parser_cocci_menhir.mly"
+# 86 "parser_cocci_menhir.mly"
        (Parse_aux.expinfo)
-# 26462 "parser_cocci_menhir.ml"
+# 26562 "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_ = 
-# 1380 "parser_cocci_menhir.mly"
+# 1409 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,clt) = _1 in
      Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) )
-# 26470 "parser_cocci_menhir.ml"
+# 26570 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26485,18 +26585,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26491 "parser_cocci_menhir.ml"
+# 26591 "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_ = 
-# 1383 "parser_cocci_menhir.mly"
+# 1412 "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)) )
-# 26500 "parser_cocci_menhir.ml"
+# 26600 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26515,18 +26615,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26521 "parser_cocci_menhir.ml"
+# 26621 "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_ = 
-# 1387 "parser_cocci_menhir.mly"
+# 1416 "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)) )
-# 26530 "parser_cocci_menhir.ml"
+# 26630 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26545,18 +26645,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26551 "parser_cocci_menhir.ml"
+# 26651 "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"
+# 1420 "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)) )
-# 26560 "parser_cocci_menhir.ml"
+# 26660 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26585,23 +26685,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26591 "parser_cocci_menhir.ml"
+# 26691 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26597 "parser_cocci_menhir.ml"
+# 26697 "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_ = 
-# 1395 "parser_cocci_menhir.mly"
+# 1424 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2,
                            P.clt2mcode ")" _3)) )
-# 26605 "parser_cocci_menhir.ml"
+# 26705 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26630,25 +26730,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26636 "parser_cocci_menhir.ml"
+# 26736 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_midzero_list_eexpr_eexpr_ = Obj.magic _2 in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26642 "parser_cocci_menhir.ml"
+# 26742 "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_ = 
-# 1398 "parser_cocci_menhir.mly"
+# 1427 "parser_cocci_menhir.mly"
      ( let (mids,code) = _2 in
        Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1,
                               code, mids,
                               P.clt2mcode ")" _3)) )
-# 26652 "parser_cocci_menhir.ml"
+# 26752 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26670,9 +26770,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_ = 
-# 1402 "parser_cocci_menhir.mly"
+# 1431 "parser_cocci_menhir.mly"
                  ( _1 )
-# 26676 "parser_cocci_menhir.ml"
+# 26776 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26694,9 +26794,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_expr_invalid_ = 
-# 1362 "parser_cocci_menhir.mly"
+# 1391 "parser_cocci_menhir.mly"
                 ( Ast0.wrap(Ast0.Ident(_1)) )
-# 26700 "parser_cocci_menhir.ml"
+# 26800 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26715,17 +26815,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26721 "parser_cocci_menhir.ml"
+# 26821 "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_ = 
-# 1364 "parser_cocci_menhir.mly"
+# 1393 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Int x) clt)) )
-# 26729 "parser_cocci_menhir.ml"
+# 26829 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26744,17 +26844,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26750 "parser_cocci_menhir.ml"
+# 26850 "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_ = 
-# 1367 "parser_cocci_menhir.mly"
+# 1396 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Float x) clt)) )
-# 26758 "parser_cocci_menhir.ml"
+# 26858 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26773,17 +26873,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26779 "parser_cocci_menhir.ml"
+# 26879 "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_ = 
-# 1370 "parser_cocci_menhir.mly"
+# 1399 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.String x) clt)) )
-# 26787 "parser_cocci_menhir.ml"
+# 26887 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26802,17 +26902,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 26808 "parser_cocci_menhir.ml"
+# 26908 "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_ = 
-# 1373 "parser_cocci_menhir.mly"
+# 1402 "parser_cocci_menhir.mly"
      ( let (x,clt) = _1 in
      Ast0.wrap(Ast0.Constant (P.clt2mcode (Ast.Char x) clt)) )
-# 26816 "parser_cocci_menhir.ml"
+# 26916 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26831,18 +26931,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26837 "parser_cocci_menhir.ml"
+# 26937 "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_ = 
-# 1376 "parser_cocci_menhir.mly"
+# 1405 "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)) )
-# 26846 "parser_cocci_menhir.ml"
+# 26946 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26861,17 +26961,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 64 "parser_cocci_menhir.mly"
+# 86 "parser_cocci_menhir.mly"
        (Parse_aux.expinfo)
-# 26867 "parser_cocci_menhir.ml"
+# 26967 "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_ = 
-# 1380 "parser_cocci_menhir.mly"
+# 1409 "parser_cocci_menhir.mly"
      ( let (nm,constraints,pure,clt) = _1 in
      Ast0.wrap(Ast0.MetaErr(P.clt2mcode nm clt,constraints,pure)) )
-# 26875 "parser_cocci_menhir.ml"
+# 26975 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26890,18 +26990,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26896 "parser_cocci_menhir.ml"
+# 26996 "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_ = 
-# 1383 "parser_cocci_menhir.mly"
+# 1412 "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)) )
-# 26905 "parser_cocci_menhir.ml"
+# 27005 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26920,18 +27020,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26926 "parser_cocci_menhir.ml"
+# 27026 "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_ = 
-# 1387 "parser_cocci_menhir.mly"
+# 1416 "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)) )
-# 26935 "parser_cocci_menhir.ml"
+# 27035 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26950,18 +27050,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 68 "parser_cocci_menhir.mly"
+# 90 "parser_cocci_menhir.mly"
        (Parse_aux.typed_expinfo)
-# 26956 "parser_cocci_menhir.ml"
+# 27056 "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"
+# 1420 "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)) )
-# 26965 "parser_cocci_menhir.ml"
+# 27065 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -26990,23 +27090,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 26996 "parser_cocci_menhir.ml"
+# 27096 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 27002 "parser_cocci_menhir.ml"
+# 27102 "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_ = 
-# 1395 "parser_cocci_menhir.mly"
+# 1424 "parser_cocci_menhir.mly"
      ( Ast0.wrap(Ast0.Paren(P.clt2mcode "(" _1,_2,
                            P.clt2mcode ")" _3)) )
-# 27010 "parser_cocci_menhir.ml"
+# 27110 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27035,25 +27135,25 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 27041 "parser_cocci_menhir.ml"
+# 27141 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_midzero_list_expr_eexpr_ = Obj.magic _2 in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 27047 "parser_cocci_menhir.ml"
+# 27147 "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_ = 
-# 1398 "parser_cocci_menhir.mly"
+# 1427 "parser_cocci_menhir.mly"
      ( let (mids,code) = _2 in
        Ast0.wrap(Ast0.DisjExpr(P.clt2mcode "(" _1,
                               code, mids,
                               P.clt2mcode ")" _3)) )
-# 27057 "parser_cocci_menhir.ml"
+# 27157 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27075,9 +27175,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_primary_expr_expr_invalid_ = 
-# 1402 "parser_cocci_menhir.mly"
+# 1431 "parser_cocci_menhir.mly"
                  ( _1 )
-# 27081 "parser_cocci_menhir.ml"
+# 27181 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27097,9 +27197,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure = 
-# 191 "parser_cocci_menhir.mly"
+# 213 "parser_cocci_menhir.mly"
                  ( Ast0.Pure )
-# 27103 "parser_cocci_menhir.ml"
+# 27203 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27119,9 +27219,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure = 
-# 192 "parser_cocci_menhir.mly"
+# 214 "parser_cocci_menhir.mly"
                  ( Ast0.Context )
-# 27125 "parser_cocci_menhir.ml"
+# 27225 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27145,9 +27245,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_pure = 
-# 193 "parser_cocci_menhir.mly"
+# 215 "parser_cocci_menhir.mly"
                  ( Ast0.PureContext )
-# 27151 "parser_cocci_menhir.ml"
+# 27251 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27171,9 +27271,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_pure = 
-# 194 "parser_cocci_menhir.mly"
+# 216 "parser_cocci_menhir.mly"
                  ( Ast0.PureContext )
-# 27177 "parser_cocci_menhir.ml"
+# 27277 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27188,9 +27288,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 = 
-# 195 "parser_cocci_menhir.mly"
+# 217 "parser_cocci_menhir.mly"
                  ( Ast0.Impure )
-# 27194 "parser_cocci_menhir.ml"
+# 27294 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27209,16 +27309,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 27215 "parser_cocci_menhir.ml"
+# 27315 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident = 
-# 1416 "parser_cocci_menhir.mly"
+# 1445 "parser_cocci_menhir.mly"
             ( _1 )
-# 27222 "parser_cocci_menhir.ml"
+# 27322 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27238,9 +27338,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1419 "parser_cocci_menhir.mly"
+# 1448 "parser_cocci_menhir.mly"
                  ( "identifier" )
-# 27244 "parser_cocci_menhir.ml"
+# 27344 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27260,9 +27360,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1420 "parser_cocci_menhir.mly"
+# 1449 "parser_cocci_menhir.mly"
                  ( "expression" )
-# 27266 "parser_cocci_menhir.ml"
+# 27366 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27282,9 +27382,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1421 "parser_cocci_menhir.mly"
+# 1450 "parser_cocci_menhir.mly"
                 ( "statement" )
-# 27288 "parser_cocci_menhir.ml"
+# 27388 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27304,9 +27404,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1422 "parser_cocci_menhir.mly"
+# 1451 "parser_cocci_menhir.mly"
                ( "function" )
-# 27310 "parser_cocci_menhir.ml"
+# 27410 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27326,9 +27426,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1423 "parser_cocci_menhir.mly"
+# 1452 "parser_cocci_menhir.mly"
             ( "local" )
-# 27332 "parser_cocci_menhir.ml"
+# 27432 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27348,9 +27448,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1424 "parser_cocci_menhir.mly"
+# 1453 "parser_cocci_menhir.mly"
            ( "type" )
-# 27354 "parser_cocci_menhir.ml"
+# 27454 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27370,9 +27470,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1425 "parser_cocci_menhir.mly"
+# 1454 "parser_cocci_menhir.mly"
                 ( "parameter" )
-# 27376 "parser_cocci_menhir.ml"
+# 27476 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27392,9 +27492,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_kwd = 
-# 1426 "parser_cocci_menhir.mly"
+# 1455 "parser_cocci_menhir.mly"
                    ( "idexpression" )
-# 27398 "parser_cocci_menhir.ml"
+# 27498 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27414,9 +27514,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"
+# 1456 "parser_cocci_menhir.mly"
                   ( "initialiser" )
-# 27420 "parser_cocci_menhir.ml"
+# 27520 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27436,9 +27536,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"
+# 1457 "parser_cocci_menhir.mly"
            ( "list" )
-# 27442 "parser_cocci_menhir.ml"
+# 27542 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27458,9 +27558,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"
+# 1458 "parser_cocci_menhir.mly"
             ( "fresh" )
-# 27464 "parser_cocci_menhir.ml"
+# 27564 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27480,9 +27580,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"
+# 1459 "parser_cocci_menhir.mly"
                ( "constant" )
-# 27486 "parser_cocci_menhir.ml"
+# 27586 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27502,9 +27602,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"
+# 1460 "parser_cocci_menhir.mly"
             ( "error" )
-# 27508 "parser_cocci_menhir.ml"
+# 27608 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27524,9 +27624,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"
+# 1461 "parser_cocci_menhir.mly"
             ( "words" )
-# 27530 "parser_cocci_menhir.ml"
+# 27630 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27546,9 +27646,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"
+# 1462 "parser_cocci_menhir.mly"
            ( "pure" )
-# 27552 "parser_cocci_menhir.ml"
+# 27652 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27568,9 +27668,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"
+# 1463 "parser_cocci_menhir.mly"
               ( "context" )
-# 27574 "parser_cocci_menhir.ml"
+# 27674 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27590,9 +27690,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"
+# 1464 "parser_cocci_menhir.mly"
                 ( "generated" )
-# 27596 "parser_cocci_menhir.ml"
+# 27696 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27612,9 +27712,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"
+# 1465 "parser_cocci_menhir.mly"
               ( "typedef" )
-# 27618 "parser_cocci_menhir.ml"
+# 27718 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27634,9 +27734,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"
+# 1466 "parser_cocci_menhir.mly"
                ( "declarer" )
-# 27640 "parser_cocci_menhir.ml"
+# 27740 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27656,9 +27756,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"
+# 1467 "parser_cocci_menhir.mly"
                ( "iterator" )
-# 27662 "parser_cocci_menhir.ml"
+# 27762 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27678,9 +27778,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"
+# 1468 "parser_cocci_menhir.mly"
            ( "name" )
-# 27684 "parser_cocci_menhir.ml"
+# 27784 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27700,9 +27800,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"
+# 1469 "parser_cocci_menhir.mly"
                ( "position" )
-# 27706 "parser_cocci_menhir.ml"
+# 27806 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27724,9 +27824,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 = 
-# 1447 "parser_cocci_menhir.mly"
+# 1476 "parser_cocci_menhir.mly"
                                  ( (None,P.id2name _1) )
-# 27730 "parser_cocci_menhir.ml"
+# 27830 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27748,9 +27848,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 = 
-# 1448 "parser_cocci_menhir.mly"
+# 1477 "parser_cocci_menhir.mly"
                                  ( (None,_1) )
-# 27754 "parser_cocci_menhir.ml"
+# 27854 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27772,9 +27872,43 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_pure_ident_or_meta_ident = 
-# 1449 "parser_cocci_menhir.mly"
+# 1478 "parser_cocci_menhir.mly"
                                  ( _1 )
-# 27778 "parser_cocci_menhir.ml"
+# 27878 "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 = optc;
+          MenhirLib.EngineTypes.startp = _startpos_optc_;
+          MenhirLib.EngineTypes.endp = _endpos_optc_;
+          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 optc : 'tv_option_not_ceq_or_sub_ = Obj.magic optc in
+        let i : 'tv_pure_ident_or_meta_ident = Obj.magic i in
+        let _startpos = _startpos_i_ in
+        let _endpos = _endpos_optc_ in
+        let _v : 'tv_pure_ident_or_meta_ident_with_econstraint_not_ceq_or_sub_ = 
+# 1504 "parser_cocci_menhir.mly"
+    (
+      match optc with
+         None   -> (i, Ast0.NoConstraint)
+       | Some c -> (i, c)
+    )
+# 27912 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27797,18 +27931,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             MenhirLib.EngineTypes.next = _menhir_stack;
             };
           } = _menhir_stack in
-        let optc : 'tv_option_re_or_not_eqe_ = Obj.magic optc in
+        let optc : 'tv_option_re_or_not_eqe_or_sub_ = Obj.magic optc in
         let i : 'tv_pure_ident_or_meta_ident = Obj.magic i in
         let _startpos = _startpos_i_ in
         let _endpos = _endpos_optc_ in
-        let _v : 'tv_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_ = 
-# 1475 "parser_cocci_menhir.mly"
+        let _v : 'tv_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub_ = 
+# 1504 "parser_cocci_menhir.mly"
     (
       match optc with
          None   -> (i, Ast0.NoConstraint)
        | Some c -> (i, c)
     )
-# 27812 "parser_cocci_menhir.ml"
+# 27946 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27836,13 +27970,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_ = 
-# 1493 "parser_cocci_menhir.mly"
+# 1522 "parser_cocci_menhir.mly"
     (
       match c with
          None -> (i, Ast.IdNoConstraint)
        | Some constraint_ -> (i,constraint_)
     )
-# 27846 "parser_cocci_menhir.ml"
+# 27980 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27870,14 +28004,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_ = 
-# 1483 "parser_cocci_menhir.mly"
+# 1512 "parser_cocci_menhir.mly"
     (
       Common.Left
         (match c with
          None -> (i, Ast.IdNoConstraint)
        | Some constraint_ -> (i,constraint_))
     )
-# 27881 "parser_cocci_menhir.ml"
+# 28015 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27907,9 +28041,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_ = 
-# 1489 "parser_cocci_menhir.mly"
+# 1518 "parser_cocci_menhir.mly"
                            ( Common.Right (P.id2name _3) )
-# 27913 "parser_cocci_menhir.ml"
+# 28047 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27931,9 +28065,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 = 
-# 1452 "parser_cocci_menhir.mly"
+# 1481 "parser_cocci_menhir.mly"
                                 ( (_1,Ast.NoVal) )
-# 27937 "parser_cocci_menhir.ml"
+# 28071 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -27965,43 +28099,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 = 
-# 1455 "parser_cocci_menhir.mly"
+# 1484 "parser_cocci_menhir.mly"
   ( match _3 with
           [Ast.SeedString s] -> (_1,Ast.StringSeed s)
         | _ -> (_1,Ast.ListSeed _3) )
-# 27973 "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 = l;
-          MenhirLib.EngineTypes.startp = _startpos_l_;
-          MenhirLib.EngineTypes.endp = _endpos_l_;
-          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 l : 'tv_loption_not_ceq_ = Obj.magic l in
-        let i : 'tv_pure_ident_or_meta_ident = Obj.magic i in
-        let _startpos = _startpos_i_ in
-        let _endpos = _endpos_l_ in
-        let _v : 'tv_pure_ident_or_meta_ident_with_x_eq_not_ceq_ = 
-# 1469 "parser_cocci_menhir.mly"
-    (
-      (i, l)
-    )
-# 28005 "parser_cocci_menhir.ml"
+# 28107 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28029,11 +28131,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_ = 
-# 1469 "parser_cocci_menhir.mly"
+# 1498 "parser_cocci_menhir.mly"
     (
       (i, l)
     )
-# 28037 "parser_cocci_menhir.ml"
+# 28139 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28054,10 +28156,10 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let re : 'tv_regexp_eqid = Obj.magic re in
         let _startpos = _startpos_re_ in
         let _endpos = _endpos_re_ in
-        let _v : 'tv_re_or_not_eqe = 
-# 1537 "parser_cocci_menhir.mly"
-                  (Ast0.NotIdCstrt (re))
-# 28061 "parser_cocci_menhir.ml"
+        let _v : 'tv_re_or_not_eqe_or_sub = 
+# 1583 "parser_cocci_menhir.mly"
+                  (Ast0.NotIdCstrt  re)
+# 28163 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28078,10 +28180,34 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let ne : 'tv_not_eqe = Obj.magic ne in
         let _startpos = _startpos_ne_ in
         let _endpos = _endpos_ne_ in
-        let _v : 'tv_re_or_not_eqe = 
-# 1538 "parser_cocci_menhir.mly"
-                  (Ast0.NotExpCstrt (ne))
-# 28085 "parser_cocci_menhir.ml"
+        let _v : 'tv_re_or_not_eqe_or_sub = 
+# 1584 "parser_cocci_menhir.mly"
+                  (Ast0.NotExpCstrt ne)
+# 28187 "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 = s;
+          MenhirLib.EngineTypes.startp = _startpos_s_;
+          MenhirLib.EngineTypes.endp = _endpos_s_;
+          MenhirLib.EngineTypes.next = _menhir_stack;
+          } = _menhir_stack in
+        let s : 'tv_sub = Obj.magic s in
+        let _startpos = _startpos_s_ in
+        let _endpos = _endpos_s_ in
+        let _v : 'tv_re_or_not_eqe_or_sub = 
+# 1585 "parser_cocci_menhir.mly"
+                  (Ast0.SubExpCstrt s)
+# 28211 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28103,9 +28229,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_re_ in
         let _endpos = _endpos_re_ in
         let _v : 'tv_re_or_not_eqid = 
-# 1500 "parser_cocci_menhir.mly"
-                  (re)
-# 28109 "parser_cocci_menhir.ml"
+# 1529 "parser_cocci_menhir.mly"
+                  (Ast.IdRegExpConstraint re)
+# 28235 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28127,9 +28253,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_ne_ in
         let _endpos = _endpos_ne_ in
         let _v : 'tv_re_or_not_eqid = 
-# 1501 "parser_cocci_menhir.mly"
+# 1530 "parser_cocci_menhir.mly"
                   (ne)
-# 28133 "parser_cocci_menhir.ml"
+# 28259 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28152,21 +28278,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let re : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 28158 "parser_cocci_menhir.ml"
+# 28284 "parser_cocci_menhir.ml"
         ) = Obj.magic re in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_re_ in
         let _v : 'tv_regexp_eqid = 
-# 1505 "parser_cocci_menhir.mly"
+# 1534 "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)
         )
-# 28170 "parser_cocci_menhir.ml"
+# 28296 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28189,21 +28315,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let re : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 28195 "parser_cocci_menhir.ml"
+# 28321 "parser_cocci_menhir.ml"
         ) = Obj.magic re in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos_re_ in
         let _v : 'tv_regexp_eqid = 
-# 1512 "parser_cocci_menhir.mly"
+# 1541 "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)
         )
-# 28207 "parser_cocci_menhir.ml"
+# 28333 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28218,13 +28344,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 : (
-# 132 "parser_cocci_menhir.mly"
+# 154 "parser_cocci_menhir.mly"
       (unit)
-# 28224 "parser_cocci_menhir.ml"
+# 28350 "parser_cocci_menhir.ml"
         ) = 
-# 173 "parser_cocci_menhir.mly"
+# 195 "parser_cocci_menhir.mly"
         ( )
-# 28228 "parser_cocci_menhir.ml"
+# 28354 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28246,9 +28372,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"
+# 957 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Decl((Ast0.default_info(),Ast0.context_befaft()),_1)) )
-# 28252 "parser_cocci_menhir.ml"
+# 28378 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28272,17 +28398,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28278 "parser_cocci_menhir.ml"
+# 28404 "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"
+# 958 "parser_cocci_menhir.mly"
                ( P.exp_stm _1 _2 )
-# 28286 "parser_cocci_menhir.ml"
+# 28412 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28311,22 +28437,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28317 "parser_cocci_menhir.ml"
+# 28443 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28323 "parser_cocci_menhir.ml"
+# 28449 "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"
+# 959 "parser_cocci_menhir.mly"
                         ( P.ret_exp _1 _2 _3 )
-# 28330 "parser_cocci_menhir.ml"
+# 28456 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28350,21 +28476,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28356 "parser_cocci_menhir.ml"
+# 28482 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28361 "parser_cocci_menhir.ml"
+# 28487 "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"
+# 960 "parser_cocci_menhir.mly"
                   ( P.ret _1 _2 )
-# 28368 "parser_cocci_menhir.ml"
+# 28494 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28388,21 +28514,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28394 "parser_cocci_menhir.ml"
+# 28520 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28399 "parser_cocci_menhir.ml"
+# 28525 "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"
+# 961 "parser_cocci_menhir.mly"
                  ( P.break _1 _2 )
-# 28406 "parser_cocci_menhir.ml"
+# 28532 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28426,21 +28552,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28432 "parser_cocci_menhir.ml"
+# 28558 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28437 "parser_cocci_menhir.ml"
+# 28563 "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"
+# 962 "parser_cocci_menhir.mly"
                     ( P.cont _1 _2 )
-# 28444 "parser_cocci_menhir.ml"
+# 28570 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28469,26 +28595,26 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28475 "parser_cocci_menhir.ml"
+# 28601 "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 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 28481 "parser_cocci_menhir.ml"
+# 28607 "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"
+# 964 "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)) )
-# 28492 "parser_cocci_menhir.ml"
+# 28618 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28542,20 +28668,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__7_ in
         let _v : (
-# 154 "parser_cocci_menhir.mly"
+# 176 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 28548 "parser_cocci_menhir.ml"
+# 28674 "parser_cocci_menhir.ml"
         ) = let nm =
           
 # 39 "standard.mly"
     ( None )
-# 28553 "parser_cocci_menhir.ml"
+# 28679 "parser_cocci_menhir.ml"
           
         in
         
-# 203 "parser_cocci_menhir.mly"
+# 225 "parser_cocci_menhir.mly"
       ( P.make_cocci_rule_name_result nm d i a e ee )
-# 28559 "parser_cocci_menhir.ml"
+# 28685 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28615,21 +28741,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_x0_ in
         let _endpos = _endpos__8_ in
         let _v : (
-# 154 "parser_cocci_menhir.mly"
+# 176 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 28621 "parser_cocci_menhir.ml"
+# 28747 "parser_cocci_menhir.ml"
         ) = let nm =
           let x = x0 in
           
 # 41 "standard.mly"
     ( Some x )
-# 28627 "parser_cocci_menhir.ml"
+# 28753 "parser_cocci_menhir.ml"
           
         in
         
-# 203 "parser_cocci_menhir.mly"
+# 225 "parser_cocci_menhir.mly"
       ( P.make_cocci_rule_name_result nm d i a e ee )
-# 28633 "parser_cocci_menhir.ml"
+# 28759 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28687,13 +28813,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__8_ in
         let _v : (
-# 154 "parser_cocci_menhir.mly"
+# 176 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 28693 "parser_cocci_menhir.ml"
+# 28819 "parser_cocci_menhir.ml"
         ) = 
-# 208 "parser_cocci_menhir.mly"
+# 230 "parser_cocci_menhir.mly"
       ( P.make_generated_rule_name_result None d i a e ee )
-# 28697 "parser_cocci_menhir.ml"
+# 28823 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28733,13 +28859,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__5_ in
         let _v : (
-# 154 "parser_cocci_menhir.mly"
+# 176 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 28739 "parser_cocci_menhir.ml"
+# 28865 "parser_cocci_menhir.ml"
         ) = 
-# 210 "parser_cocci_menhir.mly"
+# 232 "parser_cocci_menhir.mly"
       ( P.make_script_rule_name_result lang d )
-# 28743 "parser_cocci_menhir.ml"
+# 28869 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28779,13 +28905,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__5_ in
         let _v : (
-# 154 "parser_cocci_menhir.mly"
+# 176 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 28785 "parser_cocci_menhir.ml"
+# 28911 "parser_cocci_menhir.ml"
         ) = 
-# 212 "parser_cocci_menhir.mly"
+# 234 "parser_cocci_menhir.mly"
       ( P.make_initial_script_rule_name_result lang d )
-# 28789 "parser_cocci_menhir.ml"
+# 28915 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28825,13 +28951,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__5_ in
         let _v : (
-# 154 "parser_cocci_menhir.mly"
+# 176 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 28831 "parser_cocci_menhir.ml"
+# 28957 "parser_cocci_menhir.ml"
         ) = 
-# 214 "parser_cocci_menhir.mly"
+# 236 "parser_cocci_menhir.mly"
       ( P.make_final_script_rule_name_result lang d )
-# 28835 "parser_cocci_menhir.ml"
+# 28961 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28873,21 +28999,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let cocci : 'tv_pure_ident = Obj.magic cocci in
         let _3 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 28879 "parser_cocci_menhir.ml"
+# 29005 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let py : 'tv_pure_ident = Obj.magic py in
         let _startpos = _startpos_py_ in
         let _endpos = _endpos__6_ in
         let _v : (
-# 160 "parser_cocci_menhir.mly"
+# 182 "parser_cocci_menhir.mly"
        (string * Ast_cocci.meta_name)
-# 28887 "parser_cocci_menhir.ml"
+# 29013 "parser_cocci_menhir.ml"
         ) = 
-# 1995 "parser_cocci_menhir.mly"
+# 2064 "parser_cocci_menhir.mly"
   ( (P.id2name py, (_3, P.id2name cocci)) )
-# 28891 "parser_cocci_menhir.ml"
+# 29017 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28931,13 +29057,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_py_ in
         let _endpos = _endpos__6_ in
         let _v : (
-# 160 "parser_cocci_menhir.mly"
+# 182 "parser_cocci_menhir.mly"
        (string * Ast_cocci.meta_name)
-# 28937 "parser_cocci_menhir.ml"
+# 29063 "parser_cocci_menhir.ml"
         ) = 
-# 1997 "parser_cocci_menhir.mly"
+# 2066 "parser_cocci_menhir.mly"
   ( (P.id2name py, ("virtual", P.id2name cocci)) )
-# 28941 "parser_cocci_menhir.ml"
+# 29067 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28956,16 +29082,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 28962 "parser_cocci_menhir.ml"
+# 29088 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_seed_elem = 
-# 1460 "parser_cocci_menhir.mly"
+# 1489 "parser_cocci_menhir.mly"
           ( let (x,_) = _1 in Ast.SeedString x )
-# 28969 "parser_cocci_menhir.ml"
+# 29095 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -28984,16 +29110,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 62 "parser_cocci_menhir.mly"
+# 84 "parser_cocci_menhir.mly"
        (Parse_aux.idinfo)
-# 28990 "parser_cocci_menhir.ml"
+# 29116 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_seed_elem = 
-# 1461 "parser_cocci_menhir.mly"
+# 1490 "parser_cocci_menhir.mly"
           ( let (x,_,_,_) = _1 in Ast.SeedId x )
-# 28997 "parser_cocci_menhir.ml"
+# 29123 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29022,18 +29148,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _3 : 'tv_pure_ident = Obj.magic _3 in
         let _1 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 29028 "parser_cocci_menhir.ml"
+# 29154 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_seed_elem = 
-# 1463 "parser_cocci_menhir.mly"
+# 1492 "parser_cocci_menhir.mly"
     ( let nm = (_1,P.id2name _3) in
       P.check_meta(Ast.MetaIdDecl(Ast.NONE,nm));
       Ast.SeedId nm )
-# 29037 "parser_cocci_menhir.ml"
+# 29163 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29052,16 +29178,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let x : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 29058 "parser_cocci_menhir.ml"
+# 29184 "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 ] )
-# 29065 "parser_cocci_menhir.ml"
+# 29191 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29090,16 +29216,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let xs : 'tv_separated_nonempty_list_TComma_TString_ = Obj.magic xs in
         let x : (
-# 88 "parser_cocci_menhir.mly"
+# 110 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 29096 "parser_cocci_menhir.ml"
+# 29222 "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 )
-# 29103 "parser_cocci_menhir.ml"
+# 29229 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29123,7 +29249,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_any_strict_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 29127 "parser_cocci_menhir.ml"
+# 29253 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29157,7 +29283,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_any_strict_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 29161 "parser_cocci_menhir.ml"
+# 29287 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29181,7 +29307,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_ctype_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 29185 "parser_cocci_menhir.ml"
+# 29311 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29215,7 +29341,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_ctype_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 29219 "parser_cocci_menhir.ml"
+# 29345 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29239,7 +29365,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_d_ident_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 29243 "parser_cocci_menhir.ml"
+# 29369 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29273,7 +29399,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_d_ident_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 29277 "parser_cocci_menhir.ml"
+# 29403 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29297,7 +29423,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_ident_or_const_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 29301 "parser_cocci_menhir.ml"
+# 29427 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29331,7 +29457,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_ident_or_const_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 29335 "parser_cocci_menhir.ml"
+# 29461 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29355,7 +29481,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_meta_ident_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 29359 "parser_cocci_menhir.ml"
+# 29485 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29389,7 +29515,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_meta_ident_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 29393 "parser_cocci_menhir.ml"
+# 29519 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29413,7 +29539,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 29417 "parser_cocci_menhir.ml"
+# 29543 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29447,7 +29573,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 29451 "parser_cocci_menhir.ml"
+# 29577 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29471,7 +29597,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 29475 "parser_cocci_menhir.ml"
+# 29601 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29505,7 +29631,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 29509 "parser_cocci_menhir.ml"
+# 29635 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29523,13 +29649,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos_x_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let x : 'tv_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_ = Obj.magic x in
+        let x : 'tv_pure_ident_or_meta_ident_with_econstraint_not_ceq_or_sub_ = Obj.magic x in
         let _startpos = _startpos_x_ in
         let _endpos = _endpos_x_ in
-        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe__ = 
+        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_not_ceq_or_sub__ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 29533 "parser_cocci_menhir.ml"
+# 29659 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29556,14 +29682,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let xs : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe__ = Obj.magic xs in
-        let x : 'tv_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_ = Obj.magic x in
+        let xs : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_not_ceq_or_sub__ = Obj.magic xs in
+        let x : 'tv_pure_ident_or_meta_ident_with_econstraint_not_ceq_or_sub_ = Obj.magic x in
         let _startpos = _startpos_x_ in
         let _endpos = _endpos_xs_ in
-        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe__ = 
+        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_not_ceq_or_sub__ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 29567 "parser_cocci_menhir.ml"
+# 29693 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29581,13 +29707,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos_x_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let x : 'tv_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid_ = Obj.magic x in
+        let x : 'tv_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub_ = Obj.magic x in
         let _startpos = _startpos_x_ in
         let _endpos = _endpos_x_ in
-        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid__ = 
+        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub__ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 29591 "parser_cocci_menhir.ml"
+# 29717 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29614,14 +29740,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let xs : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid__ = Obj.magic xs in
-        let x : 'tv_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid_ = Obj.magic x in
+        let xs : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub__ = Obj.magic xs in
+        let x : 'tv_pure_ident_or_meta_ident_with_econstraint_re_or_not_eqe_or_sub_ = Obj.magic x in
         let _startpos = _startpos_x_ in
         let _endpos = _endpos_xs_ in
-        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid__ = 
+        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 )
-# 29625 "parser_cocci_menhir.ml"
+# 29751 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29639,13 +29765,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos_x_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let x : 'tv_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid_ = Obj.magic x in
+        let x : 'tv_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid_ = Obj.magic x in
         let _startpos = _startpos_x_ in
         let _endpos = _endpos_x_ in
-        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid__ = 
+        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid__ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 29649 "parser_cocci_menhir.ml"
+# 29775 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29672,14 +29798,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let xs : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid__ = Obj.magic xs in
-        let x : 'tv_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid_ = Obj.magic x in
+        let xs : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid__ = Obj.magic xs in
+        let x : 'tv_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid_ = Obj.magic x in
         let _startpos = _startpos_x_ in
         let _endpos = _endpos_xs_ in
-        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid__ = 
+        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_re_or_not_eqid__ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 29683 "parser_cocci_menhir.ml"
+# 29809 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29697,13 +29823,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos_x_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let x : 'tv_pure_ident_or_meta_ident_with_seed = Obj.magic x in
+        let x : 'tv_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid_ = Obj.magic x in
         let _startpos = _startpos_x_ in
         let _endpos = _endpos_x_ in
-        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = 
+        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid__ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 29707 "parser_cocci_menhir.ml"
+# 29833 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29730,14 +29856,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let xs : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = Obj.magic xs in
-        let x : 'tv_pure_ident_or_meta_ident_with_seed = Obj.magic x in
+        let xs : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid__ = Obj.magic xs in
+        let x : 'tv_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid_ = Obj.magic x in
         let _startpos = _startpos_x_ in
         let _endpos = _endpos_xs_ in
-        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = 
+        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_idconstraint_virt_re_or_not_eqid__ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 29741 "parser_cocci_menhir.ml"
+# 29867 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29755,13 +29881,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.endp = _endpos_x_;
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
-        let x : 'tv_pure_ident_or_meta_ident_with_x_eq_not_ceq_ = Obj.magic x in
+        let x : 'tv_pure_ident_or_meta_ident_with_seed = Obj.magic x in
         let _startpos = _startpos_x_ in
         let _endpos = _endpos_x_ in
-        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_x_eq_not_ceq__ = 
+        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 29765 "parser_cocci_menhir.ml"
+# 29891 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29788,14 +29914,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               };
             };
           } = _menhir_stack in
-        let xs : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_x_eq_not_ceq__ = Obj.magic xs in
-        let x : 'tv_pure_ident_or_meta_ident_with_x_eq_not_ceq_ = Obj.magic x in
+        let xs : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = Obj.magic xs in
+        let x : 'tv_pure_ident_or_meta_ident_with_seed = Obj.magic x in
         let _startpos = _startpos_x_ in
         let _endpos = _endpos_xs_ in
-        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_x_eq_not_ceq__ = 
+        let _v : 'tv_separated_nonempty_list_TComma_pure_ident_or_meta_ident_with_seed_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 29799 "parser_cocci_menhir.ml"
+# 29925 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29819,7 +29945,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 ] )
-# 29823 "parser_cocci_menhir.ml"
+# 29949 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29853,7 +29979,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 )
-# 29857 "parser_cocci_menhir.ml"
+# 29983 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29877,7 +30003,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_typedef_ident_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 29881 "parser_cocci_menhir.ml"
+# 30007 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29911,7 +30037,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TComma_typedef_ident_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 29915 "parser_cocci_menhir.ml"
+# 30041 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29935,7 +30061,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TCppConcatOp_seed_elem_ = 
 # 144 "standard.mly"
     ( [ x ] )
-# 29939 "parser_cocci_menhir.ml"
+# 30065 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29969,7 +30095,7 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _v : 'tv_separated_nonempty_list_TCppConcatOp_seed_elem_ = 
 # 146 "standard.mly"
     ( x :: xs )
-# 29973 "parser_cocci_menhir.ml"
+# 30099 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -29991,9 +30117,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"
+# 972 "parser_cocci_menhir.mly"
                                       ( _1 )
-# 29997 "parser_cocci_menhir.ml"
+# 30123 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30022,26 +30148,26 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30028 "parser_cocci_menhir.ml"
+# 30154 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_midzero_list_statement_statement_ = Obj.magic _2 in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30034 "parser_cocci_menhir.ml"
+# 30160 "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"
+# 976 "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)) )
-# 30045 "parser_cocci_menhir.ml"
+# 30171 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30063,9 +30189,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"
+# 899 "parser_cocci_menhir.mly"
            ( _1 )
-# 30069 "parser_cocci_menhir.ml"
+# 30195 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30084,16 +30210,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 30090 "parser_cocci_menhir.ml"
+# 30216 "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"
+# 901 "parser_cocci_menhir.mly"
     ( P.meta_stm _1 )
-# 30097 "parser_cocci_menhir.ml"
+# 30223 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30117,17 +30243,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30123 "parser_cocci_menhir.ml"
+# 30249 "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"
+# 903 "parser_cocci_menhir.mly"
     ( P.exp_stm _1 _2 )
-# 30131 "parser_cocci_menhir.ml"
+# 30257 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30167,27 +30293,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _5 : 'tv_single_statement = Obj.magic _5 in
         let _4 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30173 "parser_cocci_menhir.ml"
+# 30299 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30179 "parser_cocci_menhir.ml"
+# 30305 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30184 "parser_cocci_menhir.ml"
+# 30310 "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"
+# 905 "parser_cocci_menhir.mly"
     ( P.ifthen _1 _2 _3 _4 _5 )
-# 30191 "parser_cocci_menhir.ml"
+# 30317 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30237,33 +30363,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _7 : 'tv_single_statement = Obj.magic _7 in
         let _6 : (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30243 "parser_cocci_menhir.ml"
+# 30369 "parser_cocci_menhir.ml"
         ) = Obj.magic _6 in
         let _5 : 'tv_single_statement = Obj.magic _5 in
         let _4 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30249 "parser_cocci_menhir.ml"
+# 30375 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30255 "parser_cocci_menhir.ml"
+# 30381 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30260 "parser_cocci_menhir.ml"
+# 30386 "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"
+# 907 "parser_cocci_menhir.mly"
     ( P.ifthenelse _1 _2 _3 _4 _5 _6 _7 )
-# 30267 "parser_cocci_menhir.ml"
+# 30393 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30323,39 +30449,39 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _9 : 'tv_single_statement = Obj.magic _9 in
         let _8 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30329 "parser_cocci_menhir.ml"
+# 30455 "parser_cocci_menhir.ml"
         ) = Obj.magic _8 in
         let _7 : 'tv_option_eexpr_ = Obj.magic _7 in
         let _6 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30335 "parser_cocci_menhir.ml"
+# 30461 "parser_cocci_menhir.ml"
         ) = Obj.magic _6 in
         let _5 : 'tv_option_eexpr_ = Obj.magic _5 in
         let _4 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30341 "parser_cocci_menhir.ml"
+# 30467 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_option_eexpr_ = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30347 "parser_cocci_menhir.ml"
+# 30473 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30352 "parser_cocci_menhir.ml"
+# 30478 "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"
+# 910 "parser_cocci_menhir.mly"
     ( P.forloop _1 _2 _3 _4 _5 _6 _7 _8 _9 )
-# 30359 "parser_cocci_menhir.ml"
+# 30485 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30395,27 +30521,27 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _5 : 'tv_single_statement = Obj.magic _5 in
         let _4 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30401 "parser_cocci_menhir.ml"
+# 30527 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30407 "parser_cocci_menhir.ml"
+# 30533 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30412 "parser_cocci_menhir.ml"
+# 30538 "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"
+# 912 "parser_cocci_menhir.mly"
     ( P.whileloop _1 _2 _3 _4 _5 )
-# 30419 "parser_cocci_menhir.ml"
+# 30545 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30464,38 +30590,38 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _7 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30470 "parser_cocci_menhir.ml"
+# 30596 "parser_cocci_menhir.ml"
         ) = Obj.magic _7 in
         let _6 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30475 "parser_cocci_menhir.ml"
+# 30601 "parser_cocci_menhir.ml"
         ) = Obj.magic _6 in
         let _5 : 'tv_eexpr = Obj.magic _5 in
         let _4 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30481 "parser_cocci_menhir.ml"
+# 30607 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30486 "parser_cocci_menhir.ml"
+# 30612 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_single_statement = Obj.magic _2 in
         let _1 : (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30492 "parser_cocci_menhir.ml"
+# 30618 "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"
+# 914 "parser_cocci_menhir.mly"
     ( P.doloop _1 _2 _3 _4 _5 _6 _7 )
-# 30499 "parser_cocci_menhir.ml"
+# 30625 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30535,23 +30661,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _5 : 'tv_single_statement = Obj.magic _5 in
         let _4 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30541 "parser_cocci_menhir.ml"
+# 30667 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr_list_option = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30547 "parser_cocci_menhir.ml"
+# 30673 "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"
+# 916 "parser_cocci_menhir.mly"
     ( P.iterator _1 _2 _3 _4 _5 )
-# 30555 "parser_cocci_menhir.ml"
+# 30681 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30605,39 +30731,39 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _8 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30611 "parser_cocci_menhir.ml"
+# 30737 "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 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30618 "parser_cocci_menhir.ml"
+# 30744 "parser_cocci_menhir.ml"
         ) = Obj.magic _5 in
         let _4 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30623 "parser_cocci_menhir.ml"
+# 30749 "parser_cocci_menhir.ml"
         ) = Obj.magic _4 in
         let _3 : 'tv_eexpr = Obj.magic _3 in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30629 "parser_cocci_menhir.ml"
+# 30755 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30634 "parser_cocci_menhir.ml"
+# 30760 "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"
+# 918 "parser_cocci_menhir.mly"
     ( P.switch _1 _2 _3 _4 _5 (List.concat _6) _7 _8 )
-# 30641 "parser_cocci_menhir.ml"
+# 30767 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30666,22 +30792,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30672 "parser_cocci_menhir.ml"
+# 30798 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_eexpr = Obj.magic _2 in
         let _1 : (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30678 "parser_cocci_menhir.ml"
+# 30804 "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"
+# 919 "parser_cocci_menhir.mly"
                         ( P.ret_exp _1 _2 _3 )
-# 30685 "parser_cocci_menhir.ml"
+# 30811 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30705,21 +30831,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30711 "parser_cocci_menhir.ml"
+# 30837 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 57 "parser_cocci_menhir.mly"
+# 79 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30716 "parser_cocci_menhir.ml"
+# 30842 "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"
+# 920 "parser_cocci_menhir.mly"
                   ( P.ret _1 _2 )
-# 30723 "parser_cocci_menhir.ml"
+# 30849 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30743,21 +30869,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30749 "parser_cocci_menhir.ml"
+# 30875 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30754 "parser_cocci_menhir.ml"
+# 30880 "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"
+# 921 "parser_cocci_menhir.mly"
                  ( P.break _1 _2 )
-# 30761 "parser_cocci_menhir.ml"
+# 30887 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30781,21 +30907,21 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30787 "parser_cocci_menhir.ml"
+# 30913 "parser_cocci_menhir.ml"
         ) = Obj.magic _2 in
         let _1 : (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30792 "parser_cocci_menhir.ml"
+# 30918 "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"
+# 922 "parser_cocci_menhir.mly"
                     ( P.cont _1 _2 )
-# 30799 "parser_cocci_menhir.ml"
+# 30925 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30819,17 +30945,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30825 "parser_cocci_menhir.ml"
+# 30951 "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"
+# 923 "parser_cocci_menhir.mly"
                 ( P.label _1 _2 )
-# 30833 "parser_cocci_menhir.ml"
+# 30959 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30858,22 +30984,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30864 "parser_cocci_menhir.ml"
+# 30990 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_ident = Obj.magic _2 in
         let _1 : (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30870 "parser_cocci_menhir.ml"
+# 30996 "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"
+# 924 "parser_cocci_menhir.mly"
                       ( P.goto _1 _2 _3 )
-# 30877 "parser_cocci_menhir.ml"
+# 31003 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30902,22 +31028,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30908 "parser_cocci_menhir.ml"
+# 31034 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_fun_start = Obj.magic _2 in
         let _1 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30914 "parser_cocci_menhir.ml"
+# 31040 "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"
+# 926 "parser_cocci_menhir.mly"
     ( P.seq _1 _2 _3 )
-# 30921 "parser_cocci_menhir.ml"
+# 31047 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30942,16 +31068,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let w : 'tv_list_whenppdecs_ = Obj.magic w in
         let _1 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30948 "parser_cocci_menhir.ml"
+# 31074 "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"
+# 930 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Dots(P.clt2mcode "..." _1, List.concat w)) )
-# 30955 "parser_cocci_menhir.ml"
+# 31081 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -30985,24 +31111,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let c : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30991 "parser_cocci_menhir.ml"
+# 31117 "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 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 30998 "parser_cocci_menhir.ml"
+# 31124 "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"
+# 932 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<..." _1, b,
                          P.clt2mcode "...>" c, List.concat w, false)) )
-# 31006 "parser_cocci_menhir.ml"
+# 31132 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31036,24 +31162,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let c : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31042 "parser_cocci_menhir.ml"
+# 31168 "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 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31049 "parser_cocci_menhir.ml"
+# 31175 "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"
+# 935 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<+..." _1, b,
                          P.clt2mcode "...+>" c, List.concat w, true)) )
-# 31057 "parser_cocci_menhir.ml"
+# 31183 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31072,16 +31198,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let s : (
-# 53 "parser_cocci_menhir.mly"
+# 75 "parser_cocci_menhir.mly"
       (Data.clt)
-# 31078 "parser_cocci_menhir.ml"
+# 31204 "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"
+# 861 "parser_cocci_menhir.mly"
                         ( P.clt2mcode Ast.Static s )
-# 31085 "parser_cocci_menhir.ml"
+# 31211 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31100,16 +31226,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let s : (
-# 53 "parser_cocci_menhir.mly"
+# 75 "parser_cocci_menhir.mly"
       (Data.clt)
-# 31106 "parser_cocci_menhir.ml"
+# 31232 "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"
+# 862 "parser_cocci_menhir.mly"
                         ( P.clt2mcode Ast.Auto s )
-# 31113 "parser_cocci_menhir.ml"
+# 31239 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31128,16 +31254,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let s : (
-# 53 "parser_cocci_menhir.mly"
+# 75 "parser_cocci_menhir.mly"
       (Data.clt)
-# 31134 "parser_cocci_menhir.ml"
+# 31260 "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"
+# 863 "parser_cocci_menhir.mly"
                         ( P.clt2mcode Ast.Register s )
-# 31141 "parser_cocci_menhir.ml"
+# 31267 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31156,16 +31282,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let s : (
-# 53 "parser_cocci_menhir.mly"
+# 75 "parser_cocci_menhir.mly"
       (Data.clt)
-# 31162 "parser_cocci_menhir.ml"
+# 31288 "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"
+# 864 "parser_cocci_menhir.mly"
                         ( P.clt2mcode Ast.Extern s )
-# 31169 "parser_cocci_menhir.ml"
+# 31295 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31185,9 +31311,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_struct_decl = 
-# 588 "parser_cocci_menhir.mly"
+# 615 "parser_cocci_menhir.mly"
                ( [] )
-# 31191 "parser_cocci_menhir.ml"
+# 31317 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31216,19 +31342,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31222 "parser_cocci_menhir.ml"
+# 31348 "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 = 
-# 590 "parser_cocci_menhir.mly"
+# 617 "parser_cocci_menhir.mly"
   ( let (id,fn) = d in
         [Ast0.wrap(Ast0.UnInit(None,fn t,id,P.clt2mcode ";" pv))] )
-# 31232 "parser_cocci_menhir.ml"
+# 31358 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31287,42 +31413,42 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31293 "parser_cocci_menhir.ml"
+# 31419 "parser_cocci_menhir.ml"
         ) = Obj.magic pv in
         let rp2 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31298 "parser_cocci_menhir.ml"
+# 31424 "parser_cocci_menhir.ml"
         ) = Obj.magic rp2 in
         let p : 'tv_decl_list_name_opt_decl_ = Obj.magic p in
         let lp2 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31304 "parser_cocci_menhir.ml"
+# 31430 "parser_cocci_menhir.ml"
         ) = Obj.magic lp2 in
         let rp1 : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31309 "parser_cocci_menhir.ml"
+# 31435 "parser_cocci_menhir.ml"
         ) = Obj.magic rp1 in
         let d : 'tv_d_ident = Obj.magic d in
         let st : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31315 "parser_cocci_menhir.ml"
+# 31441 "parser_cocci_menhir.ml"
         ) = Obj.magic st in
         let lp1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31320 "parser_cocci_menhir.ml"
+# 31446 "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 = 
-# 594 "parser_cocci_menhir.mly"
+# 621 "parser_cocci_menhir.mly"
         ( let (id,fn) = d in
         let t =
          Ast0.wrap
@@ -31330,7 +31456,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(None,fn t,id,P.clt2mcode ";" pv))] )
-# 31334 "parser_cocci_menhir.ml"
+# 31460 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31359,9 +31485,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31365 "parser_cocci_menhir.ml"
+# 31491 "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
@@ -31371,15 +31497,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 39 "standard.mly"
     ( None )
-# 31375 "parser_cocci_menhir.ml"
+# 31501 "parser_cocci_menhir.ml"
           
         in
         
-# 602 "parser_cocci_menhir.mly"
+# 629 "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))] )
-# 31383 "parser_cocci_menhir.ml"
+# 31509 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31413,9 +31539,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let pv : (
-# 108 "parser_cocci_menhir.mly"
+# 130 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31419 "parser_cocci_menhir.ml"
+# 31545 "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
@@ -31427,15 +31553,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 31431 "parser_cocci_menhir.ml"
+# 31557 "parser_cocci_menhir.ml"
           
         in
         
-# 602 "parser_cocci_menhir.mly"
+# 629 "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))] )
-# 31439 "parser_cocci_menhir.ml"
+# 31565 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31457,9 +31583,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_struct_decl_list = 
-# 607 "parser_cocci_menhir.mly"
+# 634 "parser_cocci_menhir.mly"
                           ( Ast0.wrap(Ast0.DOTS(_1)) )
-# 31463 "parser_cocci_menhir.ml"
+# 31589 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31481,9 +31607,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_struct_decl_list_start = 
-# 610 "parser_cocci_menhir.mly"
+# 637 "parser_cocci_menhir.mly"
                                      ( _1 )
-# 31487 "parser_cocci_menhir.ml"
+# 31613 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31511,9 +31637,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_struct_decl_list_start = 
-# 611 "parser_cocci_menhir.mly"
+# 638 "parser_cocci_menhir.mly"
                                      ( _1@_2 )
-# 31517 "parser_cocci_menhir.ml"
+# 31643 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31541,9 +31667,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos_d_ in
         let _endpos = _endpos_r_ in
         let _v : 'tv_struct_decl_list_start = 
-# 613 "parser_cocci_menhir.mly"
+# 640 "parser_cocci_menhir.mly"
     ( (P.mkddots "..." d)::r )
-# 31547 "parser_cocci_menhir.ml"
+# 31673 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31562,16 +31688,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let s : (
-# 50 "parser_cocci_menhir.mly"
+# 72 "parser_cocci_menhir.mly"
       (Data.clt)
-# 31568 "parser_cocci_menhir.ml"
+# 31694 "parser_cocci_menhir.ml"
         ) = Obj.magic s in
         let _startpos = _startpos_s_ in
         let _endpos = _endpos_s_ in
         let _v : 'tv_struct_or_union = 
-# 584 "parser_cocci_menhir.mly"
+# 611 "parser_cocci_menhir.mly"
                  ( P.clt2mcode Ast.Struct s )
-# 31575 "parser_cocci_menhir.ml"
+# 31701 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31590,16 +31716,95 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let u : (
-# 50 "parser_cocci_menhir.mly"
+# 72 "parser_cocci_menhir.mly"
       (Data.clt)
-# 31596 "parser_cocci_menhir.ml"
+# 31722 "parser_cocci_menhir.ml"
         ) = Obj.magic u in
         let _startpos = _startpos_u_ in
         let _endpos = _endpos_u_ in
         let _v : 'tv_struct_or_union = 
-# 585 "parser_cocci_menhir.mly"
+# 612 "parser_cocci_menhir.mly"
                  ( P.clt2mcode Ast.Union u )
-# 31603 "parser_cocci_menhir.ml"
+# 31729 "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 = i;
+          MenhirLib.EngineTypes.startp = _startpos_i_;
+          MenhirLib.EngineTypes.endp = _endpos_i_;
+          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 i : 'tv_meta_ident = Obj.magic i in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos_i_ in
+        let _v : 'tv_sub = 
+# 1629 "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 i =
+            P.check_inherited_constraint i
+              (function mv -> Ast.MetaExpDecl(Ast.NONE,mv,None)) in
+          [i] )
+# 31764 "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__4_;
+          MenhirLib.EngineTypes.endp = _endpos__4_;
+          MenhirLib.EngineTypes.next = {
+            MenhirLib.EngineTypes.semv = l;
+            MenhirLib.EngineTypes.startp = _startpos_l_;
+            MenhirLib.EngineTypes.endp = _endpos_l_;
+            MenhirLib.EngineTypes.next = {
+              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 l : 'tv_comma_list_meta_ident_ = Obj.magic l in
+        let _startpos = _startpos__1_ in
+        let _endpos = _endpos__4_ in
+        let _v : 'tv_sub = 
+# 1638 "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");
+           List.map
+            (function i ->
+              P.check_inherited_constraint i
+                (function mv -> Ast.MetaExpDecl(Ast.NONE,mv,None)))
+            l)
+# 31808 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31621,9 +31826,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_top_eexpr = 
-# 1230 "parser_cocci_menhir.mly"
+# 1259 "parser_cocci_menhir.mly"
         ( Ast0.wrap(Ast0.OTHER(Ast0.wrap(Ast0.Exp(_1)))) )
-# 31627 "parser_cocci_menhir.ml"
+# 31832 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31652,22 +31857,22 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let _3 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31658 "parser_cocci_menhir.ml"
+# 31863 "parser_cocci_menhir.ml"
         ) = Obj.magic _3 in
         let _2 : 'tv_initialize_list = Obj.magic _2 in
         let _1 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 31664 "parser_cocci_menhir.ml"
+# 31869 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__3_ in
         let _v : 'tv_top_init = 
-# 1768 "parser_cocci_menhir.mly"
+# 1837 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.InitList(P.clt2mcode "{" _1,_2,P.clt2mcode "}" _3)) )
-# 31671 "parser_cocci_menhir.ml"
+# 31876 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31682,9 +31887,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 = 
-# 1756 "parser_cocci_menhir.mly"
+# 1825 "parser_cocci_menhir.mly"
                                      ([])
-# 31688 "parser_cocci_menhir.ml"
+# 31893 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31710,9 +31915,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_dots = 
-# 1757 "parser_cocci_menhir.mly"
+# 1826 "parser_cocci_menhir.mly"
                                      (_2)
-# 31716 "parser_cocci_menhir.ml"
+# 31921 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31740,9 +31945,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_dots = 
-# 1758 "parser_cocci_menhir.mly"
+# 1827 "parser_cocci_menhir.mly"
                                      ((Ast0.wrap(Ast0.Exp(_1)))::_2)
-# 31746 "parser_cocci_menhir.ml"
+# 31951 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31770,9 +31975,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_dots = 
-# 1759 "parser_cocci_menhir.mly"
+# 1828 "parser_cocci_menhir.mly"
                                           (_1@_2)
-# 31776 "parser_cocci_menhir.ml"
+# 31981 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31798,9 +32003,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_dots_init = 
-# 1747 "parser_cocci_menhir.mly"
+# 1816 "parser_cocci_menhir.mly"
                                      (_2)
-# 31804 "parser_cocci_menhir.ml"
+# 32009 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31828,9 +32033,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_dots_init = 
-# 1748 "parser_cocci_menhir.mly"
+# 1817 "parser_cocci_menhir.mly"
                                      ((Ast0.wrap(Ast0.Exp(_1)))::_2)
-# 31834 "parser_cocci_menhir.ml"
+# 32039 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31858,9 +32063,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_dots_init = 
-# 1749 "parser_cocci_menhir.mly"
+# 1818 "parser_cocci_menhir.mly"
                                           (_1@_2)
-# 31864 "parser_cocci_menhir.ml"
+# 32069 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31875,9 +32080,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 = 
-# 1752 "parser_cocci_menhir.mly"
+# 1821 "parser_cocci_menhir.mly"
                                      ([])
-# 31881 "parser_cocci_menhir.ml"
+# 32086 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31905,9 +32110,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_exp = 
-# 1753 "parser_cocci_menhir.mly"
+# 1822 "parser_cocci_menhir.mly"
                                      (_1::_2)
-# 31911 "parser_cocci_menhir.ml"
+# 32116 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31922,9 +32127,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 = 
-# 1762 "parser_cocci_menhir.mly"
+# 1831 "parser_cocci_menhir.mly"
                                      ([])
-# 31928 "parser_cocci_menhir.ml"
+# 32133 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31952,9 +32157,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_stm = 
-# 1763 "parser_cocci_menhir.mly"
+# 1832 "parser_cocci_menhir.mly"
                                      (_1::_2)
-# 31958 "parser_cocci_menhir.ml"
+# 32163 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -31982,9 +32187,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_toplevel_after_stm = 
-# 1764 "parser_cocci_menhir.mly"
+# 1833 "parser_cocci_menhir.mly"
                                      (_1@_2)
-# 31988 "parser_cocci_menhir.ml"
+# 32193 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32012,9 +32217,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_ = 
-# 1742 "parser_cocci_menhir.mly"
+# 1811 "parser_cocci_menhir.mly"
                                      ( _1::_2 )
-# 32018 "parser_cocci_menhir.ml"
+# 32223 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32042,9 +32247,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_ = 
-# 1743 "parser_cocci_menhir.mly"
+# 1812 "parser_cocci_menhir.mly"
                                      ( (Ast0.wrap(Ast0.Exp(_1)))::_2 )
-# 32048 "parser_cocci_menhir.ml"
+# 32253 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32072,9 +32277,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_ = 
-# 1744 "parser_cocci_menhir.mly"
+# 1813 "parser_cocci_menhir.mly"
                                           ( _1@_2 )
-# 32078 "parser_cocci_menhir.ml"
+# 32283 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32105,9 +32310,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 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32111 "parser_cocci_menhir.ml"
+# 32316 "parser_cocci_menhir.ml"
         ) = Obj.magic a0 in
         let _startpos = _startpos_a0_ in
         let _endpos = _endpos_b_ in
@@ -32115,15 +32320,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let w = w0 in
           let a = a0 in
           
-# 911 "parser_cocci_menhir.mly"
+# 940 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Dots(P.clt2mcode "..." a, List.concat w)) )
-# 32121 "parser_cocci_menhir.ml"
+# 32326 "parser_cocci_menhir.ml"
           
         in
         
-# 1735 "parser_cocci_menhir.mly"
+# 1804 "parser_cocci_menhir.mly"
                                              ( a::b )
-# 32127 "parser_cocci_menhir.ml"
+# 32332 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32163,16 +32368,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let b : 'tv_toplevel_after_dots_init = Obj.magic b in
         let c0 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32169 "parser_cocci_menhir.ml"
+# 32374 "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 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32176 "parser_cocci_menhir.ml"
+# 32381 "parser_cocci_menhir.ml"
         ) = Obj.magic a0 in
         let _startpos = _startpos_a0_ in
         let _endpos = _endpos_b_ in
@@ -32182,16 +32387,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let w = w0 in
           let a = a0 in
           
-# 915 "parser_cocci_menhir.mly"
+# 944 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<..." a, b,
                          P.clt2mcode "...>" c, List.concat w, false)) )
-# 32189 "parser_cocci_menhir.ml"
+# 32394 "parser_cocci_menhir.ml"
           
         in
         
-# 1736 "parser_cocci_menhir.mly"
+# 1805 "parser_cocci_menhir.mly"
                                               ( a::b )
-# 32195 "parser_cocci_menhir.ml"
+# 32400 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32231,16 +32436,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let b : 'tv_toplevel_after_dots_init = Obj.magic b in
         let c0 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32237 "parser_cocci_menhir.ml"
+# 32442 "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 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32244 "parser_cocci_menhir.ml"
+# 32449 "parser_cocci_menhir.ml"
         ) = Obj.magic a0 in
         let _startpos = _startpos_a0_ in
         let _endpos = _endpos_b_ in
@@ -32250,16 +32455,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let w = w0 in
           let a = a0 in
           
-# 918 "parser_cocci_menhir.mly"
+# 947 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<+..." a, b,
                          P.clt2mcode "...+>" c, List.concat w, true)) )
-# 32257 "parser_cocci_menhir.ml"
+# 32462 "parser_cocci_menhir.ml"
           
         in
         
-# 1736 "parser_cocci_menhir.mly"
+# 1805 "parser_cocci_menhir.mly"
                                               ( a::b )
-# 32263 "parser_cocci_menhir.ml"
+# 32468 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32293,16 +32498,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let c0 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32299 "parser_cocci_menhir.ml"
+# 32504 "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 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32306 "parser_cocci_menhir.ml"
+# 32511 "parser_cocci_menhir.ml"
         ) = Obj.magic a0 in
         let _startpos = _startpos_a0_ in
         let _endpos = _endpos_c0_ in
@@ -32312,16 +32517,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let w = w0 in
           let a = a0 in
           
-# 915 "parser_cocci_menhir.mly"
+# 944 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<..." a, b,
                          P.clt2mcode "...>" c, List.concat w, false)) )
-# 32319 "parser_cocci_menhir.ml"
+# 32524 "parser_cocci_menhir.ml"
           
         in
         
-# 1737 "parser_cocci_menhir.mly"
+# 1806 "parser_cocci_menhir.mly"
                                        ( [a] )
-# 32325 "parser_cocci_menhir.ml"
+# 32530 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32355,16 +32560,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let c0 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32361 "parser_cocci_menhir.ml"
+# 32566 "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 : (
-# 74 "parser_cocci_menhir.mly"
+# 96 "parser_cocci_menhir.mly"
        (Data.clt)
-# 32368 "parser_cocci_menhir.ml"
+# 32573 "parser_cocci_menhir.ml"
         ) = Obj.magic a0 in
         let _startpos = _startpos_a0_ in
         let _endpos = _endpos_c0_ in
@@ -32374,16 +32579,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let w = w0 in
           let a = a0 in
           
-# 918 "parser_cocci_menhir.mly"
+# 947 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Nest(P.clt2mcode "<+..." a, b,
                          P.clt2mcode "...+>" c, List.concat w, true)) )
-# 32381 "parser_cocci_menhir.ml"
+# 32586 "parser_cocci_menhir.ml"
           
         in
         
-# 1737 "parser_cocci_menhir.mly"
+# 1806 "parser_cocci_menhir.mly"
                                        ( [a] )
-# 32387 "parser_cocci_menhir.ml"
+# 32592 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32411,9 +32616,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_ = 
-# 1738 "parser_cocci_menhir.mly"
+# 1807 "parser_cocci_menhir.mly"
                                      ( (Ast0.wrap(Ast0.Exp(_1)))::_2 )
-# 32417 "parser_cocci_menhir.ml"
+# 32622 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32441,9 +32646,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_ = 
-# 1739 "parser_cocci_menhir.mly"
+# 1808 "parser_cocci_menhir.mly"
                                           ( _1@_2 )
-# 32447 "parser_cocci_menhir.ml"
+# 32652 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32473,14 +32678,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32479 "parser_cocci_menhir.ml"
+# 32684 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32484 "parser_cocci_menhir.ml"
+# 32689 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -32490,28 +32695,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 502 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 32496 "parser_cocci_menhir.ml"
+# 32701 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 32502 "parser_cocci_menhir.ml"
+# 32707 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 32509 "parser_cocci_menhir.ml"
+# 32714 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 32515 "parser_cocci_menhir.ml"
+# 32720 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32541,14 +32746,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32547 "parser_cocci_menhir.ml"
+# 32752 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32552 "parser_cocci_menhir.ml"
+# 32757 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -32558,28 +32763,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 504 "parser_cocci_menhir.mly"
+# 531 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 32564 "parser_cocci_menhir.ml"
+# 32769 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 32570 "parser_cocci_menhir.ml"
+# 32775 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 32577 "parser_cocci_menhir.ml"
+# 32782 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 32583 "parser_cocci_menhir.ml"
+# 32788 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32609,14 +32814,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32615 "parser_cocci_menhir.ml"
+# 32820 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32620 "parser_cocci_menhir.ml"
+# 32825 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -32626,28 +32831,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 506 "parser_cocci_menhir.mly"
+# 533 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 32632 "parser_cocci_menhir.ml"
+# 32837 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 32638 "parser_cocci_menhir.ml"
+# 32843 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 32645 "parser_cocci_menhir.ml"
+# 32850 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 32651 "parser_cocci_menhir.ml"
+# 32856 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32677,14 +32882,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 32683 "parser_cocci_menhir.ml"
+# 32888 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32688 "parser_cocci_menhir.ml"
+# 32893 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -32694,29 +32899,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 535 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 32701 "parser_cocci_menhir.ml"
+# 32906 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 32707 "parser_cocci_menhir.ml"
+# 32912 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 32714 "parser_cocci_menhir.ml"
+# 32919 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 32720 "parser_cocci_menhir.ml"
+# 32925 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32755,19 +32960,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 32761 "parser_cocci_menhir.ml"
+# 32966 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 32766 "parser_cocci_menhir.ml"
+# 32971 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let r1 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32771 "parser_cocci_menhir.ml"
+# 32976 "parser_cocci_menhir.ml"
         ) = Obj.magic r1 in
         let _startpos = _startpos_r1_ in
         let _endpos = _endpos_m_ in
@@ -32779,33 +32984,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 511 "parser_cocci_menhir.mly"
+# 538 "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*))) )
-# 32790 "parser_cocci_menhir.ml"
+# 32995 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 32796 "parser_cocci_menhir.ml"
+# 33001 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 32803 "parser_cocci_menhir.ml"
+# 33008 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 32809 "parser_cocci_menhir.ml"
+# 33014 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32835,14 +33040,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32841 "parser_cocci_menhir.ml"
+# 33046 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32846 "parser_cocci_menhir.ml"
+# 33051 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -32852,28 +33057,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 518 "parser_cocci_menhir.mly"
+# 545 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 32858 "parser_cocci_menhir.ml"
+# 33063 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 32864 "parser_cocci_menhir.ml"
+# 33069 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 32871 "parser_cocci_menhir.ml"
+# 33076 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 32877 "parser_cocci_menhir.ml"
+# 33082 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32908,19 +33113,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32914 "parser_cocci_menhir.ml"
+# 33119 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32919 "parser_cocci_menhir.ml"
+# 33124 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32924 "parser_cocci_menhir.ml"
+# 33129 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -32932,31 +33137,31 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 520 "parser_cocci_menhir.mly"
+# 547 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 32941 "parser_cocci_menhir.ml"
+# 33146 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 32947 "parser_cocci_menhir.ml"
+# 33152 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 32954 "parser_cocci_menhir.ml"
+# 33159 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 32960 "parser_cocci_menhir.ml"
+# 33165 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -32986,14 +33191,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32992 "parser_cocci_menhir.ml"
+# 33197 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 32997 "parser_cocci_menhir.ml"
+# 33202 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -33003,28 +33208,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 502 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 33009 "parser_cocci_menhir.ml"
+# 33214 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 33015 "parser_cocci_menhir.ml"
+# 33220 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33022 "parser_cocci_menhir.ml"
+# 33227 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33028 "parser_cocci_menhir.ml"
+# 33233 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33054,14 +33259,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33060 "parser_cocci_menhir.ml"
+# 33265 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33065 "parser_cocci_menhir.ml"
+# 33270 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -33071,28 +33276,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 504 "parser_cocci_menhir.mly"
+# 531 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 33077 "parser_cocci_menhir.ml"
+# 33282 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 33083 "parser_cocci_menhir.ml"
+# 33288 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33090 "parser_cocci_menhir.ml"
+# 33295 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33096 "parser_cocci_menhir.ml"
+# 33301 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33122,14 +33327,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33128 "parser_cocci_menhir.ml"
+# 33333 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33133 "parser_cocci_menhir.ml"
+# 33338 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -33139,28 +33344,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 506 "parser_cocci_menhir.mly"
+# 533 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 33145 "parser_cocci_menhir.ml"
+# 33350 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 33151 "parser_cocci_menhir.ml"
+# 33356 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33158 "parser_cocci_menhir.ml"
+# 33363 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33164 "parser_cocci_menhir.ml"
+# 33369 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33190,14 +33395,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 33196 "parser_cocci_menhir.ml"
+# 33401 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33201 "parser_cocci_menhir.ml"
+# 33406 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -33207,29 +33412,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 535 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 33214 "parser_cocci_menhir.ml"
+# 33419 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 33220 "parser_cocci_menhir.ml"
+# 33425 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33227 "parser_cocci_menhir.ml"
+# 33432 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33233 "parser_cocci_menhir.ml"
+# 33438 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33268,19 +33473,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 33274 "parser_cocci_menhir.ml"
+# 33479 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 33279 "parser_cocci_menhir.ml"
+# 33484 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let r1 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33284 "parser_cocci_menhir.ml"
+# 33489 "parser_cocci_menhir.ml"
         ) = Obj.magic r1 in
         let _startpos = _startpos_r1_ in
         let _endpos = _endpos_m_ in
@@ -33292,33 +33497,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 511 "parser_cocci_menhir.mly"
+# 538 "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*))) )
-# 33303 "parser_cocci_menhir.ml"
+# 33508 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 33309 "parser_cocci_menhir.ml"
+# 33514 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33316 "parser_cocci_menhir.ml"
+# 33521 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33322 "parser_cocci_menhir.ml"
+# 33527 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33348,14 +33553,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33354 "parser_cocci_menhir.ml"
+# 33559 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33359 "parser_cocci_menhir.ml"
+# 33564 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -33365,28 +33570,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 518 "parser_cocci_menhir.mly"
+# 545 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 33371 "parser_cocci_menhir.ml"
+# 33576 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 33377 "parser_cocci_menhir.ml"
+# 33582 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33384 "parser_cocci_menhir.ml"
+# 33589 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33390 "parser_cocci_menhir.ml"
+# 33595 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33421,19 +33626,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33427 "parser_cocci_menhir.ml"
+# 33632 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33432 "parser_cocci_menhir.ml"
+# 33637 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33437 "parser_cocci_menhir.ml"
+# 33642 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let _startpos = _startpos_r0_ in
         let _endpos = _endpos_m_ in
@@ -33445,31 +33650,31 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 520 "parser_cocci_menhir.mly"
+# 547 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 33454 "parser_cocci_menhir.ml"
+# 33659 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 33460 "parser_cocci_menhir.ml"
+# 33665 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33467 "parser_cocci_menhir.ml"
+# 33672 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33473 "parser_cocci_menhir.ml"
+# 33678 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33494,9 +33699,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33500 "parser_cocci_menhir.ml"
+# 33705 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -33505,28 +33710,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 502 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 33511 "parser_cocci_menhir.ml"
+# 33716 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 33517 "parser_cocci_menhir.ml"
+# 33722 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33524 "parser_cocci_menhir.ml"
+# 33729 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33530 "parser_cocci_menhir.ml"
+# 33735 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33551,9 +33756,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33557 "parser_cocci_menhir.ml"
+# 33762 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -33562,28 +33767,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 504 "parser_cocci_menhir.mly"
+# 531 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 33568 "parser_cocci_menhir.ml"
+# 33773 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 33574 "parser_cocci_menhir.ml"
+# 33779 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33581 "parser_cocci_menhir.ml"
+# 33786 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33587 "parser_cocci_menhir.ml"
+# 33792 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33608,9 +33813,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33614 "parser_cocci_menhir.ml"
+# 33819 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -33619,28 +33824,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 506 "parser_cocci_menhir.mly"
+# 533 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 33625 "parser_cocci_menhir.ml"
+# 33830 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 33631 "parser_cocci_menhir.ml"
+# 33836 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33638 "parser_cocci_menhir.ml"
+# 33843 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33644 "parser_cocci_menhir.ml"
+# 33849 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33665,9 +33870,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 33671 "parser_cocci_menhir.ml"
+# 33876 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let _startpos = _startpos_p00_ in
         let _endpos = _endpos_m_ in
@@ -33676,29 +33881,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 535 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 33683 "parser_cocci_menhir.ml"
+# 33888 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 33689 "parser_cocci_menhir.ml"
+# 33894 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33696 "parser_cocci_menhir.ml"
+# 33901 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33702 "parser_cocci_menhir.ml"
+# 33907 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33732,14 +33937,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 33738 "parser_cocci_menhir.ml"
+# 33943 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 33743 "parser_cocci_menhir.ml"
+# 33948 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let _startpos = _startpos_r00_ in
         let _endpos = _endpos_m_ in
@@ -33750,33 +33955,33 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 511 "parser_cocci_menhir.mly"
+# 538 "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*))) )
-# 33761 "parser_cocci_menhir.ml"
+# 33966 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 33767 "parser_cocci_menhir.ml"
+# 33972 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33774 "parser_cocci_menhir.ml"
+# 33979 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33780 "parser_cocci_menhir.ml"
+# 33985 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33801,9 +34006,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33807 "parser_cocci_menhir.ml"
+# 34012 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -33812,28 +34017,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 518 "parser_cocci_menhir.mly"
+# 545 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 33818 "parser_cocci_menhir.ml"
+# 34023 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 33824 "parser_cocci_menhir.ml"
+# 34029 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33831 "parser_cocci_menhir.ml"
+# 34036 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33837 "parser_cocci_menhir.ml"
+# 34042 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33863,14 +34068,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33869 "parser_cocci_menhir.ml"
+# 34074 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33874 "parser_cocci_menhir.ml"
+# 34079 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let _startpos = _startpos_ty100_ in
         let _endpos = _endpos_m_ in
@@ -33881,31 +34086,31 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 520 "parser_cocci_menhir.mly"
+# 547 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 33890 "parser_cocci_menhir.ml"
+# 34095 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 33896 "parser_cocci_menhir.ml"
+# 34101 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33903 "parser_cocci_menhir.ml"
+# 34108 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33909 "parser_cocci_menhir.ml"
+# 34114 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33930,9 +34135,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 50 "parser_cocci_menhir.mly"
+# 72 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33936 "parser_cocci_menhir.ml"
+# 34141 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -33941,28 +34146,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 528 "parser_cocci_menhir.mly"
+# 555 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" ty])) )
-# 33947 "parser_cocci_menhir.ml"
+# 34152 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 33953 "parser_cocci_menhir.ml"
+# 34158 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 33960 "parser_cocci_menhir.ml"
+# 34165 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 33966 "parser_cocci_menhir.ml"
+# 34171 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -33987,9 +34192,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 33993 "parser_cocci_menhir.ml"
+# 34198 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -33998,28 +34203,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 530 "parser_cocci_menhir.mly"
+# 557 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.DoubleType,[P.clt2mcode "double" ty])) )
-# 34004 "parser_cocci_menhir.ml"
+# 34209 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 34010 "parser_cocci_menhir.ml"
+# 34215 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34017 "parser_cocci_menhir.ml"
+# 34222 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34023 "parser_cocci_menhir.ml"
+# 34228 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34044,9 +34249,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34050 "parser_cocci_menhir.ml"
+# 34255 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let _startpos = _startpos_ty00_ in
         let _endpos = _endpos_m_ in
@@ -34055,28 +34260,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 532 "parser_cocci_menhir.mly"
+# 559 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" ty])) )
-# 34061 "parser_cocci_menhir.ml"
+# 34266 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 34067 "parser_cocci_menhir.ml"
+# 34272 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34074 "parser_cocci_menhir.ml"
+# 34279 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34080 "parser_cocci_menhir.ml"
+# 34285 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34107,9 +34312,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 : (
-# 50 "parser_cocci_menhir.mly"
+# 72 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34113 "parser_cocci_menhir.ml"
+# 34318 "parser_cocci_menhir.ml"
         ) = Obj.magic s00 in
         let _startpos = _startpos_s00_ in
         let _endpos = _endpos_m_ in
@@ -34120,28 +34325,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let i = i0 in
             let s = s0 in
             
-# 534 "parser_cocci_menhir.mly"
+# 561 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)) )
-# 34126 "parser_cocci_menhir.ml"
+# 34331 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 34132 "parser_cocci_menhir.ml"
+# 34337 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34139 "parser_cocci_menhir.ml"
+# 34344 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34145 "parser_cocci_menhir.ml"
+# 34350 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34181,28 +34386,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let i = i0 in
             let s = s0 in
             
-# 536 "parser_cocci_menhir.mly"
+# 563 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.StructUnionName(s, Some i)) )
-# 34187 "parser_cocci_menhir.ml"
+# 34392 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 34193 "parser_cocci_menhir.ml"
+# 34398 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34200 "parser_cocci_menhir.ml"
+# 34405 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34206 "parser_cocci_menhir.ml"
+# 34411 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34242,15 +34447,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 34248 "parser_cocci_menhir.ml"
+# 34453 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 34254 "parser_cocci_menhir.ml"
+# 34459 "parser_cocci_menhir.ml"
         ) = Obj.magic l00 in
         let s00 : 'tv_struct_or_union = Obj.magic s00 in
         let _startpos = _startpos_s00_ in
@@ -34269,36 +34474,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               
 # 39 "standard.mly"
     ( None )
-# 34273 "parser_cocci_menhir.ml"
+# 34478 "parser_cocci_menhir.ml"
               
             in
             
-# 539 "parser_cocci_menhir.mly"
+# 566 "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)) )
-# 34283 "parser_cocci_menhir.ml"
+# 34488 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 34289 "parser_cocci_menhir.ml"
+# 34494 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34296 "parser_cocci_menhir.ml"
+# 34501 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34302 "parser_cocci_menhir.ml"
+# 34507 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34343,15 +34548,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 34349 "parser_cocci_menhir.ml"
+# 34554 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 34355 "parser_cocci_menhir.ml"
+# 34560 "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
@@ -34374,36 +34579,36 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               
 # 41 "standard.mly"
     ( Some x )
-# 34378 "parser_cocci_menhir.ml"
+# 34583 "parser_cocci_menhir.ml"
               
             in
             
-# 539 "parser_cocci_menhir.mly"
+# 566 "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)) )
-# 34388 "parser_cocci_menhir.ml"
+# 34593 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 34394 "parser_cocci_menhir.ml"
+# 34599 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34401 "parser_cocci_menhir.ml"
+# 34606 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34407 "parser_cocci_menhir.ml"
+# 34612 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34443,20 +34648,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 34449 "parser_cocci_menhir.ml"
+# 34654 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 34455 "parser_cocci_menhir.ml"
+# 34660 "parser_cocci_menhir.ml"
         ) = Obj.magic l00 in
         let s00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 34460 "parser_cocci_menhir.ml"
+# 34665 "parser_cocci_menhir.ml"
         ) = Obj.magic s00 in
         let _startpos = _startpos_s00_ in
         let _endpos = _endpos_m_ in
@@ -34471,30 +34676,30 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let l = l0 in
             let s = s0 in
             
-# 545 "parser_cocci_menhir.mly"
+# 572 "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)) )
-# 34479 "parser_cocci_menhir.ml"
+# 34684 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 34485 "parser_cocci_menhir.ml"
+# 34690 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34492 "parser_cocci_menhir.ml"
+# 34697 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34498 "parser_cocci_menhir.ml"
+# 34703 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34519,9 +34724,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 34525 "parser_cocci_menhir.ml"
+# 34730 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let _startpos = _startpos_p00_ in
         let _endpos = _endpos_m_ in
@@ -34530,28 +34735,28 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 549 "parser_cocci_menhir.mly"
+# 576 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.TypeName(P.id2mcode p)) )
-# 34536 "parser_cocci_menhir.ml"
+# 34741 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 34542 "parser_cocci_menhir.ml"
+# 34747 "parser_cocci_menhir.ml"
           
         in
         let cv =
           
 # 39 "standard.mly"
     ( None )
-# 34549 "parser_cocci_menhir.ml"
+# 34754 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34555 "parser_cocci_menhir.ml"
+# 34760 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34586,14 +34791,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34592 "parser_cocci_menhir.ml"
+# 34797 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34597 "parser_cocci_menhir.ml"
+# 34802 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -34604,15 +34809,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 502 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 34610 "parser_cocci_menhir.ml"
+# 34815 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 34616 "parser_cocci_menhir.ml"
+# 34821 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -34620,13 +34825,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 34624 "parser_cocci_menhir.ml"
+# 34829 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34630 "parser_cocci_menhir.ml"
+# 34835 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34661,14 +34866,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34667 "parser_cocci_menhir.ml"
+# 34872 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34672 "parser_cocci_menhir.ml"
+# 34877 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -34679,15 +34884,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 504 "parser_cocci_menhir.mly"
+# 531 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 34685 "parser_cocci_menhir.ml"
+# 34890 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 34691 "parser_cocci_menhir.ml"
+# 34896 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -34695,13 +34900,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 34699 "parser_cocci_menhir.ml"
+# 34904 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34705 "parser_cocci_menhir.ml"
+# 34910 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34736,14 +34941,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34742 "parser_cocci_menhir.ml"
+# 34947 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34747 "parser_cocci_menhir.ml"
+# 34952 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -34754,15 +34959,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 506 "parser_cocci_menhir.mly"
+# 533 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 34760 "parser_cocci_menhir.ml"
+# 34965 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 34766 "parser_cocci_menhir.ml"
+# 34971 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -34770,13 +34975,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 34774 "parser_cocci_menhir.ml"
+# 34979 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34780 "parser_cocci_menhir.ml"
+# 34985 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34811,14 +35016,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 34817 "parser_cocci_menhir.ml"
+# 35022 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34822 "parser_cocci_menhir.ml"
+# 35027 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -34829,16 +35034,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 535 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 34836 "parser_cocci_menhir.ml"
+# 35041 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 34842 "parser_cocci_menhir.ml"
+# 35047 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -34846,13 +35051,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 34850 "parser_cocci_menhir.ml"
+# 35055 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34856 "parser_cocci_menhir.ml"
+# 35061 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34896,19 +35101,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 34902 "parser_cocci_menhir.ml"
+# 35107 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 34907 "parser_cocci_menhir.ml"
+# 35112 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let r1 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34912 "parser_cocci_menhir.ml"
+# 35117 "parser_cocci_menhir.ml"
         ) = Obj.magic r1 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -34921,20 +35126,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 511 "parser_cocci_menhir.mly"
+# 538 "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*))) )
-# 34932 "parser_cocci_menhir.ml"
+# 35137 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 34938 "parser_cocci_menhir.ml"
+# 35143 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -34942,13 +35147,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 34946 "parser_cocci_menhir.ml"
+# 35151 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 34952 "parser_cocci_menhir.ml"
+# 35157 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -34983,14 +35188,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34989 "parser_cocci_menhir.ml"
+# 35194 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 34994 "parser_cocci_menhir.ml"
+# 35199 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35001,15 +35206,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 518 "parser_cocci_menhir.mly"
+# 545 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 35007 "parser_cocci_menhir.ml"
+# 35212 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 35013 "parser_cocci_menhir.ml"
+# 35218 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35017,13 +35222,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35021 "parser_cocci_menhir.ml"
+# 35226 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35027 "parser_cocci_menhir.ml"
+# 35232 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35063,19 +35268,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35069 "parser_cocci_menhir.ml"
+# 35274 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35074 "parser_cocci_menhir.ml"
+# 35279 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35079 "parser_cocci_menhir.ml"
+# 35284 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35088,18 +35293,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 520 "parser_cocci_menhir.mly"
+# 547 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 35097 "parser_cocci_menhir.ml"
+# 35302 "parser_cocci_menhir.ml"
             
           in
           
-# 554 "parser_cocci_menhir.mly"
+# 581 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Signed r,Some ty)) )
-# 35103 "parser_cocci_menhir.ml"
+# 35308 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35107,13 +35312,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35111 "parser_cocci_menhir.ml"
+# 35316 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35117 "parser_cocci_menhir.ml"
+# 35322 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35148,14 +35353,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35154 "parser_cocci_menhir.ml"
+# 35359 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35159 "parser_cocci_menhir.ml"
+# 35364 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35166,15 +35371,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 502 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 35172 "parser_cocci_menhir.ml"
+# 35377 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 35178 "parser_cocci_menhir.ml"
+# 35383 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35182,13 +35387,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35186 "parser_cocci_menhir.ml"
+# 35391 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35192 "parser_cocci_menhir.ml"
+# 35397 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35223,14 +35428,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35229 "parser_cocci_menhir.ml"
+# 35434 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35234 "parser_cocci_menhir.ml"
+# 35439 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35241,15 +35446,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 504 "parser_cocci_menhir.mly"
+# 531 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 35247 "parser_cocci_menhir.ml"
+# 35452 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 35253 "parser_cocci_menhir.ml"
+# 35458 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35257,13 +35462,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35261 "parser_cocci_menhir.ml"
+# 35466 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35267 "parser_cocci_menhir.ml"
+# 35472 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35298,14 +35503,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35304 "parser_cocci_menhir.ml"
+# 35509 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35309 "parser_cocci_menhir.ml"
+# 35514 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35316,15 +35521,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 506 "parser_cocci_menhir.mly"
+# 533 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 35322 "parser_cocci_menhir.ml"
+# 35527 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 35328 "parser_cocci_menhir.ml"
+# 35533 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35332,13 +35537,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35336 "parser_cocci_menhir.ml"
+# 35541 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35342 "parser_cocci_menhir.ml"
+# 35547 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35373,14 +35578,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 35379 "parser_cocci_menhir.ml"
+# 35584 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35384 "parser_cocci_menhir.ml"
+# 35589 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35391,16 +35596,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 535 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 35398 "parser_cocci_menhir.ml"
+# 35603 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 35404 "parser_cocci_menhir.ml"
+# 35609 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35408,13 +35613,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35412 "parser_cocci_menhir.ml"
+# 35617 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35418 "parser_cocci_menhir.ml"
+# 35623 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35458,19 +35663,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 35464 "parser_cocci_menhir.ml"
+# 35669 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 35469 "parser_cocci_menhir.ml"
+# 35674 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let r1 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35474 "parser_cocci_menhir.ml"
+# 35679 "parser_cocci_menhir.ml"
         ) = Obj.magic r1 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35483,20 +35688,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 511 "parser_cocci_menhir.mly"
+# 538 "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*))) )
-# 35494 "parser_cocci_menhir.ml"
+# 35699 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 35500 "parser_cocci_menhir.ml"
+# 35705 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35504,13 +35709,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35508 "parser_cocci_menhir.ml"
+# 35713 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35514 "parser_cocci_menhir.ml"
+# 35719 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35545,14 +35750,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35551 "parser_cocci_menhir.ml"
+# 35756 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35556 "parser_cocci_menhir.ml"
+# 35761 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35563,15 +35768,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 518 "parser_cocci_menhir.mly"
+# 545 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 35569 "parser_cocci_menhir.ml"
+# 35774 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 35575 "parser_cocci_menhir.ml"
+# 35780 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35579,13 +35784,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35583 "parser_cocci_menhir.ml"
+# 35788 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35589 "parser_cocci_menhir.ml"
+# 35794 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35625,19 +35830,19 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35631 "parser_cocci_menhir.ml"
+# 35836 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35636 "parser_cocci_menhir.ml"
+# 35841 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let r0 : (
-# 51 "parser_cocci_menhir.mly"
+# 73 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35641 "parser_cocci_menhir.ml"
+# 35846 "parser_cocci_menhir.ml"
         ) = Obj.magic r0 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35650,18 +35855,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 520 "parser_cocci_menhir.mly"
+# 547 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 35659 "parser_cocci_menhir.ml"
+# 35864 "parser_cocci_menhir.ml"
             
           in
           
-# 556 "parser_cocci_menhir.mly"
+# 583 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.Signed(P.clt2mcode Ast.Unsigned r,Some ty)) )
-# 35665 "parser_cocci_menhir.ml"
+# 35870 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35669,13 +35874,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35673 "parser_cocci_menhir.ml"
+# 35878 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35679 "parser_cocci_menhir.ml"
+# 35884 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35705,9 +35910,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35711 "parser_cocci_menhir.ml"
+# 35916 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35717,15 +35922,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 502 "parser_cocci_menhir.mly"
+# 529 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.CharType,[P.clt2mcode "char" ty])) )
-# 35723 "parser_cocci_menhir.ml"
+# 35928 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 35729 "parser_cocci_menhir.ml"
+# 35934 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35733,13 +35938,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35737 "parser_cocci_menhir.ml"
+# 35942 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35743 "parser_cocci_menhir.ml"
+# 35948 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35769,9 +35974,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35775 "parser_cocci_menhir.ml"
+# 35980 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35781,15 +35986,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 504 "parser_cocci_menhir.mly"
+# 531 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.ShortType,[P.clt2mcode "short" ty])) )
-# 35787 "parser_cocci_menhir.ml"
+# 35992 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 35793 "parser_cocci_menhir.ml"
+# 35998 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35797,13 +36002,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35801 "parser_cocci_menhir.ml"
+# 36006 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35807 "parser_cocci_menhir.ml"
+# 36012 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35833,9 +36038,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 35839 "parser_cocci_menhir.ml"
+# 36044 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35845,15 +36050,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 506 "parser_cocci_menhir.mly"
+# 533 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.IntType,[P.clt2mcode "int" ty])) )
-# 35851 "parser_cocci_menhir.ml"
+# 36056 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 35857 "parser_cocci_menhir.ml"
+# 36062 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35861,13 +36066,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35865 "parser_cocci_menhir.ml"
+# 36070 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35871 "parser_cocci_menhir.ml"
+# 36076 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35897,9 +36102,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 35903 "parser_cocci_menhir.ml"
+# 36108 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35909,16 +36114,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 508 "parser_cocci_menhir.mly"
+# 535 "parser_cocci_menhir.mly"
     ( let (nm,pure,clt) = p in
       Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 35916 "parser_cocci_menhir.ml"
+# 36121 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 35922 "parser_cocci_menhir.ml"
+# 36127 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -35926,13 +36131,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 35930 "parser_cocci_menhir.ml"
+# 36135 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 35936 "parser_cocci_menhir.ml"
+# 36141 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -35971,14 +36176,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 35977 "parser_cocci_menhir.ml"
+# 36182 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let r00 : (
-# 47 "parser_cocci_menhir.mly"
+# 69 "parser_cocci_menhir.mly"
       (string)
-# 35982 "parser_cocci_menhir.ml"
+# 36187 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -35990,20 +36195,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let p = p0 in
             let r = r0 in
             
-# 511 "parser_cocci_menhir.mly"
+# 538 "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*))) )
-# 36001 "parser_cocci_menhir.ml"
+# 36206 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 36007 "parser_cocci_menhir.ml"
+# 36212 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36011,13 +36216,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36015 "parser_cocci_menhir.ml"
+# 36220 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36021 "parser_cocci_menhir.ml"
+# 36226 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36047,9 +36252,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36053 "parser_cocci_menhir.ml"
+# 36258 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36059,15 +36264,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 518 "parser_cocci_menhir.mly"
+# 545 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.LongType,[P.clt2mcode "long" ty])) )
-# 36065 "parser_cocci_menhir.ml"
+# 36270 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 36071 "parser_cocci_menhir.ml"
+# 36276 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36075,13 +36280,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36079 "parser_cocci_menhir.ml"
+# 36284 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36085 "parser_cocci_menhir.ml"
+# 36290 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36116,14 +36321,14 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty200 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36122 "parser_cocci_menhir.ml"
+# 36327 "parser_cocci_menhir.ml"
         ) = Obj.magic ty200 in
         let ty100 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36127 "parser_cocci_menhir.ml"
+# 36332 "parser_cocci_menhir.ml"
         ) = Obj.magic ty100 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36135,18 +36340,18 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let ty2 = ty20 in
             let ty1 = ty10 in
             
-# 520 "parser_cocci_menhir.mly"
+# 547 "parser_cocci_menhir.mly"
     ( Ast0.wrap
        (Ast0.BaseType
           (Ast.LongLongType,
            [P.clt2mcode "long" ty1;P.clt2mcode "long" ty2])) )
-# 36144 "parser_cocci_menhir.ml"
+# 36349 "parser_cocci_menhir.ml"
             
           in
           
-# 557 "parser_cocci_menhir.mly"
+# 584 "parser_cocci_menhir.mly"
                     ( ty )
-# 36150 "parser_cocci_menhir.ml"
+# 36355 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36154,13 +36359,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36158 "parser_cocci_menhir.ml"
+# 36363 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36164 "parser_cocci_menhir.ml"
+# 36369 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36190,9 +36395,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 50 "parser_cocci_menhir.mly"
+# 72 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36196 "parser_cocci_menhir.ml"
+# 36401 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36202,15 +36407,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 528 "parser_cocci_menhir.mly"
+# 555 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.VoidType,[P.clt2mcode "void" ty])) )
-# 36208 "parser_cocci_menhir.ml"
+# 36413 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 36214 "parser_cocci_menhir.ml"
+# 36419 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36218,13 +36423,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36222 "parser_cocci_menhir.ml"
+# 36427 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36228 "parser_cocci_menhir.ml"
+# 36433 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36254,9 +36459,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36260 "parser_cocci_menhir.ml"
+# 36465 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36266,15 +36471,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 530 "parser_cocci_menhir.mly"
+# 557 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.DoubleType,[P.clt2mcode "double" ty])) )
-# 36272 "parser_cocci_menhir.ml"
+# 36477 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 36278 "parser_cocci_menhir.ml"
+# 36483 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36282,13 +36487,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36286 "parser_cocci_menhir.ml"
+# 36491 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36292 "parser_cocci_menhir.ml"
+# 36497 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36318,9 +36523,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let ty00 : (
-# 49 "parser_cocci_menhir.mly"
+# 71 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36324 "parser_cocci_menhir.ml"
+# 36529 "parser_cocci_menhir.ml"
         ) = Obj.magic ty00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36330,15 +36535,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let ty = ty0 in
             
-# 532 "parser_cocci_menhir.mly"
+# 559 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.BaseType(Ast.FloatType,[P.clt2mcode "float" ty])) )
-# 36336 "parser_cocci_menhir.ml"
+# 36541 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 36342 "parser_cocci_menhir.ml"
+# 36547 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36346,13 +36551,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36350 "parser_cocci_menhir.ml"
+# 36555 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36356 "parser_cocci_menhir.ml"
+# 36561 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36388,9 +36593,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 : (
-# 50 "parser_cocci_menhir.mly"
+# 72 "parser_cocci_menhir.mly"
       (Data.clt)
-# 36394 "parser_cocci_menhir.ml"
+# 36599 "parser_cocci_menhir.ml"
         ) = Obj.magic s00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36402,15 +36607,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let i = i0 in
             let s = s0 in
             
-# 534 "parser_cocci_menhir.mly"
+# 561 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.EnumName(P.clt2mcode "enum" s, i)) )
-# 36408 "parser_cocci_menhir.ml"
+# 36613 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 36414 "parser_cocci_menhir.ml"
+# 36619 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36418,13 +36623,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36422 "parser_cocci_menhir.ml"
+# 36627 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36428 "parser_cocci_menhir.ml"
+# 36633 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36470,15 +36675,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let i = i0 in
             let s = s0 in
             
-# 536 "parser_cocci_menhir.mly"
+# 563 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.StructUnionName(s, Some i)) )
-# 36476 "parser_cocci_menhir.ml"
+# 36681 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 36482 "parser_cocci_menhir.ml"
+# 36687 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36486,13 +36691,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36490 "parser_cocci_menhir.ml"
+# 36695 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36496 "parser_cocci_menhir.ml"
+# 36701 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36537,15 +36742,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 36543 "parser_cocci_menhir.ml"
+# 36748 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 36549 "parser_cocci_menhir.ml"
+# 36754 "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
@@ -36565,23 +36770,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               
 # 39 "standard.mly"
     ( None )
-# 36569 "parser_cocci_menhir.ml"
+# 36774 "parser_cocci_menhir.ml"
               
             in
             
-# 539 "parser_cocci_menhir.mly"
+# 566 "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)) )
-# 36579 "parser_cocci_menhir.ml"
+# 36784 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 36585 "parser_cocci_menhir.ml"
+# 36790 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36589,13 +36794,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36593 "parser_cocci_menhir.ml"
+# 36798 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36599 "parser_cocci_menhir.ml"
+# 36804 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36645,15 +36850,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 36651 "parser_cocci_menhir.ml"
+# 36856 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 36657 "parser_cocci_menhir.ml"
+# 36862 "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
@@ -36677,23 +36882,23 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
               
 # 41 "standard.mly"
     ( Some x )
-# 36681 "parser_cocci_menhir.ml"
+# 36886 "parser_cocci_menhir.ml"
               
             in
             
-# 539 "parser_cocci_menhir.mly"
+# 566 "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)) )
-# 36691 "parser_cocci_menhir.ml"
+# 36896 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 36697 "parser_cocci_menhir.ml"
+# 36902 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36701,13 +36906,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36705 "parser_cocci_menhir.ml"
+# 36910 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36711 "parser_cocci_menhir.ml"
+# 36916 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36752,20 +36957,20 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let r00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 36758 "parser_cocci_menhir.ml"
+# 36963 "parser_cocci_menhir.ml"
         ) = Obj.magic r00 in
         let d00 : 'tv_struct_decl_list = Obj.magic d00 in
         let l00 : (
-# 102 "parser_cocci_menhir.mly"
+# 124 "parser_cocci_menhir.mly"
        (Data.clt)
-# 36764 "parser_cocci_menhir.ml"
+# 36969 "parser_cocci_menhir.ml"
         ) = Obj.magic l00 in
         let s00 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 36769 "parser_cocci_menhir.ml"
+# 36974 "parser_cocci_menhir.ml"
         ) = Obj.magic s00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36781,17 +36986,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             let l = l0 in
             let s = s0 in
             
-# 545 "parser_cocci_menhir.mly"
+# 572 "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)) )
-# 36789 "parser_cocci_menhir.ml"
+# 36994 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 36795 "parser_cocci_menhir.ml"
+# 37000 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36799,13 +37004,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36803 "parser_cocci_menhir.ml"
+# 37008 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36809 "parser_cocci_menhir.ml"
+# 37014 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36835,9 +37040,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let m : 'tv_list_TMul_ = Obj.magic m in
         let p00 : (
-# 59 "parser_cocci_menhir.mly"
+# 81 "parser_cocci_menhir.mly"
        (string * Data.clt)
-# 36841 "parser_cocci_menhir.ml"
+# 37046 "parser_cocci_menhir.ml"
         ) = Obj.magic p00 in
         let x0 : 'tv_const_vol = Obj.magic x0 in
         let _startpos = _startpos_x0_ in
@@ -36847,15 +37052,15 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           let ty =
             let p = p0 in
             
-# 549 "parser_cocci_menhir.mly"
+# 576 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.TypeName(P.id2mcode p)) )
-# 36853 "parser_cocci_menhir.ml"
+# 37058 "parser_cocci_menhir.ml"
             
           in
           
-# 558 "parser_cocci_menhir.mly"
+# 585 "parser_cocci_menhir.mly"
                         ( ty )
-# 36859 "parser_cocci_menhir.ml"
+# 37064 "parser_cocci_menhir.ml"
           
         in
         let cv =
@@ -36863,13 +37068,13 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           
 # 41 "standard.mly"
     ( Some x )
-# 36867 "parser_cocci_menhir.ml"
+# 37072 "parser_cocci_menhir.ml"
           
         in
         
-# 575 "parser_cocci_menhir.mly"
+# 602 "parser_cocci_menhir.mly"
     ( P.pointerify (P.make_cv cv ty) m )
-# 36873 "parser_cocci_menhir.ml"
+# 37078 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36898,24 +37103,24 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rp : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 36904 "parser_cocci_menhir.ml"
+# 37109 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_midzero_list_ctype_ctype_ = Obj.magic t in
         let lp : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 36910 "parser_cocci_menhir.ml"
+# 37115 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let _startpos = _startpos_lp_ in
         let _endpos = _endpos_rp_ in
         let _v : 'tv_typedef_ctype = 
-# 577 "parser_cocci_menhir.mly"
+# 604 "parser_cocci_menhir.mly"
     ( let (mids,code) = t in
       Ast0.wrap
        (Ast0.DisjType(P.clt2mcode "(" lp,code,mids, P.clt2mcode ")" rp)) )
-# 36919 "parser_cocci_menhir.ml"
+# 37124 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36937,9 +37142,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_typedef_ident = 
-# 1641 "parser_cocci_menhir.mly"
+# 1710 "parser_cocci_menhir.mly"
          ( Ast0.wrap(Ast0.TypeName(P.id2mcode _1)) )
-# 36943 "parser_cocci_menhir.ml"
+# 37148 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36958,17 +37163,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 65 "parser_cocci_menhir.mly"
+# 87 "parser_cocci_menhir.mly"
        (Parse_aux.info)
-# 36964 "parser_cocci_menhir.ml"
+# 37169 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_typedef_ident = 
-# 1643 "parser_cocci_menhir.mly"
+# 1712 "parser_cocci_menhir.mly"
          ( let (nm,pure,clt) = _1 in
         Ast0.wrap(Ast0.MetaType(P.clt2mcode nm clt,pure)) )
-# 36972 "parser_cocci_menhir.ml"
+# 37177 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -36990,9 +37195,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_ = 
-# 1319 "parser_cocci_menhir.mly"
+# 1348 "parser_cocci_menhir.mly"
                                          ( _1 )
-# 36996 "parser_cocci_menhir.ml"
+# 37201 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37017,16 +37222,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _2 in
         let _1 : (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37023 "parser_cocci_menhir.ml"
+# 37228 "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_ = 
-# 1321 "parser_cocci_menhir.mly"
+# 1350 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) )
-# 37030 "parser_cocci_menhir.ml"
+# 37235 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37051,16 +37256,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _2 in
         let _1 : (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37057 "parser_cocci_menhir.ml"
+# 37262 "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_ = 
-# 1323 "parser_cocci_menhir.mly"
+# 1352 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) )
-# 37064 "parser_cocci_menhir.ml"
+# 37269 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37088,9 +37293,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_ = 
-# 1325 "parser_cocci_menhir.mly"
+# 1354 "parser_cocci_menhir.mly"
       ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 37094 "parser_cocci_menhir.ml"
+# 37299 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37115,17 +37320,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _2 in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37121 "parser_cocci_menhir.ml"
+# 37326 "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_ = 
-# 1327 "parser_cocci_menhir.mly"
+# 1356 "parser_cocci_menhir.mly"
       ( let mcode = P.clt2mcode Ast.Not _1 in
       Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 37129 "parser_cocci_menhir.ml"
+# 37334 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37150,16 +37355,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_dot_expressions_ = Obj.magic _2 in
         let _1 : (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37156 "parser_cocci_menhir.ml"
+# 37361 "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_ = 
-# 1330 "parser_cocci_menhir.mly"
+# 1359 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) )
-# 37163 "parser_cocci_menhir.ml"
+# 37368 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37193,29 +37398,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rp : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37199 "parser_cocci_menhir.ml"
+# 37404 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37205 "parser_cocci_menhir.ml"
+# 37410 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let s : (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37210 "parser_cocci_menhir.ml"
+# 37415 "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_ = 
-# 1332 "parser_cocci_menhir.mly"
+# 1361 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s,
                                    P.clt2mcode "(" lp,t,
                                    P.clt2mcode ")" rp)) )
-# 37219 "parser_cocci_menhir.ml"
+# 37424 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37237,9 +37442,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_expr_eexpr_invalid_ = 
-# 1319 "parser_cocci_menhir.mly"
+# 1348 "parser_cocci_menhir.mly"
                                          ( _1 )
-# 37243 "parser_cocci_menhir.ml"
+# 37448 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37264,16 +37469,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37270 "parser_cocci_menhir.ml"
+# 37475 "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_ = 
-# 1321 "parser_cocci_menhir.mly"
+# 1350 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) )
-# 37277 "parser_cocci_menhir.ml"
+# 37482 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37298,16 +37503,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37304 "parser_cocci_menhir.ml"
+# 37509 "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_ = 
-# 1323 "parser_cocci_menhir.mly"
+# 1352 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) )
-# 37311 "parser_cocci_menhir.ml"
+# 37516 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37335,9 +37540,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_eexpr_invalid_ = 
-# 1325 "parser_cocci_menhir.mly"
+# 1354 "parser_cocci_menhir.mly"
       ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 37341 "parser_cocci_menhir.ml"
+# 37546 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37362,17 +37567,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37368 "parser_cocci_menhir.ml"
+# 37573 "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_ = 
-# 1327 "parser_cocci_menhir.mly"
+# 1356 "parser_cocci_menhir.mly"
       ( let mcode = P.clt2mcode Ast.Not _1 in
       Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 37376 "parser_cocci_menhir.ml"
+# 37581 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37397,16 +37602,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37403 "parser_cocci_menhir.ml"
+# 37608 "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_ = 
-# 1330 "parser_cocci_menhir.mly"
+# 1359 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) )
-# 37410 "parser_cocci_menhir.ml"
+# 37615 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37440,29 +37645,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rp : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37446 "parser_cocci_menhir.ml"
+# 37651 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37452 "parser_cocci_menhir.ml"
+# 37657 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let s : (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37457 "parser_cocci_menhir.ml"
+# 37662 "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_ = 
-# 1332 "parser_cocci_menhir.mly"
+# 1361 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s,
                                    P.clt2mcode "(" lp,t,
                                    P.clt2mcode ")" rp)) )
-# 37466 "parser_cocci_menhir.ml"
+# 37671 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37484,9 +37689,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_ = 
-# 1319 "parser_cocci_menhir.mly"
+# 1348 "parser_cocci_menhir.mly"
                                          ( _1 )
-# 37490 "parser_cocci_menhir.ml"
+# 37695 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37511,16 +37716,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _2 in
         let _1 : (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37517 "parser_cocci_menhir.ml"
+# 37722 "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_ = 
-# 1321 "parser_cocci_menhir.mly"
+# 1350 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) )
-# 37524 "parser_cocci_menhir.ml"
+# 37729 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37545,16 +37750,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _2 in
         let _1 : (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37551 "parser_cocci_menhir.ml"
+# 37756 "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_ = 
-# 1323 "parser_cocci_menhir.mly"
+# 1352 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) )
-# 37558 "parser_cocci_menhir.ml"
+# 37763 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37582,9 +37787,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_ = 
-# 1325 "parser_cocci_menhir.mly"
+# 1354 "parser_cocci_menhir.mly"
       ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 37588 "parser_cocci_menhir.ml"
+# 37793 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37609,17 +37814,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _2 in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37615 "parser_cocci_menhir.ml"
+# 37820 "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_ = 
-# 1327 "parser_cocci_menhir.mly"
+# 1356 "parser_cocci_menhir.mly"
       ( let mcode = P.clt2mcode Ast.Not _1 in
       Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 37623 "parser_cocci_menhir.ml"
+# 37828 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37644,16 +37849,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_eexpr_nest_expressions_ = Obj.magic _2 in
         let _1 : (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37650 "parser_cocci_menhir.ml"
+# 37855 "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_ = 
-# 1330 "parser_cocci_menhir.mly"
+# 1359 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) )
-# 37657 "parser_cocci_menhir.ml"
+# 37862 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37687,29 +37892,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rp : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37693 "parser_cocci_menhir.ml"
+# 37898 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37699 "parser_cocci_menhir.ml"
+# 37904 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let s : (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37704 "parser_cocci_menhir.ml"
+# 37909 "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_ = 
-# 1332 "parser_cocci_menhir.mly"
+# 1361 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s,
                                    P.clt2mcode "(" lp,t,
                                    P.clt2mcode ")" rp)) )
-# 37713 "parser_cocci_menhir.ml"
+# 37918 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37731,9 +37936,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_expr_expr_invalid_ = 
-# 1319 "parser_cocci_menhir.mly"
+# 1348 "parser_cocci_menhir.mly"
                                          ( _1 )
-# 37737 "parser_cocci_menhir.ml"
+# 37942 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37758,16 +37963,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_expr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37764 "parser_cocci_menhir.ml"
+# 37969 "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_ = 
-# 1321 "parser_cocci_menhir.mly"
+# 1350 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Inc _1)) )
-# 37771 "parser_cocci_menhir.ml"
+# 37976 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37792,16 +37997,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_expr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 86 "parser_cocci_menhir.mly"
+# 108 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37798 "parser_cocci_menhir.ml"
+# 38003 "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_ = 
-# 1323 "parser_cocci_menhir.mly"
+# 1352 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.Infix (_2, P.clt2mcode Ast.Dec _1)) )
-# 37805 "parser_cocci_menhir.ml"
+# 38010 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37829,9 +38034,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_unary_expr_expr_invalid_ = 
-# 1325 "parser_cocci_menhir.mly"
+# 1354 "parser_cocci_menhir.mly"
       ( let mcode = _1 in Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 37835 "parser_cocci_menhir.ml"
+# 38040 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37856,17 +38061,17 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_expr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37862 "parser_cocci_menhir.ml"
+# 38067 "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_ = 
-# 1327 "parser_cocci_menhir.mly"
+# 1356 "parser_cocci_menhir.mly"
       ( let mcode = P.clt2mcode Ast.Not _1 in
       Ast0.wrap(Ast0.Unary(_2, mcode)) )
-# 37870 "parser_cocci_menhir.ml"
+# 38075 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37891,16 +38096,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           } = _menhir_stack in
         let _2 : 'tv_unary_expr_expr_invalid_ = Obj.magic _2 in
         let _1 : (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37897 "parser_cocci_menhir.ml"
+# 38102 "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_ = 
-# 1330 "parser_cocci_menhir.mly"
+# 1359 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfExpr (P.clt2mcode "sizeof" _1, _2)) )
-# 37904 "parser_cocci_menhir.ml"
+# 38109 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37934,29 +38139,29 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
             };
           } = _menhir_stack in
         let rp : (
-# 78 "parser_cocci_menhir.mly"
+# 100 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37940 "parser_cocci_menhir.ml"
+# 38145 "parser_cocci_menhir.ml"
         ) = Obj.magic rp in
         let t : 'tv_ctype = Obj.magic t in
         let lp : (
-# 77 "parser_cocci_menhir.mly"
+# 99 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37946 "parser_cocci_menhir.ml"
+# 38151 "parser_cocci_menhir.ml"
         ) = Obj.magic lp in
         let s : (
-# 58 "parser_cocci_menhir.mly"
+# 80 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37951 "parser_cocci_menhir.ml"
+# 38156 "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_ = 
-# 1332 "parser_cocci_menhir.mly"
+# 1361 "parser_cocci_menhir.mly"
       ( Ast0.wrap(Ast0.SizeOfType (P.clt2mcode "sizeof" s,
                                    P.clt2mcode "(" lp,t,
                                    P.clt2mcode ")" rp)) )
-# 37960 "parser_cocci_menhir.ml"
+# 38165 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -37975,16 +38180,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 94 "parser_cocci_menhir.mly"
+# 116 "parser_cocci_menhir.mly"
        (Data.clt)
-# 37981 "parser_cocci_menhir.ml"
+# 38186 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_op = 
-# 1336 "parser_cocci_menhir.mly"
+# 1365 "parser_cocci_menhir.mly"
                   ( P.clt2mcode Ast.GetRef _1 )
-# 37988 "parser_cocci_menhir.ml"
+# 38193 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38003,16 +38208,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38009 "parser_cocci_menhir.ml"
+# 38214 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_op = 
-# 1337 "parser_cocci_menhir.mly"
+# 1366 "parser_cocci_menhir.mly"
            ( P.clt2mcode Ast.DeRef _1 )
-# 38016 "parser_cocci_menhir.ml"
+# 38221 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38031,16 +38236,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 99 "parser_cocci_menhir.mly"
+# 121 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38037 "parser_cocci_menhir.ml"
+# 38242 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_op = 
-# 1338 "parser_cocci_menhir.mly"
+# 1367 "parser_cocci_menhir.mly"
            ( P.clt2mcode Ast.UnPlus _1 )
-# 38044 "parser_cocci_menhir.ml"
+# 38249 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38059,16 +38264,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 99 "parser_cocci_menhir.mly"
+# 121 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38065 "parser_cocci_menhir.ml"
+# 38270 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_op = 
-# 1339 "parser_cocci_menhir.mly"
+# 1368 "parser_cocci_menhir.mly"
            ( P.clt2mcode Ast.UnMinus _1 )
-# 38072 "parser_cocci_menhir.ml"
+# 38277 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38087,16 +38292,16 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
           MenhirLib.EngineTypes.next = _menhir_stack;
           } = _menhir_stack in
         let _1 : (
-# 100 "parser_cocci_menhir.mly"
+# 122 "parser_cocci_menhir.mly"
        (Data.clt)
-# 38093 "parser_cocci_menhir.ml"
+# 38298 "parser_cocci_menhir.ml"
         ) = Obj.magic _1 in
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__1_ in
         let _v : 'tv_unary_op = 
-# 1340 "parser_cocci_menhir.mly"
+# 1369 "parser_cocci_menhir.mly"
            ( P.clt2mcode Ast.Tilde _1 )
-# 38100 "parser_cocci_menhir.ml"
+# 38305 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38124,9 +38329,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_when_start = 
-# 1861 "parser_cocci_menhir.mly"
+# 1930 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.DOTS((Ast0.wrap(Ast0.Exp(_1)))::_2)) )
-# 38130 "parser_cocci_menhir.ml"
+# 38335 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38154,9 +38359,9 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
         let _startpos = _startpos__1_ in
         let _endpos = _endpos__2_ in
         let _v : 'tv_when_start = 
-# 1863 "parser_cocci_menhir.mly"
+# 1932 "parser_cocci_menhir.mly"
     ( Ast0.wrap(Ast0.DOTS(_1@_2)) )
-# 38160 "parser_cocci_menhir.ml"
+# 38365 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38178,9 +38383,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"
+# 951 "parser_cocci_menhir.mly"
     ( w )
-# 38184 "parser_cocci_menhir.ml"
+# 38389 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38214,9 +38419,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_ = 
-# 1929 "parser_cocci_menhir.mly"
+# 1998 "parser_cocci_menhir.mly"
                                          ( [Ast0.WhenNot w] )
-# 38220 "parser_cocci_menhir.ml"
+# 38425 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38250,9 +38455,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_ = 
-# 1930 "parser_cocci_menhir.mly"
+# 1999 "parser_cocci_menhir.mly"
                                              ( [Ast0.WhenAlways w] )
-# 38256 "parser_cocci_menhir.ml"
+# 38461 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38282,9 +38487,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_ = 
-# 1932 "parser_cocci_menhir.mly"
+# 2001 "parser_cocci_menhir.mly"
       ( List.map (function x -> Ast0.WhenModifier(x)) _2 )
-# 38288 "parser_cocci_menhir.ml"
+# 38493 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38318,9 +38523,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_ = 
-# 1933 "parser_cocci_menhir.mly"
+# 2002 "parser_cocci_menhir.mly"
                                         ( [Ast0.WhenNotTrue e] )
-# 38324 "parser_cocci_menhir.ml"
+# 38529 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38354,9 +38559,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_ = 
-# 1934 "parser_cocci_menhir.mly"
+# 2003 "parser_cocci_menhir.mly"
                                          ( [Ast0.WhenNotFalse e] )
-# 38360 "parser_cocci_menhir.ml"
+# 38565 "parser_cocci_menhir.ml"
          in
         _menhir_env.MenhirLib.EngineTypes.stack <- {
           MenhirLib.EngineTypes.state = _menhir_s;
@@ -38377,106 +38582,106 @@ module MenhirInterpreter = MenhirLib.TableInterpreter.Make (struct
 
 let rec script_meta_main =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1811 lexer lexbuf) : (
-# 160 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1820 lexer lexbuf) : (
+# 182 "parser_cocci_menhir.mly"
        (string * Ast_cocci.meta_name)
-# 38384 "parser_cocci_menhir.ml"
+# 38589 "parser_cocci_menhir.ml"
     ))
 
 and rule_name =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1739 lexer lexbuf) : (
-# 154 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1748 lexer lexbuf) : (
+# 176 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 38392 "parser_cocci_menhir.ml"
+# 38597 "parser_cocci_menhir.ml"
     ))
 
 and reinit =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1737 lexer lexbuf) : (
-# 132 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1746 lexer lexbuf) : (
+# 154 "parser_cocci_menhir.mly"
       (unit)
-# 38400 "parser_cocci_menhir.ml"
+# 38605 "parser_cocci_menhir.ml"
     ))
 
 and plus_main =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1701 lexer lexbuf) : (
-# 141 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1710 lexer lexbuf) : (
+# 163 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 38408 "parser_cocci_menhir.ml"
+# 38613 "parser_cocci_menhir.ml"
     ))
 
 and plus_exp_main =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1693 lexer lexbuf) : (
-# 144 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1702 lexer lexbuf) : (
+# 166 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 38416 "parser_cocci_menhir.ml"
+# 38621 "parser_cocci_menhir.ml"
     ))
 
 and never_used =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1687 lexer lexbuf) : (
-# 169 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1696 lexer lexbuf) : (
+# 191 "parser_cocci_menhir.mly"
       (unit)
-# 38424 "parser_cocci_menhir.ml"
+# 38629 "parser_cocci_menhir.ml"
     ))
 
 and minus_main =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1607 lexer lexbuf) : (
-# 135 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1616 lexer lexbuf) : (
+# 157 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 38432 "parser_cocci_menhir.ml"
+# 38637 "parser_cocci_menhir.ml"
     ))
 
 and minus_exp_main =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1595 lexer lexbuf) : (
-# 138 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1604 lexer lexbuf) : (
+# 160 "parser_cocci_menhir.mly"
       (Ast0_cocci.rule)
-# 38440 "parser_cocci_menhir.ml"
+# 38645 "parser_cocci_menhir.ml"
     ))
 
 and meta_main =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1592 lexer lexbuf) : (
-# 158 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1601 lexer lexbuf) : (
+# 180 "parser_cocci_menhir.mly"
       ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list)
-# 38448 "parser_cocci_menhir.ml"
+# 38653 "parser_cocci_menhir.ml"
     ))
 
 and iso_rule_name =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1588 lexer lexbuf) : (
-# 150 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1597 lexer lexbuf) : (
+# 172 "parser_cocci_menhir.mly"
       (Ast_cocci.rulename)
-# 38456 "parser_cocci_menhir.ml"
+# 38661 "parser_cocci_menhir.ml"
     ))
 
 and iso_meta_main =
   fun lexer lexbuf ->
-    (Obj.magic (MenhirInterpreter.entry 1342 lexer lexbuf) : (
-# 166 "parser_cocci_menhir.mly"
+    (Obj.magic (MenhirInterpreter.entry 1343 lexer lexbuf) : (
+# 188 "parser_cocci_menhir.mly"
       ((Ast_cocci.metavar,Ast_cocci.metavar) Common.either list)
-# 38464 "parser_cocci_menhir.ml"
+# 38669 "parser_cocci_menhir.ml"
     ))
 
 and iso_main =
   fun lexer lexbuf ->
     (Obj.magic (MenhirInterpreter.entry 18 lexer lexbuf) : (
-# 163 "parser_cocci_menhir.mly"
+# 185 "parser_cocci_menhir.mly"
       (Ast0_cocci.anything list list)
-# 38472 "parser_cocci_menhir.ml"
+# 38677 "parser_cocci_menhir.ml"
     ))
 
 and include_main =
   fun lexer lexbuf ->
     (Obj.magic (MenhirInterpreter.entry 0 lexer lexbuf) : (
-# 147 "parser_cocci_menhir.mly"
+# 169 "parser_cocci_menhir.mly"
       (Data.incl_iso list)
-# 38480 "parser_cocci_menhir.ml"
+# 38685 "parser_cocci_menhir.ml"
     ))
 
 
index 85287f3..c6d8f57 100644 (file)
@@ -40,6 +40,7 @@ type token =
   | TTildeEq of (Data.clt)
   | TTilde of (Data.clt)
   | TSwitch of (Data.clt)
+  | TSub of (Data.clt)
   | TString of (string * Data.clt)
   | TStrict of (Data.clt)
   | TStatement
index 93d4d5a..cdec1e9 100644 (file)
  */
 
 
+/*
+ * 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.
+ */
+
+
 %{
 
 (* Not clear how to allow function declarations to specify a return type
@@ -92,7 +114,7 @@ module P = Parse_aux
 %token <Data.clt> TOr
 %token <Data.clt> TXor
 %token <Data.clt> TAnd
-%token <Data.clt> TEqEq TNotEq TTildeEq TTildeExclEq
+%token <Data.clt> TEqEq TNotEq TTildeEq TTildeExclEq TSub
 %token <Ast_cocci.logicalOp * Data.clt> TLogOp /* TInf TSup TInfEq TSupEq */
 %token <Ast_cocci.arithOp * Data.clt>   TShOp  /* TShl TShr */
 %token <Ast_cocci.arithOp * Data.clt>   TDmOp  /* TDiv TMod */
@@ -289,12 +311,13 @@ metadec:
     { P.create_metadec_with_constraints ar ispure kindfn ids }
 | ar=arity ispure=pure
   kindfn=metakind_atomic_expi
-  ids=comma_list(pure_ident_or_meta_ident_with_econstraint(re_or_not_eqe))
+  ids=comma_list(pure_ident_or_meta_ident_with_econstraint(re_or_not_eqe_or_sub))
     TMPtVirg
     { P.create_metadec_with_constraints ar ispure kindfn ids }
 | ar=arity ispure=pure
   kindfn=metakind_atomic_expe
-  ids=comma_list(pure_ident_or_meta_ident_with_x_eq(not_ceq)) TMPtVirg
+  ids=comma_list(pure_ident_or_meta_ident_with_econstraint(not_ceq_or_sub))
+    TMPtVirg
     { P.create_metadec_with_constraints ar ispure kindfn ids }
 | ar=arity TPosition a=option(TPosAny)
     ids=comma_list(pure_ident_or_meta_ident_with_x_eq(not_pos)) TMPtVirg
@@ -457,27 +480,31 @@ metadec:
   TExpression
     { (fun arity name pure check_meta constraints ->
       let tok = check_meta(Ast.MetaExpDecl(arity,name,None)) in
-      !Data.add_exp_meta None name (Ast0.NotExpCstrt constraints) pure; tok) }
+      !Data.add_exp_meta None name constraints pure; tok) }
 | vl=meta_exp_type // no error if use $1 but doesn't type check
     { (fun arity name pure check_meta constraints ->
       let ty = Some vl in
-      List.iter
-       (function c ->
-         match Ast0.unwrap c with
-           Ast0.Constant(_) ->
-             if not
-                 (List.exists
-                    (function
-                        Type_cocci.BaseType(Type_cocci.IntType) -> true
-                      | Type_cocci.BaseType(Type_cocci.ShortType) -> true
-                      | Type_cocci.BaseType(Type_cocci.LongType) -> true
-                      | _ -> false)
-                    vl)
-             then failwith "metavariable with int constraint must be an int"
-         | _ -> ())
-       constraints;
+      (match constraints with
+       Ast0.NotExpCstrt constraints ->
+         List.iter
+           (function c ->
+             match Ast0.unwrap c with
+               Ast0.Constant(_) ->
+                 if not
+                     (List.exists
+                        (function
+                            Type_cocci.BaseType(Type_cocci.IntType) -> true
+                          | Type_cocci.BaseType(Type_cocci.ShortType) -> true
+                          | Type_cocci.BaseType(Type_cocci.LongType) -> true
+                          | _ -> false)
+                        vl)
+                 then
+                   failwith "metavariable with int constraint must be an int"
+             | _ -> ())
+           constraints
+      |        _ -> ());
       let tok = check_meta(Ast.MetaExpDecl(arity,name,ty)) in
-      !Data.add_exp_meta ty name (Ast0.NotExpCstrt constraints) pure; tok)
+      !Data.add_exp_meta ty name constraints pure; tok)
     }
 
 
@@ -680,6 +707,8 @@ includes:
                            P.clt2mcode
                              (Ast.NonLocal (Parse_aux.str2inc (P.id2name $1)))
                              (P.drop_bef clt))) }
+| d=defineop TLineEnd
+    { d (Ast0.wrap(Ast0.DOTS([]))) }
 | d=defineop t=ctype TLineEnd
     { let ty = Ast0.wrap(Ast0.TopExp(Ast0.wrap(Ast0.TypeExp(t)))) in
       d (Ast0.wrap(Ast0.DOTS([ty]))) }
@@ -1497,11 +1526,11 @@ pure_ident_or_meta_ident_with_idconstraint(constraint_type):
     }
 
 re_or_not_eqid:
-   re=regexp_eqid {re}
+   re=regexp_eqid {Ast.IdRegExpConstraint re}
  | ne=not_eqid    {ne}
 
 regexp_eqid:
-       TTildeEq re=TString
+     TTildeEq re=TString
          { (if !Data.in_iso
            then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
@@ -1524,18 +1553,40 @@ not_eqid:
            (* pb: constraints not stored with metavars; too lazy to search for
              them in the pattern *)
           then failwith "constraints not allowed in a generated rule file");
-          Ast.IdNegIdSet([snd i]) }
+          (match i with
+            (Some rn,id) ->
+              let i =
+                P.check_inherited_constraint i
+                  (function mv -> Ast.MetaIdDecl(Ast.NONE,mv)) in
+              Ast.IdNegIdSet([],[i])
+          | (None,i) -> Ast.IdNegIdSet([i],[])) }
      | TNotEq TOBrace l=comma_list(pure_ident_or_meta_ident) TCBrace
         { (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");
-          Ast.IdNegIdSet(List.map snd l)
+          let (str,meta) =
+            List.fold_left
+              (function (str,meta) ->
+                function 
+                  (Some rn,id) as i ->
+                    let i =
+                      P.check_inherited_constraint i
+                        (function mv -> Ast.MetaIdDecl(Ast.NONE,mv)) in
+                    (str,i::meta)
+                | (None,i) -> (i::str,meta))
+              ([],[]) l in
+          Ast.IdNegIdSet(str,meta)
         }
 
-re_or_not_eqe:
-   re=regexp_eqid {Ast0.NotIdCstrt (re)}
- | ne=not_eqe     {Ast0.NotExpCstrt (ne)}
+re_or_not_eqe_or_sub:
+   re=regexp_eqid {Ast0.NotIdCstrt  re}
+ | ne=not_eqe     {Ast0.NotExpCstrt ne}
+ | s=sub          {Ast0.SubExpCstrt s}
+
+not_ceq_or_sub:
+   ceq=not_ceq    {Ast0.NotExpCstrt ceq}
+ | s=sub          {Ast0.SubExpCstrt s}
 
 not_eqe:
        TNotEq i=pure_ident
@@ -1570,6 +1621,30 @@ not_ceq:
           then failwith "constraints not allowed in a generated rule file");
           l }
 
+sub:
+     (* has to be inherited because not clear how to check subterm constraints
+       in the functorized CTL engine, so need the variable to be bound
+       already when bind the subterm constrained metavariable *)
+       TSub i=meta_ident
+         { (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 i =
+            P.check_inherited_constraint i
+              (function mv -> Ast.MetaExpDecl(Ast.NONE,mv,None)) in
+          [i] }
+     | TSub TOBrace l=comma_list(meta_ident) TCBrace
+        { (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");
+           List.map
+            (function i ->
+              P.check_inherited_constraint i
+                (function mv -> Ast.MetaExpDecl(Ast.NONE,mv,None)))
+            l}
+
 ident_or_const:
        i=pure_ident { Ast0.wrap(Ast0.Ident(Ast0.wrap(Ast0.Id(P.id2mcode i)))) }
      | TInt
@@ -1582,25 +1657,19 @@ not_pos:
           then failwith "constraints not allowed in iso file");
           (if !Data.in_generating
           then failwith "constraints not allowed in a generated rule file");
-          match i with
-            (None,_) -> failwith "constraint must be an inherited variable"
-          | (Some rule,name) ->
-              let i = (rule,name) in
-              P.check_meta(Ast.MetaPosDecl(Ast.NONE,i));
-              [i] }
+          let i =
+            P.check_inherited_constraint i
+              (function mv -> Ast.MetaPosDecl(Ast.NONE,mv)) in
+          [i] }
      | TNotEq TOBrace l=comma_list(meta_ident) TCBrace
         { (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");
           List.map
-            (function
-                (None,_) ->
-                  failwith "constraint must be an inherited variable"
-              | (Some rule,name) ->
-                  let i = (rule,name) in
-                  P.check_meta(Ast.MetaPosDecl(Ast.NONE,i));
-                  i)
+            (function i ->
+              P.check_inherited_constraint i
+                (function mv -> Ast.MetaPosDecl(Ast.NONE,mv)))
             l }
 
 func_ident: pure_ident
index 610d760..7968618 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 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 58894d7..6f1a719 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val plus :
     Ast_cocci.rule ->
       (Ast_cocci.anything * int * int * int * int) list list list
index 68e40af..947646c 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Format
 module Ast = Ast_cocci
 
@@ -128,22 +150,15 @@ let dots between fn d =
   | Ast.CIRCLES(l) -> print_between between fn l
   | Ast.STARS(l) -> print_between between fn l
 
-let nest_dots multi fn f d =
-  let mo s = if multi then "<+"^s else "<"^s in
-  let mc s = if multi then s^"+>" else s^">" in
-  match Ast.unwrap d with
-    Ast.DOTS(l) ->
-      print_string (mo "..."); f(); start_block();
-      print_between force_newline fn l;
-      end_block(); print_string (mc "...")
-  | Ast.CIRCLES(l) ->
-      print_string (mo "ooo"); f(); start_block();
-      print_between force_newline fn l;
-      end_block(); print_string (mc "ooo")
-  | Ast.STARS(l) ->
-      print_string (mo "***"); f(); start_block();
-      print_between force_newline fn l;
-      end_block(); print_string (mc "***")
+let nest_dots starter ender fn f d =
+  mcode print_string starter;
+  f(); start_block();
+  (match Ast.unwrap d with
+    Ast.DOTS(l)    -> print_between force_newline fn l
+  | Ast.CIRCLES(l) -> print_between force_newline fn l
+  | Ast.STARS(l)   -> print_between force_newline fn l);
+  end_block();
+  mcode print_string ender
 
 (* --------------------------------------------------------------------- *)
 
@@ -165,12 +180,18 @@ let print_type keep info = function
 (* Contraint on Identifier and Function *)
 (* FIXME: Not called at the moment *)
 
-let idconstraint c =
-  match c with
-      Ast.IdNoConstraint  -> print_string "/* No constraint */"
-    | Ast.IdNegIdSet ids     -> List.iter (fun s -> print_string (" "^s)) ids
-    | Ast.IdRegExp (re,_) -> print_string "~= \""; print_string re; print_string "\""
-    | Ast.IdNotRegExp (re,_) -> print_string "~!= \""; print_string re; print_string "\""
+let rec idconstraint = function
+    Ast.IdNoConstraint  -> print_string "/* No constraint */"
+  | Ast.IdNegIdSet (str,meta)     ->
+      List.iter (function s -> print_string (" "^s)) str;
+      List.iter (function (r,n) -> print_string " "; print_meta(r,n)) meta
+  | Ast.IdRegExpConstraint re -> regconstraint re
+
+and regconstraint = function
+    Ast.IdRegExp (re,_) ->
+      print_string "~= \""; print_string re; print_string "\""
+  | Ast.IdNotRegExp (re,_) ->
+      print_string "~!= \""; print_string re; print_string "\""
 
 (* --------------------------------------------------------------------- *)
 (* Identifier *)
@@ -257,12 +278,12 @@ let rec expression e =
   | Ast.MetaExprList(name,_,_,_) -> mcode print_meta name
   | Ast.EComma(cm) -> mcode print_string cm; print_space()
   | Ast.DisjExpr(exp_list) -> print_disj_list expression exp_list
-  | Ast.NestExpr(expr_dots,Some whencode,multi) ->
-      nest_dots multi expression
+  | Ast.NestExpr(starter,expr_dots,ender,Some whencode,multi) ->
+      nest_dots starter ender expression
        (function _ -> print_string "   when != "; expression whencode)
        expr_dots
-  | Ast.NestExpr(expr_dots,None,multi) ->
-      nest_dots multi expression (function _ -> ()) expr_dots
+  | Ast.NestExpr(starter,expr_dots,ender,None,multi) ->
+      nest_dots starter ender expression (function _ -> ()) expr_dots
   | Ast.Edots(dots,Some whencode)
   | Ast.Ecircles(dots,Some whencode)
   | Ast.Estars(dots,Some whencode) ->
@@ -681,9 +702,9 @@ and statement arity s =
   | Ast.Define(header,body) ->
       rule_elem arity header; print_string " ";
       dots force_newline (statement arity) body
-  | Ast.Nest(stmt_dots,whn,multi,_,_) ->
+  | Ast.Nest(starter,stmt_dots,ender,whn,multi,_,_) ->
       print_string arity;
-      nest_dots multi (statement arity)
+      nest_dots starter ender (statement arity)
        (function _ ->
          open_box 0;
          print_between force_newline
index dd6df2c..f0580ee 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val unparse : Ast_cocci.rule -> unit
 val unparse_to_string : Ast_cocci.rule -> string
 val expression : Ast_cocci.expression -> unit
index 691797c..b68e36e 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 exception Semantic of string
index 2971aa4..d9fa6e7 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
 module V0 = Visitor_ast0
index 1f10d82..c8b1ecd 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val simple_assignments : Ast0_cocci.rule -> Ast0_cocci.rule
index 7de9163..2d198dd 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* detect statements that are between dots in the minus code, because they
 may need a special treatment if they are if branches *)
 
@@ -563,9 +585,13 @@ let rec statement dots_before dots_after s =
                     statement_dots_list,
                   mids,ender))
   | Ast0.Nest(starter,stmt_dots,ender,whencode,multi) ->
-      Ast0.rewrap s
-       (Ast0.Nest
-          (starter,statement_dots true true stmt_dots,ender,whencode,multi))
+      (match Ast0.get_mcode_mcodekind starter with
+       Ast0.MINUS _ -> (* everything removed, like -... *) s
+      |        _ ->
+         Ast0.rewrap s
+           (Ast0.Nest
+              (starter,statement_dots true true stmt_dots,ender,
+               whencode,multi)))
   | Ast0.Exp(exp) -> s
   | Ast0.TopExp(exp) -> s
   | Ast0.Ty(ty) -> s
index cd1700c..84eddaf 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val single_statement : Ast0_cocci.rule -> Ast0_cocci.rule
index e6955e3..4e9b0dc 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Ast = Ast_cocci
 module Ast0 = Ast0_cocci
 module V0 = Visitor_ast0
index 21e18a0..74f89f6 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val process : Ast0_cocci.rule -> Ast0_cocci.rule
 
 val process_anything : Ast0_cocci.anything -> Ast0_cocci.anything
index aeb9a10..37ae75f 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 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 846b80c..3e2358f 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val top_level : Ast0_cocci.rule -> Ast0_cocci.rule
index 743b857..1e9663d 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* for metavariables in general, but here because needed for metatypes *)
 type inherited = bool (* true if inherited *)
 type keep_binding = Unitary (* need no info *)
index 0029593..a6248fb 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 type inherited = bool (* true if inherited *)
 type keep_binding = Unitary (* need no info *)
   | Nonunitary (* need an env entry *) | Saved (* need a witness *)
index 04b0ca7..7001492 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module T = Type_cocci
 module Ast = Ast_cocci
 module Ast0 = Ast0_cocci
index 6ad7e0c..aff8ded 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val type_infer : Ast0_cocci.rule -> unit
index 955789f..fe90032 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* --------------------------------------------------------------------- *)
 (* 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
@@ -187,7 +209,7 @@ let rec unify_expression e1 e2 =
       disjunct_all_bindings (List.map (function x -> unify_expression x e2) e1)
   | (_,Ast.DisjExpr(e2)) ->
       disjunct_all_bindings (List.map (function x -> unify_expression e1 x) e2)
-  | (Ast.NestExpr(e1,_,_),Ast.NestExpr(e2,_,_)) ->
+  | (Ast.NestExpr(_,e1,_,_,_),Ast.NestExpr(_,e2,_,_,_)) ->
       unify_dots unify_expression edots e1 e2
 
   (* dots can match against anything.  return true to be safe. *)
@@ -554,7 +576,7 @@ let rec unify_statement s1 s2 =
        (List.map
           (function x -> unify_dots unify_statement sdots s1 x)
           s2)
-  | (Ast.Nest(s1,_,_,_,_),Ast.Nest(s2,_,_,_,_)) ->
+  | (Ast.Nest(_,s1,_,_,_,_,_),Ast.Nest(_,s2,_,_,_,_,_)) ->
       unify_dots unify_statement sdots s1 s2
   | (Ast.FunDecl(h1,lb1,s1,rb1),Ast.FunDecl(h2,lb2,s2,rb2)) ->
       conjunct_bindings (unify_rule_elem h1 h2)
index 2781738..54c28ed 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 type res = NO | MAYBE
 
 val unify_statement_dots :
index 3823ce4..6d46bc7 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* find unitary metavariables *)
 module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
index f243af3..cfbef97 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 'iso is the return type of parse_iso, which currently is
 (Ast_cocci.metavar list * Ast0_cocci.anything list list) list *)
 
index aae81d9..b12855e 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Format
 module Ast = Ast_cocci
 module Ast0 = Ast0_cocci
index 6c7c1df..c95d5e1 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 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 4717cba..8fd2add 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
 
@@ -168,8 +190,11 @@ let combiner bind option_default
       | Ast.MetaExprList(name,_,_,_) -> meta_mcode name
       | Ast.EComma(cm) -> string_mcode cm
       | Ast.DisjExpr(exp_list) -> multibind (List.map expression exp_list)
-      | Ast.NestExpr(expr_dots,whencode,multi) ->
-         bind (expression_dots expr_dots) (get_option expression whencode)
+      | Ast.NestExpr(starter,expr_dots,ender,whencode,multi) ->
+         bind (string_mcode starter)
+           (bind (expression_dots expr_dots)
+              (bind (string_mcode ender)
+                 (get_option expression whencode)))
       | Ast.Edots(dots,whencode) | Ast.Ecircles(dots,whencode)
       | Ast.Estars(dots,whencode) ->
          bind (string_mcode dots) (get_option expression whencode)
@@ -434,9 +459,12 @@ let combiner bind option_default
       | Ast.Atomic(re) -> rule_elem re
       | Ast.Disj(stmt_dots_list) ->
          multibind (List.map statement_dots stmt_dots_list)
-      | Ast.Nest(stmt_dots,whn,_,_,_) ->
-         bind (statement_dots stmt_dots)
-           (multibind (List.map (whencode statement_dots statement) whn))
+      | Ast.Nest(starter,stmt_dots,ender,whn,_,_,_) ->
+         bind (string_mcode starter)
+           (bind (statement_dots stmt_dots)
+              (bind (string_mcode ender)
+                 (multibind
+                    (List.map (whencode statement_dots statement) whn))))
       | Ast.FunDecl(header,lbrace,body,rbrace) ->
          multibind [rule_elem header; rule_elem lbrace;
                      statement_dots body; rule_elem rbrace]
@@ -675,8 +703,9 @@ let rebuilder
            Ast.MetaExprList(meta_mcode name,lenname_inh,keep,inherited)
        | Ast.EComma(cm) -> Ast.EComma(string_mcode cm)
        | Ast.DisjExpr(exp_list) -> Ast.DisjExpr(List.map expression exp_list)
-       | Ast.NestExpr(expr_dots,whencode,multi) ->
-           Ast.NestExpr(expression_dots expr_dots,
+       | Ast.NestExpr(starter,expr_dots,ender,whencode,multi) ->
+           Ast.NestExpr(string_mcode starter,expression_dots expr_dots,
+                        string_mcode ender,
                         get_option expression whencode,multi)
        | Ast.Edots(dots,whencode) ->
            Ast.Edots(string_mcode dots,get_option expression whencode)
@@ -943,8 +972,9 @@ let rebuilder
        | Ast.Atomic(re) -> Ast.Atomic(rule_elem re)
        | Ast.Disj(stmt_dots_list) ->
            Ast.Disj (List.map statement_dots stmt_dots_list)
-       | Ast.Nest(stmt_dots,whn,multi,bef,aft) ->
-           Ast.Nest(statement_dots stmt_dots,
+       | Ast.Nest(starter,stmt_dots,ender,whn,multi,bef,aft) ->
+           Ast.Nest(string_mcode starter,statement_dots stmt_dots,
+                    string_mcode ender,
                     List.map (whencode statement_dots statement) whn,
                     multi,bef,aft)
        | Ast.FunDecl(header,lbrace,body,rbrace) ->
index ef3da68..9407c0d 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 type 'a combiner =
     {combiner_ident : Ast_cocci.ident -> 'a;
      combiner_expression : Ast_cocci.expression -> 'a;
index 87e96e1..53facab 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* --------------------------------------------------------------------- *)
 (* Generic traversal: rebuilder *)
 
index 9e66a69..f73953b 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val combiner_functions : 'a Visitor_ast0_types.combiner_functions
 val combiner :
   ('a -> 'a -> 'a) ->
index 30550d0..b9a812f 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Ast0 = Ast0_cocci
 module Ast = Ast_cocci
 
index 6b768f6..173e567 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 type sequence =
     Seq of element * sequence
   | Empty
index 3d39098..50859be 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Ast = Ast_cocci
 module Past = Ast_popl
 
index 3e149fb..c98cdac 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val top : Ast_cocci.top_level -> Ast_popl.sequence
index 7ac2eda..15aaa7e 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Past = Ast_popl
 
 (* --------------------------------------------------------------------- *)
index 5f3e897..ccadde2 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val insert_befaft : Ast_popl.sequence -> Ast_popl.sequence
index 83d2459..c808fa5 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Ast = Ast_cocci
 module Past = Ast_popl
 
index f823a04..646a79c 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val insert_quantifiers : Ast_popl.sequence -> Ast_popl.sequence
index e1d4429..6b653ec 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 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 8a8fa16..dbbc91a 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 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 de2937f..e2c32b1 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Past = Ast_popl
 module Ast = Ast_cocci
 module V = Visitor_ast
index 2d96afc..c8312e3 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 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 3c3022d..669d5d0 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Format
 module Past = Ast_popl
 
index b3238dc..5cb0503 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val pretty_print : Ast_popl.sequence -> unit
 val pretty_print_e : Ast_popl.element -> unit
index 9f0c720..3d6dae4 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 type sequence =
     Seq of element * sequence
   | Empty
index 9817a53..f323e61 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Ast = Ast_cocci
 module Past = Ast_popl
 
@@ -63,7 +85,10 @@ let rec stm s =
                 Ast.WhenNot(a) -> Past.When(prev,stm_list a)
               | _ -> failwith "only when != supported")
           Past.Dots whencodes)
-  | Ast.Nest(stmt_dots,whencodes,false,_,_) ->
+  | Ast.Nest(starter,stmt_dots,ender,whencodes,false,_,_) ->
+      (match Ast.get_mcodekind starter with
+       Ast.MINUS _ -> failwith "only context nests supported"
+      |        _ -> ());
       let nest = Past.Nest(stm_list stmt_dots) in
       Past.DInfo
        (List.fold_left
index 3e149fb..c98cdac 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val top : Ast_cocci.top_level -> Ast_popl.sequence
index bdcc37a..5f34bd4 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 let mark_all = ref false
 let keep_all_wits = ref false
index 2a34b60..50762b5 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Ast = Ast_cocci
 module Past = Ast_popl
 
index f823a04..646a79c 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val insert_quantifiers : Ast_popl.sequence -> Ast_popl.sequence
index 419a564..d2d3d70 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 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 8a8fa16..dbbc91a 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 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 6cde698..5c261aa 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 module Past = Ast_popl
 module Ast = Ast_cocci
 module V = Visitor_ast
index 2d96afc..c8312e3 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 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 dfe86f3..664806f 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Format
 module Past = Ast_popl
 module Ast = Ast_cocci
index b3238dc..5cb0503 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 val pretty_print : Ast_popl.sequence -> unit
 val pretty_print_e : Ast_popl.element -> unit
diff --git a/pycaml/._d/pycaml.d b/pycaml/._d/pycaml.d
new file mode 100644 (file)
index 0000000..991ed77
--- /dev/null
@@ -0,0 +1,2 @@
+pycaml.cmo: 
+pycaml.cmx: 
diff --git a/pycaml/dllpycaml_stubs.so b/pycaml/dllpycaml_stubs.so
new file mode 100755 (executable)
index 0000000..77cd440
Binary files /dev/null and b/pycaml/dllpycaml_stubs.so differ
diff --git a/pycaml/libpycaml_stubs.a b/pycaml/libpycaml_stubs.a
new file mode 100644 (file)
index 0000000..dbc5b2e
Binary files /dev/null and b/pycaml/libpycaml_stubs.a differ
diff --git a/pycaml/pycaml.a b/pycaml/pycaml.a
new file mode 100644 (file)
index 0000000..05baba6
Binary files /dev/null and b/pycaml/pycaml.a differ
diff --git a/pycaml/pycaml.cma b/pycaml/pycaml.cma
new file mode 100644 (file)
index 0000000..5fbe761
Binary files /dev/null and b/pycaml/pycaml.cma differ
diff --git a/pycaml/pycaml.cmi b/pycaml/pycaml.cmi
new file mode 100644 (file)
index 0000000..278b1ea
Binary files /dev/null and b/pycaml/pycaml.cmi differ
diff --git a/pycaml/pycaml.cmo b/pycaml/pycaml.cmo
new file mode 100644 (file)
index 0000000..6c6fe4e
Binary files /dev/null and b/pycaml/pycaml.cmo differ
diff --git a/pycaml/pycaml.cmx b/pycaml/pycaml.cmx
new file mode 100644 (file)
index 0000000..7d19378
Binary files /dev/null and b/pycaml/pycaml.cmx differ
diff --git a/pycaml/pycaml.cmxa b/pycaml/pycaml.cmxa
new file mode 100644 (file)
index 0000000..368cc3a
Binary files /dev/null and b/pycaml/pycaml.cmxa differ
diff --git a/pycaml/pycaml.customtop b/pycaml/pycaml.customtop
new file mode 100755 (executable)
index 0000000..a29c0f7
Binary files /dev/null and b/pycaml/pycaml.customtop differ
diff --git a/pycaml/pycaml.o b/pycaml/pycaml.o
new file mode 100644 (file)
index 0000000..8c662e1
Binary files /dev/null and b/pycaml/pycaml.o differ
diff --git a/pycaml/pycaml_ml.o b/pycaml/pycaml_ml.o
new file mode 100644 (file)
index 0000000..9716b92
Binary files /dev/null and b/pycaml/pycaml_ml.o differ
index 6b2484a..7f96732 100644 (file)
@@ -2,10 +2,12 @@ def build_link(p, msg, color) :
        return "[[view:%s::face=%s::linb=%s::colb=%s::cole=%s][%s]]" % (p.file,color,p.line,p.column,p.column_end,msg)
 
 def print_todo(p, msg="", color="ovl-face1") :
+       if msg == "" : msg = "%s::%s" % (p.file,p.line)
        link = build_link(p, msg, color)
        print "* TODO %s" % (link)
 
 def print_link(p, msg="", color="ovl-face1") :
+       if msg == "" : msg = "%s::%s" % (p.file,p.line)
        print (build_link(p, msg, color))
 
 def print_safe_todo(p, msg="", color="ovl-face1") :
@@ -21,7 +23,10 @@ def print_safe_link(p, msg="", color="ovl-face1") :
 # will be deprecated.
 #
 def print_main(msg, p, color="ovl-face1") :
-       oldmsgfmt = "%s %s::%s" % (msg,p[0].file,p[0].line)
+       if msg == "" :
+               oldmsgfmt = "%s::%s" % (p[0].file,p[0].line)
+       else:
+               oldmsgfmt = "%s %s::%s" % (msg,p[0].file,p[0].line)
        print_todo(p[0], oldmsgfmt, color)
 
 def print_sec(msg, p, color="ovl-face2") :
index 6d4a112..9148edc 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Ast_c
 open Common
 open Pycocci_aux
index 30e67fa..de13d3e 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Ast_c
 open Common
 
@@ -58,11 +80,11 @@ let call_pretty f a =
   String.concat " " (List.rev !str)
 
 let stringrep mvb = match mvb with
-  Ast_c.MetaIdVal        s -> s
+  Ast_c.MetaIdVal        (s,_) -> s
 | Ast_c.MetaFuncVal      s -> s
 | Ast_c.MetaLocalFuncVal s -> s
-| Ast_c.MetaExprVal      ((expr,_),[il]) -> (exprrep expr)
-| Ast_c.MetaExprVal     e -> "TODO: <<MetaExprVal>>"
+| Ast_c.MetaExprVal      (((expr,_),[il]),_) -> (exprrep expr)
+| Ast_c.MetaExprVal     _ -> "TODO: <<MetaExprVal>>"
 | Ast_c.MetaExprListVal  expr_list -> "TODO: <<exprlist>>"
 | Ast_c.MetaTypeVal      typ -> call_pretty Pretty_print_c.pp_type_gen typ
 | Ast_c.MetaStmtVal      statement -> "TODO: stmt"
index 50bd32c..e768e31 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Ast_c
 open Common
 open Pycaml
@@ -251,11 +273,11 @@ let construct_variables mv e =
   List.iter (function (py,(r,m)) ->
     match find_binding (r,m) with
       None -> ()
-    | Some (_, Ast_c.MetaExprVal expr) ->
+    | Some (_, Ast_c.MetaExprVal (expr,_)) ->
        let expr_repr = instantiate_Expression(expr) in
        let _ = build_variable py expr_repr in
        ()
-    | Some (_, Ast_c.MetaIdVal id) ->
+    | Some (_, Ast_c.MetaIdVal (id,_)) ->
        let id_repr = instantiate_Identifier(id) in
        let _ = build_variable py id_repr in
        ()
index da73321..db6d4df 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Ast_c
 open Common
 open Pycaml
@@ -34,10 +56,10 @@ let call_pretty f a =
 let exprrep = call_pretty Pretty_print_c.pp_expression_gen
 
 let stringrep mvb = match mvb with
-  Ast_c.MetaIdVal        s -> s
+  Ast_c.MetaIdVal        (s,_) -> s
 | Ast_c.MetaFuncVal      s -> s
 | Ast_c.MetaLocalFuncVal s -> s
-| Ast_c.MetaExprVal      expr -> exprrep expr
+| Ast_c.MetaExprVal      (expr,_) -> exprrep expr
 | Ast_c.MetaExprListVal  expr_list -> "TODO: <<exprlist>>"
 | Ast_c.MetaTypeVal      typ -> call_pretty Pretty_print_c.pp_type_gen typ
 | Ast_c.MetaInitVal      ini -> call_pretty Pretty_print_c.pp_init_gen ini
index 555f6ee..f050301 100644 (file)
@@ -356,7 +356,6 @@ identifier i;
 @@
 for(X;Y;i++) S <=> for(X;Y;++i) S
 
-
 // ****************************************************************************
 // gcc specific isomorphisms 
 // ****************************************************************************
diff --git a/test.ml b/test.ml
index 6d67c2f..ea77806 100644 (file)
--- a/test.ml
+++ b/test.ml
  *)
 
 
+(*
+ * 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
index 84ca3fe..045c54b 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Common
 
 (*****************************************************************************)
index 1c1e0ab..f0822d1 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Common
 
 (*****************************************************************************)
diff --git a/tests/bad_kfree.c b/tests/bad_kfree.c
new file mode 100644 (file)
index 0000000..ffada84
--- /dev/null
@@ -0,0 +1,20 @@
+int main () {
+  for (i = 0; i < IVTV_VBI_FRAMES; i++) {
+    a = itv[i];
+    kfree(itv[i]);
+  }
+  print("foo",itv[i]);
+  print("foo",itv[i]);
+  a = itv[i];
+  itv[i]=12;
+  a = itv[i];
+}
+
+int bad () {
+  kfree(itv[i]);
+  print("foo",itv[i]);
+  print("foo",itv[i]);
+  a = itv[i];
+  itv[i]=12;
+  a = itv[i];
+}
diff --git a/tests/bad_kfree.cocci b/tests/bad_kfree.cocci
new file mode 100644 (file)
index 0000000..802eef5
--- /dev/null
@@ -0,0 +1,39 @@
+@print@
+constant char *c;
+expression E1;
+position p;
+identifier f;
+@@
+
+f(...,c,...,E1@p,...)
+
+@free@
+expression E;
+position p1;
+@@
+
+kfree@p1(E)
+
+@r exists@
+expression free.E, subE<=free.E, E2;
+iterator iter;
+statement S;
+position free.p1,p2!=print.p;
+@@
+
+kfree@p1(E)
+...
+(
+iter(subE,...) S // no use
+|
+subE = E2 // no use
+|
+subE++ // no use
+|
+subE-- // no use
+|
+&subE // no use
+|
+- E@p2 // bad use
++ NULL
+)
diff --git a/tests/bad_kfree.res b/tests/bad_kfree.res
new file mode 100644 (file)
index 0000000..a60923a
--- /dev/null
@@ -0,0 +1,20 @@
+int main () {
+  for (i = 0; i < IVTV_VBI_FRAMES; i++) {
+    a = itv[i];
+    kfree(itv[i]);
+  }
+  print("foo",itv[i]);
+  print("foo",itv[i]);
+  a = itv[i];
+  itv[i]=12;
+  a = itv[i];
+}
+
+int bad () {
+  kfree(itv[i]);
+  print("foo",itv[i]);
+  print("foo",itv[i]);
+  a = NULL;
+  itv[i]=12;
+  a = itv[i];
+}
diff --git a/tests/double_lines.c b/tests/double_lines.c
new file mode 100644 (file)
index 0000000..7413366
--- /dev/null
@@ -0,0 +1,7 @@
+int main () {
+  test();
+  foo();
+  foo();
+  foo();
+  endtest();
+}
diff --git a/tests/double_lines.cocci b/tests/double_lines.cocci
new file mode 100644 (file)
index 0000000..880c705
--- /dev/null
@@ -0,0 +1,4 @@
+@@
+@@
+
+- foo();
diff --git a/tests/double_lines.res b/tests/double_lines.res
new file mode 100644 (file)
index 0000000..fd47ec3
--- /dev/null
@@ -0,0 +1,4 @@
+int main () {
+  test();
+  endtest();
+}
diff --git a/tests/fnty.c b/tests/fnty.c
new file mode 100644 (file)
index 0000000..cfc73bd
--- /dev/null
@@ -0,0 +1,14 @@
+struct allfns {
+  int (*x) (int);
+  int (*y) (int);
+};
+
+struct somefns {
+  int (*x) (int);
+  int y;
+};
+
+struct nofns {
+  int x;
+  int y;
+};
diff --git a/tests/fnty.cocci b/tests/fnty.cocci
new file mode 100644 (file)
index 0000000..a49fce5
--- /dev/null
@@ -0,0 +1,32 @@
+@structure@
+identifier idtype, y;
+type t;
+position p;
+@@
+struct idtype {
+  ...
+        t (*y)(...);@p
+  ...
+};
+
+@bad@
+identifier structure.idtype, y;
+type t;
+position p != structure.p;
+@@
+
+struct idtype {
+  ...
+        t y;@p
+  ...
+};
+
+@depends on !bad@
+identifier structure.idtype;
+@@
+struct
+- idtype
++ newname
+{
+  ...
+};
diff --git a/tests/fnty.res b/tests/fnty.res
new file mode 100644 (file)
index 0000000..5f7902b
--- /dev/null
@@ -0,0 +1,14 @@
+struct newname {
+  int (*x) (int);
+  int (*y) (int);
+};
+
+struct somefns {
+  int (*x) (int);
+  int y;
+};
+
+struct nofns {
+  int x;
+  int y;
+};
diff --git a/tests/insdef.c b/tests/insdef.c
new file mode 100644 (file)
index 0000000..1ddb5ad
--- /dev/null
@@ -0,0 +1 @@
+#define TABINFOGEN
diff --git a/tests/insdef.cocci b/tests/insdef.cocci
new file mode 100644 (file)
index 0000000..6680ff6
--- /dev/null
@@ -0,0 +1,5 @@
+@@
+@@
+
+#define TABINFOGEN
++#include <tbl.h>
diff --git a/tests/insdef.res b/tests/insdef.res
new file mode 100644 (file)
index 0000000..9398f40
--- /dev/null
@@ -0,0 +1,2 @@
+#define TABINFOGEN
+#include <tbl.h>
index c0d2cbf..e169d03 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* The following finds out for each file, how it does deallocation for each
 allocator *)
 
index bc7a22c..bd967eb 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 let drop_spaces s =
   String.concat "" (Str.split (Str.regexp "[ ]+") s)
 
index 92d14c8..d6e4d96 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* for each marked thing, how often does it occur and in what files and
 directories *)
 
index f110377..29438e9 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Common
 
 (*****************************************************************************)
index 3a8b2d4..5d5df96 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Common
 
 (*****************************************************************************)
index 919e2ae..2c8bfa2 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* adjust as convenient *)
 let prefix = "/tmp/"
 let prefix = ""
index 69072e9..03540cf 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* sort a list of git codes such that the most recent comes first *)
 
 let git_home = ref "/home/julia/linux-2.6"
index dcf4cc5..2cdd797 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 let lines =
 ["Copyright 2005-2010, Ecole des Mines de Nantes, University of Copenhagen";
 "Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix";
index ef9fdb5..cad0204 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 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 *)
index f30ae9b..9b058c5 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 (* 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 rec loop _ =
+  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
-    (if Str.string_match is_diff l 0
-    then
-      (if List.length !cur > 0
-      then begin patches := List.rev !cur :: !patches; cur := [l] end)
-    else cur := l :: !cur);
-    loop() in
-  try loop() with End_of_file -> !patches
+    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 Str.split spaces l 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 takea file as an argument, or only a patch? *)
-let resolve_maintainers cmd 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 (Str.regexp " ") after with
+             (match Str.split spaces after with
                file::_ ->
-                 (match Common.cmd_to_list (cmd ^ " " ^ file) with
-                   [info] ->
-                     let cell =
-                       try Hashtbl.find maintainer_table info
-                       with Not_found ->
-                         let cell = ref [] in
-                         Hashtbl.add maintainer_table info cell;
-                         cell in
-                     cell := (diff_line :: rest) :: !cell
-                 | _ -> failwith "badly formatted maintainer result")
+                 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))
@@ -67,29 +175,90 @@ let resolve_maintainers cmd patches =
 
 (* ------------------------------------------------------------------------ *)
 
+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
-  Hashtbl.iter
-    (function maintainers ->
-      function diffs ->
-       ctr := !ctr + 1;
-       let o = open_out (Printf.sprintf "%s%d" patch !ctr) in
-       Printf.fprintf o "To: %s\n\n" maintainers;
-       print_all o template;
-       List.iter (print_all o) (List.rev !diffs);
-       close_out o)
-    maintainer_table
-
+  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 command = ref "get_maintainers.pl"
 let file = ref ""
 
-let options =
-  ["-cmd", Arg.String (function x -> command := x), "get maintainer command"]
+let options = []
 
 let usage = ""
 
@@ -99,6 +268,7 @@ let _ =
   Arg.parse (Arg.align options) (fun x -> file := x) usage;
   let i = open_in !file in
   let patches = split_patch i in
-  let maintainer_table = resolve_maintainers !command patches 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
index 78e7228..8c13276 100644 (file)
  *)
 
 
+(*
+ * 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.
+ *)
+
+
 open Common
 
 exception WrongArguments