(function(){var g=Math.round,h=Math.sqrt,i=Math.floor;function a(a){return void 0===a&&(a=1),i(Math.random()*a)}function b(a){return void 0===a&&(a=1),Math.random()*a}function c(a){a=a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/gi,function(a){return a[1]+a[1]+a[2]+a[2]+a[3]+a[3]});var b=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);return null==b?null:{r:parseInt(b[1],16),g:parseInt(b[2],16),b:parseInt(b[3],16)}}function d(a,b){for(var c in b)b[c]&&b[c].constructor&&b[c].constructor===Object?(a[c]=a[c]||{},arguments.callee(a[c],b[c])):a[c]=b[c];return a}function e(a,b,c){return Math.min(Math.max(a,b),c)}function f(a,b){return-1this.particles.canvasWidth-2*this.radius?this.x-=this.radius:this.x<2*this.radius&&(this.x+=this.radius),this.y>this.particles.canvasHeight-2*this.radius?this.y-=this.radius:this.y<2*this.radius&&(this.y+=this.radius),this.particles.settings.particles.move.bounce&&this.checkOverlap(this.position),Array.isArray(f)){var m=f[i(b()*this.particles.settings.particles.color.value.length)];this.color.rgb=c(m)}else"random"==f?this.color.rgb={r:i(256*b()+0),g:i(256*b()+0),b:i(256*b()+0)}:(this.color.value=f,this.color.rgb=c(f));this.opacity=(this.particles.settings.particles.opacity.random?b():1)*this.particles.settings.particles.opacity.value,this.particles.settings.particles.opacity.anim.enable&&(this.opacityStatus=!1,this.vo=this.particles.settings.particles.opacity.anim.speed/100,!this.particles.settings.particles.opacity.anim.sync&&(this.vo*=b()));var n;switch(this.particles.settings.particles.move.direction){case"top":n={x:0,y:-1};break;case"top-right":n={x:.5,y:-.5};break;case"right":n={x:1,y:-0};break;case"bottom-right":n={x:.5,y:.5};break;case"bottom":n={x:0,y:1};break;case"bottom-left":n={x:-.5,y:1};break;case"left":n={x:-1,y:0};break;case"top-left":n={x:-.5,y:-.5};break;default:n={x:0,y:0};}this.particles.settings.particles.move.straight?(this.vx=n.x,this.vy=n.y,this.particles.settings.particles.move.parallax?(this.vx=n.x*this.radius,this.vy=n.y*this.radius):this.particles.settings.particles.move.random&&(this.vx*=b(),this.vy*=b())):this.particles.settings.particles.move.parallax?(this.vx=(n.x+a(2)-.5)*this.radius,this.vy=(n.y+a(2)-.5)*this.radius):(this.vx=n.x+b()-.5,this.vy=n.y+b()-.5),this.vxI=this.vx,this.vyI=this.vy;var o=this.particles.settings.particles.shape.type;if("string"==typeof o?this.shape=o.toString():Array.isArray(o)&&(this.shape=o[i(b()*o.length)]),"image"==this.shape){var p=this.particles.settings.particles.shape;this.img={src:p.image.src,ratio:p.image.width/p.image.height,loaded:null,obj:null},0==this.img.ratio&&(this.img.ratio=1),"svg"==this.particles.settings.particles.tmp.img_type&&null!=this.particles.settings.particles.tmp.source_svg&&(this.createSvgImg(),this.particles.settings.particles.tmp.pushing&&(this.img.loaded=!1))}else("char"==this.shape||"character"==this.shape)&&("string"==typeof this.particles.settings.particles.shape.character.value?this.character=this.particles.settings.particles.shape.character.value:Array.isArray(this.particles.settings.particles.shape.character.value)&&(this.character=this.particles.settings.particles.shape.character.value[i(b()*this.particles.settings.particles.shape.character.value.length)]))}}(),l=function(){return function(a,l){var m=this;return void 0===a&&(a="particles"),void 0===l&&(l=null),this.id=a,this.config=l,this.settings=j,this.start=function(){return m.createCanvas(),m.config&&(m.settings=d(m.settings,m.config)),m.eventsListeners(),m.begin(),m},this.retinaInit=function(){m.settings.retina_detect&&1 .particles-ts-canvas-el"),m.ctx=m.canvas.getContext("2d")},this.canvasSize=function(){m.canvas.width=m.canvasWidth,m.canvas.height=m.canvasHeight,null!=m.settings&&m.settings.interactivity.events.resize&&window.addEventListener("resize",function(){m.canvasWidth=m.canvas.offsetWidth,m.canvasHeight=m.canvas.offsetHeight,"retina"in m.settings.tmp&&m.settings.tmp.retina&&(m.canvasWidth*=m.pxratio,m.canvasHeight*=m.pxratio),m.canvas.width=m.canvasWidth,m.canvas.height=m.canvasHeight,m.settings.particles.move.enable||(m.particlesEmpty(),m.particlesCreate(),m.particlesDraw(),m.densityAutoParticles()),m.densityAutoParticles()})},this.canvasPaint=function(){m.ctx.fillRect(0,0,m.canvasWidth,m.canvasHeight)},this.canvasClear=function(){m.ctx.clearRect(0,0,m.canvasWidth,m.canvasHeight)},this.particlesCreate=function(){for(var a=0;aa.radius?1:-1})},this.particlesUpdate=function(){for(var a,c=0;c=m.settings.particles.opacity.value&&(a.opacityStatus=!1),a.opacity+=a.vo):(a.opacity<=m.settings.particles.opacity.anim.opacity_min&&(a.opacityStatus=!0),a.opacity-=a.vo),0>a.opacity&&(a.opacity=0)),m.settings.particles.size.anim.enable&&(!0==a.sizeStatus?(a.radius>=m.settings.particles.size.value&&(a.sizeStatus=!1),a.radius+=a.vs):(a.radius<=m.settings.particles.size.anim.size_min&&(a.sizeStatus=!0),a.radius-=a.vs),0>a.radius&&(a.radius=0));var e=void 0;switch(e="bounce"==m.settings.particles.move.out_mode?{x_left:a.radius,x_right:m.canvasWidth,y_top:a.radius,y_bottom:m.canvasHeight}:{x_left:-a.radius,x_right:m.canvasWidth+a.radius,y_top:-a.radius,y_bottom:m.canvasHeight+a.radius},a.x-a.radius>m.canvasWidth?(a.x=e.x_left,a.y=b()*m.canvasHeight):0>a.x+a.radius&&(a.x=e.x_right,a.y=b()*m.canvasHeight),a.y-a.radius>m.canvasHeight?(a.y=e.y_top,a.x=b()*m.canvasWidth):0>a.y+a.radius&&(a.y=e.y_bottom,a.x=b()*m.canvasWidth),m.settings.particles.move.out_mode){case"bounce":a.x+a.radius>m.canvasWidth?a.vx=-a.vx:0>a.x-a.radius&&(a.vx=-a.vx),a.y+a.radius>m.canvasHeight?a.vy=-a.vy:0>a.y-a.radius&&(a.vy=-a.vy);}if(f("grab",m.settings.interactivity.events.onhover.mode)&&m.grabParticle(a),(f("bubble",m.settings.interactivity.events.onhover.mode)||f("bubble",m.settings.interactivity.events.onclick.mode))&&m.bubbleParticle(a),(f("repulse",m.settings.interactivity.events.onhover.mode)||f("repulse",m.settings.interactivity.events.onclick.mode))&&m.repulseParticle(a),m.settings.particles.line_linked.enable||m.settings.particles.move.attract.enable||m.settings.particles.move.bounce)for(var g,h=c+1;ha.radius?1:-1})},this.removeParticles=function(a){m.settings.particles.array.splice(0,a),m.settings.particles.move.enable||m.particlesDraw()},this.bubbleParticle=function(a){var b,c,d;if(m.settings.interactivity.events.onhover.enable&&f("bubble",m.settings.interactivity.events.onhover.mode)&&"mousemove"==m.settings.interactivity.status){var e=a.x-m.settings.interactivity.mouse.pos_x,g=a.y-m.settings.interactivity.mouse.pos_y;b=h(e*e+g*g);var i=1-b/m.settings.interactivity.modes.bubble.distance,j=function(){a.opacity_bubble=a.opacity,a.radius_bubble=a.radius};if(!(b<=m.settings.interactivity.modes.bubble.distance))j();else if(0<=i&&"mousemove"==m.settings.interactivity.status){if(m.settings.interactivity.modes.bubble.size!=m.settings.particles.size.value)if(m.settings.interactivity.modes.bubble.size>m.settings.particles.size.value){var k=a.radius+m.settings.interactivity.modes.bubble.size*i;0<=k&&(a.radius_bubble=k)}else{var l=a.radius-m.settings.interactivity.modes.bubble.size,k=a.radius-l*i;a.radius_bubble=0m.settings.particles.opacity.value){var n=m.settings.interactivity.modes.bubble.opacity*i;n>a.opacity&&n<=m.settings.interactivity.modes.bubble.opacity&&(a.opacity_bubble=n)}else{var n=a.opacity-(m.settings.particles.opacity.value-m.settings.interactivity.modes.bubble.opacity)*i;n=m.settings.interactivity.modes.bubble.opacity&&(a.opacity_bubble=n)}}"mouseleave"==m.settings.interactivity.status&&j()}else if(m.settings.interactivity.events.onclick.enable&&f("bubble",m.settings.interactivity.events.onclick.mode)){if(m.settings.tmp.bubble_clicking){var o=a.x-m.settings.interactivity.mouse.click_pos_x,p=a.y-m.settings.interactivity.mouse.click_pos_y;b=h(o*o+p*p),c=(Date.now()-m.settings.interactivity.mouse.click_time)/1e3,c>m.settings.interactivity.modes.bubble.duration&&(m.settings.tmp.bubble_duration_end=!0),c>2*m.settings.interactivity.modes.bubble.duration&&(m.settings.tmp.bubble_clicking=!1,m.settings.tmp.bubble_duration_end=!1)}var q=function(b,c,d,e,f,g,h,i){if(b!=c)if(!m.settings.tmp.bubble_duration_end){if(g<=m.settings.interactivity.modes.bubble.distance){var j;if(j=null==d?e:d,j!=b){var k=e-h*(e-b)/m.settings.interactivity.modes.bubble.duration;"size"==f&&(a.radius_bubble=k),"opacity"==f&&(a.opacity_bubble=k)}}else"size"==f&&(a.radius_bubble=null),"opacity"==f&&(a.opacity_bubble=null);}else if(null!=d){var l=e-h*(e-b)/m.settings.interactivity.modes.bubble.duration;i=b+(b-l),"size"==f&&(a.radius_bubble=i),"opacity"==f&&(a.opacity_bubble=i)}};m.settings.tmp.bubble_clicking&&(q(m.settings.interactivity.modes.bubble.size,m.settings.particles.size.value,a.radius_bubble,a.radius,"size",b,c,d),q(m.settings.interactivity.modes.bubble.opacity,m.settings.particles.opacity.value,a.opacity_bubble,a.opacity,"opacity",b,c,d))}},this.repulseParticle=function(a){var b=Math.pow;if(m.settings.interactivity.events.onhover.enable&&f("repulse",m.settings.interactivity.events.onhover.mode)&&"mousemove"==m.settings.interactivity.status){var c=a.x-m.settings.interactivity.mouse.pos_x,g=a.y-m.settings.interactivity.mouse.pos_y,i=h(c*c+g*g),j={x:c/i,y:g/i},k=m.settings.interactivity.modes.repulse.distance,l=m.settings.interactivity.modes.repulse.strength,n=e(1/k*(-1*b(i/k,2)+1)*k*l,0,50),o={x:a.x+j.x*n,y:a.y+j.y*n};"bounce"==m.settings.particles.move.out_mode?(0m.canvasWidth?a.vx=-a.vx:0>f.x-a.radius&&(a.vx=-a.vx),f.y+a.radius>m.canvasHeight?a.vy=-a.vy:0>f.y-a.radius&&(a.vy=-a.vy)}};s<=p&&t()}else!1==m.settings.tmp.repulse_clicking&&(a.vx=a.vxI,a.vy=a.vyI)},this.grabParticle=function(a){if(m.settings.interactivity.events.onhover.enable&&f("grab",m.settings.interactivity.events.onhover.mode)&&"mousemove"==m.settings.interactivity.status){var b=a.x-m.settings.interactivity.mouse.pos_x,d=a.y-m.settings.interactivity.mouse.pos_y,e=h(b*b+d*d);if(e<=m.settings.interactivity.modes.grab.distance){var g=m.settings.interactivity.modes.grab.line_linked.opacity-e/(1/m.settings.interactivity.modes.grab.line_linked.opacity)/m.settings.interactivity.modes.grab.distance;if(0d?m.pushParticles(a(d)):m.removeParticles(d)}},this.destroyParticles=function(){window.cancelAnimationFrame(m.drawAnimFrame),m.canvas.remove()},this.exportImg=function(){window.open(m.canvas.toDataURL("image/png"),"_blank")},this.loadImg=function(a){if(m.settings.tmp.img_error=null,""==m.settings.particles.shape.image.src)console.log("Error Particles - No image.src"),m.settings.tmp.img_error=!0;else if("svg"==a){var b=new XMLHttpRequest;b.open("GET",m.settings.particles.shape.image.src),b.addEventListener("onreadystatechange",function(){4==b.readyState&&(200==b.status?(m.settings.tmp.source_svg=b.response,m.checkBeforeDraw()):(console.log("Error Particles - Image not found"),m.settings.tmp.img_error=!0))}),b.send()}else{var c=new Image;c.addEventListener("load",function(){m.settings.tmp.img_obj=c,m.checkBeforeDraw()}),c.src=m.settings.particles.shape.image.src}},this.everyFrame=function(){},this.draw=function(a){void 0===a&&(a=null),"image"==m.settings.particles.shape.type?"svg"==m.settings.tmp.img_type?m.settings.tmp.count_svg>=m.settings.particles.number.value?(m.particlesDraw(),m.settings.particles.move.enable?m.drawAnimFrame=window.requestAnimationFrame(m.draw):window.cancelAnimationFrame(m.drawAnimFrame)):!m.settings.tmp.img_error&&(m.drawAnimFrame=window.requestAnimationFrame(m.draw)):null==m.settings.tmp.img_obj?!m.settings.tmp.img_error&&(m.drawAnimFrame=window.requestAnimationFrame(m.draw)):(m.particlesDraw(),m.settings.particles.move.enable?m.drawAnimFrame=window.requestAnimationFrame(m.draw):window.cancelAnimationFrame(m.drawAnimFrame)):(m.particlesDraw(),m.settings.particles.move.enable?m.drawAnimFrame=window.requestAnimationFrame(m.draw):window.cancelAnimationFrame(m.drawAnimFrame)),m.everyFrame()},this.checkBeforeDraw=function(){"image"==m.settings.particles.shape.type?"svg"==m.settings.tmp.img_type&&null==m.settings.tmp.source_svg?m.settings.tmp.checkAnimFrame=window.requestAnimationFrame(m.settings.tmp.checkAnimFrame):(window.cancelAnimationFrame(m.settings.tmp.checkAnimFrame),!m.settings.tmp.img_error&&(m.init(),m.draw())):(m.init(),m.draw())},this.init=function(){m.settings.particles.line_linked.color_rgb_line=c(m.settings.particles.line_linked.color),m.settings.tmp.obj={size_value:m.settings.particles.size.value,size_anim_speed:m.settings.particles.size.anim.speed,move_speed:m.settings.particles.move.speed,line_linked_distance:m.settings.particles.line_linked.distance,line_linked_width:m.settings.particles.line_linked.width,mode_grab_distance:m.settings.interactivity.modes.grab.distance,mode_bubble_distance:m.settings.interactivity.modes.bubble.distance,mode_bubble_size:m.settings.interactivity.modes.bubble.size,mode_repulse_distance:m.settings.interactivity.modes.repulse.distance},m.retinaInit(),m.canvasSize(),m.canvasPaint(),m.particlesCreate(),m.densityAutoParticles()},this.begin=function(){f("image",m.settings.particles.shape.type)?(m.settings.tmp.img_type=m.settings.particles.shape.image.src.substring(m.settings.particles.shape.image.src.length-3),m.loadImg(m.settings.tmp.img_type)):m.checkBeforeDraw()},this}}();window.Particles=l})();