]> gcc.gnu.org Git - gcc.git/commitdiff
extend.texi (C++ Signatures): Remove node.
authorMark Mitchell <mark@codesourcery.com>
Wed, 11 Aug 1999 20:22:41 +0000 (20:22 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Wed, 11 Aug 1999 20:22:41 +0000 (20:22 +0000)
* extend.texi (C++ Signatures): Remove node.
* invoke.texi: Remove discussion of -fhandle-signatures,
signature, sigof, __signature__, and __sigof__.

* Make-lang.in (CXX_SRCS): Remove sig.c.
* Makefile.in (CXX_OBJS): Remove sig.o.
(sig.o): Remove.
* cp-tree.h (CPTI_OPAQUE_TYPE): Remove.
(CPTI_SIGNATURE_TYPE): Likewise.
(CPTI_SIGTABLE_ENTRY_TYPE): Likewise.
(opaque_type_node): Likewise.
(signature_type_node): Likewise.
(sigtable_entry_type): Likewise.
(flag_handle_signatures): Likewise.
(lang_type): Remove is_signature, is_signature_pointer,
is_signature_reference, has_opaque_typedecls,
sigtables_has_been_generated.  Adjust dummy.  Remove signature,
signature_pointer_to, signature_reference_to.
(IS_SIGNATURE): Remove.
(SET_SIGNATURE): Remove.
(CLEAR_SIGNATURE): Remove.
(IS_SIGNATURE_POINTER): Remove.
(IS_SIGNATURE_REFERENCE): Remove.
(SIGNATURE_HAS_OPAQUE_TYPEDECLS): Remove.
(SIGTABLE_HAS_BEEN_GENERATED): Remove.
(CLASSTYPE_SIGNATURE): Remove.
(SIGNATURE_TYPE): Remove.
(SIGNATURE_METHOD_VEC): Remove.
(SIGNATURE_POINTER_TO): Remove.
(SIGNATURE_REFERENCE_TO): Remove.
(lang_decl_flags): Remove is_default_implementation.  Rename
memfunc_pointer_to to saved_tree.
(IS_DEFAULT_IMPLEMENTATION): Remove.
(DECL_MEMFUNC_POINTER_TO): Remove.
(DECL_MEMFUNC_POINTING_TO): Remove.
(DECL_SAVED_TREE): Adjust definition.
(tag_types): Remove signature_type_node.
(SIGNATURE_FIELD_NAME): Remove.
(SIGNATURE_FIELD_NAME_FORMAT): Likewise.
(SIGNATURE_OPTR_NAME): Likewise.
(SIGNATURE_SPTR_NAME): Likewise.
(SIGNATURE_POINTER_NAME): Likewise.
(SIGNATURE_POINTER_NAME_FORMAT): Likewise.
(SIGNATURE_REFERENCE_NAME): Likewise.
(SIGNATURE_REFERNECE_NAME_FORMAT): Likewise.
(SIGTABLE_PTR_TYPE): Likewise.
(SIGTABLE_NAME_FORMAT): Likewise.
(SIGTABLE_NAME_FORMAT_LONG): Likewise.
(SIGTABLE_TAG_NAME): Likewise.
(SIGTABLE_VB_OFF_NAME): Likewise.
(SIGTABLE_VT_OFF_NAME): Likewise.
(finish_base_specifiers): Change prototype.
(build_signature_pointer_type): Remove.
(build_signature_reference_type): Remove.
(build_signature_pointer_constructor): Remove.
(build_signature_method_call): Remove.
(build_optr_ref): Likewise.
(append_signature_fields): Likewise.
(signature_error): Likewise.
* call.c (build_this): Remove signature support.
(build_over_call): Likewise.
(build_new_method_call): Likewise.
* class.c (add_implicitly_declared_members): Likewise.
(finish_struct_1): Likewise.
(finish_struct): Likewise.
* cvt.c (cp_convert_to_pointer): Likewise.
(convert_to_pointer_force): Likewise.
(ocp_convert): Likewise.
* decl.c (sigtable_decl_p): Remove.
(init_decl_processing): Remove support for signatures.
(cp_finish_decl): Likewise.
(grokdeclarator): Likewise.
(grokparms): Likewise.
(xref_tag): Likewise.
(start_function): Likewise.
(start_method): Likewise.
* decl2.c (finish_sigtable_vardecl): Remove.
(flag_handle_signatures): Remove.
(lang_f_options): Remove handle-signatures.
(grokfield): Remove support for signatures.
(grokbitfield): Likewise.
(finish_file): Likewise.
(reparse_absdcl_as_casts): Likewise.
* error.c (dump_type_real): Likewise.
(dump_function_decl): Likewise.
* friend.c (make_friend_class): Likewise.
* gxx.gperf: Remove __signature__, signature, __sigof__, sigof.
* hash.h: Regenerated.
* init.c (build_new_1): Remove support for signatures.
* lang-options.h: Remove -fhandle-signatures,
-fno-handle-signatures.
* lex.c (init_parse): Remove support for signatures.
(yyprint): Likewise.
* lex.h (rid): Remove RID_SIGNATURE.
* method.c (build_decl_overload_real): Remove support for
signatures.
(hack_identifier): Likewise.
* parse.y (base_class): Likewise.
(base_class.1): Likewise.
(access_specifier): Likewise.
* search.c (lookup_member): Likewise.
* semantics.c (finish_qualified_object_call_expr): Likewise.
(finish_template_type_parm): Likewise.
(begin_class_definition): Likewise.
(finish_base_specifier): Likewise.
* sig.c: Remove.
* tree.c (build_cplus_method_type): Remove support for signatures.
* typeck.c (require_complete_type): Likewise.
(c_sizeof): Likewise.
(c_alignof): Likewise.
(build_object_ref): Likewise.
(build_component_ref): Likewise.
(build_indirect_ref): Likewise.
(build_c_cast): Likewise.
(build_modify_expr): Likewise.
(convert_for_initialization): Likewise.
* typeck2.c (signature_error): Remove.
(store_init_value): Remove support for signatures.
(digest_init): Likewise.
(build_x_arrow): Likewise.
(build_functional_cast): Likewise.
* xref.c (GNU_xref_decl): Likewise.

From-SVN: r28677

60 files changed:
gcc/ChangeLog
gcc/cp/Make-lang.in
gcc/cp/Makefile.in
gcc/cp/call.c
gcc/cp/class.c
gcc/cp/cp-tree.h
gcc/cp/cvt.c
gcc/cp/decl.c
gcc/cp/decl2.c
gcc/cp/error.c
gcc/cp/friend.c
gcc/cp/gxx.gperf
gcc/cp/hash.h
gcc/cp/init.c
gcc/cp/lang-options.h
gcc/cp/lex.c
gcc/cp/lex.h
gcc/cp/method.c
gcc/cp/parse.c
gcc/cp/parse.y
gcc/cp/search.c
gcc/cp/semantics.c
gcc/cp/sig.c [deleted file]
gcc/cp/tree.c
gcc/cp/typeck.c
gcc/cp/typeck2.c
gcc/cp/xref.c
gcc/extend.texi
gcc/invoke.texi
gcc/testsuite/g++.old-deja/g++.gb/sig01.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig02.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig03.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig04.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig05.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig06.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig07.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig08.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig09.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig10.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig11.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig12.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig13.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig14.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig15.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig16.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig17.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig18.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig19.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig20.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig21.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig22.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig23.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig24.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig25.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig26.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig27.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig28.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig29.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig30.C [deleted file]
gcc/testsuite/g++.old-deja/g++.gb/sig31.C [deleted file]

index de83657f250c00cdab0e76bdc5581085f7f2238b..080fc15bdaaad7a6747f01940d1061e6493246d7 100644 (file)
@@ -1,3 +1,9 @@
+Wed Aug 11 12:59:37 1999  Mark Mitchell  <mark@codesourcery.com>
+
+       * extend.texi (C++ Signatures): Remove node.
+       * invoke.texi: Remove discussion of -fhandle-signatures,
+       signature, sigof, __signature__, and __sigof__.
+
 Wed Aug 11 03:38:25 1999  Jeffrey A Law  (law@cygnus.com)
 
        * Makefile.in (JAVAGC): Removed.
index 2e681b8194aea5dd019c06a4b74894146df78a55..032285519a6fe88a9a9469243586f5d08b6c8c02 100644 (file)
@@ -116,7 +116,7 @@ CXX_SRCS = $(srcdir)/cp/call.c $(srcdir)/cp/decl2.c \
  $(srcdir)/cp/errfn.c $(srcdir)/cp/rtti.c $(srcdir)/cp/method.c \
  $(srcdir)/cp/search.c $(srcdir)/cp/typeck.c $(srcdir)/cp/decl.c \
  $(srcdir)/cp/error.c $(srcdir)/cp/friend.c $(srcdir)/cp/init.c \
- $(srcdir)/cp/parse.y $(srcdir)/cp/sig.c $(srcdir)/cp/typeck2.c \
+ $(srcdir)/cp/parse.y $(srcdir)/cp/typeck2.c \
  $(srcdir)/cp/repo.c $(srcdir)/cp/semantics.c \
  $(srcdir)/cp/dump.c
 
index c8be4d63bdca914b0402ec535b9de9ea9dafd1db..5860d3d11e814d1addd0e7410c164089f1d7d93e 100644 (file)
@@ -185,7 +185,7 @@ INCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../config -I$(srcdir)
 
 # Language-specific object files for g++
 
-CXX_OBJS = call.o decl.o errfn.o expr.o pt.o sig.o typeck2.o \
+CXX_OBJS = call.o decl.o errfn.o expr.o pt.o typeck2.o \
  class.o decl2.o error.o lex.o parse.o ptree.o rtti.o spew.o typeck.o cvt.o \
  except.o friend.o init.o method.o search.o semantics.o tree.o xref.o \
  repo.o dump.o @extra_cxx_objs@
@@ -302,8 +302,6 @@ error.o : error.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../system.h \
   $(srcdir)/../toplev.h
 errfn.o : errfn.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../system.h \
   $(srcdir)/../toplev.h
-sig.o : sig.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../flags.h \
-  $(srcdir)/../system.h $(srcdir)/../toplev.h
 repo.o : repo.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../system.h \
   $(srcdir)/../toplev.h
 semantics.o: semantics.c $(CONFIG_H) $(CXX_TREE_H) lex.h \
index fb8f12961badbf51167d1717b5a9254d14ecf0f6..a4ed95b7fa8537a444fd9fd95d98bf87542d6a5a 100644 (file)
@@ -2191,11 +2191,7 @@ build_this (obj)
      tree obj;
 {
   /* Fix this to work on non-lvalues.  */
-  if (IS_SIGNATURE_POINTER (TREE_TYPE (obj))
-      || IS_SIGNATURE_REFERENCE (TREE_TYPE (obj)))
-    return obj;
-  else
-    return build_unary_op (ADDR_EXPR, obj, 0);
+  return build_unary_op (ADDR_EXPR, obj, 0);
 }
 
 static void
@@ -3899,11 +3895,8 @@ build_over_call (cand, args, flags)
 
          So we can assume that anything passed as 'this' is non-null, and
         optimize accordingly.  */
-      if (TREE_CODE (parmtype) == POINTER_TYPE)
-       t = convert_pointer_to_real (TREE_TYPE (parmtype), TREE_VALUE (arg));
-      else
-       /* This happens with signatures.  */
-       t = convert_force (parmtype, TREE_VALUE (arg), CONV_C_CAST);
+      my_friendly_assert (TREE_CODE (parmtype) == POINTER_TYPE, 19990811);
+      t = convert_pointer_to_real (TREE_TYPE (parmtype), TREE_VALUE (arg));
       converted_args = expr_tree_cons (NULL_TREE, t, converted_args);
       parm = TREE_CHAIN (parm);
       arg = TREE_CHAIN (arg);
@@ -4084,9 +4077,7 @@ build_over_call (cand, args, flags)
 
   mark_used (fn);
 
-  if (DECL_CLASS_SCOPE_P (fn) && IS_SIGNATURE (DECL_CONTEXT (fn)))
-    return build_signature_method_call (fn, converted_args);
-  else if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0)
+  if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0)
     {
       tree t, *p = &TREE_VALUE (converted_args);
       tree binfo = get_binfo
@@ -4182,10 +4173,7 @@ build_new_method_call (instance, name, args, basetype_path, flags)
       basetype = TYPE_MAIN_VARIANT (TREE_TYPE (instance));
 
       /* XXX this should be handled before we get here.  */
-      if (! IS_AGGR_TYPE (basetype)
-         && ! (TYPE_LANG_SPECIFIC (basetype)
-               && (IS_SIGNATURE_POINTER (basetype)
-                   || IS_SIGNATURE_REFERENCE (basetype))))
+      if (! IS_AGGR_TYPE (basetype))
        {
          if ((flags & LOOKUP_COMPLAIN) && basetype != error_mark_node)
            cp_error ("request for member `%D' in `%E', which is of non-aggregate type `%T'",
@@ -4193,14 +4181,6 @@ build_new_method_call (instance, name, args, basetype_path, flags)
 
          return error_mark_node;
        }
-
-      /* If `instance' is a signature pointer/reference and `name' is
-        not a constructor, we are calling a signature member function.
-        In that case set the `basetype' to the signature type.  */
-      if ((IS_SIGNATURE_POINTER (basetype)
-          || IS_SIGNATURE_REFERENCE (basetype))
-         && TYPE_IDENTIFIER (basetype) != name)
-       basetype = SIGNATURE_TYPE (basetype);
     }
 
   if (basetype_path == NULL_TREE)
index a33c8892ee8978d215bd78abbc3e690f84cbd4dc..bc1d58108fbbf86132b5078ccfd1a9cb15a77927 100644 (file)
@@ -3153,8 +3153,7 @@ add_implicitly_declared_members (t, cant_have_default_ctor,
   tree *f;
 
   /* Destructor.  */
-  if (TYPE_NEEDS_DESTRUCTOR (t) && !TYPE_HAS_DESTRUCTOR (t)
-      && !IS_SIGNATURE (t))
+  if (TYPE_NEEDS_DESTRUCTOR (t) && !TYPE_HAS_DESTRUCTOR (t))
     {
       default_fn = cons_up_default_function (t, name, 0);
       check_for_override (default_fn, t);
@@ -3174,8 +3173,7 @@ add_implicitly_declared_members (t, cant_have_default_ctor,
   TYPE_NEEDS_DESTRUCTOR (t) |= TYPE_HAS_DESTRUCTOR (t);
 
   /* Default constructor.  */
-  if (! TYPE_HAS_CONSTRUCTOR (t) && ! cant_have_default_ctor
-      && ! IS_SIGNATURE (t))
+  if (! TYPE_HAS_CONSTRUCTOR (t) && ! cant_have_default_ctor)
     {
       default_fn = cons_up_default_function (t, name, 2);
       TREE_CHAIN (default_fn) = implicit_fns;
@@ -3183,7 +3181,7 @@ add_implicitly_declared_members (t, cant_have_default_ctor,
     }
 
   /* Copy constructor.  */
-  if (! TYPE_HAS_INIT_REF (t) && ! IS_SIGNATURE (t) && ! TYPE_FOR_JAVA (t))
+  if (! TYPE_HAS_INIT_REF (t) && ! TYPE_FOR_JAVA (t))
     {
       /* ARM 12.18: You get either X(X&) or X(const X&), but
         not both.  --Chip  */
@@ -3194,7 +3192,7 @@ add_implicitly_declared_members (t, cant_have_default_ctor,
     }
 
   /* Assignment operator.  */
-  if (! TYPE_HAS_ASSIGN_REF (t) && ! IS_SIGNATURE (t) && ! TYPE_FOR_JAVA (t))
+  if (! TYPE_HAS_ASSIGN_REF (t) && ! TYPE_FOR_JAVA (t))
     {
       default_fn = cons_up_default_function (t, name,
                                             5 + cant_have_assignment);
@@ -3332,16 +3330,6 @@ finish_struct_1 (t)
   TYPE_SIZE (t) = NULL_TREE;
   CLASSTYPE_GOT_SEMICOLON (t) = 0;
 
-#if 0
-  /* This is in general too late to do this.  I moved the main case up to
-     left_curly, what else needs to move?  */
-  if (! IS_SIGNATURE (t))
-    {
-      my_friendly_assert (CLASSTYPE_INTERFACE_ONLY (t) == interface_only, 999);
-      my_friendly_assert (CLASSTYPE_INTERFACE_KNOWN (t) == ! interface_unknown, 999);
-    }
-#endif
-
   old = suspend_momentary ();
 
   /* Install struct as DECL_FIELD_CONTEXT of each field decl.
@@ -3578,8 +3566,7 @@ finish_struct_1 (t)
          cant_have_default_ctor = 1;
          TYPE_HAS_COMPLEX_ASSIGN_REF (t) = 1;
 
-         if (! TYPE_HAS_CONSTRUCTOR (t) && !IS_SIGNATURE (t)
-             && extra_warnings)
+         if (! TYPE_HAS_CONSTRUCTOR (t) && extra_warnings)
            {
              if (DECL_NAME (x))
                cp_warning_at ("non-static const member `%#D' in class without a constructor", x);
@@ -3706,10 +3693,6 @@ finish_struct_1 (t)
                 make it through without complaint.  */
              abstract_virtuals_error (x, type);
                      
-             /* Don't let signatures make it through either.  */
-             if (IS_SIGNATURE (type))
-               signature_error (x, type);
-                     
              if (code == UNION_TYPE)
                {
                  const char *fie = NULL;
@@ -3799,8 +3782,7 @@ finish_struct_1 (t)
   TYPE_NEEDS_CONSTRUCTING (t)
     |= (TYPE_HAS_CONSTRUCTOR (t) || TYPE_USES_VIRTUAL_BASECLASSES (t)
        || has_virtual || any_default_members);
-  if (! IS_SIGNATURE (t))
-    CLASSTYPE_NON_AGGREGATE (t)
+  CLASSTYPE_NON_AGGREGATE (t)
       = ! aggregate || has_virtual || TYPE_HAS_CONSTRUCTOR (t);
   CLASSTYPE_NON_POD_P (t)
       = non_pod_class || CLASSTYPE_NON_AGGREGATE (t)
@@ -4347,10 +4329,6 @@ tree
 finish_struct (t, attributes)
      tree t, attributes;
 {
-  /* Append the fields we need for constructing signature tables.  */
-  if (IS_SIGNATURE (t))
-    append_signature_fields (t);
-
   /* Now that we've got all the field declarations, reverse everything
      as necessary.  */
   unreverse_member_declarations (t);
index d43009a6110935f0f9bbc922b6c89f5a607b1a44..1f9a0b29701345381437d6c61fcacd235e0a1c35 100644 (file)
@@ -377,9 +377,6 @@ enum cp_tree_index
     CPTI_UNION_TYPE,
     CPTI_ENUM_TYPE,
     CPTI_UNKNOWN_TYPE,
-    CPTI_OPAQUE_TYPE,
-    CPTI_SIGNATURE_TYPE,
-    CPTI_SIGTABLE_ENTRY_TYPE,
     CPTI_VTBL_TYPE,
     CPTI_VTBL_PTR_TYPE,
     CPTI_STD,
@@ -423,9 +420,6 @@ extern tree cp_global_trees[CPTI_MAX];
 #define union_type_node                        cp_global_trees[CPTI_UNION_TYPE]
 #define enum_type_node                 cp_global_trees[CPTI_ENUM_TYPE]
 #define unknown_type_node              cp_global_trees[CPTI_UNKNOWN_TYPE]
-#define opaque_type_node               cp_global_trees[CPTI_OPAQUE_TYPE]
-#define signature_type_node            cp_global_trees[CPTI_SIGNATURE_TYPE]
-#define sigtable_entry_type            cp_global_trees[CPTI_SIGTABLE_ENTRY_TYPE]
 #define vtbl_type_node                 cp_global_trees[CPTI_VTBL_TYPE]
 #define vtbl_ptr_type_node             cp_global_trees[CPTI_VTBL_PTR_TYPE]
 #define std_node                       cp_global_trees[CPTI_STD]
@@ -582,10 +576,6 @@ extern int flag_elide_constructors;
 
 extern int flag_ansi;
 
-/* Nonzero means recognize and handle signature language constructs.  */
-
-extern int flag_handle_signatures;
-
 /* Nonzero means that member functions defined in class scope are
    inline by default.  */
 
@@ -785,24 +775,20 @@ struct lang_type
       unsigned use_template : 2;
       unsigned got_semicolon : 1;
       unsigned ptrmemfunc_flag : 1;
-      unsigned is_signature : 1;
-
-      unsigned is_signature_pointer : 1;
-      unsigned is_signature_reference : 1;
-      unsigned has_opaque_typedecls : 1;
-      unsigned sigtable_has_been_generated : 1;
       unsigned was_anonymous : 1;
+
       unsigned has_real_assign_ref : 1;
       unsigned has_const_init_ref : 1;
       unsigned has_complex_init_ref : 1;
-
       unsigned has_complex_assign_ref : 1;
       unsigned has_abstract_assign_ref : 1;
       unsigned non_aggregate : 1;
       unsigned is_partial_instantiation : 1;
       unsigned has_mutable : 1;
+
       unsigned com_interface : 1;
       unsigned non_pod_class : 1;
+
       /* When adding a flag here, consider whether or not it ought to
         apply to a template instance if it applies to the template.
         If so, make sure to copy it in instantiate_class_template!  */
@@ -810,7 +796,7 @@ struct lang_type
       /* The MIPS compiler gets it wrong if this struct also
         does not fill out to a multiple of 4 bytes.  Add a
         member `dummy' with new bits if you go over the edge.  */
-      unsigned dummy : 9;
+      unsigned dummy : 14;
     } type_flags;
 
   int vsize;
@@ -835,9 +821,6 @@ struct lang_type
 
   union tree_node *methods;
 
-  union tree_node *signature;
-  union tree_node *signature_pointer_to;
-  union tree_node *signature_reference_to;
   union tree_node *template_info;
   tree befriending_classes;
 };
@@ -888,45 +871,6 @@ struct lang_type
    convenient, don't reprocess any methods that appear in its redefinition.  */
 #define TYPE_REDEFINED(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.redefined)
 
-/* Nonzero means that this type is a signature.  */
-# define IS_SIGNATURE(NODE) (TYPE_LANG_SPECIFIC(NODE)?TYPE_LANG_SPECIFIC(NODE)->type_flags.is_signature:0)
-# define SET_SIGNATURE(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.is_signature=1)
-# define CLEAR_SIGNATURE(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.is_signature=0)
-
-/* Nonzero means that this type is a signature pointer type.  */
-# define IS_SIGNATURE_POINTER(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.is_signature_pointer)
-
-/* Nonzero means that this type is a signature reference type.  */
-# define IS_SIGNATURE_REFERENCE(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.is_signature_reference)
-
-/* Nonzero means that this signature contains opaque type declarations.  */
-#define SIGNATURE_HAS_OPAQUE_TYPEDECLS(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.has_opaque_typedecls)
-
-/* Nonzero means that a signature table has been generated
-   for this signature.  */
-#define SIGTABLE_HAS_BEEN_GENERATED(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.sigtable_has_been_generated)
-
-/* If NODE is a class, this is the signature type that contains NODE's
-   signature after it has been computed using sigof().  */
-#define CLASSTYPE_SIGNATURE(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature)
-
-/* If NODE is a signature pointer or signature reference, this is the
-   signature type the pointer/reference points to.  */
-#define SIGNATURE_TYPE(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature)
-
-/* If NODE is a signature, this is a vector of all methods defined
-   in the signature or in its base types together with their default
-   implementations.  */
-#define SIGNATURE_METHOD_VEC(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature)
-
-/* If NODE is a signature, this is the _TYPE node that contains NODE's
-   signature pointer type.  */
-#define SIGNATURE_POINTER_TO(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature_pointer_to)
-
-/* If NODE is a signature, this is the _TYPE node that contains NODE's
-   signature reference type.  */
-#define SIGNATURE_REFERENCE_TO(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature_reference_to)
-
 /* The is the basetype that contains NODE's rtti.  */
 #define CLASSTYPE_RTTI(NODE) (TYPE_LANG_SPECIFIC(NODE)->rtti)
 
@@ -1229,30 +1173,27 @@ struct lang_decl_flags
   unsigned static_function : 1;
   unsigned const_memfunc : 1;
   unsigned volatile_memfunc : 1;
-
   unsigned abstract_virtual : 1;
   unsigned permanent_attr : 1 ;
+
   unsigned constructor_for_vbase_attr : 1;
   unsigned mutable_flag : 1;
-  unsigned is_default_implementation : 1;
   unsigned saved_inline : 1;
   unsigned use_template : 2;
-
   unsigned nonconverting : 1;
   unsigned declared_inline : 1;
   unsigned not_really_extern : 1;
+
   unsigned needs_final_overrider : 1;
   unsigned bitfield : 1;
   unsigned defined_in_class : 1;
-  unsigned dummy : 4;
+  unsigned dummy : 5;
 
   tree access;
   tree context;
 
-  /* In a template FUNCTION_DECL, this is DECL_SAVED_TREE.
-     In a non-template FUNCTION_DECL, this is DECL_MEMFUNC_POINTER_TO.
-     In a FIELD_DECL, this is DECL_MEMFUNC_POINTING_TO.  */
-  tree memfunc_pointer_to;
+  /* In a template FUNCTION_DECL, this is DECL_SAVED_TREE.  */
+  tree saved_tree;
 
   union {
     /* In a FUNCTION_DECL, this is DECL_TEMPLATE_INFO.  */
@@ -1323,10 +1264,6 @@ struct lang_decl
 #define SET_DECL_TINFO_FN_P(NODE) \
   (DECL_LANG_SPECIFIC((NODE))->decl_flags.mutable_flag = 1)
 
-/* For FUNCTION_DECLs: nonzero means that this function is a default
-   implementation of a signature method.  */
-#define IS_DEFAULT_IMPLEMENTATION(NODE) (DECL_LANG_SPECIFIC(NODE)->decl_flags.is_default_implementation)
-
 /* Nonzero for _DECL means that this decl appears in (or will appear
    in) as a member in a RECORD_TYPE or UNION_TYPE node.  It is also for
    detecting circularity in case members are multiply defined.  In the
@@ -1477,15 +1414,6 @@ struct lang_decl
 #define DECL_SAVED_INLINE(DECL) \
   (DECL_LANG_SPECIFIC(DECL)->decl_flags.saved_inline)
 
-/* For a FUNCTION_DECL: if this function was declared inside a signature
-   declaration, this is the corresponding member function pointer that was
-   created for it.  */
-#define DECL_MEMFUNC_POINTER_TO(NODE) (DECL_LANG_SPECIFIC(NODE)->decl_flags.memfunc_pointer_to)
-
-/* For a FIELD_DECL: this points to the signature member function from
-   which this signature member function pointer was created.  */
-#define DECL_MEMFUNC_POINTING_TO(NODE) (DECL_LANG_SPECIFIC(NODE)->decl_flags.memfunc_pointer_to)
-
 /* For a VAR_DECL or FUNCTION_DECL: template-specific information.  */
 #define DECL_TEMPLATE_INFO(NODE) \
   (DECL_LANG_SPECIFIC(NODE)->decl_flags.u.template_info)
@@ -1573,7 +1501,8 @@ struct lang_decl
 
 /* In a template FUNCTION_DECL, the tree structure that will be
    substituted into to obtain instantiations.  */
-#define DECL_SAVED_TREE(NODE)          DECL_MEMFUNC_POINTER_TO (NODE)
+#define DECL_SAVED_TREE(NODE) \
+  (DECL_LANG_SPECIFIC ((NODE))->decl_flags.saved_tree)
 
 #define COMPOUND_STMT_NO_SCOPE(NODE)   TREE_LANG_FLAG_0 (NODE)
 #define NEW_EXPR_USE_GLOBAL(NODE)      TREE_LANG_FLAG_0 (NODE)
@@ -2201,8 +2130,7 @@ extern int flag_new_for_scope;
   (TREE_COMPLEXITY ((NODE)))
 
 /* An enumeration of the kind of tags that C++ accepts.  */
-enum tag_types { record_type, class_type, union_type, enum_type,
-                  signature_type };
+enum tag_types { record_type, class_type, union_type, enum_type };
 
 /* The various kinds of lvalues we distinguish.  */
 typedef enum cp_lvalue_kind {
@@ -2492,21 +2420,6 @@ extern int current_function_parms_stored;
 #define VTABLE_PFN_NAME                "__pfn"
 #define VTABLE_DELTA2_NAME     "__delta2"
 
-#define SIGNATURE_FIELD_NAME   "__s_"
-#define SIGNATURE_FIELD_NAME_FORMAT "__s_%s"
-#define SIGNATURE_OPTR_NAME    "__optr"
-#define SIGNATURE_SPTR_NAME    "__sptr"
-#define SIGNATURE_POINTER_NAME "__sp_"
-#define SIGNATURE_POINTER_NAME_FORMAT "__%s%s%ssp_%s"
-#define SIGNATURE_REFERENCE_NAME "__sr_"
-#define SIGNATURE_REFERENCE_NAME_FORMAT "__%s%s%ssr_%s"
-
-#define SIGTABLE_PTR_TYPE      "__sigtbl_ptr_type"
-#define SIGTABLE_NAME_FORMAT   "__st_%s_%s"
-#define SIGTABLE_NAME_FORMAT_LONG "__st_%s_%s_%d"
-#define SIGTABLE_TAG_NAME      "__tag"
-#define SIGTABLE_VB_OFF_NAME   "__vb_off"
-#define SIGTABLE_VT_OFF_NAME   "__vt_off"
 #define EXCEPTION_CLEANUP_NAME         "exception cleanup"
 
 #define THIS_NAME_P(ID_NODE) (strcmp(IDENTIFIER_POINTER (ID_NODE), "this") == 0)
@@ -3423,19 +3336,11 @@ extern tree finish_member_class_template        PROTO((tree));
 extern void finish_template_decl                PROTO((tree));
 extern tree finish_template_type                PROTO((tree, tree, int));
 extern void enter_scope_of                      PROTO((tree));
-extern tree finish_base_specifier               PROTO((tree, tree, int));
+extern tree finish_base_specifier               PROTO((tree, tree));
 extern void finish_member_declaration           PROTO((tree));
 extern void check_multiple_declarators          PROTO((void));
 extern tree finish_typeof                      PROTO((tree));
 
-/* in sig.c */
-extern tree build_signature_pointer_type       PROTO((tree));
-extern tree build_signature_reference_type     PROTO((tree));
-extern tree build_signature_pointer_constructor        PROTO((tree, tree));
-extern tree build_signature_method_call                PROTO((tree, tree));
-extern tree build_optr_ref                     PROTO((tree));
-extern void append_signature_fields            PROTO((tree));
-
 /* in spew.c */
 extern void init_spew                          PROTO((void));
 extern int peekyylex                           PROTO((void));
@@ -3612,7 +3517,6 @@ extern tree error_not_base_type                   PROTO((tree, tree));
 extern tree binfo_or_else                      PROTO((tree, tree));
 extern void readonly_error                     PROTO((tree, const char *, int));
 extern int abstract_virtuals_error             PROTO((tree, tree));
-extern void signature_error                    PROTO((tree, tree));
 extern void incomplete_type_error              PROTO((tree, tree));
 extern void my_friendly_abort                  PROTO((int))
   ATTRIBUTE_NORETURN;
index 72cbcaf87533e3aae7b81e3a2b7ea27866100411..388c7b864c4f677d652fdc1541fcbae4c1ffaef9 100644 (file)
@@ -234,10 +234,6 @@ cp_convert_to_pointer (type, expr)
 
   my_friendly_assert (form != OFFSET_TYPE, 186);
 
-  if (TYPE_LANG_SPECIFIC (intype)
-      && (IS_SIGNATURE_POINTER (intype) || IS_SIGNATURE_REFERENCE (intype)))
-    return convert_to_pointer (type, build_optr_ref (expr));
-
   if (integer_zerop (expr))
     {
       if (TYPE_PTRMEMFUNC_P (type))
@@ -287,15 +283,6 @@ convert_to_pointer_force (type, expr)
       return expr;
     }
 
-  /* Convert signature pointer/reference to `void *' first.  */
-  if (form == RECORD_TYPE
-      && (IS_SIGNATURE_POINTER (intype) || IS_SIGNATURE_REFERENCE (intype)))
-    {
-      expr = build_optr_ref (expr);
-      intype = TREE_TYPE (expr);
-      form = TREE_CODE (intype);
-    }
-
   if (form == POINTER_TYPE)
     {
       intype = TYPE_MAIN_VARIANT (intype);
@@ -801,29 +788,6 @@ ocp_convert (type, expr, convtype, flags)
 
       dtype = TYPE_MAIN_VARIANT (dtype);
 
-      /* Conversion of object pointers or signature pointers/references
-        to signature pointers/references.  */
-
-      if (TYPE_LANG_SPECIFIC (type)
-         && (IS_SIGNATURE_POINTER (type) || IS_SIGNATURE_REFERENCE (type)))
-       {
-         tree constructor = build_signature_pointer_constructor (type, expr);
-         tree sig_ty = SIGNATURE_TYPE (type);
-         tree sig_ptr;
-
-         if (constructor == error_mark_node)
-           return error_mark_node;
-
-         sig_ptr = get_temp_name (type, 1);
-         DECL_INITIAL (sig_ptr) = constructor;
-         CLEAR_SIGNATURE (sig_ty);
-         cp_finish_decl (sig_ptr, constructor, NULL_TREE, 0, 0);
-         SET_SIGNATURE (sig_ty);
-         TREE_READONLY (sig_ptr) = 1;
-
-         return sig_ptr;
-       }
-
       /* Conversion between aggregate types.  New C++ semantics allow
         objects of derived type to be cast to objects of base type.
         Old semantics only allowed this between pointers.
index c628ebf3eb2d600d0530f68b35f1b0c50dd6d1a1..3dd53e9af633b657ea32e5ea770e30537f4efcb9 100644 (file)
@@ -239,8 +239,6 @@ tree error_mark_list;
        tree class_star_type_node;
        tree class_type_node, record_type_node, union_type_node, enum_type_node;
        tree unknown_type_node;
-       tree opaque_type_node, signature_type_node;
-       tree sigtable_entry_type;
 
    Array type `vtable_entry_type[]'
 
@@ -1809,18 +1807,6 @@ vtype_decl_p (t, data)
          && CLASSTYPE_VSIZE (TREE_TYPE (t)));
 }
 
-/* Returns non-zero if T is a signature table.  */
-
-int 
-sigtable_decl_p (t, data)
-     tree t;
-     void *data ATTRIBUTE_UNUSED;
-{
-  return (TREE_CODE (t) == VAR_DECL
-         && TREE_TYPE (t) != error_mark_node
-         && IS_SIGNATURE (TREE_TYPE (t)));
-}
-
 /* Return the declarations that are members of the namespace NS.  */
 
 tree
@@ -6119,7 +6105,6 @@ init_decl_processing ()
   tree fields[20];
   int wchar_type_size;
   tree array_domain_type;
-  tree vb_off_identifier = NULL_TREE;
 
   /* Have to make these distinct before we try using them.  */
   lang_name_cplusplus = get_identifier ("C++");
@@ -6197,12 +6182,6 @@ init_decl_processing ()
   delta_identifier = get_identifier (VTABLE_DELTA_NAME);
   delta2_identifier = get_identifier (VTABLE_DELTA2_NAME);
   pfn_or_delta2_identifier = get_identifier ("__pfn_or_delta2");
-  if (flag_handle_signatures)
-    {
-      tag_identifier = get_identifier (SIGTABLE_TAG_NAME);
-      vb_off_identifier = get_identifier (SIGTABLE_VB_OFF_NAME);
-      vt_off_identifier = get_identifier (SIGTABLE_VT_OFF_NAME);
-    }
 
   /* Define `int' and `char' first so that dbx will output them first.  */
 
@@ -6449,11 +6428,6 @@ init_decl_processing ()
   TYPE_POINTER_TO (unknown_type_node) = unknown_type_node;
   TYPE_REFERENCE_TO (unknown_type_node) = unknown_type_node;
 
-  /* This is for handling opaque types in signatures.  */
-  opaque_type_node = copy_node (ptr_type_node);
-  TYPE_MAIN_VARIANT (opaque_type_node) = opaque_type_node;
-  record_builtin_type (RID_MAX, 0, opaque_type_node);
-
   /* This is special for C++ so functions can be overloaded.  */
   wchar_type_node
     = TREE_TYPE (IDENTIFIER_GLOBAL_VALUE (get_identifier (WCHAR_TYPE)));
@@ -6520,44 +6494,6 @@ init_decl_processing ()
   layout_type (vtbl_ptr_type_node);
   record_builtin_type (RID_MAX, NULL_PTR, vtbl_ptr_type_node);
 
-  /* Simplify life by making a "sigtable_entry_type".  Give its
-     fields names so that the debugger can use them.  */
-
-  if (flag_handle_signatures)
-    {
-      sigtable_entry_type = make_lang_type (RECORD_TYPE);
-      fields[0] = build_lang_field_decl (FIELD_DECL, tag_identifier,
-                                        delta_type_node);
-      fields[1] = build_lang_field_decl (FIELD_DECL, vb_off_identifier,
-                                        delta_type_node);
-      fields[2] = build_lang_field_decl (FIELD_DECL, delta_identifier,
-                                        delta_type_node);
-      fields[3] = build_lang_field_decl (FIELD_DECL, index_identifier,
-                                        delta_type_node);
-      fields[4] = build_lang_field_decl (FIELD_DECL, pfn_identifier,
-                                        ptr_type_node);
-
-      /* Set the alignment to the max of the alignment of ptr_type_node and
-        delta_type_node.  Double alignment wastes a word on the Sparc.  */
-      finish_builtin_type (sigtable_entry_type, SIGTABLE_PTR_TYPE, fields, 4,
-                          (TYPE_ALIGN (ptr_type_node) > TYPE_ALIGN (delta_type_node))
-                          ? ptr_type_node
-                          : delta_type_node);
-
-      /* Make this part of an invisible union.  */
-      fields[5] = copy_node (fields[4]);
-      TREE_TYPE (fields[5]) = delta_type_node;
-      DECL_NAME (fields[5]) = vt_off_identifier;
-      DECL_MODE (fields[5]) = TYPE_MODE (delta_type_node);
-      DECL_SIZE (fields[5]) = TYPE_SIZE (delta_type_node);
-      TREE_UNSIGNED (fields[5]) = 0;
-      TREE_CHAIN (fields[4]) = fields[5];
-
-      sigtable_entry_type = build_qualified_type (sigtable_entry_type, 
-                                                 TYPE_QUAL_CONST);
-      record_builtin_type (RID_MAX, SIGTABLE_PTR_TYPE, sigtable_entry_type);
-    }
-
   std_node = build_decl (NAMESPACE_DECL, 
                         get_identifier (flag_honor_std ? "fake std":"std"),
                         void_type_node);
@@ -7544,8 +7480,7 @@ cp_finish_decl (decl, init, asmspec_tree, need_pop, flags)
     init = NULL_TREE;
   else if (DECL_EXTERNAL (decl))
     ;
-  else if (TREE_CODE (type) == REFERENCE_TYPE
-          || (TYPE_LANG_SPECIFIC (type) && IS_SIGNATURE_REFERENCE (type)))
+  else if (TREE_CODE (type) == REFERENCE_TYPE)
     {
       if (TREE_STATIC (decl))
        make_decl_rtl (decl, NULL_PTR,
@@ -7902,14 +7837,6 @@ cp_finish_decl (decl, init, asmspec_tree, need_pop, flags)
              || TREE_CODE (type) == METHOD_TYPE))
        abstract_virtuals_error (decl, TREE_TYPE (type));
 
-      if (TYPE_LANG_SPECIFIC (core_type) && IS_SIGNATURE (core_type))
-       signature_error (decl, core_type);
-      else if ((TREE_CODE (type) == FUNCTION_TYPE
-               || TREE_CODE (type) == METHOD_TYPE)
-              && TYPE_LANG_SPECIFIC (TREE_TYPE (type))
-              && IS_SIGNATURE (TREE_TYPE (type)))
-       signature_error (decl, TREE_TYPE (type));
-
       if (TREE_CODE (decl) == FUNCTION_DECL)
        ;
       else if (DECL_EXTERNAL (decl)
@@ -8994,7 +8921,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
   int explicit_int = 0;
   int explicit_char = 0;
   int defaulted_int = 0;
-  int opaque_typedef = 0;
   tree typedef_decl = NULL_TREE;
   const char *name;
   tree typedef_type = NULL_TREE;
@@ -9484,10 +9410,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
   typedef_type = type;
 
   /* No type at all: default to `int', and set DEFAULTED_INT
-     because it was not a user-defined typedef.
-     Except when we have a `typedef' inside a signature, in
-     which case the type defaults to `unknown type' and is
-     instantiated when assigning to a signature pointer or ref.  */
+     because it was not a user-defined typedef.  */
 
   if (type == NULL_TREE
       && (RIDBIT_SETP (RID_SIGNED, specbits)
@@ -9509,15 +9432,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
        type = build_pointer_type (ctor_return_type);
       else if (return_type == return_conversion)
        type = ctor_return_type;
-      else if (current_class_type
-              && IS_SIGNATURE (current_class_type)
-              && RIDBIT_SETP (RID_TYPEDEF, specbits)
-              && (decl_context == FIELD || decl_context == NORMAL))
-       {
-         explicit_int = 0;
-         opaque_typedef = 1;
-         type = copy_node (opaque_type_node);
-       }
       else
        {
          /* We handle `main' specially here, because 'main () { }' is so
@@ -9799,37 +9713,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
       && ANON_AGGR_TYPE_P (TREE_VALUE (declspecs)))
     decl_context = FIELD;
 
-  /* Give error if `const,' `volatile,' `inline,' `friend,' or `virtual'
-     is used in a signature member function declaration.  */
-  if (decl_context == FIELD
-      && IS_SIGNATURE (current_class_type)
-      && RIDBIT_NOTSETP (RID_TYPEDEF, specbits))
-    {
-      if (type_quals != TYPE_UNQUALIFIED)
-       {
-         error ("type qualifiers specified for signature member function `%s'", name);
-         type_quals = TYPE_UNQUALIFIED;
-       }
-      if (inlinep)
-       {
-         error ("`inline' specified for signature member function `%s'", name);
-         /* Later, we'll make signature member functions inline.  */
-         inlinep = 0;
-       }
-      if (friendp)
-       {
-         error ("`friend' declaration in signature definition");
-         friendp = 0;
-       }
-      if (virtualp)
-       {
-         error ("`virtual' specified for signature member function `%s'",
-                name);
-         /* Later, we'll make signature member functions virtual.  */
-         virtualp = 0;
-       }
-    }
-
   /* Warn about storage classes that are invalid for certain
      kinds of declarations (parameters, typenames, etc.).  */
 
@@ -9844,7 +9727,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
       else if (RIDBIT_SETP (RID_TYPEDEF, specbits))
        ;
       else if (decl_context == FIELD
-              && ! IS_SIGNATURE (current_class_type)
               /* C++ allows static class elements  */
               && RIDBIT_SETP (RID_STATIC, specbits))
        /* C++ also allows inlines and signed and unsigned elements,
@@ -9867,11 +9749,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
                  op = IDENTIFIER_OPNAME_P (tmp);
                }
              error ("storage class specified for %s `%s'",
-                    IS_SIGNATURE (current_class_type)
-                    ? (op
-                       ? "signature member operator"
-                       : "signature member function")
-                    : (op ? "member operator" : "field"),
+                    op ? "member operator" : "field",
                     op ? operator_name_string (tmp) : name);
            }
          else
@@ -9881,12 +9759,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
          RIDBIT_RESET (RID_REGISTER, specbits);
          RIDBIT_RESET (RID_AUTO, specbits);
          RIDBIT_RESET (RID_EXTERN, specbits);
-
-         if (decl_context == FIELD && IS_SIGNATURE (current_class_type))
-           {
-             RIDBIT_RESET (RID_STATIC, specbits);
-             staticp = 0;
-           }
        }
     }
   else if (RIDBIT_SETP (RID_EXTERN, specbits) && initialized && !funcdef_flag)
@@ -10290,13 +10162,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
                        error ("return value type specifier for constructor ignored");
                    }
                    type = build_pointer_type (ctype);
-                   if (decl_context == FIELD
-                       && IS_SIGNATURE (current_class_type))
-                     {
-                       error ("constructor not allowed in signature");
-                       return void_type_node;
-                     }                   
-                   else if (decl_context == FIELD)
+                   if (decl_context == FIELD)
                      {
                        if (! member_function_or_else (ctype, current_class_type,
                                                       "constructor for alien class `%s' cannot be member"))
@@ -10403,31 +10269,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
             but to the target of the pointer.  */
          type_quals = TYPE_UNQUALIFIED;
 
-         if (IS_SIGNATURE (type))
-           {
-             if (TREE_CODE (declarator) == ADDR_EXPR)
-               {
-                 if (CLASSTYPE_METHOD_VEC (type) == NULL_TREE
-                     && TYPE_SIZE (type))
-                   cp_warning ("empty signature `%T' used in signature reference declaration",
-                               type);
-#if 0
-                 type = build_signature_reference_type (type);
-#else
-                 sorry ("signature reference");
-                 return NULL_TREE;
-#endif
-               }
-             else
-               {
-                 if (CLASSTYPE_METHOD_VEC (type) == NULL_TREE
-                     && TYPE_SIZE (type))
-                   cp_warning ("empty signature `%T' used in signature pointer declaration",
-                               type);
-                 type = build_signature_pointer_type (type);
-               }
-           }
-         else if (TREE_CODE (declarator) == ADDR_EXPR)
+         if (TREE_CODE (declarator) == ADDR_EXPR)
            {
              if (TREE_CODE (type) == VOID_TYPE)
                error ("invalid type: `void &'");
@@ -10736,8 +10578,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
            cp_pedwarn ("ANSI C++ forbids nested type `%D' with same name as enclosing class",
                        declarator);
          decl = build_lang_decl (TYPE_DECL, declarator, type);
-         if (IS_SIGNATURE (current_class_type) && opaque_typedef)
-           SIGNATURE_HAS_OPAQUE_TYPEDECLS (current_class_type) = 1;
        }
       else
        {
@@ -10851,11 +10691,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
       /* Note that the grammar rejects storage classes
         in typenames, fields or parameters.  */
       if (type_quals != TYPE_UNQUALIFIED)
-       {
-         if (IS_SIGNATURE (type))
-           error ("type qualifiers specified for signature type");
-         type_quals = TYPE_UNQUALIFIED;
-       }
+       type_quals = TYPE_UNQUALIFIED;
 
       /* Special case: "friend class foo" looks like a TYPENAME context.  */
       if (friendp)
@@ -10965,16 +10801,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
 
        bad_specifiers (decl, "parameter", virtualp, quals != NULL_TREE,
                        inlinep, friendp, raises != NULL_TREE);
-       if (current_class_type
-           && IS_SIGNATURE (current_class_type))
-         {
-           if (inlinep)
-             error ("parameter of signature member function declared `inline'");
-           if (RIDBIT_SETP (RID_AUTO, specbits))
-             error ("parameter of signature member function declared `auto'");
-           if (RIDBIT_SETP (RID_REGISTER, specbits))
-             error ("parameter of signature member function declared `register'");
-         }
 
        /* Compute the type actually passed in the parmlist,
           for the case where there is no prototype.
@@ -11671,13 +11497,6 @@ grokparms (first_parm, funcdef_flag)
                    }
                   else if (abstract_virtuals_error (decl, type))
                    any_error = 1;  /* Seems like a good idea. */
-                  else if (TREE_CODE (type) == RECORD_TYPE
-                           && TYPE_LANG_SPECIFIC (type)
-                           && IS_SIGNATURE (type))
-                    {
-                      signature_error (decl, type);
-                      any_error = 1;  /* Seems like a good idea. */
-                    }
                  else if (POINTER_TYPE_P (type))
                    {
                      tree t = type;
@@ -12208,8 +12027,6 @@ tag_name (code)
       return "union ";
     case enum_type:
       return "enum";
-    case signature_type:
-      return "signature";
     default:
       my_friendly_abort (981122);
     }
@@ -12255,7 +12072,6 @@ xref_tag (code_type_node, name, globalize)
     {
     case record_type:
     case class_type:
-    case signature_type:
       code = RECORD_TYPE;
       break;
     case union_type:
@@ -12420,17 +12236,6 @@ xref_tag (code_type_node, name, globalize)
          ref = make_lang_type (code);
          TYPE_CONTEXT (ref) = context;
 
-         if (tag_code == signature_type)
-           {
-             SET_SIGNATURE (ref);
-             /* Since a signature type will be turned into the type
-                of signature tables, it's not only an interface.  */
-             CLASSTYPE_INTERFACE_ONLY (ref) = 0;
-             SET_CLASSTYPE_INTERFACE_KNOWN (ref);
-             /* A signature doesn't have a vtable.  */
-             CLASSTYPE_VTABLE_NEEDS_WRITING (ref) = 0;
-           }
-
 #ifdef NONNESTED_CLASSES
          /* Class types don't nest the way enums do.  */
          class_binding_level = (struct binding_level *)0;
@@ -12464,7 +12269,7 @@ xref_tag (code_type_node, name, globalize)
     {
       if (tag_code == class_type)
        CLASSTYPE_DECLARED_CLASS (ref) = 1;
-      else if (tag_code == record_type || tag_code == signature_type)
+      else if (tag_code == record_type)
        CLASSTYPE_DECLARED_CLASS (ref) = 0;
     }
 
@@ -13305,35 +13110,28 @@ start_function (declspecs, declarator, attrs, pre_parsed_p)
             we keep the consistency between `current_class_type'
             and `current_class_ptr'.  */
          tree t = current_function_parms;
-
+         int i;
+             
          my_friendly_assert (t != NULL_TREE
                              && TREE_CODE (t) == PARM_DECL, 162);
-
-         if (TREE_CODE (TREE_TYPE (t)) == POINTER_TYPE)
-           {
-             int i;
-
-             if (! hack_decl_function_context (decl1))
-               temporary_allocation ();
-             i = suspend_momentary ();
-
-             /* Normally, build_indirect_ref returns
-                current_class_ref whenever current_class_ptr is
-                dereferenced.  This time, however, we want it to
-                *create* current_class_ref, so we temporarily clear
-                current_class_ptr to fool it.  */
-             current_class_ptr = NULL_TREE;
-             current_class_ref = build_indirect_ref (t, NULL_PTR);
-             current_class_ptr = t;
-
-             resume_momentary (i);
-             if (! hack_decl_function_context (decl1))
-               end_temporary_allocation ();
-           }
-         else
-           /* We're having a signature pointer here.  */
-           current_class_ref = current_class_ptr = t;
-
+         my_friendly_assert (TREE_CODE (TREE_TYPE (t)) == POINTER_TYPE,
+                             19990811);
+         
+         if (! hack_decl_function_context (decl1))
+           temporary_allocation ();
+         i = suspend_momentary ();
+         
+         /* Normally, build_indirect_ref returns current_class_ref
+            whenever current_class_ptr is dereferenced.  This time,
+            however, we want it to *create* current_class_ref, so we
+            temporarily clear current_class_ptr to fool it.  */
+         current_class_ptr = NULL_TREE;
+         current_class_ref = build_indirect_ref (t, NULL_PTR);
+         current_class_ptr = t;
+         
+         resume_momentary (i);
+         if (! hack_decl_function_context (decl1))
+           end_temporary_allocation ();
        }
     }
   else
@@ -14273,9 +14071,6 @@ start_method (declspecs, declarator, attrlist)
     /* Not a function, tell parser to report parse error.  */
     return NULL_TREE;
 
-  if (IS_SIGNATURE (current_class_type))
-    IS_DEFAULT_IMPLEMENTATION (fndecl) = 1;
-
   if (DECL_IN_AGGR_P (fndecl))
     {
       if (IDENTIFIER_ERROR_LOCUS (DECL_ASSEMBLER_NAME (fndecl)) != current_class_type)
index c5a492f8d526139158f77467a5a771cef932f87e..8141d7619a2d28e455b0209a27b833e413b8939d 100644 (file)
@@ -73,7 +73,6 @@ static void mark_vtable_entries PROTO((tree));
 static void grok_function_init PROTO((tree, tree));
 static int finish_vtable_vardecl PROTO((tree *, void *));
 static int prune_vtable_vardecl PROTO((tree *, void *));
-static int finish_sigtable_vardecl PROTO((tree *, void *));
 static int is_namespace_ancestor PROTO((tree, tree));
 static void add_using_namespace PROTO((tree, tree, int));
 static tree ambiguous_decl PROTO((tree, tree, tree,int));
@@ -385,10 +384,6 @@ int flag_this_is_variable;
 
 int flag_elide_constructors = 1;
 
-/* Nonzero means recognize and handle signature language constructs.  */
-
-int flag_handle_signatures;
-
 /* Nonzero means that member functions defined in class scope are
    inline by default.  */
 
@@ -509,7 +504,6 @@ lang_f_options[] =
   {"for-scope", &flag_new_for_scope, 2},
   {"gnu-keywords", &flag_no_gnu_keywords, 0},
   {"handle-exceptions", &flag_exceptions, 1},
-  {"handle-signatures", &flag_handle_signatures, 1},
   {"honor-std", &flag_honor_std, 1},
   {"huge-objects", &flag_huge_objects, 1},
   {"implement-inlines", &flag_implement_inlines, 1},
@@ -1648,13 +1642,6 @@ grokfield (declarator, declspecs, init, asmspec_tree, attrlist)
       return value;
     }
 
-  if (IS_SIGNATURE (current_class_type)
-      && TREE_CODE (value) != FUNCTION_DECL)
-    {
-      error ("field declaration not allowed in signature");
-      return void_type_node;
-    }
-
   if (DECL_IN_AGGR_P (value))
     {
       cp_error ("`%D' is already defined in `%T'", value,
@@ -1667,13 +1654,7 @@ grokfield (declarator, declspecs, init, asmspec_tree, attrlist)
 
   if (init)
     {
-      if (IS_SIGNATURE (current_class_type)
-         && TREE_CODE (value) == FUNCTION_DECL)
-       {
-         error ("function declarations cannot have initializers in signature");
-         init = NULL_TREE;
-       }
-      else if (TREE_CODE (value) == FUNCTION_DECL)
+      if (TREE_CODE (value) == FUNCTION_DECL)
        {
          grok_function_init (value, init);
          init = NULL_TREE;
@@ -1771,12 +1752,6 @@ grokfield (declarator, declspecs, init, asmspec_tree, attrlist)
       if (DECL_FRIEND_P (value))
        return void_type_node;
 
-#if 0 /* Just because a fn is declared doesn't mean we'll try to define it.  */
-      if (current_function_decl && ! IS_SIGNATURE (current_class_type))
-       cp_error ("method `%#D' of local class must be defined in class body",
-                 value);
-#endif
-
       DECL_IN_AGGR_P (value) = 1;
       return value;
     }
@@ -1818,12 +1793,6 @@ grokbitfield (declarator, declspecs, width)
       return NULL_TREE;
     }
 
-  if (IS_SIGNATURE (current_class_type))
-    {
-      error ("field declaration not allowed in signature");
-      return void_type_node;
-    }
-
   if (DECL_IN_AGGR_P (value))
     {
       cp_error ("`%D' is already defined in the class %T", value,
@@ -2729,20 +2698,6 @@ prune_vtable_vardecl (t, data)
   return 1;
 }
 
-static int
-finish_sigtable_vardecl (t, data)
-     tree *t;
-     void *data ATTRIBUTE_UNUSED;
-{
-  /* We don't need to mark sigtable entries as addressable here as is done
-     for vtables.  Since sigtables, unlike vtables, are always written out,
-     that was already done in build_signature_table_constructor.  */
-
-  rest_of_decl_compilation (*t, NULL_PTR, 1, 1);
-  *t = TREE_CHAIN (*t);
-  return 1;
-}
-
 /* Determines the proper settings of TREE_PUBLIC and DECL_EXTERNAL for an
    inline function or template instantiation at end-of-file.  */
 
@@ -3587,14 +3542,9 @@ finish_file ()
         them now.  */
       instantiate_pending_templates ();
 
-      /* Write out signature-tables and virtual tables as required.
-        Note that writing out the virtual table for a template class
-        may cause the instantiation of members of that class.  */
-      if (flag_handle_signatures
-         && walk_globals (sigtable_decl_p,
-                          finish_sigtable_vardecl,
-                          /*data=*/0))
-       reconsider = 1;
+      /* Write out virtual tables as required.  Note that writing out
+        the virtual table for a template class may cause the
+        instantiation of members of that class.  */
       if (walk_globals (vtable_decl_p,
                        finish_vtable_vardecl,
                        /*data=*/0))
@@ -3800,12 +3750,6 @@ reparse_absdcl_as_casts (decl, expr)
       type = groktypename (TREE_VALUE (TREE_OPERAND (decl, 1)));
       decl = TREE_OPERAND (decl, 0);
 
-      if (IS_SIGNATURE (type))
-       {
-         error ("cast specifies signature type");
-         return error_mark_node;
-       }
-
       expr = digest_init (type, expr, (tree *) 0);
       if (TREE_CODE (type) == ARRAY_TYPE && TYPE_SIZE (type) == 0)
        {
index 0279701ca2167a1bfc1b8ff6677f24d69b2ba178..9c911ada7b8218b957b46c8be4017a06bb165a2a 100644 (file)
@@ -227,18 +227,7 @@ dump_type_real (t, v, canonical_name)
     case RECORD_TYPE:
     case UNION_TYPE:
     case ENUMERAL_TYPE:
-      if (TYPE_LANG_SPECIFIC (t)
-         && (IS_SIGNATURE_POINTER (t) || IS_SIGNATURE_REFERENCE (t)))
-       {
-         dump_qualifiers (t, after);
-         dump_type_real (SIGNATURE_TYPE (t), v, canonical_name);
-         if (IS_SIGNATURE_POINTER (t))
-           OB_PUTC ('*');
-         else
-           OB_PUTC ('&');
-       }
-      else
-       dump_aggr_type (t, v, canonical_name);
+      dump_aggr_type (t, v, canonical_name);
       break;
 
     case TYPE_DECL:
@@ -356,8 +345,6 @@ aggr_variety (t)
     return "union";
   else if (TYPE_LANG_SPECIFIC (t) && CLASSTYPE_DECLARED_CLASS (t))
     return "class";
-  else if (TYPE_LANG_SPECIFIC (t) && IS_SIGNATURE (t))
-    return "signature";
   else
     return "struct";
 }
@@ -1035,15 +1022,8 @@ dump_function_decl (t, v)
     dump_type_suffix (TREE_TYPE (fntype), 1, 0);
 
   if (TREE_CODE (fntype) == METHOD_TYPE)
-    {
-      if (IS_SIGNATURE (cname))
-       /* We look at the type pointed to by the `optr' field of `this.'  */
-       dump_qualifiers
-         (TREE_TYPE (TREE_TYPE (TYPE_FIELDS (TREE_VALUE (TYPE_ARG_TYPES (fntype))))), before);
-      else
-       dump_qualifiers
-         (TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (fntype))), before);
-    }
+    dump_qualifiers (TREE_TYPE (TREE_VALUE (TYPE_ARG_TYPES (fntype))),
+                    before);
   
   if (v >= 2)
     dump_exception_spec (TYPE_RAISES_EXCEPTIONS (fntype), 0);
index a2d0c4d8d70e8dded88364911f0dd3510020fb07..410eaf5c82bfc9492cc4258c9072510437b857a0 100644 (file)
@@ -243,12 +243,7 @@ make_friend_class (type, friend_type)
   tree classes;
   int is_template_friend;
 
-  if (IS_SIGNATURE (type))
-    {
-      error ("`friend' declaration in signature definition");
-      return;
-    }
-  if (IS_SIGNATURE (friend_type) || ! IS_AGGR_TYPE (friend_type))
+  if (! IS_AGGR_TYPE (friend_type))
     {
       cp_error ("invalid type `%T' declared `friend'", friend_type);
       return;
index d18014b2d6bd6925ba5c518d6a386e0c93fb2553..4c191c542dc243833b0615fb0576cf4bf380988c 100644 (file)
@@ -25,10 +25,8 @@ __real, REALPART, RID_UNUSED
 __real__, REALPART, RID_UNUSED
 __restrict, CV_QUALIFIER, RID_RESTRICT
 __restrict__, CV_QUALIFIER, RID_RESTRICT
-__signature__, AGGR, RID_SIGNATURE     /* Extension */,
 __signed, TYPESPEC, RID_SIGNED
 __signed__, TYPESPEC, RID_SIGNED
-__sigof__, SIGOF, RID_UNUSED           /* Extension */,
 __typeof, TYPEOF, RID_UNUSED
 __typeof__, TYPEOF, RID_UNUSED
 __volatile, CV_QUALIFIER, RID_VOLATILE
@@ -84,9 +82,7 @@ register, SCSPEC, RID_REGISTER,
 reinterpret_cast, REINTERPRET_CAST, RID_UNUSED,
 return, RETURN_KEYWORD, RID_UNUSED,
 short, TYPESPEC, RID_SHORT,
-signature, AGGR, RID_SIGNATURE /* Extension */,
 signed, TYPESPEC, RID_SIGNED,
-sigof, SIGOF, RID_UNUSED               /* Extension */,
 sizeof, SIZEOF, RID_UNUSED,
 static, SCSPEC, RID_STATIC,
 static_cast, STATIC_CAST, RID_UNUSED,
index 047243f5e155f486cccb6f17257f50443af9c36e..4d7fac782c977ef16eee1a0a9b06b6066056ae6e 100644 (file)
@@ -1,14 +1,14 @@
-/* C code produced by gperf version 2.7 */
-/* Command-line: gperf -L C -F , 0, 0 -p -j1 -g -o -t -N is_reserved_word -k1,4,7,$ ../../../../egcs/gcc/cp/gxx.gperf  */
+/* C code produced by gperf version 2.7.1 (19981006 egcs) */
+/* Command-line: gperf -L C -F , 0, 0 -p -j1 -g -o -t -N is_reserved_word -k1,4,7,$ ../../../gcc/cp/gxx.gperf  */
 /* Command-line: gperf -L KR-C -F ', 0, 0' -p -j1 -g -o -t -N is_reserved_word -k1,4,$,7 gplus.gperf  */
 struct resword { const char *name; short token; enum rid rid;};
 
-#define TOTAL_KEYWORDS 107
+#define TOTAL_KEYWORDS 103
 #define MIN_WORD_LENGTH 2
 #define MAX_WORD_LENGTH 16
 #define MIN_HASH_VALUE 4
-#define MAX_HASH_VALUE 244
-/* maximum key range = 241, duplicates = 0 */
+#define MAX_HASH_VALUE 274
+/* maximum key range = 271, duplicates = 0 */
 
 #ifdef __GNUC__
 __inline
@@ -18,34 +18,34 @@ hash (str, len)
      register const char *str;
      register unsigned int len;
 {
-  static unsigned char asso_values[] =
+  static unsigned short asso_values[] =
     {
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245,   0, 245,  92,   3,   3,
-        0,   0,  75,  24,   0,  90, 245,  10,  31,  49,
-       23,  74,   0,  24,  30,  37,   6,  77,  10,  19,
-        5,   4, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
-      245, 245, 245, 245, 245, 245
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275,   0, 275,  97,   1,  19,
+       40,   0,  12,  68,   0,  74, 275,   0,  11,  67,
+       27,   0,  70,   6,  96,  43,   6,  37,   3,  10,
+        8, 104, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
+      275, 275, 275, 275, 275, 275
     };
   register int hval = len;
 
@@ -79,156 +79,158 @@ is_reserved_word (str, len)
     {
       {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
       {"else", ELSE, RID_UNUSED,},
-      {"", 0, 0},
-      {"delete", DELETE, RID_UNUSED,},
-      {"case", CASE, RID_UNUSED,},
+      {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
       {"__real__", REALPART, RID_UNUSED},
-      {"double", TYPESPEC, RID_DOUBLE,},
+      {"", 0, 0},
       {"true", CXX_TRUE, RID_UNUSED,},
-      {"catch", CATCH, RID_UNUSED,},
-      {"typeid", TYPEID, RID_UNUSED,},
-      {"try", TRY, RID_UNUSED,},
-      {"void", TYPESPEC, RID_VOID,},
-      {"", 0, 0}, {"", 0, 0},
-      {"private", VISSPEC, RID_PRIVATE,},
+      {"or_eq", ASSIGN, RID_UNUSED,},
+      {"export", SCSPEC, RID_EXPORT,},
       {"", 0, 0}, {"", 0, 0},
-      {"template", TEMPLATE, RID_TEMPLATE,},
-      {"protected", VISSPEC, RID_PROTECTED,},
-      {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+      {"__const__", CV_QUALIFIER, RID_CONST},
+      {"__volatile", CV_QUALIFIER, RID_VOLATILE},
+      {"__real", REALPART, RID_UNUSED},
+      {"__volatile__", CV_QUALIFIER, RID_VOLATILE},
+      {"__const", CV_QUALIFIER, RID_CONST},
+      {"xor_eq", ASSIGN, RID_UNUSED,},
+      {"throw", THROW, RID_UNUSED,},
+      {"__complex__", TYPESPEC, RID_COMPLEX},
+      {"case", CASE, RID_UNUSED,},
+      {"typeof", TYPEOF, RID_UNUSED,},
+      {"", 0, 0},
+      {"while", WHILE, RID_UNUSED,},
+      {"bool", TYPESPEC, RID_BOOL,},
+      {"__complex", TYPESPEC, RID_COMPLEX},
+      {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
       {"extern", SCSPEC, RID_EXTERN,},
       {"", 0, 0}, {"", 0, 0},
       {"not", '!', RID_UNUSED,},
-      {"", 0, 0}, {"", 0, 0},
-      {"xor_eq", ASSIGN, RID_UNUSED,},
+      {"typedef", SCSPEC, RID_TYPEDEF,},
+      {"virtual", SCSPEC, RID_VIRTUAL,},
+      {"not_eq", EQCOMPARE, RID_UNUSED,},
+      {"new", NEW, RID_UNUSED,},
       {"", 0, 0},
-      {"__real", REALPART, RID_UNUSED},
-      {"xor", '^', RID_UNUSED,},
-      {"compl", '~', RID_UNUSED,},
-      {"public", VISSPEC, RID_PUBLIC,},
+      {"do", DO, RID_UNUSED,},
+      {"catch", CATCH, RID_UNUSED,},
+      {"", 0, 0}, {"", 0, 0},
+      {"delete", DELETE, RID_UNUSED,},
+      {"double", TYPESPEC, RID_DOUBLE,},
       {"__extension__", EXTENSION, RID_UNUSED},
-      {"__restrict__", CV_QUALIFIER, RID_RESTRICT},
-      {"", 0, 0},
+      {"__alignof__", ALIGNOF, RID_UNUSED},
       {"__asm__", ASM_KEYWORD, RID_UNUSED},
-      {"new", NEW, RID_UNUSED,},
-      {"__restrict", CV_QUALIFIER, RID_RESTRICT},
       {"", 0, 0},
-      {"__wchar_t", TYPESPEC, RID_WCHAR  /* Unique to ANSI C++ */,},
-      {"switch", SWITCH, RID_UNUSED,},
+      {"typeid", TYPEID, RID_UNUSED,},
       {"", 0, 0},
-      {"const", CV_QUALIFIER, RID_CONST,},
-      {"static", SCSPEC, RID_STATIC,},
-      {"not_eq", EQCOMPARE, RID_UNUSED,},
+      {"__null", CONSTANT, RID_NULL},
+      {"switch", SWITCH, RID_UNUSED,},
+      {"", 0, 0}, {"", 0, 0},
+      {"friend", SCSPEC, RID_FRIEND,},
+      {"__alignof", ALIGNOF, RID_UNUSED},
+      {"false", CXX_FALSE, RID_UNUSED,},
+      {"sizeof", SIZEOF, RID_UNUSED,},
       {"__inline", SCSPEC, RID_INLINE},
-      {"while", WHILE, RID_UNUSED,},
+      {"", 0, 0},
       {"__inline__", SCSPEC, RID_INLINE},
-      {"__imag__", IMAGPART, RID_UNUSED},
       {"", 0, 0},
-      {"const_cast", CONST_CAST, RID_UNUSED,},
       {"static_cast", STATIC_CAST, RID_UNUSED,},
       {"", 0, 0}, {"", 0, 0},
+      {"union", AGGR, RID_UNION,},
+      {"continue", CONTINUE, RID_UNUSED,},
+      {"", 0, 0},
+      {"goto", GOTO, RID_UNUSED,},
+      {"const", CV_QUALIFIER, RID_CONST,},
+      {"static", SCSPEC, RID_STATIC,},
+      {"__imag__", IMAGPART, RID_UNUSED},
+      {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+      {"private", VISSPEC, RID_PRIVATE,},
       {"typename", TYPENAME_KEYWORD, RID_UNUSED,},
       {"", 0, 0},
-      {"__alignof__", ALIGNOF, RID_UNUSED},
-      {"signed", TYPESPEC, RID_SIGNED,},
-      {"char", TYPESPEC, RID_CHAR,},
+      {"int", TYPESPEC, RID_INT,},
+      {"__signed__", TYPESPEC, RID_SIGNED},
+      {"", 0, 0}, {"", 0, 0},
+      {"void", TYPESPEC, RID_VOID,},
+      {"if", IF, RID_UNUSED,},
       {"", 0, 0},
-      {"bool", TYPESPEC, RID_BOOL,},
-      {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
-      {"do", DO, RID_UNUSED,},
+      {"template", TEMPLATE, RID_TEMPLATE,},
+      {"__attribute", ATTRIBUTE, RID_UNUSED},
+      {"struct", AGGR, RID_RECORD,},
+      {"__attribute__", ATTRIBUTE, RID_UNUSED},
+      {"", 0, 0}, {"", 0, 0},
+      {"this", THIS, RID_UNUSED,},
+      {"const_cast", CONST_CAST, RID_UNUSED,},
+      {"or", OROR, RID_UNUSED,},
+      {"explicit", SCSPEC, RID_EXPLICIT,},
       {"", 0, 0},
-      {"short", TYPESPEC, RID_SHORT,},
-      {"__imag", IMAGPART, RID_UNUSED},
+      {"auto", SCSPEC, RID_AUTO,},
+      {"bitor", '|', RID_UNUSED,},
+      {"break", BREAK, RID_UNUSED,},
       {"", 0, 0},
-      {"friend", SCSPEC, RID_FRIEND,},
+      {"compl", '~', RID_UNUSED,},
+      {"public", VISSPEC, RID_PUBLIC,},
+      {"xor", '^', RID_UNUSED,},
+      {"__restrict__", CV_QUALIFIER, RID_RESTRICT},
+      {"and_eq", ASSIGN, RID_UNUSED,},
       {"class", AGGR, RID_CLASS,},
-      {"long", TYPESPEC, RID_LONG,},
-      {"this", THIS, RID_UNUSED,},
-      {"virtual", SCSPEC, RID_VIRTUAL,},
-      {"export", SCSPEC, RID_EXPORT,},
-      {"typeof", TYPEOF, RID_UNUSED,},
+      {"for", FOR, RID_UNUSED,},
+      {"__restrict", CV_QUALIFIER, RID_RESTRICT},
+      {"try", TRY, RID_UNUSED,},
       {"__typeof__", TYPEOF, RID_UNUSED},
-      {"__const__", CV_QUALIFIER, RID_CONST},
-      {"__volatile", CV_QUALIFIER, RID_VOLATILE},
       {"__asm", ASM_KEYWORD, RID_UNUSED},
-      {"__volatile__", CV_QUALIFIER, RID_VOLATILE},
-      {"__const", CV_QUALIFIER, RID_CONST},
-      {"continue", CONTINUE, RID_UNUSED,},
-      {"and", ANDAND, RID_UNUSED,},
-      {"", 0, 0}, {"", 0, 0},
+      {"signed", TYPESPEC, RID_SIGNED,},
+      {"__label__", LABEL, RID_UNUSED},
+      {"", 0, 0},
+      {"volatile", CV_QUALIFIER, RID_VOLATILE,},
+      {"float", TYPESPEC, RID_FLOAT,},
+      {"", 0, 0},
       {"__signed", TYPESPEC, RID_SIGNED},
-      {"int", TYPESPEC, RID_INT,},
-      {"__signed__", TYPESPEC, RID_SIGNED},
-      {"bitand", '&', RID_UNUSED,},
-      {"enum", ENUM, RID_UNUSED,},
-      {"or_eq", ASSIGN, RID_UNUSED,},
-      {"throw", THROW, RID_UNUSED,},
-      {"reinterpret_cast", REINTERPRET_CAST, RID_UNUSED,},
-      {"or", OROR, RID_UNUSED,},
-      {"__attribute", ATTRIBUTE, RID_UNUSED},
-      {"for", FOR, RID_UNUSED,},
-      {"__attribute__", ATTRIBUTE, RID_UNUSED},
-      {"break", BREAK, RID_UNUSED,},
-      {"default", DEFAULT, RID_UNUSED,},
-      {"bitor", '|', RID_UNUSED,},
-      {"dynamic_cast", DYNAMIC_CAST, RID_UNUSED,},
-      {"__null", CONSTANT, RID_NULL},
       {"", 0, 0},
-      {"__complex__", TYPESPEC, RID_COMPLEX},
-      {"false", CXX_FALSE, RID_UNUSED,},
-      {"sizeof", SIZEOF, RID_UNUSED,},
-      {"__complex", TYPESPEC, RID_COMPLEX},
+      {"__typeof", TYPEOF, RID_UNUSED},
       {"", 0, 0}, {"", 0, 0},
-      {"and_eq", ASSIGN, RID_UNUSED,},
       {"__builtin_va_arg", VA_ARG, RID_UNUSED},
-      {"namespace", NAMESPACE, RID_UNUSED,},
-      {"", 0, 0},
-      {"struct", AGGR, RID_RECORD,},
       {"", 0, 0}, {"", 0, 0},
+      {"__wchar_t", TYPESPEC, RID_WCHAR  /* Unique to ANSI C++ */,},
+      {"protected", VISSPEC, RID_PROTECTED,},
+      {"", 0, 0},
+      {"namespace", NAMESPACE, RID_UNUSED,},
+      {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
       {"using", USING, RID_UNUSED,},
-      {"", 0, 0}, {"", 0, 0},
-      {"__label__", LABEL, RID_UNUSED},
-      {"", 0, 0}, {"", 0, 0},
-      {"explicit", SCSPEC, RID_EXPLICIT,},
-      {"return", RETURN_KEYWORD, RID_UNUSED,},
+      {"enum", ENUM, RID_UNUSED,},
       {"", 0, 0},
-      {"__alignof", ALIGNOF, RID_UNUSED},
+      {"and", ANDAND, RID_UNUSED,},
+      {"__imag", IMAGPART, RID_UNUSED},
       {"", 0, 0}, {"", 0, 0},
-      {"volatile", CV_QUALIFIER, RID_VOLATILE,},
+      {"bitand", '&', RID_UNUSED,},
+      {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+      {"short", TYPESPEC, RID_SHORT,},
+      {"long", TYPESPEC, RID_LONG,},
       {"", 0, 0}, {"", 0, 0},
-      {"asm", ASM_KEYWORD, RID_UNUSED,},
-      {"", 0, 0},
-      {"signature", AGGR, RID_SIGNATURE        /* Extension */,},
+      {"inline", SCSPEC, RID_INLINE,},
       {"", 0, 0},
-      {"mutable", SCSPEC, RID_MUTABLE,},
-      {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
-      {"register", SCSPEC, RID_REGISTER,},
+      {"default", DEFAULT, RID_UNUSED,},
       {"", 0, 0}, {"", 0, 0},
-      {"__typeof", TYPEOF, RID_UNUSED},
-      {"", 0, 0},
-      {"typedef", SCSPEC, RID_TYPEDEF,},
-      {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
-      {"if", IF, RID_UNUSED,},
-      {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
-      {"__sigof__", SIGOF, RID_UNUSED          /* Extension */,},
       {"unsigned", TYPESPEC, RID_UNSIGNED,},
-      {"goto", GOTO, RID_UNUSED,},
-      {"", 0, 0},
-      {"float", TYPESPEC, RID_FLOAT,},
-      {"union", AGGR, RID_UNION,},
       {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
-      {"inline", SCSPEC, RID_INLINE,},
-      {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
-      {"sigof", SIGOF, RID_UNUSED              /* Extension */,},
+      {"return", RETURN_KEYWORD, RID_UNUSED,},
+      {"asm", ASM_KEYWORD, RID_UNUSED,},
       {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
-      {"__signature__", AGGR, RID_SIGNATURE    /* Extension */,},
+      {"mutable", SCSPEC, RID_MUTABLE,},
+      {"", 0, 0}, {"", 0, 0},
+      {"dynamic_cast", DYNAMIC_CAST, RID_UNUSED,},
       {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
       {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
-      {"", 0, 0}, {"", 0, 0},
+      {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
       {"operator", OPERATOR, RID_UNUSED,},
       {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+      {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+      {"char", TYPESPEC, RID_CHAR,},
+      {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+      {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+      {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+      {"reinterpret_cast", REINTERPRET_CAST, RID_UNUSED,},
+      {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
       {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
       {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
-      {"auto", SCSPEC, RID_AUTO,}
+      {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0}, {"", 0, 0},
+      {"register", SCSPEC, RID_REGISTER,}
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
index 90e9d90a2fedf1b23e75b819ef5aed5b8f7a5a91..3a70672495e7135053901d985a902cf38509c1f9 100644 (file)
@@ -2214,12 +2214,6 @@ build_new_1 (exp)
   if (abstract_virtuals_error (NULL_TREE, true_type))
     return error_mark_node;
 
-  if (TYPE_LANG_SPECIFIC (true_type) && IS_SIGNATURE (true_type))
-    {
-      signature_error (NULL_TREE, true_type);
-      return error_mark_node;
-    }
-  
   /* When we allocate an array, and the corresponding deallocation
      function takes a second argument of type size_t, and that's the
      "usual deallocation function", we allocate some extra space at
index e9199656667312cbb3aaf85207f36540b8f9b068..c0a4a34680cd7d57ffbd4634a014af9b0f300e9f 100644 (file)
@@ -56,8 +56,6 @@ DEFINE_LANG_NAME ("C++")
   { "-fno-gnu-keywords", "Do not recognise GNU defined keywords" },
   { "-fhandle-exceptions", "" },
   { "-fno-handle-exceptions", "" },
-  { "-fhandle-signatures", "Handle signature language constructs" },
-  { "-fno-handle-signatures", "" },
   { "-fhonor-std", "Treat the namespace `std' as a normal namespace" },
   { "-fno-honor-std", "" },
   { "-fhuge-objects", "Enable support for huge objects" },
index 81ec12eecfd784034de1277dce2e799b2e2a3879..30eaa85e4ab4db38ee75b224cf7ad4c3e54cda8d 100644 (file)
@@ -733,11 +733,6 @@ init_parse (filename)
   /* This is for ANSI C++.  */
   ridpointers[(int) RID_MUTABLE] = get_identifier ("mutable");
 
-  /* Signature handling extensions.  */
-  signature_type_node = build_int_2 (signature_type, 0);
-  TREE_TYPE (signature_type_node) = signature_type_node;
-  ridpointers[(int) RID_SIGNATURE] = signature_type_node;
-
   /* Create the built-in __null node.  Note that we can't yet call for
      type_for_size here because integer_type_node and so forth are not
      set up.  Therefore, we don't set the type of these nodes until
@@ -850,13 +845,6 @@ init_parse (filename)
       UNSET_RESERVED_WORD ("headof");
     }
 
-  if (! flag_handle_signatures || flag_no_gnu_keywords)
-    {
-      /* Easiest way to not recognize signature
-        handling extensions...  */
-      UNSET_RESERVED_WORD ("signature");
-      UNSET_RESERVED_WORD ("sigof");
-    }
   if (flag_no_asm || flag_no_gnu_keywords)
     UNSET_RESERVED_WORD ("typeof");
   if (! flag_operator_names)
@@ -941,8 +929,6 @@ yyprint (file, yychar, yylval)
        fprintf (file, " `union'");
       else if (yylval.ttype == enum_type_node)
        fprintf (file, " `enum'");
-      else if (yylval.ttype == signature_type_node)
-       fprintf (file, " `signature'");
       else
        my_friendly_abort (80);
       break;
index 5c2a1d148c6891c812c6a92535724b9b2a68d082..8f997ad189fe97fa446090f22a03d235b2c44655 100644 (file)
@@ -76,7 +76,6 @@ enum rid
   RID_PROTECTED,
   RID_EXCEPTION,
   RID_TEMPLATE,
-  RID_SIGNATURE,
   RID_NULL,
   /* Before adding enough to get up to 64, the RIDBIT_* macros
      will have to be changed a little.  */
index 3cc4df220e72b1398f9947eaee38f3cc2361ea71..4fb10a8ac1b3658ca0900203da4ca02e8d8aedd1 100644 (file)
@@ -1654,12 +1654,7 @@ build_decl_overload_real (dname, parms, ret_type, tparms, targs,
 
       if (for_method)
        {
-         tree this_type = TREE_VALUE (parms);
-
-         if (TREE_CODE (this_type) == RECORD_TYPE)  /* a signature pointer */
-           this_type = SIGNATURE_TYPE (this_type);
-         else
-           this_type = TREE_TYPE (this_type);
+         tree this_type = TREE_TYPE (TREE_VALUE (parms));
 
          build_mangled_name_for_type (this_type);
 
@@ -1948,9 +1943,6 @@ hack_identifier (value, name)
       if (TREE_CODE (value) == OVERLOAD)
        value = OVL_CURRENT (value);
 
-      if (IS_SIGNATURE (DECL_CLASS_CONTEXT (value)))
-       return value;
-
       decl = maybe_dummy_object (DECL_CLASS_CONTEXT (value), 0);
       value = build_component_ref (decl, name, NULL_TREE, 1);
     }
index 15c67d0eae9bef874e53a1e8c295acd1056b84fa..6dccedc3b4b5cf084382e8eeeff21a89acf0744a 100644 (file)
@@ -215,7 +215,7 @@ parse_decl(declarator, specs_attrs, attributes, initialized, decl)
 
 
 
-#define        YYFINAL         1673
+#define        YYFINAL         1667
 #define        YYFLAG          -32768
 #define        YYNTBASE        112
 
@@ -312,43 +312,43 @@ static const short yyprhs[] = {     0,
   1606,  1608,  1609,  1611,  1612,  1614,  1616,  1619,  1622,  1625,
   1628,  1631,  1634,  1637,  1640,  1643,  1647,  1652,  1656,  1659,
   1663,  1665,  1666,  1670,  1673,  1676,  1678,  1680,  1681,  1684,
-  1688,  1690,  1695,  1697,  1701,  1703,  1705,  1710,  1715,  1718,
-  1721,  1725,  1729,  1730,  1732,  1736,  1739,  1742,  1744,  1747,
-  1750,  1753,  1756,  1759,  1762,  1765,  1767,  1770,  1773,  1777,
-  1780,  1783,  1788,  1793,  1796,  1798,  1804,  1809,  1811,  1812,
-  1814,  1818,  1819,  1821,  1825,  1827,  1829,  1831,  1833,  1838,
-  1843,  1848,  1853,  1858,  1862,  1867,  1872,  1877,  1882,  1886,
-  1889,  1891,  1893,  1897,  1899,  1903,  1906,  1908,  1916,  1917,
-  1920,  1922,  1925,  1926,  1929,  1934,  1939,  1942,  1947,  1949,
-  1952,  1956,  1960,  1963,  1966,  1970,  1972,  1977,  1982,  1986,
-  1990,  1993,  1995,  1997,  2000,  2002,  2004,  2007,  2010,  2012,
-  2015,  2019,  2023,  2026,  2029,  2033,  2035,  2039,  2043,  2046,
-  2049,  2053,  2055,  2060,  2064,  2069,  2073,  2075,  2078,  2081,
-  2084,  2087,  2090,  2092,  2095,  2100,  2105,  2108,  2110,  2112,
-  2114,  2116,  2119,  2124,  2127,  2130,  2133,  2136,  2138,  2141,
-  2144,  2147,  2150,  2154,  2156,  2159,  2163,  2168,  2171,  2174,
-  2177,  2180,  2183,  2186,  2191,  2194,  2196,  2199,  2202,  2206,
-  2208,  2212,  2215,  2219,  2222,  2225,  2229,  2231,  2235,  2240,
-  2242,  2245,  2249,  2252,  2255,  2257,  2261,  2264,  2267,  2269,
-  2272,  2276,  2278,  2282,  2289,  2294,  2299,  2303,  2309,  2313,
-  2317,  2321,  2324,  2326,  2328,  2331,  2334,  2337,  2338,  2340,
-  2342,  2345,  2349,  2351,  2354,  2355,  2359,  2360,  2361,  2367,
-  2369,  2370,  2373,  2375,  2377,  2379,  2382,  2383,  2388,  2390,
-  2391,  2392,  2398,  2399,  2400,  2408,  2409,  2410,  2411,  2412,
-  2425,  2426,  2427,  2435,  2436,  2442,  2443,  2451,  2452,  2457,
-  2460,  2463,  2466,  2470,  2477,  2486,  2497,  2510,  2515,  2519,
-  2522,  2525,  2527,  2529,  2531,  2533,  2535,  2536,  2537,  2544,
-  2545,  2546,  2552,  2554,  2557,  2558,  2559,  2565,  2567,  2569,
-  2573,  2577,  2580,  2583,  2586,  2589,  2592,  2594,  2597,  2598,
-  2600,  2601,  2603,  2605,  2606,  2608,  2610,  2614,  2619,  2621,
-  2625,  2626,  2628,  2630,  2632,  2635,  2638,  2641,  2643,  2646,
-  2649,  2650,  2654,  2656,  2658,  2660,  2663,  2666,  2669,  2674,
-  2677,  2680,  2683,  2686,  2689,  2692,  2694,  2697,  2699,  2702,
-  2704,  2706,  2707,  2708,  2710,  2711,  2716,  2719,  2721,  2723,
-  2727,  2728,  2732,  2736,  2740,  2742,  2745,  2748,  2751,  2754,
-  2757,  2760,  2763,  2766,  2769,  2772,  2775,  2778,  2781,  2784,
-  2787,  2790,  2793,  2796,  2799,  2802,  2805,  2808,  2811,  2815,
-  2818,  2821,  2824,  2827,  2831,  2834,  2837,  2842,  2847,  2851
+  1688,  1690,  1695,  1697,  1701,  1703,  1705,  1708,  1711,  1715,
+  1719,  1720,  1722,  1726,  1729,  1732,  1734,  1737,  1740,  1743,
+  1746,  1749,  1752,  1755,  1757,  1760,  1763,  1767,  1770,  1773,
+  1778,  1783,  1786,  1788,  1794,  1799,  1801,  1802,  1804,  1808,
+  1809,  1811,  1815,  1817,  1819,  1821,  1823,  1828,  1833,  1838,
+  1843,  1848,  1852,  1857,  1862,  1867,  1872,  1876,  1879,  1881,
+  1883,  1887,  1889,  1893,  1896,  1898,  1906,  1907,  1910,  1912,
+  1915,  1916,  1919,  1924,  1929,  1932,  1937,  1939,  1942,  1946,
+  1950,  1953,  1956,  1960,  1962,  1967,  1972,  1976,  1980,  1983,
+  1985,  1987,  1990,  1992,  1994,  1997,  2000,  2002,  2005,  2009,
+  2013,  2016,  2019,  2023,  2025,  2029,  2033,  2036,  2039,  2043,
+  2045,  2050,  2054,  2059,  2063,  2065,  2068,  2071,  2074,  2077,
+  2080,  2082,  2085,  2090,  2095,  2098,  2100,  2102,  2104,  2106,
+  2109,  2114,  2117,  2120,  2123,  2126,  2128,  2131,  2134,  2137,
+  2140,  2144,  2146,  2149,  2153,  2158,  2161,  2164,  2167,  2170,
+  2173,  2176,  2181,  2184,  2186,  2189,  2192,  2196,  2198,  2202,
+  2205,  2209,  2212,  2215,  2219,  2221,  2225,  2230,  2232,  2235,
+  2239,  2242,  2245,  2247,  2251,  2254,  2257,  2259,  2262,  2266,
+  2268,  2272,  2279,  2284,  2289,  2293,  2299,  2303,  2307,  2311,
+  2314,  2316,  2318,  2321,  2324,  2327,  2328,  2330,  2332,  2335,
+  2339,  2341,  2344,  2345,  2349,  2350,  2351,  2357,  2359,  2360,
+  2363,  2365,  2367,  2369,  2372,  2373,  2378,  2380,  2381,  2382,
+  2388,  2389,  2390,  2398,  2399,  2400,  2401,  2402,  2415,  2416,
+  2417,  2425,  2426,  2432,  2433,  2441,  2442,  2447,  2450,  2453,
+  2456,  2460,  2467,  2476,  2487,  2500,  2505,  2509,  2512,  2515,
+  2517,  2519,  2521,  2523,  2525,  2526,  2527,  2534,  2535,  2536,
+  2542,  2544,  2547,  2548,  2549,  2555,  2557,  2559,  2563,  2567,
+  2570,  2573,  2576,  2579,  2582,  2584,  2587,  2588,  2590,  2591,
+  2593,  2595,  2596,  2598,  2600,  2604,  2609,  2611,  2615,  2616,
+  2618,  2620,  2622,  2625,  2628,  2631,  2633,  2636,  2639,  2640,
+  2644,  2646,  2648,  2650,  2653,  2656,  2659,  2664,  2667,  2670,
+  2673,  2676,  2679,  2682,  2684,  2687,  2689,  2692,  2694,  2696,
+  2697,  2698,  2700,  2701,  2706,  2709,  2711,  2713,  2717,  2718,
+  2722,  2726,  2730,  2732,  2735,  2738,  2741,  2744,  2747,  2750,
+  2753,  2756,  2759,  2762,  2765,  2768,  2771,  2774,  2777,  2780,
+  2783,  2786,  2789,  2792,  2795,  2798,  2801,  2805,  2808,  2811,
+  2814,  2817,  2821,  2824,  2827,  2832,  2837,  2841
 };
 
 static const short yyrhs[] = {    -1,
@@ -522,8 +522,7 @@ static const short yyrhs[] = {    -1,
    277,     0,   269,    59,     0,   275,     0,   273,     0,     0,
     63,   393,     0,    63,   393,   278,     0,   279,     0,   278,
     60,   393,   279,     0,   280,     0,   281,   393,   280,     0,
-   321,     0,   307,     0,    30,    93,   186,   108,     0,    30,
-    93,   225,   108,     0,    38,   393,     0,     7,   393,     0,
+   321,     0,   307,     0,    38,   393,     0,     7,   393,     0,
    281,    38,   393,     0,   281,     7,   393,     0,     0,   284,
      0,   282,   283,   284,     0,   282,   283,     0,    38,    63,
      0,   285,     0,   284,   285,     0,   286,    61,     0,   286,
@@ -695,43 +694,43 @@ static const short yyrline[] = { 0,
   2160,  2184,  2186,  2189,  2191,  2196,  2198,  2200,  2202,  2204,
   2206,  2210,  2218,  2221,  2223,  2227,  2234,  2240,  2246,  2252,
   2262,  2268,  2272,  2279,  2307,  2317,  2323,  2326,  2329,  2331,
-  2335,  2337,  2341,  2346,  2352,  2355,  2356,  2377,  2400,  2402,
-  2406,  2417,  2431,  2432,  2433,  2434,  2437,  2452,  2457,  2463,
-  2465,  2470,  2472,  2474,  2476,  2478,  2480,  2483,  2493,  2500,
-  2525,  2531,  2534,  2537,  2539,  2550,  2555,  2558,  2563,  2566,
-  2573,  2583,  2586,  2593,  2603,  2605,  2608,  2610,  2613,  2620,
-  2628,  2635,  2641,  2647,  2655,  2659,  2664,  2668,  2671,  2676,
-  2678,  2686,  2688,  2692,  2695,  2700,  2704,  2710,  2721,  2724,
-  2728,  2732,  2740,  2745,  2751,  2754,  2756,  2758,  2764,  2766,
-  2775,  2778,  2780,  2782,  2784,  2788,  2791,  2794,  2796,  2798,
-  2800,  2804,  2807,  2818,  2828,  2830,  2831,  2835,  2843,  2845,
-  2853,  2856,  2858,  2860,  2862,  2866,  2869,  2872,  2874,  2876,
-  2878,  2882,  2885,  2888,  2890,  2892,  2894,  2896,  2903,  2907,
-  2912,  2916,  2921,  2923,  2927,  2930,  2932,  2935,  2937,  2938,
-  2941,  2943,  2945,  2951,  2962,  2968,  2974,  2988,  2990,  2994,
-  3008,  3010,  3012,  3016,  3022,  3035,  3037,  3041,  3054,  3060,
-  3062,  3063,  3064,  3072,  3077,  3086,  3087,  3091,  3094,  3100,
-  3106,  3109,  3111,  3113,  3115,  3119,  3123,  3127,  3130,  3134,
-  3136,  3145,  3148,  3150,  3152,  3154,  3156,  3158,  3160,  3162,
-  3166,  3170,  3174,  3178,  3180,  3182,  3184,  3186,  3188,  3190,
-  3192,  3194,  3202,  3204,  3205,  3206,  3209,  3215,  3217,  3222,
-  3224,  3227,  3241,  3244,  3247,  3251,  3254,  3261,  3263,  3266,
-  3268,  3270,  3273,  3276,  3279,  3282,  3284,  3287,  3291,  3293,
-  3299,  3301,  3302,  3304,  3309,  3311,  3313,  3315,  3317,  3320,
-  3321,  3323,  3326,  3327,  3330,  3330,  3333,  3333,  3336,  3336,
-  3338,  3340,  3342,  3344,  3350,  3356,  3359,  3362,  3368,  3370,
-  3372,  3376,  3378,  3379,  3380,  3382,  3385,  3388,  3391,  3397,
-  3401,  3403,  3406,  3408,  3411,  3415,  3417,  3420,  3422,  3425,
-  3442,  3448,  3456,  3458,  3460,  3464,  3467,  3468,  3476,  3480,
-  3484,  3487,  3488,  3494,  3497,  3500,  3502,  3506,  3511,  3514,
-  3524,  3529,  3530,  3537,  3540,  3543,  3545,  3548,  3550,  3560,
-  3574,  3578,  3581,  3583,  3587,  3591,  3594,  3597,  3599,  3603,
-  3605,  3612,  3619,  3622,  3626,  3630,  3634,  3640,  3644,  3649,
-  3651,  3654,  3659,  3665,  3676,  3679,  3681,  3685,  3693,  3696,
-  3700,  3703,  3705,  3707,  3713,  3718,  3721,  3723,  3725,  3727,
-  3729,  3731,  3733,  3735,  3737,  3739,  3741,  3743,  3745,  3747,
-  3749,  3751,  3753,  3755,  3757,  3759,  3761,  3763,  3765,  3767,
-  3769,  3771,  3773,  3775,  3777,  3779,  3781,  3783,  3786,  3788
+  2335,  2337,  2341,  2344,  2348,  2351,  2354,  2356,  2360,  2371,
+  2385,  2386,  2387,  2388,  2391,  2400,  2405,  2411,  2413,  2418,
+  2420,  2422,  2424,  2426,  2428,  2431,  2441,  2448,  2473,  2479,
+  2482,  2485,  2487,  2498,  2503,  2506,  2511,  2514,  2521,  2531,
+  2534,  2541,  2551,  2553,  2556,  2558,  2561,  2568,  2576,  2583,
+  2589,  2595,  2603,  2607,  2612,  2616,  2619,  2624,  2626,  2634,
+  2636,  2640,  2643,  2648,  2652,  2658,  2669,  2672,  2676,  2680,
+  2688,  2693,  2699,  2702,  2704,  2706,  2712,  2714,  2723,  2726,
+  2728,  2730,  2732,  2736,  2739,  2742,  2744,  2746,  2748,  2752,
+  2755,  2766,  2776,  2778,  2779,  2783,  2791,  2793,  2801,  2804,
+  2806,  2808,  2810,  2814,  2817,  2820,  2822,  2824,  2826,  2830,
+  2833,  2836,  2838,  2840,  2842,  2844,  2851,  2855,  2860,  2864,
+  2869,  2871,  2875,  2878,  2880,  2883,  2885,  2886,  2889,  2891,
+  2893,  2899,  2910,  2916,  2922,  2936,  2938,  2942,  2956,  2958,
+  2960,  2964,  2970,  2983,  2985,  2989,  3002,  3008,  3010,  3011,
+  3012,  3020,  3025,  3034,  3035,  3039,  3042,  3048,  3054,  3057,
+  3059,  3061,  3063,  3067,  3071,  3075,  3078,  3082,  3084,  3093,
+  3096,  3098,  3100,  3102,  3104,  3106,  3108,  3110,  3114,  3118,
+  3122,  3126,  3128,  3130,  3132,  3134,  3136,  3138,  3140,  3142,
+  3150,  3152,  3153,  3154,  3157,  3163,  3165,  3170,  3172,  3175,
+  3189,  3192,  3195,  3199,  3202,  3209,  3211,  3214,  3216,  3218,
+  3221,  3224,  3227,  3230,  3232,  3235,  3239,  3241,  3247,  3249,
+  3250,  3252,  3257,  3259,  3261,  3263,  3265,  3268,  3269,  3271,
+  3274,  3275,  3278,  3278,  3281,  3281,  3284,  3284,  3286,  3288,
+  3290,  3292,  3298,  3304,  3307,  3310,  3316,  3318,  3320,  3324,
+  3326,  3327,  3328,  3330,  3333,  3336,  3339,  3345,  3349,  3351,
+  3354,  3356,  3359,  3363,  3365,  3368,  3370,  3373,  3390,  3396,
+  3404,  3406,  3408,  3412,  3415,  3416,  3424,  3428,  3432,  3435,
+  3436,  3442,  3445,  3448,  3450,  3454,  3459,  3462,  3472,  3477,
+  3478,  3485,  3488,  3491,  3493,  3496,  3498,  3508,  3522,  3526,
+  3529,  3531,  3535,  3539,  3542,  3545,  3547,  3551,  3553,  3560,
+  3567,  3570,  3574,  3578,  3582,  3588,  3592,  3597,  3599,  3602,
+  3607,  3613,  3624,  3627,  3629,  3633,  3641,  3644,  3648,  3651,
+  3653,  3655,  3661,  3666,  3669,  3671,  3673,  3675,  3677,  3679,
+  3681,  3683,  3685,  3687,  3689,  3691,  3693,  3695,  3697,  3699,
+  3701,  3703,  3705,  3707,  3709,  3711,  3713,  3715,  3717,  3719,
+  3721,  3723,  3725,  3727,  3729,  3731,  3734,  3736
 };
 #endif
 
@@ -859,43 +858,43 @@ static const short yyr1[] = {     0,
    261,   267,   267,   268,   268,   269,   269,   269,   269,   269,
    269,   270,   271,   271,   271,   272,   272,   272,   272,   272,
    273,   274,   273,   273,   275,   276,   276,   277,   277,   277,
-   278,   278,   279,   279,   280,   280,   280,   280,   281,   281,
-   281,   281,   282,   282,   282,   282,   283,   284,   284,   285,
-   285,   285,   285,   285,   285,   285,   285,   285,   285,   286,
-   286,   286,   286,   286,   286,   286,   286,   286,   287,   287,
-   287,   288,   288,   288,   289,   289,   290,   290,   291,   291,
-   292,   292,   292,   292,   293,   293,   294,   294,   294,   295,
-   295,   296,   296,   297,   297,   298,   298,   298,   299,   299,
-   300,   300,   301,   302,   303,   303,   303,   303,   304,   304,
-   305,   305,   305,   305,   305,   305,   306,   306,   306,   306,
-   306,   306,   307,   307,   308,   308,   308,   309,   310,   310,
-   311,   311,   311,   311,   311,   311,   312,   312,   312,   312,
-   312,   312,   313,   313,   313,   313,   313,   313,   314,   314,
-   315,   315,   316,   316,   317,   317,   317,   318,   318,   318,
-   319,   319,   319,   320,   320,   320,   320,   321,   321,   322,
-   322,   322,   322,   323,   323,   323,   323,   324,   324,   324,
-   324,   324,   324,   325,   326,   326,   326,   327,   327,   328,
-   329,   329,   329,   329,   329,   329,   329,   330,   330,   331,
-   331,   332,   332,   332,   332,   332,   332,   332,   332,   332,
-   332,   332,   333,   333,   333,   333,   333,   333,   333,   333,
-   333,   333,   334,   334,   334,   334,   335,   336,   336,   337,
-   337,   338,   339,   339,   341,   340,   343,   344,   342,   345,
-   346,   345,   347,   347,   348,   348,   349,   348,   348,   350,
-   351,   348,   352,   353,   348,   354,   355,   356,   357,   348,
-   358,   359,   348,   360,   348,   361,   348,   362,   348,   348,
+   278,   278,   279,   279,   280,   280,   281,   281,   281,   281,
+   282,   282,   282,   282,   283,   284,   284,   285,   285,   285,
+   285,   285,   285,   285,   285,   285,   285,   286,   286,   286,
+   286,   286,   286,   286,   286,   286,   287,   287,   287,   288,
+   288,   288,   289,   289,   290,   290,   291,   291,   292,   292,
+   292,   292,   293,   293,   294,   294,   294,   295,   295,   296,
+   296,   297,   297,   298,   298,   298,   299,   299,   300,   300,
+   301,   302,   303,   303,   303,   303,   304,   304,   305,   305,
+   305,   305,   305,   305,   306,   306,   306,   306,   306,   306,
+   307,   307,   308,   308,   308,   309,   310,   310,   311,   311,
+   311,   311,   311,   311,   312,   312,   312,   312,   312,   312,
+   313,   313,   313,   313,   313,   313,   314,   314,   315,   315,
+   316,   316,   317,   317,   317,   318,   318,   318,   319,   319,
+   319,   320,   320,   320,   320,   321,   321,   322,   322,   322,
+   322,   323,   323,   323,   323,   324,   324,   324,   324,   324,
+   324,   325,   326,   326,   326,   327,   327,   328,   329,   329,
+   329,   329,   329,   329,   329,   330,   330,   331,   331,   332,
+   332,   332,   332,   332,   332,   332,   332,   332,   332,   332,
+   333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+   334,   334,   334,   334,   335,   336,   336,   337,   337,   338,
+   339,   339,   341,   340,   343,   344,   342,   345,   346,   345,
+   347,   347,   348,   348,   349,   348,   348,   350,   351,   348,
+   352,   353,   348,   354,   355,   356,   357,   348,   358,   359,
+   348,   360,   348,   361,   348,   362,   348,   348,   348,   348,
    348,   348,   348,   348,   348,   348,   348,   348,   348,   348,
-   348,   348,   348,   348,   348,   348,   364,   365,   363,   367,
-   368,   366,   369,   369,   371,   372,   370,   373,   373,   374,
-   374,   375,   375,   375,   375,   376,   376,   376,   377,   377,
-   378,   378,   378,   379,   379,   380,   380,   381,   382,   382,
-   383,   383,   383,   384,   384,   384,   384,   384,   384,   384,
-   386,   385,   387,   387,   388,   388,   388,   388,   388,   389,
-   389,   390,   390,   390,   390,   390,   390,   391,   391,   392,
-   392,   393,   394,   394,   395,   395,   395,   396,   397,   397,
-   398,   398,   398,   398,   399,   400,   400,   400,   400,   400,
+   348,   348,   348,   348,   364,   365,   363,   367,   368,   366,
+   369,   369,   371,   372,   370,   373,   373,   374,   374,   375,
+   375,   375,   375,   376,   376,   376,   377,   377,   378,   378,
+   378,   379,   379,   380,   380,   381,   382,   382,   383,   383,
+   383,   384,   384,   384,   384,   384,   384,   384,   386,   385,
+   387,   387,   388,   388,   388,   388,   388,   389,   389,   390,
+   390,   390,   390,   390,   390,   391,   391,   392,   392,   393,
+   394,   394,   395,   395,   395,   396,   397,   397,   398,   398,
+   398,   398,   399,   400,   400,   400,   400,   400,   400,   400,
    400,   400,   400,   400,   400,   400,   400,   400,   400,   400,
    400,   400,   400,   400,   400,   400,   400,   400,   400,   400,
-   400,   400,   400,   400,   400,   400,   400,   400,   400,   400
+   400,   400,   400,   400,   400,   400,   400,   400
 };
 
 static const short yyr2[] = {     0,
@@ -950,1440 +949,1415 @@ static const short yyr2[] = {     0,
      1,     0,     1,     0,     1,     1,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     3,     4,     3,     2,     3,
      1,     0,     3,     2,     2,     1,     1,     0,     2,     3,
-     1,     4,     1,     3,     1,     1,     4,     4,     2,     2,
-     3,     3,     0,     1,     3,     2,     2,     1,     2,     2,
-     2,     2,     2,     2,     2,     1,     2,     2,     3,     2,
-     2,     4,     4,     2,     1,     5,     4,     1,     0,     1,
-     3,     0,     1,     3,     1,     1,     1,     1,     4,     4,
-     4,     4,     4,     3,     4,     4,     4,     4,     3,     2,
-     1,     1,     3,     1,     3,     2,     1,     7,     0,     2,
-     1,     2,     0,     2,     4,     4,     2,     4,     1,     2,
-     3,     3,     2,     2,     3,     1,     4,     4,     3,     3,
-     2,     1,     1,     2,     1,     1,     2,     2,     1,     2,
-     3,     3,     2,     2,     3,     1,     3,     3,     2,     2,
-     3,     1,     4,     3,     4,     3,     1,     2,     2,     2,
-     2,     2,     1,     2,     4,     4,     2,     1,     1,     1,
-     1,     2,     4,     2,     2,     2,     2,     1,     2,     2,
-     2,     2,     3,     1,     2,     3,     4,     2,     2,     2,
-     2,     2,     2,     4,     2,     1,     2,     2,     3,     1,
-     3,     2,     3,     2,     2,     3,     1,     3,     4,     1,
-     2,     3,     2,     2,     1,     3,     2,     2,     1,     2,
-     3,     1,     3,     6,     4,     4,     3,     5,     3,     3,
-     3,     2,     1,     1,     2,     2,     2,     0,     1,     1,
-     2,     3,     1,     2,     0,     3,     0,     0,     5,     1,
-     0,     2,     1,     1,     1,     2,     0,     4,     1,     0,
-     0,     5,     0,     0,     7,     0,     0,     0,     0,    12,
-     0,     0,     7,     0,     5,     0,     7,     0,     4,     2,
-     2,     2,     3,     6,     8,    10,    12,     4,     3,     2,
-     2,     1,     1,     1,     1,     1,     0,     0,     6,     0,
-     0,     5,     1,     2,     0,     0,     5,     1,     1,     3,
-     3,     2,     2,     2,     2,     2,     1,     2,     0,     1,
-     0,     1,     1,     0,     1,     1,     3,     4,     1,     3,
-     0,     1,     1,     1,     2,     2,     2,     1,     2,     2,
-     0,     3,     1,     1,     1,     2,     2,     2,     4,     2,
-     2,     2,     2,     2,     2,     1,     2,     1,     2,     1,
-     1,     0,     0,     1,     0,     4,     2,     1,     1,     3,
-     0,     3,     3,     3,     1,     2,     2,     2,     2,     2,
+     1,     4,     1,     3,     1,     1,     2,     2,     3,     3,
+     0,     1,     3,     2,     2,     1,     2,     2,     2,     2,
+     2,     2,     2,     1,     2,     2,     3,     2,     2,     4,
+     4,     2,     1,     5,     4,     1,     0,     1,     3,     0,
+     1,     3,     1,     1,     1,     1,     4,     4,     4,     4,
+     4,     3,     4,     4,     4,     4,     3,     2,     1,     1,
+     3,     1,     3,     2,     1,     7,     0,     2,     1,     2,
+     0,     2,     4,     4,     2,     4,     1,     2,     3,     3,
+     2,     2,     3,     1,     4,     4,     3,     3,     2,     1,
+     1,     2,     1,     1,     2,     2,     1,     2,     3,     3,
+     2,     2,     3,     1,     3,     3,     2,     2,     3,     1,
+     4,     3,     4,     3,     1,     2,     2,     2,     2,     2,
+     1,     2,     4,     4,     2,     1,     1,     1,     1,     2,
+     4,     2,     2,     2,     2,     1,     2,     2,     2,     2,
+     3,     1,     2,     3,     4,     2,     2,     2,     2,     2,
+     2,     4,     2,     1,     2,     2,     3,     1,     3,     2,
+     3,     2,     2,     3,     1,     3,     4,     1,     2,     3,
+     2,     2,     1,     3,     2,     2,     1,     2,     3,     1,
+     3,     6,     4,     4,     3,     5,     3,     3,     3,     2,
+     1,     1,     2,     2,     2,     0,     1,     1,     2,     3,
+     1,     2,     0,     3,     0,     0,     5,     1,     0,     2,
+     1,     1,     1,     2,     0,     4,     1,     0,     0,     5,
+     0,     0,     7,     0,     0,     0,     0,    12,     0,     0,
+     7,     0,     5,     0,     7,     0,     4,     2,     2,     2,
+     3,     6,     8,    10,    12,     4,     3,     2,     2,     1,
+     1,     1,     1,     1,     0,     0,     6,     0,     0,     5,
+     1,     2,     0,     0,     5,     1,     1,     3,     3,     2,
+     2,     2,     2,     2,     1,     2,     0,     1,     0,     1,
+     1,     0,     1,     1,     3,     4,     1,     3,     0,     1,
+     1,     1,     2,     2,     2,     1,     2,     2,     0,     3,
+     1,     1,     1,     2,     2,     2,     4,     2,     2,     2,
+     2,     2,     2,     1,     2,     1,     2,     1,     1,     0,
+     0,     1,     0,     4,     2,     1,     1,     3,     0,     3,
+     3,     3,     1,     2,     2,     2,     2,     2,     2,     2,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
-     2,     2,     2,     3,     2,     2,     4,     4,     3,     2
+     2,     2,     2,     2,     2,     2,     3,     2,     2,     2,
+     2,     3,     2,     2,     4,     4,     3,     2
 };
 
 static const short yydefact[] = {     3,
-    12,    12,     5,     0,     4,     0,   282,   638,   639,     0,
-   389,   401,   581,     0,    11,     0,     0,     0,    10,   486,
-   845,     0,     0,     0,   167,   670,   283,   284,    83,     0,
-     0,   832,     0,    45,     0,     0,    13,    25,     0,    27,
-     8,     0,    16,    15,    89,   110,    86,     0,   640,   171,
-   303,   280,   304,   616,     0,   376,     0,   375,   394,     0,
+    12,    12,     5,     0,     4,     0,   282,   636,   637,     0,
+   389,   401,   579,     0,    11,     0,     0,     0,    10,   486,
+   843,     0,     0,     0,   167,   668,   283,   284,    83,     0,
+     0,   830,     0,    45,     0,     0,    13,    25,     0,    27,
+     8,     0,    16,    15,    89,   110,    86,     0,   638,   171,
+   303,   280,   304,   614,     0,   376,     0,   375,   394,     0,
    414,   393,   431,   400,     0,   501,   502,   508,   507,   506,
-   481,   388,   605,   402,   606,   108,   302,   627,   603,     0,
-   641,   579,     0,     0,   281,    81,    82,   178,   644,   178,
-   645,   178,   285,   167,   140,   141,   142,   143,   144,   472,
-   474,     0,   666,     0,   475,     0,     0,     0,     0,   141,
+   481,   388,   603,   402,   604,   108,   302,   625,   601,     0,
+   639,   577,     0,     0,   281,    81,    82,   178,   642,   178,
+   643,   178,   285,   167,   140,   141,   142,   143,   144,   472,
+   474,     0,   664,     0,   475,     0,     0,     0,     0,   141,
    142,   143,   144,    23,     0,     0,     0,     0,     0,     0,
-     0,   476,   648,     0,   654,     0,     0,     0,    37,     0,
-     0,    31,     0,     0,    47,     0,   178,   646,     0,     0,
-     0,   614,   609,     0,     0,     0,   613,     0,     0,     0,
-     0,   303,     0,   294,   583,     0,     0,   302,   579,    28,
+     0,   476,   646,     0,   652,     0,     0,     0,    37,     0,
+     0,    31,     0,     0,    47,     0,   178,   644,     0,     0,
+     0,   612,   607,     0,     0,     0,   611,     0,     0,     0,
+     0,   303,     0,   294,   581,     0,     0,   302,   577,    28,
      0,    26,     3,    46,     0,    64,   389,     0,     0,     8,
     67,    63,    66,    89,     0,     0,     0,   400,    90,    14,
-     0,   429,     0,     0,   447,    87,    79,   647,   583,     0,
-   579,    80,     0,     0,     0,   106,     0,   410,   366,   596,
-   367,   602,     0,   579,   391,   390,    78,   109,   377,     0,
+     0,   429,     0,     0,   447,    87,    79,   645,   581,     0,
+   577,    80,     0,     0,     0,   106,     0,   410,   366,   594,
+   367,   600,     0,   577,   391,   390,    78,   109,   377,     0,
    412,   392,   107,   383,   407,   408,   378,   396,   398,   387,
    409,     0,    75,   432,   487,   488,   489,   490,   505,   149,
    148,   150,   492,   493,   172,   499,   491,     0,     0,   494,
-   495,   508,   832,   504,   477,   582,   395,     0,   426,   639,
-     0,   668,   171,   631,   632,   628,   608,   642,     0,   607,
-   604,     0,   880,   876,   875,   873,   855,   860,   861,     0,
-   867,   866,   852,   853,   851,   870,   859,   856,   857,   858,
-   862,   863,   849,   850,   846,   847,   848,   872,   864,   865,
-   854,   871,     0,   868,   778,   394,   779,   841,   285,   282,
-   581,   307,   355,     0,     0,     0,     0,     0,   351,   349,
+   495,   508,   830,   504,   477,   580,   395,     0,   426,   637,
+     0,   666,   171,   629,   630,   626,   606,   640,     0,   605,
+   602,     0,   878,   874,   873,   871,   853,   858,   859,     0,
+   865,   864,   850,   851,   849,   868,   857,   854,   855,   856,
+   860,   861,   847,   848,   844,   845,   846,   870,   862,   863,
+   852,   869,     0,   866,   776,   394,   777,   839,   285,   282,
+   579,   307,   355,     0,     0,     0,     0,     0,   351,   349,
    322,   353,   354,     0,     0,     0,     0,     0,   283,   284,
    276,     0,     0,   186,   185,     0,   187,   188,     0,     0,
    189,     0,     0,   179,   180,     0,   250,     0,   253,   184,
    306,   215,     0,     0,   308,   309,     0,   182,   373,   394,
-   374,   633,   334,   324,     0,     0,     0,     0,   178,     0,
-   484,   470,     0,   667,   665,     0,   190,   191,     0,     0,
-     0,   436,     3,    21,    29,   662,   658,   659,   661,   663,
-   660,   140,   141,   142,     0,   143,   144,   650,   651,   655,
-   652,   649,     0,   292,   293,   291,   630,   629,    33,    32,
-    49,     0,   157,     0,     0,   394,   155,     0,     0,   610,
-   612,     0,   611,   141,   142,   278,   279,   298,     0,   620,
-   297,     0,   619,     0,   305,   283,   284,     0,     0,     0,
-   296,   295,   624,     0,     0,    12,     0,   167,     9,     9,
+   374,   631,   334,   324,     0,     0,     0,     0,   178,     0,
+   484,   470,     0,   665,   663,     0,   190,   191,     0,     0,
+     0,   436,     3,    21,    29,   660,   656,   657,   659,   661,
+   658,   140,   141,   142,     0,   143,   144,   648,   649,   653,
+   650,   647,     0,   292,   293,   291,   628,   627,    33,    32,
+    49,     0,   157,     0,     0,   394,   155,     0,     0,   608,
+   610,     0,   609,   141,   142,   278,   279,   298,     0,   618,
+   297,     0,   617,     0,   305,   283,   284,     0,     0,     0,
+   296,   295,   622,     0,     0,    12,     0,   167,     9,     9,
     70,     0,    65,     0,     0,    71,    74,     0,   428,   430,
-   122,    93,   127,   767,     0,    85,    84,    92,   125,     0,
-     0,   123,    88,   626,     0,     0,   587,     0,   835,     0,
-     0,   594,   589,     0,   593,     0,     0,     0,     0,     0,
-   579,   429,     0,    77,   583,   579,   601,     0,   380,   381,
+   122,    93,   127,   765,     0,    85,    84,    92,   125,     0,
+     0,   123,    88,   624,     0,     0,   585,     0,   833,     0,
+     0,   592,   587,     0,   591,     0,     0,     0,     0,     0,
+   577,   429,     0,    77,   581,   577,   599,     0,   380,   381,
      0,    76,   429,   385,   384,   386,   379,   399,   416,   415,
    178,   496,   500,   498,     0,   503,   509,     0,   397,   429,
-   579,    94,     0,     0,     0,     0,   579,   100,   580,   615,
-   639,   669,   171,     0,     0,   869,   874,   396,   579,   579,
-     0,   579,   879,   178,     0,     0,     0,   222,     0,     0,
+   577,    94,     0,     0,     0,     0,   577,   100,   578,   613,
+   637,   667,   171,     0,     0,   867,   872,   396,   577,   577,
+     0,   577,   877,   178,     0,     0,     0,   222,     0,     0,
    224,   237,   238,     0,     0,     0,     0,     0,     0,   277,
    221,   218,   217,   219,     0,     0,     0,     0,     0,   306,
      0,     0,     0,   216,   176,   177,   300,     0,   220,     0,
      0,   251,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,   316,     0,   318,   320,   321,   359,
-   358,     0,     0,   241,   241,     0,   226,   577,     0,   234,
-   356,   348,     0,     0,   832,   337,   340,   341,     0,     0,
-   368,   689,   685,     0,   583,   579,   579,   579,   370,   692,
-     0,   637,   372,     0,     0,   371,   336,     0,   331,   350,
-   332,   352,   634,     0,   333,   175,   175,     0,   165,     0,
-   394,   163,   485,   574,   571,     0,   484,   572,   484,     0,
+   358,     0,     0,   241,   241,     0,   226,   575,     0,   234,
+   356,   348,     0,     0,   830,   337,   340,   341,     0,     0,
+   368,   687,   683,     0,   581,   577,   577,   577,   370,   690,
+     0,   635,   372,     0,     0,   371,   336,     0,   331,   350,
+   332,   352,   632,     0,   333,   175,   175,     0,   165,     0,
+   394,   163,   485,   572,   569,     0,   484,   570,   484,     0,
    403,     0,     0,   404,   405,   406,   442,   443,   444,   441,
-     0,   434,   437,     0,     3,     0,   653,   178,   656,     0,
-    41,    42,     0,    53,     0,     0,    57,    61,    50,   831,
-   826,     0,   373,   394,    53,   374,   830,    59,   168,   153,
-   151,   168,   175,   301,   618,   617,   305,     0,   621,     0,
+     0,   434,   437,     0,     3,     0,   651,   178,   654,     0,
+    41,    42,     0,    53,     0,     0,    57,    61,    50,   829,
+   824,     0,   373,   394,    53,   374,   828,    59,   168,   153,
+   151,   168,   175,   301,   616,   615,   305,     0,   619,     0,
     18,    20,    89,     9,     9,    73,    72,     0,   128,   357,
-     0,   715,    91,   713,   453,     0,   449,   448,   214,     0,
-   213,   584,   625,     0,   808,     0,   803,   394,     0,   802,
-   804,   833,   815,     0,     0,   623,   590,   592,   591,     0,
-     0,     0,     0,     0,     0,   579,   600,     0,   424,   423,
-   411,   599,     0,   835,   595,   382,   413,   425,   429,     0,
-   497,   638,   639,   832,     0,   832,   640,   510,   511,   513,
-   832,   516,   515,     0,   545,   639,     0,   536,     0,     0,
-   548,     0,   121,   116,     0,   171,   549,   552,     0,     0,
-   528,     0,   119,   427,   835,   801,   178,   178,   643,   178,
-   835,   801,   579,    97,   579,   103,   878,   877,   841,   841,
-   841,     0,     0,     0,     0,   637,     0,     0,     0,     0,
-     0,   394,     0,     0,     0,   312,     0,   310,   311,     0,
-   248,   181,   282,   638,   639,   283,   284,     0,     0,   454,
-   482,     0,   275,   274,   793,   792,     0,   272,   271,   269,
-   270,   268,   267,   266,   263,   264,   265,   261,   262,   256,
-   257,   258,   259,   260,   254,   255,     0,     0,     0,     0,
-     0,   241,   228,   245,     0,     0,   227,   579,   579,     0,
-   579,   576,   677,     0,     0,     0,     0,     0,   339,     0,
-   343,     0,   345,     0,     0,   688,   687,   680,   684,   683,
-   831,   393,     0,     0,   702,     0,     0,   835,   369,   835,
-   690,   579,   801,   583,   689,   685,     0,     0,   579,     0,
-   393,     0,     0,     0,     0,   170,   174,   286,   168,   161,
-   159,   168,     0,   473,   485,   570,     0,   212,   211,   210,
-   209,   436,     0,     0,    24,     0,     0,   657,     0,    38,
-    44,    43,    55,    52,    53,     0,    48,     0,     0,   689,
-   685,     0,   822,   579,   825,   827,     0,   823,   824,    54,
-   492,     0,   158,   168,   168,   156,   169,   299,    17,    19,
-    69,    89,   417,   145,   133,   146,   147,     0,   126,   129,
-     0,     0,     0,     0,   714,   708,   450,     0,   124,   588,
-   585,   807,   821,   810,     0,   586,   806,   820,   809,   805,
-   834,   817,   828,   818,   811,   816,   837,     0,     0,     0,
-     0,   421,   598,   597,   420,   175,   520,     0,   519,   832,
-   832,   832,     0,   579,   801,   544,   537,   549,   538,   429,
-   429,   534,   535,   532,   533,   579,   801,   282,   638,     0,
-   416,   117,   540,   550,   555,   556,   416,   416,     0,     0,
-   416,   115,   541,   553,   416,     0,   429,     0,   529,   530,
-   531,   429,    96,     0,     0,     0,     0,   102,     0,   835,
-   801,   835,   801,   843,   842,   844,   287,   323,   223,   225,
-     0,   329,   330,     0,     0,     0,     0,   311,   314,     0,
-     0,     0,     0,   249,     0,   315,   317,   319,     0,     0,
-     0,     0,   229,   247,     0,     0,   674,   672,     0,   675,
-   583,   235,     0,     0,   178,   346,     0,     0,     0,   681,
-   686,   682,   693,   579,   701,   699,   700,   691,   835,     0,
-   697,     0,     0,   635,   636,   689,   685,     0,     0,   335,
-   166,   168,   168,   164,   575,   573,   471,   435,   433,   282,
-     0,    22,    30,   664,    56,    51,    58,    62,     0,   688,
-   684,   689,   685,     0,   393,   603,     0,   579,   690,    60,
-   154,   152,    68,     0,   131,     0,   135,     0,   137,     0,
-   139,     0,   768,     0,   202,   716,     0,   709,   710,     0,
-   451,   689,   685,     0,   306,     0,   633,   829,     0,     0,
-   838,   839,     0,     0,     0,     0,     0,     0,   418,   173,
-     0,     0,     0,   522,   521,   514,   835,     0,   539,   447,
-   447,   835,     0,     0,     0,   429,   429,     0,   429,   429,
-     0,   429,     0,   527,   478,     0,   447,   579,   289,   288,
-   290,   579,    99,     0,   105,     0,     0,     0,     0,     0,
-     0,     0,   457,     0,   455,   252,   273,   243,   242,   240,
-   230,     0,   244,   246,   673,   671,   678,   676,     0,   236,
-     0,     0,   338,   342,   344,   835,   695,   579,   696,   162,
-   160,     0,   438,   440,     0,   688,   684,   689,   685,     0,
-   579,   608,   690,   132,   130,     0,     0,     0,     0,   445,
-     0,     0,   282,   638,   639,   717,   730,   733,   736,   741,
-     0,     0,     0,     0,     0,     0,     0,     0,   283,   762,
-   770,     0,   789,   766,   765,   764,     0,   725,     0,     0,
-   394,     0,   704,   723,   729,   703,   724,   763,     0,   711,
-   452,     0,   636,   819,   813,   814,   812,     0,   836,   422,
-     0,   517,   518,   512,   112,   579,   543,   547,   114,   579,
-   429,   429,   564,   447,   282,   638,     0,   551,   557,   558,
-   416,   416,   447,   447,     0,   447,   554,   467,   542,   835,
-   835,   579,   579,   239,     0,     0,     0,     0,   456,     0,
-     0,   231,   232,   679,   347,   288,   698,   835,     0,   688,
-   684,     0,   690,   134,   136,   138,   775,   769,   773,     0,
-   712,   707,   205,   782,   784,   785,     0,     0,   721,     0,
-     0,     0,   748,   750,   751,   752,     0,     0,     0,     0,
-     0,     0,     0,   783,     0,   365,   790,     0,   726,   363,
-   416,     0,   364,     0,   416,     0,     0,     0,   203,   706,
-   705,   727,   761,   760,   311,   840,   419,   835,   835,   563,
-   560,   562,     0,     0,   429,   429,   429,   559,   561,   546,
-     0,    95,   101,   835,   835,   325,   326,   327,   328,   458,
-     0,   233,   694,   439,   689,   685,     0,     0,     0,   774,
-   446,   194,     0,   718,   731,   720,     0,     0,     0,     0,
-     0,   744,     0,   753,     0,   759,    39,   144,    34,   144,
-     0,    35,   771,     0,   361,   362,     0,     0,     0,   360,
-   204,   721,   111,   113,   429,   429,   569,   447,   447,   469,
-     0,   468,   463,    98,   104,   578,   393,     0,   776,   201,
-     0,   394,     0,   721,     0,   734,   722,   708,   787,   737,
-     0,     0,     0,     0,   749,   758,    40,    36,     0,     0,
-   728,   568,   566,   565,   567,     0,     0,   480,     0,     0,
-     0,   195,   416,   719,   206,   732,   208,     0,   788,     0,
-   786,   742,   746,   745,   772,   794,     0,   466,   465,   459,
-    86,    89,   780,   781,   777,   429,   708,   192,     0,     0,
-   198,     0,   197,   721,     0,     0,     0,   795,   796,   754,
-     0,   464,     0,   207,     0,   735,   738,   743,   747,     0,
-   794,     0,     0,   462,     0,   461,   199,   193,     0,     0,
-     0,   755,   797,   460,     0,     0,   798,     0,     0,   200,
-   739,   799,     0,   756,     0,     0,     0,   740,   800,   757,
-     0,     0,     0
+     0,   713,    91,   711,   453,     0,   449,   448,   214,     0,
+   213,   582,   623,     0,   806,     0,   801,   394,     0,   800,
+   802,   831,   813,     0,     0,   621,   588,   590,   589,     0,
+     0,     0,     0,     0,     0,   577,   598,     0,   424,   423,
+   411,   597,     0,   833,   593,   382,   413,   425,   429,     0,
+   497,   636,   637,   830,   830,   638,   510,   511,   513,   830,
+   516,   515,     0,   543,   637,     0,   534,     0,     0,   546,
+     0,   121,   116,     0,   171,   547,   550,     0,     0,   526,
+     0,   119,   427,   833,   799,   178,   178,   641,   178,   833,
+   799,   577,    97,   577,   103,   876,   875,   839,   839,   839,
+     0,     0,     0,     0,   635,     0,     0,     0,     0,     0,
+   394,     0,     0,     0,   312,     0,   310,   311,     0,   248,
+   181,   282,   636,   637,   283,   284,     0,     0,   454,   482,
+     0,   275,   274,   791,   790,     0,   272,   271,   269,   270,
+   268,   267,   266,   263,   264,   265,   261,   262,   256,   257,
+   258,   259,   260,   254,   255,     0,     0,     0,     0,     0,
+   241,   228,   245,     0,     0,   227,   577,   577,     0,   577,
+   574,   675,     0,     0,     0,     0,     0,   339,     0,   343,
+     0,   345,     0,     0,   686,   685,   678,   682,   681,   829,
+   393,     0,     0,   700,     0,     0,   833,   369,   833,   688,
+   577,   799,   581,   687,   683,     0,     0,   577,     0,   393,
+     0,     0,     0,     0,   170,   174,   286,   168,   161,   159,
+   168,     0,   473,   485,   568,     0,   212,   211,   210,   209,
+   436,     0,     0,    24,     0,     0,   655,     0,    38,    44,
+    43,    55,    52,    53,     0,    48,     0,     0,   687,   683,
+     0,   820,   577,   823,   825,     0,   821,   822,    54,   492,
+     0,   158,   168,   168,   156,   169,   299,    17,    19,    69,
+    89,   417,   145,   133,   146,   147,     0,   126,   129,     0,
+     0,     0,     0,   712,   706,   450,     0,   124,   586,   583,
+   805,   819,   808,     0,   584,   804,   818,   807,   803,   832,
+   815,   826,   816,   809,   814,   835,     0,     0,     0,     0,
+   421,   596,   595,   420,   175,   518,   517,   830,   830,   830,
+     0,   577,   799,   542,   535,   547,   536,   429,   429,   532,
+   533,   530,   531,   577,   799,   282,   636,     0,   416,   117,
+   538,   548,   553,   554,   416,   416,     0,     0,   416,   115,
+   539,   551,   416,     0,   429,     0,   527,   528,   529,   429,
+    96,     0,     0,     0,     0,   102,     0,   833,   799,   833,
+   799,   841,   840,   842,   287,   323,   223,   225,     0,   329,
+   330,     0,     0,     0,     0,   311,   314,     0,     0,     0,
+     0,   249,     0,   315,   317,   319,     0,     0,     0,     0,
+   229,   247,     0,     0,   672,   670,     0,   673,   581,   235,
+     0,     0,   178,   346,     0,     0,     0,   679,   684,   680,
+   691,   577,   699,   697,   698,   689,   833,     0,   695,     0,
+     0,   633,   634,   687,   683,     0,     0,   335,   166,   168,
+   168,   164,   573,   571,   471,   435,   433,   282,     0,    22,
+    30,   662,    56,    51,    58,    62,     0,   686,   682,   687,
+   683,     0,   393,   601,     0,   577,   688,    60,   154,   152,
+    68,     0,   131,     0,   135,     0,   137,     0,   139,     0,
+   766,     0,   202,   714,     0,   707,   708,     0,   451,   687,
+   683,     0,   306,     0,   631,   827,     0,     0,   836,   837,
+     0,     0,     0,     0,     0,     0,   418,   173,     0,   520,
+   519,   514,   833,     0,   537,   447,   447,   833,     0,     0,
+     0,   429,   429,     0,   429,   429,     0,   429,     0,   525,
+   478,     0,   447,   577,   289,   288,   290,   577,    99,     0,
+   105,     0,     0,     0,     0,     0,     0,     0,   457,     0,
+   455,   252,   273,   243,   242,   240,   230,     0,   244,   246,
+   671,   669,   676,   674,     0,   236,     0,     0,   338,   342,
+   344,   833,   693,   577,   694,   162,   160,     0,   438,   440,
+     0,   686,   682,   687,   683,     0,   577,   606,   688,   132,
+   130,     0,     0,     0,     0,   445,     0,     0,   282,   636,
+   637,   715,   728,   731,   734,   739,     0,     0,     0,     0,
+     0,     0,     0,     0,   283,   760,   768,     0,   787,   764,
+   763,   762,     0,   723,     0,     0,   394,     0,   702,   721,
+   727,   701,   722,   761,     0,   709,   452,     0,   634,   817,
+   811,   812,   810,     0,   834,   422,     0,   512,   112,   577,
+   541,   545,   114,   577,   429,   429,   562,   447,   282,   636,
+     0,   549,   555,   556,   416,   416,   447,   447,     0,   447,
+   552,   467,   540,   833,   833,   577,   577,   239,     0,     0,
+     0,     0,   456,     0,     0,   231,   232,   677,   347,   288,
+   696,   833,     0,   686,   682,     0,   688,   134,   136,   138,
+   773,   767,   771,     0,   710,   705,   205,   780,   782,   783,
+     0,     0,   719,     0,     0,     0,   746,   748,   749,   750,
+     0,     0,     0,     0,     0,     0,     0,   781,     0,   365,
+   788,     0,   724,   363,   416,     0,   364,     0,   416,     0,
+     0,     0,   203,   704,   703,   725,   759,   758,   311,   838,
+   419,   833,   833,   561,   558,   560,     0,     0,   429,   429,
+   429,   557,   559,   544,     0,    95,   101,   833,   833,   325,
+   326,   327,   328,   458,     0,   233,   692,   439,   687,   683,
+     0,     0,     0,   772,   446,   194,     0,   716,   729,   718,
+     0,     0,     0,     0,     0,   742,     0,   751,     0,   757,
+    39,   144,    34,   144,     0,    35,   769,     0,   361,   362,
+     0,     0,     0,   360,   204,   719,   111,   113,   429,   429,
+   567,   447,   447,   469,     0,   468,   463,    98,   104,   576,
+   393,     0,   774,   201,     0,   394,     0,   719,     0,   732,
+   720,   706,   785,   735,     0,     0,     0,     0,   747,   756,
+    40,    36,     0,     0,   726,   566,   564,   563,   565,     0,
+     0,   480,     0,     0,     0,   195,   416,   717,   206,   730,
+   208,     0,   786,     0,   784,   740,   744,   743,   770,   792,
+     0,   466,   465,   459,    86,    89,   778,   779,   775,   429,
+   706,   192,     0,     0,   198,     0,   197,   719,     0,     0,
+     0,   793,   794,   752,     0,   464,     0,   207,     0,   733,
+   736,   741,   745,     0,   792,     0,     0,   462,     0,   461,
+   199,   193,     0,     0,     0,   753,   795,   460,     0,     0,
+   796,     0,     0,   200,   737,   797,     0,   754,     0,     0,
+     0,   738,   798,   755,     0,     0,     0
 };
 
-static const short yydefgoto[] = {  1671,
+static const short yydefgoto[] = {  1665,
    436,     2,   437,   165,   712,   332,   181,     3,     4,    37,
-   675,   373,  1344,   676,   791,  1345,  1346,   393,  1452,   680,
-    41,   792,   402,   686,   963,   687,   688,   689,    43,   172,
-   173,    44,   455,   184,   180,    45,    46,   806,  1091,   812,
-  1093,    47,   794,   795,   185,   186,   456,   719,   999,  1000,
-   654,  1001,   234,    48,   985,   984,   702,   699,  1163,  1162,
-   942,   939,   136,   983,    49,   236,    50,   936,   567,   333,
-   334,   335,   336,  1347,  1620,  1514,  1622,  1561,  1655,  1206,
-  1596,  1617,   367,   928,   337,  1281,   880,   606,   887,   338,
+   675,   373,  1340,   676,   790,  1341,  1342,   393,  1446,   680,
+    41,   791,   402,   686,   962,   687,   688,   689,    43,   172,
+   173,    44,   455,   184,   180,    45,    46,   805,  1089,   811,
+  1091,    47,   793,   794,   185,   186,   456,   719,   998,   999,
+   654,  1000,   234,    48,   984,   983,   702,   699,  1161,  1160,
+   941,   938,   136,   982,    49,   236,    50,   935,   567,   333,
+   334,   335,   336,  1343,  1614,  1508,  1616,  1555,  1649,  1204,
+  1590,  1611,   367,   927,   337,  1277,   879,   606,   886,   338,
    339,   368,   341,   359,    52,   255,   681,   418,   154,    53,
-    54,   342,   562,   343,   344,   345,   346,   457,   347,  1348,
-   499,   627,   348,  1349,    56,   217,   692,   349,   218,   539,
-   219,   197,   210,    60,   482,   500,  1371,   759,  1228,   198,
-   211,    61,   510,   760,    62,    63,   671,   672,   673,  1321,
-   462,   850,   851,  1611,  1612,  1588,  1552,  1491,    64,   659,
-   361,   508,  1398,  1553,  1113,   655,    65,    66,    67,    68,
-    69,   242,    70,    71,   244,   778,   779,   780,   781,   799,
-  1078,   800,   801,   802,  1063,  1073,  1064,  1388,  1065,  1066,
-  1389,  1390,   656,   657,   658,   607,   918,   351,   465,   466,
+    54,   342,   562,   343,   344,   345,   346,   457,   347,  1344,
+   499,   627,   348,  1345,    56,   217,   692,   349,   218,   539,
+   219,   197,   210,    60,   482,   500,  1367,   759,  1226,   198,
+   211,    61,   510,   760,    62,    63,   671,   672,   673,  1317,
+   462,   849,   850,  1605,  1606,  1582,  1546,  1485,    64,   659,
+   361,   508,  1392,  1547,  1111,   655,    65,    66,    67,    68,
+    69,   242,    70,    71,   244,   777,   778,   779,   780,   798,
+  1076,   799,   800,   801,  1061,  1071,  1062,  1382,  1063,  1064,
+  1383,  1384,   656,   657,   658,   607,   917,   351,   465,   466,
    191,   480,   473,   200,    73,    74,    75,   142,   143,   157,
-    77,   132,   352,   353,   354,    79,   355,    81,   783,   123,
-   124,   125,   515,   105,    82,   356,   892,   893,   913,   908,
-   630,  1352,  1353,  1207,  1208,  1209,   723,  1354,  1006,  1355,
-  1437,  1564,  1517,  1518,  1356,  1357,  1542,  1438,  1565,  1439,
-  1598,  1440,  1600,  1649,  1665,  1441,  1624,  1574,  1625,  1523,
-   458,   720,  1319,  1358,  1455,  1579,  1428,  1429,  1509,  1591,
-  1563,  1559,  1359,  1570,  1458,   857,  1627,  1628,  1629,  1663,
-   739,   914,  1026,  1220,  1367,   741,   742,   743,  1022,   744,
-   148,  1024,   746,  1222,  1223,   533,    84,    85
+    77,   132,   352,   353,   354,    79,   355,    81,   782,   123,
+   124,   125,   515,   105,    82,   356,   891,   892,   912,   907,
+   630,  1348,  1349,  1205,  1206,  1207,   723,  1350,  1005,  1351,
+  1431,  1558,  1511,  1512,  1352,  1353,  1536,  1432,  1559,  1433,
+  1592,  1434,  1594,  1643,  1659,  1435,  1618,  1568,  1619,  1517,
+   458,   720,  1315,  1354,  1449,  1573,  1422,  1423,  1503,  1585,
+  1557,  1553,  1355,  1564,  1452,   856,  1621,  1622,  1623,  1657,
+   739,   913,  1025,  1218,  1363,   741,   742,   743,  1021,   744,
+   148,  1023,   746,  1220,  1221,   533,    84,    85
 };
 
-static const short yypact[] = {   139,
-   143,-32768,-32768,  5151,-32768,   160,    75,   170,   427,   171,
-   239,-32768,-32768,  1485,-32768,   172,   199,   237,-32768,-32768,
--32768,  1423,  1651,  1270,   285,-32768,   328,   476,-32768,  3953,
-  3953,-32768,   580,-32768,  5151,   326,-32768,-32768,   372,-32768,
-    72,  4716,-32768,-32768,   368,   834,   431,   463,   437,-32768,
--32768,-32768,-32768,   333,  3529,-32768,  6663,-32768,  1406,   439,
--32768,   495,-32768,-32768,   926,   178,-32768,   494,-32768,-32768,
-   507,  5858,-32768,-32768,-32768,  1135,-32768,-32768,-32768,  1904,
--32768,-32768,   533,  3674,   525,-32768,-32768, 11333,-32768, 11333,
--32768, 11333,-32768,-32768,-32768,   170,   427,   328,   560,-32768,
-   569,   437,-32768,   461,-32768,   533, 11424, 11424,   563,-32768,
--32768,-32768,-32768,-32768,   625,   603,   493,   548,   624,   611,
-   643,-32768,-32768,  1626,-32768,   950,   170,   427,-32768,   328,
-   560,-32768,  2368,  1524,   645,  8527, 11333,-32768, 11333,  4209,
-  4918,-32768,-32768,  2975,   589,  4918,-32768,  1212,  5212,  5212,
-   580,   618,   626,-32768,   629,  1201,   657,   675,-32768,-32768,
-   726,-32768,   639,-32768,  6539,-32768,-32768,   285,  4339,   683,
--32768,-32768,-32768,   368,  7613, 12313,   709,   748,-32768,-32768,
-   718,   495,   813,   115,   515,   772,-32768,-32768,   725,   121,
--32768,-32768,  5419,  5419,  4518,  1135,   715,-32768,-32768,   349,
--32768,-32768,  3093,-32768,-32768,-32768,-32768,-32768,  1406,   737,
--32768,   495,  1135,-32768,-32768,-32768,  1541,  1406,-32768,   495,
--32768,  7613,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   770,-32768,   437,-32768,   495,  1738,  1711,-32768,
--32768,   494,-32768,-32768,-32768,-32768,   838,   533,-32768,   593,
-  1925,-32768,   174,-32768,-32768,-32768,-32768,-32768,  5819,-32768,
--32768,   286,-32768,   762,   765,-32768,-32768,-32768,-32768,   800,
+static const short yypact[] = {   131,
+   215,-32768,-32768,  6330,-32768,    67,   149,    64,   151,   163,
+   102,-32768,-32768,  1060,-32768,   152,   177,   201,-32768,-32768,
+-32768,   862,   986,  2200,   241,-32768,   296,   404,-32768,  3864,
+  3864,-32768,  8054,-32768,  6330,   288,-32768,-32768,   326,-32768,
+    49,  6732,-32768,-32768,   315,   876,   357,   350,   385,-32768,
+-32768,-32768,-32768,   402,  5747,-32768,  4343,-32768,  2560,   763,
+-32768,   445,-32768,-32768,  1626,   366,-32768,   391,-32768,-32768,
+   421,  2404,-32768,-32768,-32768,   947,-32768,-32768,-32768,  1656,
+-32768,-32768,   795,  4628,   419,-32768,-32768, 10831,-32768, 10831,
+-32768, 10831,-32768,-32768,-32768,    64,   151,   296,   446,-32768,
+   469,   385,-32768,  1423,-32768,   795, 10922, 10922,   442,-32768,
+-32768,-32768,-32768,-32768,    79,   457,   418,   756,   771,   496,
+   507,-32768,-32768,  1220,-32768,  1200,    64,   151,-32768,   296,
+   446,-32768,  1278,   518,   489, 11976, 10831,-32768, 10831, 12155,
+  4022,-32768,-32768,  2368,  1154,  4022,-32768,  1384,  4238,  4238,
+  8054,   464,   486,-32768,   504,   633,   497,   524,-32768,-32768,
+   615,-32768,   529,-32768,  3682,-32768,-32768,   241,  7725,   547,
+-32768,-32768,-32768,   315,  5451, 12021,   802,   586,-32768,-32768,
+   561,   445,   660,    94,   196,   611,-32768,-32768,   570,   272,
+-32768,-32768,  5510,  5510, 12176,   947,   908,-32768,-32768,   515,
+-32768,-32768,  3323,-32768,-32768,-32768,-32768,-32768,  2560,   919,
+-32768,   445,   947,-32768,-32768,-32768,  2762,  2560,-32768,   445,
+-32768,  5451,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   621,-32768,   385,-32768,   445,  1288,  1540,-32768,
+-32768,   391,-32768,-32768,-32768,-32768,   831,   795,-32768,   625,
+  1480,-32768,   304,-32768,-32768,-32768,-32768,-32768,  6066,-32768,
+-32768,   770,-32768,   631,   638,-32768,-32768,-32768,-32768,   644,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   761,-32768,-32768,   838,  5858,   246,-32768,-32768,
-   781,-32768,-32768, 12062, 12153, 12244, 12244,   793,-32768,-32768,
--32768,-32768,-32768,   799,   822,   829,   831,   833,   850,   560,
- 11515,  1835, 12244,-32768,-32768, 12244,-32768,-32768, 12244,  9006,
--32768, 12244,   219,   852,-32768, 12244,-32768, 11606,-32768, 12308,
-   235,  1053,  1673, 11697,-32768,   907,  2813,-32768,  1062,  2659,
-  4116,-32768,   271,-32768,  2540,  2147,   219,   219, 11333,  8527,
-   941,-32768,  1835,-32768,-32768,   816,   881,  8333,   844,   848,
-   853,  1453,   639,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   603,   493,   548,  1835,   624,   611,   894,   643,-32768,
-   915,-32768,  1222,   170,   427,-32768,-32768,-32768,-32768,-32768,
--32768,  4631,-32768,  7613,  8107,  2220,-32768,   219,   438,-32768,
--32768,   678,-32768,   898,   899,-32768,-32768,-32768,  4918,-32768,
--32768,  4918,-32768,   867,-32768,-32768,-32768,  1201,  1201,  1201,
--32768,-32768,-32768,  5819,    85,   868,   871,-32768,-32768,-32768,
--32768,  8527,-32768,   854,   860,-32768,-32768,   726,-32768,   495,
--32768,-32768,-32768,-32768,   133,-32768,-32768,-32768,-32768,  9558,
- 11515,-32768,-32768,-32768, 11515,   875,-32768,  8821,   104,  4951,
-  6784,-32768,-32768,  6784,-32768,  6875,  6875,  4518,  6997,   874,
--32768,   495,  7613,-32768,   877,-32768,-32768,  7348,  1541,  1406,
-  7613,-32768,   495,-32768,-32768,   495,  1541,-32768,   960,-32768,
- 11333,   770,-32768,-32768,  1738,-32768,  3300,  3998,   838,   495,
--32768,-32768,   918,   920,   945,   921,-32768,-32768,-32768,-32768,
-   699,-32768,   377,   892,   905,-32768,-32768,   838,-32768,-32768,
-  1022,-32768,-32768, 11333, 11515,   781,  9006,-32768,   386,  9006,
--32768,-32768,-32768, 11515, 11424,  6459,  6459,  6459,  6459, 12432,
--32768,-32768,-32768,-32768,   909, 11789, 11789,  9006,   910,    74,
-   925,   969,   927,-32768,-32768,-32768,-32768, 11333,-32768,  9097,
-  9006,-32768, 11515, 11515,  9649, 11515, 11515, 11515, 11515, 11515,
- 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515, 11515,
- 11515, 11515, 11515, 11515,-32768, 11515,-32768,-32768,-32768,-32768,
--32768, 11515, 11515,-32768,-32768,  2473,   517,  1393, 10195,-32768,
--32768,-32768,   982,  1925,  1030,   402,   465,   484,  2871,   589,
--32768,  2259,  2259,  5052,   929,   962,   995,-32768,-32768,   571,
- 10693,   306,-32768,  1057,   533,-32768,-32768, 11515,-32768,-32768,
--32768,-32768,-32768,   102,   525,-32768,-32768,   219,-32768,  7613,
-  2278,-32768,-32768,   983,-32768,   947,   997,-32768,   941,   894,
--32768,  9922, 10013,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-    80,-32768,   972,   963,   639,  1222,  1018, 11333,-32768,  1014,
--32768,-32768,  1524,  1747,  1046,   262,  1019,  1020,-32768,-32768,
-  2004, 12313,  2004,  3372,   926,  7003,-32768,  1023,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   987,   988,-32768,  1039,
--32768,-32768,   368,-32768,-32768,-32768,-32768,    91,   227,  1041,
-   969,-32768,-32768,-32768,-32768,  8912, 12432,-32768,   881,   999,
-  8333,-32768,-32768,  1003,-32768,  1015,   423,  6401,  1017,-32768,
-   208,  7151,  1040,  1063,   583,-32768,-32768,-32768,-32768,  6784,
-  6784,  7531,  7531,  6997,  1057,-32768,-32768,  7348,-32768,  1065,
--32768,-32768,  1016,   104,-32768,  1541,-32768,-32768,   495,  1061,
--32768,   493,   548,-32768,  1049,-32768,   643,  1079,-32768,-32768,
-   366,-32768,-32768,  1867,-32768,   702,  1335,-32768, 11515,  5922,
--32768,  5922,   216,   216,   253,   585,  3892,  7274,    92,  4410,
--32768,   191,   216,-32768,   104,  6607, 11333, 11333,-32768, 11333,
-   104,  6607,-32768,-32768,-32768,-32768,-32768,-32768,  1932,  1932,
-  1932,   219,  1044,  1045, 10969,   995,  1051, 12387,  1052,  1056,
-  1093,  2767,  1095,  1097,  1102,-32768,  1073,-32768,-32768,  1074,
--32768,-32768,  1124,    83,    89,   497,    90, 11515,  1127,-32768,
-  1133,  1090, 12432, 12432,-32768,-32768,  1138,  8146, 12360, 10219,
-  5760,  2602,  5270,  4057,  3214,  3214,  3214,  2414,  2414,  1410,
-  1410,   309,   309,   309,-32768,-32768,  1094,  1100,  1103, 11515,
- 11424,-32768,   517,-32768,  9558, 11515,-32768,-32768,-32768, 11515,
--32768,-32768,  1111, 12244,  1108,  1122,  1148,  1183,-32768, 11515,
--32768, 11515,-32768, 11515,   809,  3450,-32768,-32768,  3450,-32768,
-    99,   809,  1125,  1126,-32768,  1128,  6459,   104,-32768,   104,
-  5229,-32768,  6607,  1136,  7995,  7995,  8286,  1130, 11606,  1141,
-  2025,  3563,  2147,  1077,  1142,-32768,-32768,-32768,-32768,-32768,
--32768,-32768, 11515,-32768,  1835,-32768,  1137,-32768, 12432,-32768,
- 12432,  1453,  1143, 11880,-32768,  1145,  1196,-32768,   219,-32768,
--32768,-32768,-32768,-32768,  1911,  4631,-32768,  6459, 11333,  2529,
-  2529,  2212,-32768,-32768,-32768,-32768,  3093,-32768,-32768,-32768,
-   994, 11515,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   368,-32768,   603,-32768,   624,   611, 11515,  1184,-32768,
-   602,   615,   694,   969,-32768,   103,-32768,    67,-32768,-32768,
--32768,-32768,-32768,-32768, 10785,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,  1063,  1195,-32768,-32768,-32768,  6459,  1751,  1751,
-  1842,-32768,-32768,-32768,  1213,-32768,-32768, 11424,-32768,-32768,
--32768,-32768,  1719,-32768,  6607, 12432,-32768,  3193,-32768,   495,
-   495,-32768,-32768,-32768,-32768,-32768,  6607,   665,   454, 11515,
-   960,-32768,  1221,-32768,-32768,-32768,   554,   666,  1904,   589,
-   705,   216,  1223,-32768,   884,  1224,   495,  4820,-32768,-32768,
--32768,   495,-32768,  1176,   219,   219,   219,-32768,  1177,   104,
-  6607,   104,  6607,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-  6459,-32768,-32768,  1202,  1203,  1206,  1208,   987,-32768,  8174,
-  9558,  9191,  1179,-32768, 11515,-32768,-32768,-32768,  1199,  1197,
-  1204,  6459,-32768,-32768,  1205,   101,   374,   374,  1207,   374,
--32768,-32768, 12244,  1302, 11333,-32768,  1209,  1211,  1214,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   104,  1216,
--32768,  1210,  2025,-32768,-32768,  2706,  2706,  3546,  4016,-32768,
--32768,-32768,-32768,-32768, 12432,-32768,-32768,-32768,-32768,   206,
-  1229,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  3832,  2965,
-  2965,  3082,  3082,  2212,  3852,   125,  3093,-32768,  3391, 12308,
--32768,-32768,-32768,  1234,-32768,   227,-32768, 11515,-32768, 11515,
--32768, 11515,-32768,  1835,-32768,-32768,  8634,  1283,-32768,  9282,
--32768, 10877, 10877,  8727,   238,  1236,   359,-32768,  9558,  9373,
--32768,-32768,   242,  2099,  2099,  2350,  2350,  9558,-32768,-32768,
-  1239,  1241,  3300,-32768,-32768,-32768,   104,  1248,-32768,  1267,
-  1267,   104,  1251, 11515, 11515,  7646,   495,  6138,   495,   495,
-  1172,   495,  6330,-32768,-32768,  5737,  1267,-32768,-32768,  1305,
--32768,-32768,-32768,  1255,-32768,  1257,  1260, 11515, 11515, 11515,
- 11515,  9558,-32768,  1309,-32768,-32768, 12432,-32768,-32768,-32768,
-   559,  1204,-32768,-32768,-32768,-32768,-32768,-32768,  1262,-32768,
-  1328,   219,-32768,-32768,-32768,   104,-32768,-32768,-32768,-32768,
--32768, 11515,-32768,-32768,  3852,  2965,  2965,  3773,  3773,  6855,
--32768,   412,  3391,-32768,-32768,  1269,  1272,  1273,  1286,-32768,
-   876,   268,  1321,   764,   775,-32768,-32768,-32768,-32768,-32768,
- 11515,  1322,  1325,  1330, 11060,   955,  1835,   622,   692,-32768,
--32768, 11151,  1385,-32768,-32768,-32768,  1334,-32768,  7172,  7408,
-  2356,  8429,-32768,-32768,  1383,-32768,-32768,-32768, 10304,-32768,
--32768,  1292,  1818,-32768,-32768,-32768,-32768,  6459,-32768,-32768,
-  9558,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-  7646,  7646,-32768,  1267,   703,   826, 11515,-32768,-32768,-32768,
-   960,   960,  1267,  1267,   699,  1267,-32768,-32768,-32768,   104,
-   104,-32768,-32768,-32768,  1294,  1299,  1300,  1303,-32768,  9558,
- 11515,-32768,   559,-32768,-32768,-32768,-32768,   104,  1304,  5387,
-  5387,  1057,  6024,-32768,-32768,-32768,-32768,  1286,-32768,  1835,
--32768,-32768,-32768,-32768,-32768,-32768,   697,   697,   969,  1323,
-  1324,  6698,-32768,-32768,-32768,-32768,  1357, 11515,  1369,  1379,
-  1408,  2106,  2120,-32768,   969,-32768,-32768,  1341,-32768,-32768,
-   960,   878,-32768,   889,   960, 11242,   906,   300,-32768,-32768,
--32768,-32768,-32768,-32768,   441,-32768,-32768,   104,   104,-32768,
--32768,-32768, 11515, 11515,  7646,   495,   495,-32768,-32768,-32768,
-  6180,-32768,-32768,   104,   104,-32768,-32768,-32768,-32768,-32768,
-  1354,-32768,-32768,-32768,  6274,  6274,  5993,  1348,  1375,-32768,
--32768,-32768, 11424,-32768,-32768,-32768,  1454, 10600,  5587, 11424,
- 11515,-32768, 10412,-32768,  1414,-32768,-32768,  1421,-32768,  1408,
-  2106,-32768,-32768,   726,-32768,-32768, 11971, 11971,  9467,-32768,
--32768,   969,-32768,-32768,  7646,  7646,-32768,  1267,  1267,-32768,
- 10104,-32768,-32768,-32768,-32768,-32768,  1348,  7731,-32768,-32768,
-  1371,   432,  7613,   969, 10506,-32768,-32768,   103,-32768,-32768,
-  1416,  1377, 12410, 10412,-32768,-32768,-32768,-32768,  1286,   108,
--32768,-32768,-32768,-32768,-32768,  1376, 12343,  1400,  1391,  1392,
-   969,-32768,   960,-32768,-32768,-32768,-32768,   708,-32768,  9740,
--32768,-32768,-32768,-32768,  1286,  1491,  1443,-32768,-32768,-32768,
-   431,   368,-32768,-32768,-32768,   495,   103,-32768, 11515,  1444,
--32768,  1452,-32768,   969, 10412,  1428,   145,  1463,-32768,-32768,
-   154,-32768,  1461,-32768,  1424,-32768,-32768,-32768,-32768, 11515,
-  1491,  1470,  1491,-32768,   133,-32768,-32768,-32768,  9831,  1429,
-   201,-32768,-32768,-32768,  9558,  1431,-32768,  1525,  1490,-32768,
--32768,-32768,   329,-32768, 10506,  1535,  1492,-32768,-32768,-32768,
-  1556,  1557,-32768
+-32768,-32768,   629,-32768,-32768,   831,  2404,   182,-32768,-32768,
+   690,-32768,-32768, 11560, 11651, 11742, 11742,   701,-32768,-32768,
+-32768,-32768,-32768,   722,   678,   745,   755,   767,   943,   446,
+ 11013,  1764, 11742,-32768,-32768, 11742,-32768,-32768, 11742,  8412,
+-32768, 11742,   543,   800,-32768, 11742,-32768, 11104,-32768, 12433,
+   369,  1553,  2934, 11195,-32768,   853,  3244,-32768,  1595,  4989,
+  5987,-32768,   410,-32768,  1793,  2656,   543,   543, 10831, 11976,
+   535,-32768,  1764,-32768,-32768,   778,   815, 12340,   781,   786,
+   805,  1400,   529,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,   457,   418,   756,  1764,   771,   496,   803,   507,-32768,
+   860,-32768,   868,    64,   151,-32768,-32768,-32768,-32768,-32768,
+-32768,  6108,-32768,  5451,  2178,  1839,-32768,   543,   577,-32768,
+-32768,   812,-32768,   859,   872,-32768,-32768,-32768,  4022,-32768,
+-32768,  4022,-32768,   820,-32768,-32768,-32768,   633,   633,   633,
+-32768,-32768,-32768,  6066,    72,   841,   849,-32768,-32768,-32768,
+-32768, 11976,-32768,  1018,  1020,-32768,-32768,   615,-32768,   445,
+-32768,-32768,-32768,-32768,   114,-32768,-32768,-32768,-32768,  8964,
+ 11013,-32768,-32768,-32768, 11013,   854,-32768,  7021,   112, 12196,
+  6441,-32768,-32768,  6441,-32768,  7262,  7262, 12176, 12237,   879,
+-32768,   445,  5451,-32768,   873,-32768,-32768, 12094,  2762,  2560,
+  5451,-32768,   445,-32768,-32768,   445,  2762,-32768,   982,-32768,
+ 10831,   621,-32768,-32768,  1288,-32768,  1189,  4503,   831,   445,
+-32768,-32768,   951,   954,   959,   958,-32768,-32768,-32768,-32768,
+  1007,-32768,   420,   883,   926,-32768,-32768,   831,-32768,-32768,
+   896,-32768,-32768, 10831, 11013,   690,  8412,-32768,   423,  8412,
+-32768,-32768,-32768, 11013, 10922,  3179,  3179,  3179,  3179, 12411,
+-32768,-32768,-32768,-32768,   932, 11287, 11287,  8412,   941,    61,
+   946,   988,   950,-32768,-32768,-32768,-32768, 10831,-32768,  8503,
+  8412,-32768, 11013, 11013,  9055, 11013, 11013, 11013, 11013, 11013,
+ 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013,
+ 11013, 11013, 11013, 11013,-32768, 11013,-32768,-32768,-32768,-32768,
+-32768, 11013, 11013,-32768,-32768,  3082,   337,   833,  9601,-32768,
+-32768,-32768,  1013,  1480,  1078,   444,   520,   563,  1860,  1154,
+-32768,  1421,  1421,  5141,   962,   999,  1046,-32768,-32768,   600,
+ 10099,  1711,-32768,   939,   795,-32768,-32768, 11013,-32768,-32768,
+-32768,-32768,-32768,   264,   419,-32768,-32768,   543,-32768,  5451,
+  2853,-32768,-32768,  1031,-32768,   995,  1047,-32768,   535,   803,
+-32768,  9328,  9419,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   103,-32768,  1016,  1005,   529,   868,  1068, 10831,-32768,  1067,
+-32768,-32768,   518,  1319,  1095,   273,  1071,  1091,-32768,-32768,
+  2743, 12021,  2743,  3527,  1626, 11811,-32768,  1098,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,  1036,  1057,-32768,  1105,
+-32768,-32768,   315,-32768,-32768,-32768,-32768,    96,   331,  1104,
+   988,-32768,-32768,-32768,-32768,  8318, 12411,-32768,   815,  1063,
+ 12340,-32768,-32768,  1064,-32768,  1069,   170,  4146,  1072,-32768,
+   189, 11871,  1116,  1120,   575,-32768,-32768,-32768,-32768,  6441,
+  6441, 12135, 12135, 12237,   939,-32768,-32768, 12094,-32768,  1122,
+-32768,-32768,  1058,   112,-32768,  2762,-32768,-32768,   445,  1113,
+-32768,   418,   756,-32768,-32768,   507,  1130,-32768,-32768,   321,
+-32768,-32768,  1979,-32768,  1197,   501,-32768, 11013,  5403,-32768,
+  5403,    99,    99,   336,   583,  2287,  7135,    53,  5058,-32768,
+   186,    99,-32768,   112,  6496, 10831, 10831,-32768, 10831,   112,
+  6496,-32768,-32768,-32768,-32768,-32768,-32768,   967,   967,   967,
+   543,  1090,  1092, 10467,  1046,  1102, 12366,  1107,  1108,  1137,
+  5728,  1141,  1143,  1150,-32768,  1121,-32768,-32768,  1123,-32768,
+-32768,  1167,   406,   634,    77,   567, 11013,  1169,-32768,  1146,
+  1126, 12411, 12411,-32768,-32768,  1175, 12451,  7304,  8078,  4526,
+  4063,  3194,  4207,  2423,  2423,  2423,  2363,  2363,  1527,  1527,
+   915,   915,   915,-32768,-32768,  1131,  1132,  1139, 11013, 10922,
+-32768,   337,-32768,  8964, 11013,-32768,-32768,-32768, 11013,-32768,
+-32768,  1149, 11742,  1140,  1164,  1181,  1218,-32768, 11013,-32768,
+ 11013,-32768, 11013,   389,  2977,-32768,-32768,  2977,-32768,   115,
+   389,  1159,  1162,-32768,  1163,  3179,   112,-32768,   112,  3446,
+-32768,  6496,  1165, 10283, 10283,  5878,  1171, 11104,  1177,  2159,
+  4339,  2656,   978,  1187,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768, 11013,-32768,  1764,-32768,  1180,-32768, 12411,-32768, 12411,
+  1400,  1190, 11378,-32768,  1188,  1212,-32768,   543,-32768,-32768,
+-32768,-32768,-32768,  1749,  6108,-32768,  3179, 10831,  1883,  1883,
+  4805,-32768,-32768,-32768,-32768,  3323,-32768,-32768,-32768,  1070,
+ 11013,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   315,-32768,   457,-32768,   771,   496, 11013,  1239,-32768,   593,
+   612,   622,   988,-32768,    84,-32768,   123,-32768,-32768,-32768,
+-32768,-32768,-32768, 10191,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,  1120,  1236,-32768,-32768,-32768,  3179,  1948,  1948,  2223,
+-32768,-32768,-32768,  1240,-32768,-32768,-32768,-32768,-32768,-32768,
+  1470,-32768,  6496, 12411,-32768,  3756,-32768,   445,   445,-32768,
+-32768,-32768,-32768,-32768,  6496,   553,   658, 11013,   982,-32768,
+  1248,-32768,-32768,-32768,   195,   640,  1656,  1154,   657,    99,
+  1252,-32768,   723,  1251,   445,  6586,-32768,-32768,-32768,   445,
+-32768,  1207,   543,   543,   543,-32768,  1213,   112,  6496,   112,
+  6496,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  3179,-32768,
+-32768,  1232,  1238,  1250,  1254,  1036,-32768, 12274,  8964,  8597,
+  1224,-32768, 11013,-32768,-32768,-32768,  1241,  1244,  1245,  3179,
+-32768,-32768,  1246,   355,   653,   653,  1255,   653,-32768,-32768,
+ 11742,  1347, 10831,-32768,  1257,  1262,  1267,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   112,  1274,-32768,  1270,
+  2159,-32768,-32768,  2048,  2048,  6891,  4726,-32768,-32768,-32768,
+-32768,-32768, 12411,-32768,-32768,-32768,-32768,   207,  1276,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,  3303,  2078,  2078,  2304,
+  2304,  4805,  3372,   166,  3323,-32768,  2674, 12433,-32768,-32768,
+-32768,  1282,-32768,   331,-32768, 11013,-32768, 11013,-32768, 11013,
+-32768,  1764,-32768,-32768,  8167,  1329,-32768,  8688,-32768, 10375,
+ 10375,  7983,   297,  1284,   320,-32768,  8964,  8779,-32768,-32768,
+   223,  2550,  2550,  1093,  1093,  8964,-32768,-32768,  1189,-32768,
+-32768,-32768,   112,  1285,-32768,  1298,  1298,   112,  1287, 11013,
+ 11013,  8214,   445,  6285,   445,   445,  1012,   445,  6486,-32768,
+-32768,  7823,  1298,-32768,-32768,  1343,-32768,-32768,-32768,  1293,
+-32768,  1294,  1307, 11013, 11013, 11013, 11013,  8964,-32768,  1353,
+-32768,-32768, 12411,-32768,-32768,-32768,   541,  1245,-32768,-32768,
+-32768,-32768,-32768,-32768,  1306,-32768,  1372,   543,-32768,-32768,
+-32768,   112,-32768,-32768,-32768,-32768,-32768, 11013,-32768,-32768,
+  3372,  2078,  2078,  3076,  3076,  7405,-32768,   348,  2674,-32768,
+-32768,  1313,  1321,  1324,  1338,-32768,  1061,   235,  1373,   696,
+   766,-32768,-32768,-32768,-32768,-32768, 11013,  1380,  1374,  1386,
+ 10558,   522,  1764,   904,   686,-32768,-32768, 10649,  1436,-32768,
+-32768,-32768,  1387,-32768,  7486, 11916,  5255,  6192,-32768,-32768,
+  1434,-32768,-32768,-32768,  9710,-32768,-32768,  1345,   424,-32768,
+-32768,-32768,-32768,  3179,-32768,-32768,  8964,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,  8214,  8214,-32768,  1298,   734,   824,
+ 11013,-32768,-32768,-32768,   982,   982,  1298,  1298,  1007,  1298,
+-32768,-32768,-32768,   112,   112,-32768,-32768,-32768,  1348,  1351,
+  1352,  1354,-32768,  8964, 11013,-32768,   541,-32768,-32768,-32768,
+-32768,   112,  1357,  4445,  4445,   939,  6713,-32768,-32768,-32768,
+-32768,  1338,-32768,  1764,-32768,-32768,-32768,-32768,-32768,-32768,
+   679,   679,   988,  1358,  1402,  7870,-32768,-32768,-32768,-32768,
+  1416, 11013,  1435,  1439,  1445,  1992,  2096,-32768,   988,-32768,
+-32768,  1408,-32768,-32768,   982,  1065,-32768,  1079,   982, 10740,
+  1094,   263,-32768,-32768,-32768,-32768,-32768,-32768,   426,-32768,
+-32768,   112,   112,-32768,-32768,-32768, 11013, 11013,  8214,   445,
+   445,-32768,-32768,-32768,  5606,-32768,-32768,   112,   112,-32768,
+-32768,-32768,-32768,-32768,  1394,-32768,-32768,-32768,  7452,  7452,
+ 12076,  2017,  1414,-32768,-32768,-32768, 10922,-32768,-32768,-32768,
+  1494, 10006,  7612, 10922, 11013,-32768,  9818,-32768,  1451,-32768,
+-32768,  1461,-32768,  1445,  1992,-32768,-32768,   615,-32768,-32768,
+ 11469, 11469,  8873,-32768,-32768,   988,-32768,-32768,  8214,  8214,
+-32768,  1298,  1298,-32768,  9510,-32768,-32768,-32768,-32768,-32768,
+  2017, 12279,-32768,-32768,  1409,   220,  5451,   988,  9912,-32768,
+-32768,    84,-32768,-32768,  1457,  1412, 12389,  9818,-32768,-32768,
+-32768,-32768,  1338,    95,-32768,-32768,-32768,-32768,-32768,  1424,
+ 12296,  1426,  1422,  1425,   988,-32768,   982,-32768,-32768,-32768,
+-32768,   688,-32768,  9146,-32768,-32768,-32768,-32768,  1338,  1523,
+  1478,-32768,-32768,-32768,   357,   315,-32768,-32768,-32768,   445,
+    84,-32768, 11013,  1485,-32768,  1488,-32768,   988,  9818,  1448,
+   680,  1490,-32768,-32768,   122,-32768,  1487,-32768,  1450,-32768,
+-32768,-32768,-32768, 11013,  1523,  1492,  1523,-32768,   114,-32768,
+-32768,-32768,  9237,  1452,   683,-32768,-32768,-32768,  8964,  1453,
+-32768,  1545,  1498,-32768,-32768,-32768,   224,-32768,  9912,  1554,
+  1505,-32768,-32768,-32768,  1567,  1569,-32768
 };
 
 static const short yypgoto[] = {-32768,
-  1558,-32768,  -317,  1389,  -391,    -1,     2,  1561,-32768,  1530,
--32768,-32768,   409,-32768,   424,-32768,   487,-32768,   107,   893,
-    55,    10,-32768,-32768,  -625,-32768,-32768,   613,    65,  1399,
-  1146,  1425,  -704,   -20,  -167,    12,    51,-32768,-32768,-32768,
--32768,-32768,   795,-32768,-32768,-32768,-32768,-32768,-32768,   399,
-   337,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,  1506,  -491,  7450,  1368,   -59,  -578,  -314,   215,
-  1468,  -522,-32768,   864,-32768,   176,-32768, -1402,-32768, -1431,
-   -57,-32768,  2609,  1190,  -240,   330,  -545,-32768,  -861,  6999,
-  -296,  2057,  5377,  1311,  -327,   -48,   -67,  1918,  -138,   -55,
-   241,-32768,-32768,-32768,  -336,-32768,  -159,-32768,-32768, -1264,
-   -51,  -342,  4047,    70,  1980,  -127,    15,   252,  -196,    -4,
-   -13,  -160,  -164,    31,    41,   -96,-32768,  -234,-32768,-32768,
--32768,-32768,-32768,   419,  1544,  1028,-32768,   663,-32768,-32768,
-  -978,  -332,   896,-32768,-32768,-32768,-32768,-32768,   254,-32768,
--32768,-32768,-32768,-32768,-32768,   961,  -374,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  1378,-32768,   390,   576,-32768,-32768,
--32768,   547,  -729,-32768,-32768,-32768,-32768,-32768,-32768,   828,
--32768,   375,   973,-32768,   688,  1029,  4499,    79,    36,  -450,
-  1436,  1803,   135,-32768,  -481,-32768,     9,  1617,    20,   -91,
-   673,   -87,  5957,  1291,-32768,  6634,  3177,  1757,   -22,  -109,
--32768,  1515,   -52,-32768,  6329,  4146,  -423,-32768,  2481,   640,
--32768,-32768,   289,-32768,-32768,   434,     1,  -379,-32768,-32768,
--32768,-32768, -1422,-32768, -1253, -1439,-32768,-32768,-32768,-32768,
+  1573,-32768,  -309,  1406,  -341,    58,     9,  1576,-32768,  1544,
+-32768,-32768,   275,-32768,   417,-32768,   453,-32768,   133,   905,
+    43,    10,-32768,-32768,  -660,-32768,-32768,   618,    52,  1417,
+  1145,  1420,  -709,   -16,  -166,    33,   -31,-32768,-32768,-32768,
+-32768,-32768,   796,-32768,-32768,-32768,-32768,-32768,-32768,   398,
+    47,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,  1501,  -661,  7190,  1364,     7,  -590,  -307,    76,
+  1465,  -534,-32768,   662,-32768,   164,-32768, -1398,-32768, -1444,
+   -45,-32768,  2026,  1438,  -284,   338,  -556,-32768,  -850,  6665,
+    31,  1955,  4797,  1322,  -331,   -60,   -97,  2135,  -117,   -74,
+   528,-32768,-32768,-32768,  -332,-32768,  -160,-32768,-32768, -1267,
+   -51,  -334,  6208,   107,  1546,  -142,    23,   342,  -207,    -4,
+  -188,  -172,  -167,   -19,   -13,   -91,-32768,  -202,-32768,-32768,
+-32768,-32768,-32768,  -140,  1273,   830,-32768,   671,-32768,-32768,
+  -972,  -266,   898,-32768,-32768,-32768,-32768,-32768,     1,-32768,
+-32768,-32768,-32768,-32768,-32768,   968,  -380,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,  1390,-32768,   407,   608,-32768,-32768,
+-32768,   578,  -743,-32768,-32768,-32768,-32768,-32768,-32768,   867,
+-32768,   422,   992,-32768,   712,  1066,  2660,   106,    36,  -470,
+  1467,  2911,  1464,-32768,  -488,-32768,    14,  1644,   142,   -68,
+   613,   -79,  5336,  1323,-32768,  6215,  2861,  1736,   -18,  -114,
+-32768,  1549,   -58,-32768,  5701,  3829,  -196,-32768,  2335,  1088,
+-32768,-32768,   339,-32768,-32768,   463,    54,  -448,-32768,-32768,
+-32768,-32768, -1402,-32768, -1276, -1434,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-    16,-32768,-32768,-32768,-32768,-32768,    71, -1347,-32768,-32768,
-   -45,-32768,-32768,-32768,-32768, -1426,     8,-32768,    14,-32768,
-  -683,  -436,   636,-32768,-32768,-32768,-32768,  -397,-32768,  -393,
-  -142,-32768,  1084,   284,-32768,    34,-32768,  -209
+    66,-32768,-32768,-32768,-32768,-32768,   121, -1348,-32768,-32768,
+   -37,-32768,-32768,-32768,-32768, -1436,    69,-32768,    59,-32768,
+  -713,  -372,   684,-32768,-32768,-32768,-32768,  -392,-32768,  -384,
+  -184,-32768,  1556,   347,-32768,   -63,-32768,  -234
 };
 
 
-#define        YYLAST          12517
+#define        YYLAST          12536
 
 
 static const short yytable[] = {    59,
-   122,   435,    35,   196,   697,    36,   443,   632,   698,   542,
-   543,   445,   490,    42,   444,  1004,   392,   432,    57,   642,
-   253,  1123,   103,    76,   256,   782,   552,   695,   641,   553,
-    59,   740,   554,    35,   763,   564,    36,    59,   298,   569,
-   169,   516,   646,   647,    42,   842,   400,   610,   713,    57,
-   509,    42,   209,   174,    76,   674,   176,   420,   423,   881,
-  1047,    76,  1049,   538,   541,   398,   399,   247,   937,   980,
-  1079,   391,   177,    55,   201,   724,   213,  1456,  1567,   296,
-  1510,   489,    72,   350,   397,   350,   182,   350,   256,   190,
-   497,   260,  1571,   703,   704,   611,   170,   572,  1471,   528,
-   507,   611,   350,   350,    55,  1474,   171,   208,   141,   146,
-  1012,   175,   519,    72,   364,   452,   249,  1572,   611,  1581,
-    72,   595,  1084,   196,   987,  1597,  1210,   728,  1089,  1076,
-   163,   406,   350,   721,   350,  1204,  1599,    89,    -1,   952,
-   309,  1594,    -2,    91,   138,  -141,   645,   256,   621,    88,
-   405,  -142,  -144,   528,  1644,   407,    26,    90,  1013,   410,
-    59,  1014,   297,    92,    59,   745,   596,   169,   467,   164,
-  1606,   209,  -602,  -357,   916,  1211,   440,   453,    42,    57,
-   174,  -296,   840,   176,    76,  1634,   403,   953,    76,   199,
-   190,   722,   710,   825,   201,   213,   826,  1623,   993,   177,
-  1077,  1638,   523,   495,   498,   404,   841,  1641,  1284,   454,
-   986,  1205,  -357,   468,    72,  1607,   453,  -602,  -602,  1017,
-    86,   517,  1656,   170,    89,  1597,   208,   419,   422,   994,
-   772,   773,  -602,   171,    55,   190,   240,  1002,   175,  1150,
-   241,   201,    15,    72,    90,    93,  -416,    72,   454,   127,
-   128,  1080,  1642,   493,  1569,    58,   260,  1510,   768,   552,
-   553,  1377,  1378,  1658,   107,  1302,   518,  1018,    87,  1575,
-  1019,   471,   474,   155,   995,   804,  -416,  1052,  1399,   617,
-  -416,    26,   595,   996,   997,  -303,    58,    94,   718,     8,
-   521,   108,   247,    58,   565,   178,   566,   608,   616,  1081,
-    26,  1368,   130,   131,   357,   682,   358,   642,  1659,   199,
-   965,  1053,   221,  1303,  -579,  1054,   529,  -579,   637,   998,
-  1604,   966,   991,   992,  -416,   350,   530,   596,  1432,   109,
-  -303,  -303,   677,   938,   363,   295,  1122,   967,   296,  1175,
-   432,  1005,   130,   131,   697,  -296,   247,  1055,  1023,  1369,
-   101,   408,   700,   919,   350,   651,   199,   956,   115,   135,
-  1432,  1238,   766,   638,   260,  -579,   522,  -579,  -579,   740,
-  -579,  1639,  1041,  1243,   405,   740,  1433,   127,   128,   652,
-  -583,  -579,   519,  -579,   420,   423,   761,    58,  1666,   155,
-   155,   155,   593,   594,   767,   632,  -583,   694,  -579,  -579,
-   209,   233,   137,  1042,   516,  1482,  -627,  1264,  1541,  1266,
-   649,   685,    38,  -579,  1488,  1489,    58,  1490,   161,  1412,
-    58,   297,   178,   201,   815,  -583,   189,    39,    26,   650,
-   130,   131,   162,   621,  1012,   155,  1667,    59,    72,   215,
-   216,  -583,   485,    38,   888,    14,  1178,  1161,   796,   899,
-  1164,  -627,  -627,   715,   889,   183,   176,  1230,    39,  -601,
-   388,    76,   221,   738,     8,     9,  -627,   890,    20,   816,
-   221,   221,   177,  1152,   179,   495,   498,    23,   825,   621,
-   696,    91,  1013,   495,   416,  1014,   740,  -831,  -305,   410,
-    40,   188,  1191,  1192,   900,   498,   350,   568,   222,   223,
-   221,    92,   201,    59,  -601,  -601,   790,  1097,    89,   363,
-   201,   175,   901,   565,   498,   566,  1245,   130,   131,  -601,
-    72,    40,   798,   187,   825,    18,  1079,   803,    90,   350,
-   138,   903,   350,  -305,  -305,   350,     8,     9,   199,   769,
-   350,   832,   832,   832,   832,   990,   696,   377,  -299,   221,
-   139,  1502,  1124,   350,   750,   751,   243,   902,   793,  -143,
-   608,   782,   459,   350,   884,   245,   350,    90,   697,  1584,
-  1585,   137,   698,   648,   502,   504,   904,   797,  -366,   460,
-    15,   885,     7,   127,   128,    10,    72,   514,   682,   130,
-   131,   695,   127,   128,   295,   962,   642,  1132,   940,   299,
-   449,   296,   378,   221,   747,   641,   884,   461,   740,   886,
-    18,    58,  -366,   747,   138,   961,  -366,   199,   922,   694,
-   740,    21,    92,   885,  1203,   199,   738,   362,   552,   553,
-  1027,  1037,  1056,  1039,    26,   528,    27,    28,  1043,   973,
-   511,   978,   979,   260,  1174,   130,   131,    91,  -366,  1197,
-   149,   886,  1411,   693,   740,   372,   740,   376,   551,   221,
-   150,   122,  1199,   923,   924,   380,   129,    92,    32,   201,
-  1300,  1301,   151,   350,   392,  1028,    26,  1057,   379,  1451,
-  1289,   127,   128,   374,   297,   512,   979,   209,   572,   375,
-  -367,   247,    15,    58,  1198,   178,  1003,   381,   137,   660,
-   906,   909,   696,  1285,  1286,   158,  1288,  1200,   670,   696,
-   201,   976,   201,   201,  1002,   770,   155,   155,   155,   693,
-   401,   660,   189,   645,  -367,  -296,   363,  1244,  -367,  -120,
-   796,    15,   796,   425,   130,   131,   303,   694,   796,    88,
-   796,  1201,   221,   221,  1512,  1062,   813,    -7,   822,  1044,
-   221,   782,   495,    91,  1454,  1618,    91,   201,   522,    58,
-  -367,  1021,   221,  -120,   433,  1483,   137,  -120,   222,   446,
-  1259,  1260,  1261,    92,   483,   484,    92,    88,  1273,  1275,
-   164,   221,  -622,   826,   199,    59,  1202,    59,   790,  1513,
-   790,   814,   432,   209,  1045,    59,   491,   492,   790,  -120,
-  1619,   694,   350,   350,   798,   350,   798,   694,   447,   803,
-   448,   803,   127,   128,   798,   451,  1068,  1075,    89,   803,
-   696,   158,   158,   158,  1193,   199,  1435,   199,   199,    91,
-  1029,  1030,   463,  1050,  1051,   464,  1290,  1436,    90,    18,
-   793,   771,   793,  1082,   501,   215,   216,  1061,  1071,    92,
-   793,    14,  1094,  1095,  1096,   524,   621,   295,   525,   797,
-    15,  1048,   526,    26,  -416,   130,   131,   158,    72,   797,
-    72,   527,   199,   535,    20,   693,   350,  1275,    72,   622,
-    89,  1126,   693,    23,   696,   544,  1364,  1366,  1484,   623,
-   696,   545,   959,  -416,  -416,  1370,   546,  1233,  1234,  1235,
-    90,   624,   625,   547,   221,   548,   849,   549,  -118,  -183,
-    15,   568,   832,   483,   716,   552,   553,   611,   694,   491,
-   717,   256,   738,   661,   137,  -183,  1645,  -183,    95,    96,
-    97,  1067,   225,   226,   227,  1430,  1431,   483,  1535,  1409,
-   662,   260,  -118,    95,   110,   111,  -118,   221,   491,  1536,
-   897,   664,   116,   117,   118,   665,    18,    95,   110,   111,
-   666,   694,   228,   832,   350,   483,  1540,   694,   678,   679,
-   366,   370,    90,    92,   707,   685,    -6,  1416,  -118,   711,
-    26,   757,    98,    99,   229,   733,    15,   762,   629,   633,
-   636,   221,   807,   693,   808,   810,  1062,   112,   113,   809,
-   653,   696,   817,   906,   909,   696,   119,   120,   826,   253,
-   738,   112,   113,   256,   432,   818,   836,   838,   796,   221,
-   964,  1085,  1086,   832,  1087,   127,   128,   722,   230,   231,
-   232,   981,   839,   350,   841,  1448,   896,   898,  1477,   915,
-   694,    58,   919,    58,   696,   564,   432,   943,  1180,  1181,
-   696,    58,   694,   -52,   917,   944,   945,   693,   -52,  1516,
-     8,     9,   849,   693,   954,   127,   128,  1068,   501,   -52,
-   363,   955,   958,    59,   960,  1533,   790,  1500,   130,   131,
-     8,     9,    20,   968,   969,   221,   694,   982,   694,   224,
-   420,   423,   798,   696,  -299,   988,   832,   803,  1061,   989,
-   597,  1247,   252,   453,  -830,   363,  1009,  1249,  1250,   621,
-  1010,  1247,  1252,   130,   131,  1250,    26,   832,   130,   131,
-   420,   423,  1011,   696,  1016,   363,  1033,  1025,   793,  1032,
-   350,   256,   622,   130,   131,   696,  1036,   252,  1040,   598,
-   599,  1038,   623,   600,   601,   602,   603,   797,   158,   158,
-   158,  1098,  1099,   694,   624,   625,    72,   522,  1100,  1102,
-   697,    15,  1516,  1103,  1590,  -416,   432,   224,  1104,   696,
-  1105,   696,  1106,  1003,   693,   127,  1395,  1107,   693,   694,
-  1108,  1109,  1067,   224,  1516,  1464,  -140,  1035,  1462,  1111,
-  1467,   523,  1112,   559,  -416,  -416,   796,  1114,   410,  -416,
-  1115,  1116,  1351,   300,  1131,  1342,    10,  1117,  1343,   738,
-  1134,  1615,   155,  1118,    95,   414,   415,   693,  1133,   826,
-   363,  1350,  1135,   693,   300,   394,   395,    10,   130,   131,
-  1136,    18,  1143,  1144,   906,   909,   696,  1154,  1145,   224,
-   552,   553,    21,  1196,  1516,  1167,  1151,   224,  1155,  1160,
-  1169,    59,   522,  1172,   790,   155,  1173,   426,   427,  1219,
-  1306,  1307,   696,    21,   224,   724,   693,  1392,    98,   113,
-   798,   428,  1392,   127,   128,   803,    26,  1229,    27,   320,
-  1248,   429,  1253,  1258,  1262,    72,  1254,  1276,   670,    32,
-  1306,  1307,   696,   430,  1268,  1269,   693,  1461,  1270,  1461,
-  1271,   964,  1029,  1030,  1279,   694,   793,  1278,   693,  1291,
-    32,  1280,  1283,   747,   129,  1204,  1293,  1287,  1294,   747,
-  1299,  1295,  1660,  1298,    26,   797,   130,   131,   732,    58,
-   975,   460,   629,   633,    72,   636,  1304,  1351,   127,   128,
-  1342,  1314,   693,  1363,   693,   209,  1372,  1351,  1373,  1292,
-  1342,     8,     9,  1343,  1351,  1376,  1350,  1342,  1380,  -664,
-  1343,   747,  1402,   832,  1403,   528,  1350,  1404,   201,  1465,
-   201,  1410,  1414,  1350,  1580,  1415,  1424,   633,    18,  1425,
-  1426,  1427,  1391,  1434,  1443,  1444,  1420,  1421,   696,    26,
-  1445,   130,   131,  1457,  1459,   621,   127,   128,  1472,  1475,
-   559,  1496,    26,   559,   130,   131,  1497,  1498,   829,   693,
-  1499,  1504,   214,   215,   216,  1519,  1520,  1524,  1505,    14,
-    72,   559,   155,   155,   155,    95,   110,   111,  1506,  1526,
-    72,  1486,  1487,  1534,   559,   693,    18,    72,   856,   747,
-  1507,   625,    20,   375,  1632,   420,   423,    26,  1274,   130,
-   131,    23,   155,   155,   155,    95,   110,   111,    58,   667,
-   668,   669,  1527,   888,  1556,   693,   879,  1558,  1240,  1241,
-  1566,   633,   895,   889,  1576,  1577,  1601,   224,  1592,   112,
-   113,   114,  1608,   199,  1602,   199,   890,    95,    96,    97,
-   590,   591,   592,   593,   594,  1255,  1610,   224,  1613,  1614,
-  1257,  1626,   694,  1630,  1636,   493,   224,    58,  1562,   112,
-   113,  1593,  1637,  1351,  1351,  1562,  1342,  1342,  1351,  1343,
-  1640,  1342,  1643,   224,  1343,  1647,   300,   394,   395,    10,
-  1652,  1648,  1350,  1350,   350,  1662,  1657,  1350,  1661,    26,
-  1320,    98,    99,   100,  1140,  1669,  1274,   494,   215,   216,
-  1664,  1140,  1670,   694,    14,  1672,  1673,     1,   442,  1531,
-  1351,   693,     5,  1342,   160,    21,  1343,   441,   957,  1351,
-  1140,    18,  1342,   140,   140,  1343,   156,    20,  1176,  1350,
-    27,   320,   201,  1420,  1421,   696,    23,   714,  1350,   439,
-  1631,   297,  1072,    58,  1315,  1562,    72,    72,   297,   360,
-   212,    72,   220,    58,   221,   503,   409,  1668,   237,   534,
-    58,  1413,    32,  1515,  1168,   750,   751,   946,  1236,   506,
-  1351,  1008,  1374,  1342,  1256,  1074,  1343,  1397,   382,   383,
-   384,   947,  1166,  1616,   883,   486,   696,   618,   390,  1350,
-  1470,  1360,   747,    72,   158,  1654,  1646,   147,  1651,  1605,
-   730,  1476,    72,   116,   117,   118,  1653,   736,  1218,     0,
-  1351,     0,     0,  1342,  1383,  1384,  1343,  1393,  1394,     0,
-  1396,     0,  1449,  1450,   385,     0,     8,     9,   297,  1350,
-    12,    13,   386,   387,   140,     0,    14,   158,     0,   140,
-     0,   747,   156,   156,   156,     0,     0,   199,     0,     0,
-    16,     0,    17,    72,     0,    26,   155,   119,   120,    20,
-     0,     0,     0,    95,    96,    97,     0,     0,    23,   212,
-     0,   116,   772,   773,   823,   450,     0,    26,     0,   130,
-   131,   604,     0,     0,     0,     0,   470,   470,   479,     0,
-    95,    96,    97,    72,     0,     0,     0,     0,   775,   382,
-   383,   384,   220,  1129,     8,     9,     0,   411,   693,   246,
-   496,   220,   413,     0,   295,   605,  1511,    98,    99,    58,
-    58,   295,     0,    26,    58,   119,   120,   155,   155,   155,
-     0,    18,     0,     0,     0,   877,   363,     0,  1529,  1532,
-   559,   878,  1140,     0,    98,    99,     0,     0,     0,  1480,
-  1481,    26,   140,   386,   387,    26,     0,   130,   131,   693,
-   147,     0,     0,     0,     0,   221,    58,     0,  1140,     0,
-     0,  1224,     0,     0,  1140,    58,     0,   935,     0,  -305,
-     0,  1225,     0,     0,     0,     0,   258,    95,   110,   111,
-     0,     0,     0,  1226,  -305,     8,     9,  1034,  -305,     0,
-   519,   295,     0,     0,   158,   158,   158,     0,     0,     0,
-   258,     0,     0,     0,     0,  -305,     0,  1578,     0,   116,
-   772,   773,    18,   156,     0,   520,    58,  -305,  -305,     0,
-  -305,     0,  -305,     0,   158,   158,   158,     0,  1083,   258,
-     0,   112,   113,     0,  1088,     0,    26,     0,   130,   131,
-   258,  1231,     0,  1547,  1548,  1549,     7,     8,   250,    10,
-  -305,  -305,  1224,    95,   110,   111,    58,   225,   226,   227,
-     0,     0,  1225,   119,   120,  -305,     0,    95,   110,   111,
-   513,     0,   224,     0,  1226,   127,   128,     0,     0,   224,
-   519,    18,     0,     0,  1140,    21,     0,   228,   212,   220,
-   153,     0,   251,     0,     0,     0,     0,     0,   224,   258,
-    27,    28,   140,  1582,  1583,   140,    21,   112,   113,     0,
-     0,   156,   156,   156,     0,     0,     0,   140,     0,     0,
-     0,   112,   113,     0,   252,     0,    26,     0,   130,   131,
-     0,     0,    32,     0,   258,   472,   475,     0,     0,     0,
-     0,  1146,   529,  1147,     0,     0,     7,     8,     9,    10,
-     0,     0,   530,     0,   470,     0,     0,   470,   258,   479,
-   479,   479,     0,     0,     0,   450,     0,   300,   127,   128,
-    10,   470,   496,   220,  1633,   705,   450,     0,   706,     0,
-   496,     0,     0,     0,     0,    21,     0,     0,     0,     0,
-   709,   621,     0,   450,     0,    18,     0,     0,    26,     0,
-    27,    28,     0,     0,     0,     0,    21,   421,   424,  1119,
-  1120,     0,   621,     0,   970,  1125,     0,   559,     0,    26,
-   156,    27,   320,   156,   971,     0,     0,   411,     0,  1137,
-   413,  1138,    32,  1139,     0,  1156,   972,   625,     0,   156,
-   156,   156,     8,     9,   520,  1157,     0,    13,    95,   110,
-   111,   258,   153,    32,   156,     0,     0,  1158,   625,     0,
-     0,     0,    95,   110,   111,     0,     0,     0,     0,    18,
-     0,  1405,  1406,  1407,  1408,     0,     0,     0,   158,     0,
-     0,     0,     0,  1171,   340,     0,   340,  1140,   340,   639,
-     8,     9,    10,    26,     0,   130,   131,     0,     0,     0,
-     0,     0,   112,  1528,     0,   905,   905,   912,   258,  1224,
-     0,     0,     0,  1263,   931,  1265,   112,  1530,     0,  1225,
-   224,     0,     0,     0,     0,   309,   640,  1194,    21,     0,
-     0,  1226,     0,   340,   220,   340,  1140,     0,  1447,     0,
-     0,    26,     0,   130,   131,     0,   224,     0,     0,   158,
-   158,   158,   224,     0,     7,     8,     9,    10,   167,    12,
-    13,     0,     0,   735,     0,    14,   214,   215,   216,     0,
-     0,     0,  1297,    14,     0,   212,     0,   220,   237,    16,
-     0,    17,    18,     0,     0,     0,     0,   561,    20,     0,
-    18,     0,     0,    21,   224,     0,    20,    23,     0,   621,
-     0,   258,   127,   128,     0,    23,    26,    13,    27,    28,
-     0,     0,     0,   748,  1501,     0,   749,     0,   472,   475,
-   701,   220,  1182,     0,   214,   215,   216,   258,     0,    18,
-   765,    14,  1183,   470,   470,   479,   479,   479,     0,     0,
-    32,   470,     0,     0,  1184,   625,   621,     0,    18,   496,
-     0,  1525,   450,    26,    20,   130,   131,     0,     0,     0,
-  1375,     0,     0,    23,     0,  1379,     0,     0,     0,   622,
-     0,     0,   224,     0,     0,     0,     0,     0,   941,   623,
-     0,   212,     0,     0,     0,     0,   421,   708,     0,     0,
-     0,   624,   625,     8,     9,     0,     0,     0,     7,     8,
-     9,    10,   214,   215,   216,     0,   705,   706,   156,    14,
-   300,   394,   395,    10,   709,   258,  1560,   550,     0,  1417,
-    18,   691,   856,  1560,     0,     0,    18,  1316,     0,  1317,
-   258,  1318,    20,     0,   421,   424,     0,    21,     0,     0,
-     0,    23,   559,   621,    26,     0,   130,   131,     0,    21,
-    26,     0,    27,    28,     0,   340,   251,     0,     0,     0,
-  1224,     0,     0,     0,    27,   320,   193,     0,     0,     0,
-  1225,     0,     0,     0,     0,     0,   194,     0,     0,     0,
-     0,     0,  1226,     0,    32,     0,     0,   691,  1466,   905,
-     0,     0,   905,     0,   561,     0,    32,   561,     0,     0,
-     0,     0,     0,  1560,   905,     0,     0,     0,  1153,  1153,
-   931,     0,     0,     0,   421,   837,     8,     9,     0,     0,
-    12,    13,  1635,  1492,  1493,     0,    14,     0,   561,     0,
-     0,  1419,   588,   589,   590,   591,   592,   593,   594,     0,
-    16,  1503,    17,  1650,     0,     0,     0,     0,   237,    20,
-     0,   258,   856,  1179,  1179,  1185,   727,   731,    23,     0,
-     0,     0,     0,     0,   731,     0,     0,    26,     0,   130,
-   131,     7,     8,     9,    10,   224,     0,    13,     0,     0,
-     0,     0,   300,     8,     9,    10,     0,     0,   930,     0,
-     0,     0,   748,   749,   472,   475,     0,   340,  1185,    18,
-   765,  1543,  1544,     0,     0,   882,     0,     0,     0,     0,
-    21,     0,  1227,  1227,  1227,     0,   621,  1554,  1555,     0,
-     0,    21,     0,    26,   224,    27,    28,   147,   251,     0,
-   340,   731,     0,   450,   450,     0,    27,   320,     0,   970,
-   828,     0,     0,   691,     0,     0,     0,     0,     0,   971,
-   691,     0,     0,     0,     0,     0,     0,    32,     0,     0,
-   450,   972,   625,     0,   340,   450,   727,     0,    32,   853,
-   854,     0,   858,   859,   860,   861,   862,   863,   864,   865,
-   866,   867,   868,   869,   870,   871,   872,   873,   874,   875,
-   876,     0,   731,     0,     0,     0,     0,     0,   731,     0,
-     0,     0,   127,   128,     0,     0,   215,   216,     0,     0,
-   421,   708,    14,   581,   582,   583,   584,   585,   586,   587,
-   588,   589,   590,   591,   592,   593,   594,   731,   258,     0,
-   258,     0,     0,     0,   731,    20,     0,     0,     0,  1153,
-  1153,   931,     0,     0,    23,     0,   621,     0,   300,   127,
-   128,    10,     0,    26,    13,   130,   131,     0,   949,   951,
-     0,   691,     0,  1179,  1179,  1305,  1305,  1185,     0,   622,
-     0,     0,  1179,   258,   340,     0,    18,     0,     0,   623,
-     0,     0,   930,     0,     0,     0,     0,    21,     0,     0,
-     0,   631,   625,   621,     0,  1305,  1305,  1185,     0,     0,
-    26,     0,    27,   320,     0,     0,     0,  1227,  1227,  1227,
-   127,   128,   472,   475,   215,   216,  1156,     0,     0,     0,
-    14,     0,   727,     0,     0,   691,  1157,     0,     0,   450,
-   450,   691,   450,   450,    32,   450,   411,   413,  1158,   625,
-     0,     0,     0,    20,     0,   520,     0,     0,     0,     0,
-     0,     0,    23,   612,   621,   300,   394,   395,    10,     0,
-   613,    26,     0,   130,   131,   258,     0,     0,     0,     0,
-     0,   748,   749,   765,     0,     0,     0,   622,     0,     0,
-     0,     0,     0,   421,   837,  1046,     0,   623,     0,  1179,
-  1179,  1305,  1305,  1185,    21,     0,  1179,     0,     0,   624,
-   625,   614,     0,   340,   340,     0,   340,    26,     0,    27,
-   320,     0,     0,   300,   127,   128,    10,     0,     0,     0,
-     0,   731,     0,     0,     0,     0,     0,     0,     0,   153,
-     0,     0,     0,   212,   220,     0,     0,     0,     0,     0,
-     0,   615,   691,     0,  1110,     0,   691,     0,     0,     0,
-     0,     0,    21,     0,     0,   258,     0,     0,     0,   251,
-     0,     0,   705,   706,   450,   450,     0,    27,   320,   709,
-     0,     0,  1216,     0,     0,     0,   731,   731,     0,     0,
-     0,   727,   731,   258,     0,   691,     0,     0,     0,     0,
-     0,   691,     0,     0,     0,     0,   731,     0,   731,    32,
-   731,     0,     0,  1508,  1508,     0,  1508,     7,     8,     9,
-    10,     0,     0,   246,     0,     0,     0,     7,   127,   128,
-    10,     0,   748,   749,   472,   475,     0,     0,     0,     0,
-     0,   765,     0,     0,   691,    18,     0,     0,     0,  1165,
-     0,     0,     0,     0,     0,     0,    21,   258,     0,   479,
-   731,     0,   621,     0,   472,   475,    21,     0,     0,    26,
-     0,    27,    28,   251,   691,   340,   472,   475,   450,   450,
-   450,    27,    28,     0,     0,   970,   691,     0,  1190,     0,
-     0,     0,     0,     0,     0,   971,     0,     0,  1508,  1508,
-  1557,     0,     0,    32,   731,   252,     0,   972,   625,     0,
-     0,     0,     0,    32,     0,     0,     0,     0,     0,   729,
-   691,   731,   691,     0,   421,   708,   729,     0,     0,     0,
-   479,   479,   479,     0,     7,     8,     9,    10,   450,   450,
-    13,     0,     0,     0,     0,     7,     8,     9,    10,     0,
-   421,   424,   907,   910,     0,     0,     0,     0,   748,   749,
-   472,   475,    18,     0,     0,   765,  1246,     0,     0,     0,
-     0,     0,     0,    21,     0,     0,     0,     0,     0,   621,
-   421,  1362,     0,     0,    21,     0,    26,   691,    27,    28,
-     0,   251,     0,   729,     0,     0,     0,     0,     0,    27,
-    28,     0,  1182,     0,     0,     0,     0,     0,     0,   450,
-     0,     0,  1183,   691,     0,     0,     0,   727,   727,     0,
-    32,  1277,     0,   252,  1184,   625,     0,     0,   258,     0,
-    80,    32,     0,     0,     0,     0,     0,     0,     0,     0,
-   104,   340,     0,   691,     0,  1058,  1059,     9,    10,     0,
-   133,     0,     0,     0,   729,     0,   144,   144,     0,   144,
-   729,    80,     0,     0,     0,     0,     0,     0,    80,     0,
-     0,     0,   748,   749,     0,   765,   421,   708,     0,     0,
-     0,   203,     0,    80,    21,     0,     0,     0,     0,   729,
-     0,   238,     0,     0,     0,     0,   729,    26,   104,    27,
-    28,     0,     0,  1239,   731,  1060,   731,     0,   731,   262,
-   104,     0,     0,   193,     0,     0,   727,     0,     0,     0,
-     0,     0,     0,   194,     0,   727,   727,     0,     0,     0,
-     0,    32,   104,     0,   727,   195,     0,     0,     0,   691,
-   586,   587,   588,   589,   590,   591,   592,   593,   594,     0,
-  1381,  1382,   116,   772,   773,     0,   774,   472,   475,     0,
-   133,     0,    80,     0,     0,     0,   144,   144,     0,     0,
-     0,   412,   144,     0,     0,   144,   144,   144,   727,   775,
-     0,     0,     0,     0,     0,     0,     0,   776,     0,   472,
-   475,    80,     0,     0,     0,    80,     0,     0,     0,     0,
-     0,   203,    80,     0,    26,     0,   119,   120,   731,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   203,
-   203,   203,     0,     0,     7,     8,     9,    10,   214,   215,
-   216,     0,     0,  1216,     0,    14,  1141,  1442,     0,  1142,
-     0,     0,     0,     7,     8,     9,    10,     0,   203,   519,
-     0,  1148,    18,     0,     0,   907,   910,     0,    20,     0,
-     0,     0,     0,    21,     0,   505,     0,    23,     0,   621,
-     0,    18,     0,     0,   104,     0,    26,   727,    27,    28,
-     0,     0,    21,   729,     0,   144,     0,     0,   621,     0,
-     0,     0,   970,  1485,     0,    26,     0,    27,    28,     0,
-   907,   910,   971,   127,   128,   421,  1362,     0,   246,     0,
-    32,   970,     0,     0,   972,   625,   727,     0,     0,     0,
-     0,   971,     0,   104,   531,     0,     0,     0,     0,    32,
-    18,     0,     0,   972,   625,     0,   691,     0,   729,   729,
-     0,     0,     0,     0,   729,     0,     0,   621,     0,     0,
-     0,     0,     0,     0,    26,     0,   130,   131,   729,     0,
-   729,     0,   729,     0,     0,     0,     0,     0,     0,   104,
-   622,     0,   731,   619,     0,   531,   531,   634,     0,     0,
-   623,     7,     8,     9,    10,     0,    80,   691,     0,  1545,
-  1546,     0,   624,   625,     0,     0,     0,     0,   300,     8,
-     9,    10,   167,    12,    13,     0,     0,   735,     0,    14,
-     0,     0,   729,     0,     0,   300,     8,     9,    10,   133,
-    21,     0,     0,    16,     0,    17,    18,  1573,   104,     0,
-   203,   104,    20,    26,     0,    27,    28,    21,     0,   192,
-     0,    23,     0,   621,     0,   144,     0,     0,   144,   193,
-    26,     0,    27,   320,    21,     0,   729,  1587,     0,   194,
-   144,   251,     0,     0,     0,     0,  1156,    32,    80,    27,
-   320,   195,     0,   729,     0,     0,  1157,     0,     0,     0,
-     0,     0,     0,     0,    32,     0,   907,   910,  1158,   625,
-     0,     0,     0,   252,     0,     0,   203,   203,     0,     0,
-   203,    32,   203,   203,   203,   755,     0,     0,     0,   203,
-  1141,  1142,   907,   910,   203,     0,     0,   203,     0,  1148,
-     0,     0,     0,     0,   263,     0,     0,     8,     9,     0,
-     0,    12,    13,     0,    80,     0,     0,    14,     0,     0,
-     0,     0,   907,   910,     0,     0,     0,     0,     0,     0,
-     0,    16,     0,    17,     0,     0,     0,     0,     0,     0,
-    20,   727,   264,   265,     0,     0,     0,     0,     0,    23,
-     0,   266,   104,   104,   104,   104,     0,     0,    26,     0,
-   130,   131,     0,   267,     0,     0,     0,   268,   269,   270,
-   271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
-   281,   282,   283,   284,   285,   286,   287,   288,     0,     0,
-   289,   290,   291,     0,   292,     0,     0,   293,     0,     0,
-     0,     0,     0,     0,     0,   300,     8,     9,    10,     0,
-     0,    13,   104,   294,   531,     0,  1141,  1142,   907,   910,
-     0,     0,     0,  1148,     0,     0,   619,     0,   531,   531,
-   634,     0,     0,    18,     0,     0,   729,   932,   729,     0,
-   729,   934,     0,     0,    21,     0,     0,     0,     0,     0,
-   621,     0,     0,     0,     0,     0,   203,    26,     0,    27,
-   320,     0,     0,     0,     7,     8,     9,    10,     0,     0,
-     0,     0,     0,  1308,     0,     0,     0,     0,     0,     0,
-     0,     0,   133,  1309,   300,     8,     9,    10,     0,   133,
-     0,    32,    18,     0,     0,  1310,   625,   203,   977,   203,
-   203,   238,   634,    21,     0,     0,     0,     0,     0,   621,
-     0,     0,    18,     0,     0,     0,    26,     0,    27,    28,
-     0,     0,     0,    21,  1058,  1059,     9,    10,     0,   621,
-  1141,  1142,   970,  1148,     0,     0,    26,     0,    27,   320,
-   729,     0,   971,     0,   203,     0,     0,     0,   977,     0,
-    32,     0,  1308,     0,   972,   625,   203,   203,   755,   755,
-   755,     0,  1309,    21,   203,     0,     0,     0,     0,     0,
-    32,     0,     0,     0,  1310,   625,    26,     0,    27,    28,
-     0,     0,     0,     0,  1060,     7,   127,   128,    10,     0,
-     0,    13,   193,   133,     0,     0,    80,     0,    80,     0,
-     0,     0,   194,  1069,    80,     0,    80,     0,     0,     0,
-    32,     0,   104,    18,   195,   907,   910,     0,   104,     0,
-     0,     0,     0,     0,    21,   531,   531,   531,   785,     0,
-     7,     8,   786,    10,   167,    12,    13,    26,   531,    27,
-    28,    14,     0,     0,     0,     0,     0,     0,   300,     8,
-     9,    10,     0,    30,     0,    16,     0,    17,    18,    19,
-     0,     0,     0,    31,    20,  -523,     0,     0,     0,    21,
-     0,    32,     0,    23,   787,    33,   168,     0,     0,     0,
-     0,     0,    26,     0,    27,    28,     0,    21,   788,     0,
-   789,     0,     0,     0,   251,     0,     0,     0,    30,     0,
-     0,     0,    27,   320,   729,     0,     0,     0,    31,     0,
-     0,   531,   531,     0,     0,   531,    32,     0,   531,     0,
-    33,     0,     0,   104,     0,     0,   522,   531,     0,   104,
-     0,   932,   932,   932,    32,     0,  -523,   531,     0,  1159,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     8,
-     9,     0,     0,    12,   246,     0,     0,     0,     0,    14,
+   435,   490,   444,   196,   122,   256,   724,   443,   445,   697,
+  1003,   392,    36,    42,   763,   632,   516,   698,   781,   538,
+   541,   695,   177,   642,   641,   208,    57,   103,   495,   498,
+    59,  1121,   182,   841,   979,   398,   399,    59,   432,   509,
+   985,   449,   178,    36,    42,  1045,   298,  1047,   880,   646,
+   647,    42,   209,   572,   400,  1077,   936,    57,   507,   221,
+   101,    35,   249,   674,   176,   391,   489,   247,   115,   256,
+  1450,  1465,   397,  1504,   174,   497,  1565,  1561,  1468,   296,
+   420,   423,   611,   350,   170,   350,   253,   350,   528,   190,
+  1074,  1082,    35,   171,   452,   740,   260,  1087,   713,   169,
+   703,   704,   350,   350,   403,   611,   611,   163,   595,    72,
+    55,   233,   986,   839,   721,  1566,  1202,  1593,    89,   364,
+   519,   645,  1638,   196,  1591,    15,  1011,    86,   256,  -416,
+    -1,   406,   350,  1575,   350,   141,   146,   374,    90,  -143,
+    72,    55,   528,   375,   208,    76,   164,    72,   175,   177,
+    94,   137,  -357,   596,   915,  1588,   453,  1600,   405,  -416,
+    59,  1075,   951,  -416,    59,   357,  1628,   358,  -296,   178,
+   388,   209,   722,   745,  1012,    87,    76,  1013,    42,   710,
+  -357,  1011,  1208,    76,   453,   127,   128,    57,   454,   297,
+   190,   176,  1203,   728,   416,  1617,   201,   440,   213,   493,
+  1016,   174,  1601,   992,   825,    91,  1650,  -416,  1148,   221,
+   952,   170,   408,  -600,    -2,  1632,   454,   221,   221,  -366,
+   171,    15,   840,    88,  1591,    92,   169,   215,   216,  1012,
+  1001,  1209,  1013,    14,  -829,   190,    26,    93,   130,   131,
+  1569,    72,   404,   459,   107,  1563,  1078,   221,  1017,   617,
+  1504,  1018,   529,  -366,   419,   422,    20,  -366,  -600,  -600,
+   460,   260,   530,  1371,  1372,    23,  1298,   621,   523,   108,
+    72,    55,  1004,  -600,    72,   175,  1159,   407,    38,  1162,
+  1393,   410,  1364,  1660,   502,   504,   616,   718,   461,  -366,
+   768,  1598,   247,   109,  1079,  1426,   221,   514,   471,   474,
+   495,   498,   309,  1173,   964,   608,    76,   803,   495,    38,
+    76,   642,   824,   682,  1299,   135,   201,   213,    26,   467,
+   498,  1189,  1190,  1426,  1120,   350,   677,  1039,   649,  1234,
+  1365,  1661,   965,   993,   772,   773,   542,   543,   296,   498,
+   937,  1239,  1633,  1427,  -303,    58,   247,   766,   966,   697,
+   221,   517,   700,   552,   350,   651,   553,  1022,  1040,   554,
+  1050,   432,   564,   201,   468,   955,   569,  -625,   551,   260,
+   137,  1535,   990,   991,   610,  1260,    58,  1262,   994,   516,
+   161,   183,   405,    58,   883,    26,   162,   995,   996,  -303,
+  -303,   761,   127,   128,  1051,  -599,   518,   694,  1052,   767,
+   209,   884,   621,   632,  -296,  1476,   221,   420,   423,   660,
+   187,   685,  -625,  -625,  1482,  1483,   595,  1484,   670,    18,
+    39,   179,   177,   997,   240,   295,  1406,  -625,   241,   885,
+  1053,   660,   740,  1176,   648,  -305,   621,    59,   740,   188,
+  -599,  -599,   178,    26,  1228,   130,   131,   824,   297,  -581,
+  -305,    39,  1150,   243,  -305,  -599,    40,   637,   138,   622,
+    89,   596,  1280,   738,   176,    72,   650,   814,  -141,   623,
+   621,  -305,   377,  -305,   715,    18,   792,    58,   139,   245,
+    90,   624,   625,  -305,  -305,   769,  -305,    40,  -305,   221,
+   221,   898,    90,   299,  -581,   189,   350,   221,  1296,  1297,
+   138,   652,   638,    59,   127,   128,    58,   696,  1077,   221,
+    58,   376,   815,  1095,   795,   824,  -305,  -305,  -305,  -305,
+   300,   394,   395,    10,    95,   110,   111,   362,   221,   350,
+   797,  -305,   350,  -299,   372,   350,   899,    95,   110,   111,
+   350,   831,   831,   831,   831,   201,   989,    72,   175,   740,
+   380,   771,   781,   350,  1201,    26,  1496,   130,   131,    21,
+   155,   381,  -581,   350,   401,   789,   350,   900,   608,  1578,
+  1579,  -296,   697,   696,    27,   320,   770,   495,   112,   113,
+   698,   750,   751,    76,   695,   960,   552,   553,   883,  1036,
+  1037,   112,   113,   425,   653,  1041,   682,   189,   939,   642,
+   641,   296,  1442,   961,   433,   884,    32,  -581,   485,   821,
+   902,   410,   901,    72,   796,  1240,   848,  1122,   565,   694,
+   566,   138,  1026,   528,   201,   303,   738,    88,  1034,  -144,
+  1054,  -620,   201,   885,  1405,   300,   568,    -7,    10,   972,
+  1195,   977,   978,   572,   164,   158,   447,   921,   260,   802,
+  1172,   221,   565,   448,   566,   903,   127,   128,  1285,  1197,
+   896,   519,   451,    18,  -367,   122,    15,  1027,   392,  1199,
+   740,   463,   511,   350,    21,  1055,   155,   155,   155,    91,
+   464,  -120,   740,    15,   295,  1196,   978,   209,    91,   426,
+   427,   247,   922,   923,   221,   501,  -142,   645,  -367,    92,
+  1002,    58,  -367,   428,  1198,  1001,   526,    26,    92,   130,
+   131,   297,    89,   429,  1200,  -120,   740,   512,   740,  -120,
+  1241,    32,   155,   887,   524,   430,  1506,   905,   908,   696,
+   963,   525,    90,   888,  -367,  1612,   696,   694,   221,   527,
+   781,   980,  1635,   693,  1060,  1652,   889,  -118,  1448,    15,
+    89,  -120,   546,   958,  1092,  1093,  1094,   792,  1429,   792,
+   137,   158,   158,   158,  1059,  1069,   221,   792,   366,   370,
+    90,  1507,   848,     8,   521,  1255,  1256,  1257,  1048,  1049,
+  1613,  -118,   535,    58,    59,  -118,    59,  1636,  1080,   825,
+  1653,   201,   209,   544,    59,   795,  1477,   795,     8,     9,
+   694,   350,   350,   795,   350,   795,   694,   158,    88,   693,
+   378,   797,   432,   797,   545,   127,   128,  -118,   363,   547,
+    91,   797,   222,   223,  1191,   379,   130,   131,  1430,   548,
+    92,   221,   201,   975,   201,   201,   127,   128,   215,   216,
+    92,   549,  1269,  1271,    14,   137,   789,   696,   789,    58,
+   522,   130,   131,  1229,  1230,  1231,   789,  1028,  1029,   568,
+   363,   222,   446,   611,    95,   110,   111,    20,   130,   131,
+   300,   394,   395,    10,   662,   350,    23,   678,    89,   201,
+  1124,  1083,  1084,  1020,  1085,   661,  1478,    26,   664,   130,
+   131,   224,   522,   665,    72,   796,    72,  1046,    90,   127,
+   128,   256,    15,   887,    72,   796,  -416,  1236,  1237,    21,
+   696,   831,   666,   888,   679,  1639,   696,   694,   112,   113,
+   114,   738,    26,  1130,    27,   320,   889,   707,  1281,  1282,
+   802,  1284,   802,    90,  1251,  -416,  -416,  1066,  1073,  1253,
+   802,  1271,     8,     9,   363,   260,    92,   295,   129,    -6,
+  1360,  1362,   130,   131,   552,   553,    32,   711,    26,  1366,
+   694,  1445,   831,   350,   733,   693,   694,   483,   484,   224,
+   127,   128,   693,    15,   685,   519,   252,  -416,   491,   492,
+  1410,     8,     9,   762,  1510,   224,   757,   363,   116,   117,
+   118,   559,   256,   816,  1060,   130,   131,   670,   593,   594,
+  1527,  1403,  -183,   155,   155,   155,  -416,  -416,    15,   738,
+   963,  -416,   825,   808,  1059,   127,  1389,   137,  -183,   252,
+  -183,    26,   831,   130,   131,   806,   363,   696,   807,   905,
+   908,   696,   809,   432,   130,   131,   817,   529,   694,   835,
+    26,   224,   119,   120,   792,  1243,   722,   530,   837,   224,
+   694,  1245,  1246,   838,   812,  1243,  1248,   840,   522,  1246,
+   363,    91,    95,    96,    97,   432,   224,   895,   130,   131,
+   696,    59,   914,   253,  1178,  1179,   696,   483,   716,   491,
+   717,    92,   795,   693,   694,   897,   694,  1510,   158,   158,
+   158,   916,   522,   918,   831,   942,     8,     9,   797,   813,
+  1471,  1377,  1378,   943,  1387,  1388,   944,  1390,   953,  1510,
+   256,   420,   423,   954,    26,   831,    98,    99,   100,   696,
+  1424,  1425,   957,    18,   483,  1529,   732,   959,   350,   -52,
+    58,    20,    58,   789,   -52,   967,  1609,  1494,   491,  1530,
+    58,   420,   423,  -299,   501,   -52,   693,    26,   696,   130,
+   131,   694,   693,   483,  1534,   968,  1270,   127,   128,   697,
+   696,  1286,   981,  1222,   987,   988,   453,  1584,  1032,  1510,
+  1008,  1009,  1456,  1223,  1461,  1002,  1010,   694,  1458,  1015,
+  -828,    72,   796,   432,  1024,  1224,  1031,  1066,  1035,  1038,
+   724,   116,   772,   773,   696,   774,   696,  1096,   559,  1097,
+  1347,   559,   116,   117,   118,  1110,   828,   738,  1288,  1098,
+   130,   131,  1102,  1339,  1100,  1101,  1103,   802,  1104,   559,
+   792,   825,   382,   383,   384,  1105,   775,  1346,  1106,  -140,
+  1107,  1109,   559,  1112,  1474,  1475,   855,  1113,  1114,  1115,
+   552,   553,  1129,    26,  1042,   119,   120,    59,  1316,  1116,
+  1131,    91,  1132,   523,  1270,  1133,   119,   120,   795,   905,
+   908,   696,  1338,   693,   878,  1134,  1141,   693,   385,  1142,
+   894,    92,  1171,  1143,   797,  1149,   386,   387,  1152,   224,
+   300,   394,   395,    10,  1153,  1302,  1303,   696,  1165,  1043,
+    95,    96,    97,  1455,  1158,  1455,  1170,  1167,  1194,   224,
+  1217,   694,   140,   140,  1227,   156,   693,  1244,   224,   789,
+    72,  1249,   693,  1250,  1254,  1302,  1303,   696,   410,    21,
+  1258,   382,   383,   384,  1264,   224,   251,  1028,  1029,   212,
+  1265,   220,  1272,  1347,    27,   320,   363,   237,  1541,  1542,
+  1543,   209,  1266,  1347,    98,    99,  1267,   221,   528,  1274,
+  1347,  1275,  1276,  1279,  1287,   693,  1339,    72,   796,   831,
+  1346,  1202,   460,  1339,  1289,  1283,    32,  1574,   564,  1290,
+  1346,  1480,  1481,    26,  1291,   386,   387,  1346,  1443,  1444,
+  1295,  1294,  1654,  1300,   693,  1386,    95,   414,   415,  1310,
+  1386,  1359,  1370,   802,  1374,  1338,   693,  -662,  1576,  1577,
+  1396,  1397,    95,   110,   111,  1338,   667,   668,   669,  1414,
+  1415,   696,  1338,   140,  1398,  1404,  1408,    58,   140,  1409,
+  1418,   156,   156,   156,   127,   128,     8,     9,  1419,    13,
+   693,  1420,   693,  1421,  1438,  1428,   629,   633,   636,  1626,
+    98,   113,  1437,    72,  1451,   493,  1439,  1453,   212,  1466,
+  1513,    18,  1469,    72,   450,  1490,   112,   113,  1491,  1492,
+    72,  1493,   420,   423,  1498,   470,   470,   479,   621,  1627,
+  1505,   363,   116,   772,   773,    26,  1518,   130,   131,   130,
+   131,   220,    95,   110,   111,   513,   201,  1459,   201,   496,
+   220,   622,  1523,  1526,  1514,  1520,   694,   693,   155,  1521,
+  1528,   623,  1556,   375,  1550,  1587,  1552,  1347,  1347,  1556,
+  1560,  1570,  1347,   624,   625,  1571,  1586,  1595,   199,  1596,
+  1339,    21,  1604,   693,    26,  1339,   119,   120,   350,  1607,
+  1602,   140,  1608,  1620,  1346,  1346,   112,   113,  1624,  1346,
+  1634,   155,    95,    96,    97,  1630,    58,   694,  1631,  1637,
+  1127,  1641,  1646,   693,  1347,  1656,   221,  1642,  1658,  1651,
+  1655,   552,   553,  1347,  1663,  1664,  1666,  1339,  1667,  1338,
+  1338,  1572,     1,  1610,  1338,   442,  1339,     5,   160,  1525,
+   956,  1346,  1174,   158,   439,   441,   714,   559,  1625,  1556,
+  1346,  1311,  1070,    58,   360,  1509,    98,    99,   127,   128,
+   597,   503,   156,   409,  1414,  1415,   696,   590,   591,   592,
+   593,   594,   297,  1662,  1347,  1407,  1338,    72,    72,   297,
+   534,  1166,    72,  1007,   945,  1338,   158,  1339,    95,    96,
+    97,   506,   225,   226,   227,  1368,   750,   751,   199,   598,
+   599,  1346,   621,   600,   601,   602,   603,   693,  1232,    26,
+   946,   130,   131,  1252,  1347,  1164,    18,   696,     7,     8,
+   250,    10,   228,  1072,    72,   622,   486,  1339,  1356,   618,
+  1391,   882,   390,    72,   147,   623,  1338,   212,   220,    58,
+    26,  1346,    98,    99,   229,   199,  1464,   624,   625,    58,
+  1640,   140,  1648,  1599,   140,  1647,    58,    21,   201,   297,
+   156,   156,   156,  1645,   251,  1216,   140,   155,   155,   155,
+  1470,     0,    27,    28,     0,     0,  1338,     0,     0,  -577,
+     0,     0,  -577,     0,    72,     0,     0,     0,   230,   231,
+   232,     0,     0,   224,     0,     0,   252,   155,   155,   155,
+   224,     0,     0,   470,    32,     0,   470,     0,   479,   479,
+   479,    95,   110,   111,   450,   225,   226,   227,   918,   224,
+   470,   496,   220,     0,    72,   450,    95,   110,   111,   496,
+  -577,     0,  -577,  -577,     0,  -577,     0,     0,   974,    18,
+   629,   633,   450,   636,   411,   228,  -577,     0,  -577,   413,
+     0,     0,   158,   158,   158,   300,     8,     9,    10,     0,
+     0,     0,     0,  -577,  -577,   112,   113,     0,     0,   156,
+     0,     0,   156,     0,     0,   258,     0,     0,  -577,     0,
+   112,   113,   158,   158,   158,   633,     0,     0,   156,   156,
+   156,     0,     0,     0,    21,     0,     0,   147,     0,   258,
+     0,   251,   693,   156,     0,   214,   215,   216,   295,    27,
+   320,     0,    14,    58,    58,   295,     0,     0,    58,     0,
+     0,     0,   300,   127,   128,    10,     0,   199,   258,    18,
+     0,     0,     0,   559,     0,    20,     0,     0,     0,   258,
+     0,    32,     0,     0,    23,     7,     8,     9,    10,     0,
+     0,    13,     0,   693,   904,   904,   911,     0,   730,   701,
+    58,    21,   520,   930,     0,   736,     0,     0,   251,    58,
+     0,     0,     0,    18,     0,     0,    27,   320,   633,     0,
+     0,     0,     0,   220,    21,  1399,  1400,  1401,  1402,     0,
+   621,     0,     0,   747,     0,   295,     0,    26,   258,    27,
+    28,     0,   747,     0,     0,     0,   199,   691,    32,     0,
+     0,     8,     9,   969,   199,     0,   246,     0,     0,     0,
+    58,     0,     0,   970,   212,     0,   220,   237,     0,     0,
+     0,    32,   822,   258,     0,   971,   625,     0,    18,     0,
+   224,   116,   772,   773,     0,     0,     0,   155,     0,     0,
+     0,  1138,  1441,     0,    95,   110,   111,   258,  1138,     0,
+    58,     0,    26,     0,   130,   131,   224,     0,     0,     0,
+   220,     0,   224,   691,     0,     0,     0,  1138,  1222,     0,
+     8,     9,   470,   470,   479,   479,   479,     0,  1223,     0,
+   470,     0,     0,   876,     0,   119,   120,     0,   496,   877,
+  1224,   450,   340,     0,   340,     0,   340,    18,   112,  1522,
+   300,   127,   128,    10,   224,     0,    13,     0,   155,   155,
+   155,     0,   705,     0,   621,   706,  1495,     0,     0,   212,
+     0,    26,   158,   130,   131,   934,     0,   709,    18,     0,
+     7,     8,     9,    10,     0,     0,   246,  1499,     0,    21,
+   258,   340,     0,   340,     0,   621,   156,  1500,    95,   110,
+   111,     0,    26,  1519,    27,   320,     0,     0,    18,  1501,
+   625,     0,     0,   199,   411,     0,     0,   413,  1154,    21,
+     0,     0,     0,     0,     0,   621,     0,     0,  1155,     0,
+   224,   520,    26,     0,    27,    28,    32,     0,     0,     0,
+  1156,   625,     0,   158,   158,   158,     0,   258,   969,     0,
+     0,     0,   112,  1524,   199,     0,   199,   199,   970,     0,
+     0,   300,   127,   128,    10,     0,    32,   153,  1554,   691,
+   971,   625,     0,     0,   855,  1554,   691,   904,     0,     0,
+   904,     8,     9,     0,   205,    12,   206,     0,     0,    18,
+     0,    14,   904,     0,   559,     0,  1151,  1151,   930,     0,
+    21,   199,     0,   127,   128,    16,   621,    17,    18,     0,
+     0,     0,     0,    26,    20,    27,   320,     0,     0,     0,
+     0,     0,     0,    23,     0,     0,     8,     9,     0,  1154,
+     0,   519,    26,     0,   130,   131,   237,     0,  1138,  1155,
+   258,  1177,  1177,  1183,   129,     0,     0,    32,     0,     0,
+     0,  1156,   625,    18,    26,  1554,   130,   131,     0,  1065,
+     0,     0,     0,     0,  1138,     0,   258,     0,     0,     0,
+  1138,     0,     0,     0,  1629,   550,     0,    26,     0,   130,
+   131,     0,     0,     0,   421,   424,  1183,   691,     0,  1056,
+  1057,     9,    10,  1222,     0,  1644,     0,     0,     0,     0,
+  1225,  1225,  1225,  1223,   855,     0,     7,     8,     9,    10,
+     0,     0,    13,   340,     0,  1224,  1117,  1118,     0,  1033,
+   450,   450,  1123,     0,     0,     0,     0,     0,    21,   153,
+     0,   224,     0,     0,    18,     0,  1135,     0,  1136,     0,
+  1137,    26,     0,    27,    28,    21,     0,   450,     0,  1058,
+   691,   621,   450,     0,   258,     0,   691,   193,    26,  1081,
+    27,    28,     0,     0,     0,  1086,     0,   194,     0,   258,
+     7,   127,   128,    10,  1180,    32,     0,     0,     0,   195,
+   224,     0,     0,     0,  1181,     0,     0,     0,  1138,     0,
+  1169,     0,    32,   705,   706,     0,  1182,   625,     0,     0,
+     0,   709,     0,     0,     0,     0,     0,     8,     9,    21,
+     0,    12,   246,     0,   727,   731,   251,    14,     0,     0,
+     0,     0,   731,     0,    27,    28,  1151,  1151,   930,     0,
+     0,    16,     0,    17,  1192,     0,     0,     0,     0,     0,
+    20,   588,   589,   590,   591,   592,   593,   594,   252,    23,
+  1177,  1177,  1301,  1301,  1183,   340,    32,     0,    26,  1177,
+   130,   131,     0,     0,   561,     0,     0,   691,     0,     0,
+     0,   691,  1144,     0,  1145,     0,     0,     0,     0,     0,
+     0,     0,  1301,  1301,  1183,     0,   729,     0,   340,   731,
+   258,     0,     0,   729,  1225,  1225,  1225,     0,   827,   586,
+   587,   588,   589,   590,   591,   592,   593,   594,     0,  1065,
+   691,     0,     0,     0,   450,   450,   691,   450,   450,     0,
+   450,     0,   340,     0,   727,     0,     0,   852,   853,     0,
+   857,   858,   859,   860,   861,   862,   863,   864,   865,   866,
+   867,   868,   869,   870,   871,   872,   873,   874,   875,     0,
+   731,     0,     0,     8,     9,     0,   731,     0,    13,   691,
+   729,     0,     0,   421,   708,     0,   214,   215,   216,     0,
+     0,     0,     0,    14,  1177,  1177,  1301,  1301,  1183,     0,
+    18,  1177,     0,     0,     0,   731,     0,     0,   691,  1138,
+    18,     0,   731,     0,     0,     0,    20,     0,     0,     0,
+   691,     0,     0,     0,    26,    23,   130,   131,     0,     0,
+     0,   421,   424,   147,     0,     0,   948,   950,   212,   220,
+  1222,   729,     0,     0,     0,     0,     0,   729,     0,     0,
+  1223,     0,   340,  1312,   691,  1313,   691,  1314,  1138,     0,
+   747,     0,  1224,  1259,     0,  1261,   747,   450,   450,     0,
+     0,     0,     0,     0,     0,     0,   729,     0,   639,     8,
+     9,    10,     0,   729,     0,     0,   258,     0,   258,     0,
+     0,   561,     0,     0,   561,     0,     7,     8,     9,    10,
+   727,     0,   519,     0,     0,     0,  1502,  1502,   747,  1502,
+     0,   421,   836,     0,   309,   640,     0,    21,     0,     0,
+     0,   691,  1293,     0,    18,   561,     0,  1385,     0,     0,
+    26,   258,   130,   131,     0,    21,     0,     0,     0,     0,
+     0,   621,     0,     0,     0,     0,     0,   691,    26,     0,
+    27,    28,   479,     0,     0,  1413,     0,     0,     0,     0,
+     0,   259,  1044,     0,   969,     7,     8,     9,    10,     0,
+     0,   450,   450,   450,   970,     0,     0,   691,     0,     0,
+   340,   340,    32,   340,   747,   929,   971,   625,   494,   215,
+   216,  1502,  1502,  1551,     0,    14,     0,     0,   731,     0,
+     0,     0,     0,     0,    21,     0,     0,     0,  1369,     0,
+   621,     0,    18,  1373,     0,     0,     0,    26,    20,    27,
+    28,  1108,   258,   479,   479,   479,     0,    23,   199,     0,
+   199,   450,   450,   969,     0,     0,     0,     0,   434,     0,
+     0,   411,   413,   970,     0,     0,     0,     0,     0,     0,
+   520,    32,     0,   731,   731,   971,   625,     0,   727,   731,
+     0,     0,     0,     0,     0,     0,     0,  1411,     0,   729,
+   469,   691,     0,   731,     0,   731,     0,   731,     0,   214,
+   215,   216,     0,   488,    80,     0,    14,     0,     0,     0,
+     0,     0,     0,     0,   104,     0,     0,     0,     0,     0,
+     0,     0,   450,    18,   133,     0,     0,   421,   708,    20,
+   144,   144,   258,   144,     0,    80,  1163,     0,    23,     0,
+     0,     0,    80,     0,   729,   729,     0,   731,     0,     0,
+   729,     0,     0,   940,     0,   203,     0,    80,     0,     0,
+   258,     0,   340,     0,   729,   238,   729,     0,   729,     0,
+     0,     0,   104,     0,     0,  1188,     0,     8,     9,     0,
+     0,    12,    13,   262,   104,   705,   706,    14,     0,  1486,
+  1487,   731,   709,     0,     0,     0,   906,   909,   929,     0,
+     0,    16,     0,    17,     0,   747,   104,  1497,   731,     0,
+    20,     0,     0,     0,     0,     0,     0,     0,   729,    23,
+   127,   128,   258,     0,     0,   246,     0,     0,    26,     0,
+   130,   131,   604,     0,   133,     0,    80,     0,     0,     0,
+   144,   144,     0,     0,     0,   412,   144,    18,     0,   144,
+   144,   144,  1242,     0,   747,     0,     0,     0,     0,     0,
+   199,     0,   729,     0,   621,    80,   605,  1537,  1538,    80,
+     0,    26,     0,   130,   131,   203,    80,     0,     0,   729,
+     0,     0,     0,  1548,  1549,     0,   691,   622,     0,     0,
+     0,     0,     0,   203,   203,   203,     0,   623,     0,   421,
+   836,     0,     0,   727,   727,     0,     0,  1273,     0,   624,
+   625,     0,     0,     0,     0,     0,     0,     0,   300,     8,
+     9,    10,   203,     0,    13,     8,     9,   340,     0,    12,
+    13,     0,     0,     0,     0,    14,     0,   691,     0,   505,
+     0,     0,     0,   472,   475,   153,    18,     0,   104,    16,
+     0,    17,     0,     0,     0,     0,     0,    21,    20,   144,
+     0,     0,     0,   621,     0,     0,     0,    23,     0,     0,
+    26,     0,    27,   320,     0,     0,    26,     0,   130,   131,
+   758,     0,     0,     0,     0,   764,  1304,     0,  1214,     0,
+   731,   258,   731,     0,   731,     0,  1305,   104,   531,     0,
+     0,     0,   727,     0,    32,     0,     0,     0,  1306,   625,
+   804,   727,   727,     0,   881,     0,   810,     0,     0,     0,
+   727,     0,     8,     9,     0,     0,    12,    13,   818,   819,
+     0,   820,    14,     0,  1375,  1376,     0,     0,     0,     0,
+     0,     0,     0,   104,     0,     0,    16,   619,    17,   531,
+   531,   634,     0,     0,     0,    20,     0,     0,     0,     0,
+    80,   729,   727,   729,    23,   729,     0,     0,     0,     0,
+     0,     0,     0,    26,     0,   130,   131,     0,     0,  1139,
+     0,     0,  1140,     0,   612,     0,   300,   394,   395,    10,
+     0,   613,   731,   133,  1146,     0,     0,     0,   906,   909,
+     0,     0,   104,     0,   203,   104,   582,   583,   584,   585,
+   586,   587,   588,   589,   590,   591,   592,   593,   594,   144,
+     0,  1436,   144,     0,     0,    21,   919,   920,     0,   421,
+   708,   919,   614,     0,   144,     0,     0,     0,    26,     0,
+    27,   320,    80,   906,   909,     7,     8,     9,    10,     0,
+     0,     0,     0,     0,     0,   421,   424,     0,     0,     0,
+     0,   727,     0,   729,     0,     7,     8,     9,    10,     0,
+   203,   203,   615,    18,   203,  1479,   203,   203,   203,   755,
+     0,     0,     0,   203,    21,   421,  1358,     0,   203,     0,
+   621,   203,     0,     0,     0,     0,     0,    26,   727,    27,
+    28,     0,     0,     0,    21,     0,     0,     0,    80,     0,
+     0,   251,     0,   969,   300,     8,     9,    10,     0,    27,
+    28,   748,     0,   970,   749,     0,   472,   475,     0,     0,
+     0,    32,     0,     0,     0,   971,   625,     0,   765,     0,
+     0,     0,    18,   252,     0,     0,   104,   104,   104,   104,
+     0,    32,     0,    21,   731,  1030,     0,     0,     0,   621,
+     0,     0,     0,     0,     0,     0,    26,     0,    27,   320,
+     0,  1539,  1540,     0,     0,     0,     0,     0,     0,   421,
+   708,     0,  1304,     0,     0,     0,     0,     0,     0,   127,
+   128,     0,  1305,     0,   519,     0,     0,     0,     0,     0,
+    32,     0,     0,     0,  1306,   625,   104,     0,   531,  1567,
+     0,  1088,     0,  1090,     0,     0,    18,     0,     0,     0,
+   619,     0,   531,   531,   634,   729,     0,     0,   906,   909,
+     0,   931,     0,   621,     0,   933,     0,     0,     0,  1581,
+    26,     0,   130,   131,     0,     0,     0,     0,     0,     0,
+   203,     0,  1139,  1140,   906,   909,   622,     0,     0,     0,
+     0,  1146,     0,     0,     0,     0,   623,     0,     0,     7,
+     8,     9,    10,   214,   215,   216,   133,     0,   624,   625,
+    14,     0,     0,   133,   906,   909,  1125,  1126,     0,  1128,
+     0,   203,   976,   203,   203,   238,   634,    18,     0,     0,
+     0,     0,     0,    20,     0,     0,     0,     0,    21,     0,
+     0,     0,    23,     0,   621,     0,     0,     0,     0,     0,
+  1147,    26,     0,    27,    28,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,  1214,     0,     0,   969,   203,     0,
+     0,     0,   976,   727,     0,     0,     0,   970,     0,     0,
+   203,   203,   755,   755,   755,    32,     0,     0,   203,   971,
+   625,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,  1187,     0,     0,     0,  1139,  1140,   906,   909,
+     0,     0,     0,  1146,     0,     0,   133,     0,     0,    80,
+     0,    80,     0,     0,     0,     0,  1067,    80,     0,    80,
+   748,   749,   472,   475,     0,   104,   421,  1358,   765,     0,
+     0,   104,     0,     0,     0,     0,     0,     0,   531,   531,
+   531,     0,     6,     0,     7,     8,     9,    10,    11,    12,
+    13,   531,     0,     0,     0,    14,     0,     0,     0,     0,
+     0,  1233,     0,     0,     0,     0,     0,     0,     0,    16,
+     0,    17,    18,  1238,     0,     0,     0,     0,    20,     0,
+     0,     0,     0,    21,     0,     0,     0,    23,     0,     0,
+   438,     0,     0,     0,     0,     0,    26,     0,    27,    28,
+     0,     0,    29,     0,     0,     0,     0,     0,  1139,  1140,
+     0,  1146,    30,     0,     0,     0,     0,     0,  1056,  1057,
+     9,    10,    31,     0,   531,   531,     0,     0,   531,     0,
+    32,   531,     0,     0,    33,     0,   104,     0,     0,     0,
+   531,     0,   104,     0,   931,   931,   931,     0,     0,     0,
+   531,     0,  1157,     0,     0,     0,     0,    21,     0,     0,
+     0,  1292,     0,     0,     0,     0,     0,     0,     0,     0,
+    26,     0,    27,    28,     0,     0,  1235,     0,  1058,     0,
+     0,     0,     0,     0,     0,   104,   193,   104,     0,   203,
+   203,  1185,    83,   906,   909,     0,   194,     0,     0,     0,
+     0,     0,   106,     0,    32,  1309,     0,     0,   195,     0,
+     0,   126,   134,     0,     0,     0,     0,     0,   145,   145,
+     0,   145,     0,    83,     0,     0,     7,   127,   128,    10,
+    83,     0,    13,     0,  1185,     0,     0,     0,     0,   472,
+   475,     0,     0,   145,     0,    83,     0,   104,   755,   755,
+   755,     0,     0,   239,    18,     0,     0,     0,     0,     0,
+   248,     0,     0,   104,     0,    21,  1067,     0,     0,     0,
+     0,     0,   248,  1394,     0,   104,     0,  1395,    26,     0,
+    27,    28,     0,     0,     0,     0,     0,     0,  1247,     0,
+     0,     0,     0,     0,    30,     0,    80,     0,   748,   749,
+   765,     0,     0,     0,    31,     0,     0,     0,     0,   104,
+     0,   104,    32,  1412,     0,     0,    33,     0,     0,   104,
+     0,     0,     0,     0,    83,     0,  1417,     0,   145,   145,
+     0,     0,     0,     0,   145,     0,     0,   145,   145,   145,
+   104,     0,     0,     0,     0,   531,   531,     0,   531,     0,
+     0,     0,     0,    83,     0,     0,     0,    83,     0,     0,
+     0,     0,     0,   145,    83,     0,     0,     0,     0,     0,
+     0,   531,     0,     0,   531,   531,   634,     0,     0,     0,
+     0,   145,   145,   145,     7,   127,   128,    10,     0,  1472,
+   246,     0,     0,  1473,     0,     0,     0,   203,   203,   203,
+   203,   203,  1185,   755,     0,     0,     0,   203,     0,     0,
+   145,     0,    18,     0,     0,  1488,  1489,     0,     0,     0,
+     0,     0,     0,    21,     0,     0,     0,     0,     0,     0,
+  1185,  1185,  1185,     0,     0,     0,    26,     0,    27,    28,
+     0,     0,   755,   755,   755,   755,     0,   145,   748,   749,
+   472,   475,    30,     0,     0,     0,     0,   765,     0,     0,
+     0,     0,    31,     0,   203,     0,     0,     0,     0,   144,
+    32,     0,    80,     0,    33,     0,     0,     0,     0,     0,
+   472,   475,     0,     0,     0,   248,   145,     0,     0,     0,
+     0,     0,   472,   475,   581,   582,   583,   584,   585,   586,
+   587,   588,   589,   590,   591,   592,   593,   594,     7,     8,
+     9,    10,   214,   215,   216,     0,     0,     0,     0,    14,
+     0,   755,   203,   203,   755,   755,  1416,     0,     0,   203,
+     0,   248,     0,     0,     0,   620,    18,   145,   145,   635,
+     0,     0,    20,     0,   644,     0,     0,    21,    83,     0,
+     0,    23,     0,   621,     0,     0,     0,     0,     0,     0,
+    26,     0,    27,    28,     0,   203,   976,   203,     0,     0,
+     0,     0,   748,   749,   472,   475,   969,     0,     0,   765,
+     0,   683,     0,     0,   104,     0,   970,     0,     0,     0,
+   248,     0,   145,   248,    32,     0,     0,     0,  1014,   625,
+     7,   127,   128,    10,     0,     0,    13,   145,     0,     0,
+   145,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   145,     0,     0,     0,     0,     0,    18,     0,
+    83,     0,     0,     0,   755,   755,     0,   755,     0,    21,
    583,   584,   585,   586,   587,   588,   589,   590,   591,   592,
-   593,   594,   104,    16,   104,    17,   203,   203,  1187,    83,
-     0,     0,    20,   369,   371,     0,     0,     0,     0,   106,
-     0,    23,     0,   621,     0,     0,     0,     0,   126,   134,
-    26,     0,   130,   131,     0,   145,   145,     0,   145,     0,
-    83,     0,     0,     0,     0,     0,   622,    83,     0,     0,
-     0,  1187,     0,     0,     0,     0,   623,     0,     0,     0,
-   145,     0,    83,     0,   104,   755,   755,   755,   624,   625,
-   239,     7,   127,   128,    10,     0,     0,   248,     0,     0,
-     0,   104,     0,     0,  1069,     0,     0,     0,     0,   248,
-     0,     0,     0,   104,     0,     0,     0,     0,     0,    18,
-     0,     0,     0,     0,     0,     0,  1251,     0,     0,     0,
-    21,     0,     0,     0,    80,     0,     0,     0,     0,     0,
-     0,     0,     0,    26,     0,    27,    28,   104,     0,   104,
-     0,     0,     0,     0,     0,     0,     0,   104,     0,    30,
-     0,    83,     0,     0,     0,   145,   145,     0,     0,    31,
-     0,   145,     0,     0,   145,   145,   145,    32,   104,     0,
-     0,    33,     0,   531,   531,     0,   531,     0,     0,     0,
-    83,     0,     0,     0,    83,     0,     0,     0,     0,     0,
-   145,    83,     0,     0,     0,     0,     0,     0,     0,   531,
-     0,     0,   531,   531,   634,     0,     0,     0,   145,   145,
-   145,     7,     8,     9,    10,   167,    12,    13,     0,     0,
-     0,     0,    14,     0,     0,   203,   203,   203,   203,   203,
-  1187,   755,     0,     0,     0,   203,    16,   145,    17,    18,
-    19,     0,     0,     0,     0,    20,   563,     0,     0,     0,
-    21,     0,     0,     0,    23,     0,     0,   168,  1187,  1187,
-  1187,     0,     0,    26,     0,    27,    28,     0,     0,     0,
-   755,   755,   755,   755,   145,     0,     0,     0,     0,    30,
-   785,     0,     7,     8,   786,    10,   167,    12,    13,    31,
-     0,     0,     0,    14,   203,     0,     0,    32,     0,   144,
-     0,    33,    80,     0,     0,     0,    34,    16,     0,    17,
-    18,    19,   248,   145,     0,     0,    20,  -524,   690,     0,
-     0,    21,     0,     0,     0,    23,   787,     0,   168,     0,
-     0,     0,     0,     0,    26,     0,    27,    28,     0,     0,
-   788,     0,   789,     0,     0,     0,     0,     0,     0,     0,
-    30,   755,   203,   203,   755,   755,  1422,     0,   248,   203,
-    31,     0,   620,     0,   145,   145,   635,     0,    32,     0,
-     0,   644,    33,     0,     0,    83,     0,     0,     0,     0,
-     0,     0,     0,     0,   737,     0,     0,     0,  -524,     0,
-     7,     8,     9,    10,     0,   203,   977,   203,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   683,     0,
-     0,     0,     0,     0,   104,     0,     0,   248,    18,   145,
-   248,     0,     0,     0,     0,     0,     0,     0,     0,    21,
-     0,     0,     0,     0,   145,     0,     0,   145,     0,     0,
-     0,     0,    26,     0,    27,    28,     0,     0,     0,   145,
-   259,     0,     0,   824,     0,     0,   827,    83,   476,     0,
-     0,   830,   831,   833,   834,   835,   755,   755,   477,   755,
-     0,     0,     0,     0,   563,     0,    32,     0,     0,     0,
-   478,     0,     0,     0,     0,   145,   145,   852,     0,   145,
-     0,   145,   145,   145,   145,     0,     0,     0,   145,     0,
-     0,     0,     0,   145,     8,     9,   145,   167,    12,    13,
-     0,     0,  1187,     0,    14,     0,     0,     0,     0,     0,
-     0,     0,   784,    83,     0,     0,     0,   434,    16,     0,
-    17,    18,     0,     0,     0,     0,     0,    20,     0,     0,
-   911,     0,     0,     0,     0,     0,   684,   911,     0,   168,
-     0,   755,   755,  1422,   755,    26,     0,   130,   131,   469,
-     0,   248,   248,   248,   248,     0,     0,     0,     0,     0,
-     0,     0,   488,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,  1187,  1187,  1187,   166,     0,     7,     8,
-     9,    10,   167,    12,    13,     0,     0,     0,     0,    14,
-     0,     0,     0,   755,   104,     0,     0,     0,     0,   203,
-     0,     0,     0,    16,     0,    17,    18,    19,     0,     0,
-     0,   248,    20,   145,     0,     0,     0,    21,     0,     0,
-     0,    23,     0,     0,   168,     0,     0,   145,   145,   635,
-    26,     0,    27,    28,     0,     0,   933,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    30,     0,   690,   644,
-     0,     0,     0,     0,     0,   145,    31,     0,     0,     0,
-     0,     0,     0,     0,    32,     0,     0,     0,    33,     0,
-     0,     0,     0,    34,     0,     0,     0,     0,     0,     0,
-   785,   683,     7,     8,   786,    10,   167,    12,    13,   126,
-     0,     0,     0,    14,     0,     0,   145,   635,   145,   145,
-   239,   635,     0,     0,     0,     0,     0,    16,     0,    17,
-    18,    19,   737,     0,     0,     0,    20,  -526,   737,     0,
-     0,    21,     0,     0,   784,    23,   787,     0,   168,     0,
-     0,     0,     0,     0,    26,     0,    27,    28,     0,     0,
-   788,     0,   789,   145,     0,     0,     0,   635,     0,     0,
-    30,     0,     0,     0,     0,   145,   145,   145,   145,   145,
-    31,     0,     0,   145,     0,     0,     0,     0,    32,     0,
-     0,     0,    33,     0,     0,     0,     0,     0,     0,     0,
-     7,   127,   128,    10,     0,     0,   246,  1121,  -526,     0,
-     0,     0,   134,     0,     0,    83,     0,    83,     0,     0,
-     0,     0,  1070,    83,     0,    83,     0,     0,    18,     0,
-     0,   248,     0,     7,     8,     9,    10,   248,     0,    21,
-     0,     0,     0,   852,   145,   145,   145,     0,     0,   737,
-     0,     0,    26,   911,    27,    28,     0,   145,     0,   758,
-     0,    18,     0,     0,   764,     0,     0,     0,    30,     0,
-     0,     0,    21,     0,     0,     0,     0,     0,    31,     0,
-     0,     0,     0,     0,     0,    26,    32,    27,    28,   805,
-    33,     0,   690,     0,  1177,   811,     0,     0,   911,     0,
-     0,   193,     0,     0,     0,     0,     0,   819,   820,     0,
-   821,   194,     0,     0,     0,     0,     0,     0,     0,    32,
-     0,     0,     0,   195,     0,     0,     0,     0,     0,     0,
-   145,   145,     0,     0,   145,     8,     9,   145,   167,    12,
-    13,   911,   248,   735,     0,    14,   145,     0,   248,     0,
-   933,   933,   933,     0,  1221,     0,   145,     0,   644,    16,
-     0,    17,    18,     0,  1232,     0,     0,     0,    20,     0,
-     0,   737,     0,     0,     0,     0,     0,    23,     0,   621,
-     0,     0,     0,   737,     0,     0,    26,     0,   130,   131,
-     0,   248,     0,   248,     0,   145,   145,   635,     0,     0,
-     0,     0,   622,     0,     0,   920,   921,     0,     0,     0,
-   920,     0,   623,     0,     0,     0,     0,   737,     0,   737,
-     0,     0,     0,     0,   624,   625,     0,  1267,     0,     0,
-     0,     6,     0,     7,     8,     9,    10,    11,    12,    13,
-   933,     0,     0,     0,    14,     0,     0,     0,  1282,     0,
-     0,     0,     0,   248,   145,   145,   145,    15,    16,     0,
-    17,    18,    19,     0,     0,     0,     0,    20,   784,     0,
-   248,     0,    21,  1070,     0,    22,    23,    24,     0,    25,
-     0,     0,   248,     0,   911,    26,     0,    27,    28,     0,
-     0,    29,     0,     0,     7,   127,   128,    10,     0,     0,
-    13,    30,     0,    83,     0,     0,     0,     0,     0,     0,
-   911,    31,   127,   128,     0,     0,   248,   519,   248,    32,
-     0,     0,    18,    33,     0,     0,   248,     0,    34,     0,
-     0,     0,     0,    21,  1031,     0,     0,     0,     0,    18,
-   911,     0,     0,     0,     0,     0,    26,   248,    27,    28,
-     0,     0,   145,   145,     0,   145,   621,     0,     0,     0,
-     0,     0,   149,    26,     0,   130,   131,     0,     0,     0,
-     0,     0,   150,     0,     0,     0,     0,     0,   145,   622,
-    32,   145,   145,   635,   151,     0,     0,     0,     0,   623,
-     0,  1090,     0,  1092,     0,     0,     0,     0,     0,     0,
-     0,   624,   625,     0,   145,   145,   145,   145,   145,   635,
-   145,     0,     0,     0,   145,     0,     0,     0,     0,     0,
-     0,   784,   582,   583,   584,   585,   586,   587,   588,   589,
-   590,   591,   592,   593,   594,     0,   911,   933,   933,   933,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   145,
-   145,   145,   145,     0,     0,     0,     0,     0,   784,     0,
-    51,     0,     0,     0,     0,     0,  1127,  1128,     0,  1130,
-     8,     9,     0,   145,     0,   246,     0,     0,   145,     0,
-     0,    83,     0,     0,     0,     0,    51,    51,     0,   152,
-     0,    51,     0,     0,  1221,     0,     0,    18,    51,     0,
-  1149,     7,     8,     9,    10,     0,     0,    13,     0,     0,
-     0,    51,     0,    51,   621,     0,     0,     0,     0,     0,
-     0,    26,     0,   130,   131,     0,     0,     0,     0,    18,
-   145,   145,   145,   145,   145,   635,   254,  1505,   145,     0,
-    21,     0,     0,     0,     0,     0,     0,  1506,     0,     0,
-     0,     0,  1189,    26,     0,    27,    28,     0,     0,  1507,
-   625,     0,     0,  1453,     0,     0,     0,     0,     0,   193,
-     0,     0,     0,     0,   145,   635,   145,     0,     0,   194,
-     0,     0,     0,     0,     0,     0,     0,    32,     0,   396,
-   396,   195,    51,   248,     0,     0,    51,    51,     0,     0,
-   254,     0,    51,     0,     0,   152,   152,   152,     0,     0,
-     0,     0,   431,     0,     0,     0,     0,     0,     0,     0,
-     0,    51,  1237,     0,     0,    51,     0,     0,     0,     0,
-     0,    51,    51,   911,  1242,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   145,   145,     0,   145,    51,
-    51,   152,     0,     0,     0,     0,     0,     0,     0,   254,
-     0,     0,     0,     0,     0,   563,     0,   855,     0,   300,
-     8,     9,    10,   167,    12,   301,   302,   303,    51,   304,
-    14,     0,     0,     0,   690,     0,     0,     0,     0,     0,
-     0,   933,     0,     0,    16,   305,    17,    18,    19,     0,
-   306,   307,   308,    20,     0,   309,   310,   311,    21,   312,
-   313,     0,    23,     0,     0,    51,   314,   315,   316,   317,
-   318,    26,  1296,    27,   320,  1568,     0,  -791,   321,     0,
-   145,   145,   635,   145,   322,     0,     0,   323,     0,     0,
-     0,     0,     0,     0,     0,   324,   325,   326,     0,     0,
-     0,     0,     0,   327,   328,   329,     0,     0,     0,   330,
-     0,     0,   933,   933,   933,     0,  1313,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   331,     0,     0,     0,
-     0,     0,   145,   248,     0,     0,   560,     0,   145,     0,
+   593,   594,    26,     0,    27,    28,     0,     0,   145,   145,
+     0,     0,   145,     0,   145,   145,   145,   145,   149,     0,
+     0,   145,     0,     0,     0,     0,   145,     0,   150,   145,
+  1185,     0,     0,     0,   748,   749,    32,   765,     0,     0,
+   151,     0,     0,     0,     0,   783,    83,     0,     0,     0,
+     0,   300,     8,     9,    10,     7,     8,     9,    10,   205,
+    12,   206,     0,     0,     0,     0,    14,     0,     0,   755,
+   755,  1416,   755,     0,     0,     0,     0,     0,     0,     0,
+    16,     0,    17,    18,   248,   248,   248,   248,     0,    20,
+    21,     0,     0,     0,    21,     0,     0,   251,    23,     0,
+     0,  1185,  1185,  1185,     0,    27,   320,    26,     0,    27,
+    28,     0,     0,   207,     0,     0,     0,     0,     0,   472,
+   475,   755,   104,    30,     0,     0,     0,   203,     0,   252,
+     0,     0,     0,    31,     0,     0,     0,    32,     0,     0,
+     0,    32,     0,     0,   248,    33,   145,     0,     0,     0,
+     0,   472,   475,     0,     0,     0,     0,     0,     8,     9,
+   145,   145,   635,   246,     0,     0,     0,     0,     0,   932,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   396,     0,     0,     0,     0,     0,     0,
-     0,   254,     0,     0,     0,     0,    51,   785,     0,     7,
-     8,   786,    10,   167,    12,    13,     0,     0,     0,     0,
-    14,     0,     0,     0,     0,     0,  1400,     0,     0,     0,
-  1401,     0,     0,     0,    16,     0,    17,    18,    19,   396,
-     0,     0,     0,    20,  -525,     0,     0,     0,    21,     0,
-    51,     0,    23,   787,     0,   168,     0,     0,     0,     0,
-     0,    26,     0,    27,    28,    51,  1418,   788,    51,   789,
-     0,     0,     0,     0,   431,   431,   431,    30,     0,  1423,
-    51,     0,     0,     0,     0,     0,     0,    31,    51,     0,
-     0,     7,   127,   128,    10,    32,     0,   519,     0,    33,
-   580,   581,   582,   583,   584,   585,   586,   587,   588,   589,
-   590,   591,   592,   593,   594,  -525,    51,    51,     0,    18,
-    51,     0,   152,   152,   152,   431,     0,     0,     0,    51,
-    21,     8,     9,     0,    51,    12,   246,    51,     0,     0,
-     0,    14,     0,    26,  1478,    27,    28,     0,  1479,     0,
-     0,     0,     0,     0,    51,    16,     0,    17,     0,    30,
-     0,     0,     0,     0,    20,     0,     0,     0,     0,    31,
-  1494,  1495,     0,    23,     0,     0,     0,    32,     0,     0,
-     0,    33,    26,   560,   130,   131,   560,     0,     0,     0,
-     0,     0,   785,     0,     7,     8,   786,    10,   167,    12,
-    13,     0,   560,   560,   560,    14,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   560,     0,    16,
-     0,    17,    18,    19,     0,     0,     0,     0,    20,     0,
-    78,     0,     0,    21,     0,     0,     0,    23,   787,     0,
-   168,     0,     0,     0,     0,     0,    26,     0,    27,    28,
-     0,     0,   788,     0,   789,     0,    78,    78,     0,    78,
-     0,    78,    30,     0,     0,   254,     8,     9,    78,   167,
-    12,    13,    31,     0,   735,     0,    14,   560,     0,     0,
-    32,    78,     0,    78,    33,     0,     0,     0,     0,     0,
-    16,     0,    17,    18,     0,     0,    51,     8,     9,    20,
-     0,     0,   519,     0,     0,     0,     0,     0,    23,     0,
-   621,     0,     0,     0,     0,     0,     0,    26,     0,   130,
-   131,     0,   396,     0,    18,     0,     0,     0,     0,   396,
-     0,     0,     0,  1505,     0,     0,     0,    51,    51,    51,
-    51,   621,     0,  1506,     0,     0,     0,     0,    26,     0,
-   130,   131,     0,     0,     0,  1507,   625,     0,     0,     0,
-     0,     0,    78,     0,  1505,     0,    78,    78,     0,     0,
-     0,     0,    78,     0,  1506,    78,    78,    78,     0,     0,
-     0,     0,     0,     0,    51,     0,  1507,   625,    51,     0,
-     0,    78,     0,     0,     0,    78,    51,    51,   431,   431,
-   431,    78,    78,     0,    51,     0,     0,     0,     0,     0,
-  1385,  1386,     9,    10,     0,     0,     0,     0,     0,    78,
-    78,    78,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    51,     0,    51,     0,
-     0,     0,     0,    51,    51,     0,    51,     0,    78,    21,
-  1550,     0,  -479,  -479,  -479,  -479,  -479,  -479,  -479,     0,
-     0,  -479,    26,  -479,    27,    28,     0,     0,     0,     0,
-  1387,   560,     0,     0,  -479,     0,  -479,     0,   193,     0,
-  -479,     0,     0,     0,     0,    78,  -479,     0,   194,     0,
-     0,  -479,     0,     0,     0,  -479,    32,  -479,     0,     0,
-   195,     0,     0,     0,  -479,     0,  -479,  -479,  -479,  -479,
-  -479,     0,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
-  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
-  -479,  -479,  -479,  -479,  -479,     0,  -479,  -479,  -479,     0,
-  -479,  -479,  -479,  -479,  -479,     0,  -479,     8,     9,     0,
-     0,  1551,    13,     0,     0,     0,  -479,  -479,  -479,     0,
-  -479,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   560,   560,   560,    18,     0,     0,   431,   254,     0,
-     0,     0,   643,     0,     0,     0,    78,     0,     0,     0,
-     0,   621,     0,     0,     0,     0,     0,     0,    26,     0,
-   130,   131,  1385,   127,   128,    10,     0,     0,     0,     0,
-     0,     0,     0,     0,  1505,     0,    51,    51,   152,     0,
-     0,     0,     0,   254,  1506,     0,     0,     0,     0,     0,
-    78,   159,     0,     0,     0,     0,  1507,   625,     0,     0,
-     0,    21,     0,     0,     0,    78,     0,     0,    78,     0,
-     0,     0,     0,   204,    26,     0,    27,    28,     0,     0,
-    78,  1215,  1387,     0,     0,     0,     0,     0,    78,     0,
-    30,     0,     0,     7,     8,     9,    10,   214,   215,   216,
-    31,     0,     0,     0,    14,     0,     0,     0,    32,     0,
-     0,     0,    33,     0,    51,     0,    78,    78,     0,     0,
-    78,    18,    78,    78,    78,     0,     0,    20,     0,    78,
-     0,     0,    21,     0,    78,   254,    23,    78,   621,     0,
-     0,     0,     0,     0,    51,    26,     0,    27,    28,     0,
-     0,     0,     8,     9,    78,     0,    12,    13,     0,     0,
-     0,   970,    14,     0,     0,     0,     0,   159,   159,   159,
-     0,   971,     0,     0,     0,     0,    16,     0,    17,    32,
-     0,     0,     0,  1015,   625,    20,     0,     0,     0,     0,
-     0,     0,     0,   204,    23,     0,     0,     0,     0,     0,
-     0,     0,     0,    26,     0,   130,   131,     0,     0,     0,
-     0,   204,   204,   481,     0,     0,     0,     0,     0,   431,
-     0,     0,   431,   431,   431,   254,     0,     0,     0,     6,
-     0,     7,     8,     9,    10,    11,    12,    13,     0,     0,
-   204,     0,    14,     0,     0,    51,    51,    51,   152,   152,
-   152,   431,     0,   254,     0,    51,    16,     0,    17,    18,
-     0,     0,     0,     0,     0,    20,   643,     0,     0,     0,
-    21,     0,     0,     0,    23,     0,     0,   438,  1215,  1215,
-  1215,     0,     0,    26,     0,    27,    28,     0,     0,    29,
-     0,     0,     0,     0,     0,     0,    78,     0,     0,    30,
-     8,     9,     0,   167,    12,    13,     0,     0,   735,    31,
-    14,     0,     0,     0,    51,     0,   532,    32,     0,    51,
-     0,    33,    51,     0,    16,     0,    17,    18,     0,     0,
-     0,     0,     0,    20,     0,     0,     0,    78,    78,    78,
-    78,     0,    23,     0,     0,     0,     0,     0,     0,     0,
-     0,    26,     0,   130,   131,     7,     8,     9,    10,   205,
-    12,   206,     0,     0,     0,     0,    14,   628,   628,   628,
-     0,   431,    51,    51,   431,   431,   431,     0,   202,    51,
-    16,     0,    17,    18,    78,     0,     0,     0,    78,    20,
-     0,     0,     0,     0,    21,     0,    78,    78,    23,  1521,
-     0,     0,     0,   257,    78,     0,   261,    26,     0,    27,
-    28,     0,     0,   207,     0,    51,    51,    51,     0,     0,
-     0,     0,   204,    30,     0,     0,     0,   257,     0,   365,
-     0,     0,     0,    31,     0,     0,    78,     0,    78,     0,
-     0,    32,     0,    78,    78,    33,    78,     0,     0,     0,
-  1522,   573,   574,   575,   576,   577,   578,   579,   580,   581,
-   582,   583,   584,   585,   586,   587,   588,   589,   590,   591,
-   592,   593,   594,     0,     0,     0,     7,     8,     9,    10,
-     0,     0,   246,     0,     0,     0,     0,     0,   204,   204,
-     0,     0,   204,     0,   481,   481,   481,   756,   202,     0,
-     0,   204,     0,     0,    18,     0,   204,     0,     0,   204,
-     0,     0,     0,     0,     0,    21,   202,   202,   202,     0,
-     0,     0,     0,     0,     0,     0,   487,     0,    26,     0,
-    27,    28,  1215,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   193,   202,     0,   300,     8,     9,
-    10,   167,    12,    13,   194,     0,   735,     0,    14,     0,
-     0,     0,    32,     0,     0,     0,   195,     7,     8,     9,
-    10,   261,    16,    13,    17,    18,     0,     0,     0,   643,
-     0,    20,     0,     0,     0,   257,    21,     0,     0,     0,
-    23,     0,   621,     0,     0,    18,     0,     0,     0,    26,
-     0,    27,   320,  1215,  1215,  1215,    21,     0,     0,     0,
-     0,     0,     0,     0,     0,  1308,    78,    78,    78,    26,
-     0,    27,    28,     0,     0,  1309,   891,     0,     0,    51,
-     0,     0,     0,    32,     0,   476,     0,  1310,   625,     0,
-   628,   628,   628,     0,     0,   477,     0,     0,     0,   628,
-     0,     0,     0,    32,     0,     0,     0,   478,     0,     0,
-     0,  1217,     0,     0,     0,     0,     0,     0,   204,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   257,   261,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   300,
-     8,     9,    10,     0,    78,  -388,     8,     9,  -388,  -388,
-    12,   246,     0,     0,     0,     0,    14,     0,     0,   974,
-     0,   974,   974,     0,   628,     0,     0,    18,     0,     0,
-    16,     0,    17,  -388,    78,     0,     0,   202,    21,    20,
-     0,     0,     0,     0,  -388,     0,     0,     0,    23,     0,
-   621,    26,     0,    27,   320,     0,     0,    26,     0,   130,
-   131,     0,     0,     0,     0,     0,   974,   752,     0,     0,
-     0,     0,     0,   622,     0,     0,     0,   753,   204,   204,
-   756,   756,   756,   623,     0,    32,   204,     0,     0,   754,
-     0,  -388,     0,     0,     0,   624,   625,     0,     0,     0,
-     0,     0,     0,   202,   202,     0,     0,   202,     0,   202,
-   202,   202,   202,     0,     0,     0,   202,     0,     0,     0,
-     0,   202,     0,     0,   202,   204,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    78,    78,    78,    78,    78,
-    78,     0,     0,     0,     0,    78,     0,   532,   532,   532,
-     0,     0,     0,     7,     8,     9,    10,   167,    12,    13,
-   628,     0,  1020,     0,    14,     0,     0,     0,  1217,  1217,
-  1217,     0,     0,     0,     7,     8,     9,    10,    16,     0,
-    17,    18,     0,     0,     0,     0,     0,    20,     0,     0,
-     0,     0,    21,     0,     0,     0,    23,     0,     0,     0,
-     0,     0,     0,     0,    78,    26,     0,    27,    28,    78,
-     0,     0,    78,    21,     0,     0,     0,     0,     0,     0,
-     0,    30,     0,     0,     0,     0,    26,     0,    27,    28,
-     0,    31,  1460,   628,   628,     0,     0,   628,     0,    32,
-   628,     0,   193,    33,     0,     0,     0,     0,     0,   628,
-     0,     0,   194,   628,   628,   628,     0,     0,     0,   628,
-    32,     0,    78,    78,   195,     0,     0,   257,   261,    78,
-     0,     0,     0,     0,     0,     0,  1058,     8,   786,    10,
-   205,    12,   206,   202,     0,     0,     0,    14,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   974,   974,
-  1188,    16,     0,    17,    18,    78,    78,    78,     0,     0,
-    20,     0,     0,     0,     0,    21,     0,     0,     0,    23,
-     0,     0,     0,     0,   202,     0,   202,   202,    26,     0,
-    27,    28,     0,     0,     0,     0,  1060,     0,     0,     0,
-     0,     0,     0,  1188,    30,     0,     0,   626,   626,   626,
-     7,     8,     9,    10,    31,     0,   519,   756,   756,   756,
-     0,     0,    32,     0,     0,     0,    33,     0,     0,     0,
-     0,   202,     0,     0,     0,     0,   204,     0,    18,     0,
-     0,     0,     0,   202,   202,   202,   202,   202,   487,    21,
-     0,   202,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    26,     0,    27,    28,     0,     0,     0,     0,
-     7,     8,     9,    10,   205,    12,   206,   261,   193,     0,
-     0,    14,  1217,     0,     0,     0,     0,     0,   194,     0,
-   202,     0,     0,     0,     0,    16,    32,    17,    18,     0,
-   195,     0,     0,     0,    20,     0,     0,     0,     0,    21,
-     0,     0,     0,    23,     0,   891,   891,     0,   891,     0,
-     0,     0,    26,   102,    27,    28,     0,     0,  1463,     0,
-     0,     0,   121,   102,     0,     0,     0,     0,    30,   102,
-   102,   628,   102,     0,   628,   628,   628,     0,    31,     0,
-     0,     0,     0,  1217,  1217,  1217,    32,     0,     0,     0,
-    33,     0,     0,     0,     0,     0,     0,   974,   974,   974,
-  1188,  1188,  1188,  1311,   235,     0,     0,   974,     0,    78,
+     0,     0,   644,     0,     0,    18,     0,     0,   145,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   300,     8,     9,    10,     0,     0,    13,
-  1188,  1188,  1188,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   756,   756,   756,   756,     0,     0,     0,     0,
-     0,    18,     0,     0,     0,   257,   261,   257,     0,     0,
-     0,     0,    21,   389,     0,   121,   204,     0,     0,     0,
-     0,     0,   102,   102,     0,    26,     0,    27,   320,   102,
-   102,     0,     0,   102,   102,   102,     0,   417,   102,   102,
-   102,   752,     0,   202,   202,  1186,     0,     0,     0,     0,
-   257,   753,     0,     0,     0,     7,     8,     9,    10,    32,
-   626,   626,   626,   754,     0,     0,     0,     0,     0,   929,
-     0,     0,     0,  1311,   974,   974,  1311,  1311,  1311,     0,
-     0,   974,     0,     0,     0,     0,     0,     0,  1186,     0,
-     0,     0,     0,     0,    21,     0,     0,     0,     0,     0,
-     0,     0,   202,   202,   202,     0,     0,    26,     0,    27,
-    28,     0,     0,     0,     0,     0,    18,   204,     0,   204,
-     0,   202,     0,   193,     0,     0,     0,   235,   102,   626,
-     0,   626,   626,   194,   626,     0,     0,     0,     0,     0,
-     0,    32,   487,     0,     0,   195,     0,     0,   102,   573,
-   574,   575,   576,   577,   578,   579,   580,   581,   582,   583,
+     0,     0,   621,     0,     0,     0,     0,     0,     0,    26,
+     0,   130,   131,   784,   683,     7,     8,   785,    10,   167,
+    12,    13,   126,     0,     0,  1499,    14,     0,     0,   145,
+   635,   145,   145,   239,   635,  1500,     0,     0,     0,     0,
+    16,     0,    17,    18,    19,     0,     0,  1501,   625,    20,
+  -521,     0,     0,     0,    21,     0,     0,   783,    23,   786,
+     0,   168,     0,     0,     0,     0,     0,    26,     0,    27,
+    28,     0,     0,   787,     0,   788,   145,     0,     0,     0,
+   635,     0,     0,    30,     0,     0,     0,     0,   145,   145,
+   145,   145,   145,    31,     0,     0,   145,     0,     0,     0,
+     0,    32,     0,     0,     0,    33,   580,   581,   582,   583,
    584,   585,   586,   587,   588,   589,   590,   591,   592,   593,
-   594,     0,     0,     0,     8,     9,   626,   167,    12,    13,
-     0,     0,  1589,     0,    14,     0,     0,   102,  1311,  1311,
-     0,  1311,     0,     0,     0,     0,     0,     0,    16,     0,
-    17,    18,     0,     0,     0,     0,     0,    20,     0,     0,
-     0,     0,     0,     0,     0,     0,    23,     0,     0,     0,
-     0,     0,     0,     0,     0,    26,     0,   130,   131,     0,
-     0,     0,   257,     0,   481,     0,   102,     0,   102,   102,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   202,   202,   202,   202,   202,  1186,   202,     0,
-  1312,     0,   202,     0,     0,     0,     0,     0,     0,     0,
-   626,     0,     0,  1311,  1311,  1311,  1311,     0,     0,     0,
-     0,     0,   102,     0,     0,  1186,  1186,  1186,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   202,   202,   202,
-   202,   102,     0,     0,     0,   481,   481,   481,   102,     0,
-     0,   102,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   202,     0,   102,     0,  1311,     0,     0,     0,     0,
-     0,   204,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   626,   626,     0,     0,   626,     0,     0,
-   626,     0,     0,     0,     0,     0,     0,     0,     0,   626,
-     0,     0,     0,   929,   929,   929,     0,     0,     0,   626,
-     0,     0,     0,     0,     0,     0,     0,     0,   202,   202,
-   202,   202,   202,  1186,     0,     0,   202,     0,     0,     0,
-     0,     0,     0,     0,   102,     0,   777,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   626,   626,
-   626,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   102,     0,   202,     0,   202,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   300,     8,     9,
-    10,     0,    12,   301,   302,   303,     0,   304,    14,     0,
-     0,     0,     0,   929,     0,     0,     0,     0,     0,     0,
-     0,     0,    16,   305,    17,    18,    19,     0,   306,   307,
-   308,    20,     0,   309,   310,   311,    21,   312,   313,     0,
-    23,     0,   621,     0,   314,   315,   316,   317,   318,    26,
-     0,    27,   320,   202,   202,  1312,   202,   102,     0,     0,
-     0,     0,   322,     0,     0,   925,     0,     0,   102,   102,
-     0,   102,   102,   324,   325,   926,     0,     0,     0,     0,
-     0,   327,   328,   329,     0,     0,     0,   927,   625,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,  1186,
-     0,     0,     0,     0,   331,     0,     0,     0,     0,     0,
-     8,     9,     0,   205,    12,   206,     0,     0,     0,     0,
-    14,     0,     0,     0,     0,   102,     0,     0,     0,     0,
-     0,     0,   102,   121,    16,     0,    17,    18,   202,   202,
-  1186,   202,     0,    20,   235,     0,     0,     0,     0,     0,
-     0,   626,    23,     0,   626,   626,   626,     0,     0,     0,
-     0,    26,     0,   130,   131,     0,     0,     0,   777,     0,
-  1186,  1186,  1186,     0,     0,     0,     0,   626,   626,   626,
-   626,   626,   626,   626,     0,     0,     0,   626,     0,     0,
-   202,     0,     0,     0,     0,     0,   202,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   929,   929,   929,   577,   578,   579,   580,   581,   582,   583,
-   584,   585,   586,   587,   588,   589,   590,   591,   592,   593,
-   594,     0,     0,   777,     0,     0,   102,   573,   574,   575,
-   576,   577,   578,   579,   580,   581,   582,   583,   584,   585,
-   586,   587,   588,   589,   590,   591,   592,   593,   594,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   102,   102,
-   102,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   102,     0,     0,  1272,     0,   555,     0,   300,     8,
-     9,    10,   167,    12,   301,   302,   303,   735,   304,    14,
-     0,     0,     0,   626,   626,   626,   626,   626,   626,     0,
-     0,   626,     0,    16,   305,    17,    18,    19,     0,   306,
-   307,   308,    20,     0,   309,   310,   311,    21,   312,   313,
-     0,    23,     0,   621,     0,   314,   315,   316,   317,   318,
-    26,     0,    27,   320,  -313,     0,     0,   321,     0,     0,
-     0,     0,     0,   322,   102,   102,   925,     0,   102,     0,
-     0,   102,     0,     0,   324,   325,   926,     0,     0,     0,
-   102,     0,   327,   328,   329,     0,     0,     0,   927,   625,
-   102,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   663,     0,     0,   331,   573,   574,   575,   576,
-   577,   578,   579,   580,   581,   582,   583,   584,   585,   586,
-   587,   588,   589,   590,   591,   592,   593,   594,   626,   626,
-     0,   626,     0,     0,     0,     0,     0,     0,     0,  1468,
-     0,  1323,  1324,  1325,    10,   167,    12,   301,   302,   303,
-     0,   304,    14,  1326,     0,  1327,  1328,  1329,  1330,  1331,
-  1332,  1333,  1334,  1335,  1336,    15,    16,   305,    17,    18,
-    19,     0,   306,   307,   308,    20,     0,   309,   310,   311,
-    21,   312,   313,  1337,    23,  1338,     0,     0,   314,   315,
-   316,   317,   318,    26,     0,  1339,   320,   722,     0,  1340,
-   321,     0,   777,     0,     0,     0,   322,     0,     0,   323,
-     0,     0,     0,   626,   626,   626,   626,   324,   325,   326,
-     0,     0,     0,     0,     0,   327,   328,   329,     0,   102,
-     0,   330,     0,  1341,     0,     0,     0,     0,     0,     7,
-     8,     9,    10,   167,    12,    13,     0,  1469,   331,     0,
-    14,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    16,   626,    17,    18,     0,     0,
-     0,     0,     0,    20,     0,     0,     0,     0,    21,     0,
-     0,     0,    23,     0,     0,     0,   102,   102,     0,   102,
-     0,    26,     0,    27,    28,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    30,     0,     0,
-     0,     0,   102,     0,     0,   102,   102,    31,     0,     0,
-     0,     0,     0,     0,     0,    32,     0,     0,     0,    33,
+   594,  -521,     0,     0,   134,     0,     0,    83,     0,    83,
+     0,     0,     0,     0,  1068,    83,     0,    83,   263,     0,
+     0,     8,     9,   248,     0,    12,    13,     0,     0,   248,
+     0,    14,     0,     0,     0,     0,   145,   145,   145,     0,
+     0,     0,     0,     0,     0,    16,     0,    17,     0,   145,
+     0,     0,     0,     0,    20,     0,   264,   265,     0,     0,
+     0,     0,     0,    23,     0,   266,     0,     0,     0,     0,
+     0,     0,    26,     0,   130,   131,     0,   267,     0,     0,
+     0,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+   277,   278,   279,   280,   281,   282,   283,   284,   285,   286,
+   287,   288,     0,     0,   289,   290,   291,     0,   292,     0,
+     0,   293,     0,     0,     0,     0,     0,     0,   300,     8,
+     9,    10,   145,   145,     0,     0,   145,   294,     0,   145,
+     0,     0,     0,     0,   248,     0,     0,     0,   145,     0,
+   248,     0,   932,   932,   932,     0,     0,     0,   145,     0,
+   644,     0,     0,     0,     0,     0,     0,    21,     0,     0,
+     0,     0,     0,     0,   251,     0,     0,     0,     0,     0,
+     0,     0,    27,   320,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   248,     0,   248,     0,   145,   145,   635,
+    51,     0,     0,     0,     0,     0,   522,     7,     8,     9,
+    10,   167,    12,    13,    32,     0,   735,     0,    14,     0,
+     0,     0,     0,     0,     0,     0,    51,    51,     0,   152,
+     0,    51,    16,     0,    17,    18,     0,     0,    51,     0,
+     0,    20,   932,     0,     0,     0,    21,     0,     0,     0,
+    23,    51,   621,    51,     0,   248,   145,   145,   145,    26,
+     0,    27,    28,     0,     0,     0,     0,     0,     0,   783,
+     0,   248,     0,     0,  1068,  1180,   254,     0,     0,     0,
+     0,     0,     0,   248,     0,  1181,     0,     0,     0,     0,
+     0,     0,     0,    32,     0,     0,     0,  1182,   625,     0,
+     0,     0,     0,     0,    83,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   248,     0,   248,
+     0,     0,     0,     0,     0,     0,     0,   248,     0,   396,
+   396,     0,    51,     0,     0,     0,    51,    51,     0,     0,
+   254,     0,    51,     0,     0,   152,   152,   152,   248,     0,
+     0,     0,   431,   145,   145,     0,   145,     0,     0,     0,
+     0,    51,     0,     0,     0,    51,     0,     0,     0,     0,
+     0,    51,    51,     0,     0,     0,     0,     0,     0,   145,
+     0,     0,   145,   145,   635,     0,     0,     0,     0,    51,
+    51,   152,   127,   128,     0,     0,   215,   216,     0,   254,
+     0,     0,    14,     0,     0,   145,   145,   145,   145,   145,
+   635,   145,     0,     0,     0,   145,     0,     0,    51,     0,
+     0,     0,   783,     0,     0,    20,     0,     0,     0,     0,
+     0,     0,     0,     0,    23,     0,   621,     0,   932,   932,
+   932,     0,     0,    26,     0,   130,   131,     0,     0,     0,
+   145,   145,   145,   145,     0,    51,     0,   783,   784,   622,
+     7,     8,   785,    10,   167,    12,    13,     0,     0,   623,
+     0,    14,   145,     0,     0,     0,     0,   145,     0,     0,
+    83,   631,   625,     0,     0,    16,     0,    17,    18,    19,
+     0,     0,     0,     0,    20,  -522,     0,     0,     0,    21,
+     0,     0,     0,    23,   786,     0,   168,     0,     0,     0,
+     0,     0,    26,     0,    27,    28,     0,     0,   787,     0,
+   788,     0,     0,     0,     0,     0,   560,     0,    30,   145,
+   145,   145,   145,   145,   635,     0,     0,   145,    31,     0,
+     0,     0,     0,   396,     8,     9,    32,   167,    12,    13,
+    33,   254,   735,     0,    14,     0,    51,     0,     0,     0,
+     0,     0,  1447,     0,     0,     0,  -522,     0,    16,     0,
+    17,    18,     0,   145,   635,   145,     0,    20,     0,     0,
+     0,     0,     0,     0,     0,     0,    23,     0,   621,   396,
+     0,     0,   248,     0,     0,    26,     0,   130,   131,     0,
+    51,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   622,     0,     0,     0,    51,     0,     0,    51,     0,
+     0,   623,     0,     0,   431,   431,   431,     0,     0,     0,
+    51,     0,     0,   624,   625,     0,     0,     0,    51,     0,
+     0,     0,   145,   145,     0,   145,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     7,     8,     9,
+    10,   214,   215,   216,     0,     0,    51,    51,    14,     0,
+    51,     0,   152,   152,   152,   431,     0,     0,     0,    51,
+     0,     0,     0,     0,    51,    18,     0,    51,   932,     0,
+     0,    20,     0,     0,     0,     0,    21,     0,     0,     0,
+    23,     0,   621,     0,    51,     0,     0,     0,     0,    26,
+     0,    27,    28,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   193,     0,   145,   145,   635,
+   145,     0,     0,   560,     0,   194,   560,     0,     0,    78,
+     0,     0,     0,    32,     0,     0,     0,  1460,     0,     0,
+     0,     0,   560,   560,   560,     0,     0,     0,     0,   932,
+   932,   932,     0,     0,     0,    78,    78,   560,    78,     0,
+    78,     0,     0,     0,     0,     0,     0,    78,     0,   145,
+   248,     0,     0,     0,     0,   145,     0,     0,     0,     0,
+    78,     0,    78,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   784,     0,     7,     8,   785,    10,   167,
+    12,    13,     0,     0,     0,   254,    14,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   560,     0,     0,
+    16,     0,    17,    18,    19,     0,     0,     0,     0,    20,
+     0,     0,     0,     0,    21,     0,    51,     0,    23,   786,
+     0,   168,     0,     7,     8,     9,    10,    26,     0,    27,
+    28,     0,     0,   787,     0,   788,     0,     0,     0,     0,
+     0,    78,   396,    30,     0,    78,    78,     0,     0,   396,
+     0,    78,     0,    31,    78,    78,    78,    51,    51,    51,
+    51,    32,    21,     0,     0,    33,     0,     0,     0,     0,
+    78,     0,     0,     0,    78,    26,     0,    27,    28,     0,
+    78,    78,     7,     8,     9,    10,     0,     0,    13,     0,
+     0,   193,     0,     0,     0,     0,     0,     0,    78,    78,
+    78,   194,     0,     0,    51,     0,     0,     0,    51,    32,
+    18,     0,     0,   195,     0,     0,    51,    51,   431,   431,
+   431,    21,     0,     0,    51,     0,     0,    78,     0,     0,
+     0,     0,     0,     0,    26,     0,    27,    28,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,  1322,     0,  1323,  1324,  1325,    10,
-   167,    12,   301,   302,   303,   777,   304,    14,  1326,     0,
-  1327,  1328,  1329,  1330,  1331,  1332,  1333,  1334,  1335,  1336,
-    15,    16,   305,    17,    18,    19,     0,   306,   307,   308,
-    20,     0,   309,   310,   311,    21,   312,   313,  1337,    23,
-  1338,     0,   777,   314,   315,   316,   317,   318,    26,     0,
-  1339,   320,   722,     0,  1340,   321,     0,     0,     0,     0,
-   102,   322,   102,     0,   323,     0,     0,     0,     0,     0,
-     0,     0,   324,   325,   326,     0,     0,     0,     0,     0,
-   327,   328,   329,     0,     0,     0,   330,   555,  1341,     7,
-     8,     9,    10,   167,    12,   301,   302,   303,   735,   304,
-    14,     0,     0,   331,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    16,   305,    17,    18,    19,     0,
-   306,   307,   308,    20,     0,   309,   310,   311,    21,   312,
-   313,     0,    23,     0,   621,     0,   314,   315,   316,   317,
-   318,    26,     0,    27,    28,  -313,     0,     0,   321,     0,
-     0,     0,     0,     0,   322,     0,     0,  1212,     0,     0,
-     0,     0,     0,     0,     0,   324,   325,  1213,     0,     0,
-     0,     0,     0,   327,   328,   329,     0,     0,     0,  1214,
-   625,   734,     0,   300,     8,     9,    10,   167,    12,   301,
-   302,   303,   735,   304,    14,     0,   331,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    16,   305,
+   193,     0,     0,     0,     0,    51,     0,    51,     0,     0,
+   194,     0,    51,    51,    78,    51,     0,     0,    32,     0,
+     0,     0,   195,     0,     0,     0,  1544,     0,  -479,  -479,
+  -479,  -479,  -479,  -479,  -479,     0,     0,  -479,     0,  -479,
+   560,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+  -479,     0,  -479,     0,     0,     0,  -479,     0,     0,     0,
+     0,     0,  -479,     0,     0,     0,     0,  -479,     0,     0,
+     0,  -479,     0,  -479,     0,     0,     0,     0,     0,     0,
+  -479,     0,  -479,  -479,  -479,  -479,  -479,     0,  -479,  -479,
+  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
+  -479,   643,  -479,  -479,  -479,    78,  -479,  -479,  -479,  -479,
+  -479,     0,  -479,     0,     0,     0,     0,  1545,     0,     0,
+     0,     0,  -479,  -479,  -479,     0,  -479,     0,     0,     0,
+   560,   560,   560,     0,     0,     0,   431,   254,     0,     0,
+     0,   127,   128,   159,     0,   215,   216,     0,     0,    78,
+     0,    14,     0,     0,     0,     0,     0,     0,     0,     7,
+     8,     9,    10,     0,    78,   204,     0,    78,     0,     0,
+     0,     0,     0,     0,    20,    51,    51,   152,     0,    78,
+     0,     0,   254,    23,     0,   621,     0,    78,     0,     0,
+     0,     0,    26,     0,   130,   131,     0,     0,    21,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   622,     0,
+     0,    26,     0,    27,    28,    78,    78,   192,   623,    78,
+  1213,    78,    78,    78,     0,     0,     0,   193,    78,     0,
+   624,   625,     0,    78,     0,     0,    78,   194,     0,     0,
+     0,     0,     0,     0,     0,    32,     0,     0,     0,   195,
+     0,     0,    51,    78,     0,     0,     0,     0,     0,   159,
+   159,   159,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   254,     0,     0,     0,     0,     0,     0,
+     0,     0,    51,     0,     0,   204,     0,     0,   555,     0,
+   300,     8,     9,    10,   167,    12,   301,   302,   303,   735,
+   304,    14,     0,   204,   204,   481,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    16,   305,    17,    18,    19,
+     0,   306,   307,   308,    20,     0,   309,   310,   311,    21,
+   312,   313,   204,    23,     0,   621,     0,   314,   315,   316,
+   317,   318,    26,     0,    27,   320,  -313,     0,     0,   321,
+     0,     0,     0,     0,     0,   322,     0,   431,   924,     0,
+   431,   431,   431,   254,     0,   643,   324,   325,   925,     0,
+     0,     0,     0,     0,   327,   328,   329,     0,     0,     0,
+   926,   625,     0,    51,    51,    51,   152,   152,   152,   431,
+     0,   254,     0,    51,     0,    78,     0,   331,     0,     0,
+     8,     9,     0,     0,    12,   246,     0,     0,   532,     0,
+    14,     0,     0,     0,     0,     0,  1213,  1213,  1213,     0,
+     0,     0,     0,     0,    16,     0,    17,     0,     0,     0,
+     0,     0,     0,    20,     0,     0,    78,    78,    78,    78,
+     0,     0,    23,     0,   621,     0,     0,     0,     0,     0,
+    51,    26,     0,   130,   131,    51,     0,     0,    51,   628,
+   628,   628,     0,     0,     0,     0,     0,   622,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   623,     7,   127,
+   128,    10,     0,    78,   519,     0,     0,    78,     0,   624,
+   625,     0,     0,     0,     0,    78,    78,     0,     0,     0,
+     0,     0,     0,    78,     0,     0,    18,   431,    51,    51,
+   431,   431,   431,     0,   204,    51,     0,    21,     0,     0,
+     0,     8,     9,     0,   167,    12,    13,     0,     0,     0,
+    26,    14,    27,    28,    78,     0,    78,     0,     0,     0,
+     0,    78,    78,     0,    78,    16,    30,    17,    18,     0,
+     0,    51,    51,    51,    20,     0,    31,     0,     0,     0,
+     0,     0,     0,   684,    32,     0,   168,     0,    33,     0,
+     0,     0,    26,     0,   130,   131,     0,     0,     0,     0,
+   204,   204,     0,     0,   204,     0,   481,   481,   481,   756,
+     0,     0,     0,   204,     0,     0,     0,     0,   204,     0,
+     0,   204,  1462,     0,  1319,  1320,  1321,    10,   167,    12,
+   301,   302,   303,     0,   304,    14,  1322,     0,  1323,  1324,
+  1325,  1326,  1327,  1328,  1329,  1330,  1331,  1332,    15,    16,
+   305,    17,    18,    19,     0,   306,   307,   308,    20,     0,
+   309,   310,   311,    21,   312,   313,  1333,    23,  1334,     0,
+     0,   314,   315,   316,   317,   318,    26,     0,  1335,   320,
+   722,     0,  1336,   321,     0,     0,  1213,     0,     0,   322,
+     0,     0,   323,     0,     0,     0,     0,   643,     0,   202,
+   324,   325,   326,     0,     0,     0,     0,     0,   327,   328,
+   329,     0,     0,     0,   330,     0,  1337,  1379,  1380,     9,
+    10,     0,     0,     0,   257,     0,     0,   261,     0,     0,
+  1463,   331,     0,     0,    78,    78,    78,     0,   890,     0,
+     0,     0,     0,     0,   369,   371,     0,     0,   257,     0,
+   365,     0,   628,   628,   628,     0,    21,  1213,  1213,  1213,
+     6,   628,     7,     8,     9,    10,    11,    12,    13,    26,
+     0,    27,    28,    14,     0,     0,     0,  1381,     0,  1215,
+   204,     0,     0,    51,     0,   193,    15,    16,     0,    17,
+    18,    19,     0,     0,     0,   194,    20,     0,     0,     0,
+     0,    21,     0,    32,    22,    23,    24,   195,    25,     0,
+     0,    78,     0,     0,    26,     0,    27,    28,     0,   202,
+    29,   973,     0,   973,   973,     0,   628,     0,     0,     0,
+    30,     0,     0,     0,     0,     0,     0,   202,   202,   202,
+    31,    78,     0,     0,     0,     0,     0,   487,    32,     0,
+     0,     0,    33,     0,     0,     0,     0,    34,     0,     0,
+     0,     0,     0,     0,     0,     0,   202,     0,   973,     0,
+     0,     0,     0,     7,     8,     9,    10,     0,     0,   246,
+   204,   204,   756,   756,   756,     0,     0,     0,   204,     0,
+     0,     0,   261,     0,     0,     0,     0,     0,     0,     0,
+     0,    18,     0,     0,     0,     0,   257,     0,     0,     0,
+     0,     0,    21,     0,     0,     0,     0,     0,  1379,   127,
+   128,    10,     0,     0,     0,    26,   204,    27,    28,     8,
+     9,     0,   167,    12,    13,     0,     0,   735,     0,    14,
+     0,   193,    78,    78,    78,    78,    78,    78,   532,   532,
+   532,   194,    78,    16,     0,    17,    18,    21,     0,    32,
+     0,   628,    20,   195,     0,     0,     0,   563,     0,     0,
+    26,    23,    27,    28,     0,  1215,  1215,  1215,  1381,     0,
+    26,     0,   130,   131,     0,     0,    30,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    31,     0,     0,   257,
+   261,     0,     0,     0,    32,     0,     0,     0,    33,    78,
+     0,     0,     0,     0,    78,     0,   784,    78,     7,     8,
+   785,    10,   167,    12,    13,     0,     0,     0,     0,    14,
+     0,     0,     0,     0,   628,   628,     0,     0,   628,   690,
+     0,   628,     0,    16,     0,    17,    18,    19,   202,     0,
+   628,     0,    20,  -524,   628,   628,   628,    21,     0,     0,
+   628,    23,   786,     0,   168,     0,     0,    78,    78,     0,
+    26,     0,    27,    28,    78,     0,   787,     0,   788,     0,
+     0,     0,     0,     0,     0,     0,    30,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    31,     0,     0,   973,
+   973,  1186,     0,     0,    32,   737,     0,     0,    33,     0,
+    78,    78,    78,     0,   202,   202,     0,     0,   202,     0,
+   202,   202,   202,   202,  -524,     0,     0,   202,     0,     0,
+     0,     0,   202,     0,     0,   202,     0,     0,     0,     0,
+     0,     0,     0,     0,  1186,     0,     8,     9,     0,     0,
+     0,   519,     0,     0,     0,     0,     0,     0,   756,   756,
+   756,     0,   166,     0,     7,     8,     9,    10,   167,    12,
+    13,     0,     0,    18,   823,    14,   204,   826,     0,     0,
+     0,     0,   829,   830,   832,   833,   834,     0,     0,    16,
+   621,    17,    18,    19,     0,   563,     0,    26,    20,   130,
+   131,     0,     0,    21,     0,     0,     0,    23,   851,     0,
+   168,     0,     0,  1499,     0,     0,    26,     0,    27,    28,
+     0,     0,     0,  1500,     0,  1215,     0,     0,     0,     0,
+     0,     0,    30,     0,     0,  1501,   625,     0,     0,     0,
+     0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
+    32,     0,     0,     0,    33,   890,   890,     0,   890,    34,
+     0,   910,     0,     0,     0,     0,     0,     0,   910,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   257,   261,
+     0,   628,     0,     0,   628,   628,   628,     0,     0,     0,
+     0,     0,     0,     0,   202,     0,  1215,  1215,  1215,     0,
+     0,     0,     0,     0,     0,     0,     0,   973,   973,   973,
+  1186,  1186,  1186,  1307,     0,     0,     0,   973,     0,     0,
+     0,     0,    78,   300,     8,     9,    10,   167,    12,    13,
+     0,     0,   735,     0,    14,   202,     0,   202,   202,     0,
+  1186,  1186,  1186,     0,     0,     0,     0,     0,    16,     0,
+    17,    18,   756,   756,   756,   756,     0,    20,     0,     0,
+     0,     0,    21,     0,     0,     0,    23,     0,   621,     0,
+     0,     0,     0,     0,   204,    26,     0,    27,   320,   690,
+     0,     0,   202,     0,     0,     0,     0,     0,     0,     0,
+     0,  1154,     0,     0,   202,   202,   202,   202,   202,   487,
+     0,  1155,   202,     0,     0,     0,     0,     0,     0,    32,
+     0,     0,     0,  1156,   625,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   261,     0,     0,
+     0,  1307,   973,   973,  1307,  1307,  1307,     0,     0,   973,
+   202,     0,   737,   626,   626,   626,     0,     0,   737,     0,
+     0,   734,     0,   300,     8,     9,    10,   167,    12,   301,
+   302,   303,   735,   304,    14,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   204,     0,   204,    16,   305,
     17,    18,    19,     0,   306,   307,   308,    20,     0,   309,
    310,   311,    21,   312,   313,     0,    23,     0,     0,     0,
    314,   315,   316,   317,   318,    26,     0,    27,   320,     0,
-     0,     0,   321,     0,     0,     0,     0,     0,   322,     0,
+     0,     0,   321,     0,     0,     0,     0,  1119,   322,     0,
      0,   323,     0,     0,     0,     0,     0,     0,     0,   324,
    325,   326,     0,     0,     0,     0,     0,   327,   328,   329,
-     0,     0,   725,   330,   843,   844,   845,    10,     0,    12,
-   536,   302,   303,     0,   304,    14,     0,     0,  -801,     0,
-   331,     0,     0,     0,     0,     0,     0,     0,     0,    16,
-   305,    17,     0,    19,     0,   306,   307,   308,    20,     0,
+     0,     0,     0,   330,  1307,  1307,     0,  1307,     0,     0,
+     0,     0,     0,   851,     0,     0,     0,     0,  -799,   737,
+   331,     0,     0,   910,     0,     0,     0,  1056,     8,   785,
+    10,   205,    12,   206,     0,   257,   261,   257,    14,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   481,     0,    16,     0,    17,    18,     0,     0,     0,     0,
+     0,    20,   690,     0,  1175,     0,    21,     0,   910,     0,
+    23,     0,     0,   202,   202,  1184,     0,     0,     0,    26,
+   257,    27,    28,     0,     0,     0,     0,  1058,     0,  1307,
+  1307,  1307,  1307,   102,     0,    30,     0,     0,     0,     0,
+     0,     0,   121,   102,     0,    31,     0,     0,     0,   102,
+   102,   910,   102,    32,     0,     0,     0,    33,  1184,     0,
+     0,   481,   481,   481,  1219,     0,     0,     0,     0,     0,
+     0,     0,   202,   202,   202,     0,     0,     0,     0,     0,
+   737,  1307,     0,     0,   235,     0,     0,   204,     0,     0,
+   202,     0,   737,     0,     7,     8,     9,    10,     0,     0,
+    13,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   487,     0,     0,     0,     0,   626,   626,   626,     0,
+     0,     0,    18,     0,     0,   928,   737,     0,   737,     0,
+     0,     0,     0,    21,     0,     0,  1263,     0,     0,     0,
+     0,     0,     0,   389,     0,   121,    26,     0,    27,    28,
+     0,     0,   102,   102,     0,     0,     0,  1278,     0,   102,
+   102,     0,   476,   102,   102,   102,     0,   417,   102,   102,
+   102,     0,   477,     0,     0,     0,     0,     0,     0,     0,
+    32,     0,     0,     0,   478,   626,     0,   626,   626,     0,
+   626,     0,     0,   910,     0,     0,     0,     0,     0,     0,
+     0,   257,   578,   579,   580,   581,   582,   583,   584,   585,
+   586,   587,   588,   589,   590,   591,   592,   593,   594,   910,
+     0,   202,   202,   202,   202,   202,  1184,   202,     0,  1308,
+     0,   202,   626,     0,     0,     0,     0,   300,     8,     9,
+    10,   167,    12,    13,     0,     0,   735,     0,    14,   910,
+     0,     0,     0,     0,  1184,  1184,  1184,   235,   102,     0,
+     0,     0,    16,     0,    17,    18,   202,   202,   202,   202,
+     0,    20,     0,     0,     0,     0,    21,     0,   102,     0,
+    23,     0,   621,     0,     0,     8,     9,     0,   202,    26,
+    13,    27,   320,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,  1304,     0,     0,     0,     0,
+     0,     0,    18,     0,     0,  1305,     0,   102,     7,     8,
+     9,    10,     0,    32,     0,   626,     0,  1306,   625,   621,
+     0,     0,     0,     0,     0,     0,    26,     0,   130,   131,
+     0,     0,     0,   910,     0,   202,   202,   202,   202,   202,
+  1184,     0,  1499,   202,     0,     0,     0,    21,     0,     0,
+     0,     0,  1500,     0,     0,     0,   102,     0,   102,   102,
+    26,     0,    27,    28,  1501,   625,  1454,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   193,     0,     0,   202,
+     0,   202,     0,     0,     0,     0,   194,     0,   626,   626,
+     0,  1219,   626,     0,    32,   626,     0,     0,   195,     0,
+     0,     0,   102,     0,   626,     0,     0,     0,   928,   928,
+   928,     0,     0,     0,   626,     0,     0,     0,     0,     0,
+     0,   102,     0,     0,     0,     0,     0,     0,   102,     0,
+     0,   102,   854,     0,   300,     8,     9,    10,   167,    12,
+   301,   302,   303,   102,   304,    14,     0,     0,   202,   202,
+  1308,   202,     0,   626,   626,   626,     0,     0,     0,    16,
+   305,    17,    18,    19,     0,   306,   307,   308,    20,     0,
    309,   310,   311,    21,   312,   313,     0,    23,     0,     0,
-     0,   314,   315,   316,   317,   318,    26,     0,   846,   847,
-   726,     0,     0,   321,     0,     0,     0,     0,     0,   322,
+     0,   314,   315,   316,   317,   318,    26,     0,    27,   320,
+  1562,     0,  -789,   321,  1184,     0,     0,     0,   928,   322,
      0,     0,   323,     0,     0,     0,     0,     0,     0,     0,
-   324,   325,   326,     0,     0,     0,     0,     0,   327,   328,
-   329,     0,     0,     0,   330,   848,   555,     0,   300,     8,
-     9,    10,     0,    12,   301,   302,   303,     0,   304,    14,
-  1007,   331,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    16,   305,    17,    18,    19,     0,   306,
-   307,   308,    20,     0,   309,   310,   311,    21,   312,   313,
-     0,    23,     0,     0,     0,   314,   315,   316,   317,   318,
-    26,     0,    27,   320,  -313,     0,     0,   321,     0,     0,
-     0,     0,     0,   322,     0,     0,   556,     0,     0,     0,
-     0,     0,     0,     0,   324,   325,   557,     0,     0,     0,
-     0,     0,   327,   328,   329,     0,     0,   725,   558,   843,
-   844,   845,    10,     0,    12,   536,   302,   303,     0,   304,
-    14,     0,     0,     0,     0,   331,     0,     0,     0,     0,
-     0,     0,     0,     0,    16,   305,    17,     0,    19,     0,
+   324,   325,   326,     0,   102,     0,   776,     0,   327,   328,
+   329,     0,     0,     0,   330,     0,     0,     0,   910,     0,
+     0,     0,     0,   202,   202,  1184,   202,     0,     0,     0,
+   102,   331,     0,     0,     0,     0,     0,     7,     8,     9,
+    10,   167,    12,    13,     0,     0,     0,     0,    14,     0,
+   563,     0,     0,     0,     0,  1184,  1184,  1184,     0,     0,
+     0,     0,    16,     0,    17,    18,    19,     0,     0,   690,
+     0,    20,     0,     0,     0,   202,    21,     0,     0,     0,
+    23,   202,     0,   168,     0,     0,     0,     0,     0,    26,
+     0,    27,    28,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    30,     0,   102,     0,     0,
+     0,     0,     0,     0,     0,    31,     0,     0,   102,   102,
+     0,   102,   102,    32,     0,   626,     0,    33,   626,   626,
+   626,     0,    34,   784,     0,     7,     8,   785,    10,   167,
+    12,    13,     0,     0,     0,     0,    14,     0,     0,     0,
+     0,   626,   626,   626,   626,   626,   626,   626,     0,     0,
+    16,   626,    17,    18,    19,     0,     0,     0,     0,    20,
+  -523,     0,     0,     0,    21,   102,     0,     0,    23,   786,
+     0,   168,   102,   121,   928,   928,   928,    26,     0,    27,
+    28,  1515,     0,   787,   235,   788,     0,     0,     0,     0,
+     0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    31,     0,     0,     0,     0,   776,     0,
+     0,    32,     0,     0,     0,    33,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,  -523,  1516,   573,   574,   575,   576,   577,   578,   579,
+   580,   581,   582,   583,   584,   585,   586,   587,   588,   589,
+   590,   591,   592,   593,   594,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   626,   626,   626,   626,   626,
+   626,     0,   776,   626,     0,   102,     0,     0,     0,     0,
+     0,     0,     0,   555,     0,     7,     8,     9,    10,   167,
+    12,   301,   302,   303,   735,   304,    14,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   102,   102,   102,
+    16,   305,    17,    18,    19,     0,   306,   307,   308,    20,
+   102,   309,   310,   311,    21,   312,   313,     0,    23,     0,
+   621,     0,   314,   315,   316,   317,   318,    26,     0,    27,
+    28,  -313,     0,     0,   321,     0,     0,     0,     0,     0,
+   322,     0,     0,  1210,     0,     0,     7,   127,   128,    10,
+     0,   324,   325,  1211,     0,     0,     0,     0,     0,   327,
+   328,   329,     0,     0,     0,  1212,   625,     0,   626,   626,
+     0,   626,     0,     0,    18,     0,     0,     0,     0,     0,
+     0,     0,   331,   102,   102,    21,     0,   102,     0,     0,
+   102,     0,     0,     0,     0,     0,     0,     0,    26,   102,
+    27,    28,     0,     0,     0,     0,     0,     0,     0,   102,
+     0,     0,     0,     0,   149,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   150,     0,     0,     0,     0,     0,
+     0,     0,    32,     0,     0,     0,   151,   579,   580,   581,
+   582,   583,   584,   585,   586,   587,   588,   589,   590,   591,
+   592,   593,   594,   626,   626,   626,   626,  1318,     0,  1319,
+  1320,  1321,    10,   167,    12,   301,   302,   303,     0,   304,
+    14,  1322,     0,  1323,  1324,  1325,  1326,  1327,  1328,  1329,
+  1330,  1331,  1332,    15,    16,   305,    17,    18,    19,     0,
    306,   307,   308,    20,     0,   309,   310,   311,    21,   312,
-   313,     0,    23,     0,     0,     0,   314,   315,   316,   317,
-   318,    26,     0,   846,   847,   726,     0,     0,   321,     0,
-     0,     0,     0,     0,   322,     0,     0,   323,     0,     0,
-     0,     0,     0,     0,     0,   324,   325,   326,     0,     0,
-     0,     0,     0,   327,   328,   329,     0,     0,     0,   330,
-   848,   725,     0,   843,   844,   845,    10,     0,    12,   536,
-   302,   303,     0,   304,    14,     0,   331,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    16,   305,
-    17,     0,    19,     0,   306,   307,   308,    20,     0,   309,
-   310,   311,    21,   312,   313,     0,    23,     0,     0,     0,
-   314,   315,   316,   317,   318,    26,     0,   846,   847,   726,
-     0,     0,   321,     0,     0,     0,     0,     0,   322,     0,
-     0,   323,     0,     0,     0,     0,     0,     0,     0,   324,
-   325,   326,     0,     0,     0,     0,     0,   327,   328,   329,
-     0,     0,   725,   330,   843,   844,   845,    10,     0,    12,
-   536,   302,   303,     0,   304,    14,     0,     0,     0,  -483,
-   331,     0,     0,     0,     0,     0,     0,     0,     0,    16,
-   305,    17,     0,    19,     0,   306,   307,   308,    20,     0,
+   313,  1333,    23,  1334,     0,   626,   314,   315,   316,   317,
+   318,    26,     0,  1335,   320,   722,     0,  1336,   321,     0,
+   776,     0,     0,     0,   322,     0,     0,   323,     0,     0,
+     0,     0,     0,     0,    18,   324,   325,   326,     0,     0,
+     0,     0,     0,   327,   328,   329,     0,   102,     0,   330,
+     0,  1337,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   331,   573,   574,   575,
+   576,   577,   578,   579,   580,   581,   582,   583,   584,   585,
+   586,   587,   588,   589,   590,   591,   592,   593,   594,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   102,   102,     0,   102,   725,     0,
+   842,   843,   844,    10,     0,    12,   536,   302,   303,     0,
+   304,    14,     0,     0,     0,     0,     0,     0,     0,     0,
+   102,     0,     0,   102,   102,    16,   305,    17,     0,    19,
+     0,   306,   307,   308,    20,     0,   309,   310,   311,    21,
+   312,   313,     0,    23,     0,     0,     0,   314,   315,   316,
+   317,   318,    26,     0,   845,   846,   726,     0,     0,   321,
+     0,     0,     0,   776,     0,   322,     0,     0,   323,     0,
+     0,     0,     0,     0,     0,     0,   324,   325,   326,     0,
+     0,     0,     0,     0,   327,   328,   329,     0,     0,     0,
+   330,   847,   555,     0,   300,     8,     9,    10,   776,    12,
+   301,   302,   303,     0,   304,    14,  1006,   331,     0,     0,
+     0,     0,     0,     0,     0,     0,   102,     0,   102,    16,
+   305,    17,    18,    19,     0,   306,   307,   308,    20,     0,
    309,   310,   311,    21,   312,   313,     0,    23,     0,     0,
-     0,   314,   315,   316,   317,   318,    26,     0,   846,   847,
-   726,     0,     0,   321,     0,     0,     0,     0,     0,   322,
-     0,     0,   323,     0,     0,     0,     0,     0,     0,     0,
-   324,   325,   326,     0,     0,     0,     0,     0,   327,   328,
-   329,     0,     0,   725,   330,   300,     8,     9,    10,     0,
+     0,   314,   315,   316,   317,   318,    26,     0,    27,   320,
+  -313,     0,     0,   321,     0,     0,     0,     0,     0,   322,
+     0,     0,   556,     0,     0,     0,     0,     0,     0,     0,
+   324,   325,   557,     0,     0,     0,     0,     0,   327,   328,
+   329,     0,     0,   725,   558,   842,   843,   844,    10,     0,
     12,   536,   302,   303,     0,   304,    14,     0,     0,     0,
-  1361,   331,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   331,     0,     0,     0,     0,     0,     0,     0,     0,
     16,   305,    17,     0,    19,     0,   306,   307,   308,    20,
      0,   309,   310,   311,    21,   312,   313,     0,    23,     0,
-     0,     0,   314,   315,   316,   317,   318,    26,     0,    27,
-   320,   726,     0,     0,   321,     0,     0,     0,     0,     0,
+     0,     0,   314,   315,   316,   317,   318,    26,     0,   845,
+   846,   726,     0,     0,   321,     0,     0,     0,     0,     0,
    322,     0,     0,   323,     0,     0,     0,     0,     0,     0,
      0,   324,   325,   326,     0,     0,     0,     0,     0,   327,
-   328,   329,     0,     0,     0,   330,     0,   555,     0,     7,
-     8,     9,    10,  1365,    12,   301,   302,   303,     0,   304,
+   328,   329,     0,     0,     0,   330,   847,   725,     0,   842,
+   843,   844,    10,     0,    12,   536,   302,   303,     0,   304,
     14,     0,   331,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    16,   305,    17,    18,    19,     0,
+     0,     0,     0,     0,    16,   305,    17,     0,    19,     0,
    306,   307,   308,    20,     0,   309,   310,   311,    21,   312,
    313,     0,    23,     0,     0,     0,   314,   315,   316,   317,
-   318,    26,     0,    27,    28,  -313,     0,     0,   321,     0,
-     0,     0,     0,     0,   322,     0,     0,  1537,     0,     0,
-     0,     0,     0,     0,     0,   324,   325,  1538,     0,     0,
-     0,     0,     0,   327,   328,   329,     0,     0,   725,  1539,
+   318,    26,     0,   845,   846,   726,     0,     0,   321,     0,
+     0,     0,     0,     0,   322,     0,     0,   323,     0,     0,
+     0,     0,     0,     0,     0,   324,   325,   326,     0,     0,
+     0,     0,     0,   327,   328,   329,     0,     0,   725,   330,
+   842,   843,   844,    10,     0,    12,   536,   302,   303,     0,
+   304,    14,     0,     0,     0,  -483,   331,     0,     0,     0,
+     0,     0,     0,     0,     0,    16,   305,    17,     0,    19,
+     0,   306,   307,   308,    20,     0,   309,   310,   311,    21,
+   312,   313,     0,    23,     0,     0,     0,   314,   315,   316,
+   317,   318,    26,     0,   845,   846,   726,     0,     0,   321,
+     0,     0,     0,     0,     0,   322,     0,     0,   323,     0,
+     0,     0,     0,     0,     0,     0,   324,   325,   326,     0,
+     0,     0,     0,     0,   327,   328,   329,     0,     0,   725,
+   330,   300,     8,     9,    10,     0,    12,   536,   302,   303,
+     0,   304,    14,     0,     0,     0,  1357,   331,     0,     0,
+     0,     0,     0,     0,     0,     0,    16,   305,    17,     0,
+    19,     0,   306,   307,   308,    20,     0,   309,   310,   311,
+    21,   312,   313,     0,    23,     0,     0,     0,   314,   315,
+   316,   317,   318,    26,     0,    27,   320,   726,     0,     0,
+   321,     0,     0,     0,     0,     0,   322,     0,     0,   323,
+     0,     0,     0,     0,     0,     0,     0,   324,   325,   326,
+     0,     0,     0,     0,     0,   327,   328,   329,     0,     0,
+     0,   330,     0,   555,     0,     7,     8,     9,    10,  1361,
+    12,   301,   302,   303,     0,   304,    14,     0,   331,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    16,   305,    17,    18,    19,     0,   306,   307,   308,    20,
+     0,   309,   310,   311,    21,   312,   313,     0,    23,     0,
+     0,     0,   314,   315,   316,   317,   318,    26,     0,    27,
+    28,  -313,     0,     0,   321,     0,     0,     0,     0,     0,
+   322,     0,     0,  1531,     0,     0,     0,     0,     0,     0,
+     0,   324,   325,  1532,     0,     0,     0,     0,     0,   327,
+   328,   329,     0,     0,   725,  1533,   300,     8,     9,    10,
+     0,    12,   536,   302,   303,     0,   304,    14,     0,     0,
+     0,     0,   331,     0,     0,     0,     0,     0,     0,     0,
+     0,    16,   305,    17,     0,    19,     0,   306,   307,   308,
+    20,     0,   309,   310,   311,    21,   312,   313,     0,    23,
+     0,     0,     0,   314,   315,   316,   317,   318,    26,     0,
+    27,   320,   726,     0,     0,   321,     0,     0,     0,     0,
+     0,   322,     0,     0,   323,     0,     0,     0,     0,     0,
+     0,     0,   324,   325,   326,     0,     0,     0,     0,     0,
+   327,   328,   329,     0,     0,   854,   330,   300,     8,     9,
+    10,     0,    12,   536,   302,   303,     0,   304,    14,     0,
+     0,     0,     0,   331,     0,     0,     0,     0,     0,     0,
+     0,     0,    16,   305,    17,     0,    19,     0,   306,   307,
+   308,    20,     0,   309,   310,   311,    21,   312,   313,     0,
+    23,     0,     0,     0,   314,   315,   316,   317,   318,    26,
+     0,    27,   320,     0,     0,     0,   321,  -789,     0,     0,
+     0,     0,   322,     0,     0,   323,     0,     0,     0,     0,
+     0,     0,     0,   324,   325,   326,     0,     0,     0,     0,
+     0,   327,   328,   329,     0,     0,  1615,   330,   300,     8,
+     9,    10,     0,    12,   301,   302,   303,     0,   304,    14,
+     0,     0,     0,     0,   331,     0,     0,     0,     0,     0,
+     0,     0,     0,    16,   305,    17,     0,    19,     0,   306,
+   307,   308,    20,     0,   309,   310,   311,    21,   312,   313,
+     0,    23,     0,     0,     0,   314,   315,   316,   317,   318,
+    26,     0,    27,   320,     0,     0,  -196,   321,     0,     0,
+     0,     0,     0,   322,     0,     0,   323,     0,     0,     0,
+     0,     0,     0,     0,   324,   325,   326,     0,     0,     0,
+     0,     0,   327,   328,   329,     0,     0,   854,   330,   300,
+     8,     9,    10,     0,    12,   536,   302,   303,     0,   304,
+    14,     0,     0,     0,     0,   331,     0,     0,     0,     0,
+     0,     0,     0,     0,    16,   305,    17,     0,    19,     0,
+   306,   307,   308,    20,     0,   309,   310,   311,    21,   312,
+   313,     0,    23,     0,     0,     0,   314,   315,   316,   317,
+   318,    26,     0,    27,   320,     0,     0,     0,   321,     0,
+     0,     0,     0,     0,   322,     0,     0,   323,     0,     0,
+     0,     0,     0,     0,     0,   324,   325,   326,     0,     0,
+     0,     0,     0,   327,   328,   329,     0,     0,   947,   330,
    300,     8,     9,    10,     0,    12,   536,   302,   303,     0,
-   304,    14,     0,     0,     0,     0,   331,     0,     0,     0,
+   304,    14,     0,     0,  -789,     0,   331,     0,     0,     0,
      0,     0,     0,     0,     0,    16,   305,    17,     0,    19,
      0,   306,   307,   308,    20,     0,   309,   310,   311,    21,
    312,   313,     0,    23,     0,     0,     0,   314,   315,   316,
-   317,   318,    26,     0,    27,   320,   726,     0,     0,   321,
+   317,   318,    26,     0,    27,   320,     0,     0,     0,   321,
      0,     0,     0,     0,     0,   322,     0,     0,   323,     0,
      0,     0,     0,     0,     0,     0,   324,   325,   326,     0,
-     0,     0,     0,     0,   327,   328,   329,     0,     0,   855,
+     0,     0,     0,     0,   327,   328,   329,     0,     0,   949,
    330,   300,     8,     9,    10,     0,    12,   536,   302,   303,
      0,   304,    14,     0,     0,     0,     0,   331,     0,     0,
      0,     0,     0,     0,     0,     0,    16,   305,    17,     0,
     19,     0,   306,   307,   308,    20,     0,   309,   310,   311,
     21,   312,   313,     0,    23,     0,     0,     0,   314,   315,
    316,   317,   318,    26,     0,    27,   320,     0,     0,     0,
-   321,  -791,     0,     0,     0,     0,   322,     0,     0,   323,
+   321,     0,     0,     0,     0,     0,   322,     0,     0,   323,
      0,     0,     0,     0,     0,     0,     0,   324,   325,   326,
      0,     0,     0,     0,     0,   327,   328,   329,     0,     0,
-  1621,   330,   300,     8,     9,    10,     0,    12,   301,   302,
+  1580,   330,   300,     8,     9,    10,     0,    12,   536,   302,
    303,     0,   304,    14,     0,     0,     0,     0,   331,     0,
      0,     0,     0,     0,     0,     0,     0,    16,   305,    17,
      0,    19,     0,   306,   307,   308,    20,     0,   309,   310,
    311,    21,   312,   313,     0,    23,     0,     0,     0,   314,
    315,   316,   317,   318,    26,     0,    27,   320,     0,     0,
-  -196,   321,     0,     0,     0,     0,     0,   322,     0,     0,
+     0,   321,     0,     0,     0,     0,     0,   322,     0,     0,
    323,     0,     0,     0,     0,     0,     0,     0,   324,   325,
    326,     0,     0,     0,     0,     0,   327,   328,   329,     0,
-     0,   855,   330,   300,     8,     9,    10,     0,    12,   536,
+     0,     0,   330,   300,     8,     9,    10,     0,    12,   536,
    302,   303,     0,   304,    14,     0,     0,     0,     0,   331,
      0,     0,     0,     0,     0,     0,     0,     0,    16,   305,
     17,     0,    19,     0,   306,   307,   308,    20,     0,   309,
@@ -2392,1201 +2366,1139 @@ static const short yytable[] = {    59,
      0,     0,   321,     0,     0,     0,     0,     0,   322,     0,
      0,   323,     0,     0,     0,     0,     0,     0,     0,   324,
    325,   326,     0,     0,     0,     0,     0,   327,   328,   329,
-     0,     0,   948,   330,   300,     8,     9,    10,     0,    12,
-   536,   302,   303,     0,   304,    14,     0,     0,  -791,     0,
-   331,     0,     0,     0,     0,     0,     0,     0,     0,    16,
-   305,    17,     0,    19,     0,   306,   307,   308,    20,     0,
-   309,   310,   311,    21,   312,   313,     0,    23,     0,     0,
-     0,   314,   315,   316,   317,   318,    26,     0,    27,   320,
-     0,     0,     0,   321,     0,     0,     0,     0,     0,   322,
-     0,     0,   323,     0,     0,     0,     0,     0,     0,     0,
-   324,   325,   326,     0,     0,     0,     0,     0,   327,   328,
-   329,     0,     0,   950,   330,   300,     8,     9,    10,     0,
-    12,   536,   302,   303,     0,   304,    14,     0,     0,     0,
-     0,   331,     0,     0,     0,     0,     0,     0,     0,     0,
-    16,   305,    17,     0,    19,     0,   306,   307,   308,    20,
-     0,   309,   310,   311,    21,   312,   313,     0,    23,     0,
-     0,     0,   314,   315,   316,   317,   318,    26,     0,    27,
-   320,     0,     0,     0,   321,     0,     0,     0,     0,     0,
-   322,     0,     0,   323,     0,     0,     0,     0,     0,     0,
-     0,   324,   325,   326,     0,     0,     0,     0,     0,   327,
-   328,   329,     0,     0,  1586,   330,   300,     8,     9,    10,
-     0,    12,   536,   302,   303,     0,   304,    14,     0,     0,
-     0,     0,   331,     0,     0,     0,     0,     0,     0,     0,
-     0,    16,   305,    17,     0,    19,     0,   306,   307,   308,
-    20,     0,   309,   310,   311,    21,   312,   313,     0,    23,
-     0,     0,     0,   314,   315,   316,   317,   318,    26,     0,
-    27,   320,     0,     0,     0,   321,     0,     0,     0,     0,
-     0,   322,     0,     0,   323,     0,     0,     0,     0,     0,
-     0,     0,   324,   325,   326,     0,     0,     0,     0,     0,
-   327,   328,   329,     0,     0,     0,   330,   300,     8,     9,
-    10,     0,    12,   536,   302,   303,     0,   304,    14,     0,
-     0,     0,     0,   331,     0,     0,     0,     0,     0,     0,
-     0,     0,    16,   305,    17,     0,    19,     0,   306,   307,
-   308,    20,     0,   309,   310,   311,    21,   312,   313,     0,
-    23,     0,     0,     0,   314,   315,   316,   317,   318,    26,
-     0,    27,   320,     0,     0,     0,   321,     0,     0,     0,
-     0,     0,   322,     0,     0,   323,     0,     0,     0,     0,
-     0,     0,     0,   324,   325,   326,     0,     0,     0,     0,
-     0,   327,   328,   329,     0,     0,     0,   330,   579,   580,
-   581,   582,   583,   584,   585,   586,   587,   588,   589,   590,
-   591,   592,   593,   594,   331,   894,  1323,  1324,  1325,    10,
-   167,    12,   301,   302,   303,     0,   304,    14,  1326,     0,
-  1327,  1328,  1329,  1330,  1331,  1332,  1333,  1334,  1335,  1336,
-    15,    16,   305,    17,    18,    19,     0,   306,   307,   308,
-    20,     0,   309,   310,   311,    21,   312,   313,  1337,    23,
-  1338,     0,     0,   314,   315,   316,   317,   318,    26,     0,
-  1339,   320,   722,     0,  1340,   321,     0,     0,     0,     0,
-     0,   322,     0,     0,   323,     0,     0,     0,     0,     0,
-     0,     0,   324,   325,   326,     0,     0,     0,     0,     0,
-   327,   328,   329,     0,     0,     0,   330,     0,  1341,     0,
+     0,     0,     0,   330,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,  1473,   331,  1323,  1324,  1325,    10,   167,    12,
-   301,   302,   303,     0,   304,    14,  1326,     0,  1327,  1328,
-  1329,  1330,  1331,  1332,  1333,  1334,  1335,  1336,    15,    16,
+   331,   893,  1319,  1320,  1321,    10,   167,    12,   301,   302,
+   303,     0,   304,    14,  1322,     0,  1323,  1324,  1325,  1326,
+  1327,  1328,  1329,  1330,  1331,  1332,    15,    16,   305,    17,
+    18,    19,     0,   306,   307,   308,    20,     0,   309,   310,
+   311,    21,   312,   313,  1333,    23,  1334,     0,     0,   314,
+   315,   316,   317,   318,    26,     0,  1335,   320,   722,     0,
+  1336,   321,     0,     0,     0,     0,     0,   322,     0,     0,
+   323,     0,     0,     0,     0,     0,     0,     0,   324,   325,
+   326,     0,     0,     0,     0,     0,   327,   328,   329,     0,
+     0,     0,   330,     0,  1337,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,  1467,   331,
+  1319,  1320,  1321,    10,   167,    12,   301,   302,   303,     0,
+   304,    14,  1322,     0,  1323,  1324,  1325,  1326,  1327,  1328,
+  1329,  1330,  1331,  1332,    15,    16,   305,    17,    18,    19,
+     0,   306,   307,   308,    20,     0,   309,   310,   311,    21,
+   312,   313,  1333,    23,  1334,     0,     0,   314,   315,   316,
+   317,   318,    26,     0,  1335,   320,   722,     0,  1336,   321,
+     0,     0,     0,     0,     0,   322,     0,     0,   323,     0,
+     0,     0,     0,     0,     0,     0,   324,   325,   326,     0,
+     0,     0,     0,     0,   327,   328,   329,     0,     0,     0,
+   330,     0,  1337,     0,  1319,  1320,  1321,    10,   167,    12,
+   301,   302,   303,     0,   304,    14,  1322,   331,  1323,  1324,
+  1325,  1326,  1327,  1328,  1329,  1330,  1331,  1332,    15,    16,
    305,    17,    18,    19,     0,   306,   307,   308,    20,     0,
-   309,   310,   311,    21,   312,   313,  1337,    23,  1338,     0,
-     0,   314,   315,   316,   317,   318,    26,     0,  1339,   320,
-   722,     0,  1340,   321,     0,     0,     0,     0,     0,   322,
+   309,   310,   311,    21,   312,   313,  1333,    23,  1334,     0,
+     0,   314,   315,   316,   317,   318,    26,     0,  1335,   320,
+  1589,     0,  1336,   321,     0,     0,     0,     0,     0,   322,
      0,     0,   323,     0,     0,     0,     0,     0,     0,     0,
    324,   325,   326,     0,     0,     0,     0,     0,   327,   328,
-   329,     0,     0,     0,   330,     0,  1341,     0,  1323,  1324,
-  1325,    10,   167,    12,   301,   302,   303,     0,   304,    14,
-  1326,   331,  1327,  1328,  1329,  1330,  1331,  1332,  1333,  1334,
-  1335,  1336,    15,    16,   305,    17,    18,    19,     0,   306,
+   329,     0,     0,     0,   330,     0,  1337,     0,  1319,  1320,
+  1321,    10,   167,    12,   301,   302,   303,     0,   304,    14,
+  1322,   331,  1323,  1324,  1325,  1326,  1327,  1328,  1329,  1330,
+  1331,  1332,    15,    16,   305,    17,    18,    19,     0,   306,
    307,   308,    20,     0,   309,   310,   311,    21,   312,   313,
-  1337,    23,  1338,     0,     0,   314,   315,   316,   317,   318,
-    26,     0,  1339,   320,  1595,     0,  1340,   321,     0,     0,
+  1333,    23,  1334,     0,     0,   314,   315,   316,   317,   318,
+    26,     0,  1335,   320,     0,     0,  1336,   321,     0,     0,
      0,     0,     0,   322,     0,     0,   323,     0,     0,     0,
      0,     0,     0,     0,   324,   325,   326,     0,     0,     0,
      0,     0,   327,   328,   329,     0,     0,     0,   330,     0,
-  1341,     0,  1323,  1324,  1325,    10,   167,    12,   301,   302,
-   303,     0,   304,    14,  1326,   331,  1327,  1328,  1329,  1330,
-  1331,  1332,  1333,  1334,  1335,  1336,    15,    16,   305,    17,
-    18,    19,     0,   306,   307,   308,    20,     0,   309,   310,
-   311,    21,   312,   313,  1337,    23,  1338,     0,     0,   314,
-   315,   316,   317,   318,    26,     0,  1339,   320,     0,     0,
-  1340,   321,     0,     0,     0,     0,     0,   322,     0,     0,
-   323,     0,     0,     0,     0,     0,     0,     0,   324,   325,
-   326,     0,     0,     0,     0,     0,   327,   328,   329,     0,
-     0,     0,   330,     0,  1341,   300,     8,     9,    10,   167,
-    12,   301,   302,   303,   735,   304,    14,     0,     0,   331,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+  1337,   300,     8,     9,    10,   167,    12,   301,   302,   303,
+   735,   304,    14,     0,     0,   331,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    16,   305,    17,    18,
+    19,     0,   306,   307,   308,    20,     0,   309,   310,   311,
+    21,   312,   313,     0,    23,     0,   621,     0,   314,   315,
+   316,   317,   318,    26,     0,    27,   320,     0,     0,     0,
+   321,     0,     0,     0,     0,     0,   322,     0,     0,   924,
+     0,     0,     0,     0,     0,     0,     0,   324,   325,   925,
+     0,     0,     0,     0,     0,   327,   328,   329,     0,     0,
+     0,   926,   625,     7,     8,     9,    10,   167,    12,   301,
+   302,   303,   735,   304,    14,     0,     0,     0,   331,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,    16,   305,
+    17,    18,    19,     0,   306,   307,   308,    20,     0,   309,
+   310,   311,    21,   312,   313,     0,    23,     0,   621,     0,
+   314,   315,   316,   317,   318,    26,     0,    27,    28,     0,
+     0,     0,   321,     0,     0,     0,     0,     0,   322,     0,
+     0,  1210,     0,     0,     0,     0,     0,     0,     0,   324,
+   325,  1211,     0,     0,     0,     0,     0,   327,   328,   329,
+     0,     0,     0,  1212,   625,   300,     8,     9,    10,     0,
+    12,   301,   302,   303,     0,   304,    14,     0,     0,     0,
+   331,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     16,   305,    17,    18,    19,     0,   306,   307,   308,    20,
      0,   309,   310,   311,    21,   312,   313,     0,    23,     0,
    621,     0,   314,   315,   316,   317,   318,    26,     0,    27,
-   320,     0,     0,     0,   321,     0,     0,     0,     0,     0,
-   322,     0,     0,   925,     0,     0,     0,     0,     0,     0,
-     0,   324,   325,   926,     0,     0,     0,     0,     0,   327,
-   328,   329,     0,     0,     0,   927,   625,     7,     8,     9,
-    10,   167,    12,   301,   302,   303,   735,   304,    14,     0,
+   320,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   322,     0,     0,   924,     0,     0,     0,     0,     0,     0,
+     0,   324,   325,   925,     0,     0,     0,     0,     0,   327,
+   328,   329,     0,     0,     0,   926,   625,     7,     8,     9,
+    10,     0,    12,   301,   302,   303,     0,   304,    14,     0,
      0,     0,   331,     0,     0,     0,     0,     0,     0,     0,
      0,     0,    16,   305,    17,    18,    19,     0,   306,   307,
    308,    20,     0,   309,   310,   311,    21,   312,   313,     0,
     23,     0,   621,     0,   314,   315,   316,   317,   318,    26,
-     0,    27,    28,     0,     0,     0,   321,     0,     0,     0,
-     0,     0,   322,     0,     0,  1212,     0,     0,     0,     0,
-     0,     0,     0,   324,   325,  1213,     0,     0,     0,     0,
-     0,   327,   328,   329,     0,     0,     0,  1214,   625,     7,
-     8,     9,    10,     0,    12,   301,   302,   303,     0,   304,
+     0,    27,    28,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   322,     0,     0,  1210,     0,     0,     0,     0,
+     0,     0,     0,   324,   325,  1211,     0,     0,     0,     0,
+     0,   327,   328,   329,     0,     0,     0,  1212,   625,   300,
+     8,     9,    10,     0,    12,   536,   302,   303,     0,   304,
     14,     0,     0,     0,   331,     0,     0,     0,     0,     0,
      0,     0,     0,     0,    16,   305,    17,    18,    19,     0,
    306,   307,   308,    20,     0,   309,   310,   311,    21,   312,
-   313,     0,    23,     0,   621,     0,   314,   315,   316,   317,
-   318,    26,     0,    27,    28,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   322,     0,     0,  1212,     0,     0,
-     0,     0,     0,     0,     0,   324,   325,  1213,     0,     0,
-     0,     0,     0,   327,   328,   329,     0,     0,     0,  1214,
-   625,   300,     8,     9,    10,     0,    12,   536,   302,   303,
-     0,   304,    14,     0,     0,     0,   331,     0,     0,     0,
+   313,     0,    23,     0,     0,     0,   314,   315,   316,   317,
+   318,    26,     0,    27,   320,     0,     0,     0,   321,     0,
+     0,     0,     0,     0,   322,     0,     0,   556,     0,     0,
+     0,     0,     0,     0,     0,   324,   325,   557,     0,     0,
+     0,     0,     0,   327,   328,   329,     0,     0,     0,   558,
+   300,     8,     9,    10,     0,    12,   536,   302,   303,     0,
+   304,    14,     0,     0,     0,     0,   331,     0,     0,     0,
+     0,     0,     0,     0,     0,    16,   305,    17,     0,    19,
+     0,   306,   307,   308,    20,     0,   309,   310,   311,    21,
+   312,   313,     0,    23,     0,     0,     0,   314,   315,   316,
+   317,   318,    26,     0,    27,   320,     0,     0,  1440,   321,
+     0,     0,     0,     0,     0,   322,     0,     0,   323,     0,
+     0,     0,     0,     0,     0,     0,   324,   325,   326,     0,
+     0,     0,     0,     0,   327,   328,   329,     0,     0,     0,
+   330,   300,     8,     9,    10,   167,    12,   301,   302,   303,
+     0,   304,    14,     0,     0,     0,     0,   331,     0,     0,
      0,     0,     0,     0,     0,     0,    16,   305,    17,    18,
     19,     0,   306,   307,   308,    20,     0,   309,   310,   311,
     21,   312,   313,     0,    23,     0,     0,     0,   314,   315,
    316,   317,   318,    26,     0,    27,   320,     0,     0,     0,
-   321,     0,     0,     0,     0,     0,   322,     0,     0,   556,
-     0,     0,     0,     0,     0,     0,     0,   324,   325,   557,
+     0,     0,     0,     0,     0,     0,   322,     0,     0,   323,
+     0,     0,     0,     0,     0,     0,     0,   324,   325,   326,
      0,     0,     0,     0,     0,   327,   328,   329,     0,     0,
-     0,   558,   300,     8,     9,    10,     0,    12,   536,   302,
+     0,   330,     7,     8,     9,    10,     0,    12,   536,   302,
    303,     0,   304,    14,     0,     0,     0,     0,   331,     0,
      0,     0,     0,     0,     0,     0,     0,    16,   305,    17,
-     0,    19,     0,   306,   307,   308,    20,     0,   309,   310,
+    18,    19,     0,   306,   307,   308,    20,     0,   309,   310,
    311,    21,   312,   313,     0,    23,     0,     0,     0,   314,
-   315,   316,   317,   318,    26,     0,    27,   320,     0,     0,
-  1446,   321,     0,     0,     0,     0,     0,   322,     0,     0,
-   323,     0,     0,     0,     0,     0,     0,     0,   324,   325,
-   326,     0,     0,     0,     0,     0,   327,   328,   329,     0,
-     0,     0,   330,   300,     8,     9,    10,   167,    12,   301,
+   315,   316,   317,   318,    26,     0,    27,    28,     0,     0,
+     0,   321,     0,     0,     0,     0,     0,   322,     0,     0,
+  1531,     0,     0,     0,     0,     0,     0,     0,   324,   325,
+  1532,     0,     0,     0,     0,     0,   327,   328,   329,     0,
+     0,     0,  1533,   300,     8,     9,    10,     0,    12,   301,
    302,   303,     0,   304,    14,     0,     0,     0,     0,   331,
      0,     0,     0,     0,     0,     0,     0,     0,    16,   305,
-    17,    18,    19,     0,   306,   307,   308,    20,     0,   309,
+    17,     0,    19,     0,   306,   307,   308,    20,     0,   309,
    310,   311,    21,   312,   313,     0,    23,     0,     0,     0,
-   314,   315,   316,   317,   318,    26,     0,    27,   320,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   322,     0,
+   314,   315,   316,   317,   318,    26,     0,   319,   320,     0,
+     0,     0,   321,     0,     0,     0,     0,     0,   322,     0,
      0,   323,     0,     0,     0,     0,     0,     0,     0,   324,
    325,   326,     0,     0,     0,     0,     0,   327,   328,   329,
-     0,     0,     0,   330,     7,     8,     9,    10,     0,    12,
-   536,   302,   303,     0,   304,    14,     0,     0,     0,     0,
+     0,     0,     0,   330,   300,     8,     9,    10,     0,    12,
+   301,   302,   303,     0,   304,    14,     0,     0,     0,     0,
    331,     0,     0,     0,     0,     0,     0,     0,     0,    16,
-   305,    17,    18,    19,     0,   306,   307,   308,    20,     0,
+   305,    17,     0,    19,     0,   306,   307,   308,    20,     0,
    309,   310,   311,    21,   312,   313,     0,    23,     0,     0,
-     0,   314,   315,   316,   317,   318,    26,     0,    27,    28,
+     0,   314,   315,   316,   317,   318,    26,     0,    27,   320,
      0,     0,     0,   321,     0,     0,     0,     0,     0,   322,
-     0,     0,  1537,     0,     0,     0,     0,     0,     0,     0,
-   324,   325,  1538,     0,     0,     0,     0,     0,   327,   328,
-   329,     0,     0,     0,  1539,   300,     8,     9,    10,     0,
-    12,   301,   302,   303,     0,   304,    14,     0,     0,     0,
+     0,     0,   323,     0,     0,     0,     0,     0,     0,     0,
+   324,   325,   326,     0,     0,     0,     0,     0,   327,   328,
+   329,     0,     0,     0,   330,   300,     8,     9,    10,     0,
+    12,   536,   302,   303,     0,   304,    14,     0,     0,     0,
      0,   331,     0,     0,     0,     0,     0,     0,     0,     0,
     16,   305,    17,     0,    19,     0,   306,   307,   308,    20,
      0,   309,   310,   311,    21,   312,   313,     0,    23,     0,
-     0,     0,   314,   315,   316,   317,   318,    26,     0,   319,
+     0,     0,   314,   315,   316,   317,   318,    26,     0,    27,
    320,     0,     0,     0,   321,     0,     0,     0,     0,     0,
    322,     0,     0,   323,     0,     0,     0,     0,     0,     0,
      0,   324,   325,   326,     0,     0,     0,     0,     0,   327,
    328,   329,     0,     0,     0,   330,   300,     8,     9,    10,
-     0,    12,   301,   302,   303,     0,   304,    14,     0,     0,
+     0,    12,   536,   302,   303,     0,   304,    14,     0,     0,
      0,     0,   331,     0,     0,     0,     0,     0,     0,     0,
      0,    16,   305,    17,     0,    19,     0,   306,   307,   308,
     20,     0,   309,   310,   311,    21,   312,   313,     0,    23,
      0,     0,     0,   314,   315,   316,   317,   318,    26,     0,
-    27,   320,     0,     0,     0,   321,     0,     0,     0,     0,
+    27,   320,   570,     0,     0,     0,     0,     0,     0,     0,
      0,   322,     0,     0,   323,     0,     0,     0,     0,     0,
      0,     0,   324,   325,   326,     0,     0,     0,     0,     0,
-   327,   328,   329,     0,     0,     0,   330,   300,     8,     9,
+   327,   328,   329,     0,     0,     0,   571,   300,     8,     9,
     10,     0,    12,   536,   302,   303,     0,   304,    14,     0,
      0,     0,     0,   331,     0,     0,     0,     0,     0,     0,
      0,     0,    16,   305,    17,     0,    19,     0,   306,   307,
    308,    20,     0,   309,   310,   311,    21,   312,   313,     0,
     23,     0,     0,     0,   314,   315,   316,   317,   318,    26,
-     0,    27,   320,     0,     0,     0,   321,     0,     0,     0,
+     0,    27,   320,     0,     0,     0,     0,     0,     0,     0,
      0,     0,   322,     0,     0,   323,     0,     0,     0,     0,
      0,     0,     0,   324,   325,   326,     0,     0,     0,     0,
-     0,   327,   328,   329,     0,     0,     0,   330,   300,     8,
-     9,    10,     0,    12,   536,   302,   303,     0,   304,    14,
-     0,     0,     0,     0,   331,     0,     0,     0,     0,     0,
-     0,     0,     0,    16,   305,    17,     0,    19,     0,   306,
-   307,   308,    20,     0,   309,   310,   311,    21,   312,   313,
-     0,    23,     0,     0,     0,   314,   315,   316,   317,   318,
-    26,     0,    27,   320,   570,     0,     0,     0,     0,     0,
-     0,     0,     0,   322,     0,     0,   323,     0,     0,     0,
-     0,     0,     0,     0,   324,   325,   326,     0,     0,     0,
-     0,     0,   327,   328,   329,     0,     0,     0,   571,   300,
+     0,   327,   328,   329,     0,     0,     0,   330,   609,   300,
      8,     9,    10,     0,    12,   536,   302,   303,     0,   304,
-    14,     0,     0,     0,     0,   331,     0,     0,     0,     0,
-     0,     0,     0,     0,    16,   305,    17,     0,    19,     0,
+    14,     0,     0,     0,   331,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    16,   305,    17,    18,    19,     0,
    306,   307,   308,    20,     0,   309,   310,   311,    21,   312,
    313,     0,    23,     0,     0,     0,   314,   315,   316,   317,
    318,    26,     0,    27,   320,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   322,     0,     0,   323,     0,     0,
-     0,     0,     0,     0,     0,   324,   325,   326,     0,     0,
-     0,     0,     0,   327,   328,   329,     0,     0,     0,   330,
-   609,   300,     8,     9,    10,     0,    12,   536,   302,   303,
-     0,   304,    14,     0,     0,     0,   331,     0,     0,     0,
+     0,     0,     0,     0,   322,     0,     0,   556,     0,     0,
+     0,     0,     0,     0,     0,   324,   325,   557,     0,     0,
+     0,     0,     0,   327,   328,   329,     0,     0,     0,   558,
+  1168,     8,     9,    10,     0,    12,   536,   302,   303,     0,
+   304,    14,     0,     0,     0,     0,   331,     0,     0,     0,
+     0,     0,     0,     0,     0,    16,   305,    17,     0,    19,
+     0,   306,   307,   308,    20,     0,   309,   310,   311,    21,
+   312,   313,     0,    23,     0,     0,     0,   314,   315,   316,
+   317,   318,    26,     0,    27,   320,     0,     0,     0,   321,
+     0,     0,     0,     0,     0,   322,     0,     0,   323,     0,
+     0,     0,     0,     0,     0,     0,   324,   325,   326,     0,
+     0,     0,     0,     0,   327,   328,   329,     0,     0,     0,
+   330,     7,     8,     9,    10,     0,    12,   301,   302,   303,
+     0,   304,    14,     0,     0,     0,     0,   331,     0,     0,
      0,     0,     0,     0,     0,     0,    16,   305,    17,    18,
     19,     0,   306,   307,   308,    20,     0,   309,   310,   311,
     21,   312,   313,     0,    23,     0,     0,     0,   314,   315,
-   316,   317,   318,    26,     0,    27,   320,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   322,     0,     0,   556,
-     0,     0,     0,     0,     0,     0,     0,   324,   325,   557,
+   316,   317,   318,    26,     0,    27,    28,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   322,     0,     0,  1531,
+     0,     0,     0,     0,     0,     0,     0,   324,   325,  1532,
      0,     0,     0,     0,     0,   327,   328,   329,     0,     0,
-     0,   558,  1170,     8,     9,    10,     0,    12,   536,   302,
+     0,  1533,   300,     8,     9,    10,     0,    12,   536,   302,
    303,     0,   304,    14,     0,     0,     0,     0,   331,     0,
      0,     0,     0,     0,     0,     0,     0,    16,   305,    17,
      0,    19,     0,   306,   307,   308,    20,     0,   309,   310,
    311,    21,   312,   313,     0,    23,     0,     0,     0,   314,
    315,   316,   317,   318,    26,     0,    27,   320,     0,     0,
-     0,   321,     0,     0,     0,     0,     0,   322,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   322,     0,     0,
    323,     0,     0,     0,     0,     0,     0,     0,   324,   325,
    326,     0,     0,     0,     0,     0,   327,   328,   329,     0,
-     0,     0,   330,     7,     8,     9,    10,     0,    12,   301,
+     0,     0,   537,   300,     8,     9,    10,     0,    12,   536,
    302,   303,     0,   304,    14,     0,     0,     0,     0,   331,
      0,     0,     0,     0,     0,     0,     0,     0,    16,   305,
-    17,    18,    19,     0,   306,   307,   308,    20,     0,   309,
+    17,     0,    19,     0,   306,   307,   308,    20,     0,   309,
    310,   311,    21,   312,   313,     0,    23,     0,     0,     0,
-   314,   315,   316,   317,   318,    26,     0,    27,    28,     0,
+   314,   315,   316,   317,   318,    26,     0,    27,   320,     0,
      0,     0,     0,     0,     0,     0,     0,     0,   322,     0,
-     0,  1537,     0,     0,     0,     0,     0,     0,     0,   324,
-   325,  1538,     0,     0,     0,     0,     0,   327,   328,   329,
-     0,     0,     0,  1539,   300,     8,     9,    10,     0,    12,
+     0,   323,     0,     0,     0,     0,     0,     0,     0,   324,
+   325,   326,     0,     0,     0,     0,     0,   327,   328,   329,
+     0,     0,     0,   540,   300,     8,     9,    10,     0,    12,
    536,   302,   303,     0,   304,    14,     0,     0,     0,     0,
    331,     0,     0,     0,     0,     0,     0,     0,     0,    16,
    305,    17,     0,    19,     0,   306,   307,   308,    20,     0,
    309,   310,   311,    21,   312,   313,     0,    23,     0,     0,
      0,   314,   315,   316,   317,   318,    26,     0,    27,   320,
      0,     0,     0,     0,     0,     0,     0,     0,     0,   322,
-     0,     0,   323,     0,     0,     0,     0,     0,     0,     0,
-   324,   325,   326,     0,     0,     0,     0,     0,   327,   328,
-   329,     0,     0,     0,   537,   300,     8,     9,    10,     0,
-    12,   536,   302,   303,     0,   304,    14,     0,     0,     0,
-     0,   331,     0,     0,     0,     0,     0,     0,     0,     0,
-    16,   305,    17,     0,    19,     0,   306,   307,   308,    20,
-     0,   309,   310,   311,    21,   312,   313,     0,    23,     0,
-     0,     0,   314,   315,   316,   317,   318,    26,     0,    27,
-   320,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   322,     0,     0,   323,     0,     0,     0,     0,     0,     0,
-     0,   324,   325,   326,     0,     0,     0,     0,     0,   327,
-   328,   329,     0,     0,     0,   540,   300,     8,     9,    10,
-     0,    12,   536,   302,   303,     0,   304,    14,     0,     0,
-     0,     0,   331,     0,     0,     0,     0,     0,     0,     0,
-     0,    16,   305,    17,     0,    19,     0,   306,   307,   308,
-    20,     0,   309,   310,   311,    21,   312,   313,     0,    23,
-     0,     0,     0,   314,   315,   316,   317,   318,    26,     0,
-    27,   320,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   322,     0,     0,   323,     7,     8,     9,    10,   205,
-    12,   206,   324,   325,   326,     0,    14,     0,     0,     0,
-   327,   328,   329,     0,     0,     0,   330,     0,     0,     0,
-    16,     0,    17,    18,     0,     0,     0,     0,     0,    20,
-     0,     0,     0,   331,    21,     0,     0,     0,    23,     0,
-     0,     0,     0,     0,     0,     0,     0,    26,     0,    27,
-    28,   573,   574,   575,   576,   577,   578,   579,   580,   581,
-   582,   583,   584,    30,   586,   587,   588,   589,   590,   591,
-   592,   593,   594,    31,     0,     0,     0,     0,     0,     0,
-     0,    32,     0,     0,     0,    33,   573,   574,   575,   576,
-   577,   578,   579,   580,   581,   582,   583,   584,   585,   586,
-   587,   588,   589,   590,   591,   592,   593,   594,   578,   579,
-   580,   581,   582,   583,   584,   585,   586,   587,   588,   589,
-   590,   591,   592,   593,   594,     0,  1101,     0,     0,  1609,
-   573,   574,   575,   576,   577,   578,   579,   580,   581,   582,
-   583,   584,   585,   586,   587,   588,   589,   590,   591,   592,
-   593,   594,  1603,   573,   574,   575,   576,   577,   578,   579,
+     0,     0,   323,  -388,     8,     9,  -388,  -388,    12,   246,
+   324,   325,   326,     0,    14,     0,     0,     0,   327,   328,
+   329,     0,     0,     0,   330,     0,     0,     0,    16,     0,
+    17,  -388,     0,     0,     0,     0,     0,    20,     0,     0,
+     0,   331,  -388,     0,     0,     0,    23,     0,   621,     0,
+     0,     0,     0,     0,     0,    26,     0,   130,   131,     0,
+     0,     0,     0,     7,     8,     9,    10,   167,    12,    13,
+     0,   622,  1019,     0,    14,     0,     0,     0,     0,     0,
+     0,   623,     0,     0,     0,     0,     0,     0,    16,  -388,
+    17,    18,     0,   624,   625,     0,     0,    20,     0,     0,
+     0,     0,    21,     0,     0,     0,    23,     0,     7,     8,
+     9,    10,   205,    12,   206,    26,     0,    27,    28,    14,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    30,     0,    16,     0,    17,    18,     0,     0,     0,
+     0,    31,    20,     0,     0,     0,     0,    21,     0,    32,
+     0,    23,     0,    33,     0,     0,     0,     0,     0,     0,
+    26,     0,    27,    28,     0,     0,  1457,     0,     7,     8,
+     9,    10,   167,    12,    13,     0,    30,     0,     0,    14,
+     0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
+     0,     0,     0,    16,    32,    17,    18,     0,    33,     0,
+     0,     0,    20,     0,     0,     0,     0,    21,     0,     0,
+     0,    23,     0,     7,     8,     9,    10,   205,    12,   206,
+    26,     0,    27,    28,    14,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    30,     0,    16,     0,
+    17,    18,     0,     0,     0,     0,    31,    20,     0,     0,
+     0,     0,    21,     0,    32,     0,    23,     0,    33,     0,
+     0,     0,     0,     0,     0,    26,     0,    27,    28,     8,
+     9,     0,   167,    12,    13,     0,     0,   735,     0,    14,
+     0,    30,     0,     0,     0,     0,     7,     8,     9,    10,
+     0,    31,   519,    16,     0,    17,    18,     0,     0,    32,
+     0,     0,    20,    33,     0,     0,     0,     0,     0,     0,
+     0,    23,     0,   621,    18,     0,     0,     0,     0,     0,
+    26,     0,   130,   131,     0,    21,     0,   300,     8,     9,
+    10,     0,     0,    13,     0,     0,  1499,     0,    26,     0,
+    27,    28,     0,     0,     0,     0,  1500,     7,   127,   128,
+    10,     0,     0,     0,   193,    18,     0,     0,  1501,   625,
+     0,     0,     0,     0,   194,     0,    21,     0,     7,     8,
+     9,    10,    32,     0,     0,    18,   195,     0,     0,    26,
+     0,    27,   320,     0,     0,     0,    21,     0,     7,     8,
+     9,    10,     0,     0,     0,   752,    18,     0,     0,    26,
+     0,    27,    28,     0,     0,   753,     0,    21,     0,     0,
+     0,     0,     0,    32,     0,    30,    18,   754,     0,     0,
+    26,     0,    27,    28,     0,    31,     0,    21,     0,   300,
+     8,     9,    10,    32,     0,     0,   476,    33,     0,     0,
+    26,     0,    27,    28,     0,     0,   477,     0,     0,     0,
+     0,     0,     0,     0,    32,     0,   193,    18,   478,     0,
+     0,     0,     0,     0,     0,     0,   194,     0,    21,     0,
+     0,     0,     8,     9,    32,   167,    12,    13,   195,     0,
+  1583,    26,    14,    27,   320,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    16,   752,    17,    18,
+     0,     0,     0,     0,     0,    20,     0,   753,     0,     0,
+     0,     0,     0,     0,    23,    32,     0,     0,     0,   754,
+     0,     0,     0,    26,     0,   130,   131,   573,   574,   575,
+   576,   577,   578,   579,   580,   581,   582,   583,   584,   585,
+   586,   587,   588,   589,   590,   591,   592,   593,   594,   573,
+   574,   575,   576,   577,   578,   579,   580,   581,   582,   583,
+   584,   585,   586,   587,   588,   589,   590,   591,   592,   593,
+   594,     0,     0,     0,  1268,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   663,
+     0,     0,  1603,   573,   574,   575,   576,   577,   578,   579,
    580,   581,   582,   583,   584,   585,   586,   587,   588,   589,
-   590,   591,   592,   593,   594,   573,   574,   575,   576,   577,
-   578,   579,   580,   581,   582,   583,   584,   585,   586,   587,
-   588,   589,   590,   591,   592,   593,   594
+   590,   591,   592,   593,   594,  1099,     0,     0,     0,   573,
+   574,   575,   576,   577,   578,   579,   580,   581,   582,   583,
+   584,   585,   586,   587,   588,   589,   590,   591,   592,   593,
+   594,  1597,   573,   574,   575,   576,   577,   578,   579,   580,
+   581,   582,   583,   584,   585,   586,   587,   588,   589,   590,
+   591,   592,   593,   594,   573,   574,   575,   576,   577,   578,
+   579,   580,   581,   582,   583,   584,   585,   586,   587,   588,
+   589,   590,   591,   592,   593,   594,   573,   574,   575,   576,
+   577,   578,   579,   580,   581,   582,   583,   584,     0,   586,
+   587,   588,   589,   590,   591,   592,   593,   594,   577,   578,
+   579,   580,   581,   582,   583,   584,   585,   586,   587,   588,
+   589,   590,   591,   592,   593,   594
 };
 
 static const short yycheck[] = {     4,
-    23,   161,     4,    55,   402,     4,   174,   350,   402,   306,
-   307,   176,   209,     4,   175,   720,   126,   156,     4,   356,
-    80,   883,    14,     4,    80,   507,   323,   402,   356,   326,
-    35,   468,   329,    35,   485,   332,    35,    42,    84,   336,
-    42,   251,   357,   358,    35,   568,   134,   344,   440,    35,
-   247,    42,    57,    42,    35,   373,    42,   149,   150,   605,
-   790,    42,   792,   304,   305,   133,   134,    72,   647,   695,
-   800,   124,    42,     4,    55,   455,    57,  1342,  1518,    84,
-  1428,   209,     4,    88,   133,    90,    46,    92,   144,    54,
-   218,    83,  1519,   408,   409,    11,    42,   338,  1352,   296,
-   243,    11,   107,   108,    35,  1359,    42,    57,    30,    31,
-    12,    42,     9,    35,   106,     1,    76,  1520,    11,  1542,
-    42,    48,   806,   175,   703,  1565,    60,   460,   812,    38,
-    59,   136,   137,     1,   139,    33,  1568,    55,     0,    60,
-    39,  1564,     0,    55,    55,    63,   356,   203,    48,    75,
-   136,    63,    63,   350,     1,   136,    55,    75,    60,   140,
-   165,    63,    84,    75,   169,    62,    93,   169,    48,    98,
-    63,   176,    48,    59,   625,   109,   165,    63,   169,   165,
-   169,   108,   562,   169,   165,  1617,   136,   108,   169,    55,
-   155,    59,   108,    93,   175,   176,   539,  1600,   108,   169,
-   109,  1624,   262,   217,   218,   136,   108,    63,   108,    95,
-   702,   109,    59,    93,   136,   108,    63,    93,    94,    12,
-    61,    48,  1649,   169,    55,  1665,   176,   149,   150,     3,
-     4,     5,   108,   169,   165,   200,    59,   719,   169,   923,
-    63,   222,    27,   165,    75,    75,    31,   169,    95,     4,
-     5,    61,   108,   213,  1519,     4,   248,  1605,   493,   556,
-   557,  1240,  1241,    63,    93,    60,    93,    60,   109,  1523,
-    63,   193,   194,    33,    48,   510,    61,    25,  1257,   347,
-    65,    55,    48,    57,    58,    48,    35,    49,   448,     4,
-     5,    93,   297,    42,    76,    42,    78,   343,   347,   109,
-    55,    60,    57,    58,    90,   393,    92,   644,   108,   175,
-   685,    59,    59,   108,     9,    63,    71,    12,    48,    93,
-  1574,    60,   714,   715,   109,   330,    81,    93,    61,    93,
-    93,    94,   385,   648,    49,    84,   882,    76,   343,   965,
-   479,   721,    57,    58,   742,   108,   351,    95,   742,   108,
-    14,   137,   404,    48,   359,   360,   222,   675,    22,    75,
-    61,  1045,   490,    93,   356,    60,    81,    62,    63,   806,
-    65,  1625,     7,  1057,   360,   812,   109,     4,     5,   360,
-    48,    76,     9,    78,   476,   477,   483,   136,    60,   149,
-   150,   151,    84,    85,   491,   738,    48,   402,    93,    94,
-   405,    65,    75,    38,   614,  1384,    48,  1091,   109,  1093,
-   360,   402,     4,   108,  1393,  1394,   165,  1396,    93,  1281,
-   169,   343,   169,   404,    48,    93,    94,     4,    55,   360,
-    57,    58,    61,    48,    12,   195,   108,   442,   360,     8,
-     9,    93,    94,    35,    71,    14,   969,   939,   508,    48,
-   942,    93,    94,   442,    81,    25,   442,  1036,    35,    48,
-   124,   442,   209,   468,     4,     5,   108,    94,    37,    93,
-   217,   218,   442,   924,   107,   489,   490,    46,    93,    48,
-   402,    55,    60,   497,   148,    63,   923,    65,    48,   470,
-     4,    55,   984,   985,    93,   509,   501,    60,    60,    61,
-   247,    75,   483,   508,    93,    94,   508,   822,    55,    49,
-   491,   442,    48,    76,   528,    78,    63,    57,    58,   108,
-   442,    35,   508,    61,    93,    31,  1256,   508,    75,   534,
-    55,    48,   537,    93,    94,   540,     4,     5,   404,   499,
-   545,   546,   547,   548,   549,   713,   468,    55,   108,   296,
-    75,  1413,   885,   558,   476,   477,    63,    93,   508,    63,
-   606,  1043,    48,   568,    48,    59,   571,    75,   966,  1548,
-  1549,    75,   966,   359,   238,   239,    93,   508,    25,    65,
-    27,    65,     3,     4,     5,     6,   508,   251,   676,    57,
-    58,   966,     4,     5,   343,   683,   933,   894,   650,    75,
-   182,   606,    55,   350,   470,   933,    48,    93,  1045,    93,
-    31,   360,    59,   479,    55,   683,    63,   483,    48,   624,
-  1057,    42,    75,    65,  1004,   491,   631,    59,   925,   926,
-    48,   774,    48,   776,    55,   832,    57,    58,   781,   691,
-    48,   693,   694,   635,   959,    57,    58,    55,    95,    48,
-    71,    93,    94,   402,  1091,    93,  1093,    55,   322,   406,
-    81,   684,    48,    93,    94,    55,    45,    75,    89,   650,
-  1162,  1163,    93,   678,   784,    93,    55,    93,    55,    58,
-  1131,     4,     5,    59,   606,    93,   738,   692,   929,    65,
-    25,   696,    27,   442,    93,   442,   719,    55,    75,   363,
-   622,   623,   624,  1127,  1128,    33,  1130,    93,   372,   631,
-   691,   692,   693,   694,  1196,   501,   476,   477,   478,   468,
-    76,   385,    94,   933,    59,   108,    49,    63,    63,    25,
-   790,    27,   792,   108,    57,    58,    11,   742,   798,    75,
-   800,    48,   489,   490,    48,   797,    48,   109,   534,    48,
-   497,  1233,   766,    55,    63,    48,    55,   738,    81,   508,
-    95,   742,   509,    59,   108,    63,    75,    63,    60,    61,
-  1085,  1086,  1087,    75,    60,    61,    75,    75,  1111,  1112,
-    98,   528,   108,  1126,   650,   790,    93,   792,   790,    93,
-   792,    93,   931,   798,    93,   800,    60,    61,   800,    95,
-    93,   806,   807,   808,   790,   810,   792,   812,    61,   790,
-    93,   792,     4,     5,   800,     3,   797,   798,    55,   800,
-   742,   149,   150,   151,   992,   691,    63,   693,   694,    55,
-   752,   753,    61,   793,   794,   111,  1133,    63,    75,    31,
-   790,   505,   792,   803,    75,     8,     9,   797,   798,    75,
-   800,    14,   819,   820,   821,    94,    48,   606,    94,   790,
-    27,   792,    63,    55,    31,    57,    58,   195,   790,   800,
-   792,   111,   738,    93,    37,   624,   881,  1210,   800,    71,
-    55,   886,   631,    46,   806,    93,  1219,  1220,    63,    81,
-   812,    93,   678,    60,    61,  1228,    75,  1040,  1041,  1042,
-    75,    93,    94,    75,   651,    75,   570,    75,    25,    60,
-    27,    60,   917,    60,    61,  1212,  1213,    11,   923,    60,
-    61,   977,   927,   108,    75,    76,  1631,    78,     3,     4,
-     5,   797,     7,     8,     9,    60,    61,    60,    61,  1272,
-    60,   933,    59,     3,     4,     5,    63,   694,    60,    61,
-   614,   108,     3,     4,     5,   108,    31,     3,     4,     5,
-   108,   966,    37,   968,   969,    60,    61,   972,    75,    55,
-   107,   108,    75,    75,   108,   966,   109,  1292,    95,   109,
-    55,   108,    57,    58,    59,   111,    27,   111,   349,   350,
-   351,   738,    75,   742,    75,    75,  1048,    57,    58,    55,
-    60,   923,   111,   925,   926,   927,    57,    58,  1351,  1069,
-  1015,    57,    58,  1069,  1153,   111,   108,   108,  1078,   766,
-   684,   807,   808,  1028,   810,     4,     5,    59,   103,   104,
-   105,   695,   108,  1038,   108,    81,    55,     8,  1371,   111,
-  1045,   790,    48,   792,   966,  1342,  1185,    65,   970,   971,
-   972,   800,  1057,    60,    93,   109,    60,   806,    65,  1439,
-     4,     5,   726,   812,    93,     4,     5,  1048,    75,    76,
-    49,   109,    55,  1078,    61,  1455,  1078,  1410,    57,    58,
-     4,     5,    37,    65,    65,   832,  1091,    65,  1093,    62,
-  1182,  1183,  1078,  1015,   108,   108,  1101,  1078,  1048,    61,
-    48,  1061,    81,    63,    65,    49,   108,  1067,  1068,    48,
-   108,  1071,  1072,    57,    58,  1075,    55,  1122,    57,    58,
-  1212,  1213,   108,  1045,   108,    49,   111,    65,  1078,    65,
-  1135,  1187,    71,    57,    58,  1057,    76,    81,    60,    87,
-    88,    93,    81,    91,    92,    93,    94,  1078,   476,   477,
-   478,   108,   108,  1158,    93,    94,  1078,    81,   108,   108,
-  1558,    27,  1542,   108,  1558,    31,  1305,   140,    76,  1091,
-    76,  1093,    76,  1196,   923,     4,     5,    76,   927,  1184,
-   108,   108,  1048,   156,  1564,  1350,    63,   769,  1349,    63,
-  1351,  1251,    60,   330,    60,    61,  1256,   108,  1179,    65,
-    63,   108,  1207,     3,    94,  1207,     6,   108,  1207,  1214,
-    89,  1591,   972,   111,     3,     4,     5,   966,   111,  1562,
-    49,  1207,    75,   972,     3,     4,     5,     6,    57,    58,
-    48,    31,   108,   108,  1156,  1157,  1158,   108,   111,   212,
-  1537,  1538,    42,    60,  1624,   109,   111,   220,   108,   108,
-   108,  1256,    81,   109,  1256,  1015,    61,    57,    58,    65,
-  1182,  1183,  1184,    42,   237,  1645,  1015,  1248,    57,    58,
-  1256,    71,  1253,     4,     5,  1256,    55,    65,    57,    58,
-    60,    81,    60,   108,   108,  1207,    63,   109,   952,    89,
-  1212,  1213,  1214,    93,    93,    93,  1045,  1349,    93,  1351,
-    93,   965,  1224,  1225,   108,  1310,  1256,   109,  1057,     8,
-    89,   108,   108,  1179,    45,    33,   108,   111,   108,  1185,
-   111,   108,  1655,   108,    55,  1256,    57,    58,   465,  1078,
-   691,    65,   693,   694,  1256,   696,   108,  1342,     4,     5,
-  1342,   108,  1091,   108,  1093,  1350,   108,  1352,   108,  1135,
-  1352,     4,     5,  1352,  1359,   108,  1342,  1359,   108,    55,
-  1359,  1227,   108,  1368,   108,  1562,  1352,   108,  1349,  1350,
-  1351,    63,   111,  1359,  1534,    48,   108,   738,    31,   108,
-   108,    96,  1248,    63,    63,    61,  1308,  1309,  1310,    55,
-    61,    57,    58,     9,    61,    48,     4,     5,    16,   108,
-   537,   108,    55,   540,    57,    58,   108,   108,   545,  1158,
-   108,   108,     7,     8,     9,    93,    93,    61,    71,    14,
-  1342,   558,  1182,  1183,  1184,     3,     4,     5,    81,    61,
-  1352,  1391,  1392,    93,   571,  1184,    31,  1359,   575,  1305,
-    93,    94,    37,    65,  1612,  1537,  1538,    55,  1112,    57,
-    58,    46,  1212,  1213,  1214,     3,     4,     5,  1207,     7,
-     8,     9,    55,    71,   111,  1214,   603,    93,  1050,  1051,
-    17,   832,   609,    81,    61,    55,    61,   450,   108,    57,
-    58,    59,   107,  1349,   108,  1351,    94,     3,     4,     5,
-    81,    82,    83,    84,    85,  1077,    97,   470,   108,   108,
-  1082,    11,  1507,    61,    61,  1465,   479,  1256,  1513,    57,
-    58,  1563,    61,  1518,  1519,  1520,  1518,  1519,  1523,  1518,
-    93,  1523,    60,   496,  1523,    65,     3,     4,     5,     6,
-    61,   108,  1518,  1519,  1539,    11,   108,  1523,   108,    55,
-  1204,    57,    58,    59,   905,    11,  1210,     7,     8,     9,
-    61,   912,    61,  1558,    14,     0,     0,     0,   170,  1453,
-  1565,  1310,     2,  1565,    35,    42,  1565,   169,   676,  1574,
-   931,    31,  1574,    30,    31,  1574,    33,    37,   966,  1565,
-    57,    58,  1563,  1505,  1506,  1507,    46,   442,  1574,   165,
-  1611,  1513,   798,  1342,  1196,  1600,  1518,  1519,  1520,    94,
-    57,  1523,    59,  1352,  1351,   238,   139,  1665,    65,   299,
-  1359,  1282,    89,  1438,   952,  1537,  1538,   657,  1043,   242,
-  1625,   726,  1233,  1625,  1078,   798,  1625,  1253,     3,     4,
-     5,   659,   945,  1593,   606,   200,  1558,   347,   124,  1625,
-  1352,  1208,  1508,  1565,   972,  1645,  1631,    31,  1641,  1579,
-   461,  1368,  1574,     3,     4,     5,  1643,   468,  1023,    -1,
-  1665,    -1,    -1,  1665,  1246,  1247,  1665,  1249,  1250,    -1,
-  1252,    -1,  1336,  1337,    49,    -1,     4,     5,  1600,  1665,
-     8,     9,    57,    58,   141,    -1,    14,  1015,    -1,   146,
-    -1,  1557,   149,   150,   151,    -1,    -1,  1563,    -1,    -1,
-    28,    -1,    30,  1625,    -1,    55,  1466,    57,    58,    37,
-    -1,    -1,    -1,     3,     4,     5,    -1,    -1,    46,   176,
-    -1,     3,     4,     5,   535,   182,    -1,    55,    -1,    57,
-    58,    59,    -1,    -1,    -1,    -1,   193,   194,   195,    -1,
-     3,     4,     5,  1665,    -1,    -1,    -1,    -1,    30,     3,
-     4,     5,   209,   890,     4,     5,    -1,   141,  1507,     9,
-   217,   218,   146,    -1,  1513,    93,  1430,    57,    58,  1518,
-  1519,  1520,    -1,    55,  1523,    57,    58,  1537,  1538,  1539,
-    -1,    31,    -1,    -1,    -1,   596,    49,    -1,  1452,  1453,
-   927,   602,  1153,    -1,    57,    58,    -1,    -1,    -1,  1381,
-  1382,    55,   259,    57,    58,    55,    -1,    57,    58,  1558,
-   194,    -1,    -1,    -1,    -1,  1562,  1565,    -1,  1179,    -1,
-    -1,    71,    -1,    -1,  1185,  1574,    -1,   638,    -1,    12,
-    -1,    81,    -1,    -1,    -1,    -1,    80,     3,     4,     5,
-    -1,    -1,    -1,    93,    27,     4,     5,   764,    31,    -1,
-     9,  1600,    -1,    -1,  1182,  1183,  1184,    -1,    -1,    -1,
-   104,    -1,    -1,    -1,    -1,    48,    -1,  1531,    -1,     3,
-     4,     5,    31,   330,    -1,   259,  1625,    60,    61,    -1,
-    63,    -1,    65,    -1,  1212,  1213,  1214,    -1,   805,   133,
-    -1,    57,    58,    -1,   811,    -1,    55,    -1,    57,    58,
-   144,  1038,    -1,  1485,  1486,  1487,     3,     4,     5,     6,
-    93,    94,    71,     3,     4,     5,  1665,     7,     8,     9,
-    -1,    -1,    81,    57,    58,   108,    -1,     3,     4,     5,
-     6,    -1,   905,    -1,    93,     4,     5,    -1,    -1,   912,
-     9,    31,    -1,    -1,  1305,    42,    -1,    37,   405,   406,
-    33,    -1,    49,    -1,    -1,    -1,    -1,    -1,   931,   203,
-    57,    58,   419,  1545,  1546,   422,    42,    57,    58,    -1,
-    -1,   428,   429,   430,    -1,    -1,    -1,   434,    -1,    -1,
-    -1,    57,    58,    -1,    81,    -1,    55,    -1,    57,    58,
-    -1,    -1,    89,    -1,   238,   193,   194,    -1,    -1,    -1,
-    -1,   918,    71,   920,    -1,    -1,     3,     4,     5,     6,
-    -1,    -1,    81,    -1,   471,    -1,    -1,   474,   262,   476,
-   477,   478,    -1,    -1,    -1,   482,    -1,     3,     4,     5,
-     6,   488,   489,   490,  1616,   419,   493,    -1,   422,    -1,
-   497,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,
-   434,    48,    -1,   510,    -1,    31,    -1,    -1,    55,    -1,
-    57,    58,    -1,    -1,    -1,    -1,    42,   150,   151,   880,
-   881,    -1,    48,    -1,    71,   886,    -1,  1214,    -1,    55,
-   537,    57,    58,   540,    81,    -1,    -1,   471,    -1,   900,
-   474,   902,    89,   904,    -1,    71,    93,    94,    -1,   556,
-   557,   558,     4,     5,   488,    81,    -1,     9,     3,     4,
-     5,   355,   195,    89,   571,    -1,    -1,    93,    94,    -1,
-    -1,    -1,     3,     4,     5,    -1,    -1,    -1,    -1,    31,
-    -1,  1268,  1269,  1270,  1271,    -1,    -1,    -1,  1466,    -1,
-    -1,    -1,    -1,   954,    88,    -1,    90,  1508,    92,     3,
-     4,     5,     6,    55,    -1,    57,    58,    -1,    -1,    -1,
-    -1,    -1,    57,    58,    -1,   622,   623,   624,   412,    71,
-    -1,    -1,    -1,  1090,   631,  1092,    57,    58,    -1,    81,
-  1153,    -1,    -1,    -1,    -1,    39,    40,   998,    42,    -1,
-    -1,    93,    -1,   137,   651,   139,  1557,    -1,  1335,    -1,
-    -1,    55,    -1,    57,    58,    -1,  1179,    -1,    -1,  1537,
-  1538,  1539,  1185,    -1,     3,     4,     5,     6,     7,     8,
-     9,    -1,    -1,    12,    -1,    14,     7,     8,     9,    -1,
-    -1,    -1,  1149,    14,    -1,   692,    -1,   694,   695,    28,
-    -1,    30,    31,    -1,    -1,    -1,    -1,   330,    37,    -1,
-    31,    -1,    -1,    42,  1227,    -1,    37,    46,    -1,    48,
-    -1,   505,     4,     5,    -1,    46,    55,     9,    57,    58,
-    -1,    -1,    -1,   471,  1411,    -1,   474,    -1,   476,   477,
-    61,   738,    71,    -1,     7,     8,     9,   531,    -1,    31,
-   488,    14,    81,   750,   751,   752,   753,   754,    -1,    -1,
-    89,   758,    -1,    -1,    93,    94,    48,    -1,    31,   766,
-    -1,  1448,   769,    55,    37,    57,    58,    -1,    -1,    -1,
-  1237,    -1,    -1,    46,    -1,  1242,    -1,    -1,    -1,    71,
-    -1,    -1,  1305,    -1,    -1,    -1,    -1,    -1,    61,    81,
-    -1,   798,    -1,    -1,    -1,    -1,   429,   430,    -1,    -1,
-    -1,    93,    94,     4,     5,    -1,    -1,    -1,     3,     4,
-     5,     6,     7,     8,     9,    -1,   750,   751,   825,    14,
-     3,     4,     5,     6,   758,   619,  1513,   321,    -1,  1296,
-    31,   402,  1519,  1520,    -1,    -1,    31,  1198,    -1,  1200,
-   634,  1202,    37,    -1,   477,   478,    -1,    42,    -1,    -1,
-    -1,    46,  1539,    48,    55,    -1,    57,    58,    -1,    42,
-    55,    -1,    57,    58,    -1,   359,    49,    -1,    -1,    -1,
-    71,    -1,    -1,    -1,    57,    58,    71,    -1,    -1,    -1,
-    81,    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,
-    -1,    -1,    93,    -1,    89,    -1,    -1,   468,    93,   906,
-    -1,    -1,   909,    -1,   537,    -1,    89,   540,    -1,    -1,
-    -1,    -1,    -1,  1600,   921,    -1,    -1,    -1,   925,   926,
-   927,    -1,    -1,    -1,   557,   558,     4,     5,    -1,    -1,
-     8,     9,  1619,  1400,  1401,    -1,    14,    -1,   571,    -1,
-    -1,  1302,    79,    80,    81,    82,    83,    84,    85,    -1,
-    28,  1418,    30,  1640,    -1,    -1,    -1,    -1,   965,    37,
-    -1,   755,  1649,   970,   971,   972,   460,   461,    46,    -1,
-    -1,    -1,    -1,    -1,   468,    -1,    -1,    55,    -1,    57,
-    58,     3,     4,     5,     6,  1508,    -1,     9,    -1,    -1,
-    -1,    -1,     3,     4,     5,     6,    -1,    -1,   631,    -1,
-    -1,    -1,   750,   751,   752,   753,    -1,   501,  1015,    31,
-   758,  1478,  1479,    -1,    -1,    93,    -1,    -1,    -1,    -1,
-    42,    -1,  1029,  1030,  1031,    -1,    48,  1494,  1495,    -1,
-    -1,    42,    -1,    55,  1557,    57,    58,   971,    49,    -1,
-   534,   535,    -1,  1050,  1051,    -1,    57,    58,    -1,    71,
-   544,    -1,    -1,   624,    -1,    -1,    -1,    -1,    -1,    81,
-   631,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,
-  1077,    93,    94,    -1,   568,  1082,   570,    -1,    89,   573,
-   574,    -1,   576,   577,   578,   579,   580,   581,   582,   583,
-   584,   585,   586,   587,   588,   589,   590,   591,   592,   593,
-   594,    -1,   596,    -1,    -1,    -1,    -1,    -1,   602,    -1,
-    -1,    -1,     4,     5,    -1,    -1,     8,     9,    -1,    -1,
-   753,   754,    14,    72,    73,    74,    75,    76,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,   631,   932,    -1,
-   934,    -1,    -1,    -1,   638,    37,    -1,    -1,    -1,  1156,
-  1157,  1158,    -1,    -1,    46,    -1,    48,    -1,     3,     4,
-     5,     6,    -1,    55,     9,    57,    58,    -1,   662,   663,
-    -1,   742,    -1,  1180,  1181,  1182,  1183,  1184,    -1,    71,
-    -1,    -1,  1189,   977,   678,    -1,    31,    -1,    -1,    81,
-    -1,    -1,   825,    -1,    -1,    -1,    -1,    42,    -1,    -1,
-    -1,    93,    94,    48,    -1,  1212,  1213,  1214,    -1,    -1,
-    55,    -1,    57,    58,    -1,    -1,    -1,  1224,  1225,  1226,
-     4,     5,   970,   971,     8,     9,    71,    -1,    -1,    -1,
-    14,    -1,   726,    -1,    -1,   806,    81,    -1,    -1,  1246,
-  1247,   812,  1249,  1250,    89,  1252,  1180,  1181,    93,    94,
-    -1,    -1,    -1,    37,    -1,  1189,    -1,    -1,    -1,    -1,
-    -1,    -1,    46,     1,    48,     3,     4,     5,     6,    -1,
-     8,    55,    -1,    57,    58,  1069,    -1,    -1,    -1,    -1,
-    -1,  1029,  1030,  1031,    -1,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,   926,   927,   789,    -1,    81,    -1,  1306,
-  1307,  1308,  1309,  1310,    42,    -1,  1313,    -1,    -1,    93,
-    94,    49,    -1,   807,   808,    -1,   810,    55,    -1,    57,
-    58,    -1,    -1,     3,     4,     5,     6,    -1,    -1,    -1,
-    -1,   825,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   972,
-    -1,    -1,    -1,  1350,  1351,    -1,    -1,    -1,    -1,    -1,
-    -1,    89,   923,    -1,   848,    -1,   927,    -1,    -1,    -1,
-    -1,    -1,    42,    -1,    -1,  1159,    -1,    -1,    -1,    49,
-    -1,    -1,  1306,  1307,  1381,  1382,    -1,    57,    58,  1313,
-    -1,    -1,  1015,    -1,    -1,    -1,   880,   881,    -1,    -1,
-    -1,   885,   886,  1187,    -1,   966,    -1,    -1,    -1,    -1,
-    -1,   972,    -1,    -1,    -1,    -1,   900,    -1,   902,    89,
-   904,    -1,    -1,  1420,  1421,    -1,  1423,     3,     4,     5,
-     6,    -1,    -1,     9,    -1,    -1,    -1,     3,     4,     5,
-     6,    -1,  1180,  1181,  1182,  1183,    -1,    -1,    -1,    -1,
-    -1,  1189,    -1,    -1,  1015,    31,    -1,    -1,    -1,   943,
-    -1,    -1,    -1,    -1,    -1,    -1,    42,  1251,    -1,  1466,
-   954,    -1,    48,    -1,  1212,  1213,    42,    -1,    -1,    55,
-    -1,    57,    58,    49,  1045,   969,  1224,  1225,  1485,  1486,
-  1487,    57,    58,    -1,    -1,    71,  1057,    -1,   982,    -1,
-    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,  1505,  1506,
-  1507,    -1,    -1,    89,   998,    81,    -1,    93,    94,    -1,
-    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,    -1,   461,
-  1091,  1015,  1093,    -1,  1157,  1158,   468,    -1,    -1,    -1,
-  1537,  1538,  1539,    -1,     3,     4,     5,     6,  1545,  1546,
-     9,    -1,    -1,    -1,    -1,     3,     4,     5,     6,    -1,
-  1183,  1184,   622,   623,    -1,    -1,    -1,    -1,  1306,  1307,
-  1308,  1309,    31,    -1,    -1,  1313,  1060,    -1,    -1,    -1,
-    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    48,
-  1213,  1214,    -1,    -1,    42,    -1,    55,  1158,    57,    58,
-    -1,    49,    -1,   535,    -1,    -1,    -1,    -1,    -1,    57,
-    58,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,  1616,
-    -1,    -1,    81,  1184,    -1,    -1,    -1,  1111,  1112,    -1,
-    89,  1115,    -1,    81,    93,    94,    -1,    -1,  1422,    -1,
-     4,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    14,  1135,    -1,  1214,    -1,     3,     4,     5,     6,    -1,
-    24,    -1,    -1,    -1,   596,    -1,    30,    31,    -1,    33,
-   602,    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
-    -1,    -1,  1420,  1421,    -1,  1423,  1309,  1310,    -1,    -1,
-    -1,    55,    -1,    57,    42,    -1,    -1,    -1,    -1,   631,
-    -1,    65,    -1,    -1,    -1,    -1,   638,    55,    72,    57,
-    58,    -1,    -1,    61,  1198,    63,  1200,    -1,  1202,    83,
-    84,    -1,    -1,    71,    -1,    -1,  1210,    -1,    -1,    -1,
-    -1,    -1,    -1,    81,    -1,  1219,  1220,    -1,    -1,    -1,
-    -1,    89,   106,    -1,  1228,    93,    -1,    -1,    -1,  1310,
-    77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
-  1244,  1245,     3,     4,     5,    -1,     7,  1505,  1506,    -1,
-   134,    -1,   136,    -1,    -1,    -1,   140,   141,    -1,    -1,
-    -1,   145,   146,    -1,    -1,   149,   150,   151,  1272,    30,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,  1537,
-  1538,   165,    -1,    -1,    -1,   169,    -1,    -1,    -1,    -1,
-    -1,   175,   176,    -1,    55,    -1,    57,    58,  1302,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   193,
-   194,   195,    -1,    -1,     3,     4,     5,     6,     7,     8,
-     9,    -1,    -1,  1466,    -1,    14,   906,  1331,    -1,   909,
-    -1,    -1,    -1,     3,     4,     5,     6,    -1,   222,     9,
-    -1,   921,    31,    -1,    -1,   925,   926,    -1,    37,    -1,
-    -1,    -1,    -1,    42,    -1,   239,    -1,    46,    -1,    48,
-    -1,    31,    -1,    -1,   248,    -1,    55,  1371,    57,    58,
-    -1,    -1,    42,   825,    -1,   259,    -1,    -1,    48,    -1,
-    -1,    -1,    71,  1387,    -1,    55,    -1,    57,    58,    -1,
-   970,   971,    81,     4,     5,  1538,  1539,    -1,     9,    -1,
-    89,    71,    -1,    -1,    93,    94,  1410,    -1,    -1,    -1,
-    -1,    81,    -1,   297,   298,    -1,    -1,    -1,    -1,    89,
-    31,    -1,    -1,    93,    94,    -1,  1507,    -1,   880,   881,
-    -1,    -1,    -1,    -1,   886,    -1,    -1,    48,    -1,    -1,
-    -1,    -1,    -1,    -1,    55,    -1,    57,    58,   900,    -1,
-   902,    -1,   904,    -1,    -1,    -1,    -1,    -1,    -1,   343,
-    71,    -1,  1466,   347,    -1,   349,   350,   351,    -1,    -1,
-    81,     3,     4,     5,     6,    -1,   360,  1558,    -1,  1483,
-  1484,    -1,    93,    94,    -1,    -1,    -1,    -1,     3,     4,
-     5,     6,     7,     8,     9,    -1,    -1,    12,    -1,    14,
-    -1,    -1,   954,    -1,    -1,     3,     4,     5,     6,   393,
-    42,    -1,    -1,    28,    -1,    30,    31,  1521,   402,    -1,
-   404,   405,    37,    55,    -1,    57,    58,    42,    -1,    61,
-    -1,    46,    -1,    48,    -1,   419,    -1,    -1,   422,    71,
-    55,    -1,    57,    58,    42,    -1,   998,  1551,    -1,    81,
-   434,    49,    -1,    -1,    -1,    -1,    71,    89,   442,    57,
-    58,    93,    -1,  1015,    -1,    -1,    81,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    89,    -1,  1156,  1157,    93,    94,
-    -1,    -1,    -1,    81,    -1,    -1,   470,   471,    -1,    -1,
-   474,    89,   476,   477,   478,   479,    -1,    -1,    -1,   483,
-  1180,  1181,  1182,  1183,   488,    -1,    -1,   491,    -1,  1189,
-    -1,    -1,    -1,    -1,     1,    -1,    -1,     4,     5,    -1,
-    -1,     8,     9,    -1,   508,    -1,    -1,    14,    -1,    -1,
-    -1,    -1,  1212,  1213,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,    -1,
-    37,  1655,    39,    40,    -1,    -1,    -1,    -1,    -1,    46,
-    -1,    48,   546,   547,   548,   549,    -1,    -1,    55,    -1,
-    57,    58,    -1,    60,    -1,    -1,    -1,    64,    65,    66,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    -1,    -1,
-    87,    88,    89,    -1,    91,    -1,    -1,    94,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,    -1,
-    -1,     9,   606,   110,   608,    -1,  1306,  1307,  1308,  1309,
-    -1,    -1,    -1,  1313,    -1,    -1,   620,    -1,   622,   623,
-   624,    -1,    -1,    31,    -1,    -1,  1198,   631,  1200,    -1,
-  1202,   635,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,
-    48,    -1,    -1,    -1,    -1,    -1,   650,    55,    -1,    57,
-    58,    -1,    -1,    -1,     3,     4,     5,     6,    -1,    -1,
-    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   676,    81,     3,     4,     5,     6,    -1,   683,
-    -1,    89,    31,    -1,    -1,    93,    94,   691,   692,   693,
-   694,   695,   696,    42,    -1,    -1,    -1,    -1,    -1,    48,
-    -1,    -1,    31,    -1,    -1,    -1,    55,    -1,    57,    58,
-    -1,    -1,    -1,    42,     3,     4,     5,     6,    -1,    48,
-  1420,  1421,    71,  1423,    -1,    -1,    55,    -1,    57,    58,
-  1302,    -1,    81,    -1,   738,    -1,    -1,    -1,   742,    -1,
-    89,    -1,    71,    -1,    93,    94,   750,   751,   752,   753,
-   754,    -1,    81,    42,   758,    -1,    -1,    -1,    -1,    -1,
-    89,    -1,    -1,    -1,    93,    94,    55,    -1,    57,    58,
-    -1,    -1,    -1,    -1,    63,     3,     4,     5,     6,    -1,
-    -1,     9,    71,   787,    -1,    -1,   790,    -1,   792,    -1,
-    -1,    -1,    81,   797,   798,    -1,   800,    -1,    -1,    -1,
-    89,    -1,   806,    31,    93,  1505,  1506,    -1,   812,    -1,
-    -1,    -1,    -1,    -1,    42,   819,   820,   821,     1,    -1,
-     3,     4,     5,     6,     7,     8,     9,    55,   832,    57,
-    58,    14,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
-     5,     6,    -1,    71,    -1,    28,    -1,    30,    31,    32,
-    -1,    -1,    -1,    81,    37,    38,    -1,    -1,    -1,    42,
-    -1,    89,    -1,    46,    47,    93,    49,    -1,    -1,    -1,
-    -1,    -1,    55,    -1,    57,    58,    -1,    42,    61,    -1,
-    63,    -1,    -1,    -1,    49,    -1,    -1,    -1,    71,    -1,
-    -1,    -1,    57,    58,  1466,    -1,    -1,    -1,    81,    -1,
-    -1,   905,   906,    -1,    -1,   909,    89,    -1,   912,    -1,
-    93,    -1,    -1,   917,    -1,    -1,    81,   921,    -1,   923,
-    -1,   925,   926,   927,    89,    -1,   109,   931,    -1,   933,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     4,
-     5,    -1,    -1,     8,     9,    -1,    -1,    -1,    -1,    14,
-    74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-    84,    85,   966,    28,   968,    30,   970,   971,   972,     4,
-    -1,    -1,    37,   107,   108,    -1,    -1,    -1,    -1,    14,
-    -1,    46,    -1,    48,    -1,    -1,    -1,    -1,    23,    24,
-    55,    -1,    57,    58,    -1,    30,    31,    -1,    33,    -1,
-    35,    -1,    -1,    -1,    -1,    -1,    71,    42,    -1,    -1,
-    -1,  1015,    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,
-    55,    -1,    57,    -1,  1028,  1029,  1030,  1031,    93,    94,
-    65,     3,     4,     5,     6,    -1,    -1,    72,    -1,    -1,
-    -1,  1045,    -1,    -1,  1048,    -1,    -1,    -1,    -1,    84,
-    -1,    -1,    -1,  1057,    -1,    -1,    -1,    -1,    -1,    31,
-    -1,    -1,    -1,    -1,    -1,    -1,  1070,    -1,    -1,    -1,
-    42,    -1,    -1,    -1,  1078,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    55,    -1,    57,    58,  1091,    -1,  1093,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1101,    -1,    71,
-    -1,   136,    -1,    -1,    -1,   140,   141,    -1,    -1,    81,
-    -1,   146,    -1,    -1,   149,   150,   151,    89,  1122,    -1,
-    -1,    93,    -1,  1127,  1128,    -1,  1130,    -1,    -1,    -1,
-   165,    -1,    -1,    -1,   169,    -1,    -1,    -1,    -1,    -1,
-   175,   176,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1153,
-    -1,    -1,  1156,  1157,  1158,    -1,    -1,    -1,   193,   194,
-   195,     3,     4,     5,     6,     7,     8,     9,    -1,    -1,
-    -1,    -1,    14,    -1,    -1,  1179,  1180,  1181,  1182,  1183,
-  1184,  1185,    -1,    -1,    -1,  1189,    28,   222,    30,    31,
-    32,    -1,    -1,    -1,    -1,    37,   330,    -1,    -1,    -1,
-    42,    -1,    -1,    -1,    46,    -1,    -1,    49,  1212,  1213,
-  1214,    -1,    -1,    55,    -1,    57,    58,    -1,    -1,    -1,
-  1224,  1225,  1226,  1227,   259,    -1,    -1,    -1,    -1,    71,
-     1,    -1,     3,     4,     5,     6,     7,     8,     9,    81,
-    -1,    -1,    -1,    14,  1248,    -1,    -1,    89,    -1,  1253,
-    -1,    93,  1256,    -1,    -1,    -1,    98,    28,    -1,    30,
-    31,    32,   297,   298,    -1,    -1,    37,    38,   402,    -1,
-    -1,    42,    -1,    -1,    -1,    46,    47,    -1,    49,    -1,
-    -1,    -1,    -1,    -1,    55,    -1,    57,    58,    -1,    -1,
-    61,    -1,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    71,  1305,  1306,  1307,  1308,  1309,  1310,    -1,   343,  1313,
-    81,    -1,   347,    -1,   349,   350,   351,    -1,    89,    -1,
-    -1,   356,    93,    -1,    -1,   360,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   468,    -1,    -1,    -1,   109,    -1,
-     3,     4,     5,     6,    -1,  1349,  1350,  1351,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   393,    -1,
-    -1,    -1,    -1,    -1,  1368,    -1,    -1,   402,    31,   404,
-   405,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
-    -1,    -1,    -1,    -1,   419,    -1,    -1,   422,    -1,    -1,
-    -1,    -1,    55,    -1,    57,    58,    -1,    -1,    -1,   434,
-    82,    -1,    -1,   537,    -1,    -1,   540,   442,    71,    -1,
-    -1,   545,   546,   547,   548,   549,  1420,  1421,    81,  1423,
-    -1,    -1,    -1,    -1,   558,    -1,    89,    -1,    -1,    -1,
-    93,    -1,    -1,    -1,    -1,   470,   471,   571,    -1,   474,
-    -1,   476,   477,   478,   479,    -1,    -1,    -1,   483,    -1,
-    -1,    -1,    -1,   488,     4,     5,   491,     7,     8,     9,
-    -1,    -1,  1466,    -1,    14,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   507,   508,    -1,    -1,    -1,   159,    28,    -1,
-    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
-   624,    -1,    -1,    -1,    -1,    -1,    46,   631,    -1,    49,
-    -1,  1505,  1506,  1507,  1508,    55,    -1,    57,    58,   191,
-    -1,   546,   547,   548,   549,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   204,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,  1537,  1538,  1539,     1,    -1,     3,     4,
+   161,   209,   175,    55,    23,    80,   455,   174,   176,   402,
+   720,   126,     4,     4,   485,   350,   251,   402,   507,   304,
+   305,   402,    42,   356,   356,    57,     4,    14,   217,   218,
+    35,   882,    46,   568,   695,   133,   134,    42,   156,   247,
+   702,   182,    42,    35,    35,   789,    84,   791,   605,   357,
+   358,    42,    57,   338,   134,   799,   647,    35,   243,    59,
+    14,     4,    76,   373,    42,   124,   209,    72,    22,   144,
+  1338,  1348,   133,  1422,    42,   218,  1513,  1512,  1355,    84,
+   149,   150,    11,    88,    42,    90,    80,    92,   296,    54,
+    38,   805,    35,    42,     1,   468,    83,   811,   440,    42,
+   408,   409,   107,   108,   136,    11,    11,    59,    48,     4,
+     4,    65,   703,   562,     1,  1514,    33,  1562,    55,   106,
+     9,   356,     1,   175,  1559,    27,    12,    61,   203,    31,
+     0,   136,   137,  1536,   139,    30,    31,    59,    75,    63,
+    35,    35,   350,    65,   176,     4,    98,    42,    42,   169,
+    49,    75,    59,    93,   625,  1558,    63,    63,   136,    61,
+   165,   109,    60,    65,   169,    90,  1611,    92,   108,   169,
+   124,   176,    59,    62,    60,   109,    35,    63,   169,   108,
+    59,    12,    60,    42,    63,     4,     5,   165,    95,    84,
+   155,   169,   109,   460,   148,  1594,    55,   165,    57,   213,
+    12,   169,   108,   108,   539,    55,  1643,   109,   922,   209,
+   108,   169,   137,    48,     0,  1618,    95,   217,   218,    25,
+   169,    27,   108,    75,  1659,    75,   169,     8,     9,    60,
+   719,   109,    63,    14,    65,   200,    55,    75,    57,    58,
+  1517,   136,   136,    48,    93,  1513,    61,   247,    60,   347,
+  1599,    63,    71,    59,   149,   150,    37,    63,    93,    94,
+    65,   248,    81,  1236,  1237,    46,    60,    48,   262,    93,
+   165,   165,   721,   108,   169,   169,   938,   136,     4,   941,
+  1253,   140,    60,    60,   238,   239,   347,   448,    93,    95,
+   493,  1568,   297,    93,   109,    61,   296,   251,   193,   194,
+   489,   490,    39,   964,   685,   343,   165,   510,   497,    35,
+   169,   644,    93,   393,   108,    75,   175,   176,    55,    48,
+   509,   983,   984,    61,   881,   330,   385,     7,   360,  1043,
+   108,   108,    60,     3,     4,     5,   306,   307,   343,   528,
+   648,  1055,  1619,   109,    48,     4,   351,   490,    76,   742,
+   350,    48,   404,   323,   359,   360,   326,   742,    38,   329,
+    25,   479,   332,   222,    93,   675,   336,    48,   322,   356,
+    75,   109,   714,   715,   344,  1089,    35,  1091,    48,   614,
+    93,    25,   360,    42,    48,    55,    61,    57,    58,    93,
+    94,   483,     4,     5,    59,    48,    93,   402,    63,   491,
+   405,    65,    48,   738,   108,  1378,   406,   476,   477,   363,
+    61,   402,    93,    94,  1387,  1388,    48,  1390,   372,    31,
+     4,   107,   442,    93,    59,    84,  1277,   108,    63,    93,
+    95,   385,   805,   968,   359,    12,    48,   442,   811,    55,
+    93,    94,   442,    55,  1035,    57,    58,    93,   343,    48,
+    27,    35,   923,    63,    31,   108,     4,    48,    55,    71,
+    55,    93,   108,   468,   442,   360,   360,    48,    63,    81,
+    48,    48,    55,    48,   442,    31,   508,   136,    75,    59,
+    75,    93,    94,    60,    61,   499,    63,    35,    65,   489,
+   490,    48,    75,    75,    93,    94,   501,   497,  1160,  1161,
+    55,   360,    93,   508,     4,     5,   165,   402,  1252,   509,
+   169,    55,    93,   821,   508,    93,    93,    94,    93,    94,
+     3,     4,     5,     6,     3,     4,     5,    59,   528,   534,
+   508,   108,   537,   108,    93,   540,    93,     3,     4,     5,
+   545,   546,   547,   548,   549,   404,   713,   442,   442,   922,
+    55,   505,  1041,   558,  1003,    55,  1407,    57,    58,    42,
+    33,    55,    48,   568,    76,   508,   571,    48,   606,  1542,
+  1543,   108,   965,   468,    57,    58,   501,   766,    57,    58,
+   965,   476,   477,   442,   965,   683,   556,   557,    48,   774,
+   775,    57,    58,   108,    60,   780,   676,    94,   650,   932,
+   932,   606,    81,   683,   108,    65,    89,    93,    94,   534,
+    48,   470,    93,   508,   508,    63,   570,   884,    76,   624,
+    78,    55,    48,   831,   483,    11,   631,    75,   769,    63,
+    48,   108,   491,    93,    94,     3,    60,   109,     6,   691,
+    48,   693,   694,   928,    98,    33,    61,    48,   635,   508,
+   958,   651,    76,    93,    78,    93,     4,     5,  1129,    48,
+   614,     9,     3,    31,    25,   684,    27,    93,   783,    48,
+  1043,    61,    48,   678,    42,    93,   149,   150,   151,    55,
+   111,    25,  1055,    27,   343,    93,   738,   692,    55,    57,
+    58,   696,    93,    94,   694,    75,    63,   932,    59,    75,
+   719,   360,    63,    71,    93,  1194,    63,    55,    75,    57,
+    58,   606,    55,    81,    93,    59,  1089,    93,  1091,    63,
+    63,    89,   195,    71,    94,    93,    48,   622,   623,   624,
+   684,    94,    75,    81,    95,    48,   631,   742,   738,   111,
+  1229,   695,    63,   402,   796,    63,    94,    25,    63,    27,
+    55,    95,    75,   678,   818,   819,   820,   789,    63,   791,
+    75,   149,   150,   151,   796,   797,   766,   799,   107,   108,
+    75,    93,   726,     4,     5,  1083,  1084,  1085,   792,   793,
+    93,    59,    93,   442,   789,    63,   791,   108,   802,  1124,
+   108,   650,   797,    93,   799,   789,    63,   791,     4,     5,
+   805,   806,   807,   797,   809,   799,   811,   195,    75,   468,
+    55,   789,   930,   791,    93,     4,     5,    95,    49,    75,
+    55,   799,    60,    61,   991,    55,    57,    58,    63,    75,
+    75,   831,   691,   692,   693,   694,     4,     5,     8,     9,
+    75,    75,  1109,  1110,    14,    75,   789,   742,   791,   508,
+    81,    57,    58,  1038,  1039,  1040,   799,   752,   753,    60,
+    49,    60,    61,    11,     3,     4,     5,    37,    57,    58,
+     3,     4,     5,     6,    60,   880,    46,    75,    55,   738,
+   885,   806,   807,   742,   809,   108,    63,    55,   108,    57,
+    58,    62,    81,   108,   789,   789,   791,   791,    75,     4,
+     5,   976,    27,    71,   799,   799,    31,  1048,  1049,    42,
+   805,   916,   108,    81,    55,  1625,   811,   922,    57,    58,
+    59,   926,    55,   893,    57,    58,    94,   108,  1125,  1126,
+   789,  1128,   791,    75,  1075,    60,    61,   796,   797,  1080,
+   799,  1208,     4,     5,    49,   932,    75,   606,    45,   109,
+  1217,  1218,    57,    58,   924,   925,    89,   109,    55,  1226,
+   965,    58,   967,   968,   111,   624,   971,    60,    61,   140,
+     4,     5,   631,    27,   965,     9,    81,    31,    60,    61,
+  1288,     4,     5,   111,  1433,   156,   108,    49,     3,     4,
+     5,   330,  1067,   111,  1046,    57,    58,   951,    84,    85,
+  1449,  1268,    60,   476,   477,   478,    60,    61,    27,  1014,
+   964,    65,  1347,    55,  1046,     4,     5,    75,    76,    81,
+    78,    55,  1027,    57,    58,    75,    49,   922,    75,   924,
+   925,   926,    75,  1151,    57,    58,   111,    71,  1043,   108,
+    55,   212,    57,    58,  1076,  1059,    59,    81,   108,   220,
+  1055,  1065,  1066,   108,    48,  1069,  1070,   108,    81,  1073,
+    49,    55,     3,     4,     5,  1183,   237,    55,    57,    58,
+   965,  1076,   111,  1067,   969,   970,   971,    60,    61,    60,
+    61,    75,  1076,   742,  1089,     8,  1091,  1536,   476,   477,
+   478,    93,    81,    48,  1099,    65,     4,     5,  1076,    93,
+  1367,  1242,  1243,   109,  1245,  1246,    60,  1248,    93,  1558,
+  1185,  1180,  1181,   109,    55,  1120,    57,    58,    59,  1014,
+    60,    61,    55,    31,    60,    61,   465,    61,  1133,    60,
+   789,    37,   791,  1076,    65,    65,  1585,  1404,    60,    61,
+   799,  1210,  1211,   108,    75,    76,   805,    55,  1043,    57,
+    58,  1156,   811,    60,    61,    65,  1110,     4,     5,  1552,
+  1055,  1131,    65,    71,   108,    61,    63,  1552,   111,  1618,
+   108,   108,  1345,    81,  1347,  1194,   108,  1182,  1346,   108,
+    65,  1076,  1076,  1301,    65,    93,    65,  1046,    76,    60,
+  1639,     3,     4,     5,  1089,     7,  1091,   108,   537,   108,
+  1205,   540,     3,     4,     5,    60,   545,  1212,  1133,   108,
+    57,    58,    76,  1205,   108,   108,    76,  1076,    76,   558,
+  1252,  1556,     3,     4,     5,    76,    38,  1205,   108,    63,
+   108,    63,   571,   108,  1375,  1376,   575,    63,   108,   108,
+  1210,  1211,    94,    55,    48,    57,    58,  1252,  1202,   111,
+   111,    55,    89,  1247,  1208,    75,    57,    58,  1252,  1154,
+  1155,  1156,  1205,   922,   603,    48,   108,   926,    49,   108,
+   609,    75,    61,   111,  1252,   111,    57,    58,   108,   450,
+     3,     4,     5,     6,   108,  1180,  1181,  1182,   109,    93,
+     3,     4,     5,  1345,   108,  1347,   109,   108,    60,   470,
+    65,  1306,    30,    31,    65,    33,   965,    60,   479,  1252,
+  1205,    60,   971,    63,   108,  1210,  1211,  1212,  1177,    42,
+   108,     3,     4,     5,    93,   496,    49,  1222,  1223,    57,
+    93,    59,   109,  1338,    57,    58,    49,    65,  1479,  1480,
+  1481,  1346,    93,  1348,    57,    58,    93,  1347,  1556,   109,
+  1355,   108,   108,   108,     8,  1014,  1348,  1252,  1252,  1364,
+  1338,    33,    65,  1355,   108,   111,    89,  1528,  1338,   108,
+  1348,  1385,  1386,    55,   108,    57,    58,  1355,  1332,  1333,
+   111,   108,  1649,   108,  1043,  1244,     3,     4,     5,   108,
+  1249,   108,   108,  1252,   108,  1338,  1055,    55,  1539,  1540,
+   108,   108,     3,     4,     5,  1348,     7,     8,     9,  1304,
+  1305,  1306,  1355,   141,   108,    63,   111,  1076,   146,    48,
+   108,   149,   150,   151,     4,     5,     4,     5,   108,     9,
+  1089,   108,  1091,    96,    61,    63,   349,   350,   351,  1606,
+    57,    58,    63,  1338,     9,  1459,    61,    61,   176,    16,
+    93,    31,   108,  1348,   182,   108,    57,    58,   108,   108,
+  1355,   108,  1531,  1532,   108,   193,   194,   195,    48,  1610,
+  1424,    49,     3,     4,     5,    55,    61,    57,    58,    57,
+    58,   209,     3,     4,     5,     6,  1345,  1346,  1347,   217,
+   218,    71,  1446,  1447,    93,    61,  1501,  1156,   971,    55,
+    93,    81,  1507,    65,   111,  1557,    93,  1512,  1513,  1514,
+    17,    61,  1517,    93,    94,    55,   108,    61,    55,   108,
+  1512,    42,    97,  1182,    55,  1517,    57,    58,  1533,   108,
+   107,   259,   108,    11,  1512,  1513,    57,    58,    61,  1517,
+    93,  1014,     3,     4,     5,    61,  1205,  1552,    61,    60,
+   889,    65,    61,  1212,  1559,    11,  1556,   108,    61,   108,
+   108,  1531,  1532,  1568,    11,    61,     0,  1559,     0,  1512,
+  1513,  1525,     0,  1587,  1517,   170,  1568,     2,    35,  1447,
+   676,  1559,   965,   971,   165,   169,   442,   926,  1605,  1594,
+  1568,  1194,   797,  1252,    94,  1432,    57,    58,     4,     5,
+    48,   238,   330,   139,  1499,  1500,  1501,    81,    82,    83,
+    84,    85,  1507,  1659,  1619,  1278,  1559,  1512,  1513,  1514,
+   299,   951,  1517,   726,   657,  1568,  1014,  1619,     3,     4,
+     5,   242,     7,     8,     9,  1229,  1531,  1532,   175,    87,
+    88,  1619,    48,    91,    92,    93,    94,  1306,  1041,    55,
+   659,    57,    58,  1076,  1659,   944,    31,  1552,     3,     4,
+     5,     6,    37,   797,  1559,    71,   200,  1659,  1206,   347,
+  1249,   606,   124,  1568,    31,    81,  1619,   405,   406,  1338,
+    55,  1659,    57,    58,    59,   222,  1348,    93,    94,  1348,
+  1625,   419,  1639,  1573,   422,  1637,  1355,    42,  1557,  1594,
+   428,   429,   430,  1635,    49,  1022,   434,  1180,  1181,  1182,
+  1364,    -1,    57,    58,    -1,    -1,  1659,    -1,    -1,     9,
+    -1,    -1,    12,    -1,  1619,    -1,    -1,    -1,   103,   104,
+   105,    -1,    -1,   904,    -1,    -1,    81,  1210,  1211,  1212,
+   911,    -1,    -1,   471,    89,    -1,   474,    -1,   476,   477,
+   478,     3,     4,     5,   482,     7,     8,     9,    48,   930,
+   488,   489,   490,    -1,  1659,   493,     3,     4,     5,   497,
+    60,    -1,    62,    63,    -1,    65,    -1,    -1,   691,    31,
+   693,   694,   510,   696,   141,    37,    76,    -1,    78,   146,
+    -1,    -1,  1180,  1181,  1182,     3,     4,     5,     6,    -1,
+    -1,    -1,    -1,    93,    94,    57,    58,    -1,    -1,   537,
+    -1,    -1,   540,    -1,    -1,    80,    -1,    -1,   108,    -1,
+    57,    58,  1210,  1211,  1212,   738,    -1,    -1,   556,   557,
+   558,    -1,    -1,    -1,    42,    -1,    -1,   194,    -1,   104,
+    -1,    49,  1501,   571,    -1,     7,     8,     9,  1507,    57,
+    58,    -1,    14,  1512,  1513,  1514,    -1,    -1,  1517,    -1,
+    -1,    -1,     3,     4,     5,     6,    -1,   404,   133,    31,
+    -1,    -1,    -1,  1212,    -1,    37,    -1,    -1,    -1,   144,
+    -1,    89,    -1,    -1,    46,     3,     4,     5,     6,    -1,
+    -1,     9,    -1,  1552,   622,   623,   624,    -1,   461,    61,
+  1559,    42,   259,   631,    -1,   468,    -1,    -1,    49,  1568,
+    -1,    -1,    -1,    31,    -1,    -1,    57,    58,   831,    -1,
+    -1,    -1,    -1,   651,    42,  1264,  1265,  1266,  1267,    -1,
+    48,    -1,    -1,   470,    -1,  1594,    -1,    55,   203,    57,
+    58,    -1,   479,    -1,    -1,    -1,   483,   402,    89,    -1,
+    -1,     4,     5,    71,   491,    -1,     9,    -1,    -1,    -1,
+  1619,    -1,    -1,    81,   692,    -1,   694,   695,    -1,    -1,
+    -1,    89,   535,   238,    -1,    93,    94,    -1,    31,    -1,
+  1151,     3,     4,     5,    -1,    -1,    -1,  1460,    -1,    -1,
+    -1,   904,  1331,    -1,     3,     4,     5,   262,   911,    -1,
+  1659,    -1,    55,    -1,    57,    58,  1177,    -1,    -1,    -1,
+   738,    -1,  1183,   468,    -1,    -1,    -1,   930,    71,    -1,
+     4,     5,   750,   751,   752,   753,   754,    -1,    81,    -1,
+   758,    -1,    -1,   596,    -1,    57,    58,    -1,   766,   602,
+    93,   769,    88,    -1,    90,    -1,    92,    31,    57,    58,
+     3,     4,     5,     6,  1225,    -1,     9,    -1,  1531,  1532,
+  1533,    -1,   419,    -1,    48,   422,  1405,    -1,    -1,   797,
+    -1,    55,  1460,    57,    58,   638,    -1,   434,    31,    -1,
+     3,     4,     5,     6,    -1,    -1,     9,    71,    -1,    42,
+   355,   137,    -1,   139,    -1,    48,   824,    81,     3,     4,
+     5,    -1,    55,  1442,    57,    58,    -1,    -1,    31,    93,
+    94,    -1,    -1,   650,   471,    -1,    -1,   474,    71,    42,
+    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    81,    -1,
+  1301,   488,    55,    -1,    57,    58,    89,    -1,    -1,    -1,
+    93,    94,    -1,  1531,  1532,  1533,    -1,   412,    71,    -1,
+    -1,    -1,    57,    58,   691,    -1,   693,   694,    81,    -1,
+    -1,     3,     4,     5,     6,    -1,    89,    33,  1507,   624,
+    93,    94,    -1,    -1,  1513,  1514,   631,   905,    -1,    -1,
+   908,     4,     5,    -1,     7,     8,     9,    -1,    -1,    31,
+    -1,    14,   920,    -1,  1533,    -1,   924,   925,   926,    -1,
+    42,   738,    -1,     4,     5,    28,    48,    30,    31,    -1,
+    -1,    -1,    -1,    55,    37,    57,    58,    -1,    -1,    -1,
+    -1,    -1,    -1,    46,    -1,    -1,     4,     5,    -1,    71,
+    -1,     9,    55,    -1,    57,    58,   964,    -1,  1151,    81,
+   505,   969,   970,   971,    45,    -1,    -1,    89,    -1,    -1,
+    -1,    93,    94,    31,    55,  1594,    57,    58,    -1,   796,
+    -1,    -1,    -1,    -1,  1177,    -1,   531,    -1,    -1,    -1,
+  1183,    -1,    -1,    -1,  1613,   321,    -1,    55,    -1,    57,
+    58,    -1,    -1,    -1,   150,   151,  1014,   742,    -1,     3,
+     4,     5,     6,    71,    -1,  1634,    -1,    -1,    -1,    -1,
+  1028,  1029,  1030,    81,  1643,    -1,     3,     4,     5,     6,
+    -1,    -1,     9,   359,    -1,    93,   879,   880,    -1,   764,
+  1048,  1049,   885,    -1,    -1,    -1,    -1,    -1,    42,   195,
+    -1,  1502,    -1,    -1,    31,    -1,   899,    -1,   901,    -1,
+   903,    55,    -1,    57,    58,    42,    -1,  1075,    -1,    63,
+   805,    48,  1080,    -1,   619,    -1,   811,    71,    55,   804,
+    57,    58,    -1,    -1,    -1,   810,    -1,    81,    -1,   634,
+     3,     4,     5,     6,    71,    89,    -1,    -1,    -1,    93,
+  1551,    -1,    -1,    -1,    81,    -1,    -1,    -1,  1301,    -1,
+   953,    -1,    89,   750,   751,    -1,    93,    94,    -1,    -1,
+    -1,   758,    -1,    -1,    -1,    -1,    -1,     4,     5,    42,
+    -1,     8,     9,    -1,   460,   461,    49,    14,    -1,    -1,
+    -1,    -1,   468,    -1,    57,    58,  1154,  1155,  1156,    -1,
+    -1,    28,    -1,    30,   997,    -1,    -1,    -1,    -1,    -1,
+    37,    79,    80,    81,    82,    83,    84,    85,    81,    46,
+  1178,  1179,  1180,  1181,  1182,   501,    89,    -1,    55,  1187,
+    57,    58,    -1,    -1,   330,    -1,    -1,   922,    -1,    -1,
+    -1,   926,   917,    -1,   919,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,  1210,  1211,  1212,    -1,   461,    -1,   534,   535,
+   755,    -1,    -1,   468,  1222,  1223,  1224,    -1,   544,    77,
+    78,    79,    80,    81,    82,    83,    84,    85,    -1,  1046,
+   965,    -1,    -1,    -1,  1242,  1243,   971,  1245,  1246,    -1,
+  1248,    -1,   568,    -1,   570,    -1,    -1,   573,   574,    -1,
+   576,   577,   578,   579,   580,   581,   582,   583,   584,   585,
+   586,   587,   588,   589,   590,   591,   592,   593,   594,    -1,
+   596,    -1,    -1,     4,     5,    -1,   602,    -1,     9,  1014,
+   535,    -1,    -1,   429,   430,    -1,     7,     8,     9,    -1,
+    -1,    -1,    -1,    14,  1302,  1303,  1304,  1305,  1306,    -1,
+    31,  1309,    -1,    -1,    -1,   631,    -1,    -1,  1043,  1502,
+    31,    -1,   638,    -1,    -1,    -1,    37,    -1,    -1,    -1,
+  1055,    -1,    -1,    -1,    55,    46,    57,    58,    -1,    -1,
+    -1,   477,   478,   970,    -1,    -1,   662,   663,  1346,  1347,
+    71,   596,    -1,    -1,    -1,    -1,    -1,   602,    -1,    -1,
+    81,    -1,   678,  1196,  1089,  1198,  1091,  1200,  1551,    -1,
+  1177,    -1,    93,  1088,    -1,  1090,  1183,  1375,  1376,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   631,    -1,     3,     4,
+     5,     6,    -1,   638,    -1,    -1,   931,    -1,   933,    -1,
+    -1,   537,    -1,    -1,   540,    -1,     3,     4,     5,     6,
+   726,    -1,     9,    -1,    -1,    -1,  1414,  1415,  1225,  1417,
+    -1,   557,   558,    -1,    39,    40,    -1,    42,    -1,    -1,
+    -1,  1156,  1147,    -1,    31,   571,    -1,  1244,    -1,    -1,
+    55,   976,    57,    58,    -1,    42,    -1,    -1,    -1,    -1,
+    -1,    48,    -1,    -1,    -1,    -1,    -1,  1182,    55,    -1,
+    57,    58,  1460,    -1,    -1,  1298,    -1,    -1,    -1,    -1,
+    -1,    82,   788,    -1,    71,     3,     4,     5,     6,    -1,
+    -1,  1479,  1480,  1481,    81,    -1,    -1,  1212,    -1,    -1,
+   806,   807,    89,   809,  1301,   631,    93,    94,     7,     8,
+     9,  1499,  1500,  1501,    -1,    14,    -1,    -1,   824,    -1,
+    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,  1233,    -1,
+    48,    -1,    31,  1238,    -1,    -1,    -1,    55,    37,    57,
+    58,   847,  1067,  1531,  1532,  1533,    -1,    46,  1345,    -1,
+  1347,  1539,  1540,    71,    -1,    -1,    -1,    -1,   159,    -1,
+    -1,  1178,  1179,    81,    -1,    -1,    -1,    -1,    -1,    -1,
+  1187,    89,    -1,   879,   880,    93,    94,    -1,   884,   885,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1292,    -1,   824,
+   191,  1306,    -1,   899,    -1,   901,    -1,   903,    -1,     7,
+     8,     9,    -1,   204,     4,    -1,    14,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    14,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,  1610,    31,    24,    -1,    -1,   753,   754,    37,
+    30,    31,  1157,    33,    -1,    35,   942,    -1,    46,    -1,
+    -1,    -1,    42,    -1,   879,   880,    -1,   953,    -1,    -1,
+   885,    -1,    -1,    61,    -1,    55,    -1,    57,    -1,    -1,
+  1185,    -1,   968,    -1,   899,    65,   901,    -1,   903,    -1,
+    -1,    -1,    72,    -1,    -1,   981,    -1,     4,     5,    -1,
+    -1,     8,     9,    83,    84,  1302,  1303,    14,    -1,  1394,
+  1395,   997,  1309,    -1,    -1,    -1,   622,   623,   824,    -1,
+    -1,    28,    -1,    30,    -1,  1502,   106,  1412,  1014,    -1,
+    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   953,    46,
+     4,     5,  1247,    -1,    -1,     9,    -1,    -1,    55,    -1,
+    57,    58,    59,    -1,   134,    -1,   136,    -1,    -1,    -1,
+   140,   141,    -1,    -1,    -1,   145,   146,    31,    -1,   149,
+   150,   151,  1058,    -1,  1551,    -1,    -1,    -1,    -1,    -1,
+  1557,    -1,   997,    -1,    48,   165,    93,  1472,  1473,   169,
+    -1,    55,    -1,    57,    58,   175,   176,    -1,    -1,  1014,
+    -1,    -1,    -1,  1488,  1489,    -1,  1501,    71,    -1,    -1,
+    -1,    -1,    -1,   193,   194,   195,    -1,    81,    -1,   925,
+   926,    -1,    -1,  1109,  1110,    -1,    -1,  1113,    -1,    93,
+    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
+     5,     6,   222,    -1,     9,     4,     5,  1133,    -1,     8,
+     9,    -1,    -1,    -1,    -1,    14,    -1,  1552,    -1,   239,
+    -1,    -1,    -1,   193,   194,   971,    31,    -1,   248,    28,
+    -1,    30,    -1,    -1,    -1,    -1,    -1,    42,    37,   259,
+    -1,    -1,    -1,    48,    -1,    -1,    -1,    46,    -1,    -1,
+    55,    -1,    57,    58,    -1,    -1,    55,    -1,    57,    58,
+   481,    -1,    -1,    -1,    -1,   486,    71,    -1,  1014,    -1,
+  1196,  1416,  1198,    -1,  1200,    -1,    81,   297,   298,    -1,
+    -1,    -1,  1208,    -1,    89,    -1,    -1,    -1,    93,    94,
+   511,  1217,  1218,    -1,    93,    -1,   517,    -1,    -1,    -1,
+  1226,    -1,     4,     5,    -1,    -1,     8,     9,   529,   530,
+    -1,   532,    14,    -1,  1240,  1241,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   343,    -1,    -1,    28,   347,    30,   349,
+   350,   351,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
+   360,  1196,  1268,  1198,    46,  1200,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    55,    -1,    57,    58,    -1,    -1,   905,
+    -1,    -1,   908,    -1,     1,    -1,     3,     4,     5,     6,
+    -1,     8,  1298,   393,   920,    -1,    -1,    -1,   924,   925,
+    -1,    -1,   402,    -1,   404,   405,    73,    74,    75,    76,
+    77,    78,    79,    80,    81,    82,    83,    84,    85,   419,
+    -1,  1327,   422,    -1,    -1,    42,   627,   628,    -1,  1155,
+  1156,   632,    49,    -1,   434,    -1,    -1,    -1,    55,    -1,
+    57,    58,   442,   969,   970,     3,     4,     5,     6,    -1,
+    -1,    -1,    -1,    -1,    -1,  1181,  1182,    -1,    -1,    -1,
+    -1,  1367,    -1,  1298,    -1,     3,     4,     5,     6,    -1,
+   470,   471,    89,    31,   474,  1381,   476,   477,   478,   479,
+    -1,    -1,    -1,   483,    42,  1211,  1212,    -1,   488,    -1,
+    48,   491,    -1,    -1,    -1,    -1,    -1,    55,  1404,    57,
+    58,    -1,    -1,    -1,    42,    -1,    -1,    -1,   508,    -1,
+    -1,    49,    -1,    71,     3,     4,     5,     6,    -1,    57,
+    58,   471,    -1,    81,   474,    -1,   476,   477,    -1,    -1,
+    -1,    89,    -1,    -1,    -1,    93,    94,    -1,   488,    -1,
+    -1,    -1,    31,    81,    -1,    -1,   546,   547,   548,   549,
+    -1,    89,    -1,    42,  1460,   756,    -1,    -1,    -1,    48,
+    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,
+    -1,  1477,  1478,    -1,    -1,    -1,    -1,    -1,    -1,  1305,
+  1306,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,     4,
+     5,    -1,    81,    -1,     9,    -1,    -1,    -1,    -1,    -1,
+    89,    -1,    -1,    -1,    93,    94,   606,    -1,   608,  1515,
+    -1,   812,    -1,   814,    -1,    -1,    31,    -1,    -1,    -1,
+   620,    -1,   622,   623,   624,  1460,    -1,    -1,  1154,  1155,
+    -1,   631,    -1,    48,    -1,   635,    -1,    -1,    -1,  1545,
+    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,
+   650,    -1,  1178,  1179,  1180,  1181,    71,    -1,    -1,    -1,
+    -1,  1187,    -1,    -1,    -1,    -1,    81,    -1,    -1,     3,
+     4,     5,     6,     7,     8,     9,   676,    -1,    93,    94,
+    14,    -1,    -1,   683,  1210,  1211,   887,   888,    -1,   890,
+    -1,   691,   692,   693,   694,   695,   696,    31,    -1,    -1,
+    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    42,    -1,
+    -1,    -1,    46,    -1,    48,    -1,    -1,    -1,    -1,    -1,
+   921,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,  1460,    -1,    -1,    71,   738,    -1,
+    -1,    -1,   742,  1649,    -1,    -1,    -1,    81,    -1,    -1,
+   750,   751,   752,   753,   754,    89,    -1,    -1,   758,    93,
+    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   973,    -1,    -1,    -1,  1302,  1303,  1304,  1305,
+    -1,    -1,    -1,  1309,    -1,    -1,   786,    -1,    -1,   789,
+    -1,   791,    -1,    -1,    -1,    -1,   796,   797,    -1,   799,
+   750,   751,   752,   753,    -1,   805,  1532,  1533,   758,    -1,
+    -1,   811,    -1,    -1,    -1,    -1,    -1,    -1,   818,   819,
+   820,    -1,     1,    -1,     3,     4,     5,     6,     7,     8,
+     9,   831,    -1,    -1,    -1,    14,    -1,    -1,    -1,    -1,
+    -1,  1042,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
+    -1,    30,    31,  1054,    -1,    -1,    -1,    -1,    37,    -1,
+    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,    -1,
+    49,    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,
+    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,  1414,  1415,
+    -1,  1417,    71,    -1,    -1,    -1,    -1,    -1,     3,     4,
+     5,     6,    81,    -1,   904,   905,    -1,    -1,   908,    -1,
+    89,   911,    -1,    -1,    93,    -1,   916,    -1,    -1,    -1,
+   920,    -1,   922,    -1,   924,   925,   926,    -1,    -1,    -1,
+   930,    -1,   932,    -1,    -1,    -1,    -1,    42,    -1,    -1,
+    -1,  1142,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    55,    -1,    57,    58,    -1,    -1,    61,    -1,    63,    -1,
+    -1,    -1,    -1,    -1,    -1,   965,    71,   967,    -1,   969,
+   970,   971,     4,  1499,  1500,    -1,    81,    -1,    -1,    -1,
+    -1,    -1,    14,    -1,    89,  1186,    -1,    -1,    93,    -1,
+    -1,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,
+    -1,    33,    -1,    35,    -1,    -1,     3,     4,     5,     6,
+    42,    -1,     9,    -1,  1014,    -1,    -1,    -1,    -1,   969,
+   970,    -1,    -1,    55,    -1,    57,    -1,  1027,  1028,  1029,
+  1030,    -1,    -1,    65,    31,    -1,    -1,    -1,    -1,    -1,
+    72,    -1,    -1,  1043,    -1,    42,  1046,    -1,    -1,    -1,
+    -1,    -1,    84,  1254,    -1,  1055,    -1,  1258,    55,    -1,
+    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,  1068,    -1,
+    -1,    -1,    -1,    -1,    71,    -1,  1076,    -1,  1028,  1029,
+  1030,    -1,    -1,    -1,    81,    -1,    -1,    -1,    -1,  1089,
+    -1,  1091,    89,  1294,    -1,    -1,    93,    -1,    -1,  1099,
+    -1,    -1,    -1,    -1,   136,    -1,  1307,    -1,   140,   141,
+    -1,    -1,    -1,    -1,   146,    -1,    -1,   149,   150,   151,
+  1120,    -1,    -1,    -1,    -1,  1125,  1126,    -1,  1128,    -1,
+    -1,    -1,    -1,   165,    -1,    -1,    -1,   169,    -1,    -1,
+    -1,    -1,    -1,   175,   176,    -1,    -1,    -1,    -1,    -1,
+    -1,  1151,    -1,    -1,  1154,  1155,  1156,    -1,    -1,    -1,
+    -1,   193,   194,   195,     3,     4,     5,     6,    -1,  1370,
+     9,    -1,    -1,  1374,    -1,    -1,    -1,  1177,  1178,  1179,
+  1180,  1181,  1182,  1183,    -1,    -1,    -1,  1187,    -1,    -1,
+   222,    -1,    31,    -1,    -1,  1396,  1397,    -1,    -1,    -1,
+    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
+  1210,  1211,  1212,    -1,    -1,    -1,    55,    -1,    57,    58,
+    -1,    -1,  1222,  1223,  1224,  1225,    -1,   259,  1178,  1179,
+  1180,  1181,    71,    -1,    -1,    -1,    -1,  1187,    -1,    -1,
+    -1,    -1,    81,    -1,  1244,    -1,    -1,    -1,    -1,  1249,
+    89,    -1,  1252,    -1,    93,    -1,    -1,    -1,    -1,    -1,
+  1210,  1211,    -1,    -1,    -1,   297,   298,    -1,    -1,    -1,
+    -1,    -1,  1222,  1223,    72,    73,    74,    75,    76,    77,
+    78,    79,    80,    81,    82,    83,    84,    85,     3,     4,
      5,     6,     7,     8,     9,    -1,    -1,    -1,    -1,    14,
-    -1,    -1,    -1,  1557,  1558,    -1,    -1,    -1,    -1,  1563,
-    -1,    -1,    -1,    28,    -1,    30,    31,    32,    -1,    -1,
-    -1,   606,    37,   608,    -1,    -1,    -1,    42,    -1,    -1,
-    -1,    46,    -1,    -1,    49,    -1,    -1,   622,   623,   624,
-    55,    -1,    57,    58,    -1,    -1,   631,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,   742,   644,
-    -1,    -1,    -1,    -1,    -1,   650,    81,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    -1,
-    -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,    -1,
-     1,   676,     3,     4,     5,     6,     7,     8,     9,   684,
-    -1,    -1,    -1,    14,    -1,    -1,   691,   692,   693,   694,
-   695,   696,    -1,    -1,    -1,    -1,    -1,    28,    -1,    30,
-    31,    32,   806,    -1,    -1,    -1,    37,    38,   812,    -1,
-    -1,    42,    -1,    -1,   719,    46,    47,    -1,    49,    -1,
-    -1,    -1,    -1,    -1,    55,    -1,    57,    58,    -1,    -1,
-    61,    -1,    63,   738,    -1,    -1,    -1,   742,    -1,    -1,
-    71,    -1,    -1,    -1,    -1,   750,   751,   752,   753,   754,
-    81,    -1,    -1,   758,    -1,    -1,    -1,    -1,    89,    -1,
-    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     3,     4,     5,     6,    -1,    -1,     9,   881,   109,    -1,
-    -1,    -1,   787,    -1,    -1,   790,    -1,   792,    -1,    -1,
-    -1,    -1,   797,   798,    -1,   800,    -1,    -1,    31,    -1,
-    -1,   806,    -1,     3,     4,     5,     6,   812,    -1,    42,
-    -1,    -1,    -1,   917,   819,   820,   821,    -1,    -1,   923,
-    -1,    -1,    55,   927,    57,    58,    -1,   832,    -1,   481,
-    -1,    31,    -1,    -1,   486,    -1,    -1,    -1,    71,    -1,
-    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    81,    -1,
-    -1,    -1,    -1,    -1,    -1,    55,    89,    57,    58,   511,
-    93,    -1,   966,    -1,   968,   517,    -1,    -1,   972,    -1,
-    -1,    71,    -1,    -1,    -1,    -1,    -1,   529,   530,    -1,
-   532,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,
-    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,
-   905,   906,    -1,    -1,   909,     4,     5,   912,     7,     8,
-     9,  1015,   917,    12,    -1,    14,   921,    -1,   923,    -1,
-   925,   926,   927,    -1,  1028,    -1,   931,    -1,   933,    28,
-    -1,    30,    31,    -1,  1038,    -1,    -1,    -1,    37,    -1,
-    -1,  1045,    -1,    -1,    -1,    -1,    -1,    46,    -1,    48,
-    -1,    -1,    -1,  1057,    -1,    -1,    55,    -1,    57,    58,
-    -1,   966,    -1,   968,    -1,   970,   971,   972,    -1,    -1,
-    -1,    -1,    71,    -1,    -1,   627,   628,    -1,    -1,    -1,
-   632,    -1,    81,    -1,    -1,    -1,    -1,  1091,    -1,  1093,
-    -1,    -1,    -1,    -1,    93,    94,    -1,  1101,    -1,    -1,
-    -1,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
-  1015,    -1,    -1,    -1,    14,    -1,    -1,    -1,  1122,    -1,
-    -1,    -1,    -1,  1028,  1029,  1030,  1031,    27,    28,    -1,
-    30,    31,    32,    -1,    -1,    -1,    -1,    37,  1043,    -1,
-  1045,    -1,    42,  1048,    -1,    45,    46,    47,    -1,    49,
-    -1,    -1,  1057,    -1,  1158,    55,    -1,    57,    58,    -1,
-    -1,    61,    -1,    -1,     3,     4,     5,     6,    -1,    -1,
-     9,    71,    -1,  1078,    -1,    -1,    -1,    -1,    -1,    -1,
-  1184,    81,     4,     5,    -1,    -1,  1091,     9,  1093,    89,
-    -1,    -1,    31,    93,    -1,    -1,  1101,    -1,    98,    -1,
-    -1,    -1,    -1,    42,   756,    -1,    -1,    -1,    -1,    31,
-  1214,    -1,    -1,    -1,    -1,    -1,    55,  1122,    57,    58,
-    -1,    -1,  1127,  1128,    -1,  1130,    48,    -1,    -1,    -1,
-    -1,    -1,    71,    55,    -1,    57,    58,    -1,    -1,    -1,
-    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,  1153,    71,
-    89,  1156,  1157,  1158,    93,    -1,    -1,    -1,    -1,    81,
-    -1,   813,    -1,   815,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    93,    94,    -1,  1179,  1180,  1181,  1182,  1183,  1184,
-  1185,    -1,    -1,    -1,  1189,    -1,    -1,    -1,    -1,    -1,
-    -1,  1196,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,    -1,  1310,  1212,  1213,  1214,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1224,
-  1225,  1226,  1227,    -1,    -1,    -1,    -1,    -1,  1233,    -1,
-     4,    -1,    -1,    -1,    -1,    -1,   888,   889,    -1,   891,
-     4,     5,    -1,  1248,    -1,     9,    -1,    -1,  1253,    -1,
-    -1,  1256,    -1,    -1,    -1,    -1,    30,    31,    -1,    33,
-    -1,    35,    -1,    -1,  1368,    -1,    -1,    31,    42,    -1,
-   922,     3,     4,     5,     6,    -1,    -1,     9,    -1,    -1,
-    -1,    55,    -1,    57,    48,    -1,    -1,    -1,    -1,    -1,
-    -1,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    31,
-  1305,  1306,  1307,  1308,  1309,  1310,    80,    71,  1313,    -1,
-    42,    -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,
-    -1,    -1,   974,    55,    -1,    57,    58,    -1,    -1,    93,
-    94,    -1,    -1,  1338,    -1,    -1,    -1,    -1,    -1,    71,
-    -1,    -1,    -1,    -1,  1349,  1350,  1351,    -1,    -1,    81,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,   133,
-   134,    93,   136,  1368,    -1,    -1,   140,   141,    -1,    -1,
-   144,    -1,   146,    -1,    -1,   149,   150,   151,    -1,    -1,
-    -1,    -1,   156,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   165,  1044,    -1,    -1,   169,    -1,    -1,    -1,    -1,
-    -1,   175,   176,  1507,  1056,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,  1420,  1421,    -1,  1423,   193,
-   194,   195,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   203,
-    -1,    -1,    -1,    -1,    -1,  1539,    -1,     1,    -1,     3,
-     4,     5,     6,     7,     8,     9,    10,    11,   222,    13,
-    14,    -1,    -1,    -1,  1558,    -1,    -1,    -1,    -1,    -1,
-    -1,  1466,    -1,    -1,    28,    29,    30,    31,    32,    -1,
-    34,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
-    44,    -1,    46,    -1,    -1,   259,    50,    51,    52,    53,
-    54,    55,  1144,    57,    58,    59,    -1,    61,    62,    -1,
-  1505,  1506,  1507,  1508,    68,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
-    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,    93,
-    -1,    -1,  1537,  1538,  1539,    -1,  1188,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,
-    -1,    -1,  1557,  1558,    -1,    -1,   330,    -1,  1563,    -1,
+    -1,  1301,  1302,  1303,  1304,  1305,  1306,    -1,    -1,  1309,
+    -1,   343,    -1,    -1,    -1,   347,    31,   349,   350,   351,
+    -1,    -1,    37,    -1,   356,    -1,    -1,    42,   360,    -1,
+    -1,    46,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+    55,    -1,    57,    58,    -1,  1345,  1346,  1347,    -1,    -1,
+    -1,    -1,  1302,  1303,  1304,  1305,    71,    -1,    -1,  1309,
+    -1,   393,    -1,    -1,  1364,    -1,    81,    -1,    -1,    -1,
+   402,    -1,   404,   405,    89,    -1,    -1,    -1,    93,    94,
+     3,     4,     5,     6,    -1,    -1,     9,   419,    -1,    -1,
+   422,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   434,    -1,    -1,    -1,    -1,    -1,    31,    -1,
+   442,    -1,    -1,    -1,  1414,  1415,    -1,  1417,    -1,    42,
+    74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+    84,    85,    55,    -1,    57,    58,    -1,    -1,   470,   471,
+    -1,    -1,   474,    -1,   476,   477,   478,   479,    71,    -1,
+    -1,   483,    -1,    -1,    -1,    -1,   488,    -1,    81,   491,
+  1460,    -1,    -1,    -1,  1414,  1415,    89,  1417,    -1,    -1,
+    93,    -1,    -1,    -1,    -1,   507,   508,    -1,    -1,    -1,
+    -1,     3,     4,     5,     6,     3,     4,     5,     6,     7,
+     8,     9,    -1,    -1,    -1,    -1,    14,    -1,    -1,  1499,
+  1500,  1501,  1502,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    28,    -1,    30,    31,   546,   547,   548,   549,    -1,    37,
+    42,    -1,    -1,    -1,    42,    -1,    -1,    49,    46,    -1,
+    -1,  1531,  1532,  1533,    -1,    57,    58,    55,    -1,    57,
+    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,  1499,
+  1500,  1551,  1552,    71,    -1,    -1,    -1,  1557,    -1,    81,
+    -1,    -1,    -1,    81,    -1,    -1,    -1,    89,    -1,    -1,
+    -1,    89,    -1,    -1,   606,    93,   608,    -1,    -1,    -1,
+    -1,  1531,  1532,    -1,    -1,    -1,    -1,    -1,     4,     5,
+   622,   623,   624,     9,    -1,    -1,    -1,    -1,    -1,   631,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   347,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   355,    -1,    -1,    -1,    -1,   360,     1,    -1,     3,
-     4,     5,     6,     7,     8,     9,    -1,    -1,    -1,    -1,
-    14,    -1,    -1,    -1,    -1,    -1,  1258,    -1,    -1,    -1,
-  1262,    -1,    -1,    -1,    28,    -1,    30,    31,    32,   393,
-    -1,    -1,    -1,    37,    38,    -1,    -1,    -1,    42,    -1,
-   404,    -1,    46,    47,    -1,    49,    -1,    -1,    -1,    -1,
-    -1,    55,    -1,    57,    58,   419,  1298,    61,   422,    63,
-    -1,    -1,    -1,    -1,   428,   429,   430,    71,    -1,  1311,
-   434,    -1,    -1,    -1,    -1,    -1,    -1,    81,   442,    -1,
-    -1,     3,     4,     5,     6,    89,    -1,     9,    -1,    93,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,   109,   470,   471,    -1,    31,
-   474,    -1,   476,   477,   478,   479,    -1,    -1,    -1,   483,
-    42,     4,     5,    -1,   488,     8,     9,   491,    -1,    -1,
-    -1,    14,    -1,    55,  1376,    57,    58,    -1,  1380,    -1,
-    -1,    -1,    -1,    -1,   508,    28,    -1,    30,    -1,    71,
-    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    81,
-  1402,  1403,    -1,    46,    -1,    -1,    -1,    89,    -1,    -1,
-    -1,    93,    55,   537,    57,    58,   540,    -1,    -1,    -1,
-    -1,    -1,     1,    -1,     3,     4,     5,     6,     7,     8,
-     9,    -1,   556,   557,   558,    14,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   571,    -1,    28,
-    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    -1,
-     4,    -1,    -1,    42,    -1,    -1,    -1,    46,    47,    -1,
-    49,    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,
-    -1,    -1,    61,    -1,    63,    -1,    30,    31,    -1,    33,
-    -1,    35,    71,    -1,    -1,   619,     4,     5,    42,     7,
-     8,     9,    81,    -1,    12,    -1,    14,   631,    -1,    -1,
-    89,    55,    -1,    57,    93,    -1,    -1,    -1,    -1,    -1,
-    28,    -1,    30,    31,    -1,    -1,   650,     4,     5,    37,
-    -1,    -1,     9,    -1,    -1,    -1,    -1,    -1,    46,    -1,
-    48,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,
-    58,    -1,   676,    -1,    31,    -1,    -1,    -1,    -1,   683,
-    -1,    -1,    -1,    71,    -1,    -1,    -1,   691,   692,   693,
-   694,    48,    -1,    81,    -1,    -1,    -1,    -1,    55,    -1,
-    57,    58,    -1,    -1,    -1,    93,    94,    -1,    -1,    -1,
-    -1,    -1,   136,    -1,    71,    -1,   140,   141,    -1,    -1,
-    -1,    -1,   146,    -1,    81,   149,   150,   151,    -1,    -1,
-    -1,    -1,    -1,    -1,   738,    -1,    93,    94,   742,    -1,
-    -1,   165,    -1,    -1,    -1,   169,   750,   751,   752,   753,
-   754,   175,   176,    -1,   758,    -1,    -1,    -1,    -1,    -1,
-     3,     4,     5,     6,    -1,    -1,    -1,    -1,    -1,   193,
-   194,   195,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   790,    -1,   792,    -1,
-    -1,    -1,    -1,   797,   798,    -1,   800,    -1,   222,    42,
-     1,    -1,     3,     4,     5,     6,     7,     8,     9,    -1,
-    -1,    12,    55,    14,    57,    58,    -1,    -1,    -1,    -1,
-    63,   825,    -1,    -1,    25,    -1,    27,    -1,    71,    -1,
-    31,    -1,    -1,    -1,    -1,   259,    37,    -1,    81,    -1,
-    -1,    42,    -1,    -1,    -1,    46,    89,    48,    -1,    -1,
-    93,    -1,    -1,    -1,    55,    -1,    57,    58,    59,    60,
-    61,    -1,    63,    64,    65,    66,    67,    68,    69,    70,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,    -1,    87,    88,    89,    -1,
-    91,    92,    93,    94,    95,    -1,    97,     4,     5,    -1,
-    -1,   102,     9,    -1,    -1,    -1,   107,   108,   109,    -1,
-   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   925,   926,   927,    31,    -1,    -1,   931,   932,    -1,
-    -1,    -1,   356,    -1,    -1,    -1,   360,    -1,    -1,    -1,
-    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,
-    57,    58,     3,     4,     5,     6,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    71,    -1,   970,   971,   972,    -1,
-    -1,    -1,    -1,   977,    81,    -1,    -1,    -1,    -1,    -1,
-   404,    33,    -1,    -1,    -1,    -1,    93,    94,    -1,    -1,
-    -1,    42,    -1,    -1,    -1,   419,    -1,    -1,   422,    -1,
-    -1,    -1,    -1,    55,    55,    -1,    57,    58,    -1,    -1,
-   434,  1015,    63,    -1,    -1,    -1,    -1,    -1,   442,    -1,
-    71,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
-    81,    -1,    -1,    -1,    14,    -1,    -1,    -1,    89,    -1,
-    -1,    -1,    93,    -1,  1048,    -1,   470,   471,    -1,    -1,
-   474,    31,   476,   477,   478,    -1,    -1,    37,    -1,   483,
-    -1,    -1,    42,    -1,   488,  1069,    46,   491,    48,    -1,
-    -1,    -1,    -1,    -1,  1078,    55,    -1,    57,    58,    -1,
-    -1,    -1,     4,     5,   508,    -1,     8,     9,    -1,    -1,
-    -1,    71,    14,    -1,    -1,    -1,    -1,   149,   150,   151,
-    -1,    81,    -1,    -1,    -1,    -1,    28,    -1,    30,    89,
-    -1,    -1,    -1,    93,    94,    37,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   175,    46,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    55,    -1,    57,    58,    -1,    -1,    -1,
-    -1,   193,   194,   195,    -1,    -1,    -1,    -1,    -1,  1153,
-    -1,    -1,  1156,  1157,  1158,  1159,    -1,    -1,    -1,     1,
-    -1,     3,     4,     5,     6,     7,     8,     9,    -1,    -1,
-   222,    -1,    14,    -1,    -1,  1179,  1180,  1181,  1182,  1183,
-  1184,  1185,    -1,  1187,    -1,  1189,    28,    -1,    30,    31,
-    -1,    -1,    -1,    -1,    -1,    37,   620,    -1,    -1,    -1,
-    42,    -1,    -1,    -1,    46,    -1,    -1,    49,  1212,  1213,
-  1214,    -1,    -1,    55,    -1,    57,    58,    -1,    -1,    61,
-    -1,    -1,    -1,    -1,    -1,    -1,   650,    -1,    -1,    71,
-     4,     5,    -1,     7,     8,     9,    -1,    -1,    12,    81,
-    14,    -1,    -1,    -1,  1248,    -1,   298,    89,    -1,  1253,
-    -1,    93,  1256,    -1,    28,    -1,    30,    31,    -1,    -1,
-    -1,    -1,    -1,    37,    -1,    -1,    -1,   691,   692,   693,
-   694,    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    55,    -1,    57,    58,     3,     4,     5,     6,     7,
-     8,     9,    -1,    -1,    -1,    -1,    14,   349,   350,   351,
-    -1,  1305,  1306,  1307,  1308,  1309,  1310,    -1,    55,  1313,
-    28,    -1,    30,    31,   738,    -1,    -1,    -1,   742,    37,
-    -1,    -1,    -1,    -1,    42,    -1,   750,   751,    46,    12,
-    -1,    -1,    -1,    80,   758,    -1,    83,    55,    -1,    57,
-    58,    -1,    -1,    61,    -1,  1349,  1350,  1351,    -1,    -1,
-    -1,    -1,   404,    71,    -1,    -1,    -1,   104,    -1,   106,
-    -1,    -1,    -1,    81,    -1,    -1,   790,    -1,   792,    -1,
-    -1,    89,    -1,   797,   798,    93,   800,    -1,    -1,    -1,
-    63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-    73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-    83,    84,    85,    -1,    -1,    -1,     3,     4,     5,     6,
-    -1,    -1,     9,    -1,    -1,    -1,    -1,    -1,   470,   471,
-    -1,    -1,   474,    -1,   476,   477,   478,   479,   175,    -1,
-    -1,   483,    -1,    -1,    31,    -1,   488,    -1,    -1,   491,
-    -1,    -1,    -1,    -1,    -1,    42,   193,   194,   195,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   203,    -1,    55,    -1,
-    57,    58,  1466,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    71,   222,    -1,     3,     4,     5,
-     6,     7,     8,     9,    81,    -1,    12,    -1,    14,    -1,
-    -1,    -1,    89,    -1,    -1,    -1,    93,     3,     4,     5,
-     6,   248,    28,     9,    30,    31,    -1,    -1,    -1,   933,
-    -1,    37,    -1,    -1,    -1,   262,    42,    -1,    -1,    -1,
-    46,    -1,    48,    -1,    -1,    31,    -1,    -1,    -1,    55,
-    -1,    57,    58,  1537,  1538,  1539,    42,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    71,   970,   971,   972,    55,
-    -1,    57,    58,    -1,    -1,    81,   608,    -1,    -1,  1563,
-    -1,    -1,    -1,    89,    -1,    71,    -1,    93,    94,    -1,
-   622,   623,   624,    -1,    -1,    81,    -1,    -1,    -1,   631,
-    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    -1,    -1,
-    -1,  1015,    -1,    -1,    -1,    -1,    -1,    -1,   650,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   355,   356,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
-     4,     5,     6,    -1,  1048,     3,     4,     5,     6,     7,
-     8,     9,    -1,    -1,    -1,    -1,    14,    -1,    -1,   691,
-    -1,   693,   694,    -1,   696,    -1,    -1,    31,    -1,    -1,
-    28,    -1,    30,    31,  1078,    -1,    -1,   404,    42,    37,
-    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,
-    48,    55,    -1,    57,    58,    -1,    -1,    55,    -1,    57,
-    58,    -1,    -1,    -1,    -1,    -1,   738,    71,    -1,    -1,
-    -1,    -1,    -1,    71,    -1,    -1,    -1,    81,   750,   751,
-   752,   753,   754,    81,    -1,    89,   758,    -1,    -1,    93,
-    -1,    89,    -1,    -1,    -1,    93,    94,    -1,    -1,    -1,
-    -1,    -1,    -1,   470,   471,    -1,    -1,   474,    -1,   476,
-   477,   478,   479,    -1,    -1,    -1,   483,    -1,    -1,    -1,
-    -1,   488,    -1,    -1,   491,   797,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,  1179,  1180,  1181,  1182,  1183,
-  1184,    -1,    -1,    -1,    -1,  1189,    -1,   819,   820,   821,
-    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
-   832,    -1,    12,    -1,    14,    -1,    -1,    -1,  1212,  1213,
-  1214,    -1,    -1,    -1,     3,     4,     5,     6,    28,    -1,
-    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
-    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,  1248,    55,    -1,    57,    58,  1253,
-    -1,    -1,  1256,    42,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    71,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,
-    -1,    81,    61,   905,   906,    -1,    -1,   909,    -1,    89,
-   912,    -1,    71,    93,    -1,    -1,    -1,    -1,    -1,   921,
-    -1,    -1,    81,   925,   926,   927,    -1,    -1,    -1,   931,
-    89,    -1,  1306,  1307,    93,    -1,    -1,   634,   635,  1313,
-    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
-     7,     8,     9,   650,    -1,    -1,    -1,    14,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   970,   971,
-   972,    28,    -1,    30,    31,  1349,  1350,  1351,    -1,    -1,
-    37,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,
-    -1,    -1,    -1,    -1,   691,    -1,   693,   694,    55,    -1,
-    57,    58,    -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,
-    -1,    -1,    -1,  1015,    71,    -1,    -1,   349,   350,   351,
-     3,     4,     5,     6,    81,    -1,     9,  1029,  1030,  1031,
-    -1,    -1,    89,    -1,    -1,    -1,    93,    -1,    -1,    -1,
-    -1,   738,    -1,    -1,    -1,    -1,  1048,    -1,    31,    -1,
-    -1,    -1,    -1,   750,   751,   752,   753,   754,   755,    42,
-    -1,   758,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,
-     3,     4,     5,     6,     7,     8,     9,   784,    71,    -1,
-    -1,    14,  1466,    -1,    -1,    -1,    -1,    -1,    81,    -1,
-   797,    -1,    -1,    -1,    -1,    28,    89,    30,    31,    -1,
-    93,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    42,
-    -1,    -1,    -1,    46,    -1,  1127,  1128,    -1,  1130,    -1,
-    -1,    -1,    55,    14,    57,    58,    -1,    -1,    61,    -1,
-    -1,    -1,    23,    24,    -1,    -1,    -1,    -1,    71,    30,
-    31,  1153,    33,    -1,  1156,  1157,  1158,    -1,    81,    -1,
-    -1,    -1,    -1,  1537,  1538,  1539,    89,    -1,    -1,    -1,
-    93,    -1,    -1,    -1,    -1,    -1,    -1,  1179,  1180,  1181,
-  1182,  1183,  1184,  1185,    65,    -1,    -1,  1189,    -1,  1563,
+    -1,    -1,   644,    -1,    -1,    31,    -1,    -1,   650,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,     3,     4,     5,     6,    -1,    -1,     9,
-  1212,  1213,  1214,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,  1224,  1225,  1226,  1227,    -1,    -1,    -1,    -1,
-    -1,    31,    -1,    -1,    -1,   932,   933,   934,    -1,    -1,
-    -1,    -1,    42,   124,    -1,   126,  1248,    -1,    -1,    -1,
-    -1,    -1,   133,   134,    -1,    55,    -1,    57,    58,   140,
-   141,    -1,    -1,   144,   145,   146,    -1,   148,   149,   150,
-   151,    71,    -1,   970,   971,   972,    -1,    -1,    -1,    -1,
-   977,    81,    -1,    -1,    -1,     3,     4,     5,     6,    89,
-   622,   623,   624,    93,    -1,    -1,    -1,    -1,    -1,   631,
-    -1,    -1,    -1,  1305,  1306,  1307,  1308,  1309,  1310,    -1,
-    -1,  1313,    -1,    -1,    -1,    -1,    -1,    -1,  1015,    -1,
-    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,  1029,  1030,  1031,    -1,    -1,    55,    -1,    57,
-    58,    -1,    -1,    -1,    -1,    -1,    31,  1349,    -1,  1351,
-    -1,  1048,    -1,    71,    -1,    -1,    -1,   238,   239,   691,
-    -1,   693,   694,    81,   696,    -1,    -1,    -1,    -1,    -1,
-    -1,    89,  1069,    -1,    -1,    93,    -1,    -1,   259,    64,
-    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    55,
+    -1,    57,    58,     1,   676,     3,     4,     5,     6,     7,
+     8,     9,   684,    -1,    -1,    71,    14,    -1,    -1,   691,
+   692,   693,   694,   695,   696,    81,    -1,    -1,    -1,    -1,
+    28,    -1,    30,    31,    32,    -1,    -1,    93,    94,    37,
+    38,    -1,    -1,    -1,    42,    -1,    -1,   719,    46,    47,
+    -1,    49,    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,
+    58,    -1,    -1,    61,    -1,    63,   738,    -1,    -1,    -1,
+   742,    -1,    -1,    71,    -1,    -1,    -1,    -1,   750,   751,
+   752,   753,   754,    81,    -1,    -1,   758,    -1,    -1,    -1,
+    -1,    89,    -1,    -1,    -1,    93,    71,    72,    73,    74,
     75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-    85,    -1,    -1,    -1,     4,     5,   738,     7,     8,     9,
-    -1,    -1,    12,    -1,    14,    -1,    -1,   298,  1420,  1421,
-    -1,  1423,    -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,
-    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,    -1,
-    -1,    -1,  1159,    -1,  1466,    -1,   347,    -1,   349,   350,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,  1179,  1180,  1181,  1182,  1183,  1184,  1185,    -1,
-  1187,    -1,  1189,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   832,    -1,    -1,  1505,  1506,  1507,  1508,    -1,    -1,    -1,
-    -1,    -1,   393,    -1,    -1,  1212,  1213,  1214,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1224,  1225,  1226,
-  1227,   412,    -1,    -1,    -1,  1537,  1538,  1539,   419,    -1,
-    -1,   422,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,  1248,    -1,   434,    -1,  1557,    -1,    -1,    -1,    -1,
-    -1,  1563,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,   905,   906,    -1,    -1,   909,    -1,    -1,
-   912,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   921,
-    -1,    -1,    -1,   925,   926,   927,    -1,    -1,    -1,   931,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1305,  1306,
-  1307,  1308,  1309,  1310,    -1,    -1,  1313,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   505,    -1,   507,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   970,   971,
-   972,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   531,    -1,  1349,    -1,  1351,    -1,    -1,    -1,    -1,    -1,
+    85,   109,    -1,    -1,   786,    -1,    -1,   789,    -1,   791,
+    -1,    -1,    -1,    -1,   796,   797,    -1,   799,     1,    -1,
+    -1,     4,     5,   805,    -1,     8,     9,    -1,    -1,   811,
+    -1,    14,    -1,    -1,    -1,    -1,   818,   819,   820,    -1,
+    -1,    -1,    -1,    -1,    -1,    28,    -1,    30,    -1,   831,
+    -1,    -1,    -1,    -1,    37,    -1,    39,    40,    -1,    -1,
+    -1,    -1,    -1,    46,    -1,    48,    -1,    -1,    -1,    -1,
+    -1,    -1,    55,    -1,    57,    58,    -1,    60,    -1,    -1,
+    -1,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+    73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+    83,    84,    -1,    -1,    87,    88,    89,    -1,    91,    -1,
+    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
+     5,     6,   904,   905,    -1,    -1,   908,   110,    -1,   911,
+    -1,    -1,    -1,    -1,   916,    -1,    -1,    -1,   920,    -1,
+   922,    -1,   924,   925,   926,    -1,    -1,    -1,   930,    -1,
+   932,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,
+    -1,    -1,    -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   965,    -1,   967,    -1,   969,   970,   971,
+     4,    -1,    -1,    -1,    -1,    -1,    81,     3,     4,     5,
+     6,     7,     8,     9,    89,    -1,    12,    -1,    14,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    30,    31,    -1,    33,
+    -1,    35,    28,    -1,    30,    31,    -1,    -1,    42,    -1,
+    -1,    37,  1014,    -1,    -1,    -1,    42,    -1,    -1,    -1,
+    46,    55,    48,    57,    -1,  1027,  1028,  1029,  1030,    55,
+    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,  1041,
+    -1,  1043,    -1,    -1,  1046,    71,    80,    -1,    -1,    -1,
+    -1,    -1,    -1,  1055,    -1,    81,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    94,    -1,
+    -1,    -1,    -1,    -1,  1076,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1089,    -1,  1091,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1099,    -1,   133,
+   134,    -1,   136,    -1,    -1,    -1,   140,   141,    -1,    -1,
+   144,    -1,   146,    -1,    -1,   149,   150,   151,  1120,    -1,
+    -1,    -1,   156,  1125,  1126,    -1,  1128,    -1,    -1,    -1,
+    -1,   165,    -1,    -1,    -1,   169,    -1,    -1,    -1,    -1,
+    -1,   175,   176,    -1,    -1,    -1,    -1,    -1,    -1,  1151,
+    -1,    -1,  1154,  1155,  1156,    -1,    -1,    -1,    -1,   193,
+   194,   195,     4,     5,    -1,    -1,     8,     9,    -1,   203,
+    -1,    -1,    14,    -1,    -1,  1177,  1178,  1179,  1180,  1181,
+  1182,  1183,    -1,    -1,    -1,  1187,    -1,    -1,   222,    -1,
+    -1,    -1,  1194,    -1,    -1,    37,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    46,    -1,    48,    -1,  1210,  1211,
+  1212,    -1,    -1,    55,    -1,    57,    58,    -1,    -1,    -1,
+  1222,  1223,  1224,  1225,    -1,   259,    -1,  1229,     1,    71,
+     3,     4,     5,     6,     7,     8,     9,    -1,    -1,    81,
+    -1,    14,  1244,    -1,    -1,    -1,    -1,  1249,    -1,    -1,
+  1252,    93,    94,    -1,    -1,    28,    -1,    30,    31,    32,
+    -1,    -1,    -1,    -1,    37,    38,    -1,    -1,    -1,    42,
+    -1,    -1,    -1,    46,    47,    -1,    49,    -1,    -1,    -1,
+    -1,    -1,    55,    -1,    57,    58,    -1,    -1,    61,    -1,
+    63,    -1,    -1,    -1,    -1,    -1,   330,    -1,    71,  1301,
+  1302,  1303,  1304,  1305,  1306,    -1,    -1,  1309,    81,    -1,
+    -1,    -1,    -1,   347,     4,     5,    89,     7,     8,     9,
+    93,   355,    12,    -1,    14,    -1,   360,    -1,    -1,    -1,
+    -1,    -1,  1334,    -1,    -1,    -1,   109,    -1,    28,    -1,
+    30,    31,    -1,  1345,  1346,  1347,    -1,    37,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    48,   393,
+    -1,    -1,  1364,    -1,    -1,    55,    -1,    57,    58,    -1,
+   404,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    71,    -1,    -1,    -1,   419,    -1,    -1,   422,    -1,
+    -1,    81,    -1,    -1,   428,   429,   430,    -1,    -1,    -1,
+   434,    -1,    -1,    93,    94,    -1,    -1,    -1,   442,    -1,
+    -1,    -1,  1414,  1415,    -1,  1417,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
-     6,    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,
-    -1,    -1,    -1,  1015,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    28,    29,    30,    31,    32,    -1,    34,    35,
-    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
-    46,    -1,    48,    -1,    50,    51,    52,    53,    54,    55,
-    -1,    57,    58,  1420,  1421,  1422,  1423,   608,    -1,    -1,
-    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,   619,   620,
-    -1,   622,   623,    79,    80,    81,    -1,    -1,    -1,    -1,
-    -1,    87,    88,    89,    -1,    -1,    -1,    93,    94,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1466,
-    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,
-     4,     5,    -1,     7,     8,     9,    -1,    -1,    -1,    -1,
-    14,    -1,    -1,    -1,    -1,   676,    -1,    -1,    -1,    -1,
-    -1,    -1,   683,   684,    28,    -1,    30,    31,  1505,  1506,
-  1507,  1508,    -1,    37,   695,    -1,    -1,    -1,    -1,    -1,
-    -1,  1153,    46,    -1,  1156,  1157,  1158,    -1,    -1,    -1,
-    -1,    55,    -1,    57,    58,    -1,    -1,    -1,   719,    -1,
-  1537,  1538,  1539,    -1,    -1,    -1,    -1,  1179,  1180,  1181,
-  1182,  1183,  1184,  1185,    -1,    -1,    -1,  1189,    -1,    -1,
-  1557,    -1,    -1,    -1,    -1,    -1,  1563,    -1,    -1,    -1,
+     6,     7,     8,     9,    -1,    -1,   470,   471,    14,    -1,
+   474,    -1,   476,   477,   478,   479,    -1,    -1,    -1,   483,
+    -1,    -1,    -1,    -1,   488,    31,    -1,   491,  1460,    -1,
+    -1,    37,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,
+    46,    -1,    48,    -1,   508,    -1,    -1,    -1,    -1,    55,
+    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    71,    -1,  1499,  1500,  1501,
+  1502,    -1,    -1,   537,    -1,    81,   540,    -1,    -1,     4,
+    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,    -1,    -1,
+    -1,    -1,   556,   557,   558,    -1,    -1,    -1,    -1,  1531,
+  1532,  1533,    -1,    -1,    -1,    30,    31,   571,    33,    -1,
+    35,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,  1551,
+  1552,    -1,    -1,    -1,    -1,  1557,    -1,    -1,    -1,    -1,
+    55,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,     1,    -1,     3,     4,     5,     6,     7,
+     8,     9,    -1,    -1,    -1,   619,    14,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   631,    -1,    -1,
+    28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
+    -1,    -1,    -1,    -1,    42,    -1,   650,    -1,    46,    47,
+    -1,    49,    -1,     3,     4,     5,     6,    55,    -1,    57,
+    58,    -1,    -1,    61,    -1,    63,    -1,    -1,    -1,    -1,
+    -1,   136,   676,    71,    -1,   140,   141,    -1,    -1,   683,
+    -1,   146,    -1,    81,   149,   150,   151,   691,   692,   693,
+   694,    89,    42,    -1,    -1,    93,    -1,    -1,    -1,    -1,
+   165,    -1,    -1,    -1,   169,    55,    -1,    57,    58,    -1,
+   175,   176,     3,     4,     5,     6,    -1,    -1,     9,    -1,
+    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,   193,   194,
+   195,    81,    -1,    -1,   738,    -1,    -1,    -1,   742,    89,
+    31,    -1,    -1,    93,    -1,    -1,   750,   751,   752,   753,
+   754,    42,    -1,    -1,   758,    -1,    -1,   222,    -1,    -1,
+    -1,    -1,    -1,    -1,    55,    -1,    57,    58,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-  1212,  1213,  1214,    68,    69,    70,    71,    72,    73,    74,
+    71,    -1,    -1,    -1,    -1,   789,    -1,   791,    -1,    -1,
+    81,    -1,   796,   797,   259,   799,    -1,    -1,    89,    -1,
+    -1,    -1,    93,    -1,    -1,    -1,     1,    -1,     3,     4,
+     5,     6,     7,     8,     9,    -1,    -1,    12,    -1,    14,
+   824,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    25,    -1,    27,    -1,    -1,    -1,    31,    -1,    -1,    -1,
+    -1,    -1,    37,    -1,    -1,    -1,    -1,    42,    -1,    -1,
+    -1,    46,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+    55,    -1,    57,    58,    59,    60,    61,    -1,    63,    64,
+    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
     75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-    85,    -1,    -1,   784,    -1,    -1,   787,    64,    65,    66,
-    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   819,   820,
-   821,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,   832,    -1,    -1,   111,    -1,     1,    -1,     3,     4,
-     5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-    -1,    -1,    -1,  1305,  1306,  1307,  1308,  1309,  1310,    -1,
-    -1,  1313,    -1,    28,    29,    30,    31,    32,    -1,    34,
-    35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
-    -1,    46,    -1,    48,    -1,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    59,    -1,    -1,    62,    -1,    -1,
-    -1,    -1,    -1,    68,   905,   906,    71,    -1,   909,    -1,
-    -1,   912,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-   921,    -1,    87,    88,    89,    -1,    -1,    -1,    93,    94,
-   931,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    60,    -1,    -1,   110,    64,    65,    66,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-    78,    79,    80,    81,    82,    83,    84,    85,  1420,  1421,
-    -1,  1423,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
-    -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-    -1,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
-    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-    32,    -1,    34,    35,    36,    37,    -1,    39,    40,    41,
-    42,    43,    44,    45,    46,    47,    -1,    -1,    50,    51,
-    52,    53,    54,    55,    -1,    57,    58,    59,    -1,    61,
-    62,    -1,  1043,    -1,    -1,    -1,    68,    -1,    -1,    71,
-    -1,    -1,    -1,  1505,  1506,  1507,  1508,    79,    80,    81,
-    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,  1070,
-    -1,    93,    -1,    95,    -1,    -1,    -1,    -1,    -1,     3,
-     4,     5,     6,     7,     8,     9,    -1,   109,   110,    -1,
-    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    28,  1557,    30,    31,    -1,    -1,
-    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    42,    -1,
-    -1,    -1,    46,    -1,    -1,    -1,  1127,  1128,    -1,  1130,
-    -1,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,  1153,    -1,    -1,  1156,  1157,    81,    -1,    -1,
+    85,   356,    87,    88,    89,   360,    91,    92,    93,    94,
+    95,    -1,    97,    -1,    -1,    -1,    -1,   102,    -1,    -1,
+    -1,    -1,   107,   108,   109,    -1,   111,    -1,    -1,    -1,
+   924,   925,   926,    -1,    -1,    -1,   930,   931,    -1,    -1,
+    -1,     4,     5,    33,    -1,     8,     9,    -1,    -1,   404,
+    -1,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
+     4,     5,     6,    -1,   419,    55,    -1,   422,    -1,    -1,
+    -1,    -1,    -1,    -1,    37,   969,   970,   971,    -1,   434,
+    -1,    -1,   976,    46,    -1,    48,    -1,   442,    -1,    -1,
+    -1,    -1,    55,    -1,    57,    58,    -1,    -1,    42,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,
+    -1,    55,    -1,    57,    58,   470,   471,    61,    81,   474,
+  1014,   476,   477,   478,    -1,    -1,    -1,    71,   483,    -1,
+    93,    94,    -1,   488,    -1,    -1,   491,    81,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,     1,    -1,     3,     4,     5,     6,
-     7,     8,     9,    10,    11,  1196,    13,    14,    15,    -1,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,    -1,    34,    35,    36,
-    37,    -1,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    -1,  1233,    50,    51,    52,    53,    54,    55,    -1,
-    57,    58,    59,    -1,    61,    62,    -1,    -1,    -1,    -1,
-  1251,    68,  1253,    -1,    71,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
-    87,    88,    89,    -1,    -1,    -1,    93,     1,    95,     3,
-     4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-    14,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    28,    29,    30,    31,    32,    -1,
-    34,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
-    44,    -1,    46,    -1,    48,    -1,    50,    51,    52,    53,
-    54,    55,    -1,    57,    58,    59,    -1,    -1,    62,    -1,
-    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
-    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,    93,
-    94,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
-    10,    11,    12,    13,    14,    -1,   110,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,
+    -1,    -1,  1046,   508,    -1,    -1,    -1,    -1,    -1,   149,
+   150,   151,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,  1067,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,  1076,    -1,    -1,   175,    -1,    -1,     1,    -1,
+     3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+    13,    14,    -1,   193,   194,   195,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    31,    32,
+    -1,    34,    35,    36,    37,    -1,    39,    40,    41,    42,
+    43,    44,   222,    46,    -1,    48,    -1,    50,    51,    52,
+    53,    54,    55,    -1,    57,    58,    59,    -1,    -1,    62,
+    -1,    -1,    -1,    -1,    -1,    68,    -1,  1151,    71,    -1,
+  1154,  1155,  1156,  1157,    -1,   620,    79,    80,    81,    -1,
+    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,
+    93,    94,    -1,  1177,  1178,  1179,  1180,  1181,  1182,  1183,
+    -1,  1185,    -1,  1187,    -1,   650,    -1,   110,    -1,    -1,
+     4,     5,    -1,    -1,     8,     9,    -1,    -1,   298,    -1,
+    14,    -1,    -1,    -1,    -1,    -1,  1210,  1211,  1212,    -1,
+    -1,    -1,    -1,    -1,    28,    -1,    30,    -1,    -1,    -1,
+    -1,    -1,    -1,    37,    -1,    -1,   691,   692,   693,   694,
+    -1,    -1,    46,    -1,    48,    -1,    -1,    -1,    -1,    -1,
+  1244,    55,    -1,    57,    58,  1249,    -1,    -1,  1252,   349,
+   350,   351,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,     3,     4,
+     5,     6,    -1,   738,     9,    -1,    -1,   742,    -1,    93,
+    94,    -1,    -1,    -1,    -1,   750,   751,    -1,    -1,    -1,
+    -1,    -1,    -1,   758,    -1,    -1,    31,  1301,  1302,  1303,
+  1304,  1305,  1306,    -1,   404,  1309,    -1,    42,    -1,    -1,
+    -1,     4,     5,    -1,     7,     8,     9,    -1,    -1,    -1,
+    55,    14,    57,    58,   789,    -1,   791,    -1,    -1,    -1,
+    -1,   796,   797,    -1,   799,    28,    71,    30,    31,    -1,
+    -1,  1345,  1346,  1347,    37,    -1,    81,    -1,    -1,    -1,
+    -1,    -1,    -1,    46,    89,    -1,    49,    -1,    93,    -1,
+    -1,    -1,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,
+   470,   471,    -1,    -1,   474,    -1,   476,   477,   478,   479,
+    -1,    -1,    -1,   483,    -1,    -1,    -1,    -1,   488,    -1,
+    -1,   491,     1,    -1,     3,     4,     5,     6,     7,     8,
+     9,    10,    11,    -1,    13,    14,    15,    -1,    17,    18,
+    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+    29,    30,    31,    32,    -1,    34,    35,    36,    37,    -1,
+    39,    40,    41,    42,    43,    44,    45,    46,    47,    -1,
+    -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
+    59,    -1,    61,    62,    -1,    -1,  1460,    -1,    -1,    68,
+    -1,    -1,    71,    -1,    -1,    -1,    -1,   932,    -1,    55,
+    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,
+    89,    -1,    -1,    -1,    93,    -1,    95,     3,     4,     5,
+     6,    -1,    -1,    -1,    80,    -1,    -1,    83,    -1,    -1,
+   109,   110,    -1,    -1,   969,   970,   971,    -1,   608,    -1,
+    -1,    -1,    -1,    -1,   107,   108,    -1,    -1,   104,    -1,
+   106,    -1,   622,   623,   624,    -1,    42,  1531,  1532,  1533,
+     1,   631,     3,     4,     5,     6,     7,     8,     9,    55,
+    -1,    57,    58,    14,    -1,    -1,    -1,    63,    -1,  1014,
+   650,    -1,    -1,  1557,    -1,    71,    27,    28,    -1,    30,
+    31,    32,    -1,    -1,    -1,    81,    37,    -1,    -1,    -1,
+    -1,    42,    -1,    89,    45,    46,    47,    93,    49,    -1,
+    -1,  1046,    -1,    -1,    55,    -1,    57,    58,    -1,   175,
+    61,   691,    -1,   693,   694,    -1,   696,    -1,    -1,    -1,
+    71,    -1,    -1,    -1,    -1,    -1,    -1,   193,   194,   195,
+    81,  1076,    -1,    -1,    -1,    -1,    -1,   203,    89,    -1,
+    -1,    -1,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   222,    -1,   738,    -1,
+    -1,    -1,    -1,     3,     4,     5,     6,    -1,    -1,     9,
+   750,   751,   752,   753,   754,    -1,    -1,    -1,   758,    -1,
+    -1,    -1,   248,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    31,    -1,    -1,    -1,    -1,   262,    -1,    -1,    -1,
+    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,     3,     4,
+     5,     6,    -1,    -1,    -1,    55,   796,    57,    58,     4,
+     5,    -1,     7,     8,     9,    -1,    -1,    12,    -1,    14,
+    -1,    71,  1177,  1178,  1179,  1180,  1181,  1182,   818,   819,
+   820,    81,  1187,    28,    -1,    30,    31,    42,    -1,    89,
+    -1,   831,    37,    93,    -1,    -1,    -1,   330,    -1,    -1,
+    55,    46,    57,    58,    -1,  1210,  1211,  1212,    63,    -1,
+    55,    -1,    57,    58,    -1,    -1,    71,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,   355,
+   356,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93,  1244,
+    -1,    -1,    -1,    -1,  1249,    -1,     1,  1252,     3,     4,
+     5,     6,     7,     8,     9,    -1,    -1,    -1,    -1,    14,
+    -1,    -1,    -1,    -1,   904,   905,    -1,    -1,   908,   402,
+    -1,   911,    -1,    28,    -1,    30,    31,    32,   404,    -1,
+   920,    -1,    37,    38,   924,   925,   926,    42,    -1,    -1,
+   930,    46,    47,    -1,    49,    -1,    -1,  1302,  1303,    -1,
+    55,    -1,    57,    58,  1309,    -1,    61,    -1,    63,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,   969,
+   970,   971,    -1,    -1,    89,   468,    -1,    -1,    93,    -1,
+  1345,  1346,  1347,    -1,   470,   471,    -1,    -1,   474,    -1,
+   476,   477,   478,   479,   109,    -1,    -1,   483,    -1,    -1,
+    -1,    -1,   488,    -1,    -1,   491,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,  1014,    -1,     4,     5,    -1,    -1,
+    -1,     9,    -1,    -1,    -1,    -1,    -1,    -1,  1028,  1029,
+  1030,    -1,     1,    -1,     3,     4,     5,     6,     7,     8,
+     9,    -1,    -1,    31,   537,    14,  1046,   540,    -1,    -1,
+    -1,    -1,   545,   546,   547,   548,   549,    -1,    -1,    28,
+    48,    30,    31,    32,    -1,   558,    -1,    55,    37,    57,
+    58,    -1,    -1,    42,    -1,    -1,    -1,    46,   571,    -1,
+    49,    -1,    -1,    71,    -1,    -1,    55,    -1,    57,    58,
+    -1,    -1,    -1,    81,    -1,  1460,    -1,    -1,    -1,    -1,
+    -1,    -1,    71,    -1,    -1,    93,    94,    -1,    -1,    -1,
+    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    89,    -1,    -1,    -1,    93,  1125,  1126,    -1,  1128,    98,
+    -1,   624,    -1,    -1,    -1,    -1,    -1,    -1,   631,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   634,   635,
+    -1,  1151,    -1,    -1,  1154,  1155,  1156,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,   650,    -1,  1531,  1532,  1533,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1177,  1178,  1179,
+  1180,  1181,  1182,  1183,    -1,    -1,    -1,  1187,    -1,    -1,
+    -1,    -1,  1557,     3,     4,     5,     6,     7,     8,     9,
+    -1,    -1,    12,    -1,    14,   691,    -1,   693,   694,    -1,
+  1210,  1211,  1212,    -1,    -1,    -1,    -1,    -1,    28,    -1,
+    30,    31,  1222,  1223,  1224,  1225,    -1,    37,    -1,    -1,
+    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,    48,    -1,
+    -1,    -1,    -1,    -1,  1244,    55,    -1,    57,    58,   742,
+    -1,    -1,   738,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    71,    -1,    -1,   750,   751,   752,   753,   754,   755,
+    -1,    81,   758,    -1,    -1,    -1,    -1,    -1,    -1,    89,
+    -1,    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   783,    -1,    -1,
+    -1,  1301,  1302,  1303,  1304,  1305,  1306,    -1,    -1,  1309,
+   796,    -1,   805,   349,   350,   351,    -1,    -1,   811,    -1,
+    -1,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
+    10,    11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,  1345,    -1,  1347,    28,    29,
     30,    31,    32,    -1,    34,    35,    36,    37,    -1,    39,
     40,    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,
     50,    51,    52,    53,    54,    55,    -1,    57,    58,    -1,
-    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,
+    -1,    -1,    62,    -1,    -1,    -1,    -1,   880,    68,    -1,
     -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
     80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
-    -1,    -1,     1,    93,     3,     4,     5,     6,    -1,     8,
-     9,    10,    11,    -1,    13,    14,    -1,    -1,   108,    -1,
-   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
-    29,    30,    -1,    32,    -1,    34,    35,    36,    37,    -1,
+    -1,    -1,    -1,    93,  1414,  1415,    -1,  1417,    -1,    -1,
+    -1,    -1,    -1,   916,    -1,    -1,    -1,    -1,   108,   922,
+   110,    -1,    -1,   926,    -1,    -1,    -1,     3,     4,     5,
+     6,     7,     8,     9,    -1,   931,   932,   933,    14,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+  1460,    -1,    28,    -1,    30,    31,    -1,    -1,    -1,    -1,
+    -1,    37,   965,    -1,   967,    -1,    42,    -1,   971,    -1,
+    46,    -1,    -1,   969,   970,   971,    -1,    -1,    -1,    55,
+   976,    57,    58,    -1,    -1,    -1,    -1,    63,    -1,  1499,
+  1500,  1501,  1502,    14,    -1,    71,    -1,    -1,    -1,    -1,
+    -1,    -1,    23,    24,    -1,    81,    -1,    -1,    -1,    30,
+    31,  1014,    33,    89,    -1,    -1,    -1,    93,  1014,    -1,
+    -1,  1531,  1532,  1533,  1027,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,  1028,  1029,  1030,    -1,    -1,    -1,    -1,    -1,
+  1043,  1551,    -1,    -1,    65,    -1,    -1,  1557,    -1,    -1,
+  1046,    -1,  1055,    -1,     3,     4,     5,     6,    -1,    -1,
+     9,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,  1067,    -1,    -1,    -1,    -1,   622,   623,   624,    -1,
+    -1,    -1,    31,    -1,    -1,   631,  1089,    -1,  1091,    -1,
+    -1,    -1,    -1,    42,    -1,    -1,  1099,    -1,    -1,    -1,
+    -1,    -1,    -1,   124,    -1,   126,    55,    -1,    57,    58,
+    -1,    -1,   133,   134,    -1,    -1,    -1,  1120,    -1,   140,
+   141,    -1,    71,   144,   145,   146,    -1,   148,   149,   150,
+   151,    -1,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    89,    -1,    -1,    -1,    93,   691,    -1,   693,   694,    -1,
+   696,    -1,    -1,  1156,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,  1157,    69,    70,    71,    72,    73,    74,    75,    76,
+    77,    78,    79,    80,    81,    82,    83,    84,    85,  1182,
+    -1,  1177,  1178,  1179,  1180,  1181,  1182,  1183,    -1,  1185,
+    -1,  1187,   738,    -1,    -1,    -1,    -1,     3,     4,     5,
+     6,     7,     8,     9,    -1,    -1,    12,    -1,    14,  1212,
+    -1,    -1,    -1,    -1,  1210,  1211,  1212,   238,   239,    -1,
+    -1,    -1,    28,    -1,    30,    31,  1222,  1223,  1224,  1225,
+    -1,    37,    -1,    -1,    -1,    -1,    42,    -1,   259,    -1,
+    46,    -1,    48,    -1,    -1,     4,     5,    -1,  1244,    55,
+     9,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,
+    -1,    -1,    31,    -1,    -1,    81,    -1,   298,     3,     4,
+     5,     6,    -1,    89,    -1,   831,    -1,    93,    94,    48,
+    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,
+    -1,    -1,    -1,  1306,    -1,  1301,  1302,  1303,  1304,  1305,
+  1306,    -1,    71,  1309,    -1,    -1,    -1,    42,    -1,    -1,
+    -1,    -1,    81,    -1,    -1,    -1,   347,    -1,   349,   350,
+    55,    -1,    57,    58,    93,    94,    61,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,  1345,
+    -1,  1347,    -1,    -1,    -1,    -1,    81,    -1,   904,   905,
+    -1,  1364,   908,    -1,    89,   911,    -1,    -1,    93,    -1,
+    -1,    -1,   393,    -1,   920,    -1,    -1,    -1,   924,   925,
+   926,    -1,    -1,    -1,   930,    -1,    -1,    -1,    -1,    -1,
+    -1,   412,    -1,    -1,    -1,    -1,    -1,    -1,   419,    -1,
+    -1,   422,     1,    -1,     3,     4,     5,     6,     7,     8,
+     9,    10,    11,   434,    13,    14,    -1,    -1,  1414,  1415,
+  1416,  1417,    -1,   969,   970,   971,    -1,    -1,    -1,    28,
+    29,    30,    31,    32,    -1,    34,    35,    36,    37,    -1,
     39,    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,
     -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    59,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,
+    59,    -1,    61,    62,  1460,    -1,    -1,    -1,  1014,    68,
     -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,
-    89,    -1,    -1,    -1,    93,    94,     1,    -1,     3,     4,
-     5,     6,    -1,     8,     9,    10,    11,    -1,    13,    14,
-   109,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    28,    29,    30,    31,    32,    -1,    34,
-    35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
-    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    59,    -1,    -1,    62,    -1,    -1,
-    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-    -1,    -1,    87,    88,    89,    -1,    -1,     1,    93,     3,
-     4,     5,     6,    -1,     8,     9,    10,    11,    -1,    13,
-    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    28,    29,    30,    -1,    32,    -1,
+    79,    80,    81,    -1,   505,    -1,   507,    -1,    87,    88,
+    89,    -1,    -1,    -1,    93,    -1,    -1,    -1,  1501,    -1,
+    -1,    -1,    -1,  1499,  1500,  1501,  1502,    -1,    -1,    -1,
+   531,   110,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
+     6,     7,     8,     9,    -1,    -1,    -1,    -1,    14,    -1,
+  1533,    -1,    -1,    -1,    -1,  1531,  1532,  1533,    -1,    -1,
+    -1,    -1,    28,    -1,    30,    31,    32,    -1,    -1,  1552,
+    -1,    37,    -1,    -1,    -1,  1551,    42,    -1,    -1,    -1,
+    46,  1557,    -1,    49,    -1,    -1,    -1,    -1,    -1,    55,
+    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    71,    -1,   608,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,   619,   620,
+    -1,   622,   623,    89,    -1,  1151,    -1,    93,  1154,  1155,
+  1156,    -1,    98,     1,    -1,     3,     4,     5,     6,     7,
+     8,     9,    -1,    -1,    -1,    -1,    14,    -1,    -1,    -1,
+    -1,  1177,  1178,  1179,  1180,  1181,  1182,  1183,    -1,    -1,
+    28,  1187,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
+    38,    -1,    -1,    -1,    42,   676,    -1,    -1,    46,    47,
+    -1,    49,   683,   684,  1210,  1211,  1212,    55,    -1,    57,
+    58,    12,    -1,    61,   695,    63,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    81,    -1,    -1,    -1,    -1,   719,    -1,
+    -1,    89,    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   109,    63,    64,    65,    66,    67,    68,    69,    70,
+    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+    81,    82,    83,    84,    85,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,  1301,  1302,  1303,  1304,  1305,
+  1306,    -1,   783,  1309,    -1,   786,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,     1,    -1,     3,     4,     5,     6,     7,
+     8,     9,    10,    11,    12,    13,    14,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   818,   819,   820,
+    28,    29,    30,    31,    32,    -1,    34,    35,    36,    37,
+   831,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
+    48,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
+    58,    59,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,
+    68,    -1,    -1,    71,    -1,    -1,     3,     4,     5,     6,
+    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
+    88,    89,    -1,    -1,    -1,    93,    94,    -1,  1414,  1415,
+    -1,  1417,    -1,    -1,    31,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   110,   904,   905,    42,    -1,   908,    -1,    -1,
+   911,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,   920,
+    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   930,
+    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    89,    -1,    -1,    -1,    93,    70,    71,    72,
+    73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+    83,    84,    85,  1499,  1500,  1501,  1502,     1,    -1,     3,
+     4,     5,     6,     7,     8,     9,    10,    11,    -1,    13,
+    14,    15,    -1,    17,    18,    19,    20,    21,    22,    23,
+    24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
     34,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
-    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
-    54,    55,    -1,    57,    58,    59,    -1,    -1,    62,    -1,
-    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
-    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,    93,
-    94,     1,    -1,     3,     4,     5,     6,    -1,     8,     9,
-    10,    11,    -1,    13,    14,    -1,   110,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,
-    30,    -1,    32,    -1,    34,    35,    36,    37,    -1,    39,
-    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,
-    50,    51,    52,    53,    54,    55,    -1,    57,    58,    59,
-    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,
-    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
-    -1,    -1,     1,    93,     3,     4,     5,     6,    -1,     8,
-     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,   109,
-   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
-    29,    30,    -1,    32,    -1,    34,    35,    36,    37,    -1,
+    44,    45,    46,    47,    -1,  1551,    50,    51,    52,    53,
+    54,    55,    -1,    57,    58,    59,    -1,    61,    62,    -1,
+  1041,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
+    -1,    -1,    -1,    -1,    31,    79,    80,    81,    -1,    -1,
+    -1,    -1,    -1,    87,    88,    89,    -1,  1068,    -1,    93,
+    -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   110,    64,    65,    66,
+    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+    77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,  1125,  1126,    -1,  1128,     1,    -1,
+     3,     4,     5,     6,    -1,     8,     9,    10,    11,    -1,
+    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+  1151,    -1,    -1,  1154,  1155,    28,    29,    30,    -1,    32,
+    -1,    34,    35,    36,    37,    -1,    39,    40,    41,    42,
+    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,
+    53,    54,    55,    -1,    57,    58,    59,    -1,    -1,    62,
+    -1,    -1,    -1,  1194,    -1,    68,    -1,    -1,    71,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,
+    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,
+    93,    94,     1,    -1,     3,     4,     5,     6,  1229,     8,
+     9,    10,    11,    -1,    13,    14,   109,   110,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,  1247,    -1,  1249,    28,
+    29,    30,    31,    32,    -1,    34,    35,    36,    37,    -1,
     39,    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,
     -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
     59,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,
@@ -3594,17 +3506,17 @@ static const short yycheck[] = {     4,
     79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,
     89,    -1,    -1,     1,    93,     3,     4,     5,     6,    -1,
      8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
-   109,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     28,    29,    30,    -1,    32,    -1,    34,    35,    36,    37,
     -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
     -1,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
     58,    59,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,
     68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
-    88,    89,    -1,    -1,    -1,    93,    -1,     1,    -1,     3,
-     4,     5,     6,   101,     8,     9,    10,    11,    -1,    13,
+    88,    89,    -1,    -1,    -1,    93,    94,     1,    -1,     3,
+     4,     5,     6,    -1,     8,     9,    10,    11,    -1,    13,
     14,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    28,    29,    30,    31,    32,    -1,
+    -1,    -1,    -1,    -1,    28,    29,    30,    -1,    32,    -1,
     34,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
     44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
     54,    55,    -1,    57,    58,    59,    -1,    -1,    62,    -1,
@@ -3612,7 +3524,7 @@ static const short yycheck[] = {     4,
     -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
     -1,    -1,    -1,    87,    88,    89,    -1,    -1,     1,    93,
      3,     4,     5,     6,    -1,     8,     9,    10,    11,    -1,
-    13,    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,
+    13,    14,    -1,    -1,    -1,   109,   110,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    28,    29,    30,    -1,    32,
     -1,    34,    35,    36,    37,    -1,    39,    40,    41,    42,
     43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,
@@ -3621,48 +3533,21 @@ static const short yycheck[] = {     4,
     -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,
     -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,     1,
     93,     3,     4,     5,     6,    -1,     8,     9,    10,    11,
-    -1,    13,    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,
+    -1,    13,    14,    -1,    -1,    -1,   109,   110,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    -1,
     32,    -1,    34,    35,    36,    37,    -1,    39,    40,    41,
     42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
-    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,    -1,
-    62,    63,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
+    52,    53,    54,    55,    -1,    57,    58,    59,    -1,    -1,
+    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
     -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,
-     1,    93,     3,     4,     5,     6,    -1,     8,     9,    10,
-    11,    -1,    13,    14,    -1,    -1,    -1,    -1,   110,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,
-    -1,    32,    -1,    34,    35,    36,    37,    -1,    39,    40,
-    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,
-    51,    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,
-    61,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
-    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
-    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,
-    -1,     1,    93,     3,     4,     5,     6,    -1,     8,     9,
-    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,   110,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,
-    30,    -1,    32,    -1,    34,    35,    36,    37,    -1,    39,
-    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,
-    50,    51,    52,    53,    54,    55,    -1,    57,    58,    -1,
-    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,
-    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
-    -1,    -1,     1,    93,     3,     4,     5,     6,    -1,     8,
-     9,    10,    11,    -1,    13,    14,    -1,    -1,   108,    -1,
-   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
-    29,    30,    -1,    32,    -1,    34,    35,    36,    37,    -1,
-    39,    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,
-    -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,
-    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,
-    89,    -1,    -1,     1,    93,     3,     4,     5,     6,    -1,
-     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
-    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    28,    29,    30,    -1,    32,    -1,    34,    35,    36,    37,
+    -1,    93,    -1,     1,    -1,     3,     4,     5,     6,   101,
+     8,     9,    10,    11,    -1,    13,    14,    -1,   110,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    28,    29,    30,    31,    32,    -1,    34,    35,    36,    37,
     -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
     -1,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
-    58,    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,
+    58,    59,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,
     68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
     88,    89,    -1,    -1,     1,    93,     3,     4,     5,     6,
@@ -3671,33 +3556,97 @@ static const short yycheck[] = {     4,
     -1,    28,    29,    30,    -1,    32,    -1,    34,    35,    36,
     37,    -1,    39,    40,    41,    42,    43,    44,    -1,    46,
     -1,    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,
-    57,    58,    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,
+    57,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,    -1,
     -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
-    87,    88,    89,    -1,    -1,    -1,    93,     3,     4,     5,
+    87,    88,    89,    -1,    -1,     1,    93,     3,     4,     5,
      6,    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,
     -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    28,    29,    30,    -1,    32,    -1,    34,    35,
     36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
     46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
-    -1,    57,    58,    -1,    -1,    -1,    62,    -1,    -1,    -1,
+    -1,    57,    58,    -1,    -1,    -1,    62,    63,    -1,    -1,
     -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
-    -1,    87,    88,    89,    -1,    -1,    -1,    93,    70,    71,
-    72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-    82,    83,    84,    85,   110,   111,     3,     4,     5,     6,
-     7,     8,     9,    10,    11,    -1,    13,    14,    15,    -1,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,    -1,    34,    35,    36,
-    37,    -1,    39,    40,    41,    42,    43,    44,    45,    46,
-    47,    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,
-    57,    58,    59,    -1,    61,    62,    -1,    -1,    -1,    -1,
-    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
-    87,    88,    89,    -1,    -1,    -1,    93,    -1,    95,    -1,
+    -1,    87,    88,    89,    -1,    -1,     1,    93,     3,     4,
+     5,     6,    -1,     8,     9,    10,    11,    -1,    13,    14,
+    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    28,    29,    30,    -1,    32,    -1,    34,
+    35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
+    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,
+    55,    -1,    57,    58,    -1,    -1,    61,    62,    -1,    -1,
+    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
+    -1,    -1,    87,    88,    89,    -1,    -1,     1,    93,     3,
+     4,     5,     6,    -1,     8,     9,    10,    11,    -1,    13,
+    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    28,    29,    30,    -1,    32,    -1,
+    34,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
+    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
+    54,    55,    -1,    57,    58,    -1,    -1,    -1,    62,    -1,
+    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
+    -1,    -1,    -1,    87,    88,    89,    -1,    -1,     1,    93,
+     3,     4,     5,     6,    -1,     8,     9,    10,    11,    -1,
+    13,    14,    -1,    -1,   108,    -1,   110,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    -1,    32,
+    -1,    34,    35,    36,    37,    -1,    39,    40,    41,    42,
+    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,
+    53,    54,    55,    -1,    57,    58,    -1,    -1,    -1,    62,
+    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,
+    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,     1,
+    93,     3,     4,     5,     6,    -1,     8,     9,    10,    11,
+    -1,    13,    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    -1,
+    32,    -1,    34,    35,    36,    37,    -1,    39,    40,    41,
+    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
+    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,    -1,
+    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
+    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,
+     1,    93,     3,     4,     5,     6,    -1,     8,     9,    10,
+    11,    -1,    13,    14,    -1,    -1,    -1,    -1,   110,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,
+    -1,    32,    -1,    34,    35,    36,    37,    -1,    39,    40,
+    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,
+    51,    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,
+    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
+    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
+    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,
+    -1,    -1,    93,     3,     4,     5,     6,    -1,     8,     9,
+    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,   110,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,
+    30,    -1,    32,    -1,    34,    35,    36,    37,    -1,    39,
+    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,
+    50,    51,    52,    53,    54,    55,    -1,    57,    58,    -1,
+    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,
+    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
+    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
+    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   109,   110,     3,     4,     5,     6,     7,     8,
-     9,    10,    11,    -1,    13,    14,    15,    -1,    17,    18,
+   110,   111,     3,     4,     5,     6,     7,     8,     9,    10,
+    11,    -1,    13,    14,    15,    -1,    17,    18,    19,    20,
+    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+    31,    32,    -1,    34,    35,    36,    37,    -1,    39,    40,
+    41,    42,    43,    44,    45,    46,    47,    -1,    -1,    50,
+    51,    52,    53,    54,    55,    -1,    57,    58,    59,    -1,
+    61,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
+    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
+    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,
+    -1,    -1,    93,    -1,    95,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,
+     3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
+    13,    14,    15,    -1,    17,    18,    19,    20,    21,    22,
+    23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+    -1,    34,    35,    36,    37,    -1,    39,    40,    41,    42,
+    43,    44,    45,    46,    47,    -1,    -1,    50,    51,    52,
+    53,    54,    55,    -1,    57,    58,    59,    -1,    61,    62,
+    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,
+    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,
+    93,    -1,    95,    -1,     3,     4,     5,     6,     7,     8,
+     9,    10,    11,    -1,    13,    14,    15,   110,    17,    18,
     19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
     29,    30,    31,    32,    -1,    34,    35,    36,    37,    -1,
     39,    40,    41,    42,    43,    44,    45,    46,    47,    -1,
@@ -3711,35 +3660,44 @@ static const short yycheck[] = {     4,
     25,    26,    27,    28,    29,    30,    31,    32,    -1,    34,
     35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
     45,    46,    47,    -1,    -1,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    59,    -1,    61,    62,    -1,    -1,
+    55,    -1,    57,    58,    -1,    -1,    61,    62,    -1,    -1,
     -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
     -1,    -1,    87,    88,    89,    -1,    -1,    -1,    93,    -1,
-    95,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
-    11,    -1,    13,    14,    15,   110,    17,    18,    19,    20,
-    21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-    31,    32,    -1,    34,    35,    36,    37,    -1,    39,    40,
-    41,    42,    43,    44,    45,    46,    47,    -1,    -1,    50,
-    51,    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,
-    61,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
-    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
-    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,
-    -1,    -1,    93,    -1,    95,     3,     4,     5,     6,     7,
-     8,     9,    10,    11,    12,    13,    14,    -1,    -1,   110,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    95,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+    12,    13,    14,    -1,    -1,   110,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    31,
+    32,    -1,    34,    35,    36,    37,    -1,    39,    40,    41,
+    42,    43,    44,    -1,    46,    -1,    48,    -1,    50,    51,
+    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,    -1,
+    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
+    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,
+    -1,    93,    94,     3,     4,     5,     6,     7,     8,     9,
+    10,    11,    12,    13,    14,    -1,    -1,    -1,   110,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,
+    30,    31,    32,    -1,    34,    35,    36,    37,    -1,    39,
+    40,    41,    42,    43,    44,    -1,    46,    -1,    48,    -1,
+    50,    51,    52,    53,    54,    55,    -1,    57,    58,    -1,
+    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,
+    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
+    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
+    -1,    -1,    -1,    93,    94,     3,     4,     5,     6,    -1,
+     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
+   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     28,    29,    30,    31,    32,    -1,    34,    35,    36,    37,
     -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
     48,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
-    58,    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,
+    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
     88,    89,    -1,    -1,    -1,    93,    94,     3,     4,     5,
-     6,     7,     8,     9,    10,    11,    12,    13,    14,    -1,
+     6,    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,
     -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    28,    29,    30,    31,    32,    -1,    34,    35,
     36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
     46,    -1,    48,    -1,    50,    51,    52,    53,    54,    55,
-    -1,    57,    58,    -1,    -1,    -1,    62,    -1,    -1,    -1,
+    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
     -1,    87,    88,    89,    -1,    -1,    -1,    93,    94,     3,
@@ -3747,42 +3705,51 @@ static const short yycheck[] = {     4,
     14,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    28,    29,    30,    31,    32,    -1,
     34,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
-    44,    -1,    46,    -1,    48,    -1,    50,    51,    52,    53,
-    54,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,
+    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
+    54,    55,    -1,    57,    58,    -1,    -1,    -1,    62,    -1,
     -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
     -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,    93,
-    94,     3,     4,     5,     6,    -1,     8,     9,    10,    11,
-    -1,    13,    14,    -1,    -1,    -1,   110,    -1,    -1,    -1,
+     3,     4,     5,     6,    -1,     8,     9,    10,    11,    -1,
+    13,    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    -1,    32,
+    -1,    34,    35,    36,    37,    -1,    39,    40,    41,    42,
+    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,
+    53,    54,    55,    -1,    57,    58,    -1,    -1,    61,    62,
+    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,
+    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,
+    93,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+    -1,    13,    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    31,
     32,    -1,    34,    35,    36,    37,    -1,    39,    40,    41,
     42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
     52,    53,    54,    55,    -1,    57,    58,    -1,    -1,    -1,
-    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
+    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
     -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,
     -1,    93,     3,     4,     5,     6,    -1,     8,     9,    10,
     11,    -1,    13,    14,    -1,    -1,    -1,    -1,   110,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,
-    -1,    32,    -1,    34,    35,    36,    37,    -1,    39,    40,
+    31,    32,    -1,    34,    35,    36,    37,    -1,    39,    40,
     41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,
     51,    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,
-    61,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
+    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
     71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
     81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,
-    -1,    -1,    93,     3,     4,     5,     6,     7,     8,     9,
+    -1,    -1,    93,     3,     4,     5,     6,    -1,     8,     9,
     10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,   110,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,
-    30,    31,    32,    -1,    34,    35,    36,    37,    -1,    39,
+    30,    -1,    32,    -1,    34,    35,    36,    37,    -1,    39,
     40,    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,
     50,    51,    52,    53,    54,    55,    -1,    57,    58,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
+    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,
     -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
     80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
     -1,    -1,    -1,    93,     3,     4,     5,     6,    -1,     8,
      9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,
    110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
-    29,    30,    31,    32,    -1,    34,    35,    36,    37,    -1,
+    29,    30,    -1,    32,    -1,    34,    35,    36,    37,    -1,
     39,    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,
     -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
     -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,
@@ -3803,7 +3770,7 @@ static const short yycheck[] = {     4,
     -1,    28,    29,    30,    -1,    32,    -1,    34,    35,    36,
     37,    -1,    39,    40,    41,    42,    43,    44,    -1,    46,
     -1,    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,
-    57,    58,    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,
+    57,    58,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
     87,    88,    89,    -1,    -1,    -1,    93,     3,     4,     5,
@@ -3812,30 +3779,30 @@ static const short yycheck[] = {     4,
     -1,    -1,    28,    29,    30,    -1,    32,    -1,    34,    35,
     36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
     46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
-    -1,    57,    58,    -1,    -1,    -1,    62,    -1,    -1,    -1,
+    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
-    -1,    87,    88,    89,    -1,    -1,    -1,    93,     3,     4,
-     5,     6,    -1,     8,     9,    10,    11,    -1,    13,    14,
-    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    28,    29,    30,    -1,    32,    -1,    34,
-    35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
-    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    59,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-    -1,    -1,    87,    88,    89,    -1,    -1,    -1,    93,     3,
+    -1,    87,    88,    89,    -1,    -1,    -1,    93,    94,     3,
      4,     5,     6,    -1,     8,     9,    10,    11,    -1,    13,
-    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    28,    29,    30,    -1,    32,    -1,
+    14,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    28,    29,    30,    31,    32,    -1,
     34,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
     44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
     54,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
     -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,    93,
-    94,     3,     4,     5,     6,    -1,     8,     9,    10,    11,
-    -1,    13,    14,    -1,    -1,    -1,   110,    -1,    -1,    -1,
+     3,     4,     5,     6,    -1,     8,     9,    10,    11,    -1,
+    13,    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    -1,    32,
+    -1,    34,    35,    36,    37,    -1,    39,    40,    41,    42,
+    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,
+    53,    54,    55,    -1,    57,    58,    -1,    -1,    -1,    62,
+    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,
+    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,
+    93,     3,     4,     5,     6,    -1,     8,     9,    10,    11,
+    -1,    13,    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    31,
     32,    -1,    34,    35,    36,    37,    -1,    39,    40,    41,
     42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
@@ -3849,13 +3816,13 @@ static const short yycheck[] = {     4,
     -1,    32,    -1,    34,    35,    36,    37,    -1,    39,    40,
     41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,
     51,    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,
-    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
     71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
     81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,
     -1,    -1,    93,     3,     4,     5,     6,    -1,     8,     9,
     10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,   110,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,
-    30,    31,    32,    -1,    34,    35,    36,    37,    -1,    39,
+    30,    -1,    32,    -1,    34,    35,    36,    37,    -1,    39,
     40,    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,
     50,    51,    52,    53,    54,    55,    -1,    57,    58,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
@@ -3868,48 +3835,82 @@ static const short yycheck[] = {     4,
     39,    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,
     -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
-    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,
-    89,    -1,    -1,    -1,    93,     3,     4,     5,     6,    -1,
-     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
-    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    28,    29,    30,    -1,    32,    -1,    34,    35,    36,    37,
-    -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
-    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
-    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
-    88,    89,    -1,    -1,    -1,    93,     3,     4,     5,     6,
-    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,
-    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    28,    29,    30,    -1,    32,    -1,    34,    35,    36,
-    37,    -1,    39,    40,    41,    42,    43,    44,    -1,    46,
-    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,
-    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    68,    -1,    -1,    71,     3,     4,     5,     6,     7,
-     8,     9,    79,    80,    81,    -1,    14,    -1,    -1,    -1,
-    87,    88,    89,    -1,    -1,    -1,    93,    -1,    -1,    -1,
-    28,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
-    -1,    -1,    -1,   110,    42,    -1,    -1,    -1,    46,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,
-    58,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-    73,    74,    75,    71,    77,    78,    79,    80,    81,    82,
-    83,    84,    85,    81,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    89,    -1,    -1,    -1,    93,    64,    65,    66,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-    78,    79,    80,    81,    82,    83,    84,    85,    69,    70,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,    -1,    60,    -1,    -1,   107,
-    64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-    74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-    84,    85,    63,    64,    65,    66,    67,    68,    69,    70,
+    -1,    -1,    71,     3,     4,     5,     6,     7,     8,     9,
+    79,    80,    81,    -1,    14,    -1,    -1,    -1,    87,    88,
+    89,    -1,    -1,    -1,    93,    -1,    -1,    -1,    28,    -1,
+    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
+    -1,   110,    42,    -1,    -1,    -1,    46,    -1,    48,    -1,
+    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,    -1,
+    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
+    -1,    71,    12,    -1,    14,    -1,    -1,    -1,    -1,    -1,
+    -1,    81,    -1,    -1,    -1,    -1,    -1,    -1,    28,    89,
+    30,    31,    -1,    93,    94,    -1,    -1,    37,    -1,    -1,
+    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,     3,     4,
+     5,     6,     7,     8,     9,    55,    -1,    57,    58,    14,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    71,    -1,    28,    -1,    30,    31,    -1,    -1,    -1,
+    -1,    81,    37,    -1,    -1,    -1,    -1,    42,    -1,    89,
+    -1,    46,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,
+    55,    -1,    57,    58,    -1,    -1,    61,    -1,     3,     4,
+     5,     6,     7,     8,     9,    -1,    71,    -1,    -1,    14,
+    -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,
+    -1,    -1,    -1,    28,    89,    30,    31,    -1,    93,    -1,
+    -1,    -1,    37,    -1,    -1,    -1,    -1,    42,    -1,    -1,
+    -1,    46,    -1,     3,     4,     5,     6,     7,     8,     9,
+    55,    -1,    57,    58,    14,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    28,    -1,
+    30,    31,    -1,    -1,    -1,    -1,    81,    37,    -1,    -1,
+    -1,    -1,    42,    -1,    89,    -1,    46,    -1,    93,    -1,
+    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,     4,
+     5,    -1,     7,     8,     9,    -1,    -1,    12,    -1,    14,
+    -1,    71,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
+    -1,    81,     9,    28,    -1,    30,    31,    -1,    -1,    89,
+    -1,    -1,    37,    93,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    46,    -1,    48,    31,    -1,    -1,    -1,    -1,    -1,
+    55,    -1,    57,    58,    -1,    42,    -1,     3,     4,     5,
+     6,    -1,    -1,     9,    -1,    -1,    71,    -1,    55,    -1,
+    57,    58,    -1,    -1,    -1,    -1,    81,     3,     4,     5,
+     6,    -1,    -1,    -1,    71,    31,    -1,    -1,    93,    94,
+    -1,    -1,    -1,    -1,    81,    -1,    42,    -1,     3,     4,
+     5,     6,    89,    -1,    -1,    31,    93,    -1,    -1,    55,
+    -1,    57,    58,    -1,    -1,    -1,    42,    -1,     3,     4,
+     5,     6,    -1,    -1,    -1,    71,    31,    -1,    -1,    55,
+    -1,    57,    58,    -1,    -1,    81,    -1,    42,    -1,    -1,
+    -1,    -1,    -1,    89,    -1,    71,    31,    93,    -1,    -1,
+    55,    -1,    57,    58,    -1,    81,    -1,    42,    -1,     3,
+     4,     5,     6,    89,    -1,    -1,    71,    93,    -1,    -1,
+    55,    -1,    57,    58,    -1,    -1,    81,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    89,    -1,    71,    31,    93,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    42,    -1,
+    -1,    -1,     4,     5,    89,     7,     8,     9,    93,    -1,
+    12,    55,    14,    57,    58,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    28,    71,    30,    31,
+    -1,    -1,    -1,    -1,    -1,    37,    -1,    81,    -1,    -1,
+    -1,    -1,    -1,    -1,    46,    89,    -1,    -1,    -1,    93,
+    -1,    -1,    -1,    55,    -1,    57,    58,    64,    65,    66,
+    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+    77,    78,    79,    80,    81,    82,    83,    84,    85,    64,
+    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+    85,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
+    -1,    -1,   107,    64,    65,    66,    67,    68,    69,    70,
     71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,    64,    65,    66,    67,    68,
-    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-    79,    80,    81,    82,    83,    84,    85
+    81,    82,    83,    84,    85,    60,    -1,    -1,    -1,    64,
+    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+    85,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+    82,    83,    84,    85,    64,    65,    66,    67,    68,    69,
+    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+    80,    81,    82,    83,    84,    85,    64,    65,    66,    67,
+    68,    69,    70,    71,    72,    73,    74,    75,    -1,    77,
+    78,    79,    80,    81,    82,    83,    84,    85,    68,    69,
+    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+    80,    81,    82,    83,    84,    85
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
-#line 3 "/usr/cygnus/gnupro-98r2/share/bison.simple"
+#line 3 "/usr/lib/bison.simple"
 
 /* Skeleton output parser for bison,
    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -4102,7 +4103,7 @@ __yy_memcpy (char *to, char *from, int count)
 #endif
 #endif
 \f
-#line 196 "/usr/cygnus/gnupro-98r2/share/bison.simple"
+#line 196 "/usr/lib/bison.simple"
 
 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
    into yyparse.  The argument should have type void *.
@@ -6582,74 +6583,24 @@ case 512:
     break;}
 case 513:
 #line 2343 "parse.y"
-{ yyval.ttype = finish_base_specifier (access_default_node, yyvsp[0].ttype,
-                                             current_aggr 
-                                             == signature_type_node); ;
+{ yyval.ttype = finish_base_specifier (access_default_node, yyvsp[0].ttype); ;
     break;}
 case 514:
-#line 2347 "parse.y"
-{ yyval.ttype = finish_base_specifier (yyvsp[-2].ttype, yyvsp[0].ttype, 
-                                             current_aggr 
-                                             == signature_type_node); ;
+#line 2345 "parse.y"
+{ yyval.ttype = finish_base_specifier (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 515:
-#line 2354 "parse.y"
+#line 2350 "parse.y"
 { if (yyval.ttype != error_mark_node) yyval.ttype = TYPE_MAIN_DECL (yyvsp[0].ttype); ;
     break;}
-case 517:
-#line 2357 "parse.y"
-{
-                 if (current_aggr == signature_type_node)
-                   {
-                     if (IS_AGGR_TYPE (TREE_TYPE (yyvsp[-1].ttype)))
-                       {
-                         sorry ("`sigof' as base signature specifier");
-                         yyval.ttype = TREE_TYPE (yyvsp[-1].ttype);
-                       }
-                     else
-                       {
-                         error ("`sigof' applied to non-aggregate expression");
-                         yyval.ttype = error_mark_node;
-                       }
-                   }
-                 else
-                   {
-                     error ("`sigof' in struct or class declaration");
-                     yyval.ttype = error_mark_node;
-                   }
-               ;
-    break;}
 case 518:
-#line 2378 "parse.y"
-{
-                 if (current_aggr == signature_type_node)
-                   {
-                     if (IS_AGGR_TYPE (groktypename (yyvsp[-1].ftype.t)))
-                       {
-                         sorry ("`sigof' as base signature specifier");
-                         yyval.ttype = groktypename (yyvsp[-1].ftype.t);
-                       }
-                     else
-                       {
-                         error ("`sigof' applied to non-aggregate expression");
-                         yyval.ttype = error_mark_node;
-                       }
-                   }
-                 else
-                   {
-                     error ("`sigof' in struct or class declaration");
-                     yyval.ttype = error_mark_node;
-                   }
-               ;
-    break;}
-case 520:
-#line 2403 "parse.y"
+#line 2357 "parse.y"
 { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL])
                    cp_error ("`%D' access", yyvsp[-1].ttype);
                  yyval.ttype = access_default_virtual_node; ;
     break;}
-case 521:
-#line 2407 "parse.y"
+case 519:
+#line 2361 "parse.y"
 {
                  if (yyvsp[-2].ttype != access_default_virtual_node)
                    error ("multiple access specifiers");
@@ -6661,8 +6612,8 @@ case 521:
                    yyval.ttype = access_private_virtual_node;
                ;
     break;}
-case 522:
-#line 2418 "parse.y"
+case 520:
+#line 2372 "parse.y"
 { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL])
                    cp_error ("`%D' access", yyvsp[-1].ttype);
                  else if (yyval.ttype == access_public_node)
@@ -6675,62 +6626,56 @@ case 522:
                    error ("multiple `virtual' specifiers");
                ;
     break;}
-case 527:
-#line 2439 "parse.y"
+case 525:
+#line 2393 "parse.y"
 {
-                 if (current_aggr == signature_type_node)
-                   {
-                     error ("access specifier not allowed in signature");
-                     yyvsp[-1].ttype = access_public_node;
-                   }
-
                  current_access_specifier = yyvsp[-1].ttype;
                 ;
     break;}
-case 528:
-#line 2454 "parse.y"
+case 526:
+#line 2402 "parse.y"
 { 
                  finish_member_declaration (yyvsp[0].ttype);
                ;
     break;}
-case 529:
-#line 2458 "parse.y"
+case 527:
+#line 2406 "parse.y"
 { 
                  finish_member_declaration (yyvsp[0].ttype);
                ;
     break;}
-case 531:
-#line 2466 "parse.y"
+case 529:
+#line 2414 "parse.y"
 { error ("missing ';' before right brace");
                  yyungetc ('}', 0); ;
     break;}
-case 532:
-#line 2471 "parse.y"
+case 530:
+#line 2419 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
-case 533:
-#line 2473 "parse.y"
+case 531:
+#line 2421 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
-case 534:
-#line 2475 "parse.y"
+case 532:
+#line 2423 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
-case 535:
-#line 2477 "parse.y"
+case 533:
+#line 2425 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
-case 536:
-#line 2479 "parse.y"
+case 534:
+#line 2427 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 537:
-#line 2481 "parse.y"
+case 535:
+#line 2429 "parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  pedantic = yyvsp[-1].itype; ;
     break;}
-case 538:
-#line 2484 "parse.y"
+case 536:
+#line 2432 "parse.y"
 {  
                  if (yyvsp[0].ttype)
                    yyval.ttype = finish_member_template_decl (yyvsp[0].ttype);
@@ -6741,15 +6686,15 @@ case 538:
                  finish_template_decl (yyvsp[-1].ttype);
                ;
     break;}
-case 539:
-#line 2494 "parse.y"
+case 537:
+#line 2442 "parse.y"
 { 
                  yyval.ttype = finish_member_class_template (yyvsp[-1].ftype.t); 
                  finish_template_decl (yyvsp[-2].ttype);
                ;
     break;}
-case 540:
-#line 2505 "parse.y"
+case 538:
+#line 2453 "parse.y"
 {
                  /* Most of the productions for component_decl only
                     allow the creation of one new member, so we call
@@ -6771,54 +6716,54 @@ case 540:
                  yyval.ttype = NULL_TREE;
                ;
     break;}
-case 541:
-#line 2526 "parse.y"
+case 539:
+#line 2474 "parse.y"
 { 
                  if (!yyvsp[0].itype)
                    grok_x_components (yyvsp[-1].ttype);
                  yyval.ttype = NULL_TREE; 
                ;
     break;}
-case 542:
-#line 2532 "parse.y"
+case 540:
+#line 2480 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
     break;}
-case 543:
-#line 2535 "parse.y"
+case 541:
+#line 2483 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
     break;}
-case 544:
-#line 2538 "parse.y"
+case 542:
+#line 2486 "parse.y"
 { yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 545:
-#line 2540 "parse.y"
+case 543:
+#line 2488 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 546:
-#line 2551 "parse.y"
+case 544:
+#line 2499 "parse.y"
 { tree specs, attrs;
                  split_specs_attrs (yyvsp[-4].ttype, &specs, &attrs);
                  yyval.ttype = grokfield (yyvsp[-3].ttype, specs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, attrs)); ;
     break;}
-case 547:
-#line 2556 "parse.y"
+case 545:
+#line 2504 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
     break;}
-case 548:
-#line 2559 "parse.y"
+case 546:
+#line 2507 "parse.y"
 { yyval.ttype = do_class_using_decl (yyvsp[0].ttype); ;
     break;}
-case 549:
-#line 2565 "parse.y"
+case 547:
+#line 2513 "parse.y"
 { yyval.itype = 0; ;
     break;}
-case 550:
-#line 2567 "parse.y"
+case 548:
+#line 2515 "parse.y"
 { 
                  if (PROCESSING_REAL_TEMPLATE_DECL_P ())
                    yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype);
@@ -6826,8 +6771,8 @@ case 550:
                  yyval.itype = 1;
                ;
     break;}
-case 551:
-#line 2574 "parse.y"
+case 549:
+#line 2522 "parse.y"
 { 
                  check_multiple_declarators ();
                  if (PROCESSING_REAL_TEMPLATE_DECL_P ())
@@ -6836,12 +6781,12 @@ case 551:
                  yyval.itype = 2;
                ;
     break;}
-case 552:
-#line 2585 "parse.y"
+case 550:
+#line 2533 "parse.y"
 { yyval.itype = 0; ;
     break;}
-case 553:
-#line 2587 "parse.y"
+case 551:
+#line 2535 "parse.y"
 { 
                  if (PROCESSING_REAL_TEMPLATE_DECL_P ())
                    yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype);
@@ -6849,8 +6794,8 @@ case 553:
                  yyval.itype = 1;
                ;
     break;}
-case 554:
-#line 2594 "parse.y"
+case 552:
+#line 2542 "parse.y"
 { 
                  check_multiple_declarators ();
                  if (PROCESSING_REAL_TEMPLATE_DECL_P ())
@@ -6859,107 +6804,107 @@ case 554:
                  yyval.itype = 2;
                ;
     break;}
-case 559:
-#line 2615 "parse.y"
+case 557:
+#line 2563 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
                  yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
-case 560:
-#line 2621 "parse.y"
+case 558:
+#line 2569 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
                  yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 561:
-#line 2630 "parse.y"
+case 559:
+#line 2578 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
                  yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
-case 562:
-#line 2636 "parse.y"
+case 560:
+#line 2584 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
                  yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
-case 563:
-#line 2642 "parse.y"
+case 561:
+#line 2590 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
                  yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 564:
-#line 2648 "parse.y"
+case 562:
+#line 2596 "parse.y"
 { split_specs_attrs (yyvsp[-3].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-3].ttype = current_declspecs;
                  yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 565:
-#line 2657 "parse.y"
+case 563:
+#line 2605 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
-case 566:
-#line 2660 "parse.y"
+case 564:
+#line 2608 "parse.y"
 { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 567:
-#line 2666 "parse.y"
+case 565:
+#line 2614 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
-case 568:
-#line 2669 "parse.y"
+case 566:
+#line 2617 "parse.y"
 { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 569:
-#line 2672 "parse.y"
+case 567:
+#line 2620 "parse.y"
 { yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
-case 571:
-#line 2679 "parse.y"
+case 569:
+#line 2627 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 573:
-#line 2689 "parse.y"
+case 571:
+#line 2637 "parse.y"
 { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 574:
-#line 2694 "parse.y"
+case 572:
+#line 2642 "parse.y"
 { yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE, current_enum_type); ;
     break;}
-case 575:
-#line 2696 "parse.y"
+case 573:
+#line 2644 "parse.y"
 { yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype, current_enum_type); ;
     break;}
-case 576:
-#line 2702 "parse.y"
+case 574:
+#line 2650 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 577:
-#line 2705 "parse.y"
+case 575:
+#line 2653 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
-case 578:
-#line 2712 "parse.y"
+case 576:
+#line 2660 "parse.y"
 {
                  if (pedantic)
                    pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new");
@@ -6968,102 +6913,102 @@ case 578:
                  yyval.ftype.new_type_flag = yyvsp[-4].ftype.new_type_flag;
                ;
     break;}
-case 579:
-#line 2723 "parse.y"
+case 577:
+#line 2671 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 580:
-#line 2725 "parse.y"
+case 578:
+#line 2673 "parse.y"
 { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
     break;}
-case 581:
-#line 2730 "parse.y"
+case 579:
+#line 2678 "parse.y"
 { yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
                  yyval.ftype.new_type_flag = 0; ;
     break;}
-case 582:
-#line 2733 "parse.y"
+case 580:
+#line 2681 "parse.y"
 { yyval.ftype.t = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 583:
-#line 2742 "parse.y"
+case 581:
+#line 2690 "parse.y"
 { yyval.itype = suspend_momentary (); ;
     break;}
-case 584:
-#line 2747 "parse.y"
+case 582:
+#line 2695 "parse.y"
 { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 585:
-#line 2753 "parse.y"
+case 583:
+#line 2701 "parse.y"
 { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 586:
-#line 2755 "parse.y"
+case 584:
+#line 2703 "parse.y"
 { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 587:
-#line 2757 "parse.y"
+case 585:
+#line 2705 "parse.y"
 { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ;
     break;}
-case 588:
-#line 2759 "parse.y"
+case 586:
+#line 2707 "parse.y"
 { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ;
     break;}
-case 590:
-#line 2767 "parse.y"
+case 588:
+#line 2715 "parse.y"
 {
                  /* Provide support for '(' attributes '*' declarator ')'
                     etc */
                  yyval.ttype = decl_tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE);
                ;
     break;}
-case 591:
-#line 2777 "parse.y"
+case 589:
+#line 2725 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 592:
-#line 2779 "parse.y"
+case 590:
+#line 2727 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 593:
-#line 2781 "parse.y"
+case 591:
+#line 2729 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 594:
-#line 2783 "parse.y"
+case 592:
+#line 2731 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 595:
-#line 2785 "parse.y"
+case 593:
+#line 2733 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
-case 597:
-#line 2793 "parse.y"
+case 595:
+#line 2741 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 598:
-#line 2795 "parse.y"
+case 596:
+#line 2743 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
-case 599:
-#line 2797 "parse.y"
+case 597:
+#line 2745 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
     break;}
-case 600:
-#line 2799 "parse.y"
+case 598:
+#line 2747 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 601:
-#line 2801 "parse.y"
+case 599:
+#line 2749 "parse.y"
 { push_nested_class (yyvsp[-1].ttype, 3);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype);
                  TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ;
     break;}
-case 603:
-#line 2809 "parse.y"
+case 601:
+#line 2757 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    {
@@ -7074,8 +7019,8 @@ case 603:
                    yyval.ttype = yyvsp[0].ttype;
                ;
     break;}
-case 604:
-#line 2819 "parse.y"
+case 602:
+#line 2767 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
@@ -7084,139 +7029,139 @@ case 604:
                  got_scope = NULL_TREE;
                ;
     break;}
-case 607:
-#line 2832 "parse.y"
+case 605:
+#line 2780 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 608:
-#line 2837 "parse.y"
+case 606:
+#line 2785 "parse.y"
 { yyval.ttype = get_type_decl (yyvsp[0].ttype); ;
     break;}
-case 610:
-#line 2846 "parse.y"
+case 608:
+#line 2794 "parse.y"
 {
                  /* Provide support for '(' attributes '*' declarator ')'
                     etc */
                  yyval.ttype = decl_tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE);
                ;
     break;}
-case 611:
-#line 2855 "parse.y"
+case 609:
+#line 2803 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 612:
-#line 2857 "parse.y"
+case 610:
+#line 2805 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 613:
-#line 2859 "parse.y"
+case 611:
+#line 2807 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 614:
-#line 2861 "parse.y"
+case 612:
+#line 2809 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 615:
-#line 2863 "parse.y"
+case 613:
+#line 2811 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
-case 617:
-#line 2871 "parse.y"
+case 615:
+#line 2819 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 618:
-#line 2873 "parse.y"
+case 616:
+#line 2821 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 619:
-#line 2875 "parse.y"
+case 617:
+#line 2823 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 620:
-#line 2877 "parse.y"
+case 618:
+#line 2825 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 621:
-#line 2879 "parse.y"
+case 619:
+#line 2827 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
-case 623:
-#line 2887 "parse.y"
+case 621:
+#line 2835 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 624:
-#line 2889 "parse.y"
+case 622:
+#line 2837 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 625:
-#line 2891 "parse.y"
+case 623:
+#line 2839 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
-case 626:
-#line 2893 "parse.y"
+case 624:
+#line 2841 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
     break;}
-case 627:
-#line 2895 "parse.y"
+case 625:
+#line 2843 "parse.y"
 { enter_scope_of (yyvsp[0].ttype); ;
     break;}
-case 628:
-#line 2897 "parse.y"
+case 626:
+#line 2845 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype);
                  enter_scope_of (yyval.ttype);
                ;
     break;}
-case 629:
-#line 2905 "parse.y"
+case 627:
+#line 2853 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 630:
-#line 2908 "parse.y"
+case 628:
+#line 2856 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 631:
-#line 2914 "parse.y"
+case 629:
+#line 2862 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 632:
-#line 2917 "parse.y"
+case 630:
+#line 2865 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 634:
-#line 2924 "parse.y"
+case 632:
+#line 2872 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 635:
-#line 2929 "parse.y"
+case 633:
+#line 2877 "parse.y"
 { yyval.ttype = build_functional_cast (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;
     break;}
-case 636:
-#line 2931 "parse.y"
+case 634:
+#line 2879 "parse.y"
 { yyval.ttype = reparse_decl_as_expr (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;
     break;}
-case 637:
-#line 2933 "parse.y"
+case 635:
+#line 2881 "parse.y"
 { yyval.ttype = reparse_absdcl_as_expr (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 642:
-#line 2944 "parse.y"
+case 640:
+#line 2892 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 643:
-#line 2946 "parse.y"
+case 641:
+#line 2894 "parse.y"
 { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 644:
-#line 2953 "parse.y"
+case 642:
+#line 2901 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
                    {
@@ -7227,32 +7172,32 @@ case 644:
                    complete_type (TYPE_MAIN_VARIANT (TREE_TYPE (yyval.ttype)));
                ;
     break;}
-case 645:
-#line 2963 "parse.y"
+case 643:
+#line 2911 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
                  got_scope = yyval.ttype = TREE_TYPE (yyval.ttype);
                ;
     break;}
-case 646:
-#line 2969 "parse.y"
+case 644:
+#line 2917 "parse.y"
 {
                  if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
                  got_scope = yyval.ttype;
                ;
     break;}
-case 647:
-#line 2975 "parse.y"
+case 645:
+#line 2923 "parse.y"
 { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype)); ;
     break;}
-case 649:
-#line 2991 "parse.y"
+case 647:
+#line 2939 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 650:
-#line 2996 "parse.y"
+case 648:
+#line 2944 "parse.y"
 {
                  if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't')
                    yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype);
@@ -7266,27 +7211,27 @@ case 650:
                    }
                ;
     break;}
-case 651:
-#line 3009 "parse.y"
+case 649:
+#line 2957 "parse.y"
 { yyval.ttype = TREE_TYPE (yyvsp[0].ttype); ;
     break;}
-case 652:
-#line 3011 "parse.y"
+case 650:
+#line 2959 "parse.y"
 { yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 653:
-#line 3013 "parse.y"
+case 651:
+#line 2961 "parse.y"
 { yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
-case 654:
-#line 3018 "parse.y"
+case 652:
+#line 2966 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    cp_error ("`%T' is not a class or namespace", yyvsp[0].ttype);
                ;
     break;}
-case 655:
-#line 3023 "parse.y"
+case 653:
+#line 2971 "parse.y"
 {
                  if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't')
                    yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype);
@@ -7300,16 +7245,16 @@ case 655:
                    }
                ;
     break;}
-case 656:
-#line 3036 "parse.y"
+case 654:
+#line 2984 "parse.y"
 { got_scope = yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
-case 657:
-#line 3038 "parse.y"
+case 655:
+#line 2986 "parse.y"
 { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 658:
-#line 3043 "parse.y"
+case 656:
+#line 2991 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE)
                    yyvsp[-1].ttype = lastiddecl;
@@ -7322,32 +7267,32 @@ case 658:
                    cp_error ("`%T' is not a class or namespace", yyvsp[-1].ttype);
                ;
     break;}
-case 659:
-#line 3055 "parse.y"
+case 657:
+#line 3003 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
                  got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype));
                ;
     break;}
-case 660:
-#line 3061 "parse.y"
+case 658:
+#line 3009 "parse.y"
 { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ;
     break;}
-case 663:
-#line 3065 "parse.y"
+case 661:
+#line 3013 "parse.y"
 {
                  if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
                  got_scope = yyval.ttype;
                ;
     break;}
-case 664:
-#line 3074 "parse.y"
+case 662:
+#line 3022 "parse.y"
 { yyval.ttype = build_min_nt (TEMPLATE_ID_EXPR, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 665:
-#line 3079 "parse.y"
+case 663:
+#line 3027 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
@@ -7356,157 +7301,157 @@ case 665:
                  got_scope = NULL_TREE;
                ;
     break;}
-case 667:
-#line 3088 "parse.y"
+case 665:
+#line 3036 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 668:
-#line 3093 "parse.y"
+case 666:
+#line 3041 "parse.y"
 { got_scope = NULL_TREE; ;
     break;}
-case 669:
-#line 3095 "parse.y"
+case 667:
+#line 3043 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ;
     break;}
-case 670:
-#line 3102 "parse.y"
+case 668:
+#line 3050 "parse.y"
 { got_scope = void_type_node; ;
     break;}
-case 671:
-#line 3108 "parse.y"
+case 669:
+#line 3056 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 672:
-#line 3110 "parse.y"
+case 670:
+#line 3058 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 673:
-#line 3112 "parse.y"
+case 671:
+#line 3060 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 674:
-#line 3114 "parse.y"
+case 672:
+#line 3062 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
-case 675:
-#line 3116 "parse.y"
+case 673:
+#line 3064 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
                ;
     break;}
-case 676:
-#line 3120 "parse.y"
+case 674:
+#line 3068 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
-case 678:
-#line 3129 "parse.y"
+case 676:
+#line 3077 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
-case 679:
-#line 3131 "parse.y"
+case 677:
+#line 3079 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
-case 681:
-#line 3137 "parse.y"
+case 679:
+#line 3085 "parse.y"
 {
                  /* Provide support for '(' attributes '*' declarator ')'
                     etc */
                  yyval.ttype = decl_tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE);
                ;
     break;}
-case 682:
-#line 3147 "parse.y"
+case 680:
+#line 3095 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 683:
-#line 3149 "parse.y"
+case 681:
+#line 3097 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 684:
-#line 3151 "parse.y"
+case 682:
+#line 3099 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
     break;}
-case 685:
-#line 3153 "parse.y"
+case 683:
+#line 3101 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ;
     break;}
-case 686:
-#line 3155 "parse.y"
+case 684:
+#line 3103 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 687:
-#line 3157 "parse.y"
+case 685:
+#line 3105 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
-case 688:
-#line 3159 "parse.y"
+case 686:
+#line 3107 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
     break;}
-case 689:
-#line 3161 "parse.y"
+case 687:
+#line 3109 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ;
     break;}
-case 690:
-#line 3163 "parse.y"
+case 688:
+#line 3111 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
                ;
     break;}
-case 691:
-#line 3167 "parse.y"
+case 689:
+#line 3115 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
-case 693:
-#line 3176 "parse.y"
+case 691:
+#line 3124 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 694:
-#line 3179 "parse.y"
+case 692:
+#line 3127 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 695:
-#line 3181 "parse.y"
+case 693:
+#line 3129 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 696:
-#line 3183 "parse.y"
+case 694:
+#line 3131 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
-case 697:
-#line 3185 "parse.y"
+case 695:
+#line 3133 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
     break;}
-case 698:
-#line 3187 "parse.y"
+case 696:
+#line 3135 "parse.y"
 { yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 699:
-#line 3189 "parse.y"
+case 697:
+#line 3137 "parse.y"
 { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 700:
-#line 3191 "parse.y"
+case 698:
+#line 3139 "parse.y"
 { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 701:
-#line 3193 "parse.y"
+case 699:
+#line 3141 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
-case 702:
-#line 3195 "parse.y"
+case 700:
+#line 3143 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ;
     break;}
-case 709:
-#line 3218 "parse.y"
+case 707:
+#line 3166 "parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C++ forbids label declarations"); ;
     break;}
-case 712:
-#line 3229 "parse.y"
+case 710:
+#line 3177 "parse.y"
 { tree link;
                  for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
                    {
@@ -7516,261 +7461,261 @@ case 712:
                    }
                ;
     break;}
-case 713:
-#line 3243 "parse.y"
+case 711:
+#line 3191 "parse.y"
 {;
     break;}
-case 715:
-#line 3249 "parse.y"
+case 713:
+#line 3197 "parse.y"
 { yyval.ttype = begin_compound_stmt (0); ;
     break;}
-case 716:
-#line 3251 "parse.y"
+case 714:
+#line 3199 "parse.y"
 { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ;
     break;}
-case 717:
-#line 3256 "parse.y"
+case 715:
+#line 3204 "parse.y"
 {
                  yyval.ttype = begin_if_stmt ();
                  cond_stmt_keyword = "if";
                ;
     break;}
-case 718:
-#line 3261 "parse.y"
+case 716:
+#line 3209 "parse.y"
 { finish_if_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
-case 719:
-#line 3263 "parse.y"
+case 717:
+#line 3211 "parse.y"
 { yyval.ttype = finish_then_clause (yyvsp[-3].ttype); ;
     break;}
-case 721:
-#line 3268 "parse.y"
+case 719:
+#line 3216 "parse.y"
 { yyval.ttype = begin_compound_stmt (0); ;
     break;}
-case 722:
-#line 3270 "parse.y"
+case 720:
+#line 3218 "parse.y"
 { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ;
     break;}
-case 723:
-#line 3275 "parse.y"
+case 721:
+#line 3223 "parse.y"
 {;
     break;}
-case 725:
-#line 3281 "parse.y"
+case 723:
+#line 3229 "parse.y"
 { finish_stmt (); ;
     break;}
-case 726:
-#line 3283 "parse.y"
+case 724:
+#line 3231 "parse.y"
 { finish_expr_stmt (yyvsp[-1].ttype); ;
     break;}
-case 727:
-#line 3285 "parse.y"
+case 725:
+#line 3233 "parse.y"
 { begin_else_clause (); ;
     break;}
-case 728:
-#line 3287 "parse.y"
+case 726:
+#line 3235 "parse.y"
 { 
                  finish_else_clause (yyvsp[-3].ttype); 
                  finish_if_stmt ();
                ;
     break;}
-case 729:
-#line 3292 "parse.y"
+case 727:
+#line 3240 "parse.y"
 { finish_if_stmt (); ;
     break;}
-case 730:
-#line 3294 "parse.y"
+case 728:
+#line 3242 "parse.y"
 {
                  yyval.ttype = begin_while_stmt ();
                  cond_stmt_keyword = "while";
                ;
     break;}
-case 731:
-#line 3299 "parse.y"
+case 729:
+#line 3247 "parse.y"
 { finish_while_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
-case 732:
-#line 3301 "parse.y"
+case 730:
+#line 3249 "parse.y"
 { finish_while_stmt (yyvsp[-3].ttype); ;
     break;}
-case 733:
-#line 3303 "parse.y"
+case 731:
+#line 3251 "parse.y"
 { yyval.ttype = begin_do_stmt (); ;
     break;}
-case 734:
-#line 3305 "parse.y"
+case 732:
+#line 3253 "parse.y"
 {
                  finish_do_body (yyvsp[-2].ttype);
                  cond_stmt_keyword = "do";
                ;
     break;}
-case 735:
-#line 3310 "parse.y"
+case 733:
+#line 3258 "parse.y"
 { finish_do_stmt (yyvsp[-1].ttype, yyvsp[-5].ttype); ;
     break;}
-case 736:
-#line 3312 "parse.y"
+case 734:
+#line 3260 "parse.y"
 { yyval.ttype = begin_for_stmt (); ;
     break;}
-case 737:
-#line 3314 "parse.y"
+case 735:
+#line 3262 "parse.y"
 { finish_for_init_stmt (yyvsp[-2].ttype); ;
     break;}
-case 738:
-#line 3316 "parse.y"
+case 736:
+#line 3264 "parse.y"
 { finish_for_cond (yyvsp[-1].ttype, yyvsp[-5].ttype); ;
     break;}
-case 739:
-#line 3318 "parse.y"
+case 737:
+#line 3266 "parse.y"
 { finish_for_expr (yyvsp[-1].ttype, yyvsp[-8].ttype); ;
     break;}
-case 740:
-#line 3320 "parse.y"
+case 738:
+#line 3268 "parse.y"
 { finish_for_stmt (yyvsp[-3].ttype, yyvsp[-10].ttype); ;
     break;}
-case 741:
-#line 3322 "parse.y"
+case 739:
+#line 3270 "parse.y"
 { begin_switch_stmt (); ;
     break;}
-case 742:
-#line 3324 "parse.y"
+case 740:
+#line 3272 "parse.y"
 { yyval.ttype = finish_switch_cond (yyvsp[-1].ttype); ;
     break;}
-case 743:
-#line 3326 "parse.y"
+case 741:
+#line 3274 "parse.y"
 { finish_switch_stmt (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 744:
-#line 3328 "parse.y"
+case 742:
+#line 3276 "parse.y"
 { finish_case_label (yyvsp[-1].ttype, NULL_TREE); ;
     break;}
-case 746:
-#line 3331 "parse.y"
+case 744:
+#line 3279 "parse.y"
 { finish_case_label (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 748:
-#line 3334 "parse.y"
+case 746:
+#line 3282 "parse.y"
 { finish_case_label (NULL_TREE, NULL_TREE); ;
     break;}
-case 750:
-#line 3337 "parse.y"
+case 748:
+#line 3285 "parse.y"
 { finish_break_stmt (); ;
     break;}
-case 751:
-#line 3339 "parse.y"
+case 749:
+#line 3287 "parse.y"
 { finish_continue_stmt (); ;
     break;}
-case 752:
-#line 3341 "parse.y"
+case 750:
+#line 3289 "parse.y"
 { finish_return_stmt (NULL_TREE); ;
     break;}
-case 753:
-#line 3343 "parse.y"
+case 751:
+#line 3291 "parse.y"
 { finish_return_stmt (yyvsp[-1].ttype); ;
     break;}
-case 754:
-#line 3345 "parse.y"
+case 752:
+#line 3293 "parse.y"
 { 
                  finish_asm_stmt (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
                                   NULL_TREE); 
                ;
     break;}
-case 755:
-#line 3351 "parse.y"
+case 753:
+#line 3299 "parse.y"
 { 
                  finish_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
                                   NULL_TREE); 
                ;
     break;}
-case 756:
-#line 3357 "parse.y"
+case 754:
+#line 3305 "parse.y"
 { finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
-case 757:
-#line 3361 "parse.y"
+case 755:
+#line 3309 "parse.y"
 { finish_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ;
     break;}
-case 758:
-#line 3363 "parse.y"
+case 756:
+#line 3311 "parse.y"
 { 
                  if (pedantic)
                    pedwarn ("ANSI C++ forbids computed gotos");
                  finish_goto_stmt (yyvsp[-1].ttype);
                ;
     break;}
-case 759:
-#line 3369 "parse.y"
+case 757:
+#line 3317 "parse.y"
 { finish_goto_stmt (yyvsp[-1].ttype); ;
     break;}
-case 760:
-#line 3371 "parse.y"
+case 758:
+#line 3319 "parse.y"
 { finish_stmt (); ;
     break;}
-case 761:
-#line 3373 "parse.y"
+case 759:
+#line 3321 "parse.y"
 { error ("label must be followed by statement");
                  yyungetc ('}', 0);
                  finish_stmt (); ;
     break;}
-case 762:
-#line 3377 "parse.y"
+case 760:
+#line 3325 "parse.y"
 { finish_stmt (); ;
     break;}
-case 765:
-#line 3381 "parse.y"
+case 763:
+#line 3329 "parse.y"
 { do_local_using_decl (yyvsp[0].ttype); ;
     break;}
-case 767:
-#line 3387 "parse.y"
+case 765:
+#line 3335 "parse.y"
 { yyval.ttype = begin_function_try_block (); ;
     break;}
-case 768:
-#line 3389 "parse.y"
+case 766:
+#line 3337 "parse.y"
 { finish_function_try_block (yyvsp[-2].ttype); ;
     break;}
-case 769:
-#line 3391 "parse.y"
+case 767:
+#line 3339 "parse.y"
 {
                  finish_function_handler_sequence (yyvsp[-4].ttype);
                  yyval.itype = yyvsp[-3].itype;
                ;
     break;}
-case 770:
-#line 3399 "parse.y"
+case 768:
+#line 3347 "parse.y"
 { yyval.ttype = begin_try_block (); ;
     break;}
-case 771:
-#line 3401 "parse.y"
+case 769:
+#line 3349 "parse.y"
 { finish_try_block (yyvsp[-1].ttype); ;
     break;}
-case 772:
-#line 3403 "parse.y"
+case 770:
+#line 3351 "parse.y"
 { finish_handler_sequence (yyvsp[-3].ttype); ;
     break;}
-case 775:
-#line 3413 "parse.y"
+case 773:
+#line 3361 "parse.y"
 { yyval.ttype = begin_handler(); ;
     break;}
-case 776:
-#line 3415 "parse.y"
+case 774:
+#line 3363 "parse.y"
 { finish_handler_parms (yyvsp[-1].ttype); ;
     break;}
-case 777:
-#line 3417 "parse.y"
+case 775:
+#line 3365 "parse.y"
 { finish_handler (yyvsp[-3].ttype); ;
     break;}
-case 780:
-#line 3427 "parse.y"
+case 778:
+#line 3375 "parse.y"
 { expand_start_catch_block (NULL_TREE, NULL_TREE); ;
     break;}
-case 781:
-#line 3443 "parse.y"
+case 779:
+#line 3391 "parse.y"
 { check_for_new_type ("inside exception declarations", yyvsp[-1].ftype);
                  expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ftype.t),
                                            TREE_VALUE (yyvsp[-1].ftype.t)); ;
     break;}
-case 782:
-#line 3450 "parse.y"
+case 780:
+#line 3398 "parse.y"
 { tree label;
                do_label:
                  label = define_label (input_filename, lineno, yyvsp[-1].ttype);
@@ -7778,99 +7723,99 @@ case 782:
                    expand_label (label);
                ;
     break;}
-case 783:
-#line 3457 "parse.y"
+case 781:
+#line 3405 "parse.y"
 { goto do_label; ;
     break;}
-case 784:
-#line 3459 "parse.y"
+case 782:
+#line 3407 "parse.y"
 { goto do_label; ;
     break;}
-case 785:
-#line 3461 "parse.y"
+case 783:
+#line 3409 "parse.y"
 { goto do_label; ;
     break;}
-case 786:
-#line 3466 "parse.y"
+case 784:
+#line 3414 "parse.y"
 { if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ;
     break;}
-case 788:
-#line 3469 "parse.y"
+case 786:
+#line 3417 "parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C++ forbids compound statements inside for initializations");
                ;
     break;}
-case 789:
-#line 3478 "parse.y"
+case 787:
+#line 3426 "parse.y"
 { emit_line_note (input_filename, lineno);
                  yyval.ttype = NULL_TREE; ;
     break;}
-case 790:
-#line 3481 "parse.y"
+case 788:
+#line 3429 "parse.y"
 { emit_line_note (input_filename, lineno); ;
     break;}
-case 791:
-#line 3486 "parse.y"
+case 789:
+#line 3434 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 793:
-#line 3489 "parse.y"
+case 791:
+#line 3437 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 794:
-#line 3496 "parse.y"
+case 792:
+#line 3444 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 797:
-#line 3503 "parse.y"
+case 795:
+#line 3451 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 798:
-#line 3508 "parse.y"
+case 796:
+#line 3456 "parse.y"
 { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ;
     break;}
-case 799:
-#line 3513 "parse.y"
+case 797:
+#line 3461 "parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
     break;}
-case 800:
-#line 3515 "parse.y"
+case 798:
+#line 3463 "parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
     break;}
-case 801:
-#line 3526 "parse.y"
+case 799:
+#line 3474 "parse.y"
 {
                  yyval.ttype = empty_parms();
                ;
     break;}
-case 803:
-#line 3531 "parse.y"
+case 801:
+#line 3479 "parse.y"
 { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[0].ftype.t), 0);
                  check_for_new_type ("inside parameter list", yyvsp[0].ftype); ;
     break;}
-case 804:
-#line 3539 "parse.y"
+case 802:
+#line 3487 "parse.y"
 { yyval.ttype = finish_parmlist (yyval.ttype, 0); ;
     break;}
-case 805:
-#line 3541 "parse.y"
+case 803:
+#line 3489 "parse.y"
 { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ;
     break;}
-case 806:
-#line 3544 "parse.y"
+case 804:
+#line 3492 "parse.y"
 { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ;
     break;}
-case 807:
-#line 3546 "parse.y"
+case 805:
+#line 3494 "parse.y"
 { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE,
                                                         yyvsp[-1].ftype.t), 1); ;
     break;}
-case 808:
-#line 3549 "parse.y"
+case 806:
+#line 3497 "parse.y"
 { yyval.ttype = finish_parmlist (NULL_TREE, 1); ;
     break;}
-case 809:
-#line 3551 "parse.y"
+case 807:
+#line 3499 "parse.y"
 {
                  /* This helps us recover from really nasty
                     parse errors, for example, a missing right
@@ -7881,8 +7826,8 @@ case 809:
                  yychar = ')';
                ;
     break;}
-case 810:
-#line 3561 "parse.y"
+case 808:
+#line 3509 "parse.y"
 {
                  /* This helps us recover from really nasty
                     parse errors, for example, a missing right
@@ -7894,100 +7839,100 @@ case 810:
                  yychar = ')';
                ;
     break;}
-case 811:
-#line 3576 "parse.y"
+case 809:
+#line 3524 "parse.y"
 { maybe_snarf_defarg (); ;
     break;}
-case 812:
-#line 3578 "parse.y"
+case 810:
+#line 3526 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 815:
-#line 3589 "parse.y"
+case 813:
+#line 3537 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[0].ftype);
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ;
     break;}
-case 816:
-#line 3592 "parse.y"
+case 814:
+#line 3540 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
                  yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); ;
     break;}
-case 817:
-#line 3595 "parse.y"
+case 815:
+#line 3543 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[0].ftype);
                  yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ;
     break;}
-case 818:
-#line 3598 "parse.y"
+case 816:
+#line 3546 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
-case 819:
-#line 3600 "parse.y"
+case 817:
+#line 3548 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
     break;}
-case 821:
-#line 3606 "parse.y"
+case 819:
+#line 3554 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); ;
     break;}
-case 822:
-#line 3616 "parse.y"
+case 820:
+#line 3564 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag;
                  yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); ;
     break;}
-case 823:
-#line 3620 "parse.y"
+case 821:
+#line 3568 "parse.y"
 { yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 824:
-#line 3623 "parse.y"
+case 822:
+#line 3571 "parse.y"
 { yyval.ftype.t = build_tree_list (build_decl_list (NULL_TREE, yyvsp[-1].ftype.t),
                                          yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 825:
-#line 3627 "parse.y"
+case 823:
+#line 3575 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype);
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 826:
-#line 3631 "parse.y"
+case 824:
+#line 3579 "parse.y"
 { tree specs = strip_attrs (yyvsp[0].ftype.t);
                  yyval.ftype.t = build_tree_list (specs, NULL_TREE); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
-case 827:
-#line 3635 "parse.y"
+case 825:
+#line 3583 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ttype);
                  yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = 0; ;
     break;}
-case 828:
-#line 3642 "parse.y"
+case 826:
+#line 3590 "parse.y"
 { yyval.ftype.t = build_tree_list (NULL_TREE, yyvsp[0].ftype.t);
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag;  ;
     break;}
-case 829:
-#line 3645 "parse.y"
+case 827:
+#line 3593 "parse.y"
 { yyval.ftype.t = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t);
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag;  ;
     break;}
-case 832:
-#line 3656 "parse.y"
+case 830:
+#line 3604 "parse.y"
 { see_typename (); ;
     break;}
-case 833:
-#line 3661 "parse.y"
+case 831:
+#line 3609 "parse.y"
 {
                  error ("type specifier omitted for parameter");
                  yyval.ttype = build_tree_list (integer_type_node, NULL_TREE);
                ;
     break;}
-case 834:
-#line 3666 "parse.y"
+case 832:
+#line 3614 "parse.y"
 {
                  error ("type specifier omitted for parameter");
                  if (TREE_CODE (yyval.ttype) == SCOPE_REF
@@ -7997,198 +7942,198 @@ case 834:
                  yyval.ttype = build_tree_list (integer_type_node, yyval.ttype);
                ;
     break;}
-case 835:
-#line 3678 "parse.y"
+case 833:
+#line 3626 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 836:
-#line 3680 "parse.y"
+case 834:
+#line 3628 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 837:
-#line 3682 "parse.y"
+case 835:
+#line 3630 "parse.y"
 { yyval.ttype = empty_except_spec; ;
     break;}
-case 838:
-#line 3687 "parse.y"
+case 836:
+#line 3635 "parse.y"
 {
                  check_for_new_type ("exception specifier", yyvsp[0].ftype);
                  yyval.ttype = groktypename (yyvsp[0].ftype.t);
                ;
     break;}
-case 839:
-#line 3695 "parse.y"
+case 837:
+#line 3643 "parse.y"
 { yyval.ttype = add_exception_specifier (NULL_TREE, yyvsp[0].ttype, 1); ;
     break;}
-case 840:
-#line 3697 "parse.y"
+case 838:
+#line 3645 "parse.y"
 { yyval.ttype = add_exception_specifier (yyvsp[-2].ttype, yyvsp[0].ttype, 1); ;
     break;}
-case 841:
-#line 3702 "parse.y"
+case 839:
+#line 3650 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 842:
-#line 3704 "parse.y"
+case 840:
+#line 3652 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 843:
-#line 3706 "parse.y"
+case 841:
+#line 3654 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 844:
-#line 3708 "parse.y"
+case 842:
+#line 3656 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
-case 845:
-#line 3715 "parse.y"
+case 843:
+#line 3663 "parse.y"
 { got_scope = NULL_TREE; ;
     break;}
-case 846:
-#line 3720 "parse.y"
+case 844:
+#line 3668 "parse.y"
 { yyval.ttype = ansi_opname[MULT_EXPR]; ;
     break;}
-case 847:
-#line 3722 "parse.y"
+case 845:
+#line 3670 "parse.y"
 { yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
     break;}
-case 848:
-#line 3724 "parse.y"
+case 846:
+#line 3672 "parse.y"
 { yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
     break;}
-case 849:
-#line 3726 "parse.y"
+case 847:
+#line 3674 "parse.y"
 { yyval.ttype = ansi_opname[PLUS_EXPR]; ;
     break;}
-case 850:
-#line 3728 "parse.y"
+case 848:
+#line 3676 "parse.y"
 { yyval.ttype = ansi_opname[MINUS_EXPR]; ;
     break;}
-case 851:
-#line 3730 "parse.y"
+case 849:
+#line 3678 "parse.y"
 { yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
     break;}
-case 852:
-#line 3732 "parse.y"
+case 850:
+#line 3680 "parse.y"
 { yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
     break;}
-case 853:
-#line 3734 "parse.y"
+case 851:
+#line 3682 "parse.y"
 { yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
     break;}
-case 854:
-#line 3736 "parse.y"
+case 852:
+#line 3684 "parse.y"
 { yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
     break;}
-case 855:
-#line 3738 "parse.y"
+case 853:
+#line 3686 "parse.y"
 { yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
     break;}
-case 856:
-#line 3740 "parse.y"
+case 854:
+#line 3688 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
-case 857:
-#line 3742 "parse.y"
+case 855:
+#line 3690 "parse.y"
 { yyval.ttype = ansi_opname[LT_EXPR]; ;
     break;}
-case 858:
-#line 3744 "parse.y"
+case 856:
+#line 3692 "parse.y"
 { yyval.ttype = ansi_opname[GT_EXPR]; ;
     break;}
-case 859:
-#line 3746 "parse.y"
+case 857:
+#line 3694 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
-case 860:
-#line 3748 "parse.y"
+case 858:
+#line 3696 "parse.y"
 { yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
     break;}
-case 861:
-#line 3750 "parse.y"
+case 859:
+#line 3698 "parse.y"
 { yyval.ttype = ansi_opname [MODIFY_EXPR]; ;
     break;}
-case 862:
-#line 3752 "parse.y"
+case 860:
+#line 3700 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
-case 863:
-#line 3754 "parse.y"
+case 861:
+#line 3702 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
-case 864:
-#line 3756 "parse.y"
+case 862:
+#line 3704 "parse.y"
 { yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
     break;}
-case 865:
-#line 3758 "parse.y"
+case 863:
+#line 3706 "parse.y"
 { yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
     break;}
-case 866:
-#line 3760 "parse.y"
+case 864:
+#line 3708 "parse.y"
 { yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
     break;}
-case 867:
-#line 3762 "parse.y"
+case 865:
+#line 3710 "parse.y"
 { yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
     break;}
-case 868:
-#line 3764 "parse.y"
+case 866:
+#line 3712 "parse.y"
 { yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
     break;}
-case 869:
-#line 3766 "parse.y"
+case 867:
+#line 3714 "parse.y"
 { yyval.ttype = ansi_opname[COND_EXPR]; ;
     break;}
-case 870:
-#line 3768 "parse.y"
+case 868:
+#line 3716 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
-case 871:
-#line 3770 "parse.y"
+case 869:
+#line 3718 "parse.y"
 { yyval.ttype = ansi_opname[COMPONENT_REF]; ;
     break;}
-case 872:
-#line 3772 "parse.y"
+case 870:
+#line 3720 "parse.y"
 { yyval.ttype = ansi_opname[MEMBER_REF]; ;
     break;}
-case 873:
-#line 3774 "parse.y"
+case 871:
+#line 3722 "parse.y"
 { yyval.ttype = ansi_opname[CALL_EXPR]; ;
     break;}
-case 874:
-#line 3776 "parse.y"
+case 872:
+#line 3724 "parse.y"
 { yyval.ttype = ansi_opname[ARRAY_REF]; ;
     break;}
-case 875:
-#line 3778 "parse.y"
+case 873:
+#line 3726 "parse.y"
 { yyval.ttype = ansi_opname[NEW_EXPR]; ;
     break;}
-case 876:
-#line 3780 "parse.y"
+case 874:
+#line 3728 "parse.y"
 { yyval.ttype = ansi_opname[DELETE_EXPR]; ;
     break;}
-case 877:
-#line 3782 "parse.y"
+case 875:
+#line 3730 "parse.y"
 { yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ;
     break;}
-case 878:
-#line 3784 "parse.y"
+case 876:
+#line 3732 "parse.y"
 { yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ;
     break;}
-case 879:
-#line 3787 "parse.y"
+case 877:
+#line 3735 "parse.y"
 { yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 880:
-#line 3789 "parse.y"
+case 878:
+#line 3737 "parse.y"
 { yyval.ttype = ansi_opname[ERROR_MARK]; ;
     break;}
 }
    /* the action file gets copied in in place of this dollarsign */
-#line 498 "/usr/cygnus/gnupro-98r2/share/bison.simple"
+#line 498 "/usr/lib/bison.simple"
 \f
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -8384,7 +8329,7 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 3792 "parse.y"
+#line 3740 "parse.y"
 
 
 #ifdef SPEW_DEBUG
index fc62c0f1dba6321126d23067753c65208b0e3e81..792292b673f534f8094dac919e8ec57fde803f42 100644 (file)
@@ -2340,61 +2340,15 @@ base_class_list:
 
 base_class:
          base_class.1
-               { $$ = finish_base_specifier (access_default_node, $1,
-                                             current_aggr 
-                                             == signature_type_node); }
+               { $$ = finish_base_specifier (access_default_node, $1); }
        | base_class_access_list see_typename base_class.1
-                { $$ = finish_base_specifier ($1, $3, 
-                                             current_aggr 
-                                             == signature_type_node); } 
+                { $$ = finish_base_specifier ($1, $3); }
        ;
 
 base_class.1:
          typename_sub
                { if ($$ != error_mark_node) $$ = TYPE_MAIN_DECL ($1); }
        | nonnested_type
-       | SIGOF '(' expr ')'
-               {
-                 if (current_aggr == signature_type_node)
-                   {
-                     if (IS_AGGR_TYPE (TREE_TYPE ($3)))
-                       {
-                         sorry ("`sigof' as base signature specifier");
-                         $$ = TREE_TYPE ($3);
-                       }
-                     else
-                       {
-                         error ("`sigof' applied to non-aggregate expression");
-                         $$ = error_mark_node;
-                       }
-                   }
-                 else
-                   {
-                     error ("`sigof' in struct or class declaration");
-                     $$ = error_mark_node;
-                   }
-               }
-       | SIGOF '(' type_id ')'
-               {
-                 if (current_aggr == signature_type_node)
-                   {
-                     if (IS_AGGR_TYPE (groktypename ($3.t)))
-                       {
-                         sorry ("`sigof' as base signature specifier");
-                         $$ = groktypename ($3.t);
-                       }
-                     else
-                       {
-                         error ("`sigof' applied to non-aggregate expression");
-                         $$ = error_mark_node;
-                       }
-                   }
-                 else
-                   {
-                     error ("`sigof' in struct or class declaration");
-                     $$ = error_mark_node;
-                   }
-               }
        ;
 
 base_class_access_list:
@@ -2437,12 +2391,6 @@ opt.component_decl_list:
 access_specifier:
          VISSPEC ':'
                 {
-                 if (current_aggr == signature_type_node)
-                   {
-                     error ("access specifier not allowed in signature");
-                     $1 = access_public_node;
-                   }
-
                  current_access_specifier = $1;
                 }
        ;
index 7592df65042e47cd471ff70598ebfa646b4d4cba..f68edd677133b3c95208c6764b55a3b91f6c23c6 100644 (file)
@@ -1458,8 +1458,6 @@ lookup_member (xbasetype, name, protect, want_type)
      In the case of overloaded function names, access control is
      applied to the function selected by overloaded resolution.  */
   if (rval && protect && !is_overloaded_fn (rval)
-      && !IS_SIGNATURE_POINTER (DECL_REAL_CONTEXT (rval))
-      && !IS_SIGNATURE_REFERENCE (DECL_REAL_CONTEXT (rval))
       && !enforce_access (xbasetype, rval))
     return error_mark_node;
 
index fe68ae8fb9d4812ac0d5750e93f32bd8d6959252..1b6490000ee635f95c13de755d23e83f0bd5d209 100644 (file)
@@ -1035,14 +1035,8 @@ finish_qualified_object_call_expr (fn, object, args)
      tree object;
      tree args;
 {
-  if (IS_SIGNATURE (TREE_OPERAND (fn, 0)))
-    {
-      warning ("signature name in scope resolution ignored");
-      return finish_object_call_expr (TREE_OPERAND (fn, 1), object, args);
-    }
-  else
-    return build_scoped_method_call (object, TREE_OPERAND (fn, 0),
-                                    TREE_OPERAND (fn, 1), args);
+  return build_scoped_method_call (object, TREE_OPERAND (fn, 0),
+                                  TREE_OPERAND (fn, 1), args);
 }
 
 /* Finish a pseudo-destructor call expression of OBJECT, with SCOPE
@@ -1231,9 +1225,7 @@ finish_template_type_parm (aggr, identifier)
      tree aggr;
      tree identifier;
 {
-  if (aggr == signature_type_node)
-    sorry ("signature as template type parameter");
-  else if (aggr != class_type_node)
+  if (aggr != class_type_node)
     {
       pedwarn ("template type parameters must use the keyword `class' or `typename'");
       aggr = class_type_node;
@@ -1364,24 +1356,22 @@ begin_class_definition (t)
   /* Reset the interface data, at the earliest possible
      moment, as it might have been set via a class foo;
      before.  */
-  /* Don't change signatures.  */
-  if (! IS_SIGNATURE (t))
-    {
-      tree name = TYPE_IDENTIFIER (t);
-      
-      if (! ANON_AGGRNAME_P (name))
-       {
-         CLASSTYPE_INTERFACE_ONLY (t) = interface_only;
-         SET_CLASSTYPE_INTERFACE_UNKNOWN_X
-           (t, interface_unknown);
-       }
-
-      /* Only leave this bit clear if we know this
-        class is part of an interface-only specification.  */
-      if (! CLASSTYPE_INTERFACE_KNOWN (t)
-         || ! CLASSTYPE_INTERFACE_ONLY (t))
-       CLASSTYPE_VTABLE_NEEDS_WRITING (t) = 1;
-    }
+  {
+    tree name = TYPE_IDENTIFIER (t);
+    
+    if (! ANON_AGGRNAME_P (name))
+      {
+       CLASSTYPE_INTERFACE_ONLY (t) = interface_only;
+       SET_CLASSTYPE_INTERFACE_UNKNOWN_X
+         (t, interface_unknown);
+      }
+    
+    /* Only leave this bit clear if we know this
+       class is part of an interface-only specification.  */
+    if (! CLASSTYPE_INTERFACE_KNOWN (t)
+       || ! CLASSTYPE_INTERFACE_ONLY (t))
+      CLASSTYPE_VTABLE_NEEDS_WRITING (t) = 1;
+  }
 #if 0
   tmp = TYPE_IDENTIFIER ($<ttype>0);
   if (tmp && IDENTIFIER_TEMPLATE (tmp))
@@ -1652,11 +1642,9 @@ enter_scope_of (sr)
    access_{default,public,protected_private}[_virtual]_node.*/
 
 tree 
-finish_base_specifier (access_specifier, base_class,
-                      current_aggr_is_signature)
+finish_base_specifier (access_specifier, base_class)
      tree access_specifier;
      tree base_class;
-     int current_aggr_is_signature;
 {
   tree type;
   tree result;
@@ -1668,27 +1656,9 @@ finish_base_specifier (access_specifier, base_class,
     }
   else
     type = TREE_TYPE (base_class);
-  if (current_aggr_is_signature && access_specifier)
-    error ("access and source specifiers not allowed in signature");
+
   if (! is_aggr_type (type, 1))
     result = NULL_TREE;
-  else if (current_aggr_is_signature
-          && (! type) && (! IS_SIGNATURE (type)))
-    {
-      error ("class name not allowed as base signature");
-      result = NULL_TREE;
-    }
-  else if (current_aggr_is_signature)
-    {
-      sorry ("signature inheritance, base type `%s' ignored",
-            IDENTIFIER_POINTER (access_specifier));
-      result = build_tree_list (access_public_node, type);
-    }
-  else if (type && IS_SIGNATURE (type))
-    {
-      error ("signature name not allowed as base class");
-      result = NULL_TREE;
-    }
   else
     result = build_tree_list (access_specifier, type);
 
diff --git a/gcc/cp/sig.c b/gcc/cp/sig.c
deleted file mode 100644 (file)
index f170df5..0000000
+++ /dev/null
@@ -1,1067 +0,0 @@
-/* Functions dealing with signatures and signature pointers/references.
-   Copyright (C) 1992, 93-97, 1998 Free Software Foundation, Inc.
-   Contributed by Gerald Baumgartner (gb@cs.purdue.edu)
-
-This file is part of GNU CC.
-
-GNU CC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU CC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU CC; see the file COPYING.  If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
-
-
-#include "config.h"
-#include "system.h"
-#include "obstack.h"
-#include "tree.h"
-#include "cp-tree.h"
-#include "flags.h"
-#include "assert.h"
-#include "toplev.h"
-
-extern struct obstack *current_obstack;
-extern struct obstack permanent_obstack;
-extern struct obstack *saveable_obstack;
-
-static tree save_this PROTO((tree));
-static tree build_sptr_ref PROTO((tree));
-static tree build_member_function_pointer PROTO((tree));
-static void undo_casts PROTO((tree));
-static tree build_signature_pointer_or_reference_name
-       PROTO((tree, int, int));
-static void build_signature_pointer_or_reference_decl
-       PROTO((tree, tree));
-static tree build_signature_pointer_or_reference_type 
-       PROTO((tree, int, int));
-static tree get_sigtable_name PROTO((tree, tree));
-static tree build_signature_table_constructor PROTO((tree, tree));
-static int match_method_types PROTO((tree, tree));
-static tree build_sigtable PROTO((tree, tree, tree));
-
-/* Used to help generate globally unique names for signature tables.  */
-
-static int global_sigtable_name_counter;
-
-/* Build an identifier for a signature pointer or reference, so we
-   can use it's name in function name mangling.  */
-
-static tree
-build_signature_pointer_or_reference_name (to_type, type_quals, refp)
-     tree to_type;
-     int type_quals;
-     int refp;
-{
-  const char * sig_name = TYPE_NAME_STRING (to_type);
-  int name_len = TYPE_NAME_LENGTH (to_type) + 3 /* Enough room for
-                                                  C,V,R.  */;
-  char * name;
-
-  const char *const_rep = (type_quals & TYPE_QUAL_CONST) ? "C" : "";
-  const char *restrict_rep = (type_quals & TYPE_QUAL_RESTRICT) ? "R" : ""; 
-  const char *volatile_rep = (type_quals & TYPE_QUAL_VOLATILE) ? "C" : "";
-
-  if (refp)
-    {
-      name = (char *) alloca (name_len + sizeof (SIGNATURE_REFERENCE_NAME) +2);
-      sprintf (name, SIGNATURE_REFERENCE_NAME_FORMAT,
-              const_rep, volatile_rep, restrict_rep, sig_name);
-    }
-  else
-    {
-      name = (char *) alloca (name_len + sizeof (SIGNATURE_POINTER_NAME) + 2);
-      sprintf (name, SIGNATURE_POINTER_NAME_FORMAT,
-              const_rep, volatile_rep, restrict_rep, sig_name);
-    }
-  return get_identifier (name);
-}
-
-/* Build a DECL node for a signature pointer or reference, so we can
-   tell the debugger the structure of signature pointers/references.
-   This function is called at most eight times for a given signature,
-   once for each [const] [volatile] signature pointer/reference.  */
-
-static void
-build_signature_pointer_or_reference_decl (type, name)
-     tree type, name;
-{
-  tree decl;
-
-  /* We don't enter this declaration in any sort of symbol table.  */
-  decl = build_decl (TYPE_DECL, name, type);
-  TYPE_NAME (type) = decl;
-  TREE_CHAIN (type) = decl;
-}
-
-/* Construct, lay out and return the type of pointers or references to
-   signature TO_TYPE.  If such a type has already been constructed,
-   reuse it. If TYPE_QUALS are specified, qualify the `optr'.  If we
-   are constructing a const/volatile type variant and the main type
-   variant doesn't exist yet, it is built as well.  If REFP is 1, we
-   construct a signature reference, otherwise a signature pointer is
-   constructed.
-
-   This function is a subroutine of `build_signature_pointer_type' and
-   `build_signature_reference_type'.  */
-
-static tree
-build_signature_pointer_or_reference_type (to_type, type_quals, refp)
-     tree to_type;
-     int type_quals;
-     int refp;
-{
-  register tree t, m;
-  register struct obstack *ambient_obstack = current_obstack;
-  register struct obstack *ambient_saveable_obstack = saveable_obstack;
-
-  m = refp ? SIGNATURE_REFERENCE_TO (to_type) : SIGNATURE_POINTER_TO (to_type);
-
-  /* If we don't have the main variant yet, construct it.  */
-  if (m == NULL_TREE && type_quals != TYPE_UNQUALIFIED)
-    m = build_signature_pointer_or_reference_type (to_type, 
-                                                  TYPE_UNQUALIFIED, refp);
-
-  /* Treat any nonzero argument as 1.  */
-  refp = !!refp;
-
-  /* If not generating auxiliary info, search the chain of variants to see
-     if there is already one there just like the one we need to have.  If so,
-     use that existing one.
-
-     We don't do this in the case where we are generating aux info because
-     in that case we want each typedef names to get it's own distinct type
-     node, even if the type of this new typedef is the same as some other
-     (existing) type.  */
-
-  if (m && !flag_gen_aux_info)
-    for (t = m; t; t = TYPE_NEXT_VARIANT (t))
-      if (type_quals == CP_TYPE_QUALS (TREE_TYPE (TREE_TYPE
-                                                 (TYPE_FIELDS (t)))))
-        return t;
-
-  /* We need a new one.  If TO_TYPE is permanent, make this permanent too.  */
-  if (TREE_PERMANENT (to_type))
-    {
-      current_obstack = &permanent_obstack;
-      saveable_obstack = &permanent_obstack;
-    }
-
-  /* A signature pointer or reference to a signature `s' looks like this:
-
-       struct {
-         void * optr;
-        const s * sptr;
-       };
-
-     A `const' signature pointer/reference is a
-
-       struct {
-         const void * optr;
-        const s * sptr;
-       };
-
-     Similarly, for `volatile' and `const volatile'.  */
-
-  t = make_lang_type (RECORD_TYPE);
-  {
-    tree obj_type = build_qualified_type (void_type_node, type_quals);
-    tree optr_type = build_pointer_type (obj_type);
-    tree optr, sptr;
-
-    optr = build_lang_field_decl (FIELD_DECL,
-                                 get_identifier (SIGNATURE_OPTR_NAME),
-                                 optr_type);
-    DECL_FIELD_CONTEXT (optr) = t;
-    DECL_CLASS_CONTEXT (optr) = t;
-
-    if (m)
-      /* We can share the `sptr' field among type variants.  */
-      sptr = TREE_CHAIN (TYPE_FIELDS (m));
-    else
-      {
-       tree sig_tbl_type = 
-         cp_build_qualified_type (to_type, TYPE_QUAL_CONST);
-       
-       sptr = build_lang_field_decl (FIELD_DECL,
-                                     get_identifier (SIGNATURE_SPTR_NAME),
-                                     build_pointer_type (sig_tbl_type));
-       DECL_FIELD_CONTEXT (sptr) = t;
-       DECL_CLASS_CONTEXT (sptr) = t;
-       TREE_CHAIN (sptr) = NULL_TREE;
-      }
-
-    TREE_CHAIN (optr) = sptr;
-    TYPE_FIELDS (t) = optr;
-    /* Allow signature pointers/references to be grabbed 2 words at a time.
-       For this to work on a Sparc, we need 8-byte alignment.  */
-    TYPE_ALIGN (t) = MAX (TYPE_ALIGN (double_type_node),
-                         TYPE_ALIGN (optr_type));
-
-    /* A signature pointer/reference type isn't a `real' class type.  */
-    SET_IS_AGGR_TYPE (t, 0);
-  }
-
-  {
-    tree name = build_signature_pointer_or_reference_name (to_type, 
-                                                          type_quals,
-                                                          refp);
-
-    /* Build a DECL node for this type, so the debugger has access to it.  */
-    build_signature_pointer_or_reference_decl (t, name);
-  }
-
-  CLASSTYPE_GOT_SEMICOLON (t) = 1;
-  IS_SIGNATURE_POINTER (t) = ! refp;
-  IS_SIGNATURE_REFERENCE (t) = refp;
-  SIGNATURE_TYPE (t) = to_type;
-
-  if (m)
-    {
-      /* Add this type to the chain of variants of TYPE.
-        Every type has to be its own TYPE_MAIN_VARIANT.  */
-      TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (m);
-      TYPE_NEXT_VARIANT (m) = t;
-    }
-  else if (refp)
-    /* Record this type as the reference to TO_TYPE.  */
-    SIGNATURE_REFERENCE_TO (to_type) = t;
-  else
-    /* Record this type as the pointer to TO_TYPE.  */
-    SIGNATURE_POINTER_TO (to_type) = t;
-
-  /* Lay out the type.  This function has many callers that are concerned
-     with expression-construction, and this simplifies them all.
-     Also, it guarantees the TYPE_SIZE is permanent if the type is.  */
-  layout_type (t);
-
-  current_obstack = ambient_obstack;
-  saveable_obstack = ambient_saveable_obstack;
-
-  /* Output debug information for this type.  */
-  rest_of_type_compilation (t, 1);
-
-  return t;
-}
-
-/* Construct, lay out and return the type of pointers to signature TO_TYPE.  */
-
-tree
-build_signature_pointer_type (to_type)
-     tree to_type;
-{
-  return
-    build_signature_pointer_or_reference_type (TYPE_MAIN_VARIANT (to_type),
-                                              CP_TYPE_QUALS (to_type), 0);
-}
-
-/* Construct, lay out and return the type of pointers to signature TO_TYPE.  */
-
-tree
-build_signature_reference_type (to_type)
-     tree to_type;
-{
-  return
-    build_signature_pointer_or_reference_type (TYPE_MAIN_VARIANT (to_type),
-                                              CP_TYPE_QUALS (to_type), 1);
-}
-
-/* Return the name of the signature table (as an IDENTIFIER_NODE)
-   for the given signature type SIG_TYPE and rhs type RHS_TYPE.  */
-
-static tree
-get_sigtable_name (sig_type, rhs_type)
-     tree sig_type, rhs_type;
-{
-  tree sig_type_id = build_typename_overload (sig_type);
-  tree rhs_type_id = build_typename_overload (rhs_type);
-  char *buf = (char *) alloca (sizeof (SIGTABLE_NAME_FORMAT_LONG)
-                              + IDENTIFIER_LENGTH (sig_type_id)
-                              + IDENTIFIER_LENGTH (rhs_type_id) + 20);
-  const char *sig_ptr = IDENTIFIER_POINTER (sig_type_id);
-  const char *rhs_ptr = IDENTIFIER_POINTER (rhs_type_id);
-  int i, j;
-
-  for (i = 0; sig_ptr[i] == OPERATOR_TYPENAME_FORMAT[i]; i++)
-    /* do nothing */;
-  while (sig_ptr[i] >= '0' && sig_ptr[i] <= '9')
-    i += 1;
-
-  for (j = 0; rhs_ptr[j] == OPERATOR_TYPENAME_FORMAT[j]; j++)
-    /* do nothing */;
-  while (rhs_ptr[j] >= '0' && rhs_ptr[j] <= '9')
-    j += 1;
-
-  if (IS_SIGNATURE (rhs_type))
-    sprintf (buf, SIGTABLE_NAME_FORMAT_LONG, sig_ptr+i, rhs_ptr+j,
-            global_sigtable_name_counter++);
-  else
-    sprintf (buf, SIGTABLE_NAME_FORMAT, sig_ptr+i, rhs_ptr+j);
-  return get_identifier (buf);
-}
-
-/* Build a field decl that points to a signature member function.  */
-
-static tree
-build_member_function_pointer (member)
-     tree member;
-{
-  const char *namstr = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (member));
-  int namlen = IDENTIFIER_LENGTH (DECL_ASSEMBLER_NAME (member));
-  char *name;
-  tree entry;
-  
-  name = (char *) alloca (namlen + sizeof (SIGNATURE_FIELD_NAME) + 2);
-  sprintf (name, SIGNATURE_FIELD_NAME_FORMAT, namstr);
-
-  /* @@ Do we really want to xref signature table fields?  */
-  GNU_xref_ref (current_function_decl, name);
-
-  entry = build_lang_field_decl (FIELD_DECL, get_identifier (name),
-                                sigtable_entry_type);
-  TREE_CONSTANT (entry) = 1;
-  TREE_READONLY (entry) = 1;
-
-  /* @@ Do we really want to xref signature table fields?  */
-  GNU_xref_decl (current_function_decl, entry);
-
-  return entry;
-}
-
-/* For each FUNCTION_DECL in a signature we construct a member function
-   pointer of the appropriate type.  We also need two flags to test
-   whether the member function pointer points to a virtual function or
-   to a default implementation.  Those flags will be the two lower order
-   bits of the member function pointer (or the two higher order bits,
-   based on the configuration).
-
-   The new FIELD_DECLs are appended at the end of the last (and only)
-   sublist of `list_of_fieldlists.'
-
-   T is the signature type.
-  
-   As a side effect, each member function in the signature gets the
-   `decl.ignored' bit turned on, so we don't output debug info for it.  */
-
-void
-append_signature_fields (t)
-     tree t;
-{
-  tree x;
-  tree mfptr;
-  tree last_mfptr = NULL_TREE;
-  tree mfptr_list = NULL_TREE;
-             
-  for (x = TYPE_METHODS (t); x; x = TREE_CHAIN (x))
-    {
-      if (TREE_CODE (x) == FUNCTION_DECL)
-       {
-         mfptr = build_member_function_pointer (x);
-         DECL_MEMFUNC_POINTER_TO (x) = mfptr;
-         DECL_MEMFUNC_POINTING_TO (mfptr) = x;
-         DECL_IGNORED_P (x) = 1;
-         DECL_IN_AGGR_P (mfptr) = 1;
-         if (! mfptr_list)
-           mfptr_list = last_mfptr = mfptr;
-         else
-           {
-             TREE_CHAIN (last_mfptr) = mfptr;
-             last_mfptr = mfptr;
-           }
-       }
-    }
-
-  /* The member function pointers must come after the TYPE_DECLs, in
-     this case, because build_signature_table_constructor depends on
-     finding opaque TYPE_DECLS before the functions that make use of
-     them.  */
-  if (last_mfptr)
-    TYPE_FIELDS (t) = chainon (TYPE_FIELDS (t), mfptr_list);
-}
-
-/* Compare the types of a signature member function and a class member
-   function.  Returns 1 if the types are in the C++ `<=' relationship.
-
-   If we have a signature pointer/reference as argument or return type
-   we don't want to do a recursive conformance check.  The conformance
-   check only succeeds if both LHS and RHS refer to the same signature
-   pointer.  Otherwise we need to keep information about parameter types
-   around at run time to initialize the signature table correctly.  */
-
-static int
-match_method_types (sig_mtype, class_mtype)
-     tree sig_mtype, class_mtype;
-{
-  tree sig_return_type = TREE_TYPE (sig_mtype);
-  tree sig_arg_types = TYPE_ARG_TYPES (sig_mtype);
-  tree class_return_type = TREE_TYPE (class_mtype);
-  tree class_arg_types = TYPE_ARG_TYPES (class_mtype);
-
-  /* The return types have to be the same.  */
-  if (!same_type_p (sig_return_type, class_return_type))
-    return 0;
-
-  /* Compare the first argument `this.'  */
-  {
-    /* Get the type of what the `optr' is pointing to.  */
-    tree sig_this
-      = TREE_TYPE (TREE_TYPE (TYPE_FIELDS (TREE_VALUE (sig_arg_types))));
-    tree class_this = TREE_VALUE (class_arg_types);
-
-    if (TREE_CODE (class_this) == RECORD_TYPE) /* Is `this' a sig ptr?  */
-      class_this = TREE_TYPE (TREE_TYPE (TYPE_FIELDS (class_this)));
-    else
-      class_this = TREE_TYPE (class_this);
-
-    /* If a signature method's `this' is const or volatile, so has to be
-       the corresponding class method's `this.'  */
-    if (!at_least_as_qualified_p (class_this, sig_this))
-      return 0;
-  }
-
-  sig_arg_types = TREE_CHAIN (sig_arg_types);
-  class_arg_types = TREE_CHAIN (class_arg_types);
-
-  /* The number of arguments and the argument types have to be the same.  */
-  return compparms (sig_arg_types, class_arg_types);
-}
-
-/* Undo casts of opaque type variables to the RHS types.  */
-
-static void
-undo_casts (sig_ty)
-     tree sig_ty;
-{
-  tree field = TYPE_FIELDS (sig_ty);
-
-  /* Since all the FIELD_DECLs for the signature table entries are at the end
-     of the chain (see `append_signature_fields'), we can do it this way.  */
-  for (; field && TREE_CODE (field) != FIELD_DECL; field = TREE_CHAIN (field))
-    if (TYPE_MAIN_VARIANT (TREE_TYPE (field)) == opaque_type_node)
-      TREE_TYPE (TREE_TYPE (field)) = TREE_TYPE (ptr_type_node);
-}
-
-/* Do the type checking necessary to see whether the `rhs' conforms to
-   the lhs's `sig_ty'.  Depending on the type of `rhs' return a NULL_TREE,
-   an integer_zero_node, a constructor, or an expression offsetting the
-   `rhs' signature table.  */
-
-static tree
-build_signature_table_constructor (sig_ty, rhs)
-     tree sig_ty, rhs;
-{
-  tree rhstype = TREE_TYPE (rhs);
-  tree sig_field = TYPE_FIELDS (sig_ty);
-  tree result = NULL_TREE;
-  tree first_rhs_field = NULL_TREE;
-  tree last_rhs_field = NULL_TREE;
-  int sig_ptr_p = IS_SIGNATURE (rhstype);
-  int offset_p = sig_ptr_p;
-
-  rhstype = sig_ptr_p ? rhstype : TREE_TYPE (rhstype);
-
-  if (CLASSTYPE_TAGS (sig_ty))
-    {
-      sorry ("conformance check with signature containing class declarations");
-      return error_mark_node;
-    }
-
-  for (; sig_field; sig_field = TREE_CHAIN (sig_field))
-    {
-      tree basetype_path, baselink, basetypes;
-      tree sig_method, sig_mname, sig_mtype;
-      tree rhs_method, tbl_entry;
-
-      if (TREE_CODE (sig_field) == TYPE_DECL)
-       {
-         tree sig_field_type = TREE_TYPE (sig_field);
-
-         if (TYPE_MAIN_VARIANT (sig_field_type) == opaque_type_node)
-           {
-             /* We've got an opaque type here.  */
-             tree oty_name = DECL_NAME (sig_field);
-             tree oty_type = lookup_field (rhstype, oty_name, 1, 1);
-
-             if (oty_type == NULL_TREE || oty_type == error_mark_node)
-               {
-                 cp_error ("class `%T' does not contain type `%T'",
-                           rhstype, oty_type);
-                 undo_casts (sig_ty);
-                 return error_mark_node;
-               }
-             oty_type = TREE_TYPE (oty_type);
-
-             /* Cast `sig_field' to be of type `oty_type'.  This will be
-                undone in `undo_casts' by walking over all the TYPE_DECLs.  */
-             TREE_TYPE (sig_field_type) = TREE_TYPE (oty_type);
-           }
-         /* If we don't have an opaque type, we can ignore the `typedef'.  */
-         continue;
-       }
-
-      /* Find the signature method corresponding to `sig_field'.  */
-      sig_method = DECL_MEMFUNC_POINTING_TO (sig_field);
-      sig_mname = DECL_NAME (sig_method);
-      sig_mtype = TREE_TYPE (sig_method);
-
-      basetype_path = TYPE_BINFO (rhstype);
-      baselink = lookup_fnfields (basetype_path, sig_mname, 0);
-      if (baselink == NULL_TREE || baselink == error_mark_node)
-       {
-         if (! IS_DEFAULT_IMPLEMENTATION (sig_method))
-           {
-             cp_error ("class `%T' does not contain method `%D'",
-                       rhstype, sig_mname);
-             undo_casts (sig_ty);
-             return error_mark_node;
-           }
-         else
-           {
-             /* We use the signature's default implementation.  */
-             rhs_method = sig_method;
-           }
-       }
-      else
-       {
-         /* Find the class method of the correct type.  */
-         tree rhs_methods;
-         basetypes = TREE_PURPOSE (baselink);
-         if (TREE_CODE (basetypes) == TREE_LIST)
-           basetypes = TREE_VALUE (basetypes);
-
-         rhs_methods = TREE_VALUE (baselink);
-         for (; rhs_methods; rhs_methods = OVL_NEXT (rhs_methods))
-           if ((rhs_method = OVL_CURRENT (rhs_methods))
-               && sig_mname == DECL_NAME (rhs_method)
-               && ! DECL_STATIC_FUNCTION_P (rhs_method)
-               && match_method_types (sig_mtype, TREE_TYPE (rhs_method)))
-             break;
-
-         if (rhs_methods == NULL_TREE
-             || !accessible_p (basetypes, rhs_method))
-           {
-             cp_error ("`%T' does not contain a method conforming to `%#D'",
-                    rhstype, sig_method);
-             undo_casts (sig_ty);
-             return error_mark_node;
-           }
-       }
-
-      if (sig_ptr_p && rhs_method != sig_method)
-       {
-         tree rhs_field = DECL_MEMFUNC_POINTER_TO (rhs_method);
-
-         if (first_rhs_field == NULL_TREE)
-           {
-             first_rhs_field = rhs_field;
-             last_rhs_field = rhs_field;
-           }
-         else if (TREE_CHAIN (last_rhs_field) == rhs_field)
-           last_rhs_field = rhs_field;
-         else
-           offset_p = 0;
-         
-         tbl_entry = build_component_ref (rhs, DECL_NAME (rhs_field),
-                                          NULL_TREE, 1);
-       }
-      else
-       {
-         tree tag, vb_off, delta, idx, pfn = NULL_TREE, vt_off = NULL_TREE;
-         tree tag_decl, vb_off_decl, delta_decl, index_decl;
-         tree pfn_decl, vt_off_decl;
-
-         if (rhs_method == sig_method)
-           {
-             /* default implementation */
-             tag = build_unary_op (NEGATE_EXPR, integer_one_node, 0);
-             vb_off = build_unary_op (NEGATE_EXPR, integer_one_node, 0);
-             delta = integer_zero_node;
-             idx = integer_zero_node;
-             pfn = build_addr_func (rhs_method);
-             TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (rhs_method)) = 1;
-             TREE_TYPE (pfn) = ptr_type_node;
-             TREE_ADDRESSABLE (rhs_method) = 1;
-             offset_p = 0;     /* we can't offset the rhs sig table */
-           }
-         else if (DECL_VINDEX (rhs_method))
-           {
-             /* virtual member function */
-             tag = integer_one_node;
-             vb_off = build_unary_op (NEGATE_EXPR, integer_one_node, 0);
-             if (flag_vtable_thunks)
-               delta = BINFO_OFFSET
-                 (get_binfo (DECL_CONTEXT (rhs_method), rhstype, 1));
-             else
-               delta = BINFO_OFFSET
-                 (get_binfo (DECL_CLASS_CONTEXT (rhs_method), rhstype, 1));
-             idx = DECL_VINDEX (rhs_method);
-             vt_off = get_vfield_offset (get_binfo (DECL_CONTEXT (rhs_method),
-                                                    rhstype, 0));
-           }
-         else
-           {
-             /* non-virtual member function */
-             tag = integer_zero_node;
-             vb_off = build_unary_op (NEGATE_EXPR, integer_one_node, 0);
-             delta = BINFO_OFFSET (get_binfo (DECL_CLASS_CONTEXT (rhs_method),
-                                              rhstype, 1));
-             idx = integer_zero_node;
-             pfn = build_addr_func (rhs_method);
-             TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (rhs_method)) = 1;
-             TREE_TYPE (pfn) = ptr_type_node;
-             TREE_ADDRESSABLE (rhs_method) = 1;
-           }
-
-         /* Since digest_init doesn't handle initializing selected fields
-            of a struct (i.e., anonymous union), we build the constructor
-            by hand, without calling digest_init.  */
-         tag_decl = TYPE_FIELDS (sigtable_entry_type);
-         vb_off_decl = TREE_CHAIN (tag_decl);
-         delta_decl = TREE_CHAIN (vb_off_decl);
-         index_decl = TREE_CHAIN (delta_decl);
-         pfn_decl = TREE_CHAIN (index_decl);
-         vt_off_decl = TREE_CHAIN (pfn_decl);
-         
-         tag = cp_convert (TREE_TYPE (tag_decl), tag);
-         vb_off = cp_convert (TREE_TYPE (vb_off_decl), vb_off);
-         delta = cp_convert (TREE_TYPE (delta_decl), delta);
-         idx = cp_convert (TREE_TYPE (index_decl), idx);
-
-         if (DECL_VINDEX (rhs_method))
-           {
-             vt_off = cp_convert (TREE_TYPE (vt_off_decl), vt_off);
-
-             tbl_entry = build_tree_list (vt_off_decl, vt_off);
-           }
-         else
-           {
-             pfn = cp_convert (TREE_TYPE (pfn_decl), pfn);
-
-             tbl_entry = build_tree_list (pfn_decl, pfn);
-           }
-         tbl_entry = tree_cons (delta_decl, delta,
-                                tree_cons (index_decl, idx, tbl_entry));
-         tbl_entry = tree_cons (tag_decl, tag,
-                                tree_cons (vb_off_decl, vb_off, tbl_entry));
-         tbl_entry = build (CONSTRUCTOR, sigtable_entry_type,
-                            NULL_TREE, tbl_entry);
-
-         TREE_CONSTANT (tbl_entry) = 1;
-       }
-
-      /* Chain those function address expressions together.  */
-      if (result)
-       result = tree_cons (NULL_TREE, tbl_entry, result);
-      else
-       result = build_tree_list (NULL_TREE, tbl_entry);
-    }
-
-  if (result == NULL_TREE)
-    {
-      /* The signature was empty, we don't need a signature table.  */
-      undo_casts (sig_ty);
-      return NULL_TREE;
-    }
-
-  if (offset_p)
-    {
-      if (first_rhs_field == TYPE_FIELDS (rhstype))
-       {
-         /* The sptr field on the lhs can be copied from the rhs.  */
-         undo_casts (sig_ty);
-         return integer_zero_node;
-       }
-      else
-       {
-         /* The sptr field on the lhs will point into the rhs sigtable.  */
-         undo_casts (sig_ty);
-         return build_component_ref (rhs, DECL_NAME (first_rhs_field),
-                                     NULL_TREE, 0);
-       }
-    }
-
-  /* We need to construct a new signature table.  */
-  result = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (result));
-  TREE_HAS_CONSTRUCTOR (result) = 1;
-  TREE_CONSTANT (result) = !sig_ptr_p;
-
-  undo_casts (sig_ty);
-  return result;
-}
-
-/* Build a signature table declaration and initialize it or return an
-   existing one if we built one already.  If we don't get a constructor
-   as initialization expression, we don't need a new signature table
-   variable and just hand back the init expression.
-
-   The declaration processing is done by hand instead of using `cp_finish_decl'
-   so that we can make signature pointers global variables instead of
-   static ones.  */
-
-static tree
-build_sigtable (sig_type, rhs_type, init_from)
-     tree sig_type, rhs_type, init_from;
-{
-  tree name = NULL_TREE;
-  tree decl = NULL_TREE;
-  tree init_expr;
-
-  push_obstacks_nochange ();
-  end_temporary_allocation ();
-
-  if (! IS_SIGNATURE (rhs_type))
-    {
-      name = get_sigtable_name (sig_type, rhs_type);
-      decl = IDENTIFIER_GLOBAL_VALUE (name);
-    }
-  if (decl == NULL_TREE)
-    {
-      tree init = NULL_TREE;
-
-      /* We allow only one signature table to be generated for signatures
-        with opaque types.  Otherwise we create a loophole in the type
-        system since we could cast data from one classes implementation
-        of the opaque type to that of another class.  */
-      if (SIGNATURE_HAS_OPAQUE_TYPEDECLS (sig_type)
-         && SIGTABLE_HAS_BEEN_GENERATED (sig_type))
-       {
-         error ("signature with opaque type implemented by multiple classes");
-         return error_mark_node;
-       }
-      SIGTABLE_HAS_BEEN_GENERATED (sig_type) = 1;
-
-      init_expr = build_signature_table_constructor (sig_type, init_from);
-      if (init_expr == NULL_TREE || TREE_CODE (init_expr) != CONSTRUCTOR)
-       return init_expr;
-
-      if (name == NULL_TREE)
-       name = get_sigtable_name (sig_type, rhs_type);
-      {
-       tree context = current_function_decl;
-
-       /* Make the signature table global, not just static in whichever
-          function a signature pointer/ref is used for the first time.  */
-       current_function_decl = NULL_TREE;
-       decl = pushdecl_top_level (build_decl (VAR_DECL, name, sig_type));
-       current_function_decl = context;
-      }
-      SET_IDENTIFIER_GLOBAL_VALUE (name, decl);
-      store_init_value (decl, init_expr);
-      if (IS_SIGNATURE (rhs_type))
-       {
-         init = DECL_INITIAL (decl);
-         DECL_INITIAL (decl) = error_mark_node;
-       }
-
-      DECL_ALIGN (decl) = MAX (TYPE_ALIGN (double_type_node),
-                              DECL_ALIGN (decl));
-#if 0
-      /* GDB-4.7 doesn't find the initialization value of a signature table
-        when it is constant.  */
-      TREE_READONLY (decl) = 1;
-#endif
-      TREE_STATIC (decl) = 1;
-      TREE_USED (decl) = 1;
-
-      make_decl_rtl (decl, NULL, 1);
-      if (IS_SIGNATURE (rhs_type))
-       expand_static_init (decl, init);
-    }
-
-  pop_obstacks ();
-
-  return decl;
-}
-
-/* Create a constructor or modify expression if the LHS of an assignment
-   is a signature pointer or a signature reference.  If LHS is a record
-   type node, we build a constructor, otherwise a compound expression.  */
-
-tree
-build_signature_pointer_constructor (lhs, rhs)
-     tree lhs, rhs;
-{
-  register struct obstack *ambient_obstack = current_obstack;
-  register struct obstack *ambient_saveable_obstack = saveable_obstack;
-  int initp = (TREE_CODE (lhs) == RECORD_TYPE);
-  tree lhstype = initp ? lhs : TREE_TYPE (lhs);
-  tree rhstype = TREE_TYPE (rhs);
-  tree sig_ty  = SIGNATURE_TYPE (lhstype);
-  tree sig_tbl, sptr_expr, optr_expr;
-  tree result;
-
-  if (! ((TREE_CODE (rhstype) == POINTER_TYPE
-         && TREE_CODE (TREE_TYPE (rhstype)) == RECORD_TYPE)
-        || (TYPE_LANG_SPECIFIC (rhstype)
-            && (IS_SIGNATURE_POINTER (rhstype)
-                || IS_SIGNATURE_REFERENCE (rhstype)))))
-    {
-      error ("invalid assignment to signature pointer or reference");
-      return error_mark_node;
-    }
-
-  if (TYPE_SIZE (sig_ty) == NULL_TREE)
-    {
-      cp_error ("undefined signature `%T' used in signature %s declaration",
-               sig_ty,
-               IS_SIGNATURE_POINTER (lhstype) ? "pointer" : "reference");
-      return error_mark_node;
-    }
-
-  /* If SIG_TY is permanent, make the signature table constructor and
-     the signature pointer/reference constructor permanent too.  */
-  if (TREE_PERMANENT (sig_ty))
-    {
-      current_obstack = &permanent_obstack;
-      saveable_obstack = &permanent_obstack;
-    }
-
-  if (TYPE_LANG_SPECIFIC (rhstype)
-      && (IS_SIGNATURE_POINTER (rhstype) || IS_SIGNATURE_REFERENCE (rhstype)))
-    {
-      if (SIGNATURE_TYPE (rhstype) == sig_ty)
-       {
-         /* LHS and RHS are signature pointers/refs of the same signature.  */
-         optr_expr = build_optr_ref (rhs);
-         sptr_expr = build_sptr_ref (rhs);
-       }
-      else
-       {
-         /* We need to create a new signature table and copy
-            elements from the rhs signature table.  */
-         tree rhs_sptr_ref = build_sptr_ref (rhs);
-         tree rhs_tbl = build1 (INDIRECT_REF, SIGNATURE_TYPE (rhstype),
-                                rhs_sptr_ref);
-
-         sig_tbl = build_sigtable (sig_ty, SIGNATURE_TYPE (rhstype), rhs_tbl);
-         if (sig_tbl == error_mark_node)
-           return error_mark_node;
-
-         optr_expr = build_optr_ref (rhs);
-         if (sig_tbl == NULL_TREE)
-           /* The signature was empty.  The signature pointer is
-              pretty useless, but the user has been warned.  */
-           sptr_expr = copy_node (null_pointer_node);
-         else if (sig_tbl == integer_zero_node)
-           sptr_expr = rhs_sptr_ref;
-         else
-           sptr_expr = build_unary_op (ADDR_EXPR, sig_tbl, 0);
-         TREE_TYPE (sptr_expr) = build_pointer_type (sig_ty);
-       }
-    }
-  else
-    {
-      sig_tbl = build_sigtable (sig_ty, TREE_TYPE (rhstype), rhs);
-      if (sig_tbl == error_mark_node)
-       return error_mark_node;
-
-      optr_expr = rhs;
-      if (sig_tbl == NULL_TREE)
-       /* The signature was empty.  The signature pointer is
-          pretty useless, but the user has been warned.  */
-       {
-         sptr_expr = copy_node (null_pointer_node);
-         TREE_TYPE (sptr_expr) = build_pointer_type (sig_ty);
-       }
-      else
-       sptr_expr = build_unary_op (ADDR_EXPR, sig_tbl, 0);
-    }
-
-  if (initp)
-    {
-      result = tree_cons (NULL_TREE, optr_expr,
-                         build_tree_list (NULL_TREE, sptr_expr));
-      result = build_nt (CONSTRUCTOR, NULL_TREE, result);
-      result = digest_init (lhstype, result, 0);
-    }
-  else
-    {
-      if (TREE_READONLY (lhs) || CP_TYPE_CONST_P (lhstype))
-         readonly_error (lhs, "assignment", 0);
-
-      optr_expr = build_modify_expr (build_optr_ref (lhs), NOP_EXPR,
-                                    optr_expr);
-      sptr_expr = build_modify_expr (build_sptr_ref (lhs), NOP_EXPR,
-                                    sptr_expr);
-
-      result = tree_cons (NULL_TREE, optr_expr,
-                         tree_cons (NULL_TREE, sptr_expr,
-                                    build_tree_list (NULL_TREE, lhs)));
-      result = build_compound_expr (result);
-    }
-
-  current_obstack = ambient_obstack;
-  saveable_obstack = ambient_saveable_obstack;
-  return result;
-}
-
-/* Build a temporary variable declaration for the instance of a signature
-   member function call if it isn't a declaration node already.  Simply
-   using a SAVE_EXPR doesn't work since we need `this' in both branches
-   of a conditional expression.  */
-
-static tree
-save_this (instance)
-     tree instance;
-{
-  tree decl;
-
-  if (TREE_CODE_CLASS (TREE_CODE (instance)) == 'd')
-    decl = instance;
-  else
-    {
-      decl = build_decl (VAR_DECL, NULL_TREE, TREE_TYPE (instance));
-      DECL_REGISTER (decl) = 1;
-      layout_decl (decl, 0);
-      expand_decl (decl);
-    }
-
-  return decl;
-}
-
-/* Build a signature member function call.  Looks up the signature table
-   entry corresponding to FUNCTION.  Depending on the value of the CODE
-   field, either call the function in PFN directly, or use OFFSET to
-   index the object's virtual function table.  */
-
-tree
-build_signature_method_call (function, parms)
-     tree function, parms;
-{
-  tree instance = TREE_VALUE (parms);
-  tree saved_instance = save_this (instance);  /* Create temp for `this'.  */
-  tree object_ptr = build_optr_ref (saved_instance);
-  tree new_object_ptr, new_parms;
-  tree signature_tbl_ptr = build_sptr_ref (saved_instance);
-  tree sig_field_name = DECL_NAME (DECL_MEMFUNC_POINTER_TO (function));
-  tree basetype = DECL_CONTEXT (function);
-  tree basetype_path = TYPE_BINFO (basetype);
-  tree tbl_entry = build_component_ref (build1 (INDIRECT_REF, basetype,
-                                               signature_tbl_ptr),
-                                       sig_field_name, basetype_path, 1);
-  tree tag, delta, pfn, vt_off, idx, vfn;
-  tree deflt_call = NULL_TREE, direct_call, virtual_call, result;
-
-  tbl_entry = save_expr (tbl_entry);
-  tag = build_component_ref (tbl_entry, tag_identifier, NULL_TREE, 1);
-  delta = build_component_ref (tbl_entry, delta_identifier, NULL_TREE, 1);
-  pfn = build_component_ref (tbl_entry, pfn_identifier, NULL_TREE, 1);
-  vt_off = build_component_ref (tbl_entry, vt_off_identifier, NULL_TREE, 1);
-  idx = build_component_ref (tbl_entry, index_identifier, NULL_TREE, 1);
-  TREE_TYPE (pfn) = build_pointer_type (TREE_TYPE (function)); 
-
-  if (IS_DEFAULT_IMPLEMENTATION (function))
-    {
-      pfn = save_expr (pfn);
-      deflt_call = build_function_call (pfn, parms);
-    }
-
-  new_object_ptr = build (PLUS_EXPR, build_pointer_type (basetype),
-                         cp_convert (ptrdiff_type_node, object_ptr),
-                         cp_convert (ptrdiff_type_node, delta));
-
-  parms = tree_cons (NULL_TREE,
-                    cp_convert (build_pointer_type (basetype), object_ptr),
-                    TREE_CHAIN (parms));
-  new_parms = tree_cons (NULL_TREE, new_object_ptr, TREE_CHAIN (parms));
-
-  {
-    /* Cast the signature method to have `this' of a normal pointer type.  */
-    tree old_this = TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (TREE_TYPE (pfn))));
-
-    TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (TREE_TYPE (pfn))))
-      = build_qualified_type (build_pointer_type (basetype),
-                             TYPE_QUALS (old_this));
-
-    direct_call = build_function_call (pfn, new_parms);
-
-    {
-      tree vfld, vtbl, aref;
-
-      vfld = build (PLUS_EXPR,
-                   build_pointer_type (build_pointer_type (vtbl_type_node)),
-                   cp_convert (ptrdiff_type_node, object_ptr),
-                   cp_convert (ptrdiff_type_node, vt_off));
-      vtbl = build_indirect_ref (build_indirect_ref (vfld, NULL_PTR),
-                                NULL_PTR);
-      aref = build_array_ref (vtbl, idx);
-
-      if (flag_vtable_thunks)
-       vfn = aref;
-      else
-       vfn = build_component_ref (aref, pfn_identifier, NULL_TREE, 0);
-
-      TREE_TYPE (vfn) = build_pointer_type (TREE_TYPE (function));
-
-      virtual_call = build_function_call (vfn, new_parms);
-    }
-
-    /* Undo the cast, make `this' a signature pointer again.  */
-    TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (TREE_TYPE (pfn)))) = old_this;
-  }
-
-  /* Once the function was found, there should be no reason why we
-     couldn't build the member function pointer call.  */
-  if (!direct_call || direct_call == error_mark_node
-      || !virtual_call || virtual_call == error_mark_node
-      || (IS_DEFAULT_IMPLEMENTATION (function)
-         && (!deflt_call || deflt_call == error_mark_node)))
-    {
-      compiler_error ("cannot build call of signature member function `%s'",
-                     fndecl_as_string (function, 1));
-      return error_mark_node;
-    }
-
-  if (IS_DEFAULT_IMPLEMENTATION (function))
-    {
-      tree test = build_binary_op_nodefault (LT_EXPR, tag, integer_zero_node,
-                                            LT_EXPR);
-      result = build_conditional_expr (tag,
-                                      build_conditional_expr (test,
-                                                              deflt_call,
-                                                              virtual_call),
-                                      direct_call);
-    }
-  else
-    result = build_conditional_expr (tag, virtual_call, direct_call);
-
-  /* If we created a temporary variable for `this', initialize it first.  */
-  if (instance != saved_instance)
-    result = build (COMPOUND_EXPR, TREE_TYPE (result),
-                   build_modify_expr (saved_instance, NOP_EXPR, instance),
-                   result);
-
-  return result;
-}
-
-/* Create a COMPONENT_REF expression for referencing the OPTR field
-   of a signature pointer or reference.  */
-
-tree
-build_optr_ref (instance)
-     tree instance;
-{
-  tree field = get_identifier (SIGNATURE_OPTR_NAME);
-
-  return build_component_ref (instance, field, NULL_TREE, 1);
-}
-
-/* Create a COMPONENT_REF expression for referencing the SPTR field
-   of a signature pointer or reference.  */
-
-static tree
-build_sptr_ref (instance)
-     tree instance;
-{
-  tree field = get_identifier (SIGNATURE_SPTR_NAME);
-
-  return build_component_ref (instance, field, NULL_TREE, 1);
-}
index 281e7a7eae9135bbb011ca9e83b0ca9e87c1c1ec..592b6023dbc8ae9d9d2ba47e963aecff39d4af54 100644 (file)
@@ -410,10 +410,7 @@ build_cplus_method_type (basetype, rettype, argtypes)
 
   TYPE_METHOD_BASETYPE (t) = TYPE_MAIN_VARIANT (basetype);
   TREE_TYPE (t) = rettype;
-  if (IS_SIGNATURE (basetype))
-    ptype = build_signature_pointer_type (basetype);
-  else
-    ptype = build_pointer_type (basetype);
+  ptype = build_pointer_type (basetype);
 
   /* The actual arglist for this function includes a "hidden" argument
      which is "this".  Put it into the list of argument types.  */
index 030178639937b247abab8ac815a3da35efdc4558..0b71e72d85cbbf3cd1394b6651cc915a8e10b23d 100644 (file)
@@ -104,10 +104,7 @@ require_complete_type (value)
 
   /* First, detect a valid value with a complete type.  */
   if (TYPE_SIZE (type) != 0
-      && TYPE_SIZE (type) != size_zero_node
-      && ! (TYPE_LANG_SPECIFIC (type)
-           && (IS_SIGNATURE_POINTER (type) || IS_SIGNATURE_REFERENCE (type))
-           && TYPE_SIZE (SIGNATURE_TYPE (type)) == 0))
+      && TYPE_SIZE (type) != size_zero_node)
     return value;
 
   /* If we see X::Y, we build an OFFSET_TYPE which has
@@ -1697,14 +1694,7 @@ c_sizeof (type)
   if (code == REFERENCE_TYPE)
     type = TREE_TYPE (type);
 
-  /* @@ This also produces an error for a signature ref.
-        In that case we should be able to do better.  */
-  if (IS_SIGNATURE (type))
-    {
-      error ("`sizeof' applied to a signature type");
-      return size_int (0);
-    }
-  else if (code == OFFSET_TYPE)
+  if (code == OFFSET_TYPE)
     {
       cp_error ("`sizeof' applied to non-static member");
       return size_int (0);
@@ -1816,14 +1806,6 @@ c_alignof (type)
   if (code == REFERENCE_TYPE)
     type = TREE_TYPE (type);
 
-  /* @@ This also produces an error for a signature ref.
-        In that case we should be able to do better.  */
-  if (IS_SIGNATURE (type))
-    {
-      error ("`__alignof' applied to a signature type");
-      return size_int (1);
-    }
-
   t = size_int (TYPE_ALIGN (type) / BITS_PER_UNIT);
   force_fit_type (t, 0);
   return t;
@@ -2038,11 +2020,6 @@ build_object_ref (datum, basetype, field)
                basetype, field, dtype);
       return error_mark_node;
     }
-  else if (IS_SIGNATURE (basetype))
-    {
-      warning ("signature name in scope resolution ignored");
-      return build_component_ref (datum, field, NULL_TREE, 1);
-    }
   else if (is_aggr_type (basetype, 1))
     {
       tree binfo = binfo_or_else (basetype, dtype);
@@ -2401,8 +2378,7 @@ build_component_ref (datum, component, basetype_path, protect)
         not const, even within a const object.  */
       if (DECL_LANG_SPECIFIC (field) && DECL_MUTABLE_P (field))
        type_quals &= ~TYPE_QUAL_CONST;
-      if (!IS_SIGNATURE (field_type))
-       field_type = cp_build_qualified_type (field_type, type_quals);
+      field_type = cp_build_qualified_type (field_type, type_quals);
     }
 
   ref = fold (build (COMPONENT_REF, field_type,
@@ -2513,9 +2489,6 @@ build_indirect_ref (ptr, errorstring)
      pointer to member, so it's cool to check for this here.  */
   else if (TYPE_PTRMEM_P (type) || TYPE_PTRMEMFUNC_P (type))
     error ("invalid use of `%s' on pointer to member", errorstring);
-  else if (TREE_CODE (type) == RECORD_TYPE
-          && (IS_SIGNATURE_POINTER (type) || IS_SIGNATURE_REFERENCE (type)))
-    error ("cannot dereference signature pointer/reference");
   else if (pointer != error_mark_node)
     {
       if (errorstring)
@@ -5580,12 +5553,6 @@ build_c_cast (type, expr)
       return error_mark_node;
     }
 
-  if (IS_SIGNATURE (type))
-    {
-      error ("cast specifies signature type");
-      return error_mark_node;
-    }
-
   if (processing_template_decl)
     {
       tree t = build_min (CAST_EXPR, type,
@@ -5726,14 +5693,6 @@ build_modify_expr (lhs, modifycode, rhs)
 
   newrhs = rhs;
 
-  /* Handle assignment to signature pointers/refs.  */
-
-  if (TYPE_LANG_SPECIFIC (lhstype)
-      && (IS_SIGNATURE_POINTER (lhstype) || IS_SIGNATURE_REFERENCE (lhstype)))
-    {
-      return build_signature_pointer_constructor (lhs, rhs);
-    }
-
   /* Handle control structure constructs used as "lvalues".  */
 
   switch (TREE_CODE (lhs))
@@ -5923,11 +5882,6 @@ build_modify_expr (lhs, modifycode, rhs)
   /* Warn about storing in something that is `const'.  */
   /* For C++, don't warn if this is initialization.  */
   if (modifycode != INIT_EXPR
-      /* For assignment to `const' signature pointer/reference fields,
-        don't warn either, we already printed a better message before.  */
-      && ! (TREE_CODE (lhs) == COMPONENT_REF
-           && (IS_SIGNATURE_POINTER (TREE_TYPE (TREE_OPERAND (lhs, 0)))
-               || IS_SIGNATURE_REFERENCE (TREE_TYPE (TREE_OPERAND (lhs, 0)))))
       && (TREE_READONLY (lhs) || CP_TYPE_CONST_P (lhstype)
          /* Functions are not modifiable, even though they are
             lvalues.  */
@@ -6735,10 +6689,6 @@ convert_for_initialization (exp, type, rhs, flags, errtype, fndecl, parmnum)
 
   type = complete_type (type);
 
-  if (TYPE_LANG_SPECIFIC (type)
-      && (IS_SIGNATURE_POINTER (type) || IS_SIGNATURE_REFERENCE (type)))
-    return build_signature_pointer_constructor (type, rhs);
-
   if (IS_AGGR_TYPE (type))
     return ocp_convert (type, rhs, CONV_IMPLICIT|CONV_FORCE_TEMP, flags);
 
index c4a12b3d511739575016b656c363b0f4ad67c3eb..db1387218822f8705a9956fc74f877544225b42e 100644 (file)
@@ -177,39 +177,6 @@ abstract_virtuals_error (decl, type)
   return 1;
 }
 
-/* Print an error message for invalid use of a signature type.
-   Signatures are treated similar to abstract classes here, they
-   cannot be instantiated.  */
-
-void
-signature_error (decl, type)
-     tree decl;
-     tree type;
-{
-  if (decl)
-    {
-      if (TREE_CODE (decl) == RESULT_DECL)
-       return;
-
-      if (TREE_CODE (decl) == VAR_DECL)
-       cp_error ("cannot declare variable `%D' to be of signature type `%T'",
-                 decl, type);
-      else if (TREE_CODE (decl) == PARM_DECL)
-       cp_error ("cannot declare parameter `%D' to be of signature type `%T'",
-                 decl, type);
-      else if (TREE_CODE (decl) == FIELD_DECL)
-       cp_error ("cannot declare field `%D' to be of signature type `%T'",
-                 decl, type);
-      else if (TREE_CODE (decl) == FUNCTION_DECL
-              && TREE_CODE (TREE_TYPE (decl)) == METHOD_TYPE)
-       cp_error ("invalid return type for method `%#D'", decl);
-      else if (TREE_CODE (decl) == FUNCTION_DECL)
-       cp_error ("invalid return type for function `%#D'", decl);
-    }
-  else
-    cp_error ("cannot allocate an object of signature type `%T'", type);
-}
-
 /* Print an error message for invalid use of an incomplete type.
    VALUE is the expression that was used (or 0 if that isn't known)
    and TYPE is the type that was invalid.  */
@@ -418,17 +385,7 @@ store_init_value (decl, init)
          && TREE_CODE (init) != CONSTRUCTOR)
        my_friendly_abort (109);
 
-      /* Although we are not allowed to declare variables of signature
-        type, we complain about a possible constructor call in such a
-        declaration as well.  */
-      if (TREE_CODE (init) == TREE_LIST
-         && IS_SIGNATURE (type))
-       {
-         cp_error ("constructor syntax cannot be used with signature type `%T'",
-                   type);
-         init = error_mark_node;
-       }
-      else if (TREE_CODE (init) == TREE_LIST)
+      if (TREE_CODE (init) == TREE_LIST)
        {
          cp_error ("constructor syntax used, but no constructor declared for type `%T'", type);
          init = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (init));
@@ -532,13 +489,7 @@ store_init_value (decl, init)
 #if 0 /* No, that's C.  jason 9/19/94 */
   else
     {
-      if (pedantic && TREE_CODE (value) == CONSTRUCTOR
-         /* Don't complain about non-constant initializers of
-            signature tables and signature pointers/references.  */
-         && ! (TYPE_LANG_SPECIFIC (type)
-               && (IS_SIGNATURE (type)
-                   || IS_SIGNATURE_POINTER (type)
-                   || IS_SIGNATURE_REFERENCE (type))))
+      if (pedantic && TREE_CODE (value) == CONSTRUCTOR)
        {
          if (! TREE_CONSTANT (value) || ! TREE_STATIC (value))
            pedwarn ("ANSI C++ forbids non-constant aggregate initializer expressions");
@@ -666,9 +617,7 @@ digest_init (type, init, tail)
   if (code == INTEGER_TYPE || code == REAL_TYPE || code == POINTER_TYPE
       || code == ENUMERAL_TYPE || code == REFERENCE_TYPE
       || code == BOOLEAN_TYPE || code == COMPLEX_TYPE
-      || TYPE_PTRMEMFUNC_P (type)
-      || (code == RECORD_TYPE && ! raw_constructor
-         && (IS_SIGNATURE_POINTER (type) || IS_SIGNATURE_REFERENCE (type))))
+      || TYPE_PTRMEMFUNC_P (type))
     {
       if (raw_constructor)
        {
@@ -1194,11 +1143,6 @@ build_x_arrow (datum)
   else
     last_rval = default_conversion (rval);
 
-  /* Signature pointers are not dereferenced.  */
-  if (TYPE_LANG_SPECIFIC (TREE_TYPE (last_rval))
-      && IS_SIGNATURE_POINTER (TREE_TYPE (last_rval)))
-    return last_rval;
-
   if (TREE_CODE (TREE_TYPE (last_rval)) == POINTER_TYPE)
     return build_indirect_ref (last_rval, NULL_PTR);
 
@@ -1318,12 +1262,6 @@ build_functional_cast (exp, parms)
   if (processing_template_decl)
     return build_min (CAST_EXPR, type, parms);
 
-  if (IS_SIGNATURE (type))
-    {
-      error ("signature type not allowed in cast or constructor expression");
-      return error_mark_node;
-    }
-
   if (! IS_AGGR_TYPE (type))
     {
       /* this must build a C cast */
index 003910c34584002f2e5b2adced493350f0ae6403..2952f36b525f3ca0211986cf698c18b41a2c8f65 100644 (file)
@@ -367,7 +367,6 @@ GNU_xref_decl (fndecl,decl)
   else if (TREE_CODE (decl) == RECORD_TYPE)
     {
       if (CLASSTYPE_DECLARED_CLASS (decl)) cls = "CLASSID";
-      else if (IS_SIGNATURE (decl)) cls = "SIGNATUREID";
       else cls = "STRUCTID";
       decl = TYPE_NAME (decl);
       uselin = TRUE;
@@ -417,8 +416,7 @@ GNU_xref_decl (fndecl,decl)
           (cur_scope != NULL ? cur_scope->lid : 0),
           cls, fctname(fndecl), buf);
 
-  if (STREQL (cls, "STRUCTID") || STREQL (cls, "UNIONID")
-      || STREQL (cls, "SIGNATUREID"))
+  if (STREQL (cls, "STRUCTID") || STREQL (cls, "UNIONID"))
     {
       cls = "CLASSID";
       fprintf (xref_file, "DCL %s %d %s %d %s %s %s\n",
index a6644cec0072c71537c4bc8918acdc6cb45de576..253b0e635673a8aba62018762c8e5cdbdcff439c 100644 (file)
@@ -3158,9 +3158,6 @@ Predefined Macros,cpp.info,The C Preprocessor}).
                          each needed template instantiation is emitted.
 * Bound member functions:: You can extract a function pointer to the
                         method denoted by a @samp{->*} or @samp{.*} expression.
-* C++ Signatures::     You can specify abstract types to get subtype
-                        polymorphism independent from inheritance.
-                        
 @end menu
 
 @node Naming Results
@@ -3654,141 +3651,3 @@ fptr p = (fptr)(a.*fp);
 
 You must specify @samp{-Wno-pmf-conversions} to use this extension.
 
-@node C++ Signatures
-@section Type Abstraction using Signatures
-
-@findex signature
-@cindex type abstraction, C++
-@cindex C++ type abstraction
-@cindex subtype polymorphism, C++
-@cindex C++ subtype polymorphism
-@cindex signatures, C++
-@cindex C++ signatures
-
-In GNU C++, you can use the keyword @code{signature} to define a
-completely abstract class interface as a datatype.  You can connect this
-abstraction with actual classes using signature pointers.  If you want
-to use signatures, run the GNU compiler with the
-@samp{-fhandle-signatures} command-line option.  (With this option, the
-compiler reserves a second keyword @code{sigof} as well, for a future
-extension.)
-
-Roughly, signatures are type abstractions or interfaces of classes.
-Some other languages have similar facilities.  C++ signatures are
-related to ML's signatures, Haskell's type classes, definition modules
-in Modula-2, interface modules in Modula-3, abstract types in Emerald,
-type modules in Trellis/Owl, categories in Scratchpad II, and types in
-POOL-I.  For a more detailed discussion of signatures, see
-@cite{Signatures: A Language Extension for Improving Type Abstraction and
-Subtype Polymorphism in C++}
-by @w{Gerald} Baumgartner and Vincent F. Russo (Tech report
-CSD--TR--95--051, Dept. of Computer Sciences, Purdue University,
-August 1995, a slightly improved version appeared in
-@emph{Software---Practice & Experience}, @b{25}(8), pp. 863--889,
-August 1995).  You can get the tech report by anonymous FTP from
-@code{ftp.cs.purdue.edu} in @file{pub/gb/Signature-design.ps.gz}.
-
-Syntactically, a signature declaration is a collection of
-member function declarations and nested type declarations.
-For example, this signature declaration defines a new abstract type
-@code{S} with member functions @samp{int foo ()} and @samp{int bar (int)}:
-
-@example
-signature S
-@{
-  int foo ();
-  int bar (int);
-@};
-@end example
-
-Since signature types do not include implementation definitions, you
-cannot write an instance of a signature directly.  Instead, you can
-define a pointer to any class that contains the required interfaces as a
-@dfn{signature pointer}.  Such a class @dfn{implements} the signature
-type.
-@c Eventually signature references should work too.
-
-To use a class as an implementation of @code{S}, you must ensure that
-the class has public member functions @samp{int foo ()} and @samp{int
-bar (int)}.  The class can have other member functions as well, public
-or not; as long as it offers what's declared in the signature, it is
-suitable as an implementation of that signature type.
-
-For example, suppose that @code{C} is a class that meets the
-requirements of signature @code{S} (@code{C} @dfn{conforms to}
-@code{S}).  Then
-
-@example
-C obj;
-S * p = &obj;
-@end example
-
-@noindent
-defines a signature pointer @code{p} and initializes it to point to an
-object of type @code{C}.
-The member function call @w{@samp{int i = p->foo ();}}
-executes @samp{obj.foo ()}.
-
-@cindex @code{signature} in C++, advantages
-Abstract virtual classes provide somewhat similar facilities in standard
-C++.  There are two main advantages to using signatures instead:
-
-@enumerate
-@item
-Subtyping becomes independent from inheritance.  A class or signature
-type @code{T} is a subtype of a signature type @code{S} independent of
-any inheritance hierarchy as long as all the member functions declared
-in @code{S} are also found in @code{T}.  So you can define a subtype
-hierarchy that is completely independent from any inheritance
-(implementation) hierarchy, instead of being forced to use types that
-mirror the class inheritance hierarchy.
-
-@item
-Signatures allow you to work with existing class hierarchies as
-implementations of a signature type.  If those class hierarchies are
-only available in compiled form, you're out of luck with abstract virtual
-classes, since an abstract virtual class cannot be retrofitted on top of
-existing class hierarchies.  So you would be required to write interface
-classes as subtypes of the abstract virtual class.
-@end enumerate
-
-@cindex default implementation, signature member function
-@cindex signature member function default implementation
-There is one more detail about signatures.  A signature declaration can
-contain member function @emph{definitions} as well as member function
-declarations.  A signature member function with a full definition is
-called a @emph{default implementation}; classes need not contain that
-particular interface in order to conform.  For example, a
-class @code{C} can conform to the signature
-
-@example
-signature T
-@{
-  int f (int);
-  int f0 () @{ return f (0); @};
-@};
-@end example
-
-@noindent
-whether or not @code{C} implements the member function @samp{int f0 ()}.
-If you define @code{C::f0}, that definition takes precedence;
-otherwise, the default implementation @code{S::f0} applies.
-
-@ignore
-There will be more support for signatures in the future.
-Add to this doc as the implementation grows.
-In particular, the following features are planned but not yet
-implemented:
-@itemize @bullet
-@item signature references,
-@item signature inheritance,
-@item the @code{sigof} construct for extracting the signature information
-      of a class,
-@item views for renaming member functions when matching a class type
-      with a signature type,
-@item specifying exceptions with signature member functions, and
-@item signature templates.
-@end itemize
-This list is roughly in the order in which we intend to implement
-them.  Watch this space for updates.
-@end ignore
index 5e0a8606552f5e232253709d8c4ad833d78e141b..c5e6bb2c44f8fd04bd9aeb7475755f4fca2a0b0c 100644 (file)
@@ -105,7 +105,7 @@ in the following sections.
 @smallexample
 -fno-access-control  -fcheck-new  -fconserve-space  -fdollars-in-identifiers
 -fno-elide-constructors  -fexternal-templates  -ffor-scope  
--fno-for-scope  -fno-gnu-keywords  -fguiding-decls  -fhandle-signatures
+-fno-for-scope  -fno-gnu-keywords  -fguiding-decls
 -fhonor-std -fhuge-objects  -fno-implicit-templates  -finit-priority
 -fno-implement-inlines -fname-mangling-version-@var{n}  -fno-default-inline  
 -foperator-names  -fno-optional-diags  -fpermissive -frepo  -fstrict-prototype
@@ -1025,10 +1025,9 @@ but to allow and give a warning for old-style code that would
 otherwise be invalid, or have different behavior.
 
 @item -fno-gnu-keywords
-Do not recognize @code{classof}, @code{headof}, @code{signature},
-@code{sigof} or @code{typeof} as a keyword, so that code can use these
-words as identifiers.  You can use the keywords @code{__classof__},
-@code{__headof__}, @code{__signature__}, @code{__sigof__}, and
+Do not recognize @code{classof}, @code{headof}, or @code{typeof} as a
+keyword, so that code can use these words as identifiers.  You can use
+the keywords @code{__classof__}, @code{__headof__}, and
 @code{__typeof__} instead.  @samp{-ansi} implies
 @samp{-fno-gnu-keywords}.
 
@@ -1046,12 +1045,6 @@ with other name mangling versions.  Like all options that change the
 ABI, all C++ code, @emph{including libgcc.a} must be built with the same
 setting of this option.
 
-@item -fhandle-signatures
-Recognize the @code{signature} and @code{sigof} keywords for specifying
-abstract types.  The default (@samp{-fno-handle-signatures}) is not to
-recognize them.  @xref{C++ Signatures, Type Abstraction using
-Signatures}.
-
 @item -fhonor-std
 Treat the @code{namespace std} as a namespace, instead of ignoring
 it. For compatibility with earlier versions of g++, the compiler will,
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig01.C b/gcc/testsuite/g++.old-deja/g++.gb/sig01.C
deleted file mode 100644 (file)
index a3e9277..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr assignment
-// Test assignment to local signature pointer.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  char * f (void) { return "PA"; }
-  char * g (int)  { return "SS"; }
-};
-
-signature S
-{
-  char * f (void);
-  char * g (int);
-};
-
-int main (void)
-{
-  C a;
-  S * p;
-
-  p = &a;
-
-  printf ("%s%s\n", p->f (), p->g (0));
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig02.C b/gcc/testsuite/g++.old-deja/g++.gb/sig02.C
deleted file mode 100644 (file)
index f739a28..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr assignment
-// Test assigning objects of different classes to local signature pointer.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  char * f (void) { return "PA"; }
-};
-
-class D
-{
-public:
-  char * f (void) { return "SS"; }
-};
-
-signature S
-{
-  char * f (void);
-};
-
-int main (void)
-{
-  C a;
-  D b;
-  S * p;
-  int i;
-
-  for (i = 0; i < 2; i++)
-    {
-      if (i == 0)
-       p = &a;
-      else
-       p = &b;
-      printf ("%s", p->f ());
-    }
-  printf ("\n");
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig03.C b/gcc/testsuite/g++.old-deja/g++.gb/sig03.C
deleted file mode 100644 (file)
index d791c7e..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr overloading
-// Test overloading of signature member functions.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  char * f (void) { return "PA"; }
-  char * f (int)  { return "SS"; }
-};
-
-signature S
-{
-  char * f (void);
-  char * f (int);
-};
-
-int main (void)
-{
-  C a;
-  S * p;
-
-  p = &a;
-
-  printf ("%s%s\n", p->f (), p->f (0));
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig04.C b/gcc/testsuite/g++.old-deja/g++.gb/sig04.C
deleted file mode 100644 (file)
index af54959..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr this
-// Test passing of 'this' pointer through signature pointer.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C;
-int inc_mod_4 (C *);
-
-class C
-{
-public:
-  char * text[4];
-  int    i;
-  int    get_i (void) { return i; }
-  char * msg   (void) { i = inc_mod_4 (this);  return text[i]; }
-};
-
-signature S
-{
-  char * msg (void);
-};
-
-int inc_mod_4 (C * p)
-{
-  return (p->get_i () + 1) % 4;
-}
-
-int main (void)
-{
-  C o = { "P", "A", "S", "S", -1 };
-  S * p;
-  int i;
-
-  p = &o;
-
-  for (i = 0; i < 4; i++)
-    printf ("%s", p->msg ());
-
-  printf ("\n");
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig05.C b/gcc/testsuite/g++.old-deja/g++.gb/sig05.C
deleted file mode 100644 (file)
index 3023e34..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr initialization
-// Test initialization of a local signature pointer.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  char * f (void) { return "PA"; }
-  char * g (int)  { return "SS"; }
-};
-
-signature S
-{
-  char * f (void);
-  char * g (int);
-};
-
-int main (void)
-{
-  C a;
-  S * p = &a;
-
-  printf ("%s%s\n", p->f (), p->g (0));
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig06.C b/gcc/testsuite/g++.old-deja/g++.gb/sig06.C
deleted file mode 100644 (file)
index b6476d5..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr initialization
-// Test initialization of a local signature pointer.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  char * f (void) { return "PA"; }
-  char * g (int)  { return "SS"; }
-};
-
-signature S
-{
-  char * f (void);
-  char * g (int);
-};
-
-C a;
-S * p = &a;
-
-int main (void)
-{
-  printf ("%s%s\n", p->f (), p->g (0));
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig07.C b/gcc/testsuite/g++.old-deja/g++.gb/sig07.C
deleted file mode 100644 (file)
index 18a47be..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr default-argument
-// Test calling a signature member function with default argument.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  char * f (char * text) { return text; }
-};
-
-signature S
-{
-  char * f (char * text = "PA");
-};
-
-C a;
-S * p = &a;
-
-int main (void)
-{
-  printf ("%s%s\n", p->f (), p->f ("SS"));
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig08.C b/gcc/testsuite/g++.old-deja/g++.gb/sig08.C
deleted file mode 100644 (file)
index 2d5d14d..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr argument return-value
-// Test passing a signature pointer to a function and returning it from one.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  char * text;
-  char * get_msg (void) const { return text; }
-};
-
-const C a = { "PA" };
-const C b = { "SS" };
-
-signature S
-{
-  char * get_msg (void) const;
-};
-
-char * f (const S * p)
-{
-  return p->get_msg ();
-}
-
-const S * g (const C * p)
-{
-  return p;
-}
-
-int main (void)
-{
-  printf ("%s%s\n", f(&a), g(&b)->get_msg ());
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig09.C b/gcc/testsuite/g++.old-deja/g++.gb/sig09.C
deleted file mode 100644 (file)
index a2e3b33..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr assignment initialization new
-// Test assignment to/initialization of signature pointer with run-time value.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  int f (void) { return 1; }
-};
-
-signature S
-{
-  int f (void);
-};
-
-S * p1 = new C;
-
-int main (void)
-{
-  S * p2 = new C;
-  S * p3;
-
-  p3 = new C;
-
-  if (p1->f () + p2->f () + p3->f () == 3)
-    printf ("PASS\n");
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig10.C b/gcc/testsuite/g++.old-deja/g++.gb/sig10.C
deleted file mode 100644 (file)
index e16f2ee..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr argument return-value new
-// Test passing a signature pointer to a function and returning it from one.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-  char * text;
-public:
-  C (char * s) { text = s; }
-  char * get_msg (void) const { return text; }
-};
-
-signature S
-{
-  char * get_msg (void) const;
-};
-
-char * f (const S * p)
-{
-  return p->get_msg ();
-}
-
-const S * g (const C * p)
-{
-  return p;
-}
-
-int main (void)
-{
-  printf ("%s%s\n", f(new C ("PA")), g(new C ("SS"))->get_msg ());
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig11.C b/gcc/testsuite/g++.old-deja/g++.gb/sig11.C
deleted file mode 100644 (file)
index 892695f..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr array
-// Test a signature pointer array.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  char * f (void) { return "PA"; }
-};
-
-class D
-{
-public:
-  char * f (void) { return "SS"; }
-};
-
-signature S
-{
-  char * f (void);
-};
-
-int main (void)
-{
-  S * p[2] = { new C, new D };
-
-  printf ("%s%s\n", p[0]->f (), p[1]->f ());
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig12.C b/gcc/testsuite/g++.old-deja/g++.gb/sig12.C
deleted file mode 100644 (file)
index 2747a80..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr structure
-// Test a signature pointer structure.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  char * f (void) { return "PA"; }
-};
-
-class D
-{
-public:
-  char * f (void) { return "SS"; }
-};
-
-signature S
-{
-  char * f (void);
-};
-
-struct SP
-{
-  S * p;
-  S * q;
-};
-
-int main (void)
-{
-  SP o = { new C, new D };
-
-  printf ("%s%s\n", o.p->f (), o.q->f ());
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig13.C b/gcc/testsuite/g++.old-deja/g++.gb/sig13.C
deleted file mode 100644 (file)
index f5da9f8..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr assignment initialization
-// Test assignment of/initialization with same type signature pointer.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  int f (void) { return 1; }
-};
-
-signature S
-{
-  int f (void);
-};
-
-C a;
-S * p1 = &a;
-S * q1 = p1;
-
-int main (void)
-{
-  C a;
-  S * p2 = &a;
-  S * q2 = p2;
-  S * q3;
-
-  q3 = p2;
-
-  if (q1->f () + q2->f () + q3->f () == 3)
-    printf ("PASS\n");
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig14.C b/gcc/testsuite/g++.old-deja/g++.gb/sig14.C
deleted file mode 100644 (file)
index 6ce1d02..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr assignment initialization
-// Test assignment of/initialization with different type signature pointer.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  int f (void) { return 1; }
-  int g (int)  { return 2; }
-};
-
-signature S
-{
-  int f (void);
-  int g (int);
-};
-
-signature T
-{
-  int f (void);
-};
-
-signature U
-{
-  int g (int);
-};
-
-C a;
-S * p1 = &a;
-T * q1 = p1;
-U * r1 = p1;
-
-int main (void)
-{
-  C a;
-  S * p2 = &a;
-  T * q2 = p2;
-  U * r2 = p2;
-  T * q3;
-  U * r3;
-
-  q3 = p2;
-  r3 = p2;
-
-  if (q1->f () + q2->f () + q3->f () == 3
-      && r1->g (0) + r2->g (0) + r3->g (0) == 6)
-    printf ("PASS\n");
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig15.C b/gcc/testsuite/g++.old-deja/g++.gb/sig15.C
deleted file mode 100644 (file)
index f0ae52e..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr cast
-// Test casting a signature pointer to a class pointer.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  char * f (void) { return "PA"; }
-  char * g (int)  { return "SS"; }
-};
-
-signature S
-{
-  char * f (void);
-  char * g (int);
-};
-
-int main (void)
-{
-  C a;
-  S * p;
-  C * q;
-
-  p = &a;
-  q = (C *) p;
-
-  printf ("%s%s\n", q->f (), q->g (0));
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig16.C b/gcc/testsuite/g++.old-deja/g++.gb/sig16.C
deleted file mode 100644 (file)
index 35475e9..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr cast
-// Test casting a class pointer to an anonymous signature pointer.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  char * f (void) { return "PA"; }
-  char * g (int)  { return "S"; }
-  char * h (void) { return "FAIL"; }
-};
-
-signature S
-{
-  char * f (void);
-  char * g (int);
-};
-
-signature T
-{
-  char * f (void);
-};
-
-C a;
-signature { char * g (int); } * r1 =
-  (signature { char * h (void); char * g (int); } *) &a;
-
-int main (void)
-{
-  C a;
-  S * p = &a;
-  T * q = p;
-  signature { char * g (int); } * r2 =
-    (signature { char * h (void); char * g (int); } *) &a;
-
-  printf ("%s%s%s\n", q->f (), r1->g (0), r2->g (0));
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig17.C b/gcc/testsuite/g++.old-deja/g++.gb/sig17.C
deleted file mode 100644 (file)
index 6d1d1d9..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr cast
-// Test casting a class pointer through a chain of signature pointers.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  char * f (void) { return "PA"; }
-  char * g (int)  { return "SS"; }
-};
-
-class D : public C
-{
-public:
-  char * h (void) { return "FAIL"; }
-};
-
-class E : public C
-{
-public:
-  int foo (int) { return 0; }
-};
-
-signature S
-{
-  char * f (void);
-  char * g (int);
-};
-
-signature T
-{
-  char * f (void);
-};
-
-int main (void)
-{
-  D a;
-  S * p;
-  T * q;
-  signature { char * g (int); } * r;
-
-  p = &a;
-  q = (T*) (signature { char * f (void); int foo (int); } *) (E*) (S*) (C*) p;
-  r = (signature { char * h (void); char * g (int); } *) &a;
-
-  printf ("%s%s\n", q->f (), r->g (0));
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig18.C b/gcc/testsuite/g++.old-deja/g++.gb/sig18.C
deleted file mode 100644 (file)
index ba0ec86..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr assignment virtual
-// Test assignment of object from virtual class to signature pointer.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  virtual char * f (void) { return "PA"; }
-  virtual char * g (int)  { return "SS"; }
-};
-
-signature S
-{
-  char * f (void);
-  char * g (int);
-};
-
-int main (void)
-{
-  C a;
-  S * p;
-
-  p = &a;
-
-  printf ("%s%s\n", p->f (), p->g (0));
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig19.C b/gcc/testsuite/g++.old-deja/g++.gb/sig19.C
deleted file mode 100644 (file)
index 160a4a3..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr initialization virtual
-// Test initialization of signature pointer with object from abstract class.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  virtual char * f (void) = 0;
-  virtual char * g (int)  = 0;
-};
-
-class D : public C
-{
-public:
-  char * f (void) { return "PA"; }
-  char * g (int)  { return "SS"; }
-};
-
-signature S
-{
-  char * f (void);
-  char * g (int);
-};
-
-int main (void)
-{
-  C * p = new D;
-  S * q = p;
-
-  printf ("%s%s\n", q->f (), q->g (0));
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig20.C b/gcc/testsuite/g++.old-deja/g++.gb/sig20.C
deleted file mode 100644 (file)
index a8228de..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr initialization virtual
-// Test initialization of signature pointer with object from virtual class.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  virtual char * f (void) { return "FA"; }
-  virtual char * g (int)  { return "IL"; }
-};
-
-class D : public C
-{
-public:
-  char * f (void) { return "PA"; }
-  char * g (int)  { return "SS"; }
-};
-
-signature S
-{
-  char * f (void);
-  char * g (int);
-};
-
-int main (void)
-{
-  C * p = new D;
-  S * q = p;
-
-  printf ("%s%s\n", q->f (), q->g (0));
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig21.C b/gcc/testsuite/g++.old-deja/g++.gb/sig21.C
deleted file mode 100644 (file)
index faad45b..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr assignment virtual
-// Test assignment of objects of different types to same signature pointer.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  virtual char * f (void) = 0;
-};
-
-class D : public C
-{
-public:
-  char * f (void) { return "P"; }
-};
-
-class E
-{
-public:
-  char * f (void) { return "AS"; }
-};
-
-class F : public C
-{
-public:
-  char * f (void) { return "S"; }
-};
-
-signature S
-{
-  char * f (void);
-};
-
-int main (void)
-{
-  E a;
-  C * p = new D;
-  S * q;
-
-  q = p;
-  printf ("%s", q->f ());
-
-  q = &a;
-  printf ("%s", q->f ());
-
-  p = new F;
-  q = p;
-  printf ("%s\n", q->f ());
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig22.C b/gcc/testsuite/g++.old-deja/g++.gb/sig22.C
deleted file mode 100644 (file)
index 25b0a1a..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr assignment initialization
-// Test assignment to/init of sigptr that requires copying sigtable slots.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  int f (void) { return 1; }
-  int g (int)  { return 2; }
-  int h (void) { return 666; }
-};
-
-signature S
-{
-  int f (void);
-  int g (int);
-  int h (void);
-};
-
-signature T
-{
-  int f (void);
-  int h (void);
-};
-
-signature U
-{
-  int h (void);
-  int g (int);
-};
-
-C a;
-S * p  = &a;
-T * q1 = p;
-U * r1 = p;
-
-int main (void)
-{
-  C a;
-  S * p  = &a;
-  T * q2 = p;
-  U * r2 = p;;
-  T * q3;
-  U * r3;
-
-  q3 = p;
-  r3 = p;
-
-  if (q1->f () + q2->f () + q3->f () == 3
-      && r1->g (0) + r2->g (0) + r3->g (0) == 6)
-    printf ("PASS\n");
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig23.C b/gcc/testsuite/g++.old-deja/g++.gb/sig23.C
deleted file mode 100644 (file)
index 767cfa3..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr assignment local-signature
-// Test assignment to signature pointer of local signature.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-char * PA (void)
-{
-  class C
-  {
-  public:
-    char * f (void) { return "PA"; }
-  };
-
-  signature S
-  {
-    char * f (void);
-  };
-
-  C a;
-  S * p = &a;
-
-  return p->f ();
-}
-
-char * SS (void)
-{
-  class C
-  {
-  public:
-    char * f (void) { return "SS"; }
-  };
-
-  signature S
-  {
-    char * f (void);
-  };
-
-  C a;
-  S * p = &a;
-
-  return p->f ();
-}
-
-int main (void)
-{
-  printf ("%s%s\n", PA (), SS ());
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig24.C b/gcc/testsuite/g++.old-deja/g++.gb/sig24.C
deleted file mode 100644 (file)
index 2dca6f9..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr opaque-type
-// Test calling member functions taking/returning opaque type through sigptr.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-signature S
-{
-  typedef t;
-  char * f (t);
-  t g (void);
-  t h (void);
-};
-
-class C
-{
-public:
-  typedef char * t;
-  char * f (t text) { return text; }
-  t g (void) { return "PA"; }
-  t h (void) { return "SS"; }
-};
-
-int main (void)
-{
-  C a;
-  S *  p = &a;
-  S::t w = p->h ();
-
-  printf ("%s%s\n", p->f (p->g ()), p->f (w));
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig25.C b/gcc/testsuite/g++.old-deja/g++.gb/sig25.C
deleted file mode 100644 (file)
index d00ef57..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr default-implementation
-// Test calling default implementation through signature pointer.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C { };
-
-class D
-{
-public:
-  char * f (void) { return "SS"; }
-};
-
-signature S
-{
-  char * f (void) { return "PA"; }
-};
-
-int main (void)
-{
-  C a;
-  D b;
-  S * p = &a;
-  S * q = &b;
-
-  printf ("%s%s\n", p->f (), q->f ());
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig26.C b/gcc/testsuite/g++.old-deja/g++.gb/sig26.C
deleted file mode 100644 (file)
index 399737b..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr default-implementation
-// Test calling default implementation through signature pointer.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C { };
-
-class D
-{
-public:
-  char * f (void) { return "SS"; }
-};
-
-signature S
-{
-  char * f (void) { return "PA"; }
-  char * g (void) { return f (); }
-};
-
-int main (void)
-{
-  C a;
-  D b;
-  S * p = &a;
-  S * q = &b;
-
-  printf ("%s%s\n", p->g (), q->g ());
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig27.C b/gcc/testsuite/g++.old-deja/g++.gb/sig27.C
deleted file mode 100644 (file)
index 7b9e7d2..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr multiple-inheritance
-// Test class defined by multiple inheritance as implementation of signature.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  char * f (void) { return "PA"; }
-};
-
-class D
-{
-public:
-  char * g (void) { return "SS"; }
-};
-
-class E : public C, public D { };
-
-signature S
-{
-  char * f (void);
-  char * g (void);
-};
-
-int main (void)
-{
-  E a;
-  S * p = &a;
-
-  printf ("%s%s\n", p->f (), p->g ());
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig28.C b/gcc/testsuite/g++.old-deja/g++.gb/sig28.C
deleted file mode 100644 (file)
index 4edff68..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr multiple-inheritance
-// Test correct adjustment of `this' pointer in case of multiple inheritance.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-  char * text;
-public:
-  C () { text = "PA"; }
-  char * f (void) { return text; }
-};
-
-class D
-{
-  char * text;
-public:
-  D () { text = "SS"; }
-  char * g (void) { return text; }
-};
-
-class E : public C, public D
-{
-public:
-  E () : C (), D () { }
-};
-
-signature S
-{
-  char * f (void);
-  char * g (void);
-};
-
-int main (void)
-{
-  E a;
-  S * p = &a;
-
-  printf ("%s%s\n", p->f (), p->g ());
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig29.C b/gcc/testsuite/g++.old-deja/g++.gb/sig29.C
deleted file mode 100644 (file)
index e5c5e39..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr multiple-inheritance
-// Test calling virtual function from MI class through signature pointer.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-  char * text;
-public:
-  C () { text = "PA"; }
-  virtual char * f (void) { return text; }
-};
-
-class D
-{
-  char * text;
-public:
-  D () { text = "SS"; }
-  virtual char * g (void) { return text; }
-};
-
-class E : public C, public D
-{
-public:
-  E () : C (), D () { }
-};
-
-signature S
-{
-  char * f (void);
-  char * g (void);
-};
-
-int main (void) 
-{ 
-  E a;
-  S * p = &a;
-
-  printf ("%s%s\n", p->f (), p->g ());
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig30.C b/gcc/testsuite/g++.old-deja/g++.gb/sig30.C
deleted file mode 100644 (file)
index 3e93e11..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr multiple-inheritance
-// Test calling overwritten virtual functions through signature pointer.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  char * text1;
-  C () { text1 = "PA"; }
-  virtual char * f (void) = 0;
-};
-
-class D
-{
-public:
-  char * text2;
-  D () { text2 = "SS"; }
-  virtual char * g (void) = 0;
-};
-
-class E : public C, public D
-{
-public:
-  E () : C (), D () { };
-  char * f (void) { return text1; }
-  char * g (void) { return text2; }
-};
-
-signature S
-{
-  char * f (void);
-  char * g (void);
-};
-
-int main (void)
-{
-  E a;
-  S * p = &a;
-
-  printf ("%s%s\n", p->f (), p->g ());
-
-  return 0;
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.gb/sig31.C b/gcc/testsuite/g++.old-deja/g++.gb/sig31.C
deleted file mode 100644 (file)
index 90fa9e9..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-// Special g++ Options: -fhandle-signatures
-// GROUPS passed gb sigptr assignment sigsigtable
-// Test use of multiple signature-signature tables for same signature pair.
-
-extern "C"
-{
-  int printf (char *, ...);
-}
-
-class C
-{
-public:
-  virtual int f (void) { return 1; }
-  int g (int)          { return 2; }
-};
-
-class D : public C
-{
-public:
-  int f (void) { return 3; }
-  int g (int)  { return 4; }
-};
-
-signature S
-{
-  int f (void);
-  int g (int);
-};
-
-signature T
-{
-  int g (int);
-  int f (void);
-};
-
-int main (void)
-{
-  S * p = new C;
-  T * q = p;
-  T * r;
-
-  p = new D;
-  r = p;
-
-  if (q->f () == 1 && q->g (0) == 2
-      && r->f () == 3 && r->g (0) == 4)
-    printf ("PASS\n");
-  else
-    printf ("FAIL\n");
-
-  return 0;
-}
This page took 0.455853 seconds and 5 git commands to generate.