/* Generated by Pyrex 0.9.4.1 on Mon Jul 23 17:45:50 2007 */

#define PY_SSIZE_T_CLEAN
#include "Python.h"
#include "structmember.h"
#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#if PY_VERSION_HEX < 0x02050000
  typedef int Py_ssize_t;
  #define PY_SSIZE_T_MAX INT_MAX
  #define PY_SSIZE_T_MIN INT_MIN
  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
  #define PyInt_AsSsize_t(o)   PyInt_AsLong(o)
#endif
#ifdef __cplusplus
#define __PYX_EXTERN_C extern "C"
#else
#define __PYX_EXTERN_C extern
#endif
__PYX_EXTERN_C double pow(double, double);
#include "math.h"


typedef struct {PyObject **p; char *s;} __Pyx_InternTabEntry; /*proto*/
typedef struct {PyObject **p; char *s; long n;} __Pyx_StringTabEntry; /*proto*/
static PyObject *__Pyx_UnpackItem(PyObject *, Py_ssize_t); /*proto*/
static int __Pyx_EndUnpack(PyObject *, Py_ssize_t); /*proto*/
static int __Pyx_PrintItem(PyObject *); /*proto*/
static int __Pyx_PrintNewline(void); /*proto*/
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
static void __Pyx_ReRaise(void); /*proto*/
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/
static PyObject *__Pyx_GetExcValue(void); /*proto*/
static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, char *name); /*proto*/
static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
static int __Pyx_GetStarArgs(PyObject **args, PyObject **kwds, char *kwd_list[], Py_ssize_t nargs, PyObject **args2, PyObject **kwds2); /*proto*/
static void __Pyx_WriteUnraisable(char *name); /*proto*/
static void __Pyx_AddTraceback(char *funcname); /*proto*/
static PyTypeObject *__Pyx_ImportType(char *module_name, char *class_name, long size);  /*proto*/
static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/
static int __Pyx_GetVtable(PyObject *dict, void *vtabptr); /*proto*/
static PyObject *__Pyx_CreateClass(PyObject *bases, PyObject *dict, PyObject *name, char *modname); /*proto*/
static int __Pyx_InternStrings(__Pyx_InternTabEntry *t); /*proto*/
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/

static PyObject *__pyx_m;
static PyObject *__pyx_b;
static int __pyx_lineno;
static char *__pyx_filename;
static char **__pyx_f;

static char __pyx_mdoc[] = "\nrabbyt.dynamicvalues\n";

/* Declarations from rabbyt.dynamicvalues */


struct __pyx_obj_6rabbyt_13dynamicvalues_Anim {
  PyObject_HEAD
  struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim *__pyx_vtab;
};

struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim {
  float ((*g)(struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *));
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim *__pyx_vtabptr_6rabbyt_13dynamicvalues_Anim;


struct __pyx_obj_6rabbyt_13dynamicvalues_AnimConst {
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim __pyx_base;
  float v;
};

struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimConst {
  struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim __pyx_base;
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimConst *__pyx_vtabptr_6rabbyt_13dynamicvalues_AnimConst;


struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp {
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim __pyx_base;
  float start;
  float end;
  int startt;
  int endt;
  int extend;
  float one_over_dt;
};

struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimLerp {
  struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim __pyx_base;
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimLerp *__pyx_vtabptr_6rabbyt_13dynamicvalues_AnimLerp;


struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier {
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim __pyx_base;
  float p0;
  int startt;
  int endt;
  int extend;
  float one_over_dt;
  float a;
  float b;
  float c;
};

struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimStaticCubicBezier {
  struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim __pyx_base;
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *__pyx_vtabptr_6rabbyt_13dynamicvalues_AnimStaticCubicBezier;


struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap {
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim __pyx_base;
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *parent;
  PyObject *bounds;
  unsigned char is_static;
  float (s_bounds[2]);
};

struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimWrap {
  struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim __pyx_base;
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimWrap *__pyx_vtabptr_6rabbyt_13dynamicvalues_AnimWrap;


struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAddStatic {
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim __pyx_base;
  float s;
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *a;
};

struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimAddStatic {
  struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim __pyx_base;
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimAddStatic *__pyx_vtabptr_6rabbyt_13dynamicvalues_AnimAddStatic;


struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic {
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim __pyx_base;
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *a1;
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *a2;
};

struct __pyx_vtabstruct_6rabbyt_13dynamicvalues__AnimArithmatic {
  struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim __pyx_base;
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues__AnimArithmatic *__pyx_vtabptr_6rabbyt_13dynamicvalues__AnimArithmatic;


struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAdd {
  struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic __pyx_base;
};

struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimAdd {
  struct __pyx_vtabstruct_6rabbyt_13dynamicvalues__AnimArithmatic __pyx_base;
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimAdd *__pyx_vtabptr_6rabbyt_13dynamicvalues_AnimAdd;


struct __pyx_obj_6rabbyt_13dynamicvalues_AnimSub {
  struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic __pyx_base;
};

struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimSub {
  struct __pyx_vtabstruct_6rabbyt_13dynamicvalues__AnimArithmatic __pyx_base;
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimSub *__pyx_vtabptr_6rabbyt_13dynamicvalues_AnimSub;


struct __pyx_obj_6rabbyt_13dynamicvalues_AnimMul {
  struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic __pyx_base;
};

struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimMul {
  struct __pyx_vtabstruct_6rabbyt_13dynamicvalues__AnimArithmatic __pyx_base;
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimMul *__pyx_vtabptr_6rabbyt_13dynamicvalues_AnimMul;


struct __pyx_obj_6rabbyt_13dynamicvalues_AnimDiv {
  struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic __pyx_base;
};

struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimDiv {
  struct __pyx_vtabstruct_6rabbyt_13dynamicvalues__AnimArithmatic __pyx_base;
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimDiv *__pyx_vtabptr_6rabbyt_13dynamicvalues_AnimDiv;


struct __pyx_obj_6rabbyt_13dynamicvalues_AnimPyFunc {
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim __pyx_base;
  PyObject *function;
  int cache_output;
  float cache;
  int cache_time;
};

struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimPyFunc {
  struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim __pyx_base;
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimPyFunc *__pyx_vtabptr_6rabbyt_13dynamicvalues_AnimPyFunc;


struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy {
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim __pyx_base;
  int cache_output;
  float cache;
  int cache_time;
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *_value;
};

struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimProxy {
  struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim __pyx_base;
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimProxy *__pyx_vtabptr_6rabbyt_13dynamicvalues_AnimProxy;

static PyTypeObject *__pyx_ptype_6rabbyt_13dynamicvalues_Anim = 0;
static PyTypeObject *__pyx_ptype_6rabbyt_13dynamicvalues_AnimConst = 0;
static PyTypeObject *__pyx_ptype_6rabbyt_13dynamicvalues_AnimLerp = 0;
static PyTypeObject *__pyx_ptype_6rabbyt_13dynamicvalues_AnimStaticCubicBezier = 0;
static PyTypeObject *__pyx_ptype_6rabbyt_13dynamicvalues_AnimWrap = 0;
static PyTypeObject *__pyx_ptype_6rabbyt_13dynamicvalues_AnimAddStatic = 0;
static PyTypeObject *__pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic = 0;
static PyTypeObject *__pyx_ptype_6rabbyt_13dynamicvalues_AnimAdd = 0;
static PyTypeObject *__pyx_ptype_6rabbyt_13dynamicvalues_AnimSub = 0;
static PyTypeObject *__pyx_ptype_6rabbyt_13dynamicvalues_AnimMul = 0;
static PyTypeObject *__pyx_ptype_6rabbyt_13dynamicvalues_AnimDiv = 0;
static PyTypeObject *__pyx_ptype_6rabbyt_13dynamicvalues_AnimPyFunc = 0;
static PyTypeObject *__pyx_ptype_6rabbyt_13dynamicvalues_AnimProxy = 0;
static int __pyx_v_6rabbyt_13dynamicvalues_time;
static PyObject *__pyx_k3;
static PyObject *__pyx_k4;
static PyObject *__pyx_k5;
static int (__pyx_f_6rabbyt_13dynamicvalues__get_time(void)); /*proto*/
static float (__pyx_f_6rabbyt_13dynamicvalues_extend_t(float ,int )); /*proto*/

/* Implementation of rabbyt.dynamicvalues */

static char (__pyx_k1[]) = "\nCopyright (C) 2007  Matthew Marshall\n\nThis library is free software; you can redistribute it and/or\nmodify it under the terms of the GNU Library General Public\nLicense as published by the Free Software Foundation; either\nversion 2 of the License, or (at your option) any later version.\n\nThis library is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\nLibrary General Public License for more details.\n\nYou should have received a copy of the GNU Library General Public\nLicense along with this library; if not, write to the Free\nFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n";
static char (__pyx_k2[]) = "Matthew Marshall <matthew@matthewmarshall.org>";

static PyObject *__pyx_n___credits__;
static PyObject *__pyx_n___author__;
static PyObject *__pyx_n_set_time;
static PyObject *__pyx_n_get_time;
static PyObject *__pyx_n_to_Anim;
static PyObject *__pyx_n_True;
static PyObject *__pyx_n_False;

static PyObject *__pyx_k1p;
static PyObject *__pyx_k2p;

static PyObject *__pyx_f_6rabbyt_13dynamicvalues_set_time(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6rabbyt_13dynamicvalues_set_time[] = "\n    Sets the time that rabbyt.get_time() should return.\n\n    If you are using any time based animations, (such as rabbyt.lerp or\n    rabbyt.bezier3,) you should call this function every frame.\n\n    For example, if you are using pygame you can do this::\n\n        rabbyt.set_time(pygame.time.get_ticks())\n\n    Using this function should make it easier to implement a pause feature.\n    ";
static PyObject *__pyx_f_6rabbyt_13dynamicvalues_set_time(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_t;
  PyObject *__pyx_r;
  static char *__pyx_argnames[] = {"t",0};
  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "i", __pyx_argnames, &__pyx_v_t)) return 0;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":49 */
  __pyx_v_6rabbyt_13dynamicvalues_time = __pyx_v_t;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_AddTraceback("rabbyt.dynamicvalues.set_time");
  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

static PyObject *__pyx_f_6rabbyt_13dynamicvalues_get_time(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6rabbyt_13dynamicvalues_get_time[] = "\n    Gets the time that was last set by rabbyt.set_time()\n    ";
static PyObject *__pyx_f_6rabbyt_13dynamicvalues_get_time(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r;
  PyObject *__pyx_1 = 0;
  static char *__pyx_argnames[] = {0};
  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return 0;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":56 */
  __pyx_1 = PyInt_FromLong(__pyx_v_6rabbyt_13dynamicvalues_time); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; goto __pyx_L1;}
  __pyx_r = __pyx_1;
  __pyx_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  __Pyx_AddTraceback("rabbyt.dynamicvalues.get_time");
  __pyx_r = 0;
  __pyx_L0:;
  return __pyx_r;
}

static int __pyx_f_6rabbyt_13dynamicvalues__get_time(void) {
  int __pyx_r;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":59 */
  __pyx_r = __pyx_v_6rabbyt_13dynamicvalues_time;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_WriteUnraisable("rabbyt.dynamicvalues._get_time");
  __pyx_L0:;
  return __pyx_r;
}

static float __pyx_f_6rabbyt_13dynamicvalues_4Anim_g(struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *__pyx_v_self) {
  float __pyx_r;
  Py_INCREF(__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":73 */
  __pyx_r = 0.0;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_WriteUnraisable("rabbyt.dynamicvalues.Anim.g");
  __pyx_L0:;
  Py_DECREF(__pyx_v_self);
  return __pyx_r;
}

static PyObject *__pyx_f_6rabbyt_13dynamicvalues_4Anim_get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6rabbyt_13dynamicvalues_4Anim_get[] = "\n        get() -> float\n\n        Gets the value.\n        ";
static PyObject *__pyx_f_6rabbyt_13dynamicvalues_4Anim_get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_r;
  PyObject *__pyx_1 = 0;
  static char *__pyx_argnames[] = {0};
  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return 0;
  Py_INCREF(__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":81 */
  __pyx_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim *)((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)__pyx_v_self)->__pyx_vtab)->g(((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)__pyx_v_self))); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; goto __pyx_L1;}
  __pyx_r = __pyx_1;
  __pyx_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  __Pyx_AddTraceback("rabbyt.dynamicvalues.Anim.get");
  __pyx_r = 0;
  __pyx_L0:;
  Py_DECREF(__pyx_v_self);
  return __pyx_r;
}

static PyObject *__pyx_n_isinstance;
static PyObject *__pyx_n_int;
static PyObject *__pyx_n_long;
static PyObject *__pyx_n_float;

static PyObject *__pyx_f_6rabbyt_13dynamicvalues_4Anim___add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_f_6rabbyt_13dynamicvalues_4Anim___add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  PyObject *__pyx_r;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  int __pyx_4;
  int __pyx_5;
  PyObject *__pyx_6 = 0;
  PyObject *__pyx_7 = 0;
  Py_INCREF(__pyx_v_self);
  Py_INCREF(__pyx_v_other);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":84 */
  __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_isinstance); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; goto __pyx_L1;}
  __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; goto __pyx_L1;}
  Py_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_self);
  Py_INCREF(((PyObject*)__pyx_ptype_6rabbyt_13dynamicvalues_Anim));
  PyTuple_SET_ITEM(__pyx_2, 1, ((PyObject*)__pyx_ptype_6rabbyt_13dynamicvalues_Anim));
  __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; goto __pyx_L1;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  Py_DECREF(__pyx_2); __pyx_2 = 0;
  __pyx_4 = PyObject_IsTrue(__pyx_3); if (__pyx_4 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; goto __pyx_L1;}
  Py_DECREF(__pyx_3); __pyx_3 = 0;
  __pyx_5 = (!__pyx_4);
  if (__pyx_5) {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":85 */
    __pyx_1 = __pyx_v_other;
    Py_INCREF(__pyx_1);
    __pyx_2 = __pyx_v_self;
    Py_INCREF(__pyx_2);
    Py_DECREF(__pyx_v_self);
    __pyx_v_self = __pyx_1;
    __pyx_1 = 0;
    Py_DECREF(__pyx_v_other);
    __pyx_v_other = __pyx_2;
    __pyx_2 = 0;
    goto __pyx_L2;
  }
  __pyx_L2:;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":86 */
  __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_isinstance); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; goto __pyx_L1;}
  __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; goto __pyx_L1;}
  __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_long); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; goto __pyx_L1;}
  __pyx_6 = __Pyx_GetName(__pyx_b, __pyx_n_float); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; goto __pyx_L1;}
  __pyx_7 = PyTuple_New(3); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; goto __pyx_L1;}
  PyTuple_SET_ITEM(__pyx_7, 0, __pyx_1);
  PyTuple_SET_ITEM(__pyx_7, 1, __pyx_2);
  PyTuple_SET_ITEM(__pyx_7, 2, __pyx_6);
  __pyx_1 = 0;
  __pyx_2 = 0;
  __pyx_6 = 0;
  __pyx_1 = PyTuple_New(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; goto __pyx_L1;}
  Py_INCREF(__pyx_v_other);
  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_other);
  PyTuple_SET_ITEM(__pyx_1, 1, __pyx_7);
  __pyx_7 = 0;
  __pyx_2 = PyObject_CallObject(__pyx_3, __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; goto __pyx_L1;}
  Py_DECREF(__pyx_3); __pyx_3 = 0;
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  __pyx_4 = PyObject_IsTrue(__pyx_2); if (__pyx_4 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; goto __pyx_L1;}
  Py_DECREF(__pyx_2); __pyx_2 = 0;
  if (__pyx_4) {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":87 */
    __pyx_6 = PyTuple_New(2); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; goto __pyx_L1;}
    Py_INCREF(__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_6, 0, __pyx_v_self);
    Py_INCREF(__pyx_v_other);
    PyTuple_SET_ITEM(__pyx_6, 1, __pyx_v_other);
    __pyx_7 = PyObject_CallObject(((PyObject*)__pyx_ptype_6rabbyt_13dynamicvalues_AnimAddStatic), __pyx_6); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; goto __pyx_L1;}
    Py_DECREF(__pyx_6); __pyx_6 = 0;
    __pyx_r = __pyx_7;
    __pyx_7 = 0;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":89 */
    __pyx_3 = PyTuple_New(2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; goto __pyx_L1;}
    Py_INCREF(__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_self);
    Py_INCREF(__pyx_v_other);
    PyTuple_SET_ITEM(__pyx_3, 1, __pyx_v_other);
    __pyx_1 = PyObject_CallObject(((PyObject*)__pyx_ptype_6rabbyt_13dynamicvalues_AnimAdd), __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; goto __pyx_L1;}
    Py_DECREF(__pyx_3); __pyx_3 = 0;
    __pyx_r = __pyx_1;
    __pyx_1 = 0;
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  Py_XDECREF(__pyx_6);
  Py_XDECREF(__pyx_7);
  __Pyx_AddTraceback("rabbyt.dynamicvalues.Anim.__add__");
  __pyx_r = 0;
  __pyx_L0:;
  Py_DECREF(__pyx_v_self);
  Py_DECREF(__pyx_v_other);
  return __pyx_r;
}

static PyObject *__pyx_f_6rabbyt_13dynamicvalues_4Anim___sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_f_6rabbyt_13dynamicvalues_4Anim___sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  PyObject *__pyx_r;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  int __pyx_4;
  PyObject *__pyx_5 = 0;
  PyObject *__pyx_6 = 0;
  PyObject *__pyx_7 = 0;
  Py_INCREF(__pyx_v_self);
  Py_INCREF(__pyx_v_other);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":92 */
  __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_isinstance); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; goto __pyx_L1;}
  __pyx_3 = PyTuple_New(2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; goto __pyx_L1;}
  Py_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_self);
  Py_INCREF(((PyObject*)__pyx_ptype_6rabbyt_13dynamicvalues_Anim));
  PyTuple_SET_ITEM(__pyx_3, 1, ((PyObject*)__pyx_ptype_6rabbyt_13dynamicvalues_Anim));
  __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; goto __pyx_L1;}
  Py_DECREF(__pyx_2); __pyx_2 = 0;
  Py_DECREF(__pyx_3); __pyx_3 = 0;
  __pyx_4 = PyObject_IsTrue(__pyx_1); if (__pyx_4 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; goto __pyx_L1;}
  if (__pyx_4) {
    Py_DECREF(__pyx_1); __pyx_1 = 0;
    __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_isinstance); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; goto __pyx_L1;}
    __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_int); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; goto __pyx_L1;}
    __pyx_5 = __Pyx_GetName(__pyx_b, __pyx_n_long); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; goto __pyx_L1;}
    __pyx_6 = __Pyx_GetName(__pyx_b, __pyx_n_float); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; goto __pyx_L1;}
    __pyx_7 = PyTuple_New(3); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; goto __pyx_L1;}
    PyTuple_SET_ITEM(__pyx_7, 0, __pyx_3);
    PyTuple_SET_ITEM(__pyx_7, 1, __pyx_5);
    PyTuple_SET_ITEM(__pyx_7, 2, __pyx_6);
    __pyx_3 = 0;
    __pyx_5 = 0;
    __pyx_6 = 0;
    __pyx_3 = PyTuple_New(2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; goto __pyx_L1;}
    Py_INCREF(__pyx_v_other);
    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_other);
    PyTuple_SET_ITEM(__pyx_3, 1, __pyx_7);
    __pyx_7 = 0;
    __pyx_1 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; goto __pyx_L1;}
    Py_DECREF(__pyx_2); __pyx_2 = 0;
    Py_DECREF(__pyx_3); __pyx_3 = 0;
  }
  __pyx_4 = PyObject_IsTrue(__pyx_1); if (__pyx_4 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; goto __pyx_L1;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  if (__pyx_4) {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":93 */
    __pyx_5 = PyNumber_Negative(__pyx_v_other); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; goto __pyx_L1;}
    __pyx_6 = PyTuple_New(2); if (!__pyx_6) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; goto __pyx_L1;}
    Py_INCREF(__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_6, 0, __pyx_v_self);
    PyTuple_SET_ITEM(__pyx_6, 1, __pyx_5);
    __pyx_5 = 0;
    __pyx_7 = PyObject_CallObject(((PyObject*)__pyx_ptype_6rabbyt_13dynamicvalues_AnimAddStatic), __pyx_6); if (!__pyx_7) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; goto __pyx_L1;}
    Py_DECREF(__pyx_6); __pyx_6 = 0;
    __pyx_r = __pyx_7;
    __pyx_7 = 0;
    goto __pyx_L0;
    goto __pyx_L2;
  }
  /*else*/ {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":95 */
    __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; goto __pyx_L1;}
    Py_INCREF(__pyx_v_self);
    PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_self);
    Py_INCREF(__pyx_v_other);
    PyTuple_SET_ITEM(__pyx_2, 1, __pyx_v_other);
    __pyx_3 = PyObject_CallObject(((PyObject*)__pyx_ptype_6rabbyt_13dynamicvalues_AnimSub), __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; goto __pyx_L1;}
    Py_DECREF(__pyx_2); __pyx_2 = 0;
    __pyx_r = __pyx_3;
    __pyx_3 = 0;
    goto __pyx_L0;
  }
  __pyx_L2:;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  Py_XDECREF(__pyx_5);
  Py_XDECREF(__pyx_6);
  Py_XDECREF(__pyx_7);
  __Pyx_AddTraceback("rabbyt.dynamicvalues.Anim.__sub__");
  __pyx_r = 0;
  __pyx_L0:;
  Py_DECREF(__pyx_v_self);
  Py_DECREF(__pyx_v_other);
  return __pyx_r;
}

static PyObject *__pyx_f_6rabbyt_13dynamicvalues_4Anim___mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_f_6rabbyt_13dynamicvalues_4Anim___mul__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  PyObject *__pyx_r;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  Py_INCREF(__pyx_v_self);
  Py_INCREF(__pyx_v_other);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":98 */
  __pyx_1 = PyTuple_New(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; goto __pyx_L1;}
  Py_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_self);
  Py_INCREF(__pyx_v_other);
  PyTuple_SET_ITEM(__pyx_1, 1, __pyx_v_other);
  __pyx_2 = PyObject_CallObject(((PyObject*)__pyx_ptype_6rabbyt_13dynamicvalues_AnimMul), __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; goto __pyx_L1;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  __pyx_r = __pyx_2;
  __pyx_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  __Pyx_AddTraceback("rabbyt.dynamicvalues.Anim.__mul__");
  __pyx_r = 0;
  __pyx_L0:;
  Py_DECREF(__pyx_v_self);
  Py_DECREF(__pyx_v_other);
  return __pyx_r;
}

static PyObject *__pyx_f_6rabbyt_13dynamicvalues_4Anim___div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_f_6rabbyt_13dynamicvalues_4Anim___div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  PyObject *__pyx_r;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  Py_INCREF(__pyx_v_self);
  Py_INCREF(__pyx_v_other);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":101 */
  __pyx_1 = PyTuple_New(2); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; goto __pyx_L1;}
  Py_INCREF(__pyx_v_self);
  PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_self);
  Py_INCREF(__pyx_v_other);
  PyTuple_SET_ITEM(__pyx_1, 1, __pyx_v_other);
  __pyx_2 = PyObject_CallObject(((PyObject*)__pyx_ptype_6rabbyt_13dynamicvalues_AnimDiv), __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; goto __pyx_L1;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  __pyx_r = __pyx_2;
  __pyx_2 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  __Pyx_AddTraceback("rabbyt.dynamicvalues.Anim.__div__");
  __pyx_r = 0;
  __pyx_L0:;
  Py_DECREF(__pyx_v_self);
  Py_DECREF(__pyx_v_other);
  return __pyx_r;
}

static int __pyx_f_6rabbyt_13dynamicvalues_9AnimConst___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_6rabbyt_13dynamicvalues_9AnimConst___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  float __pyx_v_v;
  int __pyx_r;
  static char *__pyx_argnames[] = {"v",0};
  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "f", __pyx_argnames, &__pyx_v_v)) return -1;
  Py_INCREF((PyObject *)__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":116 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimConst *)__pyx_v_self)->v = __pyx_v_v;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_AddTraceback("rabbyt.dynamicvalues.AnimConst.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  return __pyx_r;
}

static float __pyx_f_6rabbyt_13dynamicvalues_9AnimConst_g(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimConst *__pyx_v_self) {
  float __pyx_r;
  Py_INCREF((PyObject *)__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":119 */
  __pyx_r = __pyx_v_self->v;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_WriteUnraisable("rabbyt.dynamicvalues.AnimConst.g");
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  return __pyx_r;
}

static float __pyx_f_6rabbyt_13dynamicvalues_extend_t(float __pyx_v_t,int __pyx_v_mode) {
  float __pyx_r;
  int __pyx_1;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":122 */
  __pyx_1 = (__pyx_v_mode == 1);
  if (__pyx_1) {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":123 */
    __pyx_1 = (__pyx_v_t < 0);
    if (__pyx_1) {

      /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":124 */
      __pyx_v_t = 0;
      goto __pyx_L3;
    }
    __pyx_1 = (__pyx_v_t > 1);
    if (__pyx_1) {

      /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":126 */
      __pyx_v_t = 1;
      goto __pyx_L3;
    }
    __pyx_L3:;
    goto __pyx_L2;
  }
  __pyx_1 = (__pyx_v_mode == 2);
  if (__pyx_1) {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":128 */
    goto __pyx_L2;
  }
  __pyx_1 = (__pyx_v_mode == 3);
  if (__pyx_1) {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":130 */
    __pyx_1 = (__pyx_v_t >= 1);
    if (__pyx_1) {

      /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":131 */
      __pyx_v_t = (__pyx_v_t - ((int )__pyx_v_t));
      goto __pyx_L4;
    }
    __pyx_1 = (__pyx_v_t < 0);
    if (__pyx_1) {

      /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":133 */
      __pyx_v_t = ((1 + __pyx_v_t) - ((int )__pyx_v_t));
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L2;
  }
  __pyx_1 = (__pyx_v_mode == 4);
  if (__pyx_1) {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":135 */
    __pyx_1 = (__pyx_v_t < 0);
    if (__pyx_1) {

      /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":136 */
      __pyx_v_t = (-__pyx_v_t);
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":137 */
    __pyx_1 = ((((int )__pyx_v_t) % 2) == 1);
    if (__pyx_1) {

      /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":138 */
      __pyx_v_t = (1 - (__pyx_v_t - ((int )__pyx_v_t)));
      goto __pyx_L6;
    }
    /*else*/ {

      /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":140 */
      __pyx_v_t = (__pyx_v_t - ((int )__pyx_v_t));
    }
    __pyx_L6:;
    goto __pyx_L2;
  }
  __pyx_L2:;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":141 */
  __pyx_r = __pyx_v_t;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_WriteUnraisable("rabbyt.dynamicvalues.extend_t");
  __pyx_L0:;
  return __pyx_r;
}

static int __pyx_f_6rabbyt_13dynamicvalues_8AnimLerp___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_6rabbyt_13dynamicvalues_8AnimLerp___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  float __pyx_v_start;
  float __pyx_v_end;
  int __pyx_v_startt;
  int __pyx_v_endt;
  int __pyx_v_extend;
  int __pyx_r;
  static char *__pyx_argnames[] = {"start","end","startt","endt","extend",0};
  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "ffiii", __pyx_argnames, &__pyx_v_start, &__pyx_v_end, &__pyx_v_startt, &__pyx_v_endt, &__pyx_v_extend)) return -1;
  Py_INCREF((PyObject *)__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":153 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *)__pyx_v_self)->start = __pyx_v_start;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":154 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *)__pyx_v_self)->end = __pyx_v_end;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":155 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *)__pyx_v_self)->startt = __pyx_v_startt;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":156 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *)__pyx_v_self)->endt = __pyx_v_endt;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":157 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *)__pyx_v_self)->extend = __pyx_v_extend;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":158 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *)__pyx_v_self)->one_over_dt = (1 / ((float )(((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *)__pyx_v_self)->endt - ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *)__pyx_v_self)->startt)));

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_AddTraceback("rabbyt.dynamicvalues.AnimLerp.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  return __pyx_r;
}

static float __pyx_f_6rabbyt_13dynamicvalues_8AnimLerp_g(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *__pyx_v_self) {
  float __pyx_v_t;
  float __pyx_r;
  Py_INCREF((PyObject *)__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":162 */
  __pyx_v_t = __pyx_f_6rabbyt_13dynamicvalues_extend_t(((__pyx_f_6rabbyt_13dynamicvalues__get_time() - __pyx_v_self->startt) * __pyx_v_self->one_over_dt),__pyx_v_self->extend);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":164 */
  __pyx_r = (((__pyx_v_self->end - __pyx_v_self->start) * __pyx_v_t) + __pyx_v_self->start);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_WriteUnraisable("rabbyt.dynamicvalues.AnimLerp.g");
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  return __pyx_r;
}

static int __pyx_f_6rabbyt_13dynamicvalues_21AnimStaticCubicBezier___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_6rabbyt_13dynamicvalues_21AnimStaticCubicBezier___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  float __pyx_v_p0;
  float __pyx_v_p1;
  float __pyx_v_p2;
  float __pyx_v_p3;
  int __pyx_v_startt;
  int __pyx_v_endt;
  int __pyx_v_extend;
  int __pyx_r;
  static char *__pyx_argnames[] = {"p0","p1","p2","p3","startt","endt","extend",0};
  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "ffffiii", __pyx_argnames, &__pyx_v_p0, &__pyx_v_p1, &__pyx_v_p2, &__pyx_v_p3, &__pyx_v_startt, &__pyx_v_endt, &__pyx_v_extend)) return -1;
  Py_INCREF((PyObject *)__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":175 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *)__pyx_v_self)->p0 = __pyx_v_p0;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":176 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *)__pyx_v_self)->startt = __pyx_v_startt;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":177 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *)__pyx_v_self)->endt = __pyx_v_endt;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":178 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *)__pyx_v_self)->extend = __pyx_v_extend;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":179 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *)__pyx_v_self)->one_over_dt = (1 / ((float )(__pyx_v_endt - __pyx_v_startt)));

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":180 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *)__pyx_v_self)->c = (3.0 * (__pyx_v_p1 - __pyx_v_p0));

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":181 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *)__pyx_v_self)->b = ((3.0 * (__pyx_v_p2 - __pyx_v_p1)) - ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *)__pyx_v_self)->c);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":182 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *)__pyx_v_self)->a = (((__pyx_v_p3 - __pyx_v_p0) - ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *)__pyx_v_self)->c) - ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *)__pyx_v_self)->b);

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_AddTraceback("rabbyt.dynamicvalues.AnimStaticCubicBezier.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  return __pyx_r;
}

static float __pyx_f_6rabbyt_13dynamicvalues_21AnimStaticCubicBezier_g(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *__pyx_v_self) {
  float __pyx_v_t;
  float __pyx_v_t2;
  float __pyx_v_t3;
  float __pyx_r;
  Py_INCREF((PyObject *)__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":186 */
  __pyx_v_t = __pyx_f_6rabbyt_13dynamicvalues_extend_t(((__pyx_f_6rabbyt_13dynamicvalues__get_time() - __pyx_v_self->startt) * __pyx_v_self->one_over_dt),__pyx_v_self->extend);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":187 */
  __pyx_v_t2 = (__pyx_v_t * __pyx_v_t);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":188 */
  __pyx_v_t3 = (__pyx_v_t2 * __pyx_v_t);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":189 */
  __pyx_r = ((((__pyx_v_self->a * __pyx_v_t3) + (__pyx_v_self->b * __pyx_v_t2)) + (__pyx_v_self->c * __pyx_v_t)) + __pyx_v_self->p0);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_WriteUnraisable("rabbyt.dynamicvalues.AnimStaticCubicBezier.g");
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  return __pyx_r;
}

static int __pyx_f_6rabbyt_13dynamicvalues_8AnimWrap___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_6rabbyt_13dynamicvalues_8AnimWrap___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_bounds = 0;
  PyObject *__pyx_v_parent = 0;
  PyObject *__pyx_v_static = 0;
  int __pyx_r;
  int __pyx_1;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  float __pyx_4;
  PyObject *__pyx_5 = 0;
  static char *__pyx_argnames[] = {"bounds","parent","static",0};
  __pyx_v_static = __pyx_k3;
  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OO|O", __pyx_argnames, &__pyx_v_bounds, &__pyx_v_parent, &__pyx_v_static)) return -1;
  Py_INCREF((PyObject *)__pyx_v_self);
  Py_INCREF(__pyx_v_bounds);
  Py_INCREF(__pyx_v_parent);
  Py_INCREF(__pyx_v_static);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":215 */
  __pyx_1 = PyObject_IsTrue(__pyx_v_static); if (__pyx_1 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 215; goto __pyx_L1;}
  if (__pyx_1) {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":216 */
    ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *)__pyx_v_self)->is_static = 1;

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":217 */
    __pyx_2 = PyInt_FromLong(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; goto __pyx_L1;}
    __pyx_3 = PyObject_GetItem(__pyx_v_bounds, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; goto __pyx_L1;}
    Py_DECREF(__pyx_2); __pyx_2 = 0;
    __pyx_4 = PyFloat_AsDouble(__pyx_3); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; goto __pyx_L1;}
    Py_DECREF(__pyx_3); __pyx_3 = 0;
    (((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *)__pyx_v_self)->s_bounds[0]) = __pyx_4;

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":218 */
    __pyx_2 = PyInt_FromLong(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; goto __pyx_L1;}
    __pyx_3 = PyObject_GetItem(__pyx_v_bounds, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; goto __pyx_L1;}
    Py_DECREF(__pyx_2); __pyx_2 = 0;
    __pyx_4 = PyFloat_AsDouble(__pyx_3); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; goto __pyx_L1;}
    Py_DECREF(__pyx_3); __pyx_3 = 0;
    (((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *)__pyx_v_self)->s_bounds[1]) = __pyx_4;

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":219 */
    Py_INCREF(Py_None);
    Py_DECREF(((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *)__pyx_v_self)->bounds);
    ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *)__pyx_v_self)->bounds = Py_None;
    goto __pyx_L2;
  }
  /*else*/ {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":221 */
    ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *)__pyx_v_self)->is_static = 0;

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":222 */
    Py_INCREF(__pyx_v_bounds);
    Py_DECREF(((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *)__pyx_v_self)->bounds);
    ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *)__pyx_v_self)->bounds = __pyx_v_bounds;
  }
  __pyx_L2:;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":224 */
  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n_to_Anim); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; goto __pyx_L1;}
  __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; goto __pyx_L1;}
  Py_INCREF(__pyx_v_parent);
  PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_parent);
  __pyx_5 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; goto __pyx_L1;}
  Py_DECREF(__pyx_2); __pyx_2 = 0;
  Py_DECREF(__pyx_3); __pyx_3 = 0;
  if (!__Pyx_TypeTest(__pyx_5, __pyx_ptype_6rabbyt_13dynamicvalues_Anim)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; goto __pyx_L1;}
  Py_DECREF(((PyObject *)((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *)__pyx_v_self)->parent));
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *)__pyx_v_self)->parent = __pyx_5;
  __pyx_5 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  Py_XDECREF(__pyx_5);
  __Pyx_AddTraceback("rabbyt.dynamicvalues.AnimWrap.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  Py_DECREF(__pyx_v_bounds);
  Py_DECREF(__pyx_v_parent);
  Py_DECREF(__pyx_v_static);
  return __pyx_r;
}

static float __pyx_f_6rabbyt_13dynamicvalues_8AnimWrap_g(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *__pyx_v_self) {
  float __pyx_v_p;
  float __pyx_v_b1;
  float __pyx_v_b2;
  float __pyx_v_d;
  float __pyx_r;
  int __pyx_1;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  float __pyx_4;
  Py_INCREF((PyObject *)__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":228 */
  __pyx_1 = (__pyx_v_self->is_static == 1);
  if (__pyx_1) {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":229 */
    __pyx_v_b1 = (__pyx_v_self->s_bounds[0]);

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":230 */
    __pyx_v_b2 = (__pyx_v_self->s_bounds[1]);
    goto __pyx_L2;
  }
  /*else*/ {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":232 */
    __pyx_2 = PyInt_FromLong(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; goto __pyx_L1;}
    __pyx_3 = PyObject_GetItem(__pyx_v_self->bounds, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; goto __pyx_L1;}
    Py_DECREF(__pyx_2); __pyx_2 = 0;
    __pyx_4 = PyFloat_AsDouble(__pyx_3); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 232; goto __pyx_L1;}
    Py_DECREF(__pyx_3); __pyx_3 = 0;
    __pyx_v_b1 = __pyx_4;

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":233 */
    __pyx_2 = PyInt_FromLong(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; goto __pyx_L1;}
    __pyx_3 = PyObject_GetItem(__pyx_v_self->bounds, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; goto __pyx_L1;}
    Py_DECREF(__pyx_2); __pyx_2 = 0;
    __pyx_4 = PyFloat_AsDouble(__pyx_3); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 233; goto __pyx_L1;}
    Py_DECREF(__pyx_3); __pyx_3 = 0;
    __pyx_v_b2 = __pyx_4;
  }
  __pyx_L2:;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":235 */
  __pyx_v_p = ((struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim *)__pyx_v_self->parent->__pyx_vtab)->g(__pyx_v_self->parent);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":237 */
  __pyx_v_d = (__pyx_v_b2 - __pyx_v_b1);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":239 */
  __pyx_v_p = fmodf((__pyx_v_p - fmodf(__pyx_v_b1,__pyx_v_d)),__pyx_v_d);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":240 */
  __pyx_1 = (__pyx_v_p < 0);
  if (__pyx_1) {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":241 */
    __pyx_v_p = (__pyx_v_p + __pyx_v_d);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":243 */
  __pyx_r = (__pyx_v_p + __pyx_v_b1);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  __Pyx_WriteUnraisable("rabbyt.dynamicvalues.AnimWrap.g");
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  return __pyx_r;
}

static int __pyx_f_6rabbyt_13dynamicvalues_13AnimAddStatic___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_6rabbyt_13dynamicvalues_13AnimAddStatic___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *__pyx_v_a = 0;
  float __pyx_v_s;
  int __pyx_r;
  static char *__pyx_argnames[] = {"a","s",0};
  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "Of", __pyx_argnames, &__pyx_v_a, &__pyx_v_s)) return -1;
  Py_INCREF((PyObject *)__pyx_v_self);
  Py_INCREF(__pyx_v_a);
  if (!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_a), __pyx_ptype_6rabbyt_13dynamicvalues_Anim, 0, "a")) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 249; goto __pyx_L1;}

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":250 */
  Py_INCREF(((PyObject *)__pyx_v_a));
  Py_DECREF(((PyObject *)((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAddStatic *)__pyx_v_self)->a));
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAddStatic *)__pyx_v_self)->a = __pyx_v_a;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":251 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAddStatic *)__pyx_v_self)->s = __pyx_v_s;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_AddTraceback("rabbyt.dynamicvalues.AnimAddStatic.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  Py_DECREF(__pyx_v_a);
  return __pyx_r;
}

static float __pyx_f_6rabbyt_13dynamicvalues_13AnimAddStatic_g(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAddStatic *__pyx_v_self) {
  float __pyx_r;
  Py_INCREF((PyObject *)__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":254 */
  __pyx_r = (((struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim *)__pyx_v_self->a->__pyx_vtab)->g(__pyx_v_self->a) + __pyx_v_self->s);
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_WriteUnraisable("rabbyt.dynamicvalues.AnimAddStatic.g");
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  return __pyx_r;
}

static int __pyx_f_6rabbyt_13dynamicvalues_15_AnimArithmatic___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_6rabbyt_13dynamicvalues_15_AnimArithmatic___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_a1 = 0;
  PyObject *__pyx_v_a2 = 0;
  int __pyx_r;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  static char *__pyx_argnames[] = {"a1","a2",0};
  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OO", __pyx_argnames, &__pyx_v_a1, &__pyx_v_a2)) return -1;
  Py_INCREF((PyObject *)__pyx_v_self);
  Py_INCREF(__pyx_v_a1);
  Py_INCREF(__pyx_v_a2);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":261 */
  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_to_Anim); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; goto __pyx_L1;}
  __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; goto __pyx_L1;}
  Py_INCREF(__pyx_v_a1);
  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_a1);
  __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; goto __pyx_L1;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  Py_DECREF(__pyx_2); __pyx_2 = 0;
  if (!__Pyx_TypeTest(__pyx_3, __pyx_ptype_6rabbyt_13dynamicvalues_Anim)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; goto __pyx_L1;}
  Py_DECREF(((PyObject *)((struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic *)__pyx_v_self)->a1));
  ((struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic *)__pyx_v_self)->a1 = __pyx_3;
  __pyx_3 = 0;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":262 */
  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_to_Anim); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; goto __pyx_L1;}
  __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; goto __pyx_L1;}
  Py_INCREF(__pyx_v_a2);
  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_a2);
  __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; goto __pyx_L1;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  Py_DECREF(__pyx_2); __pyx_2 = 0;
  if (!__Pyx_TypeTest(__pyx_3, __pyx_ptype_6rabbyt_13dynamicvalues_Anim)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; goto __pyx_L1;}
  Py_DECREF(((PyObject *)((struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic *)__pyx_v_self)->a2));
  ((struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic *)__pyx_v_self)->a2 = __pyx_3;
  __pyx_3 = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  __Pyx_AddTraceback("rabbyt.dynamicvalues._AnimArithmatic.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  Py_DECREF(__pyx_v_a1);
  Py_DECREF(__pyx_v_a2);
  return __pyx_r;
}

static float __pyx_f_6rabbyt_13dynamicvalues_7AnimAdd_g(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAdd *__pyx_v_self) {
  float __pyx_r;
  Py_INCREF((PyObject *)__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":266 */
  __pyx_r = (((struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim *)__pyx_v_self->__pyx_base.a1->__pyx_vtab)->g(__pyx_v_self->__pyx_base.a1) + ((struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim *)__pyx_v_self->__pyx_base.a2->__pyx_vtab)->g(__pyx_v_self->__pyx_base.a2));
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_WriteUnraisable("rabbyt.dynamicvalues.AnimAdd.g");
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  return __pyx_r;
}

static float __pyx_f_6rabbyt_13dynamicvalues_7AnimSub_g(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimSub *__pyx_v_self) {
  float __pyx_r;
  Py_INCREF((PyObject *)__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":270 */
  __pyx_r = (((struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim *)__pyx_v_self->__pyx_base.a1->__pyx_vtab)->g(__pyx_v_self->__pyx_base.a1) - ((struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim *)__pyx_v_self->__pyx_base.a2->__pyx_vtab)->g(__pyx_v_self->__pyx_base.a2));
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_WriteUnraisable("rabbyt.dynamicvalues.AnimSub.g");
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  return __pyx_r;
}

static float __pyx_f_6rabbyt_13dynamicvalues_7AnimMul_g(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimMul *__pyx_v_self) {
  float __pyx_r;
  Py_INCREF((PyObject *)__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":274 */
  __pyx_r = (((struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim *)__pyx_v_self->__pyx_base.a1->__pyx_vtab)->g(__pyx_v_self->__pyx_base.a1) * ((struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim *)__pyx_v_self->__pyx_base.a2->__pyx_vtab)->g(__pyx_v_self->__pyx_base.a2));
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_WriteUnraisable("rabbyt.dynamicvalues.AnimMul.g");
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  return __pyx_r;
}

static float __pyx_f_6rabbyt_13dynamicvalues_7AnimDiv_g(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimDiv *__pyx_v_self) {
  float __pyx_r;
  Py_INCREF((PyObject *)__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":278 */
  __pyx_r = (((struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim *)__pyx_v_self->__pyx_base.a1->__pyx_vtab)->g(__pyx_v_self->__pyx_base.a1) / ((struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim *)__pyx_v_self->__pyx_base.a2->__pyx_vtab)->g(__pyx_v_self->__pyx_base.a2));
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_WriteUnraisable("rabbyt.dynamicvalues.AnimDiv.g");
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  return __pyx_r;
}

static int __pyx_f_6rabbyt_13dynamicvalues_10AnimPyFunc___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_6rabbyt_13dynamicvalues_10AnimPyFunc___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_function = 0;
  PyObject *__pyx_v_cache = 0;
  int __pyx_r;
  int __pyx_1;
  static char *__pyx_argnames[] = {"function","cache",0};
  __pyx_v_cache = __pyx_k4;
  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|O", __pyx_argnames, &__pyx_v_function, &__pyx_v_cache)) return -1;
  Py_INCREF((PyObject *)__pyx_v_self);
  Py_INCREF(__pyx_v_function);
  Py_INCREF(__pyx_v_cache);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":299 */
  Py_INCREF(__pyx_v_function);
  Py_DECREF(((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimPyFunc *)__pyx_v_self)->function);
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimPyFunc *)__pyx_v_self)->function = __pyx_v_function;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":300 */
  __pyx_1 = PyInt_AsLong(__pyx_v_cache); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; goto __pyx_L1;}
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimPyFunc *)__pyx_v_self)->cache_output = __pyx_1;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_AddTraceback("rabbyt.dynamicvalues.AnimPyFunc.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  Py_DECREF(__pyx_v_function);
  Py_DECREF(__pyx_v_cache);
  return __pyx_r;
}

static float __pyx_f_6rabbyt_13dynamicvalues_10AnimPyFunc_g(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimPyFunc *__pyx_v_self) {
  float __pyx_r;
  int __pyx_1;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  float __pyx_4;
  Py_INCREF((PyObject *)__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":303 */
  __pyx_1 = __pyx_v_self->cache_output;
  if (__pyx_1) {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":304 */
    __pyx_1 = (__pyx_f_6rabbyt_13dynamicvalues__get_time() != __pyx_v_self->cache_time);
    if (__pyx_1) {

      /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":305 */
      __pyx_2 = PyTuple_New(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; goto __pyx_L1;}
      __pyx_3 = PyObject_CallObject(__pyx_v_self->function, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; goto __pyx_L1;}
      Py_DECREF(__pyx_2); __pyx_2 = 0;
      __pyx_4 = PyFloat_AsDouble(__pyx_3); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; goto __pyx_L1;}
      Py_DECREF(__pyx_3); __pyx_3 = 0;
      __pyx_v_self->cache = __pyx_4;

      /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":306 */
      __pyx_v_self->cache_time = __pyx_f_6rabbyt_13dynamicvalues__get_time();
      goto __pyx_L3;
    }
    __pyx_L3:;

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":307 */
    __pyx_r = __pyx_v_self->cache;
    goto __pyx_L0;
    goto __pyx_L2;
  }
  /*else*/ {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":309 */
    __pyx_2 = PyTuple_New(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; goto __pyx_L1;}
    __pyx_3 = PyObject_CallObject(__pyx_v_self->function, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; goto __pyx_L1;}
    Py_DECREF(__pyx_2); __pyx_2 = 0;
    __pyx_4 = PyFloat_AsDouble(__pyx_3); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 309; goto __pyx_L1;}
    Py_DECREF(__pyx_3); __pyx_3 = 0;
    __pyx_r = __pyx_4;
    goto __pyx_L0;
  }
  __pyx_L2:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  __Pyx_WriteUnraisable("rabbyt.dynamicvalues.AnimPyFunc.g");
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  return __pyx_r;
}

static PyObject *__pyx_n_value;

static int __pyx_f_6rabbyt_13dynamicvalues_9AnimProxy___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_f_6rabbyt_13dynamicvalues_9AnimProxy___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_value = 0;
  PyObject *__pyx_v_cache = 0;
  int __pyx_r;
  int __pyx_1;
  static char *__pyx_argnames[] = {"value","cache",0};
  __pyx_v_cache = __pyx_k5;
  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O|O", __pyx_argnames, &__pyx_v_value, &__pyx_v_cache)) return -1;
  Py_INCREF((PyObject *)__pyx_v_self);
  Py_INCREF(__pyx_v_value);
  Py_INCREF(__pyx_v_cache);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":322 */
  __pyx_1 = PyInt_AsLong(__pyx_v_cache); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 322; goto __pyx_L1;}
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy *)__pyx_v_self)->cache_output = __pyx_1;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":323 */
  if (PyObject_SetAttr(__pyx_v_self, __pyx_n_value, __pyx_v_value) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 323; goto __pyx_L1;}

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_AddTraceback("rabbyt.dynamicvalues.AnimProxy.__init__");
  __pyx_r = -1;
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  Py_DECREF(__pyx_v_value);
  Py_DECREF(__pyx_v_cache);
  return __pyx_r;
}

static PyObject *__pyx_f_6rabbyt_13dynamicvalues_9AnimProxy_5value___get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_f_6rabbyt_13dynamicvalues_9AnimProxy_5value___get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r;
  PyObject *__pyx_1 = 0;
  Py_INCREF((PyObject *)__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":327 */
  __pyx_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim *)((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy *)__pyx_v_self)->_value->__pyx_vtab)->g(((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy *)__pyx_v_self)->_value)); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; goto __pyx_L1;}
  __pyx_r = __pyx_1;
  __pyx_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  __Pyx_AddTraceback("rabbyt.dynamicvalues.AnimProxy.value.__get__");
  __pyx_r = 0;
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  return __pyx_r;
}

static int __pyx_f_6rabbyt_13dynamicvalues_9AnimProxy_5value___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_v); /*proto*/
static int __pyx_f_6rabbyt_13dynamicvalues_9AnimProxy_5value___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_v) {
  int __pyx_r;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  Py_INCREF((PyObject *)__pyx_v_self);
  Py_INCREF(__pyx_v_v);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":329 */
  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_to_Anim); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; goto __pyx_L1;}
  __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; goto __pyx_L1;}
  Py_INCREF(__pyx_v_v);
  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_v);
  __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; goto __pyx_L1;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  Py_DECREF(__pyx_2); __pyx_2 = 0;
  if (!__Pyx_TypeTest(__pyx_3, __pyx_ptype_6rabbyt_13dynamicvalues_Anim)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; goto __pyx_L1;}
  Py_DECREF(((PyObject *)((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy *)__pyx_v_self)->_value));
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy *)__pyx_v_self)->_value = __pyx_3;
  __pyx_3 = 0;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":330 */
  ((struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy *)__pyx_v_self)->cache_time = 0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  __Pyx_AddTraceback("rabbyt.dynamicvalues.AnimProxy.value.__set__");
  __pyx_r = -1;
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  Py_DECREF(__pyx_v_v);
  return __pyx_r;
}

static float __pyx_f_6rabbyt_13dynamicvalues_9AnimProxy_g(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy *__pyx_v_self) {
  float __pyx_r;
  int __pyx_1;
  Py_INCREF((PyObject *)__pyx_v_self);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":333 */
  __pyx_1 = (!__pyx_v_self->cache_output);
  if (!__pyx_1) {
    __pyx_1 = (__pyx_f_6rabbyt_13dynamicvalues__get_time() != __pyx_v_self->cache_time);
  }
  if (__pyx_1) {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":334 */
    __pyx_v_self->cache = ((struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim *)__pyx_v_self->_value->__pyx_vtab)->g(__pyx_v_self->_value);

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":335 */
    __pyx_v_self->cache_time = __pyx_f_6rabbyt_13dynamicvalues__get_time();
    goto __pyx_L2;
  }
  __pyx_L2:;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":336 */
  __pyx_r = __pyx_v_self->cache;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1:;
  __Pyx_WriteUnraisable("rabbyt.dynamicvalues.AnimProxy.g");
  __pyx_L0:;
  Py_DECREF((PyObject *)__pyx_v_self);
  return __pyx_r;
}

static PyObject *__pyx_n_callable;

static PyObject *__pyx_f_6rabbyt_13dynamicvalues_to_Anim(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6rabbyt_13dynamicvalues_to_Anim[] = "\n    to_Anim(value) -> Anim subclass instance\n\n    This is a convenience function to get Anim for a value.\n\n    If value is already a Anim, it is returned directly.\n\n    If value is callable, it is wrapped in a AnimPyFunc.\n\n    Otherwise, value is wrapped in a AnimConst.\n    ";
static PyObject *__pyx_f_6rabbyt_13dynamicvalues_to_Anim(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_v = 0;
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *__pyx_v_dv;
  PyObject *__pyx_r;
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  int __pyx_4;
  static char *__pyx_argnames[] = {"v",0};
  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O", __pyx_argnames, &__pyx_v_v)) return 0;
  Py_INCREF(__pyx_v_v);
  __pyx_v_dv = ((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)Py_None); Py_INCREF(Py_None);

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":351 */
  __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_isinstance); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; goto __pyx_L1;}
  __pyx_2 = PyTuple_New(2); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; goto __pyx_L1;}
  Py_INCREF(__pyx_v_v);
  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_v);
  Py_INCREF(((PyObject*)__pyx_ptype_6rabbyt_13dynamicvalues_Anim));
  PyTuple_SET_ITEM(__pyx_2, 1, ((PyObject*)__pyx_ptype_6rabbyt_13dynamicvalues_Anim));
  __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; goto __pyx_L1;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  Py_DECREF(__pyx_2); __pyx_2 = 0;
  __pyx_4 = PyObject_IsTrue(__pyx_3); if (__pyx_4 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; goto __pyx_L1;}
  Py_DECREF(__pyx_3); __pyx_3 = 0;
  if (__pyx_4) {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":352 */
    if (!__Pyx_TypeTest(__pyx_v_v, __pyx_ptype_6rabbyt_13dynamicvalues_Anim)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 352; goto __pyx_L1;}
    Py_INCREF(__pyx_v_v);
    Py_DECREF(((PyObject *)__pyx_v_dv));
    __pyx_v_dv = ((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)__pyx_v_v);
    goto __pyx_L2;
  }
  __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_callable); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; goto __pyx_L1;}
  __pyx_2 = PyTuple_New(1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; goto __pyx_L1;}
  Py_INCREF(__pyx_v_v);
  PyTuple_SET_ITEM(__pyx_2, 0, __pyx_v_v);
  __pyx_3 = PyObject_CallObject(__pyx_1, __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; goto __pyx_L1;}
  Py_DECREF(__pyx_1); __pyx_1 = 0;
  Py_DECREF(__pyx_2); __pyx_2 = 0;
  __pyx_4 = PyObject_IsTrue(__pyx_3); if (__pyx_4 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; goto __pyx_L1;}
  Py_DECREF(__pyx_3); __pyx_3 = 0;
  if (__pyx_4) {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":354 */
    __pyx_1 = PyTuple_New(1); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; goto __pyx_L1;}
    Py_INCREF(__pyx_v_v);
    PyTuple_SET_ITEM(__pyx_1, 0, __pyx_v_v);
    __pyx_2 = PyObject_CallObject(((PyObject*)__pyx_ptype_6rabbyt_13dynamicvalues_AnimPyFunc), __pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; goto __pyx_L1;}
    Py_DECREF(__pyx_1); __pyx_1 = 0;
    if (!__Pyx_TypeTest(__pyx_2, __pyx_ptype_6rabbyt_13dynamicvalues_Anim)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; goto __pyx_L1;}
    Py_DECREF(((PyObject *)__pyx_v_dv));
    __pyx_v_dv = ((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)__pyx_2);
    __pyx_2 = 0;
    goto __pyx_L2;
  }
  /*else*/ {

    /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":356 */
    __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; goto __pyx_L1;}
    Py_INCREF(__pyx_v_v);
    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_v_v);
    __pyx_1 = PyObject_CallObject(((PyObject*)__pyx_ptype_6rabbyt_13dynamicvalues_AnimConst), __pyx_3); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; goto __pyx_L1;}
    Py_DECREF(__pyx_3); __pyx_3 = 0;
    if (!__Pyx_TypeTest(__pyx_1, __pyx_ptype_6rabbyt_13dynamicvalues_Anim)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 356; goto __pyx_L1;}
    Py_DECREF(((PyObject *)__pyx_v_dv));
    __pyx_v_dv = ((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)__pyx_1);
    __pyx_1 = 0;
  }
  __pyx_L2:;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":357 */
  Py_INCREF(((PyObject *)__pyx_v_dv));
  __pyx_r = ((PyObject *)__pyx_v_dv);
  goto __pyx_L0;

  __pyx_r = Py_None; Py_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  __Pyx_AddTraceback("rabbyt.dynamicvalues.to_Anim");
  __pyx_r = 0;
  __pyx_L0:;
  Py_DECREF(__pyx_v_dv);
  Py_DECREF(__pyx_v_v);
  return __pyx_r;
}

static __Pyx_InternTabEntry __pyx_intern_tab[] = {
  {&__pyx_n_False, "False"},
  {&__pyx_n_True, "True"},
  {&__pyx_n___author__, "__author__"},
  {&__pyx_n___credits__, "__credits__"},
  {&__pyx_n_callable, "callable"},
  {&__pyx_n_float, "float"},
  {&__pyx_n_get_time, "get_time"},
  {&__pyx_n_int, "int"},
  {&__pyx_n_isinstance, "isinstance"},
  {&__pyx_n_long, "long"},
  {&__pyx_n_set_time, "set_time"},
  {&__pyx_n_to_Anim, "to_Anim"},
  {&__pyx_n_value, "value"},
  {0, 0}
};

static __Pyx_StringTabEntry __pyx_string_tab[] = {
  {&__pyx_k1p, __pyx_k1, sizeof(__pyx_k1)},
  {&__pyx_k2p, __pyx_k2, sizeof(__pyx_k2)},
  {0, 0, 0}
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim __pyx_vtable_6rabbyt_13dynamicvalues_Anim;

static PyObject *__pyx_tp_new_6rabbyt_13dynamicvalues_Anim(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = (*t->tp_alloc)(t, 0);
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)o;
  *(struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_Anim **)&p->__pyx_vtab = __pyx_vtabptr_6rabbyt_13dynamicvalues_Anim;
  return o;
}

static void __pyx_tp_dealloc_6rabbyt_13dynamicvalues_Anim(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)o;
  (*o->ob_type->tp_free)(o);
}

static int __pyx_tp_traverse_6rabbyt_13dynamicvalues_Anim(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)o;
  return 0;
}

static int __pyx_tp_clear_6rabbyt_13dynamicvalues_Anim(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)o;
  return 0;
}

static struct PyMethodDef __pyx_methods_6rabbyt_13dynamicvalues_Anim[] = {
  {"get", (PyCFunction)__pyx_f_6rabbyt_13dynamicvalues_4Anim_get, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6rabbyt_13dynamicvalues_4Anim_get},
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_Anim = {
  __pyx_f_6rabbyt_13dynamicvalues_4Anim___add__, /*nb_add*/
  __pyx_f_6rabbyt_13dynamicvalues_4Anim___sub__, /*nb_subtract*/
  __pyx_f_6rabbyt_13dynamicvalues_4Anim___mul__, /*nb_multiply*/
  __pyx_f_6rabbyt_13dynamicvalues_4Anim___div__, /*nb_divide*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  0, /*nb_coerce*/
  0, /*nb_int*/
  0, /*nb_long*/
  0, /*nb_float*/
  0, /*nb_oct*/
  0, /*nb_hex*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  0, /*nb_inplace_divide*/
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
};

static PySequenceMethods __pyx_tp_as_sequence_Anim = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Anim = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_Anim = {
  0, /*bf_getreadbuffer*/
  0, /*bf_getwritebuffer*/
  0, /*bf_getsegcount*/
  0, /*bf_getcharbuffer*/
};

PyTypeObject __pyx_type_6rabbyt_13dynamicvalues_Anim = {
  PyObject_HEAD_INIT(0)
  0, /*ob_size*/
  "rabbyt.dynamicvalues.Anim", /*tp_name*/
  sizeof(struct __pyx_obj_6rabbyt_13dynamicvalues_Anim), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6rabbyt_13dynamicvalues_Anim, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_Anim, /*tp_as_number*/
  &__pyx_tp_as_sequence_Anim, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Anim, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_Anim, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  "\n    Anim\n\n    This is the base class for dynamic values.  It shouldn\'t be instanced\n    directly.\n\n    Performing arithmatic opperations on a dynamic value will result in a new\n    dynamic value that will allways be up to date.\n    ", /*tp_doc*/
  __pyx_tp_traverse_6rabbyt_13dynamicvalues_Anim, /*tp_traverse*/
  __pyx_tp_clear_6rabbyt_13dynamicvalues_Anim, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6rabbyt_13dynamicvalues_Anim, /*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*/
  __pyx_tp_new_6rabbyt_13dynamicvalues_Anim, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimConst __pyx_vtable_6rabbyt_13dynamicvalues_AnimConst;

static PyObject *__pyx_tp_new_6rabbyt_13dynamicvalues_AnimConst(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_new(t, a, k);
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimConst *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimConst *)o;
  *(struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimConst **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimConst;
  return o;
}

static void __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimConst(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimConst *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimConst *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_dealloc(o);
}

static int __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimConst(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimConst *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimConst *)o;
  e = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_traverse(o, v, a); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimConst(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimConst *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimConst *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_clear(o);
  return 0;
}

static struct PyMethodDef __pyx_methods_6rabbyt_13dynamicvalues_AnimConst[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_AnimConst = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  0, /*nb_divide*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  0, /*nb_coerce*/
  0, /*nb_int*/
  0, /*nb_long*/
  0, /*nb_float*/
  0, /*nb_oct*/
  0, /*nb_hex*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  0, /*nb_inplace_divide*/
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
};

static PySequenceMethods __pyx_tp_as_sequence_AnimConst = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_AnimConst = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_AnimConst = {
  0, /*bf_getreadbuffer*/
  0, /*bf_getwritebuffer*/
  0, /*bf_getsegcount*/
  0, /*bf_getcharbuffer*/
};

PyTypeObject __pyx_type_6rabbyt_13dynamicvalues_AnimConst = {
  PyObject_HEAD_INIT(0)
  0, /*ob_size*/
  "rabbyt.dynamicvalues.AnimConst", /*tp_name*/
  sizeof(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimConst), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimConst, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_AnimConst, /*tp_as_number*/
  &__pyx_tp_as_sequence_AnimConst, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_AnimConst, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_AnimConst, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  "\n    AnimConst(value)\n\n    A dynamic value that isn\'t dynamic.\n\n    This is mostly here so that constant values can be used with the same\n    interface as dynamic values.\n    ", /*tp_doc*/
  __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimConst, /*tp_traverse*/
  __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimConst, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6rabbyt_13dynamicvalues_AnimConst, /*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*/
  __pyx_f_6rabbyt_13dynamicvalues_9AnimConst___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6rabbyt_13dynamicvalues_AnimConst, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimLerp __pyx_vtable_6rabbyt_13dynamicvalues_AnimLerp;

static PyObject *__pyx_tp_new_6rabbyt_13dynamicvalues_AnimLerp(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_new(t, a, k);
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *)o;
  *(struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimLerp **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimLerp;
  return o;
}

static void __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimLerp(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_dealloc(o);
}

static int __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimLerp(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *)o;
  e = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_traverse(o, v, a); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimLerp(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_clear(o);
  return 0;
}

static struct PyMethodDef __pyx_methods_6rabbyt_13dynamicvalues_AnimLerp[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_AnimLerp = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  0, /*nb_divide*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  0, /*nb_coerce*/
  0, /*nb_int*/
  0, /*nb_long*/
  0, /*nb_float*/
  0, /*nb_oct*/
  0, /*nb_hex*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  0, /*nb_inplace_divide*/
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
};

static PySequenceMethods __pyx_tp_as_sequence_AnimLerp = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_AnimLerp = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_AnimLerp = {
  0, /*bf_getreadbuffer*/
  0, /*bf_getwritebuffer*/
  0, /*bf_getsegcount*/
  0, /*bf_getcharbuffer*/
};

PyTypeObject __pyx_type_6rabbyt_13dynamicvalues_AnimLerp = {
  PyObject_HEAD_INIT(0)
  0, /*ob_size*/
  "rabbyt.dynamicvalues.AnimLerp", /*tp_name*/
  sizeof(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimLerp), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimLerp, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_AnimLerp, /*tp_as_number*/
  &__pyx_tp_as_sequence_AnimLerp, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_AnimLerp, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_AnimLerp, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimLerp, /*tp_traverse*/
  __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimLerp, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6rabbyt_13dynamicvalues_AnimLerp, /*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*/
  __pyx_f_6rabbyt_13dynamicvalues_8AnimLerp___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6rabbyt_13dynamicvalues_AnimLerp, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimStaticCubicBezier __pyx_vtable_6rabbyt_13dynamicvalues_AnimStaticCubicBezier;

static PyObject *__pyx_tp_new_6rabbyt_13dynamicvalues_AnimStaticCubicBezier(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_new(t, a, k);
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *)o;
  *(struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimStaticCubicBezier **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimStaticCubicBezier;
  return o;
}

static void __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimStaticCubicBezier(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_dealloc(o);
}

static int __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimStaticCubicBezier(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *)o;
  e = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_traverse(o, v, a); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimStaticCubicBezier(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_clear(o);
  return 0;
}

static struct PyMethodDef __pyx_methods_6rabbyt_13dynamicvalues_AnimStaticCubicBezier[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_AnimStaticCubicBezier = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  0, /*nb_divide*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  0, /*nb_coerce*/
  0, /*nb_int*/
  0, /*nb_long*/
  0, /*nb_float*/
  0, /*nb_oct*/
  0, /*nb_hex*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  0, /*nb_inplace_divide*/
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
};

static PySequenceMethods __pyx_tp_as_sequence_AnimStaticCubicBezier = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_AnimStaticCubicBezier = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_AnimStaticCubicBezier = {
  0, /*bf_getreadbuffer*/
  0, /*bf_getwritebuffer*/
  0, /*bf_getsegcount*/
  0, /*bf_getcharbuffer*/
};

PyTypeObject __pyx_type_6rabbyt_13dynamicvalues_AnimStaticCubicBezier = {
  PyObject_HEAD_INIT(0)
  0, /*ob_size*/
  "rabbyt.dynamicvalues.AnimStaticCubicBezier", /*tp_name*/
  sizeof(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimStaticCubicBezier), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimStaticCubicBezier, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_AnimStaticCubicBezier, /*tp_as_number*/
  &__pyx_tp_as_sequence_AnimStaticCubicBezier, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_AnimStaticCubicBezier, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_AnimStaticCubicBezier, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimStaticCubicBezier, /*tp_traverse*/
  __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimStaticCubicBezier, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6rabbyt_13dynamicvalues_AnimStaticCubicBezier, /*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*/
  __pyx_f_6rabbyt_13dynamicvalues_21AnimStaticCubicBezier___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6rabbyt_13dynamicvalues_AnimStaticCubicBezier, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimWrap __pyx_vtable_6rabbyt_13dynamicvalues_AnimWrap;

static PyObject *__pyx_tp_new_6rabbyt_13dynamicvalues_AnimWrap(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_new(t, a, k);
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *)o;
  *(struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimWrap **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimWrap;
  p->parent = ((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)Py_None); Py_INCREF(Py_None);
  p->bounds = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimWrap(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *)o;
  Py_XDECREF(((PyObject *)p->parent));
  Py_XDECREF(p->bounds);
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_dealloc(o);
}

static int __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimWrap(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *)o;
  e = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_traverse(o, v, a); if (e) return e;
  if (p->parent) {
    e = (*v)(((PyObject*)p->parent), a); if (e) return e;
  }
  if (p->bounds) {
    e = (*v)(p->bounds, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimWrap(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_clear(o);
  Py_XDECREF(((PyObject *)p->parent));
  p->parent = ((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(p->bounds);
  p->bounds = Py_None; Py_INCREF(Py_None);
  return 0;
}

static struct PyMethodDef __pyx_methods_6rabbyt_13dynamicvalues_AnimWrap[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_AnimWrap = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  0, /*nb_divide*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  0, /*nb_coerce*/
  0, /*nb_int*/
  0, /*nb_long*/
  0, /*nb_float*/
  0, /*nb_oct*/
  0, /*nb_hex*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  0, /*nb_inplace_divide*/
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
};

static PySequenceMethods __pyx_tp_as_sequence_AnimWrap = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_AnimWrap = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_AnimWrap = {
  0, /*bf_getreadbuffer*/
  0, /*bf_getwritebuffer*/
  0, /*bf_getsegcount*/
  0, /*bf_getcharbuffer*/
};

PyTypeObject __pyx_type_6rabbyt_13dynamicvalues_AnimWrap = {
  PyObject_HEAD_INIT(0)
  0, /*ob_size*/
  "rabbyt.dynamicvalues.AnimWrap", /*tp_name*/
  sizeof(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimWrap), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimWrap, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_AnimWrap, /*tp_as_number*/
  &__pyx_tp_as_sequence_AnimWrap, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_AnimWrap, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_AnimWrap, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  "\n    AnimWrap(bounds, parent, static=True)\n\n    A dynamic value that returns another dynamic value wrapped within two\n    bounds.\n\n    You might want to use rabbyt.wrap() instead.\n\n    bounds is the bounds that the value should be wrapped within.  It can\n    be anything supporting item access with a length of at least two.\n\n    parent is the dynamic value that is being wrapped.\n\n    If static is true, bounds[0] and bounds[1] are read only once and stored\n    as variables in c.  This is much faster, but doesn\'t work if bounds is\n    an object you wish to mutate.\n    ", /*tp_doc*/
  __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimWrap, /*tp_traverse*/
  __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimWrap, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6rabbyt_13dynamicvalues_AnimWrap, /*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*/
  __pyx_f_6rabbyt_13dynamicvalues_8AnimWrap___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6rabbyt_13dynamicvalues_AnimWrap, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimAddStatic __pyx_vtable_6rabbyt_13dynamicvalues_AnimAddStatic;

static PyObject *__pyx_tp_new_6rabbyt_13dynamicvalues_AnimAddStatic(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_new(t, a, k);
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAddStatic *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAddStatic *)o;
  *(struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimAddStatic **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimAddStatic;
  p->a = ((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimAddStatic(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAddStatic *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAddStatic *)o;
  Py_XDECREF(((PyObject *)p->a));
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_dealloc(o);
}

static int __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimAddStatic(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAddStatic *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAddStatic *)o;
  e = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_traverse(o, v, a); if (e) return e;
  if (p->a) {
    e = (*v)(((PyObject*)p->a), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimAddStatic(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAddStatic *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAddStatic *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_clear(o);
  Py_XDECREF(((PyObject *)p->a));
  p->a = ((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)Py_None); Py_INCREF(Py_None);
  return 0;
}

static struct PyMethodDef __pyx_methods_6rabbyt_13dynamicvalues_AnimAddStatic[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_AnimAddStatic = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  0, /*nb_divide*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  0, /*nb_coerce*/
  0, /*nb_int*/
  0, /*nb_long*/
  0, /*nb_float*/
  0, /*nb_oct*/
  0, /*nb_hex*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  0, /*nb_inplace_divide*/
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
};

static PySequenceMethods __pyx_tp_as_sequence_AnimAddStatic = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_AnimAddStatic = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_AnimAddStatic = {
  0, /*bf_getreadbuffer*/
  0, /*bf_getwritebuffer*/
  0, /*bf_getsegcount*/
  0, /*bf_getcharbuffer*/
};

PyTypeObject __pyx_type_6rabbyt_13dynamicvalues_AnimAddStatic = {
  PyObject_HEAD_INIT(0)
  0, /*ob_size*/
  "rabbyt.dynamicvalues.AnimAddStatic", /*tp_name*/
  sizeof(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAddStatic), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimAddStatic, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_AnimAddStatic, /*tp_as_number*/
  &__pyx_tp_as_sequence_AnimAddStatic, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_AnimAddStatic, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_AnimAddStatic, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimAddStatic, /*tp_traverse*/
  __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimAddStatic, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6rabbyt_13dynamicvalues_AnimAddStatic, /*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*/
  __pyx_f_6rabbyt_13dynamicvalues_13AnimAddStatic___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6rabbyt_13dynamicvalues_AnimAddStatic, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues__AnimArithmatic __pyx_vtable_6rabbyt_13dynamicvalues__AnimArithmatic;

static PyObject *__pyx_tp_new_6rabbyt_13dynamicvalues__AnimArithmatic(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_new(t, a, k);
  struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic *p = (struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic *)o;
  *(struct __pyx_vtabstruct_6rabbyt_13dynamicvalues__AnimArithmatic **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_6rabbyt_13dynamicvalues__AnimArithmatic;
  p->a1 = ((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)Py_None); Py_INCREF(Py_None);
  p->a2 = ((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_6rabbyt_13dynamicvalues__AnimArithmatic(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic *p = (struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic *)o;
  Py_XDECREF(((PyObject *)p->a1));
  Py_XDECREF(((PyObject *)p->a2));
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_dealloc(o);
}

static int __pyx_tp_traverse_6rabbyt_13dynamicvalues__AnimArithmatic(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic *p = (struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic *)o;
  e = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_traverse(o, v, a); if (e) return e;
  if (p->a1) {
    e = (*v)(((PyObject*)p->a1), a); if (e) return e;
  }
  if (p->a2) {
    e = (*v)(((PyObject*)p->a2), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6rabbyt_13dynamicvalues__AnimArithmatic(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic *p = (struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_clear(o);
  Py_XDECREF(((PyObject *)p->a1));
  p->a1 = ((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(((PyObject *)p->a2));
  p->a2 = ((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)Py_None); Py_INCREF(Py_None);
  return 0;
}

static struct PyMethodDef __pyx_methods_6rabbyt_13dynamicvalues__AnimArithmatic[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number__AnimArithmatic = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  0, /*nb_divide*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  0, /*nb_coerce*/
  0, /*nb_int*/
  0, /*nb_long*/
  0, /*nb_float*/
  0, /*nb_oct*/
  0, /*nb_hex*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  0, /*nb_inplace_divide*/
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
};

static PySequenceMethods __pyx_tp_as_sequence__AnimArithmatic = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping__AnimArithmatic = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer__AnimArithmatic = {
  0, /*bf_getreadbuffer*/
  0, /*bf_getwritebuffer*/
  0, /*bf_getsegcount*/
  0, /*bf_getcharbuffer*/
};

PyTypeObject __pyx_type_6rabbyt_13dynamicvalues__AnimArithmatic = {
  PyObject_HEAD_INIT(0)
  0, /*ob_size*/
  "rabbyt.dynamicvalues._AnimArithmatic", /*tp_name*/
  sizeof(struct __pyx_obj_6rabbyt_13dynamicvalues__AnimArithmatic), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6rabbyt_13dynamicvalues__AnimArithmatic, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number__AnimArithmatic, /*tp_as_number*/
  &__pyx_tp_as_sequence__AnimArithmatic, /*tp_as_sequence*/
  &__pyx_tp_as_mapping__AnimArithmatic, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer__AnimArithmatic, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6rabbyt_13dynamicvalues__AnimArithmatic, /*tp_traverse*/
  __pyx_tp_clear_6rabbyt_13dynamicvalues__AnimArithmatic, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6rabbyt_13dynamicvalues__AnimArithmatic, /*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*/
  __pyx_f_6rabbyt_13dynamicvalues_15_AnimArithmatic___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6rabbyt_13dynamicvalues__AnimArithmatic, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimAdd __pyx_vtable_6rabbyt_13dynamicvalues_AnimAdd;

static PyObject *__pyx_tp_new_6rabbyt_13dynamicvalues_AnimAdd(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_new(t, a, k);
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAdd *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAdd *)o;
  *(struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimAdd **)&p->__pyx_base.__pyx_base.__pyx_vtab = __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimAdd;
  return o;
}

static void __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimAdd(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAdd *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAdd *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_dealloc(o);
}

static int __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimAdd(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAdd *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAdd *)o;
  e = __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_traverse(o, v, a); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimAdd(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAdd *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAdd *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_clear(o);
  return 0;
}

static struct PyMethodDef __pyx_methods_6rabbyt_13dynamicvalues_AnimAdd[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_AnimAdd = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  0, /*nb_divide*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  0, /*nb_coerce*/
  0, /*nb_int*/
  0, /*nb_long*/
  0, /*nb_float*/
  0, /*nb_oct*/
  0, /*nb_hex*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  0, /*nb_inplace_divide*/
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
};

static PySequenceMethods __pyx_tp_as_sequence_AnimAdd = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_AnimAdd = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_AnimAdd = {
  0, /*bf_getreadbuffer*/
  0, /*bf_getwritebuffer*/
  0, /*bf_getsegcount*/
  0, /*bf_getcharbuffer*/
};

PyTypeObject __pyx_type_6rabbyt_13dynamicvalues_AnimAdd = {
  PyObject_HEAD_INIT(0)
  0, /*ob_size*/
  "rabbyt.dynamicvalues.AnimAdd", /*tp_name*/
  sizeof(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimAdd), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimAdd, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_AnimAdd, /*tp_as_number*/
  &__pyx_tp_as_sequence_AnimAdd, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_AnimAdd, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_AnimAdd, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimAdd, /*tp_traverse*/
  __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimAdd, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6rabbyt_13dynamicvalues_AnimAdd, /*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*/
  __pyx_tp_new_6rabbyt_13dynamicvalues_AnimAdd, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimSub __pyx_vtable_6rabbyt_13dynamicvalues_AnimSub;

static PyObject *__pyx_tp_new_6rabbyt_13dynamicvalues_AnimSub(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_new(t, a, k);
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimSub *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimSub *)o;
  *(struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimSub **)&p->__pyx_base.__pyx_base.__pyx_vtab = __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimSub;
  return o;
}

static void __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimSub(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimSub *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimSub *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_dealloc(o);
}

static int __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimSub(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimSub *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimSub *)o;
  e = __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_traverse(o, v, a); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimSub(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimSub *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimSub *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_clear(o);
  return 0;
}

static struct PyMethodDef __pyx_methods_6rabbyt_13dynamicvalues_AnimSub[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_AnimSub = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  0, /*nb_divide*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  0, /*nb_coerce*/
  0, /*nb_int*/
  0, /*nb_long*/
  0, /*nb_float*/
  0, /*nb_oct*/
  0, /*nb_hex*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  0, /*nb_inplace_divide*/
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
};

static PySequenceMethods __pyx_tp_as_sequence_AnimSub = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_AnimSub = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_AnimSub = {
  0, /*bf_getreadbuffer*/
  0, /*bf_getwritebuffer*/
  0, /*bf_getsegcount*/
  0, /*bf_getcharbuffer*/
};

PyTypeObject __pyx_type_6rabbyt_13dynamicvalues_AnimSub = {
  PyObject_HEAD_INIT(0)
  0, /*ob_size*/
  "rabbyt.dynamicvalues.AnimSub", /*tp_name*/
  sizeof(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimSub), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimSub, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_AnimSub, /*tp_as_number*/
  &__pyx_tp_as_sequence_AnimSub, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_AnimSub, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_AnimSub, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimSub, /*tp_traverse*/
  __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimSub, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6rabbyt_13dynamicvalues_AnimSub, /*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*/
  __pyx_tp_new_6rabbyt_13dynamicvalues_AnimSub, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimMul __pyx_vtable_6rabbyt_13dynamicvalues_AnimMul;

static PyObject *__pyx_tp_new_6rabbyt_13dynamicvalues_AnimMul(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_new(t, a, k);
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimMul *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimMul *)o;
  *(struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimMul **)&p->__pyx_base.__pyx_base.__pyx_vtab = __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimMul;
  return o;
}

static void __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimMul(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimMul *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimMul *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_dealloc(o);
}

static int __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimMul(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimMul *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimMul *)o;
  e = __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_traverse(o, v, a); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimMul(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimMul *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimMul *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_clear(o);
  return 0;
}

static struct PyMethodDef __pyx_methods_6rabbyt_13dynamicvalues_AnimMul[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_AnimMul = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  0, /*nb_divide*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  0, /*nb_coerce*/
  0, /*nb_int*/
  0, /*nb_long*/
  0, /*nb_float*/
  0, /*nb_oct*/
  0, /*nb_hex*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  0, /*nb_inplace_divide*/
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
};

static PySequenceMethods __pyx_tp_as_sequence_AnimMul = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_AnimMul = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_AnimMul = {
  0, /*bf_getreadbuffer*/
  0, /*bf_getwritebuffer*/
  0, /*bf_getsegcount*/
  0, /*bf_getcharbuffer*/
};

PyTypeObject __pyx_type_6rabbyt_13dynamicvalues_AnimMul = {
  PyObject_HEAD_INIT(0)
  0, /*ob_size*/
  "rabbyt.dynamicvalues.AnimMul", /*tp_name*/
  sizeof(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimMul), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimMul, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_AnimMul, /*tp_as_number*/
  &__pyx_tp_as_sequence_AnimMul, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_AnimMul, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_AnimMul, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimMul, /*tp_traverse*/
  __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimMul, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6rabbyt_13dynamicvalues_AnimMul, /*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*/
  __pyx_tp_new_6rabbyt_13dynamicvalues_AnimMul, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimDiv __pyx_vtable_6rabbyt_13dynamicvalues_AnimDiv;

static PyObject *__pyx_tp_new_6rabbyt_13dynamicvalues_AnimDiv(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_new(t, a, k);
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimDiv *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimDiv *)o;
  *(struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimDiv **)&p->__pyx_base.__pyx_base.__pyx_vtab = __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimDiv;
  return o;
}

static void __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimDiv(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimDiv *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimDiv *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_dealloc(o);
}

static int __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimDiv(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimDiv *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimDiv *)o;
  e = __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_traverse(o, v, a); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimDiv(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimDiv *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimDiv *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic->tp_clear(o);
  return 0;
}

static struct PyMethodDef __pyx_methods_6rabbyt_13dynamicvalues_AnimDiv[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_AnimDiv = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  0, /*nb_divide*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  0, /*nb_coerce*/
  0, /*nb_int*/
  0, /*nb_long*/
  0, /*nb_float*/
  0, /*nb_oct*/
  0, /*nb_hex*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  0, /*nb_inplace_divide*/
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
};

static PySequenceMethods __pyx_tp_as_sequence_AnimDiv = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_AnimDiv = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_AnimDiv = {
  0, /*bf_getreadbuffer*/
  0, /*bf_getwritebuffer*/
  0, /*bf_getsegcount*/
  0, /*bf_getcharbuffer*/
};

PyTypeObject __pyx_type_6rabbyt_13dynamicvalues_AnimDiv = {
  PyObject_HEAD_INIT(0)
  0, /*ob_size*/
  "rabbyt.dynamicvalues.AnimDiv", /*tp_name*/
  sizeof(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimDiv), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimDiv, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_AnimDiv, /*tp_as_number*/
  &__pyx_tp_as_sequence_AnimDiv, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_AnimDiv, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_AnimDiv, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimDiv, /*tp_traverse*/
  __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimDiv, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6rabbyt_13dynamicvalues_AnimDiv, /*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*/
  __pyx_tp_new_6rabbyt_13dynamicvalues_AnimDiv, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimPyFunc __pyx_vtable_6rabbyt_13dynamicvalues_AnimPyFunc;

static PyObject *__pyx_tp_new_6rabbyt_13dynamicvalues_AnimPyFunc(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_new(t, a, k);
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimPyFunc *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimPyFunc *)o;
  *(struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimPyFunc **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimPyFunc;
  p->function = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimPyFunc(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimPyFunc *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimPyFunc *)o;
  Py_XDECREF(p->function);
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_dealloc(o);
}

static int __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimPyFunc(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimPyFunc *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimPyFunc *)o;
  e = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_traverse(o, v, a); if (e) return e;
  if (p->function) {
    e = (*v)(p->function, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimPyFunc(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimPyFunc *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimPyFunc *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_clear(o);
  Py_XDECREF(p->function);
  p->function = Py_None; Py_INCREF(Py_None);
  return 0;
}

static struct PyMethodDef __pyx_methods_6rabbyt_13dynamicvalues_AnimPyFunc[] = {
  {0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_AnimPyFunc = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  0, /*nb_divide*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  0, /*nb_coerce*/
  0, /*nb_int*/
  0, /*nb_long*/
  0, /*nb_float*/
  0, /*nb_oct*/
  0, /*nb_hex*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  0, /*nb_inplace_divide*/
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
};

static PySequenceMethods __pyx_tp_as_sequence_AnimPyFunc = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_AnimPyFunc = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_AnimPyFunc = {
  0, /*bf_getreadbuffer*/
  0, /*bf_getwritebuffer*/
  0, /*bf_getsegcount*/
  0, /*bf_getcharbuffer*/
};

PyTypeObject __pyx_type_6rabbyt_13dynamicvalues_AnimPyFunc = {
  PyObject_HEAD_INIT(0)
  0, /*ob_size*/
  "rabbyt.dynamicvalues.AnimPyFunc", /*tp_name*/
  sizeof(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimPyFunc), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimPyFunc, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_AnimPyFunc, /*tp_as_number*/
  &__pyx_tp_as_sequence_AnimPyFunc, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_AnimPyFunc, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_AnimPyFunc, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  "\n    AnimPyFunc(function, cache=False)\n\n    A dynamic value that calls a python function, using the returned value.\n\n    function is the callback called to retrieve the value.  It should\n    return a float.\n\n    If cache is True, the result returned by function will be cached for\n    as long as the time (as set by rabbyt.set_time()) doesn\'t change.\n    This could provide good speedup if the value is read multiple times per\n    frame.\n    ", /*tp_doc*/
  __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimPyFunc, /*tp_traverse*/
  __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimPyFunc, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6rabbyt_13dynamicvalues_AnimPyFunc, /*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*/
  __pyx_f_6rabbyt_13dynamicvalues_10AnimPyFunc___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6rabbyt_13dynamicvalues_AnimPyFunc, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
};
static struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimProxy __pyx_vtable_6rabbyt_13dynamicvalues_AnimProxy;

static PyObject *__pyx_tp_new_6rabbyt_13dynamicvalues_AnimProxy(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_new(t, a, k);
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy *)o;
  *(struct __pyx_vtabstruct_6rabbyt_13dynamicvalues_AnimProxy **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimProxy;
  p->_value = ((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimProxy(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy *)o;
  Py_XDECREF(((PyObject *)p->_value));
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_dealloc(o);
}

static int __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimProxy(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy *)o;
  e = __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_traverse(o, v, a); if (e) return e;
  if (p->_value) {
    e = (*v)(((PyObject*)p->_value), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimProxy(PyObject *o) {
  struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy *p = (struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy *)o;
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim->tp_clear(o);
  Py_XDECREF(((PyObject *)p->_value));
  p->_value = ((struct __pyx_obj_6rabbyt_13dynamicvalues_Anim *)Py_None); Py_INCREF(Py_None);
  return 0;
}

static PyObject *__pyx_getprop_6rabbyt_13dynamicvalues_9AnimProxy_value(PyObject *o, void *x) {
  return __pyx_f_6rabbyt_13dynamicvalues_9AnimProxy_5value___get__(o);
}

static int __pyx_setprop_6rabbyt_13dynamicvalues_9AnimProxy_value(PyObject *o, PyObject *v, void *x) {
  if (v) {
    return __pyx_f_6rabbyt_13dynamicvalues_9AnimProxy_5value___set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static struct PyMethodDef __pyx_methods_6rabbyt_13dynamicvalues_AnimProxy[] = {
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_6rabbyt_13dynamicvalues_AnimProxy[] = {
  {"value", __pyx_getprop_6rabbyt_13dynamicvalues_9AnimProxy_value, __pyx_setprop_6rabbyt_13dynamicvalues_9AnimProxy_value, 0, 0},
  {0, 0, 0, 0, 0}
};

static PyNumberMethods __pyx_tp_as_number_AnimProxy = {
  0, /*nb_add*/
  0, /*nb_subtract*/
  0, /*nb_multiply*/
  0, /*nb_divide*/
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_nonzero*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  0, /*nb_coerce*/
  0, /*nb_int*/
  0, /*nb_long*/
  0, /*nb_float*/
  0, /*nb_oct*/
  0, /*nb_hex*/
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  0, /*nb_inplace_divide*/
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
};

static PySequenceMethods __pyx_tp_as_sequence_AnimProxy = {
  0, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_AnimProxy = {
  0, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyBufferProcs __pyx_tp_as_buffer_AnimProxy = {
  0, /*bf_getreadbuffer*/
  0, /*bf_getwritebuffer*/
  0, /*bf_getsegcount*/
  0, /*bf_getcharbuffer*/
};

PyTypeObject __pyx_type_6rabbyt_13dynamicvalues_AnimProxy = {
  PyObject_HEAD_INIT(0)
  0, /*ob_size*/
  "rabbyt.dynamicvalues.AnimProxy", /*tp_name*/
  sizeof(struct __pyx_obj_6rabbyt_13dynamicvalues_AnimProxy), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_6rabbyt_13dynamicvalues_AnimProxy, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_compare*/
  0, /*tp_repr*/
  &__pyx_tp_as_number_AnimProxy, /*tp_as_number*/
  &__pyx_tp_as_sequence_AnimProxy, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_AnimProxy, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  &__pyx_tp_as_buffer_AnimProxy, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  "\n    AnimProxy(value, cache=False)\n\n    A dynamic value that simply returns the value of another dynamic value.\n    ", /*tp_doc*/
  __pyx_tp_traverse_6rabbyt_13dynamicvalues_AnimProxy, /*tp_traverse*/
  __pyx_tp_clear_6rabbyt_13dynamicvalues_AnimProxy, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_6rabbyt_13dynamicvalues_AnimProxy, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_6rabbyt_13dynamicvalues_AnimProxy, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  __pyx_f_6rabbyt_13dynamicvalues_9AnimProxy___init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_6rabbyt_13dynamicvalues_AnimProxy, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
};

static struct PyMethodDef __pyx_methods[] = {
  {"set_time", (PyCFunction)__pyx_f_6rabbyt_13dynamicvalues_set_time, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6rabbyt_13dynamicvalues_set_time},
  {"get_time", (PyCFunction)__pyx_f_6rabbyt_13dynamicvalues_get_time, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6rabbyt_13dynamicvalues_get_time},
  {"to_Anim", (PyCFunction)__pyx_f_6rabbyt_13dynamicvalues_to_Anim, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6rabbyt_13dynamicvalues_to_Anim},
  {0, 0, 0, 0}
};

static void __pyx_init_filenames(void); /*proto*/

PyMODINIT_FUNC initdynamicvalues(void); /*proto*/
PyMODINIT_FUNC initdynamicvalues(void) {
  PyObject *__pyx_1 = 0;
  PyObject *__pyx_2 = 0;
  PyObject *__pyx_3 = 0;
  __pyx_init_filenames();
  __pyx_m = Py_InitModule4("dynamicvalues", __pyx_methods, __pyx_mdoc, 0, PYTHON_API_VERSION);
  if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; goto __pyx_L1;};
  __pyx_b = PyImport_AddModule("__builtin__");
  if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; goto __pyx_L1;};
  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; goto __pyx_L1;};
  if (__Pyx_InternStrings(__pyx_intern_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; goto __pyx_L1;};
  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; goto __pyx_L1;};
  __pyx_vtabptr_6rabbyt_13dynamicvalues_Anim = &__pyx_vtable_6rabbyt_13dynamicvalues_Anim;
  *(void **)&__pyx_vtable_6rabbyt_13dynamicvalues_Anim.g = (void *)__pyx_f_6rabbyt_13dynamicvalues_4Anim_g;
  if (PyType_Ready(&__pyx_type_6rabbyt_13dynamicvalues_Anim) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; goto __pyx_L1;}
  if (__Pyx_SetVtable(__pyx_type_6rabbyt_13dynamicvalues_Anim.tp_dict, __pyx_vtabptr_6rabbyt_13dynamicvalues_Anim) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; goto __pyx_L1;}
  if (PyObject_SetAttrString(__pyx_m, "Anim", (PyObject *)&__pyx_type_6rabbyt_13dynamicvalues_Anim) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; goto __pyx_L1;}
  __pyx_ptype_6rabbyt_13dynamicvalues_Anim = &__pyx_type_6rabbyt_13dynamicvalues_Anim;
  __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimConst = &__pyx_vtable_6rabbyt_13dynamicvalues_AnimConst;
  __pyx_vtable_6rabbyt_13dynamicvalues_AnimConst.__pyx_base = *__pyx_vtabptr_6rabbyt_13dynamicvalues_Anim;
  *(void **)&__pyx_vtable_6rabbyt_13dynamicvalues_AnimConst.__pyx_base.g = (void *)__pyx_f_6rabbyt_13dynamicvalues_9AnimConst_g;
  __pyx_type_6rabbyt_13dynamicvalues_AnimConst.tp_base = __pyx_ptype_6rabbyt_13dynamicvalues_Anim;
  if (PyType_Ready(&__pyx_type_6rabbyt_13dynamicvalues_AnimConst) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; goto __pyx_L1;}
  if (__Pyx_SetVtable(__pyx_type_6rabbyt_13dynamicvalues_AnimConst.tp_dict, __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimConst) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; goto __pyx_L1;}
  if (PyObject_SetAttrString(__pyx_m, "AnimConst", (PyObject *)&__pyx_type_6rabbyt_13dynamicvalues_AnimConst) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 104; goto __pyx_L1;}
  __pyx_ptype_6rabbyt_13dynamicvalues_AnimConst = &__pyx_type_6rabbyt_13dynamicvalues_AnimConst;
  __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimLerp = &__pyx_vtable_6rabbyt_13dynamicvalues_AnimLerp;
  __pyx_vtable_6rabbyt_13dynamicvalues_AnimLerp.__pyx_base = *__pyx_vtabptr_6rabbyt_13dynamicvalues_Anim;
  *(void **)&__pyx_vtable_6rabbyt_13dynamicvalues_AnimLerp.__pyx_base.g = (void *)__pyx_f_6rabbyt_13dynamicvalues_8AnimLerp_g;
  __pyx_type_6rabbyt_13dynamicvalues_AnimLerp.tp_base = __pyx_ptype_6rabbyt_13dynamicvalues_Anim;
  if (PyType_Ready(&__pyx_type_6rabbyt_13dynamicvalues_AnimLerp) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; goto __pyx_L1;}
  if (__Pyx_SetVtable(__pyx_type_6rabbyt_13dynamicvalues_AnimLerp.tp_dict, __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimLerp) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; goto __pyx_L1;}
  if (PyObject_SetAttrString(__pyx_m, "AnimLerp", (PyObject *)&__pyx_type_6rabbyt_13dynamicvalues_AnimLerp) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; goto __pyx_L1;}
  __pyx_ptype_6rabbyt_13dynamicvalues_AnimLerp = &__pyx_type_6rabbyt_13dynamicvalues_AnimLerp;
  __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimStaticCubicBezier = &__pyx_vtable_6rabbyt_13dynamicvalues_AnimStaticCubicBezier;
  __pyx_vtable_6rabbyt_13dynamicvalues_AnimStaticCubicBezier.__pyx_base = *__pyx_vtabptr_6rabbyt_13dynamicvalues_Anim;
  *(void **)&__pyx_vtable_6rabbyt_13dynamicvalues_AnimStaticCubicBezier.__pyx_base.g = (void *)__pyx_f_6rabbyt_13dynamicvalues_21AnimStaticCubicBezier_g;
  __pyx_type_6rabbyt_13dynamicvalues_AnimStaticCubicBezier.tp_base = __pyx_ptype_6rabbyt_13dynamicvalues_Anim;
  if (PyType_Ready(&__pyx_type_6rabbyt_13dynamicvalues_AnimStaticCubicBezier) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; goto __pyx_L1;}
  if (__Pyx_SetVtable(__pyx_type_6rabbyt_13dynamicvalues_AnimStaticCubicBezier.tp_dict, __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimStaticCubicBezier) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; goto __pyx_L1;}
  if (PyObject_SetAttrString(__pyx_m, "AnimStaticCubicBezier", (PyObject *)&__pyx_type_6rabbyt_13dynamicvalues_AnimStaticCubicBezier) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; goto __pyx_L1;}
  __pyx_ptype_6rabbyt_13dynamicvalues_AnimStaticCubicBezier = &__pyx_type_6rabbyt_13dynamicvalues_AnimStaticCubicBezier;
  __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimWrap = &__pyx_vtable_6rabbyt_13dynamicvalues_AnimWrap;
  __pyx_vtable_6rabbyt_13dynamicvalues_AnimWrap.__pyx_base = *__pyx_vtabptr_6rabbyt_13dynamicvalues_Anim;
  *(void **)&__pyx_vtable_6rabbyt_13dynamicvalues_AnimWrap.__pyx_base.g = (void *)__pyx_f_6rabbyt_13dynamicvalues_8AnimWrap_g;
  __pyx_type_6rabbyt_13dynamicvalues_AnimWrap.tp_base = __pyx_ptype_6rabbyt_13dynamicvalues_Anim;
  __pyx_type_6rabbyt_13dynamicvalues_AnimWrap.tp_free = _PyObject_GC_Del;
  if (PyType_Ready(&__pyx_type_6rabbyt_13dynamicvalues_AnimWrap) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; goto __pyx_L1;}
  if (__Pyx_SetVtable(__pyx_type_6rabbyt_13dynamicvalues_AnimWrap.tp_dict, __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimWrap) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; goto __pyx_L1;}
  if (PyObject_SetAttrString(__pyx_m, "AnimWrap", (PyObject *)&__pyx_type_6rabbyt_13dynamicvalues_AnimWrap) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; goto __pyx_L1;}
  __pyx_ptype_6rabbyt_13dynamicvalues_AnimWrap = &__pyx_type_6rabbyt_13dynamicvalues_AnimWrap;
  __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimAddStatic = &__pyx_vtable_6rabbyt_13dynamicvalues_AnimAddStatic;
  __pyx_vtable_6rabbyt_13dynamicvalues_AnimAddStatic.__pyx_base = *__pyx_vtabptr_6rabbyt_13dynamicvalues_Anim;
  *(void **)&__pyx_vtable_6rabbyt_13dynamicvalues_AnimAddStatic.__pyx_base.g = (void *)__pyx_f_6rabbyt_13dynamicvalues_13AnimAddStatic_g;
  __pyx_type_6rabbyt_13dynamicvalues_AnimAddStatic.tp_base = __pyx_ptype_6rabbyt_13dynamicvalues_Anim;
  __pyx_type_6rabbyt_13dynamicvalues_AnimAddStatic.tp_free = _PyObject_GC_Del;
  if (PyType_Ready(&__pyx_type_6rabbyt_13dynamicvalues_AnimAddStatic) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; goto __pyx_L1;}
  if (__Pyx_SetVtable(__pyx_type_6rabbyt_13dynamicvalues_AnimAddStatic.tp_dict, __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimAddStatic) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; goto __pyx_L1;}
  if (PyObject_SetAttrString(__pyx_m, "AnimAddStatic", (PyObject *)&__pyx_type_6rabbyt_13dynamicvalues_AnimAddStatic) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 245; goto __pyx_L1;}
  __pyx_ptype_6rabbyt_13dynamicvalues_AnimAddStatic = &__pyx_type_6rabbyt_13dynamicvalues_AnimAddStatic;
  __pyx_vtabptr_6rabbyt_13dynamicvalues__AnimArithmatic = &__pyx_vtable_6rabbyt_13dynamicvalues__AnimArithmatic;
  __pyx_vtable_6rabbyt_13dynamicvalues__AnimArithmatic.__pyx_base = *__pyx_vtabptr_6rabbyt_13dynamicvalues_Anim;
  __pyx_type_6rabbyt_13dynamicvalues__AnimArithmatic.tp_base = __pyx_ptype_6rabbyt_13dynamicvalues_Anim;
  __pyx_type_6rabbyt_13dynamicvalues__AnimArithmatic.tp_free = _PyObject_GC_Del;
  if (PyType_Ready(&__pyx_type_6rabbyt_13dynamicvalues__AnimArithmatic) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; goto __pyx_L1;}
  if (__Pyx_SetVtable(__pyx_type_6rabbyt_13dynamicvalues__AnimArithmatic.tp_dict, __pyx_vtabptr_6rabbyt_13dynamicvalues__AnimArithmatic) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; goto __pyx_L1;}
  if (PyObject_SetAttrString(__pyx_m, "_AnimArithmatic", (PyObject *)&__pyx_type_6rabbyt_13dynamicvalues__AnimArithmatic) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; goto __pyx_L1;}
  __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic = &__pyx_type_6rabbyt_13dynamicvalues__AnimArithmatic;
  __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimAdd = &__pyx_vtable_6rabbyt_13dynamicvalues_AnimAdd;
  __pyx_vtable_6rabbyt_13dynamicvalues_AnimAdd.__pyx_base = *__pyx_vtabptr_6rabbyt_13dynamicvalues__AnimArithmatic;
  *(void **)&__pyx_vtable_6rabbyt_13dynamicvalues_AnimAdd.__pyx_base.__pyx_base.g = (void *)__pyx_f_6rabbyt_13dynamicvalues_7AnimAdd_g;
  __pyx_type_6rabbyt_13dynamicvalues_AnimAdd.tp_base = __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic;
  if (PyType_Ready(&__pyx_type_6rabbyt_13dynamicvalues_AnimAdd) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; goto __pyx_L1;}
  if (__Pyx_SetVtable(__pyx_type_6rabbyt_13dynamicvalues_AnimAdd.tp_dict, __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimAdd) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; goto __pyx_L1;}
  if (PyObject_SetAttrString(__pyx_m, "AnimAdd", (PyObject *)&__pyx_type_6rabbyt_13dynamicvalues_AnimAdd) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; goto __pyx_L1;}
  __pyx_ptype_6rabbyt_13dynamicvalues_AnimAdd = &__pyx_type_6rabbyt_13dynamicvalues_AnimAdd;
  __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimSub = &__pyx_vtable_6rabbyt_13dynamicvalues_AnimSub;
  __pyx_vtable_6rabbyt_13dynamicvalues_AnimSub.__pyx_base = *__pyx_vtabptr_6rabbyt_13dynamicvalues__AnimArithmatic;
  *(void **)&__pyx_vtable_6rabbyt_13dynamicvalues_AnimSub.__pyx_base.__pyx_base.g = (void *)__pyx_f_6rabbyt_13dynamicvalues_7AnimSub_g;
  __pyx_type_6rabbyt_13dynamicvalues_AnimSub.tp_base = __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic;
  if (PyType_Ready(&__pyx_type_6rabbyt_13dynamicvalues_AnimSub) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; goto __pyx_L1;}
  if (__Pyx_SetVtable(__pyx_type_6rabbyt_13dynamicvalues_AnimSub.tp_dict, __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimSub) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; goto __pyx_L1;}
  if (PyObject_SetAttrString(__pyx_m, "AnimSub", (PyObject *)&__pyx_type_6rabbyt_13dynamicvalues_AnimSub) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; goto __pyx_L1;}
  __pyx_ptype_6rabbyt_13dynamicvalues_AnimSub = &__pyx_type_6rabbyt_13dynamicvalues_AnimSub;
  __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimMul = &__pyx_vtable_6rabbyt_13dynamicvalues_AnimMul;
  __pyx_vtable_6rabbyt_13dynamicvalues_AnimMul.__pyx_base = *__pyx_vtabptr_6rabbyt_13dynamicvalues__AnimArithmatic;
  *(void **)&__pyx_vtable_6rabbyt_13dynamicvalues_AnimMul.__pyx_base.__pyx_base.g = (void *)__pyx_f_6rabbyt_13dynamicvalues_7AnimMul_g;
  __pyx_type_6rabbyt_13dynamicvalues_AnimMul.tp_base = __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic;
  if (PyType_Ready(&__pyx_type_6rabbyt_13dynamicvalues_AnimMul) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; goto __pyx_L1;}
  if (__Pyx_SetVtable(__pyx_type_6rabbyt_13dynamicvalues_AnimMul.tp_dict, __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimMul) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; goto __pyx_L1;}
  if (PyObject_SetAttrString(__pyx_m, "AnimMul", (PyObject *)&__pyx_type_6rabbyt_13dynamicvalues_AnimMul) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; goto __pyx_L1;}
  __pyx_ptype_6rabbyt_13dynamicvalues_AnimMul = &__pyx_type_6rabbyt_13dynamicvalues_AnimMul;
  __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimDiv = &__pyx_vtable_6rabbyt_13dynamicvalues_AnimDiv;
  __pyx_vtable_6rabbyt_13dynamicvalues_AnimDiv.__pyx_base = *__pyx_vtabptr_6rabbyt_13dynamicvalues__AnimArithmatic;
  *(void **)&__pyx_vtable_6rabbyt_13dynamicvalues_AnimDiv.__pyx_base.__pyx_base.g = (void *)__pyx_f_6rabbyt_13dynamicvalues_7AnimDiv_g;
  __pyx_type_6rabbyt_13dynamicvalues_AnimDiv.tp_base = __pyx_ptype_6rabbyt_13dynamicvalues__AnimArithmatic;
  if (PyType_Ready(&__pyx_type_6rabbyt_13dynamicvalues_AnimDiv) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; goto __pyx_L1;}
  if (__Pyx_SetVtable(__pyx_type_6rabbyt_13dynamicvalues_AnimDiv.tp_dict, __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimDiv) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; goto __pyx_L1;}
  if (PyObject_SetAttrString(__pyx_m, "AnimDiv", (PyObject *)&__pyx_type_6rabbyt_13dynamicvalues_AnimDiv) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; goto __pyx_L1;}
  __pyx_ptype_6rabbyt_13dynamicvalues_AnimDiv = &__pyx_type_6rabbyt_13dynamicvalues_AnimDiv;
  __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimPyFunc = &__pyx_vtable_6rabbyt_13dynamicvalues_AnimPyFunc;
  __pyx_vtable_6rabbyt_13dynamicvalues_AnimPyFunc.__pyx_base = *__pyx_vtabptr_6rabbyt_13dynamicvalues_Anim;
  *(void **)&__pyx_vtable_6rabbyt_13dynamicvalues_AnimPyFunc.__pyx_base.g = (void *)__pyx_f_6rabbyt_13dynamicvalues_10AnimPyFunc_g;
  __pyx_type_6rabbyt_13dynamicvalues_AnimPyFunc.tp_base = __pyx_ptype_6rabbyt_13dynamicvalues_Anim;
  __pyx_type_6rabbyt_13dynamicvalues_AnimPyFunc.tp_free = _PyObject_GC_Del;
  if (PyType_Ready(&__pyx_type_6rabbyt_13dynamicvalues_AnimPyFunc) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 280; goto __pyx_L1;}
  if (__Pyx_SetVtable(__pyx_type_6rabbyt_13dynamicvalues_AnimPyFunc.tp_dict, __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimPyFunc) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 280; goto __pyx_L1;}
  if (PyObject_SetAttrString(__pyx_m, "AnimPyFunc", (PyObject *)&__pyx_type_6rabbyt_13dynamicvalues_AnimPyFunc) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 280; goto __pyx_L1;}
  __pyx_ptype_6rabbyt_13dynamicvalues_AnimPyFunc = &__pyx_type_6rabbyt_13dynamicvalues_AnimPyFunc;
  __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimProxy = &__pyx_vtable_6rabbyt_13dynamicvalues_AnimProxy;
  __pyx_vtable_6rabbyt_13dynamicvalues_AnimProxy.__pyx_base = *__pyx_vtabptr_6rabbyt_13dynamicvalues_Anim;
  *(void **)&__pyx_vtable_6rabbyt_13dynamicvalues_AnimProxy.__pyx_base.g = (void *)__pyx_f_6rabbyt_13dynamicvalues_9AnimProxy_g;
  __pyx_type_6rabbyt_13dynamicvalues_AnimProxy.tp_base = __pyx_ptype_6rabbyt_13dynamicvalues_Anim;
  __pyx_type_6rabbyt_13dynamicvalues_AnimProxy.tp_free = _PyObject_GC_Del;
  if (PyType_Ready(&__pyx_type_6rabbyt_13dynamicvalues_AnimProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; goto __pyx_L1;}
  if (__Pyx_SetVtable(__pyx_type_6rabbyt_13dynamicvalues_AnimProxy.tp_dict, __pyx_vtabptr_6rabbyt_13dynamicvalues_AnimProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; goto __pyx_L1;}
  if (PyObject_SetAttrString(__pyx_m, "AnimProxy", (PyObject *)&__pyx_type_6rabbyt_13dynamicvalues_AnimProxy) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; goto __pyx_L1;}
  __pyx_ptype_6rabbyt_13dynamicvalues_AnimProxy = &__pyx_type_6rabbyt_13dynamicvalues_AnimProxy;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":6 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n___credits__, __pyx_k1p) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; goto __pyx_L1;}

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":24 */
  if (PyObject_SetAttr(__pyx_m, __pyx_n___author__, __pyx_k2p) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 24; goto __pyx_L1;}

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":214 */
  __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_True); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 214; goto __pyx_L1;}
  __pyx_k3 = __pyx_1;
  __pyx_1 = 0;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":298 */
  __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_False); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; goto __pyx_L1;}
  __pyx_k4 = __pyx_2;
  __pyx_2 = 0;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":321 */
  __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_False); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 321; goto __pyx_L1;}
  __pyx_k5 = __pyx_3;
  __pyx_3 = 0;

  /* "/home/mmarshall/projects/rabbyt/rabbyt/rabbyt.dynamicvalues.pyx":338 */
  return;
  __pyx_L1:;
  Py_XDECREF(__pyx_1);
  Py_XDECREF(__pyx_2);
  Py_XDECREF(__pyx_3);
  __Pyx_AddTraceback("rabbyt.dynamicvalues");
}

static char *__pyx_filenames[] = {
  "rabbyt.dynamicvalues.pyx",
};

/* Runtime support code */

static void __pyx_init_filenames(void) {
  __pyx_f = __pyx_filenames;
}

static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, char *name) {
    if (!type) {
        PyErr_Format(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if ((none_allowed && obj == Py_None) || PyObject_TypeCheck(obj, type))
        return 1;
    PyErr_Format(PyExc_TypeError,
        "Argument '%s' has incorrect type (expected %s, got %s)",
        name, type->tp_name, obj->ob_type->tp_name);
    return 0;
}

static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
    PyObject *result;
    result = PyObject_GetAttr(dict, name);
    if (!result)
        PyErr_SetObject(PyExc_NameError, name);
    return result;
}

static void __Pyx_WriteUnraisable(char *name) {
    PyObject *old_exc, *old_val, *old_tb;
    PyObject *ctx;
    PyErr_Fetch(&old_exc, &old_val, &old_tb);
    ctx = PyString_FromString(name);
    PyErr_Restore(old_exc, old_val, old_tb);
    if (!ctx)
        ctx = Py_None;
    PyErr_WriteUnraisable(ctx);
}

static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
    if (!type) {
        PyErr_Format(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (obj == Py_None || PyObject_TypeCheck(obj, type))
        return 1;
    PyErr_Format(PyExc_TypeError, "Cannot convert %s to %s",
        obj->ob_type->tp_name, type->tp_name);
    return 0;
}

static int __Pyx_InternStrings(__Pyx_InternTabEntry *t) {
    while (t->p) {
        *t->p = PyString_InternFromString(t->s);
        if (!*t->p)
            return -1;
        ++t;
    }
    return 0;
}

static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
    while (t->p) {
        *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
        if (!*t->p)
            return -1;
        ++t;
    }
    return 0;
}

static int __Pyx_SetVtable(PyObject *dict, void *vtable) {
    PyObject *pycobj = 0;
    int result;
    
    pycobj = PyCObject_FromVoidPtr(vtable, 0);
    if (!pycobj)
        goto bad;
    if (PyDict_SetItemString(dict, "__pyx_vtable__", pycobj) < 0)
        goto bad;
    result = 0;
    goto done;

bad:
    result = -1;
done:
    Py_XDECREF(pycobj);
    return result;
}

#include "compile.h"
#include "frameobject.h"
#include "traceback.h"

static void __Pyx_AddTraceback(char *funcname) {
    PyObject *py_srcfile = 0;
    PyObject *py_funcname = 0;
    PyObject *py_globals = 0;
    PyObject *empty_tuple = 0;
    PyObject *empty_string = 0;
    PyCodeObject *py_code = 0;
    PyFrameObject *py_frame = 0;
    
    py_srcfile = PyString_FromString(__pyx_filename);
    if (!py_srcfile) goto bad;
    py_funcname = PyString_FromString(funcname);
    if (!py_funcname) goto bad;
    py_globals = PyModule_GetDict(__pyx_m);
    if (!py_globals) goto bad;
    empty_tuple = PyTuple_New(0);
    if (!empty_tuple) goto bad;
    empty_string = PyString_FromString("");
    if (!empty_string) goto bad;
    py_code = PyCode_New(
        0,            /*int argcount,*/
        0,            /*int nlocals,*/
        0,            /*int stacksize,*/
        0,            /*int flags,*/
        empty_string, /*PyObject *code,*/
        empty_tuple,  /*PyObject *consts,*/
        empty_tuple,  /*PyObject *names,*/
        empty_tuple,  /*PyObject *varnames,*/
        empty_tuple,  /*PyObject *freevars,*/
        empty_tuple,  /*PyObject *cellvars,*/
        py_srcfile,   /*PyObject *filename,*/
        py_funcname,  /*PyObject *name,*/
        __pyx_lineno,   /*int firstlineno,*/
        empty_string  /*PyObject *lnotab*/
    );
    if (!py_code) goto bad;
    py_frame = PyFrame_New(
        PyThreadState_Get(), /*PyThreadState *tstate,*/
        py_code,             /*PyCodeObject *code,*/
        py_globals,          /*PyObject *globals,*/
        0                    /*PyObject *locals*/
    );
    if (!py_frame) goto bad;
    py_frame->f_lineno = __pyx_lineno;
    PyTraceBack_Here(py_frame);
bad:
    Py_XDECREF(py_srcfile);
    Py_XDECREF(py_funcname);
    Py_XDECREF(empty_tuple);
    Py_XDECREF(empty_string);
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}
