_&&(n=_)),p=oe(this._tTime,o),!m&&this._tTime&&p!==a&&(p=a),f&&1&a&&(n=_-n,d=1),a!==p&&!this._lock){var x=f&&1&p,w=x===(f&&1&a);if(ae)for(n=t._first;n&&n._start<=r;){if(!n._dur&&"isPause"===n.data&&n._start>e)return n;n=n._next}else for(n=t._last;n&&n._start>=r;){if(!n._dur&&"isPause"===n.data&&n._start=0)&&!e&&Re(this,"onStart"),n>=m&&t>=0)for(i=this._first;i;){if(s=i._next,(i._act||n>=i._start)&&i._ts&&u!==i){if(i.parent!==this)return this.render(t,e,r);if(i.render(i._ts>0?(n-i._start)*i._ts:(i._dirty?i.totalDuration():i._tDur)+(n-i._start)*i._ts,e,r),n!==this._time||!this._ts&&!h){u=0,s&&(v+=this._zTime=-1e-8);break}}i=s}else{i=this._last;for(var b=t<0?t:n;i;){if(s=i._prev,(i._act||b<=i._end)&&i._ts&&u!==i){if(i.parent!==this)return this.render(t,e,r);if(i.render(i._ts>0?(b-i._start)*i._ts:(i._dirty?i.totalDuration():i._tDur)+(b-i._start)*i._ts,e,r),n!==this._time||!this._ts&&!h){u=0,s&&(v+=this._zTime=b?-1e-8:J);break}}i=s}}if(u&&!e&&(this.pause(),u.render(n>=m?0:-1e-8)._zTime=n>=m?1:-1,this._ts))return this._start=c,ue(this),this.render(t,e,r);this._onUpdate&&!e&&Re(this,"onUpdate",!0),(v===g&&g>=this.totalDuration()||!v&&m)&&(c!==this._start&&Math.abs(l)===Math.abs(this._ts)||this._lock||((t||!_)&&(v===g&&this._ts>0||!v&&this._ts<0)&&re(this,1),e||t<0&&!m||!v&&!m||(Re(this,v===g?"onComplete":"onReverseComplete",!0),this._prom&&!(v0)&&this._prom())))}return this},r.add=function(t,e){var r=this;if(ht(e)||(e=ye(this,e)),!(t instanceof or)){if(mt(t))return t.forEach((function(t){return r.add(t,e)})),this;if(at(t))return this.addLabel(t,e);if(!ot(t))return this;t=_r.delayedCall(0,t)}return this!==t?pe(this,t,e):this},r.getChildren=function(t,e,r,n){void 0===t&&(t=!0),void 0===e&&(e=!0),void 0===r&&(r=!0),void 0===n&&(n=-K);for(var i=[],s=this._first;s;)s._start>=n&&(s instanceof _r?e&&i.push(s):(r&&i.push(s),t&&i.push.apply(i,s.getChildren(!0,e,r)))),s=s._next;return i},r.getById=function(t){for(var e=this.getChildren(1,1,1),r=e.length;r--;)if(e[r].vars.id===t)return e[r]},r.remove=function(t){return at(t)?this.removeLabel(t):ot(t)?this.killTweensOf(t):(ee(this,t),t===this._recent&&(this._recent=this._last),ne(this))},r.totalTime=function(e,r){return arguments.length?(this._forcing=1,!this._dp&&this._ts&&(this._start=qt(Ge.time-(this._ts>0?e/this._ts:(this.totalDuration()-e)/-this._ts))),t.prototype.totalTime.call(this,e,r),this._forcing=0,this):this._tTime},r.addLabel=function(t,e){return this.labels[t]=ye(this,e),this},r.removeLabel=function(t){return delete this.labels[t],this},r.addPause=function(t,e,r){var n=_r.delayedCall(0,e||St,r);return n.data="isPause",this._hasPause=1,pe(this,n,ye(this,t))},r.removePause=function(t){var e=this._first;for(t=ye(this,t);e;)e._start===t&&"isPause"===e.data&&re(e),e=e._next},r.killTweensOf=function(t,e,r){for(var n=this.getTweensOf(t,r),i=n.length;i--;)ur!==n[i]&&n[i].kill(t,e);return this},r.getTweensOf=function(t,e){for(var r,n=[],i=Ae(t),s=this._first,a=ht(e);s;)s instanceof _r?Yt(s._targets,i)&&(a?(!ur||s._initted&&s._ts)&&s.globalTime(0)<=e&&s.globalTime(s.totalDuration())>e:!e||s.isActive())&&n.push(s):(r=s.getTweensOf(i,e)).length&&n.push.apply(n,r),s=s._next;return n},r.tweenTo=function(t,e){e=e||{};var r=this,n=ye(r,t),i=e,s=i.startAt,a=i.onStart,o=i.onStartParams,h=i.immediateRender,u=_r.to(r,Zt({ease:"none",lazy:!1,immediateRender:!1,time:n,overwrite:"auto",duration:e.duration||Math.abs((n-(s&&"time"in s?s.time:r._time))/r.timeScale())||J,onStart:function(){r.pause();var t=e.duration||Math.abs((n-r._time)/r.timeScale());u._dur!==t&&ge(u,t,0,1).render(u._time,!0,!0),a&&a.apply(u,o||[])}},e));return h?u.render(0):u},r.tweenFromTo=function(t,e,r){return this.tweenTo(e,Zt({startAt:{time:ye(this,t)}},r))},r.recent=function(){return this._recent},r.nextLabel=function(t){return void 0===t&&(t=this._time),ke(this,ye(this,t))},r.previousLabel=function(t){return void 0===t&&(t=this._time),ke(this,ye(this,t),1)},r.currentLabel=function(t){return arguments.length?this.seek(t,!0):this.previousLabel(this._time+J)},r.shiftChildren=function(t,e,r){void 0===r&&(r=0);for(var n,i=this._first,s=this.labels;i;)i._start>=r&&(i._start+=t,i._end+=t),i=i._next;if(e)for(n in s)s[n]>=r&&(s[n]+=t);return ne(this)},r.invalidate=function(){var e=this._first;for(this._lock=0;e;)e.invalidate(),e=e._next;return t.prototype.invalidate.call(this)},r.clear=function(t){void 0===t&&(t=!0);for(var e,r=this._first;r;)e=r._next,this.remove(r),r=e;return this._dp&&(this._time=this._tTime=this._pTime=0),t&&(this.labels={}),ne(this)},r.totalDuration=function(t){var e,r,n,i=0,s=this,a=s._last,o=K;if(arguments.length)return s.timeScale((s._repeat<0?s.duration():s.totalDuration())/(s.reversed()?-t:t));if(s._dirty){for(n=s.parent;a;)e=a._prev,a._dirty&&a.totalDuration(),(r=a._start)>o&&s._sort&&a._ts&&!s._lock?(s._lock=1,pe(s,a,r-a._delay,1)._lock=0):o=r,r<0&&a._ts&&(i-=r,(!n&&!s._dp||n&&n.smoothChildTiming)&&(s._start+=r/s._ts,s._time-=r,s._tTime-=r),s.shiftChildren(-r,!1,-Infinity),o=0),a._end>i&&a._ts&&(i=a._end),a=e;ge(s,s===M&&s._time>i?s._time:i,1,1),s._dirty=0}return s._tDur},e.updateRoot=function(t){if(M._ts&&(Vt(M,he(t,M)),C=Ge.frame),Ge.frame>=Rt){Rt+=$.autoSleep||120;var e=M._first;if((!e||!e._ts)&&$.autoSleep&&Ge._listeners.length<2){for(;e&&!e._ts;)e=e._next;e||Ge.sleep()}}},e}(or);Zt(hr.prototype,{_lock:0,_hasPause:0,_forcing:0});var ur,lr=function(t,e,r,n,i,s,a){var o,h,u,l,c,p,f,d,m=new Lr(this._pt,t,e,0,1,Ar,null,i),g=0,_=0;for(m.b=r,m.e=n,r+="",(f=~(n+="").indexOf("random("))&&(n=De(n)),s&&(s(d=[r,n],t,e),r=d[0],n=d[1]),h=r.match(yt)||[];o=yt.exec(n);)l=o[0],c=n.substring(g,o.index),u?u=(u+1)%5:"rgba("===c.substr(-5)&&(u=1),l!==h[_++]&&(p=parseFloat(h[_-1])||0,m._pt={_next:m._pt,p:c||1===_?c:",",s:p,c:"="===l.charAt(1)?parseFloat(l.substr(2))*("-"===l.charAt(0)?-1:1):parseFloat(l)-p,m:u&&u<4?Math.round:0},g=yt.lastIndex);return m.c=g0)S||(e._startAt=0);else if(P&&!(r<0&&L))return void(r&&(e._zTime=r))}else if(O&&P)if(L)!S&&(e._startAt=0);else if(r&&(y=!1),s=Zt({overwrite:!1,data:"isFromStart",lazy:y&&ct(x),immediateRender:y,stagger:0,parent:z},n),d&&(s[l.prop]=d),re(e._startAt=_r.set(D,s)),y){if(!r)return}else t(e._startAt,J);for(e._pt=0,x=P&&ct(x)||x&&!P,i=0;i")}));else{if(u=C.length,p=v?Ee(v):St,lt(v))for(l in v)~mr.indexOf(l)&&(f||(f={}),f[l]=v[l]);for(o=0;of-J&&t>=0?f:td&&(n=d)),(h=this._yoyo&&1&s)&&(c=this._yEase,n=d-n),o=oe(this._tTime,a),n===p&&!r&&this._initted)return this;s!==o&&(l&&this._yEase&&tr(l,h),!this.vars.repeatRefresh||h||this._lock||(this._lock=r=1,this.render(qt(a*s),!0).invalidate()._lock=0))}if(!this._initted){if(de(this,t<0?t:n,r,e))return this._tTime=0,this;if(d!==this._dur)return this.render(t,e,r)}for(this._tTime=m,this._time=n,!this._act&&this._ts&&(this._act=1,this._lazy=0),this.ratio=u=(c||this._ease)(n/d),this._from&&(this.ratio=u=1-u),n&&!p&&!e&&Re(this,"onStart"),i=this._pt;i;)i.r(u,i.d),i=i._next;l&&l.render(t<0?t:!n&&h?-1e-8:l._dur*u,e,r)||this._startAt&&(this._zTime=t),this._onUpdate&&!e&&(t<0&&this._startAt&&this._startAt.render(t,!0,r),Re(this,"onUpdate")),this._repeat&&s!==o&&this.vars.onRepeat&&!e&&this.parent&&Re(this,"onRepeat"),m!==this._tDur&&m||this._tTime!==m||(t<0&&this._startAt&&!this._onUpdate&&this._startAt.render(t,!0,!0),(t||!d)&&(m===this._tDur&&this._ts>0||!m&&this._ts<0)&&re(this,1),e||t<0&&!p||!m&&!p||(Re(this,m===f?"onComplete":"onReverseComplete",!0),this._prom&&!(m0)&&this._prom()))}}else!function(t,e,r,n){var i,s,a,o=t.ratio,h=e<0||!e&&(!t._start&&me(t)||(t._ts<0||t._dp._ts<0)&&"isFromStart"!==t.data&&"isStart"!==t.data)?0:1,u=t._rDelay,l=0;if(u&&t._repeat&&(l=we(0,t._tDur,e),s=oe(l,u),a=oe(t._tTime,u),t._yoyo&&1&s&&(h=1-h),s!==a&&(o=1-h,t.vars.repeatRefresh&&t._initted&&t.invalidate())),h!==o||n||t._zTime===J||!e&&t._zTime){if(!t._initted&&de(t,e,n,r))return;for(a=t._zTime,t._zTime=e||(r?J:0),r||(r=e&&!a),t.ratio=h,t._from&&(h=1-h),t._time=0,t._tTime=l,r||Re(t,"onStart"),i=t._pt;i;)i.r(h,i.d),i=i._next;t._startAt&&e<0&&t._startAt.render(e,!0,!0),t._onUpdate&&!r&&Re(t,"onUpdate"),l&&t._repeat&&!r&&t.parent&&Re(t,"onRepeat"),(e>=t._tDur||e<0)&&t.ratio===h&&(h&&re(t,1),r||(Re(t,h?"onComplete":"onReverseComplete",!0),t._prom&&t._prom()))}else t._zTime||(t._zTime=e)}(this,t,e,r);return this},r.targets=function(){return this._targets},r.invalidate=function(){return this._pt=this._op=this._startAt=this._onUpdate=this._lazy=this.ratio=0,this._ptLookup=[],this.timeline&&this.timeline.invalidate(),t.prototype.invalidate.call(this)},r.kill=function(t,e){if(void 0===e&&(e="all"),!(t||e&&"all"!==e))return this._lazy=this._pt=0,this.parent?je(this):this;if(this.timeline){var r=this.timeline.totalDuration();return this.timeline.killTweensOf(t,e,ur&&!0!==ur.vars.overwrite)._first||je(this),this.parent&&r!==this.timeline.totalDuration()&&ge(this,this._dur*this.timeline._tDur/r,0,1),this}var n,i,s,a,o,h,u,l=this._targets,c=t?Ae(t):l,p=this._ptLookup,f=this._pt;if((!e||"all"===e)&&function(t,e){for(var r=t.length,n=r===e.length;n&&r--&&t[r]===e[r];);return r<0}(l,c))return"all"===e&&(this._pt=0),je(this);for(n=this._op=this._op||[],"all"!==e&&(at(e)&&(o={},Ut(e,(function(t){return o[t]=1})),e=o),e=function(t,e){var r,n,i,s,a=t[0]?Bt(t[0]).harness:0,o=a&&a.aliases;if(!o)return e;for(n in r=Qt({},e),o)if(n in r)for(i=(s=o[n].split(",")).length;i--;)r[s[i]]=r[n];return r}(l,e)),u=l.length;u--;)if(~c.indexOf(l[u]))for(o in i=p[u],"all"===e?(n[u]=e,a=i,s={}):(s=n[u]=n[u]||{},a=e),a)(h=i&&i[o])&&("kill"in h.d&&!0!==h.d.kill(o)||ee(this,h,"_pt"),delete i[o]),"all"!==s&&(s[o]=1);return this._initted&&!this._pt&&f&&je(this),this},e.to=function(t,r){return new e(t,r,arguments[2])},e.from=function(t,r){return new e(t,Xt(arguments,1))},e.delayedCall=function(t,r,n,i){return new e(r,0,{immediateRender:!1,lazy:!1,overwrite:!1,delay:t,onComplete:r,onReverseComplete:r,onCompleteParams:n,onReverseCompleteParams:n,callbackScope:i})},e.fromTo=function(t,r,n){return new e(t,Xt(arguments,2))},e.set=function(t,r){return r.duration=0,r.repeatDelay||(r.repeat=0),new e(t,r)},e.killTweensOf=function(t,e,r){return M.killTweensOf(t,e,r)},e}(or);Zt(_r.prototype,{_targets:[],_lazy:0,_startAt:0,_op:0,_onInit:0}),Ut("staggerTo,staggerFrom,staggerFromTo",(function(t){_r[t]=function(){var e=new hr,r=Me.call(arguments,0);return r.splice("staggerFromTo"===t?5:4,0,0),e[t].apply(e,r)}}));var vr=function(t,e,r){return t[e]=r},yr=function(t,e,r){return t[e](r)},xr=function(t,e,r,n){return t[e](n.fp,r)},wr=function(t,e,r){return t.setAttribute(e,r)},br=function(t,e){return ot(t[e])?yr:ut(t[e])&&t.setAttribute?wr:vr},Mr=function(t,e){return e.set(e.t,e.p,Math.round(1e4*(e.s+e.c*t))/1e4,e)},Tr=function(t,e){return e.set(e.t,e.p,!!(e.s+e.c*t),e)},Ar=function(t,e){var r=e._pt,n="";if(!t&&e.b)n=e.b;else if(1===t&&e.e)n=e.e;else{for(;r;)n=r.p+(r.m?r.m(r.s+r.c*t):Math.round(1e4*(r.s+r.c*t))/1e4)+n,r=r._next;n+=e.c}e.set(e.t,e.p,n,e)},Or=function(t,e){for(var r=e._pt;r;)r.r(t,r.d),r=r._next},Er=function(t,e,r,n){for(var i,s=this._pt;s;)i=s._next,s.p===n&&s.modifier(t,e,r),s=i},Cr=function(t){for(var e,r,n=this._pt;n;)r=n._next,n.p===t&&!n.op||n.op===t?ee(this,n,"_pt"):n.dep||(e=1),n=r;return!e},Sr=function(t,e,r,n){n.mSet(t,e,n.m.call(n.tween,r,n.mt),n)},Pr=function(t){for(var e,r,n,i,s=t._pt;s;){for(e=s._next,r=n;r&&r.pr>s.pr;)r=r._next;(s._prev=r?r._prev:i)?s._prev._next=s:n=s,(s._next=r)?r._prev=s:i=s,s=e}t._pt=n},Lr=function(){function t(t,e,r,n,i,s,a,o,h){this.t=e,this.s=n,this.c=i,this.p=r,this.r=s||Mr,this.d=a||this,this.set=o||vr,this.pr=h||0,this._next=t,t&&(t._prev=this)}return t.prototype.modifier=function(t,e,r){this.mSet=this.mSet||this.set,this.set=Sr,this.m=t,this.mt=r,this.tween=e},t}();Ut(Ft+"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger",(function(t){return Pt[t]=1})),Mt.TweenMax=Mt.TweenLite=_r,Mt.TimelineLite=Mt.TimelineMax=hr,M=new hr({sortChildren:!1,defaults:Q,autoRemoveChildren:!0,id:"root",smoothChildTiming:!0}),$.stringFilter=Ve;var Dr={registerPlugin:function(){for(var t=arguments.length,e=new Array(t),r=0;r1){var n=t.map((function(t){return Rr.quickSetter(t,e,r)})),i=n.length;return function(t){for(var e=i;e--;)n[e](t)}}t=t[0]||{};var s=zt[e],a=Bt(t),o=a.harness&&(a.harness.aliases||{})[e]||e,h=s?function(e){var n=new s;S._pt=0,n.init(t,r?e+r:e,S,0,[t]),n.render(1,n),S._pt&&Or(1,S)}:a.set(t,o);return s?h:function(e){return h(t,o,r?e+r:e,a,1)}},isTweening:function(t){return M.getTweensOf(t,!0).length>0},defaults:function(t){return t&&t.ease&&(t.ease=er(t.ease,Q.ease)),Kt(Q,t||{})},config:function(t){return Kt($,t||{})},registerEffect:function(t){var e=t.name,r=t.effect,n=t.plugins,i=t.defaults,s=t.extendTimeline;(n||"").split(",").forEach((function(t){return t&&!zt[t]&&!Mt[t]&&Et(e+" effect requires "+t+" plugin.")})),kt[e]=function(t,e,n){return r(Ae(t),Zt(e||{},i),n)},s&&(hr.prototype[e]=function(t,r,n){return this.add(kt[e](t,lt(r)?r:(n=r)&&{},this),n)})},registerEase:function(t,e){Ze[t]=er(e)},parseEase:function(t,e){return arguments.length?er(t,e):Ze},getById:function(t){return M.getById(t)},exportRoot:function(t,e){void 0===t&&(t={});var r,n,i=new hr(t);for(i.smoothChildTiming=ct(t.smoothChildTiming),M.remove(i),i._dp=0,i._time=i._tTime=M._time,r=M._first;r;)n=r._next,!e&&!r._dur&&r instanceof _r&&r.vars.onComplete===r._targets[0]||pe(i,r,r._start-r._delay),r=n;return pe(M,i,0),i},utils:{wrap:function t(e,r,n){var i=r-e;return mt(e)?Le(e,t(0,e.length),r):xe(n,(function(t){return(i+(t-e)%i)%i+e}))},wrapYoyo:function t(e,r,n){var i=r-e,s=2*i;return mt(e)?Le(e,t(0,e.length-1),r):xe(n,(function(t){return e+((t=(s+(t-e)%s)%s||0)>i?s-t:t)}))},distribute:Ee,random:Pe,snap:Se,normalize:function(t,e,r){return ze(t,e,0,1,r)},getUnit:be,clamp:function(t,e,r){return xe(r,(function(r){return we(t,e,r)}))},splitColor:Ue,toArray:Ae,mapRange:ze,pipe:function(){for(var t=arguments.length,e=new Array(t),r=0;r=0?mn[i]:"")+t},_n=function(){"undefined"!=typeof window&&window.document&&(jr=window,Fr=jr.document,Ir=Fr.documentElement,Nr=fn("div")||{style:{}},Ur=fn("div"),cn=gn(cn),pn=cn+"Origin",Nr.style.cssText="border-width:0;line-height:0;position:absolute;padding:0",Yr=!!gn("perspective"),Br=1)},vn=function t(e){var r,n=fn("svg",this.ownerSVGElement&&this.ownerSVGElement.getAttribute("xmlns")||"http://www.w3.org/2000/svg"),i=this.parentNode,s=this.nextSibling,a=this.style.cssText;if(Ir.appendChild(n),n.appendChild(this),this.style.display="block",e)try{r=this.getBBox(),this._gsapBBox=this.getBBox,this.getBBox=t}catch(t){}else this._gsapBBox&&(r=this._gsapBBox());return i&&(s?i.insertBefore(this,s):i.appendChild(this)),Ir.removeChild(n),this.style.cssText=a,r},yn=function(t,e){for(var r=e.length;r--;)if(t.hasAttribute(e[r]))return t.getAttribute(e[r])},xn=function(t){var e;try{e=t.getBBox()}catch(r){e=vn.call(t,!0)}return e&&(e.width||e.height)||t.getBBox===vn||(e=vn.call(t,!0)),!e||e.width||e.x||e.y?e:{x:+yn(t,["x","cx","x1"])||0,y:+yn(t,["y","cy","y1"])||0,width:0,height:0}},wn=function(t){return!(!t.getCTM||t.parentNode&&!t.ownerSVGElement||!xn(t))},bn=function(t,e){if(e){var r=t.style;e in Xr&&e!==pn&&(e=cn),r.removeProperty?("ms"!==e.substr(0,2)&&"webkit"!==e.substr(0,6)||(e="-"+e),r.removeProperty(e.replace(Hr,"-$1").toLowerCase())):r.removeAttribute(e)}},Mn=function(t,e,r,n,i,s){var a=new Lr(t._pt,e,r,0,1,s?nn:rn);return t._pt=a,a.b=n,a.e=i,t._props.push(r),a},Tn={deg:1,rad:1,turn:1},An=function t(e,r,n,i){var s,a,o,h,u=parseFloat(n)||0,l=(n+"").trim().substr((u+"").length)||"px",c=Nr.style,p=Zr.test(r),f="svg"===e.tagName.toLowerCase(),d=(f?"client":"offset")+(p?"Width":"Height"),m=100,g="px"===i,_="%"===i;return i===l||!u||Tn[i]||Tn[l]?u:("px"!==l&&!g&&(u=t(e,r,n,"px")),h=e.getCTM&&wn(e),!_&&"%"!==l||!Xr[r]&&!~r.indexOf("adius")?(c[p?"width":"height"]=m+(g?l:i),a=~r.indexOf("adius")||"em"===i&&e.appendChild&&!f?e:e.parentNode,h&&(a=(e.ownerSVGElement||{}).parentNode),a&&a!==Fr&&a.appendChild||(a=Fr.body),(o=a._gsap)&&_&&o.width&&p&&o.time===Ge.time?qt(u/o.width*m):((_||"%"===l)&&(c.position=dn(e,"position")),a===e&&(c.position="static"),a.appendChild(Nr),s=Nr[d],a.removeChild(Nr),c.position="absolute",p&&_&&((o=Bt(a)).time=Ge.time,o.width=a[d]),qt(g?s*u/m:s&&u?m/s*u:0))):(s=h?e.getBBox()[p?"width":"height"]:e[d],qt(_?u/s*m:u/100*s)))},On=function(t,e,r,n){var i;return Br||_n(),e in Qr&&"transform"!==e&&~(e=Qr[e]).indexOf(",")&&(e=e.split(",")[0]),Xr[e]&&"transform"!==e?(i=In(t,n),i="transformOrigin"!==e?i[e]:Bn(dn(t,pn))+" "+i.zOrigin+"px"):(!(i=t.style[e])||"auto"===i||n||~(i+"").indexOf("calc("))&&(i=Ln[e]&&Ln[e](t,e,r)||dn(t,e)||Nt(t,e)||("opacity"===e?1:0)),r&&!~(i+"").trim().indexOf(" ")?An(t,e,i,r)+r:i},En=function(t,e,r,n){if(!r||"none"===r){var i=gn(e,t,1),s=i&&dn(t,i,1);s&&s!==r?(e=i,r=s):"borderColor"===e&&(r=dn(t,"borderTopColor"))}var a,o,h,u,l,c,p,f,d,m,g,_,v=new Lr(this._pt,t.style,e,0,1,Ar),y=0,x=0;if(v.b=r,v.e=n,r+="","auto"==(n+="")&&(t.style[e]=n,n=dn(t,e)||n,t.style[e]=r),Ve(a=[r,n]),n=a[1],h=(r=a[0]).match(vt)||[],(n.match(vt)||[]).length){for(;o=vt.exec(n);)p=o[0],d=n.substring(y,o.index),l?l=(l+1)%5:"rgba("!==d.substr(-5)&&"hsla("!==d.substr(-5)||(l=1),p!==(c=h[x++]||"")&&(u=parseFloat(c)||0,g=c.substr((u+"").length),(_="="===p.charAt(1)?+(p.charAt(0)+"1"):0)&&(p=p.substr(2)),f=parseFloat(p),m=p.substr((f+"").length),y=vt.lastIndex-m.length,m||(m=m||$.units[e]||g,y===n.length&&(n+=m,v.e+=m)),g!==m&&(u=An(t,e,c,m)||0),v._pt={_next:v._pt,p:d||1===x?d:",",s:u,c:_?_*f:f-u,m:l&&l<4||"zIndex"===e?Math.round:0});v.c=y-1;)r=o[i],Xr[r]&&(n=1,r="transformOrigin"===r?pn:cn),bn(s,r);n&&(bn(s,cn),h&&(h.svg&&s.removeAttribute("transform"),In(s,1),h.uncache=1))}},Ln={clearProps:function(t,e,r,n,i){if("isFromStart"!==i.data){var s=t._pt=new Lr(t._pt,e,r,0,0,Pn);return s.u=n,s.pr=-10,s.tween=i,t._props.push(r),1}}},Dn=[1,0,0,1,0,0],zn={},kn=function(t){return"matrix(1, 0, 0, 1, 0, 0)"===t||"none"===t||!t},Rn=function(t){var e=dn(t,cn);return kn(e)?Dn:e.substr(7).match(_t).map(qt)},jn=function(t,e){var r,n,i,s,a=t._gsap||Bt(t),o=t.style,h=Rn(t);return a.svg&&t.getAttribute("transform")?"1,0,0,1,0,0"===(h=[(i=t.transform.baseVal.consolidate().matrix).a,i.b,i.c,i.d,i.e,i.f]).join(",")?Dn:h:(h!==Dn||t.offsetParent||t===Ir||a.svg||(i=o.display,o.display="block",(r=t.parentNode)&&t.offsetParent||(s=1,n=t.nextSibling,Ir.appendChild(t)),h=Rn(t),i?o.display=i:bn(t,"display"),s&&(n?r.insertBefore(t,n):r?r.appendChild(t):Ir.removeChild(t))),e&&h.length>6?[h[0],h[1],h[4],h[5],h[12],h[13]]:h)},Fn=function(t,e,r,n,i,s){var a,o,h,u=t._gsap,l=i||jn(t,!0),c=u.xOrigin||0,p=u.yOrigin||0,f=u.xOffset||0,d=u.yOffset||0,m=l[0],g=l[1],_=l[2],v=l[3],y=l[4],x=l[5],w=e.split(" "),b=parseFloat(w[0])||0,M=parseFloat(w[1])||0;r?l!==Dn&&(o=m*v-g*_)&&(h=b*(-g/o)+M*(m/o)-(m*x-g*y)/o,b=b*(v/o)+M*(-_/o)+(_*x-v*y)/o,M=h):(b=(a=xn(t)).x+(~w[0].indexOf("%")?b/100*a.width:b),M=a.y+(~(w[1]||w[0]).indexOf("%")?M/100*a.height:M)),n||!1!==n&&u.smooth?(y=b-c,x=M-p,u.xOffset=f+(y*m+x*_)-y,u.yOffset=d+(y*g+x*v)-x):u.xOffset=u.yOffset=0,u.xOrigin=b,u.yOrigin=M,u.smooth=!!n,u.origin=e,u.originIsAbsolute=!!r,t.style[pn]="0px 0px",s&&(Mn(s,u,"xOrigin",c,b),Mn(s,u,"yOrigin",p,M),Mn(s,u,"xOffset",f,u.xOffset),Mn(s,u,"yOffset",d,u.yOffset)),t.setAttribute("data-svg-origin",b+" "+M)},In=function(t,e){var r=t._gsap||new ar(t);if("x"in r&&!e&&!r.uncache)return r;var n,i,s,a,o,h,u,l,c,p,f,d,m,g,_,v,y,x,w,b,M,T,A,O,E,C,S,P,L,D,z,k,R=t.style,j=r.scaleX<0,F="px",I="deg",B=dn(t,pn)||"0";return n=i=s=h=u=l=c=p=f=0,a=o=1,r.svg=!(!t.getCTM||!wn(t)),g=jn(t,r.svg),r.svg&&(O=!r.uncache&&t.getAttribute("data-svg-origin"),Fn(t,O||B,!!O||r.originIsAbsolute,!1!==r.smooth,g)),d=r.xOrigin||0,m=r.yOrigin||0,g!==Dn&&(x=g[0],w=g[1],b=g[2],M=g[3],n=T=g[4],i=A=g[5],6===g.length?(a=Math.sqrt(x*x+w*w),o=Math.sqrt(M*M+b*b),h=x||w?Gr(w,x)*Wr:0,(c=b||M?Gr(b,M)*Wr+h:0)&&(o*=Math.cos(c*Vr)),r.svg&&(n-=d-(d*x+m*b),i-=m-(d*w+m*M))):(k=g[6],D=g[7],S=g[8],P=g[9],L=g[10],z=g[11],n=g[12],i=g[13],s=g[14],u=(_=Gr(k,L))*Wr,_&&(O=T*(v=Math.cos(-_))+S*(y=Math.sin(-_)),E=A*v+P*y,C=k*v+L*y,S=T*-y+S*v,P=A*-y+P*v,L=k*-y+L*v,z=D*-y+z*v,T=O,A=E,k=C),l=(_=Gr(-b,L))*Wr,_&&(v=Math.cos(-_),z=M*(y=Math.sin(-_))+z*v,x=O=x*v-S*y,w=E=w*v-P*y,b=C=b*v-L*y),h=(_=Gr(w,x))*Wr,_&&(O=x*(v=Math.cos(_))+w*(y=Math.sin(_)),E=T*v+A*y,w=w*v-x*y,A=A*v-T*y,x=O,T=E),u&&Math.abs(u)+Math.abs(h)>359.9&&(u=h=0,l=180-l),a=qt(Math.sqrt(x*x+w*w+b*b)),o=qt(Math.sqrt(A*A+k*k)),_=Gr(T,A),c=Math.abs(_)>2e-4?_*Wr:0,f=z?1/(z<0?-z:z):0),r.svg&&(O=t.getAttribute("transform"),r.forceCSS=t.setAttribute("transform","")||!kn(dn(t,cn)),O&&t.setAttribute("transform",O))),Math.abs(c)>90&&Math.abs(c)<270&&(j?(a*=-1,c+=h<=0?180:-180,h+=h<=0?180:-180):(o*=-1,c+=c<=0?180:-180)),r.x=n-((r.xPercent=n&&(r.xPercent||(Math.round(t.offsetWidth/2)===Math.round(-n)?-50:0)))?t.offsetWidth*r.xPercent/100:0)+F,r.y=i-((r.yPercent=i&&(r.yPercent||(Math.round(t.offsetHeight/2)===Math.round(-i)?-50:0)))?t.offsetHeight*r.yPercent/100:0)+F,r.z=s+F,r.scaleX=qt(a),r.scaleY=qt(o),r.rotation=qt(h)+I,r.rotationX=qt(u)+I,r.rotationY=qt(l)+I,r.skewX=c+I,r.skewY=p+I,r.transformPerspective=f+F,(r.zOrigin=parseFloat(B.split(" ")[2])||0)&&(R[pn]=Bn(B)),r.xOffset=r.yOffset=0,r.force3D=$.force3D,r.renderTransform=r.svg?Vn:Yr?Wn:Un,r.uncache=0,r},Bn=function(t){return(t=t.split(" "))[0]+" "+t[1]},Nn=function(t,e,r){var n=be(e);return qt(parseFloat(e)+parseFloat(An(t,"x",r+"px",n)))+n},Un=function(t,e){e.z="0px",e.rotationY=e.rotationX="0deg",e.force3D=0,Wn(t,e)},qn="0deg",Yn="0px",Xn=") ",Wn=function(t,e){var r=e||this,n=r.xPercent,i=r.yPercent,s=r.x,a=r.y,o=r.z,h=r.rotation,u=r.rotationY,l=r.rotationX,c=r.skewX,p=r.skewY,f=r.scaleX,d=r.scaleY,m=r.transformPerspective,g=r.force3D,_=r.target,v=r.zOrigin,y="",x="auto"===g&&t&&1!==t||!0===g;if(v&&(l!==qn||u!==qn)){var w,b=parseFloat(u)*Vr,M=Math.sin(b),T=Math.cos(b);b=parseFloat(l)*Vr,w=Math.cos(b),s=Nn(_,s,M*w*-v),a=Nn(_,a,-Math.sin(b)*-v),o=Nn(_,o,T*w*-v+v)}m!==Yn&&(y+="perspective("+m+Xn),(n||i)&&(y+="translate("+n+"%, "+i+"%) "),(x||s!==Yn||a!==Yn||o!==Yn)&&(y+=o!==Yn||x?"translate3d("+s+", "+a+", "+o+") ":"translate("+s+", "+a+Xn),h!==qn&&(y+="rotate("+h+Xn),u!==qn&&(y+="rotateY("+u+Xn),l!==qn&&(y+="rotateX("+l+Xn),c===qn&&p===qn||(y+="skew("+c+", "+p+Xn),1===f&&1===d||(y+="scale("+f+", "+d+Xn),_.style[cn]=y||"translate(0, 0)"},Vn=function(t,e){var r,n,i,s,a,o=e||this,h=o.xPercent,u=o.yPercent,l=o.x,c=o.y,p=o.rotation,f=o.skewX,d=o.skewY,m=o.scaleX,g=o.scaleY,_=o.target,v=o.xOrigin,y=o.yOrigin,x=o.xOffset,w=o.yOffset,b=o.forceCSS,M=parseFloat(l),T=parseFloat(c);p=parseFloat(p),f=parseFloat(f),(d=parseFloat(d))&&(f+=d=parseFloat(d),p+=d),p||f?(p*=Vr,f*=Vr,r=Math.cos(p)*m,n=Math.sin(p)*m,i=Math.sin(p-f)*-g,s=Math.cos(p-f)*g,f&&(d*=Vr,a=Math.tan(f-d),i*=a=Math.sqrt(1+a*a),s*=a,d&&(a=Math.tan(d),r*=a=Math.sqrt(1+a*a),n*=a)),r=qt(r),n=qt(n),i=qt(i),s=qt(s)):(r=m,s=g,n=i=0),(M&&!~(l+"").indexOf("px")||T&&!~(c+"").indexOf("px"))&&(M=An(_,"x",l,"px"),T=An(_,"y",c,"px")),(v||y||x||w)&&(M=qt(M+v-(v*r+y*i)+x),T=qt(T+y-(v*n+y*s)+w)),(h||u)&&(a=_.getBBox(),M=qt(M+h/100*a.width),T=qt(T+u/100*a.height)),a="matrix("+r+","+n+","+i+","+s+","+M+","+T+")",_.setAttribute("transform",a),b&&(_.style[cn]=a)},Gn=function(t,e,r,n,i,s){var a,o,h=360,u=at(i),l=parseFloat(i)*(u&&~i.indexOf("rad")?Wr:1),c=s?l*s:l-n,p=n+c+"deg";return u&&("short"===(a=i.split("_")[1])&&(c%=h)!=c%180&&(c+=c<0?h:-360),"cw"===a&&c<0?c=(c+36e9)%h-~~(c/h)*h:"ccw"===a&&c>0&&(c=(c-36e9)%h-~~(c/h)*h)),t._pt=o=new Lr(t._pt,e,r,n,c,Jr),o.e=p,o.u="deg",t._props.push(r),o},Hn=function(t,e,r){var n,i,s,a,o,h,u,l=Ur.style,c=r._gsap;for(i in l.cssText=getComputedStyle(r).cssText+";position:absolute;display:block;",l[cn]=e,Fr.body.appendChild(Ur),n=In(Ur,1),Xr)(s=c[i])!==(a=n[i])&&"perspective,force3D,transformOrigin,svgOrigin".indexOf(i)<0&&(o=be(s)!==(u=be(a))?An(r,i,s,u):parseFloat(s),h=parseFloat(a),t._pt=new Lr(t._pt,c,i,o,h-o,Kr),t._pt.u=u||0,t._props.push(i));Fr.body.removeChild(Ur)};Ut("padding,margin,Width,Radius",(function(t,e){var r="Top",n="Right",i="Bottom",s="Left",a=(e<3?[r,n,i,s]:[r+s,r+n,i+n,i+s]).map((function(r){return e<2?t+r:"border"+r+t}));Ln[e>1?"border"+t:t]=function(t,e,r,n,i){var s,o;if(arguments.length<4)return s=a.map((function(e){return On(t,e,r)})),5===(o=s.join(" ")).split(s[0]).length?s[0]:o;s=(n+"").split(" "),o={},a.forEach((function(t,e){return o[t]=s[e]=s[e]||s[(e-1)/2|0]})),t.init(e,o,i)}}));var Zn,$n,Qn={name:"css",register:_n,targetTest:function(t){return t.style&&t.nodeType},init:function(t,e,r,n,i){var s,a,o,h,u,l,c,p,f,d,m,g,_,v,y,x=this._props,w=t.style,b=r.vars.startAt;for(c in Br||_n(),e)if("autoRound"!==c&&(a=e[c],!zt[c]||!pr(c,e,r,n,t,i)))if(u=typeof a,l=Ln[c],"function"===u&&(u=typeof(a=a.call(r,n,t,i))),"string"===u&&~a.indexOf("random(")&&(a=De(a)),l)l(this,t,c,a,r)&&(y=1);else if("--"===c.substr(0,2))s=(getComputedStyle(t).getPropertyValue(c)+"").trim(),a+="",p=be(s),(f=be(a))?p!==f&&(s=An(t,c,s,f)+f):p&&(a+=p),this.add(w,"setProperty",s,a,n,i,0,0,c);else if("undefined"!==u){if(b&&c in b?(s="function"==typeof b[c]?b[c].call(r,n,t,i):b[c],c in $.units&&!be(s)&&(s+=$.units[c]),"="===(s+"").charAt(1)&&(s=On(t,c))):s=On(t,c),h=parseFloat(s),(d="string"===u&&"="===a.charAt(1)?+(a.charAt(0)+"1"):0)&&(a=a.substr(2)),o=parseFloat(a),c in Qr&&("autoAlpha"===c&&(1===h&&"hidden"===On(t,"visibility")&&o&&(h=0),Mn(this,w,"visibility",h?"inherit":"hidden",o?"inherit":"hidden",!o)),"scale"!==c&&"transform"!==c&&~(c=Qr[c]).indexOf(",")&&(c=c.split(",")[0])),m=c in Xr)if(g||((_=t._gsap).renderTransform&&!e.parseTransform||In(t,e.parseTransform),v=!1!==e.smoothOrigin&&_.smooth,(g=this._pt=new Lr(this._pt,w,cn,0,1,_.renderTransform,_,0,-1)).dep=1),"scale"===c)this._pt=new Lr(this._pt,_,"scaleY",_.scaleY,d?d*o:o-_.scaleY),x.push("scaleY",c),c+="X";else{if("transformOrigin"===c){a=Sn(a),_.svg?Fn(t,a,0,v,0,this):((f=parseFloat(a.split(" ")[2])||0)!==_.zOrigin&&Mn(this,_,"zOrigin",_.zOrigin,f),Mn(this,w,c,Bn(s),Bn(a)));continue}if("svgOrigin"===c){Fn(t,a,1,v,0,this);continue}if(c in zn){Gn(this,_,c,h,a,d);continue}if("smoothOrigin"===c){Mn(this,_,"smooth",_.smooth,a);continue}if("force3D"===c){_[c]=a;continue}if("transform"===c){Hn(this,a,t);continue}}else c in w||(c=gn(c)||c);if(m||(o||0===o)&&(h||0===h)&&!$r.test(a)&&c in w)o||(o=0),(p=(s+"").substr((h+"").length))!==(f=be(a)||(c in $.units?$.units[c]:p))&&(h=An(t,c,s,f)),this._pt=new Lr(this._pt,m?_:w,c,h,d?d*o:o-h,m||"px"!==f&&"zIndex"!==c||!1===e.autoRound?Kr:en),this._pt.u=f||0,p!==f&&(this._pt.b=s,this._pt.r=tn);else if(c in w)En.call(this,t,c,s,a);else{if(!(c in t)){Ot(c,a);continue}this.add(t,c,t[c],a,n,i)}x.push(c)}y&&Pr(this)},get:On,aliases:Qr,getSetter:function(t,e,r){var n=Qr[e];return n&&n.indexOf(",")<0&&(e=n),e in Xr&&e!==pn&&(t._gsap.x||On(t,"x"))?r&&qr===r?"scale"===e?hn:on:(qr=r||{})&&("scale"===e?un:ln):t.style&&!ut(t.style[e])?sn:~e.indexOf("-")?an:br(t,e)},core:{_removeProperty:bn,_getMatrix:jn}};Rr.utils.checkPrefix=gn,$n=Ut("x,y,z,scale,scaleX,scaleY,xPercent,yPercent"+","+(Zn="rotation,rotationX,rotationY,skewX,skewY")+",transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective",(function(t){Xr[t]=1})),Ut(Zn,(function(t){$.units[t]="deg",zn[t]=1})),Qr[$n[13]]="x,y,z,scale,scaleX,scaleY,xPercent,yPercent,"+Zn,Ut("0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY",(function(t){var e=t.split(":");Qr[e[1]]=$n[e[0]]})),Ut("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective",(function(t){$.units[t]="px"})),Rr.registerPlugin(Qn);var Kn=Rr.registerPlugin(Qn)||Rr;Kn.core.Tween;const Jn=class extends(c()){constructor({classes:t,element:r,elements:n,isScrollable:i=!0}){super(),e()(this),this.classes={...t},this.selectors={element:r,elements:{animationsParagraphs:'[data-animation="paragraph"]',...n}},this.scroll={ease:.07,position:0,current:0,target:0,limit:0},this.isScrollable=i,this.transformPrefix=m()("transform")}create(){this.animations=[],this.element=document.querySelector(this.selectors.element),this.elements={},h()(this.selectors.elements,((t,e)=>{t instanceof window.HTMLElement||t instanceof window.NodeList||Array.isArray(t)?this.elements[e]=t:(this.elements[e]=this.element.querySelectorAll(t),0===this.elements[e].length?this.elements[e]=null:1===this.elements[e].length&&(this.elements[e]=this.element.querySelector(t)))})),this.isScrollable&&(this.scroll={ease:.07,position:0,current:0,target:0,limit:this.elements.wrapper.clientHeight-window.innerHeight}),this.createAnimations()}createAnimations(){var t,e;this.paragraphs=(e=t=>new class extends class{constructor({element:t,elements:e}){const{animationDelay:r,animationTarget:n}=t.dataset;this.delay=r,this.element=t,this.elements=e,this.target=n?t.closest(n):t,this.transformPrefix=m()("transform"),this.isVisible=!1,"IntersectionObserver"in window?(this.createObserver(),this.animateOut()):this.animateIn()}createObserver(){this.observer=new window.IntersectionObserver((t=>{t.forEach((t=>{!this.isVisible&&t.isIntersecting&&this.animateIn()}))})).observe(this.target)}animateIn(){this.isVisible=!0}animateOut(){this.isVisible=!1}}{constructor({element:t}){const e=[],r=t.querySelectorAll("h1, h2, p");0!==r.length?h()(r,(t=>{g({element:t}),g({element:t}),e.push(...t.querySelectorAll("span span"))})):(g({element:t}),g({element:t}),e.push(...t.querySelectorAll("span span"))),super({element:t,elements:{lines:e}}),this.onResize(),"IntersectionObserver"in window&&this.animateOut()}animateIn(){super.animateIn(),h()(this.lines,((t,e)=>{h()(t,(t=>{t.style.transition=`transform 1.5s ${.5+.1*e}s ease`,t.style[this.transformPrefix]="translateY(0)"}))}))}animateOut(){super.animateOut(),h()(this.lines,(t=>{h()(t,(t=>{t.style[this.transformPrefix]="translateY(100%)"}))}))}onResize(){this.lines=function(t){const e=[];let r=[],n=t[0].offsetTop;return h()(t,((i,s)=>{i.offsetTop===n&&r.push(i),i.offsetTop!==n&&(e.push(r),r=[],r.push(i),n=i.offsetTop),s+1===t.length&&e.push(r)})),e}(this.elements.lines)}}({element:t}),(t=this.elements.animationsParagraphs)instanceof window.HTMLElement?[e(t)]:y()(t,e)),this.animations.push(...this.paragraphs)}reset(){this.scroll={ease:.07,position:0,current:0,target:0,limit:0}}set(t){this.scroll.current=this.scroll.target=this.scroll.last=t,this.transform(this.elements.wrapper,this.scroll.current)}show(t){return this.isVisible=!0,Promise.resolve()}hide(t){return this.isVisible=!1,Promise.resolve()}transform(t,e){t.style[this.transformPrefix]=`translate3d(0, ${-Math.round(e)}px, 0)`}onResize(){this.elements.wrapper&&window.requestAnimationFrame((t=>{this.scroll.limit=this.elements.wrapper.clientHeight-window.innerHeight,h()(this.animations,(t=>{t.onResize&&t.onResize()}))}))}onTouchDown(t){u.isMobile()&&(this.isDown=!0,this.scroll.position=this.scroll.current,this.start=t.touches?t.touches[0].clientY:t.clientY)}onTouchMove(t){if(!u.isMobile()||!this.isDown)return;const e=t.touches?t.touches[0].clientY:t.clientY,r=3*(this.start-e);this.scroll.target=this.scroll.position+r}onTouchUp(t){u.isMobile()&&(this.isDown=!1)}onWheel(t){const e=f()(t).pixelY;return this.scroll.target+=e,e}update(){var t,e,r,n,i;this.scroll.target=(0,t=this.scroll.limit,e=this.scroll.target,Kn.utils.clamp(0,t,e)),this.scroll.current=(r=this.scroll.current,n=this.scroll.target,i=this.scroll.ease,Kn.utils.interpolate(r,n,i)),this.scroll.current=Math.floor(this.scroll.current),this.scroll.current<.1&&(this.scroll.current=0),this.elements.wrapper&&this.transform(this.elements.wrapper,this.scroll.current),this.scroll.last=this.scroll.current}},ti=class extends Jn{constructor(){super({classes:{active:"about--active"},element:".about",elements:{wrapper:".about__content"}})}async show(t){return this.element.classList.add(this.classes.active),super.show(t)}async hide(t){return this.element.classList.remove(this.classes.active),super.hide(t)}},ei=class extends Jn{constructor(){super({classes:{active:"home--active"},element:".home",elements:{wrapper:".home__content"}})}async show(t){return this.element.classList.add(this.classes.active),super.show(t)}async hide(t){return this.element.classList.remove(this.classes.active),super.hide(t)}};function ri(t){let e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)}function ni(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function ii(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function si(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function ai(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function oi(t){let e=t[0],r=t[1],n=t[2];return e*e+r*r+n*n}function hi(t,e){let r=e[0],n=e[1],i=e[2],s=r*r+n*n+i*i;return s>0&&(s=1/Math.sqrt(s)),t[0]=e[0]*s,t[1]=e[1]*s,t[2]=e[2]*s,t}function ui(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function li(t,e,r){let n=e[0],i=e[1],s=e[2],a=r[0],o=r[1],h=r[2];return t[0]=i*h-s*o,t[1]=s*a-n*h,t[2]=n*o-i*a,t}const ci=function(){const t=[0,0,0],e=[0,0,0];return function(r,n){ni(t,r),ni(e,n),hi(t,t),hi(e,e);let i=ui(t,e);return i>1?0:i<-1?Math.PI:Math.acos(i)}}();class pi extends Array{constructor(t=0,e=t,r=t){return super(t,e,r),this}get x(){return this[0]}get y(){return this[1]}get z(){return this[2]}set x(t){this[0]=t}set y(t){this[1]=t}set z(t){this[2]=t}set(t,e=t,r=t){return t.length?this.copy(t):(function(t,e,r,n){t[0]=e,t[1]=r,t[2]=n}(this,t,e,r),this)}copy(t){return ni(this,t),this}add(t,e){return e?ii(this,t,e):ii(this,this,t),this}sub(t,e){return e?si(this,t,e):si(this,this,t),this}multiply(t){var e,r,n;return t.length?(r=this,n=t,(e=this)[0]=r[0]*n[0],e[1]=r[1]*n[1],e[2]=r[2]*n[2]):ai(this,this,t),this}divide(t){var e,r,n;return t.length?(r=this,n=t,(e=this)[0]=r[0]/n[0],e[1]=r[1]/n[1],e[2]=r[2]/n[2]):ai(this,this,1/t),this}inverse(t=this){var e,r;return r=t,(e=this)[0]=1/r[0],e[1]=1/r[1],e[2]=1/r[2],this}len(){return ri(this)}distance(t){return t?function(t,e){let r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(r*r+n*n+i*i)}(this,t):ri(this)}squaredLen(){return oi(this)}squaredDistance(t){return t?function(t,e){let r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return r*r+n*n+i*i}(this,t):oi(this)}negate(t=this){var e,r;return r=t,(e=this)[0]=-r[0],e[1]=-r[1],e[2]=-r[2],this}cross(t,e){return e?li(this,t,e):li(this,this,t),this}scale(t){return ai(this,this,t),this}normalize(){return hi(this,this),this}dot(t){return ui(this,t)}equals(t){return e=t,this[0]===e[0]&&this[1]===e[1]&&this[2]===e[2];var e}applyMatrix4(t){return function(t,e,r){let n=e[0],i=e[1],s=e[2],a=r[3]*n+r[7]*i+r[11]*s+r[15];a=a||1,t[0]=(r[0]*n+r[4]*i+r[8]*s+r[12])/a,t[1]=(r[1]*n+r[5]*i+r[9]*s+r[13])/a,t[2]=(r[2]*n+r[6]*i+r[10]*s+r[14])/a}(this,this,t),this}scaleRotateMatrix4(t){return function(t,e,r){let n=e[0],i=e[1],s=e[2],a=r[3]*n+r[7]*i+r[11]*s+r[15];a=a||1,t[0]=(r[0]*n+r[4]*i+r[8]*s)/a,t[1]=(r[1]*n+r[5]*i+r[9]*s)/a,t[2]=(r[2]*n+r[6]*i+r[10]*s)/a}(this,this,t),this}applyQuaternion(t){return function(t,e,r){let n=e[0],i=e[1],s=e[2],a=r[0],o=r[1],h=r[2],u=o*s-h*i,l=h*n-a*s,c=a*i-o*n,p=o*c-h*l,f=h*u-a*c,d=a*l-o*u,m=2*r[3];u*=m,l*=m,c*=m,p*=2,f*=2,d*=2,t[0]=n+u+p,t[1]=i+l+f,t[2]=s+c+d}(this,this,t),this}angle(t){return ci(this,t)}lerp(t,e){return function(t,e,r,n){let i=e[0],s=e[1],a=e[2];t[0]=i+n*(r[0]-i),t[1]=s+n*(r[1]-s),t[2]=a+n*(r[2]-a)}(this,this,t,e),this}clone(){return new pi(this[0],this[1],this[2])}fromArray(t,e=0){return this[0]=t[e],this[1]=t[e+1],this[2]=t[e+2],this}toArray(t=[],e=0){return t[e]=this[0],t[e+1]=this[1],t[e+2]=this[2],t}transformDirection(t){const e=this[0],r=this[1],n=this[2];return this[0]=t[0]*e+t[4]*r+t[8]*n,this[1]=t[1]*e+t[5]*r+t[9]*n,this[2]=t[2]*e+t[6]*r+t[10]*n,this.normalize()}}const fi=new pi;let di=1;class mi{constructor({canvas:t=document.createElement("canvas"),width:e=300,height:r=150,dpr:n=1,alpha:i=!1,depth:s=!0,stencil:a=!1,antialias:o=!1,premultipliedAlpha:h=!1,preserveDrawingBuffer:u=!1,powerPreference:l="default",autoClear:c=!0,webgl:p=2}={}){const f={alpha:i,depth:s,stencil:a,antialias:o,premultipliedAlpha:h,preserveDrawingBuffer:u,powerPreference:l};this.dpr=n,this.alpha=i,this.color=!0,this.depth=s,this.stencil=a,this.premultipliedAlpha=h,this.autoClear=c,this.id=di++,2===p&&(this.gl=t.getContext("webgl2",f)),this.isWebgl2=!!this.gl,this.gl||(this.gl=t.getContext("webgl",f)||t.getContext("experimental-webgl",f)),this.gl.renderer=this,this.setSize(e,r),this.state={},this.state.blendFunc={src:this.gl.ONE,dst:this.gl.ZERO},this.state.blendEquation={modeRGB:this.gl.FUNC_ADD},this.state.cullFace=null,this.state.frontFace=this.gl.CCW,this.state.depthMask=!0,this.state.depthFunc=this.gl.LESS,this.state.premultiplyAlpha=!1,this.state.flipY=!1,this.state.unpackAlignment=4,this.state.framebuffer=null,this.state.viewport={width:null,height:null},this.state.textureUnits=[],this.state.activeTextureUnit=0,this.state.boundBuffer=null,this.state.uniformLocations=new Map,this.extensions={},this.isWebgl2?(this.getExtension("EXT_color_buffer_float"),this.getExtension("OES_texture_float_linear")):(this.getExtension("OES_texture_float"),this.getExtension("OES_texture_float_linear"),this.getExtension("OES_texture_half_float"),this.getExtension("OES_texture_half_float_linear"),this.getExtension("OES_element_index_uint"),this.getExtension("OES_standard_derivatives"),this.getExtension("EXT_sRGB"),this.getExtension("WEBGL_depth_texture"),this.getExtension("WEBGL_draw_buffers")),this.vertexAttribDivisor=this.getExtension("ANGLE_instanced_arrays","vertexAttribDivisor","vertexAttribDivisorANGLE"),this.drawArraysInstanced=this.getExtension("ANGLE_instanced_arrays","drawArraysInstanced","drawArraysInstancedANGLE"),this.drawElementsInstanced=this.getExtension("ANGLE_instanced_arrays","drawElementsInstanced","drawElementsInstancedANGLE"),this.createVertexArray=this.getExtension("OES_vertex_array_object","createVertexArray","createVertexArrayOES"),this.bindVertexArray=this.getExtension("OES_vertex_array_object","bindVertexArray","bindVertexArrayOES"),this.deleteVertexArray=this.getExtension("OES_vertex_array_object","deleteVertexArray","deleteVertexArrayOES"),this.drawBuffers=this.getExtension("WEBGL_draw_buffers","drawBuffers","drawBuffersWEBGL"),this.parameters={},this.parameters.maxTextureUnits=this.gl.getParameter(this.gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS),this.parameters.maxAnisotropy=this.getExtension("EXT_texture_filter_anisotropic")?this.gl.getParameter(this.getExtension("EXT_texture_filter_anisotropic").MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}setSize(t,e){this.width=t,this.height=e,this.gl.canvas.width=t*this.dpr,this.gl.canvas.height=e*this.dpr,Object.assign(this.gl.canvas.style,{width:t+"px",height:e+"px"})}setViewport(t,e){this.state.viewport.width===t&&this.state.viewport.height===e||(this.state.viewport.width=t,this.state.viewport.height=e,this.gl.viewport(0,0,t,e))}enable(t){!0!==this.state[t]&&(this.gl.enable(t),this.state[t]=!0)}disable(t){!1!==this.state[t]&&(this.gl.disable(t),this.state[t]=!1)}setBlendFunc(t,e,r,n){this.state.blendFunc.src===t&&this.state.blendFunc.dst===e&&this.state.blendFunc.srcAlpha===r&&this.state.blendFunc.dstAlpha===n||(this.state.blendFunc.src=t,this.state.blendFunc.dst=e,this.state.blendFunc.srcAlpha=r,this.state.blendFunc.dstAlpha=n,void 0!==r?this.gl.blendFuncSeparate(t,e,r,n):this.gl.blendFunc(t,e))}setBlendEquation(t,e){t=t||this.gl.FUNC_ADD,this.state.blendEquation.modeRGB===t&&this.state.blendEquation.modeAlpha===e||(this.state.blendEquation.modeRGB=t,this.state.blendEquation.modeAlpha=e,void 0!==e?this.gl.blendEquationSeparate(t,e):this.gl.blendEquation(t))}setCullFace(t){this.state.cullFace!==t&&(this.state.cullFace=t,this.gl.cullFace(t))}setFrontFace(t){this.state.frontFace!==t&&(this.state.frontFace=t,this.gl.frontFace(t))}setDepthMask(t){this.state.depthMask!==t&&(this.state.depthMask=t,this.gl.depthMask(t))}setDepthFunc(t){this.state.depthFunc!==t&&(this.state.depthFunc=t,this.gl.depthFunc(t))}activeTexture(t){this.state.activeTextureUnit!==t&&(this.state.activeTextureUnit=t,this.gl.activeTexture(this.gl.TEXTURE0+t))}bindFramebuffer({target:t=this.gl.FRAMEBUFFER,buffer:e=null}={}){this.state.framebuffer!==e&&(this.state.framebuffer=e,this.gl.bindFramebuffer(t,e))}getExtension(t,e,r){return e&&this.gl[e]?this.gl[e].bind(this.gl):(this.extensions[t]||(this.extensions[t]=this.gl.getExtension(t)),e?this.extensions[t]?this.extensions[t][r].bind(this.extensions[t]):null:this.extensions[t])}sortOpaque(t,e){return t.renderOrder!==e.renderOrder?t.renderOrder-e.renderOrder:t.program.id!==e.program.id?t.program.id-e.program.id:t.zDepth!==e.zDepth?t.zDepth-e.zDepth:e.id-t.id}sortTransparent(t,e){return t.renderOrder!==e.renderOrder?t.renderOrder-e.renderOrder:t.zDepth!==e.zDepth?e.zDepth-t.zDepth:e.id-t.id}sortUI(t,e){return t.renderOrder!==e.renderOrder?t.renderOrder-e.renderOrder:t.program.id!==e.program.id?t.program.id-e.program.id:e.id-t.id}getRenderList({scene:t,camera:e,frustumCull:r,sort:n}){let i=[];if(e&&r&&e.updateFrustum(),t.traverse((t=>{if(!t.visible)return!0;t.draw&&(r&&t.frustumCulled&&e&&!e.frustumIntersectsMesh(t)||i.push(t))})),n){const t=[],r=[],n=[];i.forEach((i=>{i.program.transparent?i.program.depthTest?r.push(i):n.push(i):t.push(i),i.zDepth=0,0===i.renderOrder&&i.program.depthTest&&e&&(i.worldMatrix.getTranslation(fi),fi.applyMatrix4(e.projectionViewMatrix),i.zDepth=fi.z)})),t.sort(this.sortOpaque),r.sort(this.sortTransparent),n.sort(this.sortUI),i=t.concat(r,n)}return i}render({scene:t,camera:e,target:r=null,update:n=!0,sort:i=!0,frustumCull:s=!0,clear:a}){null===r?(this.bindFramebuffer(),this.setViewport(this.width*this.dpr,this.height*this.dpr)):(this.bindFramebuffer(r),this.setViewport(r.width,r.height)),(a||this.autoClear&&!1!==a)&&(!this.depth||r&&!r.depth||(this.enable(this.gl.DEPTH_TEST),this.setDepthMask(!0)),this.gl.clear((this.color?this.gl.COLOR_BUFFER_BIT:0)|(this.depth?this.gl.DEPTH_BUFFER_BIT:0)|(this.stencil?this.gl.STENCIL_BUFFER_BIT:0))),n&&t.updateMatrixWorld(),e&&e.updateMatrixWorld(),this.getRenderList({scene:t,camera:e,frustumCull:s,sort:i}).forEach((t=>{t.draw({camera:e})}))}}function gi(t,e,r){let n=e[0],i=e[1],s=e[2],a=e[3],o=r[0],h=r[1],u=r[2],l=r[3];return t[0]=n*l+a*o+i*u-s*h,t[1]=i*l+a*h+s*o-n*u,t[2]=s*l+a*u+n*h-i*o,t[3]=a*l-n*o-i*h-s*u,t}class _i extends Array{constructor(t=0,e=0,r=0,n=1){return super(t,e,r,n),this.onChange=()=>{},this}get x(){return this[0]}get y(){return this[1]}get z(){return this[2]}get w(){return this[3]}set x(t){this[0]=t,this.onChange()}set y(t){this[1]=t,this.onChange()}set z(t){this[2]=t,this.onChange()}set w(t){this[3]=t,this.onChange()}identity(){var t;return(t=this)[0]=0,t[1]=0,t[2]=0,t[3]=1,this.onChange(),this}set(t,e,r,n){return t.length?this.copy(t):(function(t,e,r,n,i){t[0]=e,t[1]=r,t[2]=n,t[3]=i}(this,t,e,r,n),this.onChange(),this)}rotateX(t){return function(t,e,r){r*=.5;let n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),h=Math.cos(r);t[0]=n*h+a*o,t[1]=i*h+s*o,t[2]=s*h-i*o,t[3]=a*h-n*o}(this,this,t),this.onChange(),this}rotateY(t){return function(t,e,r){r*=.5;let n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),h=Math.cos(r);t[0]=n*h-s*o,t[1]=i*h+a*o,t[2]=s*h+n*o,t[3]=a*h-i*o}(this,this,t),this.onChange(),this}rotateZ(t){return function(t,e,r){r*=.5;let n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),h=Math.cos(r);t[0]=n*h+i*o,t[1]=i*h-n*o,t[2]=s*h+a*o,t[3]=a*h-s*o}(this,this,t),this.onChange(),this}inverse(t=this){return function(t,e){let r=e[0],n=e[1],i=e[2],s=e[3],a=r*r+n*n+i*i+s*s,o=a?1/a:0;t[0]=-r*o,t[1]=-n*o,t[2]=-i*o,t[3]=s*o}(this,t),this.onChange(),this}conjugate(t=this){var e,r;return r=t,(e=this)[0]=-r[0],e[1]=-r[1],e[2]=-r[2],e[3]=r[3],this.onChange(),this}copy(t){return r=t,(e=this)[0]=r[0],e[1]=r[1],e[2]=r[2],e[3]=r[3],this.onChange(),this;var e,r}normalize(t=this){return function(t,e){let r=e[0],n=e[1],i=e[2],s=e[3],a=r*r+n*n+i*i+s*s;a>0&&(a=1/Math.sqrt(a)),t[0]=r*a,t[1]=n*a,t[2]=i*a,t[3]=s*a}(this,t),this.onChange(),this}multiply(t,e){return e?gi(this,t,e):gi(this,this,t),this.onChange(),this}dot(t){return r=t,(e=this)[0]*r[0]+e[1]*r[1]+e[2]*r[2]+e[3]*r[3];var e,r}fromMatrix3(t){return function(t,e){let r,n=e[0]+e[4]+e[8];if(n>0)r=Math.sqrt(n+1),t[3]=.5*r,r=.5/r,t[0]=(e[5]-e[7])*r,t[1]=(e[6]-e[2])*r,t[2]=(e[1]-e[3])*r;else{let n=0;e[4]>e[0]&&(n=1),e[8]>e[3*n+n]&&(n=2);let i=(n+1)%3,s=(n+2)%3;r=Math.sqrt(e[3*n+n]-e[3*i+i]-e[3*s+s]+1),t[n]=.5*r,r=.5/r,t[3]=(e[3*i+s]-e[3*s+i])*r,t[i]=(e[3*i+n]+e[3*n+i])*r,t[s]=(e[3*s+n]+e[3*n+s])*r}}(this,t),this.onChange(),this}fromEuler(t){return function(t,e,r="YXZ"){let n=Math.sin(.5*e[0]),i=Math.cos(.5*e[0]),s=Math.sin(.5*e[1]),a=Math.cos(.5*e[1]),o=Math.sin(.5*e[2]),h=Math.cos(.5*e[2]);"XYZ"===r?(t[0]=n*a*h+i*s*o,t[1]=i*s*h-n*a*o,t[2]=i*a*o+n*s*h,t[3]=i*a*h-n*s*o):"YXZ"===r?(t[0]=n*a*h+i*s*o,t[1]=i*s*h-n*a*o,t[2]=i*a*o-n*s*h,t[3]=i*a*h+n*s*o):"ZXY"===r?(t[0]=n*a*h-i*s*o,t[1]=i*s*h+n*a*o,t[2]=i*a*o+n*s*h,t[3]=i*a*h-n*s*o):"ZYX"===r?(t[0]=n*a*h-i*s*o,t[1]=i*s*h+n*a*o,t[2]=i*a*o-n*s*h,t[3]=i*a*h+n*s*o):"YZX"===r?(t[0]=n*a*h+i*s*o,t[1]=i*s*h+n*a*o,t[2]=i*a*o-n*s*h,t[3]=i*a*h-n*s*o):"XZY"===r&&(t[0]=n*a*h-i*s*o,t[1]=i*s*h-n*a*o,t[2]=i*a*o+n*s*h,t[3]=i*a*h+n*s*o)}(this,t,t.order),this}fromAxisAngle(t,e){return function(t,e,r){r*=.5;let n=Math.sin(r);t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=Math.cos(r)}(this,t,e),this}slerp(t,e){return function(t,e,r,n){let i,s,a,o,h,u=e[0],l=e[1],c=e[2],p=e[3],f=r[0],d=r[1],m=r[2],g=r[3];s=u*f+l*d+c*m+p*g,s<0&&(s=-s,f=-f,d=-d,m=-m,g=-g),1-s>1e-6?(i=Math.acos(s),a=Math.sin(i),o=Math.sin((1-n)*i)/a,h=Math.sin(n*i)/a):(o=1-n,h=n),t[0]=o*u+h*f,t[1]=o*l+h*d,t[2]=o*c+h*m,t[3]=o*p+h*g}(this,this,t,e),this}fromArray(t,e=0){return this[0]=t[e],this[1]=t[e+1],this[2]=t[e+2],this[3]=t[e+3],this}toArray(t=[],e=0){return t[e]=this[0],t[e+1]=this[1],t[e+2]=this[2],t[e+3]=this[3],t}}function vi(t,e,r){let n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],h=e[5],u=e[6],l=e[7],c=e[8],p=e[9],f=e[10],d=e[11],m=e[12],g=e[13],_=e[14],v=e[15],y=r[0],x=r[1],w=r[2],b=r[3];return t[0]=y*n+x*o+w*c+b*m,t[1]=y*i+x*h+w*p+b*g,t[2]=y*s+x*u+w*f+b*_,t[3]=y*a+x*l+w*d+b*v,y=r[4],x=r[5],w=r[6],b=r[7],t[4]=y*n+x*o+w*c+b*m,t[5]=y*i+x*h+w*p+b*g,t[6]=y*s+x*u+w*f+b*_,t[7]=y*a+x*l+w*d+b*v,y=r[8],x=r[9],w=r[10],b=r[11],t[8]=y*n+x*o+w*c+b*m,t[9]=y*i+x*h+w*p+b*g,t[10]=y*s+x*u+w*f+b*_,t[11]=y*a+x*l+w*d+b*v,y=r[12],x=r[13],w=r[14],b=r[15],t[12]=y*n+x*o+w*c+b*m,t[13]=y*i+x*h+w*p+b*g,t[14]=y*s+x*u+w*f+b*_,t[15]=y*a+x*l+w*d+b*v,t}function yi(t,e){let r=e[0],n=e[1],i=e[2],s=e[4],a=e[5],o=e[6],h=e[8],u=e[9],l=e[10];return t[0]=Math.hypot(r,n,i),t[1]=Math.hypot(s,a,o),t[2]=Math.hypot(h,u,l),t}const xi=function(){const t=[0,0,0];return function(e,r){let n=t;yi(n,r);let i=1/n[0],s=1/n[1],a=1/n[2],o=r[0]*i,h=r[1]*s,u=r[2]*a,l=r[4]*i,c=r[5]*s,p=r[6]*a,f=r[8]*i,d=r[9]*s,m=r[10]*a,g=o+c+m,_=0;return g>0?(_=2*Math.sqrt(g+1),e[3]=.25*_,e[0]=(p-d)/_,e[1]=(f-u)/_,e[2]=(h-l)/_):o>c&&o>m?(_=2*Math.sqrt(1+o-c-m),e[3]=(p-d)/_,e[0]=.25*_,e[1]=(h+l)/_,e[2]=(f+u)/_):c>m?(_=2*Math.sqrt(1+c-o-m),e[3]=(f-u)/_,e[0]=(h+l)/_,e[1]=.25*_,e[2]=(p+d)/_):(_=2*Math.sqrt(1+m-o-c),e[3]=(h-l)/_,e[0]=(f+u)/_,e[1]=(p+d)/_,e[2]=.25*_),e}}();class wi extends Array{constructor(t=1,e=0,r=0,n=0,i=0,s=1,a=0,o=0,h=0,u=0,l=1,c=0,p=0,f=0,d=0,m=1){return super(t,e,r,n,i,s,a,o,h,u,l,c,p,f,d,m),this}get x(){return this[12]}get y(){return this[13]}get z(){return this[14]}get w(){return this[15]}set x(t){this[12]=t}set y(t){this[13]=t}set z(t){this[14]=t}set w(t){this[15]=t}set(t,e,r,n,i,s,a,o,h,u,l,c,p,f,d,m){return t.length?this.copy(t):(function(t,e,r,n,i,s,a,o,h,u,l,c,p,f,d,m,g){t[0]=e,t[1]=r,t[2]=n,t[3]=i,t[4]=s,t[5]=a,t[6]=o,t[7]=h,t[8]=u,t[9]=l,t[10]=c,t[11]=p,t[12]=f,t[13]=d,t[14]=m,t[15]=g}(this,t,e,r,n,i,s,a,o,h,u,l,c,p,f,d,m),this)}translate(t,e=this){return function(t,e,r){let n,i,s,a,o,h,u,l,c,p,f,d,m=r[0],g=r[1],_=r[2];e===t?(t[12]=e[0]*m+e[4]*g+e[8]*_+e[12],t[13]=e[1]*m+e[5]*g+e[9]*_+e[13],t[14]=e[2]*m+e[6]*g+e[10]*_+e[14],t[15]=e[3]*m+e[7]*g+e[11]*_+e[15]):(n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],h=e[5],u=e[6],l=e[7],c=e[8],p=e[9],f=e[10],d=e[11],t[0]=n,t[1]=i,t[2]=s,t[3]=a,t[4]=o,t[5]=h,t[6]=u,t[7]=l,t[8]=c,t[9]=p,t[10]=f,t[11]=d,t[12]=n*m+o*g+c*_+e[12],t[13]=i*m+h*g+p*_+e[13],t[14]=s*m+u*g+f*_+e[14],t[15]=a*m+l*g+d*_+e[15])}(this,e,t),this}rotate(t,e,r=this){return function(t,e,r,n){let i,s,a,o,h,u,l,c,p,f,d,m,g,_,v,y,x,w,b,M,T,A,O,E,C=n[0],S=n[1],P=n[2],L=Math.hypot(C,S,P);Math.abs(L)<1e-6||(L=1/L,C*=L,S*=L,P*=L,i=Math.sin(r),s=Math.cos(r),a=1-s,o=e[0],h=e[1],u=e[2],l=e[3],c=e[4],p=e[5],f=e[6],d=e[7],m=e[8],g=e[9],_=e[10],v=e[11],y=C*C*a+s,x=S*C*a+P*i,w=P*C*a-S*i,b=C*S*a-P*i,M=S*S*a+s,T=P*S*a+C*i,A=C*P*a+S*i,O=S*P*a-C*i,E=P*P*a+s,t[0]=o*y+c*x+m*w,t[1]=h*y+p*x+g*w,t[2]=u*y+f*x+_*w,t[3]=l*y+d*x+v*w,t[4]=o*b+c*M+m*T,t[5]=h*b+p*M+g*T,t[6]=u*b+f*M+_*T,t[7]=l*b+d*M+v*T,t[8]=o*A+c*O+m*E,t[9]=h*A+p*O+g*E,t[10]=u*A+f*O+_*E,t[11]=l*A+d*O+v*E,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]))}(this,r,t,e),this}scale(t,e=this){return function(t,e,r){let n=r[0],i=r[1],s=r[2];t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*s,t[9]=e[9]*s,t[10]=e[10]*s,t[11]=e[11]*s,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]}(this,e,"number"==typeof t?[t,t,t]:t),this}multiply(t,e){return e?vi(this,t,e):vi(this,this,t),this}identity(){var t;return(t=this)[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}copy(t){var e,r;return r=t,(e=this)[0]=r[0],e[1]=r[1],e[2]=r[2],e[3]=r[3],e[4]=r[4],e[5]=r[5],e[6]=r[6],e[7]=r[7],e[8]=r[8],e[9]=r[9],e[10]=r[10],e[11]=r[11],e[12]=r[12],e[13]=r[13],e[14]=r[14],e[15]=r[15],this}fromPerspective({fov:t,aspect:e,near:r,far:n}={}){return function(t,e,r,n,i){let s=1/Math.tan(e/2),a=1/(n-i);t[0]=s/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=s,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(i+n)*a,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*i*n*a,t[15]=0}(this,t,e,r,n),this}fromOrthogonal({left:t,right:e,bottom:r,top:n,near:i,far:s}){return function(t,e,r,n,i,s,a){let o=1/(e-r),h=1/(n-i),u=1/(s-a);t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*h,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*u,t[11]=0,t[12]=(e+r)*o,t[13]=(i+n)*h,t[14]=(a+s)*u,t[15]=1}(this,t,e,r,n,i,s),this}fromQuaternion(t){return function(t,e){let r=e[0],n=e[1],i=e[2],s=e[3],a=r+r,o=n+n,h=i+i,u=r*a,l=n*a,c=n*o,p=i*a,f=i*o,d=i*h,m=s*a,g=s*o,_=s*h;t[0]=1-c-d,t[1]=l+_,t[2]=p-g,t[3]=0,t[4]=l-_,t[5]=1-u-d,t[6]=f+m,t[7]=0,t[8]=p+g,t[9]=f-m,t[10]=1-u-c,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1}(this,t),this}setPosition(t){return this.x=t[0],this.y=t[1],this.z=t[2],this}inverse(t=this){return function(t,e){let r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],h=e[6],u=e[7],l=e[8],c=e[9],p=e[10],f=e[11],d=e[12],m=e[13],g=e[14],_=e[15],v=r*o-n*a,y=r*h-i*a,x=r*u-s*a,w=n*h-i*o,b=n*u-s*o,M=i*u-s*h,T=l*m-c*d,A=l*g-p*d,O=l*_-f*d,E=c*g-p*m,C=c*_-f*m,S=p*_-f*g,P=v*S-y*C+x*E+w*O-b*A+M*T;P&&(P=1/P,t[0]=(o*S-h*C+u*E)*P,t[1]=(i*C-n*S-s*E)*P,t[2]=(m*M-g*b+_*w)*P,t[3]=(p*b-c*M-f*w)*P,t[4]=(h*O-a*S-u*A)*P,t[5]=(r*S-i*O+s*A)*P,t[6]=(g*x-d*M-_*y)*P,t[7]=(l*M-p*x+f*y)*P,t[8]=(a*C-o*O+u*T)*P,t[9]=(n*O-r*C-s*T)*P,t[10]=(d*b-m*x+_*v)*P,t[11]=(c*x-l*b-f*v)*P,t[12]=(o*A-a*E-h*T)*P,t[13]=(r*E-n*A+i*T)*P,t[14]=(m*y-d*w-g*v)*P,t[15]=(l*w-c*y+p*v)*P)}(this,t),this}compose(t,e,r){return function(t,e,r,n){let i=e[0],s=e[1],a=e[2],o=e[3],h=i+i,u=s+s,l=a+a,c=i*h,p=i*u,f=i*l,d=s*u,m=s*l,g=a*l,_=o*h,v=o*u,y=o*l,x=n[0],w=n[1],b=n[2];t[0]=(1-(d+g))*x,t[1]=(p+y)*x,t[2]=(f-v)*x,t[3]=0,t[4]=(p-y)*w,t[5]=(1-(c+g))*w,t[6]=(m+_)*w,t[7]=0,t[8]=(f+v)*b,t[9]=(m-_)*b,t[10]=(1-(c+d))*b,t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1}(this,t,e,r),this}getRotation(t){return xi(t,this),this}getTranslation(t){var e,r;return r=this,(e=t)[0]=r[12],e[1]=r[13],e[2]=r[14],this}getScaling(t){return yi(t,this),this}getMaxScaleOnAxis(){return function(t){let e=t[0],r=t[1],n=t[2],i=t[4],s=t[5],a=t[6],o=t[8],h=t[9],u=t[10];const l=e*e+r*r+n*n,c=i*i+s*s+a*a,p=o*o+h*h+u*u;return Math.sqrt(Math.max(l,c,p))}(this)}lookAt(t,e,r){return function(t,e,r,n){let i=e[0],s=e[1],a=e[2],o=n[0],h=n[1],u=n[2],l=i-r[0],c=s-r[1],p=a-r[2],f=l*l+c*c+p*p;0===f?p=1:(f=1/Math.sqrt(f),l*=f,c*=f,p*=f);let d=h*p-u*c,m=u*l-o*p,g=o*c-h*l;f=d*d+m*m+g*g,0===f&&(u?o+=1e-6:h?u+=1e-6:h+=1e-6,d=h*p-u*c,m=u*l-o*p,g=o*c-h*l,f=d*d+m*m+g*g),f=1/Math.sqrt(f),d*=f,m*=f,g*=f,t[0]=d,t[1]=m,t[2]=g,t[3]=0,t[4]=c*g-p*m,t[5]=p*d-l*g,t[6]=l*m-c*d,t[7]=0,t[8]=l,t[9]=c,t[10]=p,t[11]=0,t[12]=i,t[13]=s,t[14]=a,t[15]=1}(this,t,e,r),this}determinant(){return function(t){let e=t[0],r=t[1],n=t[2],i=t[3],s=t[4],a=t[5],o=t[6],h=t[7],u=t[8],l=t[9],c=t[10],p=t[11],f=t[12],d=t[13],m=t[14],g=t[15];return(e*a-r*s)*(c*g-p*m)-(e*o-n*s)*(l*g-p*d)+(e*h-i*s)*(l*m-c*d)+(r*o-n*a)*(u*g-p*f)-(r*h-i*a)*(u*m-c*f)+(n*h-i*o)*(u*d-l*f)}(this)}fromArray(t,e=0){return this[0]=t[e],this[1]=t[e+1],this[2]=t[e+2],this[3]=t[e+3],this[4]=t[e+4],this[5]=t[e+5],this[6]=t[e+6],this[7]=t[e+7],this[8]=t[e+8],this[9]=t[e+9],this[10]=t[e+10],this[11]=t[e+11],this[12]=t[e+12],this[13]=t[e+13],this[14]=t[e+14],this[15]=t[e+15],this}toArray(t=[],e=0){return t[e]=this[0],t[e+1]=this[1],t[e+2]=this[2],t[e+3]=this[3],t[e+4]=this[4],t[e+5]=this[5],t[e+6]=this[6],t[e+7]=this[7],t[e+8]=this[8],t[e+9]=this[9],t[e+10]=this[10],t[e+11]=this[11],t[e+12]=this[12],t[e+13]=this[13],t[e+14]=this[14],t[e+15]=this[15],t}}const bi=new wi;class Mi extends Array{constructor(t=0,e=t,r=t,n="YXZ"){return super(t,e,r),this.order=n,this.onChange=()=>{},this}get x(){return this[0]}get y(){return this[1]}get z(){return this[2]}set x(t){this[0]=t,this.onChange()}set y(t){this[1]=t,this.onChange()}set z(t){this[2]=t,this.onChange()}set(t,e=t,r=t){return t.length?this.copy(t):(this[0]=t,this[1]=e,this[2]=r,this.onChange(),this)}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this.onChange(),this}reorder(t){return this.order=t,this.onChange(),this}fromRotationMatrix(t,e=this.order){return function(t,e,r="YXZ"){"XYZ"===r?(t[1]=Math.asin(Math.min(Math.max(e[8],-1),1)),Math.abs(e[8])<.99999?(t[0]=Math.atan2(-e[9],e[10]),t[2]=Math.atan2(-e[4],e[0])):(t[0]=Math.atan2(e[6],e[5]),t[2]=0)):"YXZ"===r?(t[0]=Math.asin(-Math.min(Math.max(e[9],-1),1)),Math.abs(e[9])<.99999?(t[1]=Math.atan2(e[8],e[10]),t[2]=Math.atan2(e[1],e[5])):(t[1]=Math.atan2(-e[2],e[0]),t[2]=0)):"ZXY"===r?(t[0]=Math.asin(Math.min(Math.max(e[6],-1),1)),Math.abs(e[6])<.99999?(t[1]=Math.atan2(-e[2],e[10]),t[2]=Math.atan2(-e[4],e[5])):(t[1]=0,t[2]=Math.atan2(e[1],e[0]))):"ZYX"===r?(t[1]=Math.asin(-Math.min(Math.max(e[2],-1),1)),Math.abs(e[2])<.99999?(t[0]=Math.atan2(e[6],e[10]),t[2]=Math.atan2(e[1],e[0])):(t[0]=0,t[2]=Math.atan2(-e[4],e[5]))):"YZX"===r?(t[2]=Math.asin(Math.min(Math.max(e[1],-1),1)),Math.abs(e[1])<.99999?(t[0]=Math.atan2(-e[9],e[5]),t[1]=Math.atan2(-e[2],e[0])):(t[0]=0,t[1]=Math.atan2(e[8],e[10]))):"XZY"===r&&(t[2]=Math.asin(-Math.min(Math.max(e[4],-1),1)),Math.abs(e[4])<.99999?(t[0]=Math.atan2(e[6],e[5]),t[1]=Math.atan2(e[8],e[0])):(t[0]=Math.atan2(-e[9],e[10]),t[1]=0))}(this,t,e),this}fromQuaternion(t,e=this.order){return bi.fromQuaternion(t),this.fromRotationMatrix(bi,e)}}class Ti{constructor(){this.parent=null,this.children=[],this.visible=!0,this.matrix=new wi,this.worldMatrix=new wi,this.matrixAutoUpdate=!0,this.position=new pi,this.quaternion=new _i,this.scale=new pi(1),this.rotation=new Mi,this.up=new pi(0,1,0),this.rotation.onChange=()=>this.quaternion.fromEuler(this.rotation),this.quaternion.onChange=()=>this.rotation.fromQuaternion(this.quaternion)}setParent(t,e=!0){this.parent&&t!==this.parent&&this.parent.removeChild(this,!1),this.parent=t,e&&t&&t.addChild(this,!1)}addChild(t,e=!0){~this.children.indexOf(t)||this.children.push(t),e&&t.setParent(this,!1)}removeChild(t,e=!0){~this.children.indexOf(t)&&this.children.splice(this.children.indexOf(t),1),e&&t.setParent(null,!1)}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.worldMatrixNeedsUpdate||t)&&(null===this.parent?this.worldMatrix.copy(this.matrix):this.worldMatrix.multiply(this.parent.worldMatrix,this.matrix),this.worldMatrixNeedsUpdate=!1,t=!0);for(let e=0,r=this.children.length;e{if(!this.attributes[e])return void console.warn(`active attribute ${e} not being supplied`);const n=this.attributes[e];this.gl.bindBuffer(n.target,n.buffer),this.glState.boundBuffer=n.buffer;let i=1;35674===r&&(i=2),35675===r&&(i=3),35676===r&&(i=4);const s=n.size/i,a=1===i?0:i*i*i,o=1===i?0:i*i;for(let e=0;e{const r=this.attributes[e];r.needsUpdate&&this.updateAttribute(r)})),this.isInstanced?this.attributes.index?this.gl.renderer.drawElementsInstanced(e,this.drawRange.count,this.attributes.index.type,this.attributes.index.offset+2*this.drawRange.start,this.instancedCount):this.gl.renderer.drawArraysInstanced(e,this.drawRange.start,this.drawRange.count,this.instancedCount):this.attributes.index?this.gl.drawElements(e,this.drawRange.count,this.attributes.index.type,this.attributes.index.offset+2*this.drawRange.start):this.gl.drawArrays(e,this.drawRange.start,this.drawRange.count)}getPositionArray(){const t=this.attributes.position;return t.data?t.data:Di?void 0:(console.warn("No position buffer data found to compute bounds"),Di=!0)}computeBoundingBox(t){t||(t=this.getPositionArray()),this.bounds||(this.bounds={min:new pi,max:new pi,center:new pi,scale:new pi,radius:1/0});const e=this.bounds.min,r=this.bounds.max,n=this.bounds.center,i=this.bounds.scale;e.set(1/0),r.set(-1/0);for(let n=0,i=t.length;n65536?new Uint32Array(u):new Uint16Array(u);ki.buildPlane(l,c,p,f,e,r,0,a,o),Object.assign(s,{position:{size:3,data:l},normal:{size:3,data:c},uv:{size:2,data:p},index:{data:f}}),super(t,s)}static buildPlane(t,e,r,n,i,s,a,o,h,u=0,l=1,c=2,p=1,f=-1,d=0,m=0){const g=d,_=i/o,v=s/h;for(let y=0;y<=h;y++){let x=y*v-s/2;for(let s=0;s<=o;s++,d++){let v=s*_-i/2;if(t[3*d+u]=v*p,t[3*d+l]=x*f,t[3*d+c]=a/2,e[3*d+u]=0,e[3*d+l]=0,e[3*d+c]=a>=0?1:-1,r[2*d]=s/o,r[2*d+1]=1-y/h,y===h||s===o)continue;let w=g+s+y*(o+1),b=g+s+(y+1)*(o+1),M=g+s+(y+1)*(o+1)+1,T=g+s+y*(o+1)+1;n[6*m]=w,n[6*m+1]=b,n[6*m+2]=T,n[6*m+3]=b,n[6*m+4]=M,n[6*m+5]=T,m++}}}}class Ri extends zi{constructor(t,{width:e=1,height:r=1,depth:n=1,widthSegments:i=1,heightSegments:s=1,depthSegments:a=1,attributes:o={}}={}){const h=i,u=s,l=a,c=(h+1)*(u+1)*2+(h+1)*(l+1)*2+(u+1)*(l+1)*2,p=6*(h*u*2+h*l*2+u*l*2),f=new Float32Array(3*c),d=new Float32Array(3*c),m=new Float32Array(2*c),g=c>65536?new Uint32Array(p):new Uint16Array(p);let _=0,v=0;ki.buildPlane(f,d,m,g,n,r,e,l,u,2,1,0,-1,-1,_,v),ki.buildPlane(f,d,m,g,n,r,-e,l,u,2,1,0,1,-1,_+=(l+1)*(u+1),v+=l*u),ki.buildPlane(f,d,m,g,e,n,r,l,u,0,2,1,1,1,_+=(l+1)*(u+1),v+=l*u),ki.buildPlane(f,d,m,g,e,n,-r,l,u,0,2,1,1,-1,_+=(h+1)*(l+1),v+=h*l),ki.buildPlane(f,d,m,g,e,r,-n,h,u,0,1,2,-1,-1,_+=(h+1)*(l+1),v+=h*l),ki.buildPlane(f,d,m,g,e,r,n,h,u,0,1,2,1,-1,_+=(h+1)*(u+1),v+=h*u),Object.assign(o,{position:{size:3,data:f},normal:{size:3,data:d},uv:{size:2,data:m},index:{data:g}}),super(t,o)}}const ji=class extends(c()){constructor({classes:t,element:r,elements:n}){super(),e()(this),this.classes=t,this.element=r instanceof window.HTMLElement?r:document.querySelector(r),this.elements={},h()(n,((t,e)=>{t instanceof window.HTMLElement||t instanceof window.NodeList||Array.isArray(t)?this.elements[e]=t:(this.elements[e]=this.element.querySelectorAll(t),0===this.elements[e].length?this.elements[e]=null:1===this.elements[e].length&&(this.elements[e]=this.element.querySelector(t)))})),this.addEventListeners()}addEventListeners(){}removeEventListeners(){}destroy(){this.removeEventListeners()}},Fi=class extends ji{constructor(){super({classes:{},element:".preloader",elements:{}}),this.counter=0,this.index=0,this.transformPrefix=m()("transform"),this.onComplete()}onComplete(){this.timeline=Kn.timeline(),this.timeline.to(this.element,{autoAlpha:0,duration:1}),this.timeline.call((t=>{this.emit("complete")}))}};class Ii{constructor(){e()(this),this.content=document.querySelector(".content"),this.template=this.content.dataset.template,this.createPreloader(),this.createCanvas(),this.pages=new Map,this.pages.set("about",new ti),this.pages.set("home",new ei),this.page=this.pages.get(this.template),this.page.create(),this.page.show(),this.addEventListeners(),this.addLinksEventsListeners()}createPreloader(){this.preloader=new Fi,this.preloader.on("complete",this.onPreloaded)}onPreloaded(){this.onResize(),this.createAnalytics(),this.update()}createAnalytics(){const t=document.createElement("script");t.onload=t=>{function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config","GOOGLE_ANALYTICS")},t.src="https://www.googletagmanager.com/gtag/js?id=GOOGLE_ANALYTICS",document.body.appendChild(t)}createCanvas(){this.canvas=new class{constructor({url:t}){this.url=t,this.renderer=new mi({alpha:!0,dpr:Math.min(window.devicePixelRatio,2)}),this.gl=this.renderer.gl,this.gl.clearColor(0,0,0,0),document.body.appendChild(this.gl.canvas),this.createCamera(),this.createScene(),this.createGeometries(),this.onResize()}createCamera(){this.camera=new Ci(this.gl),this.camera.fov=45,this.camera.position.z=5}createScene(){this.scene=new Ti}createGeometries(){this.boxGeometry=new Ri(this.gl,{heightSegments:20,widthSegments:1}),this.planeGeometry=new ki(this.gl,{heightSegments:20,widthSegments:1})}onChange(t){}onResize(){this.screen={height:window.innerHeight,width:window.innerWidth},this.renderer.setSize(this.screen.width,this.screen.height),this.camera.perspective({aspect:this.gl.canvas.width/this.gl.canvas.height});const t=this.camera.fov*(Math.PI/180),e=2*Math.tan(t/2)*this.camera.position.z,r=e*this.camera.aspect;this.viewport={height:e,width:r},this.screen,this.viewport}onTouchDown(t){}onTouchMove(t){}onTouchUp(t){}update(t){t&&this.renderer.render({scene:this.scene,camera:this.camera})}}({url:this.url})}createStats(){this.stats=new(a()),document.body.appendChild(this.stats.dom)}async onChange({push:t=!0,url:e=null}){if(this.isLoading||this.url===e)return;document.body.style.pointerEvents="none",this.url=e,this.isLoading=!0;const r=await window.fetch(e,{headers:{"X-Requested-With":"XMLHttpRequest"}}),n=await r.text();this.onRequest({push:t,response:n,url:e})}async onRequest({push:t,response:e,url:r}){const n=document.createElement("div");n.innerHTML=e;const i=n.querySelector(".content");this.page&&await Promise.all([this.page.hide(i.dataset.template)]),document.title=n.querySelector("title").textContent,t&&window.history.pushState({},document.title,r),this.content.innerHTML=i.innerHTML,this.content.dataset.template=i.dataset.template,this.template=i.dataset.template,this.page=this.pages.get(this.template),this.page.create(),this.addLinksEventsListeners(),await this.page.show(),document.body.style.pointerEvents="",this.isLoading=!1}update(){this.stats&&this.stats.begin(),this.page&&this.page.update(),this.canvas&&this.canvas.update(this),this.stats&&this.stats.end(),window.requestAnimationFrame(this.update)}onContextMenu(t){return t.preventDefault(),t.stopPropagation(),!1}onPopState(){this.onChange({url:window.location.pathname,push:!1})}onResize(){window.requestAnimationFrame((t=>{this.page&&this.page.onResize(),this.canvas&&this.canvas.onResize()}))}onKeyDown(t){"Tab"===t.key&&t.preventDefault(),"ArrowDown"===t.key?this.page.scroll.target+=100:"ArrowUp"===t.key&&(this.page.scroll.target-=100)}onFocusIn(t){t.preventDefault()}onTouchDown(t){t.stopPropagation(),(u.isMobile()||"A"!==t.target.tagName)&&(this.canvas&&this.canvas.onTouchDown&&this.canvas.onTouchDown(t),this.page&&this.page.onTouchDown&&this.page.onTouchDown(t))}onTouchMove(t){t.stopPropagation(),this.canvas&&this.canvas.onTouchMove&&this.canvas.onTouchMove(t),this.page&&this.page.onTouchDown&&this.page.onTouchMove(t)}onTouchUp(t){t.stopPropagation(),this.canvas&&this.canvas.onTouchUp&&this.canvas.onTouchUp(t),this.page&&this.page.onTouchDown&&this.page.onTouchUp(t)}onWheel(t){this.page&&this.page.onWheel&&this.page.onWheel(t)}addEventListeners(){window.addEventListener("popstate",this.onPopState,{passive:!0}),window.addEventListener("resize",this.onResize,{passive:!0}),window.addEventListener("mousedown",this.onTouchDown,{passive:!0}),window.addEventListener("mousemove",this.onTouchMove,{passive:!0}),window.addEventListener("mouseup",this.onTouchUp,{passive:!0}),window.addEventListener("touchstart",this.onTouchDown,{passive:!0}),window.addEventListener("touchmove",this.onTouchMove,{passive:!0}),window.addEventListener("touchend",this.onTouchUp,{passive:!0}),window.addEventListener("mousewheel",this.onWheel,{passive:!0}),window.addEventListener("wheel",this.onWheel,{passive:!0}),window.addEventListener("keydown",this.onKeyDown),window.addEventListener("focusin",this.onFocusIn),u.isMobile()&&(window.oncontextmenu=this.onContextMenu)}addLinksEventsListeners(){const t=document.querySelectorAll("a");h()(t,(t=>{const e=t.href.indexOf(window.location.origin)>-1,r=t.href.indexOf("#")>-1;e?t.onclick=e=>{e.preventDefault(),r||this.onChange({url:t.href})}:-1===t.href.indexOf("mailto")&&-1===t.href.indexOf("tel")&&(t.rel="noopener",t.target="_blank")}))}}const Bi=new(i())("Neue Haas Grotesk Regular");Promise.all([Bi.load()]).then((t=>{window.APP=new Ii})).catch((t=>{window.APP=new Ii})),console.log("%c Developed by Bizarro - https://bizar.ro/","background: #000; color: #fff;")})()})();
--------------------------------------------------------------------------------
/public/main.js.LICENSE.txt:
--------------------------------------------------------------------------------
1 | /*!
2 | * GSAP 3.6.0
3 | * https://greensock.com
4 | *
5 | * @license Copyright 2008-2021, GreenSock. All rights reserved.
6 | * Subject to the terms at https://greensock.com/standard-license or for
7 | * Club GreenSock members, the agreement issued with that membership.
8 | * @author: Jack Doyle, jack@greensock.com
9 | */
10 |
11 | /**
12 | * Checks if an event is supported in the current execution environment.
13 | *
14 | * NOTE: This will not work correctly for non-generic events such as `change`,
15 | * `reset`, `load`, `error`, and `select`.
16 | *
17 | * Borrows from Modernizr.
18 | *
19 | * @param {string} eventNameSuffix Event name, e.g. "click".
20 | * @param {?boolean} capture Check if the capture phase is supported.
21 | * @return {boolean} True if the event is supported.
22 | * @internal
23 | * @license Modernizr 3.0.0pre (Custom Build) | MIT
24 | */
25 |
--------------------------------------------------------------------------------
/public/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bizarro/bizarroilerplate/7a8fa9e3705669586b371109cd7d3ffe3f1c5300/public/mstile-150x150.png
--------------------------------------------------------------------------------
/public/offline.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Node Template
6 |
32 |
33 |
34 |
35 |
36 | This experience is only available with internet connection.
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/public/safari-pinned-tab.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
38 |
--------------------------------------------------------------------------------
/public/service-worker.js:
--------------------------------------------------------------------------------
1 | const staticCacheName="v1::node-template";this.addEventListener("install",(t=>{this.skipWaiting(),t.waitUntil(caches.open(staticCacheName).then((t=>t.addAll(["/offline.html"]))))})),this.addEventListener("fetch",(t=>{t.respondWith(caches.match(t.request).then((e=>e||fetch(t.request))).catch((()=>caches.match("/offline.html"))))}));
--------------------------------------------------------------------------------
/public/share.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bizarro/bizarroilerplate/7a8fa9e3705669586b371109cd7d3ffe3f1c5300/public/share.jpg
--------------------------------------------------------------------------------
/public/site.webmanifest:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Bizarr\u00f8",
3 | "short_name": "Bizarr\u00f8",
4 | "start_url": "/",
5 | "icons": [
6 | {
7 | "src": "/android-chrome-192x192.png",
8 | "sizes": "192x192",
9 | "type": "image/png",
10 | "purpose": "any maskable"
11 | },
12 | {
13 | "src": "/android-chrome-512x512.png",
14 | "sizes": "512x512",
15 | "type": "image/png",
16 | "purpose": "any maskable"
17 | }
18 | ],
19 | "theme_color": "#151c13",
20 | "background_color": "#151c13",
21 | "display": "standalone"
22 | }
23 |
--------------------------------------------------------------------------------
/shared/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bizarro/bizarroilerplate/7a8fa9e3705669586b371109cd7d3ffe3f1c5300/shared/android-chrome-192x192.png
--------------------------------------------------------------------------------
/shared/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bizarro/bizarroilerplate/7a8fa9e3705669586b371109cd7d3ffe3f1c5300/shared/android-chrome-512x512.png
--------------------------------------------------------------------------------
/shared/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bizarro/bizarroilerplate/7a8fa9e3705669586b371109cd7d3ffe3f1c5300/shared/apple-touch-icon.png
--------------------------------------------------------------------------------
/shared/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #151c13
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/shared/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bizarro/bizarroilerplate/7a8fa9e3705669586b371109cd7d3ffe3f1c5300/shared/favicon-16x16.png
--------------------------------------------------------------------------------
/shared/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bizarro/bizarroilerplate/7a8fa9e3705669586b371109cd7d3ffe3f1c5300/shared/favicon-32x32.png
--------------------------------------------------------------------------------
/shared/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bizarro/bizarroilerplate/7a8fa9e3705669586b371109cd7d3ffe3f1c5300/shared/favicon.ico
--------------------------------------------------------------------------------
/shared/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bizarro/bizarroilerplate/7a8fa9e3705669586b371109cd7d3ffe3f1c5300/shared/mstile-150x150.png
--------------------------------------------------------------------------------
/shared/safari-pinned-tab.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
38 |
--------------------------------------------------------------------------------
/shared/share.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bizarro/bizarroilerplate/7a8fa9e3705669586b371109cd7d3ffe3f1c5300/shared/share.jpg
--------------------------------------------------------------------------------
/shared/site.webmanifest:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Bizarr\u00f8",
3 | "short_name": "Bizarr\u00f8",
4 | "start_url": "/",
5 | "icons": [
6 | {
7 | "src": "/android-chrome-192x192.png",
8 | "sizes": "192x192",
9 | "type": "image/png",
10 | "purpose": "any maskable"
11 | },
12 | {
13 | "src": "/android-chrome-512x512.png",
14 | "sizes": "512x512",
15 | "type": "image/png",
16 | "purpose": "any maskable"
17 | }
18 | ],
19 | "theme_color": "#151c13",
20 | "background_color": "#151c13",
21 | "display": "standalone"
22 | }
23 |
--------------------------------------------------------------------------------
/styles/base/fonts.scss:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'Neue Haas Grotesk Regular';
3 | src: url('../fonts/neue-haas-grotesk-regular.woff2') format('woff2'),
4 | url('../fonts/neue-haas-grotesk-regular.woff') format('woff');
5 | font-weight: normal;
6 | font-style: normal;
7 | font-display: swap;
8 | }
9 |
--------------------------------------------------------------------------------
/styles/base/reset.scss:
--------------------------------------------------------------------------------
1 | *,
2 | *:before,
3 | *:after {
4 | box-sizing: inherit;
5 | user-select: none;
6 | outline: none;
7 | -webkit-touch-callout: none;
8 | }
9 |
10 | * {
11 | margin: 0;
12 | padding: 0;
13 | }
14 |
15 | html, body, div, span, applet, object, iframe,
16 | h1, h2, h3, h4, h5, h6, p, blockquote, pre,
17 | a, abbr, acronym, address, big, cite, code,
18 | del, dfn, em, img, ins, kbd, q, s, samp,
19 | small, strike, strong, sub, sup, tt, var,
20 | b, u, i, center,
21 | dl, dt, dd, ol, ul, li,
22 | fieldset, form, label, legend,
23 | table, caption, tbody, tfoot, thead, tr, th, td,
24 | article, aside, canvas, details, embed,
25 | figure, figcaption, footer, header, hgroup,
26 | menu, nav, output, ruby, section, summary,
27 | time, mark, audio, video {
28 | margin: 0;
29 | padding: 0;
30 | border: 0;
31 | font-size: 100%;
32 | font: inherit;
33 | vertical-align: baseline;
34 | }
35 |
36 | article, aside, details, figcaption, figure,
37 | footer, header, hgroup, menu, nav, section {
38 | display: block;
39 | }
40 |
41 | html {
42 | background: $color-black;
43 | box-sizing: border-box;
44 | color: $color-white;
45 | font-size: calc(100vw / 1920 * 10);
46 | height: 100%;
47 | left: 0;
48 | overflow: hidden;
49 | overscroll-behavior: none;
50 | position: fixed;
51 | -moz-osx-font-smoothing: grayscale;
52 | top: 0;
53 | -webkit-font-smoothing: antialiased;
54 | width: 100%;
55 |
56 | @include media('<=phone') {
57 | font-size: calc(100vw / 375 * 10);
58 | }
59 | }
60 |
61 | body {
62 | font: 1.4rem/1.5 $font-neue-haas-grotesk-regular;
63 | height: 100%;
64 | left: 0;
65 | opacity: 1;
66 | overflow: hidden;
67 | position: fixed;
68 | top: 0;
69 | width: 100%;
70 | }
71 |
72 | :focus {
73 | outline: none;
74 | }
75 |
76 | ::-moz-focus-inner {
77 | border: 0;
78 | }
79 |
80 | a {
81 | color: inherit;
82 | outline: none;
83 | pointer-events: auto;
84 | text-decoration: none;
85 | }
86 |
87 | button {
88 | background: none;
89 | border: none;
90 | border-radius: none;
91 | color: inherit;
92 | font: inherit;
93 | outline: none;
94 | pointer-events: auto;
95 | }
96 |
97 | img {
98 | max-width: 100%;
99 | vertical-align: middle;
100 | }
101 |
102 | input,
103 | textarea {
104 | appearance: none;
105 | background: none;
106 | border: none;
107 | border-radius: 0;
108 | outline: none;
109 | pointer-events: auto;
110 | }
111 |
112 | ol, ul {
113 | list-style: none;
114 | }
115 |
116 | .content {
117 | height: 100%;
118 | left: 0;
119 | overflow: auto;
120 | position: absolute;
121 | top: 0;
122 | width: 100%;
123 | }
124 |
125 | [data-animation="paragraph"] {
126 | span {
127 | display: inline-block;
128 | overflow: hidden;
129 | vertical-align: top;
130 | }
131 | }
132 |
--------------------------------------------------------------------------------
/styles/components/canvas.scss:
--------------------------------------------------------------------------------
1 | canvas {
2 | display: block;
3 | height: 100vh;
4 | left: 0;
5 | pointer-events: none;
6 | position: fixed;
7 | top: 0;
8 | width: 100%;
9 | z-index: z('canvas');
10 | }
11 |
--------------------------------------------------------------------------------
/styles/components/functionals.scss:
--------------------------------------------------------------------------------
1 | noscript {
2 | align-items: center;
3 | background: $color-black;
4 | color: $color-white;
5 | cursor: default;
6 | display: flex;
7 | font-size: 1.6rem;
8 | line-height: 1.1;
9 | height: 100%;
10 | justify-content: center;
11 | left: 0;
12 | padding: 4rem;
13 | position: fixed;
14 | text-align: center;
15 | top: 0;
16 | width: 100%;
17 | z-index: z('noscript');
18 | }
19 |
--------------------------------------------------------------------------------
/styles/components/navigation.scss:
--------------------------------------------------------------------------------
1 | .navigation {
2 | @extend %cover;
3 |
4 | pointer-events: none;
5 | z-index: z('navigation');
6 | }
7 |
8 | .navigation__link {
9 | pointer-events: auto;
10 | }
11 |
--------------------------------------------------------------------------------
/styles/components/preloader.scss:
--------------------------------------------------------------------------------
1 | .preloader {
2 | @extend %cover;
3 |
4 | background: $color-white;
5 | overflow: hidden;
6 | position: fixed;
7 | transform-origin: 0 0;
8 | z-index: z('preloader');
9 |
10 | &--loaded {
11 | transform: scaleY(0);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/styles/index.scss:
--------------------------------------------------------------------------------
1 | @import './utils/variables';
2 | @import './utils/functions';
3 | @import './utils/responsive';
4 | @import './utils/mixins';
5 | @import './utils/vendors';
6 |
7 | @import './base/fonts';
8 | @import './base/reset';
9 |
10 | @import './shared/links';
11 | @import './shared/sections';
12 |
13 | @import './components/canvas';
14 | @import './components/functionals';
15 | @import './components/navigation';
16 | @import './components/preloader';
17 |
18 | @import './pages/home/home';
19 |
20 | @import './pages/about/about';
21 |
--------------------------------------------------------------------------------
/styles/pages/about/about.scss:
--------------------------------------------------------------------------------
1 | .about {
2 |
3 | }
4 |
5 | .about__content {
6 |
7 | }
8 | .about {
9 | @extend %page;
10 |
11 | font-size: 100rem;
12 | word-break: break-all;
13 |
14 | &--active {
15 | @extend %page--active;
16 | }
17 | }
18 |
19 | .about__content {
20 | @extend %content;
21 | }
22 |
--------------------------------------------------------------------------------
/styles/pages/home/home.scss:
--------------------------------------------------------------------------------
1 | .home {
2 | @extend %page;
3 |
4 | font-size: 100rem;
5 | word-break: break-all;
6 |
7 | &--active {
8 | @extend %page--active;
9 | }
10 | }
11 |
12 | .home__content {
13 | @extend %content;
14 | }
15 |
--------------------------------------------------------------------------------
/styles/shared/links.scss:
--------------------------------------------------------------------------------
1 | %link__wrapper {
2 | display: inline-block;
3 | overflow: hidden;
4 | position: relative;
5 | vertical-align: top;
6 | }
7 |
8 | %link__line {
9 | background: currentColor;
10 | bottom: 0;
11 | content: '';
12 | height: 1px;
13 | left: 0;
14 | position: absolute;
15 | transition: transform 0.7s $ease-out-expo;
16 | width: 100%;
17 | }
18 |
19 | %link__line--visible {
20 | transform: scaleX(1);
21 | transform-origin: left center;
22 | }
23 |
24 | %link__line--hidden {
25 | transform: scaleX(0);
26 | transform-origin: right center;
27 | }
28 |
29 | %link {
30 | @extend %link__wrapper;
31 |
32 | display: inline-block;
33 | line-height: 1.05;
34 |
35 | &:after {
36 | @extend %link__line;
37 | @extend %link__line--visible;
38 | }
39 |
40 | &:hover,
41 | &:focus {
42 | &:after {
43 | @extend %link__line--hidden;
44 | }
45 | }
46 | }
47 |
48 | %link--hidden {
49 | @extend %link__wrapper;
50 |
51 | display: inline-block;
52 | line-height: 1.05;
53 |
54 | &:after {
55 | @extend %link__line;
56 | @extend %link__line--hidden;
57 | }
58 |
59 | &:hover,
60 | &:focus {
61 | &:after {
62 | @extend %link__line--visible;
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/styles/shared/sections.scss:
--------------------------------------------------------------------------------
1 | %page {
2 | height: 100%;
3 | left: 0;
4 | opacity: 0;
5 | overflow: hidden;
6 | pointer-events: none;
7 | position: absolute;
8 | top: 0;
9 | transition: opacity 1s ease, visibility 1s ease;
10 | visibility: hidden;
11 | width: 100%;
12 | z-index: z('content');
13 | }
14 |
15 | %page--active {
16 | opacity: 1;
17 | pointer-events: auto;
18 | visibility: visible;
19 | }
20 |
21 | %content {
22 | left: 0;
23 | overflow: hidden;
24 | position: absolute;
25 | top: 0;
26 | width: 100%;
27 | will-change: transform;
28 | }
29 |
--------------------------------------------------------------------------------
/styles/utils/functions.scss:
--------------------------------------------------------------------------------
1 | @function z($name) {
2 | @if index($z-indexes, $name) {
3 | @return (length($z-indexes) - index($z-indexes, $name)) + 1;
4 | } @else {
5 | @warn 'There is no item "#{$name}" in this list; Choose one of: #{$z-indexes}';
6 |
7 | @return null;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/styles/utils/mixins.scss:
--------------------------------------------------------------------------------
1 | %cover {
2 | height: 100%;
3 | left: 0;
4 | object-fit: cover;
5 | position: absolute;
6 | top: 0;
7 | width: 100%;
8 | }
9 |
10 | @mixin placeholder {
11 | &.placeholder { @content; }
12 | &::-webkit-input-placeholder { @content; }
13 | &::-moz-placeholder { @content; }
14 | &:-moz-placeholder { @content; }
15 | &:-ms-input-placeholder { @content; }
16 | }
17 |
18 | @mixin ratio ($height, $width) {
19 | font-size: 0;
20 | overflow: hidden;
21 | position: relative;
22 |
23 | &:after {
24 | content: '';
25 | display: inline-block;
26 | padding-top: $width / $height * 100%;
27 | width: 100%;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/styles/utils/responsive.scss:
--------------------------------------------------------------------------------
1 | $breakpoints: (
2 | 'phone': 768px,
3 | 'tablet': 1024px,
4 | 'desktop': 1440px
5 | ) !default;
6 |
7 | @import '../../node_modules/include-media/dist/_include-media.scss';
8 |
--------------------------------------------------------------------------------
/styles/utils/variables.scss:
--------------------------------------------------------------------------------
1 | $color-black: #000;
2 | $color-white: #fff;
3 |
4 | $font-neue-haas-grotesk-regular: 'Neue Haas Grotesk Regular', sans-serif;
5 |
6 | $ease-out-expo: cubic-bezier(0.19, 1, 0.22, 1);
7 |
8 | $z-indexes: (
9 | 'noscript',
10 | 'preloader',
11 | 'navigation',
12 | 'content',
13 | 'canvas',
14 | );
15 |
--------------------------------------------------------------------------------
/styles/utils/vendors.scss:
--------------------------------------------------------------------------------
1 | .dg.ac {
2 | z-index: 99999 !important;
3 | }
4 |
--------------------------------------------------------------------------------
/views/base.pug:
--------------------------------------------------------------------------------
1 | block variables
2 |
3 | doctype html
4 |
5 | if !isAJAX
6 | html(
7 | class=isPhone || isTablet ? 'mobile' : 'desktop'
8 | lang="en"
9 | )
10 | head
11 | meta(charset="UTF-8")
12 | meta(name="viewport" content="width=device-width, initial-scale=1.0")
13 |
14 | base(href="/")
15 |
16 | title=meta.data.title
17 |
18 | meta(name="description" content=meta.data.description)
19 |
20 | link(rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png")
21 | link(rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png")
22 | link(rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png")
23 | link(rel="manifest" href="/site.webmanifest")
24 | link(rel="mask-icon" href="/safari-pinned-tab.svg" color="#fbf7ec")
25 | meta(name="msapplication-TileColor" content="#fbf7ec")
26 | meta(name="theme-color" content="#fbf7ec")
27 |
28 | meta(property="og:type" content="website")
29 | meta(property="og:title" content=meta.data.title)
30 | meta(property="og:description" content=meta.data.description)
31 | meta(property="og:image" content=meta.data.image ? meta.data.image.url : '')
32 |
33 | meta(name="twitter:card" content="summary_large_image")
34 | meta(name="twitter:title" content=meta.data.title)
35 | meta(name="twitter:description" content=meta.data.description)
36 | meta(name="twitter:image" content=meta.data.image ? meta.data.image.url : '')
37 |
38 | link(rel="preconnect" href="https://www.google-analytics.com")
39 |
40 | style
41 | include ../public/main.css
42 |
43 | body
44 | include ./partials/preloader
45 | include ./partials/navigation
46 |
47 | .content#content(data-template=template)
48 | block body
49 |
50 | include ./partials/noscript
51 |
52 | script(async src=getVersionedPath('/main.js'))
53 | else
54 | html(lang="en")
55 | head
56 | title=meta.data.title
57 |
58 | body
59 | .content#content(data-template=template)
60 | block body
61 |
--------------------------------------------------------------------------------
/views/pages/about.pug:
--------------------------------------------------------------------------------
1 | extends ../base.pug
2 |
3 | block variables
4 | - var template = 'about'
5 |
6 | block body
7 | .about
8 | .about__content
9 | | Lorem ipsum dolor sit amet.
10 |
--------------------------------------------------------------------------------
/views/pages/home.pug:
--------------------------------------------------------------------------------
1 | extends ../base.pug
2 |
3 | block variables
4 | - var template = 'home'
5 |
6 | block body
7 | .home
8 | .home__content
9 | | Lorem ipsum dolor sit amet.
10 |
--------------------------------------------------------------------------------
/views/partials/navigation.pug:
--------------------------------------------------------------------------------
1 | nav.navigation
2 | a.navigation__link(href="/") Home
3 | a.navigation__link(href="/about") About
4 |
--------------------------------------------------------------------------------
/views/partials/noscript.pug:
--------------------------------------------------------------------------------
1 | noscript Please enable JavaScript to access this website.
2 |
--------------------------------------------------------------------------------
/views/partials/preloader.pug:
--------------------------------------------------------------------------------
1 | .preloader
2 |
--------------------------------------------------------------------------------
/webpack.config.build.js:
--------------------------------------------------------------------------------
1 | const path = require('path')
2 |
3 | const { CleanWebpackPlugin } = require('clean-webpack-plugin')
4 |
5 | const { merge } = require('webpack-merge')
6 | const config = require('./webpack.config')
7 |
8 | module.exports = merge(config, {
9 | mode: 'production',
10 |
11 | output: {
12 | path: path.join(__dirname, 'public')
13 | },
14 |
15 | plugins: [
16 | new CleanWebpackPlugin()
17 | ]
18 | })
19 |
--------------------------------------------------------------------------------
/webpack.config.development.js:
--------------------------------------------------------------------------------
1 | const { merge } = require('webpack-merge')
2 | const path = require('path')
3 |
4 | const config = require('./webpack.config')
5 |
6 | module.exports = merge(config, {
7 | mode: 'development',
8 |
9 | devtool: 'inline-source-map',
10 |
11 | devServer: {
12 | writeToDisk: true
13 | },
14 |
15 | output: {
16 | path: path.resolve(__dirname, 'public')
17 | }
18 | })
19 |
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | const path = require('path')
2 | const webpack = require('webpack')
3 |
4 | const CopyWebpackPlugin = require('copy-webpack-plugin')
5 | const MiniCssExtractPlugin = require('mini-css-extract-plugin')
6 |
7 | const IS_DEVELOPMENT = process.env.NODE_ENV === 'dev'
8 |
9 | const dirApp = path.join(__dirname, 'app')
10 | const dirAssets = path.join(__dirname, 'assets')
11 | const dirStyles = path.join(__dirname, 'styles')
12 | const dirNode = 'node_modules'
13 |
14 | module.exports = {
15 | entry: [
16 | path.join(dirApp, 'index.js'),
17 | path.join(dirStyles, 'index.scss')
18 | ],
19 |
20 | resolve: {
21 | modules: [
22 | dirApp,
23 | dirAssets,
24 | dirNode
25 | ]
26 | },
27 |
28 | plugins: [
29 | new webpack.DefinePlugin({
30 | IS_DEVELOPMENT
31 | }),
32 |
33 | new webpack.ProvidePlugin({
34 |
35 | }),
36 |
37 | new CopyWebpackPlugin({
38 | patterns: [
39 | {
40 | from: './app/service-worker.js',
41 | to: ''
42 | },
43 | {
44 | from: './offline.html',
45 | to: ''
46 | },
47 | {
48 | from: './shared',
49 | to: ''
50 | }
51 | ],
52 | }),
53 |
54 | new MiniCssExtractPlugin({
55 | filename: '[name].css',
56 | chunkFilename: '[id].css'
57 | })
58 | ],
59 |
60 | module: {
61 | rules: [
62 | {
63 | test: /\.pug$/,
64 | use: ['pug-loader']
65 | },
66 |
67 | {
68 | test: /\.js$/,
69 | use: {
70 | loader: 'babel-loader'
71 | }
72 | },
73 |
74 | {
75 | test: /\.(sa|sc|c)ss$/,
76 | use: [
77 | {
78 | loader: MiniCssExtractPlugin.loader,
79 | options: {
80 | publicPath: ''
81 | }
82 | },
83 | {
84 | loader: 'css-loader',
85 | options: {
86 | sourceMap: false
87 | }
88 | },
89 | {
90 | loader: 'postcss-loader',
91 | options: {
92 | sourceMap: false
93 | }
94 | },
95 | {
96 | loader: 'sass-loader',
97 | options: {
98 | sourceMap: false
99 | }
100 | }
101 | ]
102 | },
103 |
104 | {
105 | test: /\.(jpe?g|png|gif|svg|woff2?|fnt|webp)$/,
106 | loader: 'file-loader',
107 | options: {
108 | name (file) {
109 | return '[hash].[ext]'
110 | }
111 | }
112 | },
113 |
114 | {
115 | test: /\.(glsl|frag|vert)$/,
116 | loader: 'raw-loader',
117 | exclude: /node_modules/
118 | },
119 |
120 | {
121 | test: /\.(glsl|frag|vert)$/,
122 | loader: 'glslify-loader',
123 | exclude: /node_modules/
124 | }
125 | ]
126 | }
127 | }
128 |
--------------------------------------------------------------------------------