addLoadListener(init); var BPM = 100; var clockCount = 0; var CANVAS_WIDTH = 640; var CANVAS_HEIGHT = 480; var canvasDOM = []; var neverStarted = true; var canPlaySound = true; var sounds = { kick1: { data: "data:audio/wav;base64,UklGRhwMAABXQVZFZm10IBAAAAABAAEAgD4AAIA+AAABAAgAZGF0Ya4LAACAgICAgICAgICAgICAgICAgICAgICAgICAf3hxeH+AfXZ1eHx6dnR5fYGFgoOKi42aloubq6GOjI2Op7ythXJ0eYF5aV1AOFFib32HmZSHhpCalIiYi4SRkZaLfnhxaWptb21qaWBea2BRYmZTVmFgWFNXVVVhaGdbYGhZbXh1gXZ1goeIlot1k6yxtKaOkaWhq7KonKCZoaCjoKWuqqmurK6ztrO7tbTAvru/vb68vbW6vLGqsLOfm5yal5KKhoyBeHt2dXBnbmljVlJWUEBBPDw9Mi4zKRwhIBYaGRQcHBURGB0XFxwhGxocJSstMjg6PTc6PUxVV1lWV2JqaXN0coCHhIyPjpOenqWppK6xu72yxMu9us7Pw83Wy9nY29ve6OPr6uvs6ezu6ejk6erm3uPj3dbT1sjBzdDFuMHAt7m1r7W6qaCupJOTkpWPgHqAd3JrbGlnY1peX1hTUk9PTFRKR0RFQkRBRUVEQkdBPjs9Pzo6NT04Njs+PTxAPzo/Ojk6PEA5PUJAQD04PkRCREZLUk1KT1BRUVdXU1VRV1tZV1xgXltcXF9hXl9eY2VmZmlna3J0b3F3eHyBfX+JgIWJiouTlZCTmpybnqSgnqyrqrO3srK2uL2/u7jAwMLFxsfEv8XLzcrIy83JzcrP0s3M0dTP0drY1dPR1dzc19za19XX2dnU1NjU0dXPzdHQy8rMysfGxMLBvLu3ta+sraeioJ2YlI+MioeFfX55cnJsaWVjXVlbVE5RTktHRUVAPDw3NC8uLyknKSIiJiUdHiEeGx4eHRwZHB8cHiAfHh8eHSEhISMoJyMnKisrLCszNy8yOTg9QEJFRUVITVFOTlJVWltaXmNfX2ZqZ21xb3R3eHqAhoeJkZKTlZmhpJ6kqKeur6yxtLW1trW4t6+us7axrbK2tLa6ury7u7u9u7vCwb+/vr7Ev7y9v8G8vby6vru4uLq+tri8ubi5t7W4uLW5uLKxs7G0tLGwt7Wvs7avr7O0tLW4trS4uLO1trW1trm1tLm0r7Kyr66wramsqaKlp52bmpeWl5KQkImEhIB8fXh3eHJrbW5mYGNcWFhUUE1LRENDQUI9ODcxLy8vMCsqLCgoKCgpKScoKCYoKygpKyssLi0sLi0uMDIwMTIuLzQ0Njg4Njc8ODlBQ0A/RUdGSU5RUVFUV1pdXWFjZGdpbG1vcXJ2eXh6fICAgIWIio2OkJGSlJWanJqbnZ2cn6Kkp6enq62srbCysrO1uLy4uL+/vL7CwMHAvb/Cvbq9vLm5uba2t7Sysq+urqyqqaalpqShoJ+enZuamZqXlZWTkpGSkpCNjpCMioqLioiHhoeGhYSGg4GDhoKDg4GBg4GBgoGBgoOChISChISChIWDg4WEgoSEgYODgYGCgYGAgICAgX99f398fX18e3p6e3t7enp7fHx4e3x6e3x7fHx9fX59fn1+fX19fH19fnx9fn19fX18fHx7fHx6fH18fXx8fHx7fH1+fXx+f319fn19fn1+gH9+f4B/fn+AgICAgH+AgICAgIGAgICAgH9+f4B+f35+fn58e3t8e3p5eXh4d3Z1dHRzcXBvb21sbmxqaWhlZmVjYmFfX2BfXV1cXFxaWVlaWVlYV1hYV1hYWVhZWFlaWllbXFpbXV5fX15fYWJhYmNiYWJhYWJjZGVmZ2hqbG1ub3Fxc3V3dnd6e3t8e3x+f3+AgICAgoGBgoKDhISFh4aHiYqKi4uMjYyOj4+QkZKUlZWXmJmbm52enqCioqSlpqeoqaqrrK2ur7CxsrGys7O0tbW2tba3t7i3uLe4t7a3t7i3tre2tba1tLSzsrKysbCvrq2sq6qop6alo6OioJ+dnJqZmJeWlJKSkI+OjoyLioiIh4WEg4GBgH9+fXt6eXh3d3V0c3JxcG9ubWxsamppaWhnZmVlZGRjYmNiYWBhYGBfYF9fXl5fXl1dXVxdXF1dXF1cXF1cXF1dXV5dXV5fXl9eX19gYGFgYWJhYmFiY2NiY2RjZGNkZWRlZGVmZmVmZmVmZ2dmZ2hnaGhnaGloZ2hpaWhpamlqaWpqa2pra2xtbGxtbm1ubm5vcG9wcXBxcnFycnN0c3N0dXV2d3d4eHh5ent6e3x9fn5/f4CAgIGCg4SEhYaGh4iIiYqLi4uMjY2Oj5CQkZGSk5OUlJWWlpeYl5iZmZqbm5ybnJ2cnZ6en56fn6ChoKChoqGio6KjpKOko6SjpKWkpaSkpKSlpKWkpaSlpKSlpKOkpKOko6KioaKhoaCfoJ+enp2dnJybmpmZmJeXlpWUk5STkZGQj4+OjYyLioqJh4eGhYSEgoKBgIB/fn59fHt7enl5eHd3dnZ1dHRzc3JycXBxcG9vbm5tbWxrbGxraWppaWhpaGdnZ2dmZ2ZlZmVmZWRlZGVkY2RjZGNkZGRkZGRkZGRkZGRjZGRkY2RjZGNkZWRlZGVmZWZmZ2ZnZ2doaWhpaWpra2xsbW5tbm9ub29wcXFycnNzdHV1dXZ2d3d4eXl6enp7fHx9fX5+f4CAgIGAgYGCgoOEhISFhoWGhoeIh4iJiImKiYqLiouLjI2MjI2OjY6Pj46PkI+QkZCRkJGQkZGSkZKRkpGSkZGRkZKRkpKRkpGSkZKRkpGSkZKRkpGSkZCRkZCRkI+Qj5CPkI+Pjo+OjY6Njo2MjYyLjIuMi4qLioqJiomJiImIh4iHh4aHhoaFhoWFhIWEg4SDg4KDgoKBgoGAgYCBgICAgICAf4CAf39+f35/fn1+fX59fHx9fH18e3x7fHt6e3p7ent6e3p5enl6enl6eXp5eXl4eXh5eHl4eXh5eHl4eXh5eHh3eHh4d3h4d3h3d3h4d3l4eHd4d3h3eHd4d3h3eHh4eXh5eHl4eHl4eXh5enl6eXp5enl6eXp5ent6ent6e3x7fHx9fH18fX19fn1+fX5/fn9+f4B/gH+Af4CAgICAgIGAgYCBgoGCgYKCgoKDgoOEg4OEg4SFhIWEhYSFhoWGhYaHhoeHhoeGh4iHiIiHiImIiImKiYqJiYqJiouKi4qLiouKi4qLiouKi4qLiouKi4qLi4qLiouKi4qLiomJiomIiYiJiImIh4iIh4iHhoeGhYWGhYaFhIWEg4OEg4KDgoOCgYKBgIGAgICAgH+Af39+f359fn18fX19fHx8e3t6e3p7enl6eXp5enl6enl5eXh5eHh5eHl4eXh5eHl4eHd5eHd3eHl4d3h3eHd4d3h3eHh4d3h4d3h3d3h5eHl4eXh5eHl5eXp5enl6eXp7ent6e3p7e3t7fHt8e3x8fHx9fH1+fX59fn9+f35/gH+AgICAgICAgYGAgYKBgoGCgoKDgoOEg4SEhIWFhIWFhoWGhYaGhoaHhoeGh4aHhoeIh4iHiIeHiIeIh4iHiIeIiIiHiIeIh4iHiIiHiIeIh4iHiIeIh4eIh4eIh4aHh4aHhoeGh4aHhoWGhYaFhoWFhIWEhYSFhIWEhISDhIOEg4OCg4OCg4KDgYKCgYKCgYCBgIGAgYCBgICAgICAgICAf4B/f4B/gH+Af35/fn9+f35/fn1+fn19fn1+fX59fn19fX19fH18fXx9fH18fXx9fH18fXx8fHt8e3x7fHt8e3x7fHt8e3x7fHt8e3x7fHt8e3x7fHt8e3x8e3x7fHt8e3x7fHx8fXx9fH18fX5+fX59fn9+f35+f35/gH+Af4B/gICAgICAgICAgICAgYCBgIGAgIGAgYGBgoGCgYKBgoGCgYKBgoGCgoKDgoOCg4KDgoOCg4KDgoOCg4KDgoOCg4KDgoOCg4KDgoOCg4KDgoOCg4KDgoOCg4KDgoOCg4KDgoOCg4KCgoGCgYKBgoGCgYKBgoGCgYKBgoGCgYKBgoGCgYKBgoGCgYKBgoGCgYKBgoGBgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYCAgICBgIGAgYCBgIGAgYCBgIGAgYCBgExJU1RCAAAASU5GT0lDUkQMAAAAMjAwOC0wOS0yMQAASUVORwMAAAAgAAABSVNGVBYAAABTb255IFNvdW5kIEZvcmdlIDguMAAA", file: "kick1.wav" }, snare1: { data: "data:audio/wav;base64,UklGRjoNAABXQVZFZm10IBAAAAABAAEAgD4AAIA+AAABAAgAZGF0YcsMAACAgICAgIGAgYCBgIGAgYCBgIGAgYCBgIGAgIGAgYCBgICAgIB/gH9/fn59fn19fHt8e3x7ent6e3p7fHx7fH18fX1+f35+fHhtWU1JRUhGR0xTWWFjW0RdpZl8kZ2Uvd/r5+fTssjk4uHg397HlpFtYUpJbGFaaXlmYIOakIGEkJuPj6OPi5KJh3+AhJGLbGJKHA4TERcjFhImKRomMEJRXnWEk6rD08zT0szk5ePnzcDEzdjh1b7UzbmgrrG7pZG3xbWxsoRtZ3FkXlM/O0A/Q0Y4JCYfKDs2MCsnLTE+TmNaODk6IhEzSTxBRkJmbUxGRElrenuEhp2joa+xrLixpL7Swt/i3OvS1ubf0tvg07mxqYxvYImnlHKQlnxgbZiVeYiDTVGFhUM1VlQ+LicrHB8zNkIyUFVISEFMTmCDfXJ4aWJuhYJmgZ1+Y3l4bJqgZlFsTVldR1iFdFCHspSAlqi7oa3MvLXh+tvg5Njo7ubZ29m+p8KneJeurKKdoqKMoLKQhIRkeYhxc2dveH1/j56Tenp/fYCQq5BwgIFhWoOLfYB7WTpWX1x1eGyMdUdEaISLfGpyfWNklp6LiY+Vk5imrKGrxcatn5W6sbjCt9ffppPXx7Cvg4KXrpVsaGp5c2uSjHlrYGpgYn6BbXuWjotzanp/c3uRhn9xfXtwd19DWWV+gWdmW1RZYGRzb11USVBPW21uZFZmZWNfaoB/eIKFeXlrWWWXkoRwY3h3d4d4Y15ri5N8fYWAjpuNjquWi3Z4gIaGgHFvg4B6dX2AgYN8Z1VcbWZjWmlbWWM+QFpgcm5VT1ZlX09kamiFkX12hndxdISAWHSOg21zbW2JlIeNmZeqtJ6WrLy1m5mhmpOfoKakp6eampORjpGTm5J8gpCQfX+Jip2PhYeFgoGVo5KAlJ2djXt6g5SNiop+fImLemxufIODgHyGhn6GgnuEjoyCgoqBhIaOlYaTk4aEiKStpp6jo56nnZOinJ+ZjpmdmY6WmIaVqqCPg42UjXx/e3Fvh4p2c19ocm99bltYb3hnZl5meXZtbHd1d4SBeGlsfnxvbnxydXtzbXFpYH2Fd3SBiIKCgIGTkIOMjpadkYyPjomPiJCfjYCKioB6gIqIgX97f3dsf4FtcnJobGdqam5mZWVcYmlrcXRjYm1nZm1naHB1c3RuaGxud398e31zcYCCgIKJjYV7g42KjIyMh4GEio+Mio2Hg4iKiI6KhoiGgYiIg4aKgYOAe3lwdIWHeXN1c29weoF9cG9ycnp5dXh1b3B1eH14dXt6dnN2e3+DhoN/fHh+goiRioSAfYKFhY2Pi4+KhoWEh4ySk5KQioSDh4ySjY+Sh36BgouQio2JgoKDgoeChIeCgH58e4CChoB6fnt5eXd9gX17fHx9e3h+gHlyeHt/hH18fn2AhX15g4iMhoaEhoWJh4uKhYyNioqLi4qHiY6EgoqKh4CChIN9gIOFg3x6fn14enuAgoN8d3uAgX59fH2AgHd4dXmAe3h3c3Z8foF+fX1yc3x+e4GJgHl4eHyAhoOAg4WEhYCEjI2RjIaIhoyKjY2JhYKIiomIioWFgHmAh35/h4B5fYB8eoCAfXx5dXl9fHt4gH11dXl4eXt6eHR3dHR7e3Z7fXp5eXp7gIOAfICEgn6AgoJ+f4GBgn5+f4CBg4OAfn2EhoB+goSDgH19f36AgoB9gIB+fH9+enl8fHh3d3p5enl3d3p6d3p7dnV5fXp0dXh9e3h4eH1/fXp6fH1+fnt7fX5+fXx7f318fn98fYKBfn+DgYCCgoGAgIOAf4CBf3uAg4J+fXyAf358fn59gH9+fHx/fn58fX+Af32AgYGAfX+Cgn+AgYF+gIKAgIKDgoOAgIKDgoOEg4KFiYaDhomHh4mHhomJhoaIiomHhIiJiIaEgoOEg4KBg4WCgICDgoCEhoGAgoKCg4SCgIGDgoCAgIB/foCAfX+DgX5/gYKBgYKFg4GCgoGDhoaFiYaGhoWFh4uKiISFhoiIhoaIhoaBg4SEhIOEhIGAgICBf3+Afnx+e3t+fX59e3t6fH15eXx7ent6e3p4eXt/fn2Afnp9f319f4B+fX6AgH9/fn6Bg4CBgYKCgICDhoWDgICDg4SDg4GBhIWCgIODgH+AgH59gIF9eXx9ent7enx8end1dHV1d3h2c3R0cnB0eHZ1eHh3d3p7enp6e3x7fH6BgX+AgYCAgoSBgYSGhoaCg4iHg4SEhISBgIGAgIGBf3+AgICBgICAgIB/gICAgYGAgH19fn+BgH1/fX98enx+f35/fn99en1/gIB/gICAgYKDg4KFhYOCgoWIh4WFhISFhYWFh4aGhYWDg4aHhoSDgoWEg4OBgoSEhYSDg4KBgoWEg4GCg4KBg4OAgH9+f39+fX19fn19fn19fn59fn+BgYCAgICCgYSEg4SEg4SFhYSFhISFhYWGhYSDhIaEhISEgoCCg4KAgICAgICAgICBgYCAgYKAgoF/fn5/gIB/fn+Afn9/gH9+f358fH9+fn19fXt8e3x8fn19fXx9e3x7fX19foB/fX2AgIB/fXx8f359foB+fH1+fnt7e3x+fnx7fX5/fn5/gH9+foCAgH5/gYB/f4CAgICAgICAgIB/gH+AgICBgYCAgICAgH+AgIKCgoGCg4KDhIOEhYSFhIODgoGCgoKDgoCAf35/gH9+fn18fH5/fX5/gH9/f4CAgIGAgYCBgoSDg4SFhIWFhoWFh4WFhISEhYWEhISEg4OCg4SDhIOEhIOEhYWEg4OCgoOEhIKCgYKDg4KBgoCAf4CAgIB/fn9/fX59fH5+fX5+fX19fn1/f35+f4CAgICAgICBgYGDhISDhIODg4ODgoODgYKCgYKCgYCBgoKBgoOCg4OCg4KCgoGBgoGCgYGBgICAf3+Afn1+fXx8fHt8fHt6e318fXx9e3t8fXx9fn18fXx8fX1+f35/fn19fn5/fn9+f35/gICAgICAgICBgYKCgYKAgYKBgIGBgoODg4KBgoKDgoOCgYGCgYKBgYGCgYCAgICBgH+Af4B/fn9+f359fn9+fn1+fn1+fX5/f39/foB/f4CBgIGAgIKBgYGCg4KCg4KDgoSDhIODhISDgoOCg4KDg4KCg4KDgoKDg4KDgoGCg4KCgYKCgYCBgIGAgICAgICAgICAgICAgICAgICAgH9/gIB/gH+Af4CAgIGAgICAgYCBgoKBgoOCgYKDhIOEg4SEhYSDhIOEg4KCgYGAgIGBgICAf4CAgIB/f4CAf4CAgICAgICAgIGBgIGAgYGCgYGAgIB/gIB/f4B/fX59fX5/fn59f35/f3+AgICAgH+AgICAgH+AgH9+fn5/f35/fn1+fX1+fn1/foB/gH9/gICAgICAgICAgICBgoGBgYCBgYCAgYKBgoKBgoGBgoGBgYKBgIGCg4KBgYKCgoKDgoOCg4KBgoKBgIGBgICAgIB/f35/fn9+f35/f3+Af4B/gH9/gH+Af4B/gH+Af4CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAgYCAgYCBgIGAgYCBgIGAgYCBgIGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgICAgICAgICAgICAgICBgICAgYCBgIGAgYCBgIGAgYCBgICAgICAgICAgICAgICAgICBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYCBgIGAgYGAgIGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgIGAgYCBgIGAgYCBgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgIGAgYCBgIGAgYCBgIGAgICAgICAgICAgICAgICAgICAgICAgICAgIGAgYCBgIGAgYCAgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICBgIGAgYCBgICAgICAgICAgICAgICAgICAgICBgIGAgYCAgYCBgIGAgICAgICAgICAgICAgICAgICAgICAgABMSVNUQgAAAElORk9JQ1JEDAAAADIwMDgtMDktMjEAAElFTkcDAAAAIAAAAUlTRlQWAAAAU29ueSBTb3VuZCBGb3JnZSA4LjAAAA==", file: "snare1.wav" }, hatOpen1: { data: "data:audio/wav;base64,UklGRqAQAABXQVZFZm10IBAAAAABAAEAgD4AAIA+AAABAAgAZGF0YTEQAACGiYiJiYiJiImIiYiJiImIiYiJho2KjYmIjo2BloqEio17iJKEdZORfnqVgoOIhYuPi4GCoHeHmIGWfo2KiYOBjYx+h5SIh5l+iouKhYuPh4OWgYqBlX+KiYuPfY6Lh46Dj4uHkXuIkIKKhYuHh42EjIaHgo+MhIOElYOCjoiMho6EjoyNf5mLhJWLjICHjoSIiIGOjoOElJCQhIGQhoeHiZWJgJ2Gi4+AhpGAgYiNi4CKh4OOhomMioyDiZaAiISJjIGLh4eNgYGSgIqDhZaHfYqLi4KGlIOHiYqIjImIhIiVgnyXgnyZhYiOf4uIk4F8lX6Fjn2Pi36GipN+hoGafoyOgIyLe46Te4mGiI6IioSSgIeJk4N3lYmAg5F8gJmHfpyAiYyIhJSGf5SMfpGJg4CPjHyPjoGJmYCDio6IgY2IhY6Gh4ONhYSEkYOGjYOEkIGOj4CagoqMiYiGh5CChomGioaJiYmLgIuViICPioWOj4SLi5B5kZJ4iJh7hpmDioqOgIyJg4iLhoiKgJOEhoiSgo2IiI2Al4eFjY2KhI+Hhph6i4qDhIuHg5WBhJSEioSJioiLkYWRioWMjYaKgYeQgH6OiICSgJaAlISGl3eQj4KOkn6LkH+MgoySeoeVhoCRg4qOiYiTioSKjn2OgYaOi4CHiZV3h4+Fh5KCgpmHh4WRiYuEkY2DjYKMh4OHgJWEgJWFjYyAiJOGhY+Fj4mClImEjIiPiIWFgZGAi4WHk4SMipN/io6MhZCEioaIiICUhIOMjYWLhImLiYmLkISIj4qHiox+kYyAh42NgIWQg4WOhIuOi4eLjYeFkIWKh4aJjIWEjYSJi4iIjY2Kh5GHhoqGk4eBkoCLioKDlYKHiI+AiIaKioqPhJKIho2Djox+koyCjoCLioOLh4uKhIiMiICOho6OfZSIhIqLiYmPgYeThn2UiIWJioiKiX+Qh4mJhIePf5eBi4uGjIiRfJCGg5GCjoaLiYKOhIqHh5Z+iZN8iY2Bi5J/jYqHhYyEio+Bj42EiouDjIyChpZ9h5CCh4uIg5CIhYiNiYOQhIuGjoWFknqThoiOg42DiY2DjoSMiIiIhoqGh4+FjoSIi4SJh4yKiYSIkoSEi4qFkoCJjYWBioyGjoWGk4OIh4qLhI6GjYt6kImIh4iLjIWEiomFiIiOjIiEiI6Ig4yLiIuCkIaCjoGSioCMio2GgpGOg4aRh4aLhYeOhoeIjIWGiYeIioSIkoCOh4SOho+Ej4KLiYCSgoeIiomHi4KIjoaLjIiKgo2LgY2FhpGChoiLgoeNhpGDi4uBloGCkY2Bh46GhY1/kYmEiI6Mfo6Kg5GCg5GGioGJjYKNh4eMhoONjIGOioOShoSJioeHiYyDjISJi4KLjISKiYSLiYSJioaKjYCOhIqIi4mGjI2DiY+BiYiKh4uGho2AiouEjYaEkYeGhpGEjImFjoaHhIeSg4SShYiLhIqHjISIi4iHiYmJiIeOhYiIjIKMhIeOhoaLjYOJjIaIjYaIiIeIhY2FjYWHkIGKi4OMiIaNgY2FiIyGioeJjYWJi4mDi42AkIOJioWOgo+IgouKhIqHhoWSgoSRgoiIioqJiYWJjoWKh4eIiYmIiI2CiJCFhYuLgoiOiYOIjIWNi4OGj4aGiYyIh4iLjoWGjoeIj4OKiYiIho2Ig4mHioeHiYeLgoyKhoiJiImNhYaOiYWMhoeIiYeJjIaKiYmGh4uGg5CCiIyFiYeOhYmJhoqIh4qJiYeNhYmLh4aHi4iDioyDjIeHi4SLho2KhoiKioKKiYqJhoeQg4uGi4qFi4mFioqEjYmGh4uIhIiLh4aMiIaMiYeLioqEj4mDjoiEjYeHi4qFhY2Igo+HhY6Ggo+KgIqPhIWQhoeGioWMjIGMjYyFiImLh4SMiouDiYeMhIuDiIyGh4iOgYmMh4mKiIqBkYp+j4SHjYaHjoaGjYWJi4OPhYmIho6Ei4mFioiEi4eFjIeMhImKi4aKiIqMhIiGiYiNgoyMhoSKjoSFjIiKiYSKiYeKh4yJhoiKjYSJhYmNgJOIh4eLiIaLhYiLhoeJi4SHjIeKi4SJjIGNiISLioaKho6FiYqGioiFh4uKiYiJjIKOhI2Gh4uGiIuEh4yHh4iIioWIiYmKhomMh4qIh4yIg46LhYyGi4qHhouJhYmKhYyIhImMhYmOhIqLhYuLhomHiI2Fh4uIh4iMh4aJiYWLioaIiYuHi4eJioiIiYiIh4iHi4qBjYqGiImKhI6EjouBjoWGi4WJiIqIiYuFi4aGjoiJiYqIiIeKh4mJg4yMgIyMgoyHhomJhoaMjIOLiYiHi4eHiomJiIeJho6GhY2JhYiNhImKhIuJiIaKjoOGjIiGi4qHiIyDiIyHho6HiYuEiomHiIiKh4mKhomIhYuIi4SKi4aIh4mJh4mIiomGh4yEiYuHhY+FhomJioOMiYeKiYaKh4mJiIeLiYWIjYiFjoWIioiIiIuGiYmLiIeJiomHiYmHhoyHh4iJiIuGiYmHi4aIiomHjIWLiYaIiomHiI6Fh4uIhIuLhYqJiYWIjIWHjIiGiYqEjYWHjIaLh4qHhoyJhoqJh4qJiYWMioOJjIaJioaLiIaJi4WHi4qFi4qHiYuJhIyIhomKiYeJiYaKhYmJiYmGjYOJjIKLioaIi4mGiYmIiYqHiYyFhoyGiYiIiImLhoaLiYSKi4aIi4eKh4uHh4uLhomIioaKiYaJiYmHiImJiIeMh4eLhoqHiIyHh4mJiIiJiImKiYWKiIaJiIqIh4iKiYaIioaMh4qJiYiHh4yIh4mKioaHiYmFh4uJhouHiYmJh4uKiYiJi4iHiomJioWKioaJh4qHiYqFiYqFiYmIioWMh4qFioqHiYmIhoqKhImOhIiKioKKi4SJioiHjIeIiYiGjYaKiImLhIuJhoiLhouKhIiKh4eJiYqGi4SLiYWJi4iIioeJh4uGi4iJhoqKh4iIjIaGiomFi4iGioiHiIiLiIeLhoyIhoyHh4iHi4eJiIiKh4iIi4aLioeLhomIh4uHiIyFioiHh4mKh4mLhYqKhoiKiYWNiIeLh4iIiYmHi4aKioeIiYiIiYeKiYaLh4mIiYeJiImHiIqIiYmHiYqGiYmKhomJiImJiYeKiIiIioaHiomFioqGioqGiIuGh4qLhYqJh4iKh4aLiIiLhomIiImHiYiIi4aKh4iJioaLiYiJh4mJiIeJiImKiImIiImIioaJi4aLiImIh4mIiIuGiYiMhomIiIqHioqHiImHi4eIioeKiIiJh4qGiIqJhouJh4qJhIyHiYeLh4iIiYaKiYWNiYiHioqIiIuGi4iKiYiJhoiJiYaHi4eIiYaJh4eJiYmJiImKioiIiIqHiIqIiIiHi4eIiYaLiImHiYqHh4qJiYeKiImHh4mHiYmIiIiLhoiLh4mIioiIiImIiYeJiYqIh4mJhoiHiYqGiImJh4eKh4mIh4mKiIeIi4eJiYeKiYeIiomFiYqGiYiJiIaLhYqJiYWLi4eIioiIiYmIiYmGiomJiIeHi4eIiYiKhomKiIiHioiJiYmIiYmIiIqGiYmJiImHh4yIiIuHh4qJh4mLh4eLiIiIiIiKhoiKiIeKiYiKh4mHi4iGiYmJh4mJh4mHiYmJiIiJiYiIiImJiYeKioeGjIiGiYiJiYmIiIqIh4mJioiIiomHiIqIiImJiYqGiImIiIiIiYeLhomIiIeJi4aJiYiIiIiJiImIiYiJiIiJh4mJiYmHiImKh4iJioaKiYmHiYmIiYiJiIiJh4mKiImIioiIiYiJiYiJiYeIiomIiYiJiImIiImIiIqIiYmIh4mIiYiJiIeMhYiJiIeKioaJiYeJiYiHiYmIiYqGioiIiIqHhYqKhomJhomJiIiLh4iIiYmHiIqIiYeJioiGiIqIh4eJiIiJhouIh4mJioiJiImJiYmIiYiJiYiIiIiJiIiIiYmHh4qIiImHiYmHiImIiIiIioaKiYeJiYmHiYmIiIqIiYqHh4qHiYeKiIiKh4iKiIiKiYiJiYiJiIiJiYiHiYmIiIiIiYmHiIiJhomLh4iIiYmIiIiIiYeJiImIiImJioeJioeHiYmIiYmHiIqHh4mIiImIiIiIiImIiImIioeJiYiIiYeJiIqHiIqIioiJiYqHiYmHiYiLiIeLiIeKiImHiIeJiYiHiIqIh4qJiYmIioeIiomIiYiJioeIiYqGiYiIiYiIiYiJiIeLh4mKh4mIiIqIiImIiYiIiIiIioiHiYeIiYiIiYeIiYiJiYiJiImJh4mIioiJiImJiIiJiYmHioeIiImJh4iJiImIh4qIiIqHiYiIiImIiIiJiYiIiIqIiYiJiImIiIiIiIiKiIeJh4iKhoqIiIqHiYiIiYiJioeJiYiKiImKh4qJh4mHh4qIiIqIiIiIioaJiIiJiYeJiImIiIiJh4mIiIqHiIqHiomIiYmIiImIiImHiYmIiIiJiYeJiYiJiImJiYiJiImIh4mIiImIiImJiYeJiYeKiIiJiIiJiImIiYmIiIiIiYmIiIiIiIiIiImHiYeJiYeIiYiJiYiHiYiIiIiIiIqIiImIiImIiYiIiIiJiIiIiIiJiYiJiYiJiYiJiImIiYiIiYmIiIiIiYeJiYmIiIiIiYiIiImIiYiJh4mIiImIiIiJiIiIiImJh4iJiYeIiYeKiImJiYiIiYmIiImJiIqHiYmHiomIiYeJiImIiImIiIiJiImJiImIiYmHiYeJiYiIiYiJiYiJiImJiImJiIiJiImJiYiIiYiHiYiIioeKiImJiImIiIiJiImIiImIiYiIiYiHiYmIiYiIiImIiYiJiImIiYmIiYmIiYiJiIiJiYiJiImIiYiIiYiIiImIiYeIiYiIiImJiImIiIiIiIiJiIiJiIiIiYmIiYiJiImIiYiIiYiIiYiIiYmIiImIiYmIiYeIiYiIiImIiYiIiYiJiImIiYiIiImJiIiJiYiJiYiIiYiIiImIiImJiYiIiYiIiYiJiImIiImIiYiJiYeJiIiIiImIiYiJiIiJiImJiImIiYiJiImIiImIiYiIiIiJiIiIiImIiIiJiIiJiIiIiImIiImIiYiIiYiJiImJiImIiYiIiYiJiImIiYmIiYiIiYiJiImIiYiJiImJiIiIiImIiImIiYmIiIiIiYiJiImJiImIiIiJiIiJiImIiYiJiImIiYiJiImJiImIiYiJiIiIiImIiIiIiImIiYiIiYiIiYiJiImIiYiJiIiJiImIiYiJiYiJiImIiImIiYiIiYiJiImIiImIiYiJiImIiYiJiImIiYiJiImIiImIiYiJiImIiYiIiYiJiImIiYiJiImIiYiJiImJiYmIiYiJiImIiYiJiImIiYiJiImIiYiJiImIiYiJiImIiIiJiIiIiIiIiIiIiYiIiImIiIiJiIiIiYiIiImIiIiJiIiIiYiIiImIiYiJiImIiYiJiImIiYiJiImIiYiJiImIiYiJiImIiYiJiImIiABMSVNUQgAAAElORk9JQ1JEDAAAADIwMDgtMDktMjEAAElFTkcDAAAAIAAAAUlTRlQWAAAAU29ueSBTb3VuZCBGb3JnZSA4LjAAAA==", file: "hat_open1.wav" }, hatClose1: { data: "data:audio/wav;base64,UklGRvACAABXQVZFZm10IBAAAAABAAEAgD4AAIA+AAABAAgAZGF0YSUCAACDk4yHlY2QiZKGlYmShJCKiYaQkIGBpH+ajYCdh5p/iYaVfI2AhImEjXahc5OXgJWHkomhho+XgJKSiYmKioqNlYOQgJ56pH+bipOXkImEipKAjYqAjHmTf42EiZWAkoyKmImVl4aQkoqShJiThqCGl4CXh4mKl4yPjYyEio19moOSk5CNmIaMl5OJlYyJk4yPiZKJkI2QgJqAm4abipWTkJWPhp56l4qHjY2Mj4SXgKSAlYmXh5qNk4+TiZeMjIyJioyHgZKJioOQjYaNioePhJWPiZKJmoqaiZKMh5ODk4aMipCBkImMjY+Pj4aSjY+MjImQiYmMhJKEj4yKj4mQio2Mh5KKkpONj4+MjIqNhI+JiY+AkIePjI+QjJCMh5OHjI+NjJCMjYmQipKPiZWMko+Pio2Pio2Ph4+JiY+Gj42PkoyVh5CPjJKJj4qMjI+Mj4ySjJCMkI+Pko+PkI2Sj4yPjI+Kj42MjYyNjYyPj4yQjZKMkoyPjY+Mj4qNjYyNjI+MjY+MkI2Mj4yNjI2Mio+Kj4yMj4yNjI2MjY+MjY2Kj42MjYyNjI2Mio2KjIyMjIyMjI2MjI2MjI2KjIyKjIyNio2MioyMjIyMjIyMjIyNioqMioyKjIqMjIqMioqMioyKjIqMjIqMjIqMioyMjIyMjYyMjIqMjIyMjIyKjIqKjIqMjIqMjIqMioyKjIyMjYyMjYyMjIyMjI2KjIyMjYyMjIwAY3VlIBwAAAABAAAAAQAAAAAAAABkYXRhAAAAAAAAAAAAAAAATElTVDAAAABhZHRsbHR4dBQAAAABAAAAJQIAAHJnbiAAAAAAAAAAAGxhYmwHAAAAAQAAADAxAABMSVNUQgAAAElORk9JQ1JEDAAAADIwMDgtMDktMjEAAElFTkcDAAAAIAAAAUlTRlQWAAAAU29ueSBTb3VuZCBGb3JnZSA4LjAAAA==", file: "hat_close1.wav" }, clap1: { data: "data:audio/wav;base64,UklGRsYGAABXQVZFZm10IBAAAAABAAEAgD4AAIA+AAABAAgAZGF0YVcGAACFi4qHiYqFiImFhouIhIWLjIuFhISQhnZPSEttlKLEx8XGrpuCW01RXoSXi6S/o6zGpJ1vT1JRU2uSvb7AvK2CYWpdaH5sipGPnJCPhnp9gpiMkpuQhnBla2t6kJGip5iUjYByaGp0iY+Uk5KPkZGDfH58en2Ag4uQlZKNgn6Cfn9/foKVm5WOgnx9gIKEiImFhISGjYyMjIqHhIaJiYaCfHx+g4uUmJqZjoWAgIGDhIGChYaNkJKOjIiEgIKCjZKCjISAb4qqnJOHgIt9aoCUhIySkn95ioJ6kZF8h4yAeYWKl4qCk4yYqJqEfGleVVhqjpunqbKvnY58cmNuf4GAd4COpqikl3luaW57hICCeYKNkZqlopqGbm52eYaVlJSRjoOBg4WOhIWAen5+fIWRmJWWjY6MkIaAgIB/e32AjJWUko+GgIGHhoeEgISFhouOj4+Pi4iEgoOJhoeIhIOHh4yQjYyGgYB9goaOkI2IhYWIiIqKh4KAf4GGjI6NioSQp6ankG1iWFdogJO0uaSPjX+Eg292cnh7h5yZl6WVjoCAgnRubISRq6+oo5B+f4+CZVdbX4CcsLqumZB6eoFxcXiFioKLjpujm46Be3t/iZWVjYWAgX56gI6JjpGOioaIhICJj4yNhoN8fIuPl5SUgmxwb4iWr62glaCFgJB4blxacoaSnqGipYuDfXR8j4WBiIiAkpmhnoSDenl2d4KlmoegmYhyeIGHjISIk5eUl6iWdnNraoudkIB+hoSKg4J9g5WRmqCPjY+UkJ+onYpyYFpncXaIrLGvlY+Tl4l/dnyDh4uGjqKajJCAfH55f399hZGYmZqZj4mPlIyMqqGEcXJlaW99qrmur5l+gYB1c3p7f4+SjZmtmpCIgJOHhZOSno93dmKBk56gkYCBgoGMlZmbmYB0eYybp6CVgG5wgImOlZ2bn5aBcHeYg311fX+PmqGspqGBam1thp6ynp+TgYFwcXZ/gIuFiJiem5aYqaGGbWdkeImalJeVlIiPlIx/dmpwgpKrp52ZhoCFg3uBlIyIkpGWlot6eXRzf4iSmpiej4J/e3d/l52ckJGRlImEfXF9f3qImZmQjoOAiJSZmIuFeHeBiI2LkIuHjIKKjYuKioiIg32EgIKEjo2MjpSPhZGVjY6GhIB4gnl2fYmLjI2RmaOejYB3aGhxhZulqqqSgX5/eXmAfYSAeYKTmpeel4yGe3V4goaSk5SSiIKIko2DfG1tdICUnKGcmo2FhoCAfX+Fg4WJhoyTjIeMiIeDiZCWkYuGf3ducYGLjouSkI6Un6aQgXVob3V/ho6Zl5STkI2KgXp4gIODhY2NjJGXj4qKf4GCiIB3gIWHk5malpGMgX2ChH+Ggn2BhoqIjZuWjICBgoCIkZiUjIR/gH9+g4OFi5OVkpKMi4B/gH+Dg4mMjYqLjY6PjouEf3V1en+IkZebnZmKiYJ/fHiAhYmHhoiTmI+OiIKDhomGgYOFgYGMjpCVlIuEgH+AhYiNjYyQjoyMiYSAgX59f4WQk5SVjoiCgISHiY2QiomFhIOCh4WDg4CGi5GWmpaQiYSAfICChIOIhIaHiY2PjYiIg4KHi4yPj5CKhIKAhYaIh4KDg4eMk5aRi4B8fYCKjZSUkImDgICDhoiMioiHiIeLjIqJh4WIjpCNiYaBgIOFiIqLiIeGhYiKjI6QjIaGhYiJiIiIiIeGiI2OkI+HgH9/gYaJj4+OjYmFhIaHioqLiomLi4uNioWBgISKj5COioaEgoSHjJCOi4aEhoiLjI+NiImHhYeIiYmHhoeGiIqOj4yLiYeHiYeGh4eJi4qKiIeIiIuMi4mGhIOGio2LiYiFhIaEhIeMjIuNjouIhYSEhYaGiIiJiYyNjI2Li4qHhYOBgYGFjZGOjY6KiouHhIeHhIKIjIyKiYmJiYuLiYiGhYWFhoiJiYqMjo+Oi4eEhoeEiYyKi42Ih4qKh4aHiYmKiomJiIiHioiHiYiIiYiJiYiHiIuNjYeDh4eFiYqJi4uIiIqJiISEhIeJiouKi4yMjYyLi4iHh4SEhYWGh4mNj4yKiYaFiIeHi4yJiIqMjIiFhIWIiImLjIuMi4qJh4iJiYiJioqJh4iMjYuMjIiHiYaFiYyKiouNjYqIiIeIiImKi4qJiIiIiYcATElTVEIAAABJTkZPSUNSRAwAAAAyMDA4LTA5LTIxAABJRU5HAwAAACAAAAFJU0ZUFgAAAFNvbnkgU291bmQgRm9yZ2UgOC4wAAA=", file: "clap1.wav" }, bongo1: { data: "data:audio/wav;base64,UklGRhYOAABXQVZFZm10IBAAAAABAAEAgD4AAIA+AAABAAgAZGF0YacNAAB/f314d3Fybmtma2xxfISOkpaXkpKRi4uDgX97dHZxcnBzbV1fX2Bob32Moau1tLGrm4p+d2pWRlVreoONlJCLio6VoKuoqqOXn5eVfHd9b15SWGRpfZuzusDFx8O2nYuAdWhdWlNLSlZjbneHhX56hIeAeG1hU0g/PU5dZmtyfYiQl5Ocp6eclod/eXZ1bWpjaWxtdnZ9gIJ+gICGi4eHeniFjI2DgH6AhYKAh4WLl56WioeEd2loZmVxfX+BiJSanp6kqaWempKGeHFgV1NXW2xycXRvdXl2eHuBi5CKhoqKhIF7dnZ5cm1wfIKAiZOgnqCYl5aYl5mampyanZOIhYKEipCVkY6DdGpkXFxmbnx7hIqLlZiZkZKKiIeJhZOTkpWOioOBenJuYlpdYGdudX2Gj46QlZqdmpeUkI2NkJCKhIGEgHt2amJYTlFYbIGXp7GwsayejoqDfHVubWdiXl9fY2JmaG50eX2EgoeNkJahpKOclYiCgICDiYiMi4F/d3NoZ2hgX2Nka3J9hpOjqqepo5GNhoN7eXx6dHFpYV1ZWVZbaHeAhpWioaSmpqGako2DdmxlZmVpb3t/f4SGhIKFi5CSlJOXnZ6bmp2amJaUhn12bWdmZmlrb3RxamJhYmVufYqZp7O4tbWxraick4yDeG5oZGBfY2p0eIGGgoiJg4KBgoKCgHlydHF0eYKKiIWBfH2AgYmLjYmIg4B/gICEio6Ym56fo5qRiIB6d3p0cmtjYWBdYWFpb29vc3N2fIOJjpWXl5KKh4F9dnFwbGlscnZ8gIOEg4ODg399f4CAgYuUm6CjoZmQgnRlXFJLTUlKU1pgZ3J+hI6XmpydnZuVkY2KhX95dGpgWVtgZWx1f4SJio6RlJKSjoeAeXNucHF3eHyAgH56dG1lX1xZY2dudHp+g4aIio2RlpuYk5GNiIaEg396c3F0cXR3e4GHio6Pj5GSlJSTj5CJh4eCf4CAgH98enh3dXV0eH2BhYyPkpKUlZSUk5KQkI6LiYaDgXx3dXNxcXBwcnZ6foSMlJmbm5ycl4+IgHp2dXd6foCCgoKAfn9+fH2Bg4aIjY6PjYuIhYJ/fHl5eHx6enl5eHl5eHRwbmxubm90fH6Ch4uPkJCQkI+MiIJ/fXp3dXNzb21ubnBzdXp/hImOkJKSkIqDf3t3dXVyc3JycXFxbm1wdHh7fYCDhoeLjZGVlZKOi4eCfn58enp7e3t+fn16dXJwcHN1eXuAiY6TmJqYlpCHgHlxbm1tcHd9gIOGhoWGh4mKi42Pjo6OjpGPjYqJh4SBfXt5eHl5eXt8fHx9fHt9gIOJjpGUlZibnZuWj4eCfXh0cnBxc3Z4fYCEiIuPlJaWmJmYlZCIgn14c3BubW1wcnN0d3p7foCChIaHiIeKjI6RkZKSj4mGg4B7eXd0c3N0dXZ3e31+gIGAfoCAgYGBg4SCgYB9eXRwa2dmZWhqcHV7f4KFhomKiYeHhIOAgYOEg4KDg4GAf3x3dXJwbm5ucHN1d3l8f4CDhYSEg4SDgoGBgH55d3VzcnJxc3R1eHt+gYaKjZCTlZWSj4uGgn54dHBtbGprbG5wcXV5e32AhIeJjI6Pjo2Mi4qIh4aFg4GAfXx7enp7e3+ChIaJjZCRk5OSkI6MiIWBgH57eXh3dnZ3eXt7fX6Ag4eLj5CTlZaVlJKPjIiDgH9+fHx9fn5/f359fn5/gICCgoSFhoiJiouKiIiGhYKAfnx7eXl4eHh5eHl6fH+AgoSGiYuMj5CPjo2KhoOAfnp3dXV0c3N0dnd4en1/gIOGh4aEg4KBf317enh4d3Z2dXV2dXR1d3l7foCDhIaIi4qJioiGhIKAgH57eHZ0c3Jyc3R1dnZ3eHl7fYCDhYiKi4uMi4qIhIKAfHl4d3Z2dnd6fH6AgYKEhYaGh4iJioqLiYeGhIOBf317eHV0c3Z4e36Ag4WGh4mKjY+QkJCQj42Kh4WDgoCAfn58e3t8fn+Bg4aIioyNjo6PkI+OjIqGg4B/fnx9fXx9fX5/gIGDhoeJi4yMjY6Njo6PjYyJh4SAfnx6eHd2d3h5en1/gIKEhYaFhoaFhoeIiIeFhIF/fXp5d3V1dnd4en1+gIGEhYeIiYmHhYSCgYCAf359fHt5d3VzcnFyc3R2eXt9gIKEhYeIiYiHhYOAfnp3dXNzc3N1dnh5ent8foCAgYKCg4KBgYCAgH99fHt5eHd2d3d3d3h5ent+f4CCg4SGh4aHhoeGhYSDgX99e3p5d3Z3d3d5e3x+gIKEhomKi4uKiYeGhIKBgIB/f35+fn+AgICAgICAgYGDhYeIiYqKi4qKiYiHhoSCgH9+e3p6eXp7fX+AgYKEhoeJi4yNjIuJh4WDgYB+fXt7enp7fH6AgoWHiIiJiomIh4eGhYWEgoCAf39+fX59fHt7e3t7fH1+f4CCg4WGh4eGh4aEgoGAfn16eHd2dXZ3d3h5ent8fn+AgYODhYSDg4KBgH59enl4d3d4eXp7e3x9fX1+fn9/gICAgICAgIB/f35+fn17e3p5eHh4eHp7fH6AgIGChIWGhYaFhISCgYB/fXx7enp5enl6ent8fX+AgYOEhYaHhoeGhoWEg4GAgIB/gH9+fn9+f3+AgICCgoOEhoaHiImJiIeHhYSDgoGAgIB/gH+AgICBgoOEhYaGh4iJiImJiIeHhYSCgYB/fn1+fX5/gIKDhIaHiImKiYiHhoaFhISDgYGAgH9+f359fX5+f4CAgYGCg4SDhIODhIOCg4KCgYGAgIB/fn1+fX5+fX5/fn+AgICBgoGCgoOCgYGAgH59e3t6eXp6ent7fH1+fn+AgICAgYCAgIB/gH9/fn59fXx6e3t6eXp7e3x9fX5/f4CAgYCBgYCBgIB/fn18fHt6e3p7ent8fX5/gICCgoOEg4OCgoGAgIB/fn59fH18fX1+fX5+f4CAgIKDg4OEhYSFhIWFhISDgoGBgIB/fn59fX5/gICBgoSFhoeGhoeGhYSEgoGBgICAgH+Af4CAgIGCg4OEhIWEhYSFhIOCg4KDgoODgoOCgoGCgoGBgIGAgIGAgYKCg4SDhIOEg4OCgYGAf359fXx7fH19fn+AgYKDgoOEg4SDhIODgoGAgIB/f359fXx9fH1+fX5+f35/gH+AgICAgICAgICAgIB/f359fH19fH18fX5+f3+AgICAgICAgICAgH9+fn5+fn19fH1+fX5/fn9+f4B/f4B/gICAgICAgICAgIB/gH+Af35/fn9+f39/gICAgYGCg4OEg4SDg4KBgICAgH9+gH+Af4CAgIGCg4OEg4SDg4SDhIOEg4KCgYKBgoGCgYKBgoGBgoGCgoODg4ODg4SEhISDhISDgoGCgYGCgIGAgYKCgoGBhISDhISDhIOEhIKDgoKDgYKCgYGAgYGAgYGBgYGAgYKBgYGBgYKCgoGBgIGBgYCAgICAgH9+f3+Af4CAgIGBgYGCgYGAgICAgH5/fn99fX19fXx+fX5+f3+Af4CAgICAgICAgICAgH9+fn59fn1+f31/f3+Af4CAgH+AgICAgICAgIB/gH9+fX5+fn5/f4B/f4CAgICAgICAgICAgICAgICAgICAgICAgH9/f39+fn9/f3+AgICAgICAgYGBgYCBgICAgIB/gIB/gICAgIGBgIKCgoKCg4KCg4KCgoGBgYGBgICBgICAgICAgICBgoGCgoGCgoKBgYKBgYGBgYGAgICAgH+AgICAgYGDgoKDg4OCgYKBgYCAgICAgH9/gH9/f4CAgH+AgICAgICBgYGAgYGBgICAgICAgICAgIB/fn5/fn9/gICAgICBgIGAgYCAgICAf39/fn1+fX59fn1+fn9/f39/f4B/f39/f35/f39/fn9/fn9/fn9+fn5+fn9+f35/f3+AgICAgICAgH9/f35/fn59fX59fn5+fn+AgICAgICBgYCBgICBgICAgICAgICAgICAgICAgICAgICBgIGBgIGCgYKBgoKBgIGAgICAgICAgICAgICBgYKBgoKCg4OCgoKBgoGBgIGAgYCBgIGBgoGBgoKBgYKCgoKCgoGCgYKBgoGCgYGAgIGAgICAgICAgIGAgYGCgYKDgoOCgoKBgYGAgICAgICAgICAgICAgIGAgYGBgYCBgIGAgYCAgICAgICAgICAf4B/gICAf4CAgICAgIGAgYCBgICAgICAf39/f359fn5+fn9+f35/f4CAgICAgICAf4B/gH9/gH+Af35/fn9/fn+Af4B/f4CAgICAgICAgICAgICAf4B/f35/fn9+f3+Af4CAgICAgIGAgYCAgICAgICAgICAgICAgICAgICAgIGAgYCBgYCBgoGBgYGAgYCAgICAgIB/gIB/f4CAgICBgICBgIGBgYGAgYCAgYCBgICBgICAgICAgICAgYCAgYCBgIGAgYCBgIGAgICAgIB/gH+Af4CAf4B/gICAgIGAgYGBgYCBgYCAgIB/f4B/gH+Af4B/gICAgICAgICAgICAgICAf4B/gH9/fn9+f39+f35/fn9+f3+Af4B/gICAgICAf4B/gH9/fn9+f35+f35/fn9+f4B/gH+Af4B/gH+Af4B/gH9+fn9+f39+f35/f35/fn+Af3+Af4CAgICAgICAgH+Af35+f35/fn+Af3+AgIAATElTVEIAAABJTkZPSUNSRAwAAAAyMDA4LTA5LTIxAABJRU5HAwAAACAAAAFJU0ZUFgAAAFNvbnkgU291bmQgRm9yZ2UgOC4wAAA=", file: "bongo1.wav" }, bongo2: { data: "data:audio/wav;base64,UklGRowLAABXQVZFZm10IBAAAAABAAEAgD4AAIA+AAABAAgAZGF0YR0LAACAgICAgH9/f4CAgIB/gIGAgH99f4B/f359e3l5eHd1d3RwbG1sbXB0dnh5fH1+gIWHh4eGh4eGiIqJiIiKjJGXnaCjpKWkoZ2Xk46Lh4WGiIuNjIuMjIqHhoN/enFqZmViYFxYVlldYGNlZWhqampsb3JzdHZ0dXR1dnd7foGHjZGWmZ6fn52alpORj42JhoSAfX17eXdzcm9wcXJwb2tra2tqaWtwdXuAhYySlZWVlZaZnJyenp6enZuZmJeWlZORj4uIg4B8dnBpY15aVlJPS0lJSEhKTFJaY2x2f4SJj5GUmJygpKarr7O2tra1tLOysKyoo56Wj4mDgHx3dXNwbmxoZWNgXFlWVFVXWVpeX2BiZmpudH2EjZadoaSoqamppqalpaWinZmVkY2JhYGAf319end1dHJxcXBwb3BxcXFxcnNyc3N1dXV2d3h5eHh4eHp8gISIi42OjoyKhoSBf39/gICCgYCAfn17e3t9f4CDhYeKi4yLjIuMi4qHg4B8eHVycHBvcHBxcXJyc3N0dnh7foGFioyNj42LjIyLi4qJiYiHhIGAf358e3t7fX1+fXt5eHd3dnZ4eHl6enp7fH6BhIeKjZCUmJqen6ChoaCfnpuYlZGLhoB7dXBsaGVjY2RjY2NjYmJkZmltcnh9gISGiY6PkZKTkpKSkZCRkpKSkZKQj42Lh4WEgYB+fHl3dXNycXFwbm1sbWxucXV7gIaLj5KUlpaXlpaWlZSTkIuHg355dG9raGZjYmFhYmNlZ2lrbnF0d3t/gYaLjpGUlpiXl5eWlJORj42MiomIhoWEgX97d3RwbWlmZGNgXVtZWFhZW15jaXB2foOKkJWZnZ+hoqOlpaSkoqKenJmTjYeCfXdxbGdkYF9eXV1dX2FkZmhrbXBzdnd5fH6AgYKCgoKBgoSHi46Rk5WXmJWUko+MiYaDgH99e3l3dnV0dXR2d3l7fX6AgoSHio6QlJWXl5iWlJGPi4iFgoB9eXRvbWpoZ2hpa3B1eXt+gIGChISFhYeIiYuMjY6PkJCRkZCRkZCPjYyMiYiFgoB+e3l4dnNxb21sbGtrbGxtbm5wcnR3fIGFjZKWmZycnZyamJWSj4qHgn98eHVzcXBwb25vb3BxcnN0dnZ3eXp8e31+f4CBg4WHiYqLi4yLioqJiYiIiYiJiIeGg4F/e3d0cG1raWpqaWtsbXBydnl9gIOHi5CSlZeZmpuamZWSj4uHgn98enh2dHNycnBxcHBxcXJ0dnh6fH5/gIGCg4OEhIaIiYmKiouLjI2MjY6OjY2Mi4uKiIaDgH57eHRwbmtqaWprbXB0eHt/g4eMkJSXmZucnZybmpiVko6LiISBgHx5d3Z1dHJxb29ubW1ubnBxdHd5e31/gIGCgoOEhYaIi42PkpOWmJmamZmYl5SQjIiEgHt2cm1oZWJfXFxdXV9hZGhrcHR3e36AgoWGiIuNjo+RkJCPjoyLiYaFg4GAf359fHt7e3t7e3t6eXh3d3Z0cnFwb25tb3BydHd7f4KFiYyOj5CRj4+OjIuJh4SCgH98enh1c3Nzc3R1dnd4ent9gICBg4SDg4SDgoGBgIB/fn18e3p5eXh5enp8foCBg4WHh4iIh4aFhYSDgoGCgYGAgICAgYKDhIWGh4iIh4eHhoWDgoB/fHl3dnRzcXJxc3R2d3l8fX+BhIeKjY+Rk5SVlJSTkY+OjIqIhYJ/fXt4d3V0c3R1dnd4eHp5enl5eHd3eHd4d3h5enx+gIOGiIuOj5GTlJWVlpWVlJKPjImFgX57eHRxb2xqaWhnZ2hpamtucXN1eXt+gIKEhYeHiIeIh4eGhoWGhYaGh4iIiYiJiIeHhoSCgX9+fHl3dXRycW9tbWxsbW9xcnV3en1/gYSHiYuMjY6PjY2MioiHhYKBgH9+fn9+fn9/gICAgIGCg4OEg4ODgYB/f318e3p5eXp6eXp8fX+Ag4SFhoiJiomKiouKioqJh4aEg4KBgYCAgICCgoOEhoeIiImIiYiHh4aEg4KAf358e3p5eHh3eHd4ent9gIGEh4mLjIyNjY2NjIyLiomHhYOCgYB/fn9+f35+fn9+f35+fX59fXx6enp5eHd2dnZ2dnd5e3t+gIOFiIqMjo+QkZGQkI+Ni4iFg4B/fHp4dXRycHBxcHFzdXZ3eHl7fHt8fXx9fn5+f35/gH9/gICAgIKDg4SFhoeIiYiJiImHhoSCgX98end1dHNycXJyc3R1dnd5e32AgYKDhYaFhoaGhYWEg4KBgIB/fn5/fn+AgIKDhIWGhoeIh4aGhYSDgoGAgH59e3p6eXp5enp7fH1+f4CBgoSFhoWGhoWDgoGAgH9+f359fn9/f4CAgYKEhoaHiYqJiomIh4aEgoB/fXt6eXh3d3d4d3h5enx9fn+AgoOEhYaHh4iIh4aFhIOCgYCAf3+Af3+AgICAgYCAgYGAgIB+fXp5eHZ1dHNzcnJzc3R2d3l7fYCBg4WHiYqLi4yLi4qJiIaEg4F/fnx6eHh3d3Z3dnd2d3d4ent7fHx9fH18fHt7fHt6e3x9foCAgoOFh4iJiouLjIuKiomHhoSBgH57eXd2dHNycnJzc3R2d3l7fX+AgYOEhYaGh4eHh4eGhYSDg4KDgoKBg4KDg4SFhYaFhYaFhIODgoCAfn17enl5enl6e3t8fn+AgYOFhoiJiomKiYqJiIeGhYSCgYCAf39+f35/gICAgIGCg4SFhYWGhYaFhISCgYCAfn18e3p6eXp7e3x9f4CAgYOEhYWGhYWEg4SCgYCBgICAf4B/gICAgIGCg4SEhYSFhISDgoGAfn18enl3dnV1dHN0dXV2eHp7fYCAgoSGh4iJiomKiYiHhoWDgoGAf359fn19fHx9fXx9fn1+fX59fXx7e3p6eXh5eHl5ent8fX+AgYOFhoiJiouMjYyMi4mIh4WDgIB+fHt6eHh3d3h3eHp6fH1+f4CBgoKDhISDhIOCgoGBgIGAgYCBgYKDg4SEhYWGh4aHhoWFhIOBgIB+fX18e3p6ent8fH1+gICBgoOFhoeHiImIiIeGhYSCgYB/fn18e3x8fXx9fn+AgIGCgoOEhISDhIOCgYCAf39+fX18fH18fX5+f4CAgYGCg4OCg4KCgYCAf39+fXx8e3p7ent7fH1+f4CBgYODhIWFhYSEg4KBgH99fHt5eHh3dnd3eHl6e3x9fn+AgIGBgoODgoGCgYCAgH9/f359fn5/fn+AgICAgIGAgYCAgICAf359fHt6eXh4eHd4eXl6fH1+gIKDhIaHiImJiomJiIeGhIOBgIB/fn18fHt8e3x8fX5+f3+AgICBgIGBgICAgIB/f35/f4B/gICBgYODhIWGhoeIiIeHhoWFg4KBgH9+fHt6enl6eXp7fHx+f4CBgoOEhIWGhYaFhISDg4KBgICAf4B/fn+AgICAgIGBgoOCg4ODgoKBgICAf359fXx7fHt8e3x9fn5/gICBgoKDhISDg4KBgYB/f319fHt7ent6e3x9fX+AgICBgoKDg4SDhIOCgYGAgH9+fXx7ent6e3p7fHx9fn+AgIGCgYKBgoGCgYGAgIB/f35/fn5/gH+AgICBgoKDhIODhIOCgoGAgH99fXt6eXp5eXp6ent8fn+AgIKDhIWGhoeHiIeGhoWEg4KBgICAf39/gH+Af4CAgICBgYCBgIGAgYCAgH9/fn59fn1+fX5/gICBgoOFhoeHiImJiIeHhoWEg4KBgH9+fX18e3x7fHt8fX5+f4CAgIGBgoOCgoGCgYGAgIB/gIB/f4B/gICAAExJU1RCAAAASU5GT0lDUkQMAAAAMjAwOC0wOS0yMQAASUVORwMAAAAgAAABSVNGVBYAAABTb255IFNvdW5kIEZvcmdlIDguMAAA", file: "bongo2.wav" }, work1: { data: "data:audio/wav;base64,UklGRgwnAABXQVZFZm10IBAAAAABAAEAgD4AAIA+AAABAAgAZGF0YegmAACAf4WKj5iotbCmo6SjmpGOiYF9g4yHd2dncHBpZGduc3mFlZ2ZlZygnpuXkZabmpaRjouJgXhxcXR0c3R1e3+Ci5GNhYSMlpiUkZKQjYqFgHdwbW1vbGprbXF0dHJwcXR6goiJioqMjIqGgXx8gIB7eXl7e3dzc3Z4eXt7ent/g4iFg4OEhYaHh4iLjIyJg399fn9+e3x/gICAgH19fX6Bg4KEi4+Pi4iEgoB+f35/gYKKnKusnZaXl5aQioN6doKUlIBpYWt2cWhncX2JmJ2Yk5GXmpiUkI+RkpCLhoB0aWZqbGtqbnd/gn95eX2Ag4mQk5KRkpGNhX52dHZ3c29xdXh2cG5xdnp7foOKj46MjIqEfnt+gYKBgH98dnFwcXJxc3Z5en2Bg4B7e31+f4CFioyLhH96eXh3dnZ3d3d4eXl4eHl6fH1+gIWHhoKAgICDhYWEhYSEgX58eXp+g5KjraealpeYk4yJhH59h5SPd2FgbXJwbnWAi5Wcm5iSj5CSl5aTkI2Mh4F2aGJla25wc3d7fX1+fXt7gI2WlZGPkY+GfHVzc3JzdXl8eXJvcXNzdHd/iJCPioiJhX14fYSHhoF/fHZxb29xdHV2eoCDgH16enx9foCFi42Jgnp1d3t7eHd3d3h6end2d3d5fYCEhYSBf3x7e3x9gICAgYOFgH19fn59fn+AhYWOn6uqm5OUlpaSkI6If3h/hntlWWNzeXqAjJCNj5aemY2KkZqakoyDeW1rcXJrZWhye356dHF0eoSOkY2KjpOSjIR8dXZ9gYB4cGxvc3Nxb3J6gouOioN+fYCChIWEhYOBe3ZycHJydHh7fHx7eXh4eXl6f4SIhoF6dnl7fHx9fXx9fHx6eXh5eXp8f4GAfnl4eXt6e31+gIB/fHp8fXx9gISEgoKAfn1+foKEhpSmsqmYjoyOj5SYmI+CeXh7dWlkaXR/ipaWi4SHkZaUkI+RlJKOh31tZGlzeHl9f3t0c3V2dXZ7hZKVj4mFgHZzd32ChoaEgHt1b25ydXd8h4+Mgndzdnl6fYKHhoKAfnlzcnR3e4GJh31zcnd7e3l5fYKFg4B7dXR3e36AgYF/enh6e3p3dnh9gIJ/eXR2eXt8fH1+fn99e3t8fHx+gIWIhoF/fn1+f4CDiIWLlqOnm5ONiouRm5qRhHdxdHp2bGlxfIaRlIuAdnmJl5iPio2RjomFfW5ocICLi4N9d3FyeH5+fH6Hj4+HgHhyc3mCiomDfnt3dnV1dHV5gIeIgXl1dnl4e4GHhX54eXx7eHd6foKFgn11dXh6enp+gYJ/eXd5ent6enyAgoB+eXZ5fX18e3x/f317e3p5eXx9fn18e3t6e31/f39+f4CAgICBgYGAgICAgIeGhY+dqqKUjoyJiJOcmY+AdnJ0eHNub3V9h5KVi391eYeVm5OPj46Jgnt0cnd9goaHhoF4cHF2fIKLjouFfnd1dnh6f4OGhYOAe3Z0dnl/hoqFfXZ0dnl6en2BhYSAfXt4d3h7f4GCgHx4d3h5eHh9gYJ/e3t8fHl4eXuAgYB6eHp9fXp6fYCAfXt6fX9+fHt9fnx7eXl7fH5+f4B/fnx9fn6AgoODgYB+fXt/h4aPnKiomZKOh4GJm5+YiXtxa3B0dHRzeYSSl46Ee3Z7iZmclpGNg3dzeoKDgHyAiImCeHJwc3iAjJGNg3hydn2BhIeGhIOEhH52c3V7gIaKh392cXV5fICEhIB6eXx9eHV3e4CFiIN8d3Z5eXp+goF6dXh8e3h3eXx+gIGAfXp6e3x+gISDfHd3enx8fXx8e3p7fHt8fXx8fYCBgHx5eX1/gIKEhYJ/fHt7fIaJjJijqp6RjoeAgJWinY9+cmptdXd3dnd+iJKSiX51e4iWm5SQin9xcX+Li4J+gYiIgnlxcHV+iJCRiX5xbnWAiIuIgoCCg4F9dnN2fISLiYB2bnB4f4WJhXx1dn1/e3d4e4CFiIR7dHR4e32DiIJ4dHl/fnp4ent+gIKAfHl5e31+goOAeHd8f357eXp7fH18e3l5fH6AgICAfHt9f359f4CBg4OEgH59fHyDjY2Unqello+HgH+MoJ+UgnZsanN5d3R0e4KOkop7bnSDkZaVlI+Bc3ODkI6GgoeJh4J/eHFyfIiPioN5cXB0fIWJhH18gIKAfHd2eYCIjIZ7c3J3fIGHh4F5eHt9enZ3fYCChIR/dnJ2e3+Bg4F8eHh7fHx7e32Ag4OAend5e32Ag4J9eXp9fnx6e3x9f4GAfXp5fH19f4CAfHx/f357enx/f4CDhIOAfX1+gIqOj5ahq6GRh4KAiZqfloh3a2hyfHlxb3d/ipOOgXFzg5SalI+NhHl3hZGNgHp/iI2Hf3dxcnqIj4l8cXF5foCEg312e4ePiHx0dn6FiYmDe3N0e4KHgnt1eH6Cgn52cXV9hIeEfHRzeH6DhYF6dnp+gIF/eXd5gISDfnd3e36AgYF8d3p+gIB+fHp6foCCgX15e31/gIB+enp9f4CAfXp6fICBgoOCgH9/gH+Bh4iQnqunlYV5eoyhpJSGem1rc357cG12hZGShnRueIeVmZWNgXl7ho+MhH5+hY6PiIB2b3SBj46BdHF3fX59fHl4e4KLioB0dH6IjImEf3l4fYSGgHd1e4CBfnl1dnd8gIJ+d3V6gH98enl5fYGCgHt4fICBgYB+enl8f357enp7fH1+fn58fH6AgH9+fX19fH1+fn19fn1+fXx9fn5/fn9+fn1/goSEgn97fIiPj5WirKORf3aHoKeYiYJ2bXF+f21neJOdh2xld42XlIuEfn+OmZKAdX+PlI6Dfn6FjYuCdnB3hY2Gd21vdXt+fXl4fIGDgHp6gIaIhoOAfn9/f318fYB/e3l4eXl4eXl6eXl8fnt3d3t+fnx8fX59fnx7enx+gH98enp9fn18fXx7fH6Af39+fn1+f4CAfHl5fHx9fHp5enx+f35/f35+fn+AgICChYWCfnp+iY+UoK6tm4V6h6WvopCKhH2AiIJvZ3uUln1kZ3qJj4+Og3Z1iZqUhICKkYyDf3+Cio+LgXZwdoKKiYJ8dXN1eXp6fYKFgHd0eX6Ag4eGf3Z0d3p9f4B/e3Z0d3p7fH5/fHl6e3t5en18eXd5fH1+fnx4dnh6fHt8e3p7fHp5eHp9fn59fHt8fH1+fn59fn17eHp9fnx6e3t8e3x9fn9/fn18fX5/gICCgoB9fIGKj5mrtKmXi4uYpaiimZSMhoWGg36Ej5KKem9wfIiSkoqBfH6Gi4uJiImJhoJ+foOJioSAe3d5gISDfnp5enl5ent+gIB/e3d5foKDgoB8enp6e3t8fX17eXh4eHd4eXp6e3p6e3p4eHp8fXx8fH18fHp6e31+fn17enp8fHx8fXx7fX6Af35+fn1+fn9/fXp6fHx9fHt5enx+f39/f319fn+AgICBg4SCf3x/iI2TobCunIh+iKKto5OMhoCCiIJya36TlX9naXqIj4+Ngnd2iZmThICKkIuCf3+CiY6LgXZwdoKKiYJ8dXN1eXp6fYKFgHd0eX6Ag4eGf3Z0d3p9f4B/e3Z0d3p7fH5/fHl6e3t5en18eXd5fH1+fnx4dnh6fHt8e3p7fHp5eHp9fn59fHt8fH1+fn59fn17eHp9fnx6e3t8e3x9fn9+fXx7fH5/f4CCg4B9e4GKj5qstaqYjY6bpqmknJeQi4mIhIGKlJKGd29yfYiRkoqBe32EiIqNj42Ign98foWLiYJ+fHl5fYCDgX99e3h1d3yBg4B8d3V4fICBgH15dnV2d3h7fHp3dnd3d3V3eHl6e3p4d3h4eHd4ent7enp6eXd4e318e3p5eHl6eXp8e3t7fX5+fXx9fXx8fHx9fXx6eXp7fHt5eXp8foB/fHp6fH1+f35+gIKDgYCBh4iSqLm1pJiQj5ioraWZlZaVjYaBhI6TkoqAdniGkpGHfHh/iYyJh4mKiIWCfn6CiIiEgX95eH+FhYF/fX6AgH16enyAgH13dHZ6fXx5dnRzdHZ3dnV2dnd4eXd1dXd6e3t5eHZ1dnd4enl4eXp5d3d4eXp7fHt6eXl6ent8fX59fHt6e31+fX17e3x8e3p5enp7e3x7e3p8fn+Af359foCAgH9/fn6ChYWDgISEhpiss6eWjY2Xn6CcmJeWlI+HgHyDkZmXjomHhYOGiYuKiouKhH55en+FhoOAgIGAf319foCAgYCAf359fX1+foCAgH99fHx9fH19fnx7enl6ent7fHx7fHt6eHh6fHx6eXh4eXl5eXl6enl6eXp6e3p7ent8fXx6eXp7fH5/fn18fX5+fn17ent9fn59e3p5en1+fXx8fn+AgH59fH6AgICAf39/f4GChIGBg4CGmaagkIaCh5afmY6Lj5GNhYB/hI+WlI2Gf3p8ho+OiYeGgnx5fYOHhoaHh4J8eXyBhoeEgH18fYCBgH5+gIB/fXt8f4CAf35+fXx8fX5/gIB/fHt8f4CAfXt6e31+f317ent8e3p5eXp9fn16eHl6fH1+gH58e3l6fH5/f318e3t9fn9+fn19fn9+fHt7fH1+fXt6e3x9fn1+f359fX9/gH9+f35+gIGAf4GChY+eo5uQiYOCjJmakIiGhYF5cW10gpKXj4J2b3WEkZOOjI+PioB2cnqHkY+If3dydHuBg4KDhYaCfnl5fYGFiIWBfXt6fX9+fX1+fX1+fXx8fX5+f4CAgIGAfn19fn1+fX59fnx6eXh6fH9/f317ent9gIB/fn18fX1+fn+AgIB+fX1+f3+Af4B/fn19fH5/fn59e3x9f3+Af35+f3+AgIB/fn5/fn+AgoKCg4OEi5aalIuEgYOLkIqCfHh8goF3b3OBj5KLgHl5g4+Si4SDiImFf3l3eoCEhIB7eHl+gYOCg4SGhYSBf3x+gYODgH15eXp8fX18fX6AgIB+f4CAgYOCgYCAf35/gH9+fHt7fH19fHt6e32AgIGAfXx9gICAgH+AgH5+fn9/gICAf35/gIB/f4CAgYB9fX6AgH9/fXx9fn9+f4CAgICAgICBgH+Af359foCBgYKAf4OOlo+AdX2OlYp6cXWBiYR5cXaDjYh8d36Kjod/fIGKiYF5eX6Dgn15e4GFgn16f4WJhYB+gYWEgHt7f4KAfnx7fHt8fH1+f35+foCBgH5+gIKEgn98foCBf319f4B/fHx+f318fH5/fn1+fXx8fn5+f4CAf318fn59fH2AgYB+fHx+gH9+f4CAfnx7fH18e3t8fX59ent8fn9+fX1+fn18fXx7enp7fn+Ahn1+mrCYbWyYuaNxYYmwnm9igZ2Ufn2MlIh8hI6CcHWJi3pwfop+aW2JlH1ndZSbf2ZykZqBbnqPjntxfYmCdXiIiXdrdoiHdmp1iox5bHaEhHp1e4WBdnaBg3dyfIiHem91hIV3cnyAgICCe3N2gYmCdHWEiHxyfIeDdW9+kY10an+UjXJqf4+CdHeBf3d3foWDd29+kItyaoCUiW9tf4uCd3eAgnp2gYqDd36Nj42Ql4p5f5qkknl9jpeNfHaBko94cH6Nhnh2gouIfnp8hoV/eX+LjIF6g5GSh4CBipWPfW97kJSDcW13hYZ0Zm+Af2phcIB6aWNveXl0bnB3e3t9gH96dnqGj46AfYiPjISLlJaQjIuTmZaIhZKVhnODmpVwVmmOknNSW3h/bFdgdHRtYWl1eXpxcHF4fX2Ch4d9fImSj4WDfn+JlIl2dIqWjYGJmZuQhZKlppSBl6CUcnOZqYhZTXWVkWNGV3J5YVhncHFjYnB7gHRtbnaFkpWHeHuLnZqNiIyIe32SmoZpan6Tlo6IiY6TlpyYmYqYkYhwc5eoh1ZCapOYbERNaHlnV2JqbV5ecYaUgnBmdpCho4x3eJCkmYqDg4B3eIGNhnBjbYORkIOAhZuhnJCXm5mek4FneaKpfUpEcJSTZ0dKYW5oYWNnbWlsdYuajXVqgKKsoYd3fZanl4WBg392d4OPh25ib4mWinlzhZibjYqTnJKHi4+BZm6Uo4BRSW2OjmtSVmt2c2tqbXJyd3+NmJGAd4OZo5qIenyKl5OCc21yen17eXVwb3V/iYyDeHyJl5iTjYyNjY6YjXlfaY6cgFtRaoCEbV1kc3ZtbXZ/gHd3fpCfmoh6gI+cmYh1cICTj3hnbn2AeHN1enp4dnyCg392e4qXlIR8gpGZjoKCg3psc4uXh2NjiLCqe11xpLqff3B+laGYhnt0c3h+gn1vYF9ugImEcWZuhZiajYKCjJaalY2FgISNkox/b2Zsd3p2bWZmbHN4enZtbniGkpSKgoONlpiUi4SChImQi39xbXJ7fHJpZm55e3Zwcnh8fn+Ei4uEfoKNkouAgIGCgYCAfHVzd3x4c3BydXd3d3h4enx+f4CDhYSBgISJiYeBfX2BhIF9eXl8fnx3dnh9fnp4fYmNh4yeraGFg521qYyBgo2SjoiDeWxmbXuEeWVganZ7gYN7cG57jZSOhH6AiZKWk4yBfoOPkouAeHNze4aGeGlqdoOIhYB9gISOlpSQhYuMjIGBkJWCa2R6jYpvWWBveG5kaW1vaGp2gId9c3B8jZaVhnt+j5yThoCAgH1+gISAc2xygIiHf32AkZWSiY6RkZWOgW97mJ5/WlV1j45tU1ZocmxmaGtwbG52iJWLeW6BoKuhh3h/mKiXhICCgHp6go2Fb2RwiZWJeXOEl5qNipKckoeLj4FmbpSjgFFJbY6Oa1JWa3Zza2ptcnJ3f42YkYB3g5mjmoh6fIqXk4JzbXJ6fXt5dXBvdX+JjIN4fImXmJONjI2NjpiNeV9pjpyAW1FqgIRtXWRzdm1tdn+Ad3d+kJ+aiHqAj5yZiHVwgJOPeGdufYB4c3V6enh2fIKDf3Z7ipeUhHyCkZmOgoKDemxzi5eHY2OIsKp7XXGkup9/cH6VoZiGe3RzeH6CfW9gX26AiYRxZm6FmJqNgoKMlpqVjYWAhI2SjH9vZmx3enZtZmZsc3h6dm1ueIaSlIqCg42WmJSLhIKEiZCLf3Ftcnt8cmlmbnl7dnByeHx+f4SLi4R+go2Si4CAgYKBgIB8dXN3fHhzcHJ1d3d3eHh6fH5/gYSGhYKAhYuLiIJ9fIGEgn13dnp9e3Z0dXl8enh6iI2IjZ+xpYaAnLmuj3x8jJuVhHl0cWxqc4GAbmJndIOQjn5vcoWan5WLhYmTmZiTj4d/f4iPi31rZm15f3puaGpweH+AenR0eoiTkomCgYiQko+KhH5+hYqHfXFuc3Z2dHJxcHBzeHx5dnR3fYSKiIJ+f4ePj4mBfHp/homAdXN5fnt3dnZ2dXZ6e3t5eHp8fYCEhoF8fYSLi4R/fX+AgoB+e3p6e3t5eHl8e4CKhoiWqKiNeYertZ2Ddn+Vn5OAdnFzd4CKhXNnaHJ7h5KKc2VwjJ+aiHp3hZmgl42LhoCHlZiOfnBteIeOg29la3eAhYF0bHF8hYqKhH14fIiTkYmAenqDjo+Fd25ye4KDemxqc3l6eHZzc3V3e4OIgXd2f4iMiIJ9en2DiYmCenZ5fX6AfXl0dnp/gHt2d3p8fX6AgH56e4CEhYB6en6ChISAenh5foCAfHp6g4aHkqGolHp+nriqinZ3jJ6fjn1zcXZ+h4yBcGRpe4uUj3tnaoCaoZB+dnyMnJ6Sh4OAgIqXlIV0aXCAjIx9a2ZxfoOEfnJrcn+KkIyCeHV/jpeQg3p3fYeRj4Jza3J9hIN6b2xyeXx8eXRxc3l/hYd/dHN9h4yIgHh2e4OIiIF2cXV+gYF+d3V4fYCAfnl3d3qAg4N+eXl+goSFg355eoCGiIJ5c3h/g4B8eHuDhI2dqJ6AdYuwt5h5a32apZZ/cmxudX+JiHpmYXGEk5WGcWd1jqGciXlzgJWinY6Df32ElZ2Qe2treoiPh3ZnaHaCiIR5bGx4hI+Qh3x1eIKQlIt+dHV/i5CIem1teIGDfnRsbnV6ent6dXBxeYWKhXp0eoOKi4iAe3p+hIqIf3Z1eHx/gYB5c3V6f399eHR1eoCEg3x2d36ChIOAfHt9gIOFgXl1d3t/f398f4CFl6qskXV7oL2tiHN1iqGjj3hqa3V9gIOCdmZmdoiVkHtmaICZoJB/dnyMnJ6TiYWAfYWTlId3a215hYyCbmJqeYSIgnVscHuGkJGGd3B6jpqTgnZzeoaRjn9wbHJ8gIB8dW9vdX2CgXducHiAh4iAdXJ7hIqIgXp1eYCFhoF6c3N5foGAenZ2en6AgH13dnqAhYaAeXV6gYeHgnt3eX+EhoF5cnZ+goJ/enuAgo2jtKaAbIa1wKB6aXaVqZ+CamNrdnyBhn5qYGuAkZWHcGVzkKWeh3p5iJuhloqIhYB+ipeSfmxqdoOKhHRlaHV/goJ6b2x0gIuRin1wb4CVmYl4b3J/jJGHdmpue4CCgHhtbHaAg4J7cWxzgIqMgXNud4SOjoN3cneAiIyGd2xvfYiIgHVvcnuChYB2b3J6gYSDfXNwd4CGhoB6dXmAh4aAeXV4foKDgHp3gIWJmKquknR5pMSwiXFzjqipkHVoa3Z6foSDcmBjdIiSjHhiZH6cpJB7dX2Nm52TiISAfIOUmox2Zmt9jY9+Z2BufoGAfHZubniHko+Bd3Z/jpiQgnp5fYWOjYJybHR/gX10bW10eXp4eHdyb3R9hIeAdnR6hIuMhHt4e4KIiYN6dXh+gYF/d3J0fICAe3V3fH9/fX5+e3h5fYKHhn11d4CGhX94dXh+gH57eH6CfoeetKiCboS0v6ODcn+aqpp+b3J6c2p1hYdyX2N1iZSNd2dviaCcjISFjJSYlI+MiYJ/hpOSgXBpcHuBfW9lanN4dnR0c3N1fISLjIeAfoSQk4uEgYCBh4uHe3J0enp2dHR1dHN0dXh6eXV0eH+CgHx7fYKHhYB+gIKDgX99fHt8fXx6eHd3eXp5dnZ3enx7e3p6fH18fYCEgn58gIOCgIB/fn19f4GAe3d3g4qKk6Otm4B4l7y2lXZ0jainiXJvenpsaHaHhGpcaH6MjYBxcICTmZCJi5KWlZOPj5KSjYiHiIiDdm9yeXhwamx0dnJsbHF1eX5/gIKHiIaGiYyKh4WGiYmHgXp2eHt6dHBvcXR1dnNwcHN2eXp4d3l+goKDgoGBgoWFg4GAfXx8fX18e3l3dnZ5enl4dnd5fHx7ent8e3x+gICAfn18gIODf3p6e35+f3x5eICJhYqds6+ReICrxbORgY+goZKDho+LclxhdoeDbF1mdnt2cnaGk5CCd32TpJ6OhouSlZGOjY2Lg3Ztc4OIfWtlbXR0bm1xdXNvb3R+iIuEenZ+hoqIhYaIh395e4OIg3lzdHd3dHR1dXNwcXR3dnR0dXd5eHl5ent8e3p7e31/fnx7fYB/fHp6e3x9fHl6e3t6eXp7enl4eXx/gH97eXp/gYF+fHt9fn18e3x8hYeHk6u6rZOEl7vErpeYpamfko+XnJN9Z2R2iYp2YmFwd3FrcYKRj39yeY6dmY2Lj5OTj42OkI+KgHRzgIuDcWZtd3ZtaW92dnJvcXh8gH96eHp/gYCAgIGBf3x7fHx9e3l3dnd3d3h4dXJyd3p3c3R4eXd1eH1/fHh4e35+fHp7fX5+fHt7fX18fHx9fHt6e3x+fXx6e3t8fX+Af317fH+BgH98fH5/f318fICEgoqcsK2XiJCrt6yZj5ahp52Nh4qMhXl3foV+bmdufYWAcGhxhZOOhIKGi46QkZGPi4WFi5OQhXp2eX+Ae3RvcHN0dHR2dHJyeICEg398foOJiIOBgYCAg4WDfXd2enx6d3V1dXZ4d3h5eXZ2eH1/fnx7fICDgn99foCBgH99fHx9fn17enl5ent6eHh5e3x7e3t7fH18fYCDgX58gIKBgICAf35+gIGAfHh4gomJkqKsm4B5lru2lXZ0jainiXJvenpsaHaHhGpcaH6MjYBxcICTmZCJi5KWlZOPj5KSjYiHiIiDdm9yeXhwamx0dnJsbHF1eX5/gIKHiIaGiYyKh4WGiYmHgXp2eHt6dHBvcXR1dnNwcHN2eXp4d3l+goKDgoGBgoWFg4GAfXx8fX18e3l3dnZ5enl4dnd5fHx7ent8e3x+gICAfn18gIODf3p6e35+f3x5eICJhYqds6+ReICrxbORgY+goZKDho+LclxhdoeDbF1mdnt2cnaGk5CCd32TpJ6OhouSlZGOjY2Lg3Ztc4OIfWtlbXR0bm1xdXNvb3R+iIuEenZ+hoqIhYaIh395e4OIg3lzdHd3dHR1dXNwcXR3dnR0dXd5eHl5ent8e3p7e31/fnx7fYB/fHp6e3x9fHl6e3t6eXp7enl4eXx/gH97eXp/gYF+fHt9fn18e3x8hYeHk6u6rZOEl7vErpeYpamfko+XnJN9Z2R2iYp2YmFwd3FrcYKRj39yeY6dmY2Lj5OTj42OkI+KgHRzgIuDcWZtd3ZtaW92dnJvcXh8gH96eHp/gYCAgIGBf3x7fHx9e3l3dnd3d3h4dXJyd3p3c3R4eXd1d3x+e3d3en19e3l7fX5+e3p6fX58e3t8fHt6ent9fXt5ent8fX5+fXx8fX6AgH59fX9/fnx8fICFhIucr6+fkpWotbCjnKClpp+Vk5aWj4B3eoSEdmhqdn13a2hyg4yGgIKIi4qLj5STjYiKkJOQiYKAgYF+eXd4dnJucHR3dG9ucnl9eXR1fYKAe3p9gYKAfX1/gH15eX5/e3Vzdnt9eXZ2d3h4d3Z3eHl4eHp7fXt4eHp9f398fH1/gH9+fX5/fXx9fn9+fHl6e319e3l4enx9fXx6fH+AgH+Af4B/gIGCgH59gIOHj5yknpONlaOmoJmWlZebmpWNioyNhn15gIN9cG55hIR3bHGAi4mAfoOLjIeGi5CNh4KDio+LgXl4gIeCdnB2fn52cXR7f3lydH2DgHl2e4KGgn58f4ODgHx9gIF/end6f395dXV6fnt1c3h9fXl2eX6Afnp6fYCAf319gIKBfnt9gYOAfHt/goB8eXx/f317fH1+fHp6fX9/fnx8fYCAf3x8f4CAfXt+gIB+fYKQm5iNhomVnZqTjYuOlJSOhH5/hIaDgH98d3J0foWBeHJ4goeFgYCChomJiouLiIWDhYiKhn96eoCCfnd0d3p7eXh4eXl4en6BgX57fYKGhIB/gIKDgoGBgIB+fX1/f3x4d3l8fnt5eHl6e3x9fn59fX1/gIGAf36Ag4OAf36AgoB/f4CAf319f4B/fXx8foB/fnx7fX+AgH9+fn9+f4CBgH9+fX+AgH18foCBhY+UkIeDiZSXkoyGgoeOjoV7dXZ5en6Af3dub3qFiYJ3c3mEi4mEgH6BiI6Oi4SAgIWLjYiAenl9gIJ/eXR0dnl9fnt2dHiAhYSAfH2AhIeGg4B/f4GEhYJ9ent/goJ/enl6foCAfXp5enx9fn9/fnx8f4KEgX5+gIODgYCAgICAf4CBgH58fX6AgH58e3x/gH98ent+gICAf319f4GDg4B+foCCgoB+fH2AgIKIjo2FgISPlZGJg4CDiouFe3Z1dnd5foB7cG13hIyIfnh6goyMh4J+fX+DiImFf3l6gImMhn13eYGIh4B3dHh8gIB+enZ2eoGGhX95eYCHiYV/e3uAhIWDf3p3e4CFhIB6d3qAhYR/enh7f4GBf3x5eX2BhYSAe3t/hIeFgX5+gIWGhYB+fX+Ag4OAfXp7f4CBgH16en6CgoB8enyAgoKAfn1+gICBgH99fX6Aho2OiIB/h5CRioJ9fYGIiIB4dXZ4eXt+f3pzcnuGi4d+eXuEi4uFgH6Ag4aHhYF+e36DhoWBfHh7gIOCfnd1eH6AgH15eXuAhIWDgH+Ag4eIhoJ/foCDhYN+eXl8gIKAfHl5fH+AgH58e3x9f4CAfnp6foOFgn98fYCEhYOBgH+AgISEgn97fICDhIF8enyAgYGAfn1/gYOCgH9+f4GCgoF/fn5/gICAfnx8foCHjImCfoGLkY6Ff3x/hIeCe3Z1eHt8fHx7d3V4f4WGgXt6f4eKhoB+f4KFhYSCgH9/gYSEgn98e36DhIB7enx+gICAfnx8foGEhIF+foCDhYaDgH9/goSDgH99fH+BgYB8e3yAgIB+fH5/f319gIGAfnx+g4SBfXx/g4SDgH+AgYODg4KBgH+AgYODgH59gIGCgoB+f3+BgoGAfn6AgYOAfn1+f4CBgYB9fX5/gYSGgX19hIuKh398foKGgn94eHt8fnyAfHx+fX6Bg4N+eHh8goN+e3h5gH99eXyAgYSFhYN/fX1+gIOBgIB/f4CDgYCDgX+Agn9+e3p7e316fn97e32AfX9/fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA=", file: "work2.wav" } }; function init() { for (var sound in sounds) { var embedContainer = document.createElement("div"); embedContainer.className = "embedContainer"; document.body.appendChild(embedContainer); embedContainer.innerHTML = soundElementString(sound, sounds[sound]); } var samples = document.getElementById("samples"); var tds = samples.getElementsByTagName("td"); for (var i = 0; i < tds.length; i++) { attachEventListener(tds[i], "mousedown", toggleSample, false); if (Math.floor(i / 4) % 2 > 0) { tds[i].className += " col"; } } var trs = samples.getElementsByTagName("tr"); for (var i = 0; i < trs.length; i++) { if (i % 2 > 0) { trs[i].className = "odd"; } } var play = document.getElementById("play"); attachEventListener(play, "click", togglePlay, false); var visualise = document.getElementById("visualise"); attachEventListener(visualise, "click", toggleVisualisation, false); } function togglePlay(event) { neverStarted = false; if (this.className == "on") { this.className = ""; stopClock(); } else { this.className = "on"; clock(); } this.blur(); if (typeof event != "undefined") { stopDefaultAction(event); } return false; } function toggleVisualisation() { var visualise = document.getElementById("visualise"); if (visualise.className == "on") { visualise.className = ""; var canvas = document.getElementById("visuals"); if (canvas != null) { canvas.parentNode.removeChild(canvas); } var mask = document.getElementById("mask"); if (mask != null) { tween(mask, {height: 0}, 600); } } else { if (typeof document.all == "undefined") { visualise.className = "on"; var mask = document.getElementById("mask"); if (mask == null) { mask = document.createElement("div"); mask.id = "mask"; mask.style.height = 0; mask.innerHTML = "
X
"; document.body.appendChild(mask); attachEventListener(mask, "click", toggleVisualisation, false); } var maskHeight = window.innerHeight; if (typeof maskHeight == "undefined") { maskHeight = document.body.clientHeight; } tween(mask, {height: maskHeight}, 600); setTimeout( function() { var canvas = document.createElement("canvas"); canvas.id = "visuals"; canvas.setAttribute("width", CANVAS_WIDTH); canvas.setAttribute("height", CANVAS_HEIGHT); document.body.appendChild(canvas); tick(); }, 600 ); } else { alert("Sorry, your browser doesn't support wicked cool graphics. Please download one that supports wicked coolness."); } } } function clock() { var monitor = document.getElementById("monitor"); var ths = monitor.getElementsByTagName("th"); for (var i = 0; i < ths.length; i++) { if (i == clockCount) { ths[i].className += " on"; } else { ths[i].className = ths[i].className.replace(/(^| )on( |$)/g, " "); } } var samples = document.getElementById("samples"); var trs = samples.getElementsByTagName("tr"); for (var i = 0; i < trs.length; i++) { if (trs[i].getElementsByTagName("td")[clockCount].className.match(/(^| )on( |$)/)) { if (canPlaySound) { playSound(trs[i].id); } } } clockCount++; if (clockCount > 15) { clockCount = 0; } clockTimer = setTimeout(clock, 60 * 1000 / BPM / 4); } function stopClock() { if (typeof clockTimer != "undefined" && clockTimer != null) { clearTimeout(clockTimer); } } function toggleSample(event) { var turnOn = false; if (this.className.match(/(^| )on( |$)/)) { this.className = this.className.replace(/(^| )on( |$)/g, " "); } else { turnOn = true; this.className += " on"; } if (event.type == "mousedown") { var self = this; function mousemoveToggle(event) { var target = event.target || event.srcElement; if (turnOn) { if (!target.className.match(/(^| )on( |$)/)) { target.className += " on"; } } else { target.className = target.className.replace(/(^| )on( |$)/g, " "); } } attachEventListener(document, "mousemove", mousemoveToggle, false); attachEventListener( document, "mouseup", function() { detachEventListener(document, "mousemove", mousemoveToggle, false); }, false ); } if (neverStarted) { togglePlay.apply(document.getElementById("play")); } stopDefaultAction(event); return false; } function playSound (soundFile) { var sound = document["embed" + soundFile]; if (sound == null) { var embedContainer = document.createElement("div"); embedContainer.className = "embedContainer"; document.body.appendChild(embedContainer); embedContainer.innerHTML = soundElementString(soundFile, sounds[soundFile]); sound = document["embed" + soundFile]; } try { sound.Stop(); sound.Rewind(); sound.Play(); } catch (error) { canPlaySound = false; alert("Looks like your browser can't play sound. If you really want to hear it, try downloading Quicktime."); } var radius = 0; var circleColor = "#FF0000"; switch(soundFile) { case "kick1": radius = 120; circleColor = "#FF0000"; break; case "snare1": radius = 105; circleColor = "#FFCC00"; break; case "work1": radius = 90; circleColor = "#99FF00"; break; case "clap1": radius = 75; circleColor = "#00FFCC"; break; case "bongo1": radius = 60; circleColor = "#00AAFF"; break; case "bongo2": radius = 45; circleColor = "#0000FF"; break; case "hatOpen1": radius = 30; circleColor = "#B65DFA"; break; case "hatClose1": radius = 15; circleColor = "#F85DFA"; break; } canvasDOM.push( { x: CANVAS_WIDTH / 2, y: CANVAS_HEIGHT / 2, size: radius, color: circleColor, creationTime: new Date().getTime() } ); for (var i = 0; i < 15; i++) { var angle = Math.random() * Math.PI * 2; canvasDOM.push( { x: CANVAS_WIDTH / 2 + Math.sin(angle) * (Math.random() * 10 + radius + 10), y: CANVAS_HEIGHT / 2 + Math.cos(angle) * (Math.random() * 10 + radius + 10), size: Math.random() * 5 + 1, color: circleColor, creationTime: new Date().getTime() } ); } } function soundElementString(soundName, soundFile) { if (typeof document.all != "undefined") { return ''; } else { return ''; } } function tick() { var FPS = 25; var FADE_TIME = 800; var canvas = document.getElementById("visuals"); var currTime = new Date().getTime(); if (typeof canvas.getContext != "undefined") { var context = canvas.getContext("2d"); context.clearRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT); for (var i = 0; i < canvasDOM.length; i++) { var scaling = (FADE_TIME - (currTime - canvasDOM[i].creationTime)) / FADE_TIME; if (scaling > 0) { context.beginPath(); context.moveTo(canvasDOM[i].x, canvasDOM[i].y); context.arc(canvasDOM[i].x, canvasDOM[i].y, canvasDOM[i].size * scaling, 0, Math.PI * 2, true); context.fillStyle = canvasDOM[i].color; context.fill(); } else { canvasDOM.splice(i, 1); i--; } } tickTimer = setTimeout(tick, 1000 / FPS); } else { alert("Sorry, your browser doesn't support wicked cool graphics. Please download one that supports wicked coolness."); toggleVisualisation(); } } function stopTick() { if (typeof tickTimer != "undefined" && tickTimer != null) { clearTimeout(tickTimer); } } function addLoadListener(fn) { if (typeof window.addEventListener != 'undefined') { window.addEventListener('load', fn, false); } else if (typeof document.addEventListener != 'undefined') { document.addEventListener('load', fn, false); } else if (typeof window.attachEvent != 'undefined') { window.attachEvent('onload', fn); } else { return false; } } function attachEventListener(target, eventType, functionRef, capture) { if (typeof target.addEventListener != "undefined") { target.addEventListener(eventType, functionRef, capture); } else if (typeof target.attachEvent != "undefined") { var functionString = eventType + functionRef; target["e" + functionString] = functionRef; target[functionString] = function(event) { if(typeof event == "undefined") { event = window.event }; target["e" + functionString](event); }; target.attachEvent("on" + eventType, target[functionString]); } } function detachEventListener(target, eventType, functionRef, capture) { if (typeof target.removeEventListener != "undefined") { target.removeEventListener(eventType, functionRef, capture) } else if (typeof target.detachEvent != "undefined") { var functionString = eventType + functionRef; target.detachEvent("on" + eventType, target[functionString]); target["e" + functionString] = null; target[functionString] = null; } else { target["on" + eventType] = null; } return true; } function stopDefaultAction(event) { event.returnValue = false; if (typeof event.preventDefault != "undefined") { event.preventDefault(); } } function tween(target, parameters, duration, startTime) { var FPS = 25; if (typeof duration == "undefined") { duration: 1000; } if (typeof startTime == "undefined") { startTime = new Date().getTime(); } var currTime = new Date().getTime(); var remainingSteps = (startTime + duration - currTime) / (1000 / FPS); for (var parameter in parameters) { var curr = parseInt(retrieveComputedStyle(target, parameter)); if (isNaN(curr)) { curr = 0; } switch (parameter) { case "color": curr = retrieveComputedStyle(target, parameter); var currRGB = getRGB(curr); var targetRGB = getRGB(parameters[parameter]); target.style[parameter] = "rgb(" + Math.round(currRGB.red + ((targetRGB.red - currRGB.red) * 1 / remainingSteps)) + "," + Math.round(currRGB.green + ((targetRGB.green - currRGB.green) * 1 / remainingSteps)) + "," + Math.round(currRGB.blue + ((targetRGB.blue - currRGB.blue) * 1 / remainingSteps)) + ")"; break; case "fontSize": curr = retrieveComputedStyle(target, parameter); if (curr.match(/em$/)) { curr = parseFloat(curr) * getEMSize(target); } else { curr = parseFloat(curr); } if (typeof parameters[parameter] == "string" && parameters[parameter].match(/em$/)) { parameters[parameter] = parseFloat(parameters[parameter]) * getEMSize(target); } default: target.style[parameter] = curr + ((parseFloat(parameters[parameter]) - curr) * 1 / remainingSteps) + "px"; } } if (remainingSteps > 0) { setTimeout(function() { tween(target, parameters, duration, startTime); }, 1000 / FPS ); } else { for (var parameter in parameters) { target.style[parameter] = parameters[parameter] } } } function retrieveComputedStyle(element, styleProperty) { var computedStyle = null; if (typeof element.currentStyle != "undefined") { computedStyle = element.currentStyle; } else { computedStyle = document.defaultView.getComputedStyle(element, null); } return computedStyle[styleProperty]; }