From 0833cda1fd7789fc81acf8d2c697b7b157b89779 Mon Sep 17 00:00:00 2001 From: jules Date: Tue, 28 Jan 2014 01:59:10 -0500 Subject: gruntfile --- Gruntfile.js | 49 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 12 deletions(-) (limited to 'Gruntfile.js') diff --git a/Gruntfile.js b/Gruntfile.js index 371228c..8ba2c09 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -3,31 +3,56 @@ module.exports = function(grunt) { // Project configuration. grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), + dentist: { + build: { + src: 'shader-combo.html', + script: 'dist/app-init.js' + html: 'dist/index.html' + } + }, concat: { dist: { src: [ - 'js/vendor/jquery/jquery.js', - 'js/vendor/loader.js', - 'js/mx/mx.js', - 'js/mx/mx.*.js', - 'js/spinner.js', - 'js/pano.js' - + "js/vendor/acorn.js", + "js/vendor/gif.js", + "js/vendor/gif-encode/util.js", + "js/vendor/gif-encode/tube.js", + "js/vendor/gif-encode/client.js", + "js/vendor/jquery/jquery.min.js", + "js/vendor/jquery-ui-1.10.3.custom.min.js", + "js/vendor/canvasquery.js", + "js/vendor/FileSaver/FileSaver.js", + "js/vendor/dataUriToBlob.js", + "js/util.js", + "js/color.js", + "js/asdf.js", + "js/image.js", + "js/user.js", + "js/gallery.js", + "js/frames.js", + "js/render.js", + "js/shader.js", + "js/error.highlight.js", + "js/help.js", + "js/api/gallery.js", + "js/api/get.js", + "js/api/set.js", + "/tmp/app-init.js", ], - dest: 'js/live.concat.js', + dest: 'dist/app.concat.js', } }, uglify: { options: { - banner: '/* asdf.us/dither */\n' + banner: '/* asdf.us/shader */\n' }, build: { - src: 'js/live.concat.js', - dest: 'js/live.min.js' + src: 'dist/app.concat.js', + dest: 'dist/app.min.js' } }, watch: { - files: ['js/!(live.min|live.concat).js','js/vendor/*'], + files: ['dist/!(app.min|app.concat).js'], tasks: ['default'] } }); -- cgit v1.2.3-70-g09d2 From 5d9a59162e35aad1aefc75b14c417a39bf6da5cf Mon Sep 17 00:00:00 2001 From: jules Date: Tue, 28 Jan 2014 09:45:10 -0500 Subject: sane build process --- Gruntfile.js | 13 ++++-- README.md | 2 + dist/app.min.js | 9 ++++ dist/index.html | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 4 +- 5 files changed, 163 insertions(+), 5 deletions(-) create mode 100644 README.md create mode 100644 dist/app.min.js create mode 100644 dist/index.html (limited to 'Gruntfile.js') diff --git a/Gruntfile.js b/Gruntfile.js index 8ba2c09..77ac474 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -6,8 +6,8 @@ module.exports = function(grunt) { dentist: { build: { src: 'shader-combo.html', - script: 'dist/app-init.js' - html: 'dist/index.html' + dest_js: 'dist/app.init.js', + dest_html: 'dist/index.html' } }, concat: { @@ -37,7 +37,7 @@ module.exports = function(grunt) { "js/api/gallery.js", "js/api/get.js", "js/api/set.js", - "/tmp/app-init.js", + "dist/app.init.js", ], dest: 'dist/app.concat.js', } @@ -51,6 +51,9 @@ module.exports = function(grunt) { dest: 'dist/app.min.js' } }, + clean: { + release: ["dist/app.concat.js","dist/app.init.js"], + }, watch: { files: ['dist/!(app.min|app.concat).js'], tasks: ['default'] @@ -61,8 +64,10 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-concat'); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-clean'); + grunt.loadNpmTasks('grunt-dentist'); // Default task(s). - grunt.registerTask('default', ['concat', 'uglify']); + grunt.registerTask('default', ['dentist', 'concat', 'uglify']); }; diff --git a/README.md b/README.md new file mode 100644 index 0000000..06b58cc --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +dither +====== diff --git a/dist/app.min.js b/dist/app.min.js new file mode 100644 index 0000000..58b69ed --- /dev/null +++ b/dist/app.min.js @@ -0,0 +1,9 @@ +/* asdf.us/shader */ +function shuffle(a){var b=new Array(a.length);b[0]=a[0];for(var c=1;cb;b++){var d=new Worker("js/vendor/gif-encode/worker.js");d.onmessage=a.receiveWork,c.push(d)}};var d={};a.hire=function(a,b){d[a]=b},a.work=function(a){c[++b%c.length].postMessage(a)},a.receiveWork=function(a){a.data.task in d&&d[a.data.task](a)},a.fire=function(){for(var b in c)c[b].postMessage("close");c=[],a.init()},a.init()}function b(a){console.log("[WORKER]",a.data.message)}function c(a){console.log(Date.now()-q,"quantization done"),i=a.data.neuquant,j=a.data.colortab,f.quantized=!0,f.tube("quantized")}function d(a){var b=a.data.frame_index,c=a.data.frame_data;m[b]=c,f.tube("encoded-frame",m.length,k.length);for(var d=0;da?b:c>a?a:c}function lerp(a,b,c){return(c-b)*a+b}function mix(a,b,c){return b*(1-a)+c*a}function ceil(a){return Math.ceil(a)}function floor(a){return Math.floor(a)}function round(a){return Math.round(a)}function max(a){return Math.max(a)}function min(a){return Math.min(a)}function abs(a){return Math.abs(a)}function sign(a){return Math.abs(a)/a}function pow(a,b){return Math.pow(a,b)}function exp(a){return Math.exp(a)}function sqrt(a){return Math.sqrt(a,b)}function cos(a){return Math.cos(a)}function sin(a){return Math.sin(a)}function tan(a){return Math.tan(a)}function acos(a){return Math.cos(a)}function asin(a){return Math.sin(a)}function atan(a){return Math.atan(a)}function atan2(a){return Math.atan2(a)}function sec(a){return 1/cos(a)}function csc(a){return 1/sin(a)}function cot(a){return 1/tan(a)}function cosp(a){return(1+Math.cos(a))/2}function sinp(a){return(1+Math.sin(a))/2}function random(){return Math.random()}function rand(a){return Math.random()*a}function randint(a){return 0|rand(a)}function choice(a){return a[randint(a.length)]}function deg(a){return 180*a/PI}function rad(a){return a*PI/180}function xor(a,b){return a=!!a,b=!!b,(a||b)&&!(a&&b)}function mod(a,b){return a-b*floor(a/b)}function dist(a,b,c,d){return sqrt(pow(c-a,2)+pow(d-b,2))}function angle(a,b,c,d){return atan2(d-b,c-a)}function avg(a,b,c){return(a*(c-1)+b)/c}function pixel(a,b){return 4*(mod(b,actual_h)*actual_w+mod(a,actual_w))}function rgbpixel(c,d,e){var f=pixel(~~d,~~e);r=c[f],g=c[f+1],b=c[f+2],a=c[f+3]}function fit(a,b,c){rgbpixel(a,b*actual_w/w,c*actual_h/h)}function step(a,b){return(b>=a)+0}function julestep(a,b,c){return clamp((c-a)/(b-a),0,1)}function smoothstep(a,b,c){var d=clamp((c-a)/(b-a),0,1);return d*d*(3-2*d)}function shuffle(a){for(var b=a.length;b>0;b--){var c=randint(b),d=a[b-1];a[b-1]=a[c],a[c]=d}return a}function reverse(a){for(var b=[],c=0,d=a.length-1;d>=c;c++)b[c]=a[d-c];return b}function deinterlace(a){for(var b=[],c=[],d=0,e=a.length;e>d;d++)d%2?c.push(a[d]):b.push(a[d]);return[c,b]}function weave(a){var b=deinterlace(a),c=[];return b[0].forEach(function(a){c.push(a)}),reverse(b[1]).forEach(function(a){c.push(a)}),c}function rgb(a,c,d){r=a,g=c,b=d}function rgbref(a){r=a[0],g=a[1],b=a[2]}function black(){rgb(0,0,0)}function white(){rgb(255,255,255)}function red(){rgb(255,0,0)}function gray(a){1>a&&(a*=255),rgb(a,a,a)}function rgb2xyz(a){var b=a[0]/255,c=a[1]/255,d=a[2]/255;b>.04045?b=(b+.055)/1.055^2.4:b/=12.92,c>.04045?c=(c+.055)/1.055^2.4:c/=12.92,d>.04045?d=(d+.055)/1.055^2.4:d/=12.92,b=100*b,c=100*c,d=100*d;var e=.4124*b+.3576*c+.1805*d,f=.2126*b+.7152*c+.0722*d,g=.0193*b+.1192*c+.9505*d;return[e,f,g]}function xyz2rgb(a){var b=a[0]/100,c=a[1]/100,d=a[2]/100;var_R=3.2406*b+-1.5372*c+d*-.4986,var_G=b*-.9689+1.8758*c+.0415*d,var_B=.0557*b+c*-.204+1.057*d,var_R=var_R>.0031308?1.055*Math.pow(var_R,1/2.4)-.055:12.92*var_R,var_G=var_G>.0031308?1.055*Math.pow(var_G,1/2.4)-.055:12.92*var_G,var_B=var_B>.0031308?1.055*Math.pow(var_B,1/2.4)-.055:12.92*var_B;var e=clamp(255*var_R,0,255),f=clamp(255*var_G,0,255),g=clamp(255*var_B,0,255);return[e,f,g]}function xyz2hunterlab(a){var b=a[0],c=a[1],d=a[2],e=10*sqrt(c),f=17.5*((1.02*b-c)/sqrt(c)),g=7*((c-.847*d)/sqrt(c));return[e,f,g]}function hunterlab2xyz(a){var b=a[0],c=a[1],d=a[2];return var_Y=b/10,var_X=c/17.5*b/10,var_Z=d/7*b/10,Y=Math.pow(var_Y,2),X=(var_X+Y)/1.02,Z=-(var_Z-Y)/.847,[X,Y,Z]}function xyz2cielab(a){var b=a[0]/ref_X,c=a[1]/ref_Y,d=a[2]/ref_Z;b=b>.008856?Math.pow(b,1/3):7.787*b+16/116,c=c>.008856?Math.pow(c,1/3):7.787*c+16/116,d=d>.008856?Math.pow(d,1/3):7.787*d+16/116;var e=116*c-16,f=500*(b-c),g=200*(c-d);return[e,f,g]}function cielab2xyz(a){var b=(a[0]+16)/116,c=a[1]/500+b,d=b-a[2]/200;b=b^!0?Math.pow(b,3):(b-16/116)/7.787,c=c^!0?Math.pow(c,3):(c-16/116)/7.787,d=d^!0?Math.pow(d,3):(d-16/116)/7.787;return[x,y,z]}function rgb2hsl(a){var b,c,d=a[0],e=a[1],f=a[2],g=d/255,h=e/255,i=f/255,j=min(g,h,i),k=max(g,h,i),l=k-j,m=(k+j)/2;if(0==l)b=0,c=0;else{c=.5>m?l/(k+j):l/(2-k-j);var n=((k-g)/6+l/2)/l,o=((k-h)/6+l/2)/l,p=((k-i)/6+l/2)/l;g==k?b=p-o:h==k?b=1/3+n-p:i==k&&(b=2/3+o-n),0>b&&(b+=1),b>1&&(b-=1)}return[b,c,m]}function hsl2rgb(a,b,c){var d,e,f,g,h;return 0==b?(d=255*c,e=255*c,f=255*c):(h=.5>c?c*(1+b):c+b-b*c,g=2*c-h,d=255*hue2rgb(g,h,a+1/3),e=255*hue2rgb(g,h,a),f=255*hue2rgb(g,h,a-1/3)),[d,e,f]}function hue2rgb(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1>6*c?a+6*(b-a)*c:1>2*c?b:2>3*c?a+(b-a)*(2/3-c)*6:a}function rgb2cmy(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=1-a/255,e=1-b/255,f=1-c/255;return[d,e,f]}function cmy2rgb(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=255*(1-a),e=255*(1-b),f=255*(1-c);return[d,e,f]}function cmy2cmyk(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=1;d>a&&(d=a),d>b&&(d=b),d>c&&(d=c),1==d?(a=0,b=0,c=0):(a=(a-d)/(1-d),b=(b-d)/(1-d),c=(c-d)/(1-d));var e=d;return[a,b,c,e]}function cmyk2cmy(a,b,c,d){a.length&&(d=a[3],c=a[2],b=a[1],a=a[0]);var a=a*(1-d)+d,b=b*(1-d)+d,c=c*(1-d)+d;return[a,b,c]}function loadImage(a,b){var a=proxify(a);return window.imageURL=a,window.gif=window.img=null,a?"gif"===a.substr(-3)?(window.gif=GIF(a),gif.on("rendered",b),gif.render()):(window.img=new Image,img.addEventListener("load",b),img.crossOrigin="anonymous",img.src=a):(window.gif=null,window.img=null,b(),void 0)}function giveImage(a){return window.gif?gif.frames[gif.currentFrame(a)]:img}function proxify(a){return 0==a.indexOf("http")?"/cgi-bin/proxy?"+a.replace(/^https/,"http"):a}function filesize(a){return 1e3>a?a+" bytes":1e6>a?decimalString(a/1e3)+" kb":1e9>a?decimalString(a/1e6)+" mb":"WAY TOO BIG DUDE"}function decimalString(a){var b=Math.floor(a);return b+"."+Math.round(10*(a-b))}function noop(){}function uploadImage(a){if(a.blob&&a.filename){a.username=a.username||"",a.success=a.success||noop,a.error=a.error||noop;var b=new FormData;b.append("username",a.username),b.append("filename",a.filename),b.append("qqfile",a.blob);var c=new XMLHttpRequest;c.open("POST","/cgi-bin/im/upload"),c.onload=function(){if(200==c.status){var b=JSON.parse(c.responseText);b.success?a.success(b):a.error(b)}else a.error({success:!1,error:c.status})},c.send(b)}}function add_frame(){var a=$("#framecount").int();2>a?add_single_frame():add_frames(a)}function add_single_frame(){var a=$("
");a.html($("#frame-template").html()),a.attr("index",$("#frames div").length);var b=cc.clone().appendTo(a.find(".frame")[0]);b.canvas.className="fullsize",b.canvas.style.display="none";cc.clone().resize(frame_thumb_size,frame_thumb_size).appendTo(a.find(".frame")[0]);$("#frames").append(a)}function add_frames(a){rendering=!0;for(var b,c=old_t-start_t-pause_t,d=1e3*($("#frameinterval").float()||$("#framedelay").float()),e=0;a>e;e++)b=giveFrame(c),c+=d,shade(b,c),add_single_frame();rendering=!1}function remove_frame(){$(this).closest("div").remove()}function remove_all_frames(){$("#frames").empty()}function shuffle_frames(){var a=$("#frames div");$("#frames").empty().append(shuffle(a))}function reverse_frames(){var a=$("#frames div");$("#frames").empty().append(reverse(a))}function weave_frames(){var a=$("#frames div");$("#frames").empty().append(weave(a))}function sort_frames(){var a=$("#frames div"),b=a.map(function(a,b){return console.log(a,b),[[b.getAttribute("index"),b]]}).sort(function(a,b){return a[0]-b[0]}).map(function(a,b){return console.log(b),b[1]});$("#frames").empty().append(b)}function render(){if(!rendering){0==$("#frames canvas.fullsize").length&&add_frame(),rendering=!0,encoder.reset();var a=1e3*$("#framedelay").float()||100;$("#frames canvas.fullsize").each(function(){var b=cq(this.width,this.height).fillStyle($("#background").string()).fillRect(0,0,this.width,this.height).drawImage(this,0,0);encoder.addFrame(b.canvas,a)}),$("#pause,#render,#add-frame").disable(),$("#workspace").find("img").remove(),$("#rendered").show(),status("encoding");try{encoder.encode()}catch(b){throw $("#pause,#render,#add-frame").enable(),rendering=!1,status(b),b}$("#render").html("rendering")}}function get_filename(){var a=$("#url").val().replace(/^.*\//,"").replace(/\..*$/,"").replace(/[^-_ a-zA-Z0-9]/g,""),b=user.username,c=a+"-"+b+"-"+ +new Date+".gif";return c.replace(/ /g,"_").replace(/-+/g,"-")}function save(){if(lastGif){var a=get_filename(),b=dataUriToBlob(lastGif);saveAs(b,a)}}function saveJSON(a,b){for(var c=JSON.stringify(a),d=new ArrayBuffer(c.length),e=new Uint8Array(d),f=0;fl;l++)for(var m=0;h>m;m++)q=4*(m*w+l),r=f[q],g=f[q+1],b=f[q+2],a=f[q+3],result=shader(l,m,d,i),f[q]=r,f[q+1]=g,f[q+2]=b,f[q+3]=a,w=j,h=k;cc.putImageData(e,0,0)}function shade_error_handling(c,d){if(!d||isNaN(d))throw Error("No time specified");if(!c||!c.ctx||!c.cloneData)throw Error("No frame specified");var e=c.ctx.getImageData(0,0,w,h),f=e.data,i=c.cloneData.data;try{for(var j=w,k=h,l=0;w>l;l++)for(var m=0;h>m;m++)q=4*(m*w+l),r=f[q],g=f[q+1],b=f[q+2],a=f[q+3],result=shader(l,m,d,i),f[q]=r,f[q+1]=g,f[q+2]=b,f[q+3]=a,w=j,h=k}catch(n){var o=(n.stack+"").split("\n");if("anonymous@"===o[0].substr(0,10)){var p=o[0].match(firefox_stack_regexp);p.length>1&&error_highlight.on(parseInt(p[1])-5)}else if(o.length>1){var p=o[1].match(chrome_stack_regexp);p&&p.length>1&&error_highlight.on(parseInt(p[1])-3)}throw Error("Shader execution error")}cc.putImageData(e,0,0),shade=shade_no_error_handling,error_highlight.off()}function drag_start(){dragging=!0,$(this).addClass("dragging")}function drag_stop(){dragging=!1,$(".dragging").removeClass("dragging")}function status(a){$(".status").html(a),console.log(a)}function quiet_status(a){$(".status").html(a)}function new_shader(){shader_id_root=null,run_shader({id:"",shader_id:"",image_url:$("#url").val(),script:"",name:""})}function run_shader(a){console.log(a),shader_id_root=a.shader_id,$("#persist-image:checked").length&&($("#url").val(a.image_url),load()),$("#shader").val(a.script),$("#shader-id").val(a.id),$("#shader-name").val(a.name||""),shader_build()}function load_shaders(a,b){var c=$("#shader-gallery").empty();for(var d in b){var e=display_shader(b[d]);c.append(e)}firsttime&&(firsttime=!1,run_shader(b[0]))}function display_shader(a){var b=$("
").addClass("shader");b.data("shader",a),b.data("id",a.id);var c=shader_gallery_template;for(var d in a)c=c.replace("{"+d+"}",a[d]);return b.html(c),a.id&&b.data("id",a.id),b}function save_shader(){shader_id_root=shader_id_root||"";var a={script:$("#shader").val(),image_url:$("#url").val(),username:user.username,name:$("#shader-name").val()||"",shader_id:shader_id_root},b=make_thumbnail();status("saving.."),console.log(a),$.post("http://asdf.us/cgi-bin/im/shader/save",a,function(c){return console.log(c),data=JSON.parse(c),data.ERROR?(status("error saving shader"),alert(data.ERROR),!1):(status("uploading thumbnail"),shader_id_root||(shader_id_root=data.id),a.id=data.id,a.thumbnail_url="http://i.asdf.us/im/9a/chtiny3_1334529294_1334529329.gif",$shader=display_shader(a),$("#shader-gallery").prepend($shader),void save_thumbnail(data.id,b))})}function make_thumbnail(){return dataUriToBlob(cc.clone().resize(200,200).canvas.toDataURL("image/png"))}function save_thumbnail(a,b){if(a&&""!=a){b=b||make_thumbnail();var c=new FormData;c.append("id",a),c.append("qqfile",b),$.ajax({url:"http://asdf.us/cgi-bin/im/shader/thumbnail_upload",type:"POST",data:c,processData:!1,contentType:!1}).done(function(b){console.log(b),status("");var c=JSON.parse(b);c.success&&$(".shader[data-id="+a+"]").find("img").attr("src",c.url)})}}function init(){$("#url").change(load),$("#reset").click(reset),$("#pause").click(pause),$("#step-forward").click(step_forward),$(document).on("mousemove",function(a){mousex=a.pageX,mousey=a.pageY}),$("#toggle-shaders").click(function(){$("#header .form").hide(),$("#shader-api-form").show(),$(".bold").removeClass("bold"),$(this).addClass("bold")}).trigger("click"),$("#toggle-images").click(function(){$("#header .form").hide(),$("#gallery-form").show(),$(".bold").removeClass("bold"),$(this).addClass("bold"),asdf.fetched||$("#gallery-random").trigger("click")}),$(".toggle-off").click(function(){$("#header .form").hide(),$(".bold").removeClass("bold")}),$("#width").change(function(){w=abs(parseInt(this.value,10))||1,cc.canvas.width=w,cc.canvas.height=h}),$("#height").change(function(){h=abs(parseInt(this.value,10))||1,cc.canvas.width=w,cc.canvas.height=h}),$("#show-frame-controls").click(function(){$("#frame-controls").show(),$("#frame-hidden-controls").hide()}),$("#hide-frame-controls").click(function(){$("#frame-controls").hide(),$("#frame-hidden-controls").show()}),$("#reorder-frames").change(function(){var a=$(this).val();switch(console.log(a),a){case"weave-frames":weave_frames();break;case"shuffle-frames":shuffle_frames();break;case"reverse-frames":reverse_frames();break;case"sort-frames":sort_frames();break;default:return}render()}),load(),help.init(),user.init(),frame_editor.init(),shader_gallery.init(),gallery.init(choose),document.getElementById("shader").addEventListener("input",shader_build),requestAnimationFrame(animate)}!function(a,b){return"object"==typeof exports&&"object"==typeof module?b(exports):"function"==typeof define&&define.amd?define(["exports"],b):void b(a.acorn||(a.acorn={}))}(this,function(a){"use strict";function b(a){lb=a||{};for(var b in pb)Object.prototype.hasOwnProperty.call(lb,b)||(lb[b]=pb[b]);ob=lb.sourceFile||null}function c(a,b){var c=qb(mb,a);b+=" ("+c.line+":"+c.column+")";var d=new SyntaxError(b);throw d.pos=a,d.loc=c,d.raisedAt=rb,d}function d(a){function b(a){if(1==a.length)return c+="return str === "+JSON.stringify(a[0])+";";c+="switch(str){";for(var b=0;b3){d.sort(function(a,b){return b.length-a.length}),c+="switch(str.length){";for(var e=0;erb&&10!==c&&13!==c&&8232!==c&&8233!==c;)++rb,c=mb.charCodeAt(rb);lb.onComment&&lb.onComment(!1,mb.slice(a+2,rb),a,rb,b,lb.locations&&new e)}function j(){for(;nb>rb;){var a=mb.charCodeAt(rb);if(32===a)++rb;else if(13===a){++rb;var b=mb.charCodeAt(rb);10===b&&++rb,lb.locations&&(++zb,Ab=rb)}else if(10===a||8232===a||8233===a)++rb,lb.locations&&(++zb,Ab=rb);else if(a>8&&14>a)++rb;else if(47===a){var b=mb.charCodeAt(rb+1);if(42===b)h();else{if(47!==b)break;i()}}else if(160===a)++rb;else{if(!(a>=5760&&Sc.test(String.fromCharCode(a))))break;++rb}}}function k(){var a=mb.charCodeAt(rb+1);return a>=48&&57>=a?y(!0):(++rb,g(uc))}function l(){var a=mb.charCodeAt(rb+1);return yb?(++rb,v()):61===a?u(yc,2):u(wc,1)}function m(){var a=mb.charCodeAt(rb+1);return 61===a?u(yc,2):u(Kc,1)}function n(a){var b=mb.charCodeAt(rb+1);return b===a?u(124===a?Bc:Cc,2):61===b?u(yc,2):u(124===a?Dc:Fc,1)}function o(){var a=mb.charCodeAt(rb+1);return 61===a?u(yc,2):u(Ec,1)}function p(a){var b=mb.charCodeAt(rb+1);return b===a?45==b&&62==mb.charCodeAt(rb+2)&&Xc.test(mb.slice(Cb,rb))?(rb+=3,i(),j(),t()):u(zc,2):61===b?u(yc,2):u(Jc,1)}function q(a){var b=mb.charCodeAt(rb+1),c=1;return b===a?(c=62===a&&62===mb.charCodeAt(rb+2)?3:2,61===mb.charCodeAt(rb+c)?u(yc,c+1):u(Ic,c)):33==b&&60==a&&45==mb.charCodeAt(rb+2)&&45==mb.charCodeAt(rb+3)?(rb+=4,i(),j(),t()):(61===b&&(c=61===mb.charCodeAt(rb+2)?3:2),u(Hc,c))}function r(a){var b=mb.charCodeAt(rb+1);return 61===b?u(Gc,61===mb.charCodeAt(rb+2)?3:2):u(61===a?xc:Ac,1)}function s(a){switch(a){case 46:return k();case 40:return++rb,g(pc);case 41:return++rb,g(qc);case 59:return++rb,g(sc);case 44:return++rb,g(rc);case 91:return++rb,g(lc);case 93:return++rb,g(mc);case 123:return++rb,g(nc);case 125:return++rb,g(oc);case 58:return++rb,g(tc);case 63:return++rb,g(vc);case 48:var b=mb.charCodeAt(rb+1);if(120===b||88===b)return x();case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return y(!1);case 34:case 39:return z(a);case 47:return l(a);case 37:case 42:return m();case 124:case 38:return n(a);case 94:return o();case 43:case 45:return p(a);case 60:case 62:return q(a);case 61:case 33:return r(a);case 126:return u(Ac,1)}return!1}function t(a){if(a?rb=sb+1:sb=rb,lb.locations&&(ub=new e),a)return v();if(rb>=nb)return g(Mb);var b=mb.charCodeAt(rb);if(Zc(b)||92===b)return C();var d=s(b);if(d===!1){var f=String.fromCharCode(b);if("\\"===f||Vc.test(f))return C();c(rb,"Unexpected character '"+f+"'")}return d}function u(a,b){var c=mb.slice(rb,rb+b);rb+=b,g(a,c)}function v(){for(var a,b,d="",e=rb;;){rb>=nb&&c(e,"Unterminated regular expression");var f=mb.charAt(rb);if(Xc.test(f)&&c(e,"Unterminated regular expression"),a)a=!1;else{if("["===f)b=!0;else if("]"===f&&b)b=!1;else if("/"===f&&!b)break;a="\\"===f}++rb}var d=mb.slice(e,rb);++rb;var h=B();h&&!/^[gmsiy]*$/.test(h)&&c(e,"Invalid regexp flag");try{var i=new RegExp(d,h)}catch(j){j instanceof SyntaxError&&c(e,j.message),c(j)}return g(Jb,i)}function w(a,b){for(var c=rb,d=0,e=0,f=null==b?1/0:b;f>e;++e){var g,h=mb.charCodeAt(rb);if(g=h>=97?h-97+10:h>=65?h-65+10:h>=48&&57>=h?h-48:1/0,g>=a)break;++rb,d=d*a+g}return rb===c||null!=b&&rb-c!==b?null:d}function x(){rb+=2;var a=w(16);return null==a&&c(sb+2,"Expected hexadecimal number"),Zc(mb.charCodeAt(rb))&&c(rb,"Identifier directly after number"),g(Ib,a)}function y(a){var b=rb,d=!1,e=48===mb.charCodeAt(rb);a||null!==w(10)||c(b,"Invalid number"),46===mb.charCodeAt(rb)&&(++rb,w(10),d=!0);var f=mb.charCodeAt(rb);(69===f||101===f)&&(f=mb.charCodeAt(++rb),(43===f||45===f)&&++rb,null===w(10)&&c(b,"Invalid number"),d=!0),Zc(mb.charCodeAt(rb))&&c(rb,"Identifier directly after number");var h,i=mb.slice(b,rb);return d?h=parseFloat(i):e&&1!==i.length?/[89]/.test(i)||Gb?c(b,"Invalid number"):h=parseInt(i,8):h=parseInt(i,10),g(Ib,h)}function z(a){rb++;for(var b="";;){rb>=nb&&c(sb,"Unterminated string constant");var d=mb.charCodeAt(rb);if(d===a)return++rb,g(Kb,b);if(92===d){d=mb.charCodeAt(++rb);var e=/^[0-7]+/.exec(mb.slice(rb,rb+3));for(e&&(e=e[0]);e&&parseInt(e,8)>255;)e=e.slice(0,-1);if("0"===e&&(e=null),++rb,e)Gb&&c(rb-2,"Octal literal in strict mode"),b+=String.fromCharCode(parseInt(e,8)),rb+=e.length-1;else switch(d){case 110:b+="\n";break;case 114:b+="\r";break;case 120:b+=String.fromCharCode(A(2));break;case 117:b+=String.fromCharCode(A(4));break;case 85:b+=String.fromCharCode(A(8));break;case 116:b+=" ";break;case 98:b+="\b";break;case 118:b+=" ";break;case 102:b+="\f";break;case 48:b+="\x00";break;case 13:10===mb.charCodeAt(rb)&&++rb;case 10:lb.locations&&(Ab=rb,++zb);break;default:b+=String.fromCharCode(d)}}else(13===d||10===d||8232===d||8233===d)&&c(sb,"Unterminated string constant"),b+=String.fromCharCode(d),++rb}}function A(a){var b=w(16,a);return null===b&&c(sb,"Bad character escape sequence"),b}function B(){Mc=!1;for(var a,b=!0,d=rb;;){var e=mb.charCodeAt(rb);if($c(e))Mc&&(a+=mb.charAt(rb)),++rb;else{if(92!==e)break;Mc||(a=mb.slice(d,rb)),Mc=!0,117!=mb.charCodeAt(++rb)&&c(rb,"Expecting Unicode escape sequence \\uXXXX"),++rb;var f=A(4),g=String.fromCharCode(f);g||c(rb-1,"Invalid Unicode escape"),(b?Zc(f):$c(f))||c(rb-4,"Invalid Unicode escape"),a+=g}b=!1}return Mc?a:mb.slice(d,rb)}function C(){var a=B(),b=Lb;return Mc||(Rc(a)?b=kc[a]:(lb.forbidReserved&&(3===lb.ecmaVersion?Nc:Oc)(a)||Gb&&Pc(a))&&c(sb,"The keyword '"+a+"' is reserved")),g(b,a)}function D(){Bb=sb,Cb=tb,Db=vb,t()}function E(a){if(Gb=a,rb=sb,lb.locations)for(;Ab>rb;)Ab=mb.lastIndexOf("\n",Ab-2)+1,--zb;j(),t()}function F(){this.type=null,this.start=sb,this.end=null}function G(){this.start=ub,this.end=null,null!==ob&&(this.source=ob)}function H(){var a=new F;return lb.locations&&(a.loc=new G),lb.directSourceFile&&(a.sourceFile=lb.directSourceFile),lb.ranges&&(a.range=[sb,0]),a}function I(a){var b=new F;return b.start=a.start,lb.locations&&(b.loc=new G,b.loc.start=a.loc.start),lb.ranges&&(b.range=[a.range[0],0]),b}function J(a,b){return a.type=b,a.end=Cb,lb.locations&&(a.loc.end=Db),lb.ranges&&(a.range[1]=Cb),a}function K(a){return lb.ecmaVersion>=5&&"ExpressionStatement"===a.type&&"Literal"===a.expression.type&&"use strict"===a.expression.value}function L(a){return wb===a?(D(),!0):void 0}function M(){return!lb.strictSemicolons&&(wb===Mb||wb===oc||Xc.test(mb.slice(Cb,sb)))}function N(){L(sc)||M()||P()}function O(a){wb===a?D():P()}function P(){c(sb,"Unexpected token")}function Q(a){"Identifier"!==a.type&&"MemberExpression"!==a.type&&c(a.start,"Assigning to rvalue"),Gb&&"Identifier"===a.type&&Qc(a.name)&&c(a.start,"Assigning to "+a.name+" in strict mode")}function R(a){Bb=Cb=rb,lb.locations&&(Db=new e),Eb=Gb=null,Fb=[],t();var b=a||H(),c=!0;for(a||(b.body=[]);wb!==Mb;){var d=S();b.body.push(d),c&&K(d)&&E(!0),c=!1}return J(b,"Program")}function S(){(wb===wc||wb===yc&&"/="==xb)&&t(!0);var a=wb,b=H();switch(a){case Nb:case Qb:D();var d=a===Nb;L(sc)||M()?b.label=null:wb!==Lb?P():(b.label=kb(),N());for(var e=0;eb){var e=I(a);e.left=a,e.operator=xb;var f=wb;D(),e.right=ab(bb(),d,c);var g=J(e,f===Bc||f===Cc?"LogicalExpression":"BinaryExpression");return ab(g,b,c)}return a}function bb(){if(wb.prefix){var a=H(),b=wb.isUpdate;return a.operator=xb,a.prefix=!0,yb=!0,D(),a.argument=bb(),b?Q(a.argument):Gb&&"delete"===a.operator&&"Identifier"===a.argument.type&&c(a.start,"Deleting local variable in strict mode"),J(a,b?"UpdateExpression":"UnaryExpression")}for(var d=cb();wb.postfix&&!M();){var a=I(d);a.operator=xb,a.prefix=!1,a.argument=d,Q(d),D(),d=J(a,"UpdateExpression")}return d}function cb(){return db(eb())}function db(a,b){if(L(uc)){var c=I(a);return c.object=a,c.property=kb(!0),c.computed=!1,db(J(c,"MemberExpression"),b)}if(L(lc)){var c=I(a);return c.object=a,c.property=Y(),c.computed=!0,O(mc),db(J(c,"MemberExpression"),b)}if(!b&&L(pc)){var c=I(a);return c.callee=a,c.arguments=jb(qc,!1),db(J(c,"CallExpression"),b)}return a}function eb(){switch(wb){case fc:var a=H();return D(),J(a,"ThisExpression");case Lb:return kb();case Ib:case Kb:case Jb:var a=H();return a.value=xb,a.raw=mb.slice(sb,tb),D(),J(a,"Literal");case gc:case hc:case ic:var a=H(); +return a.value=wb.atomValue,a.raw=wb.keyword,D(),J(a,"Literal");case pc:var b=ub,c=sb;D();var d=Y();return d.start=c,d.end=tb,lb.locations&&(d.loc.start=b,d.loc.end=vb),lb.ranges&&(d.range=[c,tb]),O(qc),d;case lc:var a=H();return D(),a.elements=jb(mc,!0,!0),J(a,"ArrayExpression");case nc:return gb();case Xb:var a=H();return D(),ib(a,!1);case ec:return fb();default:P()}}function fb(){var a=H();return D(),a.callee=db(eb(),!0),a.arguments=L(pc)?jb(qc,!1):Hb,J(a,"NewExpression")}function gb(){var a=H(),b=!0,d=!1;for(a.properties=[],D();!L(oc);){if(b)b=!1;else if(O(rc),lb.allowTrailingCommas&&L(oc))break;var e,f={key:hb()},g=!1;if(L(tc)?(f.value=Y(!0),e=f.kind="init"):lb.ecmaVersion>=5&&"Identifier"===f.key.type&&("get"===f.key.name||"set"===f.key.name)?(g=d=!0,e=f.kind=f.key.name,f.key=hb(),wb!==pc&&P(),f.value=ib(H(),!1)):P(),"Identifier"===f.key.type&&(Gb||d))for(var h=0;hg?a.id:a.params[g];if((Pc(h.name)||Qc(h.name))&&c(h.start,"Defining '"+h.name+"' in strict mode"),g>=0)for(var i=0;g>i;++i)h.name===a.params[i].name&&c(h.start,"Argument name clash in strict mode")}return J(a,b?"FunctionDeclaration":"FunctionExpression")}function jb(a,b,c){for(var d=[],e=!0;!L(a);){if(e)e=!1;else if(O(rc),b&&lb.allowTrailingCommas&&L(a))break;d.push(c&&wb===rc?null:Y(!0))}return d}function kb(a){var b=H();return b.name=wb===Lb?xb:a&&!lb.forbidReserved&&wb.keyword||P(),yb=!1,D(),J(b,"Identifier")}a.version="0.4.1";var lb,mb,nb,ob;a.parse=function(a,c){return mb=String(a),nb=mb.length,b(c),f(),R(lb.program)};var pb=a.defaultOptions={ecmaVersion:5,strictSemicolons:!1,allowTrailingCommas:!0,forbidReserved:!1,locations:!1,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null},qb=a.getLineInfo=function(a,b){for(var c=1,d=0;;){Yc.lastIndex=d;var e=Yc.exec(a);if(!(e&&e.indexa?36===a:91>a?!0:97>a?95===a:123>a?!0:a>=170&&Vc.test(String.fromCharCode(a))},$c=a.isIdentifierChar=function(a){return 48>a?36===a:58>a?!0:65>a?!1:91>a?!0:97>a?95===a:123>a?!0:a>=170&&Wc.test(String.fromCharCode(a))},_c={kind:"loop"},ad={kind:"switch"}}),function(a,b,c,d){function e(d){if(!c[d]){if(!b[d]){if(a)return a(d);throw new Error("Cannot find module '"+d+"'")}var f=c[d]={exports:{}};b[d][0](function(a){var c=b[d][1][a];return e(c?c:a)},f,f.exports)}return c[d].exports}for(var f=0;f1){var g={};g[arguments[0]]=arguments[1]}else var g=arguments[0];for(var h in g){c=h.split(" ");var f=g[h];"function"==typeof f&&(f=[f]);for(var b=0;d=c[b];b++){if(d in e.listeners)a=e.listeners;else{if(!(d in e.globListeners))continue;a=e.globListeners}a[d]=a[d].filter(function(a){return-1===f.indexOf(a)})}}return e},i.proto.send=function(a){i.total[a]||(i.total[a]=0),i.total[a]+=1;var b,c,f,g=this.listeners,j=this.globListeners,k=d(a);if(arguments.length){var l=Array.prototype.splice.call(arguments,1);l.push(a)}else var l=[];for(var m=0;c=k[m];m++){var n={},o={};if(b=g[c])for(var p=0;f=b[p];p++)n[f.uid]=f,o[f.uid]=c;var q=c.split(":");for(var r in j){if("*"!==r){var s=h[r]||(h[r]=r.split(":"));if(!e(s,q))continue}b=j[r];for(var p=0;f=b[p];p++)n[f.uid]=f,o[f.uid]=c}var t=[];for(var f in n)t.push(n[f]);for(var f,p=0;f=t[p];p++)f.apply(f,l)}return this},b.exports=i},{"./object/setproto":7,"./string/tokenize":8,"./string/globber":9,"./uid":10,"./nexttick":11}],7:[function(a,b){var c=function(a,b){if(a.__proto__)a.__proto__=b;else for(var c in b)a[c]=b[c]};b.exports=c},{}],8:[function(a,b){var c=function(a,b){return a.trim().split(b||c.default)};c.default=/\s+/g,b.exports=c},{}],9:[function(a,b){var c=function(a,b){var d,e=a[0],f=a.slice(1),g=b.length;if("*"===e){for(var h=0;g>=h;++h)if(c(f,b.slice(h)))return!0;return!1}return d=e===b[0],d&&(!f.length&&!g||c(f,b.slice(1)))};b.exports=c},{}],10:[function(a,b){var c=function(){return c.counter++ +""};c.counter=1,b.exports=c},{}],11:[function(a,b){if(window.ActiveXObject||!window.postMessage)var c=function(a){setTimeout(a,0)};else{var d=[],e="next-tick-zero-timeout";window.addEventListener("message",function(a){a.source==window&&a.data==e&&(a.stopPropagation&&a.stopPropagation(),d.length&&d.shift()())},!0);var c=function(a){d.push(a),window.postMessage(e,"*")}}b.exports=c},{}],4:[function(a,b){var c=(a("./benchmark"),a("./object/setproto")),d=a("./object/extend"),e=a("./tube"),f=function(a,b){var d=e();return c(d,f.proto),b&&b.benchmark&&(d.benchmark=b.benchmark),d.src=a,d};f.proto={},d(f.proto,e.proto),f.proto.load=function(){var a=this,b=a.src;"string"==typeof b?a.loadFromUrl(b):b instanceof File?a.loadFromFile(b):b instanceof ArrayBuffer&&a("load",b)},f.proto.loadFromFile=function(a){var b=this,c=new FileReader;c.addEventListener("load",function(a){b.benchmark&&b.benchmark.stop("fetch-from-disk"),b("load",c.result,a)}),c.addEventListener("error",function(a){b("error",a,c)}),c.addEventListener("progress",function(a){b("progress",a)}),b.benchmark&&b.benchmark.start("fetch-from-disk"),c.readAsArrayBuffer(a)},f.proto.loadFromUrl=function(a){var b=this,c=new XMLHttpRequest;c.open("GET",a),c.responseType="arraybuffer",c.addEventListener("load",function(a){b.benchmark&&b.benchmark.stop("fetch-from-network"),b("load",c.response,a)}),c.addEventListener("error",function(a){b("error",a,c)}),c.addEventListener("progress",function(a){b("progress",a)}),b.benchmark&&b.benchmark.start("fetch-from-network"),c.send()},b.exports=f},{"./benchmark":2,"./object/setproto":7,"./object/extend":12,"./tube":3}],12:[function(a,b){b.exports=function(a,b){for(var c in b)a[c]=b[c];return a}},{}],5:[function(a,b){!function(){var c=a("./spec").blockSigs,d=a("./spec").extSigs,e=a("./palette"),f=a("./animate").makeCurrentFrame,g=a("../../binaryspec"),h=a("./spec").spec,i=g(h),j=function(a){k(a)},k=function(a,b){b=b||"header";for(var c=a.buf;"done"!==b&&"error"!==b;)if(b in l&&"function"==typeof l[b])b=l[b](a);else{var d=i.parts[b].byteSize;if(c.abuf.byteLengthe){i=!0;break}if(h=d[g],g+=1,0===h){j+=1;break}if(g+h>e){i=!0;break}b.push(g+h),g+=h,j+=h+1}return i?(console.log("out of data"),!1):(c.cursor+=j,a.benchmark&&a.benchmark.stop("read-subblocks"),{start:f,blockEnds:b})};b.exports=j}()},{"./spec":13,"./palette":14,"./animate":15,"../../binaryspec":16}],13:[function(a,b,c){var d={33:"extension",44:"imageDesc",59:"trailer"};c.blockSigs=d;var e={249:"graphicControl",254:"comment",1:"plainText",255:"applicationExtension"};c.extSigs=e;var f={header:["str[3] signature","str[3] version"],screenDesc:["u16 w","u16 h","bit paletteExists","bit[3] resolution ignore","bit sortFlag ignore","bit[3] paletteSize","u8 bgColorIndex","u8 aspectRatio ignore"],imageDesc:["u8 sig ignore","u16 x","u16 y","u16 w","u16 h","bit paletteExists","bit interlaced","bit sortFlag","bit[2] reserved ignore","bit[3] paletteSize"],applicationExtension:["u8 sig ignore","u8 extSig ignore","u8 blockSize ignore","str[8] identifier","str[3] authCode ignore"],graphicControl:["u8 sig ignore","u8 extSig ignore","u8 blockSize ignore","bit[3] reserved ignore","bit[3] disposalMethod","bit userInput ignore","bit transparentColor","u16 delay","u8 transparentIndex","u8 blockTerminator ignore"],comment:["u8 sig ignore","u8 extSig ignore"],plainText:["u8 sig ignore","u8 extSig ignore","u8 blockSize","u16 textGridLeft","u16 textGridTop","u16 textGridWidth","u16 textGridHeight","u8 charCellWidth","u8 charCellHeight","u8 fgColorIndex","u8 bgColorIndex"],imageData:["u8 lzwCodeSize"]};c.spec=f},{}],14:[function(a,b){!function(){var c=a("../../color/rgba2css"),d=(a("../../create/2d"),a("../../create/imagedata")),e={};e.binary2rgba=function(a){for(var b=new Uint8Array(a.byteLength/3*4),c=0,d=0,e=a.byteLength/3*4;e>d;d+=4)b[d]=a[c],b[d+1]=a[c+1],b[d+2]=a[c+2],b[d+3]=255,c+=3;return b},e.create=function(a){var b={0:0},e=["rgba(0,0,0,0)"],f=[[0,0,0,0]],g=function(a){for(var d=0,g=a.length;g>d;d+=4){var h=a[d+3];if(0!==h){var i=a[d],j=a[d+1],k=a[d+2],l=(i|j<<8|k<<16|h<<24).toString();if(!(l in b)){b[l]=f.length;var m=[i,j,k,h];f.push(m),e.push(c(m))}}}};"palette"in a&&g(a.palette);for(var h=0;hk;k+=4){var n=f[k/4];m[k]=n[0],m[k+1]=n[1],m[k+2]=n[2],m[k+3]=n[3]}return{rgba2Index:b,index2Rgba:f,index2Css:e,imagedata:j,length:f.length}},b.exports=e}()},{"../../color/rgba2css":17,"../../create/2d":18,"../../create/imagedata":19}],17:[function(a,b){var c=function(a){return"rgba("+a[0]+","+a[1]+","+a[2]+","+a[3]+")"};b.exports=c},{}],18:[function(a,b){var c=function(a,b){var c=document.createElement("canvas");return c.width=a||0,c.height=b||0,c.getContext("2d")};"undefined"!=typeof b&&(b.exports=c)},{}],19:[function(a,b){var c=function d(a,b){return d.ctx.createImageData(a,b)};c.ctx=document.createElement("canvas").getContext("2d"),"undefined"!=typeof b&&(b.exports=c)},{}],15:[function(a,b,c){var d=function(){var a=100;1===this.frames.length&&(this.currentFrame=function(){return 0});for(var b=0,c=[],d=0;d0?10*f.delay:a;b+=g,c.push(b)}this.currentFrame=e(c)},e=function(a){var b=a[a.length-1];return function(c){for(var d=(c||Date.now())%b,e=0;e1,m=b[j]*k;d.fields.push({name:g[1],type:j,ignore:h,bitSize:m,isArray:l}),e+=m}return d.bitSize=e,d.byteSize=e/8,d};e.proto.decodeBinaryFieldsToJSON=function(a,b,c){for(var e=this,f=e.parts[a],h={},i=f.fields.length,j=0,k=0;i>k;k++){var l=f.fields[k];if(!l.ignore){{var m=j%8,n=Math.floor((j-m)/8);n+Math.ceil(l.bitSize/8)}switch(l.type){case"u8":h[l.name]=c.u8[b+n];break;case"i8":h[l.name]=c.dv.getInt8(b+n);break;case"u16":h[l.name]=c.dv.getUint16(b+n,!0);break;case"i16":h[l.name]=c.dv.getInt16(b+n,!0);break;case"u32":h[l.name]=c.dv.getUint32(b+n,!0);break;case"i32":h[l.name]=c.dv.getInt32(b+n,!0);break;case"str":h[l.name]=g(c.abuf,b+n,l.bitSize>>3);break;case"bit":if(l.isArray){for(var o=new d(c.abuf,b+n),p=[],q=m;q>3],c=7&a;return b>>7-c&1},b.exports=c},{}],6:[function(a,b){var c=a("../../create/2d"),d=a("../../create/imagedata"),e=a("../../nexttick"),f=a("./decode-lzw"),g=function(a,b){b=b||{};var d=a.benchmark||!1,i=b.frameNum||0;if(0===i)for(var j=0;j=a.frames.length)return a.rendered=!0,void a.tube("rendered");var k=a.frames[i],l=a.buf.pixeldata;d&&d.start("decompress-lzw"),f(k.blockinfo,a.buf.u8,k.lzwCodeSize,k.w,k.h,l),d&&d.stop("decompress-lzw"),k.interlaced&&(d&&d.start("deinterlace"),l=m(l,k.w,k.h),d&&d.stop("deinterlace")),d&&d.start("pixeldata-to-canvas"),h(l,a,i),d&&d.stop("pixeldata-to-canvas");var n=g.bind(void 0,a,{frameNum:i+1});e(n)},h=function(a,b,c){var d=b.frames[c],e=d.ctx;if(0===c)return void e.putImageData(k(a,b,d),d.x,d.y,0,0,d.w,d.h);var f,g=c-1,h=b.frames[g],l=h.ctx.canvas;if((0===h.disposalMethod||1===h.disposalMethod)&&(f=i(b,c,a),e.drawImage(l,0,0),e.drawImage(f.canvas,0,0,d.w,d.h,d.x,d.y,d.w,d.h)),2===h.disposalMethod&&(0===h.x&&0===h.y&&h.w===b.w&&h.h===b.h?e.putImageData(j(b,c,a),d.x,d.y,0,0,d.w,d.h):(h.y>0&&e.drawImage(l,0,0,b.w,h.y,0,0,b.w,h.y),h.x>0&&e.drawImage(l,0,h.y,h.x,h.h,0,h.y,h.x,h.h),h.x+h.w0&&3===b.frames[g].disposalMethod;)g-=1;h=b.frames[g],3!=h.disposalMethod&&e.drawImage(h.ctx.canvas,0,0),f=i(b,c,a),e.drawImage(f.canvas,0,0,d.w,d.h,d.x,d.y,d.w,d.h)}},i=function(a,b,d){if(i.ctx&&i.ctx.canvas.width===a.w&&i.ctx.canvas.height===a.h)var e=i.ctx;else var e=i.ctx=c(a.w,a.h);var f=a.frames[b];d=d||f.pixelData;var g="palette"in f?f.palette:a.palette,h="transparentIndex"in f?f.transparentIndex:-1;h>-1&&(g[4*h+3]=0);var j=l(a,g,d,f.w,f.h,h);return e.putImageData(j,0,0,0,0,f.w,f.h),e},j=function(a,b,c){var d=a.frames[b];c=c||d.pixelData;var e="palette"in d?d.palette:a.palette,f="transparentIndex"in d?d.transparentIndex:-1;return f>-1&&(e[4*f+3]=0),l(a,e,c,d.w,d.h,f)},k=function(a,b,c){var d="palette"in c?c.palette:b.palette,e="transparentIndex"in c?c.transparentIndex:-1;return e>-1&&(d[4*e+3]=0),l(b,d,a,c.w,c.h,e)},l=function(a,b,c,e,f){if(l.imagedata&&l.imagedata.width===a.w&&l.imagedata.height===a.h)var g=l.imagedata;else var g=l.imagedata=d(a.w,a.h);for(var h=g.data,i=0,j=0;f>j;j++)for(var k=j*a.w,m=0;e>m;m++){var n=4*(m+k),o=4*c[i];h[n]=b[o],h[n+1]=b[o+1],h[n+2]=b[o+2],h[n+3]=b[o+3],i+=1}return g},m=function(a,b,c){for(var d=new Uint8Array(a.length),e=Math.ceil(c/8),f=Math.ceil(c/4),g=Math.ceil(c/2),h=0;c>h;h++){var i,j=b*h;i=h%8===0?b*(h/8):(h+4)%8===0?b*((h-4)/8+e):h%2===0?b*((h-2)/4+f):b*((h-1)/2+g);for(var k=0;b>k;k++)d[j+k]=a[i+k]}return d};b.exports=g},{"../../create/2d":18,"../../create/imagedata":19,"../../nexttick":11,"./decode-lzw":21}],21:[function(a,b){var c=function(a,b,c,d,e,f,g){var h,i,j,k=4096,l=-1,m=d*e,n=0,o=0,p=0,f=f||new Uint8Array(m),q=new Uint16Array(2*k),r=new Uint8Array(k),s=new Uint8Array(k+1),t=1<h;h++)q[h]=0,r[h]=h;for(var y=0,z=0,A=a.start,B=a.blockEnds,C=B.shift(),D=0;m>D;){if(0===o){if(w>y){z+=b[A]<>=w,y-=w,h>v&&console.log(":("),h===u){console.log("fuck");break}if(h===t){w=c+1,x=(1<t;)s[o++]=r[h],h=q[h];n=r[h],s[o++]=n,q[v]=j,r[v]=n,v++,0===(v&x)&&k>v&&(w++,x+=v),j=i}o--,f[p++]=g?g[s[o]]:s[o],D++}return f};b.exports=c},{}]},{},[1]);var nextTick=function(){if(window.ActiveXObject||!window.postMessage)var a=function(a){setTimeout(a,0)};else{var b=[],c="next-tick-zero-timeout";window.addEventListener("message",function(a){a.source==window&&a.data==c&&(a.stopPropagation&&a.stopPropagation(),b.length&&b.shift()())},!0);var a=function(a){b.push(a),window.postMessage(c,"*")}}return a}(),Uid=function(){var a=0;return function(){return a++ +""}}(),tokenize=function(){var a=function(b,c){return b.trim().split(c||a.default)};return a.default=/\s+/g,a}(),globber=function(a,b){var c,d=a[0],e=a.slice(1),f=b.length;if("*"===d){for(var g=0;f>=g;++g)if(globber(e,b.slice(g)))return!0;return!1}return c=d===b[0],c&&(!e.length&&!f||globber(e,b.slice(1)))},setproto=function(a,b){if(a.__proto__)a.__proto__=b;else for(var c in b)a[c]=b[c]},Tube=function(){var a={},b=function(a){if(a=a||{},a.queue)var c=function(){var a=arguments;return nextTick(function(){c.send.apply(c,a)}),c};else var c=function(){return c.send.apply(c,arguments),c};return setproto(c,b.proto),c.listeners={},c.globListeners={},c};return b.total={},b.proto={},b.proto.on=function(){var a=this;if("string"==typeof arguments[0]){var b={};b[arguments[0]]=arguments[1];{arguments[2]||{}}}else{var b=arguments[0];arguments[1]||{}}for(var c in b){var d=c.split(" "),e=b[c];Array.isArray(e)||(e=[e]);for(var f,g=0;f=e[g];g++)f.uid||(f.uid=Uid());for(var h,g=0;h=d[g];g++){var i=-1===h.indexOf("*")?a.listeners:a.globListeners;i[h]=h in i?i[h].concat(e):e.concat()}}return a},b.proto.off=function(){var a,b,c,d,e=this;if(0===arguments.length)return e.listeners={},e.globListeners={},e;if(1===arguments.length&&"string"==typeof arguments[0]){for(c=arguments[0].split(" "),b=0;d=c[b];b++)delete e.listeners[d],delete e.globListeners[d];return e}if("function"==typeof arguments[0]||Array.isArray(arguments[0])){var f="function"==typeof arguments[0]?[arguments[0]]:arguments[0];return e}if(arguments.length>1){var g={};g[arguments[0]]=arguments[1]}else var g=arguments[0];for(var h in g){c=h.split(" ");var f=g[h];"function"==typeof f&&(f=[f]);for(var b=0;d=c[b];b++){if(d in e.listeners)a=e.listeners;else{if(!(d in e.globListeners))continue;a=e.globListeners}a[d]=a[d].filter(function(a){return-1===f.indexOf(a)})}}return e},b.proto.send=function(c){b.total[c]||(b.total[c]=0),b.total[c]+=1;var d,e,f,g=this.listeners,h=this.globListeners,i=tokenize(c);if(arguments.length){var j=Array.prototype.splice.call(arguments,1);j.push(c)}else var j=[];for(var k=0;e=i[k];k++){var l={},m={};if(d=g[e])for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e;var o=e.split(":");for(var p in h){if("*"!==p){var q=a[p]||(a[p]=p.split(":"));if(!globber(q,o))continue}d=h[p];for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e}var r=[];for(var f in l)r.push(l[f]);for(var f,n=0;f=r[n];n++)f.apply(f,j)}return this},b}(),FRAMES_PER_GIF=36,FPS=12,DELAY=Math.floor(1e3/FPS),WORKERS=6,FRAMES_TO_QUANTIZE=4,DO_UPLOAD=!0;!function(a,b){function c(a){var b=a.length,c=fb.type(a);return fb.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||"function"!==c&&(0===b||"number"==typeof b&&b>0&&b-1 in a)}function d(a){var b=ob[a]={};return fb.each(a.match(hb)||[],function(a,c){b[c]=!0}),b}function e(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=fb.expando+Math.random()}function f(a,c,d){var e;if(d===b&&1===a.nodeType)if(e="data-"+c.replace(sb,"-$1").toLowerCase(),d=a.getAttribute(e),"string"==typeof d){try{d="true"===d?!0:"false"===d?!1:"null"===d?null:+d+""===d?+d:rb.test(d)?JSON.parse(d):d}catch(f){}pb.set(a,c,d)}else d=b;return d}function g(){return!0}function h(){return!1}function i(){try{return T.activeElement}catch(a){}}function j(a,b){for(;(a=a[b])&&1!==a.nodeType;);return a}function k(a,b,c){if(fb.isFunction(b))return fb.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return fb.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(Cb.test(b))return fb.filter(b,a,c);b=fb.filter(b,a)}return fb.grep(a,function(a){return bb.call(b,a)>=0!==c})}function l(a,b){return fb.nodeName(a,"table")&&fb.nodeName(1===b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function m(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function n(a){var b=Nb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function o(a,b){for(var c=a.length,d=0;c>d;d++)qb.set(a[d],"globalEval",!b||qb.get(b[d],"globalEval"))}function p(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(qb.hasData(a)&&(f=qb.access(a),g=qb.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)fb.event.add(b,e,j[e][c])}pb.hasData(a)&&(h=pb.access(a),i=fb.extend({},h),pb.set(b,i))}}function q(a,c){var d=a.getElementsByTagName?a.getElementsByTagName(c||"*"):a.querySelectorAll?a.querySelectorAll(c||"*"):[];return c===b||c&&fb.nodeName(a,c)?fb.merge([a],d):d}function r(a,b){var c=b.nodeName.toLowerCase();"input"===c&&Kb.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}function s(a,b){if(b in a)return b;for(var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=_b.length;e--;)if(b=_b[e]+c,b in a)return b;return d}function t(a,b){return a=b||a,"none"===fb.css(a,"display")||!fb.contains(a.ownerDocument,a)}function u(b){return a.getComputedStyle(b,null)}function v(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=qb.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&t(d)&&(f[g]=qb.access(d,"olddisplay",z(d.nodeName)))):f[g]||(e=t(d),(c&&"none"!==c||!e)&&qb.set(d,"olddisplay",e?c:fb.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function w(a,b,c){var d=Ub.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function x(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=fb.css(a,c+$b[f],!0,e)),d?("content"===c&&(g-=fb.css(a,"padding"+$b[f],!0,e)),"margin"!==c&&(g-=fb.css(a,"border"+$b[f]+"Width",!0,e))):(g+=fb.css(a,"padding"+$b[f],!0,e),"padding"!==c&&(g+=fb.css(a,"border"+$b[f]+"Width",!0,e))); +return g}function y(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=u(a),g=fb.support.boxSizing&&"border-box"===fb.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Qb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Vb.test(e))return e;d=g&&(fb.support.boxSizingReliable||e===a.style[b]),e=parseFloat(e)||0}return e+x(a,b,c||(g?"border":"content"),d,f)+"px"}function z(a){var b=T,c=Xb[a];return c||(c=A(a,b),"none"!==c&&c||(Rb=(Rb||fb("
+ + + + diff --git a/package.json b/package.json index 8aa641a..4faacfc 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,8 @@ "grunt": "~0.4.1", "grunt-contrib-concat": "~0.3.0", "grunt-contrib-uglify": "~0.2.5", - "grunt-contrib-watch": "~0.5.3" + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-clean": "~0.5.0", + "grunt-dentist": "~0.2.0" } } -- cgit v1.2.3-70-g09d2 From 03d746887a9ca5ad7c2d0a40c0ca6ae877704d43 Mon Sep 17 00:00:00 2001 From: jules Date: Tue, 28 Jan 2014 10:02:19 -0500 Subject: grunt install task --- Gruntfile.js | 9 +++++++++ package.json | 1 + 2 files changed, 10 insertions(+) (limited to 'Gruntfile.js') diff --git a/Gruntfile.js b/Gruntfile.js index 77ac474..db8e0c0 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -53,6 +53,13 @@ module.exports = function(grunt) { }, clean: { release: ["dist/app.concat.js","dist/app.init.js"], + }, + copy: { + release: { + files: [ + {expand: true, src: ['dist/*'], dest: '~/asdf/shader/', nonull: true}, + ] + }, }, watch: { files: ['dist/!(app.min|app.concat).js'], @@ -65,9 +72,11 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-clean'); + grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-dentist'); // Default task(s). grunt.registerTask('default', ['dentist', 'concat', 'uglify']); + grunt.registerTask('install', ['dentist', 'concat', 'uglify', 'clean', 'copy']); }; diff --git a/package.json b/package.json index 4faacfc..53a3c10 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "grunt-contrib-uglify": "~0.2.5", "grunt-contrib-watch": "~0.5.3", "grunt-contrib-clean": "~0.5.0", + "grunt-contrib-copy": "~0.5.0", "grunt-dentist": "~0.2.0" } } -- cgit v1.2.3-70-g09d2 From e5e70c9b784d476ec64c18d9f04e890d17f63d66 Mon Sep 17 00:00:00 2001 From: Jules Date: Tue, 28 Jan 2014 10:12:41 -0500 Subject: proper path expansion --- Gruntfile.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'Gruntfile.js') diff --git a/Gruntfile.js b/Gruntfile.js index db8e0c0..688104d 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -57,7 +57,13 @@ module.exports = function(grunt) { copy: { release: { files: [ - {expand: true, src: ['dist/*'], dest: '~/asdf/shader/', nonull: true}, + { + nonull: true, + expand: true, + cwd: 'dist/', + src: ['**'], + dest: process.env.HOME + '/asdf/shader/', + }, ] }, }, -- cgit v1.2.3-70-g09d2 From 89ab28ddbc63a13a98314b107624b68d0109466e Mon Sep 17 00:00:00 2001 From: jules Date: Wed, 29 Jan 2014 10:21:57 -0500 Subject: gif-encode.min.js --- Gruntfile.js | 12 ++++++++++++ js/vendor/gif-encode.min.js | 2 ++ shader-combo.html | 4 +--- 3 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 js/vendor/gif-encode.min.js (limited to 'Gruntfile.js') diff --git a/Gruntfile.js b/Gruntfile.js index 688104d..7908f2a 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -10,6 +10,18 @@ module.exports = function(grunt) { dest_html: 'dist/index.html' } }, + blobify: { + worker: { + src: [ + 'js/gif-encode/GIFEncoder.js', + 'js/gif-encode/LZWEncoder.js', + 'js/gif-encode/NeuQuant.js', + 'js/gif-encode/worker.js', + ] + dest: 'js/gif-encode/worker.concat.js' + } + }, + }, concat: { dist: { src: [ diff --git a/js/vendor/gif-encode.min.js b/js/vendor/gif-encode.min.js new file mode 100644 index 0000000..70cbb2f --- /dev/null +++ b/js/vendor/gif-encode.min.js @@ -0,0 +1,2 @@ +/* asdf.us/gif-recorder */ +function shuffle(a){var b=new Array(a.length);b[0]=a[0];for(var c=1;cb;b++){var d=new Worker("js/vendor/gif-encode/worker.js");d.onmessage=a.receiveWork,c.push(d)}};var d={};a.hire=function(a,b){d[a]=b},a.work=function(a){c[++b%c.length].postMessage(a)},a.receiveWork=function(a){a.data.task in d&&d[a.data.task](a)},a.fire=function(){for(var b in c)c[b].postMessage("close");c=[],a.init()},a.init()}function b(a){console.log("[WORKER]",a.data.message)}function c(a){console.log(Date.now()-q,"quantization done"),i=a.data.neuquant,j=a.data.colortab,f.quantized=!0,f.tube("quantized")}function d(a){var b=a.data.frame_index,c=a.data.frame_data;m[b]=c,f.tube("encoded-frame",m.length,k.length);for(var d=0;d=g;++g)if(globber(e,b.slice(g)))return!0;return!1}return c=d===b[0],c&&(!e.length&&!f||globber(e,b.slice(1)))},setproto=function(a,b){if(a.__proto__)a.__proto__=b;else for(var c in b)a[c]=b[c]},Tube=function(){var a={},b=function(a){if(a=a||{},a.queue)var c=function(){var a=arguments;return nextTick(function(){c.send.apply(c,a)}),c};else var c=function(){return c.send.apply(c,arguments),c};return setproto(c,b.proto),c.listeners={},c.globListeners={},c};return b.total={},b.proto={},b.proto.on=function(){var a=this;if("string"==typeof arguments[0]){var b={};b[arguments[0]]=arguments[1];{arguments[2]||{}}}else{var b=arguments[0];arguments[1]||{}}for(var c in b){var d=c.split(" "),e=b[c];Array.isArray(e)||(e=[e]);for(var f,g=0;f=e[g];g++)f.uid||(f.uid=Uid());for(var h,g=0;h=d[g];g++){var i=-1===h.indexOf("*")?a.listeners:a.globListeners;i[h]=h in i?i[h].concat(e):e.concat()}}return a},b.proto.off=function(){var a,b,c,d,e=this;if(0===arguments.length)return e.listeners={},e.globListeners={},e;if(1===arguments.length&&"string"==typeof arguments[0]){for(c=arguments[0].split(" "),b=0;d=c[b];b++)delete e.listeners[d],delete e.globListeners[d];return e}if("function"==typeof arguments[0]||Array.isArray(arguments[0])){var f="function"==typeof arguments[0]?[arguments[0]]:arguments[0];return e}if(arguments.length>1){var g={};g[arguments[0]]=arguments[1]}else var g=arguments[0];for(var h in g){c=h.split(" ");var f=g[h];"function"==typeof f&&(f=[f]);for(var b=0;d=c[b];b++){if(d in e.listeners)a=e.listeners;else{if(!(d in e.globListeners))continue;a=e.globListeners}a[d]=a[d].filter(function(a){return-1===f.indexOf(a)})}}return e},b.proto.send=function(c){b.total[c]||(b.total[c]=0),b.total[c]+=1;var d,e,f,g=this.listeners,h=this.globListeners,i=tokenize(c);if(arguments.length){var j=Array.prototype.splice.call(arguments,1);j.push(c)}else var j=[];for(var k=0;e=i[k];k++){var l={},m={};if(d=g[e])for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e;var o=e.split(":");for(var p in h){if("*"!==p){var q=a[p]||(a[p]=p.split(":"));if(!globber(q,o))continue}d=h[p];for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e}var r=[];for(var f in l)r.push(l[f]);for(var f,n=0;f=r[n];n++)f.apply(f,j)}return this},b}(),FRAMES_PER_GIF=36,FPS=12,DELAY=Math.floor(1e3/FPS),WORKERS=6,FRAMES_TO_QUANTIZE=4,DO_UPLOAD=!0; \ No newline at end of file diff --git a/shader-combo.html b/shader-combo.html index beb40ea..42583e7 100644 --- a/shader-combo.html +++ b/shader-combo.html @@ -147,9 +147,7 @@ a { color: #00f; } - - - + -- cgit v1.2.3-70-g09d2 From eb8ecd371955adaa45feec7b902ac16af75319ef Mon Sep 17 00:00:00 2001 From: jules Date: Wed, 29 Jan 2014 10:23:01 -0500 Subject: add gif encoder to gruntfile --- Gruntfile.js | 16 +--------------- dist/app.min.js | 6 +++--- 2 files changed, 4 insertions(+), 18 deletions(-) (limited to 'Gruntfile.js') diff --git a/Gruntfile.js b/Gruntfile.js index 7908f2a..258e602 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -10,26 +10,12 @@ module.exports = function(grunt) { dest_html: 'dist/index.html' } }, - blobify: { - worker: { - src: [ - 'js/gif-encode/GIFEncoder.js', - 'js/gif-encode/LZWEncoder.js', - 'js/gif-encode/NeuQuant.js', - 'js/gif-encode/worker.js', - ] - dest: 'js/gif-encode/worker.concat.js' - } - }, - }, concat: { dist: { src: [ "js/vendor/acorn.js", "js/vendor/gif.js", - "js/vendor/gif-encode/util.js", - "js/vendor/gif-encode/tube.js", - "js/vendor/gif-encode/client.js", + "js/vendor/gif-encode.min.js", "js/vendor/jquery/jquery.min.js", "js/vendor/jquery-ui-1.10.3.custom.min.js", "js/vendor/canvasquery.js", diff --git a/dist/app.min.js b/dist/app.min.js index 58b69ed..fcdaf09 100644 --- a/dist/app.min.js +++ b/dist/app.min.js @@ -1,9 +1,9 @@ /* asdf.us/shader */ -function shuffle(a){var b=new Array(a.length);b[0]=a[0];for(var c=1;cb;b++){var d=new Worker("js/vendor/gif-encode/worker.js");d.onmessage=a.receiveWork,c.push(d)}};var d={};a.hire=function(a,b){d[a]=b},a.work=function(a){c[++b%c.length].postMessage(a)},a.receiveWork=function(a){a.data.task in d&&d[a.data.task](a)},a.fire=function(){for(var b in c)c[b].postMessage("close");c=[],a.init()},a.init()}function b(a){console.log("[WORKER]",a.data.message)}function c(a){console.log(Date.now()-q,"quantization done"),i=a.data.neuquant,j=a.data.colortab,f.quantized=!0,f.tube("quantized")}function d(a){var b=a.data.frame_index,c=a.data.frame_data;m[b]=c,f.tube("encoded-frame",m.length,k.length);for(var d=0;da?b:c>a?a:c}function lerp(a,b,c){return(c-b)*a+b}function mix(a,b,c){return b*(1-a)+c*a}function ceil(a){return Math.ceil(a)}function floor(a){return Math.floor(a)}function round(a){return Math.round(a)}function max(a){return Math.max(a)}function min(a){return Math.min(a)}function abs(a){return Math.abs(a)}function sign(a){return Math.abs(a)/a}function pow(a,b){return Math.pow(a,b)}function exp(a){return Math.exp(a)}function sqrt(a){return Math.sqrt(a,b)}function cos(a){return Math.cos(a)}function sin(a){return Math.sin(a)}function tan(a){return Math.tan(a)}function acos(a){return Math.cos(a)}function asin(a){return Math.sin(a)}function atan(a){return Math.atan(a)}function atan2(a){return Math.atan2(a)}function sec(a){return 1/cos(a)}function csc(a){return 1/sin(a)}function cot(a){return 1/tan(a)}function cosp(a){return(1+Math.cos(a))/2}function sinp(a){return(1+Math.sin(a))/2}function random(){return Math.random()}function rand(a){return Math.random()*a}function randint(a){return 0|rand(a)}function choice(a){return a[randint(a.length)]}function deg(a){return 180*a/PI}function rad(a){return a*PI/180}function xor(a,b){return a=!!a,b=!!b,(a||b)&&!(a&&b)}function mod(a,b){return a-b*floor(a/b)}function dist(a,b,c,d){return sqrt(pow(c-a,2)+pow(d-b,2))}function angle(a,b,c,d){return atan2(d-b,c-a)}function avg(a,b,c){return(a*(c-1)+b)/c}function pixel(a,b){return 4*(mod(b,actual_h)*actual_w+mod(a,actual_w))}function rgbpixel(c,d,e){var f=pixel(~~d,~~e);r=c[f],g=c[f+1],b=c[f+2],a=c[f+3]}function fit(a,b,c){rgbpixel(a,b*actual_w/w,c*actual_h/h)}function step(a,b){return(b>=a)+0}function julestep(a,b,c){return clamp((c-a)/(b-a),0,1)}function smoothstep(a,b,c){var d=clamp((c-a)/(b-a),0,1);return d*d*(3-2*d)}function shuffle(a){for(var b=a.length;b>0;b--){var c=randint(b),d=a[b-1];a[b-1]=a[c],a[c]=d}return a}function reverse(a){for(var b=[],c=0,d=a.length-1;d>=c;c++)b[c]=a[d-c];return b}function deinterlace(a){for(var b=[],c=[],d=0,e=a.length;e>d;d++)d%2?c.push(a[d]):b.push(a[d]);return[c,b]}function weave(a){var b=deinterlace(a),c=[];return b[0].forEach(function(a){c.push(a)}),reverse(b[1]).forEach(function(a){c.push(a)}),c}function rgb(a,c,d){r=a,g=c,b=d}function rgbref(a){r=a[0],g=a[1],b=a[2]}function black(){rgb(0,0,0)}function white(){rgb(255,255,255)}function red(){rgb(255,0,0)}function gray(a){1>a&&(a*=255),rgb(a,a,a)}function rgb2xyz(a){var b=a[0]/255,c=a[1]/255,d=a[2]/255;b>.04045?b=(b+.055)/1.055^2.4:b/=12.92,c>.04045?c=(c+.055)/1.055^2.4:c/=12.92,d>.04045?d=(d+.055)/1.055^2.4:d/=12.92,b=100*b,c=100*c,d=100*d;var e=.4124*b+.3576*c+.1805*d,f=.2126*b+.7152*c+.0722*d,g=.0193*b+.1192*c+.9505*d;return[e,f,g]}function xyz2rgb(a){var b=a[0]/100,c=a[1]/100,d=a[2]/100;var_R=3.2406*b+-1.5372*c+d*-.4986,var_G=b*-.9689+1.8758*c+.0415*d,var_B=.0557*b+c*-.204+1.057*d,var_R=var_R>.0031308?1.055*Math.pow(var_R,1/2.4)-.055:12.92*var_R,var_G=var_G>.0031308?1.055*Math.pow(var_G,1/2.4)-.055:12.92*var_G,var_B=var_B>.0031308?1.055*Math.pow(var_B,1/2.4)-.055:12.92*var_B;var e=clamp(255*var_R,0,255),f=clamp(255*var_G,0,255),g=clamp(255*var_B,0,255);return[e,f,g]}function xyz2hunterlab(a){var b=a[0],c=a[1],d=a[2],e=10*sqrt(c),f=17.5*((1.02*b-c)/sqrt(c)),g=7*((c-.847*d)/sqrt(c));return[e,f,g]}function hunterlab2xyz(a){var b=a[0],c=a[1],d=a[2];return var_Y=b/10,var_X=c/17.5*b/10,var_Z=d/7*b/10,Y=Math.pow(var_Y,2),X=(var_X+Y)/1.02,Z=-(var_Z-Y)/.847,[X,Y,Z]}function xyz2cielab(a){var b=a[0]/ref_X,c=a[1]/ref_Y,d=a[2]/ref_Z;b=b>.008856?Math.pow(b,1/3):7.787*b+16/116,c=c>.008856?Math.pow(c,1/3):7.787*c+16/116,d=d>.008856?Math.pow(d,1/3):7.787*d+16/116;var e=116*c-16,f=500*(b-c),g=200*(c-d);return[e,f,g]}function cielab2xyz(a){var b=(a[0]+16)/116,c=a[1]/500+b,d=b-a[2]/200;b=b^!0?Math.pow(b,3):(b-16/116)/7.787,c=c^!0?Math.pow(c,3):(c-16/116)/7.787,d=d^!0?Math.pow(d,3):(d-16/116)/7.787;return[x,y,z]}function rgb2hsl(a){var b,c,d=a[0],e=a[1],f=a[2],g=d/255,h=e/255,i=f/255,j=min(g,h,i),k=max(g,h,i),l=k-j,m=(k+j)/2;if(0==l)b=0,c=0;else{c=.5>m?l/(k+j):l/(2-k-j);var n=((k-g)/6+l/2)/l,o=((k-h)/6+l/2)/l,p=((k-i)/6+l/2)/l;g==k?b=p-o:h==k?b=1/3+n-p:i==k&&(b=2/3+o-n),0>b&&(b+=1),b>1&&(b-=1)}return[b,c,m]}function hsl2rgb(a,b,c){var d,e,f,g,h;return 0==b?(d=255*c,e=255*c,f=255*c):(h=.5>c?c*(1+b):c+b-b*c,g=2*c-h,d=255*hue2rgb(g,h,a+1/3),e=255*hue2rgb(g,h,a),f=255*hue2rgb(g,h,a-1/3)),[d,e,f]}function hue2rgb(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1>6*c?a+6*(b-a)*c:1>2*c?b:2>3*c?a+(b-a)*(2/3-c)*6:a}function rgb2cmy(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=1-a/255,e=1-b/255,f=1-c/255;return[d,e,f]}function cmy2rgb(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=255*(1-a),e=255*(1-b),f=255*(1-c);return[d,e,f]}function cmy2cmyk(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=1;d>a&&(d=a),d>b&&(d=b),d>c&&(d=c),1==d?(a=0,b=0,c=0):(a=(a-d)/(1-d),b=(b-d)/(1-d),c=(c-d)/(1-d));var e=d;return[a,b,c,e]}function cmyk2cmy(a,b,c,d){a.length&&(d=a[3],c=a[2],b=a[1],a=a[0]);var a=a*(1-d)+d,b=b*(1-d)+d,c=c*(1-d)+d;return[a,b,c]}function loadImage(a,b){var a=proxify(a);return window.imageURL=a,window.gif=window.img=null,a?"gif"===a.substr(-3)?(window.gif=GIF(a),gif.on("rendered",b),gif.render()):(window.img=new Image,img.addEventListener("load",b),img.crossOrigin="anonymous",img.src=a):(window.gif=null,window.img=null,b(),void 0)}function giveImage(a){return window.gif?gif.frames[gif.currentFrame(a)]:img}function proxify(a){return 0==a.indexOf("http")?"/cgi-bin/proxy?"+a.replace(/^https/,"http"):a}function filesize(a){return 1e3>a?a+" bytes":1e6>a?decimalString(a/1e3)+" kb":1e9>a?decimalString(a/1e6)+" mb":"WAY TOO BIG DUDE"}function decimalString(a){var b=Math.floor(a);return b+"."+Math.round(10*(a-b))}function noop(){}function uploadImage(a){if(a.blob&&a.filename){a.username=a.username||"",a.success=a.success||noop,a.error=a.error||noop;var b=new FormData;b.append("username",a.username),b.append("filename",a.filename),b.append("qqfile",a.blob);var c=new XMLHttpRequest;c.open("POST","/cgi-bin/im/upload"),c.onload=function(){if(200==c.status){var b=JSON.parse(c.responseText);b.success?a.success(b):a.error(b)}else a.error({success:!1,error:c.status})},c.send(b)}}function add_frame(){var a=$("#framecount").int();2>a?add_single_frame():add_frames(a)}function add_single_frame(){var a=$("
");a.html($("#frame-template").html()),a.attr("index",$("#frames div").length);var b=cc.clone().appendTo(a.find(".frame")[0]);b.canvas.className="fullsize",b.canvas.style.display="none";cc.clone().resize(frame_thumb_size,frame_thumb_size).appendTo(a.find(".frame")[0]);$("#frames").append(a)}function add_frames(a){rendering=!0;for(var b,c=old_t-start_t-pause_t,d=1e3*($("#frameinterval").float()||$("#framedelay").float()),e=0;a>e;e++)b=giveFrame(c),c+=d,shade(b,c),add_single_frame();rendering=!1}function remove_frame(){$(this).closest("div").remove()}function remove_all_frames(){$("#frames").empty()}function shuffle_frames(){var a=$("#frames div");$("#frames").empty().append(shuffle(a))}function reverse_frames(){var a=$("#frames div");$("#frames").empty().append(reverse(a))}function weave_frames(){var a=$("#frames div");$("#frames").empty().append(weave(a))}function sort_frames(){var a=$("#frames div"),b=a.map(function(a,b){return console.log(a,b),[[b.getAttribute("index"),b]]}).sort(function(a,b){return a[0]-b[0]}).map(function(a,b){return console.log(b),b[1]});$("#frames").empty().append(b)}function render(){if(!rendering){0==$("#frames canvas.fullsize").length&&add_frame(),rendering=!0,encoder.reset();var a=1e3*$("#framedelay").float()||100;$("#frames canvas.fullsize").each(function(){var b=cq(this.width,this.height).fillStyle($("#background").string()).fillRect(0,0,this.width,this.height).drawImage(this,0,0);encoder.addFrame(b.canvas,a)}),$("#pause,#render,#add-frame").disable(),$("#workspace").find("img").remove(),$("#rendered").show(),status("encoding");try{encoder.encode()}catch(b){throw $("#pause,#render,#add-frame").enable(),rendering=!1,status(b),b}$("#render").html("rendering")}}function get_filename(){var a=$("#url").val().replace(/^.*\//,"").replace(/\..*$/,"").replace(/[^-_ a-zA-Z0-9]/g,""),b=user.username,c=a+"-"+b+"-"+ +new Date+".gif";return c.replace(/ /g,"_").replace(/-+/g,"-")}function save(){if(lastGif){var a=get_filename(),b=dataUriToBlob(lastGif);saveAs(b,a)}}function saveJSON(a,b){for(var c=JSON.stringify(a),d=new ArrayBuffer(c.length),e=new Uint8Array(d),f=0;fl;l++)for(var m=0;h>m;m++)q=4*(m*w+l),r=f[q],g=f[q+1],b=f[q+2],a=f[q+3],result=shader(l,m,d,i),f[q]=r,f[q+1]=g,f[q+2]=b,f[q+3]=a,w=j,h=k;cc.putImageData(e,0,0)}function shade_error_handling(c,d){if(!d||isNaN(d))throw Error("No time specified");if(!c||!c.ctx||!c.cloneData)throw Error("No frame specified");var e=c.ctx.getImageData(0,0,w,h),f=e.data,i=c.cloneData.data;try{for(var j=w,k=h,l=0;w>l;l++)for(var m=0;h>m;m++)q=4*(m*w+l),r=f[q],g=f[q+1],b=f[q+2],a=f[q+3],result=shader(l,m,d,i),f[q]=r,f[q+1]=g,f[q+2]=b,f[q+3]=a,w=j,h=k}catch(n){var o=(n.stack+"").split("\n");if("anonymous@"===o[0].substr(0,10)){var p=o[0].match(firefox_stack_regexp);p.length>1&&error_highlight.on(parseInt(p[1])-5)}else if(o.length>1){var p=o[1].match(chrome_stack_regexp);p&&p.length>1&&error_highlight.on(parseInt(p[1])-3)}throw Error("Shader execution error")}cc.putImageData(e,0,0),shade=shade_no_error_handling,error_highlight.off()}function drag_start(){dragging=!0,$(this).addClass("dragging")}function drag_stop(){dragging=!1,$(".dragging").removeClass("dragging")}function status(a){$(".status").html(a),console.log(a)}function quiet_status(a){$(".status").html(a)}function new_shader(){shader_id_root=null,run_shader({id:"",shader_id:"",image_url:$("#url").val(),script:"",name:""})}function run_shader(a){console.log(a),shader_id_root=a.shader_id,$("#persist-image:checked").length&&($("#url").val(a.image_url),load()),$("#shader").val(a.script),$("#shader-id").val(a.id),$("#shader-name").val(a.name||""),shader_build()}function load_shaders(a,b){var c=$("#shader-gallery").empty();for(var d in b){var e=display_shader(b[d]);c.append(e)}firsttime&&(firsttime=!1,run_shader(b[0]))}function display_shader(a){var b=$("
").addClass("shader");b.data("shader",a),b.data("id",a.id);var c=shader_gallery_template;for(var d in a)c=c.replace("{"+d+"}",a[d]);return b.html(c),a.id&&b.data("id",a.id),b}function save_shader(){shader_id_root=shader_id_root||"";var a={script:$("#shader").val(),image_url:$("#url").val(),username:user.username,name:$("#shader-name").val()||"",shader_id:shader_id_root},b=make_thumbnail();status("saving.."),console.log(a),$.post("http://asdf.us/cgi-bin/im/shader/save",a,function(c){return console.log(c),data=JSON.parse(c),data.ERROR?(status("error saving shader"),alert(data.ERROR),!1):(status("uploading thumbnail"),shader_id_root||(shader_id_root=data.id),a.id=data.id,a.thumbnail_url="http://i.asdf.us/im/9a/chtiny3_1334529294_1334529329.gif",$shader=display_shader(a),$("#shader-gallery").prepend($shader),void save_thumbnail(data.id,b))})}function make_thumbnail(){return dataUriToBlob(cc.clone().resize(200,200).canvas.toDataURL("image/png"))}function save_thumbnail(a,b){if(a&&""!=a){b=b||make_thumbnail();var c=new FormData;c.append("id",a),c.append("qqfile",b),$.ajax({url:"http://asdf.us/cgi-bin/im/shader/thumbnail_upload",type:"POST",data:c,processData:!1,contentType:!1}).done(function(b){console.log(b),status("");var c=JSON.parse(b);c.success&&$(".shader[data-id="+a+"]").find("img").attr("src",c.url)})}}function init(){$("#url").change(load),$("#reset").click(reset),$("#pause").click(pause),$("#step-forward").click(step_forward),$(document).on("mousemove",function(a){mousex=a.pageX,mousey=a.pageY}),$("#toggle-shaders").click(function(){$("#header .form").hide(),$("#shader-api-form").show(),$(".bold").removeClass("bold"),$(this).addClass("bold")}).trigger("click"),$("#toggle-images").click(function(){$("#header .form").hide(),$("#gallery-form").show(),$(".bold").removeClass("bold"),$(this).addClass("bold"),asdf.fetched||$("#gallery-random").trigger("click")}),$(".toggle-off").click(function(){$("#header .form").hide(),$(".bold").removeClass("bold")}),$("#width").change(function(){w=abs(parseInt(this.value,10))||1,cc.canvas.width=w,cc.canvas.height=h}),$("#height").change(function(){h=abs(parseInt(this.value,10))||1,cc.canvas.width=w,cc.canvas.height=h}),$("#show-frame-controls").click(function(){$("#frame-controls").show(),$("#frame-hidden-controls").hide()}),$("#hide-frame-controls").click(function(){$("#frame-controls").hide(),$("#frame-hidden-controls").show()}),$("#reorder-frames").change(function(){var a=$(this).val();switch(console.log(a),a){case"weave-frames":weave_frames();break;case"shuffle-frames":shuffle_frames();break;case"reverse-frames":reverse_frames();break;case"sort-frames":sort_frames();break;default:return}render()}),load(),help.init(),user.init(),frame_editor.init(),shader_gallery.init(),gallery.init(choose),document.getElementById("shader").addEventListener("input",shader_build),requestAnimationFrame(animate)}!function(a,b){return"object"==typeof exports&&"object"==typeof module?b(exports):"function"==typeof define&&define.amd?define(["exports"],b):void b(a.acorn||(a.acorn={}))}(this,function(a){"use strict";function b(a){lb=a||{};for(var b in pb)Object.prototype.hasOwnProperty.call(lb,b)||(lb[b]=pb[b]);ob=lb.sourceFile||null}function c(a,b){var c=qb(mb,a);b+=" ("+c.line+":"+c.column+")";var d=new SyntaxError(b);throw d.pos=a,d.loc=c,d.raisedAt=rb,d}function d(a){function b(a){if(1==a.length)return c+="return str === "+JSON.stringify(a[0])+";";c+="switch(str){";for(var b=0;b3){d.sort(function(a,b){return b.length-a.length}),c+="switch(str.length){";for(var e=0;erb&&10!==c&&13!==c&&8232!==c&&8233!==c;)++rb,c=mb.charCodeAt(rb);lb.onComment&&lb.onComment(!1,mb.slice(a+2,rb),a,rb,b,lb.locations&&new e)}function j(){for(;nb>rb;){var a=mb.charCodeAt(rb);if(32===a)++rb;else if(13===a){++rb;var b=mb.charCodeAt(rb);10===b&&++rb,lb.locations&&(++zb,Ab=rb)}else if(10===a||8232===a||8233===a)++rb,lb.locations&&(++zb,Ab=rb);else if(a>8&&14>a)++rb;else if(47===a){var b=mb.charCodeAt(rb+1);if(42===b)h();else{if(47!==b)break;i()}}else if(160===a)++rb;else{if(!(a>=5760&&Sc.test(String.fromCharCode(a))))break;++rb}}}function k(){var a=mb.charCodeAt(rb+1);return a>=48&&57>=a?y(!0):(++rb,g(uc))}function l(){var a=mb.charCodeAt(rb+1);return yb?(++rb,v()):61===a?u(yc,2):u(wc,1)}function m(){var a=mb.charCodeAt(rb+1);return 61===a?u(yc,2):u(Kc,1)}function n(a){var b=mb.charCodeAt(rb+1);return b===a?u(124===a?Bc:Cc,2):61===b?u(yc,2):u(124===a?Dc:Fc,1)}function o(){var a=mb.charCodeAt(rb+1);return 61===a?u(yc,2):u(Ec,1)}function p(a){var b=mb.charCodeAt(rb+1);return b===a?45==b&&62==mb.charCodeAt(rb+2)&&Xc.test(mb.slice(Cb,rb))?(rb+=3,i(),j(),t()):u(zc,2):61===b?u(yc,2):u(Jc,1)}function q(a){var b=mb.charCodeAt(rb+1),c=1;return b===a?(c=62===a&&62===mb.charCodeAt(rb+2)?3:2,61===mb.charCodeAt(rb+c)?u(yc,c+1):u(Ic,c)):33==b&&60==a&&45==mb.charCodeAt(rb+2)&&45==mb.charCodeAt(rb+3)?(rb+=4,i(),j(),t()):(61===b&&(c=61===mb.charCodeAt(rb+2)?3:2),u(Hc,c))}function r(a){var b=mb.charCodeAt(rb+1);return 61===b?u(Gc,61===mb.charCodeAt(rb+2)?3:2):u(61===a?xc:Ac,1)}function s(a){switch(a){case 46:return k();case 40:return++rb,g(pc);case 41:return++rb,g(qc);case 59:return++rb,g(sc);case 44:return++rb,g(rc);case 91:return++rb,g(lc);case 93:return++rb,g(mc);case 123:return++rb,g(nc);case 125:return++rb,g(oc);case 58:return++rb,g(tc);case 63:return++rb,g(vc);case 48:var b=mb.charCodeAt(rb+1);if(120===b||88===b)return x();case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return y(!1);case 34:case 39:return z(a);case 47:return l(a);case 37:case 42:return m();case 124:case 38:return n(a);case 94:return o();case 43:case 45:return p(a);case 60:case 62:return q(a);case 61:case 33:return r(a);case 126:return u(Ac,1)}return!1}function t(a){if(a?rb=sb+1:sb=rb,lb.locations&&(ub=new e),a)return v();if(rb>=nb)return g(Mb);var b=mb.charCodeAt(rb);if(Zc(b)||92===b)return C();var d=s(b);if(d===!1){var f=String.fromCharCode(b);if("\\"===f||Vc.test(f))return C();c(rb,"Unexpected character '"+f+"'")}return d}function u(a,b){var c=mb.slice(rb,rb+b);rb+=b,g(a,c)}function v(){for(var a,b,d="",e=rb;;){rb>=nb&&c(e,"Unterminated regular expression");var f=mb.charAt(rb);if(Xc.test(f)&&c(e,"Unterminated regular expression"),a)a=!1;else{if("["===f)b=!0;else if("]"===f&&b)b=!1;else if("/"===f&&!b)break;a="\\"===f}++rb}var d=mb.slice(e,rb);++rb;var h=B();h&&!/^[gmsiy]*$/.test(h)&&c(e,"Invalid regexp flag");try{var i=new RegExp(d,h)}catch(j){j instanceof SyntaxError&&c(e,j.message),c(j)}return g(Jb,i)}function w(a,b){for(var c=rb,d=0,e=0,f=null==b?1/0:b;f>e;++e){var g,h=mb.charCodeAt(rb);if(g=h>=97?h-97+10:h>=65?h-65+10:h>=48&&57>=h?h-48:1/0,g>=a)break;++rb,d=d*a+g}return rb===c||null!=b&&rb-c!==b?null:d}function x(){rb+=2;var a=w(16);return null==a&&c(sb+2,"Expected hexadecimal number"),Zc(mb.charCodeAt(rb))&&c(rb,"Identifier directly after number"),g(Ib,a)}function y(a){var b=rb,d=!1,e=48===mb.charCodeAt(rb);a||null!==w(10)||c(b,"Invalid number"),46===mb.charCodeAt(rb)&&(++rb,w(10),d=!0);var f=mb.charCodeAt(rb);(69===f||101===f)&&(f=mb.charCodeAt(++rb),(43===f||45===f)&&++rb,null===w(10)&&c(b,"Invalid number"),d=!0),Zc(mb.charCodeAt(rb))&&c(rb,"Identifier directly after number");var h,i=mb.slice(b,rb);return d?h=parseFloat(i):e&&1!==i.length?/[89]/.test(i)||Gb?c(b,"Invalid number"):h=parseInt(i,8):h=parseInt(i,10),g(Ib,h)}function z(a){rb++;for(var b="";;){rb>=nb&&c(sb,"Unterminated string constant");var d=mb.charCodeAt(rb);if(d===a)return++rb,g(Kb,b);if(92===d){d=mb.charCodeAt(++rb);var e=/^[0-7]+/.exec(mb.slice(rb,rb+3));for(e&&(e=e[0]);e&&parseInt(e,8)>255;)e=e.slice(0,-1);if("0"===e&&(e=null),++rb,e)Gb&&c(rb-2,"Octal literal in strict mode"),b+=String.fromCharCode(parseInt(e,8)),rb+=e.length-1;else switch(d){case 110:b+="\n";break;case 114:b+="\r";break;case 120:b+=String.fromCharCode(A(2));break;case 117:b+=String.fromCharCode(A(4));break;case 85:b+=String.fromCharCode(A(8));break;case 116:b+=" ";break;case 98:b+="\b";break;case 118:b+=" ";break;case 102:b+="\f";break;case 48:b+="\x00";break;case 13:10===mb.charCodeAt(rb)&&++rb;case 10:lb.locations&&(Ab=rb,++zb);break;default:b+=String.fromCharCode(d)}}else(13===d||10===d||8232===d||8233===d)&&c(sb,"Unterminated string constant"),b+=String.fromCharCode(d),++rb}}function A(a){var b=w(16,a);return null===b&&c(sb,"Bad character escape sequence"),b}function B(){Mc=!1;for(var a,b=!0,d=rb;;){var e=mb.charCodeAt(rb);if($c(e))Mc&&(a+=mb.charAt(rb)),++rb;else{if(92!==e)break;Mc||(a=mb.slice(d,rb)),Mc=!0,117!=mb.charCodeAt(++rb)&&c(rb,"Expecting Unicode escape sequence \\uXXXX"),++rb;var f=A(4),g=String.fromCharCode(f);g||c(rb-1,"Invalid Unicode escape"),(b?Zc(f):$c(f))||c(rb-4,"Invalid Unicode escape"),a+=g}b=!1}return Mc?a:mb.slice(d,rb)}function C(){var a=B(),b=Lb;return Mc||(Rc(a)?b=kc[a]:(lb.forbidReserved&&(3===lb.ecmaVersion?Nc:Oc)(a)||Gb&&Pc(a))&&c(sb,"The keyword '"+a+"' is reserved")),g(b,a)}function D(){Bb=sb,Cb=tb,Db=vb,t()}function E(a){if(Gb=a,rb=sb,lb.locations)for(;Ab>rb;)Ab=mb.lastIndexOf("\n",Ab-2)+1,--zb;j(),t()}function F(){this.type=null,this.start=sb,this.end=null}function G(){this.start=ub,this.end=null,null!==ob&&(this.source=ob)}function H(){var a=new F;return lb.locations&&(a.loc=new G),lb.directSourceFile&&(a.sourceFile=lb.directSourceFile),lb.ranges&&(a.range=[sb,0]),a}function I(a){var b=new F;return b.start=a.start,lb.locations&&(b.loc=new G,b.loc.start=a.loc.start),lb.ranges&&(b.range=[a.range[0],0]),b}function J(a,b){return a.type=b,a.end=Cb,lb.locations&&(a.loc.end=Db),lb.ranges&&(a.range[1]=Cb),a}function K(a){return lb.ecmaVersion>=5&&"ExpressionStatement"===a.type&&"Literal"===a.expression.type&&"use strict"===a.expression.value}function L(a){return wb===a?(D(),!0):void 0}function M(){return!lb.strictSemicolons&&(wb===Mb||wb===oc||Xc.test(mb.slice(Cb,sb)))}function N(){L(sc)||M()||P()}function O(a){wb===a?D():P()}function P(){c(sb,"Unexpected token")}function Q(a){"Identifier"!==a.type&&"MemberExpression"!==a.type&&c(a.start,"Assigning to rvalue"),Gb&&"Identifier"===a.type&&Qc(a.name)&&c(a.start,"Assigning to "+a.name+" in strict mode")}function R(a){Bb=Cb=rb,lb.locations&&(Db=new e),Eb=Gb=null,Fb=[],t();var b=a||H(),c=!0;for(a||(b.body=[]);wb!==Mb;){var d=S();b.body.push(d),c&&K(d)&&E(!0),c=!1}return J(b,"Program")}function S(){(wb===wc||wb===yc&&"/="==xb)&&t(!0);var a=wb,b=H();switch(a){case Nb:case Qb:D();var d=a===Nb;L(sc)||M()?b.label=null:wb!==Lb?P():(b.label=kb(),N());for(var e=0;eb){var e=I(a);e.left=a,e.operator=xb;var f=wb;D(),e.right=ab(bb(),d,c);var g=J(e,f===Bc||f===Cc?"LogicalExpression":"BinaryExpression");return ab(g,b,c)}return a}function bb(){if(wb.prefix){var a=H(),b=wb.isUpdate;return a.operator=xb,a.prefix=!0,yb=!0,D(),a.argument=bb(),b?Q(a.argument):Gb&&"delete"===a.operator&&"Identifier"===a.argument.type&&c(a.start,"Deleting local variable in strict mode"),J(a,b?"UpdateExpression":"UnaryExpression")}for(var d=cb();wb.postfix&&!M();){var a=I(d);a.operator=xb,a.prefix=!1,a.argument=d,Q(d),D(),d=J(a,"UpdateExpression")}return d}function cb(){return db(eb())}function db(a,b){if(L(uc)){var c=I(a);return c.object=a,c.property=kb(!0),c.computed=!1,db(J(c,"MemberExpression"),b)}if(L(lc)){var c=I(a);return c.object=a,c.property=Y(),c.computed=!0,O(mc),db(J(c,"MemberExpression"),b)}if(!b&&L(pc)){var c=I(a);return c.callee=a,c.arguments=jb(qc,!1),db(J(c,"CallExpression"),b)}return a}function eb(){switch(wb){case fc:var a=H();return D(),J(a,"ThisExpression");case Lb:return kb();case Ib:case Kb:case Jb:var a=H();return a.value=xb,a.raw=mb.slice(sb,tb),D(),J(a,"Literal");case gc:case hc:case ic:var a=H(); -return a.value=wb.atomValue,a.raw=wb.keyword,D(),J(a,"Literal");case pc:var b=ub,c=sb;D();var d=Y();return d.start=c,d.end=tb,lb.locations&&(d.loc.start=b,d.loc.end=vb),lb.ranges&&(d.range=[c,tb]),O(qc),d;case lc:var a=H();return D(),a.elements=jb(mc,!0,!0),J(a,"ArrayExpression");case nc:return gb();case Xb:var a=H();return D(),ib(a,!1);case ec:return fb();default:P()}}function fb(){var a=H();return D(),a.callee=db(eb(),!0),a.arguments=L(pc)?jb(qc,!1):Hb,J(a,"NewExpression")}function gb(){var a=H(),b=!0,d=!1;for(a.properties=[],D();!L(oc);){if(b)b=!1;else if(O(rc),lb.allowTrailingCommas&&L(oc))break;var e,f={key:hb()},g=!1;if(L(tc)?(f.value=Y(!0),e=f.kind="init"):lb.ecmaVersion>=5&&"Identifier"===f.key.type&&("get"===f.key.name||"set"===f.key.name)?(g=d=!0,e=f.kind=f.key.name,f.key=hb(),wb!==pc&&P(),f.value=ib(H(),!1)):P(),"Identifier"===f.key.type&&(Gb||d))for(var h=0;hg?a.id:a.params[g];if((Pc(h.name)||Qc(h.name))&&c(h.start,"Defining '"+h.name+"' in strict mode"),g>=0)for(var i=0;g>i;++i)h.name===a.params[i].name&&c(h.start,"Argument name clash in strict mode")}return J(a,b?"FunctionDeclaration":"FunctionExpression")}function jb(a,b,c){for(var d=[],e=!0;!L(a);){if(e)e=!1;else if(O(rc),b&&lb.allowTrailingCommas&&L(a))break;d.push(c&&wb===rc?null:Y(!0))}return d}function kb(a){var b=H();return b.name=wb===Lb?xb:a&&!lb.forbidReserved&&wb.keyword||P(),yb=!1,D(),J(b,"Identifier")}a.version="0.4.1";var lb,mb,nb,ob;a.parse=function(a,c){return mb=String(a),nb=mb.length,b(c),f(),R(lb.program)};var pb=a.defaultOptions={ecmaVersion:5,strictSemicolons:!1,allowTrailingCommas:!0,forbidReserved:!1,locations:!1,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null},qb=a.getLineInfo=function(a,b){for(var c=1,d=0;;){Yc.lastIndex=d;var e=Yc.exec(a);if(!(e&&e.indexa?36===a:91>a?!0:97>a?95===a:123>a?!0:a>=170&&Vc.test(String.fromCharCode(a))},$c=a.isIdentifierChar=function(a){return 48>a?36===a:58>a?!0:65>a?!1:91>a?!0:97>a?95===a:123>a?!0:a>=170&&Wc.test(String.fromCharCode(a))},_c={kind:"loop"},ad={kind:"switch"}}),function(a,b,c,d){function e(d){if(!c[d]){if(!b[d]){if(a)return a(d);throw new Error("Cannot find module '"+d+"'")}var f=c[d]={exports:{}};b[d][0](function(a){var c=b[d][1][a];return e(c?c:a)},f,f.exports)}return c[d].exports}for(var f=0;f1){var g={};g[arguments[0]]=arguments[1]}else var g=arguments[0];for(var h in g){c=h.split(" ");var f=g[h];"function"==typeof f&&(f=[f]);for(var b=0;d=c[b];b++){if(d in e.listeners)a=e.listeners;else{if(!(d in e.globListeners))continue;a=e.globListeners}a[d]=a[d].filter(function(a){return-1===f.indexOf(a)})}}return e},i.proto.send=function(a){i.total[a]||(i.total[a]=0),i.total[a]+=1;var b,c,f,g=this.listeners,j=this.globListeners,k=d(a);if(arguments.length){var l=Array.prototype.splice.call(arguments,1);l.push(a)}else var l=[];for(var m=0;c=k[m];m++){var n={},o={};if(b=g[c])for(var p=0;f=b[p];p++)n[f.uid]=f,o[f.uid]=c;var q=c.split(":");for(var r in j){if("*"!==r){var s=h[r]||(h[r]=r.split(":"));if(!e(s,q))continue}b=j[r];for(var p=0;f=b[p];p++)n[f.uid]=f,o[f.uid]=c}var t=[];for(var f in n)t.push(n[f]);for(var f,p=0;f=t[p];p++)f.apply(f,l)}return this},b.exports=i},{"./object/setproto":7,"./string/tokenize":8,"./string/globber":9,"./uid":10,"./nexttick":11}],7:[function(a,b){var c=function(a,b){if(a.__proto__)a.__proto__=b;else for(var c in b)a[c]=b[c]};b.exports=c},{}],8:[function(a,b){var c=function(a,b){return a.trim().split(b||c.default)};c.default=/\s+/g,b.exports=c},{}],9:[function(a,b){var c=function(a,b){var d,e=a[0],f=a.slice(1),g=b.length;if("*"===e){for(var h=0;g>=h;++h)if(c(f,b.slice(h)))return!0;return!1}return d=e===b[0],d&&(!f.length&&!g||c(f,b.slice(1)))};b.exports=c},{}],10:[function(a,b){var c=function(){return c.counter++ +""};c.counter=1,b.exports=c},{}],11:[function(a,b){if(window.ActiveXObject||!window.postMessage)var c=function(a){setTimeout(a,0)};else{var d=[],e="next-tick-zero-timeout";window.addEventListener("message",function(a){a.source==window&&a.data==e&&(a.stopPropagation&&a.stopPropagation(),d.length&&d.shift()())},!0);var c=function(a){d.push(a),window.postMessage(e,"*")}}b.exports=c},{}],4:[function(a,b){var c=(a("./benchmark"),a("./object/setproto")),d=a("./object/extend"),e=a("./tube"),f=function(a,b){var d=e();return c(d,f.proto),b&&b.benchmark&&(d.benchmark=b.benchmark),d.src=a,d};f.proto={},d(f.proto,e.proto),f.proto.load=function(){var a=this,b=a.src;"string"==typeof b?a.loadFromUrl(b):b instanceof File?a.loadFromFile(b):b instanceof ArrayBuffer&&a("load",b)},f.proto.loadFromFile=function(a){var b=this,c=new FileReader;c.addEventListener("load",function(a){b.benchmark&&b.benchmark.stop("fetch-from-disk"),b("load",c.result,a)}),c.addEventListener("error",function(a){b("error",a,c)}),c.addEventListener("progress",function(a){b("progress",a)}),b.benchmark&&b.benchmark.start("fetch-from-disk"),c.readAsArrayBuffer(a)},f.proto.loadFromUrl=function(a){var b=this,c=new XMLHttpRequest;c.open("GET",a),c.responseType="arraybuffer",c.addEventListener("load",function(a){b.benchmark&&b.benchmark.stop("fetch-from-network"),b("load",c.response,a)}),c.addEventListener("error",function(a){b("error",a,c)}),c.addEventListener("progress",function(a){b("progress",a)}),b.benchmark&&b.benchmark.start("fetch-from-network"),c.send()},b.exports=f},{"./benchmark":2,"./object/setproto":7,"./object/extend":12,"./tube":3}],12:[function(a,b){b.exports=function(a,b){for(var c in b)a[c]=b[c];return a}},{}],5:[function(a,b){!function(){var c=a("./spec").blockSigs,d=a("./spec").extSigs,e=a("./palette"),f=a("./animate").makeCurrentFrame,g=a("../../binaryspec"),h=a("./spec").spec,i=g(h),j=function(a){k(a)},k=function(a,b){b=b||"header";for(var c=a.buf;"done"!==b&&"error"!==b;)if(b in l&&"function"==typeof l[b])b=l[b](a);else{var d=i.parts[b].byteSize;if(c.abuf.byteLengthe){i=!0;break}if(h=d[g],g+=1,0===h){j+=1;break}if(g+h>e){i=!0;break}b.push(g+h),g+=h,j+=h+1}return i?(console.log("out of data"),!1):(c.cursor+=j,a.benchmark&&a.benchmark.stop("read-subblocks"),{start:f,blockEnds:b})};b.exports=j}()},{"./spec":13,"./palette":14,"./animate":15,"../../binaryspec":16}],13:[function(a,b,c){var d={33:"extension",44:"imageDesc",59:"trailer"};c.blockSigs=d;var e={249:"graphicControl",254:"comment",1:"plainText",255:"applicationExtension"};c.extSigs=e;var f={header:["str[3] signature","str[3] version"],screenDesc:["u16 w","u16 h","bit paletteExists","bit[3] resolution ignore","bit sortFlag ignore","bit[3] paletteSize","u8 bgColorIndex","u8 aspectRatio ignore"],imageDesc:["u8 sig ignore","u16 x","u16 y","u16 w","u16 h","bit paletteExists","bit interlaced","bit sortFlag","bit[2] reserved ignore","bit[3] paletteSize"],applicationExtension:["u8 sig ignore","u8 extSig ignore","u8 blockSize ignore","str[8] identifier","str[3] authCode ignore"],graphicControl:["u8 sig ignore","u8 extSig ignore","u8 blockSize ignore","bit[3] reserved ignore","bit[3] disposalMethod","bit userInput ignore","bit transparentColor","u16 delay","u8 transparentIndex","u8 blockTerminator ignore"],comment:["u8 sig ignore","u8 extSig ignore"],plainText:["u8 sig ignore","u8 extSig ignore","u8 blockSize","u16 textGridLeft","u16 textGridTop","u16 textGridWidth","u16 textGridHeight","u8 charCellWidth","u8 charCellHeight","u8 fgColorIndex","u8 bgColorIndex"],imageData:["u8 lzwCodeSize"]};c.spec=f},{}],14:[function(a,b){!function(){var c=a("../../color/rgba2css"),d=(a("../../create/2d"),a("../../create/imagedata")),e={};e.binary2rgba=function(a){for(var b=new Uint8Array(a.byteLength/3*4),c=0,d=0,e=a.byteLength/3*4;e>d;d+=4)b[d]=a[c],b[d+1]=a[c+1],b[d+2]=a[c+2],b[d+3]=255,c+=3;return b},e.create=function(a){var b={0:0},e=["rgba(0,0,0,0)"],f=[[0,0,0,0]],g=function(a){for(var d=0,g=a.length;g>d;d+=4){var h=a[d+3];if(0!==h){var i=a[d],j=a[d+1],k=a[d+2],l=(i|j<<8|k<<16|h<<24).toString();if(!(l in b)){b[l]=f.length;var m=[i,j,k,h];f.push(m),e.push(c(m))}}}};"palette"in a&&g(a.palette);for(var h=0;hk;k+=4){var n=f[k/4];m[k]=n[0],m[k+1]=n[1],m[k+2]=n[2],m[k+3]=n[3]}return{rgba2Index:b,index2Rgba:f,index2Css:e,imagedata:j,length:f.length}},b.exports=e}()},{"../../color/rgba2css":17,"../../create/2d":18,"../../create/imagedata":19}],17:[function(a,b){var c=function(a){return"rgba("+a[0]+","+a[1]+","+a[2]+","+a[3]+")"};b.exports=c},{}],18:[function(a,b){var c=function(a,b){var c=document.createElement("canvas");return c.width=a||0,c.height=b||0,c.getContext("2d")};"undefined"!=typeof b&&(b.exports=c)},{}],19:[function(a,b){var c=function d(a,b){return d.ctx.createImageData(a,b)};c.ctx=document.createElement("canvas").getContext("2d"),"undefined"!=typeof b&&(b.exports=c)},{}],15:[function(a,b,c){var d=function(){var a=100;1===this.frames.length&&(this.currentFrame=function(){return 0});for(var b=0,c=[],d=0;d0?10*f.delay:a;b+=g,c.push(b)}this.currentFrame=e(c)},e=function(a){var b=a[a.length-1];return function(c){for(var d=(c||Date.now())%b,e=0;e1,m=b[j]*k;d.fields.push({name:g[1],type:j,ignore:h,bitSize:m,isArray:l}),e+=m}return d.bitSize=e,d.byteSize=e/8,d};e.proto.decodeBinaryFieldsToJSON=function(a,b,c){for(var e=this,f=e.parts[a],h={},i=f.fields.length,j=0,k=0;i>k;k++){var l=f.fields[k];if(!l.ignore){{var m=j%8,n=Math.floor((j-m)/8);n+Math.ceil(l.bitSize/8)}switch(l.type){case"u8":h[l.name]=c.u8[b+n];break;case"i8":h[l.name]=c.dv.getInt8(b+n);break;case"u16":h[l.name]=c.dv.getUint16(b+n,!0);break;case"i16":h[l.name]=c.dv.getInt16(b+n,!0);break;case"u32":h[l.name]=c.dv.getUint32(b+n,!0);break;case"i32":h[l.name]=c.dv.getInt32(b+n,!0);break;case"str":h[l.name]=g(c.abuf,b+n,l.bitSize>>3);break;case"bit":if(l.isArray){for(var o=new d(c.abuf,b+n),p=[],q=m;q>3],c=7&a;return b>>7-c&1},b.exports=c},{}],6:[function(a,b){var c=a("../../create/2d"),d=a("../../create/imagedata"),e=a("../../nexttick"),f=a("./decode-lzw"),g=function(a,b){b=b||{};var d=a.benchmark||!1,i=b.frameNum||0;if(0===i)for(var j=0;j=a.frames.length)return a.rendered=!0,void a.tube("rendered");var k=a.frames[i],l=a.buf.pixeldata;d&&d.start("decompress-lzw"),f(k.blockinfo,a.buf.u8,k.lzwCodeSize,k.w,k.h,l),d&&d.stop("decompress-lzw"),k.interlaced&&(d&&d.start("deinterlace"),l=m(l,k.w,k.h),d&&d.stop("deinterlace")),d&&d.start("pixeldata-to-canvas"),h(l,a,i),d&&d.stop("pixeldata-to-canvas");var n=g.bind(void 0,a,{frameNum:i+1});e(n)},h=function(a,b,c){var d=b.frames[c],e=d.ctx;if(0===c)return void e.putImageData(k(a,b,d),d.x,d.y,0,0,d.w,d.h);var f,g=c-1,h=b.frames[g],l=h.ctx.canvas;if((0===h.disposalMethod||1===h.disposalMethod)&&(f=i(b,c,a),e.drawImage(l,0,0),e.drawImage(f.canvas,0,0,d.w,d.h,d.x,d.y,d.w,d.h)),2===h.disposalMethod&&(0===h.x&&0===h.y&&h.w===b.w&&h.h===b.h?e.putImageData(j(b,c,a),d.x,d.y,0,0,d.w,d.h):(h.y>0&&e.drawImage(l,0,0,b.w,h.y,0,0,b.w,h.y),h.x>0&&e.drawImage(l,0,h.y,h.x,h.h,0,h.y,h.x,h.h),h.x+h.w0&&3===b.frames[g].disposalMethod;)g-=1;h=b.frames[g],3!=h.disposalMethod&&e.drawImage(h.ctx.canvas,0,0),f=i(b,c,a),e.drawImage(f.canvas,0,0,d.w,d.h,d.x,d.y,d.w,d.h)}},i=function(a,b,d){if(i.ctx&&i.ctx.canvas.width===a.w&&i.ctx.canvas.height===a.h)var e=i.ctx;else var e=i.ctx=c(a.w,a.h);var f=a.frames[b];d=d||f.pixelData;var g="palette"in f?f.palette:a.palette,h="transparentIndex"in f?f.transparentIndex:-1;h>-1&&(g[4*h+3]=0);var j=l(a,g,d,f.w,f.h,h);return e.putImageData(j,0,0,0,0,f.w,f.h),e},j=function(a,b,c){var d=a.frames[b];c=c||d.pixelData;var e="palette"in d?d.palette:a.palette,f="transparentIndex"in d?d.transparentIndex:-1;return f>-1&&(e[4*f+3]=0),l(a,e,c,d.w,d.h,f)},k=function(a,b,c){var d="palette"in c?c.palette:b.palette,e="transparentIndex"in c?c.transparentIndex:-1;return e>-1&&(d[4*e+3]=0),l(b,d,a,c.w,c.h,e)},l=function(a,b,c,e,f){if(l.imagedata&&l.imagedata.width===a.w&&l.imagedata.height===a.h)var g=l.imagedata;else var g=l.imagedata=d(a.w,a.h);for(var h=g.data,i=0,j=0;f>j;j++)for(var k=j*a.w,m=0;e>m;m++){var n=4*(m+k),o=4*c[i];h[n]=b[o],h[n+1]=b[o+1],h[n+2]=b[o+2],h[n+3]=b[o+3],i+=1}return g},m=function(a,b,c){for(var d=new Uint8Array(a.length),e=Math.ceil(c/8),f=Math.ceil(c/4),g=Math.ceil(c/2),h=0;c>h;h++){var i,j=b*h;i=h%8===0?b*(h/8):(h+4)%8===0?b*((h-4)/8+e):h%2===0?b*((h-2)/4+f):b*((h-1)/2+g);for(var k=0;b>k;k++)d[j+k]=a[i+k]}return d};b.exports=g},{"../../create/2d":18,"../../create/imagedata":19,"../../nexttick":11,"./decode-lzw":21}],21:[function(a,b){var c=function(a,b,c,d,e,f,g){var h,i,j,k=4096,l=-1,m=d*e,n=0,o=0,p=0,f=f||new Uint8Array(m),q=new Uint16Array(2*k),r=new Uint8Array(k),s=new Uint8Array(k+1),t=1<h;h++)q[h]=0,r[h]=h;for(var y=0,z=0,A=a.start,B=a.blockEnds,C=B.shift(),D=0;m>D;){if(0===o){if(w>y){z+=b[A]<>=w,y-=w,h>v&&console.log(":("),h===u){console.log("fuck");break}if(h===t){w=c+1,x=(1<t;)s[o++]=r[h],h=q[h];n=r[h],s[o++]=n,q[v]=j,r[v]=n,v++,0===(v&x)&&k>v&&(w++,x+=v),j=i}o--,f[p++]=g?g[s[o]]:s[o],D++}return f};b.exports=c},{}]},{},[1]);var nextTick=function(){if(window.ActiveXObject||!window.postMessage)var a=function(a){setTimeout(a,0)};else{var b=[],c="next-tick-zero-timeout";window.addEventListener("message",function(a){a.source==window&&a.data==c&&(a.stopPropagation&&a.stopPropagation(),b.length&&b.shift()())},!0);var a=function(a){b.push(a),window.postMessage(c,"*")}}return a}(),Uid=function(){var a=0;return function(){return a++ +""}}(),tokenize=function(){var a=function(b,c){return b.trim().split(c||a.default)};return a.default=/\s+/g,a}(),globber=function(a,b){var c,d=a[0],e=a.slice(1),f=b.length;if("*"===d){for(var g=0;f>=g;++g)if(globber(e,b.slice(g)))return!0;return!1}return c=d===b[0],c&&(!e.length&&!f||globber(e,b.slice(1)))},setproto=function(a,b){if(a.__proto__)a.__proto__=b;else for(var c in b)a[c]=b[c]},Tube=function(){var a={},b=function(a){if(a=a||{},a.queue)var c=function(){var a=arguments;return nextTick(function(){c.send.apply(c,a)}),c};else var c=function(){return c.send.apply(c,arguments),c};return setproto(c,b.proto),c.listeners={},c.globListeners={},c};return b.total={},b.proto={},b.proto.on=function(){var a=this;if("string"==typeof arguments[0]){var b={};b[arguments[0]]=arguments[1];{arguments[2]||{}}}else{var b=arguments[0];arguments[1]||{}}for(var c in b){var d=c.split(" "),e=b[c];Array.isArray(e)||(e=[e]);for(var f,g=0;f=e[g];g++)f.uid||(f.uid=Uid());for(var h,g=0;h=d[g];g++){var i=-1===h.indexOf("*")?a.listeners:a.globListeners;i[h]=h in i?i[h].concat(e):e.concat()}}return a},b.proto.off=function(){var a,b,c,d,e=this;if(0===arguments.length)return e.listeners={},e.globListeners={},e;if(1===arguments.length&&"string"==typeof arguments[0]){for(c=arguments[0].split(" "),b=0;d=c[b];b++)delete e.listeners[d],delete e.globListeners[d];return e}if("function"==typeof arguments[0]||Array.isArray(arguments[0])){var f="function"==typeof arguments[0]?[arguments[0]]:arguments[0];return e}if(arguments.length>1){var g={};g[arguments[0]]=arguments[1]}else var g=arguments[0];for(var h in g){c=h.split(" ");var f=g[h];"function"==typeof f&&(f=[f]);for(var b=0;d=c[b];b++){if(d in e.listeners)a=e.listeners;else{if(!(d in e.globListeners))continue;a=e.globListeners}a[d]=a[d].filter(function(a){return-1===f.indexOf(a)})}}return e},b.proto.send=function(c){b.total[c]||(b.total[c]=0),b.total[c]+=1;var d,e,f,g=this.listeners,h=this.globListeners,i=tokenize(c);if(arguments.length){var j=Array.prototype.splice.call(arguments,1);j.push(c)}else var j=[];for(var k=0;e=i[k];k++){var l={},m={};if(d=g[e])for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e;var o=e.split(":");for(var p in h){if("*"!==p){var q=a[p]||(a[p]=p.split(":"));if(!globber(q,o))continue}d=h[p];for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e}var r=[];for(var f in l)r.push(l[f]);for(var f,n=0;f=r[n];n++)f.apply(f,j)}return this},b}(),FRAMES_PER_GIF=36,FPS=12,DELAY=Math.floor(1e3/FPS),WORKERS=6,FRAMES_TO_QUANTIZE=4,DO_UPLOAD=!0;!function(a,b){function c(a){var b=a.length,c=fb.type(a);return fb.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||"function"!==c&&(0===b||"number"==typeof b&&b>0&&b-1 in a)}function d(a){var b=ob[a]={};return fb.each(a.match(hb)||[],function(a,c){b[c]=!0}),b}function e(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=fb.expando+Math.random()}function f(a,c,d){var e;if(d===b&&1===a.nodeType)if(e="data-"+c.replace(sb,"-$1").toLowerCase(),d=a.getAttribute(e),"string"==typeof d){try{d="true"===d?!0:"false"===d?!1:"null"===d?null:+d+""===d?+d:rb.test(d)?JSON.parse(d):d}catch(f){}pb.set(a,c,d)}else d=b;return d}function g(){return!0}function h(){return!1}function i(){try{return T.activeElement}catch(a){}}function j(a,b){for(;(a=a[b])&&1!==a.nodeType;);return a}function k(a,b,c){if(fb.isFunction(b))return fb.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return fb.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(Cb.test(b))return fb.filter(b,a,c);b=fb.filter(b,a)}return fb.grep(a,function(a){return bb.call(b,a)>=0!==c})}function l(a,b){return fb.nodeName(a,"table")&&fb.nodeName(1===b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function m(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function n(a){var b=Nb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function o(a,b){for(var c=a.length,d=0;c>d;d++)qb.set(a[d],"globalEval",!b||qb.get(b[d],"globalEval"))}function p(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(qb.hasData(a)&&(f=qb.access(a),g=qb.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)fb.event.add(b,e,j[e][c])}pb.hasData(a)&&(h=pb.access(a),i=fb.extend({},h),pb.set(b,i))}}function q(a,c){var d=a.getElementsByTagName?a.getElementsByTagName(c||"*"):a.querySelectorAll?a.querySelectorAll(c||"*"):[];return c===b||c&&fb.nodeName(a,c)?fb.merge([a],d):d}function r(a,b){var c=b.nodeName.toLowerCase();"input"===c&&Kb.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}function s(a,b){if(b in a)return b;for(var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=_b.length;e--;)if(b=_b[e]+c,b in a)return b;return d}function t(a,b){return a=b||a,"none"===fb.css(a,"display")||!fb.contains(a.ownerDocument,a)}function u(b){return a.getComputedStyle(b,null)}function v(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=qb.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&t(d)&&(f[g]=qb.access(d,"olddisplay",z(d.nodeName)))):f[g]||(e=t(d),(c&&"none"!==c||!e)&&qb.set(d,"olddisplay",e?c:fb.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function w(a,b,c){var d=Ub.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function x(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=fb.css(a,c+$b[f],!0,e)),d?("content"===c&&(g-=fb.css(a,"padding"+$b[f],!0,e)),"margin"!==c&&(g-=fb.css(a,"border"+$b[f]+"Width",!0,e))):(g+=fb.css(a,"padding"+$b[f],!0,e),"padding"!==c&&(g+=fb.css(a,"border"+$b[f]+"Width",!0,e))); +function shuffle(a){var b=new Array(a.length);b[0]=a[0];for(var c=1;cb;b++){var d=new Worker("js/vendor/gif-encode/worker.js");d.onmessage=a.receiveWork,c.push(d)}};var d={};a.hire=function(a,b){d[a]=b},a.work=function(a){c[++b%c.length].postMessage(a)},a.receiveWork=function(a){a.data.task in d&&d[a.data.task](a)},a.fire=function(){for(var b in c)c[b].postMessage("close");c=[],a.init()},a.init()}function b(a){console.log("[WORKER]",a.data.message)}function c(a){console.log(Date.now()-q,"quantization done"),i=a.data.neuquant,j=a.data.colortab,f.quantized=!0,f.tube("quantized")}function d(a){var b=a.data.frame_index,c=a.data.frame_data;m[b]=c,f.tube("encoded-frame",m.length,k.length);for(var d=0;da?b:c>a?a:c}function lerp(a,b,c){return(c-b)*a+b}function mix(a,b,c){return b*(1-a)+c*a}function ceil(a){return Math.ceil(a)}function floor(a){return Math.floor(a)}function round(a){return Math.round(a)}function max(a){return Math.max(a)}function min(a){return Math.min(a)}function abs(a){return Math.abs(a)}function sign(a){return Math.abs(a)/a}function pow(a,b){return Math.pow(a,b)}function exp(a){return Math.exp(a)}function sqrt(a){return Math.sqrt(a,b)}function cos(a){return Math.cos(a)}function sin(a){return Math.sin(a)}function tan(a){return Math.tan(a)}function acos(a){return Math.cos(a)}function asin(a){return Math.sin(a)}function atan(a){return Math.atan(a)}function atan2(a){return Math.atan2(a)}function sec(a){return 1/cos(a)}function csc(a){return 1/sin(a)}function cot(a){return 1/tan(a)}function cosp(a){return(1+Math.cos(a))/2}function sinp(a){return(1+Math.sin(a))/2}function random(){return Math.random()}function rand(a){return Math.random()*a}function randint(a){return 0|rand(a)}function choice(a){return a[randint(a.length)]}function deg(a){return 180*a/PI}function rad(a){return a*PI/180}function xor(a,b){return a=!!a,b=!!b,(a||b)&&!(a&&b)}function mod(a,b){return a-b*floor(a/b)}function dist(a,b,c,d){return sqrt(pow(c-a,2)+pow(d-b,2))}function angle(a,b,c,d){return atan2(d-b,c-a)}function avg(a,b,c){return(a*(c-1)+b)/c}function pixel(a,b){return 4*(mod(b,actual_h)*actual_w+mod(a,actual_w))}function rgbpixel(c,d,e){var f=pixel(~~d,~~e);r=c[f],g=c[f+1],b=c[f+2],a=c[f+3]}function fit(a,b,c){rgbpixel(a,b*actual_w/w,c*actual_h/h)}function step(a,b){return(b>=a)+0}function julestep(a,b,c){return clamp((c-a)/(b-a),0,1)}function smoothstep(a,b,c){var d=clamp((c-a)/(b-a),0,1);return d*d*(3-2*d)}function shuffle(a){for(var b=a.length;b>0;b--){var c=randint(b),d=a[b-1];a[b-1]=a[c],a[c]=d}return a}function reverse(a){for(var b=[],c=0,d=a.length-1;d>=c;c++)b[c]=a[d-c];return b}function deinterlace(a){for(var b=[],c=[],d=0,e=a.length;e>d;d++)d%2?c.push(a[d]):b.push(a[d]);return[c,b]}function weave(a){var b=deinterlace(a),c=[];return b[0].forEach(function(a){c.push(a)}),reverse(b[1]).forEach(function(a){c.push(a)}),c}function rgb(a,c,d){r=a,g=c,b=d}function rgbref(a){r=a[0],g=a[1],b=a[2]}function black(){rgb(0,0,0)}function white(){rgb(255,255,255)}function red(){rgb(255,0,0)}function gray(a){1>a&&(a*=255),rgb(a,a,a)}function rgb2xyz(a){var b=a[0]/255,c=a[1]/255,d=a[2]/255;b>.04045?b=(b+.055)/1.055^2.4:b/=12.92,c>.04045?c=(c+.055)/1.055^2.4:c/=12.92,d>.04045?d=(d+.055)/1.055^2.4:d/=12.92,b=100*b,c=100*c,d=100*d;var e=.4124*b+.3576*c+.1805*d,f=.2126*b+.7152*c+.0722*d,g=.0193*b+.1192*c+.9505*d;return[e,f,g]}function xyz2rgb(a){var b=a[0]/100,c=a[1]/100,d=a[2]/100;var_R=3.2406*b+-1.5372*c+d*-.4986,var_G=b*-.9689+1.8758*c+.0415*d,var_B=.0557*b+c*-.204+1.057*d,var_R=var_R>.0031308?1.055*Math.pow(var_R,1/2.4)-.055:12.92*var_R,var_G=var_G>.0031308?1.055*Math.pow(var_G,1/2.4)-.055:12.92*var_G,var_B=var_B>.0031308?1.055*Math.pow(var_B,1/2.4)-.055:12.92*var_B;var e=clamp(255*var_R,0,255),f=clamp(255*var_G,0,255),g=clamp(255*var_B,0,255);return[e,f,g]}function xyz2hunterlab(a){var b=a[0],c=a[1],d=a[2],e=10*sqrt(c),f=17.5*((1.02*b-c)/sqrt(c)),g=7*((c-.847*d)/sqrt(c));return[e,f,g]}function hunterlab2xyz(a){var b=a[0],c=a[1],d=a[2];return var_Y=b/10,var_X=c/17.5*b/10,var_Z=d/7*b/10,Y=Math.pow(var_Y,2),X=(var_X+Y)/1.02,Z=-(var_Z-Y)/.847,[X,Y,Z]}function xyz2cielab(a){var b=a[0]/ref_X,c=a[1]/ref_Y,d=a[2]/ref_Z;b=b>.008856?Math.pow(b,1/3):7.787*b+16/116,c=c>.008856?Math.pow(c,1/3):7.787*c+16/116,d=d>.008856?Math.pow(d,1/3):7.787*d+16/116;var e=116*c-16,f=500*(b-c),g=200*(c-d);return[e,f,g]}function cielab2xyz(a){var b=(a[0]+16)/116,c=a[1]/500+b,d=b-a[2]/200;b=b^!0?Math.pow(b,3):(b-16/116)/7.787,c=c^!0?Math.pow(c,3):(c-16/116)/7.787,d=d^!0?Math.pow(d,3):(d-16/116)/7.787;return[x,y,z]}function rgb2hsl(a){var b,c,d=a[0],e=a[1],f=a[2],g=d/255,h=e/255,i=f/255,j=min(g,h,i),k=max(g,h,i),l=k-j,m=(k+j)/2;if(0==l)b=0,c=0;else{c=.5>m?l/(k+j):l/(2-k-j);var n=((k-g)/6+l/2)/l,o=((k-h)/6+l/2)/l,p=((k-i)/6+l/2)/l;g==k?b=p-o:h==k?b=1/3+n-p:i==k&&(b=2/3+o-n),0>b&&(b+=1),b>1&&(b-=1)}return[b,c,m]}function hsl2rgb(a,b,c){var d,e,f,g,h;return 0==b?(d=255*c,e=255*c,f=255*c):(h=.5>c?c*(1+b):c+b-b*c,g=2*c-h,d=255*hue2rgb(g,h,a+1/3),e=255*hue2rgb(g,h,a),f=255*hue2rgb(g,h,a-1/3)),[d,e,f]}function hue2rgb(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1>6*c?a+6*(b-a)*c:1>2*c?b:2>3*c?a+(b-a)*(2/3-c)*6:a}function rgb2cmy(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=1-a/255,e=1-b/255,f=1-c/255;return[d,e,f]}function cmy2rgb(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=255*(1-a),e=255*(1-b),f=255*(1-c);return[d,e,f]}function cmy2cmyk(a,b,c){a.length&&(c=a[2],b=a[1],a=a[0]);var d=1;d>a&&(d=a),d>b&&(d=b),d>c&&(d=c),1==d?(a=0,b=0,c=0):(a=(a-d)/(1-d),b=(b-d)/(1-d),c=(c-d)/(1-d));var e=d;return[a,b,c,e]}function cmyk2cmy(a,b,c,d){a.length&&(d=a[3],c=a[2],b=a[1],a=a[0]);var a=a*(1-d)+d,b=b*(1-d)+d,c=c*(1-d)+d;return[a,b,c]}function loadImage(a,b){var a=proxify(a);return window.imageURL=a,window.gif=window.img=null,a?"gif"===a.substr(-3)?(window.gif=GIF(a),gif.on("rendered",b),gif.render()):(window.img=new Image,img.addEventListener("load",b),img.crossOrigin="anonymous",img.src=a):(window.gif=null,window.img=null,b(),void 0)}function giveImage(a){return window.gif?gif.frames[gif.currentFrame(a)]:img}function proxify(a){return 0==a.indexOf("http")?"/cgi-bin/proxy?"+a.replace(/^https/,"http"):a}function filesize(a){return 1e3>a?a+" bytes":1e6>a?decimalString(a/1e3)+" kb":1e9>a?decimalString(a/1e6)+" mb":"WAY TOO BIG DUDE"}function decimalString(a){var b=Math.floor(a);return b+"."+Math.round(10*(a-b))}function noop(){}function uploadImage(a){if(a.blob&&a.filename){a.username=a.username||"",a.success=a.success||noop,a.error=a.error||noop;var b=new FormData;b.append("username",a.username),b.append("filename",a.filename),b.append("qqfile",a.blob);var c=new XMLHttpRequest;c.open("POST","/cgi-bin/im/upload"),c.onload=function(){if(200==c.status){var b=JSON.parse(c.responseText);b.success?a.success(b):a.error(b)}else a.error({success:!1,error:c.status})},c.send(b)}}function add_frame(){var a=$("#framecount").int();2>a?add_single_frame():add_frames(a)}function add_single_frame(){var a=$("
");a.html($("#frame-template").html()),a.attr("index",$("#frames div").length);var b=cc.clone().appendTo(a.find(".frame")[0]);b.canvas.className="fullsize",b.canvas.style.display="none";cc.clone().resize(frame_thumb_size,frame_thumb_size).appendTo(a.find(".frame")[0]);$("#frames").append(a)}function add_frames(a){rendering=!0;for(var b,c=old_t-start_t-pause_t,d=1e3*($("#frameinterval").float()||$("#framedelay").float()),e=0;a>e;e++)b=giveFrame(c),c+=d,shade(b,c),add_single_frame();rendering=!1}function remove_frame(){$(this).closest("div").remove()}function remove_all_frames(){$("#frames").empty()}function shuffle_frames(){var a=$("#frames div");$("#frames").empty().append(shuffle(a))}function reverse_frames(){var a=$("#frames div");$("#frames").empty().append(reverse(a))}function weave_frames(){var a=$("#frames div");$("#frames").empty().append(weave(a))}function sort_frames(){var a=$("#frames div"),b=a.map(function(a,b){return console.log(a,b),[[b.getAttribute("index"),b]]}).sort(function(a,b){return a[0]-b[0]}).map(function(a,b){return console.log(b),b[1]});$("#frames").empty().append(b)}function render(){if(!rendering){0==$("#frames canvas.fullsize").length&&add_frame(),rendering=!0,encoder.reset();var a=1e3*$("#framedelay").float()||100;$("#frames canvas.fullsize").each(function(){var b=cq(this.width,this.height).fillStyle($("#background").string()).fillRect(0,0,this.width,this.height).drawImage(this,0,0);encoder.addFrame(b.canvas,a)}),$("#pause,#render,#add-frame").disable(),$("#workspace").find("img").remove(),$("#rendered").show(),status("encoding");try{encoder.encode()}catch(b){throw $("#pause,#render,#add-frame").enable(),rendering=!1,status(b),b}$("#render").html("rendering")}}function get_filename(){var a=$("#url").val().replace(/^.*\//,"").replace(/\..*$/,"").replace(/[^-_ a-zA-Z0-9]/g,""),b=user.username,c=a+"-"+b+"-"+ +new Date+".gif";return c.replace(/ /g,"_").replace(/-+/g,"-")}function save(){if(lastGif){var a=get_filename(),b=dataUriToBlob(lastGif);saveAs(b,a)}}function saveJSON(a,b){for(var c=JSON.stringify(a),d=new ArrayBuffer(c.length),e=new Uint8Array(d),f=0;fl;l++)for(var m=0;h>m;m++)q=4*(m*w+l),r=f[q],g=f[q+1],b=f[q+2],a=f[q+3],result=shader(l,m,d,i),f[q]=r,f[q+1]=g,f[q+2]=b,f[q+3]=a,w=j,h=k;cc.putImageData(e,0,0)}function shade_error_handling(c,d){if(!d||isNaN(d))throw Error("No time specified");if(!c||!c.ctx||!c.cloneData)throw Error("No frame specified");var e=c.ctx.getImageData(0,0,w,h),f=e.data,i=c.cloneData.data;try{for(var j=w,k=h,l=0;w>l;l++)for(var m=0;h>m;m++)q=4*(m*w+l),r=f[q],g=f[q+1],b=f[q+2],a=f[q+3],result=shader(l,m,d,i),f[q]=r,f[q+1]=g,f[q+2]=b,f[q+3]=a,w=j,h=k}catch(n){var o=(n.stack+"").split("\n");if("anonymous@"===o[0].substr(0,10)){var p=o[0].match(firefox_stack_regexp);p.length>1&&error_highlight.on(parseInt(p[1])-5)}else if(o.length>1){var p=o[1].match(chrome_stack_regexp);p&&p.length>1&&error_highlight.on(parseInt(p[1])-3)}throw Error("Shader execution error")}cc.putImageData(e,0,0),shade=shade_no_error_handling,error_highlight.off()}function drag_start(){dragging=!0,$(this).addClass("dragging")}function drag_stop(){dragging=!1,$(".dragging").removeClass("dragging")}function status(a){$(".status").html(a),console.log(a)}function quiet_status(a){$(".status").html(a)}function new_shader(){shader_id_root=null,run_shader({id:"",shader_id:"",image_url:$("#url").val(),script:"",name:""})}function run_shader(a){console.log(a),shader_id_root=a.shader_id,$("#persist-image:checked").length&&($("#url").val(a.image_url),load()),$("#shader").val(a.script),$("#shader-id").val(a.id),$("#shader-name").val(a.name||""),shader_build()}function load_shaders(a,b){var c=$("#shader-gallery").empty();for(var d in b){var e=display_shader(b[d]);c.append(e)}firsttime&&(firsttime=!1,run_shader(b[0]))}function display_shader(a){var b=$("
").addClass("shader");b.data("shader",a),b.data("id",a.id);var c=shader_gallery_template;for(var d in a)c=c.replace("{"+d+"}",a[d]);return b.html(c),a.id&&b.data("id",a.id),b}function save_shader(){shader_id_root=shader_id_root||"";var a={script:$("#shader").val(),image_url:$("#url").val(),username:user.username,name:$("#shader-name").val()||"",shader_id:shader_id_root},b=make_thumbnail();status("saving.."),console.log(a),$.post("http://asdf.us/cgi-bin/im/shader/save",a,function(c){return console.log(c),data=JSON.parse(c),data.ERROR?(status("error saving shader"),alert(data.ERROR),!1):(status("uploading thumbnail"),shader_id_root||(shader_id_root=data.id),a.id=data.id,a.thumbnail_url="http://i.asdf.us/im/9a/chtiny3_1334529294_1334529329.gif",$shader=display_shader(a),$("#shader-gallery").prepend($shader),void save_thumbnail(data.id,b))})}function make_thumbnail(){return dataUriToBlob(cc.clone().resize(200,200).canvas.toDataURL("image/png"))}function save_thumbnail(a,b){if(a&&""!=a){b=b||make_thumbnail();var c=new FormData;c.append("id",a),c.append("qqfile",b),$.ajax({url:"http://asdf.us/cgi-bin/im/shader/thumbnail_upload",type:"POST",data:c,processData:!1,contentType:!1}).done(function(b){console.log(b),status("");var c=JSON.parse(b);c.success&&$(".shader[data-id="+a+"]").find("img").attr("src",c.url)})}}function init(){$("#url").change(load),$("#reset").click(reset),$("#pause").click(pause),$("#step-forward").click(step_forward),$(document).on("mousemove",function(a){mousex=a.pageX,mousey=a.pageY}),$("#toggle-shaders").click(function(){$("#header .form").hide(),$("#shader-api-form").show(),$(".bold").removeClass("bold"),$(this).addClass("bold")}).trigger("click"),$("#toggle-images").click(function(){$("#header .form").hide(),$("#gallery-form").show(),$(".bold").removeClass("bold"),$(this).addClass("bold"),asdf.fetched||$("#gallery-random").trigger("click")}),$(".toggle-off").click(function(){$("#header .form").hide(),$(".bold").removeClass("bold")}),$("#width").change(function(){w=abs(parseInt(this.value,10))||1,cc.canvas.width=w,cc.canvas.height=h}),$("#height").change(function(){h=abs(parseInt(this.value,10))||1,cc.canvas.width=w,cc.canvas.height=h}),$("#show-frame-controls").click(function(){$("#frame-controls").show(),$("#frame-hidden-controls").hide()}),$("#hide-frame-controls").click(function(){$("#frame-controls").hide(),$("#frame-hidden-controls").show()}),$("#reorder-frames").change(function(){var a=$(this).val();switch(console.log(a),a){case"weave-frames":weave_frames();break;case"shuffle-frames":shuffle_frames();break;case"reverse-frames":reverse_frames();break;case"sort-frames":sort_frames();break;default:return}render()}),load(),help.init(),user.init(),frame_editor.init(),shader_gallery.init(),gallery.init(choose),document.getElementById("shader").addEventListener("input",shader_build),requestAnimationFrame(animate)}!function(a,b){return"object"==typeof exports&&"object"==typeof module?b(exports):"function"==typeof define&&define.amd?define(["exports"],b):void b(a.acorn||(a.acorn={}))}(this,function(a){"use strict";function b(a){lb=a||{};for(var b in pb)Object.prototype.hasOwnProperty.call(lb,b)||(lb[b]=pb[b]);ob=lb.sourceFile||null}function c(a,b){var c=qb(mb,a);b+=" ("+c.line+":"+c.column+")";var d=new SyntaxError(b);throw d.pos=a,d.loc=c,d.raisedAt=rb,d}function d(a){function b(a){if(1==a.length)return c+="return str === "+JSON.stringify(a[0])+";";c+="switch(str){";for(var b=0;b3){d.sort(function(a,b){return b.length-a.length}),c+="switch(str.length){";for(var e=0;erb&&10!==c&&13!==c&&8232!==c&&8233!==c;)++rb,c=mb.charCodeAt(rb);lb.onComment&&lb.onComment(!1,mb.slice(a+2,rb),a,rb,b,lb.locations&&new e)}function j(){for(;nb>rb;){var a=mb.charCodeAt(rb);if(32===a)++rb;else if(13===a){++rb;var b=mb.charCodeAt(rb);10===b&&++rb,lb.locations&&(++zb,Ab=rb)}else if(10===a||8232===a||8233===a)++rb,lb.locations&&(++zb,Ab=rb);else if(a>8&&14>a)++rb;else if(47===a){var b=mb.charCodeAt(rb+1);if(42===b)h();else{if(47!==b)break;i()}}else if(160===a)++rb;else{if(!(a>=5760&&Sc.test(String.fromCharCode(a))))break;++rb}}}function k(){var a=mb.charCodeAt(rb+1);return a>=48&&57>=a?y(!0):(++rb,g(uc))}function l(){var a=mb.charCodeAt(rb+1);return yb?(++rb,v()):61===a?u(yc,2):u(wc,1)}function m(){var a=mb.charCodeAt(rb+1);return 61===a?u(yc,2):u(Kc,1)}function n(a){var b=mb.charCodeAt(rb+1);return b===a?u(124===a?Bc:Cc,2):61===b?u(yc,2):u(124===a?Dc:Fc,1)}function o(){var a=mb.charCodeAt(rb+1);return 61===a?u(yc,2):u(Ec,1)}function p(a){var b=mb.charCodeAt(rb+1);return b===a?45==b&&62==mb.charCodeAt(rb+2)&&Xc.test(mb.slice(Cb,rb))?(rb+=3,i(),j(),t()):u(zc,2):61===b?u(yc,2):u(Jc,1)}function q(a){var b=mb.charCodeAt(rb+1),c=1;return b===a?(c=62===a&&62===mb.charCodeAt(rb+2)?3:2,61===mb.charCodeAt(rb+c)?u(yc,c+1):u(Ic,c)):33==b&&60==a&&45==mb.charCodeAt(rb+2)&&45==mb.charCodeAt(rb+3)?(rb+=4,i(),j(),t()):(61===b&&(c=61===mb.charCodeAt(rb+2)?3:2),u(Hc,c))}function r(a){var b=mb.charCodeAt(rb+1);return 61===b?u(Gc,61===mb.charCodeAt(rb+2)?3:2):u(61===a?xc:Ac,1)}function s(a){switch(a){case 46:return k();case 40:return++rb,g(pc);case 41:return++rb,g(qc);case 59:return++rb,g(sc);case 44:return++rb,g(rc);case 91:return++rb,g(lc);case 93:return++rb,g(mc);case 123:return++rb,g(nc);case 125:return++rb,g(oc);case 58:return++rb,g(tc);case 63:return++rb,g(vc);case 48:var b=mb.charCodeAt(rb+1);if(120===b||88===b)return x();case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return y(!1);case 34:case 39:return z(a);case 47:return l(a);case 37:case 42:return m();case 124:case 38:return n(a);case 94:return o();case 43:case 45:return p(a);case 60:case 62:return q(a);case 61:case 33:return r(a);case 126:return u(Ac,1)}return!1}function t(a){if(a?rb=sb+1:sb=rb,lb.locations&&(ub=new e),a)return v();if(rb>=nb)return g(Mb);var b=mb.charCodeAt(rb);if(Zc(b)||92===b)return C();var d=s(b);if(d===!1){var f=String.fromCharCode(b);if("\\"===f||Vc.test(f))return C();c(rb,"Unexpected character '"+f+"'")}return d}function u(a,b){var c=mb.slice(rb,rb+b);rb+=b,g(a,c)}function v(){for(var a,b,d="",e=rb;;){rb>=nb&&c(e,"Unterminated regular expression");var f=mb.charAt(rb);if(Xc.test(f)&&c(e,"Unterminated regular expression"),a)a=!1;else{if("["===f)b=!0;else if("]"===f&&b)b=!1;else if("/"===f&&!b)break;a="\\"===f}++rb}var d=mb.slice(e,rb);++rb;var h=B();h&&!/^[gmsiy]*$/.test(h)&&c(e,"Invalid regexp flag");try{var i=new RegExp(d,h)}catch(j){j instanceof SyntaxError&&c(e,j.message),c(j)}return g(Jb,i)}function w(a,b){for(var c=rb,d=0,e=0,f=null==b?1/0:b;f>e;++e){var g,h=mb.charCodeAt(rb);if(g=h>=97?h-97+10:h>=65?h-65+10:h>=48&&57>=h?h-48:1/0,g>=a)break;++rb,d=d*a+g}return rb===c||null!=b&&rb-c!==b?null:d}function x(){rb+=2;var a=w(16);return null==a&&c(sb+2,"Expected hexadecimal number"),Zc(mb.charCodeAt(rb))&&c(rb,"Identifier directly after number"),g(Ib,a)}function y(a){var b=rb,d=!1,e=48===mb.charCodeAt(rb);a||null!==w(10)||c(b,"Invalid number"),46===mb.charCodeAt(rb)&&(++rb,w(10),d=!0);var f=mb.charCodeAt(rb);(69===f||101===f)&&(f=mb.charCodeAt(++rb),(43===f||45===f)&&++rb,null===w(10)&&c(b,"Invalid number"),d=!0),Zc(mb.charCodeAt(rb))&&c(rb,"Identifier directly after number");var h,i=mb.slice(b,rb);return d?h=parseFloat(i):e&&1!==i.length?/[89]/.test(i)||Gb?c(b,"Invalid number"):h=parseInt(i,8):h=parseInt(i,10),g(Ib,h)}function z(a){rb++;for(var b="";;){rb>=nb&&c(sb,"Unterminated string constant");var d=mb.charCodeAt(rb);if(d===a)return++rb,g(Kb,b);if(92===d){d=mb.charCodeAt(++rb);var e=/^[0-7]+/.exec(mb.slice(rb,rb+3));for(e&&(e=e[0]);e&&parseInt(e,8)>255;)e=e.slice(0,-1);if("0"===e&&(e=null),++rb,e)Gb&&c(rb-2,"Octal literal in strict mode"),b+=String.fromCharCode(parseInt(e,8)),rb+=e.length-1;else switch(d){case 110:b+="\n";break;case 114:b+="\r";break;case 120:b+=String.fromCharCode(A(2));break;case 117:b+=String.fromCharCode(A(4));break;case 85:b+=String.fromCharCode(A(8));break;case 116:b+=" ";break;case 98:b+="\b";break;case 118:b+=" ";break;case 102:b+="\f";break;case 48:b+="\x00";break;case 13:10===mb.charCodeAt(rb)&&++rb;case 10:lb.locations&&(Ab=rb,++zb);break;default:b+=String.fromCharCode(d)}}else(13===d||10===d||8232===d||8233===d)&&c(sb,"Unterminated string constant"),b+=String.fromCharCode(d),++rb}}function A(a){var b=w(16,a);return null===b&&c(sb,"Bad character escape sequence"),b}function B(){Mc=!1;for(var a,b=!0,d=rb;;){var e=mb.charCodeAt(rb);if($c(e))Mc&&(a+=mb.charAt(rb)),++rb;else{if(92!==e)break;Mc||(a=mb.slice(d,rb)),Mc=!0,117!=mb.charCodeAt(++rb)&&c(rb,"Expecting Unicode escape sequence \\uXXXX"),++rb;var f=A(4),g=String.fromCharCode(f);g||c(rb-1,"Invalid Unicode escape"),(b?Zc(f):$c(f))||c(rb-4,"Invalid Unicode escape"),a+=g}b=!1}return Mc?a:mb.slice(d,rb)}function C(){var a=B(),b=Lb;return Mc||(Rc(a)?b=kc[a]:(lb.forbidReserved&&(3===lb.ecmaVersion?Nc:Oc)(a)||Gb&&Pc(a))&&c(sb,"The keyword '"+a+"' is reserved")),g(b,a)}function D(){Bb=sb,Cb=tb,Db=vb,t()}function E(a){if(Gb=a,rb=sb,lb.locations)for(;Ab>rb;)Ab=mb.lastIndexOf("\n",Ab-2)+1,--zb;j(),t()}function F(){this.type=null,this.start=sb,this.end=null}function G(){this.start=ub,this.end=null,null!==ob&&(this.source=ob)}function H(){var a=new F;return lb.locations&&(a.loc=new G),lb.directSourceFile&&(a.sourceFile=lb.directSourceFile),lb.ranges&&(a.range=[sb,0]),a}function I(a){var b=new F;return b.start=a.start,lb.locations&&(b.loc=new G,b.loc.start=a.loc.start),lb.ranges&&(b.range=[a.range[0],0]),b}function J(a,b){return a.type=b,a.end=Cb,lb.locations&&(a.loc.end=Db),lb.ranges&&(a.range[1]=Cb),a}function K(a){return lb.ecmaVersion>=5&&"ExpressionStatement"===a.type&&"Literal"===a.expression.type&&"use strict"===a.expression.value}function L(a){return wb===a?(D(),!0):void 0}function M(){return!lb.strictSemicolons&&(wb===Mb||wb===oc||Xc.test(mb.slice(Cb,sb)))}function N(){L(sc)||M()||P()}function O(a){wb===a?D():P()}function P(){c(sb,"Unexpected token")}function Q(a){"Identifier"!==a.type&&"MemberExpression"!==a.type&&c(a.start,"Assigning to rvalue"),Gb&&"Identifier"===a.type&&Qc(a.name)&&c(a.start,"Assigning to "+a.name+" in strict mode")}function R(a){Bb=Cb=rb,lb.locations&&(Db=new e),Eb=Gb=null,Fb=[],t();var b=a||H(),c=!0;for(a||(b.body=[]);wb!==Mb;){var d=S();b.body.push(d),c&&K(d)&&E(!0),c=!1}return J(b,"Program")}function S(){(wb===wc||wb===yc&&"/="==xb)&&t(!0);var a=wb,b=H();switch(a){case Nb:case Qb:D();var d=a===Nb;L(sc)||M()?b.label=null:wb!==Lb?P():(b.label=kb(),N());for(var e=0;eb){var e=I(a);e.left=a,e.operator=xb;var f=wb;D(),e.right=ab(bb(),d,c);var g=J(e,f===Bc||f===Cc?"LogicalExpression":"BinaryExpression");return ab(g,b,c)}return a}function bb(){if(wb.prefix){var a=H(),b=wb.isUpdate;return a.operator=xb,a.prefix=!0,yb=!0,D(),a.argument=bb(),b?Q(a.argument):Gb&&"delete"===a.operator&&"Identifier"===a.argument.type&&c(a.start,"Deleting local variable in strict mode"),J(a,b?"UpdateExpression":"UnaryExpression")}for(var d=cb();wb.postfix&&!M();){var a=I(d);a.operator=xb,a.prefix=!1,a.argument=d,Q(d),D(),d=J(a,"UpdateExpression")}return d}function cb(){return db(eb())}function db(a,b){if(L(uc)){var c=I(a);return c.object=a,c.property=kb(!0),c.computed=!1,db(J(c,"MemberExpression"),b)}if(L(lc)){var c=I(a);return c.object=a,c.property=Y(),c.computed=!0,O(mc),db(J(c,"MemberExpression"),b)}if(!b&&L(pc)){var c=I(a);return c.callee=a,c.arguments=jb(qc,!1),db(J(c,"CallExpression"),b)}return a}function eb(){switch(wb){case fc:var a=H();return D(),J(a,"ThisExpression");case Lb:return kb();case Ib:case Kb:case Jb:var a=H();return a.value=xb,a.raw=mb.slice(sb,tb),D(),J(a,"Literal");case gc:case hc:case ic:var a=H(); +return a.value=wb.atomValue,a.raw=wb.keyword,D(),J(a,"Literal");case pc:var b=ub,c=sb;D();var d=Y();return d.start=c,d.end=tb,lb.locations&&(d.loc.start=b,d.loc.end=vb),lb.ranges&&(d.range=[c,tb]),O(qc),d;case lc:var a=H();return D(),a.elements=jb(mc,!0,!0),J(a,"ArrayExpression");case nc:return gb();case Xb:var a=H();return D(),ib(a,!1);case ec:return fb();default:P()}}function fb(){var a=H();return D(),a.callee=db(eb(),!0),a.arguments=L(pc)?jb(qc,!1):Hb,J(a,"NewExpression")}function gb(){var a=H(),b=!0,d=!1;for(a.properties=[],D();!L(oc);){if(b)b=!1;else if(O(rc),lb.allowTrailingCommas&&L(oc))break;var e,f={key:hb()},g=!1;if(L(tc)?(f.value=Y(!0),e=f.kind="init"):lb.ecmaVersion>=5&&"Identifier"===f.key.type&&("get"===f.key.name||"set"===f.key.name)?(g=d=!0,e=f.kind=f.key.name,f.key=hb(),wb!==pc&&P(),f.value=ib(H(),!1)):P(),"Identifier"===f.key.type&&(Gb||d))for(var h=0;hg?a.id:a.params[g];if((Pc(h.name)||Qc(h.name))&&c(h.start,"Defining '"+h.name+"' in strict mode"),g>=0)for(var i=0;g>i;++i)h.name===a.params[i].name&&c(h.start,"Argument name clash in strict mode")}return J(a,b?"FunctionDeclaration":"FunctionExpression")}function jb(a,b,c){for(var d=[],e=!0;!L(a);){if(e)e=!1;else if(O(rc),b&&lb.allowTrailingCommas&&L(a))break;d.push(c&&wb===rc?null:Y(!0))}return d}function kb(a){var b=H();return b.name=wb===Lb?xb:a&&!lb.forbidReserved&&wb.keyword||P(),yb=!1,D(),J(b,"Identifier")}a.version="0.4.1";var lb,mb,nb,ob;a.parse=function(a,c){return mb=String(a),nb=mb.length,b(c),f(),R(lb.program)};var pb=a.defaultOptions={ecmaVersion:5,strictSemicolons:!1,allowTrailingCommas:!0,forbidReserved:!1,locations:!1,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null},qb=a.getLineInfo=function(a,b){for(var c=1,d=0;;){Yc.lastIndex=d;var e=Yc.exec(a);if(!(e&&e.indexa?36===a:91>a?!0:97>a?95===a:123>a?!0:a>=170&&Vc.test(String.fromCharCode(a))},$c=a.isIdentifierChar=function(a){return 48>a?36===a:58>a?!0:65>a?!1:91>a?!0:97>a?95===a:123>a?!0:a>=170&&Wc.test(String.fromCharCode(a))},_c={kind:"loop"},ad={kind:"switch"}}),function(a,b,c,d){function e(d){if(!c[d]){if(!b[d]){if(a)return a(d);throw new Error("Cannot find module '"+d+"'")}var f=c[d]={exports:{}};b[d][0](function(a){var c=b[d][1][a];return e(c?c:a)},f,f.exports)}return c[d].exports}for(var f=0;f1){var g={};g[arguments[0]]=arguments[1]}else var g=arguments[0];for(var h in g){c=h.split(" ");var f=g[h];"function"==typeof f&&(f=[f]);for(var b=0;d=c[b];b++){if(d in e.listeners)a=e.listeners;else{if(!(d in e.globListeners))continue;a=e.globListeners}a[d]=a[d].filter(function(a){return-1===f.indexOf(a)})}}return e},i.proto.send=function(a){i.total[a]||(i.total[a]=0),i.total[a]+=1;var b,c,f,g=this.listeners,j=this.globListeners,k=d(a);if(arguments.length){var l=Array.prototype.splice.call(arguments,1);l.push(a)}else var l=[];for(var m=0;c=k[m];m++){var n={},o={};if(b=g[c])for(var p=0;f=b[p];p++)n[f.uid]=f,o[f.uid]=c;var q=c.split(":");for(var r in j){if("*"!==r){var s=h[r]||(h[r]=r.split(":"));if(!e(s,q))continue}b=j[r];for(var p=0;f=b[p];p++)n[f.uid]=f,o[f.uid]=c}var t=[];for(var f in n)t.push(n[f]);for(var f,p=0;f=t[p];p++)f.apply(f,l)}return this},b.exports=i},{"./object/setproto":7,"./string/tokenize":8,"./string/globber":9,"./uid":10,"./nexttick":11}],7:[function(a,b){var c=function(a,b){if(a.__proto__)a.__proto__=b;else for(var c in b)a[c]=b[c]};b.exports=c},{}],8:[function(a,b){var c=function(a,b){return a.trim().split(b||c.default)};c.default=/\s+/g,b.exports=c},{}],9:[function(a,b){var c=function(a,b){var d,e=a[0],f=a.slice(1),g=b.length;if("*"===e){for(var h=0;g>=h;++h)if(c(f,b.slice(h)))return!0;return!1}return d=e===b[0],d&&(!f.length&&!g||c(f,b.slice(1)))};b.exports=c},{}],10:[function(a,b){var c=function(){return c.counter++ +""};c.counter=1,b.exports=c},{}],11:[function(a,b){if(window.ActiveXObject||!window.postMessage)var c=function(a){setTimeout(a,0)};else{var d=[],e="next-tick-zero-timeout";window.addEventListener("message",function(a){a.source==window&&a.data==e&&(a.stopPropagation&&a.stopPropagation(),d.length&&d.shift()())},!0);var c=function(a){d.push(a),window.postMessage(e,"*")}}b.exports=c},{}],4:[function(a,b){var c=(a("./benchmark"),a("./object/setproto")),d=a("./object/extend"),e=a("./tube"),f=function(a,b){var d=e();return c(d,f.proto),b&&b.benchmark&&(d.benchmark=b.benchmark),d.src=a,d};f.proto={},d(f.proto,e.proto),f.proto.load=function(){var a=this,b=a.src;"string"==typeof b?a.loadFromUrl(b):b instanceof File?a.loadFromFile(b):b instanceof ArrayBuffer&&a("load",b)},f.proto.loadFromFile=function(a){var b=this,c=new FileReader;c.addEventListener("load",function(a){b.benchmark&&b.benchmark.stop("fetch-from-disk"),b("load",c.result,a)}),c.addEventListener("error",function(a){b("error",a,c)}),c.addEventListener("progress",function(a){b("progress",a)}),b.benchmark&&b.benchmark.start("fetch-from-disk"),c.readAsArrayBuffer(a)},f.proto.loadFromUrl=function(a){var b=this,c=new XMLHttpRequest;c.open("GET",a),c.responseType="arraybuffer",c.addEventListener("load",function(a){b.benchmark&&b.benchmark.stop("fetch-from-network"),b("load",c.response,a)}),c.addEventListener("error",function(a){b("error",a,c)}),c.addEventListener("progress",function(a){b("progress",a)}),b.benchmark&&b.benchmark.start("fetch-from-network"),c.send()},b.exports=f},{"./benchmark":2,"./object/setproto":7,"./object/extend":12,"./tube":3}],12:[function(a,b){b.exports=function(a,b){for(var c in b)a[c]=b[c];return a}},{}],5:[function(a,b){!function(){var c=a("./spec").blockSigs,d=a("./spec").extSigs,e=a("./palette"),f=a("./animate").makeCurrentFrame,g=a("../../binaryspec"),h=a("./spec").spec,i=g(h),j=function(a){k(a)},k=function(a,b){b=b||"header";for(var c=a.buf;"done"!==b&&"error"!==b;)if(b in l&&"function"==typeof l[b])b=l[b](a);else{var d=i.parts[b].byteSize;if(c.abuf.byteLengthe){i=!0;break}if(h=d[g],g+=1,0===h){j+=1;break}if(g+h>e){i=!0;break}b.push(g+h),g+=h,j+=h+1}return i?(console.log("out of data"),!1):(c.cursor+=j,a.benchmark&&a.benchmark.stop("read-subblocks"),{start:f,blockEnds:b})};b.exports=j}()},{"./spec":13,"./palette":14,"./animate":15,"../../binaryspec":16}],13:[function(a,b,c){var d={33:"extension",44:"imageDesc",59:"trailer"};c.blockSigs=d;var e={249:"graphicControl",254:"comment",1:"plainText",255:"applicationExtension"};c.extSigs=e;var f={header:["str[3] signature","str[3] version"],screenDesc:["u16 w","u16 h","bit paletteExists","bit[3] resolution ignore","bit sortFlag ignore","bit[3] paletteSize","u8 bgColorIndex","u8 aspectRatio ignore"],imageDesc:["u8 sig ignore","u16 x","u16 y","u16 w","u16 h","bit paletteExists","bit interlaced","bit sortFlag","bit[2] reserved ignore","bit[3] paletteSize"],applicationExtension:["u8 sig ignore","u8 extSig ignore","u8 blockSize ignore","str[8] identifier","str[3] authCode ignore"],graphicControl:["u8 sig ignore","u8 extSig ignore","u8 blockSize ignore","bit[3] reserved ignore","bit[3] disposalMethod","bit userInput ignore","bit transparentColor","u16 delay","u8 transparentIndex","u8 blockTerminator ignore"],comment:["u8 sig ignore","u8 extSig ignore"],plainText:["u8 sig ignore","u8 extSig ignore","u8 blockSize","u16 textGridLeft","u16 textGridTop","u16 textGridWidth","u16 textGridHeight","u8 charCellWidth","u8 charCellHeight","u8 fgColorIndex","u8 bgColorIndex"],imageData:["u8 lzwCodeSize"]};c.spec=f},{}],14:[function(a,b){!function(){var c=a("../../color/rgba2css"),d=(a("../../create/2d"),a("../../create/imagedata")),e={};e.binary2rgba=function(a){for(var b=new Uint8Array(a.byteLength/3*4),c=0,d=0,e=a.byteLength/3*4;e>d;d+=4)b[d]=a[c],b[d+1]=a[c+1],b[d+2]=a[c+2],b[d+3]=255,c+=3;return b},e.create=function(a){var b={0:0},e=["rgba(0,0,0,0)"],f=[[0,0,0,0]],g=function(a){for(var d=0,g=a.length;g>d;d+=4){var h=a[d+3];if(0!==h){var i=a[d],j=a[d+1],k=a[d+2],l=(i|j<<8|k<<16|h<<24).toString();if(!(l in b)){b[l]=f.length;var m=[i,j,k,h];f.push(m),e.push(c(m))}}}};"palette"in a&&g(a.palette);for(var h=0;hk;k+=4){var n=f[k/4];m[k]=n[0],m[k+1]=n[1],m[k+2]=n[2],m[k+3]=n[3]}return{rgba2Index:b,index2Rgba:f,index2Css:e,imagedata:j,length:f.length}},b.exports=e}()},{"../../color/rgba2css":17,"../../create/2d":18,"../../create/imagedata":19}],17:[function(a,b){var c=function(a){return"rgba("+a[0]+","+a[1]+","+a[2]+","+a[3]+")"};b.exports=c},{}],18:[function(a,b){var c=function(a,b){var c=document.createElement("canvas");return c.width=a||0,c.height=b||0,c.getContext("2d")};"undefined"!=typeof b&&(b.exports=c)},{}],19:[function(a,b){var c=function d(a,b){return d.ctx.createImageData(a,b)};c.ctx=document.createElement("canvas").getContext("2d"),"undefined"!=typeof b&&(b.exports=c)},{}],15:[function(a,b,c){var d=function(){var a=100;1===this.frames.length&&(this.currentFrame=function(){return 0});for(var b=0,c=[],d=0;d0?10*f.delay:a;b+=g,c.push(b)}this.currentFrame=e(c)},e=function(a){var b=a[a.length-1];return function(c){for(var d=(c||Date.now())%b,e=0;e1,m=b[j]*k;d.fields.push({name:g[1],type:j,ignore:h,bitSize:m,isArray:l}),e+=m}return d.bitSize=e,d.byteSize=e/8,d};e.proto.decodeBinaryFieldsToJSON=function(a,b,c){for(var e=this,f=e.parts[a],h={},i=f.fields.length,j=0,k=0;i>k;k++){var l=f.fields[k];if(!l.ignore){{var m=j%8,n=Math.floor((j-m)/8);n+Math.ceil(l.bitSize/8)}switch(l.type){case"u8":h[l.name]=c.u8[b+n];break;case"i8":h[l.name]=c.dv.getInt8(b+n);break;case"u16":h[l.name]=c.dv.getUint16(b+n,!0);break;case"i16":h[l.name]=c.dv.getInt16(b+n,!0);break;case"u32":h[l.name]=c.dv.getUint32(b+n,!0);break;case"i32":h[l.name]=c.dv.getInt32(b+n,!0);break;case"str":h[l.name]=g(c.abuf,b+n,l.bitSize>>3);break;case"bit":if(l.isArray){for(var o=new d(c.abuf,b+n),p=[],q=m;q>3],c=7&a;return b>>7-c&1},b.exports=c},{}],6:[function(a,b){var c=a("../../create/2d"),d=a("../../create/imagedata"),e=a("../../nexttick"),f=a("./decode-lzw"),g=function(a,b){b=b||{};var d=a.benchmark||!1,i=b.frameNum||0;if(0===i)for(var j=0;j=a.frames.length)return a.rendered=!0,void a.tube("rendered");var k=a.frames[i],l=a.buf.pixeldata;d&&d.start("decompress-lzw"),f(k.blockinfo,a.buf.u8,k.lzwCodeSize,k.w,k.h,l),d&&d.stop("decompress-lzw"),k.interlaced&&(d&&d.start("deinterlace"),l=m(l,k.w,k.h),d&&d.stop("deinterlace")),d&&d.start("pixeldata-to-canvas"),h(l,a,i),d&&d.stop("pixeldata-to-canvas");var n=g.bind(void 0,a,{frameNum:i+1});e(n)},h=function(a,b,c){var d=b.frames[c],e=d.ctx;if(0===c)return void e.putImageData(k(a,b,d),d.x,d.y,0,0,d.w,d.h);var f,g=c-1,h=b.frames[g],l=h.ctx.canvas;if((0===h.disposalMethod||1===h.disposalMethod)&&(f=i(b,c,a),e.drawImage(l,0,0),e.drawImage(f.canvas,0,0,d.w,d.h,d.x,d.y,d.w,d.h)),2===h.disposalMethod&&(0===h.x&&0===h.y&&h.w===b.w&&h.h===b.h?e.putImageData(j(b,c,a),d.x,d.y,0,0,d.w,d.h):(h.y>0&&e.drawImage(l,0,0,b.w,h.y,0,0,b.w,h.y),h.x>0&&e.drawImage(l,0,h.y,h.x,h.h,0,h.y,h.x,h.h),h.x+h.w0&&3===b.frames[g].disposalMethod;)g-=1;h=b.frames[g],3!=h.disposalMethod&&e.drawImage(h.ctx.canvas,0,0),f=i(b,c,a),e.drawImage(f.canvas,0,0,d.w,d.h,d.x,d.y,d.w,d.h)}},i=function(a,b,d){if(i.ctx&&i.ctx.canvas.width===a.w&&i.ctx.canvas.height===a.h)var e=i.ctx;else var e=i.ctx=c(a.w,a.h);var f=a.frames[b];d=d||f.pixelData;var g="palette"in f?f.palette:a.palette,h="transparentIndex"in f?f.transparentIndex:-1;h>-1&&(g[4*h+3]=0);var j=l(a,g,d,f.w,f.h,h);return e.putImageData(j,0,0,0,0,f.w,f.h),e},j=function(a,b,c){var d=a.frames[b];c=c||d.pixelData;var e="palette"in d?d.palette:a.palette,f="transparentIndex"in d?d.transparentIndex:-1;return f>-1&&(e[4*f+3]=0),l(a,e,c,d.w,d.h,f)},k=function(a,b,c){var d="palette"in c?c.palette:b.palette,e="transparentIndex"in c?c.transparentIndex:-1;return e>-1&&(d[4*e+3]=0),l(b,d,a,c.w,c.h,e)},l=function(a,b,c,e,f){if(l.imagedata&&l.imagedata.width===a.w&&l.imagedata.height===a.h)var g=l.imagedata;else var g=l.imagedata=d(a.w,a.h);for(var h=g.data,i=0,j=0;f>j;j++)for(var k=j*a.w,m=0;e>m;m++){var n=4*(m+k),o=4*c[i];h[n]=b[o],h[n+1]=b[o+1],h[n+2]=b[o+2],h[n+3]=b[o+3],i+=1}return g},m=function(a,b,c){for(var d=new Uint8Array(a.length),e=Math.ceil(c/8),f=Math.ceil(c/4),g=Math.ceil(c/2),h=0;c>h;h++){var i,j=b*h;i=h%8===0?b*(h/8):(h+4)%8===0?b*((h-4)/8+e):h%2===0?b*((h-2)/4+f):b*((h-1)/2+g);for(var k=0;b>k;k++)d[j+k]=a[i+k]}return d};b.exports=g},{"../../create/2d":18,"../../create/imagedata":19,"../../nexttick":11,"./decode-lzw":21}],21:[function(a,b){var c=function(a,b,c,d,e,f,g){var h,i,j,k=4096,l=-1,m=d*e,n=0,o=0,p=0,f=f||new Uint8Array(m),q=new Uint16Array(2*k),r=new Uint8Array(k),s=new Uint8Array(k+1),t=1<h;h++)q[h]=0,r[h]=h;for(var y=0,z=0,A=a.start,B=a.blockEnds,C=B.shift(),D=0;m>D;){if(0===o){if(w>y){z+=b[A]<>=w,y-=w,h>v&&console.log(":("),h===u){console.log("fuck");break}if(h===t){w=c+1,x=(1<t;)s[o++]=r[h],h=q[h];n=r[h],s[o++]=n,q[v]=j,r[v]=n,v++,0===(v&x)&&k>v&&(w++,x+=v),j=i}o--,f[p++]=g?g[s[o]]:s[o],D++}return f};b.exports=c},{}]},{},[1]);var nextTick=function(){if(window.ActiveXObject||!window.postMessage)var a=function(a){setTimeout(a,0)};else{var b=[],c="next-tick-zero-timeout";window.addEventListener("message",function(a){a.source==window&&a.data==c&&(a.stopPropagation&&a.stopPropagation(),b.length&&b.shift()())},!0);var a=function(a){b.push(a),window.postMessage(c,"*")}}return a}(),Uid=function(){var a=0;return function(){return a++ +""}}(),tokenize=function(){var a=function(b,c){return b.trim().split(c||a.default)};return a.default=/\s+/g,a}(),globber=function(a,b){var c,d=a[0],e=a.slice(1),f=b.length;if("*"===d){for(var g=0;f>=g;++g)if(globber(e,b.slice(g)))return!0;return!1}return c=d===b[0],c&&(!e.length&&!f||globber(e,b.slice(1)))},setproto=function(a,b){if(a.__proto__)a.__proto__=b;else for(var c in b)a[c]=b[c]},Tube=function(){var a={},b=function(a){if(a=a||{},a.queue)var c=function(){var a=arguments;return nextTick(function(){c.send.apply(c,a)}),c};else var c=function(){return c.send.apply(c,arguments),c};return setproto(c,b.proto),c.listeners={},c.globListeners={},c};return b.total={},b.proto={},b.proto.on=function(){var a=this;if("string"==typeof arguments[0]){var b={};b[arguments[0]]=arguments[1],arguments[2]||{}}else{var b=arguments[0];arguments[1]||{}}for(var c in b){var d=c.split(" "),e=b[c];Array.isArray(e)||(e=[e]);for(var f,g=0;f=e[g];g++)f.uid||(f.uid=Uid());for(var h,g=0;h=d[g];g++){var i=-1===h.indexOf("*")?a.listeners:a.globListeners;i[h]=h in i?i[h].concat(e):e.concat()}}return a},b.proto.off=function(){var a,b,c,d,e=this;if(0===arguments.length)return e.listeners={},e.globListeners={},e;if(1===arguments.length&&"string"==typeof arguments[0]){for(c=arguments[0].split(" "),b=0;d=c[b];b++)delete e.listeners[d],delete e.globListeners[d];return e}if("function"==typeof arguments[0]||Array.isArray(arguments[0])){var f="function"==typeof arguments[0]?[arguments[0]]:arguments[0];return e}if(arguments.length>1){var g={};g[arguments[0]]=arguments[1]}else var g=arguments[0];for(var h in g){c=h.split(" ");var f=g[h];"function"==typeof f&&(f=[f]);for(var b=0;d=c[b];b++){if(d in e.listeners)a=e.listeners;else{if(!(d in e.globListeners))continue;a=e.globListeners}a[d]=a[d].filter(function(a){return-1===f.indexOf(a)})}}return e},b.proto.send=function(c){b.total[c]||(b.total[c]=0),b.total[c]+=1;var d,e,f,g=this.listeners,h=this.globListeners,i=tokenize(c);if(arguments.length){var j=Array.prototype.splice.call(arguments,1);j.push(c)}else var j=[];for(var k=0;e=i[k];k++){var l={},m={};if(d=g[e])for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e;var o=e.split(":");for(var p in h){if("*"!==p){var q=a[p]||(a[p]=p.split(":"));if(!globber(q,o))continue}d=h[p];for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e}var r=[];for(var f in l)r.push(l[f]);for(var f,n=0;f=r[n];n++)f.apply(f,j)}return this},b}(),FRAMES_PER_GIF=36,FPS=12,DELAY=Math.floor(1e3/FPS),WORKERS=6,FRAMES_TO_QUANTIZE=4,DO_UPLOAD=!0;!function(a,b){function c(a){var b=a.length,c=fb.type(a);return fb.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||"function"!==c&&(0===b||"number"==typeof b&&b>0&&b-1 in a)}function d(a){var b=ob[a]={};return fb.each(a.match(hb)||[],function(a,c){b[c]=!0}),b}function e(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=fb.expando+Math.random()}function f(a,c,d){var e;if(d===b&&1===a.nodeType)if(e="data-"+c.replace(sb,"-$1").toLowerCase(),d=a.getAttribute(e),"string"==typeof d){try{d="true"===d?!0:"false"===d?!1:"null"===d?null:+d+""===d?+d:rb.test(d)?JSON.parse(d):d}catch(f){}pb.set(a,c,d)}else d=b;return d}function g(){return!0}function h(){return!1}function i(){try{return T.activeElement}catch(a){}}function j(a,b){for(;(a=a[b])&&1!==a.nodeType;);return a}function k(a,b,c){if(fb.isFunction(b))return fb.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return fb.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(Cb.test(b))return fb.filter(b,a,c);b=fb.filter(b,a)}return fb.grep(a,function(a){return bb.call(b,a)>=0!==c})}function l(a,b){return fb.nodeName(a,"table")&&fb.nodeName(1===b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function m(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function n(a){var b=Nb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function o(a,b){for(var c=a.length,d=0;c>d;d++)qb.set(a[d],"globalEval",!b||qb.get(b[d],"globalEval"))}function p(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(qb.hasData(a)&&(f=qb.access(a),g=qb.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)fb.event.add(b,e,j[e][c])}pb.hasData(a)&&(h=pb.access(a),i=fb.extend({},h),pb.set(b,i))}}function q(a,c){var d=a.getElementsByTagName?a.getElementsByTagName(c||"*"):a.querySelectorAll?a.querySelectorAll(c||"*"):[];return c===b||c&&fb.nodeName(a,c)?fb.merge([a],d):d}function r(a,b){var c=b.nodeName.toLowerCase();"input"===c&&Kb.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}function s(a,b){if(b in a)return b;for(var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=_b.length;e--;)if(b=_b[e]+c,b in a)return b;return d}function t(a,b){return a=b||a,"none"===fb.css(a,"display")||!fb.contains(a.ownerDocument,a)}function u(b){return a.getComputedStyle(b,null)}function v(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=qb.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&t(d)&&(f[g]=qb.access(d,"olddisplay",z(d.nodeName)))):f[g]||(e=t(d),(c&&"none"!==c||!e)&&qb.set(d,"olddisplay",e?c:fb.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function w(a,b,c){var d=Ub.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function x(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=fb.css(a,c+$b[f],!0,e)),d?("content"===c&&(g-=fb.css(a,"padding"+$b[f],!0,e)),"margin"!==c&&(g-=fb.css(a,"border"+$b[f]+"Width",!0,e))):(g+=fb.css(a,"padding"+$b[f],!0,e),"padding"!==c&&(g+=fb.css(a,"border"+$b[f]+"Width",!0,e))); return g}function y(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=u(a),g=fb.support.boxSizing&&"border-box"===fb.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Qb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Vb.test(e))return e;d=g&&(fb.support.boxSizingReliable||e===a.style[b]),e=parseFloat(e)||0}return e+x(a,b,c||(g?"border":"content"),d,f)+"px"}function z(a){var b=T,c=Xb[a];return c||(c=A(a,b),"none"!==c&&c||(Rb=(Rb||fb("
- + + diff --git a/js/vendor/gif-encode.min.js b/js/vendor/gif-encode.min.js index 4e195aa..be5e2cd 100644 --- a/js/vendor/gif-encode.min.js +++ b/js/vendor/gif-encode.min.js @@ -1,2 +1,2 @@ /* asdf.us/gif-recorder */ -function shuffle(a){var b=new Array(a.length);b[0]=a[0];for(var c=1;cb;b++){var d=new Worker(workerURL);d.onmessage=a.receiveWork,c.push(d)}};var d={};a.hire=function(a,b){d[a]=b},a.work=function(a){c[++b%c.length].postMessage(a)},a.receiveWork=function(a){a.data.task in d&&d[a.data.task](a)},a.fire=function(){for(var b in c)c[b].postMessage("close");c=[],a.init()},a.init()}function b(a){console.log("[WORKER]",a.data.message)}function c(a){console.log(Date.now()-q,"quantization done"),i=a.data.neuquant,j=a.data.colortab,f.quantized=!0,f.tube("quantized")}function d(a){var b=a.data.frame_index,c=a.data.frame_data;m[b]=c,f.tube("encoded-frame",m.length,k.length);for(var d=0;d=g;++g)if(globber(e,b.slice(g)))return!0;return!1}return c=d===b[0],c&&(!e.length&&!f||globber(e,b.slice(1)))},setproto=function(a,b){if(a.__proto__)a.__proto__=b;else for(var c in b)a[c]=b[c]},Tube=function(){var a={},b=function(a){if(a=a||{},a.queue)var c=function(){var a=arguments;return nextTick(function(){c.send.apply(c,a)}),c};else var c=function(){return c.send.apply(c,arguments),c};return setproto(c,b.proto),c.listeners={},c.globListeners={},c};return b.total={},b.proto={},b.proto.on=function(){var a=this;if("string"==typeof arguments[0]){var b={};b[arguments[0]]=arguments[1];{arguments[2]||{}}}else{var b=arguments[0];arguments[1]||{}}for(var c in b){var d=c.split(" "),e=b[c];Array.isArray(e)||(e=[e]);for(var f,g=0;f=e[g];g++)f.uid||(f.uid=Uid());for(var h,g=0;h=d[g];g++){var i=-1===h.indexOf("*")?a.listeners:a.globListeners;i[h]=h in i?i[h].concat(e):e.concat()}}return a},b.proto.off=function(){var a,b,c,d,e=this;if(0===arguments.length)return e.listeners={},e.globListeners={},e;if(1===arguments.length&&"string"==typeof arguments[0]){for(c=arguments[0].split(" "),b=0;d=c[b];b++)delete e.listeners[d],delete e.globListeners[d];return e}if("function"==typeof arguments[0]||Array.isArray(arguments[0])){var f="function"==typeof arguments[0]?[arguments[0]]:arguments[0];return e}if(arguments.length>1){var g={};g[arguments[0]]=arguments[1]}else var g=arguments[0];for(var h in g){c=h.split(" ");var f=g[h];"function"==typeof f&&(f=[f]);for(var b=0;d=c[b];b++){if(d in e.listeners)a=e.listeners;else{if(!(d in e.globListeners))continue;a=e.globListeners}a[d]=a[d].filter(function(a){return-1===f.indexOf(a)})}}return e},b.proto.send=function(c){b.total[c]||(b.total[c]=0),b.total[c]+=1;var d,e,f,g=this.listeners,h=this.globListeners,i=tokenize(c);if(arguments.length){var j=Array.prototype.splice.call(arguments,1);j.push(c)}else var j=[];for(var k=0;e=i[k];k++){var l={},m={};if(d=g[e])for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e;var o=e.split(":");for(var p in h){if("*"!==p){var q=a[p]||(a[p]=p.split(":"));if(!globber(q,o))continue}d=h[p];for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e}var r=[];for(var f in l)r.push(l[f]);for(var f,n=0;f=r[n];n++)f.apply(f,j)}return this},b}(),FRAMES_PER_GIF=36,FPS=12,DELAY=Math.floor(1e3/FPS),WORKERS=6,FRAMES_TO_QUANTIZE=4,DO_UPLOAD=!0; \ No newline at end of file +function shuffle(a){var b=new Array(a.length);b[0]=a[0];for(var c=1;cb;b++){var d=new Worker(workerURL);d.onmessage=a.receiveWork,c.push(d)}};var d={};a.hire=function(a,b){d[a]=b},a.work=function(a){c[++b%c.length].postMessage(a)},a.receiveWork=function(a){a.data.task in d&&d[a.data.task](a)},a.fire=function(){for(var b in c)c[b].postMessage("close");c=[],a.init()},a.init()}function b(a){console.log("[WORKER]",a.data.message)}function c(a){console.log(Date.now()-q,"quantization done"),i=a.data.neuquant,j=a.data.colortab,f.quantized=!0,f.tube("quantized")}function d(a){var b=a.data.frame_index,c=a.data.frame_data;m[b]=c,f.tube("encoded-frame",m.length,k.length);for(var d=0;d=g;++g)if(globber(e,b.slice(g)))return!0;return!1}return c=d===b[0],c&&(!e.length&&!f||globber(e,b.slice(1)))},setproto=function(a,b){if(a.__proto__)a.__proto__=b;else for(var c in b)a[c]=b[c]},Tube=function(){var a={},b=function(a){if(a=a||{},a.queue)var c=function(){var a=arguments;return nextTick(function(){c.send.apply(c,a)}),c};else var c=function(){return c.send.apply(c,arguments),c};return setproto(c,b.proto),c.listeners={},c.globListeners={},c};return b.total={},b.proto={},b.proto.on=function(){var a=this;if("string"==typeof arguments[0]){var b={};b[arguments[0]]=arguments[1];{arguments[2]||{}}}else{var b=arguments[0];arguments[1]||{}}for(var c in b){var d=c.split(" "),e=b[c];Array.isArray(e)||(e=[e]);for(var f,g=0;f=e[g];g++)f.uid||(f.uid=Uid());for(var h,g=0;h=d[g];g++){var i=-1===h.indexOf("*")?a.listeners:a.globListeners;i[h]=h in i?i[h].concat(e):e.concat()}}return a},b.proto.off=function(){var a,b,c,d,e=this;if(0===arguments.length)return e.listeners={},e.globListeners={},e;if(1===arguments.length&&"string"==typeof arguments[0]){for(c=arguments[0].split(" "),b=0;d=c[b];b++)delete e.listeners[d],delete e.globListeners[d];return e}if("function"==typeof arguments[0]||Array.isArray(arguments[0])){var f="function"==typeof arguments[0]?[arguments[0]]:arguments[0];return e}if(arguments.length>1){var g={};g[arguments[0]]=arguments[1]}else var g=arguments[0];for(var h in g){c=h.split(" ");var f=g[h];"function"==typeof f&&(f=[f]);for(var b=0;d=c[b];b++){if(d in e.listeners)a=e.listeners;else{if(!(d in e.globListeners))continue;a=e.globListeners}a[d]=a[d].filter(function(a){return-1===f.indexOf(a)})}}return e},b.proto.send=function(c){b.total[c]||(b.total[c]=0),b.total[c]+=1;var d,e,f,g=this.listeners,h=this.globListeners,i=tokenize(c);if(arguments.length){var j=Array.prototype.splice.call(arguments,1);j.push(c)}else var j=[];for(var k=0;e=i[k];k++){var l={},m={};if(d=g[e])for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e;var o=e.split(":");for(var p in h){if("*"!==p){var q=a[p]||(a[p]=p.split(":"));if(!globber(q,o))continue}d=h[p];for(var n=0;f=d[n];n++)l[f.uid]=f,m[f.uid]=e}var r=[];for(var f in l)r.push(l[f]);for(var f,n=0;f=r[n];n++)f.apply(f,j)}return this},b}(),FRAMES_PER_GIF=36,FPS=12,DELAY=Math.floor(1e3/FPS),WORKERS=6,FRAMES_TO_QUANTIZE=4,DO_UPLOAD=!0,workerURL=URL.createObjectURL(new Blob(["(",function(){function a(a){var c=a.imageData,d=b(c.data),e=new NeuQuant(d,d.length,1),f=e.process();self.postMessage({task:"quantize",neuquant:e.save(),colortab:f})}function b(a){for(var b=[],c=0,d=0,e=a.length;e>c;d+=4)b[c++]=a[d],b[c++]=a[d+1],b[c++]=a[d+2];return b}function c(a){var b=a.frame_index,c=a.frame_length,d=a.height,e=a.width,f=a.imageData,g=a.delay,h=a.neuquant,i=a.colortab,j=new GIFEncoder;j.setRepeat(0),j.setQuality(1),j.setSize(e,d),j.setDelay(g),0==b?j.start():(j.cont(),j.setProperties(!0,!1)),j.setNeuquant(h,i),j.addFrame(f,!0),c==b&&j.finish(),self.postMessage({task:"encode",frame_index:b,frame_data:j.stream().getData()}),delete j,delete a}GIFEncoder=function(){function a(){this.bin=[]}for(var b=0,c={};256>b;b++)c[b]=String.fromCharCode(b);a.prototype.getData=function(){for(var a="",b=this.bin.length,d=0;b>d;d++)a+=c[this.bin[d]];return a},a.prototype.writeByte=function(a){this.bin.push(a)},a.prototype.writeUTFBytes=function(a){for(var b=a.length,c=0;b>c;c++)this.writeByte(a.charCodeAt(c))},a.prototype.writeBytes=function(a,b,c){for(var d=c||a.length,e=b||0;d>e;e++)this.writeByte(a[e])};var d,e,f,g,h,i,j,k,l,m={},n=null,o=-1,p=0,q=!1,r=new Array,s=7,t=-1,u=!1,v=!0,w=!1,x=1,y=null,z=(m.setDelay=function(a){p=Math.round(a/10)},m.setDispose=function(a){a>=0&&(t=a)},m.setRepeat=function(a){a>=0&&(o=a)},m.setTransparent=function(a){n=a},m.addFrame=function(a,b){if(null==a||!q||null==g)throw new Error("Please call start method before calling addFrame");var c=!0;try{b?h=a:(h=a.getImageData(0,0,a.canvas.width,a.canvas.height).data,w||A(a.canvas.width,a.canvas.height)),D(),B(),v&&(G(),I(),o>=0&&H()),E(),F(),v||I(),K(),v=!1}catch(d){c=!1}return c},m.finish=function(){if(!q)return!1;var a=!0;q=!1;try{g.writeByte(59)}catch(b){a=!1}return a},function(){f=0,h=null,i=null,j=null,l=null,u=!1,v=!0}),A=(m.setFrameRate=function(a){15!=a&&(p=Math.round(100/a))},m.setQuality=function(a){x=Math.max(1,a)},m.setSize=function(a,b){(!q||v)&&(d=a,e=b,1>d&&(d=320),1>e&&(e=240),w=!0)}),B=(m.setNeuquant=function(a,b){y=a,l=b},m.start=function(){z();var b=!0;u=!1,g=new a;try{g.writeUTFBytes("GIF89a")}catch(c){b=!1}return q=b},m.cont=function(){z();var b=!0;return u=!1,g=new a,q=b},function(){var a=i.length,b=a/3;j=[];var c;y&&l?(c=new NeuQuant,c.load(y)):(c=new NeuQuant(i,a,x),l=c.process());for(var d=0,e=0;b>e;e++){var g=c.map(255&i[d++],255&i[d++],255&i[d++]);r[g]=!0,j[e]=g}i=null,k=8,s=7,null!=n&&(f=C(n))}),C=function(a){if(null==l)return-1;for(var b=(16711680&a)>>16,c=(65280&a)>>8,d=255&a,e=0,f=16777216,g=l.length,h=0;g>h;){var i=b-(255&l[h++]),j=c-(255&l[h++]),k=d-(255&l[h]),m=i*i+j*j+k*k,n=h/3;r[n]&&f>m&&(f=m,e=n),h++}return e},D=function(){var a=d,b=e;i=[];for(var c=h,f=0,g=0;b>g;g++)for(var j=0;a>j;j++){var k=g*a*4+4*j;i[f++]=c[k],i[f++]=c[k+1],i[f++]=c[k+2]}},E=function(){g.writeByte(33),g.writeByte(249),g.writeByte(4);var a,b;null==n?(a=0,b=0):(a=1,b=2),t>=0&&(b=7&t),b<<=2,g.writeByte(0|b|0|a),J(p),g.writeByte(f),g.writeByte(0)},F=function(){g.writeByte(44),J(0),J(0),J(d),J(e),g.writeByte(v?0:128|s)},G=function(){J(d),J(e),g.writeByte(240|s),g.writeByte(0),g.writeByte(0)},H=function(){g.writeByte(33),g.writeByte(255),g.writeByte(11),g.writeUTFBytes("NETSCAPE2.0"),g.writeByte(3),g.writeByte(1),J(o),g.writeByte(0)},I=function(){g.writeBytes(l);for(var a=768-l.length,b=0;a>b;b++)g.writeByte(0)},J=function(a){g.writeByte(255&a),g.writeByte(a>>8&255)},K=function(){var a=new LZWEncoder(d,e,j,k);a.encode(g)};return m.stream=function(){return g},m.setProperties=function(a,b){q=a,v=b},m},LZWEncoder=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m={},n=-1,o=12,p=5003,q=o,r=1<=254&&G(b)},D=function(a){E(u),v=j+2,w=!0,J(j,a)},E=function(a){for(var b=0;a>b;++b)s[b]=-1},F=m.compress=function(a,b){var c,d,e,f,m,o,p;for(i=a,w=!1,g=i,h=H(g),j=1<c;c*=2)++p;p=8-p,o=u,E(o),J(j,b);a:for(;(e=I())!=n;)if(c=(e<=0){m=o-d,0==d&&(m=1);do if((d-=m)<0&&(d+=o),s[d]==c){f=t[d];continue a}while(s[d]>=0)}J(f,b),f=e,r>v?(t[d]=v++,s[d]=c):D(b)}else f=t[d];J(f,b),J(k,b)},G=(m.encode=function(c){c.writeByte(d),e=a*b,f=0,F(d+1,c),c.writeByte(0)},function(a){l>0&&(a.writeByte(l),a.writeBytes(A,0,l),l=0)}),H=function(a){return(1<0?x|=a<=8;)C(255&x,b),x>>=8,y-=8;if((v>h||w)&&(w?(h=H(g=i),w=!1):(++g,h=g==q?r:H(g))),a==k){for(;y>0;)C(255&x,b),x>>=8,y-=8;G(b)}};return B.apply(this,arguments),m},NeuQuant=function(){var a,b,c,d,e,f={},g=128,h=499,i=491,j=487,k=503,l=3*k,m=g-1,n=4,o=100,p=16,q=1<>s,u=q<>3,w=6,x=1<i;i++)e[i]=new Array(4),j=e[i],j[0]=j[1]=j[2]=(i<c;c++)b[e[c][3]]=c;for(var d=0,f=0;g>f;f++){var h=b[f];a[d++]=e[h][0],a[d++]=e[h][1],a[d++]=e[h][2]}return a},M=function(){var a,b,c,d,f,h,i,j;for(i=0,j=0,a=0;g>a;a++){for(f=e[a],c=a,d=f[1],b=a+1;g>b;b++)h=e[b],h[1]>1,b=i+1;d>b;b++)G[b]=a;i=d,j=a}}for(G[i]=j+m>>1,b=i+1;256>b;b++)G[b]=m},N=function(){var e,f,g,m,p,q,r,s,t,u,v,x,A,C;for(l>c&&(d=1),a=30+(d-1)/3,x=b,A=0,C=c,v=c/(3*d),u=v/o,s=B,q=y,r=q>>w,1>=r&&(r=0),e=0;r>e;e++)J[e]=s*((r*r-e*e)*D/(r*r));for(t=l>c?3:c%h!=0?3*h:c%i!=0?3*i:c%j!=0?3*j:3*k,e=0;v>e;)if(g=(255&x[A+0])<=C&&(A-=c),e++,0==u&&(u=1),e%u==0)for(s-=s/a,q-=q/z,r=q>>w,1>=r&&(r=0),f=0;r>f;f++)J[f]=s*((r*r-f*f)*D/(r*r))},O=(f.save=function(){var a={netindex:G,netsize:g,network:e};return a},f.load=function(a){G=a.netindex,g=a.netsize,e=a.network},f.map=function(a,b,c){var d,f,h,i,j,k,l;for(j=1e3,l=-1,d=G[b],f=d-1;g>d||f>=0;)g>d&&(k=e[d],h=k[1]-b,h>=j?d=g:(d++,0>h&&(h=-h),i=k[0]-a,0>i&&(i=-i),h+=i,j>h&&(i=k[2]-c,0>i&&(i=-i),h+=i,j>h&&(j=h,l=k[3])))),f>=0&&(k=e[f],h=b-k[1],h>=j?f=-1:(f--,0>h&&(h=-h),i=k[0]-a,0>i&&(i=-i),h+=i,j>h&&(i=k[2]-c,0>i&&(i=-i),h+=i,j>h&&(j=h,l=k[3]))));return l},f.process=function(){return N(),O(),M(),L()},function(){var a;for(a=0;g>a;a++)e[a][0]>>=n,e[a][1]>>=n,e[a][2]>>=n,e[a][3]=a}),P=function(a,b,c,d,f){var h,i,j,k,l,m,n;for(j=b-a,-1>j&&(j=-1),k=b+a,k>g&&(k=g),h=b+1,i=b-1,m=1;k>h||i>j;){if(l=J[m++],k>h){n=e[h++];try{n[0]-=l*(n[0]-c)/F,n[1]-=l*(n[1]-d)/F,n[2]-=l*(n[2]-f)/F}catch(o){}}if(i>j){n=e[i--];try{n[0]-=l*(n[0]-c)/F,n[1]-=l*(n[1]-d)/F,n[2]-=l*(n[2]-f)/F}catch(o){}}}},Q=function(a,b,c,d,f){var g=e[b];g[0]-=a*(g[0]-c)/B,g[1]-=a*(g[1]-d)/B,g[2]-=a*(g[2]-f)/B},R=function(a,b,c){var d,f,h,i,j,k,l,m,o,q;for(m=~(1<<31),o=m,k=-1,l=k,d=0;g>d;d++)q=e[d],f=q[0]-a,0>f&&(f=-f),h=q[1]-b,0>h&&(h=-h),f+=h,h=q[2]-c,0>h&&(h=-h),f+=h,m>f&&(m=f,k=d),i=f-(H[d]>>p-n),o>i&&(o=i,l=d),j=I[d]>>s,I[d]-=j,H[d]+=j<
- @@ -263,6 +262,6 @@ function init(){ requestAnimationFrame(animate) } - + -- cgit v1.2.3-70-g09d2 From c6b804f72f3e61f09692b2b29f73e1a6eb25687d Mon Sep 17 00:00:00 2001 From: jules Date: Wed, 29 Jan 2014 10:48:39 -0500 Subject: build with uglified script --- Gruntfile.js | 6 +++--- dist/app.min.js | 2 +- dist/index.html | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) (limited to 'Gruntfile.js') diff --git a/Gruntfile.js b/Gruntfile.js index 9cbc671..9ee254a 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -5,7 +5,7 @@ module.exports = function(grunt) { pkg: grunt.file.readJSON('package.json'), dentist: { options: { - include: "app.concat.js" + include: "app.min.js" }, build: { src: 'shader-combo.html', @@ -97,6 +97,6 @@ module.exports = function(grunt) { // Default task(s). - grunt.registerTask('default', ['dentist:build', 'concat:build', 'copy:build']); - grunt.registerTask('install', ['default', 'uglify:build', 'clean', 'copy:release']); + grunt.registerTask('default', ['dentist:build', 'concat:build', 'uglify:build', 'copy:build']); + grunt.registerTask('install', ['default', 'clean', 'copy:release']); }; diff --git a/dist/app.min.js b/dist/app.min.js index 65dbd4e..e525383 100644 --- a/dist/app.min.js +++ b/dist/app.min.js @@ -7,4 +7,4 @@ try{for(;e>d;d++)c=this[d]||{},1===c.nodeType&&(fb.cleanData(q(c,!1)),c.innerHTM }"string"!=typeof h&&(i.guid=h.guid=h.guid||i.guid||a.guid++);var j=e.match(/^(\w+)\s*(.*)$/),k=j[1]+g.eventNamespace,l=j[2];l?f.delegate(l,k,i):d.bind(k,i)})},_off:function(a,b){b=(b||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,a.unbind(b).undelegate(b)},_delay:function(a,b){function c(){return("string"==typeof a?d[a]:a).apply(d,arguments)}var d=this;return setTimeout(c,b||0)},_hoverable:function(b){this.hoverable=this.hoverable.add(b),this._on(b,{mouseenter:function(b){a(b.currentTarget).addClass("ui-state-hover")},mouseleave:function(b){a(b.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(b){this.focusable=this.focusable.add(b),this._on(b,{focusin:function(b){a(b.currentTarget).addClass("ui-state-focus")},focusout:function(b){a(b.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(b,c,d){var e,f,g=this.options[b];if(d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent)for(e in f)e in c||(c[e]=f[e]);return this.element.trigger(c,d),!(a.isFunction(g)&&g.apply(this.element[0],[c].concat(d))===!1||c.isDefaultPrevented())}},a.each({show:"fadeIn",hide:"fadeOut"},function(b,c){a.Widget.prototype["_"+b]=function(d,e,f){"string"==typeof e&&(e={effect:e});var g,h=e?e===!0||"number"==typeof e?c:e.effect||c:b;e=e||{},"number"==typeof e&&(e={duration:e}),g=!a.isEmptyObject(e),e.complete=f,e.delay&&d.delay(e.delay),g&&a.effects&&a.effects.effect[h]?d[b](e):h!==b&&d[h]?d[h](e.duration,e.easing,f):d.queue(function(c){a(this)[b](),f&&f.call(d[0]),c()})}})}(jQuery),function(a){var b=!1;a(document).mouseup(function(){b=!1}),a.widget("ui.mouse",{version:"1.10.3",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){return!0===a.data(c.target,b.widgetName+".preventClickEvent")?(a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(c){if(!b){this._mouseStarted&&this._mouseUp(c),this._mouseDownEvent=c;var d=this,e=1===c.which,f="string"==typeof this.options.cancel&&c.target.nodeName?a(c.target).closest(this.options.cancel).length:!1;return e&&!f&&this._mouseCapture(c)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(c)&&this._mouseDelayMet(c)&&(this._mouseStarted=this._mouseStart(c)!==!1,!this._mouseStarted)?(c.preventDefault(),!0):(!0===a.data(c.target,this.widgetName+".preventClickEvent")&&a.removeData(c.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),c.preventDefault(),b=!0,!0)):!0}},_mouseMove:function(b){return a.ui.ie&&(!document.documentMode||9>document.documentMode)&&!b.button?this._mouseUp(b):this._mouseStarted?(this._mouseDrag(b),b.preventDefault()):(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b)),!this._mouseStarted)},_mouseUp:function(b){return a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target===this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b)),!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})}(jQuery),function(a){a.widget("ui.draggable",a.ui.mouse,{version:"1.10.3",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"!==this.options.helper||/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(b){var c=this.options;return this.helper||c.disabled||a(b.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(b),this.handle?(a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a("
").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(b){var c=this.options;return this.helper=this._createHelper(b),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offsetParent=this.helper.offsetParent(),this.offsetParentCssPosition=this.offsetParent.css("position"),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.offset.scroll=!1,a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),this._setContainment(),this._trigger("start",b)===!1?(this._clear(),!1):(this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b),!0)},_mouseDrag:function(b,c){if("fixed"===this.offsetParentCssPosition&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1)return this._mouseUp({}),!1;this.position=d.position}return this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),!1},_mouseStop:function(b){var c=this,d=!1;return a.ui.ddmanager&&!this.options.dropBehaviour&&(d=a.ui.ddmanager.drop(this,b)),this.dropped&&(d=this.dropped,this.dropped=!1),"original"!==this.options.helper||a.contains(this.element[0].ownerDocument,this.element[0])?("invalid"===this.options.revert&&!d||"valid"===this.options.revert&&d||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,d)?a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",b)!==!1&&c._clear()}):this._trigger("stop",b)!==!1&&this._clear(),!1):!1},_mouseUp:function(b){return a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b),a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(b){return this.options.handle?!!a(b.target).closest(this.element.find(this.options.handle)).length:!0},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):"clone"===c.helper?this.element.clone().removeAttr("id"):this.element;return d.parents("body").length||d.appendTo("parent"===c.appendTo?this.element[0].parentNode:c.appendTo),d[0]===this.element[0]||/(fixed|absolute)/.test(d.css("position"))||d.css("position","absolute"),d},_adjustOffsetFromHelper:function(b){"string"==typeof b&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){var b=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&a.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&a.ui.ie)&&(b={top:0,left:0}),{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b,c,d,e=this.options;return e.containment?"window"===e.containment?void(this.containment=[a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,a(window).scrollLeft()+a(window).width()-this.helperProportions.width-this.margins.left,a(window).scrollTop()+(a(window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]):"document"===e.containment?void(this.containment=[0,0,a(document).width()-this.helperProportions.width-this.margins.left,(a(document).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]):e.containment.constructor===Array?void(this.containment=e.containment):("parent"===e.containment&&(e.containment=this.helper[0].parentNode),c=a(e.containment),d=c[0],void(d&&(b="hidden"!==c.css("overflow"),this.containment=[(parseInt(c.css("borderLeftWidth"),10)||0)+(parseInt(c.css("paddingLeft"),10)||0),(parseInt(c.css("borderTopWidth"),10)||0)+(parseInt(c.css("paddingTop"),10)||0),(b?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(c.css("borderRightWidth"),10)||0)-(parseInt(c.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(b?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(c.css("borderBottomWidth"),10)||0)-(parseInt(c.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c))):void(this.containment=null)},_convertPositionTo:function(b,c){c||(c=this.position);var d="absolute"===b?1:-1,e="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&a.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent;return this.offset.scroll||(this.offset.scroll={top:e.scrollTop(),left:e.scrollLeft()}),{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top)*d,left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)*d}},_generatePosition:function(b){var c,d,e,f,g=this.options,h="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&a.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=b.pageX,j=b.pageY;return this.offset.scroll||(this.offset.scroll={top:h.scrollTop(),left:h.scrollLeft()}),this.originalPosition&&(this.containment&&(this.relative_container?(d=this.relative_container.offset(),c=[this.containment[0]+d.left,this.containment[1]+d.top,this.containment[2]+d.left,this.containment[3]+d.top]):c=this.containment,b.pageX-this.offset.click.leftc[2]&&(i=c[2]+this.offset.click.left),b.pageY-this.offset.click.top>c[3]&&(j=c[3]+this.offset.click.top)),g.grid&&(e=g.grid[1]?this.originalPageY+Math.round((j-this.originalPageY)/g.grid[1])*g.grid[1]:this.originalPageY,j=c?e-this.offset.click.top>=c[1]||e-this.offset.click.top>c[3]?e:e-this.offset.click.top>=c[1]?e-g.grid[1]:e+g.grid[1]:e,f=g.grid[0]?this.originalPageX+Math.round((i-this.originalPageX)/g.grid[0])*g.grid[0]:this.originalPageX,i=c?f-this.offset.click.left>=c[0]||f-this.offset.click.left>c[2]?f:f-this.offset.click.left>=c[0]?f-g.grid[0]:f+g.grid[0]:f)),{top:j-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():this.offset.scroll.top),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(b,c,d){return d=d||this._uiHash(),a.ui.plugin.call(this,b,[c,d]),"drag"===b&&(this.positionAbs=this._convertPositionTo("absolute")),a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),a.ui.plugin.add("draggable","connectToSortable",{start:function(b,c){var d=a(this).data("ui-draggable"),e=d.options,f=a.extend({},c,{item:d.element});d.sortables=[],a(e.connectToSortable).each(function(){var c=a.data(this,"ui-sortable");c&&!c.options.disabled&&(d.sortables.push({instance:c,shouldRevert:c.options.revert}),c.refreshPositions(),c._trigger("activate",b,f))})},stop:function(b,c){var d=a(this).data("ui-draggable"),e=a.extend({},c,{item:d.element});a.each(d.sortables,function(){this.instance.isOver?(this.instance.isOver=0,d.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=this.shouldRevert),this.instance._mouseStop(b),this.instance.options.helper=this.instance.options._helper,"original"===d.options.helper&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",b,e))})},drag:function(b,c){var d=a(this).data("ui-draggable"),e=this;a.each(d.sortables,function(){var f=!1,g=this;this.instance.positionAbs=d.positionAbs,this.instance.helperProportions=d.helperProportions,this.instance.offset.click=d.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(f=!0,a.each(d.sortables,function(){return this.instance.positionAbs=d.positionAbs,this.instance.helperProportions=d.helperProportions,this.instance.offset.click=d.offset.click,this!==g&&this.instance._intersectsWith(this.instance.containerCache)&&a.contains(g.instance.element[0],this.instance.element[0])&&(f=!1),f})),f?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=a(e).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return c.helper[0]},b.target=this.instance.currentItem[0],this.instance._mouseCapture(b,!0),this.instance._mouseStart(b,!0,!0),this.instance.offset.click.top=d.offset.click.top,this.instance.offset.click.left=d.offset.click.left,this.instance.offset.parent.left-=d.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=d.offset.parent.top-this.instance.offset.parent.top,d._trigger("toSortable",b),d.dropped=this.instance.element,d.currentItem=d.element,this.instance.fromOutside=d),this.instance.currentItem&&this.instance._mouseDrag(b)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",b,this.instance._uiHash(this.instance)),this.instance._mouseStop(b,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),d._trigger("fromSortable",b),d.dropped=!1)})}}),a.ui.plugin.add("draggable","cursor",{start:function(){var b=a("body"),c=a(this).data("ui-draggable").options;b.css("cursor")&&(c._cursor=b.css("cursor")),b.css("cursor",c.cursor)},stop:function(){var b=a(this).data("ui-draggable").options;b._cursor&&a("body").css("cursor",b._cursor)}}),a.ui.plugin.add("draggable","opacity",{start:function(b,c){var d=a(c.helper),e=a(this).data("ui-draggable").options;d.css("opacity")&&(e._opacity=d.css("opacity")),d.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("ui-draggable").options;d._opacity&&a(c.helper).css("opacity",d._opacity)}}),a.ui.plugin.add("draggable","scroll",{start:function(){var b=a(this).data("ui-draggable");b.scrollParent[0]!==document&&"HTML"!==b.scrollParent[0].tagName&&(b.overflowOffset=b.scrollParent.offset())},drag:function(b){var c=a(this).data("ui-draggable"),d=c.options,e=!1;c.scrollParent[0]!==document&&"HTML"!==c.scrollParent[0].tagName?(d.axis&&"x"===d.axis||(c.overflowOffset.top+c.scrollParent[0].offsetHeight-b.pageY=0;l--)h=n.snapElements[l].left,i=h+n.snapElements[l].width,j=n.snapElements[l].top,k=j+n.snapElements[l].height,h-p>r||q>i+p||j-p>t||s>k+p||!a.contains(n.snapElements[l].item.ownerDocument,n.snapElements[l].item)?(n.snapElements[l].snapping&&n.options.snap.release&&n.options.snap.release.call(n.element,b,a.extend(n._uiHash(),{snapItem:n.snapElements[l].item})),n.snapElements[l].snapping=!1):("inner"!==o.snapMode&&(d=p>=Math.abs(j-t),e=p>=Math.abs(k-s),f=p>=Math.abs(h-r),g=p>=Math.abs(i-q),d&&(c.position.top=n._convertPositionTo("relative",{top:j-n.helperProportions.height,left:0}).top-n.margins.top),e&&(c.position.top=n._convertPositionTo("relative",{top:k,left:0}).top-n.margins.top),f&&(c.position.left=n._convertPositionTo("relative",{top:0,left:h-n.helperProportions.width}).left-n.margins.left),g&&(c.position.left=n._convertPositionTo("relative",{top:0,left:i}).left-n.margins.left)),m=d||e||f||g,"outer"!==o.snapMode&&(d=p>=Math.abs(j-s),e=p>=Math.abs(k-t),f=p>=Math.abs(h-q),g=p>=Math.abs(i-r),d&&(c.position.top=n._convertPositionTo("relative",{top:j,left:0}).top-n.margins.top),e&&(c.position.top=n._convertPositionTo("relative",{top:k-n.helperProportions.height,left:0}).top-n.margins.top),f&&(c.position.left=n._convertPositionTo("relative",{top:0,left:h}).left-n.margins.left),g&&(c.position.left=n._convertPositionTo("relative",{top:0,left:i-n.helperProportions.width}).left-n.margins.left)),!n.snapElements[l].snapping&&(d||e||f||g||m)&&n.options.snap.snap&&n.options.snap.snap.call(n.element,b,a.extend(n._uiHash(),{snapItem:n.snapElements[l].item})),n.snapElements[l].snapping=d||e||f||g||m)}}),a.ui.plugin.add("draggable","stack",{start:function(){var b,c=this.data("ui-draggable").options,d=a.makeArray(a(c.stack)).sort(function(b,c){return(parseInt(a(b).css("zIndex"),10)||0)-(parseInt(a(c).css("zIndex"),10)||0)});d.length&&(b=parseInt(a(d[0]).css("zIndex"),10)||0,a(d).each(function(c){a(this).css("zIndex",b+c)}),this.css("zIndex",b+d.length))}}),a.ui.plugin.add("draggable","zIndex",{start:function(b,c){var d=a(c.helper),e=a(this).data("ui-draggable").options;d.css("zIndex")&&(e._zIndex=d.css("zIndex")),d.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("ui-draggable").options;d._zIndex&&a(c.helper).css("zIndex",d._zIndex)}})}(jQuery),function(a){function b(a){return parseInt(a,10)||0}function c(a){return!isNaN(parseInt(a,10))}a.widget("ui.resizable",a.ui.mouse,{version:"1.10.3",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var b,c,d,e,f,g=this,h=this.options;if(this.element.addClass("ui-resizable"),a.extend(this,{_aspectRatio:!!h.aspectRatio,aspectRatio:h.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:h.helper||h.ghost||h.animate?h.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(a("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=h.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),b=this.handles.split(","),this.handles={},c=0;b.length>c;c++)d=a.trim(b[c]),f="ui-resizable-"+d,e=a("
"),e.css({zIndex:h.zIndex}),"se"===d&&e.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[d]=".ui-resizable-"+d,this.element.append(e);this._renderAxis=function(b){var c,d,e,f;b=b||this.element;for(c in this.handles)this.handles[c].constructor===String&&(this.handles[c]=a(this.handles[c],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(d=a(this.handles[c],this.element),f=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth(),e=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join(""),b.css(e,f),this._proportionallyResize()),a(this.handles[c]).length},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){g.resizing||(this.className&&(e=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),g.axis=e&&e[1]?e[1]:"se")}),h.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").mouseenter(function(){h.disabled||(a(this).removeClass("ui-resizable-autohide"),g._handles.show())}).mouseleave(function(){h.disabled||g.resizing||(a(this).addClass("ui-resizable-autohide"),g._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var b,c=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(c(this.element),b=this.element,this.originalElement.css({position:b.css("position"),width:b.outerWidth(),height:b.outerHeight(),top:b.css("top"),left:b.css("left")}).insertAfter(b),b.remove()),this.originalElement.css("resize",this.originalResizeStyle),c(this.originalElement),this},_mouseCapture:function(b){var c,d,e=!1;for(c in this.handles)d=a(this.handles[c])[0],(d===b.target||a.contains(d,b.target))&&(e=!0);return!this.options.disabled&&e},_mouseStart:function(c){var d,e,f,g=this.options,h=this.element.position(),i=this.element;return this.resizing=!0,/absolute/.test(i.css("position"))?i.css({position:"absolute",top:i.css("top"),left:i.css("left")}):i.is(".ui-draggable")&&i.css({position:"absolute",top:h.top,left:h.left}),this._renderProxy(),d=b(this.helper.css("left")),e=b(this.helper.css("top")),g.containment&&(d+=a(g.containment).scrollLeft()||0,e+=a(g.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:d,top:e},this.size=this._helper?{width:i.outerWidth(),height:i.outerHeight()}:{width:i.width(),height:i.height()},this.originalSize=this._helper?{width:i.outerWidth(),height:i.outerHeight()}:{width:i.width(),height:i.height()},this.originalPosition={left:d,top:e},this.sizeDiff={width:i.outerWidth()-i.width(),height:i.outerHeight()-i.height()},this.originalMousePosition={left:c.pageX,top:c.pageY},this.aspectRatio="number"==typeof g.aspectRatio?g.aspectRatio:this.originalSize.width/this.originalSize.height||1,f=a(".ui-resizable-"+this.axis).css("cursor"),a("body").css("cursor","auto"===f?this.axis+"-resize":f),i.addClass("ui-resizable-resizing"),this._propagate("start",c),!0},_mouseDrag:function(b){var c,d=this.helper,e={},f=this.originalMousePosition,g=this.axis,h=this.position.top,i=this.position.left,j=this.size.width,k=this.size.height,l=b.pageX-f.left||0,m=b.pageY-f.top||0,n=this._change[g];return n?(c=n.apply(this,[b,l,m]),this._updateVirtualBoundaries(b.shiftKey),(this._aspectRatio||b.shiftKey)&&(c=this._updateRatio(c,b)),c=this._respectSize(c,b),this._updateCache(c),this._propagate("resize",b),this.position.top!==h&&(e.top=this.position.top+"px"),this.position.left!==i&&(e.left=this.position.left+"px"),this.size.width!==j&&(e.width=this.size.width+"px"),this.size.height!==k&&(e.height=this.size.height+"px"),d.css(e),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),a.isEmptyObject(e)||this._trigger("resize",b,this.ui()),!1):!1},_mouseStop:function(b){this.resizing=!1;var c,d,e,f,g,h,i,j=this.options,k=this;return this._helper&&(c=this._proportionallyResizeElements,d=c.length&&/textarea/i.test(c[0].nodeName),e=d&&a.ui.hasScroll(c[0],"left")?0:k.sizeDiff.height,f=d?0:k.sizeDiff.width,g={width:k.helper.width()-f,height:k.helper.height()-e},h=parseInt(k.element.css("left"),10)+(k.position.left-k.originalPosition.left)||null,i=parseInt(k.element.css("top"),10)+(k.position.top-k.originalPosition.top)||null,j.animate||this.element.css(a.extend(g,{top:i,left:h})),k.helper.height(k.size.height),k.helper.width(k.size.width),this._helper&&!j.animate&&this._proportionallyResize()),a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(a){var b,d,e,f,g,h=this.options;g={minWidth:c(h.minWidth)?h.minWidth:0,maxWidth:c(h.maxWidth)?h.maxWidth:1/0,minHeight:c(h.minHeight)?h.minHeight:0,maxHeight:c(h.maxHeight)?h.maxHeight:1/0},(this._aspectRatio||a)&&(b=g.minHeight*this.aspectRatio,e=g.minWidth/this.aspectRatio,d=g.maxHeight*this.aspectRatio,f=g.maxWidth/this.aspectRatio,b>g.minWidth&&(g.minWidth=b),e>g.minHeight&&(g.minHeight=e),g.maxWidth>d&&(g.maxWidth=d),g.maxHeight>f&&(g.maxHeight=f)),this._vBoundaries=g},_updateCache:function(a){this.offset=this.helper.offset(),c(a.left)&&(this.position.left=a.left),c(a.top)&&(this.position.top=a.top),c(a.height)&&(this.size.height=a.height),c(a.width)&&(this.size.width=a.width)},_updateRatio:function(a){var b=this.position,d=this.size,e=this.axis;return c(a.height)?a.width=a.height*this.aspectRatio:c(a.width)&&(a.height=a.width/this.aspectRatio),"sw"===e&&(a.left=b.left+(d.width-a.width),a.top=null),"nw"===e&&(a.top=b.top+(d.height-a.height),a.left=b.left+(d.width-a.width)),a},_respectSize:function(a){var b=this._vBoundaries,d=this.axis,e=c(a.width)&&b.maxWidth&&b.maxWidtha.width,h=c(a.height)&&b.minHeight&&b.minHeight>a.height,i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,k=/sw|nw|w/.test(d),l=/nw|ne|n/.test(d);return g&&(a.width=b.minWidth),h&&(a.height=b.minHeight),e&&(a.width=b.maxWidth),f&&(a.height=b.maxHeight),g&&k&&(a.left=i-b.minWidth),e&&k&&(a.left=i-b.maxWidth),h&&l&&(a.top=j-b.minHeight),f&&l&&(a.top=j-b.maxHeight),a.width||a.height||a.left||!a.top?a.width||a.height||a.top||!a.left||(a.left=null):a.top=null,a},_proportionallyResize:function(){if(this._proportionallyResizeElements.length){var a,b,c,d,e,f=this.helper||this.element;for(a=0;this._proportionallyResizeElements.length>a;a++){if(e=this._proportionallyResizeElements[a],!this.borderDif)for(this.borderDif=[],c=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],d=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")],b=0;c.length>b;b++)this.borderDif[b]=(parseInt(c[b],10)||0)+(parseInt(d[b],10)||0); e.css({height:f.height()-this.borderDif[0]-this.borderDif[2]||0,width:f.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var b=this.element,c=this.options;this.elementOffset=b.offset(),this._helper?(this.helper=this.helper||a("
"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(a,b){return{width:this.originalSize.width+b}},w:function(a,b){var c=this.originalSize,d=this.originalPosition;return{left:d.left+b,width:c.width-b}},n:function(a,b,c){var d=this.originalSize,e=this.originalPosition;return{top:e.top+c,height:d.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),"resize"!==b&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.ui.plugin.add("resizable","animate",{stop:function(b){var c=a(this).data("ui-resizable"),d=c.options,e=c._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:c.sizeDiff.height,h=f?0:c.sizeDiff.width,i={width:c.size.width-h,height:c.size.height-g},j=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null,k=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;c.element.animate(a.extend(i,k&&j?{top:k,left:j}:{}),{duration:d.animateDuration,easing:d.animateEasing,step:function(){var d={width:parseInt(c.element.css("width"),10),height:parseInt(c.element.css("height"),10),top:parseInt(c.element.css("top"),10),left:parseInt(c.element.css("left"),10)};e&&e.length&&a(e[0]).css({width:d.width,height:d.height}),c._updateCache(d),c._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(){var c,d,e,f,g,h,i,j=a(this).data("ui-resizable"),k=j.options,l=j.element,m=k.containment,n=m instanceof a?m.get(0):/parent/.test(m)?l.parent().get(0):m;n&&(j.containerElement=a(n),/document/.test(m)||m===document?(j.containerOffset={left:0,top:0},j.containerPosition={left:0,top:0},j.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight}):(c=a(n),d=[],a(["Top","Right","Left","Bottom"]).each(function(a,e){d[a]=b(c.css("padding"+e))}),j.containerOffset=c.offset(),j.containerPosition=c.position(),j.containerSize={height:c.innerHeight()-d[3],width:c.innerWidth()-d[1]},e=j.containerOffset,f=j.containerSize.height,g=j.containerSize.width,h=a.ui.hasScroll(n,"left")?n.scrollWidth:g,i=a.ui.hasScroll(n)?n.scrollHeight:f,j.parentData={element:n,left:e.left,top:e.top,width:h,height:i}))},resize:function(b){var c,d,e,f,g=a(this).data("ui-resizable"),h=g.options,i=g.containerOffset,j=g.position,k=g._aspectRatio||b.shiftKey,l={top:0,left:0},m=g.containerElement;m[0]!==document&&/static/.test(m.css("position"))&&(l=i),j.left<(g._helper?i.left:0)&&(g.size.width=g.size.width+(g._helper?g.position.left-i.left:g.position.left-l.left),k&&(g.size.height=g.size.width/g.aspectRatio),g.position.left=h.helper?i.left:0),j.top<(g._helper?i.top:0)&&(g.size.height=g.size.height+(g._helper?g.position.top-i.top:g.position.top),k&&(g.size.width=g.size.height*g.aspectRatio),g.position.top=g._helper?i.top:0),g.offset.left=g.parentData.left+g.position.left,g.offset.top=g.parentData.top+g.position.top,c=Math.abs((g._helper?g.offset.left-l.left:g.offset.left-l.left)+g.sizeDiff.width),d=Math.abs((g._helper?g.offset.top-l.top:g.offset.top-i.top)+g.sizeDiff.height),e=g.containerElement.get(0)===g.element.parent().get(0),f=/relative|absolute/.test(g.containerElement.css("position")),e&&f&&(c-=g.parentData.left),c+g.size.width>=g.parentData.width&&(g.size.width=g.parentData.width-c,k&&(g.size.height=g.size.width/g.aspectRatio)),d+g.size.height>=g.parentData.height&&(g.size.height=g.parentData.height-d,k&&(g.size.width=g.size.height*g.aspectRatio))},stop:function(){var b=a(this).data("ui-resizable"),c=b.options,d=b.containerOffset,e=b.containerPosition,f=b.containerElement,g=a(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width,j=g.outerHeight()-b.sizeDiff.height;b._helper&&!c.animate&&/relative/.test(f.css("position"))&&a(this).css({left:h.left-e.left-d.left,width:i,height:j}),b._helper&&!c.animate&&/static/.test(f.css("position"))&&a(this).css({left:h.left-e.left-d.left,width:i,height:j})}}),a.ui.plugin.add("resizable","alsoResize",{start:function(){var b=a(this).data("ui-resizable"),c=b.options,d=function(b){a(b).each(function(){var b=a(this);b.data("ui-resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)})})};"object"!=typeof c.alsoResize||c.alsoResize.parentNode?d(c.alsoResize):c.alsoResize.length?(c.alsoResize=c.alsoResize[0],d(c.alsoResize)):a.each(c.alsoResize,function(a){d(a)})},resize:function(b,c){var d=a(this).data("ui-resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,d){a(b).each(function(){var b=a(this),e=a(this).data("ui-resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};"object"!=typeof e.alsoResize||e.alsoResize.nodeType?i(e.alsoResize):a.each(e.alsoResize,function(a,b){i(a,b)})},stop:function(){a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","ghost",{start:function(){var b=a(this).data("ui-resizable"),c=b.options,d=b.size;b.ghost=b.originalElement.clone(),b.ghost.css({opacity:.25,display:"block",position:"relative",height:d.height,width:d.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof c.ghost?c.ghost:""),b.ghost.appendTo(b.helper)},resize:function(){var b=a(this).data("ui-resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=a(this).data("ui-resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(){var b=a(this).data("ui-resizable"),c=b.options,d=b.size,e=b.originalSize,f=b.originalPosition,g=b.axis,h="number"==typeof c.grid?[c.grid,c.grid]:c.grid,i=h[0]||1,j=h[1]||1,k=Math.round((d.width-e.width)/i)*i,l=Math.round((d.height-e.height)/j)*j,m=e.width+k,n=e.height+l,o=c.maxWidth&&m>c.maxWidth,p=c.maxHeight&&n>c.maxHeight,q=c.minWidth&&c.minWidth>m,r=c.minHeight&&c.minHeight>n;c.grid=h,q&&(m+=i),r&&(n+=j),o&&(m-=i),p&&(n-=j),/^(se|s|e)$/.test(g)?(b.size.width=m,b.size.height=n):/^(ne)$/.test(g)?(b.size.width=m,b.size.height=n,b.position.top=f.top-l):/^(sw)$/.test(g)?(b.size.width=m,b.size.height=n,b.position.left=f.left-k):(b.size.width=m,b.size.height=n,b.position.top=f.top-l,b.position.left=f.left-k)}})}(jQuery),function(a){function b(a,b,c){return a>b&&b+c>a}function c(a){return/left|right/.test(a.css("float"))||/inline|table-cell/.test(a.css("display"))}a.widget("ui.sortable",a.ui.mouse,{version:"1.10.3",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_create:function(){var a=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===a.axis||c(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData(this.widgetName+"-item");return this},_setOption:function(b,c){"disabled"===b?(this.options[b]=c,this.widget().toggleClass("ui-sortable-disabled",!!c)):a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(b,c){var d=null,e=!1,f=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(b),a(b.target).parents().each(function(){return a.data(this,f.widgetName+"-item")===f?(d=a(this),!1):void 0}),a.data(b.target,f.widgetName+"-item")===f&&(d=a(b.target)),d?!this.options.handle||c||(a(this.options.handle,d).find("*").addBack().each(function(){this===b.target&&(e=!0)}),e)?(this.currentItem=d,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(b,c,d){var e,f,g=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(b),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,g.cursorAt&&this._adjustOffsetFromHelper(g.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),g.containment&&this._setContainment(),g.cursor&&"auto"!==g.cursor&&(f=this.document.find("body"),this.storedCursor=f.css("cursor"),f.css("cursor",g.cursor),this.storedStylesheet=a("").appendTo(f)),g.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",g.opacity)),g.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",g.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",b,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!d)for(e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("activate",b,this._uiHash(this));return a.ui.ddmanager&&(a.ui.ddmanager.current=this),a.ui.ddmanager&&!g.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(b),!0},_mouseDrag:function(b){var c,d,e,f,g=this.options,h=!1;for(this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-b.pageY=0;c--)if(d=this.items[c],e=d.item[0],f=this._intersectsWithPointer(d),f&&d.instance===this.currentContainer&&e!==this.currentItem[0]&&this.placeholder[1===f?"next":"prev"]()[0]!==e&&!a.contains(this.placeholder[0],e)&&("semi-dynamic"===this.options.type?!a.contains(this.element[0],e):!0)){if(this.direction=1===f?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(d))break;this._rearrange(b,d),this._trigger("change",b,this._uiHash());break}return this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(b,c){if(b){if(a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,b),this.options.revert){var d=this,e=this.placeholder.offset(),f=this.options.axis,g={};f&&"x"!==f||(g.left=e.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),f&&"y"!==f||(g.top=e.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,a(this.helper).animate(g,parseInt(this.options.revert,10)||500,function(){d._clear(b)})}else this._clear(b,c);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--)this.containers[b]._trigger("deactivate",null,this._uiHash(this)),this.containers[b].containerCache.over&&(this.containers[b]._trigger("out",null,this._uiHash(this)),this.containers[b].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),a.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];return b=b||{},a(c).each(function(){var c=(a(b.item||this).attr(b.attribute||"id")||"").match(b.expression||/(.+)[\-=_](.+)/);c&&d.push((b.key||c[1]+"[]")+"="+(b.key&&b.expression?c[1]:c[2]))}),!d.length&&b.key&&d.push(b.key+"="),d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];return b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")}),d},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,d=this.positionAbs.top,e=d+this.helperProportions.height,f=a.left,g=f+a.width,h=a.top,i=h+a.height,j=this.offset.click.top,k=this.offset.click.left,l="x"===this.options.axis||d+j>h&&i>d+j,m="y"===this.options.axis||b+k>f&&g>b+k,n=l&&m;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>a[this.floating?"width":"height"]?n:b+this.helperProportions.width/2>f&&g>c-this.helperProportions.width/2&&d+this.helperProportions.height/2>h&&i>e-this.helperProportions.height/2},_intersectsWithPointer:function(a){var c="x"===this.options.axis||b(this.positionAbs.top+this.offset.click.top,a.top,a.height),d="y"===this.options.axis||b(this.positionAbs.left+this.offset.click.left,a.left,a.width),e=c&&d,f=this._getDragVerticalDirection(),g=this._getDragHorizontalDirection();return e?this.floating?g&&"right"===g||"down"===f?2:1:f&&("down"===f?2:1):!1},_intersectsWithSides:function(a){var c=b(this.positionAbs.top+this.offset.click.top,a.top+a.height/2,a.height),d=b(this.positionAbs.left+this.offset.click.left,a.left+a.width/2,a.width),e=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();return this.floating&&f?"right"===f&&d||"left"===f&&!d:e&&("down"===e&&c||"up"===e&&!c)},_getDragVerticalDirection:function(){var a=this.positionAbs.top-this.lastPositionAbs.top;return 0!==a&&(a>0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return 0!==a&&(a>0?"right":"left")},refresh:function(a){return this._refreshItems(a),this.refreshPositions(),this},_connectWith:function(){var a=this.options;return a.connectWith.constructor===String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(b){var c,d,e,f,g=[],h=[],i=this._connectWith();if(i&&b)for(c=i.length-1;c>=0;c--)for(e=a(i[c]),d=e.length-1;d>=0;d--)f=a.data(e[d],this.widgetFullName),f&&f!==this&&!f.options.disabled&&h.push([a.isFunction(f.options.items)?f.options.items.call(f.element):a(f.options.items,f.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),f]);for(h.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),c=h.length-1;c>=0;c--)h[c][0].each(function(){g.push(this)});return a(g)},_removeCurrentsFromItems:function(){var b=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=a.grep(this.items,function(a){for(var c=0;b.length>c;c++)if(b[c]===a.item[0])return!1;return!0})},_refreshItems:function(b){this.items=[],this.containers=[this];var c,d,e,f,g,h,i,j,k=this.items,l=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]],m=this._connectWith();if(m&&this.ready)for(c=m.length-1;c>=0;c--)for(e=a(m[c]),d=e.length-1;d>=0;d--)f=a.data(e[d],this.widgetFullName),f&&f!==this&&!f.options.disabled&&(l.push([a.isFunction(f.options.items)?f.options.items.call(f.element[0],b,{item:this.currentItem}):a(f.options.items,f.element),f]),this.containers.push(f));for(c=l.length-1;c>=0;c--)for(g=l[c][1],h=l[c][0],d=0,j=h.length;j>d;d++)i=a(h[d]),i.data(this.widgetName+"-item",g),k.push({item:i,instance:g,width:0,height:0,left:0,top:0})},refreshPositions:function(b){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var c,d,e,f;for(c=this.items.length-1;c>=0;c--)d=this.items[c],d.instance!==this.currentContainer&&this.currentContainer&&d.item[0]!==this.currentItem[0]||(e=this.options.toleranceElement?a(this.options.toleranceElement,d.item):d.item,b||(d.width=e.outerWidth(),d.height=e.outerHeight()),f=e.offset(),d.left=f.left,d.top=f.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(c=this.containers.length-1;c>=0;c--)f=this.containers[c].element.offset(),this.containers[c].containerCache.left=f.left,this.containers[c].containerCache.top=f.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),this.containers[c].containerCache.height=this.containers[c].element.outerHeight();return this},_createPlaceholder:function(b){b=b||this;var c,d=b.options;d.placeholder&&d.placeholder.constructor!==String||(c=d.placeholder,d.placeholder={element:function(){var d=b.currentItem[0].nodeName.toLowerCase(),e=a("<"+d+">",b.document[0]).addClass(c||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===d?b.currentItem.children().each(function(){a(" ",b.document[0]).attr("colspan",a(this).attr("colspan")||1).appendTo(e)}):"img"===d&&e.attr("src",b.currentItem.attr("src")),c||e.css("visibility","hidden"),e},update:function(a,e){(!c||d.forcePlaceholderSize)&&(e.height()||e.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10)))}}),b.placeholder=a(d.placeholder.element.call(b.element,b.currentItem)),b.currentItem.after(b.placeholder),d.placeholder.update(b,b.placeholder)},_contactContainers:function(d){var e,f,g,h,i,j,k,l,m,n,o=null,p=null;for(e=this.containers.length-1;e>=0;e--)if(!a.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(o&&a.contains(this.containers[e].element[0],o.element[0]))continue;o=this.containers[e],p=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",d,this._uiHash(this)),this.containers[e].containerCache.over=0);if(o)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",d,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(g=1e4,h=null,n=o.floating||c(this.currentItem),i=n?"left":"top",j=n?"width":"height",k=this.positionAbs[i]+this.offset.click[i],f=this.items.length-1;f>=0;f--)a.contains(this.containers[p].element[0],this.items[f].item[0])&&this.items[f].item[0]!==this.currentItem[0]&&(!n||b(this.positionAbs.top+this.offset.click.top,this.items[f].top,this.items[f].height))&&(l=this.items[f].item.offset()[i],m=!1,Math.abs(l-k)>Math.abs(l+this.items[f][j]-k)&&(m=!0,l+=this.items[f][j]),g>Math.abs(l-k)&&(g=Math.abs(l-k),h=this.items[f],this.direction=m?"up":"down"));if(!h&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return;h?this._rearrange(d,h,null,!0):this._rearrange(d,null,this.containers[p].element,!0),this._trigger("change",d,this._uiHash()),this.containers[p]._trigger("change",d,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",d,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b,this.currentItem])):"clone"===c.helper?this.currentItem.clone():this.currentItem;return d.parents("body").length||a("parent"!==c.appendTo?c.appendTo:this.currentItem[0].parentNode)[0].appendChild(d[0]),d[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!d[0].style.width||c.forceHelperSize)&&d.width(this.currentItem.width()),(!d[0].style.height||c.forceHelperSize)&&d.height(this.currentItem.height()),d},_adjustOffsetFromHelper:function(b){"string"==typeof b&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&a.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&a.ui.ie)&&(b={top:0,left:0}),{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b,c,d,e=this.options;"parent"===e.containment&&(e.containment=this.helper[0].parentNode),("document"===e.containment||"window"===e.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a("document"===e.containment?document:window).width()-this.helperProportions.width-this.margins.left,(a("document"===e.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(e.containment)||(b=a(e.containment)[0],c=a(e.containment).offset(),d="hidden"!==a(b).css("overflow"),this.containment=[c.left+(parseInt(a(b).css("borderLeftWidth"),10)||0)+(parseInt(a(b).css("paddingLeft"),10)||0)-this.margins.left,c.top+(parseInt(a(b).css("borderTopWidth"),10)||0)+(parseInt(a(b).css("paddingTop"),10)||0)-this.margins.top,c.left+(d?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(a(b).css("borderLeftWidth"),10)||0)-(parseInt(a(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,c.top+(d?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(a(b).css("borderTopWidth"),10)||0)-(parseInt(a(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(b,c){c||(c=this.position);var d="absolute"===b?1:-1,e="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&a.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,f=/(html|body)/i.test(e[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():f?0:e.scrollTop())*d,left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():f?0:e.scrollLeft())*d}},_generatePosition:function(b){var c,d,e=this.options,f=b.pageX,g=b.pageY,h="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&a.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,i=/(html|body)/i.test(h[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(b.pageX-this.offset.click.leftthis.containment[2]&&(f=this.containment[2]+this.offset.click.left),b.pageY-this.offset.click.top>this.containment[3]&&(g=this.containment[3]+this.offset.click.top)),e.grid&&(c=this.originalPageY+Math.round((g-this.originalPageY)/e.grid[1])*e.grid[1],g=this.containment?c-this.offset.click.top>=this.containment[1]&&c-this.offset.click.top<=this.containment[3]?c:c-this.offset.click.top>=this.containment[1]?c-e.grid[1]:c+e.grid[1]:c,d=this.originalPageX+Math.round((f-this.originalPageX)/e.grid[0])*e.grid[0],f=this.containment?d-this.offset.click.left>=this.containment[0]&&d-this.offset.click.left<=this.containment[2]?d:d-this.offset.click.left>=this.containment[0]?d-e.grid[0]:d+e.grid[0]:d)),{top:g-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():i?0:h.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():i?0:h.scrollLeft())}},_rearrange:function(a,b,c,d){c?c[0].appendChild(this.placeholder[0]):b.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?b.item[0]:b.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var e=this.counter;this._delay(function(){e===this.counter&&this.refreshPositions(!d)})},_clear:function(a,b){this.reverting=!1;var c,d=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(c in this._storedCSS)("auto"===this._storedCSS[c]||"static"===this._storedCSS[c])&&(this._storedCSS[c]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!b&&d.push(function(a){this._trigger("receive",a,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||b||d.push(function(a){this._trigger("update",a,this._uiHash())}),this!==this.currentContainer&&(b||(d.push(function(a){this._trigger("remove",a,this._uiHash())}),d.push(function(a){return function(b){a._trigger("receive",b,this._uiHash(this))}}.call(this,this.currentContainer)),d.push(function(a){return function(b){a._trigger("update",b,this._uiHash(this))}}.call(this,this.currentContainer)))),c=this.containers.length-1;c>=0;c--)b||d.push(function(a){return function(b){a._trigger("deactivate",b,this._uiHash(this))}}.call(this,this.containers[c])),this.containers[c].containerCache.over&&(d.push(function(a){return function(b){a._trigger("out",b,this._uiHash(this))}}.call(this,this.containers[c])),this.containers[c].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,this.cancelHelperRemoval){if(!b){for(this._trigger("beforeStop",a,this._uiHash()),c=0;d.length>c;c++)d[c].call(this,a);this._trigger("stop",a,this._uiHash())}return this.fromOutside=!1,!1}if(b||this._trigger("beforeStop",a,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null,!b){for(c=0;d.length>c;c++)d[c].call(this,a);this._trigger("stop",a,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){a.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(b){var c=b||this;return{helper:c.helper,placeholder:c.placeholder||a([]),position:c.position,originalPosition:c.originalPosition,offset:c.positionAbs,item:c.currentItem,sender:b?b.element:null}}})}(jQuery),function(a,b){var c=/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent);a.requestAnimationFrame=function(){return a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame||a.msRequestAnimationFrame||function(b){a.setTimeout(b,1e3/60) }}();var d=function(b){if(0===arguments.length){var c=d.createCanvas(a.innerWidth,a.innerHeight);a.addEventListener("resize",function(){})}else if("string"==typeof b)var c=document.querySelector(b);else if("number"==typeof b)var c=d.createCanvas(arguments[0],arguments[1]);else if(b instanceof Image||b instanceof HTMLImageElement)var c=d.createCanvas(b);else{if(b instanceof d.Wrapper)return b;var c=b}return new d.Wrapper(c)};d.extend=function(){for(var a=1;a2){var e=a-c,f=b-d;return Math.sqrt(e*e+f*f)}return Math.abs(a-b)},d.extend(d,{keycodes:{37:"left",38:"up",39:"right",40:"down",45:"insert",46:"delete",8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"escape",32:"space",33:"pageup",34:"pagedown",35:"end",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scrolllock",186:"semicolon",187:"equal",188:"comma",189:"dash",190:"period",191:"slash",192:"graveaccent",219:"openbracket",220:"backslash",221:"closebraket",222:"singlequote"},cleanArray:function(a,b){for(var c=arguments[arguments.length-1],d="function"==typeof c,e=0,f=a.length;f>e;e++)(null===a[e]||b&&a[e][b])&&(d&&c(a[e]),a.splice(e--,1),f--)},specialBlendFunctions:["color","value","hue","saturation"],blendFunctions:{normal:function(a,b){return b},overlay:function(a,b){a/=255,b/=255;var c=0;return c=.5>a?2*a*b:1-2*(1-a)*(1-b),Math.min(255,Math.max(0,255*c|0))},hardLight:function(a,b){return d.blendFunctions.overlay(b,a)},softLight:function(a,b){a/=255,b/=255;var c=(1-2*b)*a*a+2*b*a;return d.limitValue(255*c,0,255)},dodge:function(a,b){return Math.min(256*a/(255-b+1),255)},burn:function(a,b){return 255-Math.min(256*(255-a)/(b+1),255)},multiply:function(a,b){return b*a/255},divide:function(a,b){return Math.min(256*a/(b+1),255)},screen:function(a,b){return 255-(255-b)*(255-a)/255},grainExtract:function(a,b){return d.limitValue(a-b+128,0,255)},grainMerge:function(a,b){return d.limitValue(a+b-128,0,255)},difference:function(a,b){return Math.abs(a-b)},addition:function(a,b){return Math.min(a+b,255)},substract:function(a,b){return Math.max(a-b,0)},darkenOnly:function(a,b){return Math.min(a,b)},lightenOnly:function(a,b){return Math.max(a,b)},color:function(a,b){var c=d.rgbToHsl(a),e=d.rgbToHsl(b);return d.hslToRgb(e[0],e[1],c[2])},hue:function(a,b){var c=d.rgbToHsv(a),e=d.rgbToHsv(b);return e[1]?d.hsvToRgb(e[0],c[1],c[2]):d.hsvToRgb(c[0],c[1],c[2])},value:function(a,b){var c=d.rgbToHsv(a),e=d.rgbToHsv(b);return d.hsvToRgb(c[0],c[1],e[2])},saturation:function(a,b){var c=d.rgbToHsv(a),e=d.rgbToHsv(b);return d.hsvToRgb(c[0],e[1],c[2])}},blend:function(a,b,c,e){"undefined"==typeof e&&(e=1);var a=d(a),b=d(b),f=a.context,g=b.context,h=f.getImageData(0,0,a.canvas.width,a.canvas.height),i=g.getImageData(0,0,b.canvas.width,b.canvas.height),j=h.data,k=i.data,l=this.createImageData(a.canvas.width,a.canvas.height),m=l.data,n=d.blendFunctions[c];if(-1!==d.specialBlendFunctions.indexOf(c))for(var o=0,p=j.length;p>o;o+=4){var q=n([j[o+0],j[o+1],j[o+2]],[k[o+0],k[o+1],k[o+2]]);m[o+0]=j[o+0]+(q[0]-j[o+0])*e,m[o+1]=j[o+1]+(q[1]-j[o+1])*e,m[o+2]=j[o+2]+(q[2]-j[o+2])*e,m[o+3]=j[o+3]}else for(var o=0,p=j.length;p>o;o+=4){var r=n(j[o+0],k[o+0]),s=n(j[o+1],k[o+1]),t=n(j[o+2],k[o+2]);m[o+0]=j[o+0]+(r-j[o+0])*e,m[o+1]=j[o+1]+(s-j[o+1])*e,m[o+2]=j[o+2]+(t-j[o+2])*e,m[o+3]=j[o+3]}return a.context.putImageData(l,0,0),a},wrapValue:function(a,b,c){var d=Math.abs(c-b);return b+(a-b)%d},limitValue:function(a,b,c){return b>a?b:a>c?c:a},mix:function(a,b,c){return a+(b-a)*c},hexToRgb:function(a){return 7===a.length?["0x"+a[1]+a[2]|0,"0x"+a[3]+a[4]|0,"0x"+a[5]+a[6]|0]:["0x"+a[1]|0,"0x"+a[2],"0x"+a[3]|0]},rgbToHex:function(a,b,c){return"#"+((1<<24)+(a<<16)+(b<<8)+c).toString(16).slice(1,7)},rgbToHsl:function(a,b,c){a instanceof Array&&(c=a[2],b=a[1],a=a[0]),a/=255,b/=255,c/=255;var d,e,f=Math.max(a,b,c),g=Math.min(a,b,c),h=(f+g)/2;if(f==g)d=e=0;else{var i=f-g;switch(e=h>.5?i/(2-f-g):i/(f+g),f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return[d,e,h]},hslToRgb:function(a,b,c){function d(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a}var e,f,g;if(0==b)e=f=g=c;else{var h=.5>c?c*(1+b):c+b-c*b,i=2*c-h;e=d(i,h,a+1/3),f=d(i,h,a),g=d(i,h,a-1/3)}return[255*e|0,255*f|0,255*g|0]},rgbToHsv:function(a,b,c){a instanceof Array&&(c=a[2],b=a[1],a=a[0]),a/=255,b/=255,c/=255;var d,e,f=Math.max(a,b,c),g=Math.min(a,b,c),h=f,i=f-g;if(e=0==f?0:i/f,f==g)d=0;else{switch(f){case a:d=(b-c)/i+(c>b?6:0);break;case b:d=(c-a)/i+2;break;case c:d=(a-b)/i+4}d/=6}return[d,e,h]},hsvToRgb:function(a,b,c){var d,e,f,g=Math.floor(6*a),h=6*a-g,i=c*(1-b),j=c*(1-h*b),k=c*(1-(1-h)*b);switch(g%6){case 0:d=c,e=k,f=i;break;case 1:d=j,e=c,f=i;break;case 2:d=i,e=c,f=k;break;case 3:d=i,e=j,f=c;break;case 4:d=k,e=i,f=c;break;case 5:d=c,e=i,f=j}return[255*d|0,255*e|0,255*f|0]},color:function(){var a=new d.Color;return a.parse(arguments[0],arguments[1]),a},createCanvas:function(a,b){var c=document.createElement("canvas");if(arguments[0]instanceof Image||arguments[0]instanceof HTMLImageElement){var d=arguments[0];c.width=d.width,c.height=d.height,c.getContext("2d").drawImage(d,0,0)}else c.width=a,c.height=b;return c},createImageData:function(a,b){return document.createElement("Canvas").getContext("2d").createImageData(a,b)},mousePosition:function(a){var c=0,d=0,e=0,f=0,g=a.target||a.srcElement,h=0,i=0;do c+=g.offsetLeft,d+=g.offsetTop;while(g=g.offsetParent);return a.changedTouches&&a.changedTouches[0]!==b&&(a=a.changedTouches[0]),a.pageX||a.pageY?(h=a.pageX,i=a.pageY):(a.clientX||a.clientY)&&(h=a.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,i=a.clientY+document.body.scrollTop+document.documentElement.scrollTop),e=h-c,f=i-d,{x:e,y:f}}}),d.Wrapper=function(a){this.context=a.getContext("2d"),this.canvas=a},d.Wrapper.prototype={appendTo:function(a){if("object"==typeof a)var b=a;else var b=document.querySelector(a);return b.appendChild(this.canvas),this},blendOn:function(a,b,c){return d.blend(a,this,b,c),this},blend:function(a,b,c){if("string"==typeof a){var e=a;a=d(d.createCanvas(this.canvas.width,this.canvas.height)),a.fillStyle(e).fillRect(0,0,this.canvas.width,this.canvas.height)}return d.blend(this,a,b,c),this},circle:function(a,b,c){return this.context.arc(a,b,c,0,2*Math.PI),this},crop:function(a,b,c,e){var f=d.createCanvas(c,e),g=f.getContext("2d");return g.drawImage(this.canvas,a,b,c,e,0,0,c,e),this.canvas.width=c,this.canvas.height=e,this.clear(),this.context.drawImage(f,0,0),this},set:function(a){d.extend(this.context,a)},resize:function(a,b){var c=a,e=b;1===arguments.length?(c=arguments[0]*this.canvas.width|0,e=arguments[0]*this.canvas.height|0):null===b?this.canvas.width>a?(e=this.canvas.height*(a/this.canvas.width)|0,c=a):(c=this.canvas.width,e=this.canvas.height):null===a&&(this.canvas.width>a?(c=this.canvas.width*(b/this.canvas.height)|0,e=b):(c=this.canvas.width,e=this.canvas.height));var f=d(c,e).drawImage(this.canvas,0,0,this.canvas.width,this.canvas.height,0,0,c,e);return this.canvas=f.canvas,this.context=f.context,this},trim:function(a,b){var c;a?(a=d.color(a).toArray(),c=!a[3]):c=!0;for(var e=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),f=e.data,g=[this.canvas.width,this.canvas.height,0,0],h=0,i=f.length;i>h;h+=4){if(c){if(!f[h+3])continue}else if(f[h+0]===a[0]&&f[h+1]===a[1]&&f[h+2]===a[2])continue;var j=(h/4|0)%this.canvas.width|0,k=(h/4|0)/this.canvas.width|0;jg[2]&&(g[2]=j),kg[3]&&(g[3]=k)}return 0===g[2]||0===g[3]||(b&&(b.left=g[0],b.top=g[1],b.width=g[2]-g[0],b.height=g[3]-g[1]),this.crop(g[0],g[1],g[2]-g[0]+1,g[3]-g[1]+1)),this},resizePixel:function(a){var b=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),c=b.data,e=document.createElement("canvas"),f=e.context=e.getContext("2d");e.width=this.canvas.width*a|0,e.height=this.canvas.height*a|0;for(var g=0,h=c.length;h>g;g+=4)if(c[g+3]){f.fillStyle=d.rgbToHex(c[g+0],c[g+1],c[g+2]);var i=g/4%this.canvas.width,j=g/4/this.canvas.width|0;f.fillRect(i*a,j*a,a,a)}return this.canvas.width=e.width,this.canvas.height=e.height,this.clear().drawImage(e,0,0),this;var i,j,e,f},matchPalette:function(a){for(var b=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),c=[],e=0;ee;e+=4)if(c[e+3]){var g=d.rgbToHex(c[e+0],c[e+1],c[e+2]);-1===a.indexOf(g)&&a.push(g)}return a},pixelize:function(a){if(!a)return this;a=a||4;var b=this.context.mozImageSmoothingEnabled,c=this.context.webkitImageSmoothingEnabled;this.context.mozImageSmoothingEnabled=!1,this.context.webkitImageSmoothingEnabled=!1;var d=this.canvas.width/a/this.canvas.width,e=cq(this.canvas.width,this.canvas.height);return e.drawImage(this.canvas,0,0,this.canvas.width,this.canvas.height,0,0,this.canvas.width*d|0,this.canvas.height*d|0),this.clear().drawImage(e.canvas,0,0,this.canvas.width*d|0,this.canvas.height*d|0,0,0,this.canvas.width,this.canvas.height),this.context.mozImageSmoothingEnabled=b,this.context.webkitImageSmoothingEnabled=c,this},colorToMask:function(a,b){a=d.color(a).toArray();for(var c=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),e=c.data,f=[],g=0,h=e.length;h>g;g+=4)f.push(e[g+0]==a[0]&&e[g+1]==a[1]&&e[g+2]==a[2]?b||!1:!b);return f},grayscaleToMask:function(){for(var a=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),b=a.data,c=[],d=0,e=b.length;e>d;d+=4)c.push((b[d+0]+b[d+1]+b[d+2])/3|0);return c},grayscaleToAlpha:function(){for(var a=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),b=a.data,c=0,d=b.length;d>c;c+=4)b[c+3]=(b[c+0]+b[c+1]+b[c+2])/3|0,b[c+0]=b[c+1]=b[c+2]=255;return this.context.putImageData(a,0,0),this},applyMask:function(a){for(var b=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),c=b.data,d="boolean"==typeof a[0]?"bool":"byte",e=0,f=c.length;f>e;e+=4){var g=a[e/4];c[e+3]="bool"===d?255*g|0:0|g}return this.context.putImageData(b,0,0),this},fillMask:function(a){var b=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),c=b.data,e="boolean"==typeof a[0]?"bool":"byte",f=2===arguments.length?"normal":"gradient",g=d.color(arguments[1]);"gradient"===f&&(colorB=d.color(arguments[2]));for(var h=0,i=c.length;i>h;h+=4){var j=a[h/4];"byte"===e&&(j/=255),"normal"===f?j&&(c[h+0]=0|g[0],c[h+1]=0|g[1],c[h+2]=0|g[2],c[h+3]=255*j|0):(c[h+0]=g[0]+(colorB[0]-g[0])*j|0,c[h+1]=g[1]+(colorB[1]-g[1])*j|0,c[h+2]=g[2]+(colorB[2]-g[2])*j|0,c[h+3]=255)}return this.context.putImageData(b,0,0),this},clear:function(a){return a?(this.context.fillStyle=a,this.context.fillRect(0,0,this.canvas.width,this.canvas.height)):this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this},clone:function(){var a=d.createCanvas(this.canvas.width,this.canvas.height);return a.getContext("2d").drawImage(this.canvas,0,0),d(a)},fillStyle:function(a){return this.context.fillStyle=a,this},strokeStyle:function(a){return this.context.strokeStyle=a,this},gradientText:function(a,b,c,d,e){var f=a.split(" "),g=2*this.font().match(/\d+/g)[0],h=0,i=0;if(d)for(var j=0,k=[""],l=0;ld&&(k[++j]="",h=0),k[j]+=m,h+=n}else var k=[a];for(var l=0;lj;j+=4)h=d.rgbToHsl(g[j+0],g[j+1],g[j+2]),b=null===a[0]?h[0]:d.limitValue(a[0],0,1),c=null===a[1]?h[1]:d.limitValue(a[1],0,1),e=null===a[2]?h[2]:d.limitValue(a[2],0,1),i=d.hslToRgb(b,c,e),g[j+0]=i[0],g[j+1]=i[1],g[j+2]=i[2];return this.context.putImageData(f,0,0),this},shiftHsl:function(){if(1===arguments.length)var a=arguments[0];else var a=arguments;for(var b,c,e,f=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),g=f.data,h=[],i=[],j=0,k=g.length;k>j;j+=4)h=d.rgbToHsl(g[j+0],g[j+1],g[j+2]),b=null===a[0]?h[0]:d.wrapValue(h[0]+a[0],0,1),c=null===a[1]?h[1]:d.limitValue(h[1]+a[1],0,1),e=null===a[2]?h[2]:d.limitValue(h[2]+a[2],0,1),i=d.hslToRgb(b,c,e),g[j+0]=i[0],g[j+1]=i[1],g[j+2]=i[2];return this.context.putImageData(f,0,0),this},replaceHue:function(a,b){for(var c,e=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),f=e.data,g=[],h=[],i=0,j=f.length;j>i;i+=4)g=d.rgbToHsl(f[i+0],f[i+1],f[i+2]),c=Math.abs(g[0]-a)<.05?d.wrapValue(b,0,1):g[0],h=d.hslToRgb(c,g[1],g[2]),f[i+0]=h[0],f[i+1]=h[1],f[i+2]=h[2];return this.context.putImageData(e,0,0),this},invert:function(){for(var a=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),b=a.data,c=0,d=b.length;d>c;c+=4)b[c+0]=255-b[c+0],b[c+1]=255-b[c+1],b[c+2]=255-b[c+2];return this.context.putImageData(a,0,0),this},roundRect:function(a,b,c,d,e){return this.beginPath(),this.moveTo(a+e,b),this.lineTo(a+c-e,b),this.quadraticCurveTo(a+c,b,a+c,b+e),this.lineTo(a+c,b+d-e),this.quadraticCurveTo(a+c,b+d,a+c-e,b+d),this.lineTo(a+e,b+d),this.quadraticCurveTo(a,b+d,a,b+d-e),this.lineTo(a,b+e),this.quadraticCurveTo(a,b,a+e,b),this.closePath(),this},wrappedText:function(a,b,c,d,e){var f=a instanceof Array?a:this.flowText(a,d),g=2*this.font().match(/\d+/g)[0],h=0,i=0;if(d)for(var j=0,f=[""],k=0;kd&&(f[++j]="",h=0),f[j]+=l,h+=m}else var f=[a];for(var k=0;kb?(f[e]=f[e].replace(/\s+$/,""),f[++e]="",d=0):f[e]+=" ";else{var j=this.context.measureText(i).width;d+=j,d>b&&f[e].length&&(f[e]=f[e].replace(/\s+$/,""),f[++e]="",d=j),f[e]+=i}else f[e]=f[e].replace(/\s+$/,""),f[++e]="",d=0}else var f=[a];return f},textBoundaries:function(a,b){for(var c=this.flowText(a,b||1/0),d=2*this.font().match(/\d+/g)[0],e=0,f=0;fo;o++)for(var p=1;k-1>p;p++){for(var q=4*(o*k+p),r=0,s=0,t=0,u=0,v=0;f>v;v++)for(var w=0;f>w;w++){var x=o+v-g,y=p+w-g;if(x>=0&&j>x&&y>=0&&i>y){var z=4*(x*i+y),A=a[v*f+w]/c;r+=h[z+0]*A,s+=h[z+1]*A,t+=h[z+2]*A,u+=h[z+3]*A}}n[q+0]=d.mix(h[q+0],r,b),n[q+1]=d.mix(h[q+1],s,b),n[q+2]=d.mix(h[q+2],t,b),n[q+3]=u}},blur:function(a){return this.convolve([1,1,1,1,1,1,1,1,1],a,9)},gaussianBlur:function(a){return this.convolve([6.7e-7,2292e-8,19117e-8,38771e-8,19117e-8,2292e-8,6.7e-7,2292e-8,78633e-8,.00655965,.01330373,.00655965,78633e-8,2292e-8,19117e-8,.00655965,.05472157,.11098164,.05472157,.00655965,19117e-8,38771e-8,.01330373,.11098164,.22508352,.11098164,.01330373,38771e-8,19117e-8,.00655965,.05472157,.11098164,.05472157,.00655965,19117e-8,2292e-8,78633e-8,.00655965,.01330373,.00655965,78633e-8,2292e-8,6.7e-7,2292e-8,19117e-8,38771e-8,19117e-8,2292e-8,6.7e-7],a,1)},sharpen:function(a){return this.convolve([0,-1,0,-1,5,-1,0,-1,0],a)},threshold:function(a){for(var b,c,d,e=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),f=e.data,g=0;g=a?255:0;f[g]=f[g+1]=f[g+2]=h}return this.context.putImageData(e,0,0),this},sepia:function(){for(var a=this.context.getImageData(0,0,this.canvas.width,this.canvas.height),b=a.data,c=0;cj&&k>p&&(q=Math.abs(d)>Math.abs(e)?d>0?"left":"right":e>0?"up":"down",a.call(i,q))}var i=this.tempContext||this,j=c||35,k=e||350,l=0,m=0,n=0,o=0;return this.canvas.addEventListener("touchstart",function(a){f(a)}),this.canvas.addEventListener("touchmove",function(a){g(a)}),this.canvas.addEventListener("touchend",function(a){h(a)}),this.canvas.addEventListener("mousedown",function(a){f(a)}),this.canvas.addEventListener("mousemove",function(a){g(a)}),this.canvas.addEventListener("mouseup",function(a){h(a)}),this},onKeyDown:function(a){var b=this.tempContext||this;return document.addEventListener("keydown",function(c){if(c.which>=48&&c.which<=90)var e=String.fromCharCode(c.which).toLowerCase();else var e=d.keycodes[c.which];a.call(b,e)}),this},onKeyUp:function(a){var b=this.tempContext||this;return document.addEventListener("keyup",function(c){if(c.which>=48&&c.which<=90)var e=String.fromCharCode(c.which).toLowerCase();else var e=d.keycodes[c.which];a.call(b,e)}),this},onResize:function(b){var c=this.tempContext||this;return a.addEventListener("resize",function(){b.call(c,a.innerWidth,a.innerHeight)}),b.call(c,a.innerWidth,a.innerHeight),this},onDropImage:function(a){var b=this.tempContext||this;return document.addEventListener("drop",function(c){c.stopPropagation(),c.preventDefault();var d=c.dataTransfer.files[0];if(!/image/i.test(d.type))return!1;var e=new FileReader;e.onload=function(c){var d=new Image;d.onload=function(){a.call(b,this)},d.src=c.target.result},e.readAsDataURL(d)}),document.addEventListener("dragover",function(a){a.preventDefault()}),this}};for(var e=["arc","arcTo","beginPath","bezierCurveTo","clearRect","clip","closePath","createImageData","createLinearGradient","createRadialGradient","createPattern","drawFocusRing","drawImage","fill","fillRect","fillText","getImageData","isPointInPath","lineTo","measureText","moveTo","putImageData","quadraticCurveTo","rect","restore","rotate","save","scale","setTransform","stroke","strokeRect","strokeText","transform","translate"],f=0;f2&&d.push(a)}),0==d.length||"undefined"==d[0]?status("search query too small"):(status("searching for '"+d.join(" and ")+"'"),dumpfm.fetch({query:d.join("+"),success:gallery.load}))},dumpfm.fetch=function(a){if(!dumpfm.fetching){dumpfm.fetching=!0;var b={};$.ajax({url:"http://dump.fm/cmd/search/"+a.query,data:b,dataType:"jsonp",success:function(b){dumpfm.fetching=!1;for(var c=0,d=b.length;d>c;c++){var e=b[c].url;e=e.match(/^\/\d+\//)?"http://dump.fm/images/"+e:"http://"+e,b[c].url=e}a.success&&a.success(b)},error:a.error||function(a){console.log(a)}})}};var gif,img,imageURL=null,user=new function(){};user.init=function(){user.load(),user.bind()},user.bind=function(){$("#username").on("input",user.save)},user.load=function(){user.username=user.getCookie(),$("#username").val(user.username)},user.sanitize=function(){return $("#username").val().replace(/[^-_ a-zA-Z0-9]/g,"")},user.getCookie=function(){var a=localStorage.getItem("im.name")||"";if(document.cookie&&!a.length){var b=document.cookie.split(";");for(i in b){var c=b[i].split("=");if(-1!==c[0].indexOf("imname")&&"false"!==c[1]&&"undefined"!==c[1]&&c[1].length)return c[1]}}return a},user.save=function(){var a=user.sanitize();a!=user.username&&user.setCookie(a)},user.setCookie=function(a){console.log("setting to "+a),document.cookie="imname="+a+";path=/;domain=.asdf.us;max-age=1086400",localStorage.setItem("im.name",a)};var gallery={};gallery.init=function(a){a&&(gallery.choose=a),gallery.bind()},gallery.bind=function(){$("#gallery-random").click(asdf.random),$("#gallery-search").submit(dumpfm.search),$(document).on("click","#gallery-images canvas",gallery.click)},gallery.load=function(a){status("loading "+a.length+" images"),$("#gallery-images").empty();for(var b=0;ba||isNaN(a))&&$(this).val(a=1),$("#add-frame").html(1==a?"+add frame":"+add frames")}),$("#frames").disableSelection(),$("#remove-all-frames").click(remove_all_frames),$("#weave-frames").click(weave_frames),$("#shuffle-frames").click(shuffle_frames),$("#reverse-frames").click(reverse_frames),$("#sort-frames").click(sort_frames),$("#render").click(render),$("#save").click(save),$("#upload").click(upload),$("#background").change(function(){document.body.style.backgroundColor=$("#background").string()})};var encoder=new GifEncoder;encoder.on("quantized",function(){status("encoding"),encoder.encode()}),encoder.on("encoded-frame",function(a,b){status("encoded "+a+" / "+b) -}),encoder.on("rendered",function(a){status(filesize(a.length))}),encoder.on("rendered-url",function(a){var b=new Image;lastGif=b.src=a,$("#workspace canvas").hide(),$("#workspace").append(b),$("#uploaded-url").hide().val(""),$("#uploaded-url + br").hide(),$("#save,#upload,#rendered").show(),$("#pause,#render,#add-frame,#save,#upload").enable(),$("#render").html("render gif"),rendering=!1,pause(!0)});var frame,img_frame,timeout,raf_id,start_t=0,old_t=0,pause_t=0,paused=!1,dragging=!1,rendering=!1,scrolling=!1,deferring=!1,scrollTimeout=null,fps=30,shader_build=function(){var a=document.getElementById("shader").value;a.length||(a="");try{var b=new Function("x","y","t","d",a);shader=b,shade=shade_error_handling}catch(c){try{acorn.parse(a)}catch(c){error_highlight.on(c.loc.line-1)}throw Error("Shader compilation error")}},r,g,b,a,w,h,actual_w,actual_h,chrome_stack_regexp=/:([0-9]+)/,firefox_stack_regexp=/:([0-9]+)$/;shade=shade_error_handling(function(){var a={},b={},c={},d="",e=0,f=0,g=0,h=function(){a.highlight.style.display="none"},i=function(b){c=a.textarea.getBoundingClientRect();var g=a.textarea.value,h=g.split("\n"),i=h.slice(0,b),k=h[b];a.textmeasure.innerHTML=1===i.length?i+d:i.join("
"+d),e=a.textmeasure.offsetHeight,a.textmeasure.innerHTML=k+d,f=a.textmeasure.offsetHeight,j()},j=function(){var b=c.top+c.height;a.highlight.style.width=a.textarea.scrollHeight>a.textarea.clientHeight?c.width-g+"px":c.width+"px",a.highlight.style.left=c.left+"px";var d=c.top+e-a.textarea.scrollTop;a.highlight.style.top=d+a.html.scrollTop+a.body.scrollTop+"px";var h=f;d+h>b&&(h=Math.max(0,b-d)),d"),f=b[d].username;e.val(f).html(f),c.append(e)}}),$(document).on("change","#pick-user",function(){var a=$(this).val();ShaderAPI.username(a,load_shaders)}),$(document).on("click",".shader",function(){run_shader($(this).data("shader"))})};var ShaderAPI={};ShaderAPI.limit=24,ShaderAPI.info=function(a,b){ShaderAPI.fetch({f:"info",id:a},b)},ShaderAPI.all=function(a){ShaderAPI.fetch({f:"all"},a)},ShaderAPI.range=function(a,b,c){ShaderAPI.fetch({f:"range",limit:a||ShaderAPI.limit,last:b},c)},ShaderAPI.latest=function(a,b){b||(b=a,a=ShaderAPI.limit),ShaderAPI.fetch({f:"range",limit:a||ShaderAPI.limit},b)},ShaderAPI.page=function(a,b,c){ShaderAPI.fetch({f:"range",last:(a-1)*b,limit:b||ShaderAPI.limit},c)},ShaderAPI.history=function(a,b){ShaderAPI.fetch({f:"history",id:a},b)},ShaderAPI.username=function(a,b){ShaderAPI.fetch({f:"username",username:a},b)},ShaderAPI.list_users=function(a){ShaderAPI.fetch({f:"list_users"},a)},ShaderAPI.originals=function(a){ShaderAPI.fetch({f:"originals"},a)},ShaderAPI.fetch=function(a,b){$.ajax({url:"http://asdf.us/cgi-bin/im/shader/view",data:a,dataType:"jsonp",success:function(a){a.SUCCESS?b(null,a.data):a.ERROR&&b(a.ERROR,a.data)}})};var shader_id_root=null,cc=cq(0,0).appendTo("#workspace"),w=400,h=400,lastGif,mousex,mousey,firsttime=!0,shader_gallery_template=$("#shader-gallery-template").html();$(init); \ No newline at end of file +}),encoder.on("rendered",function(a){status(filesize(a.length))}),encoder.on("rendered-url",function(a){var b=new Image;lastGif=b.src=a,$("#workspace canvas").hide(),$("#workspace").append(b),$("#uploaded-url").hide().val(""),$("#uploaded-url + br").hide(),$("#save,#upload,#rendered").show(),$("#pause,#render,#add-frame,#save,#upload").enable(),$("#render").html("render gif"),rendering=!1,pause(!0)});var frame,img_frame,timeout,raf_id,start_t=0,old_t=0,pause_t=0,paused=!1,dragging=!1,rendering=!1,scrolling=!1,deferring=!1,scrollTimeout=null,fps=30,shader_build=function(){var a=document.getElementById("shader").value;a.length||(a="");try{var b=new Function("x","y","t","d",a);shader=b,shade=shade_error_handling}catch(c){try{acorn.parse(a)}catch(c){error_highlight.on(c.loc.line-1)}throw Error("Shader compilation error")}},r,g,b,a,w,h,actual_w,actual_h,chrome_stack_regexp=/:([0-9]+)/,firefox_stack_regexp=/:([0-9]+)$/;shade=shade_error_handling,function(){var a={},b={},c={},d="",e=0,f=0,g=0,h=function(){a.highlight.style.display="none"},i=function(b){c=a.textarea.getBoundingClientRect();var g=a.textarea.value,h=g.split("\n"),i=h.slice(0,b),k=h[b];a.textmeasure.innerHTML=1===i.length?i+d:i.join("
"+d),e=a.textmeasure.offsetHeight,a.textmeasure.innerHTML=k+d,f=a.textmeasure.offsetHeight,j()},j=function(){var b=c.top+c.height;a.highlight.style.width=a.textarea.scrollHeight>a.textarea.clientHeight?c.width-g+"px":c.width+"px",a.highlight.style.left=c.left+"px";var d=c.top+e-a.textarea.scrollTop;a.highlight.style.top=d+a.html.scrollTop+a.body.scrollTop+"px";var h=f;d+h>b&&(h=Math.max(0,b-d)),d"),f=b[d].username;e.val(f).html(f),c.append(e)}}),$(document).on("change","#pick-user",function(){var a=$(this).val();ShaderAPI.username(a,load_shaders)}),$(document).on("click",".shader",function(){run_shader($(this).data("shader"))})};var ShaderAPI={};ShaderAPI.limit=24,ShaderAPI.info=function(a,b){ShaderAPI.fetch({f:"info",id:a},b)},ShaderAPI.all=function(a){ShaderAPI.fetch({f:"all"},a)},ShaderAPI.range=function(a,b,c){ShaderAPI.fetch({f:"range",limit:a||ShaderAPI.limit,last:b},c)},ShaderAPI.latest=function(a,b){b||(b=a,a=ShaderAPI.limit),ShaderAPI.fetch({f:"range",limit:a||ShaderAPI.limit},b)},ShaderAPI.page=function(a,b,c){ShaderAPI.fetch({f:"range",last:(a-1)*b,limit:b||ShaderAPI.limit},c)},ShaderAPI.history=function(a,b){ShaderAPI.fetch({f:"history",id:a},b)},ShaderAPI.username=function(a,b){ShaderAPI.fetch({f:"username",username:a},b)},ShaderAPI.list_users=function(a){ShaderAPI.fetch({f:"list_users"},a)},ShaderAPI.originals=function(a){ShaderAPI.fetch({f:"originals"},a)},ShaderAPI.fetch=function(a,b){$.ajax({url:"http://asdf.us/cgi-bin/im/shader/view",data:a,dataType:"jsonp",success:function(a){a.SUCCESS?b(null,a.data):a.ERROR&&b(a.ERROR,a.data)}})};var shader_id_root=null,cc=cq(0,0).appendTo("#workspace"),w=400,h=400,lastGif,mousex,mousey,firsttime=!0,shader_gallery_template=$("#shader-gallery-template").html();$(init); \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index 0d3e16f..22e87bb 100644 --- a/dist/index.html +++ b/dist/index.html @@ -136,5 +136,5 @@ a { color: #00f; } - + -- cgit v1.2.3-70-g09d2 From b9eff4060a6f43948ecc4247bc60bfb13ac889fc Mon Sep 17 00:00:00 2001 From: jules Date: Wed, 29 Jan 2014 12:42:14 -0500 Subject: border-bottom --- Gruntfile.js | 1 - dist/index.html | 2 +- shader-combo.html | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) (limited to 'Gruntfile.js') diff --git a/Gruntfile.js b/Gruntfile.js index 9ee254a..04c7809 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -95,7 +95,6 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-dentist'); - // Default task(s). grunt.registerTask('default', ['dentist:build', 'concat:build', 'uglify:build', 'copy:build']); grunt.registerTask('install', ['default', 'clean', 'copy:release']); diff --git a/dist/index.html b/dist/index.html index 22e87bb..c0126fa 100644 --- a/dist/index.html +++ b/dist/index.html @@ -16,7 +16,7 @@ a { color: #00f; } #uploaded-url { display: none; width: 400px; } #uploaded-url + br { display: none; } #header { clear: right; width:100%; padding: 0; font-size: 12px; } -#shader-gallery,#gallery-images { display: block; height: 152px; overflow-y: auto; width: 100%; padding: 0; } +#shader-gallery,#gallery-images { display: block; height: 152px; overflow-y: auto; width: 100%; padding: 0; border-bottom: 1px solid #ccc; } #shader-gallery img,#shader-gallery canvas,#gallery-images img, #gallery-images canvas { max-width: 200px; height: 100px; margin: 5px; cursor: pointer; clear: right; } .shader { width: 100px; } .shader span { display: block } diff --git a/shader-combo.html b/shader-combo.html index 9fb656e..da7f579 100644 --- a/shader-combo.html +++ b/shader-combo.html @@ -18,7 +18,7 @@ a { color: #00f; } #uploaded-url + br { display: none; } #header { clear: right; width:100%; padding: 0; font-size: 12px; } -#shader-gallery,#gallery-images { display: block; height: 152px; overflow-y: auto; width: 100%; padding: 0; } +#shader-gallery,#gallery-images { display: block; height: 152px; overflow-y: auto; width: 100%; padding: 0; border-bottom: 1px solid #ccc; } #shader-gallery img,#shader-gallery canvas,#gallery-images img, #gallery-images canvas { max-width: 200px; height: 100px; margin: 5px; cursor: pointer; clear: right; } .shader { width: 100px; } .shader span { display: block } -- cgit v1.2.3-70-g09d2 From 1e1966cc74c1e491fcf81439b2b6ee209c829907 Mon Sep 17 00:00:00 2001 From: jules Date: Thu, 30 Jan 2014 11:01:38 -0500 Subject: update grunt-dentist to remove stylesheets --- Gruntfile.js | 4 +++- dist/index.html | 44 ++------------------------------------------ package.json | 2 +- 3 files changed, 6 insertions(+), 44 deletions(-) (limited to 'Gruntfile.js') diff --git a/Gruntfile.js b/Gruntfile.js index 04c7809..5ef6d87 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -5,11 +5,13 @@ module.exports = function(grunt) { pkg: grunt.file.readJSON('package.json'), dentist: { options: { - include: "app.min.js" + include_js: "app.min.js", + include_css: "app.css" }, build: { src: 'shader-combo.html', dest_js: 'dist/app.init.js', + dest_css: 'dist/app.css', dest_html: 'dist/index.html' } }, diff --git a/dist/index.html b/dist/index.html index c0126fa..26d4192 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1,48 +1,8 @@ - - + +