Index: /devel/C/pbs_2.1.py
===================================================================
--- /devel/C/pbs_2.1.py	(revision 317)
+++ /devel/C/pbs_2.1.py	(revision 318)
@@ -1,8 +1,9 @@
 # This file was automatically generated by SWIG (http://www.swig.org).
-# Version 1.3.40
+# Version 2.0.7
 #
 # Do not make changes to this file unless you know what you are doing--modify
 # the SWIG interface file instead.
-# This file is compatible with both classic and new-style classes.
+
+
 
 from sys import version_info
@@ -40,5 +41,5 @@
     method = class_type.__swig_setmethods__.get(name,None)
     if method: return method(self,value)
-    if (not static) or hasattr(self,name):
+    if (not static):
         self.__dict__[name] = value
     else:
@@ -102,4 +103,5 @@
 ATTR_v = _pbs.ATTR_v
 ATTR_A = _pbs.ATTR_A
+ATTR_args = _pbs.ATTR_args
 ATTR_M = _pbs.ATTR_M
 ATTR_N = _pbs.ATTR_N
@@ -110,4 +112,6 @@
 ATTR_stageout = _pbs.ATTR_stageout
 ATTR_jobtype = _pbs.ATTR_jobtype
+ATTR_submit_host = _pbs.ATTR_submit_host
+ATTR_init_work_dir = _pbs.ATTR_init_work_dir
 ATTR_ctime = _pbs.ATTR_ctime
 ATTR_exechost = _pbs.ATTR_exechost
@@ -152,4 +156,7 @@
 ATTR_reported = _pbs.ATTR_reported
 ATTR_intcmd = _pbs.ATTR_intcmd
+ATTR_P = _pbs.ATTR_P
+ATTR_exec_gpus = _pbs.ATTR_exec_gpus
+ATTR_J = _pbs.ATTR_J
 ATTR_aclgren = _pbs.ATTR_aclgren
 ATTR_aclgroup = _pbs.ATTR_aclgroup
@@ -160,4 +167,5 @@
 ATTR_altrouter = _pbs.ATTR_altrouter
 ATTR_checkpoint_min = _pbs.ATTR_checkpoint_min
+ATTR_checkpoint_defaults = _pbs.ATTR_checkpoint_defaults
 ATTR_enable = _pbs.ATTR_enable
 ATTR_fromroute = _pbs.ATTR_fromroute
@@ -242,5 +250,17 @@
 ATTR_LockfileCheckTime = _pbs.ATTR_LockfileCheckTime
 ATTR_npdefault = _pbs.ATTR_npdefault
+ATTR_clonebatchsize = _pbs.ATTR_clonebatchsize
+ATTR_clonebatchdelay = _pbs.ATTR_clonebatchdelay
 ATTR_jobstarttimeout = _pbs.ATTR_jobstarttimeout
+ATTR_jobforcecanceltime = _pbs.ATTR_jobforcecanceltime
+ATTR_maxarraysize = _pbs.ATTR_maxarraysize
+ATTR_maxslotlimit = _pbs.ATTR_maxslotlimit
+ATTR_recordjobinfo = _pbs.ATTR_recordjobinfo
+ATTR_recordjobscript = _pbs.ATTR_recordjobscript
+ATTR_joblogfilemaxsize = _pbs.ATTR_joblogfilemaxsize
+ATTR_joblogfilerolldepth = _pbs.ATTR_joblogfilerolldepth
+ATTR_joblogkeepdays = _pbs.ATTR_joblogkeepdays
+ATTR_moabarraycompatible = _pbs.ATTR_moabarraycompatible
+ATTR_nomailforce = _pbs.ATTR_nomailforce
 ATTR_NODE_state = _pbs.ATTR_NODE_state
 ATTR_NODE_np = _pbs.ATTR_NODE_np
@@ -250,4 +270,6 @@
 ATTR_NODE_status = _pbs.ATTR_NODE_status
 ATTR_NODE_note = _pbs.ATTR_NODE_note
+ATTR_NODE_gpus = _pbs.ATTR_NODE_gpus
+ATTR_NODE_gpustatus = _pbs.ATTR_NODE_gpustatus
 ATTR_mailsubjectfmt = _pbs.ATTR_mailsubjectfmt
 ATTR_mailbodyfmt = _pbs.ATTR_mailbodyfmt
@@ -257,6 +279,8 @@
 NO_KEEP = _pbs.NO_KEEP
 MAIL_AT_ABORT = _pbs.MAIL_AT_ABORT
+ARRAY_RANGE = _pbs.ARRAY_RANGE
 DELDELAY = _pbs.DELDELAY
 DELPURGE = _pbs.DELPURGE
+DELASYNC = _pbs.DELASYNC
 PURGECOMP = _pbs.PURGECOMP
 EXECQUEONLY = _pbs.EXECQUEONLY
@@ -274,4 +298,7 @@
 ND_state_unknown = _pbs.ND_state_unknown
 ND_timeshared = _pbs.ND_timeshared
+ND_active = _pbs.ND_active
+ND_all = _pbs.ND_all
+ND_up = _pbs.ND_up
 ND_cluster = _pbs.ND_cluster
 Q_DT_batch = _pbs.Q_DT_batch
@@ -310,4 +337,5 @@
 PBS_MAXUSER = _pbs.PBS_MAXUSER
 PBS_MAXGRPN = _pbs.PBS_MAXGRPN
+PBS_MAXGPUID = _pbs.PBS_MAXGPUID
 PBS_MAXQUEUENAME = _pbs.PBS_MAXQUEUENAME
 PBS_MAXSERVERNAME = _pbs.PBS_MAXSERVERNAME
@@ -340,4 +368,5 @@
 CHECKPOINTCONT = _pbs.CHECKPOINTCONT
 MOM_DEFAULT_CHECKPOINT_DIR = _pbs.MOM_DEFAULT_CHECKPOINT_DIR
+NO_MOM_RELAY = _pbs.NO_MOM_RELAY
 SET = _pbs.SET
 UNSET = _pbs.UNSET
@@ -352,4 +381,5 @@
 DFLT = _pbs.DFLT
 MERGE = _pbs.MERGE
+INCR_OLD = _pbs.INCR_OLD
 class attrl(_object):
     __swig_setmethods__ = {}
@@ -670,5 +700,5 @@
 FALSE = _pbs.FALSE
 #  PBS python interface
-#  Author: Bas van der Vlies <basv@sara.nl>
+#  Author: Bas van der Vlies <bas.vandervlies@surfsara.nl>
 #  Date  : 27 Feb 2002
 #  Desc. : This is python wrapper class for getting the resource
@@ -806,5 +836,6 @@
 version = 'SARA pbs_python version 4.4.0'
 
-# A useful dict with error codes to text
+## A useful dict with error codes to text
+# Author: Bas van der Vlies <bas.vandervlies@surfsara.nl>
 #
 # SVN Info:
@@ -902,4 +933,5 @@
      return (e, "Could not find a text for this error, uhhh")
 
+# This file is compatible with both classic and new-style classes.
 
 cvar = _pbs.cvar
Index: /devel/C/pbs_2.4.py
===================================================================
--- /devel/C/pbs_2.4.py	(revision 317)
+++ /devel/C/pbs_2.4.py	(revision 318)
@@ -1,8 +1,9 @@
 # This file was automatically generated by SWIG (http://www.swig.org).
-# Version 1.3.40
+# Version 2.0.7
 #
 # Do not make changes to this file unless you know what you are doing--modify
 # the SWIG interface file instead.
-# This file is compatible with both classic and new-style classes.
+
+
 
 from sys import version_info
@@ -40,5 +41,5 @@
     method = class_type.__swig_setmethods__.get(name,None)
     if method: return method(self,value)
-    if (not static) or hasattr(self,name):
+    if (not static):
         self.__dict__[name] = value
     else:
@@ -102,4 +103,5 @@
 ATTR_v = _pbs.ATTR_v
 ATTR_A = _pbs.ATTR_A
+ATTR_args = _pbs.ATTR_args
 ATTR_M = _pbs.ATTR_M
 ATTR_N = _pbs.ATTR_N
@@ -110,4 +112,6 @@
 ATTR_stageout = _pbs.ATTR_stageout
 ATTR_jobtype = _pbs.ATTR_jobtype
+ATTR_submit_host = _pbs.ATTR_submit_host
+ATTR_init_work_dir = _pbs.ATTR_init_work_dir
 ATTR_ctime = _pbs.ATTR_ctime
 ATTR_exechost = _pbs.ATTR_exechost
@@ -152,4 +156,7 @@
 ATTR_reported = _pbs.ATTR_reported
 ATTR_intcmd = _pbs.ATTR_intcmd
+ATTR_P = _pbs.ATTR_P
+ATTR_exec_gpus = _pbs.ATTR_exec_gpus
+ATTR_J = _pbs.ATTR_J
 ATTR_aclgren = _pbs.ATTR_aclgren
 ATTR_aclgroup = _pbs.ATTR_aclgroup
@@ -160,4 +167,5 @@
 ATTR_altrouter = _pbs.ATTR_altrouter
 ATTR_checkpoint_min = _pbs.ATTR_checkpoint_min
+ATTR_checkpoint_defaults = _pbs.ATTR_checkpoint_defaults
 ATTR_enable = _pbs.ATTR_enable
 ATTR_fromroute = _pbs.ATTR_fromroute
@@ -242,5 +250,17 @@
 ATTR_LockfileCheckTime = _pbs.ATTR_LockfileCheckTime
 ATTR_npdefault = _pbs.ATTR_npdefault
+ATTR_clonebatchsize = _pbs.ATTR_clonebatchsize
+ATTR_clonebatchdelay = _pbs.ATTR_clonebatchdelay
 ATTR_jobstarttimeout = _pbs.ATTR_jobstarttimeout
+ATTR_jobforcecanceltime = _pbs.ATTR_jobforcecanceltime
+ATTR_maxarraysize = _pbs.ATTR_maxarraysize
+ATTR_maxslotlimit = _pbs.ATTR_maxslotlimit
+ATTR_recordjobinfo = _pbs.ATTR_recordjobinfo
+ATTR_recordjobscript = _pbs.ATTR_recordjobscript
+ATTR_joblogfilemaxsize = _pbs.ATTR_joblogfilemaxsize
+ATTR_joblogfilerolldepth = _pbs.ATTR_joblogfilerolldepth
+ATTR_joblogkeepdays = _pbs.ATTR_joblogkeepdays
+ATTR_moabarraycompatible = _pbs.ATTR_moabarraycompatible
+ATTR_nomailforce = _pbs.ATTR_nomailforce
 ATTR_NODE_state = _pbs.ATTR_NODE_state
 ATTR_NODE_np = _pbs.ATTR_NODE_np
@@ -250,4 +270,6 @@
 ATTR_NODE_status = _pbs.ATTR_NODE_status
 ATTR_NODE_note = _pbs.ATTR_NODE_note
+ATTR_NODE_gpus = _pbs.ATTR_NODE_gpus
+ATTR_NODE_gpustatus = _pbs.ATTR_NODE_gpustatus
 ATTR_mailsubjectfmt = _pbs.ATTR_mailsubjectfmt
 ATTR_mailbodyfmt = _pbs.ATTR_mailbodyfmt
@@ -257,6 +279,8 @@
 NO_KEEP = _pbs.NO_KEEP
 MAIL_AT_ABORT = _pbs.MAIL_AT_ABORT
+ARRAY_RANGE = _pbs.ARRAY_RANGE
 DELDELAY = _pbs.DELDELAY
 DELPURGE = _pbs.DELPURGE
+DELASYNC = _pbs.DELASYNC
 PURGECOMP = _pbs.PURGECOMP
 EXECQUEONLY = _pbs.EXECQUEONLY
@@ -274,4 +298,7 @@
 ND_state_unknown = _pbs.ND_state_unknown
 ND_timeshared = _pbs.ND_timeshared
+ND_active = _pbs.ND_active
+ND_all = _pbs.ND_all
+ND_up = _pbs.ND_up
 ND_cluster = _pbs.ND_cluster
 Q_DT_batch = _pbs.Q_DT_batch
@@ -310,4 +337,5 @@
 PBS_MAXUSER = _pbs.PBS_MAXUSER
 PBS_MAXGRPN = _pbs.PBS_MAXGRPN
+PBS_MAXGPUID = _pbs.PBS_MAXGPUID
 PBS_MAXQUEUENAME = _pbs.PBS_MAXQUEUENAME
 PBS_MAXSERVERNAME = _pbs.PBS_MAXSERVERNAME
@@ -340,4 +368,5 @@
 CHECKPOINTCONT = _pbs.CHECKPOINTCONT
 MOM_DEFAULT_CHECKPOINT_DIR = _pbs.MOM_DEFAULT_CHECKPOINT_DIR
+NO_MOM_RELAY = _pbs.NO_MOM_RELAY
 SET = _pbs.SET
 UNSET = _pbs.UNSET
@@ -352,4 +381,5 @@
 DFLT = _pbs.DFLT
 MERGE = _pbs.MERGE
+INCR_OLD = _pbs.INCR_OLD
 class attrl(_object):
     __swig_setmethods__ = {}
@@ -702,5 +732,5 @@
 FALSE = _pbs.FALSE
 #  PBS python interface
-#  Author: Bas van der Vlies <basv@sara.nl>
+#  Author: Bas van der Vlies <bas.vandervlies@surfsara.nl>
 #  Date  : 27 Feb 2002
 #  Desc. : This is python wrapper class for getting the resource
@@ -838,5 +868,6 @@
 version = 'SARA pbs_python version 4.4.0'
 
-# A useful dict with error codes to text
+## A useful dict with error codes to text
+# Author: Bas van der Vlies <bas.vandervlies@surfsara.nl>
 #
 # SVN Info:
@@ -934,4 +965,5 @@
      return (e, "Could not find a text for this error, uhhh")
 
+# This file is compatible with both classic and new-style classes.
 
 cvar = _pbs.cvar
Index: /devel/C/pbs_ifl.h
===================================================================
--- /devel/C/pbs_ifl.h	(revision 317)
+++ /devel/C/pbs_ifl.h	(revision 318)
@@ -91,4 +91,5 @@
 #define ATTR_v "Variable_List"
 #define ATTR_A "Account_Name"
+#define ATTR_args "job_arguments"
 #define ATTR_M "Mail_Users"
 #define ATTR_N "Job_Name"
@@ -99,4 +100,6 @@
 #define ATTR_stageout "stageout"
 #define ATTR_jobtype  "jobtype"
+#define ATTR_submit_host "submit_host"
+#define ATTR_init_work_dir "init_work_dir"
 
 /* additional job and general attribute names */
@@ -144,8 +147,16 @@
 #define ATTR_reported    "reported"
 #define ATTR_intcmd      "inter_cmd"
+#define ATTR_P           "proxy_user"
+#define ATTR_exec_gpus   "exec_gpus"
+#define ATTR_J           "job_id"
 
 #ifdef USEJOBCREATE
 #define ATTR_pagg         "pagg_id"
 #endif /* USEJOBCREATE */
+
+#ifdef NVIDIA_GPUS
+  /* JOB_ATR_gpu_flags */
+#define ATTR_gpu_flags         "gpu_flags"
+#endif  /* NVIDIA_GPUS */
 
 /* additional queue attributes names */
@@ -159,4 +170,5 @@
 #define ATTR_altrouter  "alt_router"
 #define ATTR_checkpoint_min  "checkpoint_min"
+#define ATTR_checkpoint_defaults  "checkpoint_defaults"
 #define ATTR_enable     "enabled"
 #define ATTR_fromroute  "from_route_only"
@@ -253,5 +265,20 @@
 #define ATTR_LockfileCheckTime "lock_file_check_time"
 #define ATTR_npdefault  "np_default"
+#define ATTR_clonebatchsize "clone_batch_size"
+#define ATTR_clonebatchdelay "clone_batch_delay"
 #define ATTR_jobstarttimeout "job_start_timeout"
+#define ATTR_jobforcecanceltime "job_force_cancel_time"
+#define ATTR_maxarraysize    "max_job_array_size"
+#define ATTR_maxslotlimit    "max_slot_limit"
+#define ATTR_recordjobinfo   "record_job_info"
+#define ATTR_recordjobscript   "record_job_script"
+#define ATTR_joblogfilemaxsize "job_log_file_max_size"
+#define ATTR_joblogfilerolldepth "job_log_file_roll_depth"
+#define ATTR_joblogkeepdays  "job_log_keep_days"
+#ifdef MUNGE_AUTH
+  #define ATTR_authusers       "authorized_users"
+#endif
+#define ATTR_moabarraycompatible "moab_array_compatible"
+#define ATTR_nomailforce       "no_mail_force"
 
 /* additional node "attributes" names */
@@ -264,4 +291,6 @@
 #define ATTR_NODE_status        "status"
 #define ATTR_NODE_note          "note"
+#define ATTR_NODE_gpus           "gpus"
+#define ATTR_NODE_gpustatus      "gpu_status"
 
 /* notification email formating */
@@ -278,27 +307,39 @@
 #define MAIL_AT_ABORT "a"
 
-
-#define DELDELAY  "deldelay=" /* see qdel.c */
-#define DELPURGE  "delpurge="   /* see qdel.c */
-#define PURGECOMP  "purgecomplete="   /* see req_delete.c */
-#define EXECQUEONLY  "exec_queue_only"   /* see req_stat.c */
+#define ARRAY_RANGE "array_range="      /* see qdel.c */
+#define DELDELAY  "deldelay="           /* see qdel.c */
+#define DELPURGE  "delpurge="           /* see qdel.c */
+#define DELASYNC  "delasync"            /* see qdel.c */
+#define PURGECOMP  "purgecomplete="     /* see req_delete.c */
+#define EXECQUEONLY  "exec_queue_only"  /* see req_stat.c */
+
 #define RERUNFORCE "force"
 
-#define USER_HOLD "u"
-#define OTHER_HOLD "o"
+#define USER_HOLD   "u"
+#define OTHER_HOLD  "o"
 #define SYSTEM_HOLD "s"
 
 /* node-attribute values (state,ntype) */
 
-#define ND_free   "free"
-#define ND_offline  "offline"
-#define ND_down   "down"
-#define ND_reserve  "reserve"
+#define ND_free          "free"
+#define ND_offline       "offline"
+#define ND_down          "down"
+#define ND_reserve       "reserve"
 #define ND_job_exclusive "job-exclusive"
-#define ND_job_sharing  "job-sharing"
-#define ND_busy   "busy"
+#define ND_job_sharing   "job-sharing"
+#define ND_busy          "busy"
 #define ND_state_unknown "state-unknown"
-#define ND_timeshared  "time-shared"
-#define ND_cluster  "cluster"
+#define ND_timeshared    "time-shared"
+
+/* these are not state values, they describe states and are used in pbsnodes */
+/* active = job-exclusive, job-sharing, or busy */
+#define ND_active        "active"
+/* all = all */
+#define ND_all           "all"
+/* up = job-execlusive, job-sharing, reserve, free, busy and time-shared */
+#define ND_up            "up"
+
+/* this specifies the type of node */
+#define ND_cluster "cluster"
 
 /* queue disallowed types */
@@ -360,7 +401,8 @@
 #define PBS_MAXUSER  32 /* max user name length */
 #define PBS_MAXGRPN  16 /* max group name length */
+#define PBS_MAXGPUID 16 /* max gpu id length */
 #define PBS_MAXQUEUENAME 15 /* max queue name length */
 #define PBS_MAXSERVERNAME PBS_MAXHOSTNAME /* max server name length */
-#define PBS_MAXJOBARRAYLEN      6       /* number of characters allowed in jobarray portion of job id, including '-' */
+#define PBS_MAXJOBARRAYLEN      7      /* number of characters allowed in jobarray portion of job id, including '[]' */ 
 #define PBS_MAXSEQNUM  8 /* max sequence number length */
 #define PBS_MAXPORTNUM  5 /* udp/tcp port numbers max=16 bits */
@@ -380,5 +422,5 @@
    which is added to the last version encoded that way */
 #define PBS_QS_VERSION_BASE 0x00020300 /* magic number do not change */
-#define PBS_QS_VERSION_INT 1 /* increment this version number with every change to the ji_qs struct */
+#define PBS_QS_VERSION_INT 2 /* increment this version number with every change to the ji_qs struct */
 #define PBS_QS_VERSION  (PBS_QS_VERSION_BASE + PBS_QS_VERSION_INT) /* version number saved in the ji_qs struct */
 
@@ -423,6 +465,7 @@
 #define MOM_DEFAULT_CHECKPOINT_DIR "$MOMDEFAULTCHECKPOINTDIR$"
 
-
-enum batch_op { SET, UNSET, INCR, DECR, EQ, NE, GE, GT, LE, LT, DFLT, MERGE };
+#define NO_MOM_RELAY 1
+
+enum batch_op { SET, UNSET, INCR, DECR, EQ, NE, GE, GT, LE, LT, DFLT, MERGE, INCR_OLD };
 
 /*
Index: /devel/C/pbs_wrap_2.1.c
===================================================================
--- /devel/C/pbs_wrap_2.1.c	(revision 317)
+++ /devel/C/pbs_wrap_2.1.c	(revision 318)
@@ -1,5 +1,5 @@
 /* ----------------------------------------------------------------------------
  * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 1.3.40
+ * Version 2.0.7
  * 
  * This file is not intended to be easily readable and contains a number of 
@@ -178,5 +178,5 @@
    Flags/methods for returning states.
    
-   The SWIG conversion methods, as ConvertPtr, return and integer 
+   The SWIG conversion methods, as ConvertPtr, return an integer 
    that tells if the conversion was successful or not. And if not,
    an error code can be returned (see swigerrors.swg for the codes).
@@ -733,5 +733,14 @@
 #define PyInt_AsLong(x) PyLong_AsLong(x)
 #define PyInt_FromLong(x) PyLong_FromLong(x)
+#define PyInt_FromSize_t(x) PyLong_FromSize_t(x)
+#define PyString_Check(name) PyBytes_Check(name)
+#define PyString_FromString(x) PyUnicode_FromString(x)
 #define PyString_Format(fmt, args)  PyUnicode_Format(fmt, args)
+#define PyString_AsString(str) PyBytes_AsString(str)
+#define PyString_Size(str) PyBytes_Size(str)	
+#define PyString_InternFromString(key) PyUnicode_InternFromString(key)
+#define Py_TPFLAGS_HAVE_CLASS Py_TPFLAGS_BASETYPE
+#define PyString_AS_STRING(x) PyUnicode_AS_STRING(x)
+#define _PyLong_FromSsize_t(x) PyLong_FromSsize_t(x)
 
 #endif
@@ -873,4 +882,61 @@
 # define PY_SSIZE_T_MAX INT_MAX
 # define PY_SSIZE_T_MIN INT_MIN
+typedef inquiry lenfunc;
+typedef intargfunc ssizeargfunc;
+typedef intintargfunc ssizessizeargfunc;
+typedef intobjargproc ssizeobjargproc;
+typedef intintobjargproc ssizessizeobjargproc;
+typedef getreadbufferproc readbufferproc;
+typedef getwritebufferproc writebufferproc;
+typedef getsegcountproc segcountproc;
+typedef getcharbufferproc charbufferproc;
+static long PyNumber_AsSsize_t (PyObject *x, void *SWIGUNUSEDPARM(exc))
+{
+  long result = 0;
+  PyObject *i = PyNumber_Int(x);
+  if (i) {
+    result = PyInt_AsLong(i);
+    Py_DECREF(i);
+  }
+  return result;
+}
+#endif
+
+#if PY_VERSION_HEX < 0x02040000
+#define Py_VISIT(op)				\
+  do { 						\
+    if (op) {					\
+      int vret = visit((op), arg);		\
+      if (vret)					\
+        return vret;				\
+    }						\
+  } while (0)
+#endif
+
+#if PY_VERSION_HEX < 0x02030000
+typedef struct {
+  PyTypeObject type;
+  PyNumberMethods as_number;
+  PyMappingMethods as_mapping;
+  PySequenceMethods as_sequence;
+  PyBufferProcs as_buffer;
+  PyObject *name, *slots;
+} PyHeapTypeObject;
+#endif
+
+#if PY_VERSION_HEX < 0x02030000
+typedef destructor freefunc;
+#endif
+
+#if ((PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 6) || \
+     (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION > 0) || \
+     (PY_MAJOR_VERSION > 3))
+# define SWIGPY_USE_CAPSULE
+# define SWIGPY_CAPSULE_NAME ((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME)
+#endif
+
+#if PY_VERSION_HEX < 0x03020000
+#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
+#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
 #endif
 
@@ -1019,7 +1085,4 @@
 #ifdef __cplusplus
 extern "C" {
-#if 0
-} /* cc-mode */
-#endif
 #endif
 
@@ -1047,17 +1110,17 @@
  * It is exported to the generated module, used for -fastproxy
  * ----------------------------------------------------------------------------- */
-SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *self, PyObject *func)
+#if PY_VERSION_HEX >= 0x03000000
+SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func)
 {
-#if PY_VERSION_HEX >= 0x03000000
   return PyInstanceMethod_New(func);
+}
 #else
-  return NULL;
-#endif
-}
+SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *SWIGUNUSEDPARM(func))
+{
+  return NULL;
+}
+#endif
 
 #ifdef __cplusplus
-#if 0
-{ /* cc-mode */
-#endif
 }
 #endif
@@ -1065,7 +1128,4 @@
 
 /* -----------------------------------------------------------------------------
- * See the LICENSE file for information on copyright, usage and redistribution
- * of SWIG, and the README file for authors - http://www.swig.org/release.html.
- *
  * pyrun.swg
  *
@@ -1082,5 +1142,13 @@
 #define SWIG_ConvertPtr(obj, pptr, type, flags)         SWIG_Python_ConvertPtr(obj, pptr, type, flags)
 #define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own)  SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own)
-#define SWIG_NewPointerObj(ptr, type, flags)            SWIG_Python_NewPointerObj(ptr, type, flags)
+
+#ifdef SWIGPYTHON_BUILTIN
+#define SWIG_NewPointerObj(ptr, type, flags)            SWIG_Python_NewPointerObj(self, ptr, type, flags)
+#else
+#define SWIG_NewPointerObj(ptr, type, flags)            SWIG_Python_NewPointerObj(NULL, ptr, type, flags)
+#endif
+
+#define SWIG_InternalNewPointerObj(ptr, type, flags)	SWIG_Python_NewPointerObj(NULL, ptr, type, flags)
+
 #define SWIG_CheckImplicit(ty)                          SWIG_Python_CheckImplicit(ty) 
 #define SWIG_AcquirePtr(ptr, src)                       SWIG_Python_AcquirePtr(ptr, src)
@@ -1097,5 +1165,5 @@
 /* for C or C++ function pointers */
 #define SWIG_ConvertFunctionPtr(obj, pptr, type)        SWIG_Python_ConvertFunctionPtr(obj, pptr, type)
-#define SWIG_NewFunctionPtrObj(ptr, type)               SWIG_Python_NewPointerObj(ptr, type, 0)
+#define SWIG_NewFunctionPtrObj(ptr, type)               SWIG_Python_NewPointerObj(NULL, ptr, type, 0)
 
 /* for C++ member pointers, ie, member methods */
@@ -1132,5 +1200,5 @@
 SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) {
   SWIG_PYTHON_THREAD_BEGIN_BLOCK;
-  PyErr_SetString(errtype, (char *) msg);
+  PyErr_SetString(errtype, msg);
   SWIG_PYTHON_THREAD_END_BLOCK;
 }
@@ -1139,10 +1207,39 @@
 
 /* Set a constant value */
+
+#if defined(SWIGPYTHON_BUILTIN)
+
+SWIGINTERN void
+SwigPyBuiltin_AddPublicSymbol(PyObject *seq, const char *key) {
+  PyObject *s = PyString_InternFromString(key);
+  PyList_Append(seq, s);
+  Py_DECREF(s);
+}
+
+SWIGINTERN void
+SWIG_Python_SetConstant(PyObject *d, PyObject *public_interface, const char *name, PyObject *obj) {   
+#if PY_VERSION_HEX < 0x02030000
+  PyDict_SetItemString(d, (char *)name, obj);
+#else
+  PyDict_SetItemString(d, name, obj);
+#endif
+  Py_DECREF(obj);
+  if (public_interface)
+    SwigPyBuiltin_AddPublicSymbol(public_interface, name);
+}
+
+#else
 
 SWIGINTERN void
 SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) {   
-  PyDict_SetItemString(d, (char*) name, obj);
+#if PY_VERSION_HEX < 0x02030000
+  PyDict_SetItemString(d, (char *)name, obj);
+#else
+  PyDict_SetItemString(d, name, obj);
+#endif
   Py_DECREF(obj);                            
 }
+
+#endif
 
 /* Append a value to the result obj */
@@ -1206,4 +1303,12 @@
   }  
   if (!PyTuple_Check(args)) {
+    if (min <= 1 && max >= 1) {
+      register int i;
+      objs[0] = args;
+      for (i = 1; i < max; ++i) {
+	objs[i] = 0;
+      }
+      return 2;
+    }
     PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple");
     return 0;
@@ -1258,9 +1363,9 @@
 #define SWIG_POINTER_IMPLICIT_CONV  (SWIG_POINTER_DISOWN   << 1)
 
+#define SWIG_BUILTIN_TP_INIT	    (SWIG_POINTER_OWN << 2)
+#define SWIG_BUILTIN_INIT	    (SWIG_BUILTIN_TP_INIT | SWIG_POINTER_OWN)
+
 #ifdef __cplusplus
 extern "C" {
-#if 0
-} /* cc-mode */
-#endif
 #endif
 
@@ -1313,4 +1418,5 @@
   int delargs;
   int implicitconv;
+  PyTypeObject *pytype;
 } SwigPyClientData;
 
@@ -1379,4 +1485,5 @@
     }
     data->implicitconv = 0;
+    data->pytype = 0;
     return data;
   }
@@ -1384,6 +1491,5 @@
 
 SWIGRUNTIME void 
-SwigPyClientData_Del(SwigPyClientData* data)
-{
+SwigPyClientData_Del(SwigPyClientData *data) {
   Py_XDECREF(data->newraw);
   Py_XDECREF(data->newargs);
@@ -1399,4 +1505,7 @@
   int own;
   PyObject *next;
+#ifdef SWIGPYTHON_BUILTIN
+  PyObject *dict;
+#endif
 } SwigPyObject;
 
@@ -1449,19 +1558,19 @@
 {
   const char *name = SWIG_TypePrettyName(v->ty);
-  PyObject *repr = SWIG_Python_str_FromFormat("<Swig Object of type '%s' at %p>", name, v);
+  PyObject *repr = SWIG_Python_str_FromFormat("<Swig Object of type '%s' at %p>", (name ? name : "unknown"), (void *)v);
   if (v->next) {
-#ifdef METH_NOARGS
+# ifdef METH_NOARGS
     PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next);
-#else
+# else
     PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next, args);
-#endif
-#if PY_VERSION_HEX >= 0x03000000
+# endif
+# if PY_VERSION_HEX >= 0x03000000
     PyObject *joined = PyUnicode_Concat(repr, nrep);
     Py_DecRef(repr);
     Py_DecRef(nrep);
     repr = joined;
-#else
+# else
     PyString_ConcatAndDel(&repr,nrep);
-#endif
+# endif
   }
   return repr;  
@@ -1513,25 +1622,41 @@
     return Py_NotImplemented;
   }
-  if( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) )
-    res = Py_True;
-  else
-    res = Py_False;
-  Py_INCREF(res);
+  res = PyBool_FromLong( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) ? 1 : 0);
   return res;  
 }
 
 
-SWIGRUNTIME PyTypeObject* _PySwigObject_type(void);
-
+SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void);
+
+#ifdef SWIGPYTHON_BUILTIN
+static swig_type_info *SwigPyObject_stype = 0;
 SWIGRUNTIME PyTypeObject*
 SwigPyObject_type(void) {
-  static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigObject_type();
+    SwigPyClientData *cd;
+    assert(SwigPyObject_stype);
+    cd = (SwigPyClientData*) SwigPyObject_stype->clientdata;
+    assert(cd);
+    assert(cd->pytype);
+    return cd->pytype;
+}
+#else
+SWIGRUNTIME PyTypeObject*
+SwigPyObject_type(void) {
+  static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyObject_TypeOnce();
   return type;
 }
+#endif
 
 SWIGRUNTIMEINLINE int
 SwigPyObject_Check(PyObject *op) {
+#ifdef SWIGPYTHON_BUILTIN
+  PyTypeObject *target_tp = SwigPyObject_type();
+  if (PyType_IsSubtype(op->ob_type, target_tp))
+    return 1;
+  return (strcmp(op->ob_type->tp_name, "SwigPyObject") == 0);
+#else
   return (Py_TYPE(op) == SwigPyObject_type())
     || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0);
+#endif
 }
 
@@ -1637,6 +1762,8 @@
 #if (PY_VERSION_HEX < 0x02020000)
   if (!PyArg_ParseTuple(args,(char *)"|O:own",&val))
+#elif (PY_VERSION_HEX < 0x02050000)
+  if (!PyArg_UnpackTuple(args, (char *)"own", 0, 1, &val)) 
 #else
-  if (!PyArg_UnpackTuple(args, (char *)"own", 0, 1, &val)) 
+  if (!PyArg_UnpackTuple(args, "own", 0, 1, &val)) 
 #endif
     {
@@ -1699,7 +1826,7 @@
 
 SWIGRUNTIME PyTypeObject*
-_PySwigObject_type(void) {
+SwigPyObject_TypeOnce(void) {
   static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer";
-  
+
   static PyNumberMethods SwigPyObject_as_number = {
     (binaryfunc)0, /*nb_add*/
@@ -1748,83 +1875,87 @@
   };
 
-  static PyTypeObject swigpyobject_type;  
+  static PyTypeObject swigpyobject_type;
   static int type_init = 0;
   if (!type_init) {
-    const PyTypeObject tmp
-      = {
-	/* PyObject header changed in Python 3 */
+    const PyTypeObject tmp = {
+      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX >= 0x03000000
-	PyVarObject_HEAD_INIT(&PyType_Type, 0)
-#else    
-	PyObject_HEAD_INIT(NULL)
-	0,				    /* ob_size */
-#endif
-	(char *)"SwigPyObject",		    /* tp_name */
-	sizeof(SwigPyObject),		    /* tp_basicsize */
-	0,			            /* tp_itemsize */
-	(destructor)SwigPyObject_dealloc,   /* tp_dealloc */
-	(printfunc)SwigPyObject_print,	    /* tp_print */
+      PyVarObject_HEAD_INIT(NULL, 0)
+#else
+      PyObject_HEAD_INIT(NULL)
+      0,                                    /* ob_size */
+#endif
+      (char *)"SwigPyObject",               /* tp_name */
+      sizeof(SwigPyObject),                 /* tp_basicsize */
+      0,                                    /* tp_itemsize */
+      (destructor)SwigPyObject_dealloc,     /* tp_dealloc */
+      (printfunc)SwigPyObject_print,        /* tp_print */
 #if PY_VERSION_HEX < 0x02020000
-	(getattrfunc)SwigPyObject_getattr,  /* tp_getattr */ 
+      (getattrfunc)SwigPyObject_getattr,    /* tp_getattr */
 #else
-	(getattrfunc)0,			    /* tp_getattr */ 
-#endif
-	(setattrfunc)0,			    /* tp_setattr */ 
+      (getattrfunc)0,                       /* tp_getattr */
+#endif
+      (setattrfunc)0,                       /* tp_setattr */
 #if PY_VERSION_HEX >= 0x03000000
     0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
 #else
-	(cmpfunc)SwigPyObject_compare,	    /* tp_compare */
-#endif
-	(reprfunc)SwigPyObject_repr,	    /* tp_repr */    
-	&SwigPyObject_as_number,	    /* tp_as_number */
-	0,				    /* tp_as_sequence */
-	0,				    /* tp_as_mapping */
-	(hashfunc)0,			    /* tp_hash */
-	(ternaryfunc)0,			    /* tp_call */
-	(reprfunc)SwigPyObject_str,	    /* tp_str */
-	PyObject_GenericGetAttr,            /* tp_getattro */
-	0,				    /* tp_setattro */
-	0,		                    /* tp_as_buffer */
-	Py_TPFLAGS_DEFAULT,	            /* tp_flags */
-	swigobject_doc, 	            /* tp_doc */        
-	0,                                  /* tp_traverse */
-	0,                                  /* tp_clear */
-	(richcmpfunc)SwigPyObject_richcompare,           /* tp_richcompare */
-	0,                                  /* tp_weaklistoffset */
+      (cmpfunc)SwigPyObject_compare,        /* tp_compare */
+#endif
+      (reprfunc)SwigPyObject_repr,          /* tp_repr */
+      &SwigPyObject_as_number,              /* tp_as_number */
+      0,                                    /* tp_as_sequence */
+      0,                                    /* tp_as_mapping */
+      (hashfunc)0,                          /* tp_hash */
+      (ternaryfunc)0,                       /* tp_call */
+      (reprfunc)SwigPyObject_str,           /* tp_str */
+      PyObject_GenericGetAttr,              /* tp_getattro */
+      0,                                    /* tp_setattro */
+      0,                                    /* tp_as_buffer */
+      Py_TPFLAGS_DEFAULT,                   /* tp_flags */
+      swigobject_doc,                       /* tp_doc */
+      0,                                    /* tp_traverse */
+      0,                                    /* tp_clear */
+      (richcmpfunc)SwigPyObject_richcompare,/* tp_richcompare */
+      0,                                    /* tp_weaklistoffset */
 #if PY_VERSION_HEX >= 0x02020000
-	0,                                  /* tp_iter */
-	0,                                  /* tp_iternext */
-	swigobject_methods,		    /* tp_methods */ 
-	0,			            /* tp_members */
-	0,				    /* tp_getset */	    	
-	0,			            /* tp_base */	        
-	0,				    /* tp_dict */	    	
-	0,				    /* tp_descr_get */  	
-	0,				    /* tp_descr_set */  	
-	0,				    /* tp_dictoffset */ 	
-	0,				    /* tp_init */	    	
-	0,				    /* tp_alloc */	    	
-	0,			            /* tp_new */	    	
-	0,	                            /* tp_free */	   
-	0,                                  /* tp_is_gc */  
-	0,				    /* tp_bases */   
-	0,				    /* tp_mro */
-	0,				    /* tp_cache */   
-	0,				    /* tp_subclasses */
-	0,				    /* tp_weaklist */
+      0,                                    /* tp_iter */
+      0,                                    /* tp_iternext */
+      swigobject_methods,                   /* tp_methods */
+      0,                                    /* tp_members */
+      0,                                    /* tp_getset */
+      0,                                    /* tp_base */
+      0,                                    /* tp_dict */
+      0,                                    /* tp_descr_get */
+      0,                                    /* tp_descr_set */
+      0,                                    /* tp_dictoffset */
+      0,                                    /* tp_init */
+      0,                                    /* tp_alloc */
+      0,                                    /* tp_new */
+      0,                                    /* tp_free */
+      0,                                    /* tp_is_gc */
+      0,                                    /* tp_bases */
+      0,                                    /* tp_mro */
+      0,                                    /* tp_cache */
+      0,                                    /* tp_subclasses */
+      0,                                    /* tp_weaklist */
 #endif
 #if PY_VERSION_HEX >= 0x02030000
-	0,                                  /* tp_del */
+      0,                                    /* tp_del */
+#endif
+#if PY_VERSION_HEX >= 0x02060000
+      0,                                    /* tp_version */
 #endif
 #ifdef COUNT_ALLOCS
-	0,0,0,0                             /* tp_alloc -> tp_next */
-#endif
-      };
+      0,0,0,0                               /* tp_alloc -> tp_next */
+#endif
+    };
     swigpyobject_type = tmp;
-    /* for Python 3 we already assigned ob_type in PyVarObject_HEAD_INIT() */
-#if PY_VERSION_HEX < 0x03000000
+    type_init = 1;
+#if PY_VERSION_HEX < 0x02020000
     swigpyobject_type.ob_type = &PyType_Type;
-#endif
-    type_init = 1;
+#else
+    if (PyType_Ready(&swigpyobject_type) < 0)
+      return NULL;
+#endif
   }
   return &swigpyobject_type;
@@ -1900,9 +2031,9 @@
 }
 
-SWIGRUNTIME PyTypeObject* _PySwigPacked_type(void);
+SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void);
 
 SWIGRUNTIME PyTypeObject*
 SwigPyPacked_type(void) {
-  static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigPacked_type();
+  static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyPacked_TypeOnce();
   return type;
 }
@@ -1910,5 +2041,5 @@
 SWIGRUNTIMEINLINE int
 SwigPyPacked_Check(PyObject *op) {
-  return ((op)->ob_type == _PySwigPacked_type()) 
+  return ((op)->ob_type == SwigPyPacked_TypeOnce()) 
     || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0);
 }
@@ -1925,81 +2056,85 @@
 
 SWIGRUNTIME PyTypeObject*
-_PySwigPacked_type(void) {
+SwigPyPacked_TypeOnce(void) {
   static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer";
   static PyTypeObject swigpypacked_type;
-  static int type_init = 0;  
+  static int type_init = 0;
   if (!type_init) {
-    const PyTypeObject tmp
-      = {
-    /* PyObject header changed in Python 3 */
+    const PyTypeObject tmp = {
+      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX>=0x03000000
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
+      PyVarObject_HEAD_INIT(NULL, 0)
 #else
-	PyObject_HEAD_INIT(NULL)
-    0,				    /* ob_size */	
-#endif
-	(char *)"SwigPyPacked",		    /* tp_name */	
-	sizeof(SwigPyPacked),		    /* tp_basicsize */	
-	0,				    /* tp_itemsize */	
-	(destructor)SwigPyPacked_dealloc,   /* tp_dealloc */	
-	(printfunc)SwigPyPacked_print,	    /* tp_print */   	
-	(getattrfunc)0,			    /* tp_getattr */ 	
-	(setattrfunc)0,			    /* tp_setattr */ 	
+      PyObject_HEAD_INIT(NULL)
+      0,                                    /* ob_size */
+#endif
+      (char *)"SwigPyPacked",               /* tp_name */
+      sizeof(SwigPyPacked),                 /* tp_basicsize */
+      0,                                    /* tp_itemsize */
+      (destructor)SwigPyPacked_dealloc,     /* tp_dealloc */
+      (printfunc)SwigPyPacked_print,        /* tp_print */
+      (getattrfunc)0,                       /* tp_getattr */
+      (setattrfunc)0,                       /* tp_setattr */
 #if PY_VERSION_HEX>=0x03000000
-    0, /* tp_reserved in 3.0.1 */
+      0, /* tp_reserved in 3.0.1 */
 #else
-    (cmpfunc)SwigPyPacked_compare,	    /* tp_compare */
-#endif
-	(reprfunc)SwigPyPacked_repr,	    /* tp_repr */
-	0,	                            /* tp_as_number */
-	0,				    /* tp_as_sequence */
-	0,				    /* tp_as_mapping */
-	(hashfunc)0,			    /* tp_hash */
-	(ternaryfunc)0,			    /* tp_call */
-	(reprfunc)SwigPyPacked_str,	    /* tp_str */
-	PyObject_GenericGetAttr,            /* tp_getattro */
-	0,				    /* tp_setattro */
-	0,		                    /* tp_as_buffer */
-	Py_TPFLAGS_DEFAULT,	            /* tp_flags */
-	swigpacked_doc, 	            /* tp_doc */
-	0,                                  /* tp_traverse */
-	0,                                  /* tp_clear */
-	0,                                  /* tp_richcompare */
-	0,                                  /* tp_weaklistoffset */
+      (cmpfunc)SwigPyPacked_compare,        /* tp_compare */
+#endif
+      (reprfunc)SwigPyPacked_repr,          /* tp_repr */
+      0,                                    /* tp_as_number */
+      0,                                    /* tp_as_sequence */
+      0,                                    /* tp_as_mapping */
+      (hashfunc)0,                          /* tp_hash */
+      (ternaryfunc)0,                       /* tp_call */
+      (reprfunc)SwigPyPacked_str,           /* tp_str */
+      PyObject_GenericGetAttr,              /* tp_getattro */
+      0,                                    /* tp_setattro */
+      0,                                    /* tp_as_buffer */
+      Py_TPFLAGS_DEFAULT,                   /* tp_flags */
+      swigpacked_doc,                       /* tp_doc */
+      0,                                    /* tp_traverse */
+      0,                                    /* tp_clear */
+      0,                                    /* tp_richcompare */
+      0,                                    /* tp_weaklistoffset */
 #if PY_VERSION_HEX >= 0x02020000
-	0,                                  /* tp_iter */
-	0,                                  /* tp_iternext */
-	0,		                    /* tp_methods */ 
-	0,			            /* tp_members */
-	0,				    /* tp_getset */	    	
-	0,			            /* tp_base */	        
-	0,				    /* tp_dict */	    	
-	0,				    /* tp_descr_get */  	
-	0,				    /* tp_descr_set */  	
-	0,				    /* tp_dictoffset */ 	
-	0,				    /* tp_init */	    	
-	0,				    /* tp_alloc */	    	
-	0,			            /* tp_new */	    	
-	0, 	                            /* tp_free */	   
-        0,                                  /* tp_is_gc */  
-	0,				    /* tp_bases */   
-	0,				    /* tp_mro */
-	0,				    /* tp_cache */   
- 	0,				    /* tp_subclasses */
-	0,				    /* tp_weaklist */
+      0,                                    /* tp_iter */
+      0,                                    /* tp_iternext */
+      0,                                    /* tp_methods */
+      0,                                    /* tp_members */
+      0,                                    /* tp_getset */
+      0,                                    /* tp_base */
+      0,                                    /* tp_dict */
+      0,                                    /* tp_descr_get */
+      0,                                    /* tp_descr_set */
+      0,                                    /* tp_dictoffset */
+      0,                                    /* tp_init */
+      0,                                    /* tp_alloc */
+      0,                                    /* tp_new */
+      0,                                    /* tp_free */
+      0,                                    /* tp_is_gc */
+      0,                                    /* tp_bases */
+      0,                                    /* tp_mro */
+      0,                                    /* tp_cache */
+      0,                                    /* tp_subclasses */
+      0,                                    /* tp_weaklist */
 #endif
 #if PY_VERSION_HEX >= 0x02030000
-	0,                                  /* tp_del */
+      0,                                    /* tp_del */
+#endif
+#if PY_VERSION_HEX >= 0x02060000
+      0,                                    /* tp_version */
 #endif
 #ifdef COUNT_ALLOCS
-	0,0,0,0                             /* tp_alloc -> tp_next */
-#endif
-      };
+      0,0,0,0                               /* tp_alloc -> tp_next */
+#endif
+    };
     swigpypacked_type = tmp;
-    /* for Python 3 the ob_type already assigned in PyVarObject_HEAD_INIT() */
-#if PY_VERSION_HEX < 0x03000000
+    type_init = 1;
+#if PY_VERSION_HEX < 0x02020000
     swigpypacked_type.ob_type = &PyType_Type;
-#endif
-    type_init = 1;
+#else
+    if (PyType_Ready(&swigpypacked_type) < 0)
+      return NULL;
+#endif
   }
   return &swigpypacked_type;
@@ -2048,8 +2183,11 @@
 }
 
+static PyObject *swig_this = NULL;
+
 SWIGRUNTIME PyObject *
 SWIG_This(void)
 {
-  static PyObject *SWIG_STATIC_POINTER(swig_this) = _SWIG_This();
+  if (swig_this == NULL)
+    swig_this = _SWIG_This();
   return swig_this;
 }
@@ -2065,48 +2203,63 @@
 SWIG_Python_GetSwigThis(PyObject *pyobj) 
 {
-  if (SwigPyObject_Check(pyobj)) {
+  PyObject *obj;
+
+  if (SwigPyObject_Check(pyobj))
     return (SwigPyObject *) pyobj;
+
+#ifdef SWIGPYTHON_BUILTIN
+  (void)obj;
+# ifdef PyWeakref_CheckProxy
+  if (PyWeakref_CheckProxy(pyobj)) {
+    pyobj = PyWeakref_GET_OBJECT(pyobj);
+    if (pyobj && SwigPyObject_Check(pyobj))
+      return (SwigPyObject*) pyobj;
+  }
+# endif
+  return NULL;
+#else
+
+  obj = 0;
+
+#if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000))
+  if (PyInstance_Check(pyobj)) {
+    obj = _PyInstance_Lookup(pyobj, SWIG_This());      
   } else {
-    PyObject *obj = 0;
-#if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000))
-    if (PyInstance_Check(pyobj)) {
-      obj = _PyInstance_Lookup(pyobj, SWIG_This());      
+    PyObject **dictptr = _PyObject_GetDictPtr(pyobj);
+    if (dictptr != NULL) {
+      PyObject *dict = *dictptr;
+      obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0;
     } else {
-      PyObject **dictptr = _PyObject_GetDictPtr(pyobj);
-      if (dictptr != NULL) {
-	PyObject *dict = *dictptr;
-	obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0;
+#ifdef PyWeakref_CheckProxy
+      if (PyWeakref_CheckProxy(pyobj)) {
+	PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);
+	return wobj ? SWIG_Python_GetSwigThis(wobj) : 0;
+      }
+#endif
+      obj = PyObject_GetAttr(pyobj,SWIG_This());
+      if (obj) {
+	Py_DECREF(obj);
       } else {
-#ifdef PyWeakref_CheckProxy
-	if (PyWeakref_CheckProxy(pyobj)) {
-	  PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);
-	  return wobj ? SWIG_Python_GetSwigThis(wobj) : 0;
-	}
-#endif
-	obj = PyObject_GetAttr(pyobj,SWIG_This());
-	if (obj) {
-	  Py_DECREF(obj);
-	} else {
-	  if (PyErr_Occurred()) PyErr_Clear();
-	  return 0;
-	}
+	if (PyErr_Occurred()) PyErr_Clear();
+	return 0;
       }
     }
+  }
 #else
-    obj = PyObject_GetAttr(pyobj,SWIG_This());
-    if (obj) {
-      Py_DECREF(obj);
-    } else {
-      if (PyErr_Occurred()) PyErr_Clear();
-      return 0;
-    }
-#endif
-    if (obj && !SwigPyObject_Check(obj)) {
-      /* a PyObject is called 'this', try to get the 'real this'
-	 SwigPyObject from it */ 
-      return SWIG_Python_GetSwigThis(obj);
-    }
-    return (SwigPyObject *)obj;
-  }
+  obj = PyObject_GetAttr(pyobj,SWIG_This());
+  if (obj) {
+    Py_DECREF(obj);
+  } else {
+    if (PyErr_Occurred()) PyErr_Clear();
+    return 0;
+  }
+#endif
+  if (obj && !SwigPyObject_Check(obj)) {
+    /* a PyObject is called 'this', try to get the 'real this'
+       SwigPyObject from it */ 
+    return SWIG_Python_GetSwigThis(obj);
+  }
+  return (SwigPyObject *)obj;
+#endif
 }
 
@@ -2130,89 +2283,95 @@
 SWIGRUNTIME int
 SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) {
-  if (!obj) return SWIG_ERROR;
+  int res;
+  SwigPyObject *sobj;
+
+  if (!obj)
+    return SWIG_ERROR;
   if (obj == Py_None) {
-    if (ptr) *ptr = 0;
+    if (ptr)
+      *ptr = 0;
     return SWIG_OK;
+  }
+
+  res = SWIG_ERROR;
+
+  sobj = SWIG_Python_GetSwigThis(obj);
+  if (own)
+    *own = 0;
+  while (sobj) {
+    void *vptr = sobj->ptr;
+    if (ty) {
+      swig_type_info *to = sobj->ty;
+      if (to == ty) {
+        /* no type cast needed */
+        if (ptr) *ptr = vptr;
+        break;
+      } else {
+        swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
+        if (!tc) {
+          sobj = (SwigPyObject *)sobj->next;
+        } else {
+          if (ptr) {
+            int newmemory = 0;
+            *ptr = SWIG_TypeCast(tc,vptr,&newmemory);
+            if (newmemory == SWIG_CAST_NEW_MEMORY) {
+              assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */
+              if (own)
+                *own = *own | SWIG_CAST_NEW_MEMORY;
+            }
+          }
+          break;
+        }
+      }
+    } else {
+      if (ptr) *ptr = vptr;
+      break;
+    }
+  }
+  if (sobj) {
+    if (own)
+      *own = *own | sobj->own;
+    if (flags & SWIG_POINTER_DISOWN) {
+      sobj->own = 0;
+    }
+    res = SWIG_OK;
   } else {
-    SwigPyObject *sobj = SWIG_Python_GetSwigThis(obj);
-    if (own)
-      *own = 0;
-    while (sobj) {
-      void *vptr = sobj->ptr;
-      if (ty) {
-	swig_type_info *to = sobj->ty;
-	if (to == ty) {
-	  /* no type cast needed */
-	  if (ptr) *ptr = vptr;
-	  break;
-	} else {
-	  swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
-	  if (!tc) {
-	    sobj = (SwigPyObject *)sobj->next;
-	  } else {
-	    if (ptr) {
-              int newmemory = 0;
-              *ptr = SWIG_TypeCast(tc,vptr,&newmemory);
-              if (newmemory == SWIG_CAST_NEW_MEMORY) {
-                assert(own);
-                if (own)
-                  *own = *own | SWIG_CAST_NEW_MEMORY;
+    if (flags & SWIG_POINTER_IMPLICIT_CONV) {
+      SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
+      if (data && !data->implicitconv) {
+        PyObject *klass = data->klass;
+        if (klass) {
+          PyObject *impconv;
+          data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/
+          impconv = SWIG_Python_CallFunctor(klass, obj);
+          data->implicitconv = 0;
+          if (PyErr_Occurred()) {
+            PyErr_Clear();
+            impconv = 0;
+          }
+          if (impconv) {
+            SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv);
+            if (iobj) {
+              void *vptr;
+              res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0);
+              if (SWIG_IsOK(res)) {
+                if (ptr) {
+                  *ptr = vptr;
+                  /* transfer the ownership to 'ptr' */
+                  iobj->own = 0;
+                  res = SWIG_AddCast(res);
+                  res = SWIG_AddNewMask(res);
+                } else {
+                  res = SWIG_AddCast(res);		    
+                }
               }
             }
-	    break;
-	  }
-	}
-      } else {
-	if (ptr) *ptr = vptr;
-	break;
+            Py_DECREF(impconv);
+          }
+        }
       }
     }
-    if (sobj) {
-      if (own)
-        *own = *own | sobj->own;
-      if (flags & SWIG_POINTER_DISOWN) {
-	sobj->own = 0;
-      }
-      return SWIG_OK;
-    } else {
-      int res = SWIG_ERROR;
-      if (flags & SWIG_POINTER_IMPLICIT_CONV) {
-	SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
-	if (data && !data->implicitconv) {
-	  PyObject *klass = data->klass;
-	  if (klass) {
-	    PyObject *impconv;
-	    data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/
-	    impconv = SWIG_Python_CallFunctor(klass, obj);
-	    data->implicitconv = 0;
-	    if (PyErr_Occurred()) {
-	      PyErr_Clear();
-	      impconv = 0;
-	    }
-	    if (impconv) {
-	      SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv);
-	      if (iobj) {
-		void *vptr;
-		res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0);
-		if (SWIG_IsOK(res)) {
-		  if (ptr) {
-		    *ptr = vptr;
-		    /* transfer the ownership to 'ptr' */
-		    iobj->own = 0;
-		    res = SWIG_AddCast(res);
-		    res = SWIG_AddNewMask(res);
-		  } else {
-		    res = SWIG_AddCast(res);		    
-		  }
-		}
-	      }
-	      Py_DECREF(impconv);
-	    }
-	  }
-	}
-      }
-      return res;
-    }
-  }
+  }
+  return res;
 }
 
@@ -2368,5 +2527,5 @@
 SWIG_Python_InitShadowInstance(PyObject *args) {
   PyObject *obj[2];
-  if (!SWIG_Python_UnpackTuple(args,(char*)"swiginit", 2, 2, obj)) {
+  if (!SWIG_Python_UnpackTuple(args, "swiginit", 2, 2, obj)) {
     return NULL;
   } else {
@@ -2384,20 +2543,52 @@
 
 SWIGRUNTIME PyObject *
-SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int flags) {
-  if (!ptr) {
+SWIG_Python_NewPointerObj(PyObject *self, void *ptr, swig_type_info *type, int flags) {
+  SwigPyClientData *clientdata;
+  PyObject * robj;
+  int own;
+
+  if (!ptr)
     return SWIG_Py_Void();
-  } else {
-    int own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0;
-    PyObject *robj = SwigPyObject_New(ptr, type, own);
-    SwigPyClientData *clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0;
-    if (clientdata && !(flags & SWIG_POINTER_NOSHADOW)) {
-      PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj);
-      if (inst) {
-	Py_DECREF(robj);
-	robj = inst;
+
+  clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0;
+  own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0;
+  if (clientdata && clientdata->pytype) {
+    SwigPyObject *newobj;
+    if (flags & SWIG_BUILTIN_TP_INIT) {
+      newobj = (SwigPyObject*) self;
+      if (newobj->ptr) {
+        PyObject *next_self = clientdata->pytype->tp_alloc(clientdata->pytype, 0);
+        while (newobj->next)
+	  newobj = (SwigPyObject *) newobj->next;
+        newobj->next = next_self;
+        newobj = (SwigPyObject *)next_self;
       }
-    }
-    return robj;
-  }
+    } else {
+      newobj = PyObject_New(SwigPyObject, clientdata->pytype);
+    }
+    if (newobj) {
+      newobj->ptr = ptr;
+      newobj->ty = type;
+      newobj->own = own;
+      newobj->next = 0;
+#ifdef SWIGPYTHON_BUILTIN
+      newobj->dict = 0;
+#endif
+      return (PyObject*) newobj;
+    }
+    return SWIG_Py_Void();
+  }
+
+  assert(!(flags & SWIG_BUILTIN_TP_INIT));
+
+  robj = SwigPyObject_New(ptr, type, own);
+  if (clientdata && !(flags & SWIG_POINTER_NOSHADOW)) {
+    PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj);
+    if (inst) {
+      Py_DECREF(robj);
+      robj = inst;
+    }
+  }
+  return robj;
 }
 
@@ -2425,6 +2616,10 @@
     type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
 #else
+# ifdef SWIGPY_USE_CAPSULE
+    type_pointer = PyCapsule_Import(SWIGPY_CAPSULE_NAME, 0);
+# else
     type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
 				    (char*)"type_pointer" SWIG_TYPE_TABLE_NAME);
+# endif
     if (PyErr_Occurred()) {
       PyErr_Clear();
@@ -2469,7 +2664,15 @@
 
 SWIGRUNTIME void
+#ifdef SWIGPY_USE_CAPSULE
+SWIG_Python_DestroyModule(PyObject *obj)
+#else
 SWIG_Python_DestroyModule(void *vptr)
+#endif
 {
+#ifdef SWIGPY_USE_CAPSULE
+  swig_module_info *swig_module = (swig_module_info *) PyCapsule_GetPointer(obj, SWIGPY_CAPSULE_NAME);
+#else
   swig_module_info *swig_module = (swig_module_info *) vptr;
+#endif
   swig_type_info **types = swig_module->types;
   size_t i;
@@ -2482,17 +2685,24 @@
   }
   Py_DECREF(SWIG_This());
+  swig_this = NULL;
 }
 
 SWIGRUNTIME void
 SWIG_Python_SetModule(swig_module_info *swig_module) {
-  static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} };/* Sentinel */
-
 #if PY_VERSION_HEX >= 0x03000000
  /* Add a dummy module object into sys.modules */
   PyObject *module = PyImport_AddModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION);
 #else
-  PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
-				   swig_empty_runtime_method_table);
-#endif
+  static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */
+  PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, swig_empty_runtime_method_table);
+#endif
+#ifdef SWIGPY_USE_CAPSULE
+  PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule);
+  if (pointer && module) {
+    PyModule_AddObject(module, (char*)"type_pointer_capsule" SWIG_TYPE_TABLE_NAME, pointer);
+  } else {
+    Py_XDECREF(pointer);
+  }
+#else
   PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule);
   if (pointer && module) {
@@ -2501,4 +2711,5 @@
     Py_XDECREF(pointer);
   }
+#endif
 }
 
@@ -2518,10 +2729,18 @@
   swig_type_info *descriptor;
   if (obj) {
+#ifdef SWIGPY_USE_CAPSULE
+    descriptor = (swig_type_info *) PyCapsule_GetPointer(obj, NULL);
+#else
     descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj);
+#endif
   } else {
     swig_module_info *swig_module = SWIG_Python_GetModule();
     descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type);
     if (descriptor) {
+#ifdef SWIGPY_USE_CAPSULE
+      obj = PyCapsule_New((void*) descriptor, NULL, NULL);
+#else
       obj = PyCObject_FromVoidPtr(descriptor, NULL);
+#endif
       PyDict_SetItem(cache, key, obj);
       Py_DECREF(obj);
@@ -2584,5 +2803,5 @@
   SwigPyObject *v = (SwigPyObject *)self;
   swig_type_info *ty = v ? v->ty : 0;
-  return ty ? ty->str : (char*)"";
+  return ty ? ty->str : "";
 }
 
@@ -2627,5 +2846,5 @@
 /* Convert a pointer value, signal an exception on a type mismatch */
 SWIGRUNTIME void *
-SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) {
+SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int SWIGUNUSEDPARM(argnum), int flags) {
   void *result;
   if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
@@ -2641,9 +2860,60 @@
 }
 
+#ifdef SWIGPYTHON_BUILTIN
+SWIGRUNTIME int
+SWIG_Python_NonDynamicSetAttr(PyObject *obj, PyObject *name, PyObject *value) {
+  PyTypeObject *tp = obj->ob_type;
+  PyObject *descr;
+  PyObject *encoded_name;
+  descrsetfunc f;
+  int res;
+
+# ifdef Py_USING_UNICODE
+  if (PyString_Check(name)) {
+    name = PyUnicode_Decode(PyString_AsString(name), PyString_Size(name), NULL, NULL);
+    if (!name)
+      return -1;
+  } else if (!PyUnicode_Check(name))
+# else
+  if (!PyString_Check(name))
+# endif
+  {
+    PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", name->ob_type->tp_name);
+    return -1;
+  } else {
+    Py_INCREF(name);
+  }
+
+  if (!tp->tp_dict) {
+    if (PyType_Ready(tp) < 0)
+      goto done;
+  }
+
+  res = -1;
+  descr = _PyType_Lookup(tp, name);
+  f = NULL;
+  if (descr != NULL)
+    f = descr->ob_type->tp_descr_set;
+  if (!f) {
+    if (PyString_Check(name)) {
+      encoded_name = name;
+      Py_INCREF(name);
+    } else {
+      encoded_name = PyUnicode_AsUTF8String(name);
+    }
+    PyErr_Format(PyExc_AttributeError, "'%.100s' object has no attribute '%.200s'", tp->tp_name, PyString_AsString(encoded_name));
+    Py_DECREF(encoded_name);
+  } else {
+    res = f(descr, obj, value);
+  }
+  
+  done:
+  Py_DECREF(name);
+  return res;
+}
+#endif
+
 
 #ifdef __cplusplus
-#if 0
-{ /* cc-mode */
-#endif
 }
 #endif
@@ -2691,5 +2961,5 @@
 #define SWIG_name    "_pbs"
 
-#define SWIGVERSION 0x010340 
+#define SWIGVERSION 0x020007 
 #define SWIG_VERSION SWIGVERSION
 
@@ -2791,5 +3061,5 @@
     bzero( (void*) current->resource, sizeof(current->resource));
     bzero( (void*) current->value, sizeof(current->value));
-    current->op = 0;
+    // current->op = 0;
 
     current->next     = prev;
@@ -2971,11 +3241,8 @@
 
 
-  #define SWIG_From_long   PyInt_FromLong 
-
-
-SWIGINTERNINLINE PyObject *
-SWIG_From_int  (int value)
-{    
-  return SWIG_From_long  (value);
+SWIGINTERNINLINE PyObject*
+  SWIG_From_int  (int value)
+{
+  return PyInt_FromLong((long) value);
 }
 
@@ -3001,5 +3268,5 @@
       swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
       return pchar_descriptor ? 
-	SWIG_NewPointerObj((char *)(carray), pchar_descriptor, 0) : SWIG_Py_Void();
+	SWIG_InternalNewPointerObj((char *)(carray), pchar_descriptor, 0) : SWIG_Py_Void();
     } else {
 #if PY_VERSION_HEX >= 0x03000000
@@ -3189,4 +3456,7 @@
   return res;
 }
+
+
+  #define SWIG_From_long   PyLong_FromLong 
 
 
@@ -7830,22 +8100,21 @@
     static char varlink__doc__[] = "Swig var link object";
     static PyTypeObject varlink_type;
-    static int type_init = 0;  
+    static int type_init = 0;
     if (!type_init) {
-      const PyTypeObject tmp
-      = {
+      const PyTypeObject tmp = {
         /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX >= 0x03000000
-        PyVarObject_HEAD_INIT(&PyType_Type, 0)
+        PyVarObject_HEAD_INIT(NULL, 0)
 #else
         PyObject_HEAD_INIT(NULL)
-        0,                                  /* Number of items in variable part (ob_size) */
-#endif
-        (char *)"swigvarlink",              /* Type name (tp_name) */
-        sizeof(swig_varlinkobject),         /* Basic size (tp_basicsize) */
-        0,                                  /* Itemsize (tp_itemsize) */
-        (destructor) swig_varlink_dealloc,  /* Deallocator (tp_dealloc) */ 
-        (printfunc) swig_varlink_print,     /* Print (tp_print) */
-        (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */
-        (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */
+        0,                                  /* ob_size */
+#endif
+        (char *)"swigvarlink",              /* tp_name */
+        sizeof(swig_varlinkobject),         /* tp_basicsize */
+        0,                                  /* tp_itemsize */
+        (destructor) swig_varlink_dealloc,  /* tp_dealloc */
+        (printfunc) swig_varlink_print,     /* tp_print */
+        (getattrfunc) swig_varlink_getattr, /* tp_getattr */
+        (setattrfunc) swig_varlink_setattr, /* tp_setattr */
         0,                                  /* tp_compare */
         (reprfunc) swig_varlink_repr,       /* tp_repr */
@@ -7871,4 +8140,7 @@
         0,                                  /* tp_del */
 #endif
+#if PY_VERSION_HEX >= 0x02060000
+        0,                                  /* tp_version */
+#endif
 #ifdef COUNT_ALLOCS
         0,0,0,0                             /* tp_alloc -> tp_next */
@@ -7876,9 +8148,11 @@
       };
       varlink_type = tmp;
-      /* for Python 3 we already assigned ob_type in PyVarObject_HEAD_INIT() */
-#if PY_VERSION_HEX < 0x03000000
+      type_init = 1;
+#if PY_VERSION_HEX < 0x02020000
       varlink_type.ob_type = &PyType_Type;
-#endif
-      type_init = 1;
+#else
+      if (PyType_Ready(&varlink_type) < 0)
+      return NULL;
+#endif
     }
     return &varlink_type;
@@ -7931,5 +8205,5 @@
       switch(constants[i].type) {
       case SWIG_PY_POINTER:
-        obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
+        obj = SWIG_InternalNewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
         break;
       case SWIG_PY_BINARY:
@@ -7971,13 +8245,13 @@
         }
         if (ci) {
-          size_t shift = (ci->ptype) - types;
-          swig_type_info *ty = types_initial[shift];
-          size_t ldoc = (c - methods[i].ml_doc);
-          size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
-          char *ndoc = (char*)malloc(ldoc + lptr + 10);
-          if (ndoc) {
-            char *buff = ndoc;
-            void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0;
-            if (ptr) {
+          void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0;
+          if (ptr) {
+            size_t shift = (ci->ptype) - types;
+            swig_type_info *ty = types_initial[shift];
+            size_t ldoc = (c - methods[i].ml_doc);
+            size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
+            char *ndoc = (char*)malloc(ldoc + lptr + 10);
+            if (ndoc) {
+              char *buff = ndoc;
               strncpy(buff, methods[i].ml_doc, ldoc);
               buff += ldoc;
@@ -8012,8 +8286,17 @@
 #endif
 SWIG_init(void) {
-  PyObject *m, *d;  
+  PyObject *m, *d, *md;
 #if PY_VERSION_HEX >= 0x03000000
   static struct PyModuleDef SWIG_module = {
+# if PY_VERSION_HEX >= 0x03020000
     PyModuleDef_HEAD_INIT,
+# else
+    {
+      PyObject_HEAD_INIT(NULL)
+      NULL, /* m_init */
+      0,    /* m_index */
+      NULL, /* m_copy */
+    },
+# endif
     (char *) SWIG_name,
     NULL,
@@ -8027,4 +8310,47 @@
 #endif
   
+#if defined(SWIGPYTHON_BUILTIN)
+  static SwigPyClientData SwigPyObject_clientdata = {
+    0, 0, 0, 0, 0, 0, 0
+  };
+  static PyGetSetDef this_getset_def = {
+    (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL
+  };
+  static SwigPyGetSet thisown_getset_closure = {
+    (PyCFunction) SwigPyObject_own,
+    (PyCFunction) SwigPyObject_own
+  };
+  static PyGetSetDef thisown_getset_def = {
+    (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure
+  };
+  PyObject *metatype_args;
+  PyTypeObject *builtin_pytype;
+  int builtin_base_count;
+  swig_type_info *builtin_basetype;
+  PyObject *tuple;
+  PyGetSetDescrObject *static_getset;
+  PyTypeObject *metatype;
+  SwigPyClientData *cd;
+  PyObject *public_interface, *public_symbol;
+  PyObject *this_descr;
+  PyObject *thisown_descr;
+  int i;
+  
+  (void)builtin_pytype;
+  (void)builtin_base_count;
+  (void)builtin_basetype;
+  (void)tuple;
+  (void)static_getset;
+  
+  /* metatype is used to implement static member variables. */
+  metatype_args = Py_BuildValue("(s(O){})", "SwigPyObjectType", &PyType_Type);
+  assert(metatype_args);
+  metatype = (PyTypeObject *) PyType_Type.tp_call((PyObject *) &PyType_Type, metatype_args, NULL);
+  assert(metatype);
+  Py_DECREF(metatype_args);
+  metatype->tp_setattro = (setattrofunc) &SwigPyObjectType_setattro;
+  assert(PyType_Ready(metatype) >= 0);
+#endif
+  
   /* Fix SwigMethods to carry the callback ptrs when needed */
   SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial);
@@ -8035,9 +8361,45 @@
   m = Py_InitModule((char *) SWIG_name, SwigMethods);
 #endif
-  d = PyModule_GetDict(m);
+  md = d = PyModule_GetDict(m);
   
   SWIG_InitializeModule(0);
+  
+#ifdef SWIGPYTHON_BUILTIN
+  SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject");
+  assert(SwigPyObject_stype);
+  cd = (SwigPyClientData*) SwigPyObject_stype->clientdata;
+  if (!cd) {
+    SwigPyObject_stype->clientdata = &SwigPyObject_clientdata;
+    SwigPyObject_clientdata.pytype = SwigPyObject_TypeOnce();
+  } else if (SwigPyObject_TypeOnce()->tp_basicsize != cd->pytype->tp_basicsize) {
+    PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules.");
+# if PY_VERSION_HEX >= 0x03000000
+    return NULL;
+# else
+    return;
+# endif
+  }
+  
+  /* All objects have a 'this' attribute */
+  this_descr = PyDescr_NewGetSet(SwigPyObject_type(), &this_getset_def);
+  (void)this_descr;
+  
+  /* All objects have a 'thisown' attribute */
+  thisown_descr = PyDescr_NewGetSet(SwigPyObject_type(), &thisown_getset_def);
+  (void)thisown_descr;
+  
+  public_interface = PyList_New(0);
+  public_symbol = 0;
+  (void)public_symbol;
+  
+  PyDict_SetItemString(md, "__all__", public_interface);
+  Py_DECREF(public_interface);
+  for (i = 0; SwigMethods[i].ml_name != NULL; ++i)
+  SwigPyBuiltin_AddPublicSymbol(public_interface, SwigMethods[i].ml_name);
+  for (i = 0; swig_const_table[i].name != 0; ++i)
+  SwigPyBuiltin_AddPublicSymbol(public_interface, swig_const_table[i].name);
+#endif
+  
   SWIG_InstallConstants(d,swig_const_table);
-  
   
   SWIG_Python_SetConstant(d, "ATTR_a",SWIG_FromCharPtr("Execution_Time"));
@@ -8060,4 +8422,5 @@
   SWIG_Python_SetConstant(d, "ATTR_v",SWIG_FromCharPtr("Variable_List"));
   SWIG_Python_SetConstant(d, "ATTR_A",SWIG_FromCharPtr("Account_Name"));
+  SWIG_Python_SetConstant(d, "ATTR_args",SWIG_FromCharPtr("job_arguments"));
   SWIG_Python_SetConstant(d, "ATTR_M",SWIG_FromCharPtr("Mail_Users"));
   SWIG_Python_SetConstant(d, "ATTR_N",SWIG_FromCharPtr("Job_Name"));
@@ -8068,4 +8431,6 @@
   SWIG_Python_SetConstant(d, "ATTR_stageout",SWIG_FromCharPtr("stageout"));
   SWIG_Python_SetConstant(d, "ATTR_jobtype",SWIG_FromCharPtr("jobtype"));
+  SWIG_Python_SetConstant(d, "ATTR_submit_host",SWIG_FromCharPtr("submit_host"));
+  SWIG_Python_SetConstant(d, "ATTR_init_work_dir",SWIG_FromCharPtr("init_work_dir"));
   SWIG_Python_SetConstant(d, "ATTR_ctime",SWIG_FromCharPtr("ctime"));
   SWIG_Python_SetConstant(d, "ATTR_exechost",SWIG_FromCharPtr("exec_host"));
@@ -8110,4 +8475,7 @@
   SWIG_Python_SetConstant(d, "ATTR_reported",SWIG_FromCharPtr("reported"));
   SWIG_Python_SetConstant(d, "ATTR_intcmd",SWIG_FromCharPtr("inter_cmd"));
+  SWIG_Python_SetConstant(d, "ATTR_P",SWIG_FromCharPtr("proxy_user"));
+  SWIG_Python_SetConstant(d, "ATTR_exec_gpus",SWIG_FromCharPtr("exec_gpus"));
+  SWIG_Python_SetConstant(d, "ATTR_J",SWIG_FromCharPtr("job_id"));
   SWIG_Python_SetConstant(d, "ATTR_aclgren",SWIG_FromCharPtr("acl_group_enable"));
   SWIG_Python_SetConstant(d, "ATTR_aclgroup",SWIG_FromCharPtr("acl_groups"));
@@ -8118,4 +8486,5 @@
   SWIG_Python_SetConstant(d, "ATTR_altrouter",SWIG_FromCharPtr("alt_router"));
   SWIG_Python_SetConstant(d, "ATTR_checkpoint_min",SWIG_FromCharPtr("checkpoint_min"));
+  SWIG_Python_SetConstant(d, "ATTR_checkpoint_defaults",SWIG_FromCharPtr("checkpoint_defaults"));
   SWIG_Python_SetConstant(d, "ATTR_enable",SWIG_FromCharPtr("enabled"));
   SWIG_Python_SetConstant(d, "ATTR_fromroute",SWIG_FromCharPtr("from_route_only"));
@@ -8200,5 +8569,17 @@
   SWIG_Python_SetConstant(d, "ATTR_LockfileCheckTime",SWIG_FromCharPtr("lock_file_check_time"));
   SWIG_Python_SetConstant(d, "ATTR_npdefault",SWIG_FromCharPtr("np_default"));
+  SWIG_Python_SetConstant(d, "ATTR_clonebatchsize",SWIG_FromCharPtr("clone_batch_size"));
+  SWIG_Python_SetConstant(d, "ATTR_clonebatchdelay",SWIG_FromCharPtr("clone_batch_delay"));
   SWIG_Python_SetConstant(d, "ATTR_jobstarttimeout",SWIG_FromCharPtr("job_start_timeout"));
+  SWIG_Python_SetConstant(d, "ATTR_jobforcecanceltime",SWIG_FromCharPtr("job_force_cancel_time"));
+  SWIG_Python_SetConstant(d, "ATTR_maxarraysize",SWIG_FromCharPtr("max_job_array_size"));
+  SWIG_Python_SetConstant(d, "ATTR_maxslotlimit",SWIG_FromCharPtr("max_slot_limit"));
+  SWIG_Python_SetConstant(d, "ATTR_recordjobinfo",SWIG_FromCharPtr("record_job_info"));
+  SWIG_Python_SetConstant(d, "ATTR_recordjobscript",SWIG_FromCharPtr("record_job_script"));
+  SWIG_Python_SetConstant(d, "ATTR_joblogfilemaxsize",SWIG_FromCharPtr("job_log_file_max_size"));
+  SWIG_Python_SetConstant(d, "ATTR_joblogfilerolldepth",SWIG_FromCharPtr("job_log_file_roll_depth"));
+  SWIG_Python_SetConstant(d, "ATTR_joblogkeepdays",SWIG_FromCharPtr("job_log_keep_days"));
+  SWIG_Python_SetConstant(d, "ATTR_moabarraycompatible",SWIG_FromCharPtr("moab_array_compatible"));
+  SWIG_Python_SetConstant(d, "ATTR_nomailforce",SWIG_FromCharPtr("no_mail_force"));
   SWIG_Python_SetConstant(d, "ATTR_NODE_state",SWIG_FromCharPtr("state"));
   SWIG_Python_SetConstant(d, "ATTR_NODE_np",SWIG_FromCharPtr("np"));
@@ -8208,4 +8589,6 @@
   SWIG_Python_SetConstant(d, "ATTR_NODE_status",SWIG_FromCharPtr("status"));
   SWIG_Python_SetConstant(d, "ATTR_NODE_note",SWIG_FromCharPtr("note"));
+  SWIG_Python_SetConstant(d, "ATTR_NODE_gpus",SWIG_FromCharPtr("gpus"));
+  SWIG_Python_SetConstant(d, "ATTR_NODE_gpustatus",SWIG_FromCharPtr("gpu_status"));
   SWIG_Python_SetConstant(d, "ATTR_mailsubjectfmt",SWIG_FromCharPtr("mail_subject_fmt"));
   SWIG_Python_SetConstant(d, "ATTR_mailbodyfmt",SWIG_FromCharPtr("mail_body_fmt"));
@@ -8215,6 +8598,8 @@
   SWIG_Python_SetConstant(d, "NO_KEEP",SWIG_FromCharPtr("n"));
   SWIG_Python_SetConstant(d, "MAIL_AT_ABORT",SWIG_FromCharPtr("a"));
+  SWIG_Python_SetConstant(d, "ARRAY_RANGE",SWIG_FromCharPtr("array_range="));
   SWIG_Python_SetConstant(d, "DELDELAY",SWIG_FromCharPtr("deldelay="));
   SWIG_Python_SetConstant(d, "DELPURGE",SWIG_FromCharPtr("delpurge="));
+  SWIG_Python_SetConstant(d, "DELASYNC",SWIG_FromCharPtr("delasync"));
   SWIG_Python_SetConstant(d, "PURGECOMP",SWIG_FromCharPtr("purgecomplete="));
   SWIG_Python_SetConstant(d, "EXECQUEONLY",SWIG_FromCharPtr("exec_queue_only"));
@@ -8232,4 +8617,7 @@
   SWIG_Python_SetConstant(d, "ND_state_unknown",SWIG_FromCharPtr("state-unknown"));
   SWIG_Python_SetConstant(d, "ND_timeshared",SWIG_FromCharPtr("time-shared"));
+  SWIG_Python_SetConstant(d, "ND_active",SWIG_FromCharPtr("active"));
+  SWIG_Python_SetConstant(d, "ND_all",SWIG_FromCharPtr("all"));
+  SWIG_Python_SetConstant(d, "ND_up",SWIG_FromCharPtr("up"));
   SWIG_Python_SetConstant(d, "ND_cluster",SWIG_FromCharPtr("cluster"));
   SWIG_Python_SetConstant(d, "Q_DT_batch",SWIG_FromCharPtr("batch"));
@@ -8268,12 +8656,13 @@
   SWIG_Python_SetConstant(d, "PBS_MAXUSER",SWIG_From_int((int)(32)));
   SWIG_Python_SetConstant(d, "PBS_MAXGRPN",SWIG_From_int((int)(16)));
+  SWIG_Python_SetConstant(d, "PBS_MAXGPUID",SWIG_From_int((int)(16)));
   SWIG_Python_SetConstant(d, "PBS_MAXQUEUENAME",SWIG_From_int((int)(15)));
   SWIG_Python_SetConstant(d, "PBS_MAXSERVERNAME",SWIG_From_int((int)(1024)));
-  SWIG_Python_SetConstant(d, "PBS_MAXJOBARRAYLEN",SWIG_From_int((int)(6)));
+  SWIG_Python_SetConstant(d, "PBS_MAXJOBARRAYLEN",SWIG_From_int((int)(7)));
   SWIG_Python_SetConstant(d, "PBS_MAXSEQNUM",SWIG_From_int((int)(8)));
   SWIG_Python_SetConstant(d, "PBS_MAXPORTNUM",SWIG_From_int((int)(5)));
   SWIG_Python_SetConstant(d, "PBS_MAXJOBARRAY",SWIG_From_int((int)(99999)));
-  SWIG_Python_SetConstant(d, "PBS_MAXSVRJOBID",SWIG_From_int((int)((8+1024+5+6+2))));
-  SWIG_Python_SetConstant(d, "PBS_MAXCLTJOBID",SWIG_From_int((int)(((8+1024+5+6+2) +1024+5+6+2))));
+  SWIG_Python_SetConstant(d, "PBS_MAXSVRJOBID",SWIG_From_int((int)((8+1024+5+7+2))));
+  SWIG_Python_SetConstant(d, "PBS_MAXCLTJOBID",SWIG_From_int((int)(((8+1024+5+7+2) +1024+5+7+2))));
   SWIG_Python_SetConstant(d, "PBS_MAXDEST",SWIG_From_int((int)(1024)));
   SWIG_Python_SetConstant(d, "PBS_MAXROUTEDEST",SWIG_From_int((int)((15+1024+5+2))));
@@ -8283,6 +8672,6 @@
   SWIG_Python_SetConstant(d, "PBS_TERM_CCA",SWIG_From_int((int)(6)));
   SWIG_Python_SetConstant(d, "PBS_QS_VERSION_BASE",SWIG_From_int((int)(0x00020300)));
-  SWIG_Python_SetConstant(d, "PBS_QS_VERSION_INT",SWIG_From_int((int)(1)));
-  SWIG_Python_SetConstant(d, "PBS_QS_VERSION",SWIG_From_int((int)((0x00020300+1))));
+  SWIG_Python_SetConstant(d, "PBS_QS_VERSION_INT",SWIG_From_int((int)(2)));
+  SWIG_Python_SetConstant(d, "PBS_QS_VERSION",SWIG_From_int((int)((0x00020300+2))));
   SWIG_Python_SetConstant(d, "PBS_BATCH_SERVICE_NAME",SWIG_FromCharPtr("pbs"));
   SWIG_Python_SetConstant(d, "PBS_BATCH_SERVICE_PORT",SWIG_From_int((int)(15001)));
@@ -8298,4 +8687,5 @@
   SWIG_Python_SetConstant(d, "CHECKPOINTCONT",SWIG_FromCharPtr("checkpoint_cont"));
   SWIG_Python_SetConstant(d, "MOM_DEFAULT_CHECKPOINT_DIR",SWIG_FromCharPtr("$MOMDEFAULTCHECKPOINTDIR$"));
+  SWIG_Python_SetConstant(d, "NO_MOM_RELAY",SWIG_From_int((int)(1)));
   SWIG_Python_SetConstant(d, "SET",SWIG_From_int((int)(SET)));
   SWIG_Python_SetConstant(d, "UNSET",SWIG_From_int((int)(UNSET)));
@@ -8310,5 +8700,6 @@
   SWIG_Python_SetConstant(d, "DFLT",SWIG_From_int((int)(DFLT)));
   SWIG_Python_SetConstant(d, "MERGE",SWIG_From_int((int)(MERGE)));
-  PyDict_SetItemString(d,(char*)"cvar", SWIG_globals());
+  SWIG_Python_SetConstant(d, "INCR_OLD",SWIG_From_int((int)(INCR_OLD)));
+  PyDict_SetItemString(md,(char*)"cvar", SWIG_globals());
   SWIG_addvarlink(SWIG_globals(),(char*)"pbs_errno",Swig_var_pbs_errno_get, Swig_var_pbs_errno_set);
   SWIG_addvarlink(SWIG_globals(),(char*)"pbs_server",Swig_var_pbs_server_get, Swig_var_pbs_server_set);
Index: /devel/C/pbs_wrap_2.4.c
===================================================================
--- /devel/C/pbs_wrap_2.4.c	(revision 317)
+++ /devel/C/pbs_wrap_2.4.c	(revision 318)
@@ -1,5 +1,5 @@
 /* ----------------------------------------------------------------------------
  * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 1.3.40
+ * Version 2.0.7
  * 
  * This file is not intended to be easily readable and contains a number of 
@@ -178,5 +178,5 @@
    Flags/methods for returning states.
    
-   The SWIG conversion methods, as ConvertPtr, return and integer 
+   The SWIG conversion methods, as ConvertPtr, return an integer 
    that tells if the conversion was successful or not. And if not,
    an error code can be returned (see swigerrors.swg for the codes).
@@ -733,5 +733,14 @@
 #define PyInt_AsLong(x) PyLong_AsLong(x)
 #define PyInt_FromLong(x) PyLong_FromLong(x)
+#define PyInt_FromSize_t(x) PyLong_FromSize_t(x)
+#define PyString_Check(name) PyBytes_Check(name)
+#define PyString_FromString(x) PyUnicode_FromString(x)
 #define PyString_Format(fmt, args)  PyUnicode_Format(fmt, args)
+#define PyString_AsString(str) PyBytes_AsString(str)
+#define PyString_Size(str) PyBytes_Size(str)	
+#define PyString_InternFromString(key) PyUnicode_InternFromString(key)
+#define Py_TPFLAGS_HAVE_CLASS Py_TPFLAGS_BASETYPE
+#define PyString_AS_STRING(x) PyUnicode_AS_STRING(x)
+#define _PyLong_FromSsize_t(x) PyLong_FromSsize_t(x)
 
 #endif
@@ -873,4 +882,61 @@
 # define PY_SSIZE_T_MAX INT_MAX
 # define PY_SSIZE_T_MIN INT_MIN
+typedef inquiry lenfunc;
+typedef intargfunc ssizeargfunc;
+typedef intintargfunc ssizessizeargfunc;
+typedef intobjargproc ssizeobjargproc;
+typedef intintobjargproc ssizessizeobjargproc;
+typedef getreadbufferproc readbufferproc;
+typedef getwritebufferproc writebufferproc;
+typedef getsegcountproc segcountproc;
+typedef getcharbufferproc charbufferproc;
+static long PyNumber_AsSsize_t (PyObject *x, void *SWIGUNUSEDPARM(exc))
+{
+  long result = 0;
+  PyObject *i = PyNumber_Int(x);
+  if (i) {
+    result = PyInt_AsLong(i);
+    Py_DECREF(i);
+  }
+  return result;
+}
+#endif
+
+#if PY_VERSION_HEX < 0x02040000
+#define Py_VISIT(op)				\
+  do { 						\
+    if (op) {					\
+      int vret = visit((op), arg);		\
+      if (vret)					\
+        return vret;				\
+    }						\
+  } while (0)
+#endif
+
+#if PY_VERSION_HEX < 0x02030000
+typedef struct {
+  PyTypeObject type;
+  PyNumberMethods as_number;
+  PyMappingMethods as_mapping;
+  PySequenceMethods as_sequence;
+  PyBufferProcs as_buffer;
+  PyObject *name, *slots;
+} PyHeapTypeObject;
+#endif
+
+#if PY_VERSION_HEX < 0x02030000
+typedef destructor freefunc;
+#endif
+
+#if ((PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 6) || \
+     (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION > 0) || \
+     (PY_MAJOR_VERSION > 3))
+# define SWIGPY_USE_CAPSULE
+# define SWIGPY_CAPSULE_NAME ((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION ".type_pointer_capsule" SWIG_TYPE_TABLE_NAME)
+#endif
+
+#if PY_VERSION_HEX < 0x03020000
+#define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
+#define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
 #endif
 
@@ -1019,7 +1085,4 @@
 #ifdef __cplusplus
 extern "C" {
-#if 0
-} /* cc-mode */
-#endif
 #endif
 
@@ -1047,17 +1110,17 @@
  * It is exported to the generated module, used for -fastproxy
  * ----------------------------------------------------------------------------- */
-SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *self, PyObject *func)
+#if PY_VERSION_HEX >= 0x03000000
+SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *func)
 {
-#if PY_VERSION_HEX >= 0x03000000
   return PyInstanceMethod_New(func);
+}
 #else
-  return NULL;
-#endif
-}
+SWIGRUNTIME PyObject* SWIG_PyInstanceMethod_New(PyObject *SWIGUNUSEDPARM(self), PyObject *SWIGUNUSEDPARM(func))
+{
+  return NULL;
+}
+#endif
 
 #ifdef __cplusplus
-#if 0
-{ /* cc-mode */
-#endif
 }
 #endif
@@ -1065,7 +1128,4 @@
 
 /* -----------------------------------------------------------------------------
- * See the LICENSE file for information on copyright, usage and redistribution
- * of SWIG, and the README file for authors - http://www.swig.org/release.html.
- *
  * pyrun.swg
  *
@@ -1082,5 +1142,13 @@
 #define SWIG_ConvertPtr(obj, pptr, type, flags)         SWIG_Python_ConvertPtr(obj, pptr, type, flags)
 #define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own)  SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own)
-#define SWIG_NewPointerObj(ptr, type, flags)            SWIG_Python_NewPointerObj(ptr, type, flags)
+
+#ifdef SWIGPYTHON_BUILTIN
+#define SWIG_NewPointerObj(ptr, type, flags)            SWIG_Python_NewPointerObj(self, ptr, type, flags)
+#else
+#define SWIG_NewPointerObj(ptr, type, flags)            SWIG_Python_NewPointerObj(NULL, ptr, type, flags)
+#endif
+
+#define SWIG_InternalNewPointerObj(ptr, type, flags)	SWIG_Python_NewPointerObj(NULL, ptr, type, flags)
+
 #define SWIG_CheckImplicit(ty)                          SWIG_Python_CheckImplicit(ty) 
 #define SWIG_AcquirePtr(ptr, src)                       SWIG_Python_AcquirePtr(ptr, src)
@@ -1097,5 +1165,5 @@
 /* for C or C++ function pointers */
 #define SWIG_ConvertFunctionPtr(obj, pptr, type)        SWIG_Python_ConvertFunctionPtr(obj, pptr, type)
-#define SWIG_NewFunctionPtrObj(ptr, type)               SWIG_Python_NewPointerObj(ptr, type, 0)
+#define SWIG_NewFunctionPtrObj(ptr, type)               SWIG_Python_NewPointerObj(NULL, ptr, type, 0)
 
 /* for C++ member pointers, ie, member methods */
@@ -1132,5 +1200,5 @@
 SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) {
   SWIG_PYTHON_THREAD_BEGIN_BLOCK;
-  PyErr_SetString(errtype, (char *) msg);
+  PyErr_SetString(errtype, msg);
   SWIG_PYTHON_THREAD_END_BLOCK;
 }
@@ -1139,10 +1207,39 @@
 
 /* Set a constant value */
+
+#if defined(SWIGPYTHON_BUILTIN)
+
+SWIGINTERN void
+SwigPyBuiltin_AddPublicSymbol(PyObject *seq, const char *key) {
+  PyObject *s = PyString_InternFromString(key);
+  PyList_Append(seq, s);
+  Py_DECREF(s);
+}
+
+SWIGINTERN void
+SWIG_Python_SetConstant(PyObject *d, PyObject *public_interface, const char *name, PyObject *obj) {   
+#if PY_VERSION_HEX < 0x02030000
+  PyDict_SetItemString(d, (char *)name, obj);
+#else
+  PyDict_SetItemString(d, name, obj);
+#endif
+  Py_DECREF(obj);
+  if (public_interface)
+    SwigPyBuiltin_AddPublicSymbol(public_interface, name);
+}
+
+#else
 
 SWIGINTERN void
 SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) {   
-  PyDict_SetItemString(d, (char*) name, obj);
+#if PY_VERSION_HEX < 0x02030000
+  PyDict_SetItemString(d, (char *)name, obj);
+#else
+  PyDict_SetItemString(d, name, obj);
+#endif
   Py_DECREF(obj);                            
 }
+
+#endif
 
 /* Append a value to the result obj */
@@ -1206,4 +1303,12 @@
   }  
   if (!PyTuple_Check(args)) {
+    if (min <= 1 && max >= 1) {
+      register int i;
+      objs[0] = args;
+      for (i = 1; i < max; ++i) {
+	objs[i] = 0;
+      }
+      return 2;
+    }
     PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple");
     return 0;
@@ -1258,9 +1363,9 @@
 #define SWIG_POINTER_IMPLICIT_CONV  (SWIG_POINTER_DISOWN   << 1)
 
+#define SWIG_BUILTIN_TP_INIT	    (SWIG_POINTER_OWN << 2)
+#define SWIG_BUILTIN_INIT	    (SWIG_BUILTIN_TP_INIT | SWIG_POINTER_OWN)
+
 #ifdef __cplusplus
 extern "C" {
-#if 0
-} /* cc-mode */
-#endif
 #endif
 
@@ -1313,4 +1418,5 @@
   int delargs;
   int implicitconv;
+  PyTypeObject *pytype;
 } SwigPyClientData;
 
@@ -1379,4 +1485,5 @@
     }
     data->implicitconv = 0;
+    data->pytype = 0;
     return data;
   }
@@ -1384,6 +1491,5 @@
 
 SWIGRUNTIME void 
-SwigPyClientData_Del(SwigPyClientData* data)
-{
+SwigPyClientData_Del(SwigPyClientData *data) {
   Py_XDECREF(data->newraw);
   Py_XDECREF(data->newargs);
@@ -1399,4 +1505,7 @@
   int own;
   PyObject *next;
+#ifdef SWIGPYTHON_BUILTIN
+  PyObject *dict;
+#endif
 } SwigPyObject;
 
@@ -1449,19 +1558,19 @@
 {
   const char *name = SWIG_TypePrettyName(v->ty);
-  PyObject *repr = SWIG_Python_str_FromFormat("<Swig Object of type '%s' at %p>", name, v);
+  PyObject *repr = SWIG_Python_str_FromFormat("<Swig Object of type '%s' at %p>", (name ? name : "unknown"), (void *)v);
   if (v->next) {
-#ifdef METH_NOARGS
+# ifdef METH_NOARGS
     PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next);
-#else
+# else
     PyObject *nrep = SwigPyObject_repr((SwigPyObject *)v->next, args);
-#endif
-#if PY_VERSION_HEX >= 0x03000000
+# endif
+# if PY_VERSION_HEX >= 0x03000000
     PyObject *joined = PyUnicode_Concat(repr, nrep);
     Py_DecRef(repr);
     Py_DecRef(nrep);
     repr = joined;
-#else
+# else
     PyString_ConcatAndDel(&repr,nrep);
-#endif
+# endif
   }
   return repr;  
@@ -1513,25 +1622,41 @@
     return Py_NotImplemented;
   }
-  if( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) )
-    res = Py_True;
-  else
-    res = Py_False;
-  Py_INCREF(res);
+  res = PyBool_FromLong( (SwigPyObject_compare(v, w)==0) == (op == Py_EQ) ? 1 : 0);
   return res;  
 }
 
 
-SWIGRUNTIME PyTypeObject* _PySwigObject_type(void);
-
+SWIGRUNTIME PyTypeObject* SwigPyObject_TypeOnce(void);
+
+#ifdef SWIGPYTHON_BUILTIN
+static swig_type_info *SwigPyObject_stype = 0;
 SWIGRUNTIME PyTypeObject*
 SwigPyObject_type(void) {
-  static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigObject_type();
+    SwigPyClientData *cd;
+    assert(SwigPyObject_stype);
+    cd = (SwigPyClientData*) SwigPyObject_stype->clientdata;
+    assert(cd);
+    assert(cd->pytype);
+    return cd->pytype;
+}
+#else
+SWIGRUNTIME PyTypeObject*
+SwigPyObject_type(void) {
+  static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyObject_TypeOnce();
   return type;
 }
+#endif
 
 SWIGRUNTIMEINLINE int
 SwigPyObject_Check(PyObject *op) {
+#ifdef SWIGPYTHON_BUILTIN
+  PyTypeObject *target_tp = SwigPyObject_type();
+  if (PyType_IsSubtype(op->ob_type, target_tp))
+    return 1;
+  return (strcmp(op->ob_type->tp_name, "SwigPyObject") == 0);
+#else
   return (Py_TYPE(op) == SwigPyObject_type())
     || (strcmp(Py_TYPE(op)->tp_name,"SwigPyObject") == 0);
+#endif
 }
 
@@ -1637,6 +1762,8 @@
 #if (PY_VERSION_HEX < 0x02020000)
   if (!PyArg_ParseTuple(args,(char *)"|O:own",&val))
+#elif (PY_VERSION_HEX < 0x02050000)
+  if (!PyArg_UnpackTuple(args, (char *)"own", 0, 1, &val)) 
 #else
-  if (!PyArg_UnpackTuple(args, (char *)"own", 0, 1, &val)) 
+  if (!PyArg_UnpackTuple(args, "own", 0, 1, &val)) 
 #endif
     {
@@ -1699,7 +1826,7 @@
 
 SWIGRUNTIME PyTypeObject*
-_PySwigObject_type(void) {
+SwigPyObject_TypeOnce(void) {
   static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer";
-  
+
   static PyNumberMethods SwigPyObject_as_number = {
     (binaryfunc)0, /*nb_add*/
@@ -1748,83 +1875,87 @@
   };
 
-  static PyTypeObject swigpyobject_type;  
+  static PyTypeObject swigpyobject_type;
   static int type_init = 0;
   if (!type_init) {
-    const PyTypeObject tmp
-      = {
-	/* PyObject header changed in Python 3 */
+    const PyTypeObject tmp = {
+      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX >= 0x03000000
-	PyVarObject_HEAD_INIT(&PyType_Type, 0)
-#else    
-	PyObject_HEAD_INIT(NULL)
-	0,				    /* ob_size */
-#endif
-	(char *)"SwigPyObject",		    /* tp_name */
-	sizeof(SwigPyObject),		    /* tp_basicsize */
-	0,			            /* tp_itemsize */
-	(destructor)SwigPyObject_dealloc,   /* tp_dealloc */
-	(printfunc)SwigPyObject_print,	    /* tp_print */
+      PyVarObject_HEAD_INIT(NULL, 0)
+#else
+      PyObject_HEAD_INIT(NULL)
+      0,                                    /* ob_size */
+#endif
+      (char *)"SwigPyObject",               /* tp_name */
+      sizeof(SwigPyObject),                 /* tp_basicsize */
+      0,                                    /* tp_itemsize */
+      (destructor)SwigPyObject_dealloc,     /* tp_dealloc */
+      (printfunc)SwigPyObject_print,        /* tp_print */
 #if PY_VERSION_HEX < 0x02020000
-	(getattrfunc)SwigPyObject_getattr,  /* tp_getattr */ 
+      (getattrfunc)SwigPyObject_getattr,    /* tp_getattr */
 #else
-	(getattrfunc)0,			    /* tp_getattr */ 
-#endif
-	(setattrfunc)0,			    /* tp_setattr */ 
+      (getattrfunc)0,                       /* tp_getattr */
+#endif
+      (setattrfunc)0,                       /* tp_setattr */
 #if PY_VERSION_HEX >= 0x03000000
     0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
 #else
-	(cmpfunc)SwigPyObject_compare,	    /* tp_compare */
-#endif
-	(reprfunc)SwigPyObject_repr,	    /* tp_repr */    
-	&SwigPyObject_as_number,	    /* tp_as_number */
-	0,				    /* tp_as_sequence */
-	0,				    /* tp_as_mapping */
-	(hashfunc)0,			    /* tp_hash */
-	(ternaryfunc)0,			    /* tp_call */
-	(reprfunc)SwigPyObject_str,	    /* tp_str */
-	PyObject_GenericGetAttr,            /* tp_getattro */
-	0,				    /* tp_setattro */
-	0,		                    /* tp_as_buffer */
-	Py_TPFLAGS_DEFAULT,	            /* tp_flags */
-	swigobject_doc, 	            /* tp_doc */        
-	0,                                  /* tp_traverse */
-	0,                                  /* tp_clear */
-	(richcmpfunc)SwigPyObject_richcompare,           /* tp_richcompare */
-	0,                                  /* tp_weaklistoffset */
+      (cmpfunc)SwigPyObject_compare,        /* tp_compare */
+#endif
+      (reprfunc)SwigPyObject_repr,          /* tp_repr */
+      &SwigPyObject_as_number,              /* tp_as_number */
+      0,                                    /* tp_as_sequence */
+      0,                                    /* tp_as_mapping */
+      (hashfunc)0,                          /* tp_hash */
+      (ternaryfunc)0,                       /* tp_call */
+      (reprfunc)SwigPyObject_str,           /* tp_str */
+      PyObject_GenericGetAttr,              /* tp_getattro */
+      0,                                    /* tp_setattro */
+      0,                                    /* tp_as_buffer */
+      Py_TPFLAGS_DEFAULT,                   /* tp_flags */
+      swigobject_doc,                       /* tp_doc */
+      0,                                    /* tp_traverse */
+      0,                                    /* tp_clear */
+      (richcmpfunc)SwigPyObject_richcompare,/* tp_richcompare */
+      0,                                    /* tp_weaklistoffset */
 #if PY_VERSION_HEX >= 0x02020000
-	0,                                  /* tp_iter */
-	0,                                  /* tp_iternext */
-	swigobject_methods,		    /* tp_methods */ 
-	0,			            /* tp_members */
-	0,				    /* tp_getset */	    	
-	0,			            /* tp_base */	        
-	0,				    /* tp_dict */	    	
-	0,				    /* tp_descr_get */  	
-	0,				    /* tp_descr_set */  	
-	0,				    /* tp_dictoffset */ 	
-	0,				    /* tp_init */	    	
-	0,				    /* tp_alloc */	    	
-	0,			            /* tp_new */	    	
-	0,	                            /* tp_free */	   
-	0,                                  /* tp_is_gc */  
-	0,				    /* tp_bases */   
-	0,				    /* tp_mro */
-	0,				    /* tp_cache */   
-	0,				    /* tp_subclasses */
-	0,				    /* tp_weaklist */
+      0,                                    /* tp_iter */
+      0,                                    /* tp_iternext */
+      swigobject_methods,                   /* tp_methods */
+      0,                                    /* tp_members */
+      0,                                    /* tp_getset */
+      0,                                    /* tp_base */
+      0,                                    /* tp_dict */
+      0,                                    /* tp_descr_get */
+      0,                                    /* tp_descr_set */
+      0,                                    /* tp_dictoffset */
+      0,                                    /* tp_init */
+      0,                                    /* tp_alloc */
+      0,                                    /* tp_new */
+      0,                                    /* tp_free */
+      0,                                    /* tp_is_gc */
+      0,                                    /* tp_bases */
+      0,                                    /* tp_mro */
+      0,                                    /* tp_cache */
+      0,                                    /* tp_subclasses */
+      0,                                    /* tp_weaklist */
 #endif
 #if PY_VERSION_HEX >= 0x02030000
-	0,                                  /* tp_del */
+      0,                                    /* tp_del */
+#endif
+#if PY_VERSION_HEX >= 0x02060000
+      0,                                    /* tp_version */
 #endif
 #ifdef COUNT_ALLOCS
-	0,0,0,0                             /* tp_alloc -> tp_next */
-#endif
-      };
+      0,0,0,0                               /* tp_alloc -> tp_next */
+#endif
+    };
     swigpyobject_type = tmp;
-    /* for Python 3 we already assigned ob_type in PyVarObject_HEAD_INIT() */
-#if PY_VERSION_HEX < 0x03000000
+    type_init = 1;
+#if PY_VERSION_HEX < 0x02020000
     swigpyobject_type.ob_type = &PyType_Type;
-#endif
-    type_init = 1;
+#else
+    if (PyType_Ready(&swigpyobject_type) < 0)
+      return NULL;
+#endif
   }
   return &swigpyobject_type;
@@ -1900,9 +2031,9 @@
 }
 
-SWIGRUNTIME PyTypeObject* _PySwigPacked_type(void);
+SWIGRUNTIME PyTypeObject* SwigPyPacked_TypeOnce(void);
 
 SWIGRUNTIME PyTypeObject*
 SwigPyPacked_type(void) {
-  static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigPacked_type();
+  static PyTypeObject *SWIG_STATIC_POINTER(type) = SwigPyPacked_TypeOnce();
   return type;
 }
@@ -1910,5 +2041,5 @@
 SWIGRUNTIMEINLINE int
 SwigPyPacked_Check(PyObject *op) {
-  return ((op)->ob_type == _PySwigPacked_type()) 
+  return ((op)->ob_type == SwigPyPacked_TypeOnce()) 
     || (strcmp((op)->ob_type->tp_name,"SwigPyPacked") == 0);
 }
@@ -1925,81 +2056,85 @@
 
 SWIGRUNTIME PyTypeObject*
-_PySwigPacked_type(void) {
+SwigPyPacked_TypeOnce(void) {
   static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer";
   static PyTypeObject swigpypacked_type;
-  static int type_init = 0;  
+  static int type_init = 0;
   if (!type_init) {
-    const PyTypeObject tmp
-      = {
-    /* PyObject header changed in Python 3 */
+    const PyTypeObject tmp = {
+      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX>=0x03000000
-    PyVarObject_HEAD_INIT(&PyType_Type, 0)
+      PyVarObject_HEAD_INIT(NULL, 0)
 #else
-	PyObject_HEAD_INIT(NULL)
-    0,				    /* ob_size */	
-#endif
-	(char *)"SwigPyPacked",		    /* tp_name */	
-	sizeof(SwigPyPacked),		    /* tp_basicsize */	
-	0,				    /* tp_itemsize */	
-	(destructor)SwigPyPacked_dealloc,   /* tp_dealloc */	
-	(printfunc)SwigPyPacked_print,	    /* tp_print */   	
-	(getattrfunc)0,			    /* tp_getattr */ 	
-	(setattrfunc)0,			    /* tp_setattr */ 	
+      PyObject_HEAD_INIT(NULL)
+      0,                                    /* ob_size */
+#endif
+      (char *)"SwigPyPacked",               /* tp_name */
+      sizeof(SwigPyPacked),                 /* tp_basicsize */
+      0,                                    /* tp_itemsize */
+      (destructor)SwigPyPacked_dealloc,     /* tp_dealloc */
+      (printfunc)SwigPyPacked_print,        /* tp_print */
+      (getattrfunc)0,                       /* tp_getattr */
+      (setattrfunc)0,                       /* tp_setattr */
 #if PY_VERSION_HEX>=0x03000000
-    0, /* tp_reserved in 3.0.1 */
+      0, /* tp_reserved in 3.0.1 */
 #else
-    (cmpfunc)SwigPyPacked_compare,	    /* tp_compare */
-#endif
-	(reprfunc)SwigPyPacked_repr,	    /* tp_repr */
-	0,	                            /* tp_as_number */
-	0,				    /* tp_as_sequence */
-	0,				    /* tp_as_mapping */
-	(hashfunc)0,			    /* tp_hash */
-	(ternaryfunc)0,			    /* tp_call */
-	(reprfunc)SwigPyPacked_str,	    /* tp_str */
-	PyObject_GenericGetAttr,            /* tp_getattro */
-	0,				    /* tp_setattro */
-	0,		                    /* tp_as_buffer */
-	Py_TPFLAGS_DEFAULT,	            /* tp_flags */
-	swigpacked_doc, 	            /* tp_doc */
-	0,                                  /* tp_traverse */
-	0,                                  /* tp_clear */
-	0,                                  /* tp_richcompare */
-	0,                                  /* tp_weaklistoffset */
+      (cmpfunc)SwigPyPacked_compare,        /* tp_compare */
+#endif
+      (reprfunc)SwigPyPacked_repr,          /* tp_repr */
+      0,                                    /* tp_as_number */
+      0,                                    /* tp_as_sequence */
+      0,                                    /* tp_as_mapping */
+      (hashfunc)0,                          /* tp_hash */
+      (ternaryfunc)0,                       /* tp_call */
+      (reprfunc)SwigPyPacked_str,           /* tp_str */
+      PyObject_GenericGetAttr,              /* tp_getattro */
+      0,                                    /* tp_setattro */
+      0,                                    /* tp_as_buffer */
+      Py_TPFLAGS_DEFAULT,                   /* tp_flags */
+      swigpacked_doc,                       /* tp_doc */
+      0,                                    /* tp_traverse */
+      0,                                    /* tp_clear */
+      0,                                    /* tp_richcompare */
+      0,                                    /* tp_weaklistoffset */
 #if PY_VERSION_HEX >= 0x02020000
-	0,                                  /* tp_iter */
-	0,                                  /* tp_iternext */
-	0,		                    /* tp_methods */ 
-	0,			            /* tp_members */
-	0,				    /* tp_getset */	    	
-	0,			            /* tp_base */	        
-	0,				    /* tp_dict */	    	
-	0,				    /* tp_descr_get */  	
-	0,				    /* tp_descr_set */  	
-	0,				    /* tp_dictoffset */ 	
-	0,				    /* tp_init */	    	
-	0,				    /* tp_alloc */	    	
-	0,			            /* tp_new */	    	
-	0, 	                            /* tp_free */	   
-        0,                                  /* tp_is_gc */  
-	0,				    /* tp_bases */   
-	0,				    /* tp_mro */
-	0,				    /* tp_cache */   
- 	0,				    /* tp_subclasses */
-	0,				    /* tp_weaklist */
+      0,                                    /* tp_iter */
+      0,                                    /* tp_iternext */
+      0,                                    /* tp_methods */
+      0,                                    /* tp_members */
+      0,                                    /* tp_getset */
+      0,                                    /* tp_base */
+      0,                                    /* tp_dict */
+      0,                                    /* tp_descr_get */
+      0,                                    /* tp_descr_set */
+      0,                                    /* tp_dictoffset */
+      0,                                    /* tp_init */
+      0,                                    /* tp_alloc */
+      0,                                    /* tp_new */
+      0,                                    /* tp_free */
+      0,                                    /* tp_is_gc */
+      0,                                    /* tp_bases */
+      0,                                    /* tp_mro */
+      0,                                    /* tp_cache */
+      0,                                    /* tp_subclasses */
+      0,                                    /* tp_weaklist */
 #endif
 #if PY_VERSION_HEX >= 0x02030000
-	0,                                  /* tp_del */
+      0,                                    /* tp_del */
+#endif
+#if PY_VERSION_HEX >= 0x02060000
+      0,                                    /* tp_version */
 #endif
 #ifdef COUNT_ALLOCS
-	0,0,0,0                             /* tp_alloc -> tp_next */
-#endif
-      };
+      0,0,0,0                               /* tp_alloc -> tp_next */
+#endif
+    };
     swigpypacked_type = tmp;
-    /* for Python 3 the ob_type already assigned in PyVarObject_HEAD_INIT() */
-#if PY_VERSION_HEX < 0x03000000
+    type_init = 1;
+#if PY_VERSION_HEX < 0x02020000
     swigpypacked_type.ob_type = &PyType_Type;
-#endif
-    type_init = 1;
+#else
+    if (PyType_Ready(&swigpypacked_type) < 0)
+      return NULL;
+#endif
   }
   return &swigpypacked_type;
@@ -2048,8 +2183,11 @@
 }
 
+static PyObject *swig_this = NULL;
+
 SWIGRUNTIME PyObject *
 SWIG_This(void)
 {
-  static PyObject *SWIG_STATIC_POINTER(swig_this) = _SWIG_This();
+  if (swig_this == NULL)
+    swig_this = _SWIG_This();
   return swig_this;
 }
@@ -2065,48 +2203,63 @@
 SWIG_Python_GetSwigThis(PyObject *pyobj) 
 {
-  if (SwigPyObject_Check(pyobj)) {
+  PyObject *obj;
+
+  if (SwigPyObject_Check(pyobj))
     return (SwigPyObject *) pyobj;
+
+#ifdef SWIGPYTHON_BUILTIN
+  (void)obj;
+# ifdef PyWeakref_CheckProxy
+  if (PyWeakref_CheckProxy(pyobj)) {
+    pyobj = PyWeakref_GET_OBJECT(pyobj);
+    if (pyobj && SwigPyObject_Check(pyobj))
+      return (SwigPyObject*) pyobj;
+  }
+# endif
+  return NULL;
+#else
+
+  obj = 0;
+
+#if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000))
+  if (PyInstance_Check(pyobj)) {
+    obj = _PyInstance_Lookup(pyobj, SWIG_This());      
   } else {
-    PyObject *obj = 0;
-#if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000))
-    if (PyInstance_Check(pyobj)) {
-      obj = _PyInstance_Lookup(pyobj, SWIG_This());      
+    PyObject **dictptr = _PyObject_GetDictPtr(pyobj);
+    if (dictptr != NULL) {
+      PyObject *dict = *dictptr;
+      obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0;
     } else {
-      PyObject **dictptr = _PyObject_GetDictPtr(pyobj);
-      if (dictptr != NULL) {
-	PyObject *dict = *dictptr;
-	obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0;
+#ifdef PyWeakref_CheckProxy
+      if (PyWeakref_CheckProxy(pyobj)) {
+	PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);
+	return wobj ? SWIG_Python_GetSwigThis(wobj) : 0;
+      }
+#endif
+      obj = PyObject_GetAttr(pyobj,SWIG_This());
+      if (obj) {
+	Py_DECREF(obj);
       } else {
-#ifdef PyWeakref_CheckProxy
-	if (PyWeakref_CheckProxy(pyobj)) {
-	  PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);
-	  return wobj ? SWIG_Python_GetSwigThis(wobj) : 0;
-	}
-#endif
-	obj = PyObject_GetAttr(pyobj,SWIG_This());
-	if (obj) {
-	  Py_DECREF(obj);
-	} else {
-	  if (PyErr_Occurred()) PyErr_Clear();
-	  return 0;
-	}
+	if (PyErr_Occurred()) PyErr_Clear();
+	return 0;
       }
     }
+  }
 #else
-    obj = PyObject_GetAttr(pyobj,SWIG_This());
-    if (obj) {
-      Py_DECREF(obj);
-    } else {
-      if (PyErr_Occurred()) PyErr_Clear();
-      return 0;
-    }
-#endif
-    if (obj && !SwigPyObject_Check(obj)) {
-      /* a PyObject is called 'this', try to get the 'real this'
-	 SwigPyObject from it */ 
-      return SWIG_Python_GetSwigThis(obj);
-    }
-    return (SwigPyObject *)obj;
-  }
+  obj = PyObject_GetAttr(pyobj,SWIG_This());
+  if (obj) {
+    Py_DECREF(obj);
+  } else {
+    if (PyErr_Occurred()) PyErr_Clear();
+    return 0;
+  }
+#endif
+  if (obj && !SwigPyObject_Check(obj)) {
+    /* a PyObject is called 'this', try to get the 'real this'
+       SwigPyObject from it */ 
+    return SWIG_Python_GetSwigThis(obj);
+  }
+  return (SwigPyObject *)obj;
+#endif
 }
 
@@ -2130,89 +2283,95 @@
 SWIGRUNTIME int
 SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) {
-  if (!obj) return SWIG_ERROR;
+  int res;
+  SwigPyObject *sobj;
+
+  if (!obj)
+    return SWIG_ERROR;
   if (obj == Py_None) {
-    if (ptr) *ptr = 0;
+    if (ptr)
+      *ptr = 0;
     return SWIG_OK;
+  }
+
+  res = SWIG_ERROR;
+
+  sobj = SWIG_Python_GetSwigThis(obj);
+  if (own)
+    *own = 0;
+  while (sobj) {
+    void *vptr = sobj->ptr;
+    if (ty) {
+      swig_type_info *to = sobj->ty;
+      if (to == ty) {
+        /* no type cast needed */
+        if (ptr) *ptr = vptr;
+        break;
+      } else {
+        swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
+        if (!tc) {
+          sobj = (SwigPyObject *)sobj->next;
+        } else {
+          if (ptr) {
+            int newmemory = 0;
+            *ptr = SWIG_TypeCast(tc,vptr,&newmemory);
+            if (newmemory == SWIG_CAST_NEW_MEMORY) {
+              assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */
+              if (own)
+                *own = *own | SWIG_CAST_NEW_MEMORY;
+            }
+          }
+          break;
+        }
+      }
+    } else {
+      if (ptr) *ptr = vptr;
+      break;
+    }
+  }
+  if (sobj) {
+    if (own)
+      *own = *own | sobj->own;
+    if (flags & SWIG_POINTER_DISOWN) {
+      sobj->own = 0;
+    }
+    res = SWIG_OK;
   } else {
-    SwigPyObject *sobj = SWIG_Python_GetSwigThis(obj);
-    if (own)
-      *own = 0;
-    while (sobj) {
-      void *vptr = sobj->ptr;
-      if (ty) {
-	swig_type_info *to = sobj->ty;
-	if (to == ty) {
-	  /* no type cast needed */
-	  if (ptr) *ptr = vptr;
-	  break;
-	} else {
-	  swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
-	  if (!tc) {
-	    sobj = (SwigPyObject *)sobj->next;
-	  } else {
-	    if (ptr) {
-              int newmemory = 0;
-              *ptr = SWIG_TypeCast(tc,vptr,&newmemory);
-              if (newmemory == SWIG_CAST_NEW_MEMORY) {
-                assert(own);
-                if (own)
-                  *own = *own | SWIG_CAST_NEW_MEMORY;
+    if (flags & SWIG_POINTER_IMPLICIT_CONV) {
+      SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
+      if (data && !data->implicitconv) {
+        PyObject *klass = data->klass;
+        if (klass) {
+          PyObject *impconv;
+          data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/
+          impconv = SWIG_Python_CallFunctor(klass, obj);
+          data->implicitconv = 0;
+          if (PyErr_Occurred()) {
+            PyErr_Clear();
+            impconv = 0;
+          }
+          if (impconv) {
+            SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv);
+            if (iobj) {
+              void *vptr;
+              res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0);
+              if (SWIG_IsOK(res)) {
+                if (ptr) {
+                  *ptr = vptr;
+                  /* transfer the ownership to 'ptr' */
+                  iobj->own = 0;
+                  res = SWIG_AddCast(res);
+                  res = SWIG_AddNewMask(res);
+                } else {
+                  res = SWIG_AddCast(res);		    
+                }
               }
             }
-	    break;
-	  }
-	}
-      } else {
-	if (ptr) *ptr = vptr;
-	break;
+            Py_DECREF(impconv);
+          }
+        }
       }
     }
-    if (sobj) {
-      if (own)
-        *own = *own | sobj->own;
-      if (flags & SWIG_POINTER_DISOWN) {
-	sobj->own = 0;
-      }
-      return SWIG_OK;
-    } else {
-      int res = SWIG_ERROR;
-      if (flags & SWIG_POINTER_IMPLICIT_CONV) {
-	SwigPyClientData *data = ty ? (SwigPyClientData *) ty->clientdata : 0;
-	if (data && !data->implicitconv) {
-	  PyObject *klass = data->klass;
-	  if (klass) {
-	    PyObject *impconv;
-	    data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/
-	    impconv = SWIG_Python_CallFunctor(klass, obj);
-	    data->implicitconv = 0;
-	    if (PyErr_Occurred()) {
-	      PyErr_Clear();
-	      impconv = 0;
-	    }
-	    if (impconv) {
-	      SwigPyObject *iobj = SWIG_Python_GetSwigThis(impconv);
-	      if (iobj) {
-		void *vptr;
-		res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0);
-		if (SWIG_IsOK(res)) {
-		  if (ptr) {
-		    *ptr = vptr;
-		    /* transfer the ownership to 'ptr' */
-		    iobj->own = 0;
-		    res = SWIG_AddCast(res);
-		    res = SWIG_AddNewMask(res);
-		  } else {
-		    res = SWIG_AddCast(res);		    
-		  }
-		}
-	      }
-	      Py_DECREF(impconv);
-	    }
-	  }
-	}
-      }
-      return res;
-    }
-  }
+  }
+  return res;
 }
 
@@ -2368,5 +2527,5 @@
 SWIG_Python_InitShadowInstance(PyObject *args) {
   PyObject *obj[2];
-  if (!SWIG_Python_UnpackTuple(args,(char*)"swiginit", 2, 2, obj)) {
+  if (!SWIG_Python_UnpackTuple(args, "swiginit", 2, 2, obj)) {
     return NULL;
   } else {
@@ -2384,20 +2543,52 @@
 
 SWIGRUNTIME PyObject *
-SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int flags) {
-  if (!ptr) {
+SWIG_Python_NewPointerObj(PyObject *self, void *ptr, swig_type_info *type, int flags) {
+  SwigPyClientData *clientdata;
+  PyObject * robj;
+  int own;
+
+  if (!ptr)
     return SWIG_Py_Void();
-  } else {
-    int own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0;
-    PyObject *robj = SwigPyObject_New(ptr, type, own);
-    SwigPyClientData *clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0;
-    if (clientdata && !(flags & SWIG_POINTER_NOSHADOW)) {
-      PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj);
-      if (inst) {
-	Py_DECREF(robj);
-	robj = inst;
+
+  clientdata = type ? (SwigPyClientData *)(type->clientdata) : 0;
+  own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0;
+  if (clientdata && clientdata->pytype) {
+    SwigPyObject *newobj;
+    if (flags & SWIG_BUILTIN_TP_INIT) {
+      newobj = (SwigPyObject*) self;
+      if (newobj->ptr) {
+        PyObject *next_self = clientdata->pytype->tp_alloc(clientdata->pytype, 0);
+        while (newobj->next)
+	  newobj = (SwigPyObject *) newobj->next;
+        newobj->next = next_self;
+        newobj = (SwigPyObject *)next_self;
       }
-    }
-    return robj;
-  }
+    } else {
+      newobj = PyObject_New(SwigPyObject, clientdata->pytype);
+    }
+    if (newobj) {
+      newobj->ptr = ptr;
+      newobj->ty = type;
+      newobj->own = own;
+      newobj->next = 0;
+#ifdef SWIGPYTHON_BUILTIN
+      newobj->dict = 0;
+#endif
+      return (PyObject*) newobj;
+    }
+    return SWIG_Py_Void();
+  }
+
+  assert(!(flags & SWIG_BUILTIN_TP_INIT));
+
+  robj = SwigPyObject_New(ptr, type, own);
+  if (clientdata && !(flags & SWIG_POINTER_NOSHADOW)) {
+    PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj);
+    if (inst) {
+      Py_DECREF(robj);
+      robj = inst;
+    }
+  }
+  return robj;
 }
 
@@ -2425,6 +2616,10 @@
     type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
 #else
+# ifdef SWIGPY_USE_CAPSULE
+    type_pointer = PyCapsule_Import(SWIGPY_CAPSULE_NAME, 0);
+# else
     type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
 				    (char*)"type_pointer" SWIG_TYPE_TABLE_NAME);
+# endif
     if (PyErr_Occurred()) {
       PyErr_Clear();
@@ -2469,7 +2664,15 @@
 
 SWIGRUNTIME void
+#ifdef SWIGPY_USE_CAPSULE
+SWIG_Python_DestroyModule(PyObject *obj)
+#else
 SWIG_Python_DestroyModule(void *vptr)
+#endif
 {
+#ifdef SWIGPY_USE_CAPSULE
+  swig_module_info *swig_module = (swig_module_info *) PyCapsule_GetPointer(obj, SWIGPY_CAPSULE_NAME);
+#else
   swig_module_info *swig_module = (swig_module_info *) vptr;
+#endif
   swig_type_info **types = swig_module->types;
   size_t i;
@@ -2482,17 +2685,24 @@
   }
   Py_DECREF(SWIG_This());
+  swig_this = NULL;
 }
 
 SWIGRUNTIME void
 SWIG_Python_SetModule(swig_module_info *swig_module) {
-  static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} };/* Sentinel */
-
 #if PY_VERSION_HEX >= 0x03000000
  /* Add a dummy module object into sys.modules */
   PyObject *module = PyImport_AddModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION);
 #else
-  PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
-				   swig_empty_runtime_method_table);
-#endif
+  static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} }; /* Sentinel */
+  PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, swig_empty_runtime_method_table);
+#endif
+#ifdef SWIGPY_USE_CAPSULE
+  PyObject *pointer = PyCapsule_New((void *) swig_module, SWIGPY_CAPSULE_NAME, SWIG_Python_DestroyModule);
+  if (pointer && module) {
+    PyModule_AddObject(module, (char*)"type_pointer_capsule" SWIG_TYPE_TABLE_NAME, pointer);
+  } else {
+    Py_XDECREF(pointer);
+  }
+#else
   PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule);
   if (pointer && module) {
@@ -2501,4 +2711,5 @@
     Py_XDECREF(pointer);
   }
+#endif
 }
 
@@ -2518,10 +2729,18 @@
   swig_type_info *descriptor;
   if (obj) {
+#ifdef SWIGPY_USE_CAPSULE
+    descriptor = (swig_type_info *) PyCapsule_GetPointer(obj, NULL);
+#else
     descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj);
+#endif
   } else {
     swig_module_info *swig_module = SWIG_Python_GetModule();
     descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type);
     if (descriptor) {
+#ifdef SWIGPY_USE_CAPSULE
+      obj = PyCapsule_New((void*) descriptor, NULL, NULL);
+#else
       obj = PyCObject_FromVoidPtr(descriptor, NULL);
+#endif
       PyDict_SetItem(cache, key, obj);
       Py_DECREF(obj);
@@ -2584,5 +2803,5 @@
   SwigPyObject *v = (SwigPyObject *)self;
   swig_type_info *ty = v ? v->ty : 0;
-  return ty ? ty->str : (char*)"";
+  return ty ? ty->str : "";
 }
 
@@ -2627,5 +2846,5 @@
 /* Convert a pointer value, signal an exception on a type mismatch */
 SWIGRUNTIME void *
-SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) {
+SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int SWIGUNUSEDPARM(argnum), int flags) {
   void *result;
   if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
@@ -2641,9 +2860,60 @@
 }
 
+#ifdef SWIGPYTHON_BUILTIN
+SWIGRUNTIME int
+SWIG_Python_NonDynamicSetAttr(PyObject *obj, PyObject *name, PyObject *value) {
+  PyTypeObject *tp = obj->ob_type;
+  PyObject *descr;
+  PyObject *encoded_name;
+  descrsetfunc f;
+  int res;
+
+# ifdef Py_USING_UNICODE
+  if (PyString_Check(name)) {
+    name = PyUnicode_Decode(PyString_AsString(name), PyString_Size(name), NULL, NULL);
+    if (!name)
+      return -1;
+  } else if (!PyUnicode_Check(name))
+# else
+  if (!PyString_Check(name))
+# endif
+  {
+    PyErr_Format(PyExc_TypeError, "attribute name must be string, not '%.200s'", name->ob_type->tp_name);
+    return -1;
+  } else {
+    Py_INCREF(name);
+  }
+
+  if (!tp->tp_dict) {
+    if (PyType_Ready(tp) < 0)
+      goto done;
+  }
+
+  res = -1;
+  descr = _PyType_Lookup(tp, name);
+  f = NULL;
+  if (descr != NULL)
+    f = descr->ob_type->tp_descr_set;
+  if (!f) {
+    if (PyString_Check(name)) {
+      encoded_name = name;
+      Py_INCREF(name);
+    } else {
+      encoded_name = PyUnicode_AsUTF8String(name);
+    }
+    PyErr_Format(PyExc_AttributeError, "'%.100s' object has no attribute '%.200s'", tp->tp_name, PyString_AsString(encoded_name));
+    Py_DECREF(encoded_name);
+  } else {
+    res = f(descr, obj, value);
+  }
+  
+  done:
+  Py_DECREF(name);
+  return res;
+}
+#endif
+
 
 #ifdef __cplusplus
-#if 0
-{ /* cc-mode */
-#endif
 }
 #endif
@@ -2691,5 +2961,5 @@
 #define SWIG_name    "_pbs"
 
-#define SWIGVERSION 0x010340 
+#define SWIGVERSION 0x020007 
 #define SWIG_VERSION SWIGVERSION
 
@@ -2791,5 +3061,5 @@
     bzero( (void*) current->resource, sizeof(current->resource));
     bzero( (void*) current->value, sizeof(current->value));
-    current->op = 0;
+    // current->op = 0;
 
     current->next     = prev;
@@ -2971,11 +3241,8 @@
 
 
-  #define SWIG_From_long   PyInt_FromLong 
-
-
-SWIGINTERNINLINE PyObject *
-SWIG_From_int  (int value)
-{    
-  return SWIG_From_long  (value);
+SWIGINTERNINLINE PyObject*
+  SWIG_From_int  (int value)
+{
+  return PyInt_FromLong((long) value);
 }
 
@@ -3001,5 +3268,5 @@
       swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
       return pchar_descriptor ? 
-	SWIG_NewPointerObj((char *)(carray), pchar_descriptor, 0) : SWIG_Py_Void();
+	SWIG_InternalNewPointerObj((char *)(carray), pchar_descriptor, 0) : SWIG_Py_Void();
     } else {
 #if PY_VERSION_HEX >= 0x03000000
@@ -3189,4 +3456,7 @@
   return res;
 }
+
+
+  #define SWIG_From_long   PyLong_FromLong 
 
 
@@ -8191,22 +8461,21 @@
     static char varlink__doc__[] = "Swig var link object";
     static PyTypeObject varlink_type;
-    static int type_init = 0;  
+    static int type_init = 0;
     if (!type_init) {
-      const PyTypeObject tmp
-      = {
+      const PyTypeObject tmp = {
         /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX >= 0x03000000
-        PyVarObject_HEAD_INIT(&PyType_Type, 0)
+        PyVarObject_HEAD_INIT(NULL, 0)
 #else
         PyObject_HEAD_INIT(NULL)
-        0,                                  /* Number of items in variable part (ob_size) */
-#endif
-        (char *)"swigvarlink",              /* Type name (tp_name) */
-        sizeof(swig_varlinkobject),         /* Basic size (tp_basicsize) */
-        0,                                  /* Itemsize (tp_itemsize) */
-        (destructor) swig_varlink_dealloc,  /* Deallocator (tp_dealloc) */ 
-        (printfunc) swig_varlink_print,     /* Print (tp_print) */
-        (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */
-        (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */
+        0,                                  /* ob_size */
+#endif
+        (char *)"swigvarlink",              /* tp_name */
+        sizeof(swig_varlinkobject),         /* tp_basicsize */
+        0,                                  /* tp_itemsize */
+        (destructor) swig_varlink_dealloc,  /* tp_dealloc */
+        (printfunc) swig_varlink_print,     /* tp_print */
+        (getattrfunc) swig_varlink_getattr, /* tp_getattr */
+        (setattrfunc) swig_varlink_setattr, /* tp_setattr */
         0,                                  /* tp_compare */
         (reprfunc) swig_varlink_repr,       /* tp_repr */
@@ -8232,4 +8501,7 @@
         0,                                  /* tp_del */
 #endif
+#if PY_VERSION_HEX >= 0x02060000
+        0,                                  /* tp_version */
+#endif
 #ifdef COUNT_ALLOCS
         0,0,0,0                             /* tp_alloc -> tp_next */
@@ -8237,9 +8509,11 @@
       };
       varlink_type = tmp;
-      /* for Python 3 we already assigned ob_type in PyVarObject_HEAD_INIT() */
-#if PY_VERSION_HEX < 0x03000000
+      type_init = 1;
+#if PY_VERSION_HEX < 0x02020000
       varlink_type.ob_type = &PyType_Type;
-#endif
-      type_init = 1;
+#else
+      if (PyType_Ready(&varlink_type) < 0)
+      return NULL;
+#endif
     }
     return &varlink_type;
@@ -8292,5 +8566,5 @@
       switch(constants[i].type) {
       case SWIG_PY_POINTER:
-        obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
+        obj = SWIG_InternalNewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
         break;
       case SWIG_PY_BINARY:
@@ -8332,13 +8606,13 @@
         }
         if (ci) {
-          size_t shift = (ci->ptype) - types;
-          swig_type_info *ty = types_initial[shift];
-          size_t ldoc = (c - methods[i].ml_doc);
-          size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
-          char *ndoc = (char*)malloc(ldoc + lptr + 10);
-          if (ndoc) {
-            char *buff = ndoc;
-            void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0;
-            if (ptr) {
+          void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0;
+          if (ptr) {
+            size_t shift = (ci->ptype) - types;
+            swig_type_info *ty = types_initial[shift];
+            size_t ldoc = (c - methods[i].ml_doc);
+            size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
+            char *ndoc = (char*)malloc(ldoc + lptr + 10);
+            if (ndoc) {
+              char *buff = ndoc;
               strncpy(buff, methods[i].ml_doc, ldoc);
               buff += ldoc;
@@ -8373,8 +8647,17 @@
 #endif
 SWIG_init(void) {
-  PyObject *m, *d;  
+  PyObject *m, *d, *md;
 #if PY_VERSION_HEX >= 0x03000000
   static struct PyModuleDef SWIG_module = {
+# if PY_VERSION_HEX >= 0x03020000
     PyModuleDef_HEAD_INIT,
+# else
+    {
+      PyObject_HEAD_INIT(NULL)
+      NULL, /* m_init */
+      0,    /* m_index */
+      NULL, /* m_copy */
+    },
+# endif
     (char *) SWIG_name,
     NULL,
@@ -8388,4 +8671,47 @@
 #endif
   
+#if defined(SWIGPYTHON_BUILTIN)
+  static SwigPyClientData SwigPyObject_clientdata = {
+    0, 0, 0, 0, 0, 0, 0
+  };
+  static PyGetSetDef this_getset_def = {
+    (char *)"this", &SwigPyBuiltin_ThisClosure, NULL, NULL, NULL
+  };
+  static SwigPyGetSet thisown_getset_closure = {
+    (PyCFunction) SwigPyObject_own,
+    (PyCFunction) SwigPyObject_own
+  };
+  static PyGetSetDef thisown_getset_def = {
+    (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure
+  };
+  PyObject *metatype_args;
+  PyTypeObject *builtin_pytype;
+  int builtin_base_count;
+  swig_type_info *builtin_basetype;
+  PyObject *tuple;
+  PyGetSetDescrObject *static_getset;
+  PyTypeObject *metatype;
+  SwigPyClientData *cd;
+  PyObject *public_interface, *public_symbol;
+  PyObject *this_descr;
+  PyObject *thisown_descr;
+  int i;
+  
+  (void)builtin_pytype;
+  (void)builtin_base_count;
+  (void)builtin_basetype;
+  (void)tuple;
+  (void)static_getset;
+  
+  /* metatype is used to implement static member variables. */
+  metatype_args = Py_BuildValue("(s(O){})", "SwigPyObjectType", &PyType_Type);
+  assert(metatype_args);
+  metatype = (PyTypeObject *) PyType_Type.tp_call((PyObject *) &PyType_Type, metatype_args, NULL);
+  assert(metatype);
+  Py_DECREF(metatype_args);
+  metatype->tp_setattro = (setattrofunc) &SwigPyObjectType_setattro;
+  assert(PyType_Ready(metatype) >= 0);
+#endif
+  
   /* Fix SwigMethods to carry the callback ptrs when needed */
   SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial);
@@ -8396,9 +8722,45 @@
   m = Py_InitModule((char *) SWIG_name, SwigMethods);
 #endif
-  d = PyModule_GetDict(m);
+  md = d = PyModule_GetDict(m);
   
   SWIG_InitializeModule(0);
+  
+#ifdef SWIGPYTHON_BUILTIN
+  SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject");
+  assert(SwigPyObject_stype);
+  cd = (SwigPyClientData*) SwigPyObject_stype->clientdata;
+  if (!cd) {
+    SwigPyObject_stype->clientdata = &SwigPyObject_clientdata;
+    SwigPyObject_clientdata.pytype = SwigPyObject_TypeOnce();
+  } else if (SwigPyObject_TypeOnce()->tp_basicsize != cd->pytype->tp_basicsize) {
+    PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules.");
+# if PY_VERSION_HEX >= 0x03000000
+    return NULL;
+# else
+    return;
+# endif
+  }
+  
+  /* All objects have a 'this' attribute */
+  this_descr = PyDescr_NewGetSet(SwigPyObject_type(), &this_getset_def);
+  (void)this_descr;
+  
+  /* All objects have a 'thisown' attribute */
+  thisown_descr = PyDescr_NewGetSet(SwigPyObject_type(), &thisown_getset_def);
+  (void)thisown_descr;
+  
+  public_interface = PyList_New(0);
+  public_symbol = 0;
+  (void)public_symbol;
+  
+  PyDict_SetItemString(md, "__all__", public_interface);
+  Py_DECREF(public_interface);
+  for (i = 0; SwigMethods[i].ml_name != NULL; ++i)
+  SwigPyBuiltin_AddPublicSymbol(public_interface, SwigMethods[i].ml_name);
+  for (i = 0; swig_const_table[i].name != 0; ++i)
+  SwigPyBuiltin_AddPublicSymbol(public_interface, swig_const_table[i].name);
+#endif
+  
   SWIG_InstallConstants(d,swig_const_table);
-  
   
   SWIG_Python_SetConstant(d, "ATTR_a",SWIG_FromCharPtr("Execution_Time"));
@@ -8421,4 +8783,5 @@
   SWIG_Python_SetConstant(d, "ATTR_v",SWIG_FromCharPtr("Variable_List"));
   SWIG_Python_SetConstant(d, "ATTR_A",SWIG_FromCharPtr("Account_Name"));
+  SWIG_Python_SetConstant(d, "ATTR_args",SWIG_FromCharPtr("job_arguments"));
   SWIG_Python_SetConstant(d, "ATTR_M",SWIG_FromCharPtr("Mail_Users"));
   SWIG_Python_SetConstant(d, "ATTR_N",SWIG_FromCharPtr("Job_Name"));
@@ -8429,4 +8792,6 @@
   SWIG_Python_SetConstant(d, "ATTR_stageout",SWIG_FromCharPtr("stageout"));
   SWIG_Python_SetConstant(d, "ATTR_jobtype",SWIG_FromCharPtr("jobtype"));
+  SWIG_Python_SetConstant(d, "ATTR_submit_host",SWIG_FromCharPtr("submit_host"));
+  SWIG_Python_SetConstant(d, "ATTR_init_work_dir",SWIG_FromCharPtr("init_work_dir"));
   SWIG_Python_SetConstant(d, "ATTR_ctime",SWIG_FromCharPtr("ctime"));
   SWIG_Python_SetConstant(d, "ATTR_exechost",SWIG_FromCharPtr("exec_host"));
@@ -8471,4 +8836,7 @@
   SWIG_Python_SetConstant(d, "ATTR_reported",SWIG_FromCharPtr("reported"));
   SWIG_Python_SetConstant(d, "ATTR_intcmd",SWIG_FromCharPtr("inter_cmd"));
+  SWIG_Python_SetConstant(d, "ATTR_P",SWIG_FromCharPtr("proxy_user"));
+  SWIG_Python_SetConstant(d, "ATTR_exec_gpus",SWIG_FromCharPtr("exec_gpus"));
+  SWIG_Python_SetConstant(d, "ATTR_J",SWIG_FromCharPtr("job_id"));
   SWIG_Python_SetConstant(d, "ATTR_aclgren",SWIG_FromCharPtr("acl_group_enable"));
   SWIG_Python_SetConstant(d, "ATTR_aclgroup",SWIG_FromCharPtr("acl_groups"));
@@ -8479,4 +8847,5 @@
   SWIG_Python_SetConstant(d, "ATTR_altrouter",SWIG_FromCharPtr("alt_router"));
   SWIG_Python_SetConstant(d, "ATTR_checkpoint_min",SWIG_FromCharPtr("checkpoint_min"));
+  SWIG_Python_SetConstant(d, "ATTR_checkpoint_defaults",SWIG_FromCharPtr("checkpoint_defaults"));
   SWIG_Python_SetConstant(d, "ATTR_enable",SWIG_FromCharPtr("enabled"));
   SWIG_Python_SetConstant(d, "ATTR_fromroute",SWIG_FromCharPtr("from_route_only"));
@@ -8561,5 +8930,17 @@
   SWIG_Python_SetConstant(d, "ATTR_LockfileCheckTime",SWIG_FromCharPtr("lock_file_check_time"));
   SWIG_Python_SetConstant(d, "ATTR_npdefault",SWIG_FromCharPtr("np_default"));
+  SWIG_Python_SetConstant(d, "ATTR_clonebatchsize",SWIG_FromCharPtr("clone_batch_size"));
+  SWIG_Python_SetConstant(d, "ATTR_clonebatchdelay",SWIG_FromCharPtr("clone_batch_delay"));
   SWIG_Python_SetConstant(d, "ATTR_jobstarttimeout",SWIG_FromCharPtr("job_start_timeout"));
+  SWIG_Python_SetConstant(d, "ATTR_jobforcecanceltime",SWIG_FromCharPtr("job_force_cancel_time"));
+  SWIG_Python_SetConstant(d, "ATTR_maxarraysize",SWIG_FromCharPtr("max_job_array_size"));
+  SWIG_Python_SetConstant(d, "ATTR_maxslotlimit",SWIG_FromCharPtr("max_slot_limit"));
+  SWIG_Python_SetConstant(d, "ATTR_recordjobinfo",SWIG_FromCharPtr("record_job_info"));
+  SWIG_Python_SetConstant(d, "ATTR_recordjobscript",SWIG_FromCharPtr("record_job_script"));
+  SWIG_Python_SetConstant(d, "ATTR_joblogfilemaxsize",SWIG_FromCharPtr("job_log_file_max_size"));
+  SWIG_Python_SetConstant(d, "ATTR_joblogfilerolldepth",SWIG_FromCharPtr("job_log_file_roll_depth"));
+  SWIG_Python_SetConstant(d, "ATTR_joblogkeepdays",SWIG_FromCharPtr("job_log_keep_days"));
+  SWIG_Python_SetConstant(d, "ATTR_moabarraycompatible",SWIG_FromCharPtr("moab_array_compatible"));
+  SWIG_Python_SetConstant(d, "ATTR_nomailforce",SWIG_FromCharPtr("no_mail_force"));
   SWIG_Python_SetConstant(d, "ATTR_NODE_state",SWIG_FromCharPtr("state"));
   SWIG_Python_SetConstant(d, "ATTR_NODE_np",SWIG_FromCharPtr("np"));
@@ -8569,4 +8950,6 @@
   SWIG_Python_SetConstant(d, "ATTR_NODE_status",SWIG_FromCharPtr("status"));
   SWIG_Python_SetConstant(d, "ATTR_NODE_note",SWIG_FromCharPtr("note"));
+  SWIG_Python_SetConstant(d, "ATTR_NODE_gpus",SWIG_FromCharPtr("gpus"));
+  SWIG_Python_SetConstant(d, "ATTR_NODE_gpustatus",SWIG_FromCharPtr("gpu_status"));
   SWIG_Python_SetConstant(d, "ATTR_mailsubjectfmt",SWIG_FromCharPtr("mail_subject_fmt"));
   SWIG_Python_SetConstant(d, "ATTR_mailbodyfmt",SWIG_FromCharPtr("mail_body_fmt"));
@@ -8576,6 +8959,8 @@
   SWIG_Python_SetConstant(d, "NO_KEEP",SWIG_FromCharPtr("n"));
   SWIG_Python_SetConstant(d, "MAIL_AT_ABORT",SWIG_FromCharPtr("a"));
+  SWIG_Python_SetConstant(d, "ARRAY_RANGE",SWIG_FromCharPtr("array_range="));
   SWIG_Python_SetConstant(d, "DELDELAY",SWIG_FromCharPtr("deldelay="));
   SWIG_Python_SetConstant(d, "DELPURGE",SWIG_FromCharPtr("delpurge="));
+  SWIG_Python_SetConstant(d, "DELASYNC",SWIG_FromCharPtr("delasync"));
   SWIG_Python_SetConstant(d, "PURGECOMP",SWIG_FromCharPtr("purgecomplete="));
   SWIG_Python_SetConstant(d, "EXECQUEONLY",SWIG_FromCharPtr("exec_queue_only"));
@@ -8593,4 +8978,7 @@
   SWIG_Python_SetConstant(d, "ND_state_unknown",SWIG_FromCharPtr("state-unknown"));
   SWIG_Python_SetConstant(d, "ND_timeshared",SWIG_FromCharPtr("time-shared"));
+  SWIG_Python_SetConstant(d, "ND_active",SWIG_FromCharPtr("active"));
+  SWIG_Python_SetConstant(d, "ND_all",SWIG_FromCharPtr("all"));
+  SWIG_Python_SetConstant(d, "ND_up",SWIG_FromCharPtr("up"));
   SWIG_Python_SetConstant(d, "ND_cluster",SWIG_FromCharPtr("cluster"));
   SWIG_Python_SetConstant(d, "Q_DT_batch",SWIG_FromCharPtr("batch"));
@@ -8629,12 +9017,13 @@
   SWIG_Python_SetConstant(d, "PBS_MAXUSER",SWIG_From_int((int)(32)));
   SWIG_Python_SetConstant(d, "PBS_MAXGRPN",SWIG_From_int((int)(16)));
+  SWIG_Python_SetConstant(d, "PBS_MAXGPUID",SWIG_From_int((int)(16)));
   SWIG_Python_SetConstant(d, "PBS_MAXQUEUENAME",SWIG_From_int((int)(15)));
   SWIG_Python_SetConstant(d, "PBS_MAXSERVERNAME",SWIG_From_int((int)(1024)));
-  SWIG_Python_SetConstant(d, "PBS_MAXJOBARRAYLEN",SWIG_From_int((int)(6)));
+  SWIG_Python_SetConstant(d, "PBS_MAXJOBARRAYLEN",SWIG_From_int((int)(7)));
   SWIG_Python_SetConstant(d, "PBS_MAXSEQNUM",SWIG_From_int((int)(8)));
   SWIG_Python_SetConstant(d, "PBS_MAXPORTNUM",SWIG_From_int((int)(5)));
   SWIG_Python_SetConstant(d, "PBS_MAXJOBARRAY",SWIG_From_int((int)(99999)));
-  SWIG_Python_SetConstant(d, "PBS_MAXSVRJOBID",SWIG_From_int((int)((8+1024+5+6+2))));
-  SWIG_Python_SetConstant(d, "PBS_MAXCLTJOBID",SWIG_From_int((int)(((8+1024+5+6+2) +1024+5+6+2))));
+  SWIG_Python_SetConstant(d, "PBS_MAXSVRJOBID",SWIG_From_int((int)((8+1024+5+7+2))));
+  SWIG_Python_SetConstant(d, "PBS_MAXCLTJOBID",SWIG_From_int((int)(((8+1024+5+7+2) +1024+5+7+2))));
   SWIG_Python_SetConstant(d, "PBS_MAXDEST",SWIG_From_int((int)(1024)));
   SWIG_Python_SetConstant(d, "PBS_MAXROUTEDEST",SWIG_From_int((int)((15+1024+5+2))));
@@ -8644,6 +9033,6 @@
   SWIG_Python_SetConstant(d, "PBS_TERM_CCA",SWIG_From_int((int)(6)));
   SWIG_Python_SetConstant(d, "PBS_QS_VERSION_BASE",SWIG_From_int((int)(0x00020300)));
-  SWIG_Python_SetConstant(d, "PBS_QS_VERSION_INT",SWIG_From_int((int)(1)));
-  SWIG_Python_SetConstant(d, "PBS_QS_VERSION",SWIG_From_int((int)((0x00020300+1))));
+  SWIG_Python_SetConstant(d, "PBS_QS_VERSION_INT",SWIG_From_int((int)(2)));
+  SWIG_Python_SetConstant(d, "PBS_QS_VERSION",SWIG_From_int((int)((0x00020300+2))));
   SWIG_Python_SetConstant(d, "PBS_BATCH_SERVICE_NAME",SWIG_FromCharPtr("pbs"));
   SWIG_Python_SetConstant(d, "PBS_BATCH_SERVICE_PORT",SWIG_From_int((int)(15001)));
@@ -8659,4 +9048,5 @@
   SWIG_Python_SetConstant(d, "CHECKPOINTCONT",SWIG_FromCharPtr("checkpoint_cont"));
   SWIG_Python_SetConstant(d, "MOM_DEFAULT_CHECKPOINT_DIR",SWIG_FromCharPtr("$MOMDEFAULTCHECKPOINTDIR$"));
+  SWIG_Python_SetConstant(d, "NO_MOM_RELAY",SWIG_From_int((int)(1)));
   SWIG_Python_SetConstant(d, "SET",SWIG_From_int((int)(SET)));
   SWIG_Python_SetConstant(d, "UNSET",SWIG_From_int((int)(UNSET)));
@@ -8671,5 +9061,6 @@
   SWIG_Python_SetConstant(d, "DFLT",SWIG_From_int((int)(DFLT)));
   SWIG_Python_SetConstant(d, "MERGE",SWIG_From_int((int)(MERGE)));
-  PyDict_SetItemString(d,(char*)"cvar", SWIG_globals());
+  SWIG_Python_SetConstant(d, "INCR_OLD",SWIG_From_int((int)(INCR_OLD)));
+  PyDict_SetItemString(md,(char*)"cvar", SWIG_globals());
   SWIG_addvarlink(SWIG_globals(),(char*)"pbs_errno",Swig_var_pbs_errno_get, Swig_var_pbs_errno_set);
   SWIG_addvarlink(SWIG_globals(),(char*)"pbs_server",Swig_var_pbs_server_get, Swig_var_pbs_server_set);
Index: /devel/README
===================================================================
--- /devel/README	(revision 317)
+++ /devel/README	(revision 318)
@@ -6,3 +6,3 @@
 
 If you want to assist in the development of the pbs_python package ask for write access:
- * email: pbs_python@susrfsara.nl
+ * email: pbs_python@surfsara.nl
Index: /devel/pbs_node_info
===================================================================
--- /devel/pbs_node_info	(revision 317)
+++ /devel/pbs_node_info	(revision 318)
@@ -11,4 +11,9 @@
 
   nodes = pbs.pbs_statnode(c, '', 'NULL', 'NULL')
+  e, txt=  pbs.error()
+  if e:
+    print txt
+
+  sys.exit(1)
 
   for node in nodes:
