Automatically save\n values to localStorage
on exit.\n\n
The values saved to localStorage
will\n override those passed to dat.GUI
\'s constructor. This makes it\n easier to work incrementally, but localStorage
is fragile,\n and your friends may not see the same values you do.\n \n
\n \n \n\n',0,wt.controllers.factory=function(e,t,i,n,s,o,a){return function(r,l){var c=r[l];return a.isArray(arguments[2])||a.isObject(arguments[2])?new e(r,l,arguments[2]):a.isNumber(c)?a.isNumber(arguments[2])&&a.isNumber(arguments[3])?new i(r,l,arguments[2],arguments[3]):new t(r,l,{min:arguments[2],max:arguments[3]}):a.isString(c)?new n(r,l):a.isFunction(c)?new s(r,l,""):a.isBoolean(c)?new o(r,l):void 0}}(wt.controllers.OptionController,wt.controllers.NumberControllerBox,wt.controllers.NumberControllerSlider,wt.controllers.StringController=function(e,t,i){var n=function(e,i){n.superclass.call(this,e,i);var s=this;function o(){s.setValue(s.__input.value)}this.__input=document.createElement("input"),this.__input.setAttribute("type","text"),t.bind(this.__input,"keyup",o),t.bind(this.__input,"change",o),t.bind(this.__input,"blur",(function(){s.__onFinishChange&&s.__onFinishChange.call(s,s.getValue())})),t.bind(this.__input,"keydown",(function(e){13===e.keyCode&&this.blur()})),this.updateDisplay(),this.domElement.appendChild(this.__input)};return n.superclass=e,i.extend(n.prototype,e.prototype,{updateDisplay:function(){return t.isActive(this.__input)||(this.__input.value=this.getValue()),n.superclass.prototype.updateDisplay.call(this)}}),n}(wt.controllers.Controller,wt.dom.dom,wt.utils.common),wt.controllers.FunctionController,wt.controllers.BooleanController,wt.utils.common),wt.controllers.Controller,wt.controllers.BooleanController,wt.controllers.FunctionController,wt.controllers.NumberControllerBox,wt.controllers.NumberControllerSlider,wt.controllers.OptionController,wt.controllers.ColorController=function(e,t,i,n,s){var o=function(e,a){o.superclass.call(this,e,a),this.__color=new i(this.getValue()),this.__temp=new i(0);var l=this;this.domElement=document.createElement("div"),t.makeSelectable(this.domElement,!1),this.__selector=document.createElement("div"),this.__selector.className="selector",this.__saturation_field=document.createElement("div"),this.__saturation_field.className="saturation-field",this.__field_knob=document.createElement("div"),this.__field_knob.className="field-knob",this.__field_knob_border="2px solid ",this.__hue_knob=document.createElement("div"),this.__hue_knob.className="hue-knob",this.__hue_field=document.createElement("div"),this.__hue_field.className="hue-field",this.__input=document.createElement("input"),this.__input.type="text",this.__input_textShadow="0 1px 1px ",t.bind(this.__input,"keydown",(function(e){13===e.keyCode&&m.call(this)})),t.bind(this.__input,"blur",m),t.bind(this.__selector,"mousedown",(function(e){t.addClass(this,"drag").bind(window,"mouseup",(function(e){t.removeClass(l.__selector,"drag")}))}));var c,h=document.createElement("div");function d(e){f(e),t.bind(window,"mousemove",f),t.bind(window,"mouseup",u)}function u(){t.unbind(window,"mousemove",f),t.unbind(window,"mouseup",u)}function m(){var e=n(this.value);!1!==e?(l.__color.__state=e,l.setValue(l.__color.toOriginal())):this.value=l.__color.toString()}function p(){t.unbind(window,"mousemove",v),t.unbind(window,"mouseup",p)}function f(e){e.preventDefault();var i=t.getWidth(l.__saturation_field),n=t.getOffset(l.__saturation_field),s=(e.clientX-n.left+document.body.scrollLeft)/i,o=1-(e.clientY-n.top+document.body.scrollTop)/i;return o>1?o=1:o<0&&(o=0),s>1?s=1:s<0&&(s=0),l.__color.v=o,l.__color.s=s,l.setValue(l.__color.toOriginal()),!1}function v(e){e.preventDefault();var i=t.getHeight(l.__hue_field),n=t.getOffset(l.__hue_field),s=1-(e.clientY-n.top+document.body.scrollTop)/i;return s>1?s=1:s<0&&(s=0),l.__color.h=360*s,l.setValue(l.__color.toOriginal()),!1}s.extend(this.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),s.extend(this.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:this.__field_knob_border+(this.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),s.extend(this.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),s.extend(this.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),s.extend(h.style,{width:"100%",height:"100%",background:"none"}),r(h,"top","rgba(0,0,0,0)","#000"),s.extend(this.__hue_field.style,{width:"15px",height:"100px",display:"inline-block",border:"1px solid #555",cursor:"ns-resize"}),(c=this.__hue_field).style.background="",c.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",c.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",c.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",c.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",c.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",s.extend(this.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:this.__input_textShadow+"rgba(0,0,0,0.7)"}),t.bind(this.__saturation_field,"mousedown",d),t.bind(this.__field_knob,"mousedown",d),t.bind(this.__hue_field,"mousedown",(function(e){v(e),t.bind(window,"mousemove",v),t.bind(window,"mouseup",p)})),this.__saturation_field.appendChild(h),this.__selector.appendChild(this.__field_knob),this.__selector.appendChild(this.__saturation_field),this.__selector.appendChild(this.__hue_field),this.__hue_field.appendChild(this.__hue_knob),this.domElement.appendChild(this.__input),this.domElement.appendChild(this.__selector),this.updateDisplay()};o.superclass=e,s.extend(o.prototype,e.prototype,{updateDisplay:function(){var e=n(this.getValue());if(!1!==e){var t=!1;s.each(i.COMPONENTS,(function(i){if(!s.isUndefined(e[i])&&!s.isUndefined(this.__color.__state[i])&&e[i]!==this.__color.__state[i])return t=!0,{}}),this),t&&s.extend(this.__color.__state,e)}s.extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var o=this.__color.v<.5||this.__color.s>.5?255:0,a=255-o;s.extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toString(),border:this.__field_knob_border+"rgb("+o+","+o+","+o+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,r(this.__saturation_field,"left","#fff",this.__temp.toString()),s.extend(this.__input.style,{backgroundColor:this.__input.value=this.__color.toString(),color:"rgb("+o+","+o+","+o+")",textShadow:this.__input_textShadow+"rgba("+a+","+a+","+a+",.7)"})}});var a=["-moz-","-o-","-webkit-","-ms-",""];function r(e,t,i,n){e.style.background="",s.each(a,(function(s){e.style.cssText+="background: "+s+"linear-gradient("+t+", "+i+" 0%, "+n+" 100%); "}))}return o}(wt.controllers.Controller,wt.dom.dom,wt.color.Color=function(e,t,i,n){var s=function(){if(this.__state=e.apply(this,arguments),!1===this.__state)throw"Failed to interpret color arguments";this.__state.a=this.__state.a||1};function o(e,t,i){Object.defineProperty(e,t,{get:function(){return"RGB"===this.__state.space||r(this,t,i),this.__state[t]},set:function(e){"RGB"!==this.__state.space&&(r(this,t,i),this.__state.space="RGB"),this.__state[t]=e}})}function a(e,t){Object.defineProperty(e,t,{get:function(){return"HSV"===this.__state.space||l(this),this.__state[t]},set:function(e){"HSV"!==this.__state.space&&(l(this),this.__state.space="HSV"),this.__state[t]=e}})}function r(e,i,s){if("HEX"===e.__state.space)e.__state[i]=t.component_from_hex(e.__state.hex,s);else{if("HSV"!==e.__state.space)throw"Corrupted color state";n.extend(e.__state,t.hsv_to_rgb(e.__state.h,e.__state.s,e.__state.v))}}function l(e){var i=t.rgb_to_hsv(e.r,e.g,e.b);n.extend(e.__state,{s:i.s,v:i.v}),n.isNaN(i.h)?n.isUndefined(e.__state.h)&&(e.__state.h=0):e.__state.h=i.h}return s.COMPONENTS=["r","g","b","h","s","v","hex","a"],n.extend(s.prototype,{toString:function(){return i(this)},toOriginal:function(){return this.__state.conversion.write(this)}}),o(s.prototype,"r",2),o(s.prototype,"g",1),o(s.prototype,"b",0),a(s.prototype,"h"),a(s.prototype,"s"),a(s.prototype,"v"),Object.defineProperty(s.prototype,"a",{get:function(){return this.__state.a},set:function(e){this.__state.a=e}}),Object.defineProperty(s.prototype,"hex",{get:function(){return"HEX"!==!this.__state.space&&(this.__state.hex=t.rgb_to_hex(this.r,this.g,this.b)),this.__state.hex},set:function(e){this.__state.space="HEX",this.__state.hex=e}}),s}(wt.color.interpret,wt.color.math={hsv_to_rgb:function(e,t,i){var n=Math.floor(e/60)%6,s=e/60-Math.floor(e/60),o=i*(1-t),a=i*(1-s*t),r=i*(1-(1-s)*t),l=[[i,r,o],[a,i,o],[o,i,r],[o,a,i],[r,o,i],[i,o,a]][n];return{r:255*l[0],g:255*l[1],b:255*l[2]}},rgb_to_hsv:function(e,t,i){var n,s=Math.min(e,t,i),o=Math.max(e,t,i),a=o-s;return 0==o?{h:NaN,s:0,v:0}:(n=e==o?(t-i)/a:t==o?2+(i-e)/a:4+(e-t)/a,(n/=6)<0&&(n+=1),{h:360*n,s:a/o,v:o/255})},rgb_to_hex:function(e,t,i){var n=this.hex_with_component(0,2,e);return n=this.hex_with_component(n,1,t),n=this.hex_with_component(n,0,i)},component_from_hex:function(e,t){return e>>8*t&255},hex_with_component:function(e,t,i){return i<<(yt=8*t)|e&~(255<=0;n--)i=[e[n].apply(this,i)];return i[0]}},each:function(t,i,n){if(e&&t.forEach===e)t.forEach(i,n);else if(t.length===t.length+0){for(var s=0,o=t.length;s1?t.toArray(arguments):arguments[0];return t.each(s,(function(s){if(s.litmus(e))return t.each(s.conversions,(function(s,o){if(i=s.read(e),!1===n&&!1!==i)return n=i,i.conversionName=o,i.conversion=s,t.BREAK})),t.BREAK})),n}}(At.color.toString,At.utils.common),At.color.math=function(){var e;return{hsv_to_rgb:function(e,t,i){var n=Math.floor(e/60)%6,s=e/60-Math.floor(e/60),o=i*(1-t),a=i*(1-s*t),r=i*(1-(1-s)*t),l=[[i,r,o],[a,i,o],[o,i,r],[o,a,i],[r,o,i],[i,o,a]][n];return{r:255*l[0],g:255*l[1],b:255*l[2]}},rgb_to_hsv:function(e,t,i){var n,s=Math.min(e,t,i),o=Math.max(e,t,i),a=o-s;return 0==o?{h:NaN,s:0,v:0}:(n=e==o?(t-i)/a:t==o?2+(i-e)/a:4+(e-t)/a,(n/=6)<0&&(n+=1),{h:360*n,s:a/o,v:o/255})},rgb_to_hex:function(e,t,i){var n=this.hex_with_component(0,2,e);return n=this.hex_with_component(n,1,t),n=this.hex_with_component(n,0,i)},component_from_hex:function(e,t){return e>>8*t&255},hex_with_component:function(t,i,n){return n<<(e=8*i)|t&~(255< end && e.g > 0.8281 && e.r == 0.0 ) ) break;\n }\n\n // We correct the previous (-0.25, -0.125) offset we applied:\n texcoord.x += 0.25 * SMAAResolution.x;\n\n // The searches are bias by 1, so adjust the coords accordingly:\n texcoord.x += SMAAResolution.x;\n\n // Disambiguate the length added by the last step:\n texcoord.x += 2.0 * SMAAResolution.x; // Undo last step\n texcoord.x -= SMAAResolution.x * SMAASearchLength(searchTex, e, 0.0, 0.5);\n\n return texcoord.x;\n}\n\nfloat SMAASearchXRight( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {\n vec2 e = vec2( 0.0, 1.0 );\n\n for ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for\n e = texture2D( edgesTex, texcoord, 0.0 ).rg;\n texcoord += vec2( 2.0, 0.0 ) * SMAAResolution;\n if ( ! ( texcoord.x < end && e.g > 0.8281 && e.r == 0.0 ) ) break;\n }\n\n texcoord.x -= 0.25 * SMAAResolution.x;\n texcoord.x -= SMAAResolution.x;\n texcoord.x -= 2.0 * SMAAResolution.x;\n texcoord.x += SMAAResolution.x * SMAASearchLength( searchTex, e, 0.5, 0.5 );\n\n return texcoord.x;\n}\n\nfloat SMAASearchYUp( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {\n vec2 e = vec2( 1.0, 0.0 );\n\n for ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for\n e = texture2D( edgesTex, texcoord, 0.0 ).rg;\n texcoord += vec2( 0.0, 2.0 ) * SMAAResolution; // WebGL port note: Changed sign\n if ( ! ( texcoord.y > end && e.r > 0.8281 && e.g == 0.0 ) ) break;\n }\n\n texcoord.y -= 0.25 * SMAAResolution.y; // WebGL port note: Changed sign\n texcoord.y -= SMAAResolution.y; // WebGL port note: Changed sign\n texcoord.y -= 2.0 * SMAAResolution.y; // WebGL port note: Changed sign\n texcoord.y += SMAAResolution.y * SMAASearchLength( searchTex, e.gr, 0.0, 0.5 ); // WebGL port note: Changed sign\n\n return texcoord.y;\n}\n\nfloat SMAASearchYDown( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {\n vec2 e = vec2( 1.0, 0.0 );\n\n for ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for\n e = texture2D( edgesTex, texcoord, 0.0 ).rg;\n texcoord -= vec2( 0.0, 2.0 ) * SMAAResolution; // WebGL port note: Changed sign\n if ( ! ( texcoord.y < end && e.r > 0.8281 && e.g == 0.0 ) ) break;\n }\n\n texcoord.y += 0.25 * SMAAResolution.y; // WebGL port note: Changed sign\n texcoord.y += SMAAResolution.y; // WebGL port note: Changed sign\n texcoord.y += 2.0 * SMAAResolution.y; // WebGL port note: Changed sign\n texcoord.y -= SMAAResolution.y * SMAASearchLength( searchTex, e.gr, 0.5, 0.5 ); // WebGL port note: Changed sign\n\n return texcoord.y;\n}\n\nvec2 SMAAArea( sampler2D areaTex, vec2 dist, float e1, float e2, float offset ) {\n // Rounding prevents precision errors of bilinear filtering:\n vec2 texcoord = float( SMAA_AREATEX_MAX_DISTANCE ) * round( 4.0 * vec2( e1, e2 ) ) + dist;\n\n // We do a scale and bias for mapping to texel space:\n texcoord = SMAA_AREATEX_PIXEL_SIZE * texcoord + ( 0.5 * SMAA_AREATEX_PIXEL_SIZE );\n\n // Move to proper place, according to the subpixel offset:\n texcoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset;\n\n return texture2D( areaTex, texcoord, 0.0 ).rg;\n}\n\nvec4 SMAABlendingWeightCalculationPS( vec2 texcoord, vec2 pixcoord, vec4 offset[ 3 ], sampler2D edgesTex, sampler2D areaTex, sampler2D searchTex, ivec4 subsampleIndices ) {\n vec4 weights = vec4( 0.0, 0.0, 0.0, 0.0 );\n\n vec2 e = texture2D( edgesTex, texcoord ).rg;\n\n if ( e.g > 0.0 ) { // Edge at north\n vec2 d;\n\n // Find the distance to the left:\n vec2 coords;\n coords.x = SMAASearchXLeft( edgesTex, searchTex, offset[ 0 ].xy, offset[ 2 ].x );\n coords.y = offset[ 1 ].y; // offset[1].y = texcoord.y - 0.25 * SMAAResolution.y (@CROSSING_OFFSET)\n d.x = coords.x;\n\n // Now fetch the left crossing edges, two at a time using bilinear\n // filtering. Sampling at -0.25 (see @CROSSING_OFFSET) enables to\n // discern what value each edge has:\n float e1 = texture2D( edgesTex, coords, 0.0 ).r;\n\n // Find the distance to the right:\n coords.x = SMAASearchXRight( edgesTex, searchTex, offset[ 0 ].zw, offset[ 2 ].y );\n d.y = coords.x;\n\n // We want the distances to be in pixel units (doing this here allow to\n // better interleave arithmetic and memory accesses):\n d = d / SMAAResolution.x - pixcoord.x;\n\n // SMAAArea below needs a sqrt, as the areas texture is compressed\n // quadratically:\n vec2 sqrt_d = sqrt( abs( d ) );\n\n // Fetch the right crossing edges:\n coords.y -= 1.0 * SMAAResolution.y; // WebGL port note: Added\n float e2 = SMAASampleLevelZeroOffset( edgesTex, coords, ivec2( 1, 0 ) ).r;\n\n // Ok, we know how this pattern looks like, now it is time for getting\n // the actual area:\n weights.rg = SMAAArea( areaTex, sqrt_d, e1, e2, float( subsampleIndices.y ) );\n }\n\n if ( e.r > 0.0 ) { // Edge at west\n vec2 d;\n\n // Find the distance to the top:\n vec2 coords;\n\n coords.y = SMAASearchYUp( edgesTex, searchTex, offset[ 1 ].xy, offset[ 2 ].z );\n coords.x = offset[ 0 ].x; // offset[1].x = texcoord.x - 0.25 * SMAAResolution.x;\n d.x = coords.y;\n\n // Fetch the top crossing edges:\n float e1 = texture2D( edgesTex, coords, 0.0 ).g;\n\n // Find the distance to the bottom:\n coords.y = SMAASearchYDown( edgesTex, searchTex, offset[ 1 ].zw, offset[ 2 ].w );\n d.y = coords.y;\n\n // We want the distances to be in pixel units:\n d = d / SMAAResolution.y - pixcoord.y;\n\n // SMAAArea below needs a sqrt, as the areas texture is compressed\n // quadratically:\n vec2 sqrt_d = sqrt( abs( d ) );\n\n // Fetch the bottom crossing edges:\n coords.y -= 1.0 * SMAAResolution.y; // WebGL port note: Added\n float e2 = SMAASampleLevelZeroOffset( edgesTex, coords, ivec2( 0, 1 ) ).g;\n\n // Get the area for this direction:\n weights.ba = SMAAArea( areaTex, sqrt_d, e1, e2, float( subsampleIndices.x ) );\n }\n\n return weights;\n}\n\nvec4 SMAANeighborhoodBlendingPS( vec2 texcoord, vec4 offset[ 3 ], sampler2D colorTex, sampler2D blendTex ) {\n // Fetch the blending weights for current pixel:\n vec4 a;\n a.xz = texture2D( blendTex, texcoord ).xz;\n a.y = texture2D( blendTex, offset[ 1 ].zw ).g;\n a.w = texture2D( blendTex, offset[ 1 ].xy ).a;\n\n // Is there any blending weight with a value greater than 0.0?\n if ( dot(a, vec4( 1.0, 1.0, 1.0, 1.0 )) < 1e-5 ) {\n return texture2D( colorTex, texcoord );\n } else {\n // Up to 4 lines can be crossing a pixel (one through each edge). We\n // favor blending by choosing the line with the maximum weight for each\n // direction:\n vec2 offset;\n offset.x = a.a > a.b ? a.a : -a.b; // left vs. right\n offset.y = a.g > a.r ? -a.g : a.r; // top vs. bottom // WebGL port note: Changed signs\n\n // Then we go in the direction that has the maximum weight:\n if ( abs( offset.x ) > abs( offset.y )) { // horizontal vs. vertical\n offset.y = 0.0;\n } else {\n offset.x = 0.0;\n }\n\n // Fetch the opposite color and lerp by hand:\n vec4 C = texture2D( colorTex, texcoord ).rgba;\n texcoord += sign( offset ) * SMAAResolution;\n vec4 Cop = texture2D( colorTex, texcoord ).rgba;\n float s = abs( offset.x ) > abs( offset.y ) ? abs( offset.x ) : abs( offset.y );\n\n // WebGL port note: Added gamma correction\n C.xyz = pow(C.xyz, vec3(2.2));\n Cop.xyz = pow(Cop.xyz, vec3(2.2));\n vec4 mixed = mix(C, Cop, s);\n mixed.xyz = pow(mixed.xyz, vec3(1.0 / 2.2));\n return mixed;\n\n }\n}\n\nvoid main() {\n //EDGE DETECTION PASS\n if (SMAAPass == 0) {\n gl_FragColor = SMAAColorEdgeDetectionPS( vUv, vOffset, tSMAAInput );\n }\n else if (SMAAPass == 1) {\n gl_FragColor = SMAABlendingWeightCalculationPS( vUv, vPixcoord, vOffset, tSMAAInput, tSMAAArea, tSMAASearch, ivec4( 0.0 ) );\n }\n else if (SMAAPass == 2) {\n gl_FragColor.rgba = SMAANeighborhoodBlendingPS( vUv, vOffset, tSMAAColor, tSMAAInput );\n // gl_FragColor.a = 1.;//texture2D(tSMAAColor, vUv).a;\n }\n}"}),this.material.id="SMAAMaterial",this.smaaSearchTexture=Le.fromUrl(this.renderer.gl,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAhCAAAAABIXyLAAAAAOElEQVRIx2NgGAWjYBSMglEwEICREYRgFBZBqDCSLA2MGPUIVQETE9iNUAqLR5gIeoQKRgwXjwAAGn4AtaFeYLEAAAAASUVORK5CYII=",{linear:!1,flipY:!1,format:this.renderer.gl.RGB}),this.smaaAreaTexture=Le.fromUrl(this.renderer.gl,"data:image/png;base64,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",{linear:!0,flipY:!1,format:this.renderer.gl.RGBA}),this.smaaEdgeRT=new tt(this.renderer.gl,{width:1,height:1,type:e.gl.FLOAT}),this.smaaWeightRT=new tt(this.renderer.gl,{width:1,height:1,type:e.gl.FLOAT})}resize(e,t){this.smaaEdgeRT.resize(e,t),this.smaaWeightRT.resize(e,t),this.material.uniforms.SMAAResolution.value=[1/e,1/t]}render(e,t,i,n){this.renderer.clearColor(0,0,0,0),this.renderer.clear(),this.material.uniforms.uKeepAlpha&&(this.material.uniforms.uKeepAlpha.value=this.options.keepAlpha?1:0),this.material.uniforms.SMAAPass.value=0,this.material.uniforms.tSMAAInput.value=i,this.material.uniforms.tSMAAColor.value=i,this.material.uniforms.tSMAASearch.value=this.smaaSearchTexture,this.material.uniforms.tSMAAArea.value=this.smaaAreaTexture,this.material.uniforms.uSMAAThreshold.value=Tt.uSMAAThreshold,this.renderer.render(e,t,this.smaaEdgeRT),this.material.uniforms.SMAAPass.value=1,this.material.uniforms.tSMAAInput.value=this.smaaEdgeRT,this.renderer.render(e,t,this.smaaWeightRT),this.material.uniforms.SMAAPass.value=2,this.material.uniforms.tSMAAInput.value=this.smaaWeightRT,this.material.uniforms.tSMAAColor.value=i,this.renderer.render(e,t,n)}}function _t(e,t,i){void 0!==e[t]&&(e[t].value=i)}class Mt extends We{constructor(e,t){super(),t=Object.assign({},{lineRotationStep:Tt.uSpiralLineRotationStep,minScale:Tt.uSpiralMinScale,maxScale:Tt.uSpiralMaxScale,autoRotate:!0,randomize:!1,useMask:!1,alpha:1,verticalOffset:0},t),this.options=t,this.autoRotation=0,this.flatten=0,this.verticalOffset=t.verticalOffset,this.lineRotationStep=t.lineRotationStep,this.autoRotate=t.autoRotate,this.randomize=t.randomize,this.useMask=t.useMask,this.minScale=t.minScale,this.maxScale=t.maxScale,this.progress=0,this.progressMax=0,this.alpha=t.alpha;let i=Tt.spiralBufferSize[0]*Tt.spiralBufferSize[1],n=[],s=[],o=[],a=[],r=[],l=[];for(let e=0;e= 2. ? -1. : 1.;\n float yOffset = float(vertexIndex) == 0. || float(vertexIndex) == 2. ? -1. : 1.;\n float zOffset = (float(partIndex) == 0. || float(partIndex) == 2. || float(partIndex) == 4. ? -1. : 1.) ;\n\n mat3 rot;\n vec3 modifiedPosition;\n vec3 N;\n\n // rotation of the spiral\n float t2 = min(1., max(0., uIntroProgress));\n\n // easing\n t2 = t2 == 1.0 ? t2 : 1.0 - pow(2.0, -10.0 * t2);\n\n // \n if (useMask != 1) {\n t2 = 1.;\n }\n\n // spiral rotation\n float t = (uAutoRotate + t2 * 3.14 * -2.) * -1.;\n\n // random length of bar is their index is bellow uSpiralProgress and that "randomize" mode is enabled\n // use for the phone screen (step 2) on homeB\n float randOffset = 1.;\n bool isRandom = false;\n if (uRandomize == 1 && float(lineIndex) <= uSpiralProgress+.5 ) {\n randOffset = (0.75+0.25*rand);\n isRandom = true;\n }\n\n float introZ = t2;\n float introScale = lineIndex < ((t2*1.) * 165.) ? 1. : 0.;\n\n /* Each bars are made of 6 quads */\n if (partIndex < 2.) {\n rot = rotateY( t - (float(lineIndex) * uSpiralLineRotationStep) );\n float fr = (xOffset == 1. && isRandom ? (1. - uFlatten) * randOffset : randOffset);\n float flattenOffset = (xOffset == 1. && isRandom) ? (uFlatten * 0.07) : 0.;\n modifiedPosition = vec3(\n introScale * (xOffset * (uSpiralMinScale + float(lineIndex)/numLines * (uSpiralMaxScale - uSpiralMinScale) * fr + flattenOffset )), \n yOffset * uSpiralLineThickness + (float(lineIndex-uVerticalOffset) * (uSpiralLineThickness*2.+uSpiralLineSpacing)) ,\n zOffset * uSpiralLineThickness \n );\n N = vec3(0., 0., partIndex == 0. ? -1. : 1.) * rot;\n modifiedPosition = (rot * modifiedPosition).xyz;\n }\n else if (partIndex < 4.) {\n rot = rotateY( 3.14/2. + t - (float(lineIndex) * uSpiralLineRotationStep) );\n float fr = (zOffset == 1. && isRandom ? (1. - uFlatten) * randOffset : randOffset);\n float flattenOffset = (zOffset == 1. && isRandom) ? (uFlatten * 0.07) : 0.;\n modifiedPosition = vec3(\n xOffset * uSpiralLineThickness, \n yOffset * uSpiralLineThickness + (float(lineIndex-uVerticalOffset) * (uSpiralLineThickness*2.+uSpiralLineSpacing)),\n introScale * (zOffset * (uSpiralMinScale + float(lineIndex)/numLines * (uSpiralMaxScale - uSpiralMinScale) * fr + flattenOffset ))\n );\n N = vec3(0., 0., partIndex == 2. ? -1. : 1.) * rot;\n modifiedPosition = (rot * modifiedPosition).xyz;\n }\n else {\n float fr = (xOffset == 1. && isRandom ? (1. - uFlatten) * randOffset : randOffset);\n float flattenOffset = (xOffset == 1. && isRandom) ? (uFlatten * 0.07) : 0.;\n modifiedPosition = vec3(\n introScale * (xOffset * (uSpiralMinScale + float(lineIndex)/numLines * (uSpiralMaxScale - uSpiralMinScale) * fr + flattenOffset )), \n yOffset * uSpiralLineThickness,\n zOffset * uSpiralLineThickness \n );\n rot = rotateX( 3.14/-2. );\n modifiedPosition = (rot * modifiedPosition).xyz;\n N = vec3(0., 0., partIndex == 4. ? 1. : -1.) * rot;\n modifiedPosition.y += (float(lineIndex-uVerticalOffset) * (uSpiralLineThickness*2.+uSpiralLineSpacing));\n \n rot = rotateY( t - (float(lineIndex) * uSpiralLineRotationStep) );\n modifiedPosition = (rot * modifiedPosition).xyz;\n }\n\n // slight unzoom effect on intro\n modifiedPosition *= introScale;\n\n N = normalize((uNormalMatrix * vec4(N, 1.0)).xyz);\n\n vPos = (uMMatrix * vec4(modifiedPosition, 1.0)).xyz;\n \n // make bar white if their index is under the uSpiralProgress value\n vColor = float(lineIndex) > uSpiralProgress-.5 && float(lineIndex) <= uSpiralProgress+.5 ? vec3(103., 222., 229.) / 255. : vec3(1.);\n\n vec3 V = normalize(uCameraPosition - vPos);\n float shade = max(0.,( dot( N, V )) );\n\n //fake alpha\n float a = float(lineIndex) <= uSpiralProgress+.5 ? 1. : 0.5 * max(0., 1. - float(lineIndex-uSpiralProgress) / (uSpiralProgressMax));\n\n vColor = mix(uBackgroundColor, vColor, min(1., max(0., a * shade * t2)) );\n\n vAlpha = 1.;\n\n gl_Position = uPMatrix * uMVMatrix * vec4( modifiedPosition, 1.0);\n\n // Screen space mask offset for mobile \n gl_Position.y += ((uMaskOffsetY*uDevicePixelRatio)/(uResolution.y) * 2.) * gl_Position.w;\n\n}',fragmentShader:"precision highp float;\nprecision highp int;\n\nvarying vec2 vUv;\nvarying vec3 vPos;\nvarying float vLineIndex;\nvarying vec3 vColor;\nvarying float vSegmentIndex;\nvarying vec2 vScreenPos;\nvarying float vVertexIndex;\nvarying float vAlpha;\nuniform vec2 uParticleResolution;\nuniform sampler2D tPosition;\nuniform sampler2D oPosition;\nuniform vec2 uResolution;\nuniform float uSegments;\nuniform float uDepthPass;\nuniform float uNear;\nuniform float uFar;\nuniform float uMode;\nuniform vec3 uFogColor;\nuniform float uLineGlobalAlpha;\nuniform vec3 cameraPosition;\n\nvarying float vVelocity;\nuniform float uAlpha;\nuniform float uDevicePixelRatio;\nuniform int uXray;\n\n\nuniform int useMask;\nuniform vec2 uMaskSize;\nuniform float uMaskScale;\nuniform float uMaskOffsetY;\n// from https://iquilezles.org/articles/distfunctions\nfloat roundedBoxSDF(vec2 CenterPosition, vec2 Size, float Radius) {\n return length(max(abs(CenterPosition)-Size+Radius,0.0))-Radius;\n}\n\nvoid main(void) {\n\n float a = vAlpha;\n vec3 c = vColor;\n \n if (a * uAlpha < 0.001) {\n discard;\n }\n\n // clamp to reduce bloom effect for homeB (phone screen step)\n if (uXray == 1) {\n c = min( c, vec3(1.) );\n }\n\n gl_FragColor = vec4( c, a * uAlpha );\n\n // Screen space mask\n if (useMask == 1) {\n float borderThinckness = 2. * uDevicePixelRatio * uMaskScale;\n float radius = 26. * uDevicePixelRatio * uMaskScale;\n\n float phoneWidth = uMaskSize.x * uDevicePixelRatio * uMaskScale - borderThinckness*2.;\n float phoneHeight = uMaskSize.y * uDevicePixelRatio * uMaskScale - borderThinckness*2.;\n vec2 center = uResolution / 2.;\n center.y += uMaskOffsetY * -1. * uDevicePixelRatio;\n vec2 size = vec2( phoneWidth, phoneHeight );\n float d = roundedBoxSDF(gl_FragCoord.xy - vec2(center.x, uResolution.y-center.y), size/2.0, radius);\n float edgeSoftness = 1.0;\n float smoothedAlpha = 1.0 - smoothstep(0.0, edgeSoftness * 2.0, d);\n gl_FragColor.a = smoothedAlpha;\n if (gl_FragColor.a < 0.001) {\n discard;\n }\n }\n\n}",depthTest:!0,blend:!0}),this.position=[0,0,0]}reset(){}updateUniforms(e){_t(this.material.uniforms,"uTime",e),_t(this.material.uniforms,"uSpiralResolution",Tt.spiralBufferSize),_t(this.material.uniforms,"uSpiralSegments",Tt.uSpiralSegments),_t(this.material.uniforms,"uSpiralLineThickness",Tt.uSpiralLineThickness),_t(this.material.uniforms,"uSpiralLineSpacing",Tt.uSpiralLineSpacing),_t(this.material.uniforms,"uSpiralLineRotationStep",this.lineRotationStep),_t(this.material.uniforms,"uSpiralMaxScale",this.maxScale),_t(this.material.uniforms,"uSpiralMinScale",this.minScale),_t(this.material.uniforms,"uSpiralRotationSpeed",Tt.uSpiralRotationSpeed),_t(this.material.uniforms,"uSpiralProgress",this.progress),_t(this.material.uniforms,"uSpiralProgressMax",this.progressMax),_t(this.material.uniforms,"uAutoRotate",this.autoRotation),_t(this.material.uniforms,"useMask",this.useMask?1:0),_t(this.material.uniforms,"uAlpha",this.alpha),_t(this.material.uniforms,"uRandomize",this.randomize?1:0),_t(this.material.uniforms,"uFlatten",this.flatten),_t(this.material.uniforms,"uVerticalOffset",this.verticalOffset),this.autoRotate?this.autoRotation-=.01:this.autoRotation+=.07*(0-this.autoRotation),this.autoRotation=this.autoRotation%(2*Math.PI)}}var Ft=[2.205385,-1.616847,-2.916147,2.052115,-1.616847,-2.916147,1.898845,-1.616847,-2.916147,1.745575,-1.616847,-2.916147,1.592304,-1.616847,-2.916147,1.439034,-1.616847,-2.916147,1.285764,-1.616847,-2.916147,1.132494,-1.616847,-2.916147,.979224,-1.616847,-2.916147,.825954,-1.616847,-2.916147,.672683,-1.616847,-2.916147,.519413,-1.616847,-2.916147,.366143,-1.616847,-2.916147,.212873,-1.616847,-2.916147,.059603,-1.616847,-2.916147,-.093667,-1.616847,-2.916147,-.246938,-1.616847,-2.916147,-.400208,-1.616847,-2.916147,-.553478,-1.616847,-2.916147,-.706748,-1.616847,-2.916147,-.860018,-1.616845,-2.916147,-1.013289,-1.616822,-2.916139,-1.166559,-1.616653,-2.916084,-1.319827,-1.616016,-2.915876,-1.473089,-1.614515,-2.915386,-1.626335,-1.611912,-2.914536,-1.779553,-1.608128,-2.913306,-1.932729,-1.603,-2.911669,-2.085807,-1.595681,-2.909429,-2.238604,-1.584149,-2.906094,-2.390732,-1.566189,-2.901147,-2.541773,-1.541047,-2.894455,-2.691392,-1.508867,-2.886146,-2.839097,-1.46918,-2.876251,-2.984119,-1.420967,-2.864703,-3.125885,-1.364249,-2.851467,-3.264474,-1.300597,-2.836233,-3.400011,-1.231474,-2.817739,-3.53197,-1.157205,-2.794065,-3.659461,-1.077672,-2.763906,-3.781967,-.993288,-2.727012,-3.89947,-.905022,-2.683516,-4.011926,-.813696,-2.633489,-4.118853,-.719504,-2.57706,-4.21968,-.622419,-2.514627,-4.314158,-.522598,-2.446807,-4.402071,-.420232,-2.374129,-4.48285,-.315473,-2.296734,-4.555465,-.208618,-2.214283,-4.618608,-.100263,-2.126193,-4.670938,.008969,-2.032291,-4.710735,.118653,-1.932934,-4.735343,.227683,-1.8281,-4.742363,.333956,-1.717928,-4.731649,.436375,-1.60444,-4.70486,.535695,-1.490847,-4.662889,.631714,-1.379023,-4.604494,.72054,-1.268665,-4.529849,.798782,-1.160089,-4.442612,.868418,-1.055071,-4.34592,.931419,-.954227,-4.241184,.98695,-.857093,-4.128845,1.033686,-.76391,-4.00874,1.070909,-.676298,-3.881394,1.098194,-.595521,-3.749221,1.115061,-.519797,-3.615375,1.121118,-.445385,-3.481689,1.116477,-.370584,-3.348506,1.101022,-.296342,-3.215783,1.072936,-.225056,-3.084172,1.028362,-.160465,-2.956161,.963785,-.106447,-2.835704,.879038,-.064204,-2.726011,.77674,-.032874,-2.626862,.661756,-.01207,-2.531916,.541958,-932e-6,-2.432124,.425719,.003231,-2.32218,.318964,.003217,-2.200788,.225477,661e-6,-2.068755,.147816,-.003577,-1.928197,.086996,-.008781,-1.781638,.04254,-.014122,-1.631295,.013176,-.0187,-1.479,-.003697,-.02191,-1.325986,-.012306,-.02378,-1.172781,-.016643,-.024743,-1.019529,-.01895,-.025198,-.866263,-.020013,-.025377,-.712993,-.020052,-.025397,-.559724,-.0195,-.025343,-.406454,-.019033,-.025279,-.253184,-.018944,-.0252,-.099914,-.019082,-.025065,.053356,-.019207,-.024865,.206626,-.019173,-.024653,.359896,-.01891,-.024525,.513165,-.0184,-.024541,.666434,-.017643,-.024714,.819702,-.016961,-.024893,.972971,-.016468,-.025024,1.12624,-.016144,-.025111,1.27951,-.015968,-.025159,1.43278,-.015919,-.025175,1.586051,-.015975,-.025164,1.739322,-.016116,-.02513,1.892593,-.01632,-.025081,2.045864,-.016567,-.02502,2.199135,-.016834,-.024954],kt=[2.045864,-.016567,-.02502,2.199135,-.016834,-.024954,1.892593,-.01632,-.025081,1.739322,-.016116,-.02513,1.586051,-.015975,-.025164,1.43278,-.015919,-.025175,1.27951,-.015968,-.025159,1.12624,-.016144,-.025111,.972971,-.016468,-.025024,.819702,-.016961,-.024893,.666434,-.017643,-.024714,.513165,-.0184,-.024541,.359896,-.01891,-.024525,.206626,-.019173,-.024653,.053356,-.019207,-.024865,-.099914,-.019082,-.025065,-.253184,-.018944,-.0252,-.406454,-.019033,-.025279,-.559724,-.0195,-.025343,-.712993,-.020052,-.025397,-.866263,-.020013,-.025377,-1.019529,-.01895,-.025198,-1.172781,-.016643,-.024743,-1.325986,-.012306,-.02378,-1.479,-.003697,-.02191,-1.631295,.013176,-.0187,-1.781638,.04254,-.014122,-1.928197,.086996,-.008781,-2.068755,.147816,-.003577,-2.200788,.225477,661e-6,-2.32218,.318964,.003217,-2.432124,.425719,.003231,-2.531916,.541958,-932e-6,-2.626862,.661756,-.01207,-2.726011,.77674,-.032874,-2.835704,.879038,-.064204,-2.956161,.963785,-.106447,-3.084172,1.028362,-.160465,-3.215783,1.072936,-.225056,-3.348506,1.101022,-.296342,-3.481689,1.116477,-.370584,-3.615375,1.121118,-.445385,-3.749221,1.132706,-.519797,-3.881394,1.149573,-.595521,-4.00874,1.176858,-.676298,-4.128845,1.214081,-.76391,-4.241184,1.260817,-.857093,-4.34592,1.316348,-.954227,-4.442612,1.379349,-1.055071,-4.529849,1.448985,-1.160089,-4.604494,1.527227,-1.268665,-4.662889,1.616053,-1.379023,-4.70486,1.712072,-1.490847,-4.731649,1.811392,-1.60444,-4.757419,1.913811,-1.717928,-4.764439,2.020084,-1.8281,-4.789047,2.129113,-1.932934,-4.828844,2.238797,-2.032291,-4.881174,2.348029,-2.126193,-4.944316,2.456385,-2.214283,-5.016932,2.56324,-2.296734,-5.097711,2.667999,-2.374129,-5.185624,2.770365,-2.446807,-5.280102,2.870186,-2.514627,-5.380929,2.967271,-2.57706,-5.487855,3.061463,-2.633489,-5.600311,3.152789,-2.683516,-5.717814,3.241055,-2.727012,-5.840321,3.325438,-2.763906,-5.967812,3.404972,-2.794065,-6.099771,3.47924,-2.817739,-6.235308,3.548363,-2.836233,-6.373897,3.612015,-2.851467,-6.515663,3.668734,-2.864703,-6.660685,3.716947,-2.876251,-6.80839,3.756634,-2.886146,-6.958009,3.788814,-2.894455,-7.10905,3.813956,-2.901147,-7.261178,3.831915,-2.906094,-7.413975,3.843447,-2.909429,-7.567053,3.850767,-2.911669,-7.720229,3.855895,-2.913306,-7.873446,3.859679,-2.914536,-8.026692,3.862281,-2.915386,-8.179955,3.863782,-2.915876,-8.333222,3.864419,-2.916084,-8.486492,3.864588,-2.916139,-8.639764,3.864612,-2.916147,-8.793034,3.864614,-2.916147,-8.946303,3.864614,-2.916147,-9.099573,3.864614,-2.916147,-9.252844,3.864614,-2.916147,-9.406115,3.864614,-2.916147,-9.559384,3.864614,-2.916147,-9.712654,3.864614,-2.916147,-9.865925,3.864614,-2.916147,-10.019195,3.864614,-2.916147,-10.172464,3.864614,-2.916147,-10.325735,3.864614,-2.916147,-10.479006,3.864614,-2.916147,-10.632276,3.864614,-2.916147,-10.785545,3.864614,-2.916147,-10.938816,3.864614,-2.916147,-11.092086,3.864614,-2.916147,-11.245357,3.864614,-2.916147,-11.398626,3.864614,-2.916147,-11.551897,3.864614,-2.916147,-11.705167,3.864614,-2.916147];let zt,Et,Ct,Bt;class Dt extends We{constructor(e,t){super(),t=Object.assign({},{useAnim:!0,billsBufferSize:[10,10],lines:1,segments:10,GPGPU:!1,roll:0,color:[90/255,228/255,192/255],lineIndex:0,alpha:1},t),this.options=t,this.options.beforeRender=this.beforeRender.bind(this),this.uniforms={},this.color=t.color,this.roll=t.roll,this.GPGPU=t.GPGPU,this.alpha=t.alpha,this.flip=0,this.step=0,this.stepProgress=0,this.lineIndex=t.lineIndex,this.numLines=t.lines,this.localTime=0,this.progress=0;let i=[],n=[];t.billsBufferSize[0],t.billsBufferSize[1];let s=this.numLines,o=[],a=[],r=[],l=[],c=[];for(let e=0;e start pos y\n p.y += (uBillsNumLines - 1. - lineIndex) * uBillsLineSpacing * 0.85 * (uu);\n // -> end pos y\n p.y += (lineIndex-5.) * uBillsLineSpacing * 0.85 * (1. - uu);\n\n //move to end of step 1 pos\n p.z += 0.287;\n // p.x -= 0.007;\n\n //fix curve wrong Y offset\n p.y += 1.616847 * 0.1 * (1.-uu);\n\n return p;\n}\n\n\n/* https://github.com/glslify/glsl-easings/blob/master/quintic-in-out.glsl */\nfloat cubicInOut(float t) {\n return t < 0.5\n ? 4.0 * t * t * t\n : 0.5 * pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\nfloat quadraticInOut(float t) {\n float p = 2.0 * t * t;\n return t < 0.5 ? p : -p + (4.0 * t) - 1.0;\n}\nfloat qinticInOut(float t) {\n return t < 0.5\n ? +16.0 * pow(t, 5.0)\n : -0.5 * pow(2.0 * t - 2.0, 5.0) + 1.0;\n}\n\n\n\n\nfloat random(vec2 co){\n return fract(sin(dot(co.xy, vec2(12.8273, 67.245))) * 53726.17623);\n}\n\n\n\nvoid main(void) {\n\n vUv = uv;\n vVertexIndex = vertexIndex;\n vLineIndex = lineIndex;\n vAlpha = 1.;\n\n float numLines = uBillsNumLines;\n float segmentIndex = floor(float(vertexIndex) / 2.);\n float lineStep = 0.07;\n\n\nvPartIndex = segmentIndex;\n\n vec3 currPos, nextPos, prevPos, modifiedPosition;\n vec3 leftPos, rightPos;\n \n float segLng = uBillsLineLength / uBillsSegments;\n\n //smaller bill for logo animation\n if (uStepProgress > 4. && uStepProgress <= 5.) {\n segLng *= 0.25;\n }\n\n // float lidx = (numLines - 1. - lineIndex);\n float u, u2, u3;\n float _u;\n \n float idCurr = segmentIndex; \n float idNext = segmentIndex + 1.;\n float idPrev = segmentIndex - 1.;\n float idLeft = 0.;\n float idRight = uBillsSegments-1.;\n\n float prg;\n\n if (uStepProgress <= 1.) {\n prg = uStepProgress;\n }\n else if (uStepProgress <= 2.) {\n prg = (uStepProgress-1.);\n }\n else if (uStepProgress <= 3.) {\n prg = (uStepProgress-2.);\n }\n else if (uStepProgress <= 4.) {\n prg = (uStepProgress-3.);\n }\n else if (uStepProgress <= 5.) {\n prg = (uStepProgress-4.);\n }\n \n float startCurr = idCurr * segLng;\n float startNext = idNext * segLng;\n float startPrev = idPrev * segLng;\n float startLeft = idLeft * segLng;\n float startRight = idRight * segLng;\n\n float endCurr = 1. - ( (uBillsSegments-1.) - idCurr ) * segLng;\n float endNext = 1. - ( (uBillsSegments-1.) - idNext ) * segLng;\n float endPrev = 1. - ( (uBillsSegments-1.) - idPrev ) * segLng;\n float endLeft = 1. - ( (uBillsSegments-1.) - idLeft ) * segLng;\n float endRight = 1. - ( (uBillsSegments-1.) - idRight) * segLng;\n\n //Arrival\n if (uStepProgress <= 1.) {\n float lineProgress = max(0., (prg * (1. + (numLines) * 0.05) ) - ((numLines) - lineIndex) * 0.05);\n u = startCurr + lineProgress;\n u2 = startNext + lineProgress;\n u3 = startPrev + lineProgress;\n float lu = startLeft + lineProgress;\n float ru = startRight + lineProgress;\n\n u = min( endCurr, u );\n u2 = min( endNext, u2 );\n u3 = min( endPrev, u3 );\n lu = min( endLeft, lu );\n ru = min( endRight, ru );\n \n currPos = getPosAt0( 1. - u , lineIndex, rand, rand2 );\n nextPos = getPosAt0( 1. - u2, lineIndex, rand, rand2 );\n prevPos = getPosAt0( 1. - u3, lineIndex, rand, rand2 );\n leftPos = getPosAt0( 1. - lu, lineIndex, rand, rand2 );\n rightPos = getPosAt0( 1. - ru, lineIndex, rand, rand2 );\n }\n //Stack 1 -> stack 2 (all except 5 first bills)\n else if (uStepProgress <= 2.) {\n float e = 0.;\n float li = lineIndex; \n \n if (prg > 0.4) {\n // REVERSED MODE\n li = (lineIndex); \n if (lineIndex >= 10.) {\n e = ((prg + 0.2) * (1. + (numLines) * 0.05) ) - (lineIndex) * 0.05;\n li = (numLines - lineIndex + 9.); \n }\n }\n else {\n // NORMAL MODE\n li = numLines - (numLines - lineIndex); \n if (lineIndex >= 10.) {\n e = (prg * (1. + (numLines) * 0.05) ) - (numLines - lineIndex) * 0.05;\n li = (lineIndex); \n }\n }\n\n u = startCurr + max(0., e);\n u2 = startNext + max(0., e);\n u3 = startPrev + max(0., e);\n float lu = startLeft + max(0., e);\n float ru = startRight + max(0., e);\n u = min( endCurr, u );\n u2 = min( endNext, u2 );\n u3 = min( endPrev, u3 );\n lu = min( endLeft, lu );\n ru = min( endRight, ru );\n currPos = getPosAt1( u , li, rand );\n prevPos = getPosAt1( u3, li, rand );\n nextPos = getPosAt1( u2, li, rand );\n leftPos = getPosAt1( lu, li, rand );\n rightPos = getPosAt1( ru, li, rand );\n }\n //Stack 1 -> stack 2 : bills 5 to 10 only\n else if (uStepProgress <= 3.) \n {\n float e = 1.;\n float li = numLines - lineIndex + 9.;\n if (lineIndex < 5.) {\n e = 0.;\n li = lineIndex ;\n }\n else if (lineIndex >= 5. && lineIndex < 10.) {\n /* REVERSED MODE */\n if (prg > 0.4) {\n li = numLines - lineIndex - 11. ;\n e = ((prg + 0.2) * (1. + 10. * 0.05 * 2.) ) - (lineIndex ) * 0.05 * 2.;\n }\n /* NORMAL MODE */\n else {\n li = lineIndex ;\n e = (prg * (1. + 10. * 0.05 * 2.) ) - (10. -lineIndex) * 0.05 * 2.;\n }\n }\n float _rand = random( vec2(li, -li ) ) ;\n u = startCurr + max(0., e);\n u2 = startNext + max(0., e);\n u3 = startPrev + max(0., e);\n float lu = startLeft + max(0., e);\n float ru = startRight + max(0., e);\n u = min( endCurr, u );\n u2 = min( endNext, u2 );\n u3 = min( endPrev, u3 );\n lu = min( endLeft, lu );\n ru = min( endRight, ru );\n currPos = getPosAt1( u , li, _rand );\n prevPos = getPosAt1( u2, li, _rand );\n nextPos = getPosAt1( u3, li, _rand );\n leftPos = getPosAt1( lu, li, _rand );\n rightPos = getPosAt1( ru, li, _rand );\n }\n\n //Stack 2 -> stack 3 : bills 5 to 10 only\n else if (uStepProgress <= 4.) {\n float e = 0.;\n float li = lineIndex ;\n int pathType = 0;\n if (lineIndex < 5.) {\n e = 0.;\n li = lineIndex ;\n }\n else if (lineIndex >= 10.) {\n e = 1.;\n li = numLines - lineIndex + 9.;\n }\n else if (lineIndex >= 5. && lineIndex < 10.) {\n pathType = 1;\n if (prg > 0.4) {\n e = ((prg+0.2) * (1. + 10. * 0.05 * 2.) ) - (lineIndex) * 0.05 * 2.;\n }\n else {\n li = numLines - lineIndex - 11. ;\n e = ((prg) * (1. + 10. * 0.05 * 2.) ) - (10. - lineIndex) * 0.05 * 2.;\n }\n } \n float _rand = random( vec2(li, -li ) ) ;\n u = startCurr + max(0., e) ;\n u2 = startNext + max(0., e) ;\n u3 = startPrev + max(0., e) ;\n float lu = startLeft + max(0., e) ;\n float ru = startRight + max(0., e) ;\n u = min( endCurr, u ) ;\n u2 = min( endNext, u2 ) ;\n u3 = min( endPrev, u3 ) ;\n lu = min( endLeft, lu ) ;\n ru = min( endRight, ru ) ;\n if ( pathType == 0 ) { \n currPos = getPosAt1( u , li, _rand ) ;\n prevPos = getPosAt1( u2, li, _rand ) ;\n nextPos = getPosAt1( u3, li, _rand ) ;\n leftPos = getPosAt1( lu, li, _rand ) ;\n rightPos = getPosAt1( ru, li, _rand ) ;\n }\n else {\n currPos = getPosAt2( u , li, _rand ) ;\n prevPos = getPosAt2( u2, li, _rand ) ;\n nextPos = getPosAt2( u3, li, _rand ) ;\n leftPos = getPosAt2( lu, li, _rand ) ;\n rightPos = getPosAt2( ru, li, _rand ) ;\n }\n }\n\n // bills loop between logos\n else if (uStepProgress <= 5.) {\n u = startCurr + max(0., prg);\n u2 = startNext + max(0., prg);\n u3 = startPrev + max(0., prg);\n float lu = startLeft + max(0., prg);\n float ru = startRight + max(0., prg);\n u = min( endCurr, u );\n u2 = min( endNext, u2 );\n u3 = min( endPrev, u3 );\n lu = min( endLeft, lu );\n ru = min( endRight, ru );\n currPos = getLogoPathAt( u , lineIndex, rand );\n prevPos = getLogoPathAt( u2, lineIndex, rand );\n nextPos = getLogoPathAt( u3, lineIndex, rand );\n leftPos = getLogoPathAt( lu, lineIndex, rand );\n rightPos = getLogoPathAt( ru, lineIndex, rand );\n }\n\n modifiedPosition = currPos;\n\n vec3 dir;\n if( nextPos == currPos ) {\n dir = normalize( currPos - prevPos );\n }\n else if( prevPos == currPos ) {\n dir = normalize( nextPos - currPos );\n }\n else {\n vec3 dir1 = normalize( currPos - prevPos );\n vec3 dir2 = normalize( nextPos - currPos );\n dir = normalize( dir1 + dir2 );\n }\n\n vec3 up = normalize( cross( vec3( dir ), normalize(vec3(0., 0., 1.) ) ) );//vec3( 0., 1., 0. );\n vec3 z = normalize( cross( vec3( dir ), up ) ).xyz;\n\n // vec3 up = vec3(0., 1., 0.);\n // vec3 T = vec3(1., 0., 0.);\n // vec3 T2 = dir;\n // vec3 axis = cross( T, T2 );\n // float angle = acos( dot( T, T2 ) ); \n // mat4 rot = rotationMatrix(axis, angle );\n // vec3 N = up;\n // vec3 N2 = normalize((rot * vec4(N, 1.)).xyz);\n // vec3 bN2 = cross( T2, N2 );\n // vec3 z = normalize(bN2);\n\n\n vec3 centerPosition = modifiedPosition;\n vec4 projectedCenterPosition = uPMatrix * uMVMatrix * vec4( centerPosition, 1.0);\n\n modifiedPosition.xyz = centerPosition.xyz + (mod(float(vertexIndex) , 2.) == (0.) ? -z : z) * uBillsLineThickness;\n\n vec3 _oppositePosition = centerPosition + z * uBillsLineThickness;\n vec3 _currentPosition = centerPosition + -z * uBillsLineThickness;\n vec3 _prevoppositePosition = prevPos + z * uBillsLineThickness;\n vec3 _prevcurrentPosition = prevPos + -z * uBillsLineThickness;\n\n vec4 prevprojectedOppositePosition = uPMatrix * uMVMatrix * vec4( _prevoppositePosition, 1.0);\n vec4 prevprojectedCurrentPosition = uPMatrix * uMVMatrix * vec4( _prevcurrentPosition, 1.0);\n vec4 projectedCurrentPosition = uPMatrix * uMVMatrix * vec4( _currentPosition, 1.0);\n vec4 projectedOppositePosition = uPMatrix * uMVMatrix * vec4( _oppositePosition, 1.0);\n vec4 projectedLeftEdgePosition = uPMatrix * uMVMatrix * vec4( leftPos + z * uBillsLineThickness, 1.0);\n vec4 projectedLeftEdgePosition2 = uPMatrix * uMVMatrix * vec4( leftPos + -z * uBillsLineThickness, 1.0);\n vec4 projectedRightEdgePosition = uPMatrix * uMVMatrix * vec4( rightPos + z * uBillsLineThickness, 1.0);\n vec4 projectedRightEdgePosition2 = uPMatrix * uMVMatrix * vec4( rightPos + -z * uBillsLineThickness, 1.0);\n\n vScreenPosCenter = ( projectedCenterPosition.xy/projectedCenterPosition.w + 1. ) / 2.;\n vScreenPosCurrent = ( projectedCurrentPosition.xy/projectedCurrentPosition.w + 1. ) / 2.;\n vScreenPosOpposite = ( projectedOppositePosition.xy/projectedOppositePosition.w + 1. ) / 2.;\n vScreenPrevPosOpposite = ( prevprojectedOppositePosition.xy/prevprojectedOppositePosition.w + 1. ) / 2.;\n vScreenPrevPosCurrent = ( prevprojectedCurrentPosition.xy/prevprojectedCurrentPosition.w + 1. ) / 2.;\n vScreenPrevLeftEdge = ( projectedLeftEdgePosition.xy/projectedLeftEdgePosition.w + 1. ) / 2.;\n vScreenPrevLeftEdge2 = ( projectedLeftEdgePosition2.xy/projectedLeftEdgePosition2.w + 1. ) / 2.;\n vScreenPrevRightEdge = ( projectedRightEdgePosition.xy/projectedRightEdgePosition.w + 1. ) / 2.;\n vScreenPrevRightEdge2 = ( projectedRightEdgePosition2.xy/projectedRightEdgePosition2.w + 1. ) / 2.;\n\n vec3 col1 = vec3(90., 228., 192.) / 255.;\n vec3 col2 = vec3(254., 247., 193.) / 255.;\n vec3 col3 = vec3(255., 196., 171.) / 255.;\n\n if (uStepProgress <= 1.){\n vColor = col1;\n }\n else if( uStepProgress <= 2.){\n u = max(0., min(1., (u)/(1.-0.105)));\n if (u < 0.5) {\n vColor = mix(col1, col2, u/ 0.5 );\n }\n else {\n vColor = mix(col2, col3, (u-0.5) / 0.5 );\n }\n }\n else if(uStepProgress <= 4.){\n if (lineIndex >= 5.) {\n if (lineIndex >= 10.) {\n vColor = col3;\n }\n else {\n vColor = col1;\n }\n }\n else {\n vColor = col1;\n }\n }\n //floating bill between logos\n else if (uStepProgress <= 5.) {\n vColor = uColor;\n }\n\n vPos = (uMMatrix * vec4(modifiedPosition, 1.0)).xyz;\n\n gl_Position = uPMatrix * uMVMatrix * vec4( modifiedPosition, 1.0);\n\n}",fragmentShader:"precision highp float;\n\nuniform vec2 uResolution;\nuniform int uXray;\nuniform vec3 uColor;\nuniform float uAlpha;\nuniform float uDevicePixelRatio;\nuniform float uStepProgress;\nvarying vec3 vColor;\n// \nvarying vec2 vUv;\n\nvarying vec2 vScreenPosCenter;\nvarying vec2 vScreenPosCurrent;\nvarying vec2 vScreenPosOpposite;\nvarying vec2 vScreenPrevPosOpposite;\nvarying vec2 vScreenPrevPosCurrent;\nvarying vec2 vScreenPrevLeftEdge;\nvarying vec2 vScreenPrevLeftEdge2;\nvarying vec2 vScreenPrevRightEdge;\nvarying vec2 vScreenPrevRightEdge2;\nvarying float vPartIndex;\n\nuniform float uBillsStrokeWidth;\n\nvoid main(void) {\n\n vec3 color = vColor;\n float alpha = 1.;\n\n if ( uXray == 1 ) {\n alpha = 0.;\n }\n \n vec2 onePixel = uBillsStrokeWidth / uResolution.xy ;\n\n vec2 currPos = (gl_FragCoord.xy/uResolution);\n\n vec2 pt1;\n vec2 pt2;\n if (vUv.y < 0.5) {\n pt1 = vScreenPosCurrent;\n pt2 = vScreenPrevPosCurrent;\n }\n else{\n pt1 = vScreenPosOpposite;\n pt2 = vScreenPrevPosOpposite;\n }\n\n vec2 lineDir = pt2 - pt1;\n vec2 perpDir = vec2(lineDir.y, -lineDir.x);\n vec2 dirToPt1 = pt1 - currPos;\n float distY = abs(dot(normalize(perpDir), (dirToPt1)));\n\n\n if (vPartIndex < 0.5) {\n if (vUv.y < 0.5) {\n pt2 = vScreenPrevLeftEdge2;\n pt1 = vScreenPrevLeftEdge;\n }\n else {\n pt1 = vScreenPrevLeftEdge;\n pt2 = vScreenPrevLeftEdge2;\n }\n }\n else{\n if (vUv.y < 0.5) {\n pt2 = vScreenPrevRightEdge2;\n pt1 = vScreenPrevRightEdge;\n }\n else{\n pt1 = vScreenPrevRightEdge;\n pt2 = vScreenPrevRightEdge2;\n }\n }\n\n lineDir = pt2 - pt1;\n perpDir = vec2(lineDir.y, -lineDir.x);\n dirToPt1 = vUv.y < 0.5 ? pt1 - currPos : currPos - pt1;\n float distX = abs(dot(normalize(perpDir), (dirToPt1)));\n\n\n // black border on normal mode + fake AA, execpt for logo bill\n if ( uStepProgress <= 4. ) {\n\n vec3 nColX = color;\n vec3 nColY = color;\n float nAlphaX = alpha;\n float nAlphaY = alpha;\n\n // LEFT/RIGHT EDGES\n if ( distX <= onePixel.y * 4.) {\n if (distX > onePixel.x) {\n if (distX > onePixel.x*2.) {\n float ra = min(1., max(0., (distX-onePixel.x*2.) / (onePixel.x))) ;\n if ( uXray != 1 ) {\n nColX = mix( vec3(0.), color, ra );\n }\n else {\n nAlphaX = 1. - ra;\n }\n }\n else {\n float ra = min(1., max(0., (distX-onePixel.x) / (onePixel.x))) ;\n nAlphaX = ra;\n if ( uXray != 1 ) {\n nColX = vec3(0.);\n }\n }\n }\n else {\n if ( uXray != 1 ) {\n nColX = vec3(0.);\n }\n nAlphaX = 0.;\n }\n }\n\n // FRONT / BACK EDGES\n if ( distY <= (onePixel.y*4.) ) {\n if (distY > onePixel.y) {\n if (distY > onePixel.y*2.) {\n float ra = min(1., max(0., (distY-onePixel.y*2.) / (onePixel.y))) ;\n if ( uXray != 1 ) {\n nColY = mix( vec3(0.), color, ra );\n }\n else {\n nAlphaY = 1. - ra;\n }\n }\n else {\n float ra = min(1., max(0., (distY-onePixel.y) / (onePixel.y))) ;\n nAlphaY = ra;\n if ( uXray != 1 ) {\n nColY = vec3(0.);\n }\n }\n }\n else {\n if ( uXray != 1 ) {\n nColY = vec3(0.);\n }\n nAlphaY = 0.;\n }\n }\n \n // left/right edges\n if ( distX <= (onePixel.x * 4.) && distY > (onePixel.y * 4.) ) {\n color = nColX;\n alpha = nAlphaX;\n }\n // front/back edges\n else if ( distY <= (onePixel.y * 4.) && distX > (onePixel.x * 4.) ) {\n color = nColY;\n alpha = nAlphaY;\n }\n else {\n // corners \n if ( distX <= (onePixel.x * 4.) && distY <= (onePixel.y * 4.) ) {\n color = min(nColX, nColY);\n if (uXray == 1) {\n if (distX < onePixel.x*2. && distY < onePixel.y*2.) {\n alpha = nAlphaX * nAlphaY;\n }\n else if (distX > onePixel.x*2. && distY > onePixel.y*2.) {\n alpha = max(nAlphaX, nAlphaY);\n }\n else {\n if (distX < onePixel.x*2.) {\n alpha = nAlphaX;\n }\n else {\n alpha = nAlphaY;\n }\n }\n }\n else {\n alpha = nAlphaX * nAlphaY;\n }\n }\n // interior\n else {\n if (uXray == 1) {\n alpha = 0.;\n }\n }\n }\n\n }\n \n if ( uXray == 1 ) {\n color *= 1.3;\n }\n\n if (alpha * uAlpha < 0.01) {\n discard;\n }\n\n gl_FragColor = vec4( color, alpha * uAlpha );\n\n}",blend:!0}),this.material=Bt,this.buildPath(e),this.buildEnterPath(e),this.buildLogosPath(e)}beforeRender(){for(let e in this.uniforms)_t(this.material.uniforms,e,this.uniforms[e])}reset(){this.localTime=0,this.progress1=0,this.progress2=0,this.progress3=0,this.progress4=0,this.progress=0}updateUniforms(e){this.parent&&(this.parent.updateMatrix(),this.parent.updateWorldMatrix()),this.updateMatrix(),this.updateWorldMatrix(),this.uniforms.uTime=e,this.uniforms.uProgress=this.progress,this.uniforms.uStep=this.step,this.uniforms.uStepProgress=this.stepProgress,this.uniforms.uGPGPU=this.GPGPU?1:0,this.uniforms.tPath=this.pathTexture,this.uniforms.tEnterPath=this.enterPathTexture,this.uniforms.tLogosPath=this.logosPathTexture,this.uniforms.uColor=this.color,this.uniforms.uLineIndex=this.lineIndex,this.uniforms.uBillsNumLines=this.numLines,this.uniforms.uBillsResolution=this.options.billsBufferSize,this.uniforms.uBillsSegments=this.options.segments,this.uniforms.uBillsLineThickness=Tt.uBillsLineThickness,this.uniforms.uBillsLineSpacing=Tt.uBillsLineSpacing,this.uniforms.uBillsLineLength=Tt.uBillsLineLength,this.uniforms.uRoll=this.roll,this.uniforms.uFlip=this.flip,this.uniforms.uAlpha=this.alpha}buildPath(e){if(!zt){let n=Ft.length/3,s=new Array(1024),o=[];for(var t=0,i=n;t 1.) {\n p = vec3(\n (uBillsSegments - 1.- partIndex) * 0.013 * max(0., min(1., abs((r-1.)/0.1))),\n lineIndex * uBillsLineSpacing,\n -0.25\n );\n }\n //end pos\n if (r < 0.) {\n float rr = abs(r/-0.15);\n float crr = max(0., min(1., rr));\n p = vec3(\n (partIndex) * -0.013 * max(0., min(1., crr)),\n (numLines-1.-lineIndex) * uBillsLineSpacing,\n 0.25\n );\n //bounce at the end\n // p.x += (cos( (1.-crr) * (3.14/2.) - (3.14/2.) ) * 0.1) ;//* ((partIndex/(uBillsSegments-1.)));\n // p.y += (sin( ((1.-crr)) * (3.14/2.) - (3.14/2.) ) * 0.1 + 0.1) ;// * ((partIndex/(uBillsSegments-1.)));\n\n // p.y += crr * 0.1;\n }\n return p;\n}\n\nvoid main(void) {\n\n float numLines = floor(uBillsResolution.x*uBillsResolution.y)/2.;\n vUv = uv;\n vVertexIndex = vertexIndex;\n vLineIndex = lineIndex;\n\n float partIndex = floor(float(vertexIndex) / 2.);\n vPartIndex = partIndex;\n\n float groupIndex = 0.; \n vec3 groupPos;\n\n if (uBillsMode == 1) {\n groupIndex = floor(lineIndex / 5.);\n\n groupPos.x = (mod( groupIndex, 10.) - 3. ) * 0.25;// - (3. * 0.25);\n groupPos.z = (floor( groupIndex / 10. ) - 8. )* 0.25;// * 0.8 - (5. * 0.25 * 0.8);\n\n if ( mod( floor( groupIndex / 10. ), 2. ) == 0. ) {\n groupPos.x += 0.25 * 0.5;//offset odd/even rows\n }\n // if (groupIndex == 7. || groupIndex == 17.) {\n // groupPos.x += 1000.;\n // }\n }\n\n float l = lineIndex - groupIndex * 5.;\n\n vec3 modifiedPosition = (lineIndex >= uNum && uBillsMode != 1) ? vec3(10000.) : vec3(\n (partIndex-2.) * ((uBillsLineLength*2.)/uBillsSegments),\n (l) * uBillsLineSpacing * .5 * 1.3,\n (mod(float(vertexIndex) , 2.) == 0. ? -1. : 1.) * uBillsLineThickness *1.05\n ); \n \n if (uBillsMode == 1) {\n modifiedPosition += groupPos * 3.;\n }\n\n \n\n vec3 col1 = vec3(90., 228., 192.) / 255.;\n vColor = col1;\n\n vPos = (uMMatrix * vec4(modifiedPosition, 1.0)).xyz;\n\n\n vAlpha = 1.;\n\n //Many stacks mode\n if ( uBillsMode == 1){\n if ( length(vPos) < .6 ) {\n vAlpha = 0.; //hide center bills\n }\n else { \n vAlpha = 1. - min(1., (length(vPos) - 1.) / 3.);//fade outer bills\n }\n }\n\n\n gl_Position = uPMatrix * uMVMatrix * vec4( modifiedPosition, 1.0);\n\n // Pass screen positions of prev, current and next points\n float z = mod(float(vertexIndex), 2.) == 0. ? -1. : 1.;\n\n vec3 prevPos = (lineIndex >= uNum && uBillsMode != 1) ? vec3(10000.) : vec3(\n (partIndex-2.-1.) * ((uBillsLineLength*2.)/uBillsSegments),\n (l) * uBillsLineSpacing * .5 * 1.3,\n 0.\n ); \n vec3 centerPosition = (lineIndex >= uNum && uBillsMode != 1) ? vec3(10000.) : vec3(\n (partIndex-2.) * ((uBillsLineLength*2.)/uBillsSegments),\n (l) * uBillsLineSpacing * .5 * 1.3,\n 0.\n );\n\n vec3 leftEdgePosition = (lineIndex >= uNum && uBillsMode != 1) ? vec3(10000.) : vec3(\n (0.-2.) * ((uBillsLineLength*2.)/uBillsSegments),\n (l) * uBillsLineSpacing * .5 * 1.3,\n 0.\n );\n vec3 rightEdgePosition = (lineIndex >= uNum && uBillsMode != 1) ? vec3(10000.) : vec3(\n (uBillsSegments-1.-2.) * ((uBillsLineLength*2.)/uBillsSegments),\n (l) * uBillsLineSpacing * .5 * 1.3,\n 0.\n );\n\n // multi stacks mode\n if (uBillsMode == 1) {\n prevPos += groupPos * 3.;\n centerPosition += groupPos * 3.;\n leftEdgePosition += groupPos * 3.;\n rightEdgePosition += groupPos * 3.;\n }\n\n vec3 _oppositePosition = centerPosition + vec3(0.,0.,1.) * (uBillsLineThickness * 1.05);\n vec3 _currentPosition = centerPosition + vec3(0.,0.,-1.) * (uBillsLineThickness * 1.05);\n vec3 _prevoppositePosition = prevPos + vec3(0.,0.,1.) * (uBillsLineThickness * 1.05);\n vec3 _prevcurrentPosition = prevPos + vec3(0.,0.,-1.) * (uBillsLineThickness * 1.05);\n \n vec4 projectedCenterPosition = uPMatrix * uMVMatrix * vec4( centerPosition, 1.0);\n vec4 projectedOppositePosition = uPMatrix * uMVMatrix * vec4( _oppositePosition, 1.0);\n vec4 projectedCurrentPosition = uPMatrix * uMVMatrix * vec4( _currentPosition, 1.0);\n vec4 prevprojectedOppositePosition = uPMatrix * uMVMatrix * vec4( _prevoppositePosition, 1.0);\n vec4 prevprojectedCurrentPosition = uPMatrix * uMVMatrix * vec4( _prevcurrentPosition, 1.0);\n\n vec4 projectedLeftEdgePosition = uPMatrix * uMVMatrix * vec4( leftEdgePosition + vec3(0.,0.,1.) * (uBillsLineThickness * 1.05), 1.0);\n vec4 projectedLeftEdgePosition2 = uPMatrix * uMVMatrix * vec4( leftEdgePosition + vec3(0.,0.,-1.) * (uBillsLineThickness * 1.05), 1.0);\n vec4 projectedRightEdgePosition = uPMatrix * uMVMatrix * vec4( rightEdgePosition + vec3(0.,0.,1.) * (uBillsLineThickness * 1.05), 1.0);\n vec4 projectedRightEdgePosition2 = uPMatrix * uMVMatrix * vec4( rightEdgePosition + vec3(0.,0.,-1.) * (uBillsLineThickness * 1.05), 1.0);\n\n vScreenPosCenter = ( projectedCenterPosition.xy/projectedCenterPosition.w + 1. ) / 2.;\n vScreenPosCurrent = ( projectedCurrentPosition.xy/projectedCurrentPosition.w + 1. ) / 2.;\n vScreenPosOpposite = ( projectedOppositePosition.xy/projectedOppositePosition.w + 1. ) / 2.;\n vScreenPrevPosOpposite = ( prevprojectedOppositePosition.xy/prevprojectedOppositePosition.w + 1. ) / 2.;\n vScreenPrevPosCurrent = ( prevprojectedCurrentPosition.xy/prevprojectedCurrentPosition.w + 1. ) / 2.;\n\n vScreenPrevLeftEdge = ( projectedLeftEdgePosition.xy/projectedLeftEdgePosition.w + 1. ) / 2.;\n vScreenPrevRightEdge = ( projectedRightEdgePosition.xy/projectedRightEdgePosition.w + 1. ) / 2.;\n vScreenPrevLeftEdge2 = ( projectedLeftEdgePosition2.xy/projectedLeftEdgePosition2.w + 1. ) / 2.;\n vScreenPrevRightEdge2 = ( projectedRightEdgePosition2.xy/projectedRightEdgePosition2.w + 1. ) / 2.;\n\n}",fragmentShader:"precision highp float;\n\nuniform vec2 uResolution;\nuniform int uXray;\nuniform vec3 uColor;\nuniform float uAlpha;\nuniform float uDevicePixelRatio;\n// \n// varying vec3 vColor;\nvarying float vAlpha;\nvarying vec2 vUv;\n\nvarying vec2 vScreenPosCenter;\nvarying vec2 vScreenPosCurrent;\nvarying vec2 vScreenPosOpposite;\nvarying vec2 vScreenPrevPosOpposite;\nvarying vec2 vScreenPrevPosCurrent;\nvarying vec2 vScreenPrevLeftEdge;\nvarying vec2 vScreenPrevRightEdge;\nvarying vec2 vScreenPrevLeftEdge2;\nvarying vec2 vScreenPrevRightEdge2;\nvarying float vPartIndex;\n\n\nuniform float uBillsStrokeWidth;\n\nvoid main(void) {\n\n vec3 color = uColor;\n float alpha = 1.;\n\n if ( uXray == 1 ) {\n alpha = 0.;\n }\n \n vec2 onePixel = uBillsStrokeWidth / uResolution.xy;\n\n vec2 currPos = gl_FragCoord.xy/uResolution;\n \n vec2 pt1;\n vec2 pt2;\n if (vUv.y < 0.5) {\n pt1 = vScreenPosCurrent;\n pt2 = vScreenPrevPosCurrent;\n }\n else{\n pt1 = vScreenPosOpposite;\n pt2 = vScreenPrevPosOpposite;\n }\n vec2 lineDir = pt2 - pt1;\n vec2 perpDir = vec2(lineDir.y, -lineDir.x);\n vec2 dirToPt1 = pt1 - currPos;\n float distY = abs(dot(normalize(perpDir), (dirToPt1)));\n\n if (vPartIndex < 0.5) {\n if (vUv.y < 0.5) {\n pt2 = vScreenPrevLeftEdge2;\n pt1 = vScreenPrevLeftEdge;\n }\n else {\n pt1 = vScreenPrevLeftEdge;\n pt2 = vScreenPrevLeftEdge2;\n }\n }\n else{\n if (vUv.y < 0.5) {\n pt2 = vScreenPrevRightEdge2;\n pt1 = vScreenPrevRightEdge;\n }\n else{\n pt1 = vScreenPrevRightEdge;\n pt2 = vScreenPrevRightEdge2;\n }\n }\n \n lineDir = pt2 - pt1;\n perpDir = vec2(lineDir.y, -lineDir.x);\n dirToPt1 = vUv.y < 0.5 ? pt1 - currPos : currPos - pt1;\n float distX = abs(dot(normalize(perpDir), (dirToPt1)));\n\n\n vec3 nColX = color;\n vec3 nColY = color;\n float nAlphaX = alpha;\n float nAlphaY = alpha;\n\n // LEFT/RIGHT EDGES\n if ( distX <= onePixel.y * 4.) {\n if (distX > onePixel.x) {\n if (distX > onePixel.x*2.) {\n float ra = min(1., max(0., (distX-onePixel.x*2.) / (onePixel.x))) ;\n if ( uXray != 1 ) {\n nColX = mix( vec3(0.), color, ra );\n }\n else {\n nAlphaX = 1. - ra;\n }\n }\n else {\n float ra = min(1., max(0., (distX-onePixel.x) / (onePixel.x))) ;\n nAlphaX = ra;\n if ( uXray != 1 ) {\n nColX = vec3(0.);\n }\n }\n }\n else {\n if ( uXray != 1 ) {\n nColX = vec3(0.);\n }\n nAlphaX = 0.;\n }\n }\n\n // FRONT / BACK EDGES\n if ( distY <= (onePixel.y*4.) ) {\n if (distY > onePixel.y) {\n if (distY > onePixel.y*2.) {\n float ra = min(1., max(0., (distY-onePixel.y*2.) / (onePixel.y))) ;\n if ( uXray != 1 ) {\n nColY = mix( vec3(0.), color, ra );\n }\n else {\n nAlphaY = 1. - ra;\n }\n }\n else {\n float ra = min(1., max(0., (distY-onePixel.y) / (onePixel.y))) ;\n nAlphaY = ra;\n if ( uXray != 1 ) {\n nColY = vec3(0.);\n }\n }\n }\n else {\n if ( uXray != 1 ) {\n nColY = vec3(0.);\n }\n nAlphaY = 0.;\n }\n }\n \n // left/right edges\n if ( distX <= (onePixel.x * 4.) && distY > (onePixel.y * 4.) ) {\n color = nColX;\n alpha = nAlphaX;\n }\n // front/back edges\n else if ( distY <= (onePixel.y * 4.) && distX > (onePixel.x * 4.) ) {\n color = nColY;\n alpha = nAlphaY;\n }\n else {\n // corners \n if ( distX <= (onePixel.x * 4.) && distY <= (onePixel.y * 4.) ) {\n color = min(nColX, nColY);\n if (uXray == 1) {\n if (distX < onePixel.x*2. && distY < onePixel.y*2.) {\n alpha = nAlphaX * nAlphaY;\n }\n else if (distX > onePixel.x*2. && distY > onePixel.y*2.) {\n alpha = max(nAlphaX, nAlphaY);\n }\n else {\n if (distX < onePixel.x*2.) {\n alpha = nAlphaX;\n }\n else {\n alpha = nAlphaY;\n }\n }\n }\n else {\n alpha = nAlphaX * nAlphaY;\n }\n }\n // interior\n else {\n if (uXray == 1) {\n alpha = 0.;\n }\n }\n }\n \n if ( uXray == 1 ) {\n color *= 1.3;\n }\n\n if (alpha * vAlpha * uAlpha < 0.001) {\n discard;\n }\n\n gl_FragColor = vec4( color, alpha * vAlpha * uAlpha );\n\n}",depthTest:!0,blend:!0}),this.material=It}beforeRender(){for(let e in this.uniforms)_t(this.material.uniforms,e,this.uniforms[e])}updateUniforms(e){this.visible&this.options.useAnim?this.localTime+=.1:this.localTime=0,this.uniforms.uLocalTime=this.localTime,this.uniforms.uTime=e,this.uniforms.uBillsResolution=this.options.billsBufferSize,this.uniforms.uBillsSegments=4,this.uniforms.uBillsLineThickness=Tt.uBillsLineThickness,this.uniforms.uBillsLineSpacing=Tt.uBillsLineSpacing,this.uniforms.uBillsLineRotationStep=Tt.uBillsLineRotationStep,this.uniforms.uBillsMaxScale=Tt.uBillsMaxScale,this.uniforms.uBillsMinScale=Tt.uBillsMinScale,this.uniforms.uBillsRotationSpeed=Tt.uBillsRotationSpeed,this.uniforms.uBillsProgress=Tt.uBillsProgress,this.uniforms.uBillsLineLength=Tt.uBillsLineLength,this.uniforms.uBillsWaveHeight=Tt.uBillsWaveHeight,this.uniforms.uColor=this.color,this.uniforms.uAlpha=this.alpha,this.uniforms.uNum=this.num,this.uniforms.uBillsMode=this.mode}}var Nt='precision highp float;\nprecision highp int;\n\nattribute vec2 uv;\nattribute vec3 position;\n// attribute vec3 normal;\nattribute float particleIndex;\nattribute float speed;\nattribute float particleRandom;\nattribute float particleRandom2;\nattribute float particleRandom3;\nattribute float particleRandom4;\nattribute vec3 cornerPos;\n\n// uniform mat4 uNormalMatrix;\nuniform mat4 uMVMatrix;\nuniform mat4 uMMatrix;\nuniform mat4 uPMatrix;\nuniform sampler2D tPosition;\nuniform sampler2D oPosition;\nuniform vec3 uCameraPosition;\nuniform vec2 uParticleResolution;\nuniform float uLocalTime;\nuniform int uParticleMode;\nuniform float uPointSize;\nuniform vec3 uColor1;\nuniform vec3 uColor2;\nuniform vec3 uColor3;\nuniform float uParticleSize;\nuniform int uParticleType;\nuniform float uProgress;\nuniform int uMetalballPass;\nuniform float uParticleStep;\nuniform float uSpread;\n\n//Home vertical offset\nuniform float uMaskOffsetY;\nuniform float uDevicePixelRatio;\nuniform vec2 uResolution;\n\n\n//particles bill moving in-between logos\nuniform float uParticleBillsLineThickness;\nuniform float uParticleBillsLineLength;\nuniform float uParticleBillsSegments;\nuniform sampler2D tLogosPath; \nuniform vec3 uLogoPos0;\nuniform vec3 uLogoPos1;\nuniform vec3 uLogoPos2;\nuniform vec3 uLogoPos3;\nuniform vec3 uLogoPos4;\nuniform vec3 uLogoPos5;\nuniform vec3 uLogoPos6;\nuniform vec3 uLogoPos7;\nuniform int uReverse;\n\n\nvarying float vPointSize;\n\nvarying vec3 vPos;\n// varying vec3 vNormal;\nvarying vec2 vUv;\nvarying float vParticleIndex;\nvarying float vLife;\nvarying vec3 vColor;\nvarying float vAlpha;\n\n\n\n\n/* NOISES */\n\n\n//\n// GLSL textureless classic 3D noise "cnoise",\n// with an RSL-style periodic variant "pnoise".\n// Author: Stefan Gustavson (stefan.gustavson@liu.se)\n// Version: 2011-10-11\n//\n// Many thanks to Ian McEwan of Ashima Arts for the\n// ideas for permutation and gradient selection.\n//\n// Copyright (c) 2011 Stefan Gustavson. All rights reserved.\n// Distributed under the MIT license. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x)\n{\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec4 mod289(vec4 x)\n{\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec4 permute(vec4 x)\n{\n return mod289(((x*34.0)+1.0)*x);\n}\n\nvec4 taylorInvSqrt(vec4 r)\n{\n return 1.79284291400159 - 0.85373472095314 * r;\n}\n\nvec3 fade(vec3 t) {\n return t*t*t*(t*(t*6.0-15.0)+10.0);\n}\n\n// Classic Perlin noise\nfloat cnoise(vec3 P)\n{\n vec3 Pi0 = floor(P); // Integer part for indexing\n vec3 Pi1 = Pi0 + vec3(1.0); // Integer part + 1\n Pi0 = mod289(Pi0);\n Pi1 = mod289(Pi1);\n vec3 Pf0 = fract(P); // Fractional part for interpolation\n vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0\n vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\n vec4 iy = vec4(Pi0.yy, Pi1.yy);\n vec4 iz0 = Pi0.zzzz;\n vec4 iz1 = Pi1.zzzz;\n\n vec4 ixy = permute(permute(ix) + iy);\n vec4 ixy0 = permute(ixy + iz0);\n vec4 ixy1 = permute(ixy + iz1);\n\n vec4 gx0 = ixy0 * (1.0 / 7.0);\n vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\n gx0 = fract(gx0);\n vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\n vec4 sz0 = step(gz0, vec4(0.0));\n gx0 -= sz0 * (step(0.0, gx0) - 0.5);\n gy0 -= sz0 * (step(0.0, gy0) - 0.5);\n\n vec4 gx1 = ixy1 * (1.0 / 7.0);\n vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\n gx1 = fract(gx1);\n vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\n vec4 sz1 = step(gz1, vec4(0.0));\n gx1 -= sz1 * (step(0.0, gx1) - 0.5);\n gy1 -= sz1 * (step(0.0, gy1) - 0.5);\n\n vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\n vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\n vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\n vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\n vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\n vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\n vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\n vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\n\n vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\n g000 *= norm0.x;\n g010 *= norm0.y;\n g100 *= norm0.z;\n g110 *= norm0.w;\n vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\n g001 *= norm1.x;\n g011 *= norm1.y;\n g101 *= norm1.z;\n g111 *= norm1.w;\n\n float n000 = dot(g000, Pf0);\n float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\n float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\n float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\n float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\n float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\n float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\n float n111 = dot(g111, Pf1);\n\n vec3 fade_xyz = fade(Pf0);\n vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\n vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\n float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);\n return 2.2 * n_xyz;\n}\n\n// Classic Perlin noise, periodic variant\nfloat pnoise(vec3 P, vec3 rep)\n{\n vec3 Pi0 = mod(floor(P), rep); // Integer part, modulo period\n vec3 Pi1 = mod(Pi0 + vec3(1.0), rep); // Integer part + 1, mod period\n Pi0 = mod289(Pi0);\n Pi1 = mod289(Pi1);\n vec3 Pf0 = fract(P); // Fractional part for interpolation\n vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0\n vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\n vec4 iy = vec4(Pi0.yy, Pi1.yy);\n vec4 iz0 = Pi0.zzzz;\n vec4 iz1 = Pi1.zzzz;\n\n vec4 ixy = permute(permute(ix) + iy);\n vec4 ixy0 = permute(ixy + iz0);\n vec4 ixy1 = permute(ixy + iz1);\n\n vec4 gx0 = ixy0 * (1.0 / 7.0);\n vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\n gx0 = fract(gx0);\n vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\n vec4 sz0 = step(gz0, vec4(0.0));\n gx0 -= sz0 * (step(0.0, gx0) - 0.5);\n gy0 -= sz0 * (step(0.0, gy0) - 0.5);\n\n vec4 gx1 = ixy1 * (1.0 / 7.0);\n vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\n gx1 = fract(gx1);\n vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\n vec4 sz1 = step(gz1, vec4(0.0));\n gx1 -= sz1 * (step(0.0, gx1) - 0.5);\n gy1 -= sz1 * (step(0.0, gy1) - 0.5);\n\n vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\n vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\n vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\n vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\n vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\n vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\n vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\n vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\n\n vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\n g000 *= norm0.x;\n g010 *= norm0.y;\n g100 *= norm0.z;\n g110 *= norm0.w;\n vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\n g001 *= norm1.x;\n g011 *= norm1.y;\n g101 *= norm1.z;\n g111 *= norm1.w;\n\n float n000 = dot(g000, Pf0);\n float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\n float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\n float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\n float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\n float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\n float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\n float n111 = dot(g111, Pf1);\n\n vec3 fade_xyz = fade(Pf0);\n vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\n vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\n float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);\n return 2.2 * n_xyz;\n}\n/* END NOISE */\n\n\n\n\n\nmat3 rotateX(float rad) {\n float c = cos(rad);\n float s = sin(rad);\n return mat3(\n 1.0, 0.0, 0.0,\n 0.0, c, s,\n 0.0, -s, c\n );\n}\nmat3 rotateY(float rad) {\n float c = cos(rad);\n float s = sin(rad);\n return mat3(\n c, 0.0, -s,\n 0.0, 1.0, 0.0,\n s, 0.0, c\n );\n}\nmat3 rotateZ(float rad) {\n float c = cos(rad);\n float s = sin(rad);\n return mat3(\n c, s, 0.0,\n -s, c, 0.0,\n 0.0, 0.0, 1.0\n );\n}\n\n\n\nvec3 getLogoPathAt(float u) \n{\n vec3 p;\n float u0 = floor(u * 407.);\n vec2 uvs0 = vec2( mod(u0,32.), floor(u0/32.) ) / 32.;\n vec3 p0 = texture2D(tLogosPath, uvs0).rgb;\n float u1 = ceil(u * 407.);\n vec2 uvs1 = vec2( mod(u1,32.), floor(u1/32.) ) / 32.;\n vec3 p1 = texture2D(tLogosPath, uvs1).rgb;\n float f = fract( u * 407. );\n p = mix( p0, p1, f );\n float uu = max(0., min(1., u));//(u-0.407) / 0.7));\n return p;\n}\n\n\nvarying float vAttracted;\nvarying float vMetaballAlpha;\n\n\n\nfloat spring( float stiffness, float damping, float initialVelocity, float t) {\n float a = sqrt( stiffness );\n float b = damping / ( sqrt(stiffness) * 2.);\n float c;\n float d;\n if (b < 1.) {\n c = a * sqrt(1. - b * b);\n d = (b * a + -initialVelocity) / c;\n } else {\n c = 0.;\n d = -initialVelocity + a;\n }\n if (b < 1.) {\n t = exp(-t * b * a) * (cos(c * t) + d * sin(c * t));\n } else {\n t = (1. + d * t) * exp(-t * a);\n }\n return 1. - t;\n}\n\n\nvoid main(void) {\n\n vAttracted = 0.;\n vMetaballAlpha = 0.;\n\n vParticleIndex = particleIndex;\n\n float num = floor(uParticleResolution.x*uParticleResolution.y);\n\n float x = mod(vParticleIndex,uParticleResolution.x)/uParticleResolution.x;\n float y = floor(vParticleIndex/uParticleResolution.x)/uParticleResolution.y;\n\n vec3 modifiedPosition = texture2D( tPosition, vec2(x,y) ).xyz;\n float life = texture2D( tPosition, vec2(x,y)).a;\n\n vPos = (uMMatrix * vec4(modifiedPosition, 1.0)).xyz;\n // vNormal = normalize((uNormalMatrix * vec4(normal, 1.0)).xyz);\n\n\n vec3 col1 = uColor1;//vec3(90., 228., 192.) / 255.;\n vec3 col2 = uColor2;//vec3(254., 247., 193.) / 255.;\n vec3 col3 = uColor3;//vec3(255., 196., 171.) / 255.;\n\n vLife = life;\n vAlpha = 1.;\n \n vUv = uv;\n\n // TYPE TRIANGLE\n if (uParticleType == 1) \n { \n modifiedPosition += uParticleSize * cornerPos;// * (0.5 + 0.5*speed);\n modifiedPosition *= rotateX( speed * 3.14 * 2. );\n modifiedPosition *= rotateY( speed * 3.14 * 2. );\n modifiedPosition *= rotateZ( speed * 3.14 * 2. );\n\n // vNormal *= rotateX( speed * 3.14 * 2. );\n // vNormal *= rotateY( speed * 3.14 * 2. );\n // vNormal *= rotateZ( speed * 3.14 * 2. );\n\n float rc = max(0., min(1., uProgress));\n vec3 V = normalize(vec3(0.5));//normalize(uCameraPosition - vPos);\n // float shade = max(0.,( dot( vNormal, V )) );\n vec3 albd;\n // MODE BOXES\n if (uParticleMode == 6) \n { \n albd = col1; \n albd = pow(albd, vec3(2.2));//gamma correction[1]\n // vColor = albd * (0.7 + 0.3 * shade);\n vColor = mix(vColor, vec3(1.), uProgress );\n vColor = pow(vColor, vec3(1./2.2)); //gamma restore [2]\n }\n else {\n float rc = max(0., min(1., life));\n if (rc <= 0.5) {\n vColor = mix(col1, col2, rc/ 0.5 );\n }\n else {\n vColor = mix(col2, col3, (rc-0.5) / 0.5 );\n }\n }\n }\n\n // TYPE POINTS\n else \n {\n // MODE ARC(s)\n if (uParticleMode == 1 || uParticleMode == 7) \n { \n \n gl_PointSize = uPointSize;\n \n float rc = max(0., min(1., life));\n\n //revser colors\n if (uReverse == 1) {\n rc = 1. - rc;\n gl_PointSize *= 0.5;\n }\n\n if (rc <= 0.5) {\n vColor = mix(col1, col2, rc/ 0.5 );\n }\n else {\n vColor = mix(col2, col3, (rc-0.5) / 0.5 );\n }\n }\n // MODE BLUB\n else if (uParticleMode == 5) \n { \n float rc = 1.- max(0., min(1., life));\n if (rc <= 0.5) {\n vColor = mix(col1, col2, rc/ 0.5 );\n }\n else {\n vColor = mix(col2, col3, (rc-0.5) / 0.5 );\n }\n gl_PointSize = uPointSize + uProgress * (uPointSize * 3. * life);\n }\n // MODE RECTANGLE GLOW\n else if (uParticleMode == 2) \n { \n vColor = modifiedPosition.x > -0.25 && uProgress <= 1. ? vec3(2.) : col1;//GLOW\n gl_PointSize = uPointSize * life;\n }\n \n\n // particle bill\n else if (uParticleMode == 10) {\n\n vColor = col1;\n gl_PointSize = 0.;\n\t\t\tlife = 1.;\n vAlpha = 0.;\n \n //create large blob for each logo\n if (particleIndex < 8. && uMetalballPass == 1) {\n gl_PointSize = 100.;\n vColor = vec3(1.);\n if (particleIndex == 0.) { modifiedPosition = uLogoPos0; }\n if (particleIndex == 1.) { modifiedPosition = uLogoPos1; }\n if (particleIndex == 2.) { modifiedPosition = uLogoPos2; }\n if (particleIndex == 3.) { modifiedPosition = uLogoPos3; }\n if (particleIndex == 4.) { modifiedPosition = uLogoPos4; }\n if (particleIndex == 5.) { modifiedPosition = uLogoPos5; }\n if (particleIndex == 6.) { modifiedPosition = uLogoPos6; }\n if (particleIndex == 7.) { modifiedPosition = uLogoPos7; }\n }\n \n else {\n float rand = speed;\n float rand2 = particleRandom;\n float rand3 = particleRandom2;\n float rand4 = particleRandom3;\n float rand5 = particleRandom4;\n float segLng = (uParticleBillsLineLength / uParticleBillsSegments) * 0.25;//smaller for this mode than for bills mesh\n float segmentIndex = rand * uParticleBillsSegments;\n float prg = uProgress * (1.);// - segmentIndex * segLng;\n float idCurr = segmentIndex; \n float idNext = segmentIndex + 1.;\n float idPrev = segmentIndex - 1.;\n float startCurr = idCurr * segLng;\n float startNext = idNext * segLng;\n float startPrev = idPrev * segLng;\n float groupIndex = (floor( rand3 * 20. ));\n vec3 oo = texture2D( oPosition, vec2(x,y) ).rgb;\n vec3 dest = normalize(oo) * (0.04);\n vec3 logoPos;\n float attractionStrength = 0.;\n float maxPrg = 1.;\n float prg2 = prg;\n float dragging;\n\n if (groupIndex == 0. ) { maxPrg = 0.37; logoPos = uLogoPos1; }\n if (groupIndex == 1. ) { maxPrg = 0.38; logoPos = uLogoPos0; }\n if (groupIndex == 2. ) { maxPrg = 0.44; logoPos = uLogoPos2; }\n if (groupIndex == 3. ) { maxPrg = 0.55; logoPos = uLogoPos3; }\n if (groupIndex == 4. ) { maxPrg = 0.49; logoPos = uLogoPos4; }\n if (groupIndex == 5. ) { maxPrg = 0.50; logoPos = uLogoPos5; }\n if (groupIndex == 6. ) { maxPrg = 0.55; logoPos = uLogoPos3; }\n if (groupIndex == 7. ) { maxPrg = 0.56; logoPos = uLogoPos2; }\n if (groupIndex == 8. ) { maxPrg = 0.60; logoPos = uLogoPos4; }\n if (groupIndex == 9. ) { maxPrg = 0.68; logoPos = uLogoPos6; }\n if (groupIndex == 10.) { maxPrg = 0.70; logoPos = uLogoPos5; }\n if (groupIndex == 11.) { maxPrg = 0.75; logoPos = uLogoPos7; }\n if (groupIndex == 12.) { maxPrg = 0.79; logoPos = uLogoPos6; }\n\n float l = uParticleBillsLineLength * 0.25;\n float a = max(0.,prg) - (l - startCurr);\n\n float b = (rand4) * 0.04;//dragging\n\n bool isAttracted = false;\n\n if ( a > maxPrg ) {\n gl_PointSize = 8.;\n vAlpha = 1.;\n float currR = min(1.,max(0., (a - maxPrg) / b ));\n prg += (maxPrg - a) + min(1., max(0., currR * b ));\n if (a > maxPrg * b) {\n float t = max(0., min(1.,( (a - maxPrg) - b ) / (0.4+0.1*rand5) ));\n t = t == 1.0 ? t : 1.0 - pow(2.0, -10.0 * t);\n attractionStrength = t; \n vAttracted = 1.;\n vec3 _col1 = vec3(90., 228., 192.)/255.;\n vec3 _col2 = vec3(206., 251., 170.)/255.;\n vec3 _col3 = vec3(255., 230., 167.)/255.;\n vec3 _col4 = vec3(255., 201., 89.)/255.;\n if ( t < 0.25 ) vColor = mix( _col1, _col2, t/0.25 );\n else if ( t < 0.50 ) vColor = mix( _col2, _col3, (t-0.25)/0.25 );\n else if ( t < 0.75 ) vColor = mix( _col3, _col4, (t-0.50)/0.25 );\n else {\n vColor = _col1;//vec3(1., 0., 0.);\n isAttracted = true;\n }\n }\n }\n\n float u = startCurr + max(0., prg);\n float u2 = startNext + max(0., prg);\n float u3 = startPrev + max(0., prg);\n vec3 currPos = getLogoPathAt( u );\n vec3 prevPos = getLogoPathAt( u2 );\n vec3 nextPos = getLogoPathAt( u3 );\n vec3 dir;\n if( nextPos == currPos ) {\n dir = normalize( currPos - prevPos );\n }\n else if( prevPos == currPos ) {\n dir = normalize( nextPos - currPos );\n }\n else {\n vec3 dir1 = normalize( currPos - prevPos );\n vec3 dir2 = normalize( nextPos - currPos );\n dir = normalize( dir1 + dir2 );\n }\n vec3 up = normalize( cross( vec3( dir ), normalize(vec3(0., 0., 1.) ) ) );//vec3( 0., 1., 0. );\n vec3 z = normalize( cross( vec3( dir ), up ) ).xyz;\n\n modifiedPosition = currPos + z * (((rand2-.5)*2.) * uParticleBillsLineThickness);\n modifiedPosition.x -= 0.5;\n\n modifiedPosition = mix( modifiedPosition, (logoPos+dest), attractionStrength );\n \n if (isAttracted) {\n vMetaballAlpha = min(1., max(0., 1. - (distance(logoPos, modifiedPosition)) / 0.25));\n //blob move\n vec3 _p = modifiedPosition + oo * 0.05;\n float b2 = pnoise( _p * 6. + vec3( uLocalTime * 7.* 0.004 ), vec3( 100.0 ) );\n float _displacement = b2 * 0.06 * 0.4;\n modifiedPosition += normalize(oo) * attractionStrength * _displacement;\n }\n\n }\n\n }\n \n // particle leak mode\n else if (uParticleMode == 12) {\n\t\t\tvec4 c = texture2D( oPosition, vUv );\n float rand = speed;\n float rand2 = particleRandom;\n float rand3 = particleRandom2;\n float rand4 = particleRandom3;\n float rand5 = particleRandom4;\n float r = mod( max(0., uLocalTime * 0.4 * (.01+.02*particleRandom4) + particleIndex * (0.07) + particleRandom * 0.05 ), 2. ) ; \n vec3 pos = ( vec3( (particleRandom-.5) * 2., 0., (particleRandom2-.5) * 2. ) ) * (0.02 + 0.01 * uSpread) * (1. - (r) );\n pos += vec3(0., -1., 0.) * r;\n modifiedPosition.xyz = pos;\n vColor = mix( col1, vec3(1., 0.95, 0.72), min(1.,max(0., r / (0.1 + 0.3 * rand))) );\n vAlpha = 1. - max(0., r / (0.1 + 0.3 * particleRandom3));\n vColor = mix( vColor, vec3(1.), 1. - vAlpha );\n gl_PointSize = 8.;\n\t\t}\n\n // Aside purple dots\n else if (uParticleMode == 13) {\n\t\t\tvec4 c = texture2D( oPosition, vUv );\n float rand = speed;\n float rand2 = particleRandom;\n float rand3 = particleRandom2;\n float rand4 = particleRandom3;\n float rand5 = particleRandom4;\n float r = mod( max(0., uLocalTime * 0.4 * (.01+.02*particleRandom4) + particleIndex * (0.07) + particleRandom * 0.05 ), 2. ) ; \n vec3 pos = ( vec3( (particleRandom-.5) * 2., 0., (particleRandom2-.5) * 2. ) ) * (0.1);\n pos += vec3(0., 1., 0.) * r;\n modifiedPosition.xyz = pos;\n vColor =vec3(6., 36., 244.) / 255.;// mix( col1, vec3(1., 0.95, 0.72), min(1.,max(0., r / (0.1 + 0.3 * rand))) );\n float aa = (1. - (0.8 * particleRandom3));\n vAlpha = uProgress * (1. - (0.8 * particleRandom3));\n vColor = mix( vColor, vec3(1.), 1. - vAlpha );\n gl_PointSize = (15. * uDevicePixelRatio * vAlpha);\n\t\t}\n\n // logo attraction(we use life to set metalball alpha/state)\n // Wallet emitter\n else if(uParticleMode == 4 || uParticleMode == 0) {\n vColor = col1;\n gl_PointSize = uPointSize;\n }\n\n\n // MODE DEFAULT\n else {\n vColor = col1;\n gl_PointSize = uPointSize * (life>1. ? 0. : life);\n }\n\n if (uParticleMode != 0) {\n gl_PointSize *= 1.2;//because we now use fake AA that reduces the particle size\n }\n\n if (uMetalballPass == 1) {\n vColor = vec3(1.);\n gl_PointSize *= 9.;\n }\n\n\n\n\n }\n\n\n vPointSize = gl_PointSize;\n\n gl_Position = uPMatrix * uMVMatrix * vec4( modifiedPosition, 1.0);\n\n\n //MASK SCREEN OFFSET \n //TODO rename this to something more generate, like \'uCameraClipOffset\'\n gl_Position.y += ((uMaskOffsetY*uDevicePixelRatio)/(uResolution.y) * 2.) * gl_Position.w;// uMaskOffsetY / (uResolution.y/0.5) * -1.;////;\n\n\n\n}',Gt="precision highp float;\nprecision highp int;\n\nuniform int uParticleMode;\nuniform float uAlpha;\nuniform int uParticleType;\nuniform int uMetalballPass;\nuniform float uProgress;\nuniform vec2 uResolution;\nuniform float uDevicePixelRatio;\nuniform int uXray;\n\nvarying vec2 vUv;\nvarying vec3 vColor;\nvarying float vLife;\nvarying float vAttracted;\nvarying float vMetaballAlpha;\nvarying float vParticleIndex;\nvarying float vPointSize;\n\nvarying float vAlpha;\n\nvoid main(void) {\n\n vec3 c = vColor;\n \n float a = 1.;\n\n if (uParticleType == 1) {\n // cubes\n }\n\n else if (uMetalballPass == 1) {\n\n if (uParticleMode != 8 && uParticleMode != 10) {\n a *= uProgress > 0.3 ? min(1.,(uProgress-0.3) / 0.4) : 0.;\n }\n\n // // LOGO + BILLS : blob shape around logo only\n if (uParticleMode == 10 ) {\n a = 1.;\n a *= vMetaballAlpha;\n if (vParticleIndex < 8.) {\n a = 1.;\n }\n }\n\n // logos attraction circle\n if (uParticleMode == 4) {\n a = vLife > 0.9 ? 1. : 0.;\n }\n \n //radial gradient shape\n float dist = distance(gl_PointCoord.xy, vec2(0.5)) * 2.0;\n c = vec3(1.);\n a *= (1. - dist) * 0.3;\n\n if (a <= 0.0001) {\n discard;\n }\n\n }\n\n else {\n\n float pixelSize = uDevicePixelRatio / vPointSize;\n \n // circle shape\n float l = length( gl_PointCoord.xy - 0.5 ) / 0.5;\n\n // circle AA shape\n if (uParticleMode != 0) {\n if ( l > 1. - pixelSize*2. ) {\n float r = min(1., max(0., (l-(1.-pixelSize*2.)) / pixelSize ));\n a *= 1. - r;\n }\n }\n\n // black outline\n // for: Arc | particles | particle bill\n if (uParticleMode == 12 || // emitter\n uParticleMode == 13 ||\n uParticleMode == 1 || // arc\n uParticleMode == 7 || // multi arcs\n uParticleMode == 4 || // logo atrtraction\n uParticleMode == 8 || // logo blobs to center\n uParticleMode == 11 || // wallet emiter\n (uParticleMode == 10 && vAttracted == 1.) ) {\n if ( l > 1. - pixelSize*2.5 ) {\n float r = min(1., max(0., (l-(1.-pixelSize*2.5)) / pixelSize*0.5 ));\n c = mix( c, vec3(0.), r );\n }\n }\n\n // arc or multi-arc: enter/leave\n if (uParticleMode == 1 || uParticleMode == 7) {\n if (vLife < 0.01 || vLife > 0.99) {\n discard;\n }\n }\n\n // glowy rocket \n if (uParticleMode == 2) {\n if (uProgress <= 2.) {\n c = vec3(123., 250., 252.) / 255.;\n\t\t\t}\n\t\t\telse {\n c = vec3(117., 141., 247.) / 255.;\n\t\t\t}\n c *= 2.;\n }\n\n\n if (a * uAlpha < 0.001) {\n discard;\n }\n\n }\n\n if (a * uAlpha * vAlpha < 0.001) {\n discard;\n }\n\n\n gl_FragColor = vec4( c, a * uAlpha * vAlpha);\n}";let Ut,jt,Ht,Vt;class Xt extends We{constructor(e,t){t=Object.assign({},{color1:[90/255,228/255,192/255],color2:[254/255,247/255,193/255],color3:[1,196/255,171/255],alpha:1,pointSize:6,targetMode:0,particleType:"POINTS",autoRotate:!1,bufferSize:[Tt.particleBufferSize[0],Tt.particleBufferSize[1]]},t),window.inenrWidth<1e3&&(t.bufferSize[0]=Math.min(25,.5*t.bufferSize[0]),t.bufferSize[1]=Math.min(25,.5*t.bufferSize[1])),super(t),this.options.beforeRender=this.beforeRender.bind(this),this.uniforms={},this.bufferSize=t.bufferSize,this.particleType=t.particleType,this.alpha=t.alpha,this.pointSize=t.pointSize,this.color1=t.color1,this.color2=t.color2,this.color3=t.color3,this.autoRotate=t.autoRotate,this.targetMode=0,this.progress=0;let i=this.bufferSize[0]*this.bufferSize[1],n=new Float32Array(4*i*3),s=new Float32Array(4*i*3),o=new Float32Array(4*i),a=new Float32Array(4*i),r=new Float32Array(4*i);for(let e=0;e\n\tif (uParticlesTargetMode == 6) {\n\t\tfloat num = uParticleResolution.x * uParticleResolution.y;\n\t\tfloat pi = (vUv.y*uParticleResolution.y) * uParticleResolution.x + vUv.x * uParticleResolution.x;\n\t\ttarget.x = (random(gl_FragCoord.xy) - .5) * 2.;//texture2D( squarePosition, vUv).xyz;\n\t\ttarget.y = (random(gl_FragCoord.yx) - .5) * 2. * 0.3;\n\t\ttarget.x += 0.7;\n\t\tif (pi < num / 2.) {\n\t\t\ttarget = target * rotateZ( 3.14 / 4. * 1. );\n\t\t}\n\t\telse {\n\t\t\ttarget = target * rotateZ( 3.14 / 4. * -1. );\n\t\t}\n\t\ttarget.x -= 0.5;\n\t\ttarget = target * rotateZ( 3.14 );\n\t\ttarget *= 0.5;\n\t}\n\n\t// Expo curve\n\tif (uParticlesTargetMode == 7) {\n\t\tfloat rand = random(gl_FragCoord.xy);\n\t\ttarget.x = rand * 1. - 0.5;\n\t\ttarget.y = pow(rand * 1., 5.0) * 1. - 0.5;\n\t\ttarget += texture2D( oPosition, vUv).rgb * 0.02;\n\t}\n\n\tpos += ( target - pos ) * 0.03;\n\n\tgl_FragColor = vec4( (pos), life );\n\n}",depthTest:!1,blend:!1}),this.positionMaterial=Vt}beforeRender(){for(let e in this.uniforms)_t(this.material.uniforms,e,this.uniforms[e]),_t(this.positionMaterial.uniforms,e,this.uniforms[e])}simulate(e,t,i,n){this.uniforms.tPosition=this.positionReadBuffer,this.uniforms.oPosition=this.originPositionTexture,this.uniforms.squarePosition=this.squarePositionTexture,this.uniforms.uParticleResolution=this.bufferSize,this.uniforms.uParticlesTargetMode=this.targetMode,this.uniforms.uProgress=this.progress;for(let e in this.uniforms)_t(this.material.uniforms,e,this.uniforms[e]),_t(this.positionMaterial.uniforms,e,this.uniforms[e]);i.scale[0]=this.bufferSize[0],i.scale[1]=this.bufferSize[1],n.left=-this.bufferSize[0]/2,n.right=this.bufferSize[0]/2,n.top=this.bufferSize[1]/2,n.bottom=-this.bufferSize[1]/2,n.updateProjectionMatrix(),i.material=this.positionMaterial,e.clearColor(0,0,-1),e.clear(),e.render(t,n,this.positionWriteBuffer),this.uniforms.tPrevPosition=this.positionReadBuffer,this.uniforms.hasRenderedOnce=1;let s=this.positionWriteBuffer;this.positionWriteBuffer=this.positionReadBuffer,this.positionReadBuffer=s}updateUniforms(e){this.uniforms.uTime=e,this.uniforms.uParticleResolution=this.bufferSize,this.uniforms.uColor1=this.color1,this.uniforms.uColor2=this.color2,this.uniforms.uColor3=this.color3,this.uniforms.uAlpha=this.alpha,this.uniforms.uPointSize=this.pointSize,this.uniforms.uProgress=this.progress,this.uniforms.uAutoRotate=this.autoRotate?1:0,this.uniforms.uParticleType="POINTS"===this.particleType?0:1}}let Wt,Kt,Yt={};window.particleSystemTextureCache=Yt;let qt={};class Jt extends We{constructor(e,t){t=Object.assign({},{bufferSize:Tt.particleBufferSize,startPos:[0,.05,-.25],endPos:[0,.05,.25],particleStep:.001,color1:[90/255,228/255,192/255],color2:[254/255,247/255,193/255],color3:[1,196/255,171/255],origin:[0,0,0],alpha:1,pointSize:6,particleGeometry:null,particleType:"POINTS",wireframe:!1,particleSize:.1,depthTest:!1,gpgpu:!0,mode:0,reverse:!1,autoRotate:!1},t),window.inenrWidth<1e3&&(t.bufferSize[0]=Math.min(25,.5*t.bufferSize[0]),t.bufferSize[1]=Math.min(25,.5*t.bufferSize[1]),t.particleStep*=4),super(t),this.options.beforeRender=this.beforeRender.bind(this),t.particleGeometry&&(this.particleGeometry=t.particleGeometry),this.bufferSize=t.bufferSize,this.spread=1,this.reverse=!1,this.gpgpu=t.gpgpu,this.particleType=t.particleType,this.autoRotate=t.autoRotate,this.pointSize=t.pointSize,this.particleSize=t.particleSize,this.alpha=t.alpha,this.progress=0,this.origin=t.origin,this.color1=t.color1,this.color2=t.color2,this.color3=t.color3,this.startPos=t.startPos,this.endPos=t.endPos,this.mode=t.mode,this.localTime=0,this.particleStep=t.particleStep,this.position[1]=0,Kt=Kt||new st(e,{width:1,height:1});let i=Kt,n=this.bufferSize[0]*this.bufferSize[1],s=i.attributes.position.data.length/3,o=new Float32Array(n*s*3),a=new Float32Array(n*s*3),r=new Float32Array(n*s),l=new Float32Array(n*s),c=new Float32Array(n*s),h=new Float32Array(n*s),d=new Float32Array(n*s),u=new Float32Array(n*s);for(let e=0;e= 0.) {\n\t\t\t\tpos += normalize(c.rgb) * 0.0005;\n\t\t\t}\n\t\t\tif (life > 1. || life <= 0.) {\n\t\t\t\tpos = vec3(0.);\n\t\t\t}\n\t\t\tif (life <= 0.) {\n\t\t\t\tlife = 1.;\n\t\t\t}\n\t\t\tlife -= (0.02 + 0.02 * c.a) * 0.15;\n\t\t}\n\n\n\t\tif (uParticleMode == 12) {\n\t\t\tvec4 c = texture2D( oPosition, vUv );\n\t\t\tif (life <= 1. && life >= 0.) {\n\t\t\t\tpos += normalize(c.rgb) * 0.0001;\n\t\t\t\tpos += vec3(0., -1., 0.) * 0.004;\n\t\t\t}\n\t\t\tif (life > 1. || life <= 0.) {\n\t\t\t\tpos = vec3(0.);\n\t\t\t}\n\t\t\tif (life <= 0.) {\n\t\t\t\tlife = 1.;\n\t\t\t}\n\t\t\tlife -= (0.02 + 0.02 * c.a) * 0.15;\n\t\t}\n\n\t\tif (uParticleMode == 13) {\n\t\t\tvec4 c = texture2D( oPosition, vUv );\n\t\t\tif (life <= 1. && life >= 0.) {\n\t\t\t\tpos += normalize(c.rgb) * 0.0003;\n\t\t\t\tpos += vec3(0., 1., 0.) * 0.004;\n\t\t\t}\n\t\t\tif (life > 1. || life <= 0.) {\n\t\t\t\tpos = vec3(0.);\n\t\t\t}\n\t\t\tif (life <= 0.) {\n\t\t\t\tlife = 1.;\n\t\t\t}\n\t\t\tlife -= (0.02 + 0.02 * c.a) * 0.001;\n\t\t}\n\n\t\t//ARC FLOW: from startPos to endPos\n\t\tif (uParticleMode == 1) {\n\t\t\tfloat particleIndex = floor( ( floor( vUv.y * uParticleResolution.y) * uParticleResolution.x ) + floor( vUv.x * uParticleResolution.x ) );\n\t\t\tfloat rand = texture2D( oPosition, vUv ).a;\n\t\t\tfloat rand2 = fract( rand + 1.61803398874989484820 );\n\t\t\tfloat rand3 = fract( rand2 + 1.61803398874989484820 );\n\t\t\tvec3 oo = texture2D( oPosition, vUv ).rgb;\n\t\t\tfloat r = (uProgress*2.) - (particleIndex * uParticleStep) - rand * 0.02;\n\t\t\t \n\t\t\tvec3 start = uStartPos + oo * vec3(rand,rand2,rand3) * 0.005;\n\t\t\tvec3 end = uEndPos + oo * vec3(rand,rand2,rand3) * 0.05 * uSpread;\n\t\t\tfloat verticalOffset = sin(min(1.,max(0.,r)) * 3.14) * 0.35 * (0.8 + (0.2 * rand * uSpread) );\n\t\t\tif (uReverse == 1) {\n\t\t\t\tverticalOffset *= -1.;\n\t\t\t}\n\t\t\tpos = vec3(\n\t\t\t\tstart.x + (end.x-start.x) * min(1.,max(0.,r)),\n\t\t\t\tstart.y + (end.y-start.y) * min(1.,max(0.,r)) + verticalOffset,\n\t\t\t\tstart.z + (end.z-start.z) * min(1.,max(0.,r))\n\t\t\t);\n\t\t\tlife = r;\n\t\t}\n\n\t\t// Rocket TRAIL\n\t\tif (uParticleMode == 2) {\n\n\t\t\tfloat uu = 0.;\n\t\t\tfloat currentStep = 0.;\n\n\t\t\tif (uProgress <= 1.) {\n\t\t\t\tuu = uProgress;\n\t\t\t\tcurrentStep = 0.;\n\t\t\t}\n\t\t\telse if (uProgress <= 2.) {\n\t\t\t\tuu = uProgress - 1.;\n\t\t\t\tcurrentStep = 1.;\n\t\t\t}\n\t\t\telse if (uProgress <= 3.) {\n\t\t\t\tuu = uProgress - 2.;\n\t\t\t\tcurrentStep = 2.;\n\t\t\t}\n\n\t\t\tfloat particleIndex = floor( ( floor( vUv.y * uParticleResolution.y) * uParticleResolution.x ) + floor( vUv.x * uParticleResolution.x ) );\n\t\t\tfloat rand = texture2D( oPosition, vUv ).a;\n\t\t\tfloat r = ( (uu*1.3 - particleIndex * 0.0005 - rand * 0.0005)); \n\n\t\t\tlife = 1.;\n\t\t\t\n\t\t\tif (r < 0. || r > 1.) {\n\t\t\t\tlife = 0.;\n\t\t\t}\n\n\t\t\tr = max(0., min(1., r));\n\n\t\t\t//stopped some particles before end\n\t\t\tif ( mod(particleIndex, 2.) == 0.){\n\t\t\t\tif (r > ((rand))){\n\t\t\t\t\tlife = 1. - ((r - (rand)) / (1.-((rand))));\n\t\t\t\t}\n\t\t\t\tr = min( r, (rand) );\n\t\t\t}\n\n\t\t\tr = 1. - r;\n\n\t\t\t//enter from left of screen\n\t\t\tif( currentStep == 0.) {\n\t\t\t\tpos = vec3(\n\t\t\t\t\t(r) * -3./2. * (uResolution.x/uResolution.y) + 0.25, \n\t\t\t\t\t0.,\n\t\t\t\t\t0.\n\t\t\t\t);\n\t\t\t}\n\t\t\t//leave to right of screen\n\t\t\telse if ( currentStep == 1. ) {\n\t\t\t\tpos = vec3(\n\t\t\t\t\t(1. - r) * 2. * (uResolution.x/uResolution.y) + 0.25, \n\t\t\t\t\t0.,\n\t\t\t\t\t0.\n\t\t\t\t);\n\t\t\t}\n\t\t\t//re enter spiral\n\t\t\telse{\n\t\t\t\tpos = vec3(\n\t\t\t\t\tcos(r*(3.14*3. + 3.14/2. + 3.14/2.) + 3.14/2. - 3.14/2. + 0.4) * (3./2. * (uResolution.x/uResolution.y) * r + 0.22), \n\t\t\t\t\tsin(r*(3.14*3. + 3.14/2. + 3.14/2.) + 3.14/2. - 3.14/2. + 0.4) * (3./2. * (uResolution.x/uResolution.y) * r + 0.22) - 0.1, \n\t\t\t\t\t0.\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tvec3 oo = texture2D( oPosition, vUv ).rgb * ( min(1., particleIndex/10.) * 0.015) * max(0., min(1., ( 600. - particleIndex)/600.));\n\n\t\t\t//thinner rocket for enter and leave\n\t\t\tif (currentStep == 0. || currentStep == 1.) {\n\t\t\t\too = texture2D( oPosition, vUv ).rgb * ( min(1., particleIndex/10.) * 0.005) * max(0., min(1., ( 600. - particleIndex)/600.));\n\t\t\t}\n\t\t\tpos += oo;\n\n\t\t}\n\n\t\t// INFINITE SIGN TRAIL\n\t\tif (uParticleMode == 3) {\n\t\t\tif (life <= 0.) {\n\t\t\t\tvec3 start = uStartPos;\n\t\t\t\tvec3 end = uEndPos;\n\t\t\t\tvec3 center = start + ((end - start) / 2.);\n\t\t\t\t\n\t\t\t\tvec3 diff = start-end;\n\n\t\t\t\tfloat dist = distance(start,end) / 2.;\n\t\t\t\t//add radius of spiral\n\t\t\t\tdist += 0.05;\n\n\t\t\t\tpos = vec3(\n\t\t\t\t\tcos( uLocalTime * -0.2 ) * 1. * dist,\n\t\t\t\t\tsin( uLocalTime * -0.2 * 2.) * .3 * dist,\n\t\t\t\t\t0.\n\t\t\t\t);\n\n\t\t\t\tfloat x1 = 0.;\n\t\t\t\tfloat y1 = 1.;\n\t\t\t\tfloat x2 = diff.x;\n\t\t\t\tfloat y2 = diff.y;\n\t\t\t\tfloat doo = x1*x2 + y1*y2; \n\t\t\t\tfloat det = x1*y2 - y1*x2; \n\t\t\t\tfloat angle = atan(doo, det); \n\t\t\t\tpos = pos * rotateZ( angle );\n\t\t\t\t\n\t\t\t\tpos += center;\n\n\t\t\t\tlife = 1.;\n\t\t\t}\n\t\t\tlife -= uParticleStep;// * (0.5 + 0.5 * speed);\n\t\t}\n\n\t\t//Logo Attraction circle\n\t\tif (uParticleMode == 4) {\n\t\t\tfloat numParticles = uParticleResolution.x * uParticleResolution.y;\n\t\t\tfloat particleIndex = floor( ( floor( vUv.y * uParticleResolution.y) * uParticleResolution.x ) + floor( vUv.x * uParticleResolution.x ) );\n\t\t\tfloat rand = texture2D( oPosition, vUv ).a;\n\t\t\tfloat rand2 = fract( rand + 1.61803398874989484820 );\n\t\t\tfloat rand3 = fract( rand2 + 1.61803398874989484820 );\n\t\t\tvec3 oo = texture2D( oPosition, vUv ).rgb;\n\t\t\tfloat groupIndex = floor(rand * 8.);\n\t\t\tfloat groupRand = random(vec2(groupIndex , -groupIndex));\n\n\t\t\tfloat r = (uProgress*4.) - (particleIndex * uParticleStep * 1.) - rand3 * 0.05;\n\t\t\tr = min(1.,max(0.,r));\n\t\t\tr = exponentialOut(r);\n\n\t\t\tvec3 start = vec3(0.);\n\t\t\tvec3 end;\n\t\t\tif ( groupIndex == 0. ) { start = vec3(0.15, 0.02, 0.); end = uLogoPos0; }\n\t\t\tif ( groupIndex == 1. ) { start = vec3(0.07, 0.06, -0.05); end = uLogoPos1; }\n\t\t\tif ( groupIndex == 2. ) { start = vec3(-0.03, 0.08, -0.04); end = uLogoPos2; }\n\t\t\tif ( groupIndex == 3. ) { start = vec3(-0.09, 0.05, 0.); end = uLogoPos3; }\n\t\t\tif ( groupIndex == 4. ) { start = vec3(-0.19, -0.01, 0.); end = uLogoPos4; }\n\t\t\tif ( groupIndex == 5. ) { start = vec3(-0.13, -0.11, 0.); end = uLogoPos5; }\n\t\t\tif ( groupIndex == 6. ) { start = vec3(0., -0.1, 0.); end = uLogoPos6; }\n\t\t\tif ( groupIndex == 7. ) { start = vec3(0.07, -0.08, 0.); end = uLogoPos7; }\n\t\t\t//move particles group closer to the center of wallet, but slighlty toward dart hit pos\n\t\t\tstart += (vec3(0.) - start) * 0.6;\n\t\t\tstart += oo * 0.04 * (0.2 + 0.8 * random(gl_FragCoord.xy) );\n\n\t\t\tend += oo * 0.025;\n\n\t\t\t//use diff pos for for noise to get better repartition\n\t\t\tvec3 _p = vec3(\n\t\t\t\tcos( floor(rand * 8.)/8. * 3.14 * 2. ) * 0.35,\n\t\t\t\tsin( floor(rand * 8.)/8. * 3.14 * 2. ) * 0.35,\n\t\t\t\t0.\n\t\t\t) + oo * 0.05;\n\t\t\tfloat b2 = pnoise( _p * 6. + vec3( uLocalTime * 7.* 0.005 ), vec3( 100.0 ) );\n\t\t\tfloat _displacement = b2 * 0.06 * 0.5;\n\n\n\t\t\tstart += normalize(_p) * _displacement * (1. + (1. - r));\n\t\t\tend += normalize(_p) * _displacement * (1. + (1. - r));\n\n\t\t\tstart *= 0.7;//closer to wallet\n\n\t\t\tpos = vec3(\n\t\t\t\tstart.x + (end.x-start.x) * r,\n\t\t\t\tstart.y + (end.y-start.y) * r,\n\t\t\t\tstart.z + (end.z-start.z) * r\n\t\t\t);\n\n\t\t\tlife = r;\n\t\t}\n\n\n\n\t\t//Logo blobs to center\n\t\tif (uParticleMode == 8) {\n\n\t\t\tfloat numParticles = uParticleResolution.x * uParticleResolution.y;\n\t\t\tfloat particleIndex = floor( ( floor( vUv.y * uParticleResolution.y) * uParticleResolution.x ) + floor( vUv.x * uParticleResolution.x ) );\n\t\t\tfloat rand = texture2D( oPosition, vUv ).a;\n\t\t\tfloat rand2 = fract( rand + 1.61803398874989484820 );\n\t\t\tfloat rand3 = fract( rand2 + 1.61803398874989484820 );\n\t\t\tvec3 oo = texture2D( oPosition, vUv ).rgb;\n\t\t\tfloat groupIndex = floor(rand * 8.);\n\t\t\tfloat groupRand = random(vec2(groupIndex , -groupIndex));\n\n\t\t\tfloat r = (uProgress*3.) * (1. + groupRand*0.25 - particleIndex * uParticleStep*0.5);\n\n\t\t\tfloat rotateRand = (min(1., max(0., r))) * 3.14 * 2. * (groupRand<0.5?-1.:1.) * (0.5+0.5*groupRand );\n\n\t\t\tvec3 start = vec3(\n\t\t\t\tcos( floor(groupIndex)/8. * 3.14 * 2. + rotateRand),\n\t\t\t\tsin( floor(groupIndex)/8. * 3.14 * 2. + rotateRand),\n\t\t\t\t0.\n\t\t\t) * 0.32 * (1. - min(1., max(0., r))) + oo * 0.025;\n\n\t\t\t//use diff pos for for noise to get better repartition\n\t\t\tvec3 _p = vec3(\n\t\t\t\tcos( floor(groupIndex)/8. * 3.14 * 2. ) * 0.35,\n\t\t\t\tsin( floor(groupIndex)/8. * 3.14 * 2. ) * 0.35,\n\t\t\t\t0.\n\t\t\t) + oo * 0.05;\n\t\t\tfloat b2 = pnoise( _p * 6. + vec3( uLocalTime * 7.* 0.005 ), vec3( 100.0 ) );\n\t\t\tfloat _displacement = b2 * 0.06 * 0.5;\n\n\t\t\tstart += normalize(_p) * _displacement;\n\t\t\tpos = start;\n\t\t\tlife = 1.;\n\t\t}\n\n\n\n\n\t\t//Blob / Radioactive\n\t\tif (uParticleMode == 5) {\n\t\t\tfloat numParticles = uParticleResolution.x * uParticleResolution.y;\n\t\t\tfloat particleIndex = floor( ( floor( vUv.y * uParticleResolution.y) * uParticleResolution.x ) + floor( vUv.x * uParticleResolution.x ) );\n\t\t\tfloat rand = texture2D( oPosition, vUv ).a;\n\t\t\tfloat rand2 = fract( rand + 1.61803398874989484820 );\n\t\t\tfloat rand3 = fract( rand2 + 1.61803398874989484820 );\n\t\t\tvec3 oo = texture2D( oPosition, vUv ).rgb;\n\t\t\t\n\t\t\tvec3 _p = vec3(\n\t\t\t\tcos( floor(rand * 8.)/8. * 3.14 * 2. ) * 0.35,\n\t\t\t\tsin( floor(rand * 8.)/8. * 3.14 * 2. ) * 0.35,\n\t\t\t\t0.\n\t\t\t) * min(1., max(0., 1. - (uProgress*2.7 + oo.r*oo.g*oo.b ))) + (uProgress*0.75 + 0.25) * oo * 0.05;\n\t\t\tvec3 start = _p;\n\t\t\tfloat b2 = pnoise( pos * 6. + vec3( uLocalTime * 7.* 0.005 ), vec3( 100.0 ) );\n\t\t\tfloat _displacement = b2 * 0.03;\n\t\t\tstart += normalize(_p) * 0.03 + (_displacement);\n\n\t\t\tpos = vec3(\n\t\t\t\tstart.x,\n\t\t\t\tstart.y,\n\t\t\t\tstart.z\n\t\t\t);\n\n\t\t\tlife = ((sin((uLocalTime * (0.1 + rand*0.1) + rand * 2.) ) + 1.) / 2.);\n\t\t}\n\n\t\t// EXPLOSION\n\t\tif (uParticleMode == 6) {\n\t\t\tfloat numParticles = uParticleResolution.x * uParticleResolution.y;\n\t\t\tfloat particleIndex = floor( ( floor( vUv.y * uParticleResolution.y) * uParticleResolution.x ) + floor( vUv.x * uParticleResolution.x ) );\n\t\t\tfloat rand = texture2D( oPosition, vUv ).a;\n\t\t\tfloat rand2 = fract( rand + 1.61803398874989484820 );\n\t\t\tfloat rand3 = fract( rand2 + 1.61803398874989484820 );\n\t\t\tvec3 oo = texture2D( oPosition, vUv ).rgb;\n\t\t\t\n\t\t\tfloat u = 1. - uProgress;\n\t\t\tvec3 p = oo * min(1., max(0., 1. - (u - rand * 0.1 ))) * 3. + oo * 0.01;\n\n\t\t\tpos = p;\n\n\t\t\tlife = ((sin((uLocalTime * (0.1 + rand*0.1) + rand) ) + 1.) / 2.);\n\t\t}\n\n\t\t//ARC FLOW: 20 ARCS \n\t\tif (uParticleMode == 7) \n\t\t{\n\t\t\tfloat numParticles = uParticleResolution.x * uParticleResolution.y;\n\t\t\tfloat particleIndex = floor( ( floor( vUv.y * uParticleResolution.y -1.) * uParticleResolution.x ) + floor( vUv.x * uParticleResolution.x ) );\n\t\t\tvec4 o = texture2D( oPosition, vUv );\n\t\t\tvec3 oo = o.rgb;\n\t\t\tfloat rand = o.a;\n\n\t\t\tfloat groupIndex = floor(particleIndex / 100.);\n\t\t\t\n\t\t\tvec3 groupPos;\n\t\t\tgroupPos.x = (mod( groupIndex, 6. ) - 3.) * 0.25 ;\n\t\t\tgroupPos.z = (floor( groupIndex / 6. ) - 3.) * 0.25 ;\n\n\t\t\tif ( mod( floor( groupIndex / 6. ), 2. ) != 0. ) {\n\t\t\t\tgroupPos.x += 0.25 * 0.5;\n\t\t\t}\n\n\t\t\tfloat r = (uProgress*3.) - (max(0., particleIndex - (groupIndex)*100.) * uParticleStep * 10.);// - random(gl_FragCoord.xy) * 0.03;\n\n\t\t\tvec3 start = groupPos * 3.;\n\t\t\tvec3 end = vec3(0.) + oo * 0.015;\n\n\t\t\t// left neighbourg\n\t\t\tif (groupIndex == 20.) {\n\t\t\t\tstart.x += .1;\n\t\t\t}\n\t\t\t// right neighbourg\n\t\t\telse if (groupIndex == 21.) {\n\t\t\t\t// r += 0.5;\n\t\t\t\tstart.x -= .15;\n\t\t\t}\n\n\t\t\tpos = vec3(\n\t\t\t\tstart.x + (end.x-start.x) * min(1.,max(0.,r)),\n\t\t\t\tstart.y + (end.y-start.y) * min(1.,max(0.,r)) + sin(min(1.,max(0.,r)) * 3.14) * (0.35),\n\t\t\t\tstart.z + (end.z-start.z) * min(1.,max(0.,r))\n\t\t\t);\n\t\t\tlife = min(1., max(0., r));\n\t\t}\n\n\t\t//Multi infinite \n\t\tif (uParticleMode == 9) \n\t\t{\n\t\t\tif (life <= 0.) {\n\n\t\t\t\tfloat numParticles = uParticleResolution.x * uParticleResolution.y;\n\t\t\t\tfloat particleIndex = floor( ( floor( vUv.y * uParticleResolution.y) * uParticleResolution.x ) + floor( vUv.x * uParticleResolution.x ) );\n\t\t\t\tfloat groupIndex = floor(particleIndex / 100.);\n\n\t\t\t\tvec3 start = getGoldenRatioPos( groupIndex );\n\t\t\t\tvec3 end = getGoldenRatioPos( groupIndex + 1. );\n\t\t\t\tvec3 center = start + ((end - start) / 2.);\n\t\t\t\tvec3 diff = start-end;\n\t\t\t\tfloat dist = distance(start,end) / 2.;\n\t\t\t\t//add radius of spiral\n\t\t\t\tdist += 0.05;\n\t\t\t\tpos = vec3(\n\t\t\t\t\tcos( uLocalTime * -0.2 ) * 1. * dist,\n\t\t\t\t\tsin( uLocalTime * -0.2 * 2.) * .3 * dist,\n\t\t\t\t\t0.\n\t\t\t\t);\n\t\t\t\tfloat x1 = 0.;\n\t\t\t\tfloat y1 = 1.;\n\t\t\t\tfloat x2 = diff.x;\n\t\t\t\tfloat y2 = diff.y;\n\t\t\t\tfloat doo = x1*x2 + y1*y2; \n\t\t\t\tfloat det = x1*y2 - y1*x2; \n\t\t\t\tfloat angle = atan(doo, det); \n\t\t\t\tpos = pos * rotateZ( angle );\n\t\t\t\tpos += center;\n\t\t\t\tlife = 1.;\n\n\t\t\t}\n\n\t\t\tlife -= uParticleStep;// * (0.5 + 0.5 * speed);\n\t\t}\n\n\n\t\t//Wallet dart emitter\n\t\tif (uParticleMode == 11) {\n\t\t\tfloat numParticles = uParticleResolution.x * uParticleResolution.y;\n\t\t\tfloat particleIndex = floor( ( floor( vUv.y * uParticleResolution.y) * uParticleResolution.x ) + floor( vUv.x * uParticleResolution.x ) );\n\t\t\tfloat rand = texture2D( oPosition, vUv ).a;\n\t\t\tfloat rand2 = fract( rand + 1.61803398874989484820 );\n\t\t\tfloat rand3 = fract( rand2 + 1.61803398874989484820 );\n\t\t\tvec3 oo = texture2D( oPosition, vUv ).rgb;\n\t\t\tfloat groupIndex = floor(rand * 8.);\n\t\t\tfloat groupRand = random(vec2(groupIndex , -groupIndex));\n\n\t\t\tfloat r = uProgress;\n\t\t\tr = min(1.,max(0.,r));\n\t\t\t\n\t\t\tfloat _r = 0.;\n\n\t\t\tvec3 start = vec3(0.);\n\t\t\tif ( groupIndex == 0. ) { _r = max(0., min(1., (r - 0.00 -random(gl_FragCoord.xy)*0.3 )/(0.05*random(gl_FragCoord.yx)) ) ); start = vec3(0.15, 0.02, 0.); }\n\t\t\tif ( groupIndex == 1. && r > 0.18 ) { _r = max(0., min(1., (r - 0.18 -random(gl_FragCoord.xy)*0.3 )/(0.05*random(gl_FragCoord.yx)) ) ); start = vec3(0.07, 0.06, -0.05); }\n\t\t\tif ( groupIndex == 2. && r > 0.45 ) { _r = max(0., min(1., (r - 0.45 -random(gl_FragCoord.xy)*0.3 )/(0.05*random(gl_FragCoord.yx)) ) ); start = vec3(-0.03, 0.08, -0.04); }\n\t\t\tif ( groupIndex == 3. && r > 0.55 ) { _r = max(0., min(1., (r - 0.55 -random(gl_FragCoord.xy)*0.3 )/(0.05*random(gl_FragCoord.yx)) ) ); start = vec3(-0.09, 0.05, 0.); }\n\t\t\tif ( groupIndex == 4. && r > 0.61 ) { _r = max(0., min(1., (r - 0.61 -random(gl_FragCoord.xy)*0.3 )/(0.05*random(gl_FragCoord.yx)) ) ); start = vec3(-0.19, -0.01, 0.); }\n\t\t\tif ( groupIndex == 5. && r > 0.72 ) { _r = max(0., min(1., (r - 0.72 -random(gl_FragCoord.xy)*0.3 )/(0.05*random(gl_FragCoord.yx)) ) ); start = vec3(-0.13, -0.11, 0.); }\n\t\t\tif ( groupIndex == 6. && r > 0.78 ) { _r = max(0., min(1., (r - 0.78 -random(gl_FragCoord.xy)*0.3 )/(0.05*random(gl_FragCoord.yx)) ) ); start = vec3(0., -0.1, 0.); }\n\t\t\tif ( groupIndex == 7. && r > 0.93 ) { _r = max(0., min(1., (r - 0.93 -random(gl_FragCoord.xy)*0.3 )/(0.05*random(gl_FragCoord.yx)) ) ); start = vec3(0.07, -0.08, 0.); }\n\n\t\t\t// easingOutQuad\n\t\t\t_r = -_r * (_r - 2.0);\n\n\t\t\t//move particles group closer to the center of wallet, but slighlty toward dart hit pos\n\t\t\tstart += (vec3(0.) - start) * 0.6;\n\n\t\t\tstart += oo * _r * 0.04 * (0.2 + 0.8 * random(gl_FragCoord.xy) );\n\n\t\t\t//use diff pos for for noise to get better repartition\n\t\t\tvec3 _p = vec3(\n\t\t\t\tcos( floor(rand * 8.)/8. * 3.14 * 2. ) * 0.35,\n\t\t\t\tsin( floor(rand * 8.)/8. * 3.14 * 2. ) * 0.35,\n\t\t\t\t0.\n\t\t\t) + oo * 0.05;\n\n\t\t\tpos = vec3(\n\t\t\t\tstart.x,\n\t\t\t\tstart.y,\n\t\t\t\tstart.z\n\t\t\t) * 0.7;\n\n\t\t\tlife = _r;\n\t\t}\n\n\n\n\t}\n\n\t// if (pos.y <= 0.) {\n\t// \tpos.y = 0.;\n\t// }\n\n\t// float speed = texture2D( oPosition, vUv).a;\n\t// vec3 dir = normalize( texture2D( oPosition, vUv).rgb );\n\t// pos += 10. * normalize(vec3(0., 1., 0.)+(dir)*(0.1*(0.5+speed*0.5))) * 0.0015 * (0.5 + 0.5*life);// * (pos.y <= 0. ? 0.5 : 1.);\n\t// pos.y -= 10. * 0.0012;//gravity \n\n\t\n\tgl_FragColor = vec4( (pos), life );\n\n}\n',depthTest:!1,blend:!1}),this.positionMaterial=Wt,this.uniforms={}}simulate(e,t,i,n){this.oldTime=this.oldTime||Date.now();var s=Date.now();if(this.delta=s-this.oldTime,this.oldTime=s,this.uniforms.uProgress=this.progress,!this.gpgpu)return;this.uniforms.uEmitterOrigin=this.origin,this.uniforms.uLocalTime=this.localTime,this.uniforms.uParticleMode=this.mode,this.uniforms.uParticleResolution=this.bufferSize,this.uniforms.uDelta=this.delta,this.uniforms.uTime=s,this.uniforms.oPosition=this.originPositionTexture,this.uniforms.oVelocity=this.originVelicityTexture,this.uniforms.tPosition=this.positionReadBuffer,this.uniforms.tVelocity=this.velocityReadBuffer;for(let e in this.uniforms)_t(this.positionMaterial.uniforms,e,this.uniforms[e]);i.scale[0]=this.bufferSize[0],i.scale[1]=this.bufferSize[1],n.left=-this.bufferSize[0]/2,n.right=this.bufferSize[0]/2,n.top=this.bufferSize[1]/2,n.bottom=-this.bufferSize[1]/2,n.updateProjectionMatrix(),i.material=this.positionMaterial,e.clearColor(0,0,0,0),e.clear(),e.render(t,n,this.positionWriteBuffer);let o=this.positionWriteBuffer;this.positionWriteBuffer=this.positionReadBuffer,this.positionReadBuffer=o,this.uniforms.hasRenderedOnce=1}reset(){this.localTime=0}updateUniforms(e,t){this.lastVisibleState!==this.visible&&(this.lastVisibleState=this.visible,this.localTime=0),this.visible&&(this.localTime+=t),this.uniforms.hasRenderedOnce=1,this.uniforms.tPosition=this.positionReadBuffer,this.uniforms.uParticleResolution=this.bufferSize,this.uniforms.uLocalTime=this.localTime,this.uniforms.uParticleMode=this.mode,this.uniforms.uStartPos=this.startPos,this.uniforms.uEndPos=this.endPos,this.uniforms.uParticleStep=this.particleStep,this.uniforms.uColor1=this.color1,this.uniforms.uColor2=this.color2,this.uniforms.uColor3=this.color3,this.uniforms.uAlpha=this.alpha,this.uniforms.uPointSize=this.pointSize,this.uniforms.uParticleSize=this.particleSize,this.uniforms.uParticleType="POINTS"===this.particleType?0:1,this.uniforms.uSpread=this.spread,this.uniforms.uReverse=this.reverse?1:0,this.autoRotate?this.rotation[2]-=.05:this.rotation[2]+=.07*(0-this.rotation[2])}beforeRender(){for(let e in this.uniforms)_t(this.material.uniforms,e,this.uniforms[e]),_t(this.positionMaterial.uniforms,e,this.uniforms[e])}}function Zt(e,t,i){return[e/255,t/255,i/255]}class Qt extends Xe{constructor(e){super();let t=new ct(e,{src:"static/obj/wallet.obj"}),i=new Re(e,{id:"WalletMaterial",depthTest:!0,blend:!0,vertexShader:"uniform mat4 uMVMatrix;\nuniform mat4 uPMatrix;\nuniform mat4 uMMatrix;\nuniform mat4 uNormalMatrix;\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\n\nvarying vec2 vUv;\nvarying vec3 vNormal;\nvarying vec3 vPosition;\n\nvoid main() {\n\tvUv = uv;\n\tvNormal = normalize((uNormalMatrix * vec4( normal, 1.0 )).xyz);\n\tvPosition = (uMMatrix * vec4( position, 1.0 )).xyz;\n\tgl_Position = uPMatrix * uMVMatrix * vec4( position, 1.0 );\n}",fragmentShader:"precision highp float;\n\nvarying vec2 vUv;\nvarying vec3 vNormal;\nvarying vec3 vPosition;\n\nuniform vec3 uCameraPosition;\nuniform vec3 uOutsideColor;\nuniform vec3 uInsideColor;\n\nuniform float uAlpha;\nuniform int uXray;\n\nvoid main() {\n \n vec3 N = vNormal;\n vec3 V = normalize(uCameraPosition - vPosition);\n\n gl_FragColor = vec4( dot(N,V) < 0. ? uInsideColor : uOutsideColor, .8 * uAlpha * (uXray==1?0.5:1.) );\n\n}",uniforms:{uOutsideColor:Zt(177,136,111),uInsideColor:Zt(201,174,157)}});this.material=i,this.topPart=new We,this.bottomPart=new We,this.topPart.frontSided=!0,this.topPart.geometry=t,this.topPart.material=i,this.add(this.topPart),this.bottomPart.backSided=!0,this.bottomPart.geometry=t,this.bottomPart.material=i,this.add(this.bottomPart),this.scale[0]=this.scale[2]=.053,this.scale[1]=.07,this.rotation[1]=Math.PI/2,this.alpha=1}updateUniforms(){this.material.uniforms.uAlpha.value=this.alpha}}let $t,ei;class ti extends We{constructor(e){super(),$t=$t||new ct(e,{src:"static/obj/dart.obj"}),ei=ei||new Ae(e,{id:"SharedDartMaterial",uniforms:{color:[226/255,113/255,74/255]},depthTest:!0,blend:!0}),this.geometry=$t,this.material=ei}}class ii extends We{constructor(e){super(),this.material=new Re(e,{id:"electricMaterial",vertexShader:"\nprecision highp float;\n\nattribute vec2 uv;\nattribute vec3 position;\n\nuniform mat4 uMVMatrix;\nuniform mat4 uPMatrix;\n\nvarying vec2 vUv;\nvarying vec3 vNormal;\nvarying vec3 vPosition;\n\nvoid main(void) {\n\tvUv = uv;\n gl_Position = uPMatrix * uMVMatrix * vec4(position, 1.0);\n}\n",fragmentShader:"precision highp float;\n\nvarying vec2 vUv;\n\nuniform float uTime;\nuniform vec2 uResolution;\nuniform sampler2D tNoise;\n\n// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.\n#define res_ uResolution\n#define time_ uTime\n#define detail_steps_ 13\n\n#define mod3_ vec3(.1031, .11369, .13787)\n\nvec3 hash3_3(vec3 p3);\nfloat perlin_noise3(vec3 p);\nfloat noise_sum_abs3(vec3 p);\nvec2 domain(vec2 uv, float s);\n\nvec3 hash3_3(vec3 p3) {\n\tp3 = fract(p3 * mod3_);\n p3 += dot(p3, p3.yxz + 19.19);\n return -1. + 2. * fract(vec3((p3.x + p3.y) * p3.z, (p3.x+p3.z) * p3.y, (p3.y+p3.z) * p3.x));\n}\n\nfloat perlin_noise3(vec3 p) {\n vec3 pi = floor(p);\n vec3 pf = p - pi;\n \n vec3 w = pf * pf * (3. - 2. * pf);\n \n return \tmix(\n \tmix(\n mix(\n dot(pf - vec3(0, 0, 0), hash3_3(pi + vec3(0, 0, 0))), \n dot(pf - vec3(1, 0, 0), hash3_3(pi + vec3(1, 0, 0))),\n w.x),\n mix(\n dot(pf - vec3(0, 0, 1), hash3_3(pi + vec3(0, 0, 1))), \n dot(pf - vec3(1, 0, 1), hash3_3(pi + vec3(1, 0, 1))),\n w.x),\n \tw.z),\n mix(\n mix(\n dot(pf - vec3(0, 1, 0), hash3_3(pi + vec3(0, 1, 0))), \n dot(pf - vec3(1, 1, 0), hash3_3(pi + vec3(1, 1, 0))),\n w.x),\n mix(\n dot(pf - vec3(0, 1, 1), hash3_3(pi + vec3(0, 1, 1))), \n dot(pf - vec3(1, 1, 1), hash3_3(pi + vec3(1, 1, 1))),\n w.x),\n \tw.z),\n\tw.y);\n}\n\nfloat noise_sum_abs3(vec3 p) {\n float f = 0.;\n p = p * 3.;\n f += 1.0000 * abs(perlin_noise3(p)); p = 2. * p;\n f += 0.5000 * abs(perlin_noise3(p)); p = 3. * p;\n\tf += 0.2500 * abs(perlin_noise3(p)); p = 4. * p;\n\tf += 0.1250 * abs(perlin_noise3(p)); p = 5. * p;\n\tf += 0.0625 * abs(perlin_noise3(p)); p = 6. * p;\n \n return f;\n}\n\nvec2 domain(vec2 uv, float s) {\n return (2.*uv.xy-res_.xy) / res_.y*s;\n}\n\n\nvoid main() {\n\n float rad = 2.75;\n\n\tvec2 p = (vUv - 0.5) * 2. * rad;//domain(vUv*1000., 2.5);\n \t\n float electric_density = .4;\n float electric_radius = length(p) - .2;\n float velocity = .7;\n \n float moving_coord = velocity * time_;//sin(velocity * time_) / .2 * cos(velocity * time_);\n vec3 electric_local_domain = vec3(p, moving_coord);\n float electric_field = electric_density * noise_sum_abs3(electric_local_domain); \n \n vec3 col = vec3(107, 148, 196) / 255.;\n \tcol += (1. - (electric_field + electric_radius));\n for(int i = 0; i < detail_steps_; i++) {\n \tif(length(col) >= 1.6 + float(i) / 2.)\n col -= .8;\n }\n col += max(0., 1. - 2. * electric_field);\n \n\n col = min(col, vec3(1.));\n\n gl_FragColor = vec4(col, col.r);\n\n if (col.r <= 0.01) {\n discard;\n }\n\n if ( length(vUv - vec2(0.5)) < 0.3) {\n discard;\n }\n\n\n}\n\n",uniforms:{},depthTest:!1,blend:!0}),this.geometry=new st(e,{width:1,height:1}),this.noiseTexture=Le.fromUrl(e,"static/media/narrative/noise.png",{wrapS:e.REPEAT,wrapT:e.REPEAT}),this.scale[0]=this.scale[1]=this.scale[2]=.2}updateUniforms(e){this.material.uniforms.uTime.value=.05*e}}class ni extends We{constructor(e){super(),this.geometry=new ot(e,{widthSegments:25,heightSegments:25,radius:.25}),this.material=new Re(e,{id:"BloblMaterial",vertexShader:'\nattribute vec2 uv;\nattribute vec3 position;\nattribute vec3 normal;\n\nuniform mat4 uMVMatrix;\nuniform mat4 uPMatrix;\n\n//\n// GLSL textureless classic 3D noise "cnoise",\n// with an RSL-style periodic variant "pnoise".\n// Author: Stefan Gustavson (stefan.gustavson@liu.se)\n// Version: 2011-10-11\n//\n// Many thanks to Ian McEwan of Ashima Arts for the\n// ideas for permutation and gradient selection.\n//\n// Copyright (c) 2011 Stefan Gustavson. All rights reserved.\n// Distributed under the MIT license. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n//\n\nvec3 mod289(vec3 x)\n{\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec4 mod289(vec4 x)\n{\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec4 permute(vec4 x)\n{\n return mod289(((x*34.0)+1.0)*x);\n}\n\nvec4 taylorInvSqrt(vec4 r)\n{\n return 1.79284291400159 - 0.85373472095314 * r;\n}\n\nvec3 fade(vec3 t) {\n return t*t*t*(t*(t*6.0-15.0)+10.0);\n}\n\n// Classic Perlin noise\nfloat cnoise(vec3 P)\n{\n vec3 Pi0 = floor(P); // Integer part for indexing\n vec3 Pi1 = Pi0 + vec3(1.0); // Integer part + 1\n Pi0 = mod289(Pi0);\n Pi1 = mod289(Pi1);\n vec3 Pf0 = fract(P); // Fractional part for interpolation\n vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0\n vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\n vec4 iy = vec4(Pi0.yy, Pi1.yy);\n vec4 iz0 = Pi0.zzzz;\n vec4 iz1 = Pi1.zzzz;\n\n vec4 ixy = permute(permute(ix) + iy);\n vec4 ixy0 = permute(ixy + iz0);\n vec4 ixy1 = permute(ixy + iz1);\n\n vec4 gx0 = ixy0 * (1.0 / 7.0);\n vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\n gx0 = fract(gx0);\n vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\n vec4 sz0 = step(gz0, vec4(0.0));\n gx0 -= sz0 * (step(0.0, gx0) - 0.5);\n gy0 -= sz0 * (step(0.0, gy0) - 0.5);\n\n vec4 gx1 = ixy1 * (1.0 / 7.0);\n vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\n gx1 = fract(gx1);\n vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\n vec4 sz1 = step(gz1, vec4(0.0));\n gx1 -= sz1 * (step(0.0, gx1) - 0.5);\n gy1 -= sz1 * (step(0.0, gy1) - 0.5);\n\n vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\n vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\n vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\n vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\n vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\n vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\n vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\n vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\n\n vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\n g000 *= norm0.x;\n g010 *= norm0.y;\n g100 *= norm0.z;\n g110 *= norm0.w;\n vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\n g001 *= norm1.x;\n g011 *= norm1.y;\n g101 *= norm1.z;\n g111 *= norm1.w;\n\n float n000 = dot(g000, Pf0);\n float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\n float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\n float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\n float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\n float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\n float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\n float n111 = dot(g111, Pf1);\n\n vec3 fade_xyz = fade(Pf0);\n vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\n vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\n float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);\n return 2.2 * n_xyz;\n}\n\n// Classic Perlin noise, periodic variant\nfloat pnoise(vec3 P, vec3 rep)\n{\n vec3 Pi0 = mod(floor(P), rep); // Integer part, modulo period\n vec3 Pi1 = mod(Pi0 + vec3(1.0), rep); // Integer part + 1, mod period\n Pi0 = mod289(Pi0);\n Pi1 = mod289(Pi1);\n vec3 Pf0 = fract(P); // Fractional part for interpolation\n vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0\n vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\n vec4 iy = vec4(Pi0.yy, Pi1.yy);\n vec4 iz0 = Pi0.zzzz;\n vec4 iz1 = Pi1.zzzz;\n\n vec4 ixy = permute(permute(ix) + iy);\n vec4 ixy0 = permute(ixy + iz0);\n vec4 ixy1 = permute(ixy + iz1);\n\n vec4 gx0 = ixy0 * (1.0 / 7.0);\n vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\n gx0 = fract(gx0);\n vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\n vec4 sz0 = step(gz0, vec4(0.0));\n gx0 -= sz0 * (step(0.0, gx0) - 0.5);\n gy0 -= sz0 * (step(0.0, gy0) - 0.5);\n\n vec4 gx1 = ixy1 * (1.0 / 7.0);\n vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\n gx1 = fract(gx1);\n vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\n vec4 sz1 = step(gz1, vec4(0.0));\n gx1 -= sz1 * (step(0.0, gx1) - 0.5);\n gy1 -= sz1 * (step(0.0, gy1) - 0.5);\n\n vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\n vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\n vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\n vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\n vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\n vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\n vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\n vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\n\n vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\n g000 *= norm0.x;\n g010 *= norm0.y;\n g100 *= norm0.z;\n g110 *= norm0.w;\n vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\n g001 *= norm1.x;\n g011 *= norm1.y;\n g101 *= norm1.z;\n g111 *= norm1.w;\n\n float n000 = dot(g000, Pf0);\n float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\n float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\n float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\n float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\n float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\n float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\n float n111 = dot(g111, Pf1);\n\n vec3 fade_xyz = fade(Pf0);\n vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\n vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\n float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);\n return 2.2 * n_xyz;\n}\n\n// Include the Ashima code here!\n\nvarying vec2 vUv;\nvarying float noise;\nvarying vec3 vColor;\n\nuniform float uTime;\nuniform vec2 uResolution;\n\n\nfloat rand(vec2 co){\n return fract(sin(dot(co.xy, vec2(12.8273, 67.245))) * 53726.17623);\n}\n\n\nvoid main() {\n\n vUv = uv;\n\n float b = pnoise( position * 6. + vec3( uTime * 7. ), vec3( 100.0 ) );\n\n float displacement = b * 0.1;\n\n\n vec3 col1 = vec3(90., 228., 192.) / 255.;\n vec3 col2 = vec3(254., 247., 193.) / 255.;\n vColor = mix(col1, col2, b);\n\n\n vec3 newPosition = position + normal * displacement;\n\n gl_Position = uPMatrix * uMVMatrix * vec4( newPosition, 1.0 );\n\n}',fragmentShader:"precision highp float;\n\nvarying vec2 vUv;\nvarying vec3 vColor;\n\nvoid main(void) {\n\n gl_FragColor = vec4( vColor, .7 );\n\n}",uniforms:{},blend:!0,depthTest:!0}),this.frontSided=!0}updateUniforms(e,t){this.material.uniforms.uTime&&(this.material.uniforms.uTime.value=.01*e),this.material.uniforms.uLocalTime&&(this.material.uniforms.uLocalTime.value=.01*e)}}var si="uniform mat4 uMVMatrix;\nuniform mat4 uPMatrix;\nuniform mat4 uMMatrix;\nuniform mat4 uNormalMatrix;\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\n\nvarying vec2 vUv;\nvarying vec3 vNormal;\nvarying vec3 vPosition;\n\nvoid main() {\n\tvUv = uv;\n\tvNormal = normalize((uNormalMatrix * vec4( normal, 1.0 )).xyz);\n\tvPosition = (uMMatrix * vec4( position, 1.0 )).xyz;\n\tgl_Position = uPMatrix * uMVMatrix * vec4( position, 1.0 );\n}",oi="precision highp float;\n\nvarying vec2 vUv;\n\nuniform vec3 uColor;\nuniform float uAlpha;\n\nvoid main() {\n gl_FragColor = vec4( uColor, uAlpha);\n}";let ai,ri,li;class ci extends We{constructor(e,t){super(),t=Object.assign({},{width:.5,height:.06,color:[147/255,247/255,252/255],alpha:1},t),this.color=t.color,this.alpha=t.alpha,this.geometry=new st(e,{width:t.width,height:t.height}),ai=ai||new Re(e,{id:"sharedStripeMaterial",vertexShader:si,fragmentShader:oi,uniforms:{uColor:t.color,uAlpha:t.alpha},blend:!0,depthTest:!1}),this.material=ai}updateUniforms(){this.material.uniforms.uColor.value=this.color,this.material.uniforms.uAlpha.value=this.alpha}render(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.material.uniforms.uColor.value=this.color,this.material.uniforms.uAlpha.value=this.alpha,super.render(e,t)}}class hi extends Xe{constructor(e,t){super(),t=Object.assign({},{width:.5,height:.06,color:[147/255,247/255,252/255],alpha:1,numStripes:9,progress:0},t),this.numStripes=t.numStripes,this.color=t.color,this.alpha=t.alpha,this.progress=t.progress,li=li||new st(e,{width:t.width,height:t.height}),ri=ri||new Re(e,{id:"MultiStripesSharedMaterial",vertexShader:si,fragmentShader:oi,blend:!0,depthTest:!1}),this.stripes=[];for(let e=0;e{for(let e in t._uniforms)t.material.uniforms[e]&&(t.material.uniforms[e].value=t._uniforms[e])}});t._uniforms={uColor:0==e?[147/255,247/255,252/255]:[1,1,1],uAlpha:0},t.material=ri,t.geometry=li,t.uniforms={},this.stripes.push(t),this.add(t)}}render(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.stripes.forEach(((e,t)=>{if(0==t)e.rotation[2]=this.progress*Math.PI*2*-1,e._uniforms.uAlpha=1,e._uniforms.uColor=[147/255,247/255,252/255];else{if(this.progress<.5)e._uniforms.uAlpha=Math.min(1,this.progress/.5)>t/(this.numStripes-1)?.5:0;else{let i=Math.min(1,Math.max(0,(this.progress-.5)/.5)),n=this.numStripes;e._uniforms.uAlpha=.5*(i>t/n?1-Math.min(1,Math.max(0,(i-t/n)/(1/n))):1)}e.rotation[2]=Math.PI/this.numStripes*t*-1}})),super.render(e,t)}}var di=.1,ui="function"==typeof Float32Array;function mi(e,t){return 1-3*t+3*e}function pi(e,t){return 3*t-6*e}function fi(e){return 3*e}function vi(e,t,i){return((mi(t,i)*e+pi(t,i))*e+fi(t))*e}function gi(e,t,i){return 3*mi(t,i)*e*e+2*pi(t,i)*e+fi(t)}function yi(e){return e}function xi(e,t,i,n){if(!(0<=e&&e<=1&&0<=i&&i<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&i===n)return yi;for(var s=ui?new Float32Array(11):new Array(11),o=0;o<11;++o)s[o]=vi(o*di,e,i);function a(t){for(var n=0,o=1;10!==o&&s[o]<=t;++o)n+=di;--o;var a=n+(t-s[o])/(s[o+1]-s[o])*di,r=gi(a,e,i);return r>=.001?function(e,t,i,n){for(var s=0;s<4;++s){var o=gi(t,i,n);if(0===o)return t;t-=(vi(t,i,n)-e)/o}return t}(t,a,e,i):0===r?a:function(e,t,i,n,s){var o,a,r=0;do{(o=vi(a=t+(i-t)/2,n,s)-e)>0?i=a:t=a}while(Math.abs(o)>1e-7&&++r<10);return a}(t,n,n+di,e,i)}return function(e){return 0===e||1===e?e:vi(a(e),t,n)}}let bi,wi;const Pi=xi(.43,.195,.02,1);class Ri extends Xe{constructor(e,t){super(),t=Object.assign({},{alpha:1,numLogos:8,progress:0,mode:0},t),this.numLogos=t.numLogos,this.color=t.color,this.alpha=t.alpha,this.progress=t.progress,this.mode=t.mode,wi=wi||new ot(e,{radius:1e-11,heightSegments:5,widthSegments:5}),bi=bi||new Ae(e,{uniforms:{color:[1,0,0]},blend:!0,depthTest:!0}),this.meshes=[];for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:{};this.meshes.forEach(((e,t)=>{e.mode=this.mode;let i=.03;if(this.progress<=1){let n=this.progress*(1+i*this.numLogos)-i*t,s=Pi(Math.max(0,Math.min(1,n))),o=.6/this.numLogos,a=window.innerWidth<1e3?1.5:1,r=.25+(t%2==0?-1:1)*(.5+.5*e._rand)*.075;e.position[0]=-o*((this.numLogos-1)/2)+o*t,e.position[1]=a+s*(r-a)}else if(this.progress>1&&this.progress<=2){let n=(this.progress-1)*(1+i*this.numLogos)-i*t,s=Pi(Math.max(0,Math.min(1,n))),o=2*Math.PI/this.numLogos,a=1-.68*s;e.position[0]=Math.cos(o*t)*a,e.position[1]=Math.sin(o*t)*a}e.alpha=this.alpha})),super.render(e,t)}}var Ai,Si=(Ai=function(e,t,i,n){var s=3*e,o=3*(i-e)-s,a=1-s-o,r=3*t,l=3*(n-t)-r,c=1-r-l,h=function(e){return((a*e+o)*e+s)*e},d=function(e,t){return i=function(e,t){var i,n,r,l,c,d,u;for(r=e,d=0;d<8;d++){if(l=h(r)-e,Math.abs(l)(n=1))return n;for(;il?i=r:n=r,r=.5*(n-i)+i}return r}(e,t),((c*i+l)*i+r)*i;var i};return function(e,t){return d(e,function(e){return 1/(200*e)}(+t||400))}},function(e,t,i,n,s,o){return Ai(e,t,i,n)(s,o)}),Ti=!1,Li=[];function _i(){requestAnimationFrame(_i),Li.forEach((e=>{e&&e.update()}))}class Mi{constructor(e){this.debug=e.debug,this.step=e.step||function(){},this.end=e.end||function(){},this.direction=e.direction||1,this.duration=e.duration||1e3,this.easing=e.easing||[.25,.25,.75,.75],this.delay=e.delay||0,this._progress=0,this._easedProgress=0}destroy(){!function(e){for(let t=0;t{i==e&&(t=!0)})),t||Li.push(e)}(this),Ti||(Ti=!0,_i())}pause(){clearTimeout(this._delayTimer),this.isPlaying=!1}reset(){this.lastDate=(window.performance||Date).now(),this._progress=0}update(){if(this.isPlaying){const e=(window.performance||Date).now()-this.lastDate;if(this.lastDate=(window.performance||Date).now(),this.delayProgress0?this.step(this._easedProgress,this._progress):(this.isPlaying=!1,this._progress=1==this.direction?1:0,this._easedProgress=1==this.direction?1:0,this.step(this._easedProgress,this._progress),this.end())}}}function Fi(e,t){if(void 0===typeof(t=t||{}).to)throw e;let i={};for(let n in t.to)i[n]=e[n];let n=new Mi({debug:t.debug,step:n=>{for(let s in t.to)e[s]=i[s]+(t.to[s]-i[s])*n;t.step&&t.step(e,n)},end:t.end,delay:t.delay,duration:t.duration,easing:t.easing});return n.play(),n}let ki=!1,zi=1e6,Ei=[0,0,0],Ci=[0,0,0],Bi=0,Di=0,Ii=0,Oi=0,Ni=0,Gi=0,Ui=0,ji=0,Hi=[0,0,0];var Vi=!1,Xi=!1;let Wi,Ki,Yi,qi,Ji,Zi,Qi,$i,en,tn,nn,sn,on,an,rn,ln,cn,hn,dn=("undefined"==typeof performance?Date:performance).now(),un=0,mn={},pn={},fn=0,vn=[0,0,0],gn=[253/255,252/255,248/255],yn=0,xn=0,bn=function(){let e,t=document.createElement("canvas");try{e=t.getContext("webgl")}catch(i){try{e=t.getContext("experimental-webgl")}catch(t){e=null}}return null!==e}(),wn=[260,537],Pn=1,Rn=0,An=!1,Sn=0;var Tn;Vi=!1;function Ln(e,t,i){let n;if(e.tween){let s=t[i+1];if(s){let t=s.time-e.time,i=(fn-e.time)/t;if(e.easing){let t=[0,0,1,1];"ease-in"==e.easing&&(t=[.98,0,1-.43,1-.195]),"ease-out"==e.easing&&(t=[.43,.195,.02,1]),"ease-in-out"==e.easing&&(t=[.42,0,.58,1]),i=xi(t[0],t[1],t[2],t[3])(Math.max(0,Math.min(1,i)))}n=e.value+i*(s.value-e.value)}}else n=e.value;return n}let _n,Mn,Fn,kn,zn,En,Cn,Bn,Dn,In,On,Nn,Gn,Un,jn,Hn,Vn,Xn,Wn,Kn,Yn;function qn(e,t){bn&&Tt&&Wi&&(yn=window.innerWidth,xn=window.innerHeight,_n===yn&&xn===Mn||(_n=yn,Mn=xn,Tt.resolution[0]=yn,Tt.resolution[1]=xn,Wi.setPixelRatio(Tt.devicePixelRatio),Wi.resize(Tt.resolution[0],Tt.resolution[1]),Yi.aspect=Tt.resolution[0]/Tt.resolution[1],Yi.updateProjectionMatrix(),qi.left=Tt.sceneHeight/2*-1,qi.right=Tt.sceneHeight/2*1,qi.top=Tt.sceneHeight/2*1*(1/Yi.aspect),qi.bottom=Tt.sceneHeight/2*-1*(1/Yi.aspect),qi.updateProjectionMatrix(),nn.scale[0]=Tt.resolution[0],nn.scale[1]=Tt.resolution[1],tn.left=-Tt.resolution[0]/2,tn.right=Tt.resolution[0]/2,tn.top=Tt.resolution[1]/2,tn.bottom=-Tt.resolution[1]/2,mn.uResolution=[Tt.resolution[0]*Tt.devicePixelRatio,Tt.resolution[1]*Tt.devicePixelRatio],mn.uDevicePixelRatio=Tt.devicePixelRatio,un=Tt.sceneHeight/2/Math.tan(Math.PI*Tt.fov/360),Fn.resize(mn.uResolution[0],mn.uResolution[1]),t||(sn.resize(mn.uResolution[0],mn.uResolution[1]),kn.resize(mn.uResolution[0],mn.uResolution[1]),In.resize(mn.uResolution[0],mn.uResolution[1]),zn.resize(mn.uResolution[0],mn.uResolution[1]),On.resize(mn.uResolution[0]/2>>0,mn.uResolution[1]/2>>0),Nn.resize(mn.uResolution[0]/2>>0,mn.uResolution[1]/2>>0),Gn.resize(mn.uResolution[0]/4>>0,mn.uResolution[1]/4>>0),Un.resize(mn.uResolution[0]/4>>0,mn.uResolution[1]/4>>0),jn.resize(mn.uResolution[0]/8>>0,mn.uResolution[1]/8>>0),Hn.resize(mn.uResolution[0]/8>>0,mn.uResolution[1]/8>>0),Vn.resize(mn.uResolution[0]/16>>0,mn.uResolution[1]/16>>0),Xn.resize(mn.uResolution[0]/16>>0,mn.uResolution[1]/16>>0)),Jn(!0)))}function Jn(e){if(!bn)return;if((Vi||Xi)&&!e)return;let t=("undefined"==typeof performance?Date:performance).now(),i=(t-dn)/100;zi+=i,dn=t;for(let e=0;e0){let i;for(let e=0;e=t&&(i=e)}if(null!=i){let n=s.keyFrames[i];if(t&&void 0!==t[s.name])if(n.tween){let e=s.keyFrames[i+1];if(e){let i=e.time-n.time,o=(fn-n.time)/i;if(n.easing){let e=[0,0,1,1];"ease-in"==n.easing&&(e=[.98,0,1-.43,1-.195]),"ease-out"==n.easing&&(e=[.43,.195,.02,1]),"ease-in-out"==n.easing&&(e=[.42,0,.58,1]),o=xi(e[0],e[1],e[2],e[3])(Math.max(0,Math.min(1,o)))}n.value.length?(t[s.name][0]=n.value[0]+o*(e.value[0]-n.value[0]),t[s.name][1]=n.value[1]+o*(e.value[1]-n.value[1]),t[s.name][2]=n.value[2]+o*(e.value[2]-n.value[2])):t[s.name]=n.value+o*(e.value-n.value)}}else t[s.name]="object"==typeof n.value?JSON.parse(JSON.stringify(n.value)):n.value;if("color"==s.name&&"background"==Wn[e].id)if(n.tween){let e=s.keyFrames[i+1];if(e){let t=e.time-n.time,i=(fn-n.time)/t;Hi[0]=n.value[0]+i*(e.value[0]-n.value[0]),Hi[1]=n.value[1]+i*(e.value[1]-n.value[1]),Hi[2]=n.value[2]+i*(e.value[2]-n.value[2])}}else Hi="object"==typeof n.value?JSON.parse(JSON.stringify(n.value)):n.value;if("settings"==Wn[e].id)switch(s.name){case"useBloom":Tt.useBloom=n.value;break;case"useMetaball":Tt.useMetaball=n.value;break;case"bloomAmount":Tt.uBloomAmount=n.value;break;case"bloomThreshold":Tt.uBloomThreshold=n.value}if("camera"==Wn[e].id)switch(s.name){case"x":Ei[0]=Ln(n,s.keyFrames,i);break;case"y":Ei[1]=Ln(n,s.keyFrames,i);break;case"z":Ei[2]=Ln(n,s.keyFrames,i);break;case"offsetY":Bi=Ln(n,s.keyFrames,i);break;case"offsetX":Di=Ln(n,s.keyFrames,i);break;case"mobileOffsetZ":Ii=Ln(n,s.keyFrames,i);break;case"mobileOffsetX":Oi=Ln(n,s.keyFrames,i);break;case"mobileOffsetY":Ni=Ln(n,s.keyFrames,i);break;case"mobileLookAtOffsetX":Gi=Ln(n,s.keyFrames,i);break;case"mobileLookAtOffsetY":Ui=Ln(n,s.keyFrames,i);break;case"mobileLookAtOffsetZ":ji=Ln(n,s.keyFrames,i)}"texts"==Wn[e].id&&"index"==s.name&&i!==cn&&(es("textchange",i),cn=i),"console_texts"==Wn[e].id&&"index"==s.name&&i!==hn&&(es("consoletextchange",i),hn=i)}}else{var n;if(void 0===s.value)s.value=null==s||null===(n=s.keyFrames[0])||void 0===n?void 0:n.value;void 0!==s.value&&("color"==s.name&&"background"==Wn[e].id&&(Hi="object"==typeof s.value?JSON.parse(JSON.stringify(s.value)):s.value),t&&void 0!==t[s.name]&&("number"==s.type?t[s.name]=Number(s.value):"object"==s.type?t[s.name]="object"==typeof s.value?JSON.parse(JSON.stringify(s.value)):s.value:"boolean"==s.type?t[s.name]="true"==s.value||!0===s.value:t[s.name]=s.value))}}}const s=Oe(),o=Di*window.innerWidth/1440;var a,r;Yi.position[0]+=1*(Ei[0]+(window.innerWidth>1e3?o:0)+s[0]+(window.innerWidth<=1e3?Oi:0)-Yi.position[0]),Yi.position[1]+=1*(Ei[1]+Bi+s[1]+(window.innerWidth<=1e3?Ni:0)-Yi.position[1]),Yi.position[2]+=1*(Ei[2]*(1/Pn)+s[2]+(window.innerWidth<=1e3?Ii:0)-Yi.position[2]),Yi.lookAt[0]+=1*(Ci[0]+(window.innerWidth<=1e3?Gi:0)+(window.innerWidth>1e3?o:0)-Yi.lookAt[0]),Yi.lookAt[1]+=1*(Ci[1]+(window.innerWidth<=1e3?Ui:0)+Bi-Yi.lookAt[1]),Yi.lookAt[2]+=1*(Ci[2]+(window.innerWidth<=1e3?ji:0)-Yi.lookAt[2]),Yi.updateProjectionMatrix(),Yi.update(),qi.position=Yi.position,qi.lookAt=Yi.lookAt,qi.left=Math.abs(Yi.position[2])*Tt.sceneHeight*-1,qi.right=Math.abs(Yi.position[2])*Tt.sceneHeight*1,qi.top=Math.abs(Yi.position[2])*Tt.sceneHeight*1*(1/Yi.aspect),qi.bottom=Math.abs(Yi.position[2])*Tt.sceneHeight*-1*(1/Yi.aspect),qi.updateProjectionMatrix(),qi.update(),mn.uMinExpandRatio=Tt.uMinExpandRatio,mn.uMaxExpandRatio=Tt.uMaxExpandRatio,mn.uNumGroups=Tt.uNumGroups,mn.uFollowSphereSurface=Tt.uFollowSphereSurface,mn.uLineGlobalAlpha=Tt.uLineGlobalAlpha,mn.uDustAlpha=Tt.uDustAlpha,mn.uDustRadius=Tt.uDustRadius,Ge($i,Yi.worldMatrix[12],Yi.worldMatrix[13],Yi.worldMatrix[14]),a=Qi,r=Yi.lookAt,a[0]=r[0],a[1]=r[1],a[2]=r[2],function(e,t,i){e[0]=t[0]-i[0],e[1]=t[1]-i[1],e[2]=t[2]-i[2]}(Qi,Qi,$i),Ue(Qi,Qi),ke(Zi,Yi.projectionMatrix),Ce(Zi,Zi,Yi.inverseWorldMatrix),Ee(Ji,Zi),mn.uLightColor=gn,mn.uFogColor=vn,mn.uInvVPMatrix=Ji,mn.uProjMatrix=Yi.projectionMatrix,mn.uViewMatrix=Yi.inverseWorldMatrix,mn.uModeProgress=null!=mn.uModeProgress?mn.uModeProgress:1,mn.uModeProgress+=.05*(1-mn.uModeProgress),mn.active=Tt.active?1:0,mn.uMode=1,mn.uExposition=Tt.uExposition,mn.uNormalScale=[.25,.25],mn.cameraPosition=$i,mn.uNear=Tt.cameraNear,mn.uFar=Tt.cameraFar,mn.uFocalDistance=Tt.uFocalDistance,mn.uAperture=Tt.uAperture,mn.uBokehRadius=Tt.uBokehRadius,mn.uBokehAmount=Tt.uBokehAmount,mn.uBokehThreshold=Tt.uBokehThreshold,mn.timer=zi,mn.delta=i,mn.uBackgroundColorStart=Hi,mn.uXray=ki?1:0;let l=Hi;mn.uBackgroundColor=ki?.9803==l[0]&&.9803==l[1]&&.9803==l[2]?[17/255,39/255,.2]:[2/255,21/255,69/255]:l,mn.uBackgroundAlpha=1,mn.uMaskSize=wn,mn.uMaskScale=1,mn.uMaskOffsetY=Rn,mn.useMask=An?1:0,mn.uBillsStrokeWidth=(window.innerWidth<1e3?.75:1)*(ki?2:1),mn.uParticleBillsLineThickness=Tt.uBillsLineThickness,mn.uParticleBillsLineLength=Tt.uBillsLineLength,mn.uParticleBillsSegments=10,mn.tLogosPath=ln;let{meshes:c}=pn.multiLogos;c.forEach(((e,t)=>{mn["uLogoPos"+t]=e.position})),mn.uIntroProgress=Sn,mn.uIntroEasedProgress=Sn,function(e,t){for(let i in pn)pn[i].visible&&pn[i].simulate&&pn[i].simulate(Wi,en,nn,tn),pn[i].visible&&pn[i].updateUniforms&&pn[i].updateUniforms(e,t)}(zi,i),pn.particlesMetaball&&Tt.useMetaball&&(pn.particlesMetaball.visible&&(pn.particlesMetaball.material.uniforms.uMetalballPass.value=1,Wi.render(pn.particlesMetaball,Tt.useOrthographicCamera?qi:Yi,zn),pn.particlesMetaball.material.uniforms.uMetalballPass.value=0),pn.particlesBill.visible&&(pn.particlesBill.material.uniforms.uMetalballPass.value=1,Wi.render(pn.particlesBill,Tt.useOrthographicCamera?qi:Yi,zn),pn.particlesBill.material.uniforms.uMetalballPass.value=0));let h=Hi,d=ki?.9803==h[0]&&.9803==h[1]&&.9803==h[2]?[17/255,39/255,.2]:[2/255,21/255,69/255]:h;if(Wi.clearColor(d[0],d[1],d[2],1),Wi.clear(),Tt.useBloom||Tt.useMetaball||ki){if(Wi.render(Ki,Tt.useOrthographicCamera?qi:Yi,sn),Tt.useBloom||ki){let e=window.innerWidth*Tt.devicePixelRatio,t=window.innerHeight*Tt.devicePixelRatio;nn.material=Cn,Cn.uniforms.tInput.value=sn,Cn.uniforms.uBloomThreshold.value=Tt.uBloomThreshold,Wi.render(en,tn,Dn),nn.material=En,En.uniforms.uBloomBlur.value=null==Tt?void 0:Tt.uBloomBlur,En.uniforms.uResolution.value=[e/2>>0,t/2>>0],En.uniforms.tInput.value=Dn,En.uniforms.uBlurDirection.value=[1,0],Wi.render(en,tn,On),En.uniforms.uResolution.value=[e/2>>0,t/2>>0],En.uniforms.tInput.value=On,En.uniforms.uBlurDirection.value=[0,1],Wi.render(en,tn,Nn),En.uniforms.uResolution.value=[e/4>>0,t/4>>0],En.uniforms.tInput.value=Nn,En.uniforms.uBlurDirection.value=[1,0],Wi.render(en,tn,Gn),En.uniforms.uResolution.value=[e/4>>0,t/4>>0],En.uniforms.tInput.value=Gn,En.uniforms.uBlurDirection.value=[0,1],Wi.render(en,tn,Un),En.uniforms.uResolution.value=[e/8>>0,t/8>>0],En.uniforms.tInput.value=Un,En.uniforms.uBlurDirection.value=[1,0],Wi.render(en,tn,jn),En.uniforms.uResolution.value=[e/8>>0,t/8>>0],En.uniforms.tInput.value=jn,En.uniforms.uBlurDirection.value=[0,1],Wi.render(en,tn,Hn),En.uniforms.uResolution.value=[e/16>>0,t/16>>0],En.uniforms.tInput.value=Hn,En.uniforms.uBlurDirection.value=[1,0],Wi.render(en,tn,Vn),En.uniforms.uResolution.value=[e/16>>0,t/16>>0],En.uniforms.tInput.value=jn,En.uniforms.uBlurDirection.value=[0,1],Wi.render(en,tn,Xn),nn.material=Bn,Bn.uniforms.tInput.value=sn,Bn.uniforms.tBlur1.value=Nn,Bn.uniforms.tBlur2.value=Un,Bn.uniforms.tBlur3.value=Hn,Bn.uniforms.tBlur4.value=Xn,Bn.uniforms.uBloomAmount.value=Tt.uBloomAmount,Wi.render(en,tn,In)}Tt.useSMAA&&(nn.material=Fn.material,Fn.render(en,tn,Tt.useBloom||ki?In:sn,kn)),nn.material=on,on.uniforms.useMetaball&&(on.uniforms.useMetaball.value=Tt.useMetaball),on.uniforms.tMetaball&&(on.uniforms.tMetaball.value=zn),on.uniforms.tInput&&(on.uniforms.tInput.value=Tt.useSMAA?kn:Tt.useBloom||ki?In:sn),Wi.render(en,tn)}else Wi.render(Ki,Tt.useOrthographicCamera?qi:Yi)}function Zn(e,t){_A.env.isNico&&console.log("initializeWebgl");let i=Date.now(),n=Date.now();Wi=new Ke({alpha:!0,antialias:!0}),Ki=new nt,Ki.uniforms=mn,un=Tt.sceneHeight/2/Math.tan(Math.PI*Tt.fov/360),Yi=new et({fov:Tt.fov,near:Tt.cameraNear,far:Tt.cameraFar,type:"perspective",orbitControl:Tt.debugCamera,firstPerson:!1,lookAt:[0,0,0],moveSpeed:.1,pointerParent:document.documentElement,position:[0,0,un]}),qi=new et({fov:Tt.fov,near:Tt.cameraNear,far:Tt.cameraFar,type:"ortho",orbitControl:Tt.debugCamera,firstPerson:!1,lookAt:[0,0,0],moveSpeed:.1,position:[0,0,un]}),Yi.position[2]=un,Yi.lookAt=Oe(),Tt.debugCamera&&(Yi.position=Oe(),Yi.position[0]=.001,Yi.position[1]=.001),qi.position=Yi.position,qi.lookAt=Yi.lookAt,Ji=Fe(),Zi=Fe(),Qi=Oe(),$i=Oe(),en=new nt,en.uniforms=mn,tn=new et({left:-256,right:256,top:256,bottom:-256,near:1,far:4e3,type:"ortho",orbitControl:!1,lookAt:[0,0,0]}),tn.position[2]=1e3,tn.position[0]=.01,tn.position[1]=.01,tn.lookAt=Oe(),nn=new We,nn.geometry=new st(Wi.gl,{width:1,height:1}),en.add(nn),_A.env.isNico&&console.log("• built Renderer & Cameras in",Date.now()-n),n=Date.now(),sn=new tt(Wi.gl,{width:window.innerWidth*Tt.devicePixelRatio,height:window.innerHeight*Tt.devicePixelRatio,linear:!0,type:Wi.gl.FLOAT}),on=new Re(Wi.gl,{id:"finalMaterial",vertexShader:"precision highp float;\n\nattribute vec3 position;\nattribute vec2 uv;\n\nuniform mat4 uMVMatrix;\nuniform mat4 uPMatrix;\n\nvarying vec2 vUv;\n\nvoid main(void) {\n vUv = uv;\n gl_Position = uPMatrix * uMVMatrix * vec4( position, 1.0 );\n}\n",fragmentShader:"precision highp float;\n\nuniform sampler2D tInput;\nuniform sampler2D tMetaball;\nuniform vec2 uResolution;\nuniform int useMetaball;\nuniform int useMask;\nuniform vec2 uMaskSize;\nuniform float uMaskScale;\nuniform float uMaskOffsetY;\nuniform float uDevicePixelRatio;\n\nvarying vec2 vUv;\n\nfloat lookup(vec2 p, float dx, float dy) {\n vec2 uv = (p.xy + vec2(dx, dy)) / uResolution.xy;\n vec4 c = texture2D(tMetaball, uv.xy);\n\tif (c.a < 0.5) {\n\t\tc = vec4(0.);\n\t}\n\t// return as luma\n return 0.2126*c.r + 0.7152*c.g + 0.0722*c.b;\n}\n\n\n// from https://iquilezles.org/articles/distfunctions\nfloat roundedBoxSDF(vec2 CenterPosition, vec2 Size, float Radius) {\n return length(max(abs(CenterPosition)-Size+Radius,0.0))-Radius;\n}\n \n\nvoid main() {\n \n if(useMetaball == 1){\n\n vec4 c = texture2D(tMetaball, vUv);\n\n // if (c.a < 0.5) {\n // \tdiscard;\n // }\n\n vec2 p = gl_FragCoord.xy;\n \n // simple sobel edge detection\n float gx = 0.0;\n gx += -1.0 * lookup(p, -1.0, -1.0);\n gx += -2.0 * lookup(p, -1.0, 0.0);\n gx += -1.0 * lookup(p, -1.0, 1.0);\n gx += 1.0 * lookup(p, 1.0, -1.0);\n gx += 2.0 * lookup(p, 1.0, 0.0);\n gx += 1.0 * lookup(p, 1.0, 1.0);\n \n float gy = 0.0;\n gy += -1.0 * lookup(p, -1.0, -1.0);\n gy += -2.0 * lookup(p, 0.0, -1.0);\n gy += -1.0 * lookup(p, 1.0, -1.0);\n\n gy += 1.0 * lookup(p, -1.0, 1.0);\n gy += 2.0 * lookup(p, 0.0, 1.0);\n gy += 1.0 * lookup(p, 1.0, 1.0);\n \n // hack: use g^2 to conceal noise in the video\n float g = gx*gx + gy*gy;\n float g2 = g / 2.0;\n\n vec4 edgeColor = vec4(0., 0., 0., g2);\n vec4 metaballColor = vec4(1.) * (texture2D(tMetaball, vUv).a < 0.75 ? 0. : 1.);\n // metaballColor.a = 0.5;\n\n vec4 mergeMetaballColor = mix( metaballColor, edgeColor, edgeColor.a*edgeColor.a );\n\nmergeMetaballColor.rgb = mix( mergeMetaballColor.rgb, vec3(1.), 0.75 );//fade border to grey\n\n gl_FragColor = vec4( mix( texture2D(tInput, vUv).rgb, mergeMetaballColor.rgb, g2 * (texture2D(tMetaball, vUv).a < 0.5 ? 0. : 1.) ) , 1. );\n\n }else{\n gl_FragColor = vec4( texture2D(tInput, vUv).rgb, 1.);\n }\n\n\n}",depthTest:!1,blend:!0}),_A.env.isNico&&console.log("built finalFBO & Program in",Date.now()-n),n=Date.now(),En=new Re(Wi.gl,{id:"blurMaterial",vertexShader:"precision highp float;\n\nattribute vec3 position;\nattribute vec2 uv;\n\nuniform mat4 uMVMatrix;\nuniform mat4 uPMatrix;\n\nvarying vec2 vUv;\n\nvoid main(void) {\n vUv = uv;\n gl_Position = uPMatrix * uMVMatrix * vec4( position, 1.0 );\n}\n",fragmentShader:"precision highp float;\n\nuniform sampler2D tInput;\nvarying vec2 vUv;\nuniform vec2 uResolution;\n\nuniform vec2 uBlurDirection;\nuniform float uBloomBlur;\n\nvoid main() {\n\n vec4 color = vec4(0.0);\n vec2 off1 = vec2(1.411764705882353) * uBlurDirection * uBloomBlur;\n vec2 off2 = vec2(3.2941176470588234) * uBlurDirection * uBloomBlur;\n vec2 off3 = vec2(5.176470588235294) * uBlurDirection * uBloomBlur;\n color += texture2D(tInput, vUv) * 0.1964825501511404;\n color += texture2D(tInput, vUv + (off1 / uResolution)) * 0.2969069646728344;\n color += texture2D(tInput, vUv - (off1 / uResolution)) * 0.2969069646728344;\n color += texture2D(tInput, vUv + (off2 / uResolution)) * 0.09447039785044732;\n color += texture2D(tInput, vUv - (off2 / uResolution)) * 0.09447039785044732;\n color += texture2D(tInput, vUv + (off3 / uResolution)) * 0.010381362401148057;\n color += texture2D(tInput, vUv - (off3 / uResolution)) * 0.010381362401148057;\n \n gl_FragColor = vec4(color.rgb, 1.);\n\n}",depthTest:!1,blend:!1}),Cn=new Re(Wi.gl,{id:"highPassMaterial",vertexShader:"precision highp float;\n\nattribute vec3 position;\nattribute vec2 uv;\n\nuniform mat4 uMVMatrix;\nuniform mat4 uPMatrix;\n\nvarying vec2 vUv;\n\nvoid main(void) {\n vUv = uv;\n gl_Position = uPMatrix * uMVMatrix * vec4( position, 1.0 );\n}\n",fragmentShader:"precision highp float;\n\nuniform sampler2D tInput;\nuniform float uBloomThreshold;\nvarying vec2 vUv;\n\nuniform vec2 uResolution;\n\nvoid main() {\n\tvec4 outColor = texture2D( tInput, vUv );\n\tfloat brighness = outColor.r * .2126 + outColor.g * .7152 + outColor.b * .0722; \n\tif (brighness > uBloomThreshold) {\t\n\t\toutColor *= 1.;\n\t}\n\telse {\n\t\toutColor *= 0.;\n\t}\n gl_FragColor = vec4(outColor.rgb, 1.);\n\n\n}",depthTest:!1,blend:!1}),Bn=new Re(Wi.gl,{vertexShader:"precision highp float;\n\nattribute vec2 uv;\nattribute vec3 position;\n\nuniform mat4 uMVMatrix;\nuniform mat4 uPMatrix;\n\nvarying vec2 vUv;\nvarying vec3 vNormal;\nvarying vec3 vPosition;\n\nvoid main(void) {\n\tvUv = uv;\n gl_Position = uPMatrix * uMVMatrix * vec4(position, 1.0);\n}\n",fragmentShader:"precision highp float;\n\nuniform sampler2D tInput;\nuniform sampler2D tBlur1;\nuniform sampler2D tBlur2;\nuniform sampler2D tBlur3;\nuniform sampler2D tBlur4;\nuniform vec2 uResolution;\nuniform float uBloomAmount;\n\nvarying vec2 vUv;\n\nvoid main() {\n\n vec3 outColor;\n outColor.rgb = texture2D( tInput, vUv ).rgb;\n \n outColor.rgb += texture2D( tBlur1, vUv ).rgb * (1./4.) * 4. * uBloomAmount;\n outColor.rgb += texture2D( tBlur2, vUv ).rgb * (1./4.) * 3. * uBloomAmount;\n outColor.rgb += texture2D( tBlur3, vUv ).rgb * (1./4.) * 2. * uBloomAmount;\n outColor.rgb += texture2D( tBlur4, vUv ).rgb * (1./4.) * 1. * uBloomAmount;\n\n gl_FragColor = vec4(outColor, 1.);\n\n}",depthTest:!1,blend:!1,id:"bloomMaterial"}),Dn=new tt(Wi.gl,{width:window.innerWidth*Tt.devicePixelRatio,height:window.innerHeight*Tt.devicePixelRatio,format:Wi.gl.RGBA,linear:!0}),In=new tt(Wi.gl,{width:window.innerWidth*Tt.devicePixelRatio,height:window.innerHeight*Tt.devicePixelRatio,format:Wi.gl.RGBA,linear:!0}),On=new tt(Wi.gl,{width:window.innerWidth*Tt.devicePixelRatio/2>>0,height:window.innerHeight*Tt.devicePixelRatio/2>>0,format:Wi.gl.RGB,linear:!0}),Nn=new tt(Wi.gl,{width:window.innerWidth*Tt.devicePixelRatio/2>>0,height:window.innerHeight*Tt.devicePixelRatio/2>>0,format:Wi.gl.RGB,linear:!0}),Gn=new tt(Wi.gl,{width:window.innerWidth*Tt.devicePixelRatio/4>>0,height:window.innerHeight*Tt.devicePixelRatio/4>>0,format:Wi.gl.RGB,linear:!0}),Un=new tt(Wi.gl,{width:window.innerWidth*Tt.devicePixelRatio/4>>0,height:window.innerHeight*Tt.devicePixelRatio/4>>0,format:Wi.gl.RGB,linear:!0}),jn=new tt(Wi.gl,{width:window.innerWidth*Tt.devicePixelRatio/8>>0,height:window.innerHeight*Tt.devicePixelRatio/8>>0,format:Wi.gl.RGB,linear:!0}),Hn=new tt(Wi.gl,{width:window.innerWidth*Tt.devicePixelRatio/8>>0,height:window.innerHeight*Tt.devicePixelRatio/8>>0,format:Wi.gl.RGB,linear:!0}),Vn=new tt(Wi.gl,{width:window.innerWidth*Tt.devicePixelRatio/16>>0,height:window.innerHeight*Tt.devicePixelRatio/16>>0,format:Wi.gl.RGB,linear:!0}),Xn=new tt(Wi.gl,{width:window.innerWidth*Tt.devicePixelRatio/16>>0,height:window.innerHeight*Tt.devicePixelRatio/16>>0,format:Wi.gl.RGB,linear:!0}),_A.env.isNico&&console.log("built Bloom in",Date.now()-n),n=Date.now(),Fn=new Lt(Wi,{keepAlpha:!0}),kn=new tt(Wi.gl,{width:window.innerWidth*Tt.devicePixelRatio,height:window.innerHeight*Tt.devicePixelRatio,linear:!0}),_A.env.isNico&&console.log("built SMAA in",Date.now()-n),n=Date.now(),zn=new tt(Wi.gl,{width:window.innerWidth*Tt.devicePixelRatio,height:window.innerHeight*Tt.devicePixelRatio,linear:!0}),_A.env.isNico&&console.log("built metaball in",Date.now()-n),n=Date.now(),function(e){let t=ht.length/3,i=new Array(4096),n=[];for(var s=0,o=t;s{var t;n[e.name]=e.value||(null==e||null===(t=e.keyFrames[0])||void 0===t?void 0:t.value)})),n={...n,...Wn[e]},Wn[e].type){case"Container":i=new Xe;break;case"BillsMeshStatic":i=new Ot(Wi.gl,n);break;case"BillsMeshReworked":i=new Dt(Wi.gl,n);break;case"Wallet":i=new Qt(Wi.gl,n);break;case"Dart":i=new ti(Wi.gl,n);break;case"Electric":i=new ii(Wi.gl,n);break;case"Blob":i=new ni(Wi.gl,n);break;case"Stripe":i=new ci(Wi.gl,n);break;case"MultiStripes":i=new hi(Wi.gl,n);break;case"MultiLogos":i=new Ri(Wi.gl,n);break;case"SpiralMesh":i=new Mt(Wi.gl,n);break;case"ParticleSystem":i=new Jt(Wi.gl,n);break;case"ParticlesMesh":i=new Xt(Wi.gl,n);break;case"Logo":i=new We,an=an||new ot(Wi.gl,{radius:1e-4,heightSegments:5,widthSegments:5}),rn=rn||new Ae(Wi.gl,{wireframe:!1,depthTest:!0,uniforms:{uColor:[1,0,0],color:[1,0,0]}}),i.geometry=an,i.material=rn,i.alpha=1}i&&(Wn[e].id?i.id=Wn[e].id:console.warn("missing id for item",n),void 0!==Wn[e].position&&(i.position=Wn[e].position),void 0!==Wn[e].rotation&&(i.rotation=Wn[e].rotation),void 0!==Wn[e].scale&&(i.scale=Wn[e].scale),Wn[e].parent&&pn[Wn[e].parent]?pn[Wn[e].parent].add(i):(i.visible=!1,Ki.add(i)),pn[Wn[e].id]=i,t.onLoading&&t.onLoading(e/Wn.length))}_A.env.isNico&&console.log("• All meshes built in ",Date.now()-s,"ms");let o=Date.now();qn(0,!0),_A.env.isNico&&console.log("first resize in ",Date.now()-o),_A.env.isNico&&console.log("• All built in ",Date.now()-i,"ms")}void 0!==document.hidden?Tn="visibilitychange":void 0!==document.msHidden?Tn="msvisibilitychange":void 0!==document.webkitHidden&&(Tn="webkitvisibilitychange"),document.addEventListener(Tn,(function(e){Vi="visible"!==document.visibilityState,dn=("undefined"==typeof performance?Date:performance).now()}),!1),window.addEventListener("deviceorientation",(function(e){event.gamma,event.beta}),!0),window.addEventListener("resize",qn,!1),document.addEventListener("mousemove",(function(e){e.pageX,window.innerWidth,window.innerWidth,e.pageY,window.innerHeight,window.innerHeight,e.pageX,window.innerWidth,e.pageY,window.innerHeight}),!1);const Qn={};function $n(e,t){Qn[e]=Qn[e]||[],Qn[e].push(t)}function es(e,t){Qn[e]&&Qn[e].forEach((e=>e(t)))}class ts{constructor(e){if(!e.el)return void console.warn('missing "el" key for GLScene options');let t=e.el,i=e.data;this.onTimeUpdate=e.onTimeUpdate,this.handlers={},Wn=i.layers,Kn=i.chapters,this.el=t,Zn(this.el,{}),this.el.appendChild(Wi.canvas),requestAnimationFrame((()=>{e.ready&&e.ready()})),$n("textchange",(e=>{var t;null===(t=this.handlers.textchange)||void 0===t||t.forEach((t=>t(e)))})),$n("consoletextchange",(e=>{var t;null===(t=this.handlers.consoletextchange)||void 0===t||t.forEach((t=>t(e)))}))}update(){Jn()}play(){var e,t;let i;clearTimeout(this.nextTimer),null===(e=this.timeTween)||void 0===e||e.destroy(),null===(t=this.homeTween)||void 0===t||t.destroy(),Xi=!1,Kn.forEach(((e,t)=>{e.name===Yn&&(i=t)}));const{startTime:n,endTime:s}=Kn[i],o=fn,a=s-o;this.timeTween=Fi({progress:0},{to:{progress:1},easing:[.25,.25,.75,.75],duration:Math.abs(a),step:e=>{var t;fn=o+e.progress*a,null==this||this.onTimeUpdate(fn),null===(t=this.handlers.timeupdate)||void 0===t||t.forEach((e=>e(fn)))},end:()=>{this.nextTimer=setTimeout((()=>{this.end&&this.end()}),Math.max(0,3e3-Math.abs(s-n)))}})}pause(){var e,t;clearTimeout(this.nextTimer),null===(e=this.timeTween)||void 0===e||e.destroy(),null===(t=this.homeTween)||void 0===t||t.destroy(),Xi=!0}hide(){Wi.canvas.style.opacity=0}show(){Wi.canvas.style.opacity=1}setXRay(e){ki=e,Xi&&(this.play(),requestAnimationFrame((()=>{this.pause()})))}setMaskSize(e,t){wn=[e,t]}setMaskScale(e){Pn=e}setMaskOffsetY(e){Rn=e}setMask(e){An=e}playHomeIntro(){Sn=0,this.homeTween=Fi({progress:0},{to:{progress:1},duration:4800,delay:0,step:e=>{Sn=e.progress}})}playChapterAt(e,t){var i;let n;clearTimeout(this.nextTimer),null===(i=this.timeTween)||void 0===i||i.destroy(),Kn.forEach(((t,i)=>{t.name==e&&(n=i)}));let{startTime:s,endTime:o}=Kn[n];Yn=e,Xi=!1,fn=s+t*(o-s),null==this||this.onTimeUpdate(fn)}getChapterIndexByName(e){let t;return Kn.forEach(((i,n)=>{i.name===e&&(t=n)})),t}getCurrentChapter(){let e=0;return Kn.forEach(((t,i)=>{t.startTime<=fn&&(e=i)})),Kn[e]}on(e,t){this.handlers[e]=this.handlers[e]||[],this.handlers[e].push(t)}off(e,t){const i=this.handlers[e].length;for(let n=0;n{var t;null===(t=this.handlers.timeupdate)||void 0===t||t.forEach((e=>e(fn)))},end:()=>{s&&s()}});return}clearTimeout(this.nextTimer),null===(t=this.timeTween)||void 0===t||t.destroy(),Yn=i;let h=r-a;this.timeTween=Fi({progress:0},{debug:!0,to:{progress:1},easing:[0,0,1,1],duration:Math.abs(h),step:e=>{var t;n&&n(e.progress),fn=a+e.progress*h,null===(t=this.handlers.timeupdate)||void 0===t||t.forEach((e=>e(fn)))},end:()=>{s&&s()}})}move(e){var t,i;clearTimeout(this.nextTimer),null===(t=this.timeTween)||void 0===t||t.destroy(),fn+=200*e,fn=Math.max(fn,0),null==this||this.onTimeUpdate(fn),null===(i=this.handlers.timeupdate)||void 0===i||i.forEach((e=>e(fn)))}seek(e){var t,i;clearTimeout(this.nextTimer),null===(t=this.timeTween)||void 0===t||t.destroy(),fn=e,null==this||this.onTimeUpdate(e),null===(i=this.handlers.timeupdate)||void 0===i||i.forEach((e=>e(fn)))}getScreenPositions(){return function(){if(!pn.multiLogos)return[];let{meshes:e}=pn.multiLogos,t={},i=Oe(),n=0;for(let s in e){let o=e[s];if(o.visible&&(!o.parent||o.parent.visible)){o.parent&&(o.parent.updateMatrix(),o.parent.updateWorldMatrix()),o.updateMatrix(),o.updateWorldMatrix(),Ge(i,o.worldMatrix[12],o.worldMatrix[13],o.worldMatrix[14]),je(i,i,Yi.inverseWorldMatrix),je(i,i,Yi.projectionMatrix);let e=.5*window.innerWidth+i[0]*window.innerWidth*.5,s=.5*window.innerHeight+-1*i[1]*window.innerHeight*.5,a=o.id||"mesh_"+n;t[a]={id:a,position:[e,s],alpha:o.alpha,mode:o.mode},n++}}return t}()}resize(){qn()}}var is={chapters:[{name:"GO",color:"#ff0000",startTime:0,endTime:112.5},{name:"Bills Enter",color:"#92ef00",startTime:938.75,endTime:4683.75},{name:"Bills 1 to Bills 2",color:"#92ef00",startTime:4808.75,endTime:8533.75},{name:"Arc 1 to Arc 2",color:"#92ef00",startTime:8658.75,endTime:12416.25},{name:"Rest Bills 1 > Bills 2",color:"#92ef00",startTime:12541.25,endTime:18978.75},{name:"Bills 2 > Bills 3",color:"#92ef00",startTime:19103.75,endTime:22858.75},{name:"Arc 3 < Arc 2",color:"#92ef00",startTime:22983.75,endTime:26738.75},{name:"Arc 2 > Arc 1",color:"#92ef00",startTime:26863.75,endTime:30656.25},{name:"4 Arcs",color:"#92ef00",startTime:30781.25,endTime:36671.25},{name:"20 Arcs",color:"#92ef00",startTime:36796.25,endTime:43178.75},{name:"Wallet Centered",color:"#ffee9d",startTime:43303.75,endTime:54021.25},{name:"Wallet + Orange bills + Darts",color:"#22ffa7",startTime:54146.25,endTime:79742.5},{name:"Logos + Bill",color:"#c1ff00",startTime:79867.5,endTime:100237.5},{name:"Logos + Darts",color:"#ffee9d",startTime:100362.5,endTime:109487.5},{name:"Logo Attraction",color:"#01beb0",startTime:109612.5,endTime:115080},{name:"Blobs",color:"#c1ff00",startTime:115341.25,endTime:127345},{name:"Cubes Explosion",color:"#ff0000",startTime:127470,endTime:131925},{name:"Black Hole",color:"#01beb0",startTime:132050,endTime:153760},{name:"Black Hole: Rocket fire",color:"#01beb0",startTime:153885,endTime:157562.5},{name:"Black Hole: Rocket return",color:"#01beb0",startTime:157687.5,endTime:161102.5},{name:"Black Hole: Rocket fire2",color:"#01beb0",startTime:161227.5,endTime:164045},{name:"Black Hole: Rocket return2",color:"#01beb0",startTime:164170,endTime:168745},{name:"Black Hole: Rocket fire3",color:"#01beb0",startTime:168870,endTime:170907.5},{name:"Black Hole: Rocket return3",color:"#01beb0",startTime:171032.5,endTime:178150},{name:"Spiral 1 Bar",color:"#01beb0",startTime:178275,endTime:182032.5},{name:"Spiral 2 Bars Side",color:"#01beb0",startTime:182157.5,endTime:185452.5},{name:"Spiral 4 Bars Side",color:"#01beb0",startTime:185577.5,endTime:189235},{name:"Spiral full Side",color:"#01beb0",startTime:189360,endTime:193955},{name:"electric",color:"#01beb0",startTime:194080,endTime:198310},{name:"Golden Ratio",color:"#01beb0",startTime:198455,endTime:205483.75},{name:"End",color:"#01beb0",startTime:205608.75,endTime:215098.75},{name:"Home",color:"#01beb0",startTime:215223.75,endTime:222717.5},{name:"homeA_spiral",color:"#01beb0",startTime:222842.5,endTime:224612.5},{name:"homeA_balance",color:"#01beb0",startTime:224822.5,endTime:226652.5},{name:"homeA_spend",color:"#01beb0",startTime:226822.5,endTime:228512.5},{name:"homeA_send",color:"#01beb0",startTime:228682.5,endTime:230232.5},{name:"homeA_money",color:"#01beb0",startTime:230442.5,endTime:232172.5},{name:"homeA_alt",color:"#01beb0",startTime:232482.5,endTime:233472.5},{name:"homeA_waitlist",color:"#01beb0",startTime:233949,endTime:234299},{name:"aside_particles",color:"#01beb0",startTime:234349,endTime:237699}],layers:[{id:"texts",opened:!0,color:"#aa67d3",props:[{name:"index",keyFrames:[{time:1150,value:0,selected:!1},{time:5060,value:0,selected:!1},{time:9100,value:0,selected:!1},{time:12752.40100565682,value:0,selected:!1},{time:15993.789809806625,value:0,selected:!1},{time:20200,value:0,selected:!1},{time:23600,value:0,selected:!1},{time:27180,value:0,selected:!1},{time:31031.11083984375,value:0,selected:!1},{time:34471.11083984375,value:0,selected:!1},{time:37333.3349609375,value:0,selected:!1},{time:43900.63645907805,value:0,selected:!1},{time:47264.09782442278,value:0,selected:!1},{time:51278.30198560013,value:0,selected:!1},{time:54966.66748046875,value:0,selected:!1},{time:59346.66748046875,value:0,selected:!1},{time:61866.66748046875,value:0,selected:!1},{time:63731.11328125,value:0,selected:!1},{time:66271.11328125,value:0,selected:!1},{time:66777.7783203125,value:0,selected:!1},{time:67237.7783203125,value:0,selected:!1},{time:67817.7783203125,value:0,selected:!1},{time:68237.7783203125,value:0,selected:!1},{time:68657.7783203125,value:0,selected:!1},{time:72497.7783203125,value:0,selected:!1},{time:74997.7783203125,value:0,selected:!1},{time:80133.29552967662,value:0,selected:!1},{time:83013.68117509708,value:0,selected:!1},{time:86024.99344076392,value:0,selected:!1},{time:89315.13210008535,value:0,selected:!1},{time:92828.32974336336,value:0,selected:!1},{time:95555.96766516303,value:0,selected:!1},{time:98654.56434432746,value:0,selected:!1},{time:101595.556640625,value:0,selected:!1},{time:104955.556640625,value:0,selected:!1},{time:109655.556640625,value:0,selected:!1},{time:113115.556640625,value:0,selected:!1},{time:117701.50303642082,value:0,selected:!1},{time:122932.90685960001,value:0,selected:!1},{time:127792.919921875,value:0,selected:!1},{time:131190.693359375,value:0,selected:!1},{time:137790.693359375,value:0,selected:!1},{time:143172.919921875,value:0,selected:!1},{time:148312.919921875,value:0,selected:!1},{time:151712.919921875,value:0,selected:!1},{time:154128.4765625,value:0,selected:!1},{time:156948.4765625,value:0,selected:!1},{time:161248.4765625,value:0,selected:!1},{time:165030.693359375,value:0,selected:!1},{time:168990.693359375,value:0,selected:!1},{time:172970.693359375,value:0,selected:!1},{time:178344.033203125,value:0,selected:!1},{time:182179.58984375,value:0,selected:!1},{time:185519.58984375,value:0,selected:!1},{time:189439.58984375,value:0,selected:!1}],type:"number",useKeyFrames:!0}]},{id:"console_texts",opened:!0,color:"#aa67d3",props:[{name:"index",keyFrames:[{time:5060,value:0,selected:!1},{time:9100,value:0,selected:!1},{time:12752.40100565682,value:0,selected:!1},{time:15993.789809806625,value:0,selected:!1},{time:20200,value:0,selected:!1},{time:23600,value:0,selected:!1},{time:27180,value:0,selected:!1},{time:31031.11083984375,value:0,selected:!1},{time:34471.11083984375,value:0,selected:!1},{time:47269.3349609375,value:0,selected:!1},{time:67308.63645907806,value:0,selected:!1},{time:79957.7783203125,value:0,selected:!1},{time:83013.29552967662,value:0,selected:!1},{time:86024.99344076392,value:0,selected:!1},{time:92828.32974336336,value:0,selected:!1},{time:95555.96766516303,value:0,selected:!1},{time:101595.556640625,value:0,selected:!1},{time:109695.556640625,value:0,selected:!1},{time:113150.2265625,value:0,selected:!1},{time:137790.693359375,value:0,selected:!1},{time:154132.4765625,value:0,selected:!1},{time:165030.693359375,value:0,selected:!1}],type:"number",useKeyFrames:!0}]},{id:"settings",props:[{name:"useBloom",keyFrames:[{time:0,value:!1,selected:!1},{time:70539.4624224631,value:!1,selected:!1},{time:133580,value:!0,selected:!1},{time:177513.9377899804,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"bloomAmount",keyFrames:[{time:0,value:.7,selected:!1}],type:"number",useKeyFrames:!0,value:.7},{name:"bloomThreshold",keyFrames:[{time:0,value:.7,selected:!1},{time:133517.2265625,value:1,selected:!1}],type:"number",useKeyFrames:!0,value:.7},{name:"useMetaball",keyFrames:[{time:0,value:!1,selected:!1},{time:101763.75,value:!1,selected:!1},{time:109183.75,value:!0,selected:!1},{time:124681.57108476167,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"useOrthographicCamera",keyFrames:[{time:0,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"useMask",keyFrames:[{time:0,value:!1,selected:!1},{time:215453.0273141123,value:!0,selected:!1},{time:222550,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"maskPosition",keyFrames:[{time:0,value:[0,0],selected:!1}],type:"object",useKeyFrames:!0},{name:"maskSize",keyFrames:[{time:0,value:[0,0],selected:!1}],type:"object",useKeyFrames:!0}],opened:!0,color:"#aa67d3"},{id:"camera",props:[{name:"offsetY",keyFrames:[{time:0,value:0,selected:!1},{time:96377.89234065346,value:0,tween:!0,easing:"ease-out",selected:!1},{time:103280,value:-.14,selected:!1},{time:115563.90702042734,value:-.14,tween:!0,easing:"ease-out",selected:!1},{time:123365.35806527354,value:0,selected:!1},{time:132170,value:0,selected:!1}],useKeyFrames:!0,type:"number"},{name:"offsetX",keyFrames:[{time:0,value:0,selected:!1},{time:234378.671875,value:.4,selected:!1}],useKeyFrames:!0,type:"number"},{name:"mobileOffsetX",keyFrames:[{time:0,value:0,selected:!1},{time:54180,value:0,tween:!0,easing:"ease-out",selected:!1},{time:56380,value:.5,selected:!1},{time:83896.22121049813,value:.5,tween:!0,easing:"ease-out",selected:!1},{time:85881.9416175683,value:-.35,selected:!1,tween:!0,easing:"ease-in-out"},{time:96443.35565077665,value:.35,selected:!1,tween:!0,easing:"ease-out"},{time:100109.3010176754,value:0,selected:!1},{time:132106.25,value:0,selected:!1}],useKeyFrames:!0,type:"number"},{name:"mobileLookAtOffsetX",keyFrames:[{time:0,value:0,selected:!1},{time:83852.57900374933,value:0,tween:!0,easing:"ease-out",selected:!1},{time:85881.9416175683,value:-.35,tween:!0,easing:"ease-in-out",selected:!1},{time:96421.53454740225,value:.35,tween:!0,easing:"ease-out",selected:!1},{time:100131.12212104982,value:0,selected:!1}],useKeyFrames:!0,type:"number"},{name:"mobileLookAtOffsetY",keyFrames:[{time:0,value:0,selected:!1}],useKeyFrames:!0,type:"number"},{name:"mobileOffsetY",keyFrames:[{time:0,value:0,selected:!1},{time:54184.443359375,value:0,tween:!0,easing:"ease-out",selected:!1},{time:56384.443359375,value:.3,selected:!1},{time:83874.40010712373,value:.3,selected:!1,tween:!0,easing:"ease-out"},{time:85860.1205141939,value:0,selected:!1,tween:!0},{time:96399.71344402786,value:0,tween:!0,easing:"ease-out",selected:!1},{time:103220,value:0,selected:!1},{time:128506.25,value:0,selected:!1},{time:132146.25,value:0,selected:!1}],useKeyFrames:!0,type:"number"},{name:"mobileOffsetZ",keyFrames:[{time:0,value:0,selected:!1},{time:54188.88916015625,value:0,tween:!0,easing:"ease-out",selected:!1},{time:56388.88916015625,value:.85,selected:!1},{time:83939.86341724693,value:.85,tween:!0,easing:"ease-out",selected:!1},{time:85881.9416175683,value:0,selected:!1},{time:100600,value:0,tween:!0,easing:"ease-out",selected:!1},{time:103140,value:.5,selected:!1},{time:132156.533203125,value:0,selected:!1},{time:234378.671875,value:.5,selected:!1}],useKeyFrames:!0,type:"number"},{name:"x",keyFrames:[{time:0,value:-.75,selected:!1},{time:30902.610000000004,value:-.75,tween:!0,easing:"ease-in-out",selected:!1},{time:35331.89,value:-.85,selected:!1},{time:37351.90294117647,value:-.85,tween:!0,easing:"ease-out",selected:!1},{time:42517.973529411756,value:-1,selected:!1},{time:43504.51008645533,value:-1,tween:!0,selected:!1,easing:"ease-out"},{time:50320.48529150965,value:0,selected:!1},{time:96750.72082076705,value:0,tween:!0,easing:"ease-out",selected:!1},{time:103243.75,value:0,selected:!1},{time:132201.03747828247,value:0,tween:!1,easing:"linear",selected:!1},{time:178426.25,value:0,selected:!1}],type:"number",useKeyFrames:!0},{name:"y",keyFrames:[{time:0,value:.7,selected:!1},{time:37231.76176470588,value:.7,tween:!0,easing:"ease-out",selected:!1},{time:42518.397058823524,value:1.5,selected:!1},{time:43455.09221902016,value:1.5,tween:!0,selected:!1,easing:"ease-out"},{time:50331.572633562406,value:.6,selected:!1},{time:54265.10376260667,value:.6,tween:!0,easing:"ease-in-out",selected:!1},{time:56411.674747866564,value:.6,selected:!1},{time:96524.54817066452,value:.6,tween:!0,easing:"ease-out",selected:!1},{time:103243.75,value:0,selected:!1},{time:132201.03747828247,value:0,tween:!1,easing:"linear",selected:!1},{time:178426.25,value:0,selected:!1}],type:"number",useKeyFrames:!0},{name:"z",keyFrames:[{time:0,value:.9,selected:!1},{time:30996.849999999995,value:.9,tween:!0,easing:"ease-in-out",selected:!1},{time:35143.409999999996,value:1,selected:!1},{time:37351.90294117647,value:1,tween:!0,easing:"ease-out",selected:!1},{time:42638.53823529412,value:1,selected:!1},{time:43556.57307692308,value:1,tween:!0,easing:"ease-out",selected:!1},{time:50331.572633562406,value:.7,selected:!1},{time:54293.916795965866,value:.7,tween:!0,easing:"ease-in-out",selected:!1},{time:56393.66660201707,value:.9,selected:!1},{time:79450.14748201439,value:.9,tween:!0,selected:!1},{time:84008.14855710503,value:1.2,selected:!1},{time:96728.23468221397,value:1.2,tween:!0,easing:"ease-out",selected:!1},{time:103243.75,value:1.2,selected:!1},{time:132144.199553239,value:6,tween:!0,easing:"ease-in-out",selected:!1},{time:140396.45509571736,value:3,selected:!1,tween:!1,easing:"ease-in-out"},{time:178426.25,value:.5,selected:!1},{time:182548.9489795918,value:.5,tween:!0,easing:"ease-out",selected:!1},{time:185516.64455782314,value:1,selected:!1},{time:186448.24,value:1,tween:!0,easing:"ease-out",selected:!1},{time:192182.1632266667,value:3,selected:!1},{time:197132.18206521738,value:2,selected:!1,tween:!0,easing:"ease-in-out"},{time:205299.42084430275,value:4,tween:!0,easing:"ease-in-out",selected:!1},{time:210530.9697041592,value:60,selected:!1},{time:211547.4484864993,value:3,selected:!1},{time:215368.71522508853,value:3,tween:!0,easing:"linear",selected:!1},{time:218681.68437025798,value:1.5,selected:!1},{time:218790.79413252402,value:1.5,tween:!0,selected:!1,easing:"ease-out"},{time:222381.4972180071,value:1.5,selected:!1},{time:232608.75,value:3,selected:!1},{time:233573.203125,value:3,selected:!1},{time:234378.671875,value:1,selected:!1}],type:"number",useKeyFrames:!0}],opened:!0,color:"#01beb0"},{id:"background",props:[{name:"color",keyFrames:[{time:0,value:[.9803,.9803,.9803],selected:!1},{time:132077.8754033259,value:[.9803,.9803,.9803],tween:!0,selected:!1,easing:"linear"},{time:132745.55408994242,value:[.01568627450980392,.07450980392156863,.5411764705882353],selected:!1},{time:215355.07650480524,value:[.01568627450980392,.07450980392156863,.5411764705882353],selected:!1},{time:234349,value:[.98,.98,.98],selected:!1}],type:"object",useKeyFrames:!0},{name:"alpha",keyFrames:[],type:"number",value:.9}],opened:!0,color:"#aa67d3"},{id:"H1",props:[{name:"visible",keyFrames:[{time:0,value:!0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"rotation",type:"object",keyFrames:[{time:0,value:[0,.784,0],selected:!1,tween:!0},{time:3346.482352941176,value:[0,0,0],selected:!1},{time:38206.996574688674,value:[0,0,0],tween:!0,selected:!1},{time:44258.54282408369,value:[0,2,0],selected:!1}],useKeyFrames:!0,value:[0,0,0]}],opened:!1,color:"#aa67d3"},{id:"yellowBillsStack",type:"BillsMeshStatic",color:"#ffee9d",useAnim:!1,parent:"H1",num:20,billsBufferSize:[12,4],props:[{name:"visible",keyFrames:[{time:1383.044117647059,value:!1,selected:!1},{time:54331.733902249805,value:!0,selected:!1},{time:103762.5,value:!1,selected:!1},{time:143246.2124466499,value:0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"position",keyFrames:[{time:54268.705391776566,value:[1,0,0],selected:!1,tween:!0,easing:"ease-out"},{time:56523.325252133436,value:[.35,0,0],selected:!1},{time:80160.04407293662,value:[.35,0,0],tween:!0,easing:"ease-out",selected:!1},{time:87078.44452108371,value:[.57,0,-.07],selected:!1},{time:96735.2616005118,value:[.57,0,-.07],selected:!1,tween:!0,easing:"ease-in-out"},{time:102602.5,value:[1.5,0,0],selected:!1}],type:"object",useKeyFrames:!0},{name:"color",keyFrames:[{time:0,value:[1,.9019607843137255,.6549019607843137],selected:!1},{time:54297.51842513577,value:[1,.7686274509803922,.6705882352941176],selected:!1},{time:79228.75,value:[1,.7686274509803922,.6705882352941176],tween:!0,selected:!1},{time:81831.39930369577,value:[1,.9568627450980393,.7294117647058823],selected:!1}],type:"object",useKeyFrames:!0},{name:"rotation",keyFrames:[],type:"object",value:[0,.78,0]}],opened:!1},{id:"billsMeshReworked_1",type:"BillsMeshReworked",parent:"H1",lines:25,props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:1100,value:!0,selected:!1},{time:45967.15130791397,value:!1,selected:!1},{time:79384.06404915132,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"alpha",keyFrames:[{time:0,value:1,selected:!1},{time:43529.2190201729,value:1,tween:!0,selected:!1},{time:45901.276657060516,value:0,selected:!1}],value:1,type:"number",useKeyFrames:!0},{name:"stepProgress",keyFrames:[{time:1001.2144104126321,value:1,tween:!0,selected:!1,easing:"linear"},{time:3742.167351589103,value:0,tween:!1,selected:!1},{time:4955,value:1.001,tween:!0,selected:!1},{time:7635,value:2,tween:!1,selected:!1},{time:13162.42221873036,value:2,tween:!0,selected:!1},{time:17698.69500314268,value:3,tween:!1,selected:!1},{time:19323.942528735635,value:3,tween:!0,selected:!1},{time:22523.80459770115,value:4,tween:!1,selected:!1}],type:"number",useKeyFrames:!0},{name:"position",keyFrames:[{time:0,value:[.055,0,0],selected:!1},{time:4955,value:[.055,0,-.1],selected:!1,tween:!0,easing:"ease-out"},{time:7200,value:[.0557,0,-.29],selected:!1},{time:43479.801152737746,value:[0,0,-.288],tween:!0,selected:!1}],type:"object",useKeyFrames:!0},{name:"rotation",keyFrames:[{time:0,value:[0,0,0],selected:!1}],type:"object",useKeyFrames:!0},{name:"flip",keyFrames:[{time:0,value:0,selected:!1}],type:"number",useKeyFrames:!0},{name:"color",keyFrames:[{time:0,value:[.35294117647058826,.8941176470588236,.7529411764705882],selected:!1},{time:5355,value:[.35294117647058826,.8941176470588236,.7529411764705882],tween:!0,selected:!1},{time:5735,value:[.996078431372549,.9686274509803922,.7568627450980392],selected:!1,tween:!0},{time:6035,value:[1,.7686274509803922,.6705882352941176],selected:!1}],type:"object",useKeyFrames:!0},{name:"lineIndex",value:0,keyFrames:[{time:0,value:0,selected:!1}],type:"number"}],opened:!1,color:"#22ffa7"},{id:"billsMeshReworked_2",type:"BillsMeshReworked",parent:"H1",lines:1,props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:43644.51153846153,value:!1,selected:!1},{time:84304.00307980717,value:!0,selected:!1},{time:100991.79609267092,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"stepProgress",keyFrames:[{time:1001.2144104126321,value:1,tween:!0,selected:!1,easing:"linear"},{time:3742.167351589103,value:0,tween:!1,selected:!1},{time:4955,value:0,tween:!0,selected:!1},{time:7635,value:2,tween:!1,selected:!1},{time:13162.42221873036,value:2,tween:!0,selected:!1},{time:16178.695003142679,value:3,tween:!1,selected:!1},{time:19323.942528735635,value:3,tween:!0,selected:!1},{time:22523.80459770115,value:4,tween:!1,selected:!1},{time:79789.77338129497,value:4.005,tween:!1,selected:!1},{time:84892.10212206234,value:4.005,tween:!0,selected:!1},{time:88203.42312830765,value:4.25,selected:!1,tween:!0},{time:90921.54832329207,value:4.5,selected:!1,tween:!0},{time:93301.11676486341,value:4.7,selected:!1,tween:!0},{time:94697.66738082486,value:4.8,selected:!1,tween:!0},{time:96915.65356920852,value:4.9999,tween:!1,selected:!1}],type:"number",useKeyFrames:!0},{name:"position",keyFrames:[{time:0,value:[0,0,0],selected:!1},{time:4912.5,value:[0,0,0],selected:!1,tween:!0,easing:"ease-out"},{time:7200,value:[.2,0,-.29],selected:!1},{time:79450.14748201439,value:[-.5,0,0],selected:!1},{time:94697.66738082486,value:[-.5,0,0],tween:!0,selected:!1},{time:95674.59882617107,value:[-.49,.07,.003],selected:!1,tween:!0}],type:"object",useKeyFrames:!0},{name:"rotation",keyFrames:[{time:0,value:[0,0,0],selected:!1}],type:"object",useKeyFrames:!0},{name:"flip",keyFrames:[{time:0,value:0,selected:!1}],type:"number",useKeyFrames:!0},{name:"color",keyFrames:[{time:0,value:[.35294117647058826,.8941176470588236,.7529411764705882],selected:!1},{time:90177.62159416851,value:[.35,.89,.75],tween:!0,selected:!1},{time:94291.99285088042,value:[1,.95,.72],selected:!1,tween:!0}],type:"object",useKeyFrames:!0},{name:"lineIndex",value:0,keyFrames:[{time:0,value:0,selected:!1}],type:"number"},{name:"alpha",value:0,keyFrames:[{time:0,value:0,selected:!1},{time:84330.67746081197,value:1,selected:!1},{time:95952.70259365242,value:1,tween:!0,selected:!1},{time:96900.32053125312,value:0,selected:!1}],type:"number"}],opened:!1,color:"#22ffa7"},{id:"neighbourg1BillsStack",type:"BillsMeshStatic",color:"#ffee9d",useAnim:!1,num:5,billsBufferSize:[12,4],props:[{name:"visible",keyFrames:[{time:1383.044117647059,value:!1,selected:!1},{time:31279.570000000003,value:!0,selected:!1},{time:45945.35676125028,value:!1,selected:!1},{time:177530.02644503213,value:0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"alpha",keyFrames:[{time:0,value:1,selected:!1},{time:43496.275786034304,value:1,tween:!0,selected:!1},{time:45917.751290357075,value:0,selected:!1}],value:1,type:"number",useKeyFrames:!0},{name:"position",keyFrames:[{time:0,value:[1,0,0],selected:!1},{time:31373.809999999998,value:[-1,0,0],tween:!0,easing:"ease-out",selected:!1},{time:33729.810000000005,value:[-.25,0,0],selected:!1},{time:43479.80416896501,value:[-.25,0,0],tween:!0,selected:!1}],type:"object",useKeyFrames:!0},{name:"color",keyFrames:[{time:0,value:[.35,.89,.75],selected:!1}],type:"object",useKeyFrames:!0},{name:"rotation",type:"object",keyFrames:[{time:0,value:[0,0,0],selected:!1}],value:[0,.78,0],useKeyFrames:!0}],opened:!1},{id:"neighbourgBillsStack2",type:"BillsMeshStatic",parent:"H1",color:"#ffee9d",useAnim:!1,num:5,billsBufferSize:[12,4],props:[{name:"visible",keyFrames:[{time:1383.044117647059,value:!1,selected:!1},{time:31091.09,value:!0,selected:!1},{time:45967.15130791397,value:!1,selected:!1},{time:177530.02644503213,value:0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"alpha",keyFrames:[{time:0,value:1,selected:!1},{time:43455.09221902016,value:1,tween:!0,selected:!1},{time:45925.9855907781,value:0,selected:!1}],value:1,type:"number",useKeyFrames:!0},{name:"position",keyFrames:[{time:0,value:[1,0,0],selected:!1},{time:31185.33,value:[1,0,0],tween:!0,easing:"ease-out",selected:!1},{time:33824.05,value:[.25,0,0],selected:!1},{time:43529.2190201729,value:[.25,0,0],tween:!0,selected:!1}],type:"object",useKeyFrames:!0},{name:"color",keyFrames:[{time:0,value:[.35,.89,.75],selected:!1}],type:"object",useKeyFrames:!0},{name:"rotation",type:"object",keyFrames:[{time:0,value:[0,0,0],selected:!1}],value:[0,.78,0],useKeyFrames:!0}],opened:!1},{id:"particlesBill",type:"ParticleSystem",depthTest:!1,particleType:"POINTS",bufferSize:[25,25],color:"#ff85fe",mode:10,props:[{name:"visible",keyFrames:[{time:1.25,value:!1,selected:!1},{time:80021.61154258168,value:!0,selected:!1},{time:84904.08342260311,value:!0,selected:!1},{time:95962.39470683744,value:!0,selected:!1},{time:101233.75,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"position",keyFrames:[{time:0,value:[0,0,0],selected:!1}],type:"object",useKeyFrames:!0},{name:"progress",keyFrames:[{time:0,value:0,selected:!1},{time:79708.75,value:0,selected:!1},{time:84918.98826638868,value:0,selected:!1,tween:!0},{time:88319.61523903992,value:.25,selected:!1,tween:!0},{time:91055.60699097262,value:.5,selected:!1,tween:!0},{time:93279.29566148901,value:.7,selected:!1,tween:!0},{time:94654.02517407606,value:.8,tween:!0,selected:!1},{time:96931.49185728405,value:.999,selected:!1}],type:"number",useKeyFrames:!0},{name:"mode",keyFrames:[{time:12.5,value:0,selected:!1},{time:80958.55516871987,value:10,selected:!1}],type:"number",useKeyFrames:!0,value:10},{name:"alpha",keyFrames:[{time:0,value:1,selected:!1},{time:79387.0849609375,value:0,selected:!1},{time:80978.55962261901,value:0,tween:!0,selected:!1},{time:81873.2248609693,value:1,selected:!1}],type:"number",useKeyFrames:!0}],opened:!1},{id:"particleSystem",type:"ParticleSystem",particleStep:.001,parent:"H1",depthTest:!1,particleType:"POINTS",bufferSize:[25,25],mode:1,step:1,startPos:[0,.05,-.25],endPos:[0,.05,.25],props:[{name:"visible",keyFrames:[{time:0,value:!0,selected:!1},{time:8621.25,value:!0,selected:!1},{time:60513.3349609375,value:!0,selected:!1},{time:114315.46697534622,value:!1,selected:!1},{time:120560.29406177398,value:!0,selected:!1},{time:129511.5,value:!1,selected:!1},{time:141672.11492900248,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"reverse",keyFrames:[{time:0,value:!1,selected:!1},{time:12545.798939403901,value:!0,selected:!1},{time:13081.417347580138,value:!1,selected:!1},{time:26935,value:!0,selected:!1},{time:30875,value:!1,selected:!1}],type:"boolean",value:!1,useKeyFrames:!0},{name:"progress",keyFrames:[{time:0,value:1,selected:!1},{time:8755,value:0,tween:!0,selected:!1},{time:11635,value:1,selected:!1},{time:12545.921572612162,value:0,tween:!1,selected:!1},{time:23149.362676056335,value:0,selected:!1,tween:!0},{time:25864.095070422536,value:1,selected:!1},{time:27053.399635036494,value:0,selected:!1,tween:!0},{time:29674.01277372263,value:1,selected:!1},{time:33449.922050473186,value:0,tween:!0,selected:!1},{time:36551.658832807574,value:1,selected:!1},{time:54615,value:0,tween:!1,selected:!1},{time:59596.07394366198,value:0,tween:!0,selected:!1},{time:61143.67957746479,value:1,selected:!1},{time:63625.71442157154,value:0,tween:!0,selected:!1,easing:"linear"},{time:65396.451659912964,value:1,selected:!1},{time:72655.79833597464,value:0,tween:!0,selected:!1},{time:74097.27670349908,value:1,selected:!1},{time:78199.01929982047,value:0,tween:!0,selected:!1},{time:79935.690948045,value:1,selected:!1},{time:120606.46155938052,value:1,tween:!0,selected:!1}],type:"number",useKeyFrames:!0},{name:"mode",keyFrames:[{time:0,value:1,selected:!1},{time:54595,value:1,selected:!1},{time:58995,value:1,selected:!1},{time:120593.97051767615,value:5,selected:!1}],type:"number",useKeyFrames:!0},{name:"spread",keyFrames:[{time:0,value:1,selected:!1},{time:12544.615108360978,value:.05,selected:!1},{time:19388.58620689655,value:1,selected:!1},{time:26967.195255474453,value:.05,selected:!1},{time:31185.33,value:1,selected:!1},{time:46491.51923076923,value:.5,selected:!1}],type:"number",useKeyFrames:!0},{name:"alpha",keyFrames:[{time:0,value:1,selected:!1}],type:"number",useKeyFrames:!0},{name:"step",keyFrames:[],type:"number",value:1},{name:"startPos",keyFrames:[{time:0,value:[0,.05,-.25],selected:!1},{time:8615,value:[.025,0,-.35],selected:!1},{time:12547.423276014404,value:[-.02,-.04,0],selected:!1},{time:23070.802816901407,value:[0,0,.28],selected:!1},{time:27018.91788321168,value:[-.02,-.04,0],selected:!1},{time:31279.570000000003,value:[0,0,.28],selected:!1},{time:59012.74399194356,value:[-.305,-.005,-.2],selected:!1},{time:61709.24283765348,value:[-.31,0,-.2],selected:!1},{time:62327.614741206744,value:[-.31,.01,-.2],selected:!1}],type:"object",useKeyFrames:!0},{name:"endPos",keyFrames:[{time:0,value:[0,.05,0],selected:!1},{time:8635,value:[.05,0,-.1],selected:!1},{time:12547.423276014404,value:[-.03,0,-.25],selected:!1},{time:23094.158450704228,value:[.05,0,-.1],selected:!1},{time:27018.91788321168,value:[-.03,0,-.25],selected:!1},{time:31279.570000000003,value:[0,0,-.1],selected:!1},{time:59016.75426687354,value:[.34,.05,.01],selected:!1}],type:"object",useKeyFrames:!0},{name:"pointSize",keyFrames:[{time:0,value:8,selected:!1},{time:43479.801152737746,value:8,selected:!1}],type:"number",value:8},{name:"scale",keyFrames:[{time:0,value:[1,1,1],selected:!1},{time:114743.75,value:[0,0,0],selected:!1},{time:120693.72267266407,value:[0,0,0],tween:!0,easing:"ease-out",selected:!1},{time:123749.26963243684,value:[2.1,2.1,2.1],selected:!1,tween:!0,easing:"ease-out"},{time:128067.38054707678,value:[1.8,1.8,1.8],tween:!0,selected:!1,easing:"ease-out"},{time:128313.29548494985,value:[1.8,1.8,1.8],selected:!1,tween:!0,easing:"ease-out"},{time:129560.5,value:[0,0,0],selected:!1}],value:[1,1,1],type:"object"}],opened:!1,color:"#92ef00"},{id:"particleLeak",type:"ParticleSystem",particleStep:.001,parent:"H1",depthTest:!1,particleType:"POINTS",bufferSize:[25,25],mode:1,step:1,startPos:[0,.05,-.25],endPos:[0,.05,.25],props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:46687.84840203981,value:!0,selected:!1},{time:119116.09239487335,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"progress",keyFrames:[{time:0,value:1,selected:!1},{time:46589.01266716949,value:1,selected:!1}],type:"number",useKeyFrames:!0},{name:"mode",keyFrames:[{time:43426.26915131934,value:0,selected:!1},{time:46395.455331412115,value:12,selected:!1},{time:234368,value:13,selected:!1}],type:"number",useKeyFrames:!0},{name:"spread",keyFrames:[{time:0,value:1,selected:!1},{time:54277.7783203125,value:1,selected:!1},{time:59434.54251264797,value:1.6,selected:!1},{time:60040,value:1,selected:!1,tween:!0,easing:"ease-out"},{time:61345.79122212867,value:1.2,selected:!1},{time:61785.722916044935,value:1.2,tween:!0,easing:"ease-out",selected:!1},{time:62074.784033441145,value:1.4,selected:!1},{time:63447.5866014659,value:1.4,tween:!0,easing:"ease-out",selected:!1},{time:69055.32498873197,value:1.6,tween:!0,easing:"ease-out",selected:!1},{time:70944.43676641739,value:1.8,selected:!1},{time:71872.61709555182,value:1.8,tween:!0,easing:"ease-out",selected:!1},{time:72252.2216796875,value:2,selected:!1}],type:"number",useKeyFrames:!0},{name:"pointSize",keyFrames:[{time:0,value:8,selected:!1}],type:"number",value:8},{name:"scale",keyFrames:[{time:0,value:[1,1,1],selected:!1},{time:115335.419921875,value:[1,1,1],selected:!1}],value:[1,1,1],type:"object"},{name:"position",keyFrames:[{time:0,value:[0,0,0],selected:!1},{time:54204.44580078125,value:[0,0,0],tween:!0,easing:"ease-out",selected:!1},{time:56644.44580078125,value:[-.35,.1,0],selected:!1},{time:79956.75555808951,value:[-.35,.1,0],tween:!0,easing:"ease-out",selected:!1},{time:86213.95695069798,value:[-.46,0,-.02],selected:!1},{time:96467.71247915085,value:[-.46,0,-.02],tween:!0,easing:"ease-out",selected:!1},{time:103273.1982421875,value:[0,0,0],selected:!1},{time:115355.419921875,value:[0,0,0],tween:!0,easing:"ease-in",selected:!1},{time:118800.42674565993,value:[0,-1,0],selected:!1},{time:234416,value:[0,.25,0],selected:!1}],value:[0,0,0],type:"object"}],opened:!1,color:"#00ffff"},{id:"walletGroup",type:"Container",opened:!0,color:"#0dddd7",props:[{name:"visible",keyFrames:[{time:12.5,value:!1,selected:!1},{time:45857.32326535138,value:!0,selected:!1},{time:55622.91795965865,value:!0,selected:!1},{time:118944.15050131276,value:!1,selected:!1},{time:177363.6352474499,value:0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"position",keyFrames:[{time:43553.92795389049,value:[0,0,0],tween:!1,selected:!1},{time:54239.89235841738,value:[0,0,0],selected:!1,tween:!0,easing:"ease-out"},{time:56451.29266873545,value:[-.35,.1,0],selected:!1},{time:79956.85663338637,value:[-.35,.1,0],tween:!0,easing:"ease-out",selected:!1},{time:86227.4214894822,value:[-.46,0,-.02],selected:!1},{time:96445.84668572876,value:[-.46,0,-.02],selected:!1,tween:!0,easing:"ease-out"},{time:103263.75,value:[0,0,0],selected:!1},{time:115411.92562196276,value:[0,0,0],tween:!0,easing:"ease-in",selected:!1},{time:118761.85867480471,value:[0,-1,0],selected:!1}],type:"object",useKeyFrames:!0},{name:"rotation",keyFrames:[{time:0,value:[0,0,0],selected:!1},{time:43562.162254311515,value:[0,.76,0],selected:!1},{time:96479.57589355839,value:[0,.76,0],tween:!0,easing:"ease-out",selected:!1},{time:103263.75,value:[.4,.76,0],selected:!1},{time:115411.8147197071,value:[.4,.76,0],tween:!0,easing:"ease-in",selected:!1},{time:118771.12775072892,value:[.4,.76,0],selected:!1}],type:"object",useKeyFrames:!1,value:[0,0,0]}]},{id:"walletBills",type:"BillsMeshStatic",parent:"walletGroup",color:"#faf1ef",useAnim:!1,billsBufferSize:[6,2],opened:!1,props:[{name:"visible",keyFrames:[],type:"boolean",value:!0},{name:"color",keyFrames:[],type:"object",value:[.35,.89,.75]},{name:"alpha",keyFrames:[{time:0,value:0,selected:!1},{time:45785.9783538027,value:0,tween:!0,selected:!1,easing:"ease-out"},{time:47960.36452094965,value:1,selected:!1}],type:"number",value:1},{name:"position",keyFrames:[{time:0,value:[0,.002,0],selected:!1}],type:"object",value:[0,.0055,0]}]},{id:"particlesMetaball",type:"ParticleSystem",parent:"H1",depthTest:!1,particleType:"POINTS",bufferSize:[30,30],mode:1,step:1,props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:103902.5,value:!0,selected:!1},{time:116158.59855599907,value:!0,selected:!1},{time:128244.5,value:!0,selected:!1},{time:129875.5,value:!1,selected:!1},{time:141672.11492900248,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"progress",keyFrames:[{time:0,value:0,selected:!1},{time:103883.75,value:0,tween:!0,selected:!1},{time:108343.75,value:1,selected:!1},{time:108962.5,value:0,selected:!1,tween:!0},{time:113450,value:.5,selected:!1},{time:115437.5,value:0,tween:!0,selected:!1,easing:"ease-in"},{time:124690.96243094889,value:1,selected:!1}],type:"number",useKeyFrames:!0},{name:"mode",keyFrames:[{time:0,value:1,selected:!1},{time:103523.75,value:11,selected:!1},{time:108962.5,value:4,selected:!1},{time:115437.5,value:8,selected:!1}],type:"number",useKeyFrames:!0},{name:"step",keyFrames:[],type:"number",value:1},{name:"pointSize",keyFrames:[{time:0,value:8,selected:!1},{time:103450,value:8,selected:!1}],type:"number",value:8},{name:"alpha",keyFrames:[{time:0,value:0,selected:!1},{time:103397.490234375,value:1,selected:!1},{time:120222.77123507304,value:1,tween:!0,selected:!1,easing:"ease-in"},{time:121299.43912890348,value:0,selected:!1}],type:"number",value:0},{name:"scale",keyFrames:[{time:0,value:[1,1,1],selected:!1},{time:128356.5,value:[1,1,1],tween:!0,selected:!1,easing:"ease-out"},{time:129756.5,value:[0,0,0],selected:!1}],value:[1,1,1],type:"object"}],opened:!1,color:"#92ef00"},{id:"walletGroup2",type:"Container",opened:!0,color:"#0dddd7",props:[{name:"visible",keyFrames:[{time:12.5,value:!1,selected:!1},{time:45857.32326535138,value:!0,selected:!1},{time:55622.91795965865,value:!0,selected:!1},{time:118944.15050131276,value:!1,selected:!1},{time:177363.6352474499,value:0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"position",keyFrames:[{time:43553.92795389049,value:[0,0,0],tween:!1,selected:!1},{time:54239.89235841738,value:[0,0,0],selected:!1,tween:!0,easing:"ease-out"},{time:56451.29266873545,value:[-.35,.1,0],selected:!1},{time:79956.85663338637,value:[-.35,.1,0],tween:!0,easing:"ease-out",selected:!1},{time:86227.4214894822,value:[-.46,0,-.02],selected:!1},{time:96445.84668572876,value:[-.46,0,-.02],selected:!1,tween:!0,easing:"ease-out"},{time:103263.75,value:[0,0,0],selected:!1},{time:115423.92562196276,value:[0,0,0],tween:!0,easing:"ease-in",selected:!1},{time:118761.85867480471,value:[0,-1,0],selected:!1}],type:"object",useKeyFrames:!0},{name:"rotation",keyFrames:[{time:0,value:[0,0,0],selected:!1},{time:43562.162254311515,value:[0,.76,0],selected:!1},{time:96479.57589355839,value:[0,.76,0],tween:!0,easing:"ease-out",selected:!1},{time:103263.75,value:[.4,.76,0],selected:!1},{time:115423.8147197071,value:[.4,.76,0],tween:!0,easing:"ease-in",selected:!1},{time:118771.12775072892,value:[.4,.76,0],selected:!1}],type:"object",useKeyFrames:!1,value:[0,0,0]}]},{id:"walletMesh",type:"Wallet",parent:"walletGroup2",width:1,height:1,widthSegments:50,heightSegments:50,color:"#4effe5",opened:!1,props:[{name:"visible",keyFrames:[],type:"boolean",value:!0},{name:"alpha",keyFrames:[{time:0,value:0,selected:!1},{time:45901.276657060516,value:0,tween:!0,selected:!1,easing:"ease-out"},{time:47877.99135446686,value:1,selected:!1}],type:"number",value:1},{name:"scale",keyFrames:[],type:"object",value:[.06,.06,.06]},{name:"position",keyFrames:[{time:0,value:[0,.0055,0],selected:!1},{time:43973.979827089344,value:[-.016,.005,0],selected:!1}],type:"object",value:1}]},{id:"blob",type:"Blob",color:"#92ef00",props:[{name:"visible",value:!0,type:"boolean",keyFrames:[{time:0,value:!1,selected:!1},{time:114604.44816053512,value:!0,selected:!1},{time:129868.5,value:!1,selected:!1}],useKeyFrames:!0},{type:"object",name:"scale",value:[1,1,1],keyFrames:[{time:0,value:[0,0,0],selected:!1},{time:120666.39414154252,value:[0,0,0],tween:!0,selected:!1,easing:"ease-out"},{time:123246.48197128883,value:[.8,.8,.8],selected:!1,tween:!0,easing:"ease-out"},{time:128140.21499597523,value:[.6,.6,.6],selected:!1,tween:!0,easing:"ease-out"},{time:128356.5,value:[.6,.6,.6],tween:!0,selected:!1,easing:"ease-out"},{time:129812.5,value:[0,0,0],selected:!1}]}],opened:!1},{id:"billsStackAll",type:"BillsMeshStatic",parent:"H1",color:"#ffff00",useAnim:!1,num:125,mode:1,billsBufferSize:[40,40],props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:36956.809765624996,value:!0,selected:!1},{time:45906.849268400765,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"position",keyFrames:[{time:0,value:[0,0,0],selected:!1},{time:43529.21600394565,value:[0,0,0],tween:!0,selected:!1}],type:"object",useKeyFrames:!0},{name:"color",keyFrames:[{time:0,value:[.35,.89,.75],selected:!1},{time:43463.329535668454,value:[.35,.89,.75],tween:!1,selected:!1}],type:"object",useKeyFrames:!0},{name:"alpha",keyFrames:[{time:0,value:0,selected:!1},{time:36962.36480624639,value:0,tween:!0,selected:!1},{time:38104.250890004834,value:1,selected:!1},{time:43562.162254311515,value:1,tween:!0,selected:!1},{time:45835.3841563288,value:0,selected:!1}],type:"number",useKeyFrames:!0},{name:"rotation",type:"object",keyFrames:[{time:0,value:[0,0,0],selected:!1}],value:[0,.78,0],useKeyFrames:!0},{name:"mode",keyFrames:[],value:1,type:"number",useKeyFrames:!0}],opened:!1},{id:"particleSystemNeightbourg1",type:"ParticleSystem",parent:"H1",particleType:"POINTS",bufferSize:[25,25],mode:1,step:1,startPos:[0,.05,-.25],endPos:[0,.05,.25],props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:31562.29,value:!0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"progress",keyFrames:[{time:0,value:0,selected:!1},{time:33520.229999999996,value:0,selected:!1,tween:!0},{time:36462.77,value:1,selected:!1}],type:"number",useKeyFrames:!0},{name:"mode",keyFrames:[{time:0,value:1,selected:!1}],type:"number",useKeyFrames:!0},{name:"step",keyFrames:[],type:"number",value:1},{name:"startPos",keyFrames:[{time:0,value:[-.01,0,-.3],selected:!1}],type:"object",useKeyFrames:!0,value:[0,.05,.25]},{name:"endPos",keyFrames:[{time:0,value:[0,.05,0],selected:!1}],type:"object",useKeyFrames:!0},{name:"pointSize",keyFrames:[],type:"number",value:8}],opened:!1,color:"#92ef00"},{id:"particleSystemNeightbourg2",type:"ParticleSystem",parent:"H1",particleType:"POINTS",bufferSize:[25,25],mode:1,step:1,startPos:[0,.05,-.25],endPos:[0,.05,.25],props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:31562.29,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"progress",keyFrames:[{time:0,value:0,selected:!1},{time:33505.990000000005,value:0,selected:!1,tween:!0},{time:36462.77,value:1,selected:!1}],type:"number",useKeyFrames:!0},{name:"mode",keyFrames:[{time:0,value:1,selected:!1}],type:"number",useKeyFrames:!0},{name:"step",keyFrames:[],type:"number",value:1},{name:"startPos",keyFrames:[{time:0,value:[0,.05,-.25],selected:!1}],type:"object",useKeyFrames:!0,value:[0,.05,.25]},{name:"endPos",keyFrames:[{time:0,value:[0,0,-.1],selected:!1}],type:"object",useKeyFrames:!0},{name:"pointSize",keyFrames:[],type:"number",value:8}],opened:!1,color:"#92ef00"},{id:"particleSystemNeightbourg3",type:"ParticleSystem",parent:"H1",particleType:"POINTS",bufferSize:[25,25],mode:1,step:1,startPos:[0,.05,-.25],endPos:[0,.05,.25],props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:31562.29,value:!0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"progress",keyFrames:[{time:0,value:0,selected:!1},{time:33505.990000000005,value:0,selected:!1,tween:!0},{time:36462.77,value:1,selected:!1}],type:"number",useKeyFrames:!0},{name:"mode",keyFrames:[{time:0,value:1,selected:!1}],type:"number",useKeyFrames:!0},{name:"step",keyFrames:[],type:"number",value:1},{name:"startPos",keyFrames:[{time:120,value:[-.28,0,-.01],selected:!1}],type:"object",useKeyFrames:!0,value:[0,.05,.25]},{name:"endPos",keyFrames:[{time:0,value:[.05,0,-.1],selected:!1}],type:"object",useKeyFrames:!0},{name:"pointSize",keyFrames:[],type:"number",value:8}],opened:!1,color:"#92ef00"},{id:"particleSystemNeightbourg4",type:"ParticleSystem",parent:"H1",particleType:"POINTS",bufferSize:[25,25],mode:1,step:1,startPos:[0,.05,-.25],endPos:[0,.05,.25],props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:31562.29,value:!0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"progress",keyFrames:[{time:0,value:0,selected:!1},{time:33600.229999999996,value:0,selected:!1,tween:!0},{time:36462.77,value:1,selected:!1}],type:"number",useKeyFrames:!0},{name:"mode",keyFrames:[{time:0,value:1,selected:!1}],type:"number",useKeyFrames:!0},{name:"step",keyFrames:[],type:"number",value:1},{name:"startPos",keyFrames:[{time:0,value:[.24,0,0],selected:!1}],type:"object",useKeyFrames:!0,value:[0,.05,.25]},{name:"endPos",keyFrames:[{time:0,value:[.05,0,-.1],selected:!1}],type:"object",useKeyFrames:!0},{name:"pointSize",keyFrames:[],type:"number",value:8}],opened:!1,color:"#92ef00"},{id:"particleSystem20",type:"ParticleSystem",parent:"H1",particleType:"POINTS",bufferSize:[50,100],gpgpu:!0,mode:1,step:1,startPos:[0,.05,-.25],endPos:[0,.05,.25],props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:36940.476737658624,value:!0,selected:!1},{time:43600.5423076923,value:!1,selected:!1},{time:113942.74517083491,value:!1,selected:!1},{time:141672.11492900248,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"progress",keyFrames:[{time:0,value:0,selected:!1},{time:37351.90294117647,value:0,tween:!0,selected:!1},{time:43193.973529411756,value:1,selected:!1}],type:"number",useKeyFrames:!0},{name:"mode",keyFrames:[{time:0,value:7,selected:!1}],type:"number",useKeyFrames:!0},{name:"step",keyFrames:[],type:"number",value:1},{name:"startPos",keyFrames:[],type:"object",useKeyFrames:!0},{name:"endPos",keyFrames:[],type:"object",useKeyFrames:!0},{name:"pointSize",keyFrames:[],type:"number",value:10},{name:"alpha",keyFrames:[{time:0,value:0,selected:!1},{time:36962.36480624639,value:0,tween:!0,selected:!1},{time:38104.250890004834,value:1,selected:!1}],type:"number",useKeyFrames:!0}],opened:!1,color:"#92ef00"},{id:"particleSystemExplosion",type:"ParticleSystem",particleType:"POINTS",particleSize:.05,depthTest:!0,bufferSize:[128,128],mode:5,step:1,props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:128185,value:!1,selected:!1},{time:129544.5,value:!0,selected:!1},{time:132310,value:!1,selected:!1},{time:141672.11492900248,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0,value:!0},{name:"progress",keyFrames:[{time:0,value:0,selected:!1},{time:128713.25,value:-.2,selected:!1,tween:!0,easing:"ease-in-out"},{time:133091.75,value:1,selected:!1}],type:"number",useKeyFrames:!0,value:1},{name:"mode",keyFrames:[{time:0,value:0,selected:!1},{time:128234,value:6,selected:!1}],type:"number",useKeyFrames:!0,value:0},{name:"step",keyFrames:[],type:"number",value:1},{name:"pointSize",keyFrames:[{time:0,value:8,selected:!1},{time:128272.5,value:20,selected:!1},{time:129196.5,value:20,tween:!0,selected:!1},{time:132780.5,value:0,selected:!1}],type:"number",value:10}],opened:!1,color:"#ff0000"},{id:"redBillsStack",type:"BillsMeshStatic",color:"#c8aeeb",useAnim:!1,num:20,billsBufferSize:[12,4],opened:!1,props:[]},{id:"billsMesh",type:"BillsMesh",color:"#baf3ff",opened:!1,props:[]},{id:"multiLogos",type:"MultiLogos",color:"#ff00ff",useAnim:!1,props:[{name:"visible",type:"boolean",useKeyFrames:!0,value:!0,keyFrames:[{time:0,value:!0,selected:!1}]},{name:"alpha",keyFrames:[{time:0,value:1,selected:!1},{time:111692.40118587253,value:1,tween:!0,selected:!1},{time:113246.90340031273,value:0,selected:!1}],type:"number",useKeyFrames:!0,value:1},{name:"mode",keyFrames:[{time:0,value:0,selected:!1},{time:101640,value:1,selected:!1}],type:"number",useKeyFrames:!0,value:0},{name:"progress",keyFrames:[{time:0,value:0,selected:!1},{time:81226.6690991722,value:0,tween:!0,easing:"linear",selected:!1},{time:87678.90830978985,value:1,selected:!1},{time:96761.96389004357,value:1,tween:!0,easing:"linear",selected:!1},{time:100189.7663363685,value:0,selected:!1},{time:101633.75,value:1.001,selected:!1,tween:!0,easing:"linear"},{time:103933.75,value:2,selected:!1}],type:"number",useKeyFrames:!0,value:0}],opened:!1},{id:"dartsGroup",type:"Container",rotation:[-.2,0,0],color:"#b677c6",props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:55406.8202094647,value:!0,selected:!1},{time:79881.9878782566,value:0,selected:!1},{time:103495,value:!0,selected:!1},{time:119014.60738241208,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"rotation",keyFrames:[{time:0,value:[-.2,0,0],selected:!1},{time:96524.54817066452,value:[0,0,0],selected:!1},{time:115429.88990767705,value:[0,0,0],tween:!0,easing:"ease-in",selected:!1},{time:118773.36993764986,value:[0,0,0],selected:!1}],type:"object",value:[0,0,0]},{name:"position",keyFrames:[{time:0,value:[0,0,0],selected:!1},{time:96479.57589355839,value:[0,0,0],selected:!1},{time:115429.88990767705,value:[0,0,0],tween:!0,easing:"ease-in",selected:!1},{time:118777.53075744484,value:[0,-1,.1],selected:!1}],value:[0,0,0],useKeyFrames:!0,type:"object"},{name:"scale",keyFrames:[{time:0,value:[1,1,1],selected:!1},{time:79864.10431654674,value:[.75,.75,.75],selected:!1},{time:96728.23468221397,value:[.53,.53,.53],selected:!1}],value:[.75,.75,.75],useKeyFrames:!0,type:"object"}],opened:!0},{id:"Dart1",type:"Dart",parent:"dartsGroup",color:"#ff92a5",props:[{name:"visible",keyFrames:[],type:"boolean",value:!0},{name:"position",type:"object",keyFrames:[{time:0,value:[.5,0,0],selected:!1},{time:54340.737975174554,value:[1,.1,0],selected:!1,tween:!1,easing:"ease-out"},{time:54870.17746314973,value:[1,.1,0],tween:!0,easing:"ease-out",selected:!1},{time:57405.72439875873,value:[.35,.1,0],selected:!1},{time:59066.25,value:[.35,.1,0],selected:!1,tween:!0,easing:"ease-in"},{time:59556.25,value:[-.2,.1,.02],selected:!1,tween:!1},{time:96726.8292985544,value:[.5,0,0],selected:!1},{time:103637.5,value:[.5,0,0],selected:!1,tween:!0,easing:"ease-out"},{time:104162.5,value:[.15,.02,0],selected:!1}],useKeyFrames:!0},{name:"scale",type:"object",keyFrames:[],value:[.05,.05,.05]},{name:"rotation",type:"object",keyFrames:[{time:0,value:[0,0,0],selected:!1}],value:[0,0,0],useKeyFrames:!0}],opened:!0},{id:"Dart2",color:"#ffa52a",type:"Dart",parent:"dartsGroup",opened:!0,props:[{name:"visible",keyFrames:[],type:"boolean",value:!0,useKeyFrames:!0},{name:"position",type:"object",keyFrames:[{time:0,value:[.3535533905932738,.35355339059327373,0],selected:!1},{time:55046.65729247479,value:[1,.12,0],selected:!1,tween:!0,easing:"ease-out"},{time:57747.87916989914,value:[.35,.12,0],selected:!1},{time:61175.758816120906,value:[.35,.12,0],selected:!1,tween:!0,easing:"ease-in"},{time:61787.90586630286,value:[-.19,.12,.05],selected:!1},{time:100355,value:[.3535533905932738,.35355339059327373,0],selected:!1},{time:104350,value:[.3535533905932738,.35355339059327373,0],selected:!1,tween:!0,easing:"ease-out"},{time:104975,value:[.07,.06,-.05],selected:!1}],useKeyFrames:!0},{name:"scale",type:"object",keyFrames:[],value:[.05,.05,.05]},{name:"rotation",type:"object",keyFrames:[{time:0,value:[0,0,.7853981633974483],selected:!1},{time:54275,value:[0,.1,0],selected:!1},{time:100240,value:[0,0,.7853981633974483],selected:!1}],useKeyFrames:!0}]},{id:"Dart3",type:"Dart",parent:"dartsGroup",color:"#cc9926",props:[{name:"visible",keyFrames:[{time:0,value:!0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"position",type:"object",keyFrames:[{time:54268.705391776566,value:[1,.1,0],selected:!1},{time:55532.87723041118,value:[1,.14,0],selected:!1,tween:!0,easing:"ease-out"},{time:58252.107253685026,value:[.35,.14,0],selected:!1},{time:63260.92958168326,value:[.35,.14,0],selected:!1,tween:!0,easing:"ease-in"},{time:63773.45207128984,value:[-.19,.13,.05],selected:!1},{time:96839.25999131984,value:[0,.5,0],selected:!1},{time:105575,value:[3061616997868383e-32,.5,0],selected:!1,tween:!0,easing:"ease-out"},{time:106175,value:[-.03,.08,-.04],selected:!1}],useKeyFrames:!0,value:[0,.5,0]},{name:"scale",type:"object",keyFrames:[{time:0,value:[.05,.05,.05],selected:!1}]},{name:"rotation",type:"object",keyFrames:[{time:0,value:[0,0,1.5707963267948966],selected:!1},{time:54235,value:[0,.15,0],selected:!1},{time:96839.25999131984,value:[0,0,1.5707963267948966],selected:!1},{time:105583.75,value:[0,0,1.5707963267948966],tween:!0,selected:!1},{time:106083.75,value:[0,0,1.7],selected:!1}],useKeyFrames:!0}],opened:!0},{id:"Dart4",type:"Dart",parent:"dartsGroup",color:"#9c774b",props:[{name:"visible",keyFrames:[{time:0,value:!0,selected:!1},{time:54268.705391776566,value:!1,selected:!1},{time:55806.983126454616,value:!0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"position",type:"object",keyFrames:[{time:0,value:[-.35355339059327373,.3535533905932738,0],selected:!1},{time:54268.8916015625,value:[1,.16,0],selected:!1},{time:55766.983126454616,value:[1,.16,0],selected:!1,tween:!0,easing:"ease-out"},{time:58558.24573312645,value:[.35,.16,0],selected:!1},{time:65939.52438121919,value:[.35,.16,0],selected:!1,easing:"ease-in",tween:!0},{time:66599.59053945052,value:[-.215,.125,0],selected:!1},{time:100240,value:[-.35355339059327373,.3535533905932738,0],selected:!1},{time:106105,value:[-.35355339059327373,.3535533905932738,0],selected:!1,tween:!0,easing:"ease-out"},{time:106580,value:[-.09,.05,0],selected:!1}],useKeyFrames:!0},{name:"scale",type:"object",keyFrames:[],value:[.05,.05,.05]},{name:"rotation",type:"object",keyFrames:[{time:0,value:[0,0,2.356194490192345],selected:!1},{time:54255,value:[0,.2,0],selected:!1},{time:100240,value:[0,0,2.356194490192345],selected:!1},{time:106103.75,value:[0,0,2.35],tween:!0,selected:!1},{time:106483.75,value:[0,0,2.55],selected:!1}],useKeyFrames:!0}],opened:!0},{id:"Dart5",type:"Dart",parent:"dartsGroup",color:"#f36a02",props:[{name:"visible",keyFrames:[{time:0,value:!0,selected:!1},{time:54149.8516291699,value:!1,selected:!1},{time:55965.072730799075,value:!0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"position",type:"object",keyFrames:[{time:0,value:[-.5,6123233995736766e-32,0],selected:!1},{time:55947.06458494956,value:[1,.18,0],selected:!1,tween:!0,easing:"ease-out"},{time:58756.33533747091,value:[.35,.18,0],selected:!1},{time:66712.3729743496,value:[.35,.18,0],selected:!1,tween:!0,easing:"ease-in"},{time:67250.5686272005,value:[-.225,.135,0],selected:!1},{time:100252.5,value:[-.5,6123233995736766e-32,0],selected:!1},{time:106355,value:[-.5,6123233995736766e-32,0],selected:!1,tween:!0,easing:"ease-out"},{time:106840,value:[-.19,-.01,0],selected:!1}],useKeyFrames:!0},{name:"scale",type:"object",keyFrames:[{time:0,value:[.05,.05,.05],selected:!1}]},{name:"rotation",type:"object",keyFrames:[{time:0,value:[0,0,3.141592653589793],selected:!1},{time:54255,value:[0,.25,0],selected:!1},{time:100255,value:[0,0,3.141592653589793],selected:!1},{time:106343.75,value:[0,0,3.141592653589793],tween:!0,selected:!1},{time:106843.75,value:[0,0,3.2],selected:!1}],useKeyFrames:!0}],opened:!0},{id:"Dart6",type:"Dart",parent:"dartsGroup",color:"#fff03a",props:[{name:"visible",keyFrames:[{time:0,value:!0,selected:!1},{time:54116.25,value:!1,selected:!1},{time:56180,value:!0,selected:!1},{time:96524.54817066452,value:!0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"position",type:"object",keyFrames:[{time:0,value:[-.35355339059327384,-.35355339059327373,0],selected:!1},{time:56140,value:[1,.18,0],tween:!0,easing:"ease-out",selected:!1},{time:58720,value:[.35,.2,0],selected:!1},{time:67185.66374213448,value:[.35,.2,0],tween:!0,easing:"ease-in",selected:!1},{time:67799.89451136524,value:[-.24,.14,0],selected:!1},{time:96773.20695932012,value:[-.35355339059327384,-.35355339059327373,0],selected:!1},{time:106887.5,value:[-.35355339059327384,-.35355339059327373,0],selected:!1,tween:!0,easing:"ease-out"},{time:107323.75,value:[-.12,-.1,0],selected:!1}],useKeyFrames:!0},{name:"scale",type:"object",keyFrames:[{time:0,value:[.05,.05,.05],selected:!1}]},{name:"rotation",type:"object",keyFrames:[{time:-1740,value:[0,0,3.9269908169872414],selected:!1},{time:0,value:[0,0,3.9269908169872414],selected:!1},{time:54220,value:[0,.3,0],selected:!1},{time:96748.84880581427,value:[0,0,3.92],selected:!1}],useKeyFrames:!0}],opened:!0},{id:"Dart7",type:"Dart",parent:"dartsGroup",color:"#89fe60",props:[{name:"visible",keyFrames:[{time:0,value:!0,selected:!1},{time:54116.25,value:!1,selected:!1},{time:56291.11328125,value:!0,selected:!1},{time:96502.06203211145,value:!0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"position",type:"object",keyFrames:[{time:0,value:[-9184850993605148e-32,-.5,0],selected:!1},{time:54426.669921875,value:[1,.22,0],selected:!1},{time:56211.11328125,value:[1,.22,0],tween:!0,easing:"ease-out",selected:!1},{time:58791.11328125,value:[.35,.22,0],selected:!1},{time:67942.51269858955,value:[.35,.22,0],tween:!0,easing:"ease-in",selected:!1},{time:68430.16999724727,value:[-.24,.15,0],selected:!1},{time:96728.23468221397,value:[-9184850993605148e-32,-.5,0],selected:!1},{time:107310,value:[-9184850993605148e-32,-.5,0],selected:!1,tween:!0,easing:"ease-out"},{time:107710,value:[0,-.1,0],selected:!1}],useKeyFrames:!0},{name:"scale",type:"object",keyFrames:[{time:0,value:[.05,.05,.05],selected:!1}]},{name:"rotation",type:"object",keyFrames:[{time:0,value:[0,0,4.71238898038469],selected:!1},{time:54142.22412109375,value:[0,.35,0],selected:!1},{time:88193.01275808031,value:[0,0,4.71238898038469],selected:!1}],useKeyFrames:!0}],opened:!0},{id:"Dart8",type:"Dart",parent:"dartsGroup",color:"#c1ff06",props:[{name:"visible",keyFrames:[{time:0,value:!0,selected:!1},{time:54096.25,value:!1,selected:!1},{time:56454.5849609375,value:!0,selected:!1},{time:96728.23468221397,value:!0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"position",type:"object",keyFrames:[{time:0,value:[.3535533905932737,-.35355339059327384,0],selected:!1},{time:54206.669921875,value:[1,.24,0],selected:!1},{time:56374.5849609375,value:[1,.24,0],tween:!0,easing:"ease-out",selected:!1},{time:58733.3349609375,value:[.35,.24,0],selected:!1},{time:68448.01688168582,value:[.35,.24,0],tween:!0,easing:"ease-in",selected:!1},{time:68936.79659642433,value:[-.24,.13,0],selected:!1},{time:96728.23468221397,value:[.3535533905932737,-.35355339059327384,0],selected:!1},{time:107733.75,value:[.3535533905932737,-.35355339059327384,0],selected:!1,tween:!0,easing:"ease-out"},{time:108165,value:[.07,-.07,0],selected:!1}],useKeyFrames:!0},{name:"scale",type:"object",keyFrames:[{time:0,value:[.05,.05,.05],selected:!1}]},{name:"rotation",type:"object",keyFrames:[{time:0,value:[0,0,5.497787143782138],selected:!1},{time:54106.669921875,value:[0,.4,0],selected:!1},{time:88108.15231968899,value:[0,0,5.497787143782138],selected:!1}],useKeyFrames:!0}],opened:!0},{id:"Dart9",type:"Dart",parent:"dartsGroup",color:"#c1ff06",props:[{name:"visible",keyFrames:[{time:0,value:!0,selected:!1},{time:54096.25,value:!1,selected:!1},{time:56226.808166503906,value:!0,selected:!1},{time:96728.23468221397,value:!0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"position",type:"object",keyFrames:[{time:0,value:[.3535533905932737,-.35355339059327384,0],selected:!1},{time:54206.669921875,value:[1,.26,0],selected:!1},{time:56515.558166503906,value:[1,.26,0],tween:!0,easing:"ease-out",selected:!1},{time:58701.808166503906,value:[.35,.26,0],selected:!1},{time:74680.03048812278,value:[.35,.26,0],tween:!0,easing:"ease-in",selected:!1},{time:75288.53163275728,value:[-.24,.15,0],selected:!1},{time:96728.23468221397,value:[.3535533905932737,-.35355339059327384,0],selected:!1},{time:107733.75,value:[.3535533905932737,-.35355339059327384,0],selected:!1,tween:!0,easing:"ease-out"},{time:108165,value:[.07,-.07,0],selected:!1}],useKeyFrames:!0},{name:"scale",type:"object",keyFrames:[{time:0,value:[.05,.05,.05],selected:!1}]},{name:"rotation",type:"object",keyFrames:[{time:0,value:[0,0,5.497787143782138],selected:!1},{time:54190.277404785156,value:[0,.45,0],selected:!1},{time:79937.36109353031,value:[0,0,5.497787143782138],selected:!1}],useKeyFrames:!0}],opened:!0},{id:"blackHole",type:"ParticlesMesh",bufferSize:[100,100],autoRotate:!0,props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:128301.75,value:!0,selected:!1},{time:219944.2231866464,value:!0,selected:!1},{time:232648.75,value:!1,selected:!1},{time:233633.203125,value:!0,selected:!1},{time:234345,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"targetMode",keyFrames:[{time:0,value:2,selected:!1},{time:222776,value:2,selected:!0},{time:222875.5,value:2,selected:!1},{time:224791.5,value:4,selected:!1},{time:226856.5,value:0,selected:!1},{time:228716.50453900706,value:6,selected:!1},{time:230475.5,value:3,selected:!1},{time:233553.203125,value:2,selected:!1}],type:"number",value:2},{name:"mode",keyFrames:[],type:"number",value:0},{name:"color1",keyFrames:[],type:"object",value:[1,1,1]},{name:"scale",keyFrames:[{time:0,value:[.5,.5,.5],selected:!1}],type:"object",value:[.5,.5,.5],useKeyFrames:!0},{name:"pointSize",keyFrames:[],type:"number",value:2},{name:"alpha",keyFrames:[{time:0,value:1,selected:!1},{time:128264.033203125,value:0,selected:!1},{time:132119.58984375,value:0,tween:!0,selected:!1},{time:135790,value:.5,selected:!1},{time:169674.10094637223,value:.5,tween:!0,selected:!1},{time:176375.44248056546,value:0,selected:!1},{time:219903.8221974583,value:0,tween:!0,selected:!1},{time:222455.89023773395,value:.5,selected:!1},{time:222877.5,value:.9,selected:!1}],type:"number",value:0},{name:"rotation",keyFrames:[{time:0,value:[-.785,-.785,0],selected:!1},{time:132068.3349609375,value:[-.785,-.785,0],tween:!0,selected:!1,easing:"ease-in-out"},{time:140387.5,value:[0,0,0],selected:!1},{time:143940.82774882106,value:[0,0,0],selected:!1,tween:!1},{time:219123.08295397065,value:[-.86,-1.57,0],tween:!0,selected:!1,easing:"linear"},{time:222570,value:[0,0,0],tween:!1,selected:!1}],type:"object",useKeyFrames:!0}],opened:!0,color:"#0dddd7"},{id:"particlesMesh",type:"ParticlesMesh",color:"#c0ffd6",opened:!1,props:[{name:"visible",keyFrames:[{time:0,value:0,selected:!1},{time:79146.5881294964,value:!1,selected:!1},{time:100662.5,value:0,selected:!1},{time:133774.7133283693,value:!0,selected:!1},{time:143268.30486403644,value:!1,selected:!1},{time:177382.1231582924,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"targetMode",keyFrames:[{time:0,value:1,selected:!1},{time:79370.33453237412,value:3,selected:!1},{time:133437.5,value:1,selected:!1}],type:"number",value:3},{name:"mode",keyFrames:[{time:0,value:1,selected:!1}],type:"number",value:1},{name:"scale",keyFrames:[],type:"object",value:[.35,.15,.2]},{name:"progress",keyFrames:[{time:0,value:0,selected:!1},{time:143873.33271283197,value:.1,tween:!0,selected:!1},{time:146090.01178952592,value:1,selected:!1}],type:"number",value:0},{name:"alpha",keyFrames:[{time:0,value:0,selected:!1},{time:137261.6748046875,value:0,tween:!0,selected:!1},{time:140501.6748046875,value:1,selected:!1}],type:"number",value:0}]},{id:"stripe_1",type:"Stripe",color:"#92ef00",props:[{name:"vibile",value:!0,keyFrames:[{time:0,value:!0,selected:!1}]},{name:"alpha",value:1,keyFrames:[{time:0,value:1,selected:!1}]},{name:"rotation",value:[0,0,0],keyFrames:[{time:0,value:[0,0,0],selected:!1}]}]},{id:"multiStripes",type:"MultiStripes",color:"#ffff00",useAnim:!1,props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:143274.99718387844,value:!0,selected:!1},{time:178426.25,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"progress",keyFrames:[{time:0,value:0,selected:!1},{time:141400,value:0,selected:!1},{time:143878.96438322164,value:0,tween:!0,easing:"ease-out",selected:!1},{time:146493.50893521967,value:1,selected:!1},{time:151015.0208157962,value:0,tween:!0,easing:"ease-out",selected:!1},{time:153427.56272401434,value:1,selected:!1},{time:158150,value:0,tween:!0,easing:"ease-out",selected:!1},{time:160570,value:1,selected:!1},{time:166928.29652996844,value:0,tween:!0,easing:"ease-out",selected:!1},{time:169310.82018927444,value:1,selected:!1},{time:170718.49509763412,value:1,selected:!1},{time:175981.806640625,value:0,tween:!0,easing:"ease-out",selected:!1},{time:178081.806640625,value:1,selected:!1}],value:[0,0,0],type:"object",useKeyFrames:!0},{name:"color",keyFrames:[],value:[.403921568627451,.8705882352941177,.8980392156862745],type:"object"},{name:"scale",keyFrames:[],value:[1,1,1],type:"object"}],opened:!0},{id:"particleSystemSplash",type:"ParticleSystem",particleStep:.01,bufferSize:[50,50],startPos:[0,.05,-.25],endPos:[0,.05,.25],color:"#92ef00",opened:!1,props:[{name:"visible",keyFrames:[{time:37021.42784846733,value:!1,selected:!1},{time:103883.75,value:!1,selected:!1},{time:108957.5,value:!1,selected:!1}],type:"boolean"},{name:"mode",keyFrames:[{time:103900,value:11,selected:!1}],type:"number"},{name:"progress",keyFrames:[{time:103900,value:0,selected:!1,tween:!0},{time:106400,value:1,selected:!1},{time:191277.64666666667,value:1,selected:!1}],type:"number"}]},{id:"particleSystemRocket",type:"ParticleSystem",bufferSize:[20,20],startPos:[0,0,0],particleStep:1e-4,opened:!0,props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:134094.42665673862,value:!1,selected:!1},{time:142013.02175269506,value:!0,selected:!1},{time:143919.21037946912,value:!1,selected:!1},{time:146707.566522879,value:!0,selected:!1},{time:151555.1040293813,value:!1,selected:!1},{time:153790,value:!0,selected:!1},{time:158650,value:!1,selected:!1},{time:161010,value:!0,selected:!1},{time:167832.523659306,value:!1,selected:!1},{time:168975.146484375,value:!0,selected:!1},{time:176604.033203125,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"mode",keyFrames:[],type:"number",value:2},{name:"progress",keyFrames:[{time:142015.2001876257,value:0,tween:!0,selected:!1},{time:142934.30670037336,value:.6,selected:!1,tween:!0,easing:"linear"},{time:143888.33147182924,value:1,selected:!1},{time:146647.69977944245,value:1,selected:!1,tween:!0,easing:"linear"},{time:147810.28863884302,value:2,selected:!1,tween:!1},{time:148510.9793814284,value:2,selected:!1,tween:!0},{time:151634.73428013874,value:3,selected:!1},{time:153790,value:1,tween:!0,selected:!1},{time:154890,value:2,selected:!1},{time:155610,value:2,tween:!0,selected:!1},{time:158730,value:3,selected:!1},{time:160990,value:1,tween:!0,selected:!1},{time:162110,value:2,selected:!1},{time:164070,value:2,tween:!0,selected:!1},{time:167849.3690851735,value:3,selected:!1},{time:168995.146484375,value:1,tween:!0,selected:!1},{time:170756.84306895186,value:2,tween:!0,selected:!1},{time:172510.693359375,value:2,selected:!1,tween:!0},{time:176983.86989177015,value:3,selected:!1}],type:"number",useKeyFrames:!0},{name:"pointSize",keyFrames:[],type:"number",value:8}],color:"#89fe60"},{id:"particleSystemRocket_2",type:"ParticleSystem",bufferSize:[20,20],startPos:[0,0,0],particleStep:1e-4,opened:!0,props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:134094.42665673862,value:!1,selected:!1},{time:142013.02175269506,value:!0,selected:!1},{time:143919.21037946912,value:!1,selected:!1},{time:161007.566522879,value:!0,selected:!1},{time:167818.80779997518,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"mode",keyFrames:[],type:"number",value:2},{name:"progress",keyFrames:[{time:142015.2001876257,value:0,tween:!0,selected:!1},{time:142934.30670037336,value:.6,selected:!1,tween:!0,easing:"linear"},{time:143888.33147182924,value:1,selected:!1},{time:160947.69977944245,value:1,selected:!1,tween:!0,easing:"linear"},{time:162110.28863884302,value:2,selected:!1,tween:!1},{time:164050.9793814284,value:2,selected:!1,tween:!0},{time:167809.06180591832,value:3,selected:!1}],type:"number",useKeyFrames:!0},{name:"pointSize",keyFrames:[],type:"number",value:8}],color:"#89fe60"},{id:"spiralMesh2",type:"SpiralMesh",lineRotationStep:.3,maxScale:.5,autoRotate:!0,rotation:[0,0,-1.4316572117044242],opened:!0,color:"#f36a02",props:[{name:"shift",type:"boolean",keyFrames:[{time:0,value:!1,selected:!1}]},{name:"visible",type:"boolean",keyFrames:[{time:0,value:!1,selected:!1},{time:178426.25,value:!0,selected:!1},{time:222777.5,value:!1,selected:!1},{time:232668.75,value:!0,selected:!1},{time:233553.203125,value:!1,selected:!1}]},{name:"alpha",type:"number",keyFrames:[{time:0,value:1,selected:!1},{time:197199.49212239584,value:1,selected:!1,tween:!0},{time:197532.5,value:1,selected:!1},{time:199096.72197607683,value:0,selected:!1},{time:206709.68663172374,value:0,tween:!0,easing:"linear",selected:!1},{time:208988.46841734916,value:1,selected:!1}]},{name:"verticalOffset",type:"number",value:0,useKeyFrames:!0,keyFrames:[{time:0,value:0,selected:!1},{time:178426.25,value:0,tween:!0,easing:"ease-out",selected:!1},{time:181321.11328125,value:2,selected:!1},{time:182522.5,value:2,tween:!0,selected:!1,easing:"ease-out"},{time:185622.5,value:14,selected:!1},{time:186442.5,value:14,tween:!0,easing:"ease-out",selected:!1},{time:191522.71333333335,value:50,selected:!1},{time:193594.220703125,value:50,tween:!1,easing:"ease-out",selected:!1},{time:215353.83662114316,value:50,tween:!0,easing:"ease-in-out",selected:!1},{time:218885.02529084473,value:24.5,selected:!1},{time:219103.24481537682,value:24.5,tween:!0,selected:!1},{time:222317.02326757714,value:0,selected:!1},{time:232608.75,value:60,selected:!1}]},{name:"progress",type:"number",keyFrames:[{time:0,value:!1,selected:!1},{time:179021.4136832234,value:0,selected:!1,tween:!0,easing:"linear"},{time:179206.67357578423,value:3,selected:!1,tween:!1,easing:"ease-out"},{time:182589.57142857142,value:3,tween:!0,easing:"ease-out",selected:!1},{time:185672.36394557825,value:4,selected:!1},{time:186412.2265625,value:4,selected:!1,tween:!0,easing:"ease-out"},{time:188692.2265625,value:7,selected:!1},{time:211581.3456834709,value:7,selected:!1},{time:214628.19900844773,value:7,selected:!1},{time:215368.71522508853,value:7,tween:!0,easing:"linear",selected:!1},{time:218845.34901365708,value:38,selected:!1},{time:219071.90055639858,value:38,tween:!0,selected:!1,easing:"linear"},{time:222604.64,value:12,selected:!1},{time:232588.75,value:10,selected:!1}]},{name:"progressMax",type:"number",keyFrames:[{time:0,value:!1,selected:!1},{time:178709.17341121734,value:0,selected:!1,easing:"ease-out",tween:!0},{time:180634.443359375,value:10,tween:!1,easing:"ease-out",selected:!1},{time:182589.57142857142,value:10,tween:!0,easing:"ease-out",selected:!1},{time:185649.79591836734,value:30,selected:!1,tween:!1,easing:"ease-out"},{time:186466.78,value:30,tween:!0,easing:"ease-out",selected:!1},{time:191568.78586666659,value:120,selected:!1},{time:199606.4222368084,value:15,selected:!1},{time:200153.2579014359,value:120,selected:!1,tween:!0,easing:"ease-out"},{time:204350.25578424154,value:10,selected:!1},{time:211581.3456834709,value:120,selected:!1},{time:219088.36621143145,value:120,tween:!0,selected:!1,easing:"linear"},{time:222595,value:40,selected:!1},{time:232608.75,value:120,selected:!1}]},{name:"rotation",type:"object",keyFrames:[{time:0,value:[-1.57,0,0],selected:!1},{time:178426.25,value:[-1.57,0,0],tween:!0,easing:"ease-out",selected:!1},{time:180680,value:[0,6.28,0],selected:!1},{time:193417.19006060608,value:[0,0,0],selected:!1,tween:!0,easing:"ease-in-out"},{time:195956.7272727273,value:[-1.57,0,0],selected:!1},{time:211588.12114898517,value:[0,0,0],selected:!1},{time:215348.8770864947,value:[0,0,0],tween:!0,easing:"linear",selected:!1},{time:218944.5397066262,value:[0,0,-1.57],selected:!1},{time:219103.24481537682,value:[0,0,-1.57],tween:!0,selected:!1,easing:"linear"},{time:222615.76,value:[1.58,0,-3.15],selected:!1},{time:232628.75,value:[0,0,0],selected:!1}]},{name:"scale",type:"object",keyFrames:[{time:0,value:[1,1,1],selected:!1},{time:197146.79361979163,value:[1,1,1],tween:!0,selected:!1},{time:199171.20573479944,value:[0,0,0],selected:!1},{time:199531.93847808574,value:[100,100,100],selected:!1},{time:211557.59181537037,value:[1,1,1],selected:!1},{time:232608.75,value:[1,1,1],selected:!1}],useKeyFrames:!0},{name:"position",useKeyFrames:!0,keyFrames:[{time:0,value:[0,0,0],selected:!1},{time:178426.25,value:[0,0,0],selected:!1},{time:182505.32521105141,value:[0,0,0],tween:!0,easing:"ease-out",selected:!1},{time:185513.81619339983,value:[0,0,0],selected:!1,tween:!1,easing:"ease-out"},{time:186417.34,value:[0,0,0],tween:!0,easing:"ease-out",selected:!1},{time:191417.3346666667,value:[0,0,0],selected:!1},{time:193330.52557575755,value:[0,0,0],selected:!1,tween:!0,easing:"ease-in-out"},{time:195950.54545454547,value:[0,0,0],selected:!1},{time:215348.8770864947,value:[0,0,0],tween:!1,easing:"linear",selected:!1},{time:219068.52807283762,value:[0,0,0],tween:!0,selected:!1},{time:222710,value:[0,0,0],selected:!1},{time:232608.75,value:[0,0,0],selected:!1}],type:"object"},{name:"lineRotationStep",keyFrames:[{time:0,value:0,selected:!1},{time:178426.25,value:0,tween:!0,selected:!1,easing:"ease-out"},{time:179994.443359375,value:.07,selected:!1},{time:182522.5,value:.07,selected:!1},{time:199545.3004129839,value:.2,selected:!1},{time:211581.35561817107,value:.07,selected:!1},{time:215428.22964087,value:.07,tween:!0,easing:"linear",selected:!1},{time:218820.5513404148,value:0,selected:!1},{time:219068.52807283762,value:0,tween:!0,selected:!1},{time:222203.70781992917,value:.13,selected:!1},{time:232628.75,value:.045,selected:!1}],type:"number",useKeyFrames:!0,value:.02},{name:"maxScale",keyFrames:[{time:0,value:.5,selected:!1},{time:178426.25,value:.3,tween:!1,selected:!1},{time:182474.453125,value:.3,tween:!0,easing:"ease-out",selected:!1},{time:186262.5,value:.5,tween:!0,easing:"ease-out",selected:!1},{time:191228.63333333336,value:.8,selected:!1},{time:211571.17255049935,value:.8,selected:!1},{time:215388.55336368232,value:.8,tween:!0,easing:"linear",selected:!1},{time:217550.91047040973,value:.4,selected:!1},{time:219015.71894790087,value:.4,tween:!0,selected:!1},{time:222224.10142640362,value:.5,selected:!1},{time:232648.75,value:1,selected:!1}],type:"number",useKeyFrames:!0,value:.5},{name:"randomize",keyFrames:[{time:0,value:!1,selected:!1},{time:215332.32270228723,value:!0,selected:!1},{time:221999.61305007586,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0,value:!1},{name:"flatten",keyFrames:[{time:0,value:!1,selected:!1},{time:216891.29236216488,value:0,tween:!0,selected:!1},{time:218339.47647951441,value:1,tween:!1,selected:!1},{time:219053.64946889225,value:1,selected:!1,tween:!0},{time:220561.34800202327,value:0,selected:!1}],type:"number",useKeyFrames:!0,value:0},{name:"useMask",keyFrames:[{time:0,value:!1,selected:!1},{time:215120.0318367191,value:!0,selected:!1}],type:"boolean",useKeyFrames:!0,value:!1},{name:"maskScale",keyFrames:[{time:1.25,value:!1,selected:!1},{time:215120.0318367191,value:1,selected:!1}],type:"number",useKeyFrames:!0,value:!1},{name:"autoRotate",keyFrames:[{time:0,value:!1,selected:!1},{time:182257.7362713095,value:!0,selected:!1},{time:215153.75,value:!0,selected:!1},{time:215297.28002892638,value:!1,selected:!1}],type:"boolean",useKeyFrames:!0,value:!1},{name:"minScale",keyFrames:[],value:.04,type:"number",useKeyFrames:!0}]},{id:"electricMesh",type:"Electric",scale:[.3,.3,.3],color:"#58feff",opened:!1,props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:195175.18181818182,value:!0,selected:!1},{time:201799.45691668248,value:0,selected:!1}],type:"boolean"},{name:"scale",keyFrames:[{time:0,value:[.5,.5,.5],selected:!1},{time:195062.5,value:[0,0,0],tween:!0,easing:"ease-out",selected:!1},{time:197134.833984375,value:[.5,.5,.5],tween:!0,selected:!1},{time:197692.5,value:[.5,.5,.5],selected:!1},{time:199121.54989565111,value:[0,0,0],selected:!1}],type:"object"}]},{id:"particleAside",type:"ParticleSystem",particleStep:.001,parent:"H1",depthTest:!1,particleType:"POINTS",bufferSize:[10,10],mode:1,step:1,startPos:[0,.05,-.25],endPos:[0,.05,.25],props:[{name:"visible",keyFrames:[{time:0,value:!1,selected:!1},{time:119116.09239487335,value:!1,selected:!1},{time:234416,value:!0,selected:!1}],type:"boolean",useKeyFrames:!0},{name:"progress",keyFrames:[{time:0,value:1,selected:!1},{time:234416,value:0,tween:!0,selected:!1},{time:235232,value:1,selected:!1}],type:"number",useKeyFrames:!0},{name:"mode",keyFrames:[{time:43426.26915131934,value:13,selected:!1}],type:"number",useKeyFrames:!0},{name:"spread",keyFrames:[{time:0,value:1,selected:!1}],type:"number",useKeyFrames:!0},{name:"pointSize",keyFrames:[{time:0,value:8,selected:!1}],type:"number",value:8},{name:"scale",keyFrames:[{time:0,value:[1,1,1],selected:!1}],value:[1,1,1],type:"object"},{name:"position",keyFrames:[{time:0,value:[0,0,0],selected:!1},{time:234416,value:[0,-.3,0],selected:!1}],value:[0,0,0],type:"object"}],opened:!0,color:"#00ffff"}]};function ns(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}let ss,os=new WeakMap;const as=e=>null===e||!("object"==typeof e||"function"==typeof e);var rs={},ls={touch:"undefined"!=typeof window&&function(){return"ontouchstart"in window||navigator.msMaxTouchPoints>0},msPointer:"undefined"!=typeof window&&function(){return!!window.navigator.msPointerEnabled},pointer:"undefined"!=typeof window&&function(){return!!window.navigator.pointerEnabled},pointerdown:function(){return this.touch()?"touchstart":this.pointer()?"pointerdown":this.msPointer()?"MSPointerDown":"mousedown"},pointerup:function(){return this.touch()?"touchend":this.pointer()?"pointerup":this.msPointer()?"MSPointerUp":"mouseup"},pointermove:function(){return this.touch()?"touchmove":this.pointer()?"pointermove":this.msPointer()?"MSPointerMove":"mousemove"},pointerenter:function(){return this.touch()?"touchstart":this.pointer()?"pointerenter":this.msPointer()?"MSPointerEnter":"mouseenter"},pointerleave:function(){return this.touch()?"touchend":this.pointer()?"pointerleave":this.msPointer()?"MSPointerLeave":"mouseleave"},pointerover:function(){return this.touch()?"touchstart":this.pointer()?"pointerover":this.msPointer()?"MSPointerOver":"mouseover"},pointerout:function(){return this.touch()?"touchend":this.pointer()?"pointerout":this.msPointer()?"MSPointerOut":"mouseout"}};for(var cs in ls)ls.hasOwnProperty(cs)&&(rs[cs]=ls[cs]());const hs=/\$\$([0-9]+)\$\$/g;class ds{constructor(e){if(this.oldValue=null,this.node=e.node,this.lvls=e.lvls,this.optional=e.optional,this.nameIndex=e.nameIndex,this.valueIndex=e.valueIndex,this.name=e.name,this.value=e.value,this.type=e.type,this.index=e.index,/\?/g.test(this.name)&&(this.optional=!0,this.node.removeAttribute(this.name),this.name=this.name.replace(/\?/g,"")),/(on\-|\@)/.test(this.name)){this.type="event";let e=this.name.replace(/^(on\-|\@)/,"");this.eventName=rs[e]||e,this.eventHandler=this.eventHandler.bind(this),this.node.removeEventListener(this.eventName,this.eventHandler),this.node.addEventListener(this.eventName,this.eventHandler)}if("text"==this.type){this.parts=[];let e=0,t=this.node.nodeValue;t.replace(hs,((i,n,s)=>(this.parts.push({type:"static",str:t.substr(e,s-e)}),this.parts.push({type:"value",index:n>>0}),e=s+i.length,i))),this.parts.push({type:"static",str:t.substr(e,t.length)}),this.node.nodeValue=""}}eventHandler(e){this.callback&&this.callback(e)}destroy(){this.eventName&&this.node&&this.node.removeEventListener(this.eventName,this.eventHandler),this.node=null}_update(e){if("event"==this.type){var t;let i=-1!=this.valueIndex?e[this.valueIndex]:this.value;(null===(t=this.callback)||void 0===t?void 0:t.toString())!==(null==i?void 0:i.toString())&&(this.callback=i)}if("text"==this.type){let t=this.node.parentNode;this.parts.forEach((i=>{if(null!=e[i.index])if("value"==i.type)if(Array.isArray(e[i.index])){i.entries=i.entries||[],e[i.index].forEach(((e,n)=>{e.htmlTemplate&&(null==i.entries[n]&&(i.entries[n]=new ms(e.htmlTemplate,t)),i.entries[n].render(e.values))}));for(let t=e[i.index].length;t!e.includes(t)&&""!=t.trim()));i.length>0&&this.node.classList.remove.apply(this.node.classList,i),e=e.filter((e=>!t.includes(e)))}e=e.filter((e=>""!==e.trim())),e.length>0&&this.node.classList.add.apply(this.node.classList,e)}else if("style"==i&&"object"==typeof t){if(this.oldValue&&"object"==typeof this.oldValue)for(let e in this.oldValue)void 0!==t[e]&&null!==t[e]||this.node.style.removeProperty(e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase());for(let e in t)void 0!==t[e]&&null!==t[e]&&(this.node.style[e]=t[e])}else this.node.props&&this.node.set&&this.name in this.node.props?this.node.set({[this.name]:t}):-1!=this.nameIndex||this.optional&&!t?this.node.hasAttribute(i)&&this.node.removeAttribute(i):null!=this.oldValue&&"object"!=typeof this.oldValue&&this.oldValue===t||this.node.setAttribute(i,"object"==typeof t?JSON.stringify(t):t);this.oldValue=t}}}let us=new Map;class ms{constructor(e,t){this.parentNode=t,this.bindings=[],this.templateTag=e.templateTag;let i=e.templateTag.content.cloneNode(!0);this.c=i.firstChild;let n=document.createElement("div");n.appendChild(i),i=n,i.querySelectorAll("video").forEach((e=>{if(!e._isClone&&!e._clone){let t=e.cloneNode();e._clone=t,t._isClone=!0,t.setAttribute("is-clone",""),e.parentNode.insertBefore(t,e),e.parentNode.removeChild(e)}})),this.rootNodes=[];for(let e=0;e{let t=i;e.lvls.forEach((e=>{t=t.childNodes[e]})),e.node=t,this.bindings.push(new ds(e))})),this.rootNodes.forEach((e=>{this.parentNode.appendChild(e)}))}render(e){this.bindings.forEach((t=>{t._update(e)}))}destroy(){this.bindings.forEach((e=>{e.destroy()})),this.rootNodes.forEach((e=>{e&&e.parentNode&&e.parentNode.removeChild(e)})),this.rootNodes=[]}}class ps{constructor(e,t){this.bindingOptions=[];let i="";for(let t=0;t{a=l>>0,e.removeAttribute(o),t.push({lvls:i,nameIndex:a,valueIndex:r,name:o,value:s.value,type:"attribute"})})),s.value.replace(hs,((e,n)=>{r=n>>0,t.push({lvls:i,nameIndex:a,valueIndex:r,name:o,value:s.value,type:"attribute"})}))}if(e.childNodes)for(let n=0;n1?i-1:0),s=1;sfunction(e){ws[e.uuid]=e}(e)))}function ys(e){if(!e||"object"!=typeof e||e.__isProxy)return e;for(let t in e)"object"==typeof e[t]&&(e[t]=ys(e[t]));return new Proxy(e,{get:(e,t)=>"__isProxy"==t||("_proxy_target"==t?e:(function(e,t){if(ss&&"function"!=typeof e[t]){const i=vs(e,t);i.includes(ss)||i.push(ss)}}(e,t),e[t])),set:(e,t,i)=>(i=ys(i),(as(i)||i!==e[t])&&(gs(e,t),e[t]=i),!0)})}let xs=0;class bs extends HTMLElement{get defaultData(){return{}}constructor(){super(),this.uuid=xs++,this._data=this.defaultData,this.data=ys(this._data),this.created&&this.created(),this.styles&&(document.getElementById(this.tagName+"-style")||(this.$componentStyle=document.createElement("style"),this.$componentStyle.id=this.tagName+"-style",this.$componentStyle.setAttribute("id",this.tagName+"-style"),this.$componentStyle.type="text/css",this.$componentStyle.innerHTML=this.styles,document.getElementsByTagName("head")[0].appendChild(this.$componentStyle)))}fire(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t||null}))}connectedCallback(){if(this.props)for(let e in this.props)this.hydrateFromAttribute(e);this.attached&&this.attached(),this._isConnected=!0,this._update(),requestAnimationFrame((()=>{this.ready&&this.ready(),(this.update||this.resize)&&Ps.push(this)}))}hydrateFromAttribute(e){if(!this.props[e])return;let t=this.props[e];this.props[e].type&&(t=this.props[e].type);let i=this.props[e]&&this.props[e].default,n=e.replace(/([A-Z])/g,(e=>"-".concat(e[0].toLowerCase()))),s=this.hasAttribute("data-"+n)?"data-"+n:this.hasAttribute(n)?n:null;if(!s)return void(null!=i&&(this.data[e]=i));let o=this.getAttribute(s);if(!/\$\$[^\$]+\$\$/.test(o))if(t===Object){try{this.data[e]=JSON.parse(o)}catch(e){console.warn("<".concat(this.tagName.toLowerCase()+"> "+this.getAttribute("name")," - JSON parse error on attribute ").concat(s,"=").concat(o),e)}this.setAttribute(s,"$$"+e+"$$")}else t===Boolean?this.data[e]="false"!==o&&("true"===o||!!o):this.data[e]=t(o)}attributeChangedCallback(e,t,i){this.props&&this.hydrateFromAttribute(e),this.attributeChanged&&this.attributeChanged(e,t,i),this._update()}disconnectedCallback(){if(this.detached&&this.detached(),this.innerHTML="",this._isConnected=!1,this.update||this.resize)for(let e=0;e=768&&As!=window.innerHeight)&&Ps.forEach((e=>{e.resize&&e.resize()})),Rs=window.innerWidth,As=window.innerHeight,window.forceResize=!1}var Ts,Ls,_s,Ms,Fs,ks,zs,Es,Cs,Bs,Ds,Is,Os,Ns,Gs,Us;window.addEventListener("resize",Ss,!1),window.addEventListener("orientationchange",Ss,!1),Ss(),function e(t){requestAnimationFrame(e),Ps.forEach((e=>{e.update&&e.update()}));let i={...ws};ws={};for(let e in i)i[e]._update()}(),_A.env.isNico&&function(){let e={mask:"overflow:hidden;",center:"display:flex;align-items:center;justify-content:center;",circle:"border-radius: 100%;",sticky:"position:sticky",wrap:"flex-wrap:wrap;",relative:"position: relative;",rel:"position: relative;",fit:"height:100%; width: 100%;",grid:"display: grid; grid-template-columns:repeat(var(--grid-cols), minmax(0, 1fr));",flex:"display: flex;",block:"display: block;",iblock:"display: inline-block;",abs:"position:absolute;",absolute:"position:absolute;",fix:"position:fixed;",fixed:"position:fixed;",none:"display: none;",hidden:"visibility: hidden;",fill:"fill:currentColor",stroke:"stroke:currentColor",bg:"background-color:currentColor",c:"color:currentColor",border:"border: solid 1px currentColor;",shadow:"--shadowX:0;--shadowY:0;--shadowBlur:10px;--shadowColor:rgba(0,0,0,0.5); box-shadow: var(--shadowX) var(--shadowY) var(--shadowBlur) var(--shadowColor);",transform:"--translateX:0;--translateY:0; --rotate:0; --scaleX:1; --scaleY:1; will-change:transform; transform: translate(var(--translateX), var(--translateY)) rotate(var(--rotate)) scale(var(--scaleX), var(--scaleY)) translateZ(0);",before:{selector:"::before",prop:"content: '';display:inline-block;"},after:{selector:"::after",prop:"content: '';display:inline-block;"},pusht:"top: 100%",pushr:"right: 100%",pushb:"bottom: 100%",pushl:"left: 100%",nowrap:"white-space:nowrap",italic:"font-style:italic",normal:"font-style:normal",aa:"-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;","auto-aa":"-webkit-font-smoothing: auto;-moz-osx-font-smoothing: auto;",uppercase:"text-transform: uppercase",underline:"text-decoration:underline"},t={"white-space":"white-space",all:"all",content:"content",dashoffset:"stroke-dashoffset",dasharray:"stroke-dasharray",blend:"mix-blend-mode",backdrop:"backdrop-filter",filter:"filter",float:"float",clear:"clear",fs:"font-size",fw:"font-weight",ff:"font-family",lh:"line-height",spacing:"letter-spacing",letter:"letter-spacing",t:"top",tl:"top,left",tr:"top,right",l:"left",b:"bottom",bl:"bottom,left",br:"bottom,right",r:"right",p:"padding","p-t":"padding-top","p-tl":"padding-top, padding-left","p-lt":"padding-left, padding-top","p-l":"padding-left","p-b":"padding-bottom","p-bl":"padding-bottom, padding-left","p-lb":"padding-left, padding-bottom","p-r":"padding-right","p-tr":"padding-top, padding-right","p-rt":"padding-right, padding-top","p-x":"padding-right, padding-left","p-y":"padding-top, padding-bottom",m:"margin","m-t":"margin-top","m-l":"margin-left","m-b":"margin-bottom","m-r":"margin-right","m-x":"margin-left, margin-right","m-y":"margin-top, margin-bottom",w:"width",h:"height",c:"color",bg:"background","bg-clip":"background-clip, -webkit-background-clip","bg-size":"background-size","bg-pos":"background-position","bg-img":"background-image","bg-repeat":"background-repeat","bg-color":"background-color",fill:"fill",stroke:"stroke","min-w":"min-width","min-h":"min-height","max-w":"max-width","max-h":"max-height",dir:"flex-direction",direction:"flex-direction",justify:"justify-content",just:"justify-content",align:"text-align","align-x":"text-align","align-y":"vertical-align",items:"align-items",grow:"flex-grow",wrap:"flex-wrap",shrink:"flex-shrink","space-x":{selector:"> *:not(:last-child)",prop:"margin-right"},"space-y":{selector:"> *:not(:last-child)",prop:"margin-bottom"},"div-x":{selector:"> *:not(:last-child)",prop:"border-right: solid 1px; border-right-color"},"div-y":{selector:"> *:not(:last-child)",prop:"border-bottom: solid 1px; border-bottom-color"},origin:"transform-origin",shift:"--translateX, --translateY","shift-x":"--translateX","shift-y":"--translateY","shift-z":"--translateZ",translate:"--translateX, --translateY","translate-x":"--translateX","translate-y":"--translateY","translate-z":"--translateZ",rotate:"--rotate",scale:"--scaleX, --scaleY","scale-x":"--scaleX","scale-y":"--scaleY",cols:"--grid-cols",gap:"gap","gap-x":"column-gap","gap-y":"row-gap","auto-rows":"grid-auto-rows","auto-flow":"grid-auto-flow","auto-cols":"grid-auto-columns","box-shadow":"box-shadow","s-x":"--shadowX","s-y":"--shadowY",sb:"--shadowBlur",sc:"--shadowColor",border:"border","b-t":"border-top","b-r":"border-right","b-b":"border-bottom","b-l":"border-left","b-tr":"border-top-right","b-br":"border-bottom-right","b-bl":"border-bottom-left","b-tl":"border-top-left",bc:"border-color","bc-t":"border-top-color","bc-r":"border-right-color","bc-b":"border-bottom-color","bc-l":"border-left-color","bc-tr":"border-top-right-color","bc-br":"border-bottom-right-color","bc-bl":"border-bottom-left-color","bc-tl":"border-top-left-color",bw:"border-width","bw-t":"border-top-width","bw-r":"border-right-width","bw-b":"border-bottom-width","bw-l":"border-left-width","bw-tr":"border-top-right-width","bw-br":"border-bottom-right-width","bw-bl":"border-bottom-left-width","bw-tl":"border-top-left-width",bs:"border-style","bs-t":"border-top-style","bs-r":"border-right-style","bs-b":"border-bottom-style","bs-l":"border-left-style","bs-tr":"border-top-right-style","bs-br":"border-bottom-right-style","bs-bl":"border-bottom-left-style","bs-tl":"border-top-left-style",radius:"border-radius","radius-t":"border-top-radius","radius-r":"border-right-radius","radius-b":"border-bottom-radius","radius-l":"border-left-radius","radius-tr":"border-top-right-radius","radius-br":"border-bottom-right-radius","radius-bl":"border-bottom-left-radius","radius-tl":"border-top-left-radius",bo:"border-opacity","bo-t":"border-top-opacity","bo-r":"border-right-opacity","bo-b":"border-bottom-opacity","bo-l":"border-left-opacity","bo-tr":"border-top-right-opacity","bo-br":"border-bottom-right-opacity","bo-bl":"border-bottom-left-opacity","bo-tl":"border-top-left-opacity",display:"display",d:"display",object:"object-fit",scroll:"overscroll-behavior",list:"list-style",decoration:"text-decoration",pos:"position",pointer:"pointer-events",cursor:"cursor",appearance:"appearance",z:"z-index",index:"z-index",o:"opacity",opacity:"opacity",alpha:"opacity",overflow:"overflow","overflow-x":"overflow-x","overflow-y":"overflow-y",deco:"text-decoration",transition:"transition",animation:"animation",anim:"animation",tween:"transition","tween-delay":"transition-delay",delay:"transition-delay","tween-property":"transition-property",property:"transition-property",prop:"transition-property","tween-length":"transition-duration","tween-duration":"transition-duration","tween-ease":"transition-timing-function","anim-delay":"animation-delay","anim-duration":"animation-duration","anim-ease":"animation-timing-function"},i={even:{pre:"",post:":nth-child(even)"},odd:{pre:"",post:":nth-child(odd)"},"child-1":{pre:"",post:":nth-child(1)"},"child-2":{pre:"",post:":nth-child(2)"},"child-3":{pre:"",post:":nth-child(3)"},"child-4":{pre:"",post:":nth-child(4)"},"child-5":{pre:"",post:":nth-child(5)"},"child-6":{pre:"",post:":nth-child(6)"},"child-7":{pre:"",post:":nth-child(7)"},"child-8":{pre:"",post:":nth-child(8)"},"child-9":{pre:"",post:":nth-child(9)"},"child-10":{pre:"",post:":nth-child(10)"},"last-child":{pre:"",post:":last-child"},disabled:{pre:"",post:":disabled"},hover:{pre:"",post:":hover"},"parent-hover":{pre:":hover > ",post:""},"parents-hover":{pre:":hover ",post:""},"sibling-hover":{pre:":hover ~ ",post:""},"previous-hover":{pre:":hover + ",post:""},"group-hover":{pre:".group:hover ",post:""},checked:{pre:"",post:":checked"},"parent-checked":{pre:":checked > ",post:""},"parents-checked":{pre:":checked ",post:""},"sibling-checked":{pre:":checked ~ ",post:""},"previous-checked":{pre:":checked + ",post:""},"group-checked":{pre:".group:checked ",post:""},focus:{pre:"",post:":focus"},"parent-focus":{pre:":focus > ",post:""},"parents-focus":{pre:":focus ",post:""},"sibling-focus":{pre:":focus ~ ",post:""},"previous-focus":{pre:":focus + ",post:""},"group-focus":{pre:".group:focus ",post:""},active:{pre:"",post:":active"},"parent-active":{pre:":active > ",post:""},"parents-active":{pre:":active ",post:""},"sibling-active":{pre:":active ~ ",post:""},"previous-active":{pre:":active + ",post:""},"group-active":{pre:".group:active ",post:""},"in-view":{pre:".in-view ",post:""},"parents-is-active":{pre:".is-ready .is-active ",post:""},"parent-is-active":{pre:".is-ready .is-active > ",post:""},"group-is-active":{pre:".is-ready .group.is-active ",post:""},"anim-in":{pre:".is-ready .is-active ",post:""},placeholder:{pre:"",post:"::placeholder "},"has-placeholder":{pre:"",post:":placeholder-shown "},"sibling-has-placeholder":{pre:":placeholder-shown ~ ",post:""},"previous-has-placeholder":{pre:":active + ",post:""},scrollbar:{pre:"",post:"::-webkit-scrollbar"},"scroll-track":{pre:"",post:"::-webkit-scrollbar-track"},"scroll-thumb":{pre:"",post:"::-webkit-scrollbar-thumb"},"scroll-button":{pre:"",post:"::-webkit-scrollbar-button"},after:{post:"::after",pre:""},before:{post:"::before",pre:""}},n={between:"space-between",around:"space-around",evenly:"space-evenly",start:"flex-start",end:"flex-end",fit:"100%",current:"currentColor",abs:"absolute",col:"column",trans:"transparent"},s={},o="",a="",r="",l="";for(let t in e)r+=".".concat(t,","),l+=t+"|";for(let e in t)r+="[class*='".concat(e,":'],"),o+=e+"|";for(let e in i)r+="[class*='".concat(e,":'],"),a+=e.replace(/\-/,"\\-")+"|";o=o.replace(/\|$/,""),l=l.replace(/\|$/,""),r=r.replace(/\,$/,""),a=a.replace(/\|$/,"");let c=new RegExp("^"+l+"$"),h=new RegExp("^("+o+")\\:[^\\s]+"),d=new RegExp("^("+a+")\\:(.+)"),u=document.createElement("style");u.type="text/css",document.getElementsByTagName("head")[0].appendChild(u);let m=document.createElement("style");m.type="text/css",m.innerHTML+=":root {";for(let e in n)m.innerHTML+="--alias-".concat(e,": ").concat(n[e],";");m.innerHTML+="}",document.getElementsByTagName("head")[0].appendChild(m);var p=document.createElement("style");p.type="text/css",document.getElementsByTagName("head")[0].appendChild(p);var f=document.createElement("style");f.type="text/css",document.getElementsByTagName("head")[0].appendChild(f);var v={};function g(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document.styleSheets;for(var t=[],i=0;i{e==i&&(t=!0)})),t||y.push(e)}function P(e){e.matches&&e.matches(r)&&w(e),e.querySelectorAll&&e.querySelectorAll(r).forEach((e=>{w(e)}))}g().forEach((e=>{x[e]=b.getPropertyValue(e)})),window.updateComputedStyle=function(){b=getComputedStyle(document.documentElement)},window.getComputedCache=function(){return x},requestAnimationFrame((function n(){requestAnimationFrame(n),y.length>0&&y.forEach((n=>{!function(n,o){let a="",r={},l="",m=n.getAttribute("class").replace(/\n/g," ");/\([^)]+\)\:/.test(n.getAttribute("class"))&&(m=m.replace(/\([^)]+\)/g,((e,t,i)=>e.replace(/\s/g,";")))),m.split(" ").forEach((n=>{let u,m="",p="",f="";if(/\([^)]+\)\:?/.test(n)){let e;n=(n=n.replace(/\;/g," ")).replace(/\([^)]+\)\:?/,((t,i,n)=>(e=t,"")));let t=e.replace(/(\(|\))/g,"").replace(/\:$/,"").split("&");m=(t[0]||"")+" ",p=(t[1]||"")+" ",u=!0,f=e.replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/\&/g,"\\&").replace(/\+/g,"\\+").replace(/\~/g,"\\~").replace(/\>/g,"\\>").replace(/\:/g,"\\:").replace(/\*/g,"\\*").replace(/\./g,"\\.").replace(/\s/g,".")}else if(d.test(n))try{f=n.replace(d,((e,t)=>t)).replace(/(\r\n|\n|\r)/gm,""),n=n.replace(f+":",""),m=i[f].pre,p=i[f].post,u=!0,f+="\\:"}catch(e){}if(h.test(n)&&!s[f+n.replace(/([\W_])/g,(e=>"\\"+e))]){let e=n.split(":")[0],i=n.split(":")[1];if(null!=t[e])if(void 0===i)console.warn('missing value or wrong property syntax: "'+n+'"');else{let l="string"==typeof t[e]?t[e].split(","):t[e].prop.split(","),c=t[e].selector?t[e].selector:"",h="",d=/\!/g.test(i)?"!important":"";i=i.replace("!","");let u="";if(/\@/.test(i)){let e;i=i.replace(/\@(.*)/,((t,i,n)=>(e=i,""))),o["--media-"+e]&&(u="".concat(o["--media-"+e]))}l.forEach((e=>{let t=i.split(","),n="";t.forEach((t=>{if(/^[0-9.-]+[^0-9.-]+$/.test(t)){let e=t.replace(/^[0-9.-]+([^0-9.-]+)$/,((e,t)=>t)),i=t.replace(e,"");o["--unit-"+e]?n+="calc( ".concat(i," * var(--unit-").concat(e,") )"):n+="".concat(t)}else{let e="--alias-".concat(t);n+=o[e]?"var(--alias-".concat(t,")"):t}n+="transition-property"===e?",":" "})),h+="".concat(e,": ").concat(n.replace(/\,$/,"")," ").concat(d,";")})),n=n.replace(/([\W_])/g,(e=>"\\"+e)),""!=u?(r[u]=r[u]||"",r[u]+="".concat(m,".").concat(f).concat(n).concat(c).concat(p,"{ ").concat(h," }")):a+="".concat(m,".").concat(f).concat(n).concat(c).concat(p,"{ ").concat(h," }"),s[f+n]=h}}if(c.test(n.replace(/([\W_])/g,(e=>"\\"+e)))){let t=n.replace(/\@.*/,"");if(null!=e[t]&&!s[f+n.replace(/([\W_])/g,(e=>"\\"+e))]){let i="string"==typeof e[t]?e[t]:e[t].prop,a=e[t].selector?e[t].selector:"",c="";if(/\@/g.test(n)){let e;n.replace(/\@(.*)/,((t,i,n)=>(e=i,""))),o["--media-"+e]&&(c="".concat(o["--media-"+e]))}""!=c?(r[c]=r[c]||"",r[c]+=" .".concat(f).concat(n).concat(a," { ").concat(i," }")):l+=" .".concat(f).concat(n).concat(a," { ").concat(i," }"),s[f+n.replace(/([\W_])/g,(e=>"\\"+e))]=".".concat(f).concat(n).concat(a," { ").concat(i," }")}}}));let g=!1;for(let e in r)v[e]=v[e]||"",v[e]+="".concat(r[e]),g=!0;if(g){let e="",t=[];for(let e in v)t.push(e);t.sort(((e,t)=>Number(e.replace(/^([^px]+).*/,((e,t)=>t)))t)))?-1:1)),t.forEach((t=>{e+="@media ".concat(t," { ").concat(v[t]," }")})),f.innerHTML=e}""!=l&&(u.innerHTML+=l),""!=a&&(p.innerHTML+=a)}(n,x)})),y=[]}));let R=-1,A=-1;function S(){(R!=document.body.clientWidth||window.innerWidth>768&&A!=window.innerHeight)&&(document.documentElement.style.setProperty("--vw",document.body.clientWidth+"px"),document.documentElement.style.setProperty("--vh",window.innerHeight+"px"),P(document.documentElement)),R=document.body.clientWidth,A=window.innerHeight}window.addEventListener("resize",S),S(),document.addEventListener("DOMContentLoaded",(e=>{S()})),window.addEventListener("load",(e=>{S()})),new ResizeObserver((function(){S()})).observe(document.body),new MutationObserver((function(e){e.forEach((e=>{"childList"==e.type&&"STYLE"!=e.target.tagName&&e.addedNodes.forEach((e=>{P(e)})),"attributes"==e.type&&P(e.target)}))})).observe(document.documentElement||document.body,{attributes:!0,attributeFilter:["class"],subtree:!0,childList:!0,characterData:!0}),P(document.documentElement),window.UtilityCSS=()=>u.innerHTML+"\n"+m.innerHTML+"\n"+p.innerHTML+"\n"+f.innerHTML,window.getAllCSSVariableNames=g}();const js={resizeChapterKeyframes:!1};if(_A.env.useEditor){var Hs=new St.GUI;Hs.add(js,"resizeChapterKeyframes"),Hs.close(),document.querySelector(".dg.ac").style.zIndex=1e4;let Xs=is.layers,Ws=is.chapters;function Ks(e){if(Array.isArray(e)){let t="[";for(let i=0;i0||"0"===e?Math.floor(1e3*e)/1e3:e}class Ys extends bs{get styles(){return"\n app-editor * {\n box-sizing: border-box;\n }"}get defaultData(){return{enabled:!1,topControls:[{type:"button",action:"save",label:"save"},{type:"button",action:"zoomIn",label:"+"},{type:"button",action:"zoomOut",label:"-"},{type:"button",action:"play",label:"play"},{type:"button",action:"pause",label:"pause"},{type:"button",action:"toggleXRay",label:"Xray"},{type:"time"}],dragPointerStart:[0,0],selectedChapter:-1,isDraggingChapter:!1,isResizingChapter:!1,zoom:16,sceneData:Xs,sceneChapters:Ws,selectedKeyframe:-1,selectedKeyframes:[],selectedProp:-1,selectedLayer:-1,dragKeyframe:!1,isEditingValue:!1,isResizingEditor:!1,editorHeight:300,hidden:!1,timelinePos:{left:0,top:0}}}get props(){return{time:Number}}save(){let e=this.data.sceneData,t=this.data.sceneChapters,i=JSON.stringify({chapters:t,layers:e}),n=new Blob([i],{type:"text/plain"}),s=document.createElement("a");s.download="scene.json",s.href=window.URL.createObjectURL(n),s.click()}load(){}toggleXRay(){this.fire("xraychange")}play(){this.fire("play")}pause(){this.fire("pause")}reset(){this.fire("reset")}zoomIn(){this.set({zoom:this.data.zoom+5})}zoomOut(){this.set({zoom:this.data.zoom-5})}toggleLayer(e){if(!this.data.isEditingValue){let t=this.data.sceneData;t[e].opened=!t[e].opened,this.set({sceneData:t},"OPENED")}}update(){}resize(){this.$timeline&&(this.data.timelinePos=function(e,t){for(var i=t||document,n=e.offsetTop,s=e.offsetLeft;e&&e.offsetParent&&e.offsetParent!=document&&e!==i&&i!==e.offsetParent;)n+=e.offsetParent.offsetTop,s+=e.offsetParent.offsetLeft,e=e.offsetParent;return{top:n,left:s}}(this.$timeline))}attached(){this.onKeyDown=this.onKeyDown.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this.onMouseMove=this.onMouseMove.bind(this),this.onMouseUp=this.onMouseUp.bind(this),window.addEventListener("keydown",this.onKeyDown),window.addEventListener("keyup",this.onKeyUp),window.addEventListener("mousemove",this.onMouseMove),window.addEventListener("mouseup",this.onMouseUp)}detached(){window.removeEventListener("keydown",this.onKeyDown),window.removeEventListener("keyup",this.onKeyUp),window.removeEventListener("mousemove",this.onMouseMove),window.removeEventListener("mouseup",this.onMouseUp)}onKeyDown(e){8!=e.which||this.data.isEditingValue||this.deleteKeyFrame(),16==e.which&&(this.data.isShiftDown=!0)}onKeyUp(e){16==e.which&&(this.data.isShiftDown=!1)}onMouseUp(){let{sceneData:e}=this.data;this.set({dragKeyframe:!1,isDraggingTime:!1,isResizingEditor:!1,isDraggingChapter:!1,isResizingChapter:!1,sceneData:e}),this.data.selectedKeyframes.length>0&&this.data.selectedKeyframes.forEach((t=>{let i=e[t.selectedLayer],n=(null==i?void 0:i.props[t.selectedProp]).keyFrames[t.selectedKeyframe];void 0!==n._ratio&&delete n._ratio})),this.data.sceneData.forEach((e=>{var t;null==e||null===(t=e.props)||void 0===t||t.forEach((e=>{e.keyFrames.sort(((e,t)=>e.time<=t.time?-1:1))}))})),this.set({sceneData:e})}onMouseMove(e){let{sceneData:t,isDraggingChapter:i,isResizingChapter:n,selectedKeyframe:s,selectedKeyframes:o,selectedProp:a,selectedLayer:r,dragKeyframe:l,timelinePos:c,isDraggingTime:h,dragPointerStart:d}=this.data;if((h||(-1!=s||o.length>0)&&l||i||n)&&e.preventDefault(),this.lastMouseMoveDate=this.lastMouseMoveDate||Date.now(),Date.now()-this.lastMouseMoveDate<1e3/60)return;this.lastMouseMoveDate=Date.now();let u=(d[0]-c.left+this.$scroll.scrollLeft)*this.data.zoom,m=(e.pageX-c.left+this.$scroll.scrollLeft)*this.data.zoom-u;if(d[0]=e.pageX,n){e.preventDefault();let i=this.data.sceneChapters[this.data.selectedChapter],n=this.data.sceneChapters[this.data.selectedChapter+1],s=i.endTime;i.endTime+=m;let o=i.endTime-(n.startTime-100);for(let e=this.data.selectedChapter+1;e0&&this.data.selectedKeyframes.forEach((e=>{let n=t[e.selectedLayer],s=(null==n?void 0:n.props[e.selectedProp]).keyFrames[e.selectedKeyframe];void 0!==s._ratio&&(s.time=i.startTime+s._ratio*(i.endTime-i.startTime)),s.time=Math.max(0,s.time)})),js.resizeChapterKeyframes&&this.data.sceneData.forEach((e=>{null==e||e.props.forEach((e=>{null==e||e.keyFrames.forEach((e=>{e.time>s&&(e.time+=o)}))}))}))}else if(i){e.preventDefault();let t=this.data.sceneChapters[this.data.selectedChapter];t.startTime+=m,t.endTime+=m,t.startTime=Math.max(0,t.startTime),t.endTime=Math.max(0,t.endTime)}if(h&&!i&&!n){e.preventDefault();let t=(e.pageX-c.left+this.$scroll.scrollLeft)*this.data.zoom;t=Math.max(0,t),this.fire("timechange",t)}if(this.data.isResizingEditor){e.preventDefault(),e.stopPropagation();let t=window.innerHeight-e.pageY;this.set({editorHeight:t})}if((-1!=s||o.length>0)&&(l||i)){if(e.preventDefault(),this.data.selectedKeyframes.length>0)this.data.selectedKeyframes.forEach((e=>{let i=t[e.selectedLayer],n=(null==i?void 0:i.props[e.selectedProp]).keyFrames[e.selectedKeyframe];n.time+=m,n.time=Math.max(0,n.time)}));else if(-1!=s&&l){let e=t[r],i=(null==e?void 0:e.props[a]).keyFrames[s];i.time+=m,i.time=Math.max(0,i.time)}this.set({sceneData:t})}}setTime(e){this.set({isDraggingTime:!0})}selectKeyframe(e,t,i,n){let{sceneData:s}=this.data,{selectedKeyframe:o,selectedKeyframes:a,selectedProp:r,selectedLayer:l}=this.data;if(this.data.dragKeyframe=!0,this.data.isShiftDown)0==a.length&&a.push({selectedKeyframe:o,selectedProp:r,selectedLayer:l}),a.push({selectedKeyframe:n,selectedProp:i,selectedLayer:t}),s[t].props[i].keyFrames[n].selected=!0,this.set({sceneData:s,selectedKeyframes:a});else{if(a.length>0&&s[t].props[i].keyFrames[n].selected);else{this.data.sceneData.forEach((e=>{var t;null==e||null===(t=e.props)||void 0===t||t.forEach((e=>{e.keyFrames&&e.keyFrames.forEach((e=>{e.selected=!1}))}))}))}s[t].props[i].keyFrames[n].selected=!0,this.set({sceneData:s,selectedKeyframe:n,selectedProp:i,selectedLayer:t})}}deleteKeyFrame(){let e=this.data.sceneData,{selectedKeyframe:t,selectedProp:i,selectedLayer:n}=this.data;if(-1!==t&&-1!==i&&-1!==n){e[n].props[i].keyFrames.splice(t,1),this.data.selectedKeyframe=-1,this.data.selectedProp=-1,this.data.selectedLayer=-1,this.set({sceneData:e,selectedKeyframe:t,selectedProp:i,selectedLayer:n})}}updateKeyFrame(e,t,i,n,s){let o=this.data.sceneData,a=o[e].props[t];"value"==n?"number"==a.type?a.keyFrames[i].value=Number(s):"object"==a.type?a.keyFrames[i].value=JSON.parse(s):"boolean"==a.type?a.keyFrames[i].value="true"==s:a.keyFrames[i].value=s:a.keyFrames[i][n]=s,this.set({sceneData:o})}updateProperty(e,t,i,n){let s=this.data.sceneData,o=s[e],a=o.props[t];if("value"==i)if("number"==a.type)o.props[t][i]=Number(n);else if("object"==a.type)o.props[t][i]=JSON.parse(n);else if("boolean"==a.type){var r,l,c,h,d;o.props[t][i]="true"==n,null===(r=console)||void 0===r||r.log("updateProperty Boolean"),null===(l=console)||void 0===l||l.log(" - layer",o),null===(c=console)||void 0===c||c.log(" - selectedProp",t),null===(h=console)||void 0===h||h.log(" - key",i),null===(d=console)||void 0===d||d.log(" - value","true"==n)}else o.props[t][i]=n;else o.props[t][i]=n;this.set({sceneData:s})}startResizeChapter(e,t){let{sceneData:i,sceneChapters:n,selectedKeyframes:s}=this.data,o=n[t],{startTime:a,endTime:r}=o;this.selectKeyFramesInChapter(e,t),this.data.selectedKeyframes.length>0&&this.data.selectedKeyframes.forEach((e=>{let t=i[e.selectedLayer],n=(null==t?void 0:t.props[e.selectedProp]).keyFrames[e.selectedKeyframe];n._ratio=(n.time-a)/(r-a)})),this.set({isResizingChapter:!0,isDraggingChapter:!1,chapterResizeEndTime:r,selectedChapter:t})}selectKeyFramesInChapter(e,t){let{sceneData:i,sceneChapters:n,selectedKeyframes:s}=this.data,o=n[t],{startTime:a,endTime:r}=o;i.forEach(((e,t)=>{e.props=e.props||[],e.props.forEach(((e,i)=>{null==e||e.keyFrames.forEach(((e,n)=>{if(e.time>=a&&e.time<=r){e.selected=!0;let o=!1;s.forEach((e=>{e.selectedLayer==t&&e.selectedProp==i&&e.selectedKeyframe==n&&(o=!0)})),o||s.push({selectedKeyframe:n,selectedProp:i,selectedLayer:t})}}))}))})),this.set({sceneData:i,isDraggingChapter:!0,selectedChapter:t})}addProperty(e,t){t&&t.stopPropagation();let i=this.data.sceneData,n=i[e];n.props=n.props||[],n.props.push({name:"new property",keyFrames:[]}),this.set({sceneData:i})}removeProperty(e,t,i){i&&i.stopPropagation();let n=this.data.sceneData,s=n[e];s.props=s.props||[],s.props.splice(t,1),this.set({sceneData:n})}updateLayer(e,t,i){let n=this.data.sceneData;n[e][t]=i,this.set({sceneData:n})}getEasedValue(e,t,i,n){let s,o,a,r,l,c=i.filter((e=>e.time<=n));if(c.length>0&&(s=c.length-1,o=i[s],r=o.easing,l=o.tween),!o){if(!i[0])return 0;o=i[0],s=0,r=!1,l=!1}let h=i[s+1];if(!l||l&&!h)return o.value;{let e=h.time-o.time,t=Math.max(0,Math.min(1,(n-o.time)/e));if(r){let e=[0,0,1,1];"ease-in"==r&&(e=[.98,0,1-.43,1-.195]),"ease-out"==r&&(e=[.43,.195,.02,1]),"ease-in-out"==r&&(e=[.42,0,.58,1]),t=Si.apply([...e,t,1])}a=o.value.length?[o.value[0]+t*(h.value[0]-o.value[0]),o.value[1]+t*(h.value[1]-o.value[1]),o.value[2]+t*(h.value[2]-o.value[2])]:o.value+t*(h.value-o.value)}return a}addKeyFrame(e,t,i){let n,s,{sceneData:o}=this.data,a=o[e],r=null==a?void 0:a.props[t],{keyFrames:l}=r,c=l.filter((e=>e.time<=i)),h=c[c.length-1];if(h?(n=h.tween,s=h.easing):(h=l[0],n=void 0,s=void 0),h){if(n){let e=h.value;l.push({time:i,value:e})}else{let e=l&&l.length>0?this.getEasedValue(a,r,l,i):h.value;l.push({time:i,value:e,tween:n,easing:s})}l.sort(((e,t)=>e.time<=t.time?-1:1)),this.set({sceneData:o})}}unSelectAllKeyFrames(){let{sceneData:e,selectedKeyframe:t,selectedKeyframes:i,selectedLayer:n,selectedProp:s}=this.data;e[n]&&e[n].props[s]&&e[n].props[s].keyFrames&&e[n].props[s].keyFrames[t]&&(e[n].props[s].keyFrames[t].selected=!1),i.forEach((t=>{var i,n;let s=null===(i=e[t.selectedLayer])||void 0===i||null===(n=i.props[t.selectedProp])||void 0===n?void 0:n.keyFrames[t.selectedKeyframe];s&&(s.selected=!1)})),e.forEach((e=>{var t;null==e||null===(t=e.props)||void 0===t||t.forEach((e=>{var t;null==e||null===(t=e.keyFrames)||void 0===t||t.forEach((e=>{e.selected=!1}))}))})),this.data.selectedKeyframes.splice(0,this.data.selectedKeyframes.length),this.set({sceneData:e,selectedKeyframes:i,selectedKeyframe:-1,selectedLayer:-1,selectedProp:-1})}addKeyFrameOrUnselect(e,t,i){let{zoom:n,selectedKeyframe:s,selectedKeyframes:o,dragKeyframe:a,timelinePos:r}=this.data;if(!a)if(-1==s&&0==o.length){let s=(e.pageX-r.left+this.$scroll.scrollLeft)*n;this.addKeyFrame(t,i,s)}else this.unSelectAllKeyFrames()}afterRender(){this.$timeline||(this.$timeline=this.querySelector("[data-timeline]")),this.$scroll||(this.$scroll=this.querySelector("[data-scroll]")),0==this.data.timelinePos.left&&this.resize()}render(){let{enabled:e,topControls:t,sceneData:i,sceneChapters:n,editorHeight:s,selectedKeyframes:o,time:a,hidden:r,zoom:l}=this.data,c=e?fs(Ls||(Ls=ns(['\n \n \x3c!-- TOP BAR --\x3e\n \n \n \x3c!-- FILE + TIME --\x3e\n
\n ','\n
\n \x3c!-- TIMECODES RULER --\x3e\n
\n \n ',"\n \n ",'\n \n
\n
\n \n \x3c!-- LAYERS --\x3e\n \n \n
\n \n \x3c!-- LAYERS NAMES --\x3e\n
\n ','\n
\n \n \x3c!-- TIMELINE --\x3e\n
\n \n \x3c!-- TIME HANDLER --\x3e\n
\n
\n \n \x3c!-- Chapters guides --\x3e\n ',"\n \n ","\n
\n
\n
"])),t.map((e=>"button"==e.type?fs(_s||(_s=ns(['\n \n ',"\n "])),(t=>this[e.action]()),e.label):fs(Ms||(Ms=ns(['\n \n Time: ',"\n "])),a))),(e=>this.setTime(e)),[...Array(0).keys()].map((e=>fs(Fs||(Fs=ns(['\n \n \n ','\n
\n \n ',"\n
\n "])),"w:".concat(1e3/l,"px"),1e3*e,[0,1,2,3,4,5,6,7,8,9].map((e=>fs(ks||(ks=ns(['\n \n ',"\n \n "])),"w:".concat(100/l,"px"),l>10&&5!=e&&0!=e?"o:0":"o:0.5",e)))))),null==n?void 0:n.map(((e,t)=>fs(zs||(zs=ns(['\n \n
',' \n
\n \n
\n duration: ',"\n
\n
\n "])),{left:e.startTime/l+"px",width:(e.endTime-e.startTime)/l+"px"},"bg:".concat(e.color),(e=>this.selectKeyFramesInChapter(e,t)),e.name.substr(0,25),(e=>this.startResizeChapter(e,t)),e.endTime-e.startTime))),null==i?void 0:i.map(((e,t)=>{var i;return fs(Es||(Es=ns(['\n \n
\n \n \n \n \n ','\n \n \n \n
\n
\n
\n ','\n
\n
Add property \n
\n
\n '])),"bg:".concat(e.color||""),(e=>this.toggleLayer(t)),"rotate:".concat(e.opened?90:0,"deg"),e.id,(e=>e.stopPropagation()),(e=>this.set({isEditingValue:!0})),(e=>this.set({isEditingValue:!0})),(e=>this.set({isEditingValue:!1})),(e=>this.updateLayer(t,"color",e.currentTarget.value)),e.color,e.opened?"":"d:none",null==e||null===(i=e.props)||void 0===i?void 0:i.map(((e,i)=>{var n;return fs(Cs||(Cs=ns(['\n \n \n \n \n \n \n \n \n \n Any \n Number \n Object \n Boolean \n \n \n \n \n \x3c!-- delete --\x3e\n \n
\n '])),(n=>{n.stopPropagation(),this.updateProperty(t,i,"useKeyFrames",!e.useKeyFrames)}),e.useKeyFrames?"o:1":"o:0.2",(e=>e.stopPropagation()),(e=>this.set({isEditingValue:!0})),(e=>this.set({isEditingValue:!0})),(e=>this.set({isEditingValue:!1})),(e=>this.updateProperty(t,i,"name",e.currentTarget.value)),e.name,(e=>e.stopPropagation()),(e=>this.updateProperty(t,i,"type",e.currentTarget.value)),"any"==e.type&&"selected","number"==e.type&&"selected","object"==e.type&&"selected","boolean"==e.type&&"selected",(e=>e.stopPropagation()),(e=>this.set({isEditingValue:!0})),(e=>this.set({isEditingValue:!0})),(e=>this.set({isEditingValue:!1})),(e=>this.updateProperty(t,i,"value",e.currentTarget.value)),Ks(void 0===e.value?null===(n=e.keyFrames[0])||void 0===n?void 0:n.value:e.value),(e=>this.removeProperty(t,i,e)))})),(e=>this.addProperty(t,e)))})),(e=>this.setTime(e)),{transform:"translateX(".concat(a/l,"px) translateZ(0)")},null==n?void 0:n.map(((e,t)=>fs(Bs||(Bs=ns(['\n \n
\n \n
\n '])),"bg:".concat(e.color),"l:".concat(e.startTime/l,"px"),"bg:".concat(e.color),"l:".concat(e.endTime/l,"px")))),null==i?void 0:i.map(((e,t)=>{var i,n,s;let a=[],{push:r}=Array.prototype;return null==e||null===(i=e.props)||void 0===i||i.map((e=>r.apply(a,e.keyFrames))),fs(Ds||(Ds=ns(['\n \n \n \n \x3c!-- Key frame previews --\x3e\n
\n \n \x3c!-- Keyframes --\x3e\n
\n
\n '])),a.length>0?"bg:"+e.color:"bg:stripes",null==e||null===(n=e.props)||void 0===n?void 0:n.map(((t,i)=>{var n;return fs(Is||(Is=ns(["\n ","\n "])),null==t||null===(n=t.keyFrames)||void 0===n?void 0:n.map(((t,i)=>fs(Os||(Os=ns(['\n \n \n '])),t.selected?"bg:#22ffa7":"bg:#fff",e.opened?"o:0.75":"o:1",{left:"".concat(t.time/l-4,"px")}))))})),e.opened?"":"d:none",null==e||null===(s=e.props)||void 0===s?void 0:s.map(((i,n)=>{var s;return fs(Ns||(Ns=ns(['\n \n \n
\n
\n \n \n \n ',"\n \n
\n "])),(e=>this.addKeyFrameOrUnselect(e,t,n)),(null==i||null===(s=i.keyFrames)||void 0===s?void 0:s.length)>0?"o:0.25 bg:"+e.color:"o:0.5 bg:stripes",null==i?void 0:i.keyFrames.map(((e,s)=>fs(Gs||(Gs=ns(['\n \n \n ',' \n \n \n \n \n \n \n \n Linear \n EaseOut \n EaseIn \n EaseInOut \n \n \n \n \n \n \n '])),(e=>this.selectKeyframe(e,t,n,s)),"bg:".concat(e.selected?"#22ffa7":"#f7c104"),"z:".concat(e.selected?"3":"2"),{transform:"translateX(".concat(e.time/l,"px)")},Ks(e.value),e.selected&&0==o.length?"":"d:none",(e=>this.set({isEditingValue:!0})),(e=>this.set({isEditingValue:!0})),(e=>this.set({isEditingValue:!1})),(e=>this.updateKeyFrame(t,n,s,"value",e.currentTarget.value)),Ks(e.value),!!e.tween&&"checked",(e=>this.updateKeyFrame(t,n,s,"tween",e.currentTarget.checked)),(e=>e.stopPropagation()),(e=>this.updateKeyFrame(t,n,s,"easing",e.currentTarget.value)),"linear"==e.easing&&"selected","ease-out"==e.easing&&"selected","ease-in"==e.easing&&"selected","ease-in-out"==e.easing&&"selected",e.tween&&s\n \n \x3c!-- resize height handler --\x3e\n \n
\n \n \n \n ','\n \n \n \n \n "])),(e=>this.set({isResizingEditor:!0})),(e=>this.set({enabled:!1===this.data.enabled})),this.data.enabled?"disable":"enable",{height:"".concat(s,"px")},c)}}customElements.define("app-editor",Ys)}class Vs{constructor(){this.no=R.G.id("sail-no");const e=R.G.id("sail-bg");this.noA=new R.M({el:this.no,p:{opacity:[0,1]}}),this.bgA=new R.M({el:e,p:{opacity:[0,1]}})}out(e){let t=_A.fromBack?0:300;this.no.textContent="",this.noA.play({d:0,e:"o2"}),this.bgA.play({d:t,e:"o2",cb:e.cb})}in(){const e="linear",t=new he;this.noA.play({reverse:!0,d:0,e:e}),this.bgA.play({reverse:!0,d:0,e:e,cb:!1}),t.play()}inFirstXray(){(new he).play()}}window.initStartDate=Date.now(),new class{constructor(){const e=this.div("-w"," rotate"),t=this.div("","");t.textContent="Please rotate your device.",e.appendChild(t),document.body.prepend(e)}div(e,t){const i=R.Cr("div");return i.className="iss"+e+t,i}},new class{constructor(e){this.arr=e.key,this.arrL=this.arr.length,this.digitCurr=this.arr[0].digit,this.inDom=!1,R.BM(this,["key"]),R.L(document,"a","keydown",this.key)}key(e){"Escape"===e.code&&this.inDom&&this.click({escape:!0});for(let t=0;t{this.cb()}))}cb(){var e;const t=_A;let i=document.querySelector("[data-gl-scene]");t.$glScene=new ts({el:i,data:is,onTimeUpdate:e=>{var i,n;(null===(i=t.$appEditor)||void 0===i?void 0:i.set)&&(null===(n=t.$appEditor)||void 0===n||n.set({time:e}))},ready:e=>this.onWebglReady()}),t.$appEditor=document.querySelector("app-editor"),null===(e=t.$appEditor)||void 0===e||e.addEventListener("timechange",(e=>{t.$glScene.seek(e.detail)}))}onWebglReady(){const e=_A;e.delayTr=500,e.$glScene.hide(),e.e.intro(),e.e.init(),e.e.run(),e.e.nav.color.fx({d:0,delay:{main:0,waitlist:0}}),e.e.nav.color.fxCursor({d:0}),e.e.nav.color.fxXrayCta({d:0});const t=e.config.isLocal?0:500,i=!e.is.homeA&&!e.is.narrative&&!e.is.explore;if(e.xRayFirstTime&&i)return e.xRayFirstTimeTr=!0,void this.introA.run();new R.Delay((t=>{e.e.on(),e.sd.off()}),t).run(),this.introA.run((t=>{e.mutating=!1,R.PE.none(R.G.id("load"))}))}},mutation:class{constructor(){this.mutationA=new Vs}out(){const e=_A;if(e.e.off(),e.sd.on(),e.fromBack&&e.e.code.visible&&e.e.code.fx({action:"hide",fromBack:!0}),e.is.narrative?e.e.nav.fx.hideMain({fromCursor:!1}):e.was.narrative&&e.e.nav.fx.showMain({fromCursor:!1}),this.fromMenu=e.e.nav.menu.isOpen,this.fromMenu||!e.xRayActive||e.xRayFirstTime||e.e.console.addMsg({delay:0}),e.xRayFirstTime&&e.xRayFirstTimeTr)e.e.xRay.cta.click(),e.e.nav.color.fx({d:0,delay:{main:0,waitlist:0}}),e.page.update();else if(this.fromMenu)e.page.update();else{const t=e.is.waitlist&&!e.hasBurger?550:0,i=e.is.narrative&&(e.was.homeA||e.was.homeB||e.was.waitlist)?550:0;e.e.nav.color.fx({d:300,delay:{main:i,waitlist:t}}),this.mutationA.out({cb:t=>{e.page.update()}})}}in(){const e=_A;if(e.$glScene.hide(),e.page.removeOld(),e.page.insertNew(),window.scrollTo(0,0),e.delayTr=0,e.xRayFirstTime&&e.xRayFirstTimeTr?e.delayTr=1e3:this.fromMenu&&(e.delayTr=e.fromBack?0:300),e.e.init(),e.e.nav.color.fxXrayCta({d:0}),this.fromMenu&&e.e.nav.menu.fn(),this.fromMenu&&e.xRayActive&&!e.xRayFirstTime&&e.e.console.addMsg({delay:200}),e.xRayFirstTime&&e.xRayFirstTimeTr)return e.cookie.setXrayFirstTime(),e.e.xRay.sailHide(),e.is.narrative?(e.e.narrative.setIndex(1),e.e.narrative.first({delay:1500})):this.mutationA.inFirstXray(),e.e.console.addMsg({delay:1e3}),e.e.banner.show(),e.e.on(),e.sd.off(),e.xRayFirstTimeTr=!1,e.mutating=!1,void R.PE.none(R.G.id("load"));const t=!e.is.homeA&&!e.is.narrative&&!e.is.explore;if(e.xRayFirstTime&&!e.xRayFirstTimeTr&&t)return e.xRayFirstTimeTr=!0,void this.mutationA.in();this.mutationA.in(),new R.Delay((t=>{this.fromMenu&&e.e.nav.color.fx({d:300,delay:{main:0,waitlist:0}}),e.e.on(),e.sd.off(),e.mutating=!1}),e.delayTr).run()}}},win:class{constructor(){_A.win={w:0,h:0},R.BM(this,["resize"]),new R.ROR(this.resize).on(),this.resize()}resize(){const e=_A,t=innerWidth,i=innerHeight;e.win={w:t,h:i},e.winSemi={w:.5*t,h:.5*i},e.winRatio={wh:t/i,hw:i/t},e.isLandscape=e.winRatio.wh>1;const n=e.isLandscape?"landscape":"portrait",s=e.config.psd[n];e.psd={h:s.h,w:s.w},e.winWpsdW=t/e.psd.w,e.winHpsdH=i/e.psd.h,e.psdWwinW=e.psd.w/t,e.psdHwinH=e.psd.h/i,e.hasBurger=matchMedia("(max-width: 1000px)").matches,e.breakPointMin=matchMedia("(max-width: 600px)").matches,e.navH=e.hasBurger?70:90,e.sfxy0=e.breakPointMin?30:50,e.sfxy1=e.breakPointMin?20:30,e.sFxS=.9*e.win.h}}})}();