/**
* potion - v1.1.2
* Copyright (c) 2015, Jan Sedivy
*
* Potion is licensed under the MIT License.
*/
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Potion=e():t.Potion=e()}(this,function(){return function(t){function e(n){if(i[n])return i[n].exports;var o=i[n]={exports:{},id:n,loaded:!1};return t[n].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){"use strict";var n=i(1);t.exports={init:function(t,e){var i=new n(t,e);return i.controller}}},function(t,e,i){"use strict";i(2)();var n=i(3),o=i(25),r=i(26),s=i(27),a=i(29),h=function(t,e){this.container=t,this.controller=new n(t),this.app=e,this.controller.main=this.app,this.app.app=this.controller,this.tickFunc=function(t){return function(){t.tick()}}(this),this.preloaderTickFunc=function(t){return function(){t._preloaderTick()}}(this),this.strayTime=0,this._time=0,setTimeout(function(){this.configureApp()}.bind(this),0)};h.prototype.configureApp=function(){this.controller.resize(this.controller.width,this.controller.height),this.app.configure&&this.app.configure(),this.controller.video.init(),this.controller.config.addInputEvents&&(this.controller.input=new s(this.controller)),this._setDefaultStates(),this._time=o.now(),this._preloaderVideo=this.controller.video.createLayer({allowHiDPI:!0,getCanvasContext:!0}),this._preloader=new a(this.controller),this.controller.assets.start(function(){window.cancelAnimationFrame(this.preloaderId),this._preloaderVideo.destroy(),this.start()}.bind(this)),this.controller.assets.isLoading&&this.controller.config.showPreloader&&(this.preloaderId=window.requestAnimationFrame(this.preloaderTickFunc))},h.prototype.addEvents=function(){var t=this;window.addEventListener("blur",function(){t.controller.input.resetKeys(),t.app.blur&&t.app.blur()}),window.addEventListener("focus",function(){t.controller.input.resetKeys(),t.app.focus&&t.app.focus()})},h.prototype.start=function(){this.controller.config.addInputEvents&&this.addEvents(),window.requestAnimationFrame(this.tickFunc)},h.prototype.tick=function(){window.requestAnimationFrame(this.tickFunc),this.controller.debug.begin();var t=o.now(),e=(t-this._time)/1e3;this._time=t,this.controller.debug.perf("update"),this.update(e),this.controller.debug.stopPerf("update"),this.controller.states.exitUpdate(e),this.controller.debug.perf("render"),this.render(),this.controller.debug.stopPerf("render"),this.controller.debug.render(),this.controller.debug.end()},h.prototype.update=function(t){if(t>this.controller.config.maxStepTime&&(t=this.controller.config.maxStepTime),this.controller.config.fixedStep)for(this.strayTime=this.strayTime+t;this.strayTime>=this.controller.config.stepTime;)this.strayTime=this.strayTime-this.controller.config.stepTime,this.controller.states.update(this.controller.config.stepTime);else this.controller.states.update(t)},h.prototype.render=function(){this.controller.video.beginFrame(),this.controller.video.clear(),this.controller.states.render(),this.controller.video.endFrame()},h.prototype._preloaderTick=function(){this.preloaderId=window.requestAnimationFrame(this.preloaderTickFunc);var t=o.now(),e=(t-this._time)/1e3;this._time=t,this.app.preloading?this.app.preloading(e,this._preloaderVideo):this._preloader.render(e,this._preloaderVideo)},h.prototype._setDefaultStates=function(){var t=new r;t.add("main",this.app),t.add("debug",this.controller.debug),t.protect("main"),t.protect("debug"),t.hide("debug"),this.controller.states=t},t.exports=h},function(t,e){"use strict";t.exports=function(){for(var t=0,e=["ms","moz","webkit","o"],i=0;i<e.length&&!window.requestAnimationFrame;++i)window.requestAnimationFrame=window[e[i]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[i]+"CancelAnimationFrame"]||window[e[i]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e){var i=(new Date).getTime(),n=Math.max(0,16-(i-t)),o=window.setTimeout(function(){e(i+n)},n);return t=i+n,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(t){clearTimeout(t)})}},function(t,e,i){"use strict";var n=i(4),o=i(6),r=i(18),s=i(21),a=function(t){this.container=t,t.style.position="relative";var e=document.createElement("canvas");e.style.display="block",t.appendChild(e),this.canvas=e,this.width=300,this.height=300,this._containerWidth=this.width,this._containerHeight=this.height,this.audio=new s,this.assets=new o(this),this.states=null,this.input=null,this.config={allowHiDPI:!0,getCanvasContext:!0,addInputEvents:!0,showPreloader:!0,fixedStep:!1,stepTime:1/60,maxStepTime:1/60},this.video=new n(this,e,this.config),this.video._isRoot=!0,this.debug=new r(this),this.scaleX=1,this.scaleY=1};a.prototype.resize=function(t,e){this.width=t,this.height=e,this.scale(t,e),this.video&&this.video._resize(t,e),this.states&&this.states.resize(),this.scaleX=this._containerWidth/t,this.scaleY=this._containerHeight/e},a.prototype.scale=function(t,e){this.scaleX=t/this.width,this.scaleY=e/this.height,this._containerWidth=t,this._containerHeight=e,this.container.style.width=t+"px",this.container.style.height=e+"px"},t.exports=a},function(t,e,i){"use strict";var n=i(5)(),o=function(t,e,i){this.app=t,this.config=i,this.canvas=e,this.width=t.width,this.height=t.height,this._parent=null,this._isRoot=!1,this._children=[]};o.prototype.init=function(){this.config.getCanvasContext&&(this.ctx=this.canvas.getContext("2d")),this._applySizeToCanvas()},o.prototype.include=function(t){for(var e in t)this[e]=t[e]},o.prototype.beginFrame=function(){},o.prototype.endFrame=function(){},o.prototype.destroy=function(){if(!this._isRoot){var t=this._parent._children.indexOf(this);-1!==t&&this._parent._children.splice(t,1)}this.canvas.parentElement.removeChild(this.canvas)},o.prototype.scaleCanvas=function(t){this.canvas.width*=t,this.canvas.height*=t,this.ctx&&this.ctx.scale(t,t)},o.prototype._resize=function(t,e){this.width=t,this.height=e,this.canvas.style.width="100%",this.canvas.style.height="100%",this._applySizeToCanvas();for(var i=0,n=this._children.length;n>i;i++){var o=this._children[i];o._resize(t,e)}},o.prototype._applySizeToCanvas=function(){this.canvas.width=this.width,this.canvas.height=this.height,this.config.allowHiDPI&&n&&this.scaleCanvas(2)},o.prototype.clear=function(){this.ctx&&this.ctx.clearRect(0,0,this.width,this.height)},o.prototype.createLayer=function(t){t=t||{};var e=this.app.container,i=document.createElement("canvas");i.width=this.width,i.height=this.height,i.style.position="absolute",i.style.top="0px",i.style.left="0px",e.appendChild(i);var n=new o(this.app,i,t);return n._parent=this,n._isRoot=!1,n.init(),n._resize(this.width,this.height),this._children.push(n),n},t.exports=o},function(t,e){"use strict";var i=function(){var t="(-webkit-min-device-pixel-ratio: 1.5),  (min--moz-device-pixel-ratio: 1.5),  (-o-min-device-pixel-ratio: 3/2),  (min-resolution: 1.5dppx)";return window.devicePixelRatio>1?!0:!(!window.matchMedia||!window.matchMedia(t).matches)};t.exports=i},function(t,e,i){"use strict";var n=i(7),o=i(11),r=i(12),s=i(13),a=i(16),h=function(t){this.isLoading=!1,this.itemsCount=0,this.progress=0,this._thingsToLoad=0,this._data={},this._preloading=!0,this._callback=null,this._toLoad=[],this._loaders={},this.addLoader("json",r);var e=i(17)(t.audio);this.addLoader("mp3",e),this.addLoader("music",e),this.addLoader("sound",e),this.addLoader("image",s),this.addLoader("texture",s),this.addLoader("sprite",s)};h.prototype.addLoader=function(t,e){this._loaders[t]=e},h.prototype.start=function(t){this._callback=t,this._toLoad.forEach(function(t){this._loadAssetFile(t,function(e,i){this.set(e,i),t.callback&&t.callback(i),this._finishedQueuedFile()}.bind(this))}.bind(this)),this._thingsToLoad=this.itemsCount,0===this._thingsToLoad&&this._done()},h.prototype.get=function(t){return this._data[o.normalize(t)]},h.prototype.set=function(t,e){this._data[o.normalize(t)]=e},h.prototype.remove=function(t){this.set(t,null)},h.prototype.load=function(t,e,i){var n={type:t,url:null!=e?o.normalize(e):null,callback:i,progress:0};this._preloading?this._queueFile(n):this._loadAssetFile(n,function(t,e){this.set(t,e),i&&i(e)}.bind(this))},h.prototype._queueFile=function(t){this.isLoading=!0,this.itemsCount+=1,this._toLoad.push(t)},h.prototype._finishedQueuedFile=function(){this._thingsToLoad-=1,0===this._thingsToLoad&&this._done()},h.prototype._updateProgress=function(){for(var t=0,e=0;e<this._toLoad.length;e++)t+=this._toLoad[e].progress;this.progress=t/this._toLoad.length},h.prototype._error=function(t){console.warn('Error loading "'+t+'" asset')},h.prototype._handleCustomLoading=function(t,e){t(function(t,i){e.done(i,t)})},h.prototype._loadAssetFile=function(t,e){var i=t.type,o=t.url,r={done:function(i,n){n=null==n?t.url:n,t.progress=1,e(n,i),this._updateProgress()}.bind(this),error:function(){this._error.bind(this)}.bind(this),progress:function(e){t.progress=e,this._updateProgress()}.bind(this)};if(n.isFunction(i))this._handleCustomLoading(i,r);else{i=i.toLowerCase();var s=this._loaders[i]||a;s(o,r)}},h.prototype._done=function(){this.isLoading=!1,this._preloading=!1,setTimeout(this._callback,0)},t.exports=h},function(t,e,i){(function(t,n){"use strict";function o(t,i){var n={seen:[],stylize:s};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),m(i)?n.showHidden=i:i&&e._extend(n,i),_(n.showHidden)&&(n.showHidden=!1),_(n.depth)&&(n.depth=2),_(n.colors)&&(n.colors=!1),_(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=r),h(n,t,n.depth)}function r(t,e){var i=o.styles[e];return i?"["+o.colors[i][0]+"m"+t+"["+o.colors[i][1]+"m":t}function s(t,e){return t}function a(t){var e={};return t.forEach(function(t,i){e[t]=!0}),e}function h(t,i,n){if(t.customInspect&&i&&k(i.inspect)&&i.inspect!==e.inspect&&(!i.constructor||i.constructor.prototype!==i)){var o=i.inspect(n,t);return x(o)||(o=h(t,o,n)),o}var r=u(t,i);if(r)return r;var s=Object.keys(i),m=a(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(i)),D(i)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return p(i);if(0===s.length){if(k(i)){var g=i.name?": "+i.name:"";return t.stylize("[Function"+g+"]","special")}if(b(i))return t.stylize(RegExp.prototype.toString.call(i),"regexp");if(T(i))return t.stylize(Date.prototype.toString.call(i),"date");if(D(i))return p(i)}var v="",y=!1,w=["{","}"];if(f(i)&&(y=!0,w=["[","]"]),k(i)){var _=i.name?": "+i.name:"";v=" [Function"+_+"]"}if(b(i)&&(v=" "+RegExp.prototype.toString.call(i)),T(i)&&(v=" "+Date.prototype.toUTCString.call(i)),D(i)&&(v=" "+p(i)),0===s.length&&(!y||0==i.length))return w[0]+v+w[1];if(0>n)return b(i)?t.stylize(RegExp.prototype.toString.call(i),"regexp"):t.stylize("[Object]","special");t.seen.push(i);var S;return S=y?c(t,i,n,m,s):s.map(function(e){return l(t,i,n,m,e,y)}),t.seen.pop(),d(S,v,w)}function u(t,e){if(_(e))return t.stylize("undefined","undefined");if(x(e)){var i="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(i,"string")}return y(e)?t.stylize(""+e,"number"):m(e)?t.stylize(""+e,"boolean"):g(e)?t.stylize("null","null"):void 0}function p(t){return"["+Error.prototype.toString.call(t)+"]"}function c(t,e,i,n,o){for(var r=[],s=0,a=e.length;a>s;++s)z(e,String(s))?r.push(l(t,e,i,n,String(s),!0)):r.push("");return o.forEach(function(o){o.match(/^\d+$/)||r.push(l(t,e,i,n,o,!0))}),r}function l(t,e,i,n,o,r){var s,a,u;if(u=Object.getOwnPropertyDescriptor(e,o)||{value:e[o]},u.get?a=u.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):u.set&&(a=t.stylize("[Setter]","special")),z(n,o)||(s="["+o+"]"),a||(t.seen.indexOf(u.value)<0?(a=g(i)?h(t,u.value,null):h(t,u.value,i-1),a.indexOf("\n")>-1&&(a=r?a.split("\n").map(function(t){return"  "+t}).join("\n").substr(2):"\n"+a.split("\n").map(function(t){return"   "+t}).join("\n"))):a=t.stylize("[Circular]","special")),_(s)){if(r&&o.match(/^\d+$/))return a;s=JSON.stringify(""+o),s.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function d(t,e,i){var n=0,o=t.reduce(function(t,e){return n++,e.indexOf("\n")>=0&&n++,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0);return o>60?i[0]+(""===e?"":e+"\n ")+" "+t.join(",\n  ")+" "+i[1]:i[0]+e+" "+t.join(", ")+" "+i[1]}function f(t){return Array.isArray(t)}function m(t){return"boolean"==typeof t}function g(t){return null===t}function v(t){return null==t}function y(t){return"number"==typeof t}function x(t){return"string"==typeof t}function w(t){return"symbol"==typeof t}function _(t){return void 0===t}function b(t){return S(t)&&"[object RegExp]"===O(t)}function S(t){return"object"==typeof t&&null!==t}function T(t){return S(t)&&"[object Date]"===O(t)}function D(t){return S(t)&&("[object Error]"===O(t)||t instanceof Error)}function k(t){return"function"==typeof t}function L(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||"undefined"==typeof t}function O(t){return Object.prototype.toString.call(t)}function E(t){return 10>t?"0"+t.toString(10):t.toString(10)}function A(){var t=new Date,e=[E(t.getHours()),E(t.getMinutes()),E(t.getSeconds())].join(":");return[t.getDate(),M[t.getMonth()],e].join(" ")}function z(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var F=/%[sdj%]/g;e.format=function(t){if(!x(t)){for(var e=[],i=0;i<arguments.length;i++)e.push(o(arguments[i]));return e.join(" ")}for(var i=1,n=arguments,r=n.length,s=String(t).replace(F,function(t){if("%%"===t)return"%";if(i>=r)return t;switch(t){case"%s":return String(n[i++]);case"%d":return Number(n[i++]);case"%j":try{return JSON.stringify(n[i++])}catch(e){return"[Circular]"}default:return t}}),a=n[i];r>i;a=n[++i])s+=g(a)||!S(a)?" "+a:" "+o(a);return s},e.deprecate=function(i,o){function r(){if(!s){if(n.throwDeprecation)throw new Error(o);n.traceDeprecation?console.trace(o):console.error(o),s=!0}return i.apply(this,arguments)}if(_(t.process))return function(){return e.deprecate(i,o).apply(this,arguments)};if(n.noDeprecation===!0)return i;var s=!1;return r};var C,j={};e.debuglog=function(t){if(_(C)&&(C=n.env.NODE_DEBUG||""),t=t.toUpperCase(),!j[t])if(new RegExp("\\b"+t+"\\b","i").test(C)){var i=n.pid;j[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,i,n)}}else j[t]=function(){};return j[t]},e.inspect=o,o.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},o.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},e.isArray=f,e.isBoolean=m,e.isNull=g,e.isNullOrUndefined=v,e.isNumber=y,e.isString=x,e.isSymbol=w,e.isUndefined=_,e.isRegExp=b,e.isObject=S,e.isDate=T,e.isError=D,e.isFunction=k,e.isPrimitive=L,e.isBuffer=i(9);var M=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];e.log=function(){console.log("%s - %s",A(),e.format.apply(e,arguments))},e.inherits=i(10),e._extend=function(t,e){if(!e||!S(e))return t;for(var i=Object.keys(e),n=i.length;n--;)t[i[n]]=e[i[n]];return t}}).call(e,function(){return this}(),i(8))},function(t,e){"use strict";function i(){u=!1,s.length?h=s.concat(h):p=-1,h.length&&n()}function n(){if(!u){var t=setTimeout(i);u=!0;for(var e=h.length;e;){for(s=h,h=[];++p<e;)s&&s[p].run();p=-1,e=h.length}s=null,u=!1,clearTimeout(t)}}function o(t,e){this.fun=t,this.array=e}function r(){}var s,a=t.exports={},h=[],u=!1,p=-1;a.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)e[i-1]=arguments[i];h.push(new o(t,e)),1!==h.length||u||setTimeout(n,0)},o.prototype.run=function(){this.fun.apply(null,this.array)},a.title="browser",a.browser=!0,a.env={},a.argv=[],a.version="",a.versions={},a.on=r,a.addListener=r,a.once=r,a.off=r,a.removeListener=r,a.removeAllListeners=r,a.emit=r,a.binding=function(t){throw new Error("process.binding is not supported")},a.cwd=function(){return"/"},a.chdir=function(t){throw new Error("process.chdir is not supported")},a.umask=function(){return 0}},function(t,e){"use strict";t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},function(t,e){"use strict";"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var i=function(){};i.prototype=e.prototype,t.prototype=new i,t.prototype.constructor=t}},function(t,e,i){(function(t){"use strict";function i(t,e){for(var i=0,n=t.length-1;n>=0;n--){var o=t[n];"."===o?t.splice(n,1):".."===o?(t.splice(n,1),i++):i&&(t.splice(n,1),i--)}if(e)for(;i--;i)t.unshift("..");return t}function n(t,e){if(t.filter)return t.filter(e);for(var i=[],n=0;n<t.length;n++)e(t[n],n,t)&&i.push(t[n]);return i}var o=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,r=function(t){return o.exec(t).slice(1)};e.resolve=function(){for(var e="",o=!1,r=arguments.length-1;r>=-1&&!o;r--){var s=r>=0?arguments[r]:t.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(e=s+"/"+e,o="/"===s.charAt(0))}return e=i(n(e.split("/"),function(t){return!!t}),!o).join("/"),(o?"/":"")+e||"."},e.normalize=function(t){var o=e.isAbsolute(t),r="/"===s(t,-1);return t=i(n(t.split("/"),function(t){return!!t}),!o).join("/"),t||o||(t="."),t&&r&&(t+="/"),(o?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(n(t,function(t,e){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t}).join("/"))},e.relative=function(t,i){function n(t){for(var e=0;e<t.length&&""===t[e];e++);for(var i=t.length-1;i>=0&&""===t[i];i--);return e>i?[]:t.slice(e,i-e+1)}t=e.resolve(t).substr(1),i=e.resolve(i).substr(1);for(var o=n(t.split("/")),r=n(i.split("/")),s=Math.min(o.length,r.length),a=s,h=0;s>h;h++)if(o[h]!==r[h]){a=h;break}for(var u=[],h=a;h<o.length;h++)u.push("..");return u=u.concat(r.slice(a)),u.join("/")},e.sep="/",e.delimiter=":",e.dirname=function(t){var e=r(t),i=e[0],n=e[1];return i||n?(n&&(n=n.substr(0,n.length-1)),i+n):"."},e.basename=function(t,e){var i=r(t)[2];return e&&i.substr(-1*e.length)===e&&(i=i.substr(0,i.length-e.length)),i},e.extname=function(t){return r(t)[3]};var s="b"==="ab".substr(-1)?function(t,e,i){return t.substr(e,i)}:function(t,e,i){return 0>e&&(e=t.length+e),t.substr(e,i)}}).call(e,i(8))},function(t,e){"use strict";t.exports=function(t,e){var i=new XMLHttpRequest;i.open("GET",t,!0),i.responseType="text",i.addEventListener("progress",function(t){var i=t.loaded/t.total;e.progress(i)}),i.onload=function(){if(200!==i.status)return e.error(t);var n=JSON.parse(this.response);e.done(n)},i.send()}},function(t,e,i){"use strict";var n=i(14),o=i(11);t.exports=function(t,e){var i=window.URL||window.webkitURL,r=o.extname(t);if(i&&"createObjectURL"in i&&"Uint8Array"in window&&"Blob"in window){var s=new XMLHttpRequest;return s.open("GET",t,!0),s.responseType="arraybuffer",s.addEventListener("progress",function(t){var i=t.loaded/t.total;e.progress(i)}),s.onload=function(){if(200!==s.status)return e.error(t);var o,a=new Uint8Array(this.response);o=".svg"===r||".svgz"===r?"image/svg+xml":n(a).mime;var h=new Blob([a],{type:o}),u=new Image;u.src=i.createObjectURL(h),e.done(u)},void s.send()}var a=new Image;a.onload=function(){e.done(a)},a.onerror=function(){e.error(t)},a.src=t}},function(t,e,i){"use strict";var n=i(15);t.exports=function(t){var e=["jpg","png","gif","webp","tif","bmp","jxr","psd"],i=n(t);return-1!==e.indexOf(i&&i.ext)?i:null}},function(t,e){"use strict";t.exports=function(t){return t&&t.length>1?255===t[0]&&216===t[1]&&255===t[2]?{ext:"jpg",mime:"image/jpeg"}:137===t[0]&&80===t[1]&&78===t[2]&&71===t[3]?{ext:"png",mime:"image/png"}:71===t[0]&&73===t[1]&&70===t[2]?{ext:"gif",mime:"image/gif"}:87===t[8]&&69===t[9]&&66===t[10]&&80===t[11]?{ext:"webp",mime:"image/webp"}:(73===t[0]&&73===t[1]&&42===t[2]&&0===t[3]||77===t[0]&&77===t[1]&&0===t[2]&&42===t[3])&&67===t[8]&&82===t[9]?{ext:"cr2",mime:"image/x-canon-cr2"}:73===t[0]&&73===t[1]&&42===t[2]&&0===t[3]||77===t[0]&&77===t[1]&&0===t[2]&&42===t[3]?{ext:"tif",mime:"image/tiff"}:66===t[0]&&77===t[1]?{ext:"bmp",mime:"image/bmp"}:73===t[0]&&73===t[1]&&188===t[2]?{ext:"jxr",mime:"image/vnd.ms-photo"}:56===t[0]&&66===t[1]&&80===t[2]&&83===t[3]?{ext:"psd",mime:"image/vnd.adobe.photoshop"}:80===t[0]&&75===t[1]&&3===t[2]&&4===t[3]&&109===t[30]&&105===t[31]&&109===t[32]&&101===t[33]&&116===t[34]&&121===t[35]&&112===t[36]&&101===t[37]&&97===t[38]&&112===t[39]&&112===t[40]&&108===t[41]&&105===t[42]&&99===t[43]&&97===t[44]&&116===t[45]&&105===t[46]&&111===t[47]&&110===t[48]&&47===t[49]&&101===t[50]&&112===t[51]&&117===t[52]&&98===t[53]&&43===t[54]&&122===t[55]&&105===t[56]&&112===t[57]?{ext:"epub",mime:"application/epub+zip"}:80===t[0]&&75===t[1]&&3===t[2]&&4===t[3]&&77===t[30]&&69===t[31]&&84===t[32]&&65===t[33]&&45===t[34]&&73===t[35]&&78===t[36]&&70===t[37]&&47===t[38]&&109===t[39]&&111===t[40]&&122===t[41]&&105===t[42]&&108===t[43]&&108===t[44]&&97===t[45]&&46===t[46]&&114===t[47]&&115===t[48]&&97===t[49]?{ext:"xpi",mime:"application/x-xpinstall"}:80!==t[0]||75!==t[1]||3!==t[2]&&5!==t[2]&&7!==t[2]||4!==t[3]&&6!==t[3]&&8!==t[3]?117===t[257]&&115===t[258]&&116===t[259]&&97===t[260]&&114===t[261]?{ext:"tar",mime:"application/x-tar"}:82!==t[0]||97!==t[1]||114!==t[2]||33!==t[3]||26!==t[4]||7!==t[5]||0!==t[6]&&1!==t[6]?31===t[0]&&139===t[1]&&8===t[2]?{ext:"gz",mime:"application/gzip"}:66===t[0]&&90===t[1]&&104===t[2]?{ext:"bz2",mime:"application/x-bzip2"}:55===t[0]&&122===t[1]&&188===t[2]&&175===t[3]&&39===t[4]&&28===t[5]?{ext:"7z",mime:"application/x-7z-compressed"}:120===t[0]&&1===t[1]?{ext:"dmg",mime:"application/x-apple-diskimage"}:0===t[0]&&0===t[1]&&0===t[2]&&(24===t[3]||32===t[3])&&102===t[4]&&116===t[5]&&121===t[6]&&112===t[7]||51===t[0]&&103===t[1]&&112===t[2]&&53===t[3]||0===t[0]&&0===t[1]&&0===t[2]&&28===t[3]&&102===t[4]&&116===t[5]&&121===t[6]&&112===t[7]&&109===t[8]&&112===t[9]&&52===t[10]&&50===t[11]&&109===t[16]&&112===t[17]&&52===t[18]&&49===t[19]&&109===t[20]&&112===t[21]&&52===t[22]&&50===t[23]&&105===t[24]&&115===t[25]&&111===t[26]&&109===t[27]||0===t[0]&&0===t[1]&&0===t[2]&&28===t[3]&&102===t[4]&&116===t[5]&&121===t[6]&&112===t[7]&&105===t[8]&&115===t[9]&&111===t[10]&&109===t[11]||0===t[0]&&0===t[1]&&0===t[2]&&28===t[3]&&102===t[4]&&116===t[5]&&121===t[6]&&112===t[7]&&109===t[8]&&112===t[9]&&52===t[10]&&50===t[11]&&0===t[12]&&0===t[13]&&0===t[14]&&0===t[15]?{ext:"mp4",mime:"video/mp4"}:0===t[0]&&0===t[1]&&0===t[2]&&28===t[3]&&102===t[4]&&116===t[5]&&121===t[6]&&112===t[7]&&77===t[8]&&52===t[9]&&86===t[10]?{ext:"m4v",mime:"video/x-m4v"}:77===t[0]&&84===t[1]&&104===t[2]&&100===t[3]?{ext:"mid",mime:"audio/midi"}:109===t[31]&&97===t[32]&&116===t[33]&&114===t[34]&&111===t[35]&&115===t[36]&&107===t[37]&&97===t[38]?{ext:"mkv",mime:"video/x-matroska"}:26===t[0]&&69===t[1]&&223===t[2]&&163===t[3]?{ext:"webm",mime:"video/webm"}:0===t[0]&&0===t[1]&&0===t[2]&&20===t[3]&&102===t[4]&&116===t[5]&&121===t[6]&&112===t[7]?{ext:"mov",mime:"video/quicktime"}:82===t[0]&&73===t[1]&&70===t[2]&&70===t[3]&&65===t[8]&&86===t[9]&&73===t[10]?{ext:"avi",mime:"video/x-msvideo"}:48===t[0]&&38===t[1]&&178===t[2]&&117===t[3]&&142===t[4]&&102===t[5]&&207===t[6]&&17===t[7]&&166===t[8]&&217===t[9]?{ext:"wmv",mime:"video/x-ms-wmv"}:0===t[0]&&0===t[1]&&1===t[2]&&"b"===t[3].toString(16)[0]?{ext:"mpg",mime:"video/mpeg"}:73===t[0]&&68===t[1]&&51===t[2]||255===t[0]&&251===t[1]?{ext:"mp3",mime:"audio/mpeg"}:102===t[4]&&116===t[5]&&121===t[6]&&112===t[7]&&77===t[8]&&52===t[9]&&65===t[10]||77===t[0]&&52===t[1]&&65===t[2]&&32===t[3]?{ext:"m4a",mime:"audio/m4a"}:79===t[28]&&112===t[29]&&117===t[30]&&115===t[31]&&72===t[32]&&101===t[33]&&97===t[34]&&100===t[35]?{ext:"opus",mime:"audio/opus"}:79===t[0]&&103===t[1]&&103===t[2]&&83===t[3]?{ext:"ogg",mime:"audio/ogg"}:102===t[0]&&76===t[1]&&97===t[2]&&67===t[3]?{ext:"flac",mime:"audio/x-flac"}:82===t[0]&&73===t[1]&&70===t[2]&&70===t[3]&&87===t[8]&&65===t[9]&&86===t[10]&&69===t[11]?{ext:"wav",mime:"audio/x-wav"}:35===t[0]&&33===t[1]&&65===t[2]&&77===t[3]&&82===t[4]&&10===t[5]?{ext:"amr",mime:"audio/amr"}:37===t[0]&&80===t[1]&&68===t[2]&&70===t[3]?{ext:"pdf",mime:"application/pdf"}:77===t[0]&&90===t[1]?{ext:"exe",mime:"application/x-msdownload"}:67!==t[0]&&70!==t[0]||87!==t[1]||83!==t[2]?123===t[0]&&92===t[1]&&114===t[2]&&116===t[3]&&102===t[4]?{ext:"rtf",mime:"application/rtf"}:119===t[0]&&79===t[1]&&70===t[2]&&70===t[3]&&(0===t[4]&&1===t[5]&&0===t[6]&&0===t[7]||79===t[4]&&84===t[5]&&84===t[6]&&79===t[7])?{ext:"woff",mime:"application/font-woff"}:119===t[0]&&79===t[1]&&70===t[2]&&50===t[3]&&(0===t[4]&&1===t[5]&&0===t[6]&&0===t[7]||79===t[4]&&84===t[5]&&84===t[6]&&79===t[7])?{ext:"woff2",mime:"application/font-woff"}:76===t[34]&&80===t[35]&&(0===t[8]&&0===t[9]&&1===t[10]||1===t[8]&&0===t[9]&&2===t[10]||2===t[8]&&0===t[9]&&2===t[10])?{ext:"eot",mime:"application/octet-stream"}:0===t[0]&&1===t[1]&&0===t[2]&&0===t[3]&&0===t[4]?{ext:"ttf",mime:"application/font-sfnt"}:79===t[0]&&84===t[1]&&84===t[2]&&79===t[3]&&0===t[4]?{ext:"otf",mime:"application/font-sfnt"}:0===t[0]&&0===t[1]&&1===t[2]&&0===t[3]?{ext:"ico",mime:"image/x-icon"}:70===t[0]&&76===t[1]&&86===t[2]&&1===t[3]?{ext:"flv",mime:"video/x-flv"}:37===t[0]&&33===t[1]?{ext:"ps",mime:"application/postscript"}:253===t[0]&&55===t[1]&&122===t[2]&&88===t[3]&&90===t[4]&&0===t[5]?{ext:"xz",mime:"application/x-xz"}:83===t[0]&&81===t[1]&&76===t[2]&&105===t[3]?{ext:"sqlite",mime:"application/x-sqlite3"}:78===t[0]&&69===t[1]&&83===t[2]&&26===t[3]?{ext:"nes",mime:"application/x-nintendo-nes-rom"}:67===t[0]&&114===t[1]&&50===t[2]&&52===t[3]?{ext:"crx",mime:"application/x-google-chrome-extension"}:77===t[0]&&83===t[1]&&67===t[2]&&70===t[3]||73===t[0]&&83===t[1]&&99===t[2]&&40===t[3]?{ext:"cab",mime:"application/vnd.ms-cab-compressed"}:33===t[0]&&60===t[1]&&97===t[2]&&114===t[3]&&99===t[4]&&104===t[5]&&62===t[6]&&10===t[7]&&100===t[8]&&101===t[9]&&98===t[10]&&105===t[11]&&97===t[12]&&110===t[13]&&45===t[14]&&98===t[15]&&105===t[16]&&110===t[17]&&97===t[18]&&114===t[19]&&121===t[20]?{ext:"deb",mime:"application/x-deb"}:33===t[0]&&60===t[1]&&97===t[2]&&114===t[3]&&99===t[4]&&104===t[5]&&62===t[6]?{ext:"ar",mime:"application/x-unix-archive"}:237===t[0]&&171===t[1]&&238===t[2]&&219===t[3]?{ext:"rpm",mime:"application/x-rpm"}:31===t[0]&&160===t[1]||31===t[0]&&157===t[1]?{ext:"Z",mime:"application/x-compress"}:76===t[0]&&90===t[1]&&73===t[2]&&80===t[3]?{ext:"lz",mime:"application/x-lzip"}:208===t[0]&&207===t[1]&&17===t[2]&&224===t[3]&&161===t[4]&&177===t[5]&&26===t[6]&&225===t[7]?{ext:"msi",mime:"application/x-msi"}:null:{ext:"swf",mime:"application/x-shockwave-flash"}:{ext:"rar",mime:"application/x-rar-compressed"}:{ext:"zip",mime:"application/zip"}:null}},function(t,e){"use strict";t.exports=function(t,e){var i=new XMLHttpRequest;i.open("GET",t,!0),i.responseType="text",i.addEventListener("progress",function(t){var i=t.loaded/t.total;e.progress(i)}),i.onload=function(){if(200!==i.status)return e.error(t);var n=this.response;e.done(n)},i.send()}},function(t,e){"use strict";t.exports=function(t){return function(e,i){t.load(e,{done:function(t){i.done(t)},progress:function(t){var e=t.loaded/t.total;i.progress(e)}})}}},function(t,e,i){"use strict";t.exports=i(19)},function(t,e,i){"use strict";var n=i(7),o=i(20),r=[],s=function(){var t=r.pop();return t?t:{}},a=function(t){return 9>=t?48+t:10===t?48:t>10&&36>=t?64+(t-10):null},h=[{name:"Show FPS",entry:"showFps",defaults:!0},{name:"Show Key Codes",entry:"showKeyCodes",defaults:!0},{name:"Show Monitor Values",entry:"showMonitorValues",defaults:!0}],u=function(t){this.video=t.video.createLayer({allowHiDPI:!0,getCanvasContext:!0}),this.graph=t.video.createLayer({allowHiDPI:!1,getCanvasContext:!0}),this._graphHeight=100,this._60fpsMark=.8*this._graphHeight,this._msToPx=this._60fpsMark/16.66,this.app=t,this.options=h,this._maxLogsCounts=10;for(var e=0;e<this.options.length;e++){var i=this.options[e];this._initOption(i)}this.disabled=!1,this.fps=0,this.fpsCount=0,this.fpsElapsedTime=0,this.fpsUpdateInterval=.5,this._framePerf=[],this._fontSize=0,this._dirtyManager=new o(this.video.canvas,this.video.ctx),this.logs=[],this._perfValues={},this._perfNames=[],this.showDebug=!1,this.enableDebugKeys=!0,this.enableShortcuts=!1,this.enableShortcutsKey=220,this.lastKey="",this._monitor={},this._load(),this.keyShortcuts=[{key:123,entry:"showDebug",type:"toggle"}];var n=this;this.addConfig({name:"Show Performance Graph",entry:"showGraph",defaults:!1,call:function(){n.graph.clear()}}),this._diff=0,this._frameStart=0};u.prototype.begin=function(){this.showDebug&&(this._frameStart=window.performance.now())},u.prototype.end=function(){this.showDebug&&(this._diff=window.performance.now()-this._frameStart)},u.prototype._setFont=function(t,e){this._fontSize=t,this.video.ctx.font=t+"px "+e},u.prototype.addConfig=function(t){this.options.push(t),this._initOption(t)},u.prototype._initOption=function(t){t.type=t.type||"toggle",t.defaults=null==t.defaults?!1:t.defaults,"toggle"===t.type&&(this[t.entry]=t.defaults)},u.prototype.clear=function(){this.logs.length=0},u.prototype.log=function(t,e){e=e||"white",t="string"==typeof t?t:n.inspect(t);for(var i=t.replace(/\\'/g,"'").split("\n"),o=0;o<i.length;o++){var a=i[o];this.logs.length>=this._maxLogsCounts&&r.push(this.logs.shift());var h=s();h.text=a,h.life=10,h.color=e,this.logs.push(h)}},u.prototype.update=function(){},u.prototype.exitUpdate=function(t){if(!this.disabled&&this.showDebug){if(this._maxLogsCounts=Math.ceil((this.app.height+20)/20),this.fpsCount+=1,this.fpsElapsedTime+=t,this.fpsElapsedTime>this.fpsUpdateInterval){var e=this.fpsCount/this.fpsElapsedTime;this.showFps&&(this.fps=this.fps*(1-.8)+.8*e),this.fpsCount=0,this.fpsElapsedTime=0}for(var i=0,n=this.logs.length;n>i;i++){var o=this.logs[i];if(o&&(o.life-=t,o.life<=0)){var r=this.logs.indexOf(o);r>-1&&this.logs.splice(r,1)}}for(var i=0;i<this._perfNames.length;i++){var s=this._perfNames[i],a=this._perfValues[s];this.monitor(s,a.value.toFixed(3)+" ms")}}},u.prototype.keydown=function(t){if(!this.disabled){this.lastKey=t.key;var e;if(this.enableDebugKeys){if(t.key===this.enableShortcutsKey)return t.event.preventDefault(),this.enableShortcuts=!this.enableShortcuts,!0;if(this.enableShortcuts)for(e=0;e<this.options.length;e++){var i=this.options[e],n=e+1;this.app.input.isKeyDown("ctrl")&&(n-=36);var o=a(n);if(o&&t.key===o)return t.event.preventDefault(),"toggle"===i.type?(this[i.entry]=!this[i.entry],i.call&&i.call(),this._save()):"call"===i.type&&i.entry(),!0}}for(e=0;e<this.keyShortcuts.length;e++){var r=this.keyShortcuts[e];if(r.key===t.key)return t.event.preventDefault(),"toggle"===r.type?(this[r.entry]=!this[r.entry],this._save()):"call"===r.type&&this[r.entry](),!0}return!1}},u.prototype._save=function(){for(var t={showDebug:this.showDebug,options:{}},e=0;e<this.options.length;e++){var i=this.options[e],n=this[i.entry];t.options[i.entry]=n}window.localStorage.__potionDebug=JSON.stringify(t)},u.prototype._load=function(){if(window.localStorage&&window.localStorage.__potionDebug){var t=JSON.parse(window.localStorage.__potionDebug);this.showDebug=t.showDebug;for(var e in t.options)this[e]=t.options[e]}},u.prototype.render=function(){if(!this.disabled&&(this._dirtyManager.clear(),this.showDebug)){if(this.video.ctx.save(),this._setFont(15,"sans-serif"),this._renderLogs(),this._renderData(),this._renderShortcuts(),this.video.ctx.restore(),this.showMonitorValues){var t=0;for(var e in this._monitor){var i=this._monitor[e];this._setFont(15,"sans-serif"),
this.video.ctx.textAlign="right",this.video.ctx.textBaseline="bottom",this._renderText(e,this.app.width-14,this.app.height-28-5-40*t,"#e9dc7c"),i="string"==typeof i?i:n.inspect(i),this._renderText(i,this.app.width-14,this.app.height-14-40*t),t+=1}}if(this.showGraph){this.graph.ctx.drawImage(this.graph.canvas,0,this.app.height-this._graphHeight,this.app.width,this._graphHeight,-2,this.app.height-this._graphHeight,this.app.width,this._graphHeight),this.graph.ctx.fillStyle="#F2F0D8",this.graph.ctx.fillRect(this.app.width-2,this.app.height-this._graphHeight,2,this._graphHeight),this.graph.ctx.fillStyle="rgba(0, 0, 0, 0.5)",this.graph.ctx.fillRect(this.app.width-2,this.app.height-this._60fpsMark,2,1);for(var o=0,t=0;t<this._framePerf.length;t++){var r=this._framePerf[t],s=this._perfNames[t];this._drawFrameLine(r,s,o),o+=r}this._drawFrameLine(this._diff-o,"lag",o),this._framePerf.length=0}}},u.prototype._drawFrameLine=function(t,e,i){var n="black";"update"===e?n="#6BA5F2":"render"===e?n="#F27830":"lag"===e&&(n="#91f682"),this.graph.ctx.fillStyle=n;var o=(t+i)*this._msToPx,r=this.app.width-2,s=this.app.height-o;this.graph.ctx.fillRect(r,s,2,o-i*this._msToPx)},u.prototype._renderLogs=function(){this.video.ctx.textAlign="left",this.video.ctx.textBaseline="bottom";for(var t=0,e=this.logs.length;e>t;t++){var i=this.logs[t],n=-10+this.app.height+20*(t-this.logs.length+1);this._renderText(i.text,10,n,i.color)}},u.prototype.disable=function(){this.disabled=!0,this.showDebug=!1},u.prototype.monitor=function(t,e){this._monitor[t]=e},u.prototype.perf=function(t){if(this.showDebug){var e=this._perfValues[t];null==e&&(this._perfNames.push(t),this._perfValues[t]={name:t,value:0,records:[]});var i=window.performance.now(),n=this._perfValues[t];n.value=i}},u.prototype.stopPerf=function(t){if(this.showDebug){var e=this._perfValues[t],i=window.performance.now(),n=i-e.value;e.records.push(n),e.records.length>10&&e.records.shift();for(var o=0,r=0;r<e.records.length;r++)o+=e.records[r];var s=o/e.records.length;e.value=s,this._framePerf.push(n)}},u.prototype._renderData=function(){this.video.ctx.textAlign="right",this.video.ctx.textBaseline="top";var t=this.app.width-14,e=14;if(this.showFps&&this._renderText(Math.round(this.fps)+" fps",t,e),e+=24,this._setFont(15,"sans-serif"),this.showKeyCodes){var i="";this.app.input.mouse.isLeftDown?i="left":this.app.input.mouse.isRightDown?i="right":this.app.input.mouse.isMiddleDown&&(i="middle"),this._renderText("key "+this.lastKey,t,e,this.app.input.isKeyDown(this.lastKey)?"#e9dc7c":"white"),this._renderText("btn "+i,t-60,e,this.app.input.mouse.isDown?"#e9dc7c":"white")}},u.prototype._renderShortcuts=function(){if(this.enableShortcuts){var t=28;this._setFont(20,"Helvetica Neue, sans-serif"),this.video.ctx.textAlign="left",this.video.ctx.textBaseline="top";for(var e=Math.floor((this.app.height-14)/t),i=0;i<this.options.length;i++){var n=this.options[i],o=14+320*Math.floor(i/e),r=14+i%e*t,s=i+1,h=a(s),u=this[n.entry],p=String.fromCharCode(h);h||(p="^+"+String.fromCharCode(a(s-36)));var c="["+p+"] "+n.name;"toggle"===n.type?c+=" ("+(u?"ON":"OFF")+")":"call"===n.type&&(c+=" (CALL)");var l="rgba(255, 255, 255, 1)",d="rgba(0, 0, 0, 1)";u||(l="rgba(255, 255, 255, .7)",d="rgba(0, 0, 0, .7)"),this._renderText(c,o,r,l,d)}}},u.prototype._renderText=function(t,e,i,n,o){n=n||"white",o=o||"black",this.video.ctx.fillStyle=n,this.video.ctx.lineJoin="round",this.video.ctx.strokeStyle=o,this.video.ctx.lineWidth=3,this.video.ctx.strokeText(t,e,i),this.video.ctx.fillText(t,e,i);var r=this.video.ctx.measureText(t).width,s=e-5,a=i,h=r+10,u=this._fontSize+10;"right"===this.video.ctx.textAlign&&(s=e-5-r),this._dirtyManager.addRect(s,a,h,u)},t.exports=u},function(t,e){"use strict";var i=function(t,e){this.ctx=e,this.canvas=t,this.top=t.height,this.left=t.width,this.bottom=0,this.right=0,this.isDirty=!1};i.prototype.addRect=function(t,e,i,n){var o=t+i,r=e+n;this.top=e<this.top?e:this.top,this.left=t<this.left?t:this.left,this.bottom=r>this.bottom?r:this.bottom,this.right=o>this.right?o:this.right,this.isDirty=!0},i.prototype.clear=function(){this.isDirty&&(this.ctx.clearRect(this.left,this.top,this.right-this.left,this.bottom-this.top),this.left=this.canvas.width,this.top=this.canvas.height,this.right=0,this.bottom=0,this.isDirty=!1)},t.exports=i},function(t,e,i){"use strict";t.exports=i(22)},function(t,e,i){"use strict";var n=i(7),o=i(23),r=function(){var t=window.AudioContext||window.webkitAudioContext;this._ctx=new t,this._masterGain=this._ctx.createGain(),this._volume=1,this.isMuted=!1;var e=/(iPad|iPhone|iPod)/g.test(navigator.userAgent);e&&this._enableiOS()};r.prototype._enableiOS=function(){var t=this,e=function(t){var e=function(){return t.apply(this,arguments)};return e.toString=function(){return t.toString()},e}(function(){var i=t._ctx.createBuffer(1,1,22050),n=t._ctx.createBufferSource();n.buffer=i,n.connect(t._ctx.destination),n.start(0),window.removeEventListener("touchstart",e,!1)});window.addEventListener("touchstart",e,!1)},r.prototype.mute=function(){this.isMuted=!0,this._updateMute()},r.prototype.unmute=function(){this.isMuted=!1,this._updateMute()},r.prototype.toggleMute=function(){this.isMuted=!this.isMuted,this._updateMute()},r.prototype._updateMute=function(){this._masterGain.gain.value=this.isMuted?0:this._volume},r.prototype.setVolume=function(t){this._volume=t,this._masterGain.gain.value=t},r.prototype.load=function(t,e){var i={done:function(){},error:function(){},progress:function(){}};e&&n.isFunction(e)?i.done=e:(e.done&&(i.done=e.done),e.error&&(i.error=e.error),e.progress&&(i.progress=e.progress));var o=this,r=new XMLHttpRequest;r.open("GET",t,!0),r.responseType="arraybuffer",r.addEventListener("progress",function(t){i.progress(t)}),r.onload=function(){o.decodeAudioData(r.response,function(t){i.done(t)})},r.send()},r.prototype.decodeAudioData=function(t,e){var i=this;this._ctx.decodeAudioData(t,function(t){var n=new o(i._ctx,t,i._masterGain);e(n)})},t.exports=r},function(t,e,i){"use strict";var n=i(24),o=function(t,e,i){this._ctx=t,this._masterGain=i,this._buffer=e,this._buffer.loop=!1};o.prototype._createSound=function(t){var e=this._ctx.createBufferSource();return e.buffer=this._buffer,this._masterGain.connect(this._ctx.destination),t.connect(this._masterGain),e.connect(t),e},o.prototype.play=function(){var t=this._ctx.createGain(),e=this._createSound(t);return e.start(0),new n(e,t)},o.prototype.fadeIn=function(t,e){var i=this._ctx.createGain(),o=this._createSound(i);return i.gain.setValueAtTime(0,0),i.gain.linearRampToValueAtTime(.01,0),i.gain.linearRampToValueAtTime(t,e),o.start(0),new n(o,i)},o.prototype.loop=function(){var t=this._ctx.createGain(),e=this._createSound(t);return e.loop=!0,e.start(0),new n(e,t)},t.exports=o},function(t,e){"use strict";var i=function(t,e){this._gain=e,this._source=t};i.prototype.setVolume=function(t){this._gain.gain.value=t},i.prototype.stop=function(){this._source.stop(0)},i.prototype.loop=function(){this._source.loop=!0},t.exports=i},function(t,e){"use strict";t.exports=function(){return window.performance||Date}()},function(t,e){"use strict";var i=function(t,e){return t.renderOrder<e.renderOrder},n=function(t,e){return t.updateOrder<e.updateOrder},o=function(){this.states={},this.renderOrder=[],this.updateOrder=[],this._preventEvent=!1};o.prototype.add=function(t,e){return this.states[t]=this._newStateHolder(t,e),this.refreshOrder(),e},o.prototype.enable=function(t){var e=this.getHolder(t);e&&(e.enabled||(e.state.enable&&e.state.enable(),e.enabled=!0,e.changed=!0,e.paused&&this.unpause(t)))},o.prototype.disable=function(t){var e=this.getHolder(t);e&&e.enabled&&(e.state.disable&&e.state.disable(),e.changed=!0,e.enabled=!1)},o.prototype.hide=function(t){var e=this.getHolder(t);e&&e.enabled&&(e.changed=!0,e.render=!1)},o.prototype.show=function(t){var e=this.getHolder(t);e&&e.enabled&&(e.changed=!0,e.render=!0)},o.prototype.pause=function(t){var e=this.getHolder(t);e&&(e.state.pause&&e.state.pause(),e.changed=!0,e.paused=!0)},o.prototype.unpause=function(t){var e=this.getHolder(t);e&&(e.state.unpause&&e.state.unpause(),e.changed=!0,e.paused=!1)},o.prototype.protect=function(t){var e=this.getHolder(t);e&&(e.protect=!0)},o.prototype.unprotect=function(t){var e=this.getHolder(t);e&&(e.protect=!1)},o.prototype.refreshOrder=function(){this.renderOrder.length=0,this.updateOrder.length=0;for(var t in this.states){var e=this.states[t];e&&(this.renderOrder.push(e),this.updateOrder.push(e))}this.renderOrder.sort(i),this.updateOrder.sort(n)},o.prototype._newStateHolder=function(t,e){var i={};return i.name=t,i.state=e,i.protect=!1,i.enabled=!0,i.paused=!1,i.render=!0,i.initialized=!1,i.updated=!1,i.changed=!0,i.updateOrder=0,i.renderOrder=0,i},o.prototype.setUpdateOrder=function(t,e){var i=this.getHolder(t);i&&(i.updateOrder=e,this.refreshOrder())},o.prototype.setRenderOrder=function(t,e){var i=this.getHolder(t);i&&(i.renderOrder=e,this.refreshOrder())},o.prototype.destroy=function(t){var e=this.getHolder(t);e&&!e.protect&&(e.state.close&&e.state.close(),delete this.states[t],this.refreshOrder())},o.prototype.destroyAll=function(){for(var t=0,e=this.updateOrder.length;e>t;t++){var i=this.updateOrder[t];i.protect||(i.state.close&&i.state.close(),delete this.states[i.name])}this.refreshOrder()},o.prototype.getHolder=function(t){return this.states[t]},o.prototype.get=function(t){return this.states[t].state},o.prototype.update=function(t){for(var e=0,i=this.updateOrder.length;i>e;e++){var n=this.updateOrder[e];n&&(n.changed=!1,n.enabled&&(!n.initialized&&n.state.init&&(n.initialized=!0,n.state.init()),n.state.update&&!n.paused&&(n.state.update(t),n.updated=!0)))}},o.prototype.exitUpdate=function(t){for(var e=0,i=this.updateOrder.length;i>e;e++){var n=this.updateOrder[e];n&&n.enabled&&n.state.exitUpdate&&!n.paused&&n.state.exitUpdate(t)}},o.prototype.render=function(){for(var t=0,e=this.renderOrder.length;e>t;t++){var i=this.renderOrder[t];i&&i.enabled&&(i.updated||!i.state.update)&&i.render&&i.state.render&&i.state.render()}},o.prototype.mousemove=function(t){this._preventEvent=!1;for(var e=0,i=this.updateOrder.length;i>e;e++){var n=this.updateOrder[e];if(n&&n.enabled&&!n.changed&&n.state.mousemove&&!n.paused&&n.state.mousemove(t),this._preventEvent)break}},o.prototype.mouseup=function(t){this._preventEvent=!1;for(var e=0,i=this.updateOrder.length;i>e;e++){var n=this.updateOrder[e];if(n&&n.enabled&&!n.changed&&n.state.mouseup&&!n.paused&&n.state.mouseup(t),this._preventEvent)break}},o.prototype.mousedown=function(t){this._preventEvent=!1;for(var e=0,i=this.updateOrder.length;i>e;e++){var n=this.updateOrder[e];if(n&&n.enabled&&!n.changed&&n.state.mousedown&&!n.paused&&n.state.mousedown(t),this._preventEvent)break}},o.prototype.keyup=function(t){this._preventEvent=!1;for(var e=0,i=this.updateOrder.length;i>e;e++){var n=this.updateOrder[e];if(n&&n.enabled&&!n.changed&&n.state.keyup&&!n.paused&&n.state.keyup(t),this._preventEvent)break}},o.prototype.keydown=function(t){this._preventEvent=!1;for(var e=0,i=this.updateOrder.length;i>e;e++){var n=this.updateOrder[e];if(n&&n.enabled&&!n.changed&&n.state.keydown&&!n.paused&&n.state.keydown(t),this._preventEvent)break}},o.prototype.resize=function(){for(var t=0,e=this.updateOrder.length;e>t;t++){var i=this.updateOrder[t];i&&i.enabled&&i.state.resize&&i.state.resize()}},t.exports=o},function(t,e,i){"use strict";var n=i(28),o={};for(var r in n)o[n[r]]=r;var s=function(t){this._container=t.container,this._keys={},this.canControlKeys=!0,this.mouse={isDown:!1,isLeftDown:!1,isMiddleDown:!1,isRightDown:!1,x:null,y:null,dx:0,dy:0},this._addEvents(t)};s.prototype.resetKeys=function(){this._keys={}},s.prototype.isKeyDown=function(t){if(null==t)return!1;if(this.canControlKeys){var e="number"==typeof t?t:n[t.toLowerCase()];return this._keys[e]}},s.prototype._addEvents=function(t){var e=this,i={x:null,y:null,button:null,isTouch:!1,event:null,stateStopEvent:function(){t.states._preventEvent=!0}},n={key:null,name:null,event:null,stateStopEvent:function(){t.states._preventEvent=!0}};e._container.addEventListener("mousemove",function(n){var o=(void 0===n.offsetX?n.layerX-e._container.offsetLeft:n.offsetX)/t.scaleX,r=(void 0===n.offsetY?n.layerY-e._container.offsetTop:n.offsetY)/t.scaleY;null!=e.mouse.x&&null!=e.mouse.x&&(e.mouse.dx=o-e.mouse.x,e.mouse.dy=r-e.mouse.y),e.mouse.x=o,e.mouse.y=r,e.mouse.isActive=!0,i.x=o,i.y=r,i.button=null,i.event=n,i.isTouch=!1,t.states.mousemove(i)}),e._container.addEventListener("mouseup",function(n){n.preventDefault();var o=(void 0===n.offsetX?n.layerX-e._container.offsetLeft:n.offsetX)/t.scaleX,r=(void 0===n.offsetY?n.layerY-e._container.offsetTop:n.offsetY)/t.scaleY;switch(n.button){case 0:e.mouse.isLeftDown=!1;break;case 1:e.mouse.isMiddleDown=!1;break;case 2:e.mouse.isRightDown=!1}e.mouse.isDown=e.mouse.isLeftDown||e.mouse.isRightDown||e.mouse.isMiddleDown,i.x=o,i.y=r,i.button=n.button,i.event=n,i.isTouch=!1,t.states.mouseup(i)},!1),e._container.addEventListener("mouseleave",function(){e.mouse.isActive=!1,e.mouse.isDown=!1,e.mouse.isLeftDown=!1,e.mouse.isRightDown=!1,e.mouse.isMiddleDown=!1}),e._container.addEventListener("mouseenter",function(){e.mouse.isActive=!0}),e._container.addEventListener("mousedown",function(n){n.preventDefault();var o=(void 0===n.offsetX?n.layerX-e._container.offsetLeft:n.offsetX)/t.scaleX,r=(void 0===n.offsetY?n.layerY-e._container.offsetTop:n.offsetY)/t.scaleY;switch(e.mouse.x=o,e.mouse.y=r,e.mouse.isDown=!0,e.mouse.isActive=!0,n.button){case 0:e.mouse.isLeftDown=!0;break;case 1:e.mouse.isMiddleDown=!0;break;case 2:e.mouse.isRightDown=!0}i.x=o,i.y=r,i.button=n.button,i.event=n,i.isTouch=!1,t.states.mousedown(i)},!1),e._container.addEventListener("touchstart",function(n){n.preventDefault();for(var o=0;o<n.touches.length;o++){var r=n.touches[o],s=(r.pageX-e._container.offsetLeft)/t.scaleX,a=(r.pageY-e._container.offsetTop)/t.scaleY;e.mouse.x=s,e.mouse.y=a,e.mouse.isDown=!0,e.mouse.isLeftDown=!0,e.mouse.isActive=!0,i.x=s,i.y=a,i.button=1,i.event=n,i.isTouch=!0,t.states.mousedown(i)}}),e._container.addEventListener("touchmove",function(n){n.preventDefault();for(var o=0;o<n.touches.length;o++){var r=n.touches[o],s=(r.pageX-e._container.offsetLeft)/t.scaleX,a=(r.pageY-e._container.offsetTop)/t.scaleY;null!=e.mouse.x&&null!=e.mouse.x&&(e.mouse.dx=s-e.mouse.x,e.mouse.dy=a-e.mouse.y),e.mouse.x=s,e.mouse.y=a,e.mouse.isDown=!0,e.mouse.isLeftDown=!0,e.mouse.isActive=!0,i.x=s,i.y=a,i.event=n,i.isTouch=!0,t.states.mousemove(i)}}),e._container.addEventListener("touchend",function(n){n.preventDefault();var o=n.changedTouches[0],r=(o.pageX-e._container.offsetLeft)/t.scaleX,s=(o.pageY-e._container.offsetTop)/t.scaleY;e.mouse.x=r,e.mouse.y=s,e.mouse.isActive=!1,e.mouse.isDown=!1,e.mouse.isLeftDown=!1,e.mouse.isRightDown=!1,e.mouse.isMiddleDown=!1,i.x=r,i.y=s,i.event=n,i.isTouch=!0,t.states.mouseup(i)}),e._container.addEventListener("contextmenu",function(t){t.preventDefault()}),document.addEventListener("keydown",function(i){e._keys[i.keyCode]=!0,n.key=i.which,n.name=o[i.which],n.event=i,t.states.keydown(n)}),document.addEventListener("keyup",function(i){e._keys[i.keyCode]=!1,n.key=i.which,n.name=o[i.which],n.event=i,t.states.keyup(n)})},t.exports=s},function(t,e){"use strict";t.exports={backspace:8,tab:9,enter:13,pause:19,caps:20,esc:27,space:32,page_up:33,page_down:34,end:35,home:36,left:37,up:38,right:39,down:40,insert:45,"delete":46,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,a:65,b:66,c:67,d:68,e:69,f:70,g:71,h:72,i:73,j:74,k:75,l:76,m:77,n:78,o:79,p:80,q:81,r:82,s:83,t:84,u:85,v:86,w:87,x:88,y:89,z:90,numpad_0:96,numpad_1:97,numpad_2:98,numpad_3:99,numpad_4:100,numpad_5:101,numpad_6:102,numpad_7:103,numpad_8:104,numpad_9:105,multiply:106,add:107,substract:109,decimal:110,divide:111,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123,shift:16,ctrl:17,alt:18,plus:187,comma:188,minus:189,period:190}},function(t,e){"use strict";var i=function(t){this.app=t,this.barWidth=0};i.prototype.render=function(t,e){e.clear();var i="#b9ff71",n="#8ac250",o="#648e38",r=Math.min(2*e.width/3,300),s=20,a=(e.height-s)/2,h=(e.width-r)/2,u=r*this.app.assets.progress;this.barWidth=this.barWidth+(u-this.barWidth)*t*10,e.ctx.fillStyle=n,e.ctx.fillRect(0,0,e.width,e.height),e.ctx.font="400 40px sans-serif",e.ctx.textAlign="center",e.ctx.textBaseline="bottom",e.ctx.fillStyle="rgba(0, 0, 0, 0.1)",e.ctx.fillText("Potion.js",e.width/2,a+2),e.ctx.fillStyle="#d1ffa1",e.ctx.fillText("Potion.js",e.width/2,a),e.ctx.strokeStyle=e.ctx.fillStyle=o,e.ctx.fillRect(h,a+15,r,s),e.ctx.lineWidth=2,e.ctx.beginPath(),e.ctx.rect(h-5,a+10,r+10,s+10),e.ctx.closePath(),e.ctx.stroke(),e.ctx.strokeStyle=e.ctx.fillStyle="rgba(0, 0, 0, 0.1)",e.ctx.fillRect(h,a+15,this.barWidth,s+2),e.ctx.lineWidth=2,e.ctx.beginPath(),e.ctx.moveTo(h+this.barWidth,a+12),e.ctx.lineTo(h-5,a+12),e.ctx.lineTo(h-5,a+10+s+12),e.ctx.lineTo(h+this.barWidth,a+10+s+12),e.ctx.stroke(),e.ctx.closePath(),e.ctx.strokeStyle=e.ctx.fillStyle=i,e.ctx.fillRect(h,a+15,this.barWidth,s),e.ctx.lineWidth=2,e.ctx.beginPath(),e.ctx.moveTo(h+this.barWidth,a+10),e.ctx.lineTo(h-5,a+10),e.ctx.lineTo(h-5,a+10+s+10),e.ctx.lineTo(h+this.barWidth,a+10+s+10),e.ctx.stroke(),e.ctx.closePath()},t.exports=i}])});