Project

General

Profile

1
var EnjoyHint=function(t){var f,g=this,i=$.extend({onStart:function(){},onEnd:function(){},onSkip:function(){},onNext:function(){}},t),n=[],p=0;$body=$("body");var e=function(t){t.preventDefault()},a=function(){$(".enjoyhint").remove(),$body.css({overflow:"auto"}),$(document).off("touchmove",e)};g.clear=function(){var t=$(".enjoyhint_next_btn"),e=$(".enjoyhint_skip_btn");t.removeClass(g.nextUserClass),t.text("Next"),e.removeClass(g.skipUserClass),e.text("Skip")};var v=function(){if(!n||!n[p])return $body.enjoyhint("hide"),i.onEnd(),void a();i.onNext();var t=$(".enjoyhint");t.removeClass("enjoyhint-step-"+p),t.removeClass("enjoyhint-step-"+(p+1)),t.addClass("enjoyhint-step-"+(p+1));var u=n[p];u.onBeforeStart&&"function"==typeof u.onBeforeStart&&u.onBeforeStart();var e=u.timeout||0;setTimeout(function(){if(!u.selector)for(var t in u)u.hasOwnProperty(t)&&t.split(" ")[1]&&(u.selector=t.split(" ")[1],u.event=t.split(" ")[0],"next"!=t.split(" ")[0]&&"auto"!=t.split(" ")[0]&&"custom"!=t.split(" ")[0]||(u.event_type=t.split(" ")[0]),u.description=u[t]);setTimeout(function(){g.clear()},250),$(document.body).scrollTo(u.selector,u.scrollAnimationSpeed||250,{offset:-100}),setTimeout(function(){var t=$(u.selector),e=_(u.event);if($body.enjoyhint("show"),$body.enjoyhint("hide_next"),f=t,u.event_selector&&(f=$(u.event_selector)),u.event_type||"key"!=u.event||t.keydown(function(t){t.which==u.keyCode&&(p++,v())}),1==u.showNext&&$body.enjoyhint("show_next"),0==u.showSkip?$body.enjoyhint("hide_skip"):$body.enjoyhint("show_skip"),u.showSkip,u.nextButton){var i=$(".enjoyhint_next_btn");i.addClass(u.nextButton.className||""),i.text(u.nextButton.text||"Next"),g.nextUserClass=u.nextButton.className}if(u.skipButton){var n=$(".enjoyhint_skip_btn");n.addClass(u.skipButton.className||""),n.text(u.skipButton.text||"Skip"),g.skipUserClass=u.skipButton.className}if(u.event_type)switch(u.event_type){case"auto":return t[u.event](),u.event,p++,void v();case"custom":K(u.event,function(){p++,y(u.event),v()});break;case"next":$body.enjoyhint("show_next")}else f.on(e,function(t){u.keyCode&&t.keyCode!=u.keyCode||(p++,$(this).off(e),v())});var a=Math.max(t.outerWidth(),t.outerHeight()),r=u.radius||Math.round(a/2)+5,s=t.offset(),o=t.outerWidth(),c=t.outerHeight(),h=void 0!==u.margin?u.margin:10,l={x:s.left+Math.round(o/2),y:s.top+Math.round(c/2)-$(document).scrollTop()},d={enjoyHintElementSelector:u.selector,center_x:l.x,center_y:l.y,text:u.description,top:u.top,bottom:u.bottom,left:u.left,right:u.right,margin:u.margin,scroll:u.scroll};u.shape&&"circle"==u.shape?(d.shape="circle",d.radius=r):(d.radius=0,d.width=o+h,d.height=c+h),$body.enjoyhint("render_label_with_shape",d,g.stop)},u.scrollAnimationSpeed+20||270)},e)},r=function(){p++,v()},s=function(){var t=n[p],e=$(t.selector);y(t.event),e.off(_(t.event)),a()},_=function(t,e){return t+(e?"custom":"")+".enjoy_hint"},K=function(t,e){$body.on(_(t,!0),e)},y=function(t){$body.off(_(t,!0))};window.addEventListener("resize",function(){null!=f&&$body.enjoyhint("redo_events_near_rect",f[0].getBoundingClientRect())}),g.stop=function(){s()},g.reRunScript=function(t){p=t,v()},g.runScript=function(){p=0,i.onStart(),v()},g.resumeScript=function(){v()},g.setCurrentStep=function(t){p=t},g.getCurrentStep=function(){return p},g.trigger=function(t){switch(t){case"next":r();break;case"skip":s()}},g.setScript=function(t){t&&(n=t)},g.set=function(t){g.setScript(t)},g.setSteps=function(t){g.setScript(t)},g.run=function(){g.runScript()},g.resume=function(){g.resumeScript()},$(".enjoyhint")&&$(".enjoyhint").remove(),$body.css({overflow:"hidden"}),$(document).on("touchmove",e),$body.enjoyhint({onNextClick:function(){r()},onSkipClick:function(){i.onSkip(),s()}})};CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,n,a){return i<2*a&&(a=i/2),n<2*a&&(a=n/2),this.beginPath(),this.moveTo(t+a,e),this.arcTo(t+i,e,t+i,e+n,a),this.arcTo(t+i,e+n,t,e+n,a),this.arcTo(t,e+n,t,e,a),this.arcTo(t,e,t+i,e,a),this.closePath(),this},function(H){var W,y,m,S,x,C,w,b=window.innerWidth,F=window.innerHeight,e={init:function(l){return this.each(function(){this.enjoyhint_obj={},(W=this.enjoyhint_obj).resetComponentStuff=function(){w=C=x=S=m=y=null,b=window.innerWidth,F=window.innerHeight};var t=H(this);function c(t,e){var i=document.createElementNS("http://www.w3.org/2000/svg",t);for(var n in e)i.setAttribute(n,e[n]);return i}W.options=jQuery.extend({onNextClick:function(){},onSkipClick:function(){},animation_time:800},l),W.gcl={chooser:"enjoyhint"},W.cl={enjoy_hint:"enjoyhint",hide:"enjoyhint_hide",disable_events_element:"enjoyhint_disable_events",btn:"enjoyhint_btn",skip_btn:"enjoyhint_skip_btn",close_btn:"enjoyhint_close_btn",next_btn:"enjoyhint_next_btn",main_canvas:"enjoyhint_canvas",main_svg:"enjoyhint_svg",svg_wrapper:"enjoyhint_svg_wrapper",svg_transparent:"enjoyhint_svg_transparent",kinetic_container:"kinetic_container"},W.canvas_size={w:1.4*H(window).width(),h:1.4*H(window).height()};W.enjoyhint=H("<div>",{class:W.cl.enjoy_hint+" "+W.cl.svg_transparent}).appendTo(t),W.enjoyhint_svg_wrapper=H("<div>",{class:W.cl.svg_wrapper+" "+W.cl.svg_transparent}).appendTo(W.enjoyhint),W.$stage_container=H('<div id="'+W.cl.kinetic_container+'">').appendTo(W.enjoyhint),W.$canvas=H('<canvas id="enj_canvas" width="'+W.canvas_size.w+'" height="'+W.canvas_size.h+'" class="'+W.cl.main_canvas+'">').appendTo(W.enjoyhint),W.$svg=H('<svg width="'+W.canvas_size.w+'" height="'+W.canvas_size.h+'" class="'+W.cl.main_canvas+" "+W.cl.main_svg+'">').appendTo(W.enjoyhint_svg_wrapper);var e=H(c("defs")),i=H(c("marker",{id:"arrowMarker",viewBox:"0 0 36 21",refX:"21",refY:"10",markerUnits:"strokeWidth",orient:"auto",markerWidth:"16",markerHeight:"12"})),n=H(c("path",{style:"fill:none; stroke:rgb(255,255,255); stroke-width:2",d:"M0,0 c30,11 30,9 0,20"}));e.append(i.append(n)).appendTo(W.$svg),W.kinetic_stage=new Kinetic.Stage({container:W.cl.kinetic_container,width:W.canvas_size.w,height:W.canvas_size.h,scaleX:1}),W.layer=new Kinetic.Layer,W.rect=new Kinetic.Rect({fill:"rgba(0,0,0,0.6)",width:W.canvas_size.w,height:W.canvas_size.h});var a=H("<div>",{class:W.cl.disable_events_element}).appendTo(W.enjoyhint),r=a.clone().appendTo(W.enjoyhint),s=a.clone().appendTo(W.enjoyhint),o=a.clone().appendTo(W.enjoyhint),h=function(t){t.stopImmediatePropagation()};H("button").focusout(h),a.click(h),r.click(h),s.click(h),o.click(h),W.$skip_btn=H("<div>",{class:W.cl.skip_btn}).appendTo(W.enjoyhint).html("Skip").click(function(t){W.hide(),W.options.onSkipClick()}),W.$next_btn=H("<div>",{class:W.cl.next_btn}).appendTo(W.enjoyhint).html("Next").click(function(t){W.options.onNextClick()}),W.$close_btn=H("<div>",{class:W.cl.close_btn}).appendTo(W.enjoyhint).html("").click(function(t){W.hide(),W.options.onSkipClick()}),W.$canvas.mousedown(function(t){H("canvas").css({left:"4000px"});var e=document.elementFromPoint(t.clientX,t.clientY);return H("canvas").css({left:"0px"}),H(e).click(),!1});W.shape=new Kinetic.Shape({radius:0,center_x:-130,center_y:-130,width:0,height:0,sceneFunc:function(t){var e=this.getContext("2d")._context,i=(this.pos,e.globalCompositeOperation);e.globalCompositeOperation="destination-out",e.beginPath();var n=this.attrs.center_x-Math.round(this.attrs.width/2),a=this.attrs.center_y-Math.round(this.attrs.height/2);e.roundRect(n,a,this.attrs.width,this.attrs.height,this.attrs.radius),e.fillStyle="red",e.fill(),e.globalCompositeOperation=i}}),W.shape.radius=0,W.layer.add(W.rect),W.layer.add(W.shape),W.kinetic_stage.add(W.layer),H(window).on("resize",function(){if(!H(W.stepData.enjoyHintElementSelector).is(":visible"))return W.stopFunction(),void H(window).off("resize");window.innerWidth,window.innerHeight;var t=H(W.stepData.enjoyHintElementSelector)[0].getBoundingClientRect();W.shape.attrs.center_x=Math.round(t.left+t.width/2),W.shape.attrs.center_y=Math.round(t.top+t.height/2),W.shape.attrs.width=t.width+11,W.shape.attrs.height=t.height+11;var e=window.innerWidth,i=window.innerHeight,n=e/b,a=i/F;if(W.kinetic_stage.setAttr("width",b*n),W.kinetic_stage.setAttr("height",F*a),null!=W.stepData){if(window.innerWidth,window.innerHeight,C||(C=W.shape.attrs.center_x,W.shape.attrs.center_y),!S){S=[];var r=H("#enjoyhint_arrpw_line").attr("d");r&&(S.push(r.substr(1).split(",")[0]),S.push(r.substr(r.indexOf("Q")+1).split(",")[0]),S.push(r.split(" ")[2].split(",")[0]),(x=[]).push(r.split(",")[1].split(" ")[0]),x.push(r.split(",")[2].split(" ")[0]),x.push(r.split(",")[3]))}var s=H(".enjoy_hint_label");y||(y=s[0].getBoundingClientRect().left,m=s[0].getBoundingClientRect().top);var o=H(".enjoyhint_skip_btn");w||(w=o[0].getBoundingClientRect().left,o[0].getBoundingClientRect().top),s.css("left",window.innerWidth/2-s.outerWidth()/2);var c=s[0].getBoundingClientRect();if(window.innerWidth<640)H("#enjoyhint_arrpw_line").hide(),s.css("top",window.innerHeight/2-s.outerHeight()/2);else{var h,l,d,u;H("#enjoyhint_arrpw_line").show(),s.css("top",m);var f=c.left+c.width/2<W.shape.attrs.center_x,g=c.top+c.height/2<W.shape.attrs.center_y;u=window.innerWidth<900?(h=Math.round(c.left+(c.width/2+15)*(c.left+c.width/2<W.shape.attrs.center_x?1:-1)),d=Math.round(c.top+c.height*(c.top+c.height/2<W.shape.attrs.center_y?1:-1)),l=Math.round(W.shape.attrs.center_x+(W.shape.attrs.radius+15)*(f?-1:1)),Math.round(W.shape.attrs.center_y)):(h=Math.round(c.left+c.width/2+(c.width/2+15)*(f?1:-1)),d=Math.round(c.top+c.height/2),l=Math.round(W.shape.attrs.center_x),Math.round(W.shape.attrs.center_y+(W.shape.attrs.height/2+15)*(g?-1:1)));var p=h<l?l:h,v=d<u?d:u;Math.abs(c.left+c.width/2-W.shape.attrs.center_x)<200&&(p=h=l=c.left+c.width/2,v=d=c.top,console.log("ok")),window.innerWidth<900&&(p=h<l?h:l,v=d<u?u:d);var _="M%d1,%d2 Q%d3,%d4 %d5,%d6".replace("%d1",h).replace("%d2",d).replace("%d3",p).replace("%d4",v).replace("%d5",l).replace("%d6",u);H("#enjoyhint_arrpw_line")[0].setAttribute("d",_)}var K=+w+(W.shape.attrs.center_x-C)/2;o.css("left",K<15?15:K),o.css("top",c.top+c.height+20)}W.rect=new Kinetic.Rect({fill:"rgba(0,0,0,0.6)",width:window.innerWidth,height:window.innerHeight}),W.layer.removeChildren(),W.layer.add(W.rect),W.layer.add(W.shape),W.layer.draw(),W.kinetic_stage.draw()});W.enjoyhint;return W.show=function(){W.enjoyhint.removeClass(W.cl.hide)},W.hide=function(){W.enjoyhint.addClass(W.cl.hide),new Kinetic.Tween({node:W.shape,duration:.002,center_x:-130,center_y:-130}).play()},W.hide(),W.hideNextBtn=function(){W.$next_btn.addClass(W.cl.hide),W.nextBtn="hide"},W.showNextBtn=function(){W.$next_btn.removeClass(W.cl.hide),W.nextBtn="show"},W.hideSkipBtn=function(){W.$skip_btn.addClass(W.cl.hide)},W.showSkipBtn=function(){W.$skip_btn.removeClass(W.cl.hide)},W.renderCircle=function(t){var e=t.r||0,i=t.x||0,n=t.y||0;new Kinetic.Tween({node:W.shape,duration:.2,center_x:i,center_y:n,width:2*e,height:2*e,radius:e}).play();var a=i-e,r=i+e,s=n-e,o=n+e;return{x:i,y:n,left:a,right:r,top:s,bottom:o,conn:{left:{x:a-20,y:n},right:{x:r+20,y:n},top:{x:i,y:s-20},bottom:{x:i,y:o+20}}}},W.renderRect=function(t,e){var i=t.r||0,n=t.x||0,a=t.y||0,r=t.w||0,s=t.h||0;new Kinetic.Tween({node:W.shape,duration:e,center_x:n,center_y:a,width:r,height:s,radius:i}).play();var o=Math.round(r/2),c=Math.round(s/2),h=n-o,l=n+o,d=a-c,u=a+c;return{x:n,y:a,left:h,right:l,top:d,bottom:u,conn:{left:{x:h-20,y:a},right:{x:l+20,y:a},top:{x:n,y:d-20},bottom:{x:n,y:u+20}}}},W.renderLabel=function(t){var e=t.x||0;W.originalElementX=e;var i=t.y||0,n=(t.text,W.getLabelElement({x:e,y:i,text:t.text})),a=n.width(),r=n.height(),s=n.offset().left,o=n.offset().left+a,c=n.offset().top-H(document).scrollTop(),h=n.offset().top+r,l={x:s-10,y:c+Math.round(r/2)},d={x:o+10,y:c+Math.round(r/2)},u={x:s+Math.round(a/2),y:c-10},f={x:s+Math.round(a/2),y:h+10};return n.detach(),setTimeout(function(){H("#enjoyhint_label").remove(),n.appendTo(W.enjoyhint)},W.options.animation_time/2),{label:n,left:s,right:o,top:c,bottom:h,conn:{left:l,right:d,top:u,bottom:f}}},W.renderArrow=function(t){if(640<=window.innerWidth){var e=t.x_from||0,i=t.y_from||0,n=t.x_to||0,a=t.y_to||0,r=t.by_top_side,s=0,o=0;s=r?a<=i?(o=a,e):(o=i,n):a<=i?(o=i,n):(o=a,e)}t.text;W.enjoyhint.addClass(W.cl.svg_transparent),setTimeout(function(){H("#enjoyhint_arrpw_line").remove();var t="M"+e+","+i+" Q"+s+","+o+" "+n+","+a;W.$svg.append(c("path",{style:"fill:none; stroke:rgb(255,255,255); stroke-width:3","marker-end":"url(#arrowMarker)",d:t,id:"enjoyhint_arrpw_line"})),W.enjoyhint.removeClass(W.cl.svg_transparent)},W.options.animation_time/2)},W.getLabelElement=function(t){return H("<div>",{class:"enjoy_hint_label",id:"enjoyhint_label"}).css({top:t.y+"px",left:t.x+"px"}).html(t.text).appendTo(W.enjoyhint)},W.disableEventsNearRect=function(t){a.css({top:"0",left:"0"}).height(t.top),r.css({top:t.bottom+"px",left:"0"}),s.css({top:"0",left:"0px"}).width(t.left),o.css({top:"0",left:t.right+"px"})},jQuery.event.special.destroyed={remove:function(t){t.handler&&t.handler()}},W.renderLabelWithShape=function(t){W.stepData=t;var e=function t(e){return"MD-DIALOG"===e.tagName?e:void 0===e.tagName?null:t(H(e).parent()[0])}(H(W.stepData.enjoyHintElementSelector)[0]);null!=e&&H(e).on("dialogClosing",function(){W.stopFunction()}),W.resetComponentStuff();var i=t.shape||"rect",n={},a=0,r=0,s=t.top||0,o=t.bottom||0,c=t.left||0,h=t.right||0;switch(i){case"circle":a=r=t.radius;var l=(g={top:t.center_y-r+s,bottom:t.center_y+r-o,left:t.center_x-a+c,right:t.center_x+a-h}).right-g.left,d=g.bottom-g.top;t.radius=Math.round(Math.min(l,d)/2),a=r=Math.round(t.radius/2);var u=Math.round(l/2),f=Math.round(d/2);t.center_x=g.left+u,t.center_y=g.top+f,n=W.renderCircle({x:t.center_x,y:t.center_y,r:t.radius});break;case"rect":a=Math.round(t.width/2),r=Math.round(t.height/2);var g={top:t.center_y-r+s,bottom:t.center_y+r-o,left:t.center_x-a+c,right:t.center_x+a-h};t.width=g.right-g.left,t.height=g.bottom-g.top,a=Math.round(t.width/2),r=Math.round(t.height/2),t.center_x=g.left+a,t.center_y=g.top+r,n=W.renderRect({x:t.center_x,y:t.center_y,w:t.width,h:t.height,r:t.radius},.2)}var p=W.enjoyhint.width(),v=W.enjoyhint.height(),_=W.getLabelElement({x:0,y:0,text:t.text}),K=_.outerWidth(),y=_.outerHeight();_.remove();var m=t.center_y-r,S=v-(t.center_y+r),x=(t.center_x,t.center_x,t.center_x,t.center_x,150+y+40),C=r+150,w="top"==(v-t.center_y<t.center_y?"top":"bottom")?t.center_y-C-y:t.center_y+C,b=window.innerWidth/2-K/2;m<x&&S<x&&(w=t.center_y+40),window.innerWidth;var F=W.renderLabel({x:b,y:w,text:t.text});W.$next_btn.css({left:b,top:w+y+20});var T=b+W.$next_btn.width()+10;"hide"==W.nextBtn&&(T=b),W.$skip_btn.css({left:T,top:w+y+20}),W.$close_btn.css({right:10,top:10}),W.disableEventsNearRect({top:n.top,bottom:n.bottom,left:n.left,right:n.right});var P=!1,k="left",A="left",M=F.left<=n.x&&F.right>=n.x,D=F.right<n.x,G=(F.left,n.x,F.right,n.left,F.left,n.right,F.bottom<n.top),L=F.top>n.bottom,R=F.bottom>=n.y&&F.top<=n.y,I=F.bottom<=n.y&&!G,N=F.top>=n.y&&!L;function B(t,e,i){k=t,A=e,P=i}function j(t,e,i,n,a){var r=[];(r=G?t:I?e:R?i:N?n:a)&&B(r[0],r[1],r[2])}if(M)if(G)B("bottom","top","top");else{if(!L)return;B("top","bottom","bottom")}else D?j(["right","top","top"],["bottom","left","bottom"],["right","left","top"],["top","left","top"],["right","bottom","bottom"]):j(["left","top","top"],["bottom","right","bottom"],["left","right","top"],["top","right","top"],["left","bottom","bottom"]);var O=F.conn[k],E=n.conn[A],U="top"==P;W.renderArrow({x_from:O.x,y_from:O.y,x_to:window.innerWidth<640?n.left+(0<n.left):E.x,y_to:window.innerWidth<640?n.conn.left.y:E.y,by_top_side:U})},W.clear=function(){W.ctx.clearRect(0,0,3e3,2e3)},this})},set:function(t){return this.each(function(){this.enjoyhint_obj.setValue(t)}),this},show:function(){return this.each(function(){this.enjoyhint_obj.show()}),this},hide:function(){return this.each(function(){this.enjoyhint_obj.hide()}),this},hide_next:function(){return this.each(function(){this.enjoyhint_obj.hideNextBtn()}),this},show_next:function(){return this.each(function(){this.enjoyhint_obj.showNextBtn()}),this},hide_skip:function(){return this.each(function(){this.enjoyhint_obj.hideSkipBtn()}),this},show_skip:function(){return this.each(function(){this.enjoyhint_obj.showSkipBtn()}),this},render_circle:function(t,e,i){return this.each(function(){this.enjoyhint_obj.renderCircle(t,e,i)}),this},render_label:function(t,e,i){return this.each(function(){this.enjoyhint_obj.renderLabel(t,e,i)}),this},render_label_with_shape:function(t,e){return this.each(function(){W.stopFunction=e,this.enjoyhint_obj.renderLabelWithShape(t)}),this},redo_events_near_rect:function(t){W.disableEventsNearRect({top:t.top,bottom:t.bottom,left:t.left,right:t.right})},clear:function(){return this.each(function(){this.enjoyhint_obj.clear()}),this},close:function(t){return this.each(function(){this.enjoyhint_obj.closePopdown()}),this}};H.fn.enjoyhint=function(t){return e[t]?e[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?(H.error("Method "+t+" does not exist on $.numinput"),this):e.init.apply(this,arguments)}}(window.jQuery);var Kinetic={};!function(t){var e=Math.PI/180;(Kinetic={version:"5.2.0",stages:[],idCounter:0,ids:{},names:{},shapes:{},listenClickTap:!1,inDblClickWindow:!1,enableTrace:!1,traceArrMax:100,dblClickWindow:400,pixelRatio:void 0,dragDistance:0,angleDeg:!0,showWarnings:!0,Filters:{},Node:function(t){this._init(t)},Shape:function(t){this.__init(t)},Container:function(t){this.__init(t)},Stage:function(t){this.___init(t)},BaseLayer:function(t){this.___init(t)},Layer:function(t){this.____init(t)},FastLayer:function(t){this.____init(t)},Group:function(t){this.___init(t)},isDragging:function(){var t=Kinetic.DD;return!!t&&t.isDragging},isDragReady:function(){var t=Kinetic.DD;return!!t&&!!t.node},_addId:function(t,e){void 0!==e&&(this.ids[e]=t)},_removeId:function(t){void 0!==t&&delete this.ids[t]},_addName:function(t,e){if(void 0!==e)for(var i=e.split(/\s/g),n=0;n<i.length;n++){var a=i[n];a&&(void 0===this.names[a]&&(this.names[a]=[]),this.names[a].push(t))}},_removeName:function(t,e){if(void 0!==t){var i=this.names[t];if(void 0!==i){for(var n=0;n<i.length;n++){i[n]._id===e&&i.splice(n,1)}0===i.length&&delete this.names[t]}}},getAngle:function(t){return this.angleDeg?t*e:t},_parseUA:function(t){var e=t.toLowerCase(),i=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[],n=!!t.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i),a=!!t.match(/IEMobile/i);return{browser:i[1]||"",version:i[2]||"0",mobile:n,ieMobile:a}},UA:void 0}).UA=Kinetic._parseUA(t.navigator&&t.navigator.userAgent||"")}(this),function(t,e){if("object"==typeof exports){var i=e();if(global.window===global)Kinetic.document=global.document,Kinetic.window=global;else{var n=require("canvas"),a=require("jsdom").jsdom;Kinetic.document=a("<!DOCTYPE html><html><head></head><body></body></html>"),Kinetic.window=Kinetic.document.createWindow(),Kinetic.window.Image=n.Image,Kinetic._nodeCanvas=n}return Kinetic.root=t,module.exports=i}"function"==typeof define&&define.amd&&define(e),Kinetic.document=document,Kinetic.window=window,Kinetic.root=t}(this,function(){return Kinetic}),function(){Kinetic.Collection=function(){var t=[].slice.call(arguments),e=t.length,i=0;for(this.length=e;i<e;i++)this[i]=t[i];return this},Kinetic.Collection.prototype=[],Kinetic.Collection.prototype.each=function(t){for(var e=0;e<this.length;e++)t(this[e],e)},Kinetic.Collection.prototype.toArray=function(){var t,e=[],i=this.length;for(t=0;t<i;t++)e.push(this[t]);return e},Kinetic.Collection.toCollection=function(t){var e,i=new Kinetic.Collection,n=t.length;for(e=0;e<n;e++)i.push(t[e]);return i},Kinetic.Collection._mapMethod=function(n){Kinetic.Collection.prototype[n]=function(){var t,e=this.length,i=[].slice.call(arguments);for(t=0;t<e;t++)this[t][n].apply(this[t],i);return this}},Kinetic.Collection.mapMethods=function(t){var e=t.prototype;for(var i in e)Kinetic.Collection._mapMethod(i)},Kinetic.Transform=function(t){this.m=t&&t.slice()||[1,0,0,1,0,0]},Kinetic.Transform.prototype={copy:function(){return new Kinetic.Transform(this.m)},point:function(t){var e=this.m;return{x:e[0]*t.x+e[2]*t.y+e[4],y:e[1]*t.x+e[3]*t.y+e[5]}},translate:function(t,e){return this.m[4]+=this.m[0]*t+this.m[2]*e,this.m[5]+=this.m[1]*t+this.m[3]*e,this},scale:function(t,e){return this.m[0]*=t,this.m[1]*=t,this.m[2]*=e,this.m[3]*=e,this},rotate:function(t){var e=Math.cos(t),i=Math.sin(t),n=this.m[0]*e+this.m[2]*i,a=this.m[1]*e+this.m[3]*i,r=this.m[0]*-i+this.m[2]*e,s=this.m[1]*-i+this.m[3]*e;return this.m[0]=n,this.m[1]=a,this.m[2]=r,this.m[3]=s,this},getTranslation:function(){return{x:this.m[4],y:this.m[5]}},skew:function(t,e){var i=this.m[0]+this.m[2]*e,n=this.m[1]+this.m[3]*e,a=this.m[2]+this.m[0]*t,r=this.m[3]+this.m[1]*t;return this.m[0]=i,this.m[1]=n,this.m[2]=a,this.m[3]=r,this},multiply:function(t){var e=this.m[0]*t.m[0]+this.m[2]*t.m[1],i=this.m[1]*t.m[0]+this.m[3]*t.m[1],n=this.m[0]*t.m[2]+this.m[2]*t.m[3],a=this.m[1]*t.m[2]+this.m[3]*t.m[3],r=this.m[0]*t.m[4]+this.m[2]*t.m[5]+this.m[4],s=this.m[1]*t.m[4]+this.m[3]*t.m[5]+this.m[5];return this.m[0]=e,this.m[1]=i,this.m[2]=n,this.m[3]=a,this.m[4]=r,this.m[5]=s,this},invert:function(){var t=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),e=this.m[3]*t,i=-this.m[1]*t,n=-this.m[2]*t,a=this.m[0]*t,r=t*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),s=t*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=e,this.m[1]=i,this.m[2]=n,this.m[3]=a,this.m[4]=r,this.m[5]=s,this},getMatrix:function(){return this.m},setAbsolutePosition:function(t,e){var i=this.m[0],n=this.m[1],a=this.m[2],r=this.m[3],s=this.m[4],o=(i*(e-this.m[5])-n*(t-s))/(i*r-n*a),c=(t-s-a*o)/i;return this.translate(c,o)}};var e=Math.PI/180,i=180/Math.PI,n={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},a=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/;Kinetic.Util={_isElement:function(t){return!(!t||1!=t.nodeType)},_isFunction:function(t){return!!(t&&t.constructor&&t.call&&t.apply)},_isObject:function(t){return!!t&&t.constructor==Object},_isArray:function(t){return"[object Array]"==Object.prototype.toString.call(t)},_isNumber:function(t){return"[object Number]"==Object.prototype.toString.call(t)},_isString:function(t){return"[object String]"==Object.prototype.toString.call(t)},_throttle:function(i,n,t){var a,r,s,o=null,c=0,h=t||{},l=function(){c=!1===h.leading?0:(new Date).getTime(),o=null,s=i.apply(a,r),a=r=null};return function(){var t=(new Date).getTime();c||!1!==h.leading||(c=t);var e=n-(t-c);return a=this,r=arguments,e<=0?(clearTimeout(o),o=null,c=t,s=i.apply(a,r),a=r=null):o||!1===h.trailing||(o=setTimeout(l,e)),s}},_hasMethods:function(t){var e,i=[];for(e in t)this._isFunction(t[e])&&i.push(e);return 0<i.length},createCanvasElement:function(){var t=Kinetic.document.createElement("canvas");try{t.style=t.style||{}}catch(t){}return t},isBrowser:function(){return"object"!=typeof exports},_isInDocument:function(t){for(;t=t.parentNode;)if(t==Kinetic.document)return!0;return!1},_simplifyArray:function(t){var e,i,n=[],a=t.length,r=Kinetic.Util;for(e=0;e<a;e++)i=t[e],r._isNumber(i)?i=Math.round(1e3*i)/1e3:r._isString(i)||(i=i.toString()),n.push(i);return n},_getImage:function(t,e){var i,n;if(t)if(this._isElement(t))e(t);else if(this._isString(t))(i=new Kinetic.window.Image).onload=function(){e(i)},i.src=t;else if(t.data){(n=Kinetic.Util.createCanvasElement()).width=t.width,n.height=t.height,n.getContext("2d").putImageData(t,0,0),this._getImage(n.toDataURL(),e)}else e(null);else e(null)},_getRGBAString:function(t){return["rgba(",t.red||0,",",t.green||0,",",t.blue||0,",",t.alpha||1,")"].join("")},_rgbToHex:function(t,e,i){return((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},_hexToRgb:function(t){t=t.replace("#","");var e=parseInt(t,16);return{r:e>>16&255,g:e>>8&255,b:255&e}},getRandomColor:function(){for(var t=(16777215*Math.random()<<0).toString(16);t.length<6;)t="0"+t;return"#"+t},get:function(t,e){return void 0===t?e:t},getRGB:function(t){var e;return t in n?{r:(e=n[t])[0],g:e[1],b:e[2]}:"#"===t[0]?this._hexToRgb(t.substring(1)):"rgb("===t.substr(0,4)?(e=a.exec(t.replace(/ /g,"")),{r:parseInt(e[1],10),g:parseInt(e[2],10),b:parseInt(e[3],10)}):{r:0,g:0,b:0}},_merge:function(t,e){var i=this._clone(e);for(var n in t)i[n]=this._isObject(t[n])?this._merge(t[n],i[n]):t[n];return i},cloneObject:function(t){var e={};for(var i in t)e[i]=this._isObject(t[i])?this.cloneObject(t[i]):this._isArray(t[i])?this.cloneArray(t[i]):t[i];return e},cloneArray:function(t){return t.slice(0)},_degToRad:function(t){return t*e},_radToDeg:function(t){return t*i},_capitalize:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},error:function(t){throw new Error("Kinetic error: "+t)},warn:function(t){Kinetic.root.console&&console.warn&&Kinetic.showWarnings&&console.warn("Kinetic warning: "+t)},extend:function(t,e){function i(){this.constructor=t}i.prototype=e.prototype;var n=t.prototype;for(var a in t.prototype=new i,n)n.hasOwnProperty(a)&&(t.prototype[a]=n[a]);t.__super__=e.prototype},addMethods:function(t,e){var i;for(i in e)t.prototype[i]=e[i]},_getControlPoints:function(t,e,i,n,a,r,s){var o=Math.sqrt(Math.pow(i-t,2)+Math.pow(n-e,2)),c=Math.sqrt(Math.pow(a-i,2)+Math.pow(r-n,2)),h=s*o/(o+c),l=s*c/(o+c);return[i-h*(a-t),n-h*(r-e),i+l*(a-t),n+l*(r-e)]},_expandPoints:function(t,e){var i,n,a=t.length,r=[];for(i=2;i<a-2;i+=2)n=Kinetic.Util._getControlPoints(t[i-2],t[i-1],t[i],t[i+1],t[i+2],t[i+3],e),r.push(n[0]),r.push(n[1]),r.push(t[i]),r.push(t[i+1]),r.push(n[2]),r.push(n[3]);return r},_removeLastLetter:function(t){return t.substring(0,t.length-1)}}}(),function(){var t=Kinetic.Util.createCanvasElement().getContext("2d"),i=Kinetic.UA.mobile?(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1):1;Kinetic.Canvas=function(t){this.init(t)},Kinetic.Canvas.prototype={init:function(t){var e=(t||{}).pixelRatio||Kinetic.pixelRatio||i;this.pixelRatio=e,this._canvas=Kinetic.Util.createCanvasElement(),this._canvas.style.padding=0,this._canvas.style.margin=0,this._canvas.style.border=0,this._canvas.style.background="transparent",this._canvas.style.position="absolute",this._canvas.style.top=0,this._canvas.style.left=0},getContext:function(){return this.context},getPixelRatio:function(){return this.pixelRatio},setPixelRatio:function(t){this.pixelRatio=t,this.setSize(this.getWidth(),this.getHeight())},setWidth:function(t){this.width=this._canvas.width=t*this.pixelRatio,this._canvas.style.width=t+"px"},setHeight:function(t){this.height=this._canvas.height=t*this.pixelRatio,this._canvas.style.height=t+"px"},getWidth:function(){return this.width},getHeight:function(){return this.height},setSize:function(t,e){this.setWidth(t),this.setHeight(e)},toDataURL:function(t,e){try{return this._canvas.toDataURL(t,e)}catch(t){try{return this._canvas.toDataURL()}catch(t){return Kinetic.Util.warn("Unable to get data URL. "+t.message),""}}}},Kinetic.SceneCanvas=function(t){var e=t||{},i=e.width||0,n=e.height||0;Kinetic.Canvas.call(this,e),this.context=new Kinetic.SceneContext(this),this.setSize(i,n)},Kinetic.SceneCanvas.prototype={setWidth:function(t){var e=this.pixelRatio,i=this.getContext()._context;Kinetic.Canvas.prototype.setWidth.call(this,t),i.scale(e,e)},setHeight:function(t){var e=this.pixelRatio,i=this.getContext()._context;Kinetic.Canvas.prototype.setHeight.call(this,t),i.scale(e,e)}},Kinetic.Util.extend(Kinetic.SceneCanvas,Kinetic.Canvas),Kinetic.HitCanvas=function(t){var e=t||{},i=e.width||0,n=e.height||0;Kinetic.Canvas.call(this,e),this.context=new Kinetic.HitContext(this),this.setSize(i,n),this.hitCanvas=!0},Kinetic.Util.extend(Kinetic.HitCanvas,Kinetic.Canvas)}(),function(){var o=["arc","arcTo","beginPath","bezierCurveTo","clearRect","clip","closePath","createLinearGradient","createPattern","createRadialGradient","drawImage","fill","fillText","getImageData","createImageData","lineTo","moveTo","putImageData","quadraticCurveTo","rect","restore","rotate","save","scale","setLineDash","setTransform","stroke","strokeText","transform","translate"];Kinetic.Context=function(t){this.init(t)},Kinetic.Context.prototype={init:function(t){this.canvas=t,this._context=t._canvas.getContext("2d"),Kinetic.enableTrace&&(this.traceArr=[],this._enableTrace())},fillShape:function(t){t.getFillEnabled()&&this._fill(t)},strokeShape:function(t){t.getStrokeEnabled()&&this._stroke(t)},fillStrokeShape:function(t){t.getFillEnabled()&&this._fill(t),t.getStrokeEnabled()&&this._stroke(t)},getTrace:function(t){var e,i,n,a,r=this.traceArr,s=r.length,o="";for(e=0;e<s;e++)(n=(i=r[e]).method)?(a=i.args,o+=n,o+=t?"()":Kinetic.Util._isArray(a[0])?"(["+a.join(",")+"])":"("+a.join(",")+")"):(o+=i.property,t||(o+="="+i.val)),o+=";";return o},clearTrace:function(){this.traceArr=[]},_trace:function(t){var e=this.traceArr;e.push(t),e.length>=Kinetic.traceArrMax&&e.shift()},reset:function(){var t=this.getCanvas().getPixelRatio();this.setTransform(1*t,0,0,1*t,0,0)},getCanvas:function(){return this.canvas},clear:function(t){var e=this.getCanvas();t?this.clearRect(t.x||0,t.y||0,t.width||0,t.height||0):this.clearRect(0,0,e.getWidth(),e.getHeight())},_applyLineCap:function(t){var e=t.getLineCap();e&&this.setAttr("lineCap",e)},_applyOpacity:function(t){var e=t.getAbsoluteOpacity();1!==e&&this.setAttr("globalAlpha",e)},_applyLineJoin:function(t){var e=t.getLineJoin();e&&this.setAttr("lineJoin",e)},setAttr:function(t,e){this._context[t]=e},arc:function(){var t=arguments;this._context.arc(t[0],t[1],t[2],t[3],t[4],t[5])},beginPath:function(){this._context.beginPath()},bezierCurveTo:function(){var t=arguments;this._context.bezierCurveTo(t[0],t[1],t[2],t[3],t[4],t[5])},clearRect:function(){var t=arguments;this._context.clearRect(t[0],t[1],t[2],t[3])},clip:function(){this._context.clip()},closePath:function(){this._context.closePath()},createImageData:function(){var t=arguments;return 2===t.length?this._context.createImageData(t[0],t[1]):1===t.length?this._context.createImageData(t[0]):void 0},createLinearGradient:function(){var t=arguments;return this._context.createLinearGradient(t[0],t[1],t[2],t[3])},createPattern:function(){var t=arguments;return this._context.createPattern(t[0],t[1])},createRadialGradient:function(){var t=arguments;return this._context.createRadialGradient(t[0],t[1],t[2],t[3],t[4],t[5])},drawImage:function(){var t=arguments,e=this._context;3===t.length?e.drawImage(t[0],t[1],t[2]):5===t.length?e.drawImage(t[0],t[1],t[2],t[3],t[4]):9===t.length&&e.drawImage(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},fill:function(){this._context.fill()},fillText:function(){var t=arguments;this._context.fillText(t[0],t[1],t[2])},getImageData:function(){var t=arguments;return this._context.getImageData(t[0],t[1],t[2],t[3])},lineTo:function(){var t=arguments;this._context.lineTo(t[0],t[1])},moveTo:function(){var t=arguments;this._context.moveTo(t[0],t[1])},rect:function(){var t=arguments;this._context.rect(t[0],t[1],t[2],t[3])},putImageData:function(){var t=arguments;this._context.putImageData(t[0],t[1],t[2])},quadraticCurveTo:function(){var t=arguments;this._context.quadraticCurveTo(t[0],t[1],t[2],t[3])},restore:function(){this._context.restore()},rotate:function(){var t=arguments;this._context.rotate(t[0])},save:function(){this._context.save()},scale:function(){var t=arguments;this._context.scale(t[0],t[1])},setLineDash:function(){var t=arguments,e=this._context;this._context.setLineDash?e.setLineDash(t[0]):"mozDash"in e?e.mozDash=t[0]:"webkitLineDash"in e&&(e.webkitLineDash=t[0])},setTransform:function(){var t=arguments;this._context.setTransform(t[0],t[1],t[2],t[3],t[4],t[5])},stroke:function(){this._context.stroke()},strokeText:function(){var t=arguments;this._context.strokeText(t[0],t[1],t[2])},transform:function(){var t=arguments;this._context.transform(t[0],t[1],t[2],t[3],t[4],t[5])},translate:function(){var t=arguments;this._context.translate(t[0],t[1])},_enableTrace:function(){var t,n,a=this,e=o.length,r=Kinetic.Util._simplifyArray,i=this.setAttr,s=function(t){var e,i=a[t];a[t]=function(){return n=r(Array.prototype.slice.call(arguments,0)),e=i.apply(a,arguments),a._trace({method:t,args:n}),e}};for(t=0;t<e;t++)s(o[t]);a.setAttr=function(){i.apply(a,arguments),a._trace({property:arguments[0],val:arguments[1]})}}},Kinetic.SceneContext=function(t){Kinetic.Context.call(this,t)},Kinetic.SceneContext.prototype={_fillColor:function(t){var e=t.fill()||Kinetic.Util._getRGBAString({red:t.fillRed(),green:t.fillGreen(),blue:t.fillBlue(),alpha:t.fillAlpha()});this.setAttr("fillStyle",e),t._fillFunc(this)},_fillPattern:function(t){var e=t.getFillPatternImage(),i=t.getFillPatternX(),n=t.getFillPatternY(),a=t.getFillPatternScale(),r=Kinetic.getAngle(t.getFillPatternRotation()),s=t.getFillPatternOffset(),o=t.getFillPatternRepeat();(i||n)&&this.translate(i||0,n||0),r&&this.rotate(r),a&&this.scale(a.x,a.y),s&&this.translate(-1*s.x,-1*s.y),this.setAttr("fillStyle",this.createPattern(e,o||"repeat")),this.fill()},_fillLinearGradient:function(t){var e=t.getFillLinearGradientStartPoint(),i=t.getFillLinearGradientEndPoint(),n=t.getFillLinearGradientColorStops(),a=this.createLinearGradient(e.x,e.y,i.x,i.y);if(n){for(var r=0;r<n.length;r+=2)a.addColorStop(n[r],n[r+1]);this.setAttr("fillStyle",a),this.fill()}},_fillRadialGradient:function(t){for(var e=t.getFillRadialGradientStartPoint(),i=t.getFillRadialGradientEndPoint(),n=t.getFillRadialGradientStartRadius(),a=t.getFillRadialGradientEndRadius(),r=t.getFillRadialGradientColorStops(),s=this.createRadialGradient(e.x,e.y,n,i.x,i.y,a),o=0;o<r.length;o+=2)s.addColorStop(r[o],r[o+1]);this.setAttr("fillStyle",s),this.fill()},_fill:function(t){var e=t.fill()||t.fillRed()||t.fillGreen()||t.fillBlue(),i=t.getFillPatternImage(),n=t.getFillLinearGradientColorStops(),a=t.getFillRadialGradientColorStops(),r=t.getFillPriority();e&&"color"===r?this._fillColor(t):i&&"pattern"===r?this._fillPattern(t):n&&"linear-gradient"===r?this._fillLinearGradient(t):a&&"radial-gradient"===r?this._fillRadialGradient(t):e?this._fillColor(t):i?this._fillPattern(t):n?this._fillLinearGradient(t):a&&this._fillRadialGradient(t)},_stroke:function(t){var e=t.dash(),i=t.getStrokeScaleEnabled();t.hasStroke()&&(i||(this.save(),this.setTransform(1,0,0,1,0,0)),this._applyLineCap(t),e&&t.dashEnabled()&&this.setLineDash(e),this.setAttr("lineWidth",t.strokeWidth()),this.setAttr("strokeStyle",t.stroke()||Kinetic.Util._getRGBAString({red:t.strokeRed(),green:t.strokeGreen(),blue:t.strokeBlue(),alpha:t.strokeAlpha()})),t._strokeFunc(this),i||this.restore())},_applyShadow:function(t){var e=Kinetic.Util,i=t.getAbsoluteOpacity(),n=e.get(t.getShadowColor(),"black"),a=e.get(t.getShadowBlur(),5),r=e.get(t.getShadowOpacity(),1),s=e.get(t.getShadowOffset(),{x:0,y:0});r&&this.setAttr("globalAlpha",r*i),this.setAttr("shadowColor",n),this.setAttr("shadowBlur",a),this.setAttr("shadowOffsetX",s.x),this.setAttr("shadowOffsetY",s.y)}},Kinetic.Util.extend(Kinetic.SceneContext,Kinetic.Context),Kinetic.HitContext=function(t){Kinetic.Context.call(this,t)},Kinetic.HitContext.prototype={_fill:function(t){this.save(),this.setAttr("fillStyle",t.colorKey),t._fillFuncHit(this),this.restore()},_stroke:function(t){t.hasStroke()&&(this._applyLineCap(t),this.setAttr("lineWidth",t.strokeWidth()),this.setAttr("strokeStyle",t.colorKey),t._strokeFuncHit(this))}},Kinetic.Util.extend(Kinetic.HitContext,Kinetic.Context)}(),Kinetic.Factory={addGetterSetter:function(t,e,i,n,a){this.addGetter(t,e,i),this.addSetter(t,e,n,a),this.addOverloadedGetterSetter(t,e)},addGetter:function(t,e,i){var n="get"+Kinetic.Util._capitalize(e);t.prototype[n]=function(){var t=this.attrs[e];return void 0===t?i:t}},addSetter:function(t,e,i,n){var a="set"+Kinetic.Util._capitalize(e);t.prototype[a]=function(t){return i&&(t=i.call(this,t)),this._setAttr(e,t),n&&n.call(this),this}},addComponentsGetterSetter:function(t,n,e,a,r){var i,s,o=e.length,c=Kinetic.Util._capitalize,h="get"+c(n),l="set"+c(n);t.prototype[h]=function(){var t={};for(i=0;i<o;i++)t[s=e[i]]=this.getAttr(n+c(s));return t},t.prototype[l]=function(t){var e,i=this.attrs[n];for(e in a&&(t=a.call(this,t)),t)this._setAttr(n+c(e),t[e]);return this._fireChangeEvent(n,i,t),r&&r.call(this),this},this.addOverloadedGetterSetter(t,n)},addOverloadedGetterSetter:function(t,e){var i=Kinetic.Util._capitalize(e),n="set"+i,a="get"+i;t.prototype[e]=function(){return arguments.length?(this[n](arguments[0]),this):this[a]()}},backCompat:function(t,e){var i;for(i in e)t.prototype[i]=t.prototype[e[i]]},afterSetFilter:function(){this._filterUpToDate=!1}},Kinetic.Validators={RGBComponent:function(t){return 255<t?255:t<0?0:Math.round(t)},alphaComponent:function(t){return 1<t?1:t<1e-4?1e-4:t}},function(){var i="absoluteOpacity",n="absoluteTransform",a="listening",r="mouseenter",s="mouseleave",o="transform",c="visible",l=["id"],h=["xChange.kinetic","yChange.kinetic","scaleXChange.kinetic","scaleYChange.kinetic","skewXChange.kinetic","skewYChange.kinetic","rotationChange.kinetic","offsetXChange.kinetic","offsetYChange.kinetic","transformsEnabledChange.kinetic"].join(" ");Kinetic.Util.addMethods(Kinetic.Node,{_init:function(t){var e=this;this._id=Kinetic.idCounter++,this.eventListeners={},this.attrs={},this._cache={},this._filterUpToDate=!1,this.setAttrs(t),this.on(h,function(){this._clearCache(o),e._clearSelfAndDescendantCache(n)}),this.on("visibleChange.kinetic",function(){e._clearSelfAndDescendantCache(c)}),this.on("listeningChange.kinetic",function(){e._clearSelfAndDescendantCache(a)}),this.on("opacityChange.kinetic",function(){e._clearSelfAndDescendantCache(i)})},_clearCache:function(t){t?delete this._cache[t]:this._cache={}},_getCache:function(t,e){return void 0===this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]},_clearSelfAndDescendantCache:function(e){this._clearCache(e),this.children&&this.getChildren().each(function(t){t._clearSelfAndDescendantCache(e)})},clearCache:function(){return delete this._cache.canvas,this._filterUpToDate=!1,this},cache:function(t){var e=t||{},i=e.x||0,n=e.y||0,a=e.width||this.width(),r=e.height||this.height(),s=e.drawBorder||!1;if(0!==a&&0!==r){var o=new Kinetic.SceneCanvas({pixelRatio:1,width:a,height:r}),c=new Kinetic.SceneCanvas({pixelRatio:1,width:a,height:r}),h=new Kinetic.HitCanvas({width:a,height:r}),l=o.getContext(),d=h.getContext();return h.isCache=!0,this.clearCache(),l.save(),d.save(),s&&(l.save(),l.beginPath(),l.rect(0,0,a,r),l.closePath(),l.setAttr("strokeStyle","red"),l.setAttr("lineWidth",5),l.stroke(),l.restore()),l.translate(-1*i,-1*n),d.translate(-1*i,-1*n),"Shape"===this.nodeType&&(l.translate(-1*this.x(),-1*this.y()),d.translate(-1*this.x(),-1*this.y())),this.drawScene(o,this),this.drawHit(h,this),l.restore(),d.restore(),this._cache.canvas={scene:o,filter:c,hit:h},this}Kinetic.Util.warn("Width or height of caching configuration equals 0. Cache is ignored.")},_drawCachedSceneCanvas:function(t){t.save(),this.getLayer()._applyTransform(this,t),t._applyOpacity(this),t.drawImage(this._getCachedSceneCanvas()._canvas,0,0),t.restore()},_getCachedSceneCanvas:function(){var t,e,i,n=this.filters(),a=this._cache.canvas,r=a.scene,s=a.filter,o=s.getContext();if(n){if(!this._filterUpToDate){try{for(t=n.length,o.clear(),o.drawImage(r._canvas,0,0),e=o.getImageData(0,0,s.getWidth(),s.getHeight()),i=0;i<t;i++)n[i].call(this,e),o.putImageData(e,0,0)}catch(t){Kinetic.Util.warn("Unable to apply filter. "+t.message)}this._filterUpToDate=!0}return s}return r},_drawCachedHitCanvas:function(t){var e=this._cache.canvas.hit;t.save(),this.getLayer()._applyTransform(this,t),t.drawImage(e._canvas,0,0),t.restore()},on:function(t,e){var i,n,a,r,s=t.split(" "),o=s.length;for(i=0;i<o;i++)a=(n=s[i].split("."))[0],r=n[1]||"",this.eventListeners[a]||(this.eventListeners[a]=[]),this.eventListeners[a].push({name:r,handler:e});return this},off:function(t){var e,i,n,a,r,s=(t||"").split(" "),o=s.length;if(!t)for(i in this.eventListeners)this._off(i);for(e=0;e<o;e++)if(a=(n=s[e].split("."))[0],r=n[1],a)this.eventListeners[a]&&this._off(a,r);else for(i in this.eventListeners)this._off(i,r);return this},dispatchEvent:function(t){var e={target:this,type:t.type,evt:t};this.fire(t.type,e)},addEventListener:function(t,e){this.on(t,function(t){e.call(this,t.evt)})},removeEventListener:function(t){this.off(t)},remove:function(){var t=this.getParent();return t&&t.children&&(t.children.splice(this.index,1),t._setChildrenIndices(),delete this.parent),this._clearSelfAndDescendantCache("stage"),this._clearSelfAndDescendantCache(n),this._clearSelfAndDescendantCache(c),this._clearSelfAndDescendantCache(a),this._clearSelfAndDescendantCache(i),this},destroy:function(){Kinetic._removeId(this.getId()),Kinetic._removeName(this.getName(),this._id),this.remove()},getAttr:function(t){var e="get"+Kinetic.Util._capitalize(t);return Kinetic.Util._isFunction(this[e])?this[e]():this.attrs[t]},getAncestors:function(){for(var t=this.getParent(),e=new Kinetic.Collection;t;)e.push(t),t=t.getParent();return e},getAttrs:function(){return this.attrs||{}},setAttrs:function(t){var e,i;if(t)for(e in t)"children"===e||t[e]instanceof Kinetic.Node||(i="set"+Kinetic.Util._capitalize(e),Kinetic.Util._isFunction(this[i])?this[i](t[e]):this._setAttr(e,t[e]));return this},isListening:function(){return this._getCache(a,this._isListening)},_isListening:function(){var t=this.getListening(),e=this.getParent();return"inherit"===t?!e||e.isListening():t},isVisible:function(){return this._getCache(c,this._isVisible)},_isVisible:function(){var t=this.getVisible(),e=this.getParent();return"inherit"===t?!e||e.isVisible():t},shouldDrawHit:function(t){var e=this.getLayer();return t&&t.isCache||e&&e.hitGraphEnabled()&&this.isListening()&&this.isVisible()},show:function(){return this.setVisible(!0),this},hide:function(){return this.setVisible(!1),this},getZIndex:function(){return this.index||0},getAbsoluteZIndex:function(){var i,n,a,r,s=this.getDepth(),o=this,c=0;return"Stage"!==o.nodeType&&function t(e){for(i=[],n=e.length,a=0;a<n;a++)r=e[a],c++,"Shape"!==r.nodeType&&(i=i.concat(r.getChildren().toArray())),r._id===o._id&&(a=n);0<i.length&&i[0].getDepth()<=s&&t(i)}(o.getStage().getChildren()),c},getDepth:function(){for(var t=0,e=this.parent;e;)t++,e=e.parent;return t},setPosition:function(t){return this.setX(t.x),this.setY(t.y),this},getPosition:function(){return{x:this.getX(),y:this.getY()}},getAbsolutePosition:function(){var t=this.getAbsoluteTransform().getMatrix(),e=new Kinetic.Transform,i=this.offset();return e.m=t.slice(),e.translate(i.x,i.y),e.getTranslation()},setAbsolutePosition:function(t){var e,i=this._clearTransform();return this.attrs.x=i.x,this.attrs.y=i.y,delete i.x,delete i.y,(e=this.getAbsoluteTransform()).invert(),e.translate(t.x,t.y),t={x:this.attrs.x+e.getTranslation().x,y:this.attrs.y+e.getTranslation().y},this.setPosition({x:t.x,y:t.y}),this._setTransform(i),this},_setTransform:function(t){var e;for(e in t)this.attrs[e]=t[e];this._clearCache(o),this._clearSelfAndDescendantCache(n)},_clearTransform:function(){var t={x:this.getX(),y:this.getY(),rotation:this.getRotation(),scaleX:this.getScaleX(),scaleY:this.getScaleY(),offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),skewX:this.getSkewX(),skewY:this.getSkewY()};return this.attrs.x=0,this.attrs.y=0,this.attrs.rotation=0,this.attrs.scaleX=1,this.attrs.scaleY=1,this.attrs.offsetX=0,this.attrs.offsetY=0,this.attrs.skewX=0,this.attrs.skewY=0,this._clearCache(o),this._clearSelfAndDescendantCache(n),t},move:function(t){var e=t.x,i=t.y,n=this.getX(),a=this.getY();return void 0!==e&&(n+=e),void 0!==i&&(a+=i),this.setPosition({x:n,y:a}),this},_eachAncestorReverse:function(t,e){var i,n,a=[],r=this.getParent();if(e&&e._id===this._id)return t(this),!0;for(a.unshift(this);r&&(!e||r._id!==e._id);)a.unshift(r),r=r.parent;for(i=a.length,n=0;n<i;n++)t(a[n])},rotate:function(t){return this.setRotation(this.getRotation()+t),this},moveToTop:function(){if(this.parent){var t=this.index;return this.parent.children.splice(t,1),this.parent.children.push(this),this.parent._setChildrenIndices(),!0}Kinetic.Util.warn("Node has no parent. moveToTop function is ignored.")},moveUp:function(){if(this.parent){var t=this.index;return t<this.parent.getChildren().length-1&&(this.parent.children.splice(t,1),this.parent.children.splice(t+1,0,this),this.parent._setChildrenIndices(),!0)}Kinetic.Util.warn("Node has no parent. moveUp function is ignored.")},moveDown:function(){if(this.parent){var t=this.index;return 0<t&&(this.parent.children.splice(t,1),this.parent.children.splice(t-1,0,this),this.parent._setChildrenIndices(),!0)}Kinetic.Util.warn("Node has no parent. moveDown function is ignored.")},moveToBottom:function(){if(this.parent){var t=this.index;return 0<t&&(this.parent.children.splice(t,1),this.parent.children.unshift(this),this.parent._setChildrenIndices(),!0)}Kinetic.Util.warn("Node has no parent. moveToBottom function is ignored.")},setZIndex:function(t){if(this.parent){var e=this.index;return this.parent.children.splice(e,1),this.parent.children.splice(t,0,this),this.parent._setChildrenIndices(),this}Kinetic.Util.warn("Node has no parent. zIndex parameter is ignored.")},getAbsoluteOpacity:function(){return this._getCache(i,this._getAbsoluteOpacity)},_getAbsoluteOpacity:function(){var t=this.getOpacity();return this.getParent()&&(t*=this.getParent().getAbsoluteOpacity()),t},moveTo:function(t){return this.getParent()!==t&&(this.remove(),t.add(this)),this},toObject:function(){var t,e,i,n=Kinetic.Util,a={},r=this.getAttrs();for(t in a.attrs={},r)e=r[t],n._isFunction(e)||n._isElement(e)||n._isObject(e)&&n._hasMethods(e)||(i=this[t],delete r[t],(i?i.call(this):null)!==(r[t]=e)&&(a.attrs[t]=e));return a.className=this.getClassName(),a},toJSON:function(){return JSON.stringify(this.toObject())},getParent:function(){return this.parent},getLayer:function(){var t=this.getParent();return t?t.getLayer():null},getStage:function(){return this._getCache("stage",this._getStage)},_getStage:function(){var t=this.getParent();return t?t.getStage():void 0},fire:function(t,e,i){return i?this._fireAndBubble(t,e||{}):this._fire(t,e||{}),this},getAbsoluteTransform:function(t){return t?this._getAbsoluteTransform(t):this._getCache(n,this._getAbsoluteTransform)},_getAbsoluteTransform:function(t){var e,i,n=new Kinetic.Transform;return this._eachAncestorReverse(function(t){e=t.transformsEnabled(),i=t.getTransform(),"all"===e?n.multiply(i):"position"===e&&n.translate(t.x(),t.y())},t),n},getTransform:function(){return this._getCache(o,this._getTransform)},_getTransform:function(){var t=new Kinetic.Transform,e=this.getX(),i=this.getY(),n=Kinetic.getAngle(this.getRotation()),a=this.getScaleX(),r=this.getScaleY(),s=this.getSkewX(),o=this.getSkewY(),c=this.getOffsetX(),h=this.getOffsetY();return(0!==e||0!==i)&&t.translate(e,i),0!==n&&t.rotate(n),(0!==s||0!==o)&&t.skew(s,o),(1!==a||1!==r)&&t.scale(a,r),(0!==c||0!==h)&&t.translate(-1*c,-1*h),t},clone:function(t){var e,i,n,a,r,s=this.getClassName(),o=Kinetic.Util.cloneObject(this.attrs);for(var c in l){delete o[l[c]]}for(e in t)o[e]=t[e];var h=new Kinetic[s](o);for(e in this.eventListeners)for(n=(i=this.eventListeners[e]).length,a=0;a<n;a++)(r=i[a]).name.indexOf("kinetic")<0&&(h.eventListeners[e]||(h.eventListeners[e]=[]),h.eventListeners[e].push(r));return h},toDataURL:function(t){var e=(t=t||{}).mimeType||null,i=t.quality||null,n=this.getStage(),a=t.x||0,r=t.y||0,s=new Kinetic.SceneCanvas({width:t.width||this.getWidth()||(n?n.getWidth():0),height:t.height||this.getHeight()||(n?n.getHeight():0),pixelRatio:1}),o=s.getContext();return o.save(),(a||r)&&o.translate(-1*a,-1*r),this.drawScene(s),o.restore(),s.toDataURL(e,i)},toImage:function(e){Kinetic.Util._getImage(this.toDataURL(e),function(t){e.callback(t)})},setSize:function(t){return this.setWidth(t.width),this.setHeight(t.height),this},getSize:function(){return{width:this.getWidth(),height:this.getHeight()}},getWidth:function(){return this.attrs.width||0},getHeight:function(){return this.attrs.height||0},getClassName:function(){return this.className||this.nodeType},getType:function(){return this.nodeType},getDragDistance:function(){return void 0!==this.attrs.dragDistance?this.attrs.dragDistance:this.parent?this.parent.getDragDistance():Kinetic.dragDistance},_get:function(t){return this.className===t||this.nodeType===t?[this]:[]},_off:function(t,e){var i,n,a=this.eventListeners[t];for(i=0;i<a.length;i++)if(!("kinetic"===(n=a[i].name)&&"kinetic"!==e||e&&n!==e)){if(a.splice(i,1),0===a.length){delete this.eventListeners[t];break}i--}},_fireChangeEvent:function(t,e,i){this._fire(t+"Change",{oldVal:e,newVal:i})},setId:function(t){var e=this.getId();return Kinetic._removeId(e),Kinetic._addId(this,t),this._setAttr("id",t),this},setName:function(t){var e=this.getName();return Kinetic._removeName(e,this._id),Kinetic._addName(this,t),this._setAttr("name",t),this},setAttr:function(t,e){var i=this["set"+Kinetic.Util._capitalize(t)];return Kinetic.Util._isFunction(i)?i.call(this,e):this._setAttr(t,e),this},_setAttr:function(t,e){var i;void 0!==e&&(i=this.attrs[t],this.attrs[t]=e,this._fireChangeEvent(t,i,e))},_setComponentAttr:function(t,e,i){var n;void 0!==i&&((n=this.attrs[t])||(this.attrs[t]=this.getAttr(t)),this.attrs[t][e]=i,this._fireChangeEvent(t,n,i))},_fireAndBubble:function(t,e,i){var n=!0;if(e&&"Shape"===this.nodeType&&(e.target=this),t===r&&i&&(this._id===i._id||this.isAncestorOf&&this.isAncestorOf(i))?n=!1:t===s&&i&&(this._id===i._id||this.isAncestorOf&&this.isAncestorOf(i))&&(n=!1),n){this._fire(t,e);var a=(t===r||t===s)&&(i&&i.isAncestorOf&&i.isAncestorOf(this)||!(!i||!i.isAncestorOf));e&&!e.cancelBubble&&this.parent&&this.parent.isListening()&&!a&&(i&&i.parent?this._fireAndBubble.call(this.parent,t,e,i.parent):this._fireAndBubble.call(this.parent,t,e))}},_fire:function(t,e){var i,n=this.eventListeners[t];if(e.type=t,n)for(i=0;i<n.length;i++)n[i].handler.call(this,e)},draw:function(){return this.drawScene(),this.drawHit(),this}}),Kinetic.Node.create=function(t,e){return this._createNode(JSON.parse(t),e)},Kinetic.Node._createNode=function(t,e){var i,n,a,r=Kinetic.Node.prototype.getClassName.call(t),s=t.children;if(e&&(t.attrs.container=e),i=new Kinetic[r](t.attrs),s)for(n=s.length,a=0;a<n;a++)i.add(this._createNode(s[a]));return i},Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"position"),Kinetic.Factory.addGetterSetter(Kinetic.Node,"x",0),Kinetic.Factory.addGetterSetter(Kinetic.Node,"y",0),Kinetic.Factory.addGetterSetter(Kinetic.Node,"opacity",1),Kinetic.Factory.addGetter(Kinetic.Node,"name"),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"name"),Kinetic.Factory.addGetter(Kinetic.Node,"id"),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"id"),Kinetic.Factory.addGetterSetter(Kinetic.Node,"rotation",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Node,"scale",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Node,"scaleX",1),Kinetic.Factory.addGetterSetter(Kinetic.Node,"scaleY",1),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Node,"skew",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Node,"skewX",0),Kinetic.Factory.addGetterSetter(Kinetic.Node,"skewY",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Node,"offset",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Node,"offsetX",0),Kinetic.Factory.addGetterSetter(Kinetic.Node,"offsetY",0),Kinetic.Factory.addSetter(Kinetic.Node,"dragDistance"),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"dragDistance"),Kinetic.Factory.addSetter(Kinetic.Node,"width",0),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"width"),Kinetic.Factory.addSetter(Kinetic.Node,"height",0),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"height"),Kinetic.Factory.addGetterSetter(Kinetic.Node,"listening","inherit"),Kinetic.Factory.addGetterSetter(Kinetic.Node,"filters",void 0,function(t){return this._filterUpToDate=!1,t}),Kinetic.Factory.addGetterSetter(Kinetic.Node,"visible","inherit"),Kinetic.Factory.addGetterSetter(Kinetic.Node,"transformsEnabled","all"),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"size"),Kinetic.Factory.backCompat(Kinetic.Node,{rotateDeg:"rotate",setRotationDeg:"setRotation",getRotationDeg:"getRotation"}),Kinetic.Collection.mapMethods(Kinetic.Node)}(),Kinetic.Filters.Grayscale=function(t){var e,i,n=t.data,a=n.length;for(e=0;e<a;e+=4)i=.34*n[e]+.5*n[e+1]+.16*n[e+2],n[e]=i,n[e+1]=i,n[e+2]=i},Kinetic.Filters.Brighten=function(t){var e,i=255*this.brightness(),n=t.data,a=n.length;for(e=0;e<a;e+=4)n[e]+=i,n[e+1]+=i,n[e+2]+=i},Kinetic.Factory.addGetterSetter(Kinetic.Node,"brightness",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Filters.Invert=function(t){var e,i=t.data,n=i.length;for(e=0;e<n;e+=4)i[e]=255-i[e],i[e+1]=255-i[e+1],i[e+2]=255-i[e+2]},function(){function E(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}var U=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259],H=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];Kinetic.Filters.Blur=function(t){var e=Math.round(this.blurRadius());0<e&&function(t,e){var i,n,a,r,s,o,c,h,l,d,u,f,g,p,v,_,K,y,m,S,x,C,w,b,F=t.data,T=t.width,P=t.height,k=e+e+1,A=T-1,M=P-1,D=e+1,G=D*(D+1)/2,L=new E,R=null,I=L,N=null,B=null,j=U[e],O=H[e];for(a=1;a<k;a++)I=I.next=new E,a==D&&(R=I);for(I.next=L,c=o=0,n=0;n<P;n++){for(_=K=y=m=h=l=d=u=0,f=D*(S=F[o]),g=D*(x=F[o+1]),p=D*(C=F[o+2]),v=D*(w=F[o+3]),h+=G*S,l+=G*x,d+=G*C,u+=G*w,I=L,a=0;a<D;a++)I.r=S,I.g=x,I.b=C,I.a=w,I=I.next;for(a=1;a<D;a++)r=o+((A<a?A:a)<<2),h+=(I.r=S=F[r])*(b=D-a),l+=(I.g=x=F[r+1])*b,d+=(I.b=C=F[r+2])*b,u+=(I.a=w=F[r+3])*b,_+=S,K+=x,y+=C,m+=w,I=I.next;for(N=L,B=R,i=0;i<T;i++)F[o+3]=w=u*j>>O,0!==w?(w=255/w,F[o]=(h*j>>O)*w,F[o+1]=(l*j>>O)*w,F[o+2]=(d*j>>O)*w):F[o]=F[o+1]=F[o+2]=0,h-=f,l-=g,d-=p,u-=v,f-=N.r,g-=N.g,p-=N.b,v-=N.a,r=c+((r=i+e+1)<A?r:A)<<2,h+=_+=N.r=F[r],l+=K+=N.g=F[r+1],d+=y+=N.b=F[r+2],u+=m+=N.a=F[r+3],N=N.next,f+=S=B.r,g+=x=B.g,p+=C=B.b,v+=w=B.a,_-=S,K-=x,y-=C,m-=w,B=B.next,o+=4;c+=T}for(i=0;i<T;i++){for(K=y=m=_=l=d=u=h=0,f=D*(S=F[o=i<<2]),g=D*(x=F[o+1]),p=D*(C=F[o+2]),v=D*(w=F[o+3]),h+=G*S,l+=G*x,d+=G*C,u+=G*w,I=L,a=0;a<D;a++)I.r=S,I.g=x,I.b=C,I.a=w,I=I.next;for(s=T,a=1;a<=e;a++)o=s+i<<2,h+=(I.r=S=F[o])*(b=D-a),l+=(I.g=x=F[o+1])*b,d+=(I.b=C=F[o+2])*b,u+=(I.a=w=F[o+3])*b,_+=S,K+=x,y+=C,m+=w,I=I.next,a<M&&(s+=T);for(o=i,N=L,B=R,n=0;n<P;n++)F[3+(r=o<<2)]=w=u*j>>O,0<w?(w=255/w,F[r]=(h*j>>O)*w,F[r+1]=(l*j>>O)*w,F[r+2]=(d*j>>O)*w):F[r]=F[r+1]=F[r+2]=0,h-=f,l-=g,d-=p,u-=v,f-=N.r,g-=N.g,p-=N.b,v-=N.a,r=i+((r=n+D)<M?r:M)*T<<2,h+=_+=N.r=F[r],l+=K+=N.g=F[r+1],d+=y+=N.b=F[r+2],u+=m+=N.a=F[r+3],N=N.next,f+=S=B.r,g+=x=B.g,p+=C=B.b,v+=w=B.a,_-=S,K-=x,y-=C,m-=w,B=B.next,o+=T}}(t,e)},Kinetic.Factory.addGetterSetter(Kinetic.Node,"blurRadius",0,null,Kinetic.Factory.afterSetFilter)}(),function(){function d(t,e,i){var n=4*(i*t.width+e),a=[];return a.push(t.data[n++],t.data[n++],t.data[n++],t.data[n++]),a}function u(t,e){return Math.sqrt(Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)+Math.pow(t[2]-e[2],2))}Kinetic.Filters.Mask=function(t){var e=function(t,e){var i=d(t,0,0),n=d(t,t.width-1,0),a=d(t,0,t.height-1),r=d(t,t.width-1,t.height-1),s=e||10;if(u(i,n)<s&&u(n,r)<s&&u(r,a)<s&&u(a,i)<s){for(var o=function(t){for(var e=[0,0,0],i=0;i<t.length;i++)e[0]+=t[i][0],e[1]+=t[i][1],e[2]+=t[i][2];return e[0]/=t.length,e[1]/=t.length,e[2]/=t.length,e}([n,i,r,a]),c=[],h=0;h<t.width*t.height;h++){var l=u(o,[t.data[4*h],t.data[4*h+1],t.data[4*h+2]]);c[h]=l<s?0:255}return c}}(t,this.threshold());return e&&function(t,e){for(var i=0;i<t.width*t.height;i++)t.data[4*i+3]=e[i]}(t,e=function(t,e,i){for(var n=[1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9,1/9],a=Math.round(Math.sqrt(n.length)),r=Math.floor(a/2),s=[],o=0;o<i;o++)for(var c=0;c<e;c++){for(var h=o*e+c,l=0,d=0;d<a;d++)for(var u=0;u<a;u++){var f=o+d-r,g=c+u-r;if(0<=f&&f<i&&0<=g&&g<e){var p=n[d*a+u];l+=t[f*e+g]*p}}s[h]=l}return s}(e=function(t,e,i){for(var n=[1,1,1,1,1,1,1,1,1],a=Math.round(Math.sqrt(n.length)),r=Math.floor(a/2),s=[],o=0;o<i;o++)for(var c=0;c<e;c++){for(var h=o*e+c,l=0,d=0;d<a;d++)for(var u=0;u<a;u++){var f=o+d-r,g=c+u-r;if(0<=f&&f<i&&0<=g&&g<e){var p=n[d*a+u];l+=t[f*e+g]*p}}s[h]=1020<=l?255:0}return s}(e=function(t,e,i){for(var n=[1,1,1,1,0,1,1,1,1],a=Math.round(Math.sqrt(n.length)),r=Math.floor(a/2),s=[],o=0;o<i;o++)for(var c=0;c<e;c++){for(var h=o*e+c,l=0,d=0;d<a;d++)for(var u=0;u<a;u++){var f=o+d-r,g=c+u-r;if(0<=f&&f<i&&0<=g&&g<e){var p=n[d*a+u];l+=t[f*e+g]*p}}s[h]=2040===l?255:0}return s}(e,t.width,t.height),t.width,t.height),t.width,t.height)),t},Kinetic.Factory.addGetterSetter(Kinetic.Node,"threshold",0,null,Kinetic.Factory.afterSetFilter)}(),Kinetic.Filters.RGB=function(t){var e,i,n=t.data,a=n.length,r=this.red(),s=this.green(),o=this.blue();for(e=0;e<a;e+=4)i=(.34*n[e]+.5*n[e+1]+.16*n[e+2])/255,n[e]=i*r,n[e+1]=i*s,n[e+2]=i*o,n[e+3]=n[e+3]},Kinetic.Factory.addGetterSetter(Kinetic.Node,"red",0,function(t){return this._filterUpToDate=!1,255<t?255:t<0?0:Math.round(t)}),Kinetic.Factory.addGetterSetter(Kinetic.Node,"green",0,function(t){return this._filterUpToDate=!1,255<t?255:t<0?0:Math.round(t)}),Kinetic.Factory.addGetterSetter(Kinetic.Node,"blue",0,Kinetic.Validators.RGBComponent,Kinetic.Factory.afterSetFilter),Kinetic.Filters.HSV=function(t){var e,i,n,a,r,s=t.data,o=s.length,c=Math.pow(2,this.value()),h=Math.pow(2,this.saturation()),l=Math.abs(this.hue()+360)%360,d=c*h*Math.cos(l*Math.PI/180),u=c*h*Math.sin(l*Math.PI/180),f=.299*c+.701*d+.167*u,g=.587*c-.587*d+.33*u,p=.114*c-.114*d-.497*u,v=.299*c-.299*d-.328*u,_=.587*c+.413*d+.035*u,K=.114*c-.114*d+.293*u,y=.299*c-.3*d+1.25*u,m=.587*c-.586*d-1.05*u,S=.114*c+.886*d-.2*u;for(e=0;e<o;e+=4)i=s[e+0],n=s[e+1],a=s[e+2],r=s[e+3],s[e+0]=f*i+g*n+p*a,s[e+1]=v*i+_*n+K*a,s[e+2]=y*i+m*n+S*a,s[e+3]=r},Kinetic.Factory.addGetterSetter(Kinetic.Node,"hue",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"saturation",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"value",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"hue",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"saturation",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"luminance",0,null,Kinetic.Factory.afterSetFilter),Kinetic.Filters.HSL=function(t){var e,i,n,a,r,s=t.data,o=s.length,c=Math.pow(2,this.saturation()),h=Math.abs(this.hue()+360)%360,l=127*this.luminance(),d=1*c*Math.cos(h*Math.PI/180),u=1*c*Math.sin(h*Math.PI/180),f=.299+.701*d+.167*u,g=.587-.587*d+.33*u,p=.114-.114*d-.497*u,v=.299-.299*d-.328*u,_=.587+.413*d+.035*u,K=.114-.114*d+.293*u,y=.299-.3*d+1.25*u,m=.587-.586*d-1.05*u,S=.114+.886*d-.2*u;for(e=0;e<o;e+=4)i=s[e+0],n=s[e+1],a=s[e+2],r=s[e+3],s[e+0]=f*i+g*n+p*a+l,s[e+1]=v*i+_*n+K*a+l,s[e+2]=y*i+m*n+S*a+l,s[e+3]=r},Kinetic.Filters.Emboss=function(t){var e=10*this.embossStrength(),i=255*this.embossWhiteLevel(),n=this.embossDirection(),a=this.embossBlend(),r=0,s=0,o=t.data,c=t.width,h=t.height,l=4*c,d=h;switch(n){case"top-left":s=r=-1;break;case"top":r=-1,s=0;break;case"top-right":r=-1,s=1;break;case"right":r=0,s=1;break;case"bottom-right":s=r=1;break;case"bottom":r=1,s=0;break;case"bottom-left":s=-(r=1);break;case"left":r=0,s=-1}do{var u=(d-1)*l,f=r;d+f<1&&(f=0),h<d+f&&(f=0);var g=(d-1+f)*c*4,p=c;do{var v=u+4*(p-1),_=s;p+_<1&&(_=0),c<p+_&&(_=0);var K=g+4*(p-1+_),y=o[v]-o[K],m=o[v+1]-o[K+1],S=o[v+2]-o[K+2],x=y,C=0<x?x:-x;if(C<(0<m?m:-m)&&(x=m),C<(0<S?S:-S)&&(x=S),x*=e,a){var w=o[v]+x,b=o[v+1]+x,F=o[v+2]+x;o[v]=255<w?255:w<0?0:w,o[v+1]=255<b?255:b<0?0:b,o[v+2]=255<F?255:F<0?0:F}else{var T=i-x;T<0?T=0:255<T&&(T=255),o[v]=o[v+1]=o[v+2]=T}}while(--p)}while(--d)},Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossStrength",.5,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossWhiteLevel",.5,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossDirection","top-left",null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"embossBlend",!1,null,Kinetic.Factory.afterSetFilter),function(){function C(t,e,i,n,a){var r=i-e,s=a-n;return 0===r?n+s/2:0===s?n:s*((t-e)/r)+n}Kinetic.Filters.Enhance=function(t){var e,i,n,a,r=t.data,s=r.length,o=r[0],c=o,h=r[1],l=h,d=r[2],u=d,f=this.enhance();if(0!==f){for(a=0;a<s;a+=4)(e=r[a+0])<o?o=e:c<e&&(c=e),(i=r[a+1])<h?h=i:l<i&&(l=i),(n=r[a+2])<d?d=n:u<n&&(u=n);var g,p,v,_,K,y,m,S,x;for(c===o&&(c=255,o=0),l===h&&(l=255,h=0),u===d&&(u=255,d=0),x=0<f?(p=c+f*(255-c),v=o-f*(o-0),K=l+f*(255-l),y=h-f*(h-0),S=u+f*(255-u),d-f*(d-0)):(p=c+f*(c-(g=.5*(c+o))),v=o+f*(o-g),K=l+f*(l-(_=.5*(l+h))),y=h+f*(h-_),S=u+f*(u-(m=.5*(u+d))),d+f*(d-m)),a=0;a<s;a+=4)r[a+0]=C(r[a+0],o,c,v,p),r[a+1]=C(r[a+1],h,l,y,K),r[a+2]=C(r[a+2],d,u,x,S)}},Kinetic.Factory.addGetterSetter(Kinetic.Node,"enhance",0,null,Kinetic.Factory.afterSetFilter)}(),Kinetic.Filters.Posterize=function(t){var e,i=Math.round(254*this.levels())+1,n=t.data,a=n.length,r=255/i;for(e=0;e<a;e+=1)n[e]=Math.floor(n[e]/r)*r},Kinetic.Factory.addGetterSetter(Kinetic.Node,"levels",.5,null,Kinetic.Factory.afterSetFilter),Kinetic.Filters.Noise=function(t){var e,i=255*this.noise(),n=t.data,a=n.length,r=i/2;for(e=0;e<a;e+=4)n[e+0]+=r-2*r*Math.random(),n[e+1]+=r-2*r*Math.random(),n[e+2]+=r-2*r*Math.random()},Kinetic.Factory.addGetterSetter(Kinetic.Node,"noise",.2,null,Kinetic.Factory.afterSetFilter),Kinetic.Filters.Pixelate=function(t){var e,i,n,a,r,s,o,c,h,l,d,u,f,g,p=Math.ceil(this.pixelSize()),v=t.width,_=t.height,K=Math.ceil(v/p),y=Math.ceil(_/p);for(t=t.data,u=0;u<K;u+=1)for(f=0;f<y;f+=1){for(h=(c=u*p)+p,d=(l=f*p)+p,g=o=s=r=a=0,e=c;e<h;e+=1)if(!(v<=e))for(i=l;i<d;i+=1)_<=i||(a+=t[0+(n=4*(v*i+e))],r+=t[n+1],s+=t[n+2],o+=t[n+3],g+=1);for(a/=g,r/=g,s/=g,e=c;e<h;e+=1)if(!(v<=e))for(i=l;i<d;i+=1)_<=i||(t[0+(n=4*(v*i+e))]=a,t[n+1]=r,t[n+2]=s,t[n+3]=o)}},Kinetic.Factory.addGetterSetter(Kinetic.Node,"pixelSize",8,null,Kinetic.Factory.afterSetFilter),Kinetic.Filters.Threshold=function(t){var e,i=255*this.threshold(),n=t.data,a=n.length;for(e=0;e<a;e+=1)n[e]=n[e]<i?0:255},Kinetic.Factory.addGetterSetter(Kinetic.Node,"threshold",.5,null,Kinetic.Factory.afterSetFilter),Kinetic.Filters.Sepia=function(t){var e,i,n,a,r,s,o,c,h,l=t.data,d=t.width,u=t.height,f=4*d;do{for(e=(u-1)*f,i=d;o=.393*(a=l[n=e+4*(i-1)])+.769*(r=l[n+1])+.189*(s=l[n+2]),c=.349*a+.686*r+.168*s,h=.272*a+.534*r+.131*s,l[n]=255<o?255:o,l[n+1]=255<c?255:c,l[n+2]=255<h?255:h,l[n+3]=l[n+3],--i;);}while(--u)},Kinetic.Filters.Solarize=function(t){var e=t.data,i=t.width,n=4*i,a=t.height;do{var r=(a-1)*n,s=i;do{var o=r+4*(s-1),c=e[o],h=e[o+1],l=e[o+2];127<c&&(c=255-c),127<h&&(h=255-h),127<l&&(l=255-l),e[o]=c,e[o+1]=h,e[o+2]=l}while(--s)}while(--a)},function(){var S=Kinetic.Util.createCanvasElement();Kinetic.Filters.Kaleidoscope=function(t){var e,i,n,a,r,s,o,c,h,l=t.width,d=t.height,u=Math.round(this.kaleidoscopePower()),f=Math.round(this.kaleidoscopeAngle()),g=Math.floor(l*(f%360)/360);if(!(u<1)){S.width=l,S.height=d;var p=S.getContext("2d").getImageData(0,0,l,d);!function(t,e,i){var n,a,r,s,o=t.data,c=e.data,h=t.width,l=t.height,d=i.polarCenterX||h/2,u=i.polarCenterY||l/2,f=0,g=0,p=0,v=0,_=Math.sqrt(d*d+u*u);a=h-d,r=l-u,_=_<(s=Math.sqrt(a*a+r*r))?s:_;var K,y,m,S,x=l,C=h,w=360/C*Math.PI/180;for(y=0;y<C;y+=1)for(m=Math.sin(y*w),S=Math.cos(y*w),K=0;K<x;K+=1)a=Math.floor(d+_*K/x*S),f=o[0+(n=4*((r=Math.floor(u+_*K/x*m))*h+a))],g=o[n+1],p=o[n+2],v=o[n+3],c[0+(n=4*(y+K*h))]=f,c[n+1]=g,c[n+2]=p,c[n+3]=v}(t,p,{polarCenterX:l/2,polarCenterY:d/2});for(var v=l/Math.pow(2,u);v<=8;)v*=2,u-=1;var _=v=Math.ceil(v),K=0,y=_,m=1;for(l<g+v&&(K=_,y=0,m=-1),i=0;i<d;i+=1)for(e=K;e!==y;e+=m)c=4*(l*i+Math.round(e+g)%l),a=p.data[c+0],r=p.data[c+1],s=p.data[c+2],o=p.data[c+3],h=4*(l*i+e),p.data[h+0]=a,p.data[h+1]=r,p.data[h+2]=s,p.data[h+3]=o;for(i=0;i<d;i+=1)for(_=Math.floor(v),n=0;n<u;n+=1){for(e=0;e<_+1;e+=1)c=4*(l*i+e),a=p.data[c+0],r=p.data[c+1],s=p.data[c+2],o=p.data[c+3],h=4*(l*i+2*_-e-1),p.data[h+0]=a,p.data[h+1]=r,p.data[h+2]=s,p.data[h+3]=o;_*=2}!function(t,e,i){var n,a,r,s,o,c,h=t.data,l=e.data,d=t.width,u=t.height,f=i.polarCenterX||d/2,g=i.polarCenterY||u/2,p=0,v=0,_=0,K=0,y=Math.sqrt(f*f+g*g);a=d-f,r=u-g,y=y<(c=Math.sqrt(a*a+r*r))?c:y;var m,S,x,C=u,w=d,b=i.polarRotation||0;for(a=0;a<d;a+=1)for(r=0;r<u;r+=1)s=a-f,o=r-g,m=Math.sqrt(s*s+o*o)*C/y,S=(S=(180*Math.atan2(o,s)/Math.PI+360+b)%360)*w/360,x=Math.floor(S),p=h[0+(n=4*(Math.floor(m)*d+x))],v=h[n+1],_=h[n+2],K=h[n+3],l[0+(n=4*(r*d+a))]=p,l[n+1]=v,l[n+2]=_,l[n+3]=K}(p,t,{polarRotation:0})}},Kinetic.Factory.addGetterSetter(Kinetic.Node,"kaleidoscopePower",2,null,Kinetic.Factory.afterSetFilter),Kinetic.Factory.addGetterSetter(Kinetic.Node,"kaleidoscopeAngle",0,null,Kinetic.Factory.afterSetFilter)}(),function(){function t(t){setTimeout(t,1e3/60)}var l=Kinetic.root.performance&&Kinetic.root.performance.now?function(){return Kinetic.root.performance.now()}:function(){return(new Date).getTime()},e=Kinetic.root.requestAnimationFrame||Kinetic.root.webkitRequestAnimationFrame||Kinetic.root.mozRequestAnimationFrame||Kinetic.root.oRequestAnimationFrame||Kinetic.root.msRequestAnimationFrame||t;Kinetic.Animation=function(t,e){var i=Kinetic.Animation;this.func=t,this.setLayers(e),this.id=i.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:l()}},Kinetic.Animation.prototype={setLayers:function(t){var e;e=t?0<t.length?t:[t]:[],this.layers=e},getLayers:function(){return this.layers},addLayer:function(t){var e,i,n=this.layers;if(n){for(e=n.length,i=0;i<e;i++)if(n[i]._id===t._id)return!1}else this.layers=[];return this.layers.push(t),!0},isRunning:function(){var t,e=Kinetic.Animation.animations,i=e.length;for(t=0;t<i;t++)if(e[t].id===this.id)return!0;return!1},start:function(){var t=Kinetic.Animation;this.stop(),this.frame.timeDiff=0,this.frame.lastTime=l(),t._addAnimation(this)},stop:function(){Kinetic.Animation._removeAnimation(this)},_updateFrameObject:function(t){this.frame.timeDiff=t-this.frame.lastTime,this.frame.lastTime=t,this.frame.time+=this.frame.timeDiff,this.frame.frameRate=1e3/this.frame.timeDiff}},Kinetic.Animation.animations=[],Kinetic.Animation.animIdCounter=0,Kinetic.Animation.animRunning=!1,Kinetic.Animation._addAnimation=function(t){this.animations.push(t),this._handleAnimation()},Kinetic.Animation._removeAnimation=function(t){var e,i=t.id,n=this.animations,a=n.length;for(e=0;e<a;e++)if(n[e].id===i){this.animations.splice(e,1);break}},Kinetic.Animation._runFrames=function(){var t,e,i,n,a,r,s,o,c={},h=this.animations;for(n=0;n<h.length;n++)if(e=(t=h[n]).layers,i=t.func,t._updateFrameObject(l()),r=e.length,!i||!1!==i.call(t,t.frame))for(a=0;a<r;a++)void 0!==(s=e[a])._id&&(c[s._id]=s);for(o in c)c[o].draw()},Kinetic.Animation._animationLoop=function(){var t=Kinetic.Animation;t.animations.length?(function(){e.apply(Kinetic.root,arguments)}(t._animationLoop),t._runFrames()):t.animRunning=!1},Kinetic.Animation._handleAnimation=function(){this.animRunning||(this.animRunning=!0,this._animationLoop())};var i=Kinetic.Node.prototype.moveTo;Kinetic.Node.prototype.moveTo=function(t){i.call(this,t)},Kinetic.BaseLayer.prototype.batchDraw=function(){var t=this,e=Kinetic.Animation;this.batchAnim||(this.batchAnim=new e(function(){t.lastBatchDrawTime&&500<l()-t.lastBatchDrawTime&&t.batchAnim.stop()},this)),this.lastBatchDrawTime=l(),this.batchAnim.isRunning()||(this.draw(),this.batchAnim.start())},Kinetic.Stage.prototype.batchDraw=function(){this.getChildren().each(function(t){t.batchDraw()})}}(),function(){var c={node:1,duration:1,easing:1,onFinish:1,yoyo:1},h=0;Kinetic.Tween=function(t){var e,i,n=this,a=t.node,r=a._id,s=t.easing||Kinetic.Easings.Linear,o=!!t.yoyo;for(i in e=void 0===t.duration?1:0===t.duration?.001:t.duration,this.node=a,this._id=h++,this.anim=new Kinetic.Animation(function(){n.tween.onEnterFrame()},a.getLayer()||(a instanceof Kinetic.Stage?a.getLayers():null)),this.tween=new l(i,function(t){n._tweenFunc(t)},s,0,1,1e3*e,o),this._addListeners(),Kinetic.Tween.attrs[r]||(Kinetic.Tween.attrs[r]={}),Kinetic.Tween.attrs[r][this._id]||(Kinetic.Tween.attrs[r][this._id]={}),Kinetic.Tween.tweens[r]||(Kinetic.Tween.tweens[r]={}),t)void 0===c[i]&&this._addAttr(i,t[i]);this.reset(),this.onFinish=t.onFinish,this.onReset=t.onReset},Kinetic.Tween.attrs={},Kinetic.Tween.tweens={},Kinetic.Tween.prototype={_addAttr:function(t,e){var i,n,a,r,s,o=this.node,c=o._id;if((a=Kinetic.Tween.tweens[c][t])&&delete Kinetic.Tween.attrs[c][a][t],i=o.getAttr(t),Kinetic.Util._isArray(e))for(n=[],s=e.length,r=0;r<s;r++)n.push(e[r]-i[r]);else n=e-i;Kinetic.Tween.attrs[c][this._id][t]={start:i,diff:n},Kinetic.Tween.tweens[c][t]=this._id},_tweenFunc:function(t){var e,i,n,a,r,s,o,c=this.node,h=Kinetic.Tween.attrs[c._id][this._id];for(e in h){if(n=(i=h[e]).start,a=i.diff,Kinetic.Util._isArray(n))for(r=[],o=n.length,s=0;s<o;s++)r.push(n[s]+a[s]*t);else r=n+a*t;c.setAttr(e,r)}},_addListeners:function(){var t=this;this.tween.onPlay=function(){t.anim.start()},this.tween.onReverse=function(){t.anim.start()},this.tween.onPause=function(){t.anim.stop()},this.tween.onFinish=function(){t.onFinish&&t.onFinish()},this.tween.onReset=function(){t.onReset&&t.onReset()}},play:function(){return this.tween.play(),this},reverse:function(){return this.tween.reverse(),this},reset:function(){return this.tween.reset(),this},seek:function(t){return this.tween.seek(1e3*t),this},pause:function(){return this.tween.pause(),this},finish:function(){return this.tween.finish(),this},destroy:function(){var t,e=this.node._id,i=this._id,n=Kinetic.Tween.tweens[e];for(t in this.pause(),n)delete Kinetic.Tween.tweens[e][t];delete Kinetic.Tween.attrs[e][i]}};var l=function(t,e,i,n,a,r,s){this.prop=t,this.propFunc=e,this.begin=n,this._pos=n,this.duration=r,this._change=0,this.prevPos=0,this.yoyo=s,this._time=0,this._position=0,this._startTime=0,this._finish=0,this.func=i,this._change=a-this.begin,this.pause()};l.prototype={fire:function(t){var e=this[t];e&&e()},setTime:function(t){t>this.duration?this.yoyo?(this._time=this.duration,this.reverse()):this.finish():t<0?this.yoyo?(this._time=0,this.play()):this.reset():(this._time=t,this.update())},getTime:function(){return this._time},setPosition:function(t){this.prevPos=this._pos,this.propFunc(t),this._pos=t},getPosition:function(t){return void 0===t&&(t=this._time),this.func(t,this.begin,this._change,this.duration)},play:function(){this.state=2,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onPlay")},reverse:function(){this.state=3,this._time=this.duration-this._time,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onReverse")},seek:function(t){this.pause(),this._time=t,this.update(),this.fire("onSeek")},reset:function(){this.pause(),this._time=0,this.update(),this.fire("onReset")},finish:function(){this.pause(),this._time=this.duration,this.update(),this.fire("onFinish")},update:function(){this.setPosition(this.getPosition(this._time))},onEnterFrame:function(){var t=this.getTimer()-this._startTime;2===this.state?this.setTime(t):3===this.state&&this.setTime(this.duration-t)},pause:function(){this.state=1,this.fire("onPause")},getTimer:function(){return(new Date).getTime()}},Kinetic.Easings={BackEaseIn:function(t,e,i,n){return i*(t/=n)*t*(2.70158*t-1.70158)+e},BackEaseOut:function(t,e,i,n){return i*((t=t/n-1)*t*(2.70158*t+1.70158)+1)+e},BackEaseInOut:function(t,e,i,n){var a=1.70158;return(t/=n/2)<1?i/2*t*t*((1+(a*=1.525))*t-a)+e:i/2*((t-=2)*t*((1+(a*=1.525))*t+a)+2)+e},ElasticEaseIn:function(t,e,i,n,a,r){var s=0;return 0===t?e:1==(t/=n)?e+i:(r||(r=.3*n),s=!a||a<Math.abs(i)?(a=i,r/4):r/(2*Math.PI)*Math.asin(i/a),-a*Math.pow(2,10*(t-=1))*Math.sin(2*(t*n-s)*Math.PI/r)+e)},ElasticEaseOut:function(t,e,i,n,a,r){var s=0;return 0===t?e:1==(t/=n)?e+i:(r||(r=.3*n),s=!a||a<Math.abs(i)?(a=i,r/4):r/(2*Math.PI)*Math.asin(i/a),a*Math.pow(2,-10*t)*Math.sin(2*(t*n-s)*Math.PI/r)+i+e)},ElasticEaseInOut:function(t,e,i,n,a,r){var s=0;return 0===t?e:2==(t/=n/2)?e+i:(r||(r=.3*n*1.5),s=!a||a<Math.abs(i)?(a=i,r/4):r/(2*Math.PI)*Math.asin(i/a),t<1?-.5*a*Math.pow(2,10*(t-=1))*Math.sin(2*(t*n-s)*Math.PI/r)+e:a*Math.pow(2,-10*(t-=1))*Math.sin(2*(t*n-s)*Math.PI/r)*.5+i+e)},BounceEaseOut:function(t,e,i,n){return(t/=n)<1/2.75?7.5625*i*t*t+e:t<2/2.75?i*(7.5625*(t-=1.5/2.75)*t+.75)+e:t<2.5/2.75?i*(7.5625*(t-=2.25/2.75)*t+.9375)+e:i*(7.5625*(t-=2.625/2.75)*t+.984375)+e},BounceEaseIn:function(t,e,i,n){return i-Kinetic.Easings.BounceEaseOut(n-t,0,i,n)+e},BounceEaseInOut:function(t,e,i,n){return t<n/2?.5*Kinetic.Easings.BounceEaseIn(2*t,0,i,n)+e:.5*Kinetic.Easings.BounceEaseOut(2*t-n,0,i,n)+.5*i+e},EaseIn:function(t,e,i,n){return i*(t/=n)*t+e},EaseOut:function(t,e,i,n){return-i*(t/=n)*(t-2)+e},EaseInOut:function(t,e,i,n){return(t/=n/2)<1?i/2*t*t+e:-i/2*(--t*(t-2)-1)+e},StrongEaseIn:function(t,e,i,n){return i*(t/=n)*t*t*t*t+e},StrongEaseOut:function(t,e,i,n){return i*((t=t/n-1)*t*t*t*t+1)+e},StrongEaseInOut:function(t,e,i,n){return(t/=n/2)<1?i/2*t*t*t*t*t+e:i/2*((t-=2)*t*t*t*t+2)+e},Linear:function(t,e,i,n){return i*t/n+e}}}(),function(){Kinetic.DD={anim:new Kinetic.Animation(function(){var t=this.dirty;return this.dirty=!1,t}),isDragging:!1,justDragged:!1,offset:{x:0,y:0},node:null,_drag:function(t){var e=Kinetic.DD,i=e.node;if(i){if(!e.isDragging){var n=i.getStage().getPointerPosition(),a=i.dragDistance();if(Math.max(Math.abs(n.x-e.startPointerPos.x),Math.abs(n.y-e.startPointerPos.y))<a)return}i._setDragPosition(t),e.isDragging||(e.isDragging=!0,i.fire("dragstart",{type:"dragstart",target:i,evt:t},!0)),i.fire("dragmove",{type:"dragmove",target:i,evt:t},!0)}},_endDragBefore:function(t){var e,i=Kinetic.DD,n=i.node;n&&(n.nodeType,e=n.getLayer(),i.anim.stop(),i.isDragging&&(i.isDragging=!1,i.justDragged=!0,Kinetic.listenClickTap=!1,t&&(t.dragEndNode=n)),delete i.node,(e||n).draw())},_endDragAfter:function(t){var e=(t=t||{}).dragEndNode;t&&e&&e.fire("dragend",{type:"dragend",target:e,evt:t},!0)}},Kinetic.Node.prototype.startDrag=function(){var t=Kinetic.DD,e=this.getStage(),i=this.getLayer(),n=e.getPointerPosition(),a=this.getAbsolutePosition();n&&(t.node&&t.node.stopDrag(),t.node=this,t.startPointerPos=n,t.offset.x=n.x-a.x,t.offset.y=n.y-a.y,t.anim.setLayers(i||this.getLayers()),t.anim.start(),this._setDragPosition())},Kinetic.Node.prototype._setDragPosition=function(t){var e=Kinetic.DD,i=this.getStage().getPointerPosition(),n=this.getDragBoundFunc();if(i){var a={x:i.x-e.offset.x,y:i.y-e.offset.y};void 0!==n&&(a=n.call(this,a,t)),this.setAbsolutePosition(a),this._lastPos&&this._lastPos.x===a.x&&this._lastPos.y===a.y||(e.anim.dirty=!0),this._lastPos=a}},Kinetic.Node.prototype.stopDrag=function(){var t=Kinetic.DD,e={};t._endDragBefore(e),t._endDragAfter(e)},Kinetic.Node.prototype.setDraggable=function(t){this._setAttr("draggable",t),this._dragChange()};var e=Kinetic.Node.prototype.destroy;Kinetic.Node.prototype.destroy=function(){var t=Kinetic.DD;t.node&&t.node._id===this._id&&this.stopDrag(),e.call(this)},Kinetic.Node.prototype.isDragging=function(){var t=Kinetic.DD;return!(!t.node||t.node._id!==this._id||!t.isDragging)},Kinetic.Node.prototype._listenDrag=function(){var e=this;this._dragCleanup(),"Stage"===this.getClassName()?this.on("contentMousedown.kinetic contentTouchstart.kinetic",function(t){Kinetic.DD.node||e.startDrag(t)}):this.on("mousedown.kinetic touchstart.kinetic",function(t){1!==t.evt.button&&2!==t.evt.button&&(Kinetic.DD.node||e.startDrag(t))})},Kinetic.Node.prototype._dragChange=function(){if(this.attrs.draggable)this._listenDrag();else{this._dragCleanup();var t=this.getStage(),e=Kinetic.DD;t&&e.node&&e.node._id===this._id&&e.node.stopDrag()}},Kinetic.Node.prototype._dragCleanup=function(){"Stage"===this.getClassName()?(this.off("contentMousedown.kinetic"),this.off("contentTouchstart.kinetic")):(this.off("mousedown.kinetic"),this.off("touchstart.kinetic"))},Kinetic.Factory.addGetterSetter(Kinetic.Node,"dragBoundFunc"),Kinetic.Factory.addGetter(Kinetic.Node,"draggable",!1),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Node,"draggable");var t=Kinetic.document.documentElement;t.addEventListener("mouseup",Kinetic.DD._endDragBefore,!0),t.addEventListener("touchend",Kinetic.DD._endDragBefore,!0),t.addEventListener("mouseup",Kinetic.DD._endDragAfter,!1),t.addEventListener("touchend",Kinetic.DD._endDragAfter,!1)}(),Kinetic.Util.addMethods(Kinetic.Container,{__init:function(t){this.children=new Kinetic.Collection,Kinetic.Node.call(this,t)},getChildren:function(e){if(e){var i=new Kinetic.Collection;return this.children.each(function(t){e(t)&&i.push(t)}),i}return this.children},hasChildren:function(){return 0<this.getChildren().length},removeChildren:function(){for(var t,e=Kinetic.Collection.toCollection(this.children),i=0;i<e.length;i++)delete(t=e[i]).parent,t.index=0,t.hasChildren()&&t.removeChildren(),t.remove();return e=null,this.children=new Kinetic.Collection,this},destroyChildren:function(){for(var t,e=Kinetic.Collection.toCollection(this.children),i=0;i<e.length;i++)delete(t=e[i]).parent,t.index=0,t.destroy();return e=null,this.children=new Kinetic.Collection,this},add:function(t){if(1<arguments.length){for(var e=0;e<arguments.length;e++)this.add(arguments[e]);return this}if(t.getParent())return t.moveTo(this),this;var i=this.children;return this._validateAdd(t),t.index=i.length,t.parent=this,i.push(t),this._fire("add",{child:t}),t.isDragging()&&Kinetic.DD.anim.setLayers(t.getLayer()),this},destroy:function(){this.hasChildren()&&this.destroyChildren(),Kinetic.Node.prototype.destroy.call(this)},find:function(t){var e,i,n,a,r,s,o,c=[],h=t.replace(/ /g,"").split(","),l=h.length;for(e=0;e<l;e++)if("#"===(n=h[e]).charAt(0))(r=this._getNodeById(n.slice(1)))&&c.push(r);else if("."===n.charAt(0))a=this._getNodesByName(n.slice(1)),c=c.concat(a);else for(o=(s=this.getChildren()).length,i=0;i<o;i++)c=c.concat(s[i]._get(n));return Kinetic.Collection.toCollection(c)},_getNodeById:function(t){var e=Kinetic.ids[t];return void 0!==e&&this.isAncestorOf(e)?e:null},_getNodesByName:function(t){var e=Kinetic.names[t]||[];return this._getDescendants(e)},_get:function(t){for(var e=Kinetic.Node.prototype._get.call(this,t),i=this.getChildren(),n=i.length,a=0;a<n;a++)e=e.concat(i[a]._get(t));return e},toObject:function(){var t=Kinetic.Node.prototype.toObject.call(this);t.children=[];for(var e=this.getChildren(),i=e.length,n=0;n<i;n++){var a=e[n];t.children.push(a.toObject())}return t},_getDescendants:function(t){for(var e=[],i=t.length,n=0;n<i;n++){var a=t[n];this.isAncestorOf(a)&&e.push(a)}return e},isAncestorOf:function(t){for(var e=t.getParent();e;){if(e._id===this._id)return!0;e=e.getParent()}return!1},clone:function(t){var e=Kinetic.Node.prototype.clone.call(this,t);return this.getChildren().each(function(t){e.add(t.clone())}),e},getAllIntersections:function(e){var i=[];return this.find("Shape").each(function(t){t.isVisible()&&t.intersects(e)&&i.push(t)}),i},_setChildrenIndices:function(){this.children.each(function(t,e){t.index=e})},drawScene:function(t,e){var i=this.getLayer(),n=t||i&&i.getCanvas(),a=n&&n.getContext(),r=this._cache.canvas,s=r&&r.scene;return this.isVisible()&&(s?this._drawCachedSceneCanvas(a):this._drawChildren(n,"drawScene",e)),this},drawHit:function(t,e){var i=this.getLayer(),n=t||i&&i.hitCanvas,a=n&&n.getContext(),r=this._cache.canvas,s=r&&r.hit;return this.shouldDrawHit(n)&&(i&&i.clearHitCache(),s?this._drawCachedHitCanvas(a):this._drawChildren(n,"drawHit",e)),this},_drawChildren:function(e,i,n){var t,a,r=this.getLayer(),s=e&&e.getContext(),o=this.getClipWidth(),c=this.getClipHeight(),h=o&&c;h&&r&&(t=this.getClipX(),a=this.getClipY(),s.save(),r._applyTransform(this,s),s.beginPath(),s.rect(t,a,o,c),s.clip(),s.reset()),this.children.each(function(t){t[i](e,n)}),h&&s.restore()},shouldDrawHit:function(t){var e=this.getLayer(),i=Kinetic.DD&&Kinetic.isDragging()&&-1!==Kinetic.DD.anim.getLayers().indexOf(e);return t&&t.isCache||e&&e.hitGraphEnabled()&&this.isVisible()&&!i}}),Kinetic.Util.extend(Kinetic.Container,Kinetic.Node),Kinetic.Container.prototype.get=Kinetic.Container.prototype.find,Kinetic.Factory.addComponentsGetterSetter(Kinetic.Container,"clip",["x","y","width","height"]),Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipX"),Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipY"),Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipWidth"),Kinetic.Factory.addGetterSetter(Kinetic.Container,"clipHeight"),Kinetic.Collection.mapMethods(Kinetic.Container),function(){function n(t){t.fill()}function a(t){t.stroke()}function r(t){t.fill()}function s(t){t.stroke()}function o(){this._clearCache(t)}var t="hasShadow";Kinetic.Util.addMethods(Kinetic.Shape,{__init:function(t){this.nodeType="Shape",this._fillFunc=n,this._strokeFunc=a,this._fillFuncHit=r,this._strokeFuncHit=s;for(var e,i=Kinetic.shapes;!(e=Kinetic.Util.getRandomColor())||e in i;);i[this.colorKey=e]=this,Kinetic.Node.call(this,t),this.on("shadowColorChange.kinetic shadowBlurChange.kinetic shadowOffsetChange.kinetic shadowOpacityChange.kinetic shadowEnabledChange.kinetic",o)},hasChildren:function(){return!1},getChildren:function(){return[]},getContext:function(){return this.getLayer().getContext()},getCanvas:function(){return this.getLayer().getCanvas()},hasShadow:function(){return this._getCache(t,this._hasShadow)},_hasShadow:function(){return this.getShadowEnabled()&&0!==this.getShadowOpacity()&&!!(this.getShadowColor()||this.getShadowBlur()||this.getShadowOffsetX()||this.getShadowOffsetY())},hasFill:function(){return!!(this.getFill()||this.getFillPatternImage()||this.getFillLinearGradientColorStops()||this.getFillRadialGradientColorStops())},hasStroke:function(){return!!(this.stroke()||this.strokeRed()||this.strokeGreen()||this.strokeBlue())},intersects:function(t){var e=this.getStage().bufferHitCanvas;return e.getContext().clear(),this.drawScene(e),0<e.context.getImageData(Math.round(t.x),Math.round(t.y),1,1).data[3]},destroy:function(){Kinetic.Node.prototype.destroy.call(this),delete Kinetic.shapes[this.colorKey]},_useBufferCanvas:function(){return(this.hasShadow()||1!==this.getAbsoluteOpacity())&&this.hasFill()&&this.hasStroke()&&this.getStage()},drawScene:function(t,e){var i,n,a=this.getLayer(),r=t||a.getCanvas(),s=r.getContext(),o=this._cache.canvas,c=this.sceneFunc(),h=this.hasShadow();if(this.isVisible())if(o)this._drawCachedSceneCanvas(s);else if(c){if(s.save(),this._useBufferCanvas()){if((n=(i=this.getStage().bufferCanvas).getContext()).clear(),n.save(),n._applyLineJoin(this),a)a._applyTransform(this,n,e);else{var l=this.getAbsoluteTransform(e).getMatrix();s.transform(l[0],l[1],l[2],l[3],l[4],l[5])}c.call(this,n),n.restore(),h&&!r.hitCanvas&&(s.save(),s._applyShadow(this),s.drawImage(i._canvas,0,0),s.restore()),s._applyOpacity(this),s.drawImage(i._canvas,0,0)}else{if(s._applyLineJoin(this),a)a._applyTransform(this,s,e);else{var d=this.getAbsoluteTransform(e).getMatrix();s.transform(d[0],d[1],d[2],d[3],d[4],d[5])}h&&!r.hitCanvas&&(s.save(),s._applyShadow(this),c.call(this,s),s.restore()),s._applyOpacity(this),c.call(this,s)}s.restore()}return this},drawHit:function(t,e){var i=this.getLayer(),n=t||i.hitCanvas,a=n.getContext(),r=this.hitFunc()||this.sceneFunc(),s=this._cache.canvas,o=s&&s.hit;if(this.shouldDrawHit(n))if(i&&i.clearHitCache(),o)this._drawCachedHitCanvas(a);else if(r){if(a.save(),a._applyLineJoin(this),i)i._applyTransform(this,a,e);else{var c=this.getAbsoluteTransform(e).getMatrix();a.transform(c[0],c[1],c[2],c[3],c[4],c[5])}r.call(this,a),a.restore()}return this},drawHitFromCache:function(t){var e,i,n,a,r,s,o=t||0,c=this._cache.canvas,h=this._getCachedSceneCanvas(),l=h.getContext(),d=c.hit.getContext(),u=h.getWidth(),f=h.getHeight();d.clear();try{for(e=l.getImageData(0,0,u,f).data,n=(i=d.getImageData(0,0,u,f)).data,a=e.length,r=Kinetic.Util._hexToRgb(this.colorKey),s=0;s<a;s+=4)o<e[s+3]&&(n[s]=r.r,n[s+1]=r.g,n[s+2]=r.b,n[s+3]=255);d.putImageData(i,0,0)}catch(t){Kinetic.Util.warn("Unable to draw hit graph from cached scene canvas. "+t.message)}return this}}),Kinetic.Util.extend(Kinetic.Shape,Kinetic.Node),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"stroke"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeRed",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeGreen",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeBlue",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeAlpha",1,Kinetic.Validators.alphaComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeWidth",2),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"lineJoin"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"lineCap"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"sceneFunc"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"hitFunc"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"dash"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowColor"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowRed",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowGreen",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowBlue",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowAlpha",1,Kinetic.Validators.alphaComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowBlur"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowOpacity"),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"shadowOffset",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowOffsetX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowOffsetY",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternImage"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fill"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRed",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillGreen",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillBlue",0,Kinetic.Validators.RGBComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillAlpha",1,Kinetic.Validators.alphaComponent),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternY",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientColorStops"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientStartRadius",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientEndRadius",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientColorStops"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternRepeat","repeat"),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillEnabled",!0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeEnabled",!0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"shadowEnabled",!0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"dashEnabled",!0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"strokeScaleEnabled",!0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPriority","color"),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillPatternOffset",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternOffsetX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternOffsetY",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillPatternScale",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternScaleX",1),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternScaleY",1),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillLinearGradientStartPoint",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientStartPointX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientStartPointY",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillLinearGradientEndPoint",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientEndPointX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillLinearGradientEndPointY",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillRadialGradientStartPoint",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientStartPointX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientStartPointY",0),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Shape,"fillRadialGradientEndPoint",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientEndPointX",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillRadialGradientEndPointY",0),Kinetic.Factory.addGetterSetter(Kinetic.Shape,"fillPatternRotation",0),Kinetic.Factory.backCompat(Kinetic.Shape,{dashArray:"dash",getDashArray:"getDash",setDashArray:"getDash",drawFunc:"sceneFunc",getDrawFunc:"getSceneFunc",setDrawFunc:"setSceneFunc",drawHitFunc:"hitFunc",getDrawHitFunc:"getHitFunc",setDrawHitFunc:"setHitFunc"}),Kinetic.Collection.mapMethods(Kinetic.Shape)}(),function(){function e(e,i){e.content.addEventListener(i,function(t){e[u+i](t)},!1)}var n="mouseout",a="mouseleave",r="mouseover",s="mousemove",i="mousedown",o="mouseup",c="touchstart",h="touchend",l="touchmove",d="mousewheel",u="_",f=[i,s,o,n,c,l,h,r,"DOMMouseScroll",d,"wheel"],g=f.length;Kinetic.Util.addMethods(Kinetic.Stage,{___init:function(t){this.nodeType="Stage",Kinetic.Container.call(this,t),this._id=Kinetic.idCounter++,this._buildDOM(),this._bindContentEvents(),this._enableNestedTransforms=!1,Kinetic.stages.push(this)},_validateAdd:function(t){"Layer"!==t.getType()&&Kinetic.Util.error("You may only add layers to the stage.")},setContainer:function(t){if("string"==typeof t){var e=t;if(!(t=Kinetic.document.getElementById(t)))throw"Can not find container in document with id "+e}return this._setAttr("container",t),this},shouldDrawHit:function(){return!0},draw:function(){return Kinetic.Node.prototype.draw.call(this),this},setHeight:function(t){return Kinetic.Node.prototype.setHeight.call(this,t),this._resizeDOM(),this},setWidth:function(t){return Kinetic.Node.prototype.setWidth.call(this,t),this._resizeDOM(),this},clear:function(){var t,e=this.children,i=e.length;for(t=0;t<i;t++)e[t].clear();return this},clone:function(t){return t||(t={}),t.container=Kinetic.document.createElement("div"),Kinetic.Container.prototype.clone.call(this,t)},destroy:function(){var t=this.content;Kinetic.Container.prototype.destroy.call(this),t&&Kinetic.Util._isInDocument(t)&&this.getContainer().removeChild(t);var e=Kinetic.stages.indexOf(this);-1<e&&Kinetic.stages.splice(e,1)},getPointerPosition:function(){return this.pointerPos},getStage:function(){return this},getContent:function(){return this.content},toDataURL:function(a){var r=(a=a||{}).mimeType||null,s=a.quality||null,t=a.x||0,e=a.y||0,o=new Kinetic.SceneCanvas({width:a.width||this.getWidth(),height:a.height||this.getHeight(),pixelRatio:1}),c=o.getContext()._context,h=this.children;(t||e)&&c.translate(-1*t,-1*e),function t(e){var i=h[e].toDataURL(),n=new Kinetic.window.Image;n.onload=function(){c.drawImage(n,0,0),e<h.length-1?t(e+1):a.callback(o.toDataURL(r,s))},n.src=i}(0)},toImage:function(t){var e=t.callback;t.callback=function(t){Kinetic.Util._getImage(t,function(t){e(t)})},this.toDataURL(t)},getIntersection:function(t){var e,i,n=this.getChildren();for(e=n.length-1;0<=e;e--)if(i=n[e].getIntersection(t))return i;return null},_resizeDOM:function(){if(this.content){var t,e,i=this.getWidth(),n=this.getHeight(),a=this.getChildren(),r=a.length;for(this.content.style.width=i+"px",this.content.style.height=n+"px",this.bufferCanvas.setSize(i,n),this.bufferHitCanvas.setSize(i,n),t=0;t<r;t++)(e=a[t]).setSize(i,n),e.draw()}},add:function(t){if(!(1<arguments.length))return Kinetic.Container.prototype.add.call(this,t),t._setCanvasSize(this.width(),this.height()),t.draw(),this.content.appendChild(t.canvas._canvas),this;for(var e=0;e<arguments.length;e++)this.add(arguments[e])},getParent:function(){return null},getLayer:function(){return null},getLayers:function(){return this.getChildren()},_bindContentEvents:function(){for(var t=0;t<g;t++)e(this,f[t])},_mouseover:function(t){Kinetic.UA.mobile||(this._setPointerPosition(t),this._fire("contentMouseover",{evt:t}))},_mouseout:function(t){if(!Kinetic.UA.mobile){this._setPointerPosition(t);var e=this.targetShape;e&&!Kinetic.isDragging()&&(e._fireAndBubble(n,{evt:t}),e._fireAndBubble(a,{evt:t}),this.targetShape=null),this.pointerPos=void 0,this._fire("contentMouseout",{evt:t})}},_mousemove:function(t){if(Kinetic.UA.ieMobile)return this._touchmove(t);if((void 0===t.webkitMovementX&&void 0===t.webkitMovementY||0!==t.webkitMovementY||0!==t.webkitMovementX)&&!Kinetic.UA.mobile){this._setPointerPosition(t);var e,i=Kinetic.DD;Kinetic.isDragging()||((e=this.getIntersection(this.getPointerPosition()))&&e.isListening()?Kinetic.isDragging()||this.targetShape&&this.targetShape._id===e._id?e._fireAndBubble(s,{evt:t}):(this.targetShape&&(this.targetShape._fireAndBubble(n,{evt:t},e),this.targetShape._fireAndBubble(a,{evt:t},e)),e._fireAndBubble(r,{evt:t},this.targetShape),e._fireAndBubble("mouseenter",{evt:t},this.targetShape),this.targetShape=e):this.targetShape&&!Kinetic.isDragging()&&(this.targetShape._fireAndBubble(n,{evt:t}),this.targetShape._fireAndBubble(a,{evt:t}),this.targetShape=null),this._fire("contentMousemove",{evt:t})),i&&i._drag(t),t.preventDefault&&t.preventDefault()}},_mousedown:function(t){if(Kinetic.UA.ieMobile)return this._touchstart(t);if(!Kinetic.UA.mobile){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition());Kinetic.listenClickTap=!0,e&&e.isListening()&&(this.clickStartShape=e)._fireAndBubble(i,{evt:t}),this._fire("contentMousedown",{evt:t})}t.preventDefault&&t.preventDefault()},_mouseup:function(t){if(Kinetic.UA.ieMobile)return this._touchend(t);if(!Kinetic.UA.mobile){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition()),i=this.clickStartShape,n=!1,a=Kinetic.DD;Kinetic.inDblClickWindow?(n=!0,Kinetic.inDblClickWindow=!1):a&&a.justDragged?a&&(a.justDragged=!1):Kinetic.inDblClickWindow=!0,setTimeout(function(){Kinetic.inDblClickWindow=!1},Kinetic.dblClickWindow),e&&e.isListening()&&(e._fireAndBubble(o,{evt:t}),Kinetic.listenClickTap&&i&&i._id===e._id&&(e._fireAndBubble("click",{evt:t}),n&&e._fireAndBubble("dblclick",{evt:t}))),this._fire("contentMouseup",{evt:t}),Kinetic.listenClickTap&&(this._fire("contentClick",{evt:t}),n&&this._fire("contentDblclick",{evt:t})),Kinetic.listenClickTap=!1}t.preventDefault&&t.preventDefault()},_touchstart:function(t){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition());Kinetic.listenClickTap=!0,e&&e.isListening()&&((this.tapStartShape=e)._fireAndBubble(c,{evt:t}),e.isListening()&&t.preventDefault&&t.preventDefault()),this._fire("contentTouchstart",{evt:t})},_touchend:function(t){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition()),i=!1;Kinetic.inDblClickWindow?(i=!0,Kinetic.inDblClickWindow=!1):Kinetic.inDblClickWindow=!0,setTimeout(function(){Kinetic.inDblClickWindow=!1},Kinetic.dblClickWindow),e&&e.isListening()&&(e._fireAndBubble(h,{evt:t}),Kinetic.listenClickTap&&e._id===this.tapStartShape._id&&(e._fireAndBubble("tap",{evt:t}),i&&e._fireAndBubble("dbltap",{evt:t})),e.isListening()&&t.preventDefault&&t.preventDefault()),Kinetic.listenClickTap&&(this._fire("contentTouchend",{evt:t}),i&&this._fire("contentDbltap",{evt:t})),Kinetic.listenClickTap=!1},_touchmove:function(t){this._setPointerPosition(t);var e,i=Kinetic.DD;Kinetic.isDragging()||((e=this.getIntersection(this.getPointerPosition()))&&e.isListening()&&(e._fireAndBubble(l,{evt:t}),e.isListening()&&t.preventDefault&&t.preventDefault()),this._fire("contentTouchmove",{evt:t})),i&&(i._drag(t),Kinetic.isDragging()&&t.preventDefault())},_DOMMouseScroll:function(t){this._mousewheel(t)},_mousewheel:function(t){this._setPointerPosition(t);var e=this.getIntersection(this.getPointerPosition());e&&e.isListening()&&e._fireAndBubble(d,{evt:t})},_wheel:function(t){this._mousewheel(t)},_setPointerPosition:function(t){var e,i=this._getContentPosition(),n=t.offsetX,a=t.clientX,r=null,s=null;void 0!==(t=t||window.event).touches?0<t.touches.length&&(r=(e=t.touches[0]).clientX-i.left,s=e.clientY-i.top):void 0!==n?(r=n,s=t.offsetY):"mozilla"===Kinetic.UA.browser?(r=t.layerX,s=t.layerY):void 0!==a&&i&&(r=a-i.left,s=t.clientY-i.top),null!==r&&null!==s&&(this.pointerPos={x:r,y:s})},_getContentPosition:function(){var t=this.content.getBoundingClientRect?this.content.getBoundingClientRect():{top:0,left:0};return{top:t.top,left:t.left}},_buildDOM:function(){var t=this.getContainer();if(!t){if(Kinetic.Util.isBrowser())throw"Stage has no container. A container is required.";t=Kinetic.document.createElement("div")}t.innerHTML="",this.content=Kinetic.document.createElement("div"),this.content.style.position="relative",this.content.style.display="inline-block",this.content.className="kineticjs-content",this.content.setAttribute("role","presentation"),t.appendChild(this.content),this.bufferCanvas=new Kinetic.SceneCanvas({pixelRatio:1}),this.bufferHitCanvas=new Kinetic.HitCanvas,this._resizeDOM()},_onContent:function(t,e){var i,n,a=t.split(" "),r=a.length;for(i=0;i<r;i++)n=a[i],this.content.addEventListener(n,e,!1)},cache:function(){Kinetic.Util.warn("Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.")},clearCache:function(){}}),Kinetic.Util.extend(Kinetic.Stage,Kinetic.Container),Kinetic.Factory.addGetter(Kinetic.Stage,"container"),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Stage,"container")}(),Kinetic.Util.addMethods(Kinetic.BaseLayer,{___init:function(t){this.nodeType="Layer",Kinetic.Container.call(this,t)},createPNGStream:function(){return this.canvas._canvas.createPNGStream()},getCanvas:function(){return this.canvas},getHitCanvas:function(){return this.hitCanvas},getContext:function(){return this.getCanvas().getContext()},clear:function(t){return this.getContext().clear(t),this.getHitCanvas().getContext().clear(t),this},clearHitCache:function(){this._hitImageData=void 0},setZIndex:function(t){Kinetic.Node.prototype.setZIndex.call(this,t);var e=this.getStage();return e&&(e.content.removeChild(this.getCanvas()._canvas),t<e.getChildren().length-1?e.content.insertBefore(this.getCanvas()._canvas,e.getChildren()[t+1].getCanvas()._canvas):e.content.appendChild(this.getCanvas()._canvas)),this},moveToTop:function(){Kinetic.Node.prototype.moveToTop.call(this);var t=this.getStage();t&&(t.content.removeChild(this.getCanvas()._canvas),t.content.appendChild(this.getCanvas()._canvas))},moveUp:function(){if(Kinetic.Node.prototype.moveUp.call(this)){var t=this.getStage();t&&(t.content.removeChild(this.getCanvas()._canvas),this.index<t.getChildren().length-1?t.content.insertBefore(this.getCanvas()._canvas,t.getChildren()[this.index+1].getCanvas()._canvas):t.content.appendChild(this.getCanvas()._canvas))}},moveDown:function(){if(Kinetic.Node.prototype.moveDown.call(this)){var t=this.getStage();if(t){var e=t.getChildren();t.content.removeChild(this.getCanvas()._canvas),t.content.insertBefore(this.getCanvas()._canvas,e[this.index+1].getCanvas()._canvas)}}},moveToBottom:function(){if(Kinetic.Node.prototype.moveToBottom.call(this)){var t=this.getStage();if(t){var e=t.getChildren();t.content.removeChild(this.getCanvas()._canvas),t.content.insertBefore(this.getCanvas()._canvas,e[1].getCanvas()._canvas)}}},getLayer:function(){return this},remove:function(){var t=this.getCanvas()._canvas;return Kinetic.Node.prototype.remove.call(this),t&&t.parentNode&&Kinetic.Util._isInDocument(t)&&t.parentNode.removeChild(t),this},getStage:function(){return this.parent},setSize:function(t,e){this.canvas.setSize(t,e)},getWidth:function(){return this.parent?this.parent.getWidth():void 0},setWidth:function(){Kinetic.Util.warn('Can not change width of layer. Use "stage.width(value)" function instead.')},getHeight:function(){return this.parent?this.parent.getHeight():void 0},setHeight:function(){Kinetic.Util.warn('Can not change height of layer. Use "stage.height(value)" function instead.')}}),Kinetic.Util.extend(Kinetic.BaseLayer,Kinetic.Container),Kinetic.Factory.addGetterSetter(Kinetic.BaseLayer,"clearBeforeDraw",!0),Kinetic.Collection.mapMethods(Kinetic.BaseLayer),function(){var o=[{x:0,y:0},{x:-1,y:0},{x:-1,y:-1},{x:0,y:-1},{x:1,y:-1},{x:1,y:0},{x:1,y:1},{x:0,y:1},{x:-1,y:1}],c=o.length;Kinetic.Util.addMethods(Kinetic.Layer,{____init:function(t){this.nodeType="Layer",this.canvas=new Kinetic.SceneCanvas,this.hitCanvas=new Kinetic.HitCanvas,Kinetic.BaseLayer.call(this,t)},_setCanvasSize:function(t,e){this.canvas.setSize(t,e),this.hitCanvas.setSize(t,e)},_validateAdd:function(t){var e=t.getType();"Group"!==e&&"Shape"!==e&&Kinetic.Util.error("You may only add groups and shapes to a layer.")},getIntersection:function(t){var e,i,n,a;if(!this.hitGraphEnabled()||!this.isVisible())return null;for(var r=1,s=!1;;){for(i=0;i<c;i++){if(n=o[i],a=(e=this._getIntersection({x:t.x+n.x*r,y:t.y+n.y*r})).shape)return a;e.antialiased&&(s=!0)}if(!s)return;r+=1}},_getImageData:function(t,e){var i=this.hitCanvas.width||1,n=this.hitCanvas.height||1,a=Math.round(e)*i+Math.round(t);return this._hitImageData||(this._hitImageData=this.hitCanvas.context.getImageData(0,0,i,n)),[this._hitImageData.data[4*a+0],this._hitImageData.data[4*a+1],this._hitImageData.data[4*a+2],this._hitImageData.data[4*a+3]]},_getIntersection:function(t){var e,i=this.hitCanvas.context.getImageData(t.x,t.y,1,1).data,n=i[3];return 255===n?(e=Kinetic.Util._rgbToHex(i[0],i[1],i[2]),{shape:Kinetic.shapes["#"+e]}):0<n?{antialiased:!0}:{}},drawScene:function(t,e){var i=this.getLayer(),n=t||i&&i.getCanvas();return this._fire("beforeDraw",{node:this}),this.getClearBeforeDraw()&&n.getContext().clear(),Kinetic.Container.prototype.drawScene.call(this,n,e),this._fire("draw",{node:this}),this},_applyTransform:function(t,e,i){var n=t.getAbsoluteTransform(i).getMatrix();e.transform(n[0],n[1],n[2],n[3],n[4],n[5])},drawHit:function(t,e){var i=this.getLayer(),n=t||i&&i.hitCanvas;return i&&i.getClearBeforeDraw()&&i.getHitCanvas().getContext().clear(),Kinetic.Container.prototype.drawHit.call(this,n,e),this.imageData=null,this},clear:function(t){return this.getContext().clear(t),this.getHitCanvas().getContext().clear(t),this.imageData=null,this},setVisible:function(t){return Kinetic.Node.prototype.setVisible.call(this,t),this.hitCanvas._canvas.style.display=t?this.getCanvas()._canvas.style.display="block":this.getCanvas()._canvas.style.display="none",this},enableHitGraph:function(){return this.setHitGraphEnabled(!0),this},disableHitGraph:function(){return this.setHitGraphEnabled(!1),this},setSize:function(t,e){Kinetic.BaseLayer.prototype.setSize.call(this,t,e),this.hitCanvas.setSize(t,e)}}),Kinetic.Util.extend(Kinetic.Layer,Kinetic.BaseLayer),Kinetic.Factory.addGetterSetter(Kinetic.Layer,"hitGraphEnabled",!0),Kinetic.Collection.mapMethods(Kinetic.Layer)}(),Kinetic.Util.addMethods(Kinetic.FastLayer,{____init:function(t){this.nodeType="Layer",this.canvas=new Kinetic.SceneCanvas,Kinetic.BaseLayer.call(this,t)},_validateAdd:function(t){"Shape"!==t.getType()&&Kinetic.Util.error("You may only add shapes to a fast layer.")},_setCanvasSize:function(t,e){this.canvas.setSize(t,e)},hitGraphEnabled:function(){return!1},getIntersection:function(){return null},drawScene:function(t){var e=this.getLayer(),i=t||e&&e.getCanvas();return this.getClearBeforeDraw()&&i.getContext().clear(),Kinetic.Container.prototype.drawScene.call(this,i),this},_applyTransform:function(t,e,i){if(!i||i._id!==this._id){var n=t.getTransform().getMatrix();e.transform(n[0],n[1],n[2],n[3],n[4],n[5])}},draw:function(){return this.drawScene(),this},clear:function(t){return this.getContext().clear(t),this},setVisible:function(t){return Kinetic.Node.prototype.setVisible.call(this,t),this.getCanvas()._canvas.style.display=t?"block":"none",this}}),Kinetic.Util.extend(Kinetic.FastLayer,Kinetic.BaseLayer),Kinetic.Collection.mapMethods(Kinetic.FastLayer),Kinetic.Util.addMethods(Kinetic.Group,{___init:function(t){this.nodeType="Group",Kinetic.Container.call(this,t)},_validateAdd:function(t){var e=t.getType();"Group"!==e&&"Shape"!==e&&Kinetic.Util.error("You may only add groups and shapes to groups.")}}),Kinetic.Util.extend(Kinetic.Group,Kinetic.Container),Kinetic.Collection.mapMethods(Kinetic.Group),Kinetic.Rect=function(t){this.___init(t)},Kinetic.Rect.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Rect",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e=this.getCornerRadius(),i=this.getWidth(),n=this.getHeight();t.beginPath(),e?(t.moveTo(e,0),t.lineTo(i-e,0),t.arc(i-e,e,e,3*Math.PI/2,0,!1),t.lineTo(i,n-e),t.arc(i-e,n-e,e,0,Math.PI/2,!1),t.lineTo(e,n),t.arc(e,n-e,e,Math.PI/2,Math.PI,!1),t.lineTo(0,e),t.arc(e,e,e,Math.PI,3*Math.PI/2,!1)):t.rect(0,0,i,n),t.closePath(),t.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.Rect,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Rect,"cornerRadius",0),Kinetic.Collection.mapMethods(Kinetic.Rect),function(){var e=2*Math.PI-1e-4;Kinetic.Circle=function(t){this.___init(t)},Kinetic.Circle.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Circle",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){t.beginPath(),t.arc(0,0,this.getRadius(),0,e,!1),t.closePath(),t.fillStrokeShape(this)},getWidth:function(){return 2*this.getRadius()},getHeight:function(){return 2*this.getRadius()},setWidth:function(t){Kinetic.Node.prototype.setWidth.call(this,t),this.radius()!==t/2&&this.setRadius(t/2)},setHeight:function(t){Kinetic.Node.prototype.setHeight.call(this,t),this.radius()!==t/2&&this.setRadius(t/2)},setRadius:function(t){this._setAttr("radius",t),this.setWidth(2*t),this.setHeight(2*t)}},Kinetic.Util.extend(Kinetic.Circle,Kinetic.Shape),Kinetic.Factory.addGetter(Kinetic.Circle,"radius",0),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Circle,"radius"),Kinetic.Collection.mapMethods(Kinetic.Circle)}(),function(){var n=2*Math.PI-1e-4;Kinetic.Ellipse=function(t){this.___init(t)},Kinetic.Ellipse.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Ellipse",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e=this.getRadiusX(),i=this.getRadiusY();t.beginPath(),t.save(),e!==i&&t.scale(1,i/e),t.arc(0,0,e,0,n,!1),t.restore(),t.closePath(),t.fillStrokeShape(this)},getWidth:function(){return 2*this.getRadiusX()},getHeight:function(){return 2*this.getRadiusY()},setWidth:function(t){Kinetic.Node.prototype.setWidth.call(this,t),this.setRadius({x:t/2})},setHeight:function(t){Kinetic.Node.prototype.setHeight.call(this,t),this.setRadius({y:t/2})}},Kinetic.Util.extend(Kinetic.Ellipse,Kinetic.Shape),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Ellipse,"radius",["x","y"]),Kinetic.Factory.addGetterSetter(Kinetic.Ellipse,"radiusX",0),Kinetic.Factory.addGetterSetter(Kinetic.Ellipse,"radiusY",0),Kinetic.Collection.mapMethods(Kinetic.Ellipse)}(),function(){var e=2*Math.PI-1e-4;Kinetic.Ring=function(t){this.___init(t)},Kinetic.Ring.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Ring",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){t.beginPath(),t.arc(0,0,this.getInnerRadius(),0,e,!1),t.moveTo(this.getOuterRadius(),0),t.arc(0,0,this.getOuterRadius(),e,0,!0),t.closePath(),t.fillStrokeShape(this)},getWidth:function(){return 2*this.getOuterRadius()},getHeight:function(){return 2*this.getOuterRadius()},setWidth:function(t){Kinetic.Node.prototype.setWidth.call(this,t),this.outerRadius()!==t/2&&this.setOuterRadius(t/2)},setHeight:function(t){Kinetic.Node.prototype.setHeight.call(this,t),this.outerRadius()!==t/2&&this.setOuterRadius(t/2)},setOuterRadius:function(t){this._setAttr("outerRadius",t),this.setWidth(2*t),this.setHeight(2*t)}},Kinetic.Util.extend(Kinetic.Ring,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Ring,"innerRadius",0),Kinetic.Factory.addGetter(Kinetic.Ring,"outerRadius",0),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Ring,"outerRadius"),Kinetic.Collection.mapMethods(Kinetic.Ring)}(),Kinetic.Wedge=function(t){this.___init(t)},Kinetic.Wedge.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Wedge",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){t.beginPath(),t.arc(0,0,this.getRadius(),0,Kinetic.getAngle(this.getAngle()),this.getClockwise()),t.lineTo(0,0),t.closePath(),t.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.Wedge,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Wedge,"radius",0),Kinetic.Factory.addGetterSetter(Kinetic.Wedge,"angle",0),Kinetic.Factory.addGetterSetter(Kinetic.Wedge,"clockwise",!1),Kinetic.Factory.backCompat(Kinetic.Wedge,{angleDeg:"angle",getAngleDeg:"getAngle",setAngleDeg:"setAngle"}),Kinetic.Collection.mapMethods(Kinetic.Wedge),Kinetic.Arc=function(t){this.___init(t)},Kinetic.Arc.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Arc",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e=Kinetic.getAngle(this.angle()),i=this.clockwise();t.beginPath(),t.arc(0,0,this.getOuterRadius(),0,e,i),t.arc(0,0,this.getInnerRadius(),e,0,!i),t.closePath(),t.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.Arc,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Arc,"innerRadius",0),Kinetic.Factory.addGetterSetter(Kinetic.Arc,"outerRadius",0),Kinetic.Factory.addGetterSetter(Kinetic.Arc,"angle",0),Kinetic.Factory.addGetterSetter(Kinetic.Arc,"clockwise",!1),Kinetic.Collection.mapMethods(Kinetic.Arc),Kinetic.Image=function(t){this.___init(t)},Kinetic.Image.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Image",this.sceneFunc(this._sceneFunc),this.hitFunc(this._hitFunc)},_useBufferCanvas:function(){return(this.hasShadow()||1!==this.getAbsoluteOpacity())&&this.hasStroke()&&this.getStage()},_sceneFunc:function(t){var e,i,n,a=this.getWidth(),r=this.getHeight(),s=this.getImage();s&&(e=this.getCropWidth(),i=this.getCropHeight(),n=e&&i?[s,this.getCropX(),this.getCropY(),e,i,0,0,a,r]:[s,0,0,a,r]),(this.hasFill()||this.hasStroke()||this.hasShadow())&&(t.beginPath(),t.rect(0,0,a,r),t.closePath(),t.fillStrokeShape(this)),s&&t.drawImage.apply(t,n)},_hitFunc:function(t){var e=this.getWidth(),i=this.getHeight();t.beginPath(),t.rect(0,0,e,i),t.closePath(),t.fillStrokeShape(this)},getWidth:function(){var t=this.getImage();return this.attrs.width||(t?t.width:0)},getHeight:function(){var t=this.getImage();return this.attrs.height||(t?t.height:0)}},Kinetic.Util.extend(Kinetic.Image,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Image,"image"),Kinetic.Factory.addComponentsGetterSetter(Kinetic.Image,"crop",["x","y","width","height"]),Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropX",0),Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropY",0),Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropWidth",0),Kinetic.Factory.addGetterSetter(Kinetic.Image,"cropHeight",0),Kinetic.Collection.mapMethods(Kinetic.Image),function(){function i(t){t.fillText(this.partialText,0,0)}function n(t){t.strokeText(this.partialText,0,0)}var T="auto",a=["fontFamily","fontSize","fontStyle","fontVariant","padding","align","lineHeight","text","width","height","wrap"],r=a.length,P=Kinetic.Util.createCanvasElement().getContext("2d");Kinetic.Text=function(t){this.___init(t)},Kinetic.Text.prototype={___init:function(t){(t=t||{}).fill=t.fill||"black",void 0===t.width&&(t.width=T),void 0===t.height&&(t.height=T),Kinetic.Shape.call(this,t),this._fillFunc=i,this._strokeFunc=n,this.className="Text";for(var e=0;e<r;e++)this.on(a[e]+"Change.kinetic",this._setTextData);this._setTextData(),this.sceneFunc(this._sceneFunc),this.hitFunc(this._hitFunc)},_sceneFunc:function(t){var e,i=this.getPadding(),n=this.getTextHeight(),a=this.getLineHeight()*n,r=this.textArr,s=r.length,o=this.getWidth();for(t.setAttr("font",this._getContextFont()),t.setAttr("textBaseline","middle"),t.setAttr("textAlign","left"),t.save(),t.translate(i,0),t.translate(0,i+n/2),e=0;e<s;e++){var c=r[e],h=c.text,l=c.width;t.save(),"right"===this.getAlign()?t.translate(o-l-2*i,0):"center"===this.getAlign()&&t.translate((o-l-2*i)/2,0),this.partialText=h,t.fillStrokeShape(this),t.restore(),t.translate(0,a)}t.restore()},_hitFunc:function(t){var e=this.getWidth(),i=this.getHeight();t.beginPath(),t.rect(0,0,e,i),t.closePath(),t.fillStrokeShape(this)},setText:function(t){var e=Kinetic.Util._isString(t)?t:t.toString();return this._setAttr("text",e),this},getWidth:function(){return this.attrs.width===T?this.getTextWidth()+2*this.getPadding():this.attrs.width},getHeight:function(){return this.attrs.height===T?this.getTextHeight()*this.textArr.length*this.getLineHeight()+2*this.getPadding():this.attrs.height},getTextWidth:function(){return this.textWidth},getTextHeight:function(){return this.textHeight},_getTextSize:function(t){var e,i=P,n=this.getFontSize();return i.save(),i.font=this._getContextFont(),e=i.measureText(t),i.restore(),{width:e.width,height:parseInt(n,10)}},_getContextFont:function(){return this.getFontStyle()+" "+this.getFontVariant()+" "+this.getFontSize()+"px "+this.getFontFamily()},_addTextLine:function(t,e){return this.textArr.push({text:t,width:e})},_getTextWidth:function(t){return P.measureText(t).width},_setTextData:function(){var t=this.getText().split("\n"),e=+this.getFontSize(),i=0,n=this.getLineHeight()*e,a=this.attrs.width,r=this.attrs.height,s=a!==T,o=r!==T,c=this.getPadding(),h=a-2*c,l=r-2*c,d=0,u=this.getWrap(),f="none"!==u,g="char"!==u&&f;this.textArr=[],P.save(),P.font=this._getContextFont();for(var p=0,v=t.length;p<v;++p){var _=t[p],K=this._getTextWidth(_);if(s&&h<K)for(;0<_.length;){for(var y=0,m=_.length,S="",x=0;y<m;){var C=y+m>>>1,w=_.slice(0,C+1),b=this._getTextWidth(w);b<=h?(y=C+1,S=w,x=b):m=C}if(!S)break;if(g){var F=Math.max(S.lastIndexOf(" "),S.lastIndexOf("-"))+1;0<F&&(y=F,S=S.slice(0,y),x=this._getTextWidth(S))}if(this._addTextLine(S,x),i=Math.max(i,x),d+=n,!f||o&&l<d+n)break;if(0<(_=_.slice(y)).length&&(K=this._getTextWidth(_))<=h){this._addTextLine(_,K),d+=n,i=Math.max(i,K);break}}else this._addTextLine(_,K),d+=n,i=Math.max(i,K);if(o&&l<d+n)break}P.restore(),this.textHeight=e,this.textWidth=i}},Kinetic.Util.extend(Kinetic.Text,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontFamily","Arial"),Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontSize",12),Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontStyle","normal"),Kinetic.Factory.addGetterSetter(Kinetic.Text,"fontVariant","normal"),Kinetic.Factory.addGetterSetter(Kinetic.Text,"padding",0),Kinetic.Factory.addGetterSetter(Kinetic.Text,"align","left"),Kinetic.Factory.addGetterSetter(Kinetic.Text,"lineHeight",1),Kinetic.Factory.addGetterSetter(Kinetic.Text,"wrap","word"),Kinetic.Factory.addGetter(Kinetic.Text,"text",""),Kinetic.Factory.addOverloadedGetterSetter(Kinetic.Text,"text"),Kinetic.Collection.mapMethods(Kinetic.Text)}(),Kinetic.Line=function(t){this.___init(t)},Kinetic.Line.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Line",this.on("pointsChange.kinetic tensionChange.kinetic closedChange.kinetic",function(){this._clearCache("tensionPoints")}),this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e,i,n,a=this.getPoints(),r=a.length,s=this.getTension(),o=this.getClosed();if(r){if(t.beginPath(),t.moveTo(a[0],a[1]),0!==s&&4<r){for(i=(e=this.getTensionPoints()).length,n=o?0:4,o||t.quadraticCurveTo(e[0],e[1],e[2],e[3]);n<i-2;)t.bezierCurveTo(e[n++],e[n++],e[n++],e[n++],e[n++],e[n++]);o||t.quadraticCurveTo(e[i-2],e[i-1],a[r-2],a[r-1])}else for(n=2;n<r;n+=2)t.lineTo(a[n],a[n+1]);o?(t.closePath(),t.fillStrokeShape(this)):t.strokeShape(this)}},getTensionPoints:function(){return this._getCache("tensionPoints",this._getTensionPoints)},_getTensionPoints:function(){return this.getClosed()?this._getTensionPointsClosed():Kinetic.Util._expandPoints(this.getPoints(),this.getTension())},_getTensionPointsClosed:function(){var t=this.getPoints(),e=t.length,i=this.getTension(),n=Kinetic.Util,a=n._getControlPoints(t[e-2],t[e-1],t[0],t[1],t[2],t[3],i),r=n._getControlPoints(t[e-4],t[e-3],t[e-2],t[e-1],t[0],t[1],i),s=Kinetic.Util._expandPoints(t,i);return[a[2],a[3]].concat(s).concat([r[0],r[1],t[e-2],t[e-1],r[2],r[3],a[0],a[1],t[0],t[1]])}},Kinetic.Util.extend(Kinetic.Line,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Line,"closed",!1),Kinetic.Factory.addGetterSetter(Kinetic.Line,"tension",0),Kinetic.Factory.addGetterSetter(Kinetic.Line,"points",[]),Kinetic.Collection.mapMethods(Kinetic.Line),Kinetic.Sprite=function(t){this.___init(t)},Kinetic.Sprite.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Sprite",this._updated=!0;var e=this;this.anim=new Kinetic.Animation(function(){var t=e._updated;return e._updated=!1,t}),this.on("animationChange.kinetic",function(){this.frameIndex(0)}),this.on("frameIndexChange.kinetic",function(){this._updated=!0}),this.on("frameRateChange.kinetic",function(){this.anim.isRunning()&&(clearInterval(this.interval),this._setInterval())}),this.sceneFunc(this._sceneFunc),this.hitFunc(this._hitFunc)},_sceneFunc:function(t){var e=this.getAnimation(),i=this.frameIndex(),n=4*i,a=this.getAnimations()[e],r=this.frameOffsets(),s=a[n+0],o=a[n+1],c=a[n+2],h=a[n+3],l=this.getImage();if(l)if(r){var d=r[e],u=2*i;t.drawImage(l,s,o,c,h,d[u+0],d[u+1],c,h)}else t.drawImage(l,s,o,c,h,0,0,c,h)},_hitFunc:function(t){var e=this.getAnimation(),i=this.frameIndex(),n=4*i,a=this.getAnimations()[e],r=this.frameOffsets(),s=a[n+2],o=a[n+3];if(t.beginPath(),r){var c=r[e],h=2*i;t.rect(c[h+0],c[h+1],s,o)}else t.rect(0,0,s,o);t.closePath(),t.fillShape(this)},_useBufferCanvas:function(){return(this.hasShadow()||1!==this.getAbsoluteOpacity())&&this.hasStroke()},_setInterval:function(){var t=this;this.interval=setInterval(function(){t._updateIndex()},1e3/this.getFrameRate())},start:function(){var t=this.getLayer();this.anim.setLayers(t),this._setInterval(),this.anim.start()},stop:function(){this.anim.stop(),clearInterval(this.interval)},isRunning:function(){return this.anim.isRunning()},_updateIndex:function(){var t=this.frameIndex(),e=this.getAnimation(),i=this.getAnimations()[e].length/4;this.frameIndex(t<i-1?t+1:0)}},Kinetic.Util.extend(Kinetic.Sprite,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"animation"),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"animations"),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"frameOffsets"),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"image"),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"frameIndex",0),Kinetic.Factory.addGetterSetter(Kinetic.Sprite,"frameRate",17),Kinetic.Factory.backCompat(Kinetic.Sprite,{index:"frameIndex",getIndex:"getFrameIndex",setIndex:"setFrameIndex"}),Kinetic.Collection.mapMethods(Kinetic.Sprite),Kinetic.Path=function(t){this.___init(t)},Kinetic.Path.prototype={___init:function(t){this.dataArray=[];var e=this;Kinetic.Shape.call(this,t),this.className="Path",this.dataArray=Kinetic.Path.parsePathData(this.getData()),this.on("dataChange.kinetic",function(){e.dataArray=Kinetic.Path.parsePathData(this.getData())}),this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e=this.dataArray,i=!1;t.beginPath();for(var n=0;n<e.length;n++){var a=e[n].command,r=e[n].points;switch(a){case"L":t.lineTo(r[0],r[1]);break;case"M":t.moveTo(r[0],r[1]);break;case"C":t.bezierCurveTo(r[0],r[1],r[2],r[3],r[4],r[5]);break;case"Q":t.quadraticCurveTo(r[0],r[1],r[2],r[3]);break;case"A":var s=r[0],o=r[1],c=r[2],h=r[3],l=r[4],d=r[5],u=r[6],f=r[7],g=h<c?c:h,p=h<c?1:c/h,v=h<c?h/c:1;t.translate(s,o),t.rotate(u),t.scale(p,v),t.arc(0,0,g,l,l+d,1-f),t.scale(1/p,1/v),t.rotate(-u),t.translate(-s,-o);break;case"z":t.closePath(),i=!0}}i?t.fillStrokeShape(this):t.strokeShape(this)}},Kinetic.Util.extend(Kinetic.Path,Kinetic.Shape),Kinetic.Path.getLineLength=function(t,e,i,n){return Math.sqrt((i-t)*(i-t)+(n-e)*(n-e))},Kinetic.Path.getPointOnLine=function(t,e,i,n,a,r,s){void 0===r&&(r=e),void 0===s&&(s=i);var o=(a-i)/(n-e+1e-8),c=Math.sqrt(t*t/(1+o*o));n<e&&(c*=-1);var h,l=o*c;if(n===e)h={x:r,y:s+l};else if((s-i)/(r-e+1e-8)===o)h={x:r+c,y:s+l};else{var d,u,f=this.getLineLength(e,i,n,a);if(f<1e-8)return;var g=(r-e)*(n-e)+(s-i)*(a-i);d=e+(g/=f*f)*(n-e),u=i+g*(a-i);var p=this.getLineLength(r,s,d,u),v=Math.sqrt(t*t-p*p);c=Math.sqrt(v*v/(1+o*o)),n<e&&(c*=-1),h={x:d+c,y:u+(l=o*c)}}return h},Kinetic.Path.getPointOnCubicBezier=function(t,e,i,n,a,r,s,o,c){function h(t){return t*t*t}function l(t){return 3*t*t*(1-t)}function d(t){return 3*t*(1-t)*(1-t)}function u(t){return(1-t)*(1-t)*(1-t)}return{x:o*h(t)+r*l(t)+n*d(t)+e*u(t),y:c*h(t)+s*l(t)+a*d(t)+i*u(t)}},Kinetic.Path.getPointOnQuadraticBezier=function(t,e,i,n,a,r,s){function o(t){return t*t}function c(t){return 2*t*(1-t)}function h(t){return(1-t)*(1-t)}return{x:r*o(t)+n*c(t)+e*h(t),y:s*o(t)+a*c(t)+i*h(t)}},Kinetic.Path.getPointOnEllipticalArc=function(t,e,i,n,a,r){var s=Math.cos(r),o=Math.sin(r),c=i*Math.cos(a),h=n*Math.sin(a);return{x:t+(c*s-h*o),y:e+(c*o+h*s)}},Kinetic.Path.parsePathData=function(t){if(!t)return[];var e=t,i=["m","M","l","L","v","V","h","H","z","Z","c","C","q","Q","t","T","s","S","a","A"];e=e.replace(new RegExp(" ","g"),",");for(var n=0;n<i.length;n++)e=e.replace(new RegExp(i[n],"g"),"|"+i[n]);var a=e.split("|"),r=[],s=0,o=0;for(n=1;n<a.length;n++){var c=a[n],h=c.charAt(0),l=(c=(c=(c=(c=c.slice(1)).replace(new RegExp(",-","g"),"-")).replace(new RegExp("-","g"),",-")).replace(new RegExp("e,-","g"),"e-")).split(",");0<l.length&&""===l[0]&&l.shift();for(var d=0;d<l.length;d++)l[d]=parseFloat(l[d]);for(;0<l.length&&!isNaN(l[0]);){var u,f,g,p,v,_,K,y,m,S,x=null,C=[],w=s,b=o;switch(h){case"l":s+=l.shift(),o+=l.shift(),x="L",C.push(s,o);break;case"L":s=l.shift(),o=l.shift(),C.push(s,o);break;case"m":var F=l.shift(),T=l.shift();if(s+=F,o+=T,x="M",2<r.length&&"z"===r[r.length-1].command)for(var P=r.length-2;0<=P;P--)if("M"===r[P].command){s=r[P].points[0]+F,o=r[P].points[1]+T;break}C.push(s,o),h="l";break;case"M":s=l.shift(),o=l.shift(),x="M",C.push(s,o),h="L";break;case"h":s+=l.shift(),x="L",C.push(s,o);break;case"H":s=l.shift(),x="L",C.push(s,o);break;case"v":o+=l.shift(),x="L",C.push(s,o);break;case"V":o=l.shift(),x="L",C.push(s,o);break;case"C":C.push(l.shift(),l.shift(),l.shift(),l.shift()),s=l.shift(),o=l.shift(),C.push(s,o);break;case"c":C.push(s+l.shift(),o+l.shift(),s+l.shift(),o+l.shift()),s+=l.shift(),o+=l.shift(),x="C",C.push(s,o);break;case"S":f=s,g=o,"C"===(u=r[r.length-1]).command&&(f=s+(s-u.points[2]),g=o+(o-u.points[3])),C.push(f,g,l.shift(),l.shift()),s=l.shift(),o=l.shift(),x="C",C.push(s,o);break;case"s":f=s,g=o,"C"===(u=r[r.length-1]).command&&(f=s+(s-u.points[2]),g=o+(o-u.points[3])),C.push(f,g,s+l.shift(),o+l.shift()),s+=l.shift(),o+=l.shift(),x="C",C.push(s,o);break;case"Q":C.push(l.shift(),l.shift()),s=l.shift(),o=l.shift(),C.push(s,o);break;case"q":C.push(s+l.shift(),o+l.shift()),s+=l.shift(),o+=l.shift(),x="Q",C.push(s,o);break;case"T":f=s,g=o,"Q"===(u=r[r.length-1]).command&&(f=s+(s-u.points[0]),g=o+(o-u.points[1])),s=l.shift(),o=l.shift(),x="Q",C.push(f,g,s,o);break;case"t":f=s,g=o,"Q"===(u=r[r.length-1]).command&&(f=s+(s-u.points[0]),g=o+(o-u.points[1])),s+=l.shift(),o+=l.shift(),x="Q",C.push(f,g,s,o);break;case"A":p=l.shift(),v=l.shift(),_=l.shift(),K=l.shift(),y=l.shift(),m=s,S=o,s=l.shift(),o=l.shift(),x="A",C=this.convertEndpointToCenterParameterization(m,S,s,o,K,y,p,v,_);break;case"a":p=l.shift(),v=l.shift(),_=l.shift(),K=l.shift(),y=l.shift(),m=s,S=o,s+=l.shift(),o+=l.shift(),x="A",C=this.convertEndpointToCenterParameterization(m,S,s,o,K,y,p,v,_)}r.push({command:x||h,points:C,start:{x:w,y:b},pathLength:this.calcLength(w,b,x||h,C)})}("z"===h||"Z"===h)&&r.push({command:"z",points:[],start:void 0,pathLength:0})}return r},Kinetic.Path.calcLength=function(t,e,i,n){var a,r,s,o,c=Kinetic.Path;switch(i){case"L":return c.getLineLength(t,e,n[0],n[1]);case"C":for(a=0,r=c.getPointOnCubicBezier(0,t,e,n[0],n[1],n[2],n[3],n[4],n[5]),o=.01;o<=1;o+=.01)s=c.getPointOnCubicBezier(o,t,e,n[0],n[1],n[2],n[3],n[4],n[5]),a+=c.getLineLength(r.x,r.y,s.x,s.y),r=s;return a;case"Q":for(a=0,r=c.getPointOnQuadraticBezier(0,t,e,n[0],n[1],n[2],n[3]),o=.01;o<=1;o+=.01)s=c.getPointOnQuadraticBezier(o,t,e,n[0],n[1],n[2],n[3]),a+=c.getLineLength(r.x,r.y,s.x,s.y),r=s;return a;case"A":a=0;var h=n[4],l=n[5],d=n[4]+l,u=Math.PI/180;if(Math.abs(h-d)<u&&(u=Math.abs(h-d)),r=c.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],h,0),l<0)for(o=h-u;d<o;o-=u)s=c.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],o,0),a+=c.getLineLength(r.x,r.y,s.x,s.y),r=s;else for(o=h+u;o<d;o+=u)s=c.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],o,0),a+=c.getLineLength(r.x,r.y,s.x,s.y),r=s;return s=c.getPointOnEllipticalArc(n[0],n[1],n[2],n[3],d,0),a+c.getLineLength(r.x,r.y,s.x,s.y)}return 0},Kinetic.Path.convertEndpointToCenterParameterization=function(t,e,i,n,a,r,s,o,c){var h=c*(Math.PI/180),l=Math.cos(h)*(t-i)/2+Math.sin(h)*(e-n)/2,d=-1*Math.sin(h)*(t-i)/2+Math.cos(h)*(e-n)/2,u=l*l/(s*s)+d*d/(o*o);1<u&&(s*=Math.sqrt(u),o*=Math.sqrt(u));var f=Math.sqrt((s*s*o*o-s*s*d*d-o*o*l*l)/(s*s*d*d+o*o*l*l));a===r&&(f*=-1),isNaN(f)&&(f=0);var g=f*s*d/o,p=f*-o*l/s,v=(t+i)/2+Math.cos(h)*g-Math.sin(h)*p,_=(e+n)/2+Math.sin(h)*g+Math.cos(h)*p,K=function(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])},y=function(t,e){return(t[0]*e[0]+t[1]*e[1])/(K(t)*K(e))},m=function(t,e){return(t[0]*e[1]<t[1]*e[0]?-1:1)*Math.acos(y(t,e))},S=m([1,0],[(l-g)/s,(d-p)/o]),x=[(l-g)/s,(d-p)/o],C=[(-1*l-g)/s,(-1*d-p)/o],w=m(x,C);return y(x,C)<=-1&&(w=Math.PI),1<=y(x,C)&&(w=0),0===r&&0<w&&(w-=2*Math.PI),1===r&&w<0&&(w+=2*Math.PI),[v,_,s,o,S,w,h,r]},Kinetic.Factory.addGetterSetter(Kinetic.Path,"data"),Kinetic.Collection.mapMethods(Kinetic.Path),function(){function i(t){t.fillText(this.partialText,0,0)}function n(t){t.strokeText(this.partialText,0,0)}Kinetic.TextPath=function(t){this.___init(t)},Kinetic.TextPath.prototype={___init:function(t){var e=this;this.dummyCanvas=Kinetic.Util.createCanvasElement(),this.dataArray=[],Kinetic.Shape.call(this,t),this._fillFunc=i,this._strokeFunc=n,this._fillFuncHit=i,this._strokeFuncHit=n,this.className="TextPath",this.dataArray=Kinetic.Path.parsePathData(this.attrs.data),this.on("dataChange.kinetic",function(){e.dataArray=Kinetic.Path.parsePathData(this.attrs.data)}),this.on("textChange.kinetic textStroke.kinetic textStrokeWidth.kinetic",e._setTextData),e._setTextData(),this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){t.setAttr("font",this._getContextFont()),t.setAttr("textBaseline","middle"),t.setAttr("textAlign","left"),t.save();for(var e=this.glyphInfo,i=0;i<e.length;i++){t.save();var n=e[i].p0;t.translate(n.x,n.y),t.rotate(e[i].rotation),this.partialText=e[i].text,t.fillStrokeShape(this),t.restore()}t.restore()},getTextWidth:function(){return this.textWidth},getTextHeight:function(){return this.textHeight},setText:function(t){Kinetic.Text.prototype.setText.call(this,t)},_getTextSize:function(t){var e=this.dummyCanvas.getContext("2d");e.save(),e.font=this._getContextFont();var i=e.measureText(t);return e.restore(),{width:i.width,height:parseInt(this.attrs.fontSize,10)}},_setTextData:function(){var h=this,t=this._getTextSize(this.attrs.text);this.textWidth=t.width,this.textHeight=t.height,this.glyphInfo=[];for(var l,d,u,e=this.attrs.text.split(""),i=-1,f=0,g=function(){f=0;for(var t=h.dataArray,e=i+1;e<t.length;e++){if(0<t[e].pathLength)return t[i=e];"M"==t[e].command&&(l={x:t[e].points[0],y:t[e].points[1]})}return{}},n=function(t){var e=h._getTextSize(t).width,i=0,n=0;for(d=void 0;.01<Math.abs(e-i)/e&&n<25;){n++;for(var a=i;void 0===u;)(u=g())&&a+u.pathLength<e&&(a+=u.pathLength,u=void 0);if(u==={}||void 0===l)return;var r=!1;switch(u.command){case"L":Kinetic.Path.getLineLength(l.x,l.y,u.points[0],u.points[1])>e?d=Kinetic.Path.getPointOnLine(e,l.x,l.y,u.points[0],u.points[1],l.x,l.y):u=void 0;break;case"A":var s=u.points[4],o=u.points[5],c=u.points[4]+o;0===f?f=s+1e-8:i<e?f+=Math.PI/180*o/Math.abs(o):f-=Math.PI/360*o/Math.abs(o),(o<0&&f<c||0<=o&&c<f)&&(f=c,r=!0),d=Kinetic.Path.getPointOnEllipticalArc(u.points[0],u.points[1],u.points[2],u.points[3],f,u.points[6]);break;case"C":0===f?f=e>u.pathLength?1e-8:e/u.pathLength:i<e?f+=(e-i)/u.pathLength:f-=(i-e)/u.pathLength,1<f&&(f=1,r=!0),d=Kinetic.Path.getPointOnCubicBezier(f,u.start.x,u.start.y,u.points[0],u.points[1],u.points[2],u.points[3],u.points[4],u.points[5]);break;case"Q":0===f?f=e/u.pathLength:i<e?f+=(e-i)/u.pathLength:f-=(i-e)/u.pathLength,1<f&&(f=1,r=!0),d=Kinetic.Path.getPointOnQuadraticBezier(f,u.start.x,u.start.y,u.points[0],u.points[1],u.points[2],u.points[3])}void 0!==d&&(i=Kinetic.Path.getLineLength(l.x,l.y,d.x,d.y)),r&&(r=!1,u=void 0)}},a=0;a<e.length&&(n(e[a]),void 0!==l&&void 0!==d);a++){var r=Kinetic.Path.getLineLength(l.x,l.y,d.x,d.y),s=Kinetic.Path.getPointOnLine(0+r/2,l.x,l.y,d.x,d.y),o=Math.atan2(d.y-l.y,d.x-l.x);this.glyphInfo.push({transposeX:s.x,transposeY:s.y,text:e[a],rotation:o,p0:l,p1:d}),l=d}}},Kinetic.TextPath.prototype._getContextFont=Kinetic.Text.prototype._getContextFont,Kinetic.Util.extend(Kinetic.TextPath,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.TextPath,"fontFamily","Arial"),Kinetic.Factory.addGetterSetter(Kinetic.TextPath,"fontSize",12),Kinetic.Factory.addGetterSetter(Kinetic.TextPath,"fontStyle","normal"),Kinetic.Factory.addGetterSetter(Kinetic.TextPath,"fontVariant","normal"),Kinetic.Factory.addGetter(Kinetic.TextPath,"text",""),Kinetic.Collection.mapMethods(Kinetic.TextPath)}(),Kinetic.RegularPolygon=function(t){this.___init(t)},Kinetic.RegularPolygon.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="RegularPolygon",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e,i,n,a=this.attrs.sides,r=this.attrs.radius;for(t.beginPath(),t.moveTo(0,0-r),e=1;e<a;e++)i=r*Math.sin(2*e*Math.PI/a),n=-1*r*Math.cos(2*e*Math.PI/a),t.lineTo(i,n);t.closePath(),t.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.RegularPolygon,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.RegularPolygon,"radius",0),Kinetic.Factory.addGetterSetter(Kinetic.RegularPolygon,"sides",0),Kinetic.Collection.mapMethods(Kinetic.RegularPolygon),Kinetic.Star=function(t){this.___init(t)},Kinetic.Star.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Star",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e=this.innerRadius(),i=this.outerRadius(),n=this.numPoints();t.beginPath(),t.moveTo(0,0-i);for(var a=1;a<2*n;a++){var r=a%2==0?i:e,s=r*Math.sin(a*Math.PI/n),o=-1*r*Math.cos(a*Math.PI/n);t.lineTo(s,o)}t.closePath(),t.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.Star,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Star,"numPoints",5),Kinetic.Factory.addGetterSetter(Kinetic.Star,"innerRadius",0),Kinetic.Factory.addGetterSetter(Kinetic.Star,"outerRadius",0),Kinetic.Collection.mapMethods(Kinetic.Star),function(){var a=["fontFamily","fontSize","fontStyle","padding","lineHeight","text"],r=a.length;Kinetic.Label=function(t){this.____init(t)},Kinetic.Label.prototype={____init:function(t){var e=this;Kinetic.Group.call(this,t),this.className="Label",this.on("add.kinetic",function(t){e._addListeners(t.child),e._sync()})},getText:function(){return this.find("Text")[0]},getTag:function(){return this.find("Tag")[0]},_addListeners:function(t){var e,i=this,n=function(){i._sync()};for(e=0;e<r;e++)t.on(a[e]+"Change.kinetic",n)},getWidth:function(){return this.getText().getWidth()},getHeight:function(){return this.getText().getHeight()},_sync:function(){var t,e,i,n,a,r,s,o=this.getText(),c=this.getTag();if(o&&c){switch(t=o.getWidth(),e=o.getHeight(),i=c.getPointerDirection(),n=c.getPointerWidth(),s=c.getPointerHeight(),r=a=0,i){case"up":a=t/2,r=-1*s;break;case"right":a=t+n,r=e/2;break;case"down":a=t/2,r=e+s;break;case"left":a=-1*n,r=e/2}c.setAttrs({x:-1*a,y:-1*r,width:t,height:e}),o.setAttrs({x:-1*a,y:-1*r})}}},Kinetic.Util.extend(Kinetic.Label,Kinetic.Group),Kinetic.Collection.mapMethods(Kinetic.Label),Kinetic.Tag=function(t){this.___init(t)},Kinetic.Tag.prototype={___init:function(t){Kinetic.Shape.call(this,t),this.className="Tag",this.sceneFunc(this._sceneFunc)},_sceneFunc:function(t){var e=this.getWidth(),i=this.getHeight(),n=this.getPointerDirection(),a=this.getPointerWidth(),r=this.getPointerHeight(),s=this.getCornerRadius();t.beginPath(),t.moveTo(0,0),"up"===n&&(t.lineTo((e-a)/2,0),t.lineTo(e/2,-1*r),t.lineTo((e+a)/2,0)),s?(t.lineTo(e-s,0),t.arc(e-s,s,s,3*Math.PI/2,0,!1)):t.lineTo(e,0),"right"===n&&(t.lineTo(e,(i-r)/2),t.lineTo(e+a,i/2),t.lineTo(e,(i+r)/2)),s?(t.lineTo(e,i-s),t.arc(e-s,i-s,s,0,Math.PI/2,!1)):t.lineTo(e,i),"down"===n&&(t.lineTo((e+a)/2,i),t.lineTo(e/2,i+r),t.lineTo((e-a)/2,i)),s?(t.lineTo(s,i),t.arc(s,i-s,s,Math.PI/2,Math.PI,!1)):t.lineTo(0,i),"left"===n&&(t.lineTo(0,(i+r)/2),t.lineTo(-1*a,i/2),t.lineTo(0,(i-r)/2)),s&&(t.lineTo(0,s),t.arc(s,s,s,Math.PI,3*Math.PI/2,!1)),t.closePath(),t.fillStrokeShape(this)}},Kinetic.Util.extend(Kinetic.Tag,Kinetic.Shape),Kinetic.Factory.addGetterSetter(Kinetic.Tag,"pointerDirection","none"),Kinetic.Factory.addGetterSetter(Kinetic.Tag,"pointerWidth",0),Kinetic.Factory.addGetterSetter(Kinetic.Tag,"pointerHeight",0),Kinetic.Factory.addGetterSetter(Kinetic.Tag,"cornerRadius",0),Kinetic.Collection.mapMethods(Kinetic.Tag)}(),Kinetic.Arrow=function(t){this.____init(t)},Kinetic.Arrow.prototype={____init:function(t){Kinetic.Line.call(this,t),this.className="Arrow"},_sceneFunc:function(t){var e=2*Math.PI,i=this.points(),n=i.length,a=i[n-2]-i[n-4],r=i[n-1]-i[n-3],s=(Math.atan2(r,a)+e)%e,o=this.pointerLength(),c=this.pointerWidth();t.save(),t.beginPath(),t.translate(i[n-2],i[n-1]),t.rotate(s),t.moveTo(0,0),t.lineTo(-o,c/2),t.lineTo(-o,-c/2),t.closePath(),t.restore(),this.pointerAtBeginning()&&(t.save(),t.translate(i[0],i[1]),a=i[2]-i[0],r=i[3]-i[1],t.rotate((Math.atan2(-r,-a)+e)%e),t.moveTo(0,0),t.lineTo(-10,6),t.lineTo(-10,-6),t.closePath(),t.restore()),t.fillStrokeShape(this),Kinetic.Line.prototype._sceneFunc.apply(this,arguments)}},Kinetic.Util.extend(Kinetic.Arrow,Kinetic.Line),Kinetic.Factory.addGetterSetter(Kinetic.Arrow,"pointerLength",10),Kinetic.Factory.addGetterSetter(Kinetic.Arrow,"pointerWidth",10),Kinetic.Factory.addGetterSetter(Kinetic.Arrow,"pointerAtBeginning",!1),Kinetic.Collection.mapMethods(Kinetic.Arrow),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):t(jQuery)}(function(s){"use strict";function _(t){return!t.nodeName||-1!==s.inArray(t.nodeName.toLowerCase(),["iframe","#document","html","body"])}function e(t){return s.isFunction(t)||s.isPlainObject(t)?t:{top:t,left:t}}var K=s.scrollTo=function(t,e,i){return s(window).scrollTo(t,e,i)};return K.defaults={axis:"xy",duration:0,limit:!0},s.fn.scrollTo=function(t,i,p){"object"==typeof i&&(p=i,i=0),"function"==typeof p&&(p={onAfter:p}),"max"===t&&(t=9e9),p=s.extend({},K.defaults,p),i=i||p.duration;var v=p.queue&&1<p.axis.length;return v&&(i/=2),p.offset=e(p.offset),p.over=e(p.over),this.each(function(){function o(t){var e=s.extend({},p,{queue:!0,duration:i,complete:t&&function(){t.call(l,u,p)}});d.animate(f,e)}if(null!==t){var c,h=_(this),l=h?this.contentWindow||window:this,d=s(l),u=t,f={};switch(typeof u){case"number":case"string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(u)){u=e(u);break}u=h?s(u):s(u,l);case"object":if(0===u.length)return;(u.is||u.style)&&(c=(u=s(u)).offset())}var g=s.isFunction(p.offset)&&p.offset(l,u)||p.offset;s.each(p.axis.split(""),function(t,e){var i="x"===e?"Left":"Top",n=i.toLowerCase(),a="scroll"+i,r=d[a](),s=K.max(l,e);c?(f[a]=c[n]+(h?0:r-d.offset()[n]),p.margin&&(f[a]-=parseInt(u.css("margin"+i),10)||0,f[a]-=parseInt(u.css("border"+i+"Width"),10)||0),f[a]+=g[n]||0,p.over[n]&&(f[a]+=u["x"===e?"width":"height"]()*p.over[n])):(i=u[n],f[a]=i.slice&&"%"===i.slice(-1)?parseFloat(i)/100*s:i),p.limit&&/^\d+$/.test(f[a])&&(f[a]=f[a]<=0?0:Math.min(f[a],s)),!t&&1<p.axis.length&&(r===f[a]?f={}:v&&(o(p.onAfterFirst),f={}))}),o(p.onAfter)}})},K.max=function(t,e){var i="scroll"+(n="x"===e?"Width":"Height");if(!_(t))return t[i]-s(t)[n.toLowerCase()]();var n="client"+n,a=(r=t.ownerDocument||t.document).documentElement,r=r.body;return Math.max(a[i],r[i])-Math.min(a[n],r[n])},s.Tween.propHooks.scrollLeft=s.Tween.propHooks.scrollTop={get:function(t){return s(t.elem)[t.prop]()},set:function(t){var e=this.get(t);if(t.options.interrupt&&t._last&&t._last!==e)return s(t.elem).stop();var i=Math.round(t.now);e!==i&&(s(t.elem)[t.prop](i),t._last=this.get(t))}},K});
(8-8/27)