diff --git a/.DS_Store b/.DS_Store index af2c4a4..a4f51ff 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/README.md b/README.md index 8921e68..d6a09f6 100644 --- a/README.md +++ b/README.md @@ -1,93 +1,41 @@ -# How to code a webapp with this skeleton +# PlaybackXR -## Initial setup +A browser based sandbox where players claim a plot on an isometric grid, attach a Luma capture, and walk around a shared town. +url: https://playbackxr.onrender.com/ -All teammates will need (explained in weblab.is/hw0) +## What it does -- A bash console (on Mac or Linux, this is Terminal. On Windows, we recommend Git Bash) -- NodeJS version 18. If it is installed correctly, typing "node --version" should give v18.13.0 and "npm --version" should give 8.19.3, or higher. -- Visual Studio Code (or another code editor) -- the Prettier VSCode extension +1 Sign in with Google +2 Pick a map and see a grid of plots +3 Reserve an empty plot +4 Paste a Luma capture URL to fill the plot +5 Walk the town and view the placed splats +6 Select a filled plot and delete it to make the plot empty again -Also, all of you will need to go through the MongoDB Atlas setup (https://bit.ly/mongo-setup). +## Tech stack -Additionally for authentication, one of you will need to obtain a CLIENT_ID, instructions are at https://bit.ly/gauth-mit. +Frontend: React + Vite +Backend: Node.js + Express +Database: MongoDB Atlas +Auth: Google OAuth + server sessions +Splat viewing: Luma Web Library + three.js -## Downloading these files +## Demo flow for judges -First, you probably have a team repository somewhere (the link looks like: https://github.com/weblab-class/teammate1-teammate2-teammate3). You each should clone this (empty) repository by navigating to where you want your folder to be (**NOT in catbook**) and typing: git clone https://github.com/weblab-class/teammate1-teammate2-teammate3.git <-- with the correct link. +1 Open the deployed URL +2 Sign in +3 Go to Maps +4 Click an empty cell to reserve it +5 Paste a public Luma capture URL and click Attach +6 Click Walk to see the splat placed on the isometric grid +7 Click a filled cell in Maps and click Delete selected splat -Then, one of your team members will need to do the following: +## Local setup -First on GitHub, download the skeleton (this repository) as a zip file, by clicking Code -> Download as ZIP. (Do not clone it, since this will download extra files, like .git, which will lead to GitHub being confused). +Prereqs: Node 20, npm, MongoDB Atlas connection string, Google OAuth client id. -Then, drag over all of the files in this skeleton into your team's folder. **Make sure to also drag over the hidden files!** To see these hidden files, navigate to the skeleton in Finder/File Explorer and press command+shift+period (mac) or View > Show > Hidden items (windows). - -The files/folders you must drag over are: - -- .gitignore (hidden) -- .npmrc (hidden) -- .prettierrc (hidden) -- client (folder) -- package-lock.json -- package.json -- README.md -- server (folder) -- vite.config.js - -Additionally, you must create a .env file in the root directory. See .env.example for an example of what this file should look like. - -Then, in terminal, navigate to your teams folder and push all of the files to your team's GitHub repository as usual: - -- git add -A -- git commit -m "Skeleton code" -- git push - -Now the rest of your teammates can pull all these files with a 'git pull'! - -Post on Piazza if you run into any issues - -## What you need to change in the skeleton - -- Change the Frontend CLIENT_ID (Skeleton.js) to your team's CLIENT_ID (obtain this at https://bit.ly/gauth-mit) -- Change the Server CLIENT_ID to the same CLIENT_ID (auth.js) -- Change the Database SRV (mongoConnectionURL) for Atlas (server.js). You got this in the MongoDB setup. remember to replace and (should be no < or > in your SRV) (From: https://bit.ly/mongo-setup) -- Change the Database Name for MongoDB to whatever you put in the SRV to replace (server.js) -- (Optional) Add a favicon to your website at the path client/dist/favicon.ico -- (Optional) Update website title in client/dist/index.html -- (Optional) Update this README file ;) -- (Optional) Update the package.json file with your app name :) (line 2) - -## How to run this skeleton - -First, 'npm install' -Then open two separate terminals, and 'npm run dev' in the first, and 'npm start' in the second. -Then open http://localhost:5173 - - - -## Socket stuff - -Note: we'll be getting to this in lecture in week 2, so don't worry if you don't know it yet - -- If you're not using realtime updating or don't need server->client communication, you can remove socket entirely! (server-socket.js, client-socket.js, and anything that imports them) -- If you are using sockets, consider what you want to do with the FIXME in server-socket.js - -## Edit at your own risk - -the following files students do not need to edit. feel free to read them if you would like. +1 Install +```bash +npm install ``` -client/src/utilities.js -client/src/client-socket.js -server/validator.js -server/server-socket.js -.npmrc -.prettierrc -package-lock.json -vite.config.js -``` - -## Good luck on your project :) diff --git a/client/dist/.gitkeep b/client/dist/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/client/dist/assets/favicon-6ec0b96e.png b/client/dist/assets/favicon-6ec0b96e.png new file mode 100644 index 0000000..3cac42e Binary files /dev/null and b/client/dist/assets/favicon-6ec0b96e.png differ diff --git a/client/dist/assets/index-56928f4e.js b/client/dist/assets/index-56928f4e.js new file mode 100644 index 0000000..1dd9e62 --- /dev/null +++ b/client/dist/assets/index-56928f4e.js @@ -0,0 +1,3751 @@ +function lQ(e,A){for(var t=0;tn[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const A=document.createElement("link").relList;if(A&&A.supports&&A.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const r of i)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function t(i){const r={};return i.integrity&&(r.integrity=i.integrity),i.referrerPolicy&&(r.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?r.credentials="include":i.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function n(i){if(i.ep)return;i.ep=!0;const r=t(i);fetch(i.href,r)}})();function BQ(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var EQ={exports:{}},Mg={},cQ={exports:{}},re={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ys=Symbol.for("react.element"),Wf=Symbol.for("react.portal"),zf=Symbol.for("react.fragment"),qf=Symbol.for("react.strict_mode"),Vf=Symbol.for("react.profiler"),jf=Symbol.for("react.provider"),Xf=Symbol.for("react.context"),Zf=Symbol.for("react.forward_ref"),$f=Symbol.for("react.suspense"),Ap=Symbol.for("react.memo"),ep=Symbol.for("react.lazy"),zB=Symbol.iterator;function tp(e){return e===null||typeof e!="object"?null:(e=zB&&e[zB]||e["@@iterator"],typeof e=="function"?e:null)}var uQ={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},QQ=Object.assign,hQ={};function Bo(e,A,t){this.props=e,this.context=A,this.refs=hQ,this.updater=t||uQ}Bo.prototype.isReactComponent={};Bo.prototype.setState=function(e,A){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,A,"setState")};Bo.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function dQ(){}dQ.prototype=Bo.prototype;function vl(e,A,t){this.props=e,this.context=A,this.refs=hQ,this.updater=t||uQ}var Nl=vl.prototype=new dQ;Nl.constructor=vl;QQ(Nl,Bo.prototype);Nl.isPureReactComponent=!0;var qB=Array.isArray,fQ=Object.prototype.hasOwnProperty,Fl={current:null},pQ={key:!0,ref:!0,__self:!0,__source:!0};function mQ(e,A,t){var n,i={},r=null,o=null;if(A!=null)for(n in A.ref!==void 0&&(o=A.ref),A.key!==void 0&&(r=""+A.key),A)fQ.call(A,n)&&!pQ.hasOwnProperty(n)&&(i[n]=A[n]);var s=arguments.length-2;if(s===1)i.children=t;else if(1>>1,K=Y[_];if(0>>1;_i(hA,W))DAi(TA,hA)?(Y[_]=TA,Y[DA]=W,_=DA):(Y[_]=hA,Y[IA]=W,_=IA);else if(DAi(TA,W))Y[_]=TA,Y[DA]=W,_=DA;else break A}}return J}function i(Y,J){var W=Y.sortIndex-J.sortIndex;return W!==0?W:Y.id-J.id}if(typeof performance=="object"&&typeof performance.now=="function"){var r=performance;e.unstable_now=function(){return r.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var a=[],g=[],I=1,C=null,B=3,E=!1,d=!1,h=!1,c=typeof setTimeout=="function"?setTimeout:null,l=typeof clearTimeout=="function"?clearTimeout:null,u=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function Q(Y){for(var J=t(g);J!==null;){if(J.callback===null)n(g);else if(J.startTime<=Y)n(g),J.sortIndex=J.expirationTime,A(a,J);else break;J=t(g)}}function p(Y){if(h=!1,Q(Y),!d)if(t(a)!==null)d=!0,$(D);else{var J=t(g);J!==null&&j(p,J.startTime-Y)}}function D(Y,J){d=!1,h&&(h=!1,l(N),N=-1),E=!0;var W=B;try{for(Q(J),C=t(a);C!==null&&(!(C.expirationTime>J)||Y&&!P());){var _=C.callback;if(typeof _=="function"){C.callback=null,B=C.priorityLevel;var K=_(C.expirationTime<=J);J=e.unstable_now(),typeof K=="function"?C.callback=K:C===t(a)&&n(a),Q(J)}else n(a);C=t(a)}if(C!==null)var cA=!0;else{var IA=t(g);IA!==null&&j(p,IA.startTime-J),cA=!1}return cA}finally{C=null,B=W,E=!1}}var f=!1,y=null,N=-1,m=5,M=-1;function P(){return!(e.unstable_now()-MY||125_?(Y.sortIndex=W,A(g,Y),t(a)===null&&Y===t(g)&&(h?(l(N),N=-1):h=!0,j(p,W-_))):(Y.sortIndex=K,A(a,Y),d||E||(d=!0,$(D))),Y},e.unstable_shouldYield=P,e.unstable_wrapCallback=function(Y){var J=B;return function(){var W=B;B=J;try{return Y.apply(this,arguments)}finally{B=W}}}})(MQ);SQ.exports=MQ;var Ep=SQ.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var cp=AA,Ut=Ep;function oA(e){for(var A="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),cC=Object.prototype.hasOwnProperty,up=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,jB={},XB={};function Qp(e){return cC.call(XB,e)?!0:cC.call(jB,e)?!1:up.test(e)?XB[e]=!0:(jB[e]=!0,!1)}function hp(e,A,t,n){if(t!==null&&t.type===0)return!1;switch(typeof A){case"function":case"symbol":return!0;case"boolean":return n?!1:t!==null?!t.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function dp(e,A,t,n){if(A===null||typeof A>"u"||hp(e,A,t,n))return!0;if(n)return!1;if(t!==null)switch(t.type){case 3:return!A;case 4:return A===!1;case 5:return isNaN(A);case 6:return isNaN(A)||1>A}return!1}function Qt(e,A,t,n,i,r,o){this.acceptsBooleans=A===2||A===3||A===4,this.attributeName=n,this.attributeNamespace=i,this.mustUseProperty=t,this.propertyName=e,this.type=A,this.sanitizeURL=r,this.removeEmptyString=o}var At={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){At[e]=new Qt(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var A=e[0];At[A]=new Qt(A,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){At[e]=new Qt(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){At[e]=new Qt(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){At[e]=new Qt(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){At[e]=new Qt(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){At[e]=new Qt(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){At[e]=new Qt(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){At[e]=new Qt(e,5,!1,e.toLowerCase(),null,!1,!1)});var _l=/[\-:]([a-z])/g;function Ul(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var A=e.replace(_l,Ul);At[A]=new Qt(A,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var A=e.replace(_l,Ul);At[A]=new Qt(A,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var A=e.replace(_l,Ul);At[A]=new Qt(A,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){At[e]=new Qt(e,1,!1,e.toLowerCase(),null,!1,!1)});At.xlinkHref=new Qt("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){At[e]=new Qt(e,1,!1,e.toLowerCase(),null,!0,!0)});function Gl(e,A,t,n){var i=At.hasOwnProperty(A)?At[A]:null;(i!==null?i.type!==0:n||!(2s||i[o]!==r[s]){var a=` +`+i[o].replace(" at new "," at ");return e.displayName&&a.includes("")&&(a=a.replace("",e.displayName)),a}while(1<=o&&0<=s);break}}}finally{oI=!1,Error.prepareStackTrace=t}return(e=e?e.displayName||e.name:"")?Ho(e):""}function fp(e){switch(e.tag){case 5:return Ho(e.type);case 16:return Ho("Lazy");case 13:return Ho("Suspense");case 19:return Ho("SuspenseList");case 0:case 2:case 15:return e=sI(e.type,!1),e;case 11:return e=sI(e.type.render,!1),e;case 1:return e=sI(e.type,!0),e;default:return""}}function dC(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Nr:return"Fragment";case vr:return"Portal";case uC:return"Profiler";case Tl:return"StrictMode";case QC:return"Suspense";case hC:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case NQ:return(e.displayName||"Context")+".Consumer";case vQ:return(e._context.displayName||"Context")+".Provider";case kl:var A=e.render;return e=e.displayName,e||(e=A.displayName||A.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Hl:return A=e.displayName||null,A!==null?A:dC(e.type)||"Memo";case $n:A=e._payload,e=e._init;try{return dC(e(A))}catch{}}return null}function pp(e){var A=e.type;switch(e.tag){case 24:return"Cache";case 9:return(A.displayName||"Context")+".Consumer";case 10:return(A._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=A.render,e=e.displayName||e.name||"",A.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return A;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return dC(A);case 8:return A===Tl?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof A=="function")return A.displayName||A.name||null;if(typeof A=="string")return A}return null}function di(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function LQ(e){var A=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(A==="checkbox"||A==="radio")}function mp(e){var A=LQ(e)?"checked":"value",t=Object.getOwnPropertyDescriptor(e.constructor.prototype,A),n=""+e[A];if(!e.hasOwnProperty(A)&&typeof t<"u"&&typeof t.get=="function"&&typeof t.set=="function"){var i=t.get,r=t.set;return Object.defineProperty(e,A,{configurable:!0,get:function(){return i.call(this)},set:function(o){n=""+o,r.call(this,o)}}),Object.defineProperty(e,A,{enumerable:t.enumerable}),{getValue:function(){return n},setValue:function(o){n=""+o},stopTracking:function(){e._valueTracker=null,delete e[A]}}}}function xs(e){e._valueTracker||(e._valueTracker=mp(e))}function xQ(e){if(!e)return!1;var A=e._valueTracker;if(!A)return!0;var t=A.getValue(),n="";return e&&(n=LQ(e)?e.checked?"true":"false":e.value),e=n,e!==t?(A.setValue(e),!0):!1}function Ka(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function fC(e,A){var t=A.checked;return Ne({},A,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:t??e._wrapperState.initialChecked})}function $B(e,A){var t=A.defaultValue==null?"":A.defaultValue,n=A.checked!=null?A.checked:A.defaultChecked;t=di(A.value!=null?A.value:t),e._wrapperState={initialChecked:n,initialValue:t,controlled:A.type==="checkbox"||A.type==="radio"?A.checked!=null:A.value!=null}}function _Q(e,A){A=A.checked,A!=null&&Gl(e,"checked",A,!1)}function pC(e,A){_Q(e,A);var t=di(A.value),n=A.type;if(t!=null)n==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+t):e.value!==""+t&&(e.value=""+t);else if(n==="submit"||n==="reset"){e.removeAttribute("value");return}A.hasOwnProperty("value")?mC(e,A.type,t):A.hasOwnProperty("defaultValue")&&mC(e,A.type,di(A.defaultValue)),A.checked==null&&A.defaultChecked!=null&&(e.defaultChecked=!!A.defaultChecked)}function AE(e,A,t){if(A.hasOwnProperty("value")||A.hasOwnProperty("defaultValue")){var n=A.type;if(!(n!=="submit"&&n!=="reset"||A.value!==void 0&&A.value!==null))return;A=""+e._wrapperState.initialValue,t||A===e.value||(e.value=A),e.defaultValue=A}t=e.name,t!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,t!==""&&(e.name=t)}function mC(e,A,t){(A!=="number"||Ka(e.ownerDocument)!==e)&&(t==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+t&&(e.defaultValue=""+t))}var bo=Array.isArray;function Kr(e,A,t,n){if(e=e.options,A){A={};for(var i=0;i"+A.valueOf().toString()+"",A=_s.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;A.firstChild;)e.appendChild(A.firstChild)}});function rs(e,A){if(A){var t=e.firstChild;if(t&&t===e.lastChild&&t.nodeType===3){t.nodeValue=A;return}}e.textContent=A}var Wo={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},wp=["Webkit","ms","Moz","O"];Object.keys(Wo).forEach(function(e){wp.forEach(function(A){A=A+e.charAt(0).toUpperCase()+e.substring(1),Wo[A]=Wo[e]})});function kQ(e,A,t){return A==null||typeof A=="boolean"||A===""?"":t||typeof A!="number"||A===0||Wo.hasOwnProperty(e)&&Wo[e]?(""+A).trim():A+"px"}function HQ(e,A){e=e.style;for(var t in A)if(A.hasOwnProperty(t)){var n=t.indexOf("--")===0,i=kQ(t,A[t],n);t==="float"&&(t="cssFloat"),n?e.setProperty(t,i):e[t]=i}}var yp=Ne({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function DC(e,A){if(A){if(yp[e]&&(A.children!=null||A.dangerouslySetInnerHTML!=null))throw Error(oA(137,e));if(A.dangerouslySetInnerHTML!=null){if(A.children!=null)throw Error(oA(60));if(typeof A.dangerouslySetInnerHTML!="object"||!("__html"in A.dangerouslySetInnerHTML))throw Error(oA(61))}if(A.style!=null&&typeof A.style!="object")throw Error(oA(62))}}function SC(e,A){if(e.indexOf("-")===-1)return typeof A.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var MC=null;function bl(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var RC=null,Pr=null,Jr=null;function nE(e){if(e=Ms(e)){if(typeof RC!="function")throw Error(oA(280));var A=e.stateNode;A&&(A=Lg(A),RC(e.stateNode,e.type,A))}}function bQ(e){Pr?Jr?Jr.push(e):Jr=[e]:Pr=e}function OQ(){if(Pr){var e=Pr,A=Jr;if(Jr=Pr=null,nE(e),A)for(e=0;e>>=0,e===0?32:31-(Up(e)/Gp|0)|0}var Us=64,Gs=4194304;function Oo(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function za(e,A){var t=e.pendingLanes;if(t===0)return 0;var n=0,i=e.suspendedLanes,r=e.pingedLanes,o=t&268435455;if(o!==0){var s=o&~i;s!==0?n=Oo(s):(r&=o,r!==0&&(n=Oo(r)))}else o=t&~i,o!==0?n=Oo(o):r!==0&&(n=Oo(r));if(n===0)return 0;if(A!==0&&A!==n&&!(A&i)&&(i=n&-n,r=A&-A,i>=r||i===16&&(r&4194240)!==0))return A;if(n&4&&(n|=t&16),A=e.entangledLanes,A!==0)for(e=e.entanglements,A&=n;0t;t++)A.push(e);return A}function Ds(e,A,t){e.pendingLanes|=A,A!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,A=31-sn(A),e[A]=t}function bp(e,A){var t=e.pendingLanes&~A;e.pendingLanes=A,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=A,e.mutableReadLanes&=A,e.entangledLanes&=A,A=e.entanglements;var n=e.eventTimes;for(e=e.expirationTimes;0=qo),lE=String.fromCharCode(32),BE=!1;function sh(e,A){switch(e){case"keyup":return Em.indexOf(A.keyCode)!==-1;case"keydown":return A.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ah(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Fr=!1;function um(e,A){switch(e){case"compositionend":return ah(A);case"keypress":return A.which!==32?null:(BE=!0,lE);case"textInput":return e=A.data,e===lE&&BE?null:e;default:return null}}function Qm(e,A){if(Fr)return e==="compositionend"||!ql&&sh(e,A)?(e=rh(),Da=Jl=ii=null,Fr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(A.ctrlKey||A.altKey||A.metaKey)||A.ctrlKey&&A.altKey){if(A.char&&1=A)return{node:t,offset:A-e};e=n}A:{for(;t;){if(t.nextSibling){t=t.nextSibling;break A}t=t.parentNode}t=void 0}t=QE(t)}}function lh(e,A){return e&&A?e===A?!0:e&&e.nodeType===3?!1:A&&A.nodeType===3?lh(e,A.parentNode):"contains"in e?e.contains(A):e.compareDocumentPosition?!!(e.compareDocumentPosition(A)&16):!1:!1}function Bh(){for(var e=window,A=Ka();A instanceof e.HTMLIFrameElement;){try{var t=typeof A.contentWindow.location.href=="string"}catch{t=!1}if(t)e=A.contentWindow;else break;A=Ka(e.document)}return A}function Vl(e){var A=e&&e.nodeName&&e.nodeName.toLowerCase();return A&&(A==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||A==="textarea"||e.contentEditable==="true")}function Sm(e){var A=Bh(),t=e.focusedElem,n=e.selectionRange;if(A!==t&&t&&t.ownerDocument&&lh(t.ownerDocument.documentElement,t)){if(n!==null&&Vl(t)){if(A=n.start,e=n.end,e===void 0&&(e=A),"selectionStart"in t)t.selectionStart=A,t.selectionEnd=Math.min(e,t.value.length);else if(e=(A=t.ownerDocument||document)&&A.defaultView||window,e.getSelection){e=e.getSelection();var i=t.textContent.length,r=Math.min(n.start,i);n=n.end===void 0?r:Math.min(n.end,i),!e.extend&&r>n&&(i=n,n=r,r=i),i=hE(t,r);var o=hE(t,n);i&&o&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(A=A.createRange(),A.setStart(i.node,i.offset),e.removeAllRanges(),r>n?(e.addRange(A),e.extend(o.node,o.offset)):(A.setEnd(o.node,o.offset),e.addRange(A)))}}for(A=[],e=t;e=e.parentNode;)e.nodeType===1&&A.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t=document.documentMode,Lr=null,_C=null,jo=null,UC=!1;function dE(e,A,t){var n=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;UC||Lr==null||Lr!==Ka(n)||(n=Lr,"selectionStart"in n&&Vl(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),jo&&Cs(jo,n)||(jo=n,n=ja(_C,"onSelect"),0Ur||(e.current=OC[Ur],OC[Ur]=null,Ur--)}function fe(e,A){Ur++,OC[Ur]=e.current,e.current=A}var fi={},gt=mi(fi),mt=mi(!1),Vi=fi;function Ao(e,A){var t=e.type.contextTypes;if(!t)return fi;var n=e.stateNode;if(n&&n.__reactInternalMemoizedUnmaskedChildContext===A)return n.__reactInternalMemoizedMaskedChildContext;var i={},r;for(r in t)i[r]=A[r];return n&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=A,e.__reactInternalMemoizedMaskedChildContext=i),i}function wt(e){return e=e.childContextTypes,e!=null}function Za(){De(mt),De(gt)}function SE(e,A,t){if(gt.current!==fi)throw Error(oA(168));fe(gt,A),fe(mt,t)}function mh(e,A,t){var n=e.stateNode;if(A=A.childContextTypes,typeof n.getChildContext!="function")return t;n=n.getChildContext();for(var i in n)if(!(i in A))throw Error(oA(108,pp(e)||"Unknown",i));return Ne({},t,n)}function $a(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||fi,Vi=gt.current,fe(gt,e),fe(mt,mt.current),!0}function ME(e,A,t){var n=e.stateNode;if(!n)throw Error(oA(169));t?(e=mh(e,A,Vi),n.__reactInternalMemoizedMergedChildContext=e,De(mt),De(gt),fe(gt,e)):De(mt),fe(mt,t)}var Nn=null,xg=!1,pI=!1;function wh(e){Nn===null?Nn=[e]:Nn.push(e)}function km(e){xg=!0,wh(e)}function wi(){if(!pI&&Nn!==null){pI=!0;var e=0,A=le;try{var t=Nn;for(le=1;e>=o,i-=o,Ln=1<<32-sn(A)+i|t<N?(m=y,y=null):m=y.sibling;var M=B(l,y,Q[N],p);if(M===null){y===null&&(y=m);break}e&&y&&M.alternate===null&&A(l,y),u=r(M,u,N),f===null?D=M:f.sibling=M,f=M,y=m}if(N===Q.length)return t(l,y),Me&&Li(l,N),D;if(y===null){for(;NN?(m=y,y=null):m=y.sibling;var P=B(l,y,M.value,p);if(P===null){y===null&&(y=m);break}e&&y&&P.alternate===null&&A(l,y),u=r(P,u,N),f===null?D=P:f.sibling=P,f=P,y=m}if(M.done)return t(l,y),Me&&Li(l,N),D;if(y===null){for(;!M.done;N++,M=Q.next())M=C(l,M.value,p),M!==null&&(u=r(M,u,N),f===null?D=M:f.sibling=M,f=M);return Me&&Li(l,N),D}for(y=n(l,y);!M.done;N++,M=Q.next())M=E(y,l,N,M.value,p),M!==null&&(e&&M.alternate!==null&&y.delete(M.key===null?N:M.key),u=r(M,u,N),f===null?D=M:f.sibling=M,f=M);return e&&y.forEach(function(X){return A(l,X)}),Me&&Li(l,N),D}function c(l,u,Q,p){if(typeof Q=="object"&&Q!==null&&Q.type===Nr&&Q.key===null&&(Q=Q.props.children),typeof Q=="object"&&Q!==null){switch(Q.$$typeof){case Ls:A:{for(var D=Q.key,f=u;f!==null;){if(f.key===D){if(D=Q.type,D===Nr){if(f.tag===7){t(l,f.sibling),u=i(f,Q.props.children),u.return=l,l=u;break A}}else if(f.elementType===D||typeof D=="object"&&D!==null&&D.$$typeof===$n&&NE(D)===f.type){t(l,f.sibling),u=i(f,Q.props),u.ref=Ro(l,f,Q),u.return=l,l=u;break A}t(l,f);break}else A(l,f);f=f.sibling}Q.type===Nr?(u=Pi(Q.props.children,l.mode,p,Q.key),u.return=l,l=u):(p=xa(Q.type,Q.key,Q.props,null,l.mode,p),p.ref=Ro(l,u,Q),p.return=l,l=p)}return o(l);case vr:A:{for(f=Q.key;u!==null;){if(u.key===f)if(u.tag===4&&u.stateNode.containerInfo===Q.containerInfo&&u.stateNode.implementation===Q.implementation){t(l,u.sibling),u=i(u,Q.children||[]),u.return=l,l=u;break A}else{t(l,u);break}else A(l,u);u=u.sibling}u=vI(Q,l.mode,p),u.return=l,l=u}return o(l);case $n:return f=Q._init,c(l,u,f(Q._payload),p)}if(bo(Q))return d(l,u,Q,p);if(wo(Q))return h(l,u,Q,p);Ks(l,Q)}return typeof Q=="string"&&Q!==""||typeof Q=="number"?(Q=""+Q,u!==null&&u.tag===6?(t(l,u.sibling),u=i(u,Q),u.return=l,l=u):(t(l,u),u=RI(Q,l.mode,p),u.return=l,l=u),o(l)):t(l,u)}return c}var to=Mh(!0),Rh=Mh(!1),tg=mi(null),ng=null,kr=null,$l=null;function AB(){$l=kr=ng=null}function eB(e){var A=tg.current;De(tg),e._currentValue=A}function PC(e,A,t){for(;e!==null;){var n=e.alternate;if((e.childLanes&A)!==A?(e.childLanes|=A,n!==null&&(n.childLanes|=A)):n!==null&&(n.childLanes&A)!==A&&(n.childLanes|=A),e===t)break;e=e.return}}function zr(e,A){ng=e,$l=kr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&A&&(pt=!0),e.firstContext=null)}function zt(e){var A=e._currentValue;if($l!==e)if(e={context:e,memoizedValue:A,next:null},kr===null){if(ng===null)throw Error(oA(308));kr=e,ng.dependencies={lanes:0,firstContext:e}}else kr=kr.next=e;return A}var bi=null;function tB(e){bi===null?bi=[e]:bi.push(e)}function vh(e,A,t,n){var i=A.interleaved;return i===null?(t.next=t,tB(A)):(t.next=i.next,i.next=t),A.interleaved=t,Hn(e,n)}function Hn(e,A){e.lanes|=A;var t=e.alternate;for(t!==null&&(t.lanes|=A),t=e,e=e.return;e!==null;)e.childLanes|=A,t=e.alternate,t!==null&&(t.childLanes|=A),t=e,e=e.return;return t.tag===3?t.stateNode:null}var Ai=!1;function nB(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Nh(e,A){e=e.updateQueue,A.updateQueue===e&&(A.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Un(e,A){return{eventTime:e,lane:A,tag:0,payload:null,callback:null,next:null}}function li(e,A,t){var n=e.updateQueue;if(n===null)return null;if(n=n.shared,ge&2){var i=n.pending;return i===null?A.next=A:(A.next=i.next,i.next=A),n.pending=A,Hn(e,t)}return i=n.interleaved,i===null?(A.next=A,tB(n)):(A.next=i.next,i.next=A),n.interleaved=A,Hn(e,t)}function Ma(e,A,t){if(A=A.updateQueue,A!==null&&(A=A.shared,(t&4194240)!==0)){var n=A.lanes;n&=e.pendingLanes,t|=n,A.lanes=t,Yl(e,t)}}function FE(e,A){var t=e.updateQueue,n=e.alternate;if(n!==null&&(n=n.updateQueue,t===n)){var i=null,r=null;if(t=t.firstBaseUpdate,t!==null){do{var o={eventTime:t.eventTime,lane:t.lane,tag:t.tag,payload:t.payload,callback:t.callback,next:null};r===null?i=r=o:r=r.next=o,t=t.next}while(t!==null);r===null?i=r=A:r=r.next=A}else i=r=A;t={baseState:n.baseState,firstBaseUpdate:i,lastBaseUpdate:r,shared:n.shared,effects:n.effects},e.updateQueue=t;return}e=t.lastBaseUpdate,e===null?t.firstBaseUpdate=A:e.next=A,t.lastBaseUpdate=A}function ig(e,A,t,n){var i=e.updateQueue;Ai=!1;var r=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var a=s,g=a.next;a.next=null,o===null?r=g:o.next=g,o=a;var I=e.alternate;I!==null&&(I=I.updateQueue,s=I.lastBaseUpdate,s!==o&&(s===null?I.firstBaseUpdate=g:s.next=g,I.lastBaseUpdate=a))}if(r!==null){var C=i.baseState;o=0,I=g=a=null,s=r;do{var B=s.lane,E=s.eventTime;if((n&B)===B){I!==null&&(I=I.next={eventTime:E,lane:0,tag:s.tag,payload:s.payload,callback:s.callback,next:null});A:{var d=e,h=s;switch(B=A,E=t,h.tag){case 1:if(d=h.payload,typeof d=="function"){C=d.call(E,C,B);break A}C=d;break A;case 3:d.flags=d.flags&-65537|128;case 0:if(d=h.payload,B=typeof d=="function"?d.call(E,C,B):d,B==null)break A;C=Ne({},C,B);break A;case 2:Ai=!0}}s.callback!==null&&s.lane!==0&&(e.flags|=64,B=i.effects,B===null?i.effects=[s]:B.push(s))}else E={eventTime:E,lane:B,tag:s.tag,payload:s.payload,callback:s.callback,next:null},I===null?(g=I=E,a=C):I=I.next=E,o|=B;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;B=s,s=B.next,B.next=null,i.lastBaseUpdate=B,i.shared.pending=null}}while(1);if(I===null&&(a=C),i.baseState=a,i.firstBaseUpdate=g,i.lastBaseUpdate=I,A=i.shared.interleaved,A!==null){i=A;do o|=i.lane,i=i.next;while(i!==A)}else r===null&&(i.shared.lanes=0);Zi|=o,e.lanes=o,e.memoizedState=C}}function LE(e,A,t){if(e=A.effects,A.effects=null,e!==null)for(A=0;At?t:4,e(!0);var n=wI.transition;wI.transition={};try{e(!1),A()}finally{le=t,wI.transition=n}}function zh(){return qt().memoizedState}function Ym(e,A,t){var n=Ei(e);if(t={lane:n,action:t,hasEagerState:!1,eagerState:null,next:null},qh(e))Vh(A,t);else if(t=vh(e,A,t,n),t!==null){var i=Et();an(t,e,n,i),jh(t,A,n)}}function Km(e,A,t){var n=Ei(e),i={lane:n,action:t,hasEagerState:!1,eagerState:null,next:null};if(qh(e))Vh(A,i);else{var r=e.alternate;if(e.lanes===0&&(r===null||r.lanes===0)&&(r=A.lastRenderedReducer,r!==null))try{var o=A.lastRenderedState,s=r(o,t);if(i.hasEagerState=!0,i.eagerState=s,gn(s,o)){var a=A.interleaved;a===null?(i.next=i,tB(A)):(i.next=a.next,a.next=i),A.interleaved=i;return}}catch{}finally{}t=vh(e,A,i,n),t!==null&&(i=Et(),an(t,e,n,i),jh(t,A,n))}}function qh(e){var A=e.alternate;return e===ve||A!==null&&A===ve}function Vh(e,A){Xo=og=!0;var t=e.pending;t===null?A.next=A:(A.next=t.next,t.next=A),e.pending=A}function jh(e,A,t){if(t&4194240){var n=A.lanes;n&=e.pendingLanes,t|=n,A.lanes=t,Yl(e,t)}}var sg={readContext:zt,useCallback:et,useContext:et,useEffect:et,useImperativeHandle:et,useInsertionEffect:et,useLayoutEffect:et,useMemo:et,useReducer:et,useRef:et,useState:et,useDebugValue:et,useDeferredValue:et,useTransition:et,useMutableSource:et,useSyncExternalStore:et,useId:et,unstable_isNewReconciler:!1},Pm={readContext:zt,useCallback:function(e,A){return Cn().memoizedState=[e,A===void 0?null:A],e},useContext:zt,useEffect:_E,useImperativeHandle:function(e,A,t){return t=t!=null?t.concat([e]):null,va(4194308,4,Yh.bind(null,A,e),t)},useLayoutEffect:function(e,A){return va(4194308,4,e,A)},useInsertionEffect:function(e,A){return va(4,2,e,A)},useMemo:function(e,A){var t=Cn();return A=A===void 0?null:A,e=e(),t.memoizedState=[e,A],e},useReducer:function(e,A,t){var n=Cn();return A=t!==void 0?t(A):A,n.memoizedState=n.baseState=A,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:A},n.queue=e,e=e.dispatch=Ym.bind(null,ve,e),[n.memoizedState,e]},useRef:function(e){var A=Cn();return e={current:e},A.memoizedState=e},useState:xE,useDebugValue:CB,useDeferredValue:function(e){return Cn().memoizedState=e},useTransition:function(){var e=xE(!1),A=e[0];return e=Om.bind(null,e[1]),Cn().memoizedState=e,[A,e]},useMutableSource:function(){},useSyncExternalStore:function(e,A,t){var n=ve,i=Cn();if(Me){if(t===void 0)throw Error(oA(407));t=t()}else{if(t=A(),Ve===null)throw Error(oA(349));Xi&30||_h(n,A,t)}i.memoizedState=t;var r={value:t,getSnapshot:A};return i.queue=r,_E(Gh.bind(null,n,r,e),[e]),n.flags|=2048,ds(9,Uh.bind(null,n,r,t,A),void 0,null),t},useId:function(){var e=Cn(),A=Ve.identifierPrefix;if(Me){var t=xn,n=Ln;t=(n&~(1<<32-sn(n)-1)).toString(32)+t,A=":"+A+"R"+t,t=Qs++,0<\/script>",e=e.removeChild(e.firstChild)):typeof n.is=="string"?e=o.createElement(t,{is:n.is}):(e=o.createElement(t),t==="select"&&(o=e,n.multiple?o.multiple=!0:n.size&&(o.size=n.size))):e=o.createElementNS(e,t),e[Bn]=A,e[Es]=n,od(e,A,!1,!1),A.stateNode=e;A:{switch(o=SC(t,n),t){case"dialog":me("cancel",e),me("close",e),i=n;break;case"iframe":case"object":case"embed":me("load",e),i=n;break;case"video":case"audio":for(i=0;iro&&(A.flags|=128,n=!0,vo(r,!1),A.lanes=4194304)}else{if(!n)if(e=rg(o),e!==null){if(A.flags|=128,n=!0,t=e.updateQueue,t!==null&&(A.updateQueue=t,A.flags|=4),vo(r,!0),r.tail===null&&r.tailMode==="hidden"&&!o.alternate&&!Me)return tt(A),null}else 2*Ue()-r.renderingStartTime>ro&&t!==1073741824&&(A.flags|=128,n=!0,vo(r,!1),A.lanes=4194304);r.isBackwards?(o.sibling=A.child,A.child=o):(t=r.last,t!==null?t.sibling=o:A.child=o,r.last=o)}return r.tail!==null?(A=r.tail,r.rendering=A,r.tail=A.sibling,r.renderingStartTime=Ue(),A.sibling=null,t=Re.current,fe(Re,n?t&1|2:t&1),A):(tt(A),null);case 22:case 23:return QB(),n=A.memoizedState!==null,e!==null&&e.memoizedState!==null!==n&&(A.flags|=8192),n&&A.mode&1?Ft&1073741824&&(tt(A),A.subtreeFlags&6&&(A.flags|=8192)):tt(A),null;case 24:return null;case 25:return null}throw Error(oA(156,A.tag))}function Zm(e,A){switch(Xl(A),A.tag){case 1:return wt(A.type)&&Za(),e=A.flags,e&65536?(A.flags=e&-65537|128,A):null;case 3:return no(),De(mt),De(gt),oB(),e=A.flags,e&65536&&!(e&128)?(A.flags=e&-65537|128,A):null;case 5:return rB(A),null;case 13:if(De(Re),e=A.memoizedState,e!==null&&e.dehydrated!==null){if(A.alternate===null)throw Error(oA(340));eo()}return e=A.flags,e&65536?(A.flags=e&-65537|128,A):null;case 19:return De(Re),null;case 4:return no(),null;case 10:return eB(A.type._context),null;case 22:case 23:return QB(),null;case 24:return null;default:return null}}var Js=!1,rt=!1,$m=typeof WeakSet=="function"?WeakSet:Set,yA=null;function Hr(e,A){var t=e.ref;if(t!==null)if(typeof t=="function")try{t(null)}catch(n){Le(e,A,n)}else t.current=null}function $C(e,A,t){try{t()}catch(n){Le(e,A,n)}}var JE=!1;function A0(e,A){if(GC=qa,e=Bh(),Vl(e)){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else A:{t=(t=e.ownerDocument)&&t.defaultView||window;var n=t.getSelection&&t.getSelection();if(n&&n.rangeCount!==0){t=n.anchorNode;var i=n.anchorOffset,r=n.focusNode;n=n.focusOffset;try{t.nodeType,r.nodeType}catch{t=null;break A}var o=0,s=-1,a=-1,g=0,I=0,C=e,B=null;e:for(;;){for(var E;C!==t||i!==0&&C.nodeType!==3||(s=o+i),C!==r||n!==0&&C.nodeType!==3||(a=o+n),C.nodeType===3&&(o+=C.nodeValue.length),(E=C.firstChild)!==null;)B=C,C=E;for(;;){if(C===e)break e;if(B===t&&++g===i&&(s=o),B===r&&++I===n&&(a=o),(E=C.nextSibling)!==null)break;C=B,B=C.parentNode}C=E}t=s===-1||a===-1?null:{start:s,end:a}}else t=null}t=t||{start:0,end:0}}else t=null;for(TC={focusedElem:e,selectionRange:t},qa=!1,yA=A;yA!==null;)if(A=yA,e=A.child,(A.subtreeFlags&1028)!==0&&e!==null)e.return=A,yA=e;else for(;yA!==null;){A=yA;try{var d=A.alternate;if(A.flags&1024)switch(A.tag){case 0:case 11:case 15:break;case 1:if(d!==null){var h=d.memoizedProps,c=d.memoizedState,l=A.stateNode,u=l.getSnapshotBeforeUpdate(A.elementType===A.type?h:Zt(A.type,h),c);l.__reactInternalSnapshotBeforeUpdate=u}break;case 3:var Q=A.stateNode.containerInfo;Q.nodeType===1?Q.textContent="":Q.nodeType===9&&Q.documentElement&&Q.removeChild(Q.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(oA(163))}}catch(p){Le(A,A.return,p)}if(e=A.sibling,e!==null){e.return=A.return,yA=e;break}yA=A.return}return d=JE,JE=!1,d}function Zo(e,A,t){var n=A.updateQueue;if(n=n!==null?n.lastEffect:null,n!==null){var i=n=n.next;do{if((i.tag&e)===e){var r=i.destroy;i.destroy=void 0,r!==void 0&&$C(A,t,r)}i=i.next}while(i!==n)}}function Gg(e,A){if(A=A.updateQueue,A=A!==null?A.lastEffect:null,A!==null){var t=A=A.next;do{if((t.tag&e)===e){var n=t.create;t.destroy=n()}t=t.next}while(t!==A)}}function Al(e){var A=e.ref;if(A!==null){var t=e.stateNode;switch(e.tag){case 5:e=t;break;default:e=t}typeof A=="function"?A(e):A.current=e}}function gd(e){var A=e.alternate;A!==null&&(e.alternate=null,gd(A)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(A=e.stateNode,A!==null&&(delete A[Bn],delete A[Es],delete A[bC],delete A[Gm],delete A[Tm])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Id(e){return e.tag===5||e.tag===3||e.tag===4}function WE(e){A:for(;;){for(;e.sibling===null;){if(e.return===null||Id(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue A;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function el(e,A,t){var n=e.tag;if(n===5||n===6)e=e.stateNode,A?t.nodeType===8?t.parentNode.insertBefore(e,A):t.insertBefore(e,A):(t.nodeType===8?(A=t.parentNode,A.insertBefore(e,t)):(A=t,A.appendChild(e)),t=t._reactRootContainer,t!=null||A.onclick!==null||(A.onclick=Xa));else if(n!==4&&(e=e.child,e!==null))for(el(e,A,t),e=e.sibling;e!==null;)el(e,A,t),e=e.sibling}function tl(e,A,t){var n=e.tag;if(n===5||n===6)e=e.stateNode,A?t.insertBefore(e,A):t.appendChild(e);else if(n!==4&&(e=e.child,e!==null))for(tl(e,A,t),e=e.sibling;e!==null;)tl(e,A,t),e=e.sibling}var Xe=null,$t=!1;function Wn(e,A,t){for(t=t.child;t!==null;)Cd(e,A,t),t=t.sibling}function Cd(e,A,t){if(cn&&typeof cn.onCommitFiberUnmount=="function")try{cn.onCommitFiberUnmount(Rg,t)}catch{}switch(t.tag){case 5:rt||Hr(t,A);case 6:var n=Xe,i=$t;Xe=null,Wn(e,A,t),Xe=n,$t=i,Xe!==null&&($t?(e=Xe,t=t.stateNode,e.nodeType===8?e.parentNode.removeChild(t):e.removeChild(t)):Xe.removeChild(t.stateNode));break;case 18:Xe!==null&&($t?(e=Xe,t=t.stateNode,e.nodeType===8?fI(e.parentNode,t):e.nodeType===1&&fI(e,t),gs(e)):fI(Xe,t.stateNode));break;case 4:n=Xe,i=$t,Xe=t.stateNode.containerInfo,$t=!0,Wn(e,A,t),Xe=n,$t=i;break;case 0:case 11:case 14:case 15:if(!rt&&(n=t.updateQueue,n!==null&&(n=n.lastEffect,n!==null))){i=n=n.next;do{var r=i,o=r.destroy;r=r.tag,o!==void 0&&(r&2||r&4)&&$C(t,A,o),i=i.next}while(i!==n)}Wn(e,A,t);break;case 1:if(!rt&&(Hr(t,A),n=t.stateNode,typeof n.componentWillUnmount=="function"))try{n.props=t.memoizedProps,n.state=t.memoizedState,n.componentWillUnmount()}catch(s){Le(t,A,s)}Wn(e,A,t);break;case 21:Wn(e,A,t);break;case 22:t.mode&1?(rt=(n=rt)||t.memoizedState!==null,Wn(e,A,t),rt=n):Wn(e,A,t);break;default:Wn(e,A,t)}}function zE(e){var A=e.updateQueue;if(A!==null){e.updateQueue=null;var t=e.stateNode;t===null&&(t=e.stateNode=new $m),A.forEach(function(n){var i=g0.bind(null,e,n);t.has(n)||(t.add(n),n.then(i,i))})}}function Vt(e,A){var t=A.deletions;if(t!==null)for(var n=0;ni&&(i=o),n&=~r}if(n=i,n=Ue()-n,n=(120>n?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*t0(n/1960))-n,10e?16:e,ri===null)var n=!1;else{if(e=ri,ri=null,Ig=0,ge&6)throw Error(oA(331));var i=ge;for(ge|=4,yA=e.current;yA!==null;){var r=yA,o=r.child;if(yA.flags&16){var s=r.deletions;if(s!==null){for(var a=0;aUe()-cB?Ki(e,0):EB|=t),yt(e,A)}function dd(e,A){A===0&&(e.mode&1?(A=Gs,Gs<<=1,!(Gs&130023424)&&(Gs=4194304)):A=1);var t=Et();e=Hn(e,A),e!==null&&(Ds(e,A,t),yt(e,t))}function a0(e){var A=e.memoizedState,t=0;A!==null&&(t=A.retryLane),dd(e,t)}function g0(e,A){var t=0;switch(e.tag){case 13:var n=e.stateNode,i=e.memoizedState;i!==null&&(t=i.retryLane);break;case 19:n=e.stateNode;break;default:throw Error(oA(314))}n!==null&&n.delete(A),dd(e,t)}var fd;fd=function(e,A,t){if(e!==null)if(e.memoizedProps!==A.pendingProps||mt.current)pt=!0;else{if(!(e.lanes&t)&&!(A.flags&128))return pt=!1,jm(e,A,t);pt=!!(e.flags&131072)}else pt=!1,Me&&A.flags&1048576&&yh(A,eg,A.index);switch(A.lanes=0,A.tag){case 2:var n=A.type;Na(e,A),e=A.pendingProps;var i=Ao(A,gt.current);zr(A,t),i=aB(null,A,n,e,i,t);var r=gB();return A.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(A.tag=1,A.memoizedState=null,A.updateQueue=null,wt(n)?(r=!0,$a(A)):r=!1,A.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,nB(A),i.updater=Ug,A.stateNode=i,i._reactInternals=A,WC(A,n,e,t),A=VC(null,A,n,!0,r,t)):(A.tag=0,Me&&r&&jl(A),Bt(null,A,i,t),A=A.child),A;case 16:n=A.elementType;A:{switch(Na(e,A),e=A.pendingProps,i=n._init,n=i(n._payload),A.type=n,i=A.tag=C0(n),e=Zt(n,e),i){case 0:A=qC(null,A,n,e,t);break A;case 1:A=YE(null,A,n,e,t);break A;case 11:A=bE(null,A,n,e,t);break A;case 14:A=OE(null,A,n,Zt(n.type,e),t);break A}throw Error(oA(306,n,""))}return A;case 0:return n=A.type,i=A.pendingProps,i=A.elementType===n?i:Zt(n,i),qC(e,A,n,i,t);case 1:return n=A.type,i=A.pendingProps,i=A.elementType===n?i:Zt(n,i),YE(e,A,n,i,t);case 3:A:{if(nd(A),e===null)throw Error(oA(387));n=A.pendingProps,r=A.memoizedState,i=r.element,Nh(e,A),ig(A,n,null,t);var o=A.memoizedState;if(n=o.element,r.isDehydrated)if(r={element:n,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},A.updateQueue.baseState=r,A.memoizedState=r,A.flags&256){i=io(Error(oA(423)),A),A=KE(e,A,n,t,i);break A}else if(n!==i){i=io(Error(oA(424)),A),A=KE(e,A,n,t,i);break A}else for(xt=Ci(A.stateNode.containerInfo.firstChild),_t=A,Me=!0,tn=null,t=Rh(A,null,n,t),A.child=t;t;)t.flags=t.flags&-3|4096,t=t.sibling;else{if(eo(),n===i){A=bn(e,A,t);break A}Bt(e,A,n,t)}A=A.child}return A;case 5:return Fh(A),e===null&&KC(A),n=A.type,i=A.pendingProps,r=e!==null?e.memoizedProps:null,o=i.children,kC(n,i)?o=null:r!==null&&kC(n,r)&&(A.flags|=32),td(e,A),Bt(e,A,o,t),A.child;case 6:return e===null&&KC(A),null;case 13:return id(e,A,t);case 4:return iB(A,A.stateNode.containerInfo),n=A.pendingProps,e===null?A.child=to(A,null,n,t):Bt(e,A,n,t),A.child;case 11:return n=A.type,i=A.pendingProps,i=A.elementType===n?i:Zt(n,i),bE(e,A,n,i,t);case 7:return Bt(e,A,A.pendingProps,t),A.child;case 8:return Bt(e,A,A.pendingProps.children,t),A.child;case 12:return Bt(e,A,A.pendingProps.children,t),A.child;case 10:A:{if(n=A.type._context,i=A.pendingProps,r=A.memoizedProps,o=i.value,fe(tg,n._currentValue),n._currentValue=o,r!==null)if(gn(r.value,o)){if(r.children===i.children&&!mt.current){A=bn(e,A,t);break A}}else for(r=A.child,r!==null&&(r.return=A);r!==null;){var s=r.dependencies;if(s!==null){o=r.child;for(var a=s.firstContext;a!==null;){if(a.context===n){if(r.tag===1){a=Un(-1,t&-t),a.tag=2;var g=r.updateQueue;if(g!==null){g=g.shared;var I=g.pending;I===null?a.next=a:(a.next=I.next,I.next=a),g.pending=a}}r.lanes|=t,a=r.alternate,a!==null&&(a.lanes|=t),PC(r.return,t,A),s.lanes|=t;break}a=a.next}}else if(r.tag===10)o=r.type===A.type?null:r.child;else if(r.tag===18){if(o=r.return,o===null)throw Error(oA(341));o.lanes|=t,s=o.alternate,s!==null&&(s.lanes|=t),PC(o,t,A),o=r.sibling}else o=r.child;if(o!==null)o.return=r;else for(o=r;o!==null;){if(o===A){o=null;break}if(r=o.sibling,r!==null){r.return=o.return,o=r;break}o=o.return}r=o}Bt(e,A,i.children,t),A=A.child}return A;case 9:return i=A.type,n=A.pendingProps.children,zr(A,t),i=zt(i),n=n(i),A.flags|=1,Bt(e,A,n,t),A.child;case 14:return n=A.type,i=Zt(n,A.pendingProps),i=Zt(n.type,i),OE(e,A,n,i,t);case 15:return Ad(e,A,A.type,A.pendingProps,t);case 17:return n=A.type,i=A.pendingProps,i=A.elementType===n?i:Zt(n,i),Na(e,A),A.tag=1,wt(n)?(e=!0,$a(A)):e=!1,zr(A,t),Xh(A,n,i),WC(A,n,i,t),VC(null,A,n,!0,e,t);case 19:return rd(e,A,t);case 22:return ed(e,A,t)}throw Error(oA(156,A.tag))};function pd(e,A){return qQ(e,A)}function I0(e,A,t,n){this.tag=e,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=A,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=n,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Pt(e,A,t,n){return new I0(e,A,t,n)}function dB(e){return e=e.prototype,!(!e||!e.isReactComponent)}function C0(e){if(typeof e=="function")return dB(e)?1:0;if(e!=null){if(e=e.$$typeof,e===kl)return 11;if(e===Hl)return 14}return 2}function ci(e,A){var t=e.alternate;return t===null?(t=Pt(e.tag,A,e.key,e.mode),t.elementType=e.elementType,t.type=e.type,t.stateNode=e.stateNode,t.alternate=e,e.alternate=t):(t.pendingProps=A,t.type=e.type,t.flags=0,t.subtreeFlags=0,t.deletions=null),t.flags=e.flags&14680064,t.childLanes=e.childLanes,t.lanes=e.lanes,t.child=e.child,t.memoizedProps=e.memoizedProps,t.memoizedState=e.memoizedState,t.updateQueue=e.updateQueue,A=e.dependencies,t.dependencies=A===null?null:{lanes:A.lanes,firstContext:A.firstContext},t.sibling=e.sibling,t.index=e.index,t.ref=e.ref,t}function xa(e,A,t,n,i,r){var o=2;if(n=e,typeof e=="function")dB(e)&&(o=1);else if(typeof e=="string")o=5;else A:switch(e){case Nr:return Pi(t.children,i,r,A);case Tl:o=8,i|=8;break;case uC:return e=Pt(12,t,A,i|2),e.elementType=uC,e.lanes=r,e;case QC:return e=Pt(13,t,A,i),e.elementType=QC,e.lanes=r,e;case hC:return e=Pt(19,t,A,i),e.elementType=hC,e.lanes=r,e;case FQ:return kg(t,i,r,A);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case vQ:o=10;break A;case NQ:o=9;break A;case kl:o=11;break A;case Hl:o=14;break A;case $n:o=16,n=null;break A}throw Error(oA(130,e==null?e:typeof e,""))}return A=Pt(o,t,A,i),A.elementType=e,A.type=n,A.lanes=r,A}function Pi(e,A,t,n){return e=Pt(7,e,n,A),e.lanes=t,e}function kg(e,A,t,n){return e=Pt(22,e,n,A),e.elementType=FQ,e.lanes=t,e.stateNode={isHidden:!1},e}function RI(e,A,t){return e=Pt(6,e,null,A),e.lanes=t,e}function vI(e,A,t){return A=Pt(4,e.children!==null?e.children:[],e.key,A),A.lanes=t,A.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},A}function l0(e,A,t,n,i){this.tag=A,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=gI(0),this.expirationTimes=gI(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=gI(0),this.identifierPrefix=n,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function fB(e,A,t,n,i,r,o,s,a){return e=new l0(e,A,t,s,a),A===1?(A=1,r===!0&&(A|=8)):A=0,r=Pt(3,null,null,A),e.current=r,r.stateNode=e,r.memoizedState={element:n,isDehydrated:t,cache:null,transitions:null,pendingSuspenseBoundaries:null},nB(r),e}function B0(e,A,t){var n=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Dd)}catch(e){console.error(e)}}Dd(),DQ.exports=Gt;var yB=DQ.exports;const h0=BQ(yB),d0=lQ({__proto__:null,default:h0},[yB]);var ec=yB;EC.createRoot=ec.createRoot,EC.hydrateRoot=ec.hydrateRoot;/** + * @remix-run/router v1.21.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Se(){return Se=Object.assign?Object.assign.bind():function(e){for(var A=1;A"u")throw new Error(A)}function oo(e,A){if(!e){typeof console<"u"&&console.warn(A);try{throw new Error(A)}catch{}}}function p0(){return Math.random().toString(36).substr(2,8)}function nc(e,A){return{usr:e.state,key:e.key,idx:A}}function ps(e,A,t,n){return t===void 0&&(t=null),Se({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof A=="string"?Pn(A):A,{state:t,key:A&&A.key||n||p0()})}function vs(e){let{pathname:A="/",search:t="",hash:n=""}=e;return t&&t!=="?"&&(A+=t.charAt(0)==="?"?t:"?"+t),n&&n!=="#"&&(A+=n.charAt(0)==="#"?n:"#"+n),A}function Pn(e){let A={};if(e){let t=e.indexOf("#");t>=0&&(A.hash=e.substr(t),e=e.substr(0,t));let n=e.indexOf("?");n>=0&&(A.search=e.substr(n),e=e.substr(0,n)),e&&(A.pathname=e)}return A}function m0(e,A,t,n){n===void 0&&(n={});let{window:i=document.defaultView,v5Compat:r=!1}=n,o=i.history,s=_e.Pop,a=null,g=I();g==null&&(g=0,o.replaceState(Se({},o.state,{idx:g}),""));function I(){return(o.state||{idx:null}).idx}function C(){s=_e.Pop;let c=I(),l=c==null?null:c-g;g=c,a&&a({action:s,location:h.location,delta:l})}function B(c,l){s=_e.Push;let u=ps(h.location,c,l);t&&t(u,c),g=I()+1;let Q=nc(u,g),p=h.createHref(u);try{o.pushState(Q,"",p)}catch(D){if(D instanceof DOMException&&D.name==="DataCloneError")throw D;i.location.assign(p)}r&&a&&a({action:s,location:h.location,delta:1})}function E(c,l){s=_e.Replace;let u=ps(h.location,c,l);t&&t(u,c),g=I();let Q=nc(u,g),p=h.createHref(u);o.replaceState(Q,"",p),r&&a&&a({action:s,location:h.location,delta:0})}function d(c){let l=i.location.origin!=="null"?i.location.origin:i.location.href,u=typeof c=="string"?c:vs(c);return u=u.replace(/ $/,"%20"),ne(l,"No window.location.(origin|href) available to create URL for href: "+u),new URL(u,l)}let h={get action(){return s},get location(){return e(i,o)},listen(c){if(a)throw new Error("A history only accepts one active listener");return i.addEventListener(tc,C),a=c,()=>{i.removeEventListener(tc,C),a=null}},createHref(c){return A(i,c)},createURL:d,encodeLocation(c){let l=d(c);return{pathname:l.pathname,search:l.search,hash:l.hash}},push:B,replace:E,go(c){return o.go(c)}};return h}var ce;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(ce||(ce={}));const w0=new Set(["lazy","caseSensitive","path","id","index","children"]);function y0(e){return e.index===!0}function Bg(e,A,t,n){return t===void 0&&(t=[]),n===void 0&&(n={}),e.map((i,r)=>{let o=[...t,String(r)],s=typeof i.id=="string"?i.id:o.join("-");if(ne(i.index!==!0||!i.children,"Cannot specify children on an index route"),ne(!n[s],'Found a route id collision on id "'+s+`". Route id's must be globally unique within Data Router usages`),y0(i)){let a=Se({},i,A(i),{id:s});return n[s]=a,a}else{let a=Se({},i,A(i),{id:s,children:void 0});return n[s]=a,i.children&&(a.children=Bg(i.children,A,o,n)),a}})}function Ui(e,A,t){return t===void 0&&(t="/"),_a(e,A,t,!1)}function _a(e,A,t,n){let i=typeof A=="string"?Pn(A):A,r=Ns(i.pathname||"/",t);if(r==null)return null;let o=Sd(e);S0(o);let s=null;for(let a=0;s==null&&a{let a={relativePath:s===void 0?r.path||"":s,caseSensitive:r.caseSensitive===!0,childrenIndex:o,route:r};a.relativePath.startsWith("/")&&(ne(a.relativePath.startsWith(n),'Absolute route path "'+a.relativePath+'" nested under path '+('"'+n+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),a.relativePath=a.relativePath.slice(n.length));let g=ui([n,a.relativePath]),I=t.concat(a);r.children&&r.children.length>0&&(ne(r.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+g+'".')),Sd(r.children,A,I,g)),!(r.path==null&&!r.index)&&A.push({path:g,score:x0(g,r.index),routesMeta:I})};return e.forEach((r,o)=>{var s;if(r.path===""||!((s=r.path)!=null&&s.includes("?")))i(r,o);else for(let a of Md(r.path))i(r,o,a)}),A}function Md(e){let A=e.split("/");if(A.length===0)return[];let[t,...n]=A,i=t.endsWith("?"),r=t.replace(/\?$/,"");if(n.length===0)return i?[r,""]:[r];let o=Md(n.join("/")),s=[];return s.push(...o.map(a=>a===""?r:[r,a].join("/"))),i&&s.push(...o),s.map(a=>e.startsWith("/")&&a===""?"/":a)}function S0(e){e.sort((A,t)=>A.score!==t.score?t.score-A.score:_0(A.routesMeta.map(n=>n.childrenIndex),t.routesMeta.map(n=>n.childrenIndex)))}const M0=/^:[\w-]+$/,R0=3,v0=2,N0=1,F0=10,L0=-2,ic=e=>e==="*";function x0(e,A){let t=e.split("/"),n=t.length;return t.some(ic)&&(n+=L0),A&&(n+=v0),t.filter(i=>!ic(i)).reduce((i,r)=>i+(M0.test(r)?R0:r===""?N0:F0),n)}function _0(e,A){return e.length===A.length&&e.slice(0,-1).every((n,i)=>n===A[i])?e[e.length-1]-A[A.length-1]:0}function U0(e,A,t){t===void 0&&(t=!1);let{routesMeta:n}=e,i={},r="/",o=[];for(let s=0;s{let{paramName:B,isOptional:E}=I;if(B==="*"){let h=s[C]||"";o=r.slice(0,r.length-h.length).replace(/(.)\/+$/,"$1")}const d=s[C];return E&&!d?g[B]=void 0:g[B]=(d||"").replace(/%2F/g,"/"),g},{}),pathname:r,pathnameBase:o,pattern:e}}function G0(e,A,t){A===void 0&&(A=!1),t===void 0&&(t=!0),oo(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let n=[],i="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(o,s,a)=>(n.push({paramName:s,isOptional:a!=null}),a?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(n.push({paramName:"*"}),i+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):t?i+="\\/*$":e!==""&&e!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,A?void 0:"i"),n]}function T0(e){try{return e.split("/").map(A=>decodeURIComponent(A).replace(/\//g,"%2F")).join("/")}catch(A){return oo(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+A+").")),e}}function Ns(e,A){if(A==="/")return e;if(!e.toLowerCase().startsWith(A.toLowerCase()))return null;let t=A.endsWith("/")?A.length-1:A.length,n=e.charAt(t);return n&&n!=="/"?null:e.slice(t)||"/"}function k0(e,A){A===void 0&&(A="/");let{pathname:t,search:n="",hash:i=""}=typeof e=="string"?Pn(e):e;return{pathname:t?t.startsWith("/")?t:H0(t,A):A,search:O0(n),hash:Y0(i)}}function H0(e,A){let t=A.replace(/\/+$/,"").split("/");return e.split("/").forEach(i=>{i===".."?t.length>1&&t.pop():i!=="."&&t.push(i)}),t.length>1?t.join("/"):"/"}function NI(e,A,t,n){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+A+"` field ["+JSON.stringify(n)+"]. Please separate it out to the ")+("`to."+t+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function Rd(e){return e.filter((A,t)=>t===0||A.route.path&&A.route.path.length>0)}function vd(e,A){let t=Rd(e);return A?t.map((n,i)=>i===t.length-1?n.pathname:n.pathnameBase):t.map(n=>n.pathnameBase)}function Nd(e,A,t,n){n===void 0&&(n=!1);let i;typeof e=="string"?i=Pn(e):(i=Se({},e),ne(!i.pathname||!i.pathname.includes("?"),NI("?","pathname","search",i)),ne(!i.pathname||!i.pathname.includes("#"),NI("#","pathname","hash",i)),ne(!i.search||!i.search.includes("#"),NI("#","search","hash",i)));let r=e===""||i.pathname==="",o=r?"/":i.pathname,s;if(o==null)s=t;else{let C=A.length-1;if(!n&&o.startsWith("..")){let B=o.split("/");for(;B[0]==="..";)B.shift(),C-=1;i.pathname=B.join("/")}s=C>=0?A[C]:"/"}let a=k0(i,s),g=o&&o!=="/"&&o.endsWith("/"),I=(r||o===".")&&t.endsWith("/");return!a.pathname.endsWith("/")&&(g||I)&&(a.pathname+="/"),a}const ui=e=>e.join("/").replace(/\/\/+/g,"/"),b0=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),O0=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,Y0=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;class Eg{constructor(A,t,n,i){i===void 0&&(i=!1),this.status=A,this.statusText=t||"",this.internal=i,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}}function Kg(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const Fd=["post","put","patch","delete"],K0=new Set(Fd),P0=["get",...Fd],J0=new Set(P0),W0=new Set([301,302,303,307,308]),z0=new Set([307,308]),FI={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},q0={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Fo={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},DB=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,V0=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),Ld="remix-router-transitions";function j0(e){const A=e.window?e.window:typeof window<"u"?window:void 0,t=typeof A<"u"&&typeof A.document<"u"&&typeof A.document.createElement<"u",n=!t;ne(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let i;if(e.mapRouteProperties)i=e.mapRouteProperties;else if(e.detectErrorBoundary){let L=e.detectErrorBoundary;i=T=>({hasErrorBoundary:L(T)})}else i=V0;let r={},o=Bg(e.routes,i,void 0,r),s,a=e.basename||"/",g=e.dataStrategy||Aw,I=e.patchRoutesOnNavigation,C=Se({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1,v7_skipActionErrorRevalidation:!1},e.future),B=null,E=new Set,d=null,h=null,c=null,l=e.hydrationData!=null,u=Ui(o,e.history.location,a),Q=null;if(u==null&&!I){let L=dt(404,{pathname:e.history.location.pathname}),{matches:T,route:V}=uc(o);u=T,Q={[V.id]:L}}u&&!e.hydrationData&&bA(u,o,e.history.location.pathname).active&&(u=null);let p;if(u)if(u.some(L=>L.route.lazy))p=!1;else if(!u.some(L=>L.route.loader))p=!0;else if(C.v7_partialHydration){let L=e.hydrationData?e.hydrationData.loaderData:null,T=e.hydrationData?e.hydrationData.errors:null;if(T){let V=u.findIndex(iA=>T[iA.route.id]!==void 0);p=u.slice(0,V+1).every(iA=>!al(iA.route,L,T))}else p=u.every(V=>!al(V.route,L,T))}else p=e.hydrationData!=null;else if(p=!1,u=[],C.v7_partialHydration){let L=bA(null,o,e.history.location.pathname);L.active&&L.matches&&(u=L.matches)}let D,f={historyAction:e.history.action,location:e.history.location,matches:u,initialized:p,navigation:FI,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||Q,fetchers:new Map,blockers:new Map},y=_e.Pop,N=!1,m,M=!1,P=new Map,X=null,Z=!1,v=!1,H=[],$=new Set,j=new Map,Y=0,J=-1,W=new Map,_=new Set,K=new Map,cA=new Map,IA=new Set,hA=new Map,DA=new Map,TA;function kA(){if(B=e.history.listen(L=>{let{action:T,location:V,delta:iA}=L;if(TA){TA(),TA=void 0;return}oo(DA.size===0||iA!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let pA=F({currentLocation:f.location,nextLocation:V,historyAction:T});if(pA&&iA!=null){let FA=new Promise(JA=>{TA=JA});e.history.go(iA*-1),MA(pA,{state:"blocked",location:V,proceed(){MA(pA,{state:"proceeding",proceed:void 0,reset:void 0,location:V}),FA.then(()=>e.history.go(iA))},reset(){let JA=new Map(f.blockers);JA.set(pA,Fo),_A({blockers:JA})}});return}return OA(T,V)}),t){Ew(A,P);let L=()=>cw(A,P);A.addEventListener("pagehide",L),X=()=>A.removeEventListener("pagehide",L)}return f.initialized||OA(_e.Pop,f.location,{initialHydration:!0}),D}function oe(){B&&B(),X&&X(),E.clear(),m&&m.abort(),f.fetchers.forEach((L,T)=>CA(T)),f.blockers.forEach((L,T)=>UA(T))}function be(L){return E.add(L),()=>E.delete(L)}function _A(L,T){T===void 0&&(T={}),f=Se({},f,L);let V=[],iA=[];C.v7_fetcherPersist&&f.fetchers.forEach((pA,FA)=>{pA.state==="idle"&&(IA.has(FA)?iA.push(FA):V.push(FA))}),[...E].forEach(pA=>pA(f,{deletedFetchers:iA,viewTransitionOpts:T.viewTransitionOpts,flushSync:T.flushSync===!0})),C.v7_fetcherPersist&&(V.forEach(pA=>f.fetchers.delete(pA)),iA.forEach(pA=>CA(pA)))}function b(L,T,V){var iA,pA;let{flushSync:FA}=V===void 0?{}:V,JA=f.actionData!=null&&f.navigation.formMethod!=null&&An(f.navigation.formMethod)&&f.navigation.state==="loading"&&((iA=L.state)==null?void 0:iA._isRedirect)!==!0,wA;T.actionData?Object.keys(T.actionData).length>0?wA=T.actionData:wA=null:JA?wA=f.actionData:wA=null;let SA=T.loaderData?Ec(f.loaderData,T.loaderData,T.matches||[],T.errors):f.loaderData,mA=f.blockers;mA.size>0&&(mA=new Map(mA),mA.forEach((U,q)=>mA.set(q,Fo)));let LA=N===!0||f.navigation.formMethod!=null&&An(f.navigation.formMethod)&&((pA=L.state)==null?void 0:pA._isRedirect)!==!0;s&&(o=s,s=void 0),Z||y===_e.Pop||(y===_e.Push?e.history.push(L,L.state):y===_e.Replace&&e.history.replace(L,L.state));let S;if(y===_e.Pop){let U=P.get(f.location.pathname);U&&U.has(L.pathname)?S={currentLocation:f.location,nextLocation:L}:P.has(L.pathname)&&(S={currentLocation:L,nextLocation:f.location})}else if(M){let U=P.get(f.location.pathname);U?U.add(L.pathname):(U=new Set([L.pathname]),P.set(f.location.pathname,U)),S={currentLocation:f.location,nextLocation:L}}_A(Se({},T,{actionData:wA,loaderData:SA,historyAction:y,location:L,initialized:!0,navigation:FI,revalidation:"idle",restoreScrollPosition:RA(L,T.matches||f.matches),preventScrollReset:LA,blockers:mA}),{viewTransitionOpts:S,flushSync:FA===!0}),y=_e.Pop,N=!1,M=!1,Z=!1,v=!1,H=[]}async function Fe(L,T){if(typeof L=="number"){e.history.go(L);return}let V=sl(f.location,f.matches,a,C.v7_prependBasename,L,C.v7_relativeSplatPath,T==null?void 0:T.fromRouteId,T==null?void 0:T.relative),{path:iA,submission:pA,error:FA}=oc(C.v7_normalizeFormMethod,!1,V,T),JA=f.location,wA=ps(f.location,iA,T&&T.state);wA=Se({},wA,e.history.encodeLocation(wA));let SA=T&&T.replace!=null?T.replace:void 0,mA=_e.Push;SA===!0?mA=_e.Replace:SA===!1||pA!=null&&An(pA.formMethod)&&pA.formAction===f.location.pathname+f.location.search&&(mA=_e.Replace);let LA=T&&"preventScrollReset"in T?T.preventScrollReset===!0:void 0,S=(T&&T.flushSync)===!0,U=F({currentLocation:JA,nextLocation:wA,historyAction:mA});if(U){MA(U,{state:"blocked",location:wA,proceed(){MA(U,{state:"proceeding",proceed:void 0,reset:void 0,location:wA}),Fe(L,T)},reset(){let q=new Map(f.blockers);q.set(U,Fo),_A({blockers:q})}});return}return await OA(mA,wA,{submission:pA,pendingError:FA,preventScrollReset:LA,replace:T&&T.replace,enableViewTransition:T&&T.viewTransition,flushSync:S})}function HA(){if(sA(),_A({revalidation:"loading"}),f.navigation.state!=="submitting"){if(f.navigation.state==="idle"){OA(f.historyAction,f.location,{startUninterruptedRevalidation:!0});return}OA(y||f.historyAction,f.navigation.location,{overrideNavigation:f.navigation,enableViewTransition:M===!0})}}async function OA(L,T,V){m&&m.abort(),m=null,y=L,Z=(V&&V.startUninterruptedRevalidation)===!0,nA(f.location,f.matches),N=(V&&V.preventScrollReset)===!0,M=(V&&V.enableViewTransition)===!0;let iA=s||o,pA=V&&V.overrideNavigation,FA=Ui(iA,T,a),JA=(V&&V.flushSync)===!0,wA=bA(FA,iA,T.pathname);if(wA.active&&wA.matches&&(FA=wA.matches),!FA){let{error:G,notFoundMatches:O,route:BA}=lA(T.pathname);b(T,{matches:O,loaderData:{},errors:{[BA.id]:G}},{flushSync:JA});return}if(f.initialized&&!v&&ow(f.location,T)&&!(V&&V.submission&&An(V.submission.formMethod))){b(T,{matches:FA},{flushSync:JA});return}m=new AbortController;let SA=sr(e.history,T,m.signal,V&&V.submission),mA;if(V&&V.pendingError)mA=[Gi(FA).route.id,{type:ce.error,error:V.pendingError}];else if(V&&V.submission&&An(V.submission.formMethod)){let G=await zA(SA,T,V.submission,FA,wA.active,{replace:V.replace,flushSync:JA});if(G.shortCircuited)return;if(G.pendingActionResult){let[O,BA]=G.pendingActionResult;if(Lt(BA)&&Kg(BA.error)&&BA.error.status===404){m=null,b(T,{matches:G.matches,loaderData:{},errors:{[O]:BA.error}});return}}FA=G.matches||FA,mA=G.pendingActionResult,pA=LI(T,V.submission),JA=!1,wA.active=!1,SA=sr(e.history,SA.url,SA.signal)}let{shortCircuited:LA,matches:S,loaderData:U,errors:q}=await Qe(SA,T,FA,wA.active,pA,V&&V.submission,V&&V.fetcherSubmission,V&&V.replace,V&&V.initialHydration===!0,JA,mA);LA||(m=null,b(T,Se({matches:S||FA},cc(mA),{loaderData:U,errors:q})))}async function zA(L,T,V,iA,pA,FA){FA===void 0&&(FA={}),sA();let JA=lw(T,V);if(_A({navigation:JA},{flushSync:FA.flushSync===!0}),pA){let mA=await pe(iA,T.pathname,L.signal);if(mA.type==="aborted")return{shortCircuited:!0};if(mA.type==="error"){let LA=Gi(mA.partialMatches).route.id;return{matches:mA.partialMatches,pendingActionResult:[LA,{type:ce.error,error:mA.error}]}}else if(mA.matches)iA=mA.matches;else{let{notFoundMatches:LA,error:S,route:U}=lA(T.pathname);return{matches:LA,pendingActionResult:[U.id,{type:ce.error,error:S}]}}}let wA,SA=Ko(iA,T);if(!SA.route.action&&!SA.route.lazy)wA={type:ce.error,error:dt(405,{method:L.method,pathname:T.pathname,routeId:SA.route.id})};else if(wA=(await w("action",f,L,[SA],iA,null))[SA.route.id],L.signal.aborted)return{shortCircuited:!0};if(Yi(wA)){let mA;return FA&&FA.replace!=null?mA=FA.replace:mA=Cc(wA.response.headers.get("Location"),new URL(L.url),a)===f.location.pathname+f.location.search,await R(L,wA,!0,{submission:V,replace:mA}),{shortCircuited:!0}}if(oi(wA))throw dt(400,{type:"defer-action"});if(Lt(wA)){let mA=Gi(iA,SA.route.id);return(FA&&FA.replace)!==!0&&(y=_e.Push),{matches:iA,pendingActionResult:[mA.route.id,wA]}}return{matches:iA,pendingActionResult:[SA.route.id,wA]}}async function Qe(L,T,V,iA,pA,FA,JA,wA,SA,mA,LA){let S=pA||LI(T,FA),U=FA||JA||hc(S),q=!Z&&(!C.v7_partialHydration||!SA);if(iA){if(q){let ZA=ee(LA);_A(Se({navigation:S},ZA!==void 0?{actionData:ZA}:{}),{flushSync:mA})}let Ae=await pe(V,T.pathname,L.signal);if(Ae.type==="aborted")return{shortCircuited:!0};if(Ae.type==="error"){let ZA=Gi(Ae.partialMatches).route.id;return{matches:Ae.partialMatches,loaderData:{},errors:{[ZA]:Ae.error}}}else if(Ae.matches)V=Ae.matches;else{let{error:ZA,notFoundMatches:$A,route:pn}=lA(T.pathname);return{matches:$A,loaderData:{},errors:{[pn.id]:ZA}}}}let G=s||o,[O,BA]=ac(e.history,f,V,U,T,C.v7_partialHydration&&SA===!0,C.v7_skipActionErrorRevalidation,v,H,$,IA,K,_,G,a,LA);if(aA(Ae=>!(V&&V.some(ZA=>ZA.route.id===Ae))||O&&O.some(ZA=>ZA.route.id===Ae)),J=++Y,O.length===0&&BA.length===0){let Ae=eA();return b(T,Se({matches:V,loaderData:{},errors:LA&&Lt(LA[1])?{[LA[0]]:LA[1].error}:null},cc(LA),Ae?{fetchers:new Map(f.fetchers)}:{}),{flushSync:mA}),{shortCircuited:!0}}if(q){let Ae={};if(!iA){Ae.navigation=S;let ZA=ee(LA);ZA!==void 0&&(Ae.actionData=ZA)}BA.length>0&&(Ae.fetchers=jA(BA)),_A(Ae,{flushSync:mA})}BA.forEach(Ae=>{x(Ae.key),Ae.controller&&j.set(Ae.key,Ae.controller)});let xA=()=>BA.forEach(Ae=>x(Ae.key));m&&m.signal.addEventListener("abort",xA);let{loaderResults:KA,fetcherResults:GA}=await z(f,V,O,BA,L);if(L.signal.aborted)return{shortCircuited:!0};m&&m.signal.removeEventListener("abort",xA),BA.forEach(Ae=>j.delete(Ae.key));let WA=qs(KA);if(WA)return await R(L,WA.result,!0,{replace:wA}),{shortCircuited:!0};if(WA=qs(GA),WA)return _.add(WA.key),await R(L,WA.result,!0,{replace:wA}),{shortCircuited:!0};let{loaderData:PA,errors:VA}=Bc(f,V,KA,LA,BA,GA,hA);hA.forEach((Ae,ZA)=>{Ae.subscribe($A=>{($A||Ae.done)&&hA.delete(ZA)})}),C.v7_partialHydration&&SA&&f.errors&&(VA=Se({},f.errors,VA));let Ce=eA(),de=YA(J),je=Ce||de||BA.length>0;return Se({matches:V,loaderData:PA,errors:VA},je?{fetchers:new Map(f.fetchers)}:{})}function ee(L){if(L&&!Lt(L[1]))return{[L[0]]:L[1].data};if(f.actionData)return Object.keys(f.actionData).length===0?null:f.actionData}function jA(L){return L.forEach(T=>{let V=f.fetchers.get(T.key),iA=Lo(void 0,V?V.data:void 0);f.fetchers.set(T.key,iA)}),new Map(f.fetchers)}function se(L,T,V,iA){if(n)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");x(L);let pA=(iA&&iA.flushSync)===!0,FA=s||o,JA=sl(f.location,f.matches,a,C.v7_prependBasename,V,C.v7_relativeSplatPath,T,iA==null?void 0:iA.relative),wA=Ui(FA,JA,a),SA=bA(wA,FA,JA);if(SA.active&&SA.matches&&(wA=SA.matches),!wA){rA(L,T,dt(404,{pathname:JA}),{flushSync:pA});return}let{path:mA,submission:LA,error:S}=oc(C.v7_normalizeFormMethod,!0,JA,iA);if(S){rA(L,T,S,{flushSync:pA});return}let U=Ko(wA,mA),q=(iA&&iA.preventScrollReset)===!0;if(LA&&An(LA.formMethod)){xe(L,T,mA,U,wA,SA.active,pA,q,LA);return}K.set(L,{routeId:T,path:mA}),Ge(L,T,mA,U,wA,SA.active,pA,q,LA)}async function xe(L,T,V,iA,pA,FA,JA,wA,SA){sA(),K.delete(L);function mA(te){if(!te.route.action&&!te.route.lazy){let ht=dt(405,{method:SA.formMethod,pathname:V,routeId:T});return rA(L,T,ht,{flushSync:JA}),!0}return!1}if(!FA&&mA(iA))return;let LA=f.fetchers.get(L);tA(L,Bw(SA,LA),{flushSync:JA});let S=new AbortController,U=sr(e.history,V,S.signal,SA);if(FA){let te=await pe(pA,V,U.signal);if(te.type==="aborted")return;if(te.type==="error"){rA(L,T,te.error,{flushSync:JA});return}else if(te.matches){if(pA=te.matches,iA=Ko(pA,V),mA(iA))return}else{rA(L,T,dt(404,{pathname:V}),{flushSync:JA});return}}j.set(L,S);let q=Y,O=(await w("action",f,U,[iA],pA,L))[iA.route.id];if(U.signal.aborted){j.get(L)===S&&j.delete(L);return}if(C.v7_fetcherPersist&&IA.has(L)){if(Yi(O)||Lt(O)){tA(L,Zn(void 0));return}}else{if(Yi(O))if(j.delete(L),J>q){tA(L,Zn(void 0));return}else return _.add(L),tA(L,Lo(SA)),R(U,O,!1,{fetcherSubmission:SA,preventScrollReset:wA});if(Lt(O)){rA(L,T,O.error);return}}if(oi(O))throw dt(400,{type:"defer-action"});let BA=f.navigation.location||f.location,xA=sr(e.history,BA,S.signal),KA=s||o,GA=f.navigation.state!=="idle"?Ui(KA,f.navigation.location,a):f.matches;ne(GA,"Didn't find any matches after fetcher action");let WA=++Y;W.set(L,WA);let PA=Lo(SA,O.data);f.fetchers.set(L,PA);let[VA,Ce]=ac(e.history,f,GA,SA,BA,!1,C.v7_skipActionErrorRevalidation,v,H,$,IA,K,_,KA,a,[iA.route.id,O]);Ce.filter(te=>te.key!==L).forEach(te=>{let ht=te.key,mo=f.fetchers.get(ht),yi=Lo(void 0,mo?mo.data:void 0);f.fetchers.set(ht,yi),x(ht),te.controller&&j.set(ht,te.controller)}),_A({fetchers:new Map(f.fetchers)});let de=()=>Ce.forEach(te=>x(te.key));S.signal.addEventListener("abort",de);let{loaderResults:je,fetcherResults:Ae}=await z(f,GA,VA,Ce,xA);if(S.signal.aborted)return;S.signal.removeEventListener("abort",de),W.delete(L),j.delete(L),Ce.forEach(te=>j.delete(te.key));let ZA=qs(je);if(ZA)return R(xA,ZA.result,!1,{preventScrollReset:wA});if(ZA=qs(Ae),ZA)return _.add(ZA.key),R(xA,ZA.result,!1,{preventScrollReset:wA});let{loaderData:$A,errors:pn}=Bc(f,GA,je,void 0,Ce,Ae,hA);if(f.fetchers.has(L)){let te=Zn(O.data);f.fetchers.set(L,te)}YA(WA),f.navigation.state==="loading"&&WA>J?(ne(y,"Expected pending action"),m&&m.abort(),b(f.navigation.location,{matches:GA,loaderData:$A,errors:pn,fetchers:new Map(f.fetchers)})):(_A({errors:pn,loaderData:Ec(f.loaderData,$A,GA,pn),fetchers:new Map(f.fetchers)}),v=!1)}async function Ge(L,T,V,iA,pA,FA,JA,wA,SA){let mA=f.fetchers.get(L);tA(L,Lo(SA,mA?mA.data:void 0),{flushSync:JA});let LA=new AbortController,S=sr(e.history,V,LA.signal);if(FA){let O=await pe(pA,V,S.signal);if(O.type==="aborted")return;if(O.type==="error"){rA(L,T,O.error,{flushSync:JA});return}else if(O.matches)pA=O.matches,iA=Ko(pA,V);else{rA(L,T,dt(404,{pathname:V}),{flushSync:JA});return}}j.set(L,LA);let U=Y,G=(await w("loader",f,S,[iA],pA,L))[iA.route.id];if(oi(G)&&(G=await SB(G,S.signal,!0)||G),j.get(L)===LA&&j.delete(L),!S.signal.aborted){if(IA.has(L)){tA(L,Zn(void 0));return}if(Yi(G))if(J>U){tA(L,Zn(void 0));return}else{_.add(L),await R(S,G,!1,{preventScrollReset:wA});return}if(Lt(G)){rA(L,T,G.error);return}ne(!oi(G),"Unhandled fetcher deferred data"),tA(L,Zn(G.data))}}async function R(L,T,V,iA){let{submission:pA,fetcherSubmission:FA,preventScrollReset:JA,replace:wA}=iA===void 0?{}:iA;T.response.headers.has("X-Remix-Revalidate")&&(v=!0);let SA=T.response.headers.get("Location");ne(SA,"Expected a Location header on the redirect Response"),SA=Cc(SA,new URL(L.url),a);let mA=ps(f.location,SA,{_isRedirect:!0});if(t){let O=!1;if(T.response.headers.has("X-Remix-Reload-Document"))O=!0;else if(DB.test(SA)){const BA=e.history.createURL(SA);O=BA.origin!==A.location.origin||Ns(BA.pathname,a)==null}if(O){wA?A.location.replace(SA):A.location.assign(SA);return}}m=null;let LA=wA===!0||T.response.headers.has("X-Remix-Replace")?_e.Replace:_e.Push,{formMethod:S,formAction:U,formEncType:q}=f.navigation;!pA&&!FA&&S&&U&&q&&(pA=hc(f.navigation));let G=pA||FA;if(z0.has(T.response.status)&&G&&An(G.formMethod))await OA(LA,mA,{submission:Se({},G,{formAction:SA}),preventScrollReset:JA||N,enableViewTransition:V?M:void 0});else{let O=LI(mA,pA);await OA(LA,mA,{overrideNavigation:O,fetcherSubmission:FA,preventScrollReset:JA||N,enableViewTransition:V?M:void 0})}}async function w(L,T,V,iA,pA,FA){let JA,wA={};try{JA=await ew(g,L,T,V,iA,pA,FA,r,i)}catch(SA){return iA.forEach(mA=>{wA[mA.route.id]={type:ce.error,error:SA}}),wA}for(let[SA,mA]of Object.entries(JA))if(sw(mA)){let LA=mA.result;wA[SA]={type:ce.redirect,response:iw(LA,V,SA,pA,a,C.v7_relativeSplatPath)}}else wA[SA]=await nw(mA);return wA}async function z(L,T,V,iA,pA){let FA=L.matches,JA=w("loader",L,pA,V,T,null),wA=Promise.all(iA.map(async LA=>{if(LA.matches&&LA.match&&LA.controller){let U=(await w("loader",L,sr(e.history,LA.path,LA.controller.signal),[LA.match],LA.matches,LA.key))[LA.match.route.id];return{[LA.key]:U}}else return Promise.resolve({[LA.key]:{type:ce.error,error:dt(404,{pathname:LA.path})}})})),SA=await JA,mA=(await wA).reduce((LA,S)=>Object.assign(LA,S),{});return await Promise.all([Iw(T,SA,pA.signal,FA,L.loaderData),Cw(T,mA,iA)]),{loaderResults:SA,fetcherResults:mA}}function sA(){v=!0,H.push(...aA()),K.forEach((L,T)=>{j.has(T)&&$.add(T),x(T)})}function tA(L,T,V){V===void 0&&(V={}),f.fetchers.set(L,T),_A({fetchers:new Map(f.fetchers)},{flushSync:(V&&V.flushSync)===!0})}function rA(L,T,V,iA){iA===void 0&&(iA={});let pA=Gi(f.matches,T);CA(L),_A({errors:{[pA.route.id]:V},fetchers:new Map(f.fetchers)},{flushSync:(iA&&iA.flushSync)===!0})}function vA(L){return C.v7_fetcherPersist&&(cA.set(L,(cA.get(L)||0)+1),IA.has(L)&&IA.delete(L)),f.fetchers.get(L)||q0}function CA(L){let T=f.fetchers.get(L);j.has(L)&&!(T&&T.state==="loading"&&W.has(L))&&x(L),K.delete(L),W.delete(L),_.delete(L),IA.delete(L),$.delete(L),f.fetchers.delete(L)}function dA(L){if(C.v7_fetcherPersist){let T=(cA.get(L)||0)-1;T<=0?(cA.delete(L),IA.add(L)):cA.set(L,T)}else CA(L);_A({fetchers:new Map(f.fetchers)})}function x(L){let T=j.get(L);T&&(T.abort(),j.delete(L))}function gA(L){for(let T of L){let V=vA(T),iA=Zn(V.data);f.fetchers.set(T,iA)}}function eA(){let L=[],T=!1;for(let V of _){let iA=f.fetchers.get(V);ne(iA,"Expected fetcher: "+V),iA.state==="loading"&&(_.delete(V),L.push(V),T=!0)}return gA(L),T}function YA(L){let T=[];for(let[V,iA]of W)if(iA0}function NA(L,T){let V=f.blockers.get(L)||Fo;return DA.get(L)!==T&&DA.set(L,T),V}function UA(L){f.blockers.delete(L),DA.delete(L)}function MA(L,T){let V=f.blockers.get(L)||Fo;ne(V.state==="unblocked"&&T.state==="blocked"||V.state==="blocked"&&T.state==="blocked"||V.state==="blocked"&&T.state==="proceeding"||V.state==="blocked"&&T.state==="unblocked"||V.state==="proceeding"&&T.state==="unblocked","Invalid blocker state transition: "+V.state+" -> "+T.state);let iA=new Map(f.blockers);iA.set(L,T),_A({blockers:iA})}function F(L){let{currentLocation:T,nextLocation:V,historyAction:iA}=L;if(DA.size===0)return;DA.size>1&&oo(!1,"A router only supports one blocker at a time");let pA=Array.from(DA.entries()),[FA,JA]=pA[pA.length-1],wA=f.blockers.get(FA);if(!(wA&&wA.state==="proceeding")&&JA({currentLocation:T,nextLocation:V,historyAction:iA}))return FA}function lA(L){let T=dt(404,{pathname:L}),V=s||o,{matches:iA,route:pA}=uc(V);return aA(),{notFoundMatches:iA,route:pA,error:T}}function aA(L){let T=[];return hA.forEach((V,iA)=>{(!L||L(iA))&&(V.cancel(),T.push(iA),hA.delete(iA))}),T}function QA(L,T,V){if(d=L,c=T,h=V||null,!l&&f.navigation===FI){l=!0;let iA=RA(f.location,f.matches);iA!=null&&_A({restoreScrollPosition:iA})}return()=>{d=null,c=null,h=null}}function EA(L,T){return h&&h(L,T.map(iA=>D0(iA,f.loaderData)))||L.key}function nA(L,T){if(d&&c){let V=EA(L,T);d[V]=c()}}function RA(L,T){if(d){let V=EA(L,T),iA=d[V];if(typeof iA=="number")return iA}return null}function bA(L,T,V){if(I)if(L){if(Object.keys(L[0].params).length>0)return{active:!0,matches:_a(T,V,a,!0)}}else return{active:!0,matches:_a(T,V,a,!0)||[]};return{active:!1,matches:null}}async function pe(L,T,V){if(!I)return{type:"success",matches:L};let iA=L;for(;;){let pA=s==null,FA=s||o,JA=r;try{await I({path:T,matches:iA,patch:(mA,LA)=>{V.aborted||Ic(mA,LA,FA,JA,i)}})}catch(mA){return{type:"error",error:mA,partialMatches:iA}}finally{pA&&!V.aborted&&(o=[...o])}if(V.aborted)return{type:"aborted"};let wA=Ui(FA,T,a);if(wA)return{type:"success",matches:wA};let SA=_a(FA,T,a,!0);if(!SA||iA.length===SA.length&&iA.every((mA,LA)=>mA.route.id===SA[LA].route.id))return{type:"success",matches:null};iA=SA}}function he(L){r={},s=Bg(L,i,void 0,r)}function kt(L,T){let V=s==null;Ic(L,T,s||o,r,i),V&&(o=[...o],_A({}))}return D={get basename(){return a},get future(){return C},get state(){return f},get routes(){return o},get window(){return A},initialize:kA,subscribe:be,enableScrollRestoration:QA,navigate:Fe,fetch:se,revalidate:HA,createHref:L=>e.history.createHref(L),encodeLocation:L=>e.history.encodeLocation(L),getFetcher:vA,deleteFetcher:dA,dispose:oe,getBlocker:NA,deleteBlocker:UA,patchRoutes:kt,_internalFetchControllers:j,_internalActiveDeferreds:hA,_internalSetRoutes:he},D}function X0(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function sl(e,A,t,n,i,r,o,s){let a,g;if(o){a=[];for(let C of A)if(a.push(C),C.route.id===o){g=C;break}}else a=A,g=A[A.length-1];let I=Nd(i||".",vd(a,r),Ns(e.pathname,t)||e.pathname,s==="path");if(i==null&&(I.search=e.search,I.hash=e.hash),(i==null||i===""||i===".")&&g){let C=MB(I.search);if(g.route.index&&!C)I.search=I.search?I.search.replace(/^\?/,"?index&"):"?index";else if(!g.route.index&&C){let B=new URLSearchParams(I.search),E=B.getAll("index");B.delete("index"),E.filter(h=>h).forEach(h=>B.append("index",h));let d=B.toString();I.search=d?"?"+d:""}}return n&&t!=="/"&&(I.pathname=I.pathname==="/"?t:ui([t,I.pathname])),vs(I)}function oc(e,A,t,n){if(!n||!X0(n))return{path:t};if(n.formMethod&&!gw(n.formMethod))return{path:t,error:dt(405,{method:n.formMethod})};let i=()=>({path:t,error:dt(400,{type:"invalid-body"})}),r=n.formMethod||"get",o=e?r.toUpperCase():r.toLowerCase(),s=Ud(t);if(n.body!==void 0){if(n.formEncType==="text/plain"){if(!An(o))return i();let B=typeof n.body=="string"?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce((E,d)=>{let[h,c]=d;return""+E+h+"="+c+` +`},""):String(n.body);return{path:t,submission:{formMethod:o,formAction:s,formEncType:n.formEncType,formData:void 0,json:void 0,text:B}}}else if(n.formEncType==="application/json"){if(!An(o))return i();try{let B=typeof n.body=="string"?JSON.parse(n.body):n.body;return{path:t,submission:{formMethod:o,formAction:s,formEncType:n.formEncType,formData:void 0,json:B,text:void 0}}}catch{return i()}}}ne(typeof FormData=="function","FormData is not available in this environment");let a,g;if(n.formData)a=gl(n.formData),g=n.formData;else if(n.body instanceof FormData)a=gl(n.body),g=n.body;else if(n.body instanceof URLSearchParams)a=n.body,g=lc(a);else if(n.body==null)a=new URLSearchParams,g=new FormData;else try{a=new URLSearchParams(n.body),g=lc(a)}catch{return i()}let I={formMethod:o,formAction:s,formEncType:n&&n.formEncType||"application/x-www-form-urlencoded",formData:g,json:void 0,text:void 0};if(An(I.formMethod))return{path:t,submission:I};let C=Pn(t);return A&&C.search&&MB(C.search)&&a.append("index",""),C.search="?"+a,{path:vs(C),submission:I}}function sc(e,A,t){t===void 0&&(t=!1);let n=e.findIndex(i=>i.route.id===A);return n>=0?e.slice(0,t?n+1:n):e}function ac(e,A,t,n,i,r,o,s,a,g,I,C,B,E,d,h){let c=h?Lt(h[1])?h[1].error:h[1].data:void 0,l=e.createURL(A.location),u=e.createURL(i),Q=t;r&&A.errors?Q=sc(t,Object.keys(A.errors)[0],!0):h&&Lt(h[1])&&(Q=sc(t,h[0]));let p=h?h[1].statusCode:void 0,D=o&&p&&p>=400,f=Q.filter((N,m)=>{let{route:M}=N;if(M.lazy)return!0;if(M.loader==null)return!1;if(r)return al(M,A.loaderData,A.errors);if(Z0(A.loaderData,A.matches[m],N)||a.some(Z=>Z===N.route.id))return!0;let P=A.matches[m],X=N;return gc(N,Se({currentUrl:l,currentParams:P.params,nextUrl:u,nextParams:X.params},n,{actionResult:c,actionStatus:p,defaultShouldRevalidate:D?!1:s||l.pathname+l.search===u.pathname+u.search||l.search!==u.search||xd(P,X)}))}),y=[];return C.forEach((N,m)=>{if(r||!t.some(v=>v.route.id===N.routeId)||I.has(m))return;let M=Ui(E,N.path,d);if(!M){y.push({key:m,routeId:N.routeId,path:N.path,matches:null,match:null,controller:null});return}let P=A.fetchers.get(m),X=Ko(M,N.path),Z=!1;B.has(m)?Z=!1:g.has(m)?(g.delete(m),Z=!0):P&&P.state!=="idle"&&P.data===void 0?Z=s:Z=gc(X,Se({currentUrl:l,currentParams:A.matches[A.matches.length-1].params,nextUrl:u,nextParams:t[t.length-1].params},n,{actionResult:c,actionStatus:p,defaultShouldRevalidate:D?!1:s})),Z&&y.push({key:m,routeId:N.routeId,path:N.path,matches:M,match:X,controller:new AbortController})}),[f,y]}function al(e,A,t){if(e.lazy)return!0;if(!e.loader)return!1;let n=A!=null&&A[e.id]!==void 0,i=t!=null&&t[e.id]!==void 0;return!n&&i?!1:typeof e.loader=="function"&&e.loader.hydrate===!0?!0:!n&&!i}function Z0(e,A,t){let n=!A||t.route.id!==A.route.id,i=e[t.route.id]===void 0;return n||i}function xd(e,A){let t=e.route.path;return e.pathname!==A.pathname||t!=null&&t.endsWith("*")&&e.params["*"]!==A.params["*"]}function gc(e,A){if(e.route.shouldRevalidate){let t=e.route.shouldRevalidate(A);if(typeof t=="boolean")return t}return A.defaultShouldRevalidate}function Ic(e,A,t,n,i){var r;let o;if(e){let g=n[e];ne(g,"No route found to patch children into: routeId = "+e),g.children||(g.children=[]),o=g.children}else o=t;let s=A.filter(g=>!o.some(I=>_d(g,I))),a=Bg(s,i,[e||"_","patch",String(((r=o)==null?void 0:r.length)||"0")],n);o.push(...a)}function _d(e,A){return"id"in e&&"id"in A&&e.id===A.id?!0:e.index===A.index&&e.path===A.path&&e.caseSensitive===A.caseSensitive?(!e.children||e.children.length===0)&&(!A.children||A.children.length===0)?!0:e.children.every((t,n)=>{var i;return(i=A.children)==null?void 0:i.some(r=>_d(t,r))}):!1}async function $0(e,A,t){if(!e.lazy)return;let n=await e.lazy();if(!e.lazy)return;let i=t[e.id];ne(i,"No route found in manifest");let r={};for(let o in n){let a=i[o]!==void 0&&o!=="hasErrorBoundary";oo(!a,'Route "'+i.id+'" has a static property "'+o+'" defined but its lazy function is also returning a value for this property. '+('The lazy route property "'+o+'" will be ignored.')),!a&&!w0.has(o)&&(r[o]=n[o])}Object.assign(i,r),Object.assign(i,Se({},A(i),{lazy:void 0}))}async function Aw(e){let{matches:A}=e,t=A.filter(i=>i.shouldLoad);return(await Promise.all(t.map(i=>i.resolve()))).reduce((i,r,o)=>Object.assign(i,{[t[o].route.id]:r}),{})}async function ew(e,A,t,n,i,r,o,s,a,g){let I=r.map(E=>E.route.lazy?$0(E.route,a,s):void 0),C=r.map((E,d)=>{let h=I[d],c=i.some(u=>u.route.id===E.route.id);return Se({},E,{shouldLoad:c,resolve:async u=>(u&&n.method==="GET"&&(E.route.lazy||E.route.loader)&&(c=!0),c?tw(A,n,E,h,u,g):Promise.resolve({type:ce.data,result:void 0}))})}),B=await e({matches:C,request:n,params:r[0].params,fetcherKey:o,context:g});try{await Promise.all(I)}catch{}return B}async function tw(e,A,t,n,i,r){let o,s,a=g=>{let I,C=new Promise((d,h)=>I=h);s=()=>I(),A.signal.addEventListener("abort",s);let B=d=>typeof g!="function"?Promise.reject(new Error("You cannot call the handler for a route which defines a boolean "+('"'+e+'" [routeId: '+t.route.id+"]"))):g({request:A,params:t.params,context:r},...d!==void 0?[d]:[]),E=(async()=>{try{return{type:"data",result:await(i?i(h=>B(h)):B())}}catch(d){return{type:"error",result:d}}})();return Promise.race([E,C])};try{let g=t.route[e];if(n)if(g){let I,[C]=await Promise.all([a(g).catch(B=>{I=B}),n]);if(I!==void 0)throw I;o=C}else if(await n,g=t.route[e],g)o=await a(g);else if(e==="action"){let I=new URL(A.url),C=I.pathname+I.search;throw dt(405,{method:A.method,pathname:C,routeId:t.route.id})}else return{type:ce.data,result:void 0};else if(g)o=await a(g);else{let I=new URL(A.url),C=I.pathname+I.search;throw dt(404,{pathname:C})}ne(o.result!==void 0,"You defined "+(e==="action"?"an action":"a loader")+" for route "+('"'+t.route.id+"\" but didn't return anything from your `"+e+"` ")+"function. Please return a value or `null`.")}catch(g){return{type:ce.error,result:g}}finally{s&&A.signal.removeEventListener("abort",s)}return o}async function nw(e){let{result:A,type:t}=e;if(Gd(A)){let g;try{let I=A.headers.get("Content-Type");I&&/\bapplication\/json\b/.test(I)?A.body==null?g=null:g=await A.json():g=await A.text()}catch(I){return{type:ce.error,error:I}}return t===ce.error?{type:ce.error,error:new Eg(A.status,A.statusText,g),statusCode:A.status,headers:A.headers}:{type:ce.data,data:g,statusCode:A.status,headers:A.headers}}if(t===ce.error){if(Qc(A)){var n;if(A.data instanceof Error){var i;return{type:ce.error,error:A.data,statusCode:(i=A.init)==null?void 0:i.status}}A=new Eg(((n=A.init)==null?void 0:n.status)||500,void 0,A.data)}return{type:ce.error,error:A,statusCode:Kg(A)?A.status:void 0}}if(aw(A)){var r,o;return{type:ce.deferred,deferredData:A,statusCode:(r=A.init)==null?void 0:r.status,headers:((o=A.init)==null?void 0:o.headers)&&new Headers(A.init.headers)}}if(Qc(A)){var s,a;return{type:ce.data,data:A.data,statusCode:(s=A.init)==null?void 0:s.status,headers:(a=A.init)!=null&&a.headers?new Headers(A.init.headers):void 0}}return{type:ce.data,data:A}}function iw(e,A,t,n,i,r){let o=e.headers.get("Location");if(ne(o,"Redirects returned/thrown from loaders/actions must have a Location header"),!DB.test(o)){let s=n.slice(0,n.findIndex(a=>a.route.id===t)+1);o=sl(new URL(A.url),s,i,!0,o,r),e.headers.set("Location",o)}return e}function Cc(e,A,t){if(DB.test(e)){let n=e,i=n.startsWith("//")?new URL(A.protocol+n):new URL(n),r=Ns(i.pathname,t)!=null;if(i.origin===A.origin&&r)return i.pathname+i.search+i.hash}return e}function sr(e,A,t,n){let i=e.createURL(Ud(A)).toString(),r={signal:t};if(n&&An(n.formMethod)){let{formMethod:o,formEncType:s}=n;r.method=o.toUpperCase(),s==="application/json"?(r.headers=new Headers({"Content-Type":s}),r.body=JSON.stringify(n.json)):s==="text/plain"?r.body=n.text:s==="application/x-www-form-urlencoded"&&n.formData?r.body=gl(n.formData):r.body=n.formData}return new Request(i,r)}function gl(e){let A=new URLSearchParams;for(let[t,n]of e.entries())A.append(t,typeof n=="string"?n:n.name);return A}function lc(e){let A=new FormData;for(let[t,n]of e.entries())A.append(t,n);return A}function rw(e,A,t,n,i){let r={},o=null,s,a=!1,g={},I=t&&Lt(t[1])?t[1].error:void 0;return e.forEach(C=>{if(!(C.route.id in A))return;let B=C.route.id,E=A[B];if(ne(!Yi(E),"Cannot handle redirect results in processLoaderData"),Lt(E)){let d=E.error;if(I!==void 0&&(d=I,I=void 0),o=o||{},i)o[B]=d;else{let h=Gi(e,B);o[h.route.id]==null&&(o[h.route.id]=d)}r[B]=void 0,a||(a=!0,s=Kg(E.error)?E.error.status:500),E.headers&&(g[B]=E.headers)}else oi(E)?(n.set(B,E.deferredData),r[B]=E.deferredData.data,E.statusCode!=null&&E.statusCode!==200&&!a&&(s=E.statusCode),E.headers&&(g[B]=E.headers)):(r[B]=E.data,E.statusCode&&E.statusCode!==200&&!a&&(s=E.statusCode),E.headers&&(g[B]=E.headers))}),I!==void 0&&t&&(o={[t[0]]:I},r[t[0]]=void 0),{loaderData:r,errors:o,statusCode:s||200,loaderHeaders:g}}function Bc(e,A,t,n,i,r,o){let{loaderData:s,errors:a}=rw(A,t,n,o,!1);return i.forEach(g=>{let{key:I,match:C,controller:B}=g,E=r[I];if(ne(E,"Did not find corresponding fetcher result"),!(B&&B.signal.aborted))if(Lt(E)){let d=Gi(e.matches,C==null?void 0:C.route.id);a&&a[d.route.id]||(a=Se({},a,{[d.route.id]:E.error})),e.fetchers.delete(I)}else if(Yi(E))ne(!1,"Unhandled fetcher revalidation redirect");else if(oi(E))ne(!1,"Unhandled fetcher deferred data");else{let d=Zn(E.data);e.fetchers.set(I,d)}}),{loaderData:s,errors:a}}function Ec(e,A,t,n){let i=Se({},A);for(let r of t){let o=r.route.id;if(A.hasOwnProperty(o)?A[o]!==void 0&&(i[o]=A[o]):e[o]!==void 0&&r.route.loader&&(i[o]=e[o]),n&&n.hasOwnProperty(o))break}return i}function cc(e){return e?Lt(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}:{}}function Gi(e,A){return(A?e.slice(0,e.findIndex(n=>n.route.id===A)+1):[...e]).reverse().find(n=>n.route.hasErrorBoundary===!0)||e[0]}function uc(e){let A=e.length===1?e[0]:e.find(t=>t.index||!t.path||t.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:A}],route:A}}function dt(e,A){let{pathname:t,routeId:n,method:i,type:r,message:o}=A===void 0?{}:A,s="Unknown Server Error",a="Unknown @remix-run/router error";return e===400?(s="Bad Request",i&&t&&n?a="You made a "+i+' request to "'+t+'" but '+('did not provide a `loader` for route "'+n+'", ')+"so there is no way to handle the request.":r==="defer-action"?a="defer() is not supported in actions":r==="invalid-body"&&(a="Unable to encode submission body")):e===403?(s="Forbidden",a='Route "'+n+'" does not match URL "'+t+'"'):e===404?(s="Not Found",a='No route matches URL "'+t+'"'):e===405&&(s="Method Not Allowed",i&&t&&n?a="You made a "+i.toUpperCase()+' request to "'+t+'" but '+('did not provide an `action` for route "'+n+'", ')+"so there is no way to handle the request.":i&&(a='Invalid request method "'+i.toUpperCase()+'"')),new Eg(e||500,s,new Error(a),!0)}function qs(e){let A=Object.entries(e);for(let t=A.length-1;t>=0;t--){let[n,i]=A[t];if(Yi(i))return{key:n,result:i}}}function Ud(e){let A=typeof e=="string"?Pn(e):e;return vs(Se({},A,{hash:""}))}function ow(e,A){return e.pathname!==A.pathname||e.search!==A.search?!1:e.hash===""?A.hash!=="":e.hash===A.hash?!0:A.hash!==""}function sw(e){return Gd(e.result)&&W0.has(e.result.status)}function oi(e){return e.type===ce.deferred}function Lt(e){return e.type===ce.error}function Yi(e){return(e&&e.type)===ce.redirect}function Qc(e){return typeof e=="object"&&e!=null&&"type"in e&&"data"in e&&"init"in e&&e.type==="DataWithResponseInit"}function aw(e){let A=e;return A&&typeof A=="object"&&typeof A.data=="object"&&typeof A.subscribe=="function"&&typeof A.cancel=="function"&&typeof A.resolveData=="function"}function Gd(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function gw(e){return J0.has(e.toLowerCase())}function An(e){return K0.has(e.toLowerCase())}async function Iw(e,A,t,n,i){let r=Object.entries(A);for(let o=0;o(B==null?void 0:B.route.id)===s);if(!g)continue;let I=n.find(B=>B.route.id===g.route.id),C=I!=null&&!xd(I,g)&&(i&&i[g.route.id])!==void 0;oi(a)&&C&&await SB(a,t,!1).then(B=>{B&&(A[s]=B)})}}async function Cw(e,A,t){for(let n=0;n(g==null?void 0:g.route.id)===r)&&oi(s)&&(ne(o,"Expected an AbortController for revalidating fetcher deferred result"),await SB(s,o.signal,!0).then(g=>{g&&(A[i]=g)}))}}async function SB(e,A,t){if(t===void 0&&(t=!1),!await e.deferredData.resolveData(A)){if(t)try{return{type:ce.data,data:e.deferredData.unwrappedData}}catch(i){return{type:ce.error,error:i}}return{type:ce.data,data:e.deferredData.data}}}function MB(e){return new URLSearchParams(e).getAll("index").some(A=>A==="")}function Ko(e,A){let t=typeof A=="string"?Pn(A).search:A.search;if(e[e.length-1].route.index&&MB(t||""))return e[e.length-1];let n=Rd(e);return n[n.length-1]}function hc(e){let{formMethod:A,formAction:t,formEncType:n,text:i,formData:r,json:o}=e;if(!(!A||!t||!n)){if(i!=null)return{formMethod:A,formAction:t,formEncType:n,formData:void 0,json:void 0,text:i};if(r!=null)return{formMethod:A,formAction:t,formEncType:n,formData:r,json:void 0,text:void 0};if(o!==void 0)return{formMethod:A,formAction:t,formEncType:n,formData:void 0,json:o,text:void 0}}}function LI(e,A){return A?{state:"loading",location:e,formMethod:A.formMethod,formAction:A.formAction,formEncType:A.formEncType,formData:A.formData,json:A.json,text:A.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function lw(e,A){return{state:"submitting",location:e,formMethod:A.formMethod,formAction:A.formAction,formEncType:A.formEncType,formData:A.formData,json:A.json,text:A.text}}function Lo(e,A){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:A}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:A}}function Bw(e,A){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:A?A.data:void 0}}function Zn(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function Ew(e,A){try{let t=e.sessionStorage.getItem(Ld);if(t){let n=JSON.parse(t);for(let[i,r]of Object.entries(n||{}))r&&Array.isArray(r)&&A.set(i,new Set(r||[]))}}catch{}}function cw(e,A){if(A.size>0){let t={};for(let[n,i]of A)t[n]=[...i];try{e.sessionStorage.setItem(Ld,JSON.stringify(t))}catch(n){oo(!1,"Failed to save applied view transitions in sessionStorage ("+n+").")}}}/** + * React Router v6.28.1 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function ms(){return ms=Object.assign?Object.assign.bind():function(e){for(var A=1;A{s.current=!0}),AA.useCallback(function(g,I){if(I===void 0&&(I={}),!s.current)return;if(typeof g=="number"){n.go(g);return}let C=Nd(g,JSON.parse(o),r,I.relative==="path");e==null&&A!=="/"&&(C.pathname=C.pathname==="/"?A:ui([A,C.pathname])),(I.replace?n.replace:n.push)(C,I.state,I)},[A,n,o,r,e])}const Qw=AA.createContext(null);function hw(e){let A=AA.useContext(ir).outlet;return A&&AA.createElement(Qw.Provider,{value:e},A)}function dw(e,A,t,n){zg()||ne(!1);let{navigator:i}=AA.useContext(Jg),{matches:r}=AA.useContext(ir),o=r[r.length-1],s=o?o.params:{};o&&o.pathname;let a=o?o.pathnameBase:"/";o&&o.route;let g=Hd(),I;if(A){var C;let c=typeof A=="string"?Pn(A):A;a==="/"||(C=c.pathname)!=null&&C.startsWith(a)||ne(!1),I=c}else I=g;let B=I.pathname||"/",E=B;if(a!=="/"){let c=a.replace(/^\//,"").split("/");E="/"+B.replace(/^\//,"").split("/").slice(c.length).join("/")}let d=Ui(e,{pathname:E}),h=yw(d&&d.map(c=>Object.assign({},c,{params:Object.assign({},s,c.params),pathname:ui([a,i.encodeLocation?i.encodeLocation(c.pathname).pathname:c.pathname]),pathnameBase:c.pathnameBase==="/"?a:ui([a,i.encodeLocation?i.encodeLocation(c.pathnameBase).pathname:c.pathnameBase])})),r,t,n);return A&&h?AA.createElement(Wg.Provider,{value:{location:ms({pathname:"/",search:"",hash:"",state:null,key:"default"},I),navigationType:_e.Pop}},h):h}function fw(){let e=Rw(),A=Kg(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),t=e instanceof Error?e.stack:null,i={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"},r=null;return AA.createElement(AA.Fragment,null,AA.createElement("h2",null,"Unexpected Application Error!"),AA.createElement("h3",{style:{fontStyle:"italic"}},A),t?AA.createElement("pre",{style:i},t):null,r)}const pw=AA.createElement(fw,null);class mw extends AA.Component{constructor(A){super(A),this.state={location:A.location,revalidation:A.revalidation,error:A.error}}static getDerivedStateFromError(A){return{error:A}}static getDerivedStateFromProps(A,t){return t.location!==A.location||t.revalidation!=="idle"&&A.revalidation==="idle"?{error:A.error,location:A.location,revalidation:A.revalidation}:{error:A.error!==void 0?A.error:t.error,location:t.location,revalidation:A.revalidation||t.revalidation}}componentDidCatch(A,t){console.error("React Router caught the following error during render",A,t)}render(){return this.state.error!==void 0?AA.createElement(ir.Provider,{value:this.props.routeContext},AA.createElement(kd.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function ww(e){let{routeContext:A,match:t,children:n}=e,i=AA.useContext(Pg);return i&&i.static&&i.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=t.route.id),AA.createElement(ir.Provider,{value:A},n)}function yw(e,A,t,n){var i;if(A===void 0&&(A=[]),t===void 0&&(t=null),n===void 0&&(n=null),e==null){var r;if(!t)return null;if(t.errors)e=t.matches;else if((r=n)!=null&&r.v7_partialHydration&&A.length===0&&!t.initialized&&t.matches.length>0)e=t.matches;else return null}let o=e,s=(i=t)==null?void 0:i.errors;if(s!=null){let I=o.findIndex(C=>C.route.id&&(s==null?void 0:s[C.route.id])!==void 0);I>=0||ne(!1),o=o.slice(0,Math.min(o.length,I+1))}let a=!1,g=-1;if(t&&n&&n.v7_partialHydration)for(let I=0;I=0?o=o.slice(0,g+1):o=[o[0]];break}}}return o.reduceRight((I,C,B)=>{let E,d=!1,h=null,c=null;t&&(E=s&&C.route.id?s[C.route.id]:void 0,h=C.route.errorElement||pw,a&&(g<0&&B===0?(Nw("route-fallback",!1),d=!0,c=null):g===B&&(d=!0,c=C.route.hydrateFallbackElement||null)));let l=A.concat(o.slice(0,B+1)),u=()=>{let Q;return E?Q=h:d?Q=c:C.route.Component?Q=AA.createElement(C.route.Component,null):C.route.element?Q=C.route.element:Q=I,AA.createElement(ww,{match:C,routeContext:{outlet:I,matches:l,isDataRoute:t!=null},children:Q})};return t&&(C.route.ErrorBoundary||C.route.errorElement||B===0)?AA.createElement(mw,{location:t.location,revalidation:t.revalidation,component:h,error:E,children:u(),routeContext:{outlet:null,matches:l,isDataRoute:!0}}):u()},null)}var Yd=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(Yd||{}),cg=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(cg||{});function Dw(e){let A=AA.useContext(Pg);return A||ne(!1),A}function Sw(e){let A=AA.useContext(Td);return A||ne(!1),A}function Mw(e){let A=AA.useContext(ir);return A||ne(!1),A}function Kd(e){let A=Mw(),t=A.matches[A.matches.length-1];return t.route.id||ne(!1),t.route.id}function Rw(){var e;let A=AA.useContext(kd),t=Sw(cg.UseRouteError),n=Kd(cg.UseRouteError);return A!==void 0?A:(e=t.errors)==null?void 0:e[n]}function vw(){let{router:e}=Dw(Yd.UseNavigateStable),A=Kd(cg.UseNavigateStable),t=AA.useRef(!1);return bd(()=>{t.current=!0}),AA.useCallback(function(i,r){r===void 0&&(r={}),t.current&&(typeof i=="number"?e.navigate(i):e.navigate(i,ms({fromRouteId:A},r)))},[e,A])}const dc={};function Nw(e,A,t){!A&&!dc[e]&&(dc[e]=!0)}const fc={};function Fw(e,A){fc[A]||(fc[A]=!0,console.warn(A))}const ar=(e,A,t)=>Fw(e,"⚠️ React Router Future Flag Warning: "+A+". "+("You can use the `"+e+"` future flag to opt-in early. ")+("For more information, see "+t+"."));function Lw(e,A){(e==null?void 0:e.v7_startTransition)===void 0&&ar("v7_startTransition","React Router will begin wrapping state updates in `React.startTransition` in v7","https://reactrouter.com/v6/upgrading/future#v7_starttransition"),(e==null?void 0:e.v7_relativeSplatPath)===void 0&&(!A||!A.v7_relativeSplatPath)&&ar("v7_relativeSplatPath","Relative route resolution within Splat routes is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath"),A&&(A.v7_fetcherPersist===void 0&&ar("v7_fetcherPersist","The persistence behavior of fetchers is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist"),A.v7_normalizeFormMethod===void 0&&ar("v7_normalizeFormMethod","Casing of `formMethod` fields is being normalized to uppercase in v7","https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod"),A.v7_partialHydration===void 0&&ar("v7_partialHydration","`RouterProvider` hydration behavior is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_partialhydration"),A.v7_skipActionErrorRevalidation===void 0&&ar("v7_skipActionErrorRevalidation","The revalidation behavior after 4xx/5xx `action` responses is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation"))}function xw(e){return hw(e.context)}function Mr(e){ne(!1)}function _w(e){let{basename:A="/",children:t=null,location:n,navigationType:i=_e.Pop,navigator:r,static:o=!1,future:s}=e;zg()&&ne(!1);let a=A.replace(/^\/*/,"/"),g=AA.useMemo(()=>({basename:a,navigator:r,static:o,future:ms({v7_relativeSplatPath:!1},s)}),[a,s,r,o]);typeof n=="string"&&(n=Pn(n));let{pathname:I="/",search:C="",hash:B="",state:E=null,key:d="default"}=n,h=AA.useMemo(()=>{let c=Ns(I,a);return c==null?null:{location:{pathname:c,search:C,hash:B,state:E,key:d},navigationType:i}},[a,I,C,B,E,d,i]);return h==null?null:AA.createElement(Jg.Provider,{value:g},AA.createElement(Wg.Provider,{children:t,value:h}))}new Promise(()=>{});function Il(e,A){A===void 0&&(A=[]);let t=[];return AA.Children.forEach(e,(n,i)=>{if(!AA.isValidElement(n))return;let r=[...A,i];if(n.type===AA.Fragment){t.push.apply(t,Il(n.props.children,r));return}n.type!==Mr&&ne(!1),!n.props.index||!n.props.children||ne(!1);let o={id:n.props.id||r.join("-"),caseSensitive:n.props.caseSensitive,element:n.props.element,Component:n.props.Component,index:n.props.index,path:n.props.path,loader:n.props.loader,action:n.props.action,errorElement:n.props.errorElement,ErrorBoundary:n.props.ErrorBoundary,hasErrorBoundary:n.props.ErrorBoundary!=null||n.props.errorElement!=null,shouldRevalidate:n.props.shouldRevalidate,handle:n.props.handle,lazy:n.props.lazy};n.props.children&&(o.children=Il(n.props.children,r)),t.push(o)}),t}function Uw(e){let A={hasErrorBoundary:e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&Object.assign(A,{element:AA.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(A,{hydrateFallbackElement:AA.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(A,{errorElement:AA.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),A}/** + * React Router DOM v6.28.1 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function ug(){return ug=Object.assign?Object.assign.bind():function(e){for(var A=1;A{this.resolve=n=>{this.status==="pending"&&(this.status="resolved",A(n))},this.reject=n=>{this.status==="pending"&&(this.status="rejected",t(n))}})}}function Ww(e){let{fallbackElement:A,router:t,future:n}=e,[i,r]=AA.useState(t.state),[o,s]=AA.useState(),[a,g]=AA.useState({isTransitioning:!1}),[I,C]=AA.useState(),[B,E]=AA.useState(),[d,h]=AA.useState(),c=AA.useRef(new Map),{v7_startTransition:l}=n||{},u=AA.useCallback(N=>{l?Pw(N):N()},[l]),Q=AA.useCallback((N,m)=>{let{deletedFetchers:M,flushSync:P,viewTransitionOpts:X}=m;M.forEach(v=>c.current.delete(v)),N.fetchers.forEach((v,H)=>{v.data!==void 0&&c.current.set(H,v.data)});let Z=t.window==null||t.window.document==null||typeof t.window.document.startViewTransition!="function";if(!X||Z){P?xo(()=>r(N)):u(()=>r(N));return}if(P){xo(()=>{B&&(I&&I.resolve(),B.skipTransition()),g({isTransitioning:!0,flushSync:!0,currentLocation:X.currentLocation,nextLocation:X.nextLocation})});let v=t.window.document.startViewTransition(()=>{xo(()=>r(N))});v.finished.finally(()=>{xo(()=>{C(void 0),E(void 0),s(void 0),g({isTransitioning:!1})})}),xo(()=>E(v));return}B?(I&&I.resolve(),B.skipTransition(),h({state:N,currentLocation:X.currentLocation,nextLocation:X.nextLocation})):(s(N),g({isTransitioning:!0,flushSync:!1,currentLocation:X.currentLocation,nextLocation:X.nextLocation}))},[t.window,B,I,c,u]);AA.useLayoutEffect(()=>t.subscribe(Q),[t,Q]),AA.useEffect(()=>{a.isTransitioning&&!a.flushSync&&C(new Jw)},[a]),AA.useEffect(()=>{if(I&&o&&t.window){let N=o,m=I.promise,M=t.window.document.startViewTransition(async()=>{u(()=>r(N)),await m});M.finished.finally(()=>{C(void 0),E(void 0),s(void 0),g({isTransitioning:!1})}),E(M)}},[u,o,I,t.window]),AA.useEffect(()=>{I&&o&&i.location.key===o.location.key&&I.resolve()},[I,B,i.location,o]),AA.useEffect(()=>{!a.isTransitioning&&d&&(s(d.state),g({isTransitioning:!0,flushSync:!1,currentLocation:d.currentLocation,nextLocation:d.nextLocation}),h(void 0))},[a.isTransitioning,d]),AA.useEffect(()=>{},[]);let p=AA.useMemo(()=>({createHref:t.createHref,encodeLocation:t.encodeLocation,go:N=>t.navigate(N),push:(N,m,M)=>t.navigate(N,{state:m,preventScrollReset:M==null?void 0:M.preventScrollReset}),replace:(N,m,M)=>t.navigate(N,{replace:!0,state:m,preventScrollReset:M==null?void 0:M.preventScrollReset})}),[t]),D=t.basename||"/",f=AA.useMemo(()=>({router:t,navigator:p,static:!1,basename:D}),[t,p,D]),y=AA.useMemo(()=>({v7_relativeSplatPath:t.future.v7_relativeSplatPath}),[t.future.v7_relativeSplatPath]);return AA.useEffect(()=>Lw(n,t.future),[n,t.future]),AA.createElement(AA.Fragment,null,AA.createElement(Pg.Provider,{value:f},AA.createElement(Td.Provider,{value:i},AA.createElement(Ow.Provider,{value:c.current},AA.createElement(bw.Provider,{value:a},AA.createElement(_w,{basename:D,location:i.location,navigationType:i.historyAction,navigator:p,future:y},i.initialized||t.future.v7_partialHydration?AA.createElement(zw,{routes:t.routes,future:t.future,state:i}):A))))),null)}const zw=AA.memo(qw);function qw(e){let{routes:A,future:t,state:n}=e;return dw(A,void 0,n,t)}var wc;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(wc||(wc={}));var yc;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(yc||(yc={}));function Cl(e){this.message=e}Cl.prototype=new Error,Cl.prototype.name="InvalidCharacterError";var Dc=typeof window<"u"&&window.atob&&window.atob.bind(window)||function(e){var A=String(e).replace(/=+$/,"");if(A.length%4==1)throw new Cl("'atob' failed: The string to be decoded is not correctly encoded.");for(var t,n,i=0,r=0,o="";n=A.charAt(r++);~n&&(t=i%4?64*t+n:n,i++%4)?o+=String.fromCharCode(255&t>>(-2*i&6)):0)n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(n);return o};function Vw(e){var A=e.replace(/-/g,"+").replace(/_/g,"/");switch(A.length%4){case 0:break;case 2:A+="==";break;case 3:A+="=";break;default:throw"Illegal base64url string!"}try{return function(t){return decodeURIComponent(Dc(t).replace(/(.)/g,function(n,i){var r=i.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r}))}(A)}catch{return Dc(A)}}function Qg(e){this.message=e}function jw(e,A){if(typeof e!="string")throw new Qg("Invalid token specified");var t=(A=A||{}).header===!0?0:1;try{return JSON.parse(Vw(e.split(".")[t]))}catch(n){throw new Qg("Invalid token specified: "+n.message)}}Qg.prototype=new Error,Qg.prototype.name="InvalidTokenError";const dn=Object.create(null);dn.open="0";dn.close="1";dn.ping="2";dn.pong="3";dn.message="4";dn.upgrade="5";dn.noop="6";const Ua=Object.create(null);Object.keys(dn).forEach(e=>{Ua[dn[e]]=e});const ll={type:"error",data:"parser error"},Pd=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",Jd=typeof ArrayBuffer=="function",Wd=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,RB=({type:e,data:A},t,n)=>Pd&&A instanceof Blob?t?n(A):Sc(A,n):Jd&&(A instanceof ArrayBuffer||Wd(A))?t?n(A):Sc(new Blob([A]),n):n(dn[e]+(A||"")),Sc=(e,A)=>{const t=new FileReader;return t.onload=function(){const n=t.result.split(",")[1];A("b"+(n||""))},t.readAsDataURL(e)};function Mc(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let xI;function Xw(e,A){if(Pd&&e.data instanceof Blob)return e.data.arrayBuffer().then(Mc).then(A);if(Jd&&(e.data instanceof ArrayBuffer||Wd(e.data)))return A(Mc(e.data));RB(e,!1,t=>{xI||(xI=new TextEncoder),A(xI.encode(t))})}const Rc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Po=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e{let A=e.length*.75,t=e.length,n,i=0,r,o,s,a;e[e.length-1]==="="&&(A--,e[e.length-2]==="="&&A--);const g=new ArrayBuffer(A),I=new Uint8Array(g);for(n=0;n>4,I[i++]=(o&15)<<4|s>>2,I[i++]=(s&3)<<6|a&63;return g},$w=typeof ArrayBuffer=="function",vB=(e,A)=>{if(typeof e!="string")return{type:"message",data:zd(e,A)};const t=e.charAt(0);return t==="b"?{type:"message",data:Ay(e.substring(1),A)}:Ua[t]?e.length>1?{type:Ua[t],data:e.substring(1)}:{type:Ua[t]}:ll},Ay=(e,A)=>{if($w){const t=Zw(e);return zd(t,A)}else return{base64:!0,data:e}},zd=(e,A)=>{switch(A){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},qd=String.fromCharCode(30),ey=(e,A)=>{const t=e.length,n=new Array(t);let i=0;e.forEach((r,o)=>{RB(r,!1,s=>{n[o]=s,++i===t&&A(n.join(qd))})})},ty=(e,A)=>{const t=e.split(qd),n=[];for(let i=0;i{const n=t.length;let i;if(n<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,n);else if(n<65536){i=new Uint8Array(3);const r=new DataView(i.buffer);r.setUint8(0,126),r.setUint16(1,n)}else{i=new Uint8Array(9);const r=new DataView(i.buffer);r.setUint8(0,127),r.setBigUint64(1,BigInt(n))}e.data&&typeof e.data!="string"&&(i[0]|=128),A.enqueue(i),A.enqueue(t)})}})}let _I;function Vs(e){return e.reduce((A,t)=>A+t.length,0)}function js(e,A){if(e[0].length===A)return e.shift();const t=new Uint8Array(A);let n=0;for(let i=0;iMath.pow(2,53-32)-1){s.enqueue(ll);break}i=I*Math.pow(2,32)+g.getUint32(4),n=3}else{if(Vs(t)e){s.enqueue(ll);break}}}})}const Vd=4;function He(e){if(e)return ry(e)}function ry(e){for(var A in He.prototype)e[A]=He.prototype[A];return e}He.prototype.on=He.prototype.addEventListener=function(e,A){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(A),this};He.prototype.once=function(e,A){function t(){this.off(e,t),A.apply(this,arguments)}return t.fn=A,this.on(e,t),this};He.prototype.off=He.prototype.removeListener=He.prototype.removeAllListeners=He.prototype.removeEventListener=function(e,A){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var t=this._callbacks["$"+e];if(!t)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var n,i=0;itypeof Promise=="function"&&typeof Promise.resolve=="function"?A=>Promise.resolve().then(A):(A,t)=>t(A,0))(),Yt=(()=>typeof self<"u"?self:typeof window<"u"?window:Function("return this")())(),oy="arraybuffer";function jd(e,...A){return A.reduce((t,n)=>(e.hasOwnProperty(n)&&(t[n]=e[n]),t),{})}const sy=Yt.setTimeout,ay=Yt.clearTimeout;function Vg(e,A){A.useNativeTimers?(e.setTimeoutFn=sy.bind(Yt),e.clearTimeoutFn=ay.bind(Yt)):(e.setTimeoutFn=Yt.setTimeout.bind(Yt),e.clearTimeoutFn=Yt.clearTimeout.bind(Yt))}const gy=1.33;function Iy(e){return typeof e=="string"?Cy(e):Math.ceil((e.byteLength||e.size)*gy)}function Cy(e){let A=0,t=0;for(let n=0,i=e.length;n=57344?t+=3:(n++,t+=4);return t}function Xd(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function ly(e){let A="";for(let t in e)e.hasOwnProperty(t)&&(A.length&&(A+="&"),A+=encodeURIComponent(t)+"="+encodeURIComponent(e[t]));return A}function By(e){let A={},t=e.split("&");for(let n=0,i=t.length;n{this.readyState="paused",A()};if(this._polling||!this.writable){let n=0;this._polling&&(n++,this.once("pollComplete",function(){--n||t()})),this.writable||(n++,this.once("drain",function(){--n||t()}))}else t()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(A){const t=n=>{if(this.readyState==="opening"&&n.type==="open"&&this.onOpen(),n.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(n)};ty(A,this.socket.binaryType).forEach(t),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const A=()=>{this.write([{type:"close"}])};this.readyState==="open"?A():this.once("open",A)}write(A){this.writable=!1,ey(A,t=>{this.doWrite(t,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const A=this.opts.secure?"https":"http",t=this.query||{};return this.opts.timestampRequests!==!1&&(t[this.opts.timestampParam]=Xd()),!this.supportsBinary&&!t.sid&&(t.b64=1),this.createUri(A,t)}}let Zd=!1;try{Zd=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const uy=Zd;function Qy(){}class hy extends cy{constructor(A){if(super(A),typeof location<"u"){const t=location.protocol==="https:";let n=location.port;n||(n=t?"443":"80"),this.xd=typeof location<"u"&&A.hostname!==location.hostname||n!==A.port}}doWrite(A,t){const n=this.request({method:"POST",data:A});n.on("success",t),n.on("error",(i,r)=>{this.onError("xhr post error",i,r)})}doPoll(){const A=this.request();A.on("data",this.onData.bind(this)),A.on("error",(t,n)=>{this.onError("xhr poll error",t,n)}),this.pollXhr=A}}let Vr=class Ga extends He{constructor(A,t,n){super(),this.createRequest=A,Vg(this,n),this._opts=n,this._method=n.method||"GET",this._uri=t,this._data=n.data!==void 0?n.data:null,this._create()}_create(){var A;const t=jd(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this._opts.xd;const n=this._xhr=this.createRequest(t);try{n.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0);for(let i in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(i)&&n.setRequestHeader(i,this._opts.extraHeaders[i])}}catch{}if(this._method==="POST")try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{n.setRequestHeader("Accept","*/*")}catch{}(A=this._opts.cookieJar)===null||A===void 0||A.addCookies(n),"withCredentials"in n&&(n.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(n.timeout=this._opts.requestTimeout),n.onreadystatechange=()=>{var i;n.readyState===3&&((i=this._opts.cookieJar)===null||i===void 0||i.parseCookies(n.getResponseHeader("set-cookie"))),n.readyState===4&&(n.status===200||n.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof n.status=="number"?n.status:0)},0))},n.send(this._data)}catch(i){this.setTimeoutFn(()=>{this._onError(i)},0);return}typeof document<"u"&&(this._index=Ga.requestsCount++,Ga.requests[this._index]=this)}_onError(A){this.emitReserved("error",A,this._xhr),this._cleanup(!0)}_cleanup(A){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=Qy,A)try{this._xhr.abort()}catch{}typeof document<"u"&&delete Ga.requests[this._index],this._xhr=null}}_onLoad(){const A=this._xhr.responseText;A!==null&&(this.emitReserved("data",A),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}};Vr.requestsCount=0;Vr.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",vc);else if(typeof addEventListener=="function"){const e="onpagehide"in Yt?"pagehide":"unload";addEventListener(e,vc,!1)}}function vc(){for(let e in Vr.requests)Vr.requests.hasOwnProperty(e)&&Vr.requests[e].abort()}const dy=function(){const e=$d({xdomain:!1});return e&&e.responseType!==null}();class fy extends hy{constructor(A){super(A);const t=A&&A.forceBase64;this.supportsBinary=dy&&!t}request(A={}){return Object.assign(A,{xd:this.xd},this.opts),new Vr($d,this.uri(),A)}}function $d(e){const A=e.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!A||uy))return new XMLHttpRequest}catch{}if(!A)try{return new Yt[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const Af=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class py extends NB{get name(){return"websocket"}doOpen(){const A=this.uri(),t=this.opts.protocols,n=Af?{}:jd(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(A,t,n)}catch(i){return this.emitReserved("error",i)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=A=>this.onClose({description:"websocket connection closed",context:A}),this.ws.onmessage=A=>this.onData(A.data),this.ws.onerror=A=>this.onError("websocket error",A)}write(A){this.writable=!1;for(let t=0;t{try{this.doWrite(n,r)}catch{}i&&qg(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const A=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=Xd()),this.supportsBinary||(t.b64=1),this.createUri(A,t)}}const UI=Yt.WebSocket||Yt.MozWebSocket;class my extends py{createSocket(A,t,n){return Af?new UI(A,t,n):t?new UI(A,t):new UI(A)}doWrite(A,t){this.ws.send(t)}}class wy extends NB{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(A){return this.emitReserved("error",A)}this._transport.closed.then(()=>{this.onClose()}).catch(A=>{this.onError("webtransport error",A)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(A=>{const t=iy(Number.MAX_SAFE_INTEGER,this.socket.binaryType),n=A.readable.pipeThrough(t).getReader(),i=ny();i.readable.pipeTo(A.writable),this._writer=i.writable.getWriter();const r=()=>{n.read().then(({done:s,value:a})=>{s||(this.onPacket(a),r())}).catch(s=>{})};r();const o={type:"open"};this.query.sid&&(o.data=`{"sid":"${this.query.sid}"}`),this._writer.write(o).then(()=>this.onOpen())})})}write(A){this.writable=!1;for(let t=0;t{i&&qg(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var A;(A=this._transport)===null||A===void 0||A.close()}}const yy={websocket:my,webtransport:wy,polling:fy},Dy=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Sy=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function Bl(e){if(e.length>8e3)throw"URI too long";const A=e,t=e.indexOf("["),n=e.indexOf("]");t!=-1&&n!=-1&&(e=e.substring(0,t)+e.substring(t,n).replace(/:/g,";")+e.substring(n,e.length));let i=Dy.exec(e||""),r={},o=14;for(;o--;)r[Sy[o]]=i[o]||"";return t!=-1&&n!=-1&&(r.source=A,r.host=r.host.substring(1,r.host.length-1).replace(/;/g,":"),r.authority=r.authority.replace("[","").replace("]","").replace(/;/g,":"),r.ipv6uri=!0),r.pathNames=My(r,r.path),r.queryKey=Ry(r,r.query),r}function My(e,A){const t=/\/{2,9}/g,n=A.replace(t,"/").split("/");return(A.slice(0,1)=="/"||A.length===0)&&n.splice(0,1),A.slice(-1)=="/"&&n.splice(n.length-1,1),n}function Ry(e,A){const t={};return A.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(n,i,r){i&&(t[i]=r)}),t}const El=typeof addEventListener=="function"&&typeof removeEventListener=="function",Ta=[];El&&addEventListener("offline",()=>{Ta.forEach(e=>e())},!1);class Qi extends He{constructor(A,t){if(super(),this.binaryType=oy,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,A&&typeof A=="object"&&(t=A,A=null),A){const n=Bl(A);t.hostname=n.host,t.secure=n.protocol==="https"||n.protocol==="wss",t.port=n.port,n.query&&(t.query=n.query)}else t.host&&(t.hostname=Bl(t.host).host);Vg(this,t),this.secure=t.secure!=null?t.secure:typeof location<"u"&&location.protocol==="https:",t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=t.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},t.transports.forEach(n=>{const i=n.prototype.name;this.transports.push(i),this._transportsByName[i]=n}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=By(this.opts.query)),El&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Ta.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(A){const t=Object.assign({},this.opts.query);t.EIO=Vd,t.transport=A,this.id&&(t.sid=this.id);const n=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[A]);return new this._transportsByName[A](n)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const A=this.opts.rememberUpgrade&&Qi.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const t=this.createTransport(A);t.open(),this.setTransport(t)}setTransport(A){this.transport&&this.transport.removeAllListeners(),this.transport=A,A.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",t=>this._onClose("transport close",t))}onOpen(){this.readyState="open",Qi.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(A){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",A),this.emitReserved("heartbeat"),A.type){case"open":this.onHandshake(JSON.parse(A.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const t=new Error("server error");t.code=A.data,this._onError(t);break;case"message":this.emitReserved("data",A.data),this.emitReserved("message",A.data);break}}onHandshake(A){this.emitReserved("handshake",A),this.id=A.sid,this.transport.query.sid=A.sid,this._pingInterval=A.pingInterval,this._pingTimeout=A.pingTimeout,this._maxPayload=A.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const A=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+A,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},A),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const A=this._getWritablePackets();this.transport.send(A),this._prevBufferLen=A.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let t=1;for(let n=0;n0&&t>this._maxPayload)return this.writeBuffer.slice(0,n);t+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const A=Date.now()>this._pingTimeoutTime;return A&&(this._pingTimeoutTime=0,qg(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),A}write(A,t,n){return this._sendPacket("message",A,t,n),this}send(A,t,n){return this._sendPacket("message",A,t,n),this}_sendPacket(A,t,n,i){if(typeof t=="function"&&(i=t,t=void 0),typeof n=="function"&&(i=n,n=null),this.readyState==="closing"||this.readyState==="closed")return;n=n||{},n.compress=n.compress!==!1;const r={type:A,data:t,options:n};this.emitReserved("packetCreate",r),this.writeBuffer.push(r),i&&this.once("flush",i),this.flush()}close(){const A=()=>{this._onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),A()},n=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?n():A()}):this.upgrading?n():A()),this}_onError(A){if(Qi.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",A),this._onClose("transport error",A)}_onClose(A,t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),El&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const n=Ta.indexOf(this._offlineEventListener);n!==-1&&Ta.splice(n,1)}this.readyState="closed",this.id=null,this.emitReserved("close",A,t),this.writeBuffer=[],this._prevBufferLen=0}}}Qi.protocol=Vd;class vy extends Qi{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let A=0;A{n||(t.send([{type:"ping",data:"probe"}]),t.once("packet",C=>{if(!n)if(C.type==="pong"&&C.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;Qi.priorWebsocketSuccess=t.name==="websocket",this.transport.pause(()=>{n||this.readyState!=="closed"&&(I(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())})}else{const B=new Error("probe error");B.transport=t.name,this.emitReserved("upgradeError",B)}}))};function r(){n||(n=!0,I(),t.close(),t=null)}const o=C=>{const B=new Error("probe error: "+C);B.transport=t.name,r(),this.emitReserved("upgradeError",B)};function s(){o("transport closed")}function a(){o("socket closed")}function g(C){t&&C.name!==t.name&&r()}const I=()=>{t.removeListener("open",i),t.removeListener("error",o),t.removeListener("close",s),this.off("close",a),this.off("upgrading",g)};t.once("open",i),t.once("error",o),t.once("close",s),this.once("close",a),this.once("upgrading",g),this._upgrades.indexOf("webtransport")!==-1&&A!=="webtransport"?this.setTimeoutFn(()=>{n||t.open()},200):t.open()}onHandshake(A){this._upgrades=this._filterUpgrades(A.upgrades),super.onHandshake(A)}_filterUpgrades(A){const t=[];for(let n=0;nyy[i]).filter(i=>!!i)),super(A,n)}};function Fy(e,A="",t){let n=e;t=t||typeof location<"u"&&location,e==null&&(e=t.protocol+"//"+t.host),typeof e=="string"&&(e.charAt(0)==="/"&&(e.charAt(1)==="/"?e=t.protocol+e:e=t.host+e),/^(https?|wss?):\/\//.test(e)||(typeof t<"u"?e=t.protocol+"//"+e:e="https://"+e),n=Bl(e)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";const r=n.host.indexOf(":")!==-1?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+r+":"+n.port+A,n.href=n.protocol+"://"+r+(t&&t.port===n.port?"":":"+n.port),n}const Ly=typeof ArrayBuffer=="function",xy=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,ef=Object.prototype.toString,_y=typeof Blob=="function"||typeof Blob<"u"&&ef.call(Blob)==="[object BlobConstructor]",Uy=typeof File=="function"||typeof File<"u"&&ef.call(File)==="[object FileConstructor]";function FB(e){return Ly&&(e instanceof ArrayBuffer||xy(e))||_y&&e instanceof Blob||Uy&&e instanceof File}function ka(e,A){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let t=0,n=e.length;t=0&&e.num{delete this.acks[A];for(let s=0;s{this.io.clearTimeoutFn(r),t.apply(this,s)};o.withError=!0,this.acks[A]=o}emitWithAck(A,...t){return new Promise((n,i)=>{const r=(o,s)=>o?i(o):n(s);r.withError=!0,t.push(r),this.emit(A,...t)})}_addToQueue(A){let t;typeof A[A.length-1]=="function"&&(t=A.pop());const n={id:this._queueSeq++,tryCount:0,pending:!1,args:A,flags:Object.assign({fromQueue:!0},this.flags)};A.push((i,...r)=>n!==this._queue[0]?void 0:(i!==null?n.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(i)):(this._queue.shift(),t&&t(null,...r)),n.pending=!1,this._drainQueue())),this._queue.push(n),this._drainQueue()}_drainQueue(A=!1){if(!this.connected||this._queue.length===0)return;const t=this._queue[0];t.pending&&!A||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(A){A.nsp=this.nsp,this.io._packet(A)}onopen(){typeof this.auth=="function"?this.auth(A=>{this._sendConnectPacket(A)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(A){this.packet({type:ae.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},A):A})}onerror(A){this.connected||this.emitReserved("connect_error",A)}onclose(A,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",A,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(A=>{if(!this.sendBuffer.some(n=>String(n.id)===A)){const n=this.acks[A];delete this.acks[A],n.withError&&n.call(this,new Error("socket has been disconnected"))}})}onpacket(A){if(A.nsp===this.nsp)switch(A.type){case ae.CONNECT:A.data&&A.data.sid?this.onconnect(A.data.sid,A.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case ae.EVENT:case ae.BINARY_EVENT:this.onevent(A);break;case ae.ACK:case ae.BINARY_ACK:this.onack(A);break;case ae.DISCONNECT:this.ondisconnect();break;case ae.CONNECT_ERROR:this.destroy();const n=new Error(A.data.message);n.data=A.data.data,this.emitReserved("connect_error",n);break}}onevent(A){const t=A.data||[];A.id!=null&&t.push(this.ack(A.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(A){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const n of t)n.apply(this,A)}super.emit.apply(this,A),this._pid&&A.length&&typeof A[A.length-1]=="string"&&(this._lastOffset=A[A.length-1])}ack(A){const t=this;let n=!1;return function(...i){n||(n=!0,t.packet({type:ae.ACK,id:A,data:i}))}}onack(A){const t=this.acks[A.id];typeof t=="function"&&(delete this.acks[A.id],t.withError&&A.data.unshift(null),t.apply(this,A.data))}onconnect(A,t){this.id=A,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(A=>this.emitEvent(A)),this.receiveBuffer=[],this.sendBuffer.forEach(A=>{this.notifyOutgoingListeners(A),this.packet(A)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(A=>A()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:ae.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(A){return this.flags.compress=A,this}get volatile(){return this.flags.volatile=!0,this}timeout(A){return this.flags.timeout=A,this}onAny(A){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(A),this}prependAny(A){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(A),this}offAny(A){if(!this._anyListeners)return this;if(A){const t=this._anyListeners;for(let n=0;n0&&e.jitter<=1?e.jitter:0,this.attempts=0}uo.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var A=Math.random(),t=Math.floor(A*this.jitter*e);e=Math.floor(A*10)&1?e+t:e-t}return Math.min(e,this.max)|0};uo.prototype.reset=function(){this.attempts=0};uo.prototype.setMin=function(e){this.ms=e};uo.prototype.setMax=function(e){this.max=e};uo.prototype.setJitter=function(e){this.jitter=e};class Ql extends He{constructor(A,t){var n;super(),this.nsps={},this.subs=[],A&&typeof A=="object"&&(t=A,A=void 0),t=t||{},t.path=t.path||"/socket.io",this.opts=t,Vg(this,t),this.reconnection(t.reconnection!==!1),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor((n=t.randomizationFactor)!==null&&n!==void 0?n:.5),this.backoff=new uo({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(t.timeout==null?2e4:t.timeout),this._readyState="closed",this.uri=A;const i=t.parser||Yy;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=t.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(A){return arguments.length?(this._reconnection=!!A,A||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(A){return A===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=A,this)}reconnectionDelay(A){var t;return A===void 0?this._reconnectionDelay:(this._reconnectionDelay=A,(t=this.backoff)===null||t===void 0||t.setMin(A),this)}randomizationFactor(A){var t;return A===void 0?this._randomizationFactor:(this._randomizationFactor=A,(t=this.backoff)===null||t===void 0||t.setJitter(A),this)}reconnectionDelayMax(A){var t;return A===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=A,(t=this.backoff)===null||t===void 0||t.setMax(A),this)}timeout(A){return arguments.length?(this._timeout=A,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(A){if(~this._readyState.indexOf("open"))return this;this.engine=new Ny(this.uri,this.opts);const t=this.engine,n=this;this._readyState="opening",this.skipReconnect=!1;const i=en(t,"open",function(){n.onopen(),A&&A()}),r=s=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",s),A?A(s):this.maybeReconnectOnOpen()},o=en(t,"error",r);if(this._timeout!==!1){const s=this._timeout,a=this.setTimeoutFn(()=>{i(),r(new Error("timeout")),t.close()},s);this.opts.autoUnref&&a.unref(),this.subs.push(()=>{this.clearTimeoutFn(a)})}return this.subs.push(i),this.subs.push(o),this}connect(A){return this.open(A)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const A=this.engine;this.subs.push(en(A,"ping",this.onping.bind(this)),en(A,"data",this.ondata.bind(this)),en(A,"error",this.onerror.bind(this)),en(A,"close",this.onclose.bind(this)),en(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(A){try{this.decoder.add(A)}catch(t){this.onclose("parse error",t)}}ondecoded(A){qg(()=>{this.emitReserved("packet",A)},this.setTimeoutFn)}onerror(A){this.emitReserved("error",A)}socket(A,t){let n=this.nsps[A];return n?this._autoConnect&&!n.active&&n.connect():(n=new tf(this,A,t),this.nsps[A]=n),n}_destroy(A){const t=Object.keys(this.nsps);for(const n of t)if(this.nsps[n].active)return;this._close()}_packet(A){const t=this.encoder.encode(A);for(let n=0;nA()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(A,t){var n;this.cleanup(),(n=this.engine)===null||n===void 0||n.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",A,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const A=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const n=this.setTimeoutFn(()=>{A.skipReconnect||(this.emitReserved("reconnect_attempt",A.backoff.attempts),!A.skipReconnect&&A.open(i=>{i?(A._reconnecting=!1,A.reconnect(),this.emitReserved("reconnect_error",i)):A.onreconnect()}))},t);this.opts.autoUnref&&n.unref(),this.subs.push(()=>{this.clearTimeoutFn(n)})}}onreconnect(){const A=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",A)}}const _o={};function Ha(e,A){typeof e=="object"&&(A=e,e=void 0),A=A||{};const t=Fy(e,A.path||"/socket.io"),n=t.source,i=t.id,r=t.path,o=_o[i]&&r in _o[i].nsps,s=A.forceNew||A["force new connection"]||A.multiplex===!1||o;let a;return s?a=new Ql(n,A):(_o[i]||(_o[i]=new Ql(n,A)),a=_o[i]),t.query&&!A.query&&(A.query=t.queryKey),a.socket(t.path,A)}Object.assign(Ha,{Manager:Ql,Socket:tf,io:Ha,connect:Ha});function Py(e){return Object.keys(e).map(A=>A+"="+encodeURIComponent(e[A])).join("&")}function nf(e){if(!e.ok)throw`API request failed with response status ${e.status} and text: ${e.statusText}`;return e.clone().json().catch(A=>e.text().then(t=>{throw`API request's result could not be converted to a JSON object: +${t}`}))}function Jy(e,A={}){const t=e+"?"+Py(A);return fetch(t).then(nf).catch(n=>{throw`GET request to ${t} failed with error: +${n}`})}function ba(e,A={}){return fetch(e,{method:"post",headers:{"Content-type":"application/json"},body:JSON.stringify(A)}).then(nf).catch(t=>{throw`POST request to ${e} failed with error: +${t}`})}const Wy=window.location.hostname+":"+window.location.port,hl=Ha(Wy);hl.on("connect",()=>{ba("/api/initsocket",{socketid:hl.id})});const zy=AA.createContext(null),qy=()=>{const[e,A]=AA.useState(void 0);AA.useEffect(()=>{Jy("/api/whoami").then(r=>{r._id&&A(r._id)})},[]);const i={userId:e,handleLogin:r=>{const o=r.credential,s=jw(o);console.log(`Logged in as ${s.name}`),ba("/api/login",{token:o}).then(a=>{A(a._id),ba("/api/initsocket",{socketid:hl.id})})},handleLogout:()=>{A(void 0),ba("/api/logout")}};return fA.jsx(zy.Provider,{value:i,children:fA.jsx(xw,{})})},Vy=()=>fA.jsxs("div",{children:[fA.jsx("h1",{children:"404 Not Found"}),fA.jsx("p",{children:"The page you requested couldn't be found."})]});function jy(e={}){const{nonce:A,onScriptLoadSuccess:t,onScriptLoadError:n}=e,[i,r]=AA.useState(!1),o=AA.useRef(t);o.current=t;const s=AA.useRef(n);return s.current=n,AA.useEffect(()=>{const a=document.createElement("script");return a.src="https://accounts.google.com/gsi/client",a.async=!0,a.defer=!0,a.nonce=A,a.onload=()=>{var g;r(!0),(g=o.current)===null||g===void 0||g.call(o)},a.onerror=()=>{var g;r(!1),(g=s.current)===null||g===void 0||g.call(s)},document.body.appendChild(a),()=>{document.body.removeChild(a)}},[A]),i}const rf=AA.createContext(null);function Xy({clientId:e,nonce:A,onScriptLoadSuccess:t,onScriptLoadError:n,children:i}){const r=jy({nonce:A,onScriptLoadSuccess:t,onScriptLoadError:n}),o=AA.useMemo(()=>({clientId:e,scriptLoadedSuccessfully:r}),[e,r]);return xl.createElement(rf.Provider,{value:o},i)}function Zy(){const e=AA.useContext(rf);if(!e)throw new Error("Google OAuth components must be used within GoogleOAuthProvider");return e}function $y(e){var A;return(A=e==null?void 0:e.clientId)!==null&&A!==void 0?A:e==null?void 0:e.client_id}const AD={large:40,medium:32,small:20};function eD({onSuccess:e,onError:A,useOneTap:t,promptMomentNotification:n,type:i="standard",theme:r="outline",size:o="large",text:s,shape:a,logo_alignment:g,width:I,locale:C,click_listener:B,containerProps:E,...d}){const h=AA.useRef(null),{clientId:c,scriptLoadedSuccessfully:l}=Zy(),u=AA.useRef(e);u.current=e;const Q=AA.useRef(A);Q.current=A;const p=AA.useRef(n);return p.current=n,AA.useEffect(()=>{var D,f,y,N,m,M,P,X,Z;if(l)return(y=(f=(D=window==null?void 0:window.google)===null||D===void 0?void 0:D.accounts)===null||f===void 0?void 0:f.id)===null||y===void 0||y.initialize({client_id:c,callback:v=>{var H;if(!(v!=null&&v.credential))return(H=Q.current)===null||H===void 0?void 0:H.call(Q);const{credential:$,select_by:j}=v;u.current({credential:$,clientId:$y(v),select_by:j})},...d}),(M=(m=(N=window==null?void 0:window.google)===null||N===void 0?void 0:N.accounts)===null||m===void 0?void 0:m.id)===null||M===void 0||M.renderButton(h.current,{type:i,theme:r,size:o,text:s,shape:a,logo_alignment:g,width:I,locale:C,click_listener:B}),t&&((Z=(X=(P=window==null?void 0:window.google)===null||P===void 0?void 0:P.accounts)===null||X===void 0?void 0:X.id)===null||Z===void 0||Z.prompt(p.current)),()=>{var v,H,$;t&&(($=(H=(v=window==null?void 0:window.google)===null||v===void 0?void 0:v.accounts)===null||H===void 0?void 0:H.id)===null||$===void 0||$.cancel())}},[c,l,t,i,r,o,s,a,g,I,C]),xl.createElement("div",{...E,ref:h,style:{height:AD[o],...E==null?void 0:E.style}})}async function tD(e){const A=await fetch("/api/login",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:e})}),t=await A.text();if(!A.ok)throw new Error(t);return JSON.parse(t)}function of({onSuccess:e}){const[A,t]=AA.useState("");return fA.jsxs("div",{style:{color:"#fff"},children:[A?fA.jsx("div",{style:{color:"#ff7777",marginBottom:10},children:A}):null,fA.jsx(eD,{onSuccess:async n=>{try{t(""),await tD(n.credential),e&&e(n)}catch(i){t(String((i==null?void 0:i.message)||i))}},onError:()=>{t("Google sign in failed")}})]})}function nD(){const e=Od(),A="jV_am1GXbGM";return fA.jsxs("div",{style:{position:"relative",width:"100%",height:"100vh",overflow:"hidden",background:"#000"},children:[fA.jsx("div",{style:{position:"absolute",inset:0,pointerEvents:"none"},children:fA.jsx("iframe",{title:"bg",src:"https://www.youtube.com/embed/"+A+"?autoplay=1&mute=1&controls=0&rel=0&modestbranding=1&playsinline=1&loop=1&playlist="+A,allow:"autoplay; encrypted-media; picture-in-picture",style:{position:"absolute",top:"50%",left:"50%",width:"200vw",height:"112.5vw",minWidth:"177.78vh",minHeight:"100vh",transform:"translate(-50%, -50%)",border:0,opacity:.55}})}),fA.jsx("div",{style:{position:"absolute",inset:0,background:"rgba(0,0,0,0.55)"}}),fA.jsx("div",{style:{position:"relative",zIndex:2,height:"100%",display:"flex",alignItems:"center",justifyContent:"center",padding:24},children:fA.jsxs("div",{style:{width:"min(520px, 100%)",border:"1px solid rgba(255,255,255,0.14)",borderRadius:18,padding:22,backdropFilter:"blur(10px)",background:"rgba(10,10,10,0.55)",color:"#fff"},children:[fA.jsx("div",{style:{fontSize:14,opacity:.85,marginBottom:6},children:"PlaybackXR"}),fA.jsx("div",{style:{fontSize:26,fontWeight:700,marginBottom:10},children:"Build an isometric splat town"}),fA.jsx("div",{style:{fontSize:14,lineHeight:1.5,opacity:.85,marginBottom:16},children:"Pick a plot, attach a Luma capture link, then walk the town."}),fA.jsx("div",{style:{display:"flex",justifyContent:"center",marginTop:12},children:fA.jsx(of,{onSuccess:()=>e("/maps")})})]})})]})}async function GI(e){const A=await fetch(e,{credentials:"include"});if(!A.ok)throw new Error(await A.text());return A.json()}async function iD(e,A){const t=await fetch(e,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify(A)});if(!t.ok)throw new Error(await t.text());return t.json()}async function rD({mapId:e,cellId:A,file:t}){const n=new FormData;n.append("asset",t),n.append("mapId",e),n.append("cellId",A);const i=await fetch("/api/upload/ply",{method:"POST",credentials:"include",body:n}),r=await i.text();if(!i.ok)throw new Error(r);return JSON.parse(r)}async function oD({mapId:e,cellId:A,lumaCaptureUrl:t}){const n=await fetch("/api/luma/attach",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({mapId:e,cellId:A,lumaCaptureUrl:t})}),i=await n.text();if(!n.ok)throw new Error(i);return JSON.parse(i)}async function sD(e){const A=await fetch(`/api/splats/${e}`,{method:"DELETE",credentials:"include"}),t=await A.text();if(!A.ok)throw new Error(t);return JSON.parse(t)}function aD({cell:e,onReserve:A,onSelectFilled:t,isSelected:n}){const i=e.status==="empty",r=e.status==="filled",o=i?A:r?t:void 0;return fA.jsx("div",{onClick:o,style:{border:n?"2px solid #ffffff":"1px solid #333",borderRadius:12,height:140,background:i?"#111":e.status==="reserved"?"#332200":"#002233",color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",cursor:i||r?"pointer":"not-allowed",position:"relative",overflow:"hidden",userSelect:"none"},children:e.status!=="filled"?fA.jsx("div",{style:{opacity:.9},children:e.status.toUpperCase()}):fA.jsxs(fA.Fragment,{children:[fA.jsx("img",{src:"/placeholder.png",alt:"placeholder",style:{width:"100%",height:"100%",objectFit:"cover",opacity:.9}}),fA.jsx("div",{style:{position:"absolute",bottom:8,left:8,fontSize:12,background:"rgba(0,0,0,0.6)",padding:"4px 6px",borderRadius:6},children:"FILLED"})]})})}function gD(){var Z;const e=Od(),[A,t]=AA.useState([]),[n,i]=AA.useState(""),[r,o]=AA.useState([]),[s,a]=AA.useState([]),[g,I]=AA.useState(null),[C,B]=AA.useState(null),[E,d]=AA.useState(null),[h,c]=AA.useState(""),[l,u]=AA.useState(!1),[Q,p]=AA.useState(""),D=9;function f(v){const H=String((v==null?void 0:v.message)||v);try{const $=JSON.parse(H);p($.error||$.message||H)}catch{p(H)}}async function y(v){const H=await GI(`/api/maps/${v}/cells?gridMode=${D}`);o(H.cells||[]);const $=await GI(`/api/maps/${v}/state?gridMode=${D}`);a($.cells||[])}AA.useEffect(()=>{(async()=>{try{const v=await GI("/api/maps");t(v.maps||[]),(v.maps||[]).length>0&&i(v.maps[0]._id)}catch(v){f(v)}})()},[]),AA.useEffect(()=>{if(!n)return;y(n).catch(()=>{});const v=setInterval(()=>y(n).catch(()=>{}),2e3);return()=>clearInterval(v)},[n]);async function N(v){u(!0),p("");try{const H=await iD(`/api/maps/${n}/cells/${v.cellIndex}/reserve`,{gridMode:D});I(H.cell),B(null),await y(n)}catch{p("Cell not available")}finally{u(!1)}}async function m(){if(!(!g||!h.trim())){u(!0),p("");try{await oD({mapId:n,cellId:g._id,lumaCaptureUrl:h.trim()}),I(null),c(""),await y(n)}catch(v){f(v)}finally{u(!1)}}}async function M(){if(!(!g||!E)){u(!0),p("");try{await rD({mapId:n,cellId:g._id,file:E}),I(null),d(null),await y(n)}catch(v){f(v)}finally{u(!1)}}}async function P(){var H;const v=(H=C==null?void 0:C.splat)==null?void 0:H._id;if(v){u(!0),p("");try{await sD(v),B(null),await y(n)}catch($){f($)}finally{u(!1)}}}const X=s.length?s:r;return fA.jsxs("div",{style:{padding:24,maxWidth:980,margin:"0 auto",color:"#fff"},children:[fA.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[fA.jsxs("div",{children:[fA.jsx("div",{style:{fontSize:12,opacity:.8,marginBottom:4},children:"PlaybackXR"}),fA.jsx("h1",{style:{margin:0,fontSize:26},children:"Starter Town"})]}),fA.jsxs("div",{style:{display:"flex",gap:10,alignItems:"center"},children:[fA.jsxs("label",{style:{display:"flex",alignItems:"center",gap:8},children:[fA.jsx("span",{style:{fontSize:12,opacity:.85},children:"Map"}),fA.jsx("select",{value:n,onChange:v=>i(v.target.value),children:A.map(v=>fA.jsx("option",{value:v._id,children:v.name},v._id))})]}),fA.jsx("button",{onClick:()=>e("/walk"),disabled:!n,children:"Walk"}),fA.jsx("div",{style:{fontSize:12,opacity:.8},children:l?"Working":""})]})]}),Q?fA.jsx("div",{style:{marginTop:12,color:"#ff7777"},children:Q}):null,fA.jsx("div",{style:{marginTop:16,display:"grid",gridTemplateColumns:"repeat(3, 1fr)",gap:12},children:X.map(v=>fA.jsx(aD,{cell:v,onReserve:()=>N(v),onSelectFilled:()=>{B(v),I(null)},isSelected:g&&v._id===g._id||C&&v._id===C._id},v._id))}),fA.jsxs("div",{style:{marginTop:18,padding:14,border:"1px solid #222",borderRadius:12},children:[fA.jsx("div",{style:{fontSize:12,opacity:.85,marginBottom:10},children:g?`Reserved cell ${g.cellIndex}. Paste a Luma capture URL to fill it.`:"Click an empty cell to reserve it."}),fA.jsx("input",{type:"text",value:h,disabled:!g||l,onChange:v=>c(v.target.value),placeholder:"https://lumalabs.ai/capture/...",style:{width:"100%",padding:10,borderRadius:10,border:"1px solid #333",background:"#0b0b0b",color:"#fff",outline:"none"}}),fA.jsxs("div",{style:{display:"flex",gap:10,marginTop:10,alignItems:"center"},children:[fA.jsx("button",{onClick:m,disabled:!g||!h.trim()||l,children:"Attach capture"}),fA.jsx("button",{onClick:()=>{I(null),c(""),d(null)},disabled:l,children:"Clear selection"})]}),fA.jsx("div",{style:{marginTop:12,fontSize:12,opacity:.7},children:"Tip: the capture must be public for it to render in Walk."})]}),fA.jsxs("div",{style:{marginTop:14,padding:14,border:"1px solid #222",borderRadius:12},children:[fA.jsx("div",{style:{fontSize:12,opacity:.85,marginBottom:10},children:"Click a filled cell to select it, then delete it."}),fA.jsx("button",{onClick:P,disabled:!((Z=C==null?void 0:C.splat)!=null&&Z._id)||l,children:"Delete selected splat"})]}),fA.jsxs("div",{style:{marginTop:14,padding:14,border:"1px solid #222",borderRadius:12},children:[fA.jsx("div",{style:{fontSize:12,opacity:.85,marginBottom:10},children:"Optional: upload a .ply instead of Luma."}),fA.jsx("input",{type:"file",accept:".ply",disabled:!g||l,onChange:v=>{var H;return d(((H=v.target.files)==null?void 0:H[0])||null)}}),fA.jsx("button",{onClick:M,disabled:!g||!E||l,style:{marginLeft:10},children:"Upload .ply"})]})]})}/** + * @license + * Copyright 2010-2023 Three.js Authors + * SPDX-License-Identifier: MIT + */const xB="157",gr={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},Ir={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},ID=0,Fc=1,CD=2,sf=1,lD=2,Rn=3,On=0,ct=1,Fn=2,Qn=0,jr=1,Lc=2,xc=3,_c=4,dl=5,Ti=100,BD=101,ED=102,Uc=103,Gc=104,cD=200,af=201,uD=202,QD=203,gf=204,_B=205,hD=206,dD=207,fD=208,pD=209,mD=210,wD=0,yD=1,DD=2,fl=3,SD=4,MD=5,RD=6,vD=7,If=0,ND=1,FD=2,hi=0,LD=1,xD=2,_D=3,UD=4,GD=5,Or=300,so=301,ao=302,pl=303,ml=304,jg=306,wl=1e3,Ye=1001,yl=1002,ye=1003,Tc=1004,TI=1005,Kt=1006,TD=1007,go=1008,Gn=1009,kD=1010,HD=1011,UB=1012,GB=1013,En=1014,si=1015,Io=1016,Cf=1017,lf=1018,Ji=1020,bD=1021,on=1023,OD=1024,YD=1025,Wi=1026,Co=1027,KD=1028,Bf=1029,PD=1030,TB=1031,kB=1033,kI=33776,HI=33777,bI=33778,OI=33779,kc=35840,Hc=35841,bc=35842,Oc=35843,JD=36196,Yc=37492,Kc=37496,Pc=37808,Jc=37809,Wc=37810,zc=37811,qc=37812,Vc=37813,jc=37814,Xc=37815,Zc=37816,$c=37817,Au=37818,eu=37819,tu=37820,nu=37821,YI=36492,iu=36494,ru=36495,WD=36283,ou=36284,su=36285,au=36286,Ef=3e3,zi=3001,zD=3200,qD=3201,HB=0,VD=1,st="",Ze="srgb",Yn="srgb-linear",bB="display-p3",Xg="display-p3-linear",hg="linear",we="srgb",dg="rec709",fg="p3",KI=7680,jD=519,XD=512,ZD=513,$D=514,AS=515,eS=516,tS=517,nS=518,iS=519,Dl=35044,gu="300 es",Sl=1035,_n=2e3,pg=2001;class rr{addEventListener(A,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[A]===void 0&&(n[A]=[]),n[A].indexOf(t)===-1&&n[A].push(t)}hasEventListener(A,t){if(this._listeners===void 0)return!1;const n=this._listeners;return n[A]!==void 0&&n[A].indexOf(t)!==-1}removeEventListener(A,t){if(this._listeners===void 0)return;const i=this._listeners[A];if(i!==void 0){const r=i.indexOf(t);r!==-1&&i.splice(r,1)}}dispatchEvent(A){if(this._listeners===void 0)return;const n=this._listeners[A.type];if(n!==void 0){A.target=this;const i=n.slice(0);for(let r=0,o=i.length;r>8&255]+nt[e>>16&255]+nt[e>>24&255]+"-"+nt[A&255]+nt[A>>8&255]+"-"+nt[A>>16&15|64]+nt[A>>24&255]+"-"+nt[t&63|128]+nt[t>>8&255]+"-"+nt[t>>16&255]+nt[t>>24&255]+nt[n&255]+nt[n>>8&255]+nt[n>>16&255]+nt[n>>24&255]).toLowerCase()}function ot(e,A,t){return Math.max(A,Math.min(t,e))}function OB(e,A){return(e%A+A)%A}function rS(e,A,t,n,i){return n+(e-A)*(i-n)/(t-A)}function oS(e,A,t){return e!==A?(t-e)/(A-e):0}function ts(e,A,t){return(1-t)*e+t*A}function sS(e,A,t,n){return ts(e,A,1-Math.exp(-t*n))}function aS(e,A=1){return A-Math.abs(OB(e,A*2)-A)}function gS(e,A,t){return e<=A?0:e>=t?1:(e=(e-A)/(t-A),e*e*(3-2*e))}function IS(e,A,t){return e<=A?0:e>=t?1:(e=(e-A)/(t-A),e*e*e*(e*(e*6-15)+10))}function CS(e,A){return e+Math.floor(Math.random()*(A-e+1))}function lS(e,A){return e+Math.random()*(A-e)}function BS(e){return e*(.5-Math.random())}function ES(e){e!==void 0&&(Iu=e);let A=Iu+=1831565813;return A=Math.imul(A^A>>>15,A|1),A^=A+Math.imul(A^A>>>7,A|61),((A^A>>>14)>>>0)/4294967296}function cS(e){return e*es}function uS(e){return e*ws}function Ml(e){return(e&e-1)===0&&e!==0}function QS(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))}function mg(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))}function hS(e,A,t,n,i){const r=Math.cos,o=Math.sin,s=r(t/2),a=o(t/2),g=r((A+n)/2),I=o((A+n)/2),C=r((A-n)/2),B=o((A-n)/2),E=r((n-A)/2),d=o((n-A)/2);switch(i){case"XYX":e.set(s*I,a*C,a*B,s*g);break;case"YZY":e.set(a*B,s*I,a*C,s*g);break;case"ZXZ":e.set(a*C,a*B,s*I,s*g);break;case"XZX":e.set(s*I,a*d,a*E,s*g);break;case"YXY":e.set(a*E,s*I,a*d,s*g);break;case"ZYZ":e.set(a*d,a*E,s*I,s*g);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function Rr(e,A){switch(A.constructor){case Float32Array:return e;case Uint32Array:return e/4294967295;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int32Array:return Math.max(e/2147483647,-1);case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw new Error("Invalid component type.")}}function Ct(e,A){switch(A.constructor){case Float32Array:return e;case Uint32Array:return Math.round(e*4294967295);case Uint16Array:return Math.round(e*65535);case Uint8Array:return Math.round(e*255);case Int32Array:return Math.round(e*2147483647);case Int16Array:return Math.round(e*32767);case Int8Array:return Math.round(e*127);default:throw new Error("Invalid component type.")}}const dS={DEG2RAD:es,RAD2DEG:ws,generateUUID:Qo,clamp:ot,euclideanModulo:OB,mapLinear:rS,inverseLerp:oS,lerp:ts,damp:sS,pingpong:aS,smoothstep:gS,smootherstep:IS,randInt:CS,randFloat:lS,randFloatSpread:BS,seededRandom:ES,degToRad:cS,radToDeg:uS,isPowerOfTwo:Ml,ceilPowerOfTwo:QS,floorPowerOfTwo:mg,setQuaternionFromProperEuler:hS,normalize:Ct,denormalize:Rr};class qA{constructor(A=0,t=0){qA.prototype.isVector2=!0,this.x=A,this.y=t}get width(){return this.x}set width(A){this.x=A}get height(){return this.y}set height(A){this.y=A}set(A,t){return this.x=A,this.y=t,this}setScalar(A){return this.x=A,this.y=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setComponent(A,t){switch(A){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y)}copy(A){return this.x=A.x,this.y=A.y,this}add(A){return this.x+=A.x,this.y+=A.y,this}addScalar(A){return this.x+=A,this.y+=A,this}addVectors(A,t){return this.x=A.x+t.x,this.y=A.y+t.y,this}addScaledVector(A,t){return this.x+=A.x*t,this.y+=A.y*t,this}sub(A){return this.x-=A.x,this.y-=A.y,this}subScalar(A){return this.x-=A,this.y-=A,this}subVectors(A,t){return this.x=A.x-t.x,this.y=A.y-t.y,this}multiply(A){return this.x*=A.x,this.y*=A.y,this}multiplyScalar(A){return this.x*=A,this.y*=A,this}divide(A){return this.x/=A.x,this.y/=A.y,this}divideScalar(A){return this.multiplyScalar(1/A)}applyMatrix3(A){const t=this.x,n=this.y,i=A.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this}clamp(A,t){return this.x=Math.max(A.x,Math.min(t.x,this.x)),this.y=Math.max(A.y,Math.min(t.y,this.y)),this}clampScalar(A,t){return this.x=Math.max(A,Math.min(t,this.x)),this.y=Math.max(A,Math.min(t,this.y)),this}clampLength(A,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(A,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(A){return this.x*A.x+this.y*A.y}cross(A){return this.x*A.y-this.y*A.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(A){const t=Math.sqrt(this.lengthSq()*A.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(A)/t;return Math.acos(ot(n,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const t=this.x-A.x,n=this.y-A.y;return t*t+n*n}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,t){return this.x+=(A.x-this.x)*t,this.y+=(A.y-this.y)*t,this}lerpVectors(A,t,n){return this.x=A.x+(t.x-A.x)*n,this.y=A.y+(t.y-A.y)*n,this}equals(A){return A.x===this.x&&A.y===this.y}fromArray(A,t=0){return this.x=A[t],this.y=A[t+1],this}toArray(A=[],t=0){return A[t]=this.x,A[t+1]=this.y,A}fromBufferAttribute(A,t){return this.x=A.getX(t),this.y=A.getY(t),this}rotateAround(A,t){const n=Math.cos(t),i=Math.sin(t),r=this.x-A.x,o=this.y-A.y;return this.x=r*n-o*i+A.x,this.y=r*i+o*n+A.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class ie{constructor(A,t,n,i,r,o,s,a,g){ie.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],A!==void 0&&this.set(A,t,n,i,r,o,s,a,g)}set(A,t,n,i,r,o,s,a,g){const I=this.elements;return I[0]=A,I[1]=i,I[2]=s,I[3]=t,I[4]=r,I[5]=a,I[6]=n,I[7]=o,I[8]=g,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){const t=this.elements,n=A.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(A,t,n){return A.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(A){const t=A.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,t){const n=A.elements,i=t.elements,r=this.elements,o=n[0],s=n[3],a=n[6],g=n[1],I=n[4],C=n[7],B=n[2],E=n[5],d=n[8],h=i[0],c=i[3],l=i[6],u=i[1],Q=i[4],p=i[7],D=i[2],f=i[5],y=i[8];return r[0]=o*h+s*u+a*D,r[3]=o*c+s*Q+a*f,r[6]=o*l+s*p+a*y,r[1]=g*h+I*u+C*D,r[4]=g*c+I*Q+C*f,r[7]=g*l+I*p+C*y,r[2]=B*h+E*u+d*D,r[5]=B*c+E*Q+d*f,r[8]=B*l+E*p+d*y,this}multiplyScalar(A){const t=this.elements;return t[0]*=A,t[3]*=A,t[6]*=A,t[1]*=A,t[4]*=A,t[7]*=A,t[2]*=A,t[5]*=A,t[8]*=A,this}determinant(){const A=this.elements,t=A[0],n=A[1],i=A[2],r=A[3],o=A[4],s=A[5],a=A[6],g=A[7],I=A[8];return t*o*I-t*s*g-n*r*I+n*s*a+i*r*g-i*o*a}invert(){const A=this.elements,t=A[0],n=A[1],i=A[2],r=A[3],o=A[4],s=A[5],a=A[6],g=A[7],I=A[8],C=I*o-s*g,B=s*a-I*r,E=g*r-o*a,d=t*C+n*B+i*E;if(d===0)return this.set(0,0,0,0,0,0,0,0,0);const h=1/d;return A[0]=C*h,A[1]=(i*g-I*n)*h,A[2]=(s*n-i*o)*h,A[3]=B*h,A[4]=(I*t-i*a)*h,A[5]=(i*r-s*t)*h,A[6]=E*h,A[7]=(n*a-g*t)*h,A[8]=(o*t-n*r)*h,this}transpose(){let A;const t=this.elements;return A=t[1],t[1]=t[3],t[3]=A,A=t[2],t[2]=t[6],t[6]=A,A=t[5],t[5]=t[7],t[7]=A,this}getNormalMatrix(A){return this.setFromMatrix4(A).invert().transpose()}transposeIntoArray(A){const t=this.elements;return A[0]=t[0],A[1]=t[3],A[2]=t[6],A[3]=t[1],A[4]=t[4],A[5]=t[7],A[6]=t[2],A[7]=t[5],A[8]=t[8],this}setUvTransform(A,t,n,i,r,o,s){const a=Math.cos(r),g=Math.sin(r);return this.set(n*a,n*g,-n*(a*o+g*s)+o+A,-i*g,i*a,-i*(-g*o+a*s)+s+t,0,0,1),this}scale(A,t){return this.premultiply(PI.makeScale(A,t)),this}rotate(A){return this.premultiply(PI.makeRotation(-A)),this}translate(A,t){return this.premultiply(PI.makeTranslation(A,t)),this}makeTranslation(A,t){return A.isVector2?this.set(1,0,A.x,0,1,A.y,0,0,1):this.set(1,0,A,0,1,t,0,0,1),this}makeRotation(A){const t=Math.cos(A),n=Math.sin(A);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(A,t){return this.set(A,0,0,0,t,0,0,0,1),this}equals(A){const t=this.elements,n=A.elements;for(let i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}fromArray(A,t=0){for(let n=0;n<9;n++)this.elements[n]=A[n+t];return this}toArray(A=[],t=0){const n=this.elements;return A[t]=n[0],A[t+1]=n[1],A[t+2]=n[2],A[t+3]=n[3],A[t+4]=n[4],A[t+5]=n[5],A[t+6]=n[6],A[t+7]=n[7],A[t+8]=n[8],A}clone(){return new this.constructor().fromArray(this.elements)}}const PI=new ie;function cf(e){for(let A=e.length-1;A>=0;--A)if(e[A]>=65535)return!0;return!1}function wg(e){return document.createElementNS("http://www.w3.org/1999/xhtml",e)}function fS(){const e=wg("canvas");return e.style.display="block",e}const Cu={};function ns(e){e in Cu||(Cu[e]=!0,console.warn(e))}const lu=new ie().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Bu=new ie().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),Xs={[Yn]:{transfer:hg,primaries:dg,toReference:e=>e,fromReference:e=>e},[Ze]:{transfer:we,primaries:dg,toReference:e=>e.convertSRGBToLinear(),fromReference:e=>e.convertLinearToSRGB()},[Xg]:{transfer:hg,primaries:fg,toReference:e=>e.applyMatrix3(Bu),fromReference:e=>e.applyMatrix3(lu)},[bB]:{transfer:we,primaries:fg,toReference:e=>e.convertSRGBToLinear().applyMatrix3(Bu),fromReference:e=>e.applyMatrix3(lu).convertLinearToSRGB()}},pS=new Set([Yn,Xg]),Ee={enabled:!0,_workingColorSpace:Yn,get legacyMode(){return console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),!this.enabled},set legacyMode(e){console.warn("THREE.ColorManagement: .legacyMode=false renamed to .enabled=true in r150."),this.enabled=!e},get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(e){if(!pS.has(e))throw new Error(`Unsupported working color space, "${e}".`);this._workingColorSpace=e},convert:function(e,A,t){if(this.enabled===!1||A===t||!A||!t)return e;const n=Xs[A].toReference,i=Xs[t].fromReference;return i(n(e))},fromWorkingColorSpace:function(e,A){return this.convert(e,this._workingColorSpace,A)},toWorkingColorSpace:function(e,A){return this.convert(e,A,this._workingColorSpace)},getPrimaries:function(e){return Xs[e].primaries},getTransfer:function(e){return e===st?hg:Xs[e].transfer}};function Xr(e){return e<.04045?e*.0773993808:Math.pow(e*.9478672986+.0521327014,2.4)}function JI(e){return e<.0031308?e*12.92:1.055*Math.pow(e,.41666)-.055}let Cr;class uf{static getDataURL(A){if(/^data:/i.test(A.src)||typeof HTMLCanvasElement>"u")return A.src;let t;if(A instanceof HTMLCanvasElement)t=A;else{Cr===void 0&&(Cr=wg("canvas")),Cr.width=A.width,Cr.height=A.height;const n=Cr.getContext("2d");A instanceof ImageData?n.putImageData(A,0,0):n.drawImage(A,0,0,A.width,A.height),t=Cr}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",A),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(A){if(typeof HTMLImageElement<"u"&&A instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&A instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&A instanceof ImageBitmap){const t=wg("canvas");t.width=A.width,t.height=A.height;const n=t.getContext("2d");n.drawImage(A,0,0,A.width,A.height);const i=n.getImageData(0,0,A.width,A.height),r=i.data;for(let o=0;o0&&(n.userData=this.userData),t||(A.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(A){if(this.mapping!==Or)return A;if(A.applyMatrix3(this.matrix),A.x<0||A.x>1)switch(this.wrapS){case wl:A.x=A.x-Math.floor(A.x);break;case Ye:A.x=A.x<0?0:1;break;case yl:Math.abs(Math.floor(A.x)%2)===1?A.x=Math.ceil(A.x)-A.x:A.x=A.x-Math.floor(A.x);break}if(A.y<0||A.y>1)switch(this.wrapT){case wl:A.y=A.y-Math.floor(A.y);break;case Ye:A.y=A.y<0?0:1;break;case yl:Math.abs(Math.floor(A.y)%2)===1?A.y=Math.ceil(A.y)-A.y:A.y=A.y-Math.floor(A.y);break}return this.flipY&&(A.y=1-A.y),A}set needsUpdate(A){A===!0&&(this.version++,this.source.needsUpdate=!0)}get encoding(){return ns("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace===Ze?zi:Ef}set encoding(A){ns("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace=A===zi?Ze:st}}Dt.DEFAULT_IMAGE=null;Dt.DEFAULT_MAPPING=Or;Dt.DEFAULT_ANISOTROPY=1;class Pe{constructor(A=0,t=0,n=0,i=1){Pe.prototype.isVector4=!0,this.x=A,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(A){this.z=A}get height(){return this.w}set height(A){this.w=A}set(A,t,n,i){return this.x=A,this.y=t,this.z=n,this.w=i,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this.w=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setW(A){return this.w=A,this}setComponent(A,t){switch(A){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this.w=A.w!==void 0?A.w:1,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this.w+=A.w,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this.w+=A,this}addVectors(A,t){return this.x=A.x+t.x,this.y=A.y+t.y,this.z=A.z+t.z,this.w=A.w+t.w,this}addScaledVector(A,t){return this.x+=A.x*t,this.y+=A.y*t,this.z+=A.z*t,this.w+=A.w*t,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this.w-=A.w,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this.w-=A,this}subVectors(A,t){return this.x=A.x-t.x,this.y=A.y-t.y,this.z=A.z-t.z,this.w=A.w-t.w,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this.w*=A.w,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this.w*=A,this}applyMatrix4(A){const t=this.x,n=this.y,i=this.z,r=this.w,o=A.elements;return this.x=o[0]*t+o[4]*n+o[8]*i+o[12]*r,this.y=o[1]*t+o[5]*n+o[9]*i+o[13]*r,this.z=o[2]*t+o[6]*n+o[10]*i+o[14]*r,this.w=o[3]*t+o[7]*n+o[11]*i+o[15]*r,this}divideScalar(A){return this.multiplyScalar(1/A)}setAxisAngleFromQuaternion(A){this.w=2*Math.acos(A.w);const t=Math.sqrt(1-A.w*A.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=A.x/t,this.y=A.y/t,this.z=A.z/t),this}setAxisAngleFromRotationMatrix(A){let t,n,i,r;const a=A.elements,g=a[0],I=a[4],C=a[8],B=a[1],E=a[5],d=a[9],h=a[2],c=a[6],l=a[10];if(Math.abs(I-B)<.01&&Math.abs(C-h)<.01&&Math.abs(d-c)<.01){if(Math.abs(I+B)<.1&&Math.abs(C+h)<.1&&Math.abs(d+c)<.1&&Math.abs(g+E+l-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const Q=(g+1)/2,p=(E+1)/2,D=(l+1)/2,f=(I+B)/4,y=(C+h)/4,N=(d+c)/4;return Q>p&&Q>D?Q<.01?(n=0,i=.707106781,r=.707106781):(n=Math.sqrt(Q),i=f/n,r=y/n):p>D?p<.01?(n=.707106781,i=0,r=.707106781):(i=Math.sqrt(p),n=f/i,r=N/i):D<.01?(n=.707106781,i=.707106781,r=0):(r=Math.sqrt(D),n=y/r,i=N/r),this.set(n,i,r,t),this}let u=Math.sqrt((c-d)*(c-d)+(C-h)*(C-h)+(B-I)*(B-I));return Math.abs(u)<.001&&(u=1),this.x=(c-d)/u,this.y=(C-h)/u,this.z=(B-I)/u,this.w=Math.acos((g+E+l-1)/2),this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this.w=Math.min(this.w,A.w),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this.w=Math.max(this.w,A.w),this}clamp(A,t){return this.x=Math.max(A.x,Math.min(t.x,this.x)),this.y=Math.max(A.y,Math.min(t.y,this.y)),this.z=Math.max(A.z,Math.min(t.z,this.z)),this.w=Math.max(A.w,Math.min(t.w,this.w)),this}clampScalar(A,t){return this.x=Math.max(A,Math.min(t,this.x)),this.y=Math.max(A,Math.min(t,this.y)),this.z=Math.max(A,Math.min(t,this.z)),this.w=Math.max(A,Math.min(t,this.w)),this}clampLength(A,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(A,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z+this.w*A.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,t){return this.x+=(A.x-this.x)*t,this.y+=(A.y-this.y)*t,this.z+=(A.z-this.z)*t,this.w+=(A.w-this.w)*t,this}lerpVectors(A,t,n){return this.x=A.x+(t.x-A.x)*n,this.y=A.y+(t.y-A.y)*n,this.z=A.z+(t.z-A.z)*n,this.w=A.w+(t.w-A.w)*n,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z&&A.w===this.w}fromArray(A,t=0){return this.x=A[t],this.y=A[t+1],this.z=A[t+2],this.w=A[t+3],this}toArray(A=[],t=0){return A[t]=this.x,A[t+1]=this.y,A[t+2]=this.z,A[t+3]=this.w,A}fromBufferAttribute(A,t){return this.x=A.getX(t),this.y=A.getY(t),this.z=A.getZ(t),this.w=A.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class yS extends rr{constructor(A=1,t=1,n={}){super(),this.isRenderTarget=!0,this.width=A,this.height=t,this.depth=1,this.scissor=new Pe(0,0,A,t),this.scissorTest=!1,this.viewport=new Pe(0,0,A,t);const i={width:A,height:t,depth:1};n.encoding!==void 0&&(ns("THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace."),n.colorSpace=n.encoding===zi?Ze:st),n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Kt,depthBuffer:!0,stencilBuffer:!1,depthTexture:null,samples:0},n),this.texture=new Dt(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=n.generateMipmaps,this.texture.internalFormat=n.internalFormat,this.depthBuffer=n.depthBuffer,this.stencilBuffer=n.stencilBuffer,this.depthTexture=n.depthTexture,this.samples=n.samples}setSize(A,t,n=1){(this.width!==A||this.height!==t||this.depth!==n)&&(this.width=A,this.height=t,this.depth=n,this.texture.image.width=A,this.texture.image.height=t,this.texture.image.depth=n,this.dispose()),this.viewport.set(0,0,A,t),this.scissor.set(0,0,A,t)}clone(){return new this.constructor().copy(this)}copy(A){this.width=A.width,this.height=A.height,this.depth=A.depth,this.scissor.copy(A.scissor),this.scissorTest=A.scissorTest,this.viewport.copy(A.viewport),this.texture=A.texture.clone(),this.texture.isRenderTargetTexture=!0;const t=Object.assign({},A.texture.image);return this.texture.source=new Qf(t),this.depthBuffer=A.depthBuffer,this.stencilBuffer=A.stencilBuffer,A.depthTexture!==null&&(this.depthTexture=A.depthTexture.clone()),this.samples=A.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class Ar extends yS{constructor(A=1,t=1,n={}){super(A,t,n),this.isWebGLRenderTarget=!0}}class hf extends Dt{constructor(A=null,t=1,n=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:A,width:t,height:n,depth:i},this.magFilter=ye,this.minFilter=ye,this.wrapR=Ye,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class DS extends Dt{constructor(A=null,t=1,n=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:A,width:t,height:n,depth:i},this.magFilter=ye,this.minFilter=ye,this.wrapR=Ye,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class hn{constructor(A=0,t=0,n=0,i=1){this.isQuaternion=!0,this._x=A,this._y=t,this._z=n,this._w=i}static slerpFlat(A,t,n,i,r,o,s){let a=n[i+0],g=n[i+1],I=n[i+2],C=n[i+3];const B=r[o+0],E=r[o+1],d=r[o+2],h=r[o+3];if(s===0){A[t+0]=a,A[t+1]=g,A[t+2]=I,A[t+3]=C;return}if(s===1){A[t+0]=B,A[t+1]=E,A[t+2]=d,A[t+3]=h;return}if(C!==h||a!==B||g!==E||I!==d){let c=1-s;const l=a*B+g*E+I*d+C*h,u=l>=0?1:-1,Q=1-l*l;if(Q>Number.EPSILON){const D=Math.sqrt(Q),f=Math.atan2(D,l*u);c=Math.sin(c*f)/D,s=Math.sin(s*f)/D}const p=s*u;if(a=a*c+B*p,g=g*c+E*p,I=I*c+d*p,C=C*c+h*p,c===1-s){const D=1/Math.sqrt(a*a+g*g+I*I+C*C);a*=D,g*=D,I*=D,C*=D}}A[t]=a,A[t+1]=g,A[t+2]=I,A[t+3]=C}static multiplyQuaternionsFlat(A,t,n,i,r,o){const s=n[i],a=n[i+1],g=n[i+2],I=n[i+3],C=r[o],B=r[o+1],E=r[o+2],d=r[o+3];return A[t]=s*d+I*C+a*E-g*B,A[t+1]=a*d+I*B+g*C-s*E,A[t+2]=g*d+I*E+s*B-a*C,A[t+3]=I*d-s*C-a*B-g*E,A}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get w(){return this._w}set w(A){this._w=A,this._onChangeCallback()}set(A,t,n,i){return this._x=A,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(A){return this._x=A.x,this._y=A.y,this._z=A.z,this._w=A.w,this._onChangeCallback(),this}setFromEuler(A,t){const n=A._x,i=A._y,r=A._z,o=A._order,s=Math.cos,a=Math.sin,g=s(n/2),I=s(i/2),C=s(r/2),B=a(n/2),E=a(i/2),d=a(r/2);switch(o){case"XYZ":this._x=B*I*C+g*E*d,this._y=g*E*C-B*I*d,this._z=g*I*d+B*E*C,this._w=g*I*C-B*E*d;break;case"YXZ":this._x=B*I*C+g*E*d,this._y=g*E*C-B*I*d,this._z=g*I*d-B*E*C,this._w=g*I*C+B*E*d;break;case"ZXY":this._x=B*I*C-g*E*d,this._y=g*E*C+B*I*d,this._z=g*I*d+B*E*C,this._w=g*I*C-B*E*d;break;case"ZYX":this._x=B*I*C-g*E*d,this._y=g*E*C+B*I*d,this._z=g*I*d-B*E*C,this._w=g*I*C+B*E*d;break;case"YZX":this._x=B*I*C+g*E*d,this._y=g*E*C+B*I*d,this._z=g*I*d-B*E*C,this._w=g*I*C-B*E*d;break;case"XZY":this._x=B*I*C-g*E*d,this._y=g*E*C-B*I*d,this._z=g*I*d+B*E*C,this._w=g*I*C+B*E*d;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return t!==!1&&this._onChangeCallback(),this}setFromAxisAngle(A,t){const n=t/2,i=Math.sin(n);return this._x=A.x*i,this._y=A.y*i,this._z=A.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(A){const t=A.elements,n=t[0],i=t[4],r=t[8],o=t[1],s=t[5],a=t[9],g=t[2],I=t[6],C=t[10],B=n+s+C;if(B>0){const E=.5/Math.sqrt(B+1);this._w=.25/E,this._x=(I-a)*E,this._y=(r-g)*E,this._z=(o-i)*E}else if(n>s&&n>C){const E=2*Math.sqrt(1+n-s-C);this._w=(I-a)/E,this._x=.25*E,this._y=(i+o)/E,this._z=(r+g)/E}else if(s>C){const E=2*Math.sqrt(1+s-n-C);this._w=(r-g)/E,this._x=(i+o)/E,this._y=.25*E,this._z=(a+I)/E}else{const E=2*Math.sqrt(1+C-n-s);this._w=(o-i)/E,this._x=(r+g)/E,this._y=(a+I)/E,this._z=.25*E}return this._onChangeCallback(),this}setFromUnitVectors(A,t){let n=A.dot(t)+1;return nMath.abs(A.z)?(this._x=-A.y,this._y=A.x,this._z=0,this._w=n):(this._x=0,this._y=-A.z,this._z=A.y,this._w=n)):(this._x=A.y*t.z-A.z*t.y,this._y=A.z*t.x-A.x*t.z,this._z=A.x*t.y-A.y*t.x,this._w=n),this.normalize()}angleTo(A){return 2*Math.acos(Math.abs(ot(this.dot(A),-1,1)))}rotateTowards(A,t){const n=this.angleTo(A);if(n===0)return this;const i=Math.min(1,t/n);return this.slerp(A,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(A){return this._x*A._x+this._y*A._y+this._z*A._z+this._w*A._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let A=this.length();return A===0?(this._x=0,this._y=0,this._z=0,this._w=1):(A=1/A,this._x=this._x*A,this._y=this._y*A,this._z=this._z*A,this._w=this._w*A),this._onChangeCallback(),this}multiply(A){return this.multiplyQuaternions(this,A)}premultiply(A){return this.multiplyQuaternions(A,this)}multiplyQuaternions(A,t){const n=A._x,i=A._y,r=A._z,o=A._w,s=t._x,a=t._y,g=t._z,I=t._w;return this._x=n*I+o*s+i*g-r*a,this._y=i*I+o*a+r*s-n*g,this._z=r*I+o*g+n*a-i*s,this._w=o*I-n*s-i*a-r*g,this._onChangeCallback(),this}slerp(A,t){if(t===0)return this;if(t===1)return this.copy(A);const n=this._x,i=this._y,r=this._z,o=this._w;let s=o*A._w+n*A._x+i*A._y+r*A._z;if(s<0?(this._w=-A._w,this._x=-A._x,this._y=-A._y,this._z=-A._z,s=-s):this.copy(A),s>=1)return this._w=o,this._x=n,this._y=i,this._z=r,this;const a=1-s*s;if(a<=Number.EPSILON){const E=1-t;return this._w=E*o+t*this._w,this._x=E*n+t*this._x,this._y=E*i+t*this._y,this._z=E*r+t*this._z,this.normalize(),this._onChangeCallback(),this}const g=Math.sqrt(a),I=Math.atan2(g,s),C=Math.sin((1-t)*I)/g,B=Math.sin(t*I)/g;return this._w=o*C+this._w*B,this._x=n*C+this._x*B,this._y=i*C+this._y*B,this._z=r*C+this._z*B,this._onChangeCallback(),this}slerpQuaternions(A,t,n){return this.copy(A).slerp(t,n)}random(){const A=Math.random(),t=Math.sqrt(1-A),n=Math.sqrt(A),i=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(t*Math.cos(i),n*Math.sin(r),n*Math.cos(r),t*Math.sin(i))}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._w===this._w}fromArray(A,t=0){return this._x=A[t],this._y=A[t+1],this._z=A[t+2],this._w=A[t+3],this._onChangeCallback(),this}toArray(A=[],t=0){return A[t]=this._x,A[t+1]=this._y,A[t+2]=this._z,A[t+3]=this._w,A}fromBufferAttribute(A,t){return this._x=A.getX(t),this._y=A.getY(t),this._z=A.getZ(t),this._w=A.getW(t),this}toJSON(){return this.toArray()}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class k{constructor(A=0,t=0,n=0){k.prototype.isVector3=!0,this.x=A,this.y=t,this.z=n}set(A,t,n){return n===void 0&&(n=this.z),this.x=A,this.y=t,this.z=n,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setComponent(A,t){switch(A){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this}addVectors(A,t){return this.x=A.x+t.x,this.y=A.y+t.y,this.z=A.z+t.z,this}addScaledVector(A,t){return this.x+=A.x*t,this.y+=A.y*t,this.z+=A.z*t,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this}subVectors(A,t){return this.x=A.x-t.x,this.y=A.y-t.y,this.z=A.z-t.z,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this}multiplyVectors(A,t){return this.x=A.x*t.x,this.y=A.y*t.y,this.z=A.z*t.z,this}applyEuler(A){return this.applyQuaternion(Eu.setFromEuler(A))}applyAxisAngle(A,t){return this.applyQuaternion(Eu.setFromAxisAngle(A,t))}applyMatrix3(A){const t=this.x,n=this.y,i=this.z,r=A.elements;return this.x=r[0]*t+r[3]*n+r[6]*i,this.y=r[1]*t+r[4]*n+r[7]*i,this.z=r[2]*t+r[5]*n+r[8]*i,this}applyNormalMatrix(A){return this.applyMatrix3(A).normalize()}applyMatrix4(A){const t=this.x,n=this.y,i=this.z,r=A.elements,o=1/(r[3]*t+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*t+r[4]*n+r[8]*i+r[12])*o,this.y=(r[1]*t+r[5]*n+r[9]*i+r[13])*o,this.z=(r[2]*t+r[6]*n+r[10]*i+r[14])*o,this}applyQuaternion(A){const t=this.x,n=this.y,i=this.z,r=A.x,o=A.y,s=A.z,a=A.w,g=a*t+o*i-s*n,I=a*n+s*t-r*i,C=a*i+r*n-o*t,B=-r*t-o*n-s*i;return this.x=g*a+B*-r+I*-s-C*-o,this.y=I*a+B*-o+C*-r-g*-s,this.z=C*a+B*-s+g*-o-I*-r,this}project(A){return this.applyMatrix4(A.matrixWorldInverse).applyMatrix4(A.projectionMatrix)}unproject(A){return this.applyMatrix4(A.projectionMatrixInverse).applyMatrix4(A.matrixWorld)}transformDirection(A){const t=this.x,n=this.y,i=this.z,r=A.elements;return this.x=r[0]*t+r[4]*n+r[8]*i,this.y=r[1]*t+r[5]*n+r[9]*i,this.z=r[2]*t+r[6]*n+r[10]*i,this.normalize()}divide(A){return this.x/=A.x,this.y/=A.y,this.z/=A.z,this}divideScalar(A){return this.multiplyScalar(1/A)}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this}clamp(A,t){return this.x=Math.max(A.x,Math.min(t.x,this.x)),this.y=Math.max(A.y,Math.min(t.y,this.y)),this.z=Math.max(A.z,Math.min(t.z,this.z)),this}clampScalar(A,t){return this.x=Math.max(A,Math.min(t,this.x)),this.y=Math.max(A,Math.min(t,this.y)),this.z=Math.max(A,Math.min(t,this.z)),this}clampLength(A,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(A,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,t){return this.x+=(A.x-this.x)*t,this.y+=(A.y-this.y)*t,this.z+=(A.z-this.z)*t,this}lerpVectors(A,t,n){return this.x=A.x+(t.x-A.x)*n,this.y=A.y+(t.y-A.y)*n,this.z=A.z+(t.z-A.z)*n,this}cross(A){return this.crossVectors(this,A)}crossVectors(A,t){const n=A.x,i=A.y,r=A.z,o=t.x,s=t.y,a=t.z;return this.x=i*a-r*s,this.y=r*o-n*a,this.z=n*s-i*o,this}projectOnVector(A){const t=A.lengthSq();if(t===0)return this.set(0,0,0);const n=A.dot(this)/t;return this.copy(A).multiplyScalar(n)}projectOnPlane(A){return zI.copy(this).projectOnVector(A),this.sub(zI)}reflect(A){return this.sub(zI.copy(A).multiplyScalar(2*this.dot(A)))}angleTo(A){const t=Math.sqrt(this.lengthSq()*A.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(A)/t;return Math.acos(ot(n,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const t=this.x-A.x,n=this.y-A.y,i=this.z-A.z;return t*t+n*n+i*i}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)+Math.abs(this.z-A.z)}setFromSpherical(A){return this.setFromSphericalCoords(A.radius,A.phi,A.theta)}setFromSphericalCoords(A,t,n){const i=Math.sin(t)*A;return this.x=i*Math.sin(n),this.y=Math.cos(t)*A,this.z=i*Math.cos(n),this}setFromCylindrical(A){return this.setFromCylindricalCoords(A.radius,A.theta,A.y)}setFromCylindricalCoords(A,t,n){return this.x=A*Math.sin(t),this.y=n,this.z=A*Math.cos(t),this}setFromMatrixPosition(A){const t=A.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(A){const t=this.setFromMatrixColumn(A,0).length(),n=this.setFromMatrixColumn(A,1).length(),i=this.setFromMatrixColumn(A,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(A,t){return this.fromArray(A.elements,t*4)}setFromMatrix3Column(A,t){return this.fromArray(A.elements,t*3)}setFromEuler(A){return this.x=A._x,this.y=A._y,this.z=A._z,this}setFromColor(A){return this.x=A.r,this.y=A.g,this.z=A.b,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z}fromArray(A,t=0){return this.x=A[t],this.y=A[t+1],this.z=A[t+2],this}toArray(A=[],t=0){return A[t]=this.x,A[t+1]=this.y,A[t+2]=this.z,A}fromBufferAttribute(A,t){return this.x=A.getX(t),this.y=A.getY(t),this.z=A.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const A=(Math.random()-.5)*2,t=Math.random()*Math.PI*2,n=Math.sqrt(1-A**2);return this.x=n*Math.cos(t),this.y=n*Math.sin(t),this.z=A,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const zI=new k,Eu=new hn;class er{constructor(A=new k(1/0,1/0,1/0),t=new k(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=A,this.max=t}set(A,t){return this.min.copy(A),this.max.copy(t),this}setFromArray(A){this.makeEmpty();for(let t=0,n=A.length;tthis.max.x||A.ythis.max.y||A.zthis.max.z)}containsBox(A){return this.min.x<=A.min.x&&A.max.x<=this.max.x&&this.min.y<=A.min.y&&A.max.y<=this.max.y&&this.min.z<=A.min.z&&A.max.z<=this.max.z}getParameter(A,t){return t.set((A.x-this.min.x)/(this.max.x-this.min.x),(A.y-this.min.y)/(this.max.y-this.min.y),(A.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(A){return!(A.max.xthis.max.x||A.max.ythis.max.y||A.max.zthis.max.z)}intersectsSphere(A){return this.clampPoint(A.center,wn),wn.distanceToSquared(A.center)<=A.radius*A.radius}intersectsPlane(A){let t,n;return A.normal.x>0?(t=A.normal.x*this.min.x,n=A.normal.x*this.max.x):(t=A.normal.x*this.max.x,n=A.normal.x*this.min.x),A.normal.y>0?(t+=A.normal.y*this.min.y,n+=A.normal.y*this.max.y):(t+=A.normal.y*this.max.y,n+=A.normal.y*this.min.y),A.normal.z>0?(t+=A.normal.z*this.min.z,n+=A.normal.z*this.max.z):(t+=A.normal.z*this.max.z,n+=A.normal.z*this.min.z),t<=-A.constant&&n>=-A.constant}intersectsTriangle(A){if(this.isEmpty())return!1;this.getCenter(Uo),Zs.subVectors(this.max,Uo),Br.subVectors(A.a,Uo),Er.subVectors(A.b,Uo),cr.subVectors(A.c,Uo),zn.subVectors(Er,Br),qn.subVectors(cr,Er),Si.subVectors(Br,cr);let t=[0,-zn.z,zn.y,0,-qn.z,qn.y,0,-Si.z,Si.y,zn.z,0,-zn.x,qn.z,0,-qn.x,Si.z,0,-Si.x,-zn.y,zn.x,0,-qn.y,qn.x,0,-Si.y,Si.x,0];return!qI(t,Br,Er,cr,Zs)||(t=[1,0,0,0,1,0,0,0,1],!qI(t,Br,Er,cr,Zs))?!1:($s.crossVectors(zn,qn),t=[$s.x,$s.y,$s.z],qI(t,Br,Er,cr,Zs))}clampPoint(A,t){return t.copy(A).clamp(this.min,this.max)}distanceToPoint(A){return this.clampPoint(A,wn).distanceTo(A)}getBoundingSphere(A){return this.isEmpty()?A.makeEmpty():(this.getCenter(A.center),A.radius=this.getSize(wn).length()*.5),A}intersect(A){return this.min.max(A.min),this.max.min(A.max),this.isEmpty()&&this.makeEmpty(),this}union(A){return this.min.min(A.min),this.max.max(A.max),this}applyMatrix4(A){return this.isEmpty()?this:(mn[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(A),mn[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(A),mn[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(A),mn[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(A),mn[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(A),mn[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(A),mn[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(A),mn[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(A),this.setFromPoints(mn),this)}translate(A){return this.min.add(A),this.max.add(A),this}equals(A){return A.min.equals(this.min)&&A.max.equals(this.max)}}const mn=[new k,new k,new k,new k,new k,new k,new k,new k],wn=new k,lr=new er,Br=new k,Er=new k,cr=new k,zn=new k,qn=new k,Si=new k,Uo=new k,Zs=new k,$s=new k,Mi=new k;function qI(e,A,t,n,i){for(let r=0,o=e.length-3;r<=o;r+=3){Mi.fromArray(e,r);const s=i.x*Math.abs(Mi.x)+i.y*Math.abs(Mi.y)+i.z*Math.abs(Mi.z),a=A.dot(Mi),g=t.dot(Mi),I=n.dot(Mi);if(Math.max(-Math.max(a,g,I),Math.min(a,g,I))>s)return!1}return!0}const SS=new er,Go=new k,VI=new k;class Zr{constructor(A=new k,t=-1){this.center=A,this.radius=t}set(A,t){return this.center.copy(A),this.radius=t,this}setFromPoints(A,t){const n=this.center;t!==void 0?n.copy(t):SS.setFromPoints(A).getCenter(n);let i=0;for(let r=0,o=A.length;rthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(A){return this.isEmpty()?(A.makeEmpty(),A):(A.set(this.center,this.center),A.expandByScalar(this.radius),A)}applyMatrix4(A){return this.center.applyMatrix4(A),this.radius=this.radius*A.getMaxScaleOnAxis(),this}translate(A){return this.center.add(A),this}expandByPoint(A){if(this.isEmpty())return this.center.copy(A),this.radius=0,this;Go.subVectors(A,this.center);const t=Go.lengthSq();if(t>this.radius*this.radius){const n=Math.sqrt(t),i=(n-this.radius)*.5;this.center.addScaledVector(Go,i/n),this.radius+=i}return this}union(A){return A.isEmpty()?this:this.isEmpty()?(this.copy(A),this):(this.center.equals(A.center)===!0?this.radius=Math.max(this.radius,A.radius):(VI.subVectors(A.center,this.center).setLength(A.radius),this.expandByPoint(Go.copy(A.center).add(VI)),this.expandByPoint(Go.copy(A.center).sub(VI))),this)}equals(A){return A.center.equals(this.center)&&A.radius===this.radius}clone(){return new this.constructor().copy(this)}}const yn=new k,jI=new k,Aa=new k,Vn=new k,XI=new k,ea=new k,ZI=new k;class df{constructor(A=new k,t=new k(0,0,-1)){this.origin=A,this.direction=t}set(A,t){return this.origin.copy(A),this.direction.copy(t),this}copy(A){return this.origin.copy(A.origin),this.direction.copy(A.direction),this}at(A,t){return t.copy(this.origin).addScaledVector(this.direction,A)}lookAt(A){return this.direction.copy(A).sub(this.origin).normalize(),this}recast(A){return this.origin.copy(this.at(A,yn)),this}closestPointToPoint(A,t){t.subVectors(A,this.origin);const n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(A){return Math.sqrt(this.distanceSqToPoint(A))}distanceSqToPoint(A){const t=yn.subVectors(A,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(A):(yn.copy(this.origin).addScaledVector(this.direction,t),yn.distanceToSquared(A))}distanceSqToSegment(A,t,n,i){jI.copy(A).add(t).multiplyScalar(.5),Aa.copy(t).sub(A).normalize(),Vn.copy(this.origin).sub(jI);const r=A.distanceTo(t)*.5,o=-this.direction.dot(Aa),s=Vn.dot(this.direction),a=-Vn.dot(Aa),g=Vn.lengthSq(),I=Math.abs(1-o*o);let C,B,E,d;if(I>0)if(C=o*a-s,B=o*s-a,d=r*I,C>=0)if(B>=-d)if(B<=d){const h=1/I;C*=h,B*=h,E=C*(C+o*B+2*s)+B*(o*C+B+2*a)+g}else B=r,C=Math.max(0,-(o*B+s)),E=-C*C+B*(B+2*a)+g;else B=-r,C=Math.max(0,-(o*B+s)),E=-C*C+B*(B+2*a)+g;else B<=-d?(C=Math.max(0,-(-o*r+s)),B=C>0?-r:Math.min(Math.max(-r,-a),r),E=-C*C+B*(B+2*a)+g):B<=d?(C=0,B=Math.min(Math.max(-r,-a),r),E=B*(B+2*a)+g):(C=Math.max(0,-(o*r+s)),B=C>0?r:Math.min(Math.max(-r,-a),r),E=-C*C+B*(B+2*a)+g);else B=o>0?-r:r,C=Math.max(0,-(o*B+s)),E=-C*C+B*(B+2*a)+g;return n&&n.copy(this.origin).addScaledVector(this.direction,C),i&&i.copy(jI).addScaledVector(Aa,B),E}intersectSphere(A,t){yn.subVectors(A.center,this.origin);const n=yn.dot(this.direction),i=yn.dot(yn)-n*n,r=A.radius*A.radius;if(i>r)return null;const o=Math.sqrt(r-i),s=n-o,a=n+o;return a<0?null:s<0?this.at(a,t):this.at(s,t)}intersectsSphere(A){return this.distanceSqToPoint(A.center)<=A.radius*A.radius}distanceToPlane(A){const t=A.normal.dot(this.direction);if(t===0)return A.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(A.normal)+A.constant)/t;return n>=0?n:null}intersectPlane(A,t){const n=this.distanceToPlane(A);return n===null?null:this.at(n,t)}intersectsPlane(A){const t=A.distanceToPoint(this.origin);return t===0||A.normal.dot(this.direction)*t<0}intersectBox(A,t){let n,i,r,o,s,a;const g=1/this.direction.x,I=1/this.direction.y,C=1/this.direction.z,B=this.origin;return g>=0?(n=(A.min.x-B.x)*g,i=(A.max.x-B.x)*g):(n=(A.max.x-B.x)*g,i=(A.min.x-B.x)*g),I>=0?(r=(A.min.y-B.y)*I,o=(A.max.y-B.y)*I):(r=(A.max.y-B.y)*I,o=(A.min.y-B.y)*I),n>o||r>i||((r>n||isNaN(n))&&(n=r),(o=0?(s=(A.min.z-B.z)*C,a=(A.max.z-B.z)*C):(s=(A.max.z-B.z)*C,a=(A.min.z-B.z)*C),n>a||s>i)||((s>n||n!==n)&&(n=s),(a=0?n:i,t)}intersectsBox(A){return this.intersectBox(A,yn)!==null}intersectTriangle(A,t,n,i,r){XI.subVectors(t,A),ea.subVectors(n,A),ZI.crossVectors(XI,ea);let o=this.direction.dot(ZI),s;if(o>0){if(i)return null;s=1}else if(o<0)s=-1,o=-o;else return null;Vn.subVectors(this.origin,A);const a=s*this.direction.dot(ea.crossVectors(Vn,ea));if(a<0)return null;const g=s*this.direction.dot(XI.cross(Vn));if(g<0||a+g>o)return null;const I=-s*Vn.dot(ZI);return I<0?null:this.at(I/o,r)}applyMatrix4(A){return this.origin.applyMatrix4(A),this.direction.transformDirection(A),this}equals(A){return A.origin.equals(this.origin)&&A.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class Ie{constructor(A,t,n,i,r,o,s,a,g,I,C,B,E,d,h,c){Ie.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],A!==void 0&&this.set(A,t,n,i,r,o,s,a,g,I,C,B,E,d,h,c)}set(A,t,n,i,r,o,s,a,g,I,C,B,E,d,h,c){const l=this.elements;return l[0]=A,l[4]=t,l[8]=n,l[12]=i,l[1]=r,l[5]=o,l[9]=s,l[13]=a,l[2]=g,l[6]=I,l[10]=C,l[14]=B,l[3]=E,l[7]=d,l[11]=h,l[15]=c,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Ie().fromArray(this.elements)}copy(A){const t=this.elements,n=A.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(A){const t=this.elements,n=A.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(A){const t=A.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(A,t,n){return A.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(A,t,n){return this.set(A.x,t.x,n.x,0,A.y,t.y,n.y,0,A.z,t.z,n.z,0,0,0,0,1),this}extractRotation(A){const t=this.elements,n=A.elements,i=1/ur.setFromMatrixColumn(A,0).length(),r=1/ur.setFromMatrixColumn(A,1).length(),o=1/ur.setFromMatrixColumn(A,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*r,t[5]=n[5]*r,t[6]=n[6]*r,t[7]=0,t[8]=n[8]*o,t[9]=n[9]*o,t[10]=n[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(A){const t=this.elements,n=A.x,i=A.y,r=A.z,o=Math.cos(n),s=Math.sin(n),a=Math.cos(i),g=Math.sin(i),I=Math.cos(r),C=Math.sin(r);if(A.order==="XYZ"){const B=o*I,E=o*C,d=s*I,h=s*C;t[0]=a*I,t[4]=-a*C,t[8]=g,t[1]=E+d*g,t[5]=B-h*g,t[9]=-s*a,t[2]=h-B*g,t[6]=d+E*g,t[10]=o*a}else if(A.order==="YXZ"){const B=a*I,E=a*C,d=g*I,h=g*C;t[0]=B+h*s,t[4]=d*s-E,t[8]=o*g,t[1]=o*C,t[5]=o*I,t[9]=-s,t[2]=E*s-d,t[6]=h+B*s,t[10]=o*a}else if(A.order==="ZXY"){const B=a*I,E=a*C,d=g*I,h=g*C;t[0]=B-h*s,t[4]=-o*C,t[8]=d+E*s,t[1]=E+d*s,t[5]=o*I,t[9]=h-B*s,t[2]=-o*g,t[6]=s,t[10]=o*a}else if(A.order==="ZYX"){const B=o*I,E=o*C,d=s*I,h=s*C;t[0]=a*I,t[4]=d*g-E,t[8]=B*g+h,t[1]=a*C,t[5]=h*g+B,t[9]=E*g-d,t[2]=-g,t[6]=s*a,t[10]=o*a}else if(A.order==="YZX"){const B=o*a,E=o*g,d=s*a,h=s*g;t[0]=a*I,t[4]=h-B*C,t[8]=d*C+E,t[1]=C,t[5]=o*I,t[9]=-s*I,t[2]=-g*I,t[6]=E*C+d,t[10]=B-h*C}else if(A.order==="XZY"){const B=o*a,E=o*g,d=s*a,h=s*g;t[0]=a*I,t[4]=-C,t[8]=g*I,t[1]=B*C+h,t[5]=o*I,t[9]=E*C-d,t[2]=d*C-E,t[6]=s*I,t[10]=h*C+B}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(A){return this.compose(MS,A,RS)}lookAt(A,t,n){const i=this.elements;return Rt.subVectors(A,t),Rt.lengthSq()===0&&(Rt.z=1),Rt.normalize(),jn.crossVectors(n,Rt),jn.lengthSq()===0&&(Math.abs(n.z)===1?Rt.x+=1e-4:Rt.z+=1e-4,Rt.normalize(),jn.crossVectors(n,Rt)),jn.normalize(),ta.crossVectors(Rt,jn),i[0]=jn.x,i[4]=ta.x,i[8]=Rt.x,i[1]=jn.y,i[5]=ta.y,i[9]=Rt.y,i[2]=jn.z,i[6]=ta.z,i[10]=Rt.z,this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,t){const n=A.elements,i=t.elements,r=this.elements,o=n[0],s=n[4],a=n[8],g=n[12],I=n[1],C=n[5],B=n[9],E=n[13],d=n[2],h=n[6],c=n[10],l=n[14],u=n[3],Q=n[7],p=n[11],D=n[15],f=i[0],y=i[4],N=i[8],m=i[12],M=i[1],P=i[5],X=i[9],Z=i[13],v=i[2],H=i[6],$=i[10],j=i[14],Y=i[3],J=i[7],W=i[11],_=i[15];return r[0]=o*f+s*M+a*v+g*Y,r[4]=o*y+s*P+a*H+g*J,r[8]=o*N+s*X+a*$+g*W,r[12]=o*m+s*Z+a*j+g*_,r[1]=I*f+C*M+B*v+E*Y,r[5]=I*y+C*P+B*H+E*J,r[9]=I*N+C*X+B*$+E*W,r[13]=I*m+C*Z+B*j+E*_,r[2]=d*f+h*M+c*v+l*Y,r[6]=d*y+h*P+c*H+l*J,r[10]=d*N+h*X+c*$+l*W,r[14]=d*m+h*Z+c*j+l*_,r[3]=u*f+Q*M+p*v+D*Y,r[7]=u*y+Q*P+p*H+D*J,r[11]=u*N+Q*X+p*$+D*W,r[15]=u*m+Q*Z+p*j+D*_,this}multiplyScalar(A){const t=this.elements;return t[0]*=A,t[4]*=A,t[8]*=A,t[12]*=A,t[1]*=A,t[5]*=A,t[9]*=A,t[13]*=A,t[2]*=A,t[6]*=A,t[10]*=A,t[14]*=A,t[3]*=A,t[7]*=A,t[11]*=A,t[15]*=A,this}determinant(){const A=this.elements,t=A[0],n=A[4],i=A[8],r=A[12],o=A[1],s=A[5],a=A[9],g=A[13],I=A[2],C=A[6],B=A[10],E=A[14],d=A[3],h=A[7],c=A[11],l=A[15];return d*(+r*a*C-i*g*C-r*s*B+n*g*B+i*s*E-n*a*E)+h*(+t*a*E-t*g*B+r*o*B-i*o*E+i*g*I-r*a*I)+c*(+t*g*C-t*s*E-r*o*C+n*o*E+r*s*I-n*g*I)+l*(-i*s*I-t*a*C+t*s*B+i*o*C-n*o*B+n*a*I)}transpose(){const A=this.elements;let t;return t=A[1],A[1]=A[4],A[4]=t,t=A[2],A[2]=A[8],A[8]=t,t=A[6],A[6]=A[9],A[9]=t,t=A[3],A[3]=A[12],A[12]=t,t=A[7],A[7]=A[13],A[13]=t,t=A[11],A[11]=A[14],A[14]=t,this}setPosition(A,t,n){const i=this.elements;return A.isVector3?(i[12]=A.x,i[13]=A.y,i[14]=A.z):(i[12]=A,i[13]=t,i[14]=n),this}invert(){const A=this.elements,t=A[0],n=A[1],i=A[2],r=A[3],o=A[4],s=A[5],a=A[6],g=A[7],I=A[8],C=A[9],B=A[10],E=A[11],d=A[12],h=A[13],c=A[14],l=A[15],u=C*c*g-h*B*g+h*a*E-s*c*E-C*a*l+s*B*l,Q=d*B*g-I*c*g-d*a*E+o*c*E+I*a*l-o*B*l,p=I*h*g-d*C*g+d*s*E-o*h*E-I*s*l+o*C*l,D=d*C*a-I*h*a-d*s*B+o*h*B+I*s*c-o*C*c,f=t*u+n*Q+i*p+r*D;if(f===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const y=1/f;return A[0]=u*y,A[1]=(h*B*r-C*c*r-h*i*E+n*c*E+C*i*l-n*B*l)*y,A[2]=(s*c*r-h*a*r+h*i*g-n*c*g-s*i*l+n*a*l)*y,A[3]=(C*a*r-s*B*r-C*i*g+n*B*g+s*i*E-n*a*E)*y,A[4]=Q*y,A[5]=(I*c*r-d*B*r+d*i*E-t*c*E-I*i*l+t*B*l)*y,A[6]=(d*a*r-o*c*r-d*i*g+t*c*g+o*i*l-t*a*l)*y,A[7]=(o*B*r-I*a*r+I*i*g-t*B*g-o*i*E+t*a*E)*y,A[8]=p*y,A[9]=(d*C*r-I*h*r-d*n*E+t*h*E+I*n*l-t*C*l)*y,A[10]=(o*h*r-d*s*r+d*n*g-t*h*g-o*n*l+t*s*l)*y,A[11]=(I*s*r-o*C*r-I*n*g+t*C*g+o*n*E-t*s*E)*y,A[12]=D*y,A[13]=(I*h*i-d*C*i+d*n*B-t*h*B-I*n*c+t*C*c)*y,A[14]=(d*s*i-o*h*i-d*n*a+t*h*a+o*n*c-t*s*c)*y,A[15]=(o*C*i-I*s*i+I*n*a-t*C*a-o*n*B+t*s*B)*y,this}scale(A){const t=this.elements,n=A.x,i=A.y,r=A.z;return t[0]*=n,t[4]*=i,t[8]*=r,t[1]*=n,t[5]*=i,t[9]*=r,t[2]*=n,t[6]*=i,t[10]*=r,t[3]*=n,t[7]*=i,t[11]*=r,this}getMaxScaleOnAxis(){const A=this.elements,t=A[0]*A[0]+A[1]*A[1]+A[2]*A[2],n=A[4]*A[4]+A[5]*A[5]+A[6]*A[6],i=A[8]*A[8]+A[9]*A[9]+A[10]*A[10];return Math.sqrt(Math.max(t,n,i))}makeTranslation(A,t,n){return A.isVector3?this.set(1,0,0,A.x,0,1,0,A.y,0,0,1,A.z,0,0,0,1):this.set(1,0,0,A,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(A){const t=Math.cos(A),n=Math.sin(A);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(A){const t=Math.cos(A),n=Math.sin(A);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(A){const t=Math.cos(A),n=Math.sin(A);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(A,t){const n=Math.cos(t),i=Math.sin(t),r=1-n,o=A.x,s=A.y,a=A.z,g=r*o,I=r*s;return this.set(g*o+n,g*s-i*a,g*a+i*s,0,g*s+i*a,I*s+n,I*a-i*o,0,g*a-i*s,I*a+i*o,r*a*a+n,0,0,0,0,1),this}makeScale(A,t,n){return this.set(A,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(A,t,n,i,r,o){return this.set(1,n,r,0,A,1,o,0,t,i,1,0,0,0,0,1),this}compose(A,t,n){const i=this.elements,r=t._x,o=t._y,s=t._z,a=t._w,g=r+r,I=o+o,C=s+s,B=r*g,E=r*I,d=r*C,h=o*I,c=o*C,l=s*C,u=a*g,Q=a*I,p=a*C,D=n.x,f=n.y,y=n.z;return i[0]=(1-(h+l))*D,i[1]=(E+p)*D,i[2]=(d-Q)*D,i[3]=0,i[4]=(E-p)*f,i[5]=(1-(B+l))*f,i[6]=(c+u)*f,i[7]=0,i[8]=(d+Q)*y,i[9]=(c-u)*y,i[10]=(1-(B+h))*y,i[11]=0,i[12]=A.x,i[13]=A.y,i[14]=A.z,i[15]=1,this}decompose(A,t,n){const i=this.elements;let r=ur.set(i[0],i[1],i[2]).length();const o=ur.set(i[4],i[5],i[6]).length(),s=ur.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),A.x=i[12],A.y=i[13],A.z=i[14],jt.copy(this);const g=1/r,I=1/o,C=1/s;return jt.elements[0]*=g,jt.elements[1]*=g,jt.elements[2]*=g,jt.elements[4]*=I,jt.elements[5]*=I,jt.elements[6]*=I,jt.elements[8]*=C,jt.elements[9]*=C,jt.elements[10]*=C,t.setFromRotationMatrix(jt),n.x=r,n.y=o,n.z=s,this}makePerspective(A,t,n,i,r,o,s=_n){const a=this.elements,g=2*r/(t-A),I=2*r/(n-i),C=(t+A)/(t-A),B=(n+i)/(n-i);let E,d;if(s===_n)E=-(o+r)/(o-r),d=-2*o*r/(o-r);else if(s===pg)E=-o/(o-r),d=-o*r/(o-r);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+s);return a[0]=g,a[4]=0,a[8]=C,a[12]=0,a[1]=0,a[5]=I,a[9]=B,a[13]=0,a[2]=0,a[6]=0,a[10]=E,a[14]=d,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(A,t,n,i,r,o,s=_n){const a=this.elements,g=1/(t-A),I=1/(n-i),C=1/(o-r),B=(t+A)*g,E=(n+i)*I;let d,h;if(s===_n)d=(o+r)*C,h=-2*C;else if(s===pg)d=r*C,h=-1*C;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+s);return a[0]=2*g,a[4]=0,a[8]=0,a[12]=-B,a[1]=0,a[5]=2*I,a[9]=0,a[13]=-E,a[2]=0,a[6]=0,a[10]=h,a[14]=-d,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(A){const t=this.elements,n=A.elements;for(let i=0;i<16;i++)if(t[i]!==n[i])return!1;return!0}fromArray(A,t=0){for(let n=0;n<16;n++)this.elements[n]=A[n+t];return this}toArray(A=[],t=0){const n=this.elements;return A[t]=n[0],A[t+1]=n[1],A[t+2]=n[2],A[t+3]=n[3],A[t+4]=n[4],A[t+5]=n[5],A[t+6]=n[6],A[t+7]=n[7],A[t+8]=n[8],A[t+9]=n[9],A[t+10]=n[10],A[t+11]=n[11],A[t+12]=n[12],A[t+13]=n[13],A[t+14]=n[14],A[t+15]=n[15],A}}const ur=new k,jt=new Ie,MS=new k(0,0,0),RS=new k(1,1,1),jn=new k,ta=new k,Rt=new k,cu=new Ie,uu=new hn;class Zg{constructor(A=0,t=0,n=0,i=Zg.DEFAULT_ORDER){this.isEuler=!0,this._x=A,this._y=t,this._z=n,this._order=i}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get order(){return this._order}set order(A){this._order=A,this._onChangeCallback()}set(A,t,n,i=this._order){return this._x=A,this._y=t,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(A){return this._x=A._x,this._y=A._y,this._z=A._z,this._order=A._order,this._onChangeCallback(),this}setFromRotationMatrix(A,t=this._order,n=!0){const i=A.elements,r=i[0],o=i[4],s=i[8],a=i[1],g=i[5],I=i[9],C=i[2],B=i[6],E=i[10];switch(t){case"XYZ":this._y=Math.asin(ot(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(-I,E),this._z=Math.atan2(-o,r)):(this._x=Math.atan2(B,g),this._z=0);break;case"YXZ":this._x=Math.asin(-ot(I,-1,1)),Math.abs(I)<.9999999?(this._y=Math.atan2(s,E),this._z=Math.atan2(a,g)):(this._y=Math.atan2(-C,r),this._z=0);break;case"ZXY":this._x=Math.asin(ot(B,-1,1)),Math.abs(B)<.9999999?(this._y=Math.atan2(-C,E),this._z=Math.atan2(-o,g)):(this._y=0,this._z=Math.atan2(a,r));break;case"ZYX":this._y=Math.asin(-ot(C,-1,1)),Math.abs(C)<.9999999?(this._x=Math.atan2(B,E),this._z=Math.atan2(a,r)):(this._x=0,this._z=Math.atan2(-o,g));break;case"YZX":this._z=Math.asin(ot(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-I,g),this._y=Math.atan2(-C,r)):(this._x=0,this._y=Math.atan2(s,E));break;case"XZY":this._z=Math.asin(-ot(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(B,g),this._y=Math.atan2(s,r)):(this._x=Math.atan2(-I,E),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(A,t,n){return cu.makeRotationFromQuaternion(A),this.setFromRotationMatrix(cu,t,n)}setFromVector3(A,t=this._order){return this.set(A.x,A.y,A.z,t)}reorder(A){return uu.setFromEuler(this),this.setFromQuaternion(uu,A)}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._order===this._order}fromArray(A){return this._x=A[0],this._y=A[1],this._z=A[2],A[3]!==void 0&&(this._order=A[3]),this._onChangeCallback(),this}toArray(A=[],t=0){return A[t]=this._x,A[t+1]=this._y,A[t+2]=this._z,A[t+3]=this._order,A}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Zg.DEFAULT_ORDER="XYZ";class ff{constructor(){this.mask=1}set(A){this.mask=(1<>>0}enable(A){this.mask|=1<1){for(let t=0;t1){for(let n=0;n0&&(n=n.concat(o))}return n}getWorldPosition(A){return this.updateWorldMatrix(!0,!1),A.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(To,A,NS),A}getWorldScale(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(To,FS,A),A}getWorldDirection(A){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return A.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(A){A(this);const t=this.children;for(let n=0,i=t.length;n0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON()));function r(s,a){return s[a.uuid]===void 0&&(s[a.uuid]=a.toJSON(A)),a.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(A).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(A).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(A.geometries,this.geometry);const s=this.geometry.parameters;if(s!==void 0&&s.shapes!==void 0){const a=s.shapes;if(Array.isArray(a))for(let g=0,I=a.length;g0){i.children=[];for(let s=0;s0){i.animations=[];for(let s=0;s0&&(n.geometries=s),a.length>0&&(n.materials=a),g.length>0&&(n.textures=g),I.length>0&&(n.images=I),C.length>0&&(n.shapes=C),B.length>0&&(n.skeletons=B),E.length>0&&(n.animations=E),d.length>0&&(n.nodes=d)}return n.object=i,n;function o(s){const a=[];for(const g in s){const I=s[g];delete I.metadata,a.push(I)}return a}}clone(A){return new this.constructor().copy(this,A)}copy(A,t=!0){if(this.name=A.name,this.up.copy(A.up),this.position.copy(A.position),this.rotation.order=A.rotation.order,this.quaternion.copy(A.quaternion),this.scale.copy(A.scale),this.matrix.copy(A.matrix),this.matrixWorld.copy(A.matrixWorld),this.matrixAutoUpdate=A.matrixAutoUpdate,this.matrixWorldNeedsUpdate=A.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=A.matrixWorldAutoUpdate,this.layers.mask=A.layers.mask,this.visible=A.visible,this.castShadow=A.castShadow,this.receiveShadow=A.receiveShadow,this.frustumCulled=A.frustumCulled,this.renderOrder=A.renderOrder,this.animations=A.animations.slice(),this.userData=JSON.parse(JSON.stringify(A.userData)),t===!0)for(let n=0;n0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(A,t,n,i,r){Xt.subVectors(i,t),Sn.subVectors(n,t),$I.subVectors(A,t);const o=Xt.dot(Xt),s=Xt.dot(Sn),a=Xt.dot($I),g=Sn.dot(Sn),I=Sn.dot($I),C=o*g-s*s;if(C===0)return r.set(-2,-1,-1);const B=1/C,E=(g*a-s*I)*B,d=(o*I-s*a)*B;return r.set(1-E-d,d,E)}static containsPoint(A,t,n,i){return this.getBarycoord(A,t,n,i,Mn),Mn.x>=0&&Mn.y>=0&&Mn.x+Mn.y<=1}static getUV(A,t,n,i,r,o,s,a){return ia===!1&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),ia=!0),this.getInterpolation(A,t,n,i,r,o,s,a)}static getInterpolation(A,t,n,i,r,o,s,a){return this.getBarycoord(A,t,n,i,Mn),a.setScalar(0),a.addScaledVector(r,Mn.x),a.addScaledVector(o,Mn.y),a.addScaledVector(s,Mn.z),a}static isFrontFacing(A,t,n,i){return Xt.subVectors(n,t),Sn.subVectors(A,t),Xt.cross(Sn).dot(i)<0}set(A,t,n){return this.a.copy(A),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(A,t,n,i){return this.a.copy(A[t]),this.b.copy(A[n]),this.c.copy(A[i]),this}setFromAttributeAndIndices(A,t,n,i){return this.a.fromBufferAttribute(A,t),this.b.fromBufferAttribute(A,n),this.c.fromBufferAttribute(A,i),this}clone(){return new this.constructor().copy(this)}copy(A){return this.a.copy(A.a),this.b.copy(A.b),this.c.copy(A.c),this}getArea(){return Xt.subVectors(this.c,this.b),Sn.subVectors(this.a,this.b),Xt.cross(Sn).length()*.5}getMidpoint(A){return A.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(A){return nn.getNormal(this.a,this.b,this.c,A)}getPlane(A){return A.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(A,t){return nn.getBarycoord(A,this.a,this.b,this.c,t)}getUV(A,t,n,i,r){return ia===!1&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),ia=!0),nn.getInterpolation(A,this.a,this.b,this.c,t,n,i,r)}getInterpolation(A,t,n,i,r){return nn.getInterpolation(A,this.a,this.b,this.c,t,n,i,r)}containsPoint(A){return nn.containsPoint(A,this.a,this.b,this.c)}isFrontFacing(A){return nn.isFrontFacing(this.a,this.b,this.c,A)}intersectsBox(A){return A.intersectsTriangle(this)}closestPointToPoint(A,t){const n=this.a,i=this.b,r=this.c;let o,s;hr.subVectors(i,n),dr.subVectors(r,n),AC.subVectors(A,n);const a=hr.dot(AC),g=dr.dot(AC);if(a<=0&&g<=0)return t.copy(n);eC.subVectors(A,i);const I=hr.dot(eC),C=dr.dot(eC);if(I>=0&&C<=I)return t.copy(i);const B=a*C-I*g;if(B<=0&&a>=0&&I<=0)return o=a/(a-I),t.copy(n).addScaledVector(hr,o);tC.subVectors(A,r);const E=hr.dot(tC),d=dr.dot(tC);if(d>=0&&E<=d)return t.copy(r);const h=E*g-a*d;if(h<=0&&g>=0&&d<=0)return s=g/(g-d),t.copy(n).addScaledVector(dr,s);const c=I*d-E*C;if(c<=0&&C-I>=0&&E-d>=0)return pu.subVectors(r,i),s=(C-I)/(C-I+(E-d)),t.copy(i).addScaledVector(pu,s);const l=1/(c+h+B);return o=h*l,s=B*l,t.copy(n).addScaledVector(hr,o).addScaledVector(dr,s)}equals(A){return A.a.equals(this.a)&&A.b.equals(this.b)&&A.c.equals(this.c)}}let _S=0;class ho extends rr{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:_S++}),this.uuid=Qo(),this.name="",this.type="Material",this.blending=jr,this.side=On,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=gf,this.blendDst=_B,this.blendEquation=Ti,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=fl,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=jD,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=KI,this.stencilZFail=KI,this.stencilZPass=KI,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(A){this._alphaTest>0!=A>0&&this.version++,this._alphaTest=A}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(A){if(A!==void 0)for(const t in A){const n=A[t];if(n===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const i=this[t];if(i===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[t]=n}}toJSON(A){const t=A===void 0||typeof A=="string";t&&(A={textures:{},images:{}});const n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(A).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(A).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(A).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(A).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(A).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(A).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(A).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(A).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(A).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(A).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(A).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(A).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(A).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(A).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(A).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(A).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(A).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(A).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(A).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(A).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(A).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(A).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(A).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(A).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==jr&&(n.blending=this.blending),this.side!==On&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),n.depthFunc=this.depthFunc,n.depthTest=this.depthTest,n.depthWrite=this.depthWrite,n.colorWrite=this.colorWrite,n.stencilWrite=this.stencilWrite,n.stencilWriteMask=this.stencilWriteMask,n.stencilFunc=this.stencilFunc,n.stencilRef=this.stencilRef,n.stencilFuncMask=this.stencilFuncMask,n.stencilFail=this.stencilFail,n.stencilZFail=this.stencilZFail,n.stencilZPass=this.stencilZPass,this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function i(r){const o=[];for(const s in r){const a=r[s];delete a.metadata,o.push(a)}return o}if(t){const r=i(A.textures),o=i(A.images);r.length>0&&(n.textures=r),o.length>0&&(n.images=o)}return n}clone(){return new this.constructor().copy(this)}copy(A){this.name=A.name,this.blending=A.blending,this.side=A.side,this.vertexColors=A.vertexColors,this.opacity=A.opacity,this.transparent=A.transparent,this.blendSrc=A.blendSrc,this.blendDst=A.blendDst,this.blendEquation=A.blendEquation,this.blendSrcAlpha=A.blendSrcAlpha,this.blendDstAlpha=A.blendDstAlpha,this.blendEquationAlpha=A.blendEquationAlpha,this.depthFunc=A.depthFunc,this.depthTest=A.depthTest,this.depthWrite=A.depthWrite,this.stencilWriteMask=A.stencilWriteMask,this.stencilFunc=A.stencilFunc,this.stencilRef=A.stencilRef,this.stencilFuncMask=A.stencilFuncMask,this.stencilFail=A.stencilFail,this.stencilZFail=A.stencilZFail,this.stencilZPass=A.stencilZPass,this.stencilWrite=A.stencilWrite;const t=A.clippingPlanes;let n=null;if(t!==null){const i=t.length;n=new Array(i);for(let r=0;r!==i;++r)n[r]=t[r].clone()}return this.clippingPlanes=n,this.clipIntersection=A.clipIntersection,this.clipShadows=A.clipShadows,this.shadowSide=A.shadowSide,this.colorWrite=A.colorWrite,this.precision=A.precision,this.polygonOffset=A.polygonOffset,this.polygonOffsetFactor=A.polygonOffsetFactor,this.polygonOffsetUnits=A.polygonOffsetUnits,this.dithering=A.dithering,this.alphaTest=A.alphaTest,this.alphaHash=A.alphaHash,this.alphaToCoverage=A.alphaToCoverage,this.premultipliedAlpha=A.premultipliedAlpha,this.forceSinglePass=A.forceSinglePass,this.visible=A.visible,this.toneMapped=A.toneMapped,this.userData=JSON.parse(JSON.stringify(A.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(A){A===!0&&this.version++}}const pf={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Xn={h:0,s:0,l:0},ra={h:0,s:0,l:0};function nC(e,A,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?e+(A-e)*6*t:t<1/2?A:t<2/3?e+(A-e)*6*(2/3-t):e}class ue{constructor(A,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(A,t,n)}set(A,t,n){if(t===void 0&&n===void 0){const i=A;i&&i.isColor?this.copy(i):typeof i=="number"?this.setHex(i):typeof i=="string"&&this.setStyle(i)}else this.setRGB(A,t,n);return this}setScalar(A){return this.r=A,this.g=A,this.b=A,this}setHex(A,t=Ze){return A=Math.floor(A),this.r=(A>>16&255)/255,this.g=(A>>8&255)/255,this.b=(A&255)/255,Ee.toWorkingColorSpace(this,t),this}setRGB(A,t,n,i=Ee.workingColorSpace){return this.r=A,this.g=t,this.b=n,Ee.toWorkingColorSpace(this,i),this}setHSL(A,t,n,i=Ee.workingColorSpace){if(A=OB(A,1),t=ot(t,0,1),n=ot(n,0,1),t===0)this.r=this.g=this.b=n;else{const r=n<=.5?n*(1+t):n+t-n*t,o=2*n-r;this.r=nC(o,r,A+1/3),this.g=nC(o,r,A),this.b=nC(o,r,A-1/3)}return Ee.toWorkingColorSpace(this,i),this}setStyle(A,t=Ze){function n(r){r!==void 0&&parseFloat(r)<1&&console.warn("THREE.Color: Alpha component of "+A+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(A)){let r;const o=i[1],s=i[2];switch(o){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,t);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,t);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+A)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(A)){const r=i[1],o=r.length;if(o===3)return this.setRGB(parseInt(r.charAt(0),16)/15,parseInt(r.charAt(1),16)/15,parseInt(r.charAt(2),16)/15,t);if(o===6)return this.setHex(parseInt(r,16),t);console.warn("THREE.Color: Invalid hex color "+A)}else if(A&&A.length>0)return this.setColorName(A,t);return this}setColorName(A,t=Ze){const n=pf[A.toLowerCase()];return n!==void 0?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+A),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(A){return this.r=A.r,this.g=A.g,this.b=A.b,this}copySRGBToLinear(A){return this.r=Xr(A.r),this.g=Xr(A.g),this.b=Xr(A.b),this}copyLinearToSRGB(A){return this.r=JI(A.r),this.g=JI(A.g),this.b=JI(A.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(A=Ze){return Ee.fromWorkingColorSpace(it.copy(this),A),Math.round(ot(it.r*255,0,255))*65536+Math.round(ot(it.g*255,0,255))*256+Math.round(ot(it.b*255,0,255))}getHexString(A=Ze){return("000000"+this.getHex(A).toString(16)).slice(-6)}getHSL(A,t=Ee.workingColorSpace){Ee.fromWorkingColorSpace(it.copy(this),t);const n=it.r,i=it.g,r=it.b,o=Math.max(n,i,r),s=Math.min(n,i,r);let a,g;const I=(s+o)/2;if(s===o)a=0,g=0;else{const C=o-s;switch(g=I<=.5?C/(o+s):C/(2-o-s),o){case n:a=(i-r)/C+(i0&&(A.userData=this.userData),this.parameters!==void 0){const a=this.parameters;for(const g in a)a[g]!==void 0&&(A[g]=a[g]);return A}A.data={attributes:{}};const t=this.index;t!==null&&(A.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const a in n){const g=n[a];A.data.attributes[a]=g.toJSON(A.data)}const i={};let r=!1;for(const a in this.morphAttributes){const g=this.morphAttributes[a],I=[];for(let C=0,B=g.length;C0&&(i[a]=I,r=!0)}r&&(A.data.morphAttributes=i,A.data.morphTargetsRelative=this.morphTargetsRelative);const o=this.groups;o.length>0&&(A.data.groups=JSON.parse(JSON.stringify(o)));const s=this.boundingSphere;return s!==null&&(A.data.boundingSphere={center:s.center.toArray(),radius:s.radius}),A}clone(){return new this.constructor().copy(this)}copy(A){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=A.name;const n=A.index;n!==null&&this.setIndex(n.clone(t));const i=A.attributes;for(const g in i){const I=i[g];this.setAttribute(g,I.clone(t))}const r=A.morphAttributes;for(const g in r){const I=[],C=r[g];for(let B=0,E=C.length;B0){const i=t[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,o=i.length;r(A.far-A.near)**2))&&(mu.copy(r).invert(),Ri.copy(A.ray).applyMatrix4(mu),!(n.boundingBox!==null&&Ri.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(A,t,Ri)))}_computeIntersections(A,t,n){let i;const r=this.geometry,o=this.material,s=r.index,a=r.attributes.position,g=r.attributes.uv,I=r.attributes.uv1,C=r.attributes.normal,B=r.groups,E=r.drawRange;if(s!==null)if(Array.isArray(o))for(let d=0,h=B.length;dt.far?null:{distance:g,point:Ba.clone(),object:e}}function Ea(e,A,t,n,i,r,o,s,a,g){e.getVertexPosition(s,pr),e.getVertexPosition(a,mr),e.getVertexPosition(g,wr);const I=GS(e,A,t,n,pr,mr,wr,la);if(I){i&&(ga.fromBufferAttribute(i,s),Ia.fromBufferAttribute(i,a),Ca.fromBufferAttribute(i,g),I.uv=nn.getInterpolation(la,pr,mr,wr,ga,Ia,Ca,new qA)),r&&(ga.fromBufferAttribute(r,s),Ia.fromBufferAttribute(r,a),Ca.fromBufferAttribute(r,g),I.uv1=nn.getInterpolation(la,pr,mr,wr,ga,Ia,Ca,new qA),I.uv2=I.uv1),o&&(yu.fromBufferAttribute(o,s),Du.fromBufferAttribute(o,a),Su.fromBufferAttribute(o,g),I.normal=nn.getInterpolation(la,pr,mr,wr,yu,Du,Su,new k),I.normal.dot(n.direction)>0&&I.normal.multiplyScalar(-1));const C={a:s,b:a,c:g,normal:new k,materialIndex:0};nn.getNormal(pr,mr,wr,C.normal),I.face=C}return I}class fo extends Jn{constructor(A=1,t=1,n=1,i=1,r=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:A,height:t,depth:n,widthSegments:i,heightSegments:r,depthSegments:o};const s=this;i=Math.floor(i),r=Math.floor(r),o=Math.floor(o);const a=[],g=[],I=[],C=[];let B=0,E=0;d("z","y","x",-1,-1,n,t,A,o,r,0),d("z","y","x",1,-1,n,t,-A,o,r,1),d("x","z","y",1,1,A,n,t,i,o,2),d("x","z","y",1,-1,A,n,-t,i,o,3),d("x","y","z",1,-1,A,t,n,i,r,4),d("x","y","z",-1,-1,A,t,-n,i,r,5),this.setIndex(a),this.setAttribute("position",new qi(g,3)),this.setAttribute("normal",new qi(I,3)),this.setAttribute("uv",new qi(C,2));function d(h,c,l,u,Q,p,D,f,y,N,m){const M=p/y,P=D/N,X=p/2,Z=D/2,v=f/2,H=y+1,$=N+1;let j=0,Y=0;const J=new k;for(let W=0;W<$;W++){const _=W*P-Z;for(let K=0;K0?1:-1,I.push(J.x,J.y,J.z),C.push(K/y),C.push(1-W/N),j+=1}}for(let W=0;W0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const n={};for(const i in this.extensions)this.extensions[i]===!0&&(n[i]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class Sf extends at{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Ie,this.projectionMatrix=new Ie,this.projectionMatrixInverse=new Ie,this.coordinateSystem=_n}copy(A,t){return super.copy(A,t),this.matrixWorldInverse.copy(A.matrixWorldInverse),this.projectionMatrix.copy(A.projectionMatrix),this.projectionMatrixInverse.copy(A.projectionMatrixInverse),this.coordinateSystem=A.coordinateSystem,this}getWorldDirection(A){return super.getWorldDirection(A).negate()}updateMatrixWorld(A){super.updateMatrixWorld(A),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(A,t){super.updateWorldMatrix(A,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}class rn extends Sf{constructor(A=50,t=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=A,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(A,t){return super.copy(A,t),this.fov=A.fov,this.zoom=A.zoom,this.near=A.near,this.far=A.far,this.focus=A.focus,this.aspect=A.aspect,this.view=A.view===null?null:Object.assign({},A.view),this.filmGauge=A.filmGauge,this.filmOffset=A.filmOffset,this}setFocalLength(A){const t=.5*this.getFilmHeight()/A;this.fov=ws*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const A=Math.tan(es*.5*this.fov);return .5*this.getFilmHeight()/A}getEffectiveFOV(){return ws*2*Math.atan(Math.tan(es*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(A,t,n,i,r,o){this.aspect=A/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=A,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const A=this.near;let t=A*Math.tan(es*.5*this.fov)/this.zoom,n=2*t,i=this.aspect*n,r=-.5*i;const o=this.view;if(this.view!==null&&this.view.enabled){const a=o.fullWidth,g=o.fullHeight;r+=o.offsetX*i/a,t-=o.offsetY*n/g,i*=o.width/a,n*=o.height/g}const s=this.filmOffset;s!==0&&(r+=A*s/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,t,t-n,A,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(A){const t=super.toJSON(A);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const yr=-90,Dr=1;class Mf extends at{constructor(A,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const i=new rn(yr,Dr,A,t);i.layers=this.layers,this.add(i);const r=new rn(yr,Dr,A,t);r.layers=this.layers,this.add(r);const o=new rn(yr,Dr,A,t);o.layers=this.layers,this.add(o);const s=new rn(yr,Dr,A,t);s.layers=this.layers,this.add(s);const a=new rn(yr,Dr,A,t);a.layers=this.layers,this.add(a);const g=new rn(yr,Dr,A,t);g.layers=this.layers,this.add(g)}updateCoordinateSystem(){const A=this.coordinateSystem,t=this.children.concat(),[n,i,r,o,s,a]=t;for(const g of t)this.remove(g);if(A===_n)n.up.set(0,1,0),n.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),o.up.set(0,0,1),o.lookAt(0,-1,0),s.up.set(0,1,0),s.lookAt(0,0,1),a.up.set(0,1,0),a.lookAt(0,0,-1);else if(A===pg)n.up.set(0,-1,0),n.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),o.up.set(0,0,-1),o.lookAt(0,-1,0),s.up.set(0,-1,0),s.lookAt(0,0,1),a.up.set(0,-1,0),a.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+A);for(const g of t)this.add(g),g.updateMatrixWorld()}update(A,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:i}=this;this.coordinateSystem!==A.coordinateSystem&&(this.coordinateSystem=A.coordinateSystem,this.updateCoordinateSystem());const[r,o,s,a,g,I]=this.children,C=A.getRenderTarget(),B=A.getActiveCubeFace(),E=A.getActiveMipmapLevel(),d=A.xr.enabled;A.xr.enabled=!1;const h=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,A.setRenderTarget(n,0,i),A.render(t,r),A.setRenderTarget(n,1,i),A.render(t,o),A.setRenderTarget(n,2,i),A.render(t,s),A.setRenderTarget(n,3,i),A.render(t,a),A.setRenderTarget(n,4,i),A.render(t,g),n.texture.generateMipmaps=h,A.setRenderTarget(n,5,i),A.render(t,I),A.setRenderTarget(C,B,E),A.xr.enabled=d,n.texture.needsPMREMUpdate=!0}}class YB extends Dt{constructor(A,t,n,i,r,o,s,a,g,I){A=A!==void 0?A:[],t=t!==void 0?t:so,super(A,t,n,i,r,o,s,a,g,I),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(A){this.image=A}}class Rf extends Ar{constructor(A=1,t={}){super(A,A,t),this.isWebGLCubeRenderTarget=!0;const n={width:A,height:A,depth:1},i=[n,n,n,n,n,n];t.encoding!==void 0&&(ns("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."),t.colorSpace=t.encoding===zi?Ze:st),this.texture=new YB(i,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:Kt}fromEquirectangularTexture(A,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + `},i=new fo(5,5,5),r=new fn({name:"CubemapFromEquirect",uniforms:lo(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:ct,blending:Qn});r.uniforms.tEquirect.value=t;const o=new Jt(i,r),s=t.minFilter;return t.minFilter===go&&(t.minFilter=Kt),new Mf(1,10,this).update(A,o),t.minFilter=s,o.geometry.dispose(),o.material.dispose(),this}clear(A,t,n,i){const r=A.getRenderTarget();for(let o=0;o<6;o++)A.setRenderTarget(this,o),A.clear(t,n,i);A.setRenderTarget(r)}}const oC=new k,OS=new k,YS=new ie;class ei{constructor(A=new k(1,0,0),t=0){this.isPlane=!0,this.normal=A,this.constant=t}set(A,t){return this.normal.copy(A),this.constant=t,this}setComponents(A,t,n,i){return this.normal.set(A,t,n),this.constant=i,this}setFromNormalAndCoplanarPoint(A,t){return this.normal.copy(A),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(A,t,n){const i=oC.subVectors(n,t).cross(OS.subVectors(A,t)).normalize();return this.setFromNormalAndCoplanarPoint(i,A),this}copy(A){return this.normal.copy(A.normal),this.constant=A.constant,this}normalize(){const A=1/this.normal.length();return this.normal.multiplyScalar(A),this.constant*=A,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(A){return this.normal.dot(A)+this.constant}distanceToSphere(A){return this.distanceToPoint(A.center)-A.radius}projectPoint(A,t){return t.copy(A).addScaledVector(this.normal,-this.distanceToPoint(A))}intersectLine(A,t){const n=A.delta(oC),i=this.normal.dot(n);if(i===0)return this.distanceToPoint(A.start)===0?t.copy(A.start):null;const r=-(A.start.dot(this.normal)+this.constant)/i;return r<0||r>1?null:t.copy(A.start).addScaledVector(n,r)}intersectsLine(A){const t=this.distanceToPoint(A.start),n=this.distanceToPoint(A.end);return t<0&&n>0||n<0&&t>0}intersectsBox(A){return A.intersectsPlane(this)}intersectsSphere(A){return A.intersectsPlane(this)}coplanarPoint(A){return A.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(A,t){const n=t||YS.getNormalMatrix(A),i=this.coplanarPoint(oC).applyMatrix4(A),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this}translate(A){return this.constant-=A.dot(this.normal),this}equals(A){return A.normal.equals(this.normal)&&A.constant===this.constant}clone(){return new this.constructor().copy(this)}}const vi=new Zr,ca=new k;class KB{constructor(A=new ei,t=new ei,n=new ei,i=new ei,r=new ei,o=new ei){this.planes=[A,t,n,i,r,o]}set(A,t,n,i,r,o){const s=this.planes;return s[0].copy(A),s[1].copy(t),s[2].copy(n),s[3].copy(i),s[4].copy(r),s[5].copy(o),this}copy(A){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(A.planes[n]);return this}setFromProjectionMatrix(A,t=_n){const n=this.planes,i=A.elements,r=i[0],o=i[1],s=i[2],a=i[3],g=i[4],I=i[5],C=i[6],B=i[7],E=i[8],d=i[9],h=i[10],c=i[11],l=i[12],u=i[13],Q=i[14],p=i[15];if(n[0].setComponents(a-r,B-g,c-E,p-l).normalize(),n[1].setComponents(a+r,B+g,c+E,p+l).normalize(),n[2].setComponents(a+o,B+I,c+d,p+u).normalize(),n[3].setComponents(a-o,B-I,c-d,p-u).normalize(),n[4].setComponents(a-s,B-C,c-h,p-Q).normalize(),t===_n)n[5].setComponents(a+s,B+C,c+h,p+Q).normalize();else if(t===pg)n[5].setComponents(s,C,h,Q).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(A){if(A.boundingSphere!==void 0)A.boundingSphere===null&&A.computeBoundingSphere(),vi.copy(A.boundingSphere).applyMatrix4(A.matrixWorld);else{const t=A.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),vi.copy(t.boundingSphere).applyMatrix4(A.matrixWorld)}return this.intersectsSphere(vi)}intersectsSprite(A){return vi.center.set(0,0,0),vi.radius=.7071067811865476,vi.applyMatrix4(A.matrixWorld),this.intersectsSphere(vi)}intersectsSphere(A){const t=this.planes,n=A.center,i=-A.radius;for(let r=0;r<6;r++)if(t[r].distanceToPoint(n)0?A.max.x:A.min.x,ca.y=i.normal.y>0?A.max.y:A.min.y,ca.z=i.normal.z>0?A.max.z:A.min.z,i.distanceToPoint(ca)<0)return!1}return!0}containsPoint(A){const t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(A)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function vf(){let e=null,A=!1,t=null,n=null;function i(r,o){t(r,o),n=e.requestAnimationFrame(i)}return{start:function(){A!==!0&&t!==null&&(n=e.requestAnimationFrame(i),A=!0)},stop:function(){e.cancelAnimationFrame(n),A=!1},setAnimationLoop:function(r){t=r},setContext:function(r){e=r}}}function KS(e,A){const t=A.isWebGL2,n=new WeakMap;function i(g,I){const C=g.array,B=g.usage,E=e.createBuffer();e.bindBuffer(I,E),e.bufferData(I,C,B),g.onUploadCallback();let d;if(C instanceof Float32Array)d=e.FLOAT;else if(C instanceof Uint16Array)if(g.isFloat16BufferAttribute)if(t)d=e.HALF_FLOAT;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else d=e.UNSIGNED_SHORT;else if(C instanceof Int16Array)d=e.SHORT;else if(C instanceof Uint32Array)d=e.UNSIGNED_INT;else if(C instanceof Int32Array)d=e.INT;else if(C instanceof Int8Array)d=e.BYTE;else if(C instanceof Uint8Array)d=e.UNSIGNED_BYTE;else if(C instanceof Uint8ClampedArray)d=e.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+C);return{buffer:E,type:d,bytesPerElement:C.BYTES_PER_ELEMENT,version:g.version}}function r(g,I,C){const B=I.array,E=I.updateRange;e.bindBuffer(C,g),E.count===-1?e.bufferSubData(C,0,B):(t?e.bufferSubData(C,E.offset*B.BYTES_PER_ELEMENT,B,E.offset,E.count):e.bufferSubData(C,E.offset*B.BYTES_PER_ELEMENT,B.subarray(E.offset,E.offset+E.count)),E.count=-1),I.onUploadCallback()}function o(g){return g.isInterleavedBufferAttribute&&(g=g.data),n.get(g)}function s(g){g.isInterleavedBufferAttribute&&(g=g.data);const I=n.get(g);I&&(e.deleteBuffer(I.buffer),n.delete(g))}function a(g,I){if(g.isGLBufferAttribute){const B=n.get(g);(!B||B.version 0 + vec4 plane; + #pragma unroll_loop_start + for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; + } + #pragma unroll_loop_end + #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES + bool clipped = true; + #pragma unroll_loop_start + for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { + plane = clippingPlanes[ i ]; + clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; + } + #pragma unroll_loop_end + if ( clipped ) discard; + #endif +#endif`,iM=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; + uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; +#endif`,rM=`#if NUM_CLIPPING_PLANES > 0 + varying vec3 vClipPosition; +#endif`,oM=`#if NUM_CLIPPING_PLANES > 0 + vClipPosition = - mvPosition.xyz; +#endif`,sM=`#if defined( USE_COLOR_ALPHA ) + diffuseColor *= vColor; +#elif defined( USE_COLOR ) + diffuseColor.rgb *= vColor; +#endif`,aM=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) + varying vec3 vColor; +#endif`,gM=`#if defined( USE_COLOR_ALPHA ) + varying vec4 vColor; +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + varying vec3 vColor; +#endif`,IM=`#if defined( USE_COLOR_ALPHA ) + vColor = vec4( 1.0 ); +#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) + vColor = vec3( 1.0 ); +#endif +#ifdef USE_COLOR + vColor *= color; +#endif +#ifdef USE_INSTANCING_COLOR + vColor.xyz *= instanceColor.xyz; +#endif`,CM=`#define PI 3.141592653589793 +#define PI2 6.283185307179586 +#define PI_HALF 1.5707963267948966 +#define RECIPROCAL_PI 0.3183098861837907 +#define RECIPROCAL_PI2 0.15915494309189535 +#define EPSILON 1e-6 +#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +#define whiteComplement( a ) ( 1.0 - saturate( a ) ) +float pow2( const in float x ) { return x*x; } +vec3 pow2( const in vec3 x ) { return x*x; } +float pow3( const in float x ) { return x*x*x; } +float pow4( const in float x ) { float x2 = x*x; return x2*x2; } +float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } +float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); } +highp float rand( const in vec2 uv ) { + const highp float a = 12.9898, b = 78.233, c = 43758.5453; + highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); + return fract( sin( sn ) * c ); +} +#ifdef HIGH_PRECISION + float precisionSafeLength( vec3 v ) { return length( v ); } +#else + float precisionSafeLength( vec3 v ) { + float maxComponent = max3( abs( v ) ); + return length( v / maxComponent ) * maxComponent; + } +#endif +struct IncidentLight { + vec3 color; + vec3 direction; + bool visible; +}; +struct ReflectedLight { + vec3 directDiffuse; + vec3 directSpecular; + vec3 indirectDiffuse; + vec3 indirectSpecular; +}; +#ifdef USE_ALPHAHASH + varying vec3 vPosition; +#endif +vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); +} +vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { + return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); +} +mat3 transposeMat3( const in mat3 m ) { + mat3 tmp; + tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); + tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); + tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); + return tmp; +} +float luminance( const in vec3 rgb ) { + const vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 ); + return dot( weights, rgb ); +} +bool isPerspectiveMatrix( mat4 m ) { + return m[ 2 ][ 3 ] == - 1.0; +} +vec2 equirectUv( in vec3 dir ) { + float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; + float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + return vec2( u, v ); +} +vec3 BRDF_Lambert( const in vec3 diffuseColor ) { + return RECIPROCAL_PI * diffuseColor; +} +vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} +float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { + float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); + return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); +} // validated`,lM=`#ifdef ENVMAP_TYPE_CUBE_UV + #define cubeUV_minMipLevel 4.0 + #define cubeUV_minTileSize 16.0 + float getFace( vec3 direction ) { + vec3 absDirection = abs( direction ); + float face = - 1.0; + if ( absDirection.x > absDirection.z ) { + if ( absDirection.x > absDirection.y ) + face = direction.x > 0.0 ? 0.0 : 3.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } else { + if ( absDirection.z > absDirection.y ) + face = direction.z > 0.0 ? 2.0 : 5.0; + else + face = direction.y > 0.0 ? 1.0 : 4.0; + } + return face; + } + vec2 getUV( vec3 direction, float face ) { + vec2 uv; + if ( face == 0.0 ) { + uv = vec2( direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 1.0 ) { + uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); + } else if ( face == 2.0 ) { + uv = vec2( - direction.x, direction.y ) / abs( direction.z ); + } else if ( face == 3.0 ) { + uv = vec2( - direction.z, direction.y ) / abs( direction.x ); + } else if ( face == 4.0 ) { + uv = vec2( - direction.x, direction.z ) / abs( direction.y ); + } else { + uv = vec2( direction.x, direction.y ) / abs( direction.z ); + } + return 0.5 * ( uv + 1.0 ); + } + vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { + float face = getFace( direction ); + float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); + mipInt = max( mipInt, cubeUV_minMipLevel ); + float faceSize = exp2( mipInt ); + highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; + if ( face > 2.0 ) { + uv.y += faceSize; + face -= 3.0; + } + uv.x += face * faceSize; + uv.x += filterInt * 3.0 * cubeUV_minTileSize; + uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); + uv.x *= CUBEUV_TEXEL_WIDTH; + uv.y *= CUBEUV_TEXEL_HEIGHT; + #ifdef texture2DGradEXT + return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; + #else + return texture2D( envMap, uv ).rgb; + #endif + } + #define cubeUV_r0 1.0 + #define cubeUV_v0 0.339 + #define cubeUV_m0 - 2.0 + #define cubeUV_r1 0.8 + #define cubeUV_v1 0.276 + #define cubeUV_m1 - 1.0 + #define cubeUV_r4 0.4 + #define cubeUV_v4 0.046 + #define cubeUV_m4 2.0 + #define cubeUV_r5 0.305 + #define cubeUV_v5 0.016 + #define cubeUV_m5 3.0 + #define cubeUV_r6 0.21 + #define cubeUV_v6 0.0038 + #define cubeUV_m6 4.0 + float roughnessToMip( float roughness ) { + float mip = 0.0; + if ( roughness >= cubeUV_r1 ) { + mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0; + } else if ( roughness >= cubeUV_r4 ) { + mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1; + } else if ( roughness >= cubeUV_r5 ) { + mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4; + } else if ( roughness >= cubeUV_r6 ) { + mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5; + } else { + mip = - 2.0 * log2( 1.16 * roughness ); } + return mip; + } + vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { + float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP ); + float mipF = fract( mip ); + float mipInt = floor( mip ); + vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); + if ( mipF == 0.0 ) { + return vec4( color0, 1.0 ); + } else { + vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); + return vec4( mix( color0, color1, mipF ), 1.0 ); + } + } +#endif`,BM=`vec3 transformedNormal = objectNormal; +#ifdef USE_INSTANCING + mat3 m = mat3( instanceMatrix ); + transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) ); + transformedNormal = m * transformedNormal; +#endif +transformedNormal = normalMatrix * transformedNormal; +#ifdef FLIP_SIDED + transformedNormal = - transformedNormal; +#endif +#ifdef USE_TANGENT + vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #ifdef FLIP_SIDED + transformedTangent = - transformedTangent; + #endif +#endif`,EM=`#ifdef USE_DISPLACEMENTMAP + uniform sampler2D displacementMap; + uniform float displacementScale; + uniform float displacementBias; +#endif`,cM=`#ifdef USE_DISPLACEMENTMAP + transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); +#endif`,uM=`#ifdef USE_EMISSIVEMAP + vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); + totalEmissiveRadiance *= emissiveColor.rgb; +#endif`,QM=`#ifdef USE_EMISSIVEMAP + uniform sampler2D emissiveMap; +#endif`,hM="gl_FragColor = linearToOutputTexel( gl_FragColor );",dM=` +const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3( + vec3( 0.8224621, 0.177538, 0.0 ), + vec3( 0.0331941, 0.9668058, 0.0 ), + vec3( 0.0170827, 0.0723974, 0.9105199 ) +); +const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3( + vec3( 1.2249401, - 0.2249404, 0.0 ), + vec3( - 0.0420569, 1.0420571, 0.0 ), + vec3( - 0.0196376, - 0.0786361, 1.0982735 ) +); +vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) { + return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a ); +} +vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) { + return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a ); +} +vec4 LinearTransferOETF( in vec4 value ) { + return value; +} +vec4 sRGBTransferOETF( in vec4 value ) { + return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); +} +vec4 LinearToLinear( in vec4 value ) { + return value; +} +vec4 LinearTosRGB( in vec4 value ) { + return sRGBTransferOETF( value ); +}`,fM=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vec3 cameraToFrag; + if ( isOrthographic ) { + cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToFrag = normalize( vWorldPosition - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vec3 reflectVec = reflect( cameraToFrag, worldNormal ); + #else + vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); + #endif + #else + vec3 reflectVec = vReflect; + #endif + #ifdef ENVMAP_TYPE_CUBE + vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); + #else + vec4 envColor = vec4( 0.0 ); + #endif + #ifdef ENVMAP_BLENDING_MULTIPLY + outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_MIX ) + outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); + #elif defined( ENVMAP_BLENDING_ADD ) + outgoingLight += envColor.xyz * specularStrength * reflectivity; + #endif +#endif`,pM=`#ifdef USE_ENVMAP + uniform float envMapIntensity; + uniform float flipEnvMap; + #ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; + #else + uniform sampler2D envMap; + #endif + +#endif`,mM=`#ifdef USE_ENVMAP + uniform float reflectivity; + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + varying vec3 vWorldPosition; + uniform float refractionRatio; + #else + varying vec3 vReflect; + #endif +#endif`,wM=`#ifdef USE_ENVMAP + #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) + #define ENV_WORLDPOS + #endif + #ifdef ENV_WORLDPOS + + varying vec3 vWorldPosition; + #else + varying vec3 vReflect; + uniform float refractionRatio; + #endif +#endif`,yM=`#ifdef USE_ENVMAP + #ifdef ENV_WORLDPOS + vWorldPosition = worldPosition.xyz; + #else + vec3 cameraToVertex; + if ( isOrthographic ) { + cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); + } else { + cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); + } + vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + #ifdef ENVMAP_MODE_REFLECTION + vReflect = reflect( cameraToVertex, worldNormal ); + #else + vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); + #endif + #endif +#endif`,DM=`#ifdef USE_FOG + vFogDepth = - mvPosition.z; +#endif`,SM=`#ifdef USE_FOG + varying float vFogDepth; +#endif`,MM=`#ifdef USE_FOG + #ifdef FOG_EXP2 + float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); + #else + float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); + #endif + gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); +#endif`,RM=`#ifdef USE_FOG + uniform vec3 fogColor; + varying float vFogDepth; + #ifdef FOG_EXP2 + uniform float fogDensity; + #else + uniform float fogNear; + uniform float fogFar; + #endif +#endif`,vM=`#ifdef USE_GRADIENTMAP + uniform sampler2D gradientMap; +#endif +vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { + float dotNL = dot( normal, lightDirection ); + vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); + #ifdef USE_GRADIENTMAP + return vec3( texture2D( gradientMap, coord ).r ); + #else + vec2 fw = fwidth( coord ) * 0.5; + return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); + #endif +}`,NM=`#ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + reflectedLight.indirectDiffuse += lightMapIrradiance; +#endif`,FM=`#ifdef USE_LIGHTMAP + uniform sampler2D lightMap; + uniform float lightMapIntensity; +#endif`,LM=`LambertMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularStrength = specularStrength;`,xM=`varying vec3 vViewPosition; +struct LambertMaterial { + vec3 diffuseColor; + float specularStrength; +}; +void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Lambert +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,_M=`uniform bool receiveShadow; +uniform vec3 ambientLightColor; +#if defined( USE_LIGHT_PROBES ) + uniform vec3 lightProbe[ 9 ]; +#endif +vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { + float x = normal.x, y = normal.y, z = normal.z; + vec3 result = shCoefficients[ 0 ] * 0.886227; + result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; + result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; + result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; + result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; + result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; + result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); + result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; + result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); + return result; +} +vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); + return irradiance; +} +vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { + vec3 irradiance = ambientLightColor; + return irradiance; +} +float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { + #if defined ( LEGACY_LIGHTS ) + if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) { + return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent ); + } + return 1.0; + #else + float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); + if ( cutoffDistance > 0.0 ) { + distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); + } + return distanceFalloff; + #endif +} +float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { + return smoothstep( coneCosine, penumbraCosine, angleCosine ); +} +#if NUM_DIR_LIGHTS > 0 + struct DirectionalLight { + vec3 direction; + vec3 color; + }; + uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; + void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) { + light.color = directionalLight.color; + light.direction = directionalLight.direction; + light.visible = true; + } +#endif +#if NUM_POINT_LIGHTS > 0 + struct PointLight { + vec3 position; + vec3 color; + float distance; + float decay; + }; + uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; + void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = pointLight.position - geometryPosition; + light.direction = normalize( lVector ); + float lightDistance = length( lVector ); + light.color = pointLight.color; + light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } +#endif +#if NUM_SPOT_LIGHTS > 0 + struct SpotLight { + vec3 position; + vec3 direction; + vec3 color; + float distance; + float decay; + float coneCos; + float penumbraCos; + }; + uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; + void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) { + vec3 lVector = spotLight.position - geometryPosition; + light.direction = normalize( lVector ); + float angleCos = dot( light.direction, spotLight.direction ); + float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); + if ( spotAttenuation > 0.0 ) { + float lightDistance = length( lVector ); + light.color = spotLight.color * spotAttenuation; + light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); + light.visible = ( light.color != vec3( 0.0 ) ); + } else { + light.color = vec3( 0.0 ); + light.visible = false; + } + } +#endif +#if NUM_RECT_AREA_LIGHTS > 0 + struct RectAreaLight { + vec3 color; + vec3 position; + vec3 halfWidth; + vec3 halfHeight; + }; + uniform sampler2D ltc_1; uniform sampler2D ltc_2; + uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; +#endif +#if NUM_HEMI_LIGHTS > 0 + struct HemisphereLight { + vec3 direction; + vec3 skyColor; + vec3 groundColor; + }; + uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; + vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { + float dotNL = dot( normal, hemiLight.direction ); + float hemiDiffuseWeight = 0.5 * dotNL + 0.5; + vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); + return irradiance; + } +#endif`,UM=`#ifdef USE_ENVMAP + vec3 getIBLIrradiance( const in vec3 normal ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 ); + return PI * envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 reflectVec = reflect( - viewDir, normal ); + reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); + reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); + vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness ); + return envMapColor.rgb * envMapIntensity; + #else + return vec3( 0.0 ); + #endif + } + #ifdef USE_ANISOTROPY + vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) { + #ifdef ENVMAP_TYPE_CUBE_UV + vec3 bentNormal = cross( bitangent, viewDir ); + bentNormal = normalize( cross( bentNormal, bitangent ) ); + bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) ); + return getIBLRadiance( viewDir, bentNormal, roughness ); + #else + return vec3( 0.0 ); + #endif + } + #endif +#endif`,GM=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,TM=`varying vec3 vViewPosition; +struct ToonMaterial { + vec3 diffuseColor; +}; +void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_Toon +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,kM=`BlinnPhongMaterial material; +material.diffuseColor = diffuseColor.rgb; +material.specularColor = specular; +material.specularShininess = shininess; +material.specularStrength = specularStrength;`,HM=`varying vec3 vViewPosition; +struct BlinnPhongMaterial { + vec3 diffuseColor; + vec3 specularColor; + float specularShininess; + float specularStrength; +}; +void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); + reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength; +} +void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +#define RE_Direct RE_Direct_BlinnPhong +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,bM=`PhysicalMaterial material; +material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); +vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); +float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); +material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; +material.roughness = min( material.roughness, 1.0 ); +#ifdef IOR + material.ior = ior; + #ifdef USE_SPECULAR + float specularIntensityFactor = specularIntensity; + vec3 specularColorFactor = specularColor; + #ifdef USE_SPECULAR_COLORMAP + specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a; + #endif + material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); + #else + float specularIntensityFactor = 1.0; + vec3 specularColorFactor = vec3( 1.0 ); + material.specularF90 = 1.0; + #endif + material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); +#else + material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); + material.specularF90 = 1.0; +#endif +#ifdef USE_CLEARCOAT + material.clearcoat = clearcoat; + material.clearcoatRoughness = clearcoatRoughness; + material.clearcoatF0 = vec3( 0.04 ); + material.clearcoatF90 = 1.0; + #ifdef USE_CLEARCOATMAP + material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x; + #endif + #ifdef USE_CLEARCOAT_ROUGHNESSMAP + material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y; + #endif + material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); + material.clearcoatRoughness += geometryRoughness; + material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); +#endif +#ifdef USE_IRIDESCENCE + material.iridescence = iridescence; + material.iridescenceIOR = iridescenceIOR; + #ifdef USE_IRIDESCENCEMAP + material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r; + #endif + #ifdef USE_IRIDESCENCE_THICKNESSMAP + material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum; + #else + material.iridescenceThickness = iridescenceThicknessMaximum; + #endif +#endif +#ifdef USE_SHEEN + material.sheenColor = sheenColor; + #ifdef USE_SHEEN_COLORMAP + material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb; + #endif + material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); + #ifdef USE_SHEEN_ROUGHNESSMAP + material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a; + #endif +#endif +#ifdef USE_ANISOTROPY + #ifdef USE_ANISOTROPYMAP + mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x ); + vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb; + vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b; + #else + vec2 anisotropyV = anisotropyVector; + #endif + material.anisotropy = length( anisotropyV ); + anisotropyV /= material.anisotropy; + material.anisotropy = saturate( material.anisotropy ); + material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); + material.anisotropyT = tbn[ 0 ] * anisotropyV.x - tbn[ 1 ] * anisotropyV.y; + material.anisotropyB = tbn[ 1 ] * anisotropyV.x + tbn[ 0 ] * anisotropyV.y; +#endif`,OM=`struct PhysicalMaterial { + vec3 diffuseColor; + float roughness; + vec3 specularColor; + float specularF90; + #ifdef USE_CLEARCOAT + float clearcoat; + float clearcoatRoughness; + vec3 clearcoatF0; + float clearcoatF90; + #endif + #ifdef USE_IRIDESCENCE + float iridescence; + float iridescenceIOR; + float iridescenceThickness; + vec3 iridescenceFresnel; + vec3 iridescenceF0; + #endif + #ifdef USE_SHEEN + vec3 sheenColor; + float sheenRoughness; + #endif + #ifdef IOR + float ior; + #endif + #ifdef USE_TRANSMISSION + float transmission; + float transmissionAlpha; + float thickness; + float attenuationDistance; + vec3 attenuationColor; + #endif + #ifdef USE_ANISOTROPY + float anisotropy; + float alphaT; + vec3 anisotropyT; + vec3 anisotropyB; + #endif +}; +vec3 clearcoatSpecular = vec3( 0.0 ); +vec3 sheenSpecular = vec3( 0.0 ); +vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) { + float x = clamp( 1.0 - dotVH, 0.0, 1.0 ); + float x2 = x * x; + float x5 = clamp( x * x2 * x2, 0.0, 0.9999 ); + return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 ); +} +float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) { + float a2 = pow2( alpha ); + float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) ); + float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) ); + return 0.5 / max( gv + gl, EPSILON ); +} +float D_GGX( const in float alpha, const in float dotNH ) { + float a2 = pow2( alpha ); + float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0; + return RECIPROCAL_PI * a2 / pow2( denom ); +} +#ifdef USE_ANISOTROPY + float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) { + float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) ); + float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) ); + float v = 0.5 / ( gv + gl ); + return saturate(v); + } + float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) { + float a2 = alphaT * alphaB; + highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH ); + highp float v2 = dot( v, v ); + float w2 = a2 / v2; + return RECIPROCAL_PI * a2 * pow2 ( w2 ); + } +#endif +#ifdef USE_CLEARCOAT + vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) { + vec3 f0 = material.clearcoatF0; + float f90 = material.clearcoatF90; + float roughness = material.clearcoatRoughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + return F * ( V * D ); + } +#endif +vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) { + vec3 f0 = material.specularColor; + float f90 = material.specularF90; + float roughness = material.roughness; + float alpha = pow2( roughness ); + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float dotVH = saturate( dot( viewDir, halfDir ) ); + vec3 F = F_Schlick( f0, f90, dotVH ); + #ifdef USE_IRIDESCENCE + F = mix( F, material.iridescenceFresnel, material.iridescence ); + #endif + #ifdef USE_ANISOTROPY + float dotTL = dot( material.anisotropyT, lightDir ); + float dotTV = dot( material.anisotropyT, viewDir ); + float dotTH = dot( material.anisotropyT, halfDir ); + float dotBL = dot( material.anisotropyB, lightDir ); + float dotBV = dot( material.anisotropyB, viewDir ); + float dotBH = dot( material.anisotropyB, halfDir ); + float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL ); + float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH ); + #else + float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV ); + float D = D_GGX( alpha, dotNH ); + #endif + return F * ( V * D ); +} +vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) { + const float LUT_SIZE = 64.0; + const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE; + const float LUT_BIAS = 0.5 / LUT_SIZE; + float dotNV = saturate( dot( N, V ) ); + vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) ); + uv = uv * LUT_SCALE + LUT_BIAS; + return uv; +} +float LTC_ClippedSphereFormFactor( const in vec3 f ) { + float l = length( f ); + return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 ); +} +vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) { + float x = dot( v1, v2 ); + float y = abs( x ); + float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y; + float b = 3.4175940 + ( 4.1616724 + y ) * y; + float v = a / b; + float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; + return cross( v1, v2 ) * theta_sintheta; +} +vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { + vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; + vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; + vec3 lightNormal = cross( v1, v2 ); + if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); + vec3 T1, T2; + T1 = normalize( V - N * dot( V, N ) ); + T2 = - cross( N, T1 ); + mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); + vec3 coords[ 4 ]; + coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); + coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); + coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); + coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); + coords[ 0 ] = normalize( coords[ 0 ] ); + coords[ 1 ] = normalize( coords[ 1 ] ); + coords[ 2 ] = normalize( coords[ 2 ] ); + coords[ 3 ] = normalize( coords[ 3 ] ); + vec3 vectorFormFactor = vec3( 0.0 ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); + vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); + float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); + return vec3( result ); +} +#if defined( USE_SHEEN ) +float D_Charlie( float roughness, float dotNH ) { + float alpha = pow2( roughness ); + float invAlpha = 1.0 / alpha; + float cos2h = dotNH * dotNH; + float sin2h = max( 1.0 - cos2h, 0.0078125 ); + return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); +} +float V_Neubelt( float dotNV, float dotNL ) { + return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); +} +vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { + vec3 halfDir = normalize( lightDir + viewDir ); + float dotNL = saturate( dot( normal, lightDir ) ); + float dotNV = saturate( dot( normal, viewDir ) ); + float dotNH = saturate( dot( normal, halfDir ) ); + float D = D_Charlie( sheenRoughness, dotNH ); + float V = V_Neubelt( dotNV, dotNL ); + return sheenColor * ( D * V ); +} +#endif +float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + float r2 = roughness * roughness; + float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; + float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; + float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); + return saturate( DG * RECIPROCAL_PI ); +} +vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { + float dotNV = saturate( dot( normal, viewDir ) ); + const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); + const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); + vec4 r = roughness * c0 + c1; + float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; + vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; + return fab; +} +vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { + vec2 fab = DFGApprox( normal, viewDir, roughness ); + return specularColor * fab.x + specularF90 * fab.y; +} +#ifdef USE_IRIDESCENCE +void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#else +void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { +#endif + vec2 fab = DFGApprox( normal, viewDir, roughness ); + #ifdef USE_IRIDESCENCE + vec3 Fr = mix( specularColor, iridescenceF0, iridescence ); + #else + vec3 Fr = specularColor; + #endif + vec3 FssEss = Fr * fab.x + specularF90 * fab.y; + float Ess = fab.x + fab.y; + float Ems = 1.0 - Ess; + vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); + singleScatter += FssEss; + multiScatter += Fms * Ems; +} +#if NUM_RECT_AREA_LIGHTS > 0 + void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + vec3 normal = geometryNormal; + vec3 viewDir = geometryViewDir; + vec3 position = geometryPosition; + vec3 lightPos = rectAreaLight.position; + vec3 halfWidth = rectAreaLight.halfWidth; + vec3 halfHeight = rectAreaLight.halfHeight; + vec3 lightColor = rectAreaLight.color; + float roughness = material.roughness; + vec3 rectCoords[ 4 ]; + rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; + rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; + rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; + vec2 uv = LTC_Uv( normal, viewDir, roughness ); + vec4 t1 = texture2D( ltc_1, uv ); + vec4 t2 = texture2D( ltc_2, uv ); + mat3 mInv = mat3( + vec3( t1.x, 0, t1.y ), + vec3( 0, 1, 0 ), + vec3( t1.z, 0, t1.w ) + ); + vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); + reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); + reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); + } +#endif +void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + float dotNL = saturate( dot( geometryNormal, directLight.direction ) ); + vec3 irradiance = dotNL * directLight.color; + #ifdef USE_CLEARCOAT + float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) ); + vec3 ccIrradiance = dotNLcc * directLight.color; + clearcoatSpecular += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material ); + #endif + #ifdef USE_SHEEN + sheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness ); + #endif + reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material ); + reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { + reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); +} +void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { + #ifdef USE_CLEARCOAT + clearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); + #endif + #ifdef USE_SHEEN + sheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness ); + #endif + vec3 singleScattering = vec3( 0.0 ); + vec3 multiScattering = vec3( 0.0 ); + vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; + #ifdef USE_IRIDESCENCE + computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering ); + #else + computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); + #endif + vec3 totalScattering = singleScattering + multiScattering; + vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) ); + reflectedLight.indirectSpecular += radiance * singleScattering; + reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; + reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; +} +#define RE_Direct RE_Direct_Physical +#define RE_Direct_RectArea RE_Direct_RectArea_Physical +#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical +#define RE_IndirectSpecular RE_IndirectSpecular_Physical +float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { + return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); +}`,YM=` +vec3 geometryPosition = - vViewPosition; +vec3 geometryNormal = normal; +vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); +vec3 geometryClearcoatNormal; +#ifdef USE_CLEARCOAT + geometryClearcoatNormal = clearcoatNormal; +#endif +#ifdef USE_IRIDESCENCE + float dotNVi = saturate( dot( normal, geometryViewDir ) ); + if ( material.iridescenceThickness == 0.0 ) { + material.iridescence = 0.0; + } else { + material.iridescence = saturate( material.iridescence ); + } + if ( material.iridescence > 0.0 ) { + material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor ); + material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi ); + } +#endif +IncidentLight directLight; +#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) + PointLight pointLight; + #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { + pointLight = pointLights[ i ]; + getPointLightInfo( pointLight, geometryPosition, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) + pointLightShadow = pointLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) + SpotLight spotLight; + vec4 spotColor; + vec3 spotLightCoord; + bool inSpotLightMap; + #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { + spotLight = spotLights[ i ]; + getSpotLightInfo( spotLight, geometryPosition, directLight ); + #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX + #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS + #else + #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS ) + #endif + #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS ) + spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w; + inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) ); + spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy ); + directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color; + #endif + #undef SPOT_LIGHT_MAP_INDEX + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + spotLightShadow = spotLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) + DirectionalLight directionalLight; + #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLightShadow; + #endif + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { + directionalLight = directionalLights[ i ]; + getDirectionalLightInfo( directionalLight, directLight ); + #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) + directionalLightShadow = directionalLightShadows[ i ]; + directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + #endif + RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) + RectAreaLight rectAreaLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { + rectAreaLight = rectAreaLights[ i ]; + RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); + } + #pragma unroll_loop_end +#endif +#if defined( RE_IndirectDiffuse ) + vec3 iblIrradiance = vec3( 0.0 ); + vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); + #if defined( USE_LIGHT_PROBES ) + irradiance += getLightProbeIrradiance( lightProbe, geometryNormal ); + #endif + #if ( NUM_HEMI_LIGHTS > 0 ) + #pragma unroll_loop_start + for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { + irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal ); + } + #pragma unroll_loop_end + #endif +#endif +#if defined( RE_IndirectSpecular ) + vec3 radiance = vec3( 0.0 ); + vec3 clearcoatRadiance = vec3( 0.0 ); +#endif`,KM=`#if defined( RE_IndirectDiffuse ) + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; + irradiance += lightMapIrradiance; + #endif + #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) + iblIrradiance += getIBLIrradiance( geometryNormal ); + #endif +#endif +#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) + #ifdef USE_ANISOTROPY + radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy ); + #else + radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness ); + #endif + #ifdef USE_CLEARCOAT + clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); + #endif +#endif`,PM=`#if defined( RE_IndirectDiffuse ) + RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif +#if defined( RE_IndirectSpecular ) + RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); +#endif`,JM=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) + gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; +#endif`,WM=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) + uniform float logDepthBufFC; + varying float vFragDepth; + varying float vIsPerspective; +#endif`,zM=`#ifdef USE_LOGDEPTHBUF + #ifdef USE_LOGDEPTHBUF_EXT + varying float vFragDepth; + varying float vIsPerspective; + #else + uniform float logDepthBufFC; + #endif +#endif`,qM=`#ifdef USE_LOGDEPTHBUF + #ifdef USE_LOGDEPTHBUF_EXT + vFragDepth = 1.0 + gl_Position.w; + vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); + #else + if ( isPerspectiveMatrix( projectionMatrix ) ) { + gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0; + gl_Position.z *= gl_Position.w; + } + #endif +#endif`,VM=`#ifdef USE_MAP + vec4 sampledDiffuseColor = texture2D( map, vMapUv ); + #ifdef DECODE_VIDEO_TEXTURE + sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); + + #endif + diffuseColor *= sampledDiffuseColor; +#endif`,jM=`#ifdef USE_MAP + uniform sampler2D map; +#endif`,XM=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + #if defined( USE_POINTS_UV ) + vec2 uv = vUv; + #else + vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; + #endif +#endif +#ifdef USE_MAP + diffuseColor *= texture2D( map, uv ); +#endif +#ifdef USE_ALPHAMAP + diffuseColor.a *= texture2D( alphaMap, uv ).g; +#endif`,ZM=`#if defined( USE_POINTS_UV ) + varying vec2 vUv; +#else + #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) + uniform mat3 uvTransform; + #endif +#endif +#ifdef USE_MAP + uniform sampler2D map; +#endif +#ifdef USE_ALPHAMAP + uniform sampler2D alphaMap; +#endif`,$M=`float metalnessFactor = metalness; +#ifdef USE_METALNESSMAP + vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); + metalnessFactor *= texelMetalness.b; +#endif`,AR=`#ifdef USE_METALNESSMAP + uniform sampler2D metalnessMap; +#endif`,eR=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE ) + vColor *= morphTargetBaseInfluence; + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + #if defined( USE_COLOR_ALPHA ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; + #elif defined( USE_COLOR ) + if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; + #endif + } +#endif`,tR=`#ifdef USE_MORPHNORMALS + objectNormal *= morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; + } + #else + objectNormal += morphNormal0 * morphTargetInfluences[ 0 ]; + objectNormal += morphNormal1 * morphTargetInfluences[ 1 ]; + objectNormal += morphNormal2 * morphTargetInfluences[ 2 ]; + objectNormal += morphNormal3 * morphTargetInfluences[ 3 ]; + #endif +#endif`,nR=`#ifdef USE_MORPHTARGETS + uniform float morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; + uniform sampler2DArray morphTargetsTexture; + uniform ivec2 morphTargetsTextureSize; + vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { + int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; + int y = texelIndex / morphTargetsTextureSize.x; + int x = texelIndex - y * morphTargetsTextureSize.x; + ivec3 morphUV = ivec3( x, y, morphTargetIndex ); + return texelFetch( morphTargetsTexture, morphUV, 0 ); + } + #else + #ifndef USE_MORPHNORMALS + uniform float morphTargetInfluences[ 8 ]; + #else + uniform float morphTargetInfluences[ 4 ]; + #endif + #endif +#endif`,iR=`#ifdef USE_MORPHTARGETS + transformed *= morphTargetBaseInfluence; + #ifdef MORPHTARGETS_TEXTURE + for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { + if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; + } + #else + transformed += morphTarget0 * morphTargetInfluences[ 0 ]; + transformed += morphTarget1 * morphTargetInfluences[ 1 ]; + transformed += morphTarget2 * morphTargetInfluences[ 2 ]; + transformed += morphTarget3 * morphTargetInfluences[ 3 ]; + #ifndef USE_MORPHNORMALS + transformed += morphTarget4 * morphTargetInfluences[ 4 ]; + transformed += morphTarget5 * morphTargetInfluences[ 5 ]; + transformed += morphTarget6 * morphTargetInfluences[ 6 ]; + transformed += morphTarget7 * morphTargetInfluences[ 7 ]; + #endif + #endif +#endif`,rR=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#ifdef FLAT_SHADED + vec3 fdx = dFdx( vViewPosition ); + vec3 fdy = dFdy( vViewPosition ); + vec3 normal = normalize( cross( fdx, fdy ) ); +#else + vec3 normal = normalize( vNormal ); + #ifdef DOUBLE_SIDED + normal *= faceDirection; + #endif +#endif +#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) + #ifdef USE_TANGENT + mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn = getTangentFrame( - vViewPosition, normal, + #if defined( USE_NORMALMAP ) + vNormalMapUv + #elif defined( USE_CLEARCOAT_NORMALMAP ) + vClearcoatNormalMapUv + #else + vUv + #endif + ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn[0] *= faceDirection; + tbn[1] *= faceDirection; + #endif +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + #ifdef USE_TANGENT + mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal ); + #else + mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv ); + #endif + #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED ) + tbn2[0] *= faceDirection; + tbn2[1] *= faceDirection; + #endif +#endif +vec3 nonPerturbedNormal = normal;`,oR=`#ifdef USE_NORMALMAP_OBJECTSPACE + normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + #ifdef FLIP_SIDED + normal = - normal; + #endif + #ifdef DOUBLE_SIDED + normal = normal * faceDirection; + #endif + normal = normalize( normalMatrix * normal ); +#elif defined( USE_NORMALMAP_TANGENTSPACE ) + vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; + mapN.xy *= normalScale; + normal = normalize( tbn * mapN ); +#elif defined( USE_BUMPMAP ) + normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); +#endif`,sR=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,aR=`#ifndef FLAT_SHADED + varying vec3 vNormal; + #ifdef USE_TANGENT + varying vec3 vTangent; + varying vec3 vBitangent; + #endif +#endif`,gR=`#ifndef FLAT_SHADED + vNormal = normalize( transformedNormal ); + #ifdef USE_TANGENT + vTangent = normalize( transformedTangent ); + vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); + #endif +#endif`,IR=`#ifdef USE_NORMALMAP + uniform sampler2D normalMap; + uniform vec2 normalScale; +#endif +#ifdef USE_NORMALMAP_OBJECTSPACE + uniform mat3 normalMatrix; +#endif +#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) ) + mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) { + vec3 q0 = dFdx( eye_pos.xyz ); + vec3 q1 = dFdy( eye_pos.xyz ); + vec2 st0 = dFdx( uv.st ); + vec2 st1 = dFdy( uv.st ); + vec3 N = surf_norm; + vec3 q1perp = cross( q1, N ); + vec3 q0perp = cross( N, q0 ); + vec3 T = q1perp * st0.x + q0perp * st1.x; + vec3 B = q1perp * st0.y + q0perp * st1.y; + float det = max( dot( T, T ), dot( B, B ) ); + float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); + return mat3( T * scale, B * scale, N ); + } +#endif`,CR=`#ifdef USE_CLEARCOAT + vec3 clearcoatNormal = nonPerturbedNormal; +#endif`,lR=`#ifdef USE_CLEARCOAT_NORMALMAP + vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; + clearcoatMapN.xy *= clearcoatNormalScale; + clearcoatNormal = normalize( tbn2 * clearcoatMapN ); +#endif`,BR=`#ifdef USE_CLEARCOATMAP + uniform sampler2D clearcoatMap; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform sampler2D clearcoatNormalMap; + uniform vec2 clearcoatNormalScale; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform sampler2D clearcoatRoughnessMap; +#endif`,ER=`#ifdef USE_IRIDESCENCEMAP + uniform sampler2D iridescenceMap; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform sampler2D iridescenceThicknessMap; +#endif`,cR=`#ifdef OPAQUE +diffuseColor.a = 1.0; +#endif +#ifdef USE_TRANSMISSION +diffuseColor.a *= material.transmissionAlpha; +#endif +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,uR=`vec3 packNormalToRGB( const in vec3 normal ) { + return normalize( normal ) * 0.5 + 0.5; +} +vec3 unpackRGBToNormal( const in vec3 rgb ) { + return 2.0 * rgb.xyz - 1.0; +} +const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.; +const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. ); +const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. ); +const float ShiftRight8 = 1. / 256.; +vec4 packDepthToRGBA( const in float v ) { + vec4 r = vec4( fract( v * PackFactors ), v ); + r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale; +} +float unpackRGBAToDepth( const in vec4 v ) { + return dot( v, UnpackFactors ); +} +vec2 packDepthToRG( in highp float v ) { + return packDepthToRGBA( v ).yx; +} +float unpackRGToDepth( const in highp vec2 v ) { + return unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) ); +} +vec4 pack2HalfToRGBA( vec2 v ) { + vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); + return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); +} +vec2 unpackRGBATo2Half( vec4 v ) { + return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); +} +float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { + return ( viewZ + near ) / ( near - far ); +} +float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) { + return depth * ( near - far ) - near; +} +float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { + return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); +} +float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { + return ( near * far ) / ( ( far - near ) * depth - far ); +}`,QR=`#ifdef PREMULTIPLIED_ALPHA + gl_FragColor.rgb *= gl_FragColor.a; +#endif`,hR=`vec4 mvPosition = vec4( transformed, 1.0 ); +#ifdef USE_INSTANCING + mvPosition = instanceMatrix * mvPosition; +#endif +mvPosition = modelViewMatrix * mvPosition; +gl_Position = projectionMatrix * mvPosition;`,dR=`#ifdef DITHERING + gl_FragColor.rgb = dithering( gl_FragColor.rgb ); +#endif`,fR=`#ifdef DITHERING + vec3 dithering( vec3 color ) { + float grid_position = rand( gl_FragCoord.xy ); + vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); + dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); + return color + dither_shift_RGB; + } +#endif`,pR=`float roughnessFactor = roughness; +#ifdef USE_ROUGHNESSMAP + vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); + roughnessFactor *= texelRoughness.g; +#endif`,mR=`#ifdef USE_ROUGHNESSMAP + uniform sampler2D roughnessMap; +#endif`,wR=`#if NUM_SPOT_LIGHT_COORDS > 0 + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#if NUM_SPOT_LIGHT_MAPS > 0 + uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif + float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { + return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); + } + vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { + return unpackRGBATo2Half( texture2D( shadow, uv ) ); + } + float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ + float occlusion = 1.0; + vec2 distribution = texture2DDistribution( shadow, uv ); + float hard_shadow = step( compare , distribution.x ); + if (hard_shadow != 1.0 ) { + float distance = compare - distribution.x ; + float variance = max( 0.00000, distribution.y * distribution.y ); + float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); + } + return occlusion; + } + float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) { + float shadow = 1.0; + shadowCoord.xyz /= shadowCoord.w; + shadowCoord.z += shadowBias; + bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0; + bool frustumTest = inFrustum && shadowCoord.z <= 1.0; + if ( frustumTest ) { + #if defined( SHADOWMAP_TYPE_PCF ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx0 = - texelSize.x * shadowRadius; + float dy0 = - texelSize.y * shadowRadius; + float dx1 = + texelSize.x * shadowRadius; + float dy1 = + texelSize.y * shadowRadius; + float dx2 = dx0 / 2.0; + float dy2 = dy0 / 2.0; + float dx3 = dx1 / 2.0; + float dy3 = dy1 / 2.0; + shadow = ( + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) + ) * ( 1.0 / 17.0 ); + #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) + vec2 texelSize = vec2( 1.0 ) / shadowMapSize; + float dx = texelSize.x; + float dy = texelSize.y; + vec2 uv = shadowCoord.xy; + vec2 f = fract( uv * shadowMapSize + 0.5 ); + uv -= f * texelSize; + shadow = ( + texture2DCompare( shadowMap, uv, shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), + f.x ) + + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), + f.y ) + + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), + f.x ), + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), + texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), + f.x ), + f.y ) + ) * ( 1.0 / 9.0 ); + #elif defined( SHADOWMAP_TYPE_VSM ) + shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); + #else + shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); + #endif + } + return shadow; + } + vec2 cubeToUV( vec3 v, float texelSizeY ) { + vec3 absV = abs( v ); + float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); + absV *= scaleToCube; + v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); + vec2 planar = v.xy; + float almostATexel = 1.5 * texelSizeY; + float almostOne = 1.0 - almostATexel; + if ( absV.z >= almostOne ) { + if ( v.z > 0.0 ) + planar.x = 4.0 - v.x; + } else if ( absV.x >= almostOne ) { + float signX = sign( v.x ); + planar.x = v.z * signX + 2.0 * signX; + } else if ( absV.y >= almostOne ) { + float signY = sign( v.y ); + planar.x = v.x + 2.0 * signY + 2.0; + planar.y = v.z * signY - 2.0; + } + return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); + } + float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { + vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); + vec3 lightToPosition = shadowCoord.xyz; + float dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; + vec3 bd3D = normalize( lightToPosition ); + #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) + vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; + return ( + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) + ) * ( 1.0 / 9.0 ); + #else + return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); + #endif + } +#endif`,yR=`#if NUM_SPOT_LIGHT_COORDS > 0 + uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; + varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; +#endif +#ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; + varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; + struct DirectionalLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + struct SpotLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + }; + uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; + varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; + struct PointLightShadow { + float shadowBias; + float shadowNormalBias; + float shadowRadius; + vec2 shadowMapSize; + float shadowCameraNear; + float shadowCameraFar; + }; + uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; + #endif +#endif`,DR=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) + vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); + vec4 shadowWorldPosition; +#endif +#if defined( USE_SHADOWMAP ) + #if NUM_DIR_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); + vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); + vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end + #endif +#endif +#if NUM_SPOT_LIGHT_COORDS > 0 + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) { + shadowWorldPosition = worldPosition; + #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) + shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias; + #endif + vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; + } + #pragma unroll_loop_end +#endif`,SR=`float getShadowMask() { + float shadow = 1.0; + #ifdef USE_SHADOWMAP + #if NUM_DIR_LIGHT_SHADOWS > 0 + DirectionalLightShadow directionalLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { + directionalLight = directionalLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_SPOT_LIGHT_SHADOWS > 0 + SpotLightShadow spotLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { + spotLight = spotLightShadows[ i ]; + shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0; + } + #pragma unroll_loop_end + #endif + #if NUM_POINT_LIGHT_SHADOWS > 0 + PointLightShadow pointLight; + #pragma unroll_loop_start + for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { + pointLight = pointLightShadows[ i ]; + shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; + } + #pragma unroll_loop_end + #endif + #endif + return shadow; +}`,MR=`#ifdef USE_SKINNING + mat4 boneMatX = getBoneMatrix( skinIndex.x ); + mat4 boneMatY = getBoneMatrix( skinIndex.y ); + mat4 boneMatZ = getBoneMatrix( skinIndex.z ); + mat4 boneMatW = getBoneMatrix( skinIndex.w ); +#endif`,RR=`#ifdef USE_SKINNING + uniform mat4 bindMatrix; + uniform mat4 bindMatrixInverse; + uniform highp sampler2D boneTexture; + uniform int boneTextureSize; + mat4 getBoneMatrix( const in float i ) { + float j = i * 4.0; + float x = mod( j, float( boneTextureSize ) ); + float y = floor( j / float( boneTextureSize ) ); + float dx = 1.0 / float( boneTextureSize ); + float dy = 1.0 / float( boneTextureSize ); + y = dy * ( y + 0.5 ); + vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) ); + vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) ); + vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) ); + vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) ); + mat4 bone = mat4( v1, v2, v3, v4 ); + return bone; + } +#endif`,vR=`#ifdef USE_SKINNING + vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); + vec4 skinned = vec4( 0.0 ); + skinned += boneMatX * skinVertex * skinWeight.x; + skinned += boneMatY * skinVertex * skinWeight.y; + skinned += boneMatZ * skinVertex * skinWeight.z; + skinned += boneMatW * skinVertex * skinWeight.w; + transformed = ( bindMatrixInverse * skinned ).xyz; +#endif`,NR=`#ifdef USE_SKINNING + mat4 skinMatrix = mat4( 0.0 ); + skinMatrix += skinWeight.x * boneMatX; + skinMatrix += skinWeight.y * boneMatY; + skinMatrix += skinWeight.z * boneMatZ; + skinMatrix += skinWeight.w * boneMatW; + skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; + objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; + #ifdef USE_TANGENT + objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; + #endif +#endif`,FR=`float specularStrength; +#ifdef USE_SPECULARMAP + vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); + specularStrength = texelSpecular.r; +#else + specularStrength = 1.0; +#endif`,LR=`#ifdef USE_SPECULARMAP + uniform sampler2D specularMap; +#endif`,xR=`#if defined( TONE_MAPPING ) + gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); +#endif`,_R=`#ifndef saturate +#define saturate( a ) clamp( a, 0.0, 1.0 ) +#endif +uniform float toneMappingExposure; +vec3 LinearToneMapping( vec3 color ) { + return saturate( toneMappingExposure * color ); +} +vec3 ReinhardToneMapping( vec3 color ) { + color *= toneMappingExposure; + return saturate( color / ( vec3( 1.0 ) + color ) ); +} +vec3 OptimizedCineonToneMapping( vec3 color ) { + color *= toneMappingExposure; + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} +vec3 ACESFilmicToneMapping( vec3 color ) { + const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) + ); + const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) + ); + color *= toneMappingExposure / 0.6; + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + return saturate( color ); +} +vec3 CustomToneMapping( vec3 color ) { return color; }`,UR=`#ifdef USE_TRANSMISSION + material.transmission = transmission; + material.transmissionAlpha = 1.0; + material.thickness = thickness; + material.attenuationDistance = attenuationDistance; + material.attenuationColor = attenuationColor; + #ifdef USE_TRANSMISSIONMAP + material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r; + #endif + #ifdef USE_THICKNESSMAP + material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g; + #endif + vec3 pos = vWorldPosition; + vec3 v = normalize( cameraPosition - pos ); + vec3 n = inverseTransformDirection( normal, viewMatrix ); + vec4 transmitted = getIBLVolumeRefraction( + n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90, + pos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness, + material.attenuationColor, material.attenuationDistance ); + material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); + totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); +#endif`,GR=`#ifdef USE_TRANSMISSION + uniform float transmission; + uniform float thickness; + uniform float attenuationDistance; + uniform vec3 attenuationColor; + #ifdef USE_TRANSMISSIONMAP + uniform sampler2D transmissionMap; + #endif + #ifdef USE_THICKNESSMAP + uniform sampler2D thicknessMap; + #endif + uniform vec2 transmissionSamplerSize; + uniform sampler2D transmissionSamplerMap; + uniform mat4 modelMatrix; + uniform mat4 projectionMatrix; + varying vec3 vWorldPosition; + float w0( float a ) { + return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 ); + } + float w1( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 ); + } + float w2( float a ){ + return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 ); + } + float w3( float a ) { + return ( 1.0 / 6.0 ) * ( a * a * a ); + } + float g0( float a ) { + return w0( a ) + w1( a ); + } + float g1( float a ) { + return w2( a ) + w3( a ); + } + float h0( float a ) { + return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) ); + } + float h1( float a ) { + return 1.0 + w3( a ) / ( w2( a ) + w3( a ) ); + } + vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) { + uv = uv * texelSize.zw + 0.5; + vec2 iuv = floor( uv ); + vec2 fuv = fract( uv ); + float g0x = g0( fuv.x ); + float g1x = g1( fuv.x ); + float h0x = h0( fuv.x ); + float h1x = h1( fuv.x ); + float h0y = h0( fuv.y ); + float h1y = h1( fuv.y ); + vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy; + vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy; + return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) + + g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) ); + } + vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) { + vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) ); + vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) ); + vec2 fLodSizeInv = 1.0 / fLodSize; + vec2 cLodSizeInv = 1.0 / cLodSize; + vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) ); + vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) ); + return mix( fSample, cSample, fract( lod ) ); + } + vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { + vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); + vec3 modelScale; + modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); + modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); + modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); + return normalize( refractionVector ) * thickness * modelScale; + } + float applyIorToRoughness( const in float roughness, const in float ior ) { + return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); + } + vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { + float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); + return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod ); + } + vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { + if ( isinf( attenuationDistance ) ) { + return vec3( 1.0 ); + } else { + vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; + vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance; + } + } + vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, + const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, + const in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness, + const in vec3 attenuationColor, const in float attenuationDistance ) { + vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); + vec3 refractedRayExit = position + transmissionRay; + vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); + vec2 refractionCoords = ndcPos.xy / ndcPos.w; + refractionCoords += 1.0; + refractionCoords /= 2.0; + vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); + vec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance ); + vec3 attenuatedColor = transmittance * transmittedLight.rgb; + vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); + float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; + return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); + } +#endif`,TR=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + varying vec2 vNormalMapUv; +#endif +#ifdef USE_EMISSIVEMAP + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_SPECULARMAP + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,kR=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + varying vec2 vUv; +#endif +#ifdef USE_MAP + uniform mat3 mapTransform; + varying vec2 vMapUv; +#endif +#ifdef USE_ALPHAMAP + uniform mat3 alphaMapTransform; + varying vec2 vAlphaMapUv; +#endif +#ifdef USE_LIGHTMAP + uniform mat3 lightMapTransform; + varying vec2 vLightMapUv; +#endif +#ifdef USE_AOMAP + uniform mat3 aoMapTransform; + varying vec2 vAoMapUv; +#endif +#ifdef USE_BUMPMAP + uniform mat3 bumpMapTransform; + varying vec2 vBumpMapUv; +#endif +#ifdef USE_NORMALMAP + uniform mat3 normalMapTransform; + varying vec2 vNormalMapUv; +#endif +#ifdef USE_DISPLACEMENTMAP + uniform mat3 displacementMapTransform; + varying vec2 vDisplacementMapUv; +#endif +#ifdef USE_EMISSIVEMAP + uniform mat3 emissiveMapTransform; + varying vec2 vEmissiveMapUv; +#endif +#ifdef USE_METALNESSMAP + uniform mat3 metalnessMapTransform; + varying vec2 vMetalnessMapUv; +#endif +#ifdef USE_ROUGHNESSMAP + uniform mat3 roughnessMapTransform; + varying vec2 vRoughnessMapUv; +#endif +#ifdef USE_ANISOTROPYMAP + uniform mat3 anisotropyMapTransform; + varying vec2 vAnisotropyMapUv; +#endif +#ifdef USE_CLEARCOATMAP + uniform mat3 clearcoatMapTransform; + varying vec2 vClearcoatMapUv; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + uniform mat3 clearcoatNormalMapTransform; + varying vec2 vClearcoatNormalMapUv; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + uniform mat3 clearcoatRoughnessMapTransform; + varying vec2 vClearcoatRoughnessMapUv; +#endif +#ifdef USE_SHEEN_COLORMAP + uniform mat3 sheenColorMapTransform; + varying vec2 vSheenColorMapUv; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + uniform mat3 sheenRoughnessMapTransform; + varying vec2 vSheenRoughnessMapUv; +#endif +#ifdef USE_IRIDESCENCEMAP + uniform mat3 iridescenceMapTransform; + varying vec2 vIridescenceMapUv; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + uniform mat3 iridescenceThicknessMapTransform; + varying vec2 vIridescenceThicknessMapUv; +#endif +#ifdef USE_SPECULARMAP + uniform mat3 specularMapTransform; + varying vec2 vSpecularMapUv; +#endif +#ifdef USE_SPECULAR_COLORMAP + uniform mat3 specularColorMapTransform; + varying vec2 vSpecularColorMapUv; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + uniform mat3 specularIntensityMapTransform; + varying vec2 vSpecularIntensityMapUv; +#endif +#ifdef USE_TRANSMISSIONMAP + uniform mat3 transmissionMapTransform; + varying vec2 vTransmissionMapUv; +#endif +#ifdef USE_THICKNESSMAP + uniform mat3 thicknessMapTransform; + varying vec2 vThicknessMapUv; +#endif`,HR=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) + vUv = vec3( uv, 1 ).xy; +#endif +#ifdef USE_MAP + vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ALPHAMAP + vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_LIGHTMAP + vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_AOMAP + vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_BUMPMAP + vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_NORMALMAP + vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_DISPLACEMENTMAP + vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_EMISSIVEMAP + vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_METALNESSMAP + vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ROUGHNESSMAP + vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_ANISOTROPYMAP + vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOATMAP + vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_NORMALMAP + vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_CLEARCOAT_ROUGHNESSMAP + vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCEMAP + vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_IRIDESCENCE_THICKNESSMAP + vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_COLORMAP + vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SHEEN_ROUGHNESSMAP + vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULARMAP + vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_COLORMAP + vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_SPECULAR_INTENSITYMAP + vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_TRANSMISSIONMAP + vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy; +#endif +#ifdef USE_THICKNESSMAP + vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; +#endif`,bR=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 + vec4 worldPosition = vec4( transformed, 1.0 ); + #ifdef USE_INSTANCING + worldPosition = instanceMatrix * worldPosition; + #endif + worldPosition = modelMatrix * worldPosition; +#endif`;const OR=`varying vec2 vUv; +uniform mat3 uvTransform; +void main() { + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + gl_Position = vec4( position.xy, 1.0, 1.0 ); +}`,YR=`uniform sampler2D t2D; +uniform float backgroundIntensity; +varying vec2 vUv; +void main() { + vec4 texColor = texture2D( t2D, vUv ); + #ifdef DECODE_VIDEO_TEXTURE + texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,KR=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,PR=`#ifdef ENVMAP_TYPE_CUBE + uniform samplerCube envMap; +#elif defined( ENVMAP_TYPE_CUBE_UV ) + uniform sampler2D envMap; +#endif +uniform float flipEnvMap; +uniform float backgroundBlurriness; +uniform float backgroundIntensity; +varying vec3 vWorldDirection; +#include +void main() { + #ifdef ENVMAP_TYPE_CUBE + vec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) ); + #elif defined( ENVMAP_TYPE_CUBE_UV ) + vec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness ); + #else + vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + #endif + texColor.rgb *= backgroundIntensity; + gl_FragColor = texColor; + #include + #include +}`,JR=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include + gl_Position.z = gl_Position.w; +}`,WR=`uniform samplerCube tCube; +uniform float tFlip; +uniform float opacity; +varying vec3 vWorldDirection; +void main() { + vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) ); + gl_FragColor = texColor; + gl_FragColor.a *= opacity; + #include + #include +}`,zR=`#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vHighPrecisionZW = gl_Position.zw; +}`,qR=`#if DEPTH_PACKING == 3200 + uniform float opacity; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +varying vec2 vHighPrecisionZW; +void main() { + #include + vec4 diffuseColor = vec4( 1.0 ); + #if DEPTH_PACKING == 3200 + diffuseColor.a = opacity; + #endif + #include + #include + #include + #include + #include + float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; + #if DEPTH_PACKING == 3200 + gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); + #elif DEPTH_PACKING == 3201 + gl_FragColor = packDepthToRGBA( fragCoordZ ); + #endif +}`,VR=`#define DISTANCE +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #ifdef USE_DISPLACEMENTMAP + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + vWorldPosition = worldPosition.xyz; +}`,jR=`#define DISTANCE +uniform vec3 referencePosition; +uniform float nearDistance; +uniform float farDistance; +varying vec3 vWorldPosition; +#include +#include +#include +#include +#include +#include +#include +#include +void main () { + #include + vec4 diffuseColor = vec4( 1.0 ); + #include + #include + #include + #include + float dist = length( vWorldPosition - referencePosition ); + dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); + dist = saturate( dist ); + gl_FragColor = packDepthToRGBA( dist ); +}`,XR=`varying vec3 vWorldDirection; +#include +void main() { + vWorldDirection = transformDirection( position, modelMatrix ); + #include + #include +}`,ZR=`uniform sampler2D tEquirect; +varying vec3 vWorldDirection; +#include +void main() { + vec3 direction = normalize( vWorldDirection ); + vec2 sampleUV = equirectUv( direction ); + gl_FragColor = texture2D( tEquirect, sampleUV ); + #include + #include +}`,$R=`uniform float scale; +attribute float lineDistance; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + vLineDistance = scale * lineDistance; + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,Av=`uniform vec3 diffuse; +uniform float opacity; +uniform float dashSize; +uniform float totalSize; +varying float vLineDistance; +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + if ( mod( vLineDistance, totalSize ) > dashSize ) { + discard; + } + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,ev=`#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) + #include + #include + #include + #include + #include + #endif + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,tv=`uniform vec3 diffuse; +uniform float opacity; +#ifndef FLAT_SHADED + varying vec3 vNormal; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + #ifdef USE_LIGHTMAP + vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); + reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; + #else + reflectedLight.indirectDiffuse += vec3( 1.0 ); + #endif + #include + reflectedLight.indirectDiffuse *= diffuseColor.rgb; + vec3 outgoingLight = reflectedLight.indirectDiffuse; + #include + #include + #include + #include + #include + #include + #include +}`,nv=`#define LAMBERT +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,iv=`#define LAMBERT +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,rv=`#define MATCAP +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; +}`,ov=`#define MATCAP +uniform vec3 diffuse; +uniform float opacity; +uniform sampler2D matcap; +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + #include + #include + #include + vec3 viewDir = normalize( vViewPosition ); + vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); + vec3 y = cross( viewDir, x ); + vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; + #ifdef USE_MATCAP + vec4 matcapColor = texture2D( matcap, uv ); + #else + vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); + #endif + vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; + #include + #include + #include + #include + #include + #include +}`,sv=`#define NORMAL +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + vViewPosition = - mvPosition.xyz; +#endif +}`,av=`#define NORMAL +uniform float opacity; +#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) + varying vec3 vViewPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + gl_FragColor = vec4( packNormalToRGB( normal ), opacity ); + #ifdef OPAQUE + gl_FragColor.a = 1.0; + #endif +}`,gv=`#define PHONG +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include + #include +}`,Iv=`#define PHONG +uniform vec3 diffuse; +uniform vec3 emissive; +uniform vec3 specular; +uniform float shininess; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include + #include +}`,Cv=`#define STANDARD +varying vec3 vViewPosition; +#ifdef USE_TRANSMISSION + varying vec3 vWorldPosition; +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +#ifdef USE_TRANSMISSION + vWorldPosition = worldPosition.xyz; +#endif +}`,lv=`#define STANDARD +#ifdef PHYSICAL + #define IOR + #define USE_SPECULAR +#endif +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float roughness; +uniform float metalness; +uniform float opacity; +#ifdef IOR + uniform float ior; +#endif +#ifdef USE_SPECULAR + uniform float specularIntensity; + uniform vec3 specularColor; + #ifdef USE_SPECULAR_COLORMAP + uniform sampler2D specularColorMap; + #endif + #ifdef USE_SPECULAR_INTENSITYMAP + uniform sampler2D specularIntensityMap; + #endif +#endif +#ifdef USE_CLEARCOAT + uniform float clearcoat; + uniform float clearcoatRoughness; +#endif +#ifdef USE_IRIDESCENCE + uniform float iridescence; + uniform float iridescenceIOR; + uniform float iridescenceThicknessMinimum; + uniform float iridescenceThicknessMaximum; +#endif +#ifdef USE_SHEEN + uniform vec3 sheenColor; + uniform float sheenRoughness; + #ifdef USE_SHEEN_COLORMAP + uniform sampler2D sheenColorMap; + #endif + #ifdef USE_SHEEN_ROUGHNESSMAP + uniform sampler2D sheenRoughnessMap; + #endif +#endif +#ifdef USE_ANISOTROPY + uniform vec2 anisotropyVector; + #ifdef USE_ANISOTROPYMAP + uniform sampler2D anisotropyMap; + #endif +#endif +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; + vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; + #include + vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; + #ifdef USE_SHEEN + float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); + outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular; + #endif + #ifdef USE_CLEARCOAT + float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) ); + vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); + outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat; + #endif + #include + #include + #include + #include + #include + #include +}`,Bv=`#define TOON +varying vec3 vViewPosition; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vViewPosition = - mvPosition.xyz; + #include + #include + #include +}`,Ev=`#define TOON +uniform vec3 diffuse; +uniform vec3 emissive; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec4 diffuseColor = vec4( diffuse, opacity ); + ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); + vec3 totalEmissiveRadiance = emissive; + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; + #include + #include + #include + #include + #include + #include +}`,cv=`uniform float size; +uniform float scale; +#include +#include +#include +#include +#include +#include +#ifdef USE_POINTS_UV + varying vec2 vUv; + uniform mat3 uvTransform; +#endif +void main() { + #ifdef USE_POINTS_UV + vUv = ( uvTransform * vec3( uv, 1 ) ).xy; + #endif + #include + #include + #include + #include + #include + gl_PointSize = size; + #ifdef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); + #endif + #include + #include + #include + #include +}`,uv=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include + #include +}`,Qv=`#include +#include +#include +#include +#include +#include +void main() { + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include +}`,hv=`uniform vec3 color; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); + #include + #include + #include +}`,dv=`uniform float rotation; +uniform vec2 center; +#include +#include +#include +#include +#include +void main() { + #include + vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); + vec2 scale; + scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); + scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); + #ifndef USE_SIZEATTENUATION + bool isPerspective = isPerspectiveMatrix( projectionMatrix ); + if ( isPerspective ) scale *= - mvPosition.z; + #endif + vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; + vec2 rotatedPosition; + rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; + rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; + mvPosition.xy += rotatedPosition; + gl_Position = projectionMatrix * mvPosition; + #include + #include + #include +}`,fv=`uniform vec3 diffuse; +uniform float opacity; +#include +#include +#include +#include +#include +#include +#include +#include +#include +void main() { + #include + vec3 outgoingLight = vec3( 0.0 ); + vec4 diffuseColor = vec4( diffuse, opacity ); + #include + #include + #include + #include + #include + outgoingLight = diffuseColor.rgb; + #include + #include + #include + #include +}`,XA={alphahash_fragment:PS,alphahash_pars_fragment:JS,alphamap_fragment:WS,alphamap_pars_fragment:zS,alphatest_fragment:qS,alphatest_pars_fragment:VS,aomap_fragment:jS,aomap_pars_fragment:XS,begin_vertex:ZS,beginnormal_vertex:$S,bsdfs:AM,iridescence_fragment:eM,bumpmap_pars_fragment:tM,clipping_planes_fragment:nM,clipping_planes_pars_fragment:iM,clipping_planes_pars_vertex:rM,clipping_planes_vertex:oM,color_fragment:sM,color_pars_fragment:aM,color_pars_vertex:gM,color_vertex:IM,common:CM,cube_uv_reflection_fragment:lM,defaultnormal_vertex:BM,displacementmap_pars_vertex:EM,displacementmap_vertex:cM,emissivemap_fragment:uM,emissivemap_pars_fragment:QM,colorspace_fragment:hM,colorspace_pars_fragment:dM,envmap_fragment:fM,envmap_common_pars_fragment:pM,envmap_pars_fragment:mM,envmap_pars_vertex:wM,envmap_physical_pars_fragment:UM,envmap_vertex:yM,fog_vertex:DM,fog_pars_vertex:SM,fog_fragment:MM,fog_pars_fragment:RM,gradientmap_pars_fragment:vM,lightmap_fragment:NM,lightmap_pars_fragment:FM,lights_lambert_fragment:LM,lights_lambert_pars_fragment:xM,lights_pars_begin:_M,lights_toon_fragment:GM,lights_toon_pars_fragment:TM,lights_phong_fragment:kM,lights_phong_pars_fragment:HM,lights_physical_fragment:bM,lights_physical_pars_fragment:OM,lights_fragment_begin:YM,lights_fragment_maps:KM,lights_fragment_end:PM,logdepthbuf_fragment:JM,logdepthbuf_pars_fragment:WM,logdepthbuf_pars_vertex:zM,logdepthbuf_vertex:qM,map_fragment:VM,map_pars_fragment:jM,map_particle_fragment:XM,map_particle_pars_fragment:ZM,metalnessmap_fragment:$M,metalnessmap_pars_fragment:AR,morphcolor_vertex:eR,morphnormal_vertex:tR,morphtarget_pars_vertex:nR,morphtarget_vertex:iR,normal_fragment_begin:rR,normal_fragment_maps:oR,normal_pars_fragment:sR,normal_pars_vertex:aR,normal_vertex:gR,normalmap_pars_fragment:IR,clearcoat_normal_fragment_begin:CR,clearcoat_normal_fragment_maps:lR,clearcoat_pars_fragment:BR,iridescence_pars_fragment:ER,opaque_fragment:cR,packing:uR,premultiplied_alpha_fragment:QR,project_vertex:hR,dithering_fragment:dR,dithering_pars_fragment:fR,roughnessmap_fragment:pR,roughnessmap_pars_fragment:mR,shadowmap_pars_fragment:wR,shadowmap_pars_vertex:yR,shadowmap_vertex:DR,shadowmask_pars_fragment:SR,skinbase_vertex:MR,skinning_pars_vertex:RR,skinning_vertex:vR,skinnormal_vertex:NR,specularmap_fragment:FR,specularmap_pars_fragment:LR,tonemapping_fragment:xR,tonemapping_pars_fragment:_R,transmission_fragment:UR,transmission_pars_fragment:GR,uv_pars_fragment:TR,uv_pars_vertex:kR,uv_vertex:HR,worldpos_vertex:bR,background_vert:OR,background_frag:YR,backgroundCube_vert:KR,backgroundCube_frag:PR,cube_vert:JR,cube_frag:WR,depth_vert:zR,depth_frag:qR,distanceRGBA_vert:VR,distanceRGBA_frag:jR,equirect_vert:XR,equirect_frag:ZR,linedashed_vert:$R,linedashed_frag:Av,meshbasic_vert:ev,meshbasic_frag:tv,meshlambert_vert:nv,meshlambert_frag:iv,meshmatcap_vert:rv,meshmatcap_frag:ov,meshnormal_vert:sv,meshnormal_frag:av,meshphong_vert:gv,meshphong_frag:Iv,meshphysical_vert:Cv,meshphysical_frag:lv,meshtoon_vert:Bv,meshtoon_frag:Ev,points_vert:cv,points_frag:uv,shadow_vert:Qv,shadow_frag:hv,sprite_vert:dv,sprite_frag:fv},uA={common:{diffuse:{value:new ue(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new ie},alphaMap:{value:null},alphaMapTransform:{value:new ie},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new ie}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new ie}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new ie}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new ie},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new ie},normalScale:{value:new qA(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new ie},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new ie}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new ie}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new ie}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new ue(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new ue(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new ie},alphaTest:{value:0},uvTransform:{value:new ie}},sprite:{diffuse:{value:new ue(16777215)},opacity:{value:1},center:{value:new qA(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new ie},alphaMap:{value:null},alphaMapTransform:{value:new ie},alphaTest:{value:0}}},ln={basic:{uniforms:lt([uA.common,uA.specularmap,uA.envmap,uA.aomap,uA.lightmap,uA.fog]),vertexShader:XA.meshbasic_vert,fragmentShader:XA.meshbasic_frag},lambert:{uniforms:lt([uA.common,uA.specularmap,uA.envmap,uA.aomap,uA.lightmap,uA.emissivemap,uA.bumpmap,uA.normalmap,uA.displacementmap,uA.fog,uA.lights,{emissive:{value:new ue(0)}}]),vertexShader:XA.meshlambert_vert,fragmentShader:XA.meshlambert_frag},phong:{uniforms:lt([uA.common,uA.specularmap,uA.envmap,uA.aomap,uA.lightmap,uA.emissivemap,uA.bumpmap,uA.normalmap,uA.displacementmap,uA.fog,uA.lights,{emissive:{value:new ue(0)},specular:{value:new ue(1118481)},shininess:{value:30}}]),vertexShader:XA.meshphong_vert,fragmentShader:XA.meshphong_frag},standard:{uniforms:lt([uA.common,uA.envmap,uA.aomap,uA.lightmap,uA.emissivemap,uA.bumpmap,uA.normalmap,uA.displacementmap,uA.roughnessmap,uA.metalnessmap,uA.fog,uA.lights,{emissive:{value:new ue(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:XA.meshphysical_vert,fragmentShader:XA.meshphysical_frag},toon:{uniforms:lt([uA.common,uA.aomap,uA.lightmap,uA.emissivemap,uA.bumpmap,uA.normalmap,uA.displacementmap,uA.gradientmap,uA.fog,uA.lights,{emissive:{value:new ue(0)}}]),vertexShader:XA.meshtoon_vert,fragmentShader:XA.meshtoon_frag},matcap:{uniforms:lt([uA.common,uA.bumpmap,uA.normalmap,uA.displacementmap,uA.fog,{matcap:{value:null}}]),vertexShader:XA.meshmatcap_vert,fragmentShader:XA.meshmatcap_frag},points:{uniforms:lt([uA.points,uA.fog]),vertexShader:XA.points_vert,fragmentShader:XA.points_frag},dashed:{uniforms:lt([uA.common,uA.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:XA.linedashed_vert,fragmentShader:XA.linedashed_frag},depth:{uniforms:lt([uA.common,uA.displacementmap]),vertexShader:XA.depth_vert,fragmentShader:XA.depth_frag},normal:{uniforms:lt([uA.common,uA.bumpmap,uA.normalmap,uA.displacementmap,{opacity:{value:1}}]),vertexShader:XA.meshnormal_vert,fragmentShader:XA.meshnormal_frag},sprite:{uniforms:lt([uA.sprite,uA.fog]),vertexShader:XA.sprite_vert,fragmentShader:XA.sprite_frag},background:{uniforms:{uvTransform:{value:new ie},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:XA.background_vert,fragmentShader:XA.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:XA.backgroundCube_vert,fragmentShader:XA.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:XA.cube_vert,fragmentShader:XA.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:XA.equirect_vert,fragmentShader:XA.equirect_frag},distanceRGBA:{uniforms:lt([uA.common,uA.displacementmap,{referencePosition:{value:new k},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:XA.distanceRGBA_vert,fragmentShader:XA.distanceRGBA_frag},shadow:{uniforms:lt([uA.lights,uA.fog,{color:{value:new ue(0)},opacity:{value:1}}]),vertexShader:XA.shadow_vert,fragmentShader:XA.shadow_frag}};ln.physical={uniforms:lt([ln.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new ie},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new ie},clearcoatNormalScale:{value:new qA(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new ie},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new ie},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new ie},sheen:{value:0},sheenColor:{value:new ue(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new ie},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new ie},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new ie},transmissionSamplerSize:{value:new qA},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new ie},attenuationDistance:{value:0},attenuationColor:{value:new ue(0)},specularColor:{value:new ue(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new ie},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new ie},anisotropyVector:{value:new qA},anisotropyMap:{value:null},anisotropyMapTransform:{value:new ie}}]),vertexShader:XA.meshphysical_vert,fragmentShader:XA.meshphysical_frag};const ua={r:0,b:0,g:0};function pv(e,A,t,n,i,r,o){const s=new ue(0);let a=r===!0?0:1,g,I,C=null,B=0,E=null;function d(c,l){let u=!1,Q=l.isScene===!0?l.background:null;Q&&Q.isTexture&&(Q=(l.backgroundBlurriness>0?t:A).get(Q)),Q===null?h(s,a):Q&&Q.isColor&&(h(Q,1),u=!0);const p=e.xr.getEnvironmentBlendMode();p==="additive"?n.buffers.color.setClear(0,0,0,1,o):p==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,o),(e.autoClear||u)&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),Q&&(Q.isCubeTexture||Q.mapping===jg)?(I===void 0&&(I=new Jt(new fo(1,1,1),new fn({name:"BackgroundCubeMaterial",uniforms:lo(ln.backgroundCube.uniforms),vertexShader:ln.backgroundCube.vertexShader,fragmentShader:ln.backgroundCube.fragmentShader,side:ct,depthTest:!1,depthWrite:!1,fog:!1})),I.geometry.deleteAttribute("normal"),I.geometry.deleteAttribute("uv"),I.onBeforeRender=function(D,f,y){this.matrixWorld.copyPosition(y.matrixWorld)},Object.defineProperty(I.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(I)),I.material.uniforms.envMap.value=Q,I.material.uniforms.flipEnvMap.value=Q.isCubeTexture&&Q.isRenderTargetTexture===!1?-1:1,I.material.uniforms.backgroundBlurriness.value=l.backgroundBlurriness,I.material.uniforms.backgroundIntensity.value=l.backgroundIntensity,I.material.toneMapped=Ee.getTransfer(Q.colorSpace)!==we,(C!==Q||B!==Q.version||E!==e.toneMapping)&&(I.material.needsUpdate=!0,C=Q,B=Q.version,E=e.toneMapping),I.layers.enableAll(),c.unshift(I,I.geometry,I.material,0,0,null)):Q&&Q.isTexture&&(g===void 0&&(g=new Jt(new $g(2,2),new fn({name:"BackgroundMaterial",uniforms:lo(ln.background.uniforms),vertexShader:ln.background.vertexShader,fragmentShader:ln.background.fragmentShader,side:On,depthTest:!1,depthWrite:!1,fog:!1})),g.geometry.deleteAttribute("normal"),Object.defineProperty(g.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(g)),g.material.uniforms.t2D.value=Q,g.material.uniforms.backgroundIntensity.value=l.backgroundIntensity,g.material.toneMapped=Ee.getTransfer(Q.colorSpace)!==we,Q.matrixAutoUpdate===!0&&Q.updateMatrix(),g.material.uniforms.uvTransform.value.copy(Q.matrix),(C!==Q||B!==Q.version||E!==e.toneMapping)&&(g.material.needsUpdate=!0,C=Q,B=Q.version,E=e.toneMapping),g.layers.enableAll(),c.unshift(g,g.geometry,g.material,0,0,null))}function h(c,l){c.getRGB(ua,Df(e)),n.buffers.color.setClear(ua.r,ua.g,ua.b,l,o)}return{getClearColor:function(){return s},setClearColor:function(c,l=1){s.set(c),a=l,h(s,a)},getClearAlpha:function(){return a},setClearAlpha:function(c){a=c,h(s,a)},render:d}}function mv(e,A,t,n){const i=e.getParameter(e.MAX_VERTEX_ATTRIBS),r=n.isWebGL2?null:A.get("OES_vertex_array_object"),o=n.isWebGL2||r!==null,s={},a=c(null);let g=a,I=!1;function C(v,H,$,j,Y){let J=!1;if(o){const W=h(j,$,H);g!==W&&(g=W,E(g.object)),J=l(v,j,$,Y),J&&u(v,j,$,Y)}else{const W=H.wireframe===!0;(g.geometry!==j.id||g.program!==$.id||g.wireframe!==W)&&(g.geometry=j.id,g.program=$.id,g.wireframe=W,J=!0)}Y!==null&&t.update(Y,e.ELEMENT_ARRAY_BUFFER),(J||I)&&(I=!1,N(v,H,$,j),Y!==null&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t.get(Y).buffer))}function B(){return n.isWebGL2?e.createVertexArray():r.createVertexArrayOES()}function E(v){return n.isWebGL2?e.bindVertexArray(v):r.bindVertexArrayOES(v)}function d(v){return n.isWebGL2?e.deleteVertexArray(v):r.deleteVertexArrayOES(v)}function h(v,H,$){const j=$.wireframe===!0;let Y=s[v.id];Y===void 0&&(Y={},s[v.id]=Y);let J=Y[H.id];J===void 0&&(J={},Y[H.id]=J);let W=J[j];return W===void 0&&(W=c(B()),J[j]=W),W}function c(v){const H=[],$=[],j=[];for(let Y=0;Y=0){const IA=Y[K];let hA=J[K];if(hA===void 0&&(K==="instanceMatrix"&&v.instanceMatrix&&(hA=v.instanceMatrix),K==="instanceColor"&&v.instanceColor&&(hA=v.instanceColor)),IA===void 0||IA.attribute!==hA||hA&&IA.data!==hA.data)return!0;W++}return g.attributesNum!==W||g.index!==j}function u(v,H,$,j){const Y={},J=H.attributes;let W=0;const _=$.getAttributes();for(const K in _)if(_[K].location>=0){let IA=J[K];IA===void 0&&(K==="instanceMatrix"&&v.instanceMatrix&&(IA=v.instanceMatrix),K==="instanceColor"&&v.instanceColor&&(IA=v.instanceColor));const hA={};hA.attribute=IA,IA&&IA.data&&(hA.data=IA.data),Y[K]=hA,W++}g.attributes=Y,g.attributesNum=W,g.index=j}function Q(){const v=g.newAttributes;for(let H=0,$=v.length;H<$;H++)v[H]=0}function p(v){D(v,0)}function D(v,H){const $=g.newAttributes,j=g.enabledAttributes,Y=g.attributeDivisors;$[v]=1,j[v]===0&&(e.enableVertexAttribArray(v),j[v]=1),Y[v]!==H&&((n.isWebGL2?e:A.get("ANGLE_instanced_arrays"))[n.isWebGL2?"vertexAttribDivisor":"vertexAttribDivisorANGLE"](v,H),Y[v]=H)}function f(){const v=g.newAttributes,H=g.enabledAttributes;for(let $=0,j=H.length;$=0){let cA=Y[_];if(cA===void 0&&(_==="instanceMatrix"&&v.instanceMatrix&&(cA=v.instanceMatrix),_==="instanceColor"&&v.instanceColor&&(cA=v.instanceColor)),cA!==void 0){const IA=cA.normalized,hA=cA.itemSize,DA=t.get(cA);if(DA===void 0)continue;const TA=DA.buffer,kA=DA.type,oe=DA.bytesPerElement,be=n.isWebGL2===!0&&(kA===e.INT||kA===e.UNSIGNED_INT||cA.gpuType===GB);if(cA.isInterleavedBufferAttribute){const _A=cA.data,b=_A.stride,Fe=cA.offset;if(_A.isInstancedInterleavedBuffer){for(let HA=0;HA0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision>0)return"highp";y="mediump"}return y==="mediump"&&e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}const o=typeof WebGL2RenderingContext<"u"&&e.constructor.name==="WebGL2RenderingContext";let s=t.precision!==void 0?t.precision:"highp";const a=r(s);a!==s&&(console.warn("THREE.WebGLRenderer:",s,"not supported, using",a,"instead."),s=a);const g=o||A.has("WEBGL_draw_buffers"),I=t.logarithmicDepthBuffer===!0,C=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),B=e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS),E=e.getParameter(e.MAX_TEXTURE_SIZE),d=e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE),h=e.getParameter(e.MAX_VERTEX_ATTRIBS),c=e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),l=e.getParameter(e.MAX_VARYING_VECTORS),u=e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),Q=B>0,p=o||A.has("OES_texture_float"),D=Q&&p,f=o?e.getParameter(e.MAX_SAMPLES):0;return{isWebGL2:o,drawBuffers:g,getMaxAnisotropy:i,getMaxPrecision:r,precision:s,logarithmicDepthBuffer:I,maxTextures:C,maxVertexTextures:B,maxTextureSize:E,maxCubemapSize:d,maxAttributes:h,maxVertexUniforms:c,maxVaryings:l,maxFragmentUniforms:u,vertexTextures:Q,floatFragmentTextures:p,floatVertexTextures:D,maxSamples:f}}function Dv(e){const A=this;let t=null,n=0,i=!1,r=!1;const o=new ei,s=new ie,a={value:null,needsUpdate:!1};this.uniform=a,this.numPlanes=0,this.numIntersection=0,this.init=function(C,B){const E=C.length!==0||B||n!==0||i;return i=B,n=C.length,E},this.beginShadows=function(){r=!0,I(null)},this.endShadows=function(){r=!1},this.setGlobalState=function(C,B){t=I(C,B,0)},this.setState=function(C,B,E){const d=C.clippingPlanes,h=C.clipIntersection,c=C.clipShadows,l=e.get(C);if(!i||d===null||d.length===0||r&&!c)r?I(null):g();else{const u=r?0:n,Q=u*4;let p=l.clippingState||null;a.value=p,p=I(d,B,Q,E);for(let D=0;D!==Q;++D)p[D]=t[D];l.clippingState=p,this.numIntersection=h?this.numPlanes:0,this.numPlanes+=u}};function g(){a.value!==t&&(a.value=t,a.needsUpdate=n>0),A.numPlanes=n,A.numIntersection=0}function I(C,B,E,d){const h=C!==null?C.length:0;let c=null;if(h!==0){if(c=a.value,d!==!0||c===null){const l=E+h*4,u=B.matrixWorldInverse;s.getNormalMatrix(u),(c===null||c.length0){const g=new Rf(a.height/2);return g.fromEquirectangularTexture(e,o),A.set(o,g),o.addEventListener("dispose",i),t(g.texture,o.mapping)}else return null}}return o}function i(o){const s=o.target;s.removeEventListener("dispose",i);const a=A.get(s);a!==void 0&&(A.delete(s),a.dispose())}function r(){A=new WeakMap}return{get:n,dispose:r}}class PB extends Sf{constructor(A=-1,t=1,n=1,i=-1,r=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=A,this.right=t,this.top=n,this.bottom=i,this.near=r,this.far=o,this.updateProjectionMatrix()}copy(A,t){return super.copy(A,t),this.left=A.left,this.right=A.right,this.top=A.top,this.bottom=A.bottom,this.near=A.near,this.far=A.far,this.zoom=A.zoom,this.view=A.view===null?null:Object.assign({},A.view),this}setViewOffset(A,t,n,i,r,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=A,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const A=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2;let r=n-A,o=n+A,s=i+t,a=i-t;if(this.view!==null&&this.view.enabled){const g=(this.right-this.left)/this.view.fullWidth/this.zoom,I=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=g*this.view.offsetX,o=r+g*this.view.width,s-=I*this.view.offsetY,a=s-I*this.view.height}this.projectionMatrix.makeOrthographic(r,o,s,a,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(A){const t=super.toJSON(A);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}const Yr=4,Mu=[.125,.215,.35,.446,.526,.582],ki=20,sC=new PB,Ru=new ue;let aC=null;const _i=(1+Math.sqrt(5))/2,Sr=1/_i,vu=[new k(1,1,1),new k(-1,1,1),new k(1,1,-1),new k(-1,1,-1),new k(0,_i,Sr),new k(0,_i,-Sr),new k(Sr,0,_i),new k(-Sr,0,_i),new k(_i,Sr,0),new k(-_i,Sr,0)];class Nu{constructor(A){this._renderer=A,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(A,t=0,n=.1,i=100){aC=this._renderer.getRenderTarget(),this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(A,n,i,r),t>0&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(A,t=null){return this._fromTexture(A,t)}fromCubemap(A,t=null){return this._fromTexture(A,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=xu(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Lu(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(A){this._lodMax=Math.floor(Math.log2(A)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let A=0;A2?Q:0,Q,Q),I.setRenderTarget(i),h&&I.render(d,s),I.render(A,s)}d.geometry.dispose(),d.material.dispose(),I.toneMapping=B,I.autoClear=C,A.background=c}_textureToCubeUV(A,t){const n=this._renderer,i=A.mapping===so||A.mapping===ao;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=xu()),this._cubemapMaterial.uniforms.flipEnvMap.value=A.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Lu());const r=i?this._cubemapMaterial:this._equirectMaterial,o=new Jt(this._lodPlanes[0],r),s=r.uniforms;s.envMap.value=A;const a=this._cubeSize;Qa(t,0,0,3*a,2*a),n.setRenderTarget(t),n.render(o,sC)}_applyPMREM(A){const t=this._renderer,n=t.autoClear;t.autoClear=!1;for(let i=1;iki&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${c} samples when the maximum is set to ${ki}`);const l=[];let u=0;for(let y=0;yQ-Yr?i-Q+Yr:0),f=4*(this._cubeSize-p);Qa(t,D,f,3*p,2*p),a.setRenderTarget(t),a.render(C,sC)}}function Mv(e){const A=[],t=[],n=[];let i=e;const r=e-Yr+1+Mu.length;for(let o=0;oe-Yr?a=Mu[o-e+Yr-1]:o===0&&(a=0),n.push(a);const g=1/(s-2),I=-g,C=1+g,B=[I,I,C,I,C,C,I,I,C,C,I,C],E=6,d=6,h=3,c=2,l=1,u=new Float32Array(h*d*E),Q=new Float32Array(c*d*E),p=new Float32Array(l*d*E);for(let f=0;f2?0:-1,m=[y,N,0,y+2/3,N,0,y+2/3,N+1,0,y,N,0,y+2/3,N+1,0,y,N+1,0];u.set(m,h*d*f),Q.set(B,c*d*f);const M=[f,f,f,f,f,f];p.set(M,l*d*f)}const D=new Jn;D.setAttribute("position",new St(u,h)),D.setAttribute("uv",new St(Q,c)),D.setAttribute("faceIndex",new St(p,l)),A.push(D),i>Yr&&i--}return{lodPlanes:A,sizeLods:t,sigmas:n}}function Fu(e,A,t){const n=new Ar(e,A,t);return n.texture.mapping=jg,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function Qa(e,A,t,n,i){e.viewport.set(A,t,n,i),e.scissor.set(A,t,n,i)}function Rv(e,A,t){const n=new Float32Array(ki),i=new k(0,1,0);return new fn({name:"SphericalGaussianBlur",defines:{n:ki,CUBEUV_TEXEL_WIDTH:1/A,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:JB(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `,blending:Qn,depthTest:!1,depthWrite:!1})}function Lu(){return new fn({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:JB(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + `,blending:Qn,depthTest:!1,depthWrite:!1})}function xu(){return new fn({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:JB(),fragmentShader:` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `,blending:Qn,depthTest:!1,depthWrite:!1})}function JB(){return` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `}function vv(e){let A=new WeakMap,t=null;function n(s){if(s&&s.isTexture){const a=s.mapping,g=a===pl||a===ml,I=a===so||a===ao;if(g||I)if(s.isRenderTargetTexture&&s.needsPMREMUpdate===!0){s.needsPMREMUpdate=!1;let C=A.get(s);return t===null&&(t=new Nu(e)),C=g?t.fromEquirectangular(s,C):t.fromCubemap(s,C),A.set(s,C),C.texture}else{if(A.has(s))return A.get(s).texture;{const C=s.image;if(g&&C&&C.height>0||I&&C&&i(C)){t===null&&(t=new Nu(e));const B=g?t.fromEquirectangular(s):t.fromCubemap(s);return A.set(s,B),s.addEventListener("dispose",r),B.texture}else return null}}}return s}function i(s){let a=0;const g=6;for(let I=0;IA.maxTextureSize&&(P=Math.ceil(M/A.maxTextureSize),M=A.maxTextureSize);const X=new Float32Array(M*P*4*h),Z=new hf(X,M,P,h);Z.type=si,Z.needsUpdate=!0;const v=m*4;for(let $=0;$0)return e;const i=A*t;let r=_u[i];if(r===void 0&&(r=new Float32Array(i),_u[i]=r),A!==0){n.toArray(r,0);for(let o=1,s=0;o!==A;++o)s+=t,e[o].toArray(r,s)}return r}function Je(e,A){if(e.length!==A.length)return!1;for(let t=0,n=e.length;t":" "} ${s}: ${t[o]}`)}return n.join(` +`)}function NN(e){const A=Ee.getPrimaries(Ee.workingColorSpace),t=Ee.getPrimaries(e);let n;switch(A===t?n="":A===fg&&t===dg?n="LinearDisplayP3ToLinearSRGB":A===dg&&t===fg&&(n="LinearSRGBToLinearDisplayP3"),e){case Yn:case Xg:return[n,"LinearTransferOETF"];case Ze:case bB:return[n,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",e),[n,"LinearTransferOETF"]}}function Ou(e,A,t){const n=e.getShaderParameter(A,e.COMPILE_STATUS),i=e.getShaderInfoLog(A).trim();if(n&&i==="")return"";const r=/ERROR: 0:(\d+)/.exec(i);if(r){const o=parseInt(r[1]);return t.toUpperCase()+` + +`+i+` + +`+vN(e.getShaderSource(A),o)}else return i}function FN(e,A){const t=NN(A);return`vec4 ${e}( vec4 value ) { return ${t[0]}( ${t[1]}( value ) ); }`}function LN(e,A){let t;switch(A){case LD:t="Linear";break;case xD:t="Reinhard";break;case _D:t="OptimizedCineon";break;case UD:t="ACESFilmic";break;case GD:t="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",A),t="Linear"}return"vec3 "+e+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}function xN(e){return[e.extensionDerivatives||e.envMapCubeUVHeight||e.bumpMap||e.normalMapTangentSpace||e.clearcoatNormalMap||e.flatShading||e.shaderID==="physical"?"#extension GL_OES_standard_derivatives : enable":"",(e.extensionFragDepth||e.logarithmicDepthBuffer)&&e.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",e.extensionDrawBuffers&&e.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(e.extensionShaderTextureLOD||e.envMap||e.transmission)&&e.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(Jo).join(` +`)}function _N(e){const A=[];for(const t in e){const n=e[t];n!==!1&&A.push("#define "+t+" "+n)}return A.join(` +`)}function UN(e,A){const t={},n=e.getProgramParameter(A,e.ACTIVE_ATTRIBUTES);for(let i=0;i/gm;function Rl(e){return e.replace(GN,kN)}const TN=new Map([["encodings_fragment","colorspace_fragment"],["encodings_pars_fragment","colorspace_pars_fragment"],["output_fragment","opaque_fragment"]]);function kN(e,A){let t=XA[A];if(t===void 0){const n=TN.get(A);if(n!==void 0)t=XA[n],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',A,n);else throw new Error("Can not resolve #include <"+A+">")}return Rl(t)}const HN=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Pu(e){return e.replace(HN,bN)}function bN(e,A,t,n){let i="";for(let r=parseInt(A);r0&&(c+=` +`),l=[E,"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,d].filter(Jo).join(` +`),l.length>0&&(l+=` +`)):(c=[Ju(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,d,t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+I:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors&&t.isWebGL2?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0&&t.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",t.morphTargetsCount>0&&t.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0&&t.isWebGL2?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+a:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.useLegacyLights?"#define LEGACY_LIGHTS":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )"," attribute vec3 morphTarget0;"," attribute vec3 morphTarget1;"," attribute vec3 morphTarget2;"," attribute vec3 morphTarget3;"," #ifdef USE_MORPHNORMALS"," attribute vec3 morphNormal0;"," attribute vec3 morphNormal1;"," attribute vec3 morphNormal2;"," attribute vec3 morphNormal3;"," #else"," attribute vec3 morphTarget4;"," attribute vec3 morphTarget5;"," attribute vec3 morphTarget6;"," attribute vec3 morphTarget7;"," #endif","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` +`].filter(Jo).join(` +`),l=[E,Ju(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,d,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+g:"",t.envMap?"#define "+I:"",t.envMap?"#define "+C:"",B?"#define CUBEUV_TEXEL_WIDTH "+B.texelWidth:"",B?"#define CUBEUV_TEXEL_HEIGHT "+B.texelHeight:"",B?"#define CUBEUV_MAX_MIP "+B.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+a:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.useLegacyLights?"#define LEGACY_LIGHTS":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==hi?"#define TONE_MAPPING":"",t.toneMapping!==hi?XA.tonemapping_pars_fragment:"",t.toneMapping!==hi?LN("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",XA.colorspace_pars_fragment,FN("linearToOutputTexel",t.outputColorSpace),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` +`].filter(Jo).join(` +`)),o=Rl(o),o=Yu(o,t),o=Ku(o,t),s=Rl(s),s=Yu(s,t),s=Ku(s,t),o=Pu(o),s=Pu(s),t.isWebGL2&&t.isRawShaderMaterial!==!0&&(u=`#version 300 es +`,c=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(` +`)+` +`+c,l=["#define varying in",t.glslVersion===gu?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===gu?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` +`)+` +`+l);const Q=u+c+o,p=u+l+s,D=bu(i,i.VERTEX_SHADER,Q),f=bu(i,i.FRAGMENT_SHADER,p);if(i.attachShader(h,D),i.attachShader(h,f),t.index0AttributeName!==void 0?i.bindAttribLocation(h,0,t.index0AttributeName):t.morphTargets===!0&&i.bindAttribLocation(h,0,"position"),i.linkProgram(h),e.debug.checkShaderErrors){const m=i.getProgramInfoLog(h).trim(),M=i.getShaderInfoLog(D).trim(),P=i.getShaderInfoLog(f).trim();let X=!0,Z=!0;if(i.getProgramParameter(h,i.LINK_STATUS)===!1)if(X=!1,typeof e.debug.onShaderError=="function")e.debug.onShaderError(i,h,D,f);else{const v=Ou(i,D,"vertex"),H=Ou(i,f,"fragment");console.error("THREE.WebGLProgram: Shader Error "+i.getError()+" - VALIDATE_STATUS "+i.getProgramParameter(h,i.VALIDATE_STATUS)+` + +Program Info Log: `+m+` +`+v+` +`+H)}else m!==""?console.warn("THREE.WebGLProgram: Program Info Log:",m):(M===""||P==="")&&(Z=!1);Z&&(this.diagnostics={runnable:X,programLog:m,vertexShader:{log:M,prefix:c},fragmentShader:{log:P,prefix:l}})}i.deleteShader(D),i.deleteShader(f);let y;this.getUniforms=function(){return y===void 0&&(y=new Oa(i,h)),y};let N;return this.getAttributes=function(){return N===void 0&&(N=UN(i,h)),N},this.destroy=function(){n.releaseStatesOfProgram(this),i.deleteProgram(h),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=RN++,this.cacheKey=A,this.usedTimes=1,this.program=h,this.vertexShader=D,this.fragmentShader=f,this}let zN=0;class qN{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(A){const t=A.vertexShader,n=A.fragmentShader,i=this._getShaderStage(t),r=this._getShaderStage(n),o=this._getShaderCacheForMaterial(A);return o.has(i)===!1&&(o.add(i),i.usedTimes++),o.has(r)===!1&&(o.add(r),r.usedTimes++),this}remove(A){const t=this.materialCache.get(A);for(const n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(A),this}getVertexShaderID(A){return this._getShaderStage(A.vertexShader).id}getFragmentShaderID(A){return this._getShaderStage(A.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(A){const t=this.materialCache;let n=t.get(A);return n===void 0&&(n=new Set,t.set(A,n)),n}_getShaderStage(A){const t=this.shaderCache;let n=t.get(A);return n===void 0&&(n=new VN(A),t.set(A,n)),n}}class VN{constructor(A){this.id=zN++,this.code=A,this.usedTimes=0}}function jN(e,A,t,n,i,r,o){const s=new ff,a=new qN,g=[],I=i.isWebGL2,C=i.logarithmicDepthBuffer,B=i.vertexTextures;let E=i.precision;const d={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function h(m){return m===0?"uv":`uv${m}`}function c(m,M,P,X,Z){const v=X.fog,H=Z.geometry,$=m.isMeshStandardMaterial?X.environment:null,j=(m.isMeshStandardMaterial?t:A).get(m.envMap||$),Y=j&&j.mapping===jg?j.image.height:null,J=d[m.type];m.precision!==null&&(E=i.getMaxPrecision(m.precision),E!==m.precision&&console.warn("THREE.WebGLProgram.getParameters:",m.precision,"not supported, using",E,"instead."));const W=H.morphAttributes.position||H.morphAttributes.normal||H.morphAttributes.color,_=W!==void 0?W.length:0;let K=0;H.morphAttributes.position!==void 0&&(K=1),H.morphAttributes.normal!==void 0&&(K=2),H.morphAttributes.color!==void 0&&(K=3);let cA,IA,hA,DA;if(J){const he=ln[J];cA=he.vertexShader,IA=he.fragmentShader}else cA=m.vertexShader,IA=m.fragmentShader,a.update(m),hA=a.getVertexShaderID(m),DA=a.getFragmentShaderID(m);const TA=e.getRenderTarget(),kA=Z.isInstancedMesh===!0,oe=!!m.map,be=!!m.matcap,_A=!!j,b=!!m.aoMap,Fe=!!m.lightMap,HA=!!m.bumpMap,OA=!!m.normalMap,zA=!!m.displacementMap,Qe=!!m.emissiveMap,ee=!!m.metalnessMap,jA=!!m.roughnessMap,se=m.anisotropy>0,xe=m.clearcoat>0,Ge=m.iridescence>0,R=m.sheen>0,w=m.transmission>0,z=se&&!!m.anisotropyMap,sA=xe&&!!m.clearcoatMap,tA=xe&&!!m.clearcoatNormalMap,rA=xe&&!!m.clearcoatRoughnessMap,vA=Ge&&!!m.iridescenceMap,CA=Ge&&!!m.iridescenceThicknessMap,dA=R&&!!m.sheenColorMap,x=R&&!!m.sheenRoughnessMap,gA=!!m.specularMap,eA=!!m.specularColorMap,YA=!!m.specularIntensityMap,NA=w&&!!m.transmissionMap,UA=w&&!!m.thicknessMap,MA=!!m.gradientMap,F=!!m.alphaMap,lA=m.alphaTest>0,aA=!!m.alphaHash,QA=!!m.extensions,EA=!!H.attributes.uv1,nA=!!H.attributes.uv2,RA=!!H.attributes.uv3;let bA=hi;return m.toneMapped&&(TA===null||TA.isXRRenderTarget===!0)&&(bA=e.toneMapping),{isWebGL2:I,shaderID:J,shaderType:m.type,shaderName:m.name,vertexShader:cA,fragmentShader:IA,defines:m.defines,customVertexShaderID:hA,customFragmentShaderID:DA,isRawShaderMaterial:m.isRawShaderMaterial===!0,glslVersion:m.glslVersion,precision:E,instancing:kA,instancingColor:kA&&Z.instanceColor!==null,supportsVertexTextures:B,outputColorSpace:TA===null?e.outputColorSpace:TA.isXRRenderTarget===!0?TA.texture.colorSpace:Yn,map:oe,matcap:be,envMap:_A,envMapMode:_A&&j.mapping,envMapCubeUVHeight:Y,aoMap:b,lightMap:Fe,bumpMap:HA,normalMap:OA,displacementMap:B&&zA,emissiveMap:Qe,normalMapObjectSpace:OA&&m.normalMapType===VD,normalMapTangentSpace:OA&&m.normalMapType===HB,metalnessMap:ee,roughnessMap:jA,anisotropy:se,anisotropyMap:z,clearcoat:xe,clearcoatMap:sA,clearcoatNormalMap:tA,clearcoatRoughnessMap:rA,iridescence:Ge,iridescenceMap:vA,iridescenceThicknessMap:CA,sheen:R,sheenColorMap:dA,sheenRoughnessMap:x,specularMap:gA,specularColorMap:eA,specularIntensityMap:YA,transmission:w,transmissionMap:NA,thicknessMap:UA,gradientMap:MA,opaque:m.transparent===!1&&m.blending===jr,alphaMap:F,alphaTest:lA,alphaHash:aA,combine:m.combine,mapUv:oe&&h(m.map.channel),aoMapUv:b&&h(m.aoMap.channel),lightMapUv:Fe&&h(m.lightMap.channel),bumpMapUv:HA&&h(m.bumpMap.channel),normalMapUv:OA&&h(m.normalMap.channel),displacementMapUv:zA&&h(m.displacementMap.channel),emissiveMapUv:Qe&&h(m.emissiveMap.channel),metalnessMapUv:ee&&h(m.metalnessMap.channel),roughnessMapUv:jA&&h(m.roughnessMap.channel),anisotropyMapUv:z&&h(m.anisotropyMap.channel),clearcoatMapUv:sA&&h(m.clearcoatMap.channel),clearcoatNormalMapUv:tA&&h(m.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:rA&&h(m.clearcoatRoughnessMap.channel),iridescenceMapUv:vA&&h(m.iridescenceMap.channel),iridescenceThicknessMapUv:CA&&h(m.iridescenceThicknessMap.channel),sheenColorMapUv:dA&&h(m.sheenColorMap.channel),sheenRoughnessMapUv:x&&h(m.sheenRoughnessMap.channel),specularMapUv:gA&&h(m.specularMap.channel),specularColorMapUv:eA&&h(m.specularColorMap.channel),specularIntensityMapUv:YA&&h(m.specularIntensityMap.channel),transmissionMapUv:NA&&h(m.transmissionMap.channel),thicknessMapUv:UA&&h(m.thicknessMap.channel),alphaMapUv:F&&h(m.alphaMap.channel),vertexTangents:!!H.attributes.tangent&&(OA||se),vertexColors:m.vertexColors,vertexAlphas:m.vertexColors===!0&&!!H.attributes.color&&H.attributes.color.itemSize===4,vertexUv1s:EA,vertexUv2s:nA,vertexUv3s:RA,pointsUvs:Z.isPoints===!0&&!!H.attributes.uv&&(oe||F),fog:!!v,useFog:m.fog===!0,fogExp2:v&&v.isFogExp2,flatShading:m.flatShading===!0,sizeAttenuation:m.sizeAttenuation===!0,logarithmicDepthBuffer:C,skinning:Z.isSkinnedMesh===!0,morphTargets:H.morphAttributes.position!==void 0,morphNormals:H.morphAttributes.normal!==void 0,morphColors:H.morphAttributes.color!==void 0,morphTargetsCount:_,morphTextureStride:K,numDirLights:M.directional.length,numPointLights:M.point.length,numSpotLights:M.spot.length,numSpotLightMaps:M.spotLightMap.length,numRectAreaLights:M.rectArea.length,numHemiLights:M.hemi.length,numDirLightShadows:M.directionalShadowMap.length,numPointLightShadows:M.pointShadowMap.length,numSpotLightShadows:M.spotShadowMap.length,numSpotLightShadowsWithMaps:M.numSpotLightShadowsWithMaps,numLightProbes:M.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:m.dithering,shadowMapEnabled:e.shadowMap.enabled&&P.length>0,shadowMapType:e.shadowMap.type,toneMapping:bA,useLegacyLights:e._useLegacyLights,decodeVideoTexture:oe&&m.map.isVideoTexture===!0&&Ee.getTransfer(m.map.colorSpace)===we,premultipliedAlpha:m.premultipliedAlpha,doubleSided:m.side===Fn,flipSided:m.side===ct,useDepthPacking:m.depthPacking>=0,depthPacking:m.depthPacking||0,index0AttributeName:m.index0AttributeName,extensionDerivatives:QA&&m.extensions.derivatives===!0,extensionFragDepth:QA&&m.extensions.fragDepth===!0,extensionDrawBuffers:QA&&m.extensions.drawBuffers===!0,extensionShaderTextureLOD:QA&&m.extensions.shaderTextureLOD===!0,rendererExtensionFragDepth:I||n.has("EXT_frag_depth"),rendererExtensionDrawBuffers:I||n.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:I||n.has("EXT_shader_texture_lod"),customProgramCacheKey:m.customProgramCacheKey()}}function l(m){const M=[];if(m.shaderID?M.push(m.shaderID):(M.push(m.customVertexShaderID),M.push(m.customFragmentShaderID)),m.defines!==void 0)for(const P in m.defines)M.push(P),M.push(m.defines[P]);return m.isRawShaderMaterial===!1&&(u(M,m),Q(M,m),M.push(e.outputColorSpace)),M.push(m.customProgramCacheKey),M.join()}function u(m,M){m.push(M.precision),m.push(M.outputColorSpace),m.push(M.envMapMode),m.push(M.envMapCubeUVHeight),m.push(M.mapUv),m.push(M.alphaMapUv),m.push(M.lightMapUv),m.push(M.aoMapUv),m.push(M.bumpMapUv),m.push(M.normalMapUv),m.push(M.displacementMapUv),m.push(M.emissiveMapUv),m.push(M.metalnessMapUv),m.push(M.roughnessMapUv),m.push(M.anisotropyMapUv),m.push(M.clearcoatMapUv),m.push(M.clearcoatNormalMapUv),m.push(M.clearcoatRoughnessMapUv),m.push(M.iridescenceMapUv),m.push(M.iridescenceThicknessMapUv),m.push(M.sheenColorMapUv),m.push(M.sheenRoughnessMapUv),m.push(M.specularMapUv),m.push(M.specularColorMapUv),m.push(M.specularIntensityMapUv),m.push(M.transmissionMapUv),m.push(M.thicknessMapUv),m.push(M.combine),m.push(M.fogExp2),m.push(M.sizeAttenuation),m.push(M.morphTargetsCount),m.push(M.morphAttributeCount),m.push(M.numDirLights),m.push(M.numPointLights),m.push(M.numSpotLights),m.push(M.numSpotLightMaps),m.push(M.numHemiLights),m.push(M.numRectAreaLights),m.push(M.numDirLightShadows),m.push(M.numPointLightShadows),m.push(M.numSpotLightShadows),m.push(M.numSpotLightShadowsWithMaps),m.push(M.numLightProbes),m.push(M.shadowMapType),m.push(M.toneMapping),m.push(M.numClippingPlanes),m.push(M.numClipIntersection),m.push(M.depthPacking)}function Q(m,M){s.disableAll(),M.isWebGL2&&s.enable(0),M.supportsVertexTextures&&s.enable(1),M.instancing&&s.enable(2),M.instancingColor&&s.enable(3),M.matcap&&s.enable(4),M.envMap&&s.enable(5),M.normalMapObjectSpace&&s.enable(6),M.normalMapTangentSpace&&s.enable(7),M.clearcoat&&s.enable(8),M.iridescence&&s.enable(9),M.alphaTest&&s.enable(10),M.vertexColors&&s.enable(11),M.vertexAlphas&&s.enable(12),M.vertexUv1s&&s.enable(13),M.vertexUv2s&&s.enable(14),M.vertexUv3s&&s.enable(15),M.vertexTangents&&s.enable(16),M.anisotropy&&s.enable(17),m.push(s.mask),s.disableAll(),M.fog&&s.enable(0),M.useFog&&s.enable(1),M.flatShading&&s.enable(2),M.logarithmicDepthBuffer&&s.enable(3),M.skinning&&s.enable(4),M.morphTargets&&s.enable(5),M.morphNormals&&s.enable(6),M.morphColors&&s.enable(7),M.premultipliedAlpha&&s.enable(8),M.shadowMapEnabled&&s.enable(9),M.useLegacyLights&&s.enable(10),M.doubleSided&&s.enable(11),M.flipSided&&s.enable(12),M.useDepthPacking&&s.enable(13),M.dithering&&s.enable(14),M.transmission&&s.enable(15),M.sheen&&s.enable(16),M.opaque&&s.enable(17),M.pointsUvs&&s.enable(18),M.decodeVideoTexture&&s.enable(19),m.push(s.mask)}function p(m){const M=d[m.type];let P;if(M){const X=ln[M];P=kS.clone(X.uniforms)}else P=m.uniforms;return P}function D(m,M){let P;for(let X=0,Z=g.length;X0?n.push(l):E.transparent===!0?i.push(l):t.push(l)}function a(C,B,E,d,h,c){const l=o(C,B,E,d,h,c);E.transmission>0?n.unshift(l):E.transparent===!0?i.unshift(l):t.unshift(l)}function g(C,B){t.length>1&&t.sort(C||ZN),n.length>1&&n.sort(B||Wu),i.length>1&&i.sort(B||Wu)}function I(){for(let C=A,B=e.length;C=r.length?(o=new zu,r.push(o)):o=r[i],o}function t(){e=new WeakMap}return{get:A,dispose:t}}function AF(){const e={};return{get:function(A){if(e[A.id]!==void 0)return e[A.id];let t;switch(A.type){case"DirectionalLight":t={direction:new k,color:new ue};break;case"SpotLight":t={position:new k,direction:new k,color:new ue,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new k,color:new ue,distance:0,decay:0};break;case"HemisphereLight":t={direction:new k,skyColor:new ue,groundColor:new ue};break;case"RectAreaLight":t={color:new ue,position:new k,halfWidth:new k,halfHeight:new k};break}return e[A.id]=t,t}}}function eF(){const e={};return{get:function(A){if(e[A.id]!==void 0)return e[A.id];let t;switch(A.type){case"DirectionalLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new qA};break;case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new qA};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new qA,shadowCameraNear:1,shadowCameraFar:1e3};break}return e[A.id]=t,t}}}let tF=0;function nF(e,A){return(A.castShadow?2:0)-(e.castShadow?2:0)+(A.map?1:0)-(e.map?1:0)}function iF(e,A){const t=new AF,n=eF(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let I=0;I<9;I++)i.probe.push(new k);const r=new k,o=new Ie,s=new Ie;function a(I,C){let B=0,E=0,d=0;for(let X=0;X<9;X++)i.probe[X].set(0,0,0);let h=0,c=0,l=0,u=0,Q=0,p=0,D=0,f=0,y=0,N=0,m=0;I.sort(nF);const M=C===!0?Math.PI:1;for(let X=0,Z=I.length;X0&&(A.isWebGL2||e.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=uA.LTC_FLOAT_1,i.rectAreaLTC2=uA.LTC_FLOAT_2):e.has("OES_texture_half_float_linear")===!0?(i.rectAreaLTC1=uA.LTC_HALF_1,i.rectAreaLTC2=uA.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),i.ambient[0]=B,i.ambient[1]=E,i.ambient[2]=d;const P=i.hash;(P.directionalLength!==h||P.pointLength!==c||P.spotLength!==l||P.rectAreaLength!==u||P.hemiLength!==Q||P.numDirectionalShadows!==p||P.numPointShadows!==D||P.numSpotShadows!==f||P.numSpotMaps!==y||P.numLightProbes!==m)&&(i.directional.length=h,i.spot.length=l,i.rectArea.length=u,i.point.length=c,i.hemi.length=Q,i.directionalShadow.length=p,i.directionalShadowMap.length=p,i.pointShadow.length=D,i.pointShadowMap.length=D,i.spotShadow.length=f,i.spotShadowMap.length=f,i.directionalShadowMatrix.length=p,i.pointShadowMatrix.length=D,i.spotLightMatrix.length=f+y-N,i.spotLightMap.length=y,i.numSpotLightShadowsWithMaps=N,i.numLightProbes=m,P.directionalLength=h,P.pointLength=c,P.spotLength=l,P.rectAreaLength=u,P.hemiLength=Q,P.numDirectionalShadows=p,P.numPointShadows=D,P.numSpotShadows=f,P.numSpotMaps=y,P.numLightProbes=m,i.version=tF++)}function g(I,C){let B=0,E=0,d=0,h=0,c=0;const l=C.matrixWorldInverse;for(let u=0,Q=I.length;u=s.length?(a=new qu(e,A),s.push(a)):a=s[o],a}function i(){t=new WeakMap}return{get:n,dispose:i}}class oF extends ho{constructor(A){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=zD,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(A)}copy(A){return super.copy(A),this.depthPacking=A.depthPacking,this.map=A.map,this.alphaMap=A.alphaMap,this.displacementMap=A.displacementMap,this.displacementScale=A.displacementScale,this.displacementBias=A.displacementBias,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this}}class sF extends ho{constructor(A){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(A)}copy(A){return super.copy(A),this.map=A.map,this.alphaMap=A.alphaMap,this.displacementMap=A.displacementMap,this.displacementScale=A.displacementScale,this.displacementBias=A.displacementBias,this}}const aF=`void main() { + gl_Position = vec4( position, 1.0 ); +}`,gF=`uniform sampler2D shadow_pass; +uniform vec2 resolution; +uniform float radius; +#include +void main() { + const float samples = float( VSM_SAMPLES ); + float mean = 0.0; + float squared_mean = 0.0; + float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); + float uvStart = samples <= 1.0 ? 0.0 : - 1.0; + for ( float i = 0.0; i < samples; i ++ ) { + float uvOffset = uvStart + i * uvStride; + #ifdef HORIZONTAL_PASS + vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) ); + mean += distribution.x; + squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; + #else + float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) ); + mean += depth; + squared_mean += depth * depth; + #endif + } + mean = mean / samples; + squared_mean = squared_mean / samples; + float std_dev = sqrt( squared_mean - mean * mean ); + gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); +}`;function IF(e,A,t){let n=new KB;const i=new qA,r=new qA,o=new Pe,s=new oF({depthPacking:qD}),a=new sF,g={},I=t.maxTextureSize,C={[On]:ct,[ct]:On,[Fn]:Fn},B=new fn({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new qA},radius:{value:4}},vertexShader:aF,fragmentShader:gF}),E=B.clone();E.defines.HORIZONTAL_PASS=1;const d=new Jn;d.setAttribute("position",new St(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const h=new Jt(d,B),c=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=sf;let l=this.type;this.render=function(D,f,y){if(c.enabled===!1||c.autoUpdate===!1&&c.needsUpdate===!1||D.length===0)return;const N=e.getRenderTarget(),m=e.getActiveCubeFace(),M=e.getActiveMipmapLevel(),P=e.state;P.setBlending(Qn),P.buffers.color.setClear(1,1,1,1),P.buffers.depth.setTest(!0),P.setScissorTest(!1);const X=l!==Rn&&this.type===Rn,Z=l===Rn&&this.type!==Rn;for(let v=0,H=D.length;vI||i.y>I)&&(i.x>I&&(r.x=Math.floor(I/Y.x),i.x=r.x*Y.x,j.mapSize.x=r.x),i.y>I&&(r.y=Math.floor(I/Y.y),i.y=r.y*Y.y,j.mapSize.y=r.y)),j.map===null||X===!0||Z===!0){const W=this.type!==Rn?{minFilter:ye,magFilter:ye}:{};j.map!==null&&j.map.dispose(),j.map=new Ar(i.x,i.y,W),j.map.texture.name=$.name+".shadowMap",j.camera.updateProjectionMatrix()}e.setRenderTarget(j.map),e.clear();const J=j.getViewportCount();for(let W=0;W0||f.map&&f.alphaTest>0){const P=m.uuid,X=f.uuid;let Z=g[P];Z===void 0&&(Z={},g[P]=Z);let v=Z[X];v===void 0&&(v=m.clone(),Z[X]=v),m=v}if(m.visible=f.visible,m.wireframe=f.wireframe,N===Rn?m.side=f.shadowSide!==null?f.shadowSide:f.side:m.side=f.shadowSide!==null?f.shadowSide:C[f.side],m.alphaMap=f.alphaMap,m.alphaTest=f.alphaTest,m.map=f.map,m.clipShadows=f.clipShadows,m.clippingPlanes=f.clippingPlanes,m.clipIntersection=f.clipIntersection,m.displacementMap=f.displacementMap,m.displacementScale=f.displacementScale,m.displacementBias=f.displacementBias,m.wireframeLinewidth=f.wireframeLinewidth,m.linewidth=f.linewidth,y.isPointLight===!0&&m.isMeshDistanceMaterial===!0){const P=e.properties.get(m);P.light=y}return m}function p(D,f,y,N,m){if(D.visible===!1)return;if(D.layers.test(f.layers)&&(D.isMesh||D.isLine||D.isPoints)&&(D.castShadow||D.receiveShadow&&m===Rn)&&(!D.frustumCulled||n.intersectsObject(D))){D.modelViewMatrix.multiplyMatrices(y.matrixWorldInverse,D.matrixWorld);const X=A.update(D),Z=D.material;if(Array.isArray(Z)){const v=X.groups;for(let H=0,$=v.length;H<$;H++){const j=v[H],Y=Z[j.materialIndex];if(Y&&Y.visible){const J=Q(D,Y,N,m);e.renderBufferDirect(y,null,X,J,D,j)}}}else if(Z.visible){const v=Q(D,Z,N,m);e.renderBufferDirect(y,null,X,v,D,null)}}const P=D.children;for(let X=0,Z=P.length;X=1):Y.indexOf("OpenGL ES")!==-1&&(j=parseFloat(/^OpenGL ES (\d)/.exec(Y)[1]),$=j>=2);let J=null,W={};const _=e.getParameter(e.SCISSOR_BOX),K=e.getParameter(e.VIEWPORT),cA=new Pe().fromArray(_),IA=new Pe().fromArray(K);function hA(F,lA,aA,QA){const EA=new Uint8Array(4),nA=e.createTexture();e.bindTexture(F,nA),e.texParameteri(F,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(F,e.TEXTURE_MAG_FILTER,e.NEAREST);for(let RA=0;RA"u"?!1:/OculusBrowser/g.test(navigator.userAgent),d=new WeakMap;let h;const c=new WeakMap;let l=!1;try{l=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function u(R,w){return l?new OffscreenCanvas(R,w):wg("canvas")}function Q(R,w,z,sA){let tA=1;if((R.width>sA||R.height>sA)&&(tA=sA/Math.max(R.width,R.height)),tA<1||w===!0)if(typeof HTMLImageElement<"u"&&R instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&R instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&R instanceof ImageBitmap){const rA=w?mg:Math.floor,vA=rA(tA*R.width),CA=rA(tA*R.height);h===void 0&&(h=u(vA,CA));const dA=z?u(vA,CA):h;return dA.width=vA,dA.height=CA,dA.getContext("2d").drawImage(R,0,0,vA,CA),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+R.width+"x"+R.height+") to ("+vA+"x"+CA+")."),dA}else return"data"in R&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+R.width+"x"+R.height+")."),R;return R}function p(R){return Ml(R.width)&&Ml(R.height)}function D(R){return s?!1:R.wrapS!==Ye||R.wrapT!==Ye||R.minFilter!==ye&&R.minFilter!==Kt}function f(R,w){return R.generateMipmaps&&w&&R.minFilter!==ye&&R.minFilter!==Kt}function y(R){e.generateMipmap(R)}function N(R,w,z,sA,tA=!1){if(s===!1)return w;if(R!==null){if(e[R]!==void 0)return e[R];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+R+"'")}let rA=w;if(w===e.RED&&(z===e.FLOAT&&(rA=e.R32F),z===e.HALF_FLOAT&&(rA=e.R16F),z===e.UNSIGNED_BYTE&&(rA=e.R8)),w===e.RED_INTEGER&&(z===e.UNSIGNED_BYTE&&(rA=e.R8UI),z===e.UNSIGNED_SHORT&&(rA=e.R16UI),z===e.UNSIGNED_INT&&(rA=e.R32UI),z===e.BYTE&&(rA=e.R8I),z===e.SHORT&&(rA=e.R16I),z===e.INT&&(rA=e.R32I)),w===e.RG&&(z===e.FLOAT&&(rA=e.RG32F),z===e.HALF_FLOAT&&(rA=e.RG16F),z===e.UNSIGNED_BYTE&&(rA=e.RG8)),w===e.RGBA){const vA=tA?hg:Ee.getTransfer(sA);z===e.FLOAT&&(rA=e.RGBA32F),z===e.HALF_FLOAT&&(rA=e.RGBA16F),z===e.UNSIGNED_BYTE&&(rA=vA===we?e.SRGB8_ALPHA8:e.RGBA8),z===e.UNSIGNED_SHORT_4_4_4_4&&(rA=e.RGBA4),z===e.UNSIGNED_SHORT_5_5_5_1&&(rA=e.RGB5_A1)}return(rA===e.R16F||rA===e.R32F||rA===e.RG16F||rA===e.RG32F||rA===e.RGBA16F||rA===e.RGBA32F)&&A.get("EXT_color_buffer_float"),rA}function m(R,w,z){return f(R,z)===!0||R.isFramebufferTexture&&R.minFilter!==ye&&R.minFilter!==Kt?Math.log2(Math.max(w.width,w.height))+1:R.mipmaps!==void 0&&R.mipmaps.length>0?R.mipmaps.length:R.isCompressedTexture&&Array.isArray(R.image)?w.mipmaps.length:1}function M(R){return R===ye||R===Tc||R===TI?e.NEAREST:e.LINEAR}function P(R){const w=R.target;w.removeEventListener("dispose",P),Z(w),w.isVideoTexture&&d.delete(w)}function X(R){const w=R.target;w.removeEventListener("dispose",X),H(w)}function Z(R){const w=n.get(R);if(w.__webglInit===void 0)return;const z=R.source,sA=c.get(z);if(sA){const tA=sA[w.__cacheKey];tA.usedTimes--,tA.usedTimes===0&&v(R),Object.keys(sA).length===0&&c.delete(z)}n.remove(R)}function v(R){const w=n.get(R);e.deleteTexture(w.__webglTexture);const z=R.source,sA=c.get(z);delete sA[w.__cacheKey],o.memory.textures--}function H(R){const w=R.texture,z=n.get(R),sA=n.get(w);if(sA.__webglTexture!==void 0&&(e.deleteTexture(sA.__webglTexture),o.memory.textures--),R.depthTexture&&R.depthTexture.dispose(),R.isWebGLCubeRenderTarget)for(let tA=0;tA<6;tA++){if(Array.isArray(z.__webglFramebuffer[tA]))for(let rA=0;rA=a&&console.warn("THREE.WebGLTextures: Trying to use "+R+" texture units while this GPU supports only "+a),$+=1,R}function J(R){const w=[];return w.push(R.wrapS),w.push(R.wrapT),w.push(R.wrapR||0),w.push(R.magFilter),w.push(R.minFilter),w.push(R.anisotropy),w.push(R.internalFormat),w.push(R.format),w.push(R.type),w.push(R.generateMipmaps),w.push(R.premultiplyAlpha),w.push(R.flipY),w.push(R.unpackAlignment),w.push(R.colorSpace),w.join()}function W(R,w){const z=n.get(R);if(R.isVideoTexture&&xe(R),R.isRenderTargetTexture===!1&&R.version>0&&z.__version!==R.version){const sA=R.image;if(sA===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(sA.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{oe(z,R,w);return}}t.bindTexture(e.TEXTURE_2D,z.__webglTexture,e.TEXTURE0+w)}function _(R,w){const z=n.get(R);if(R.version>0&&z.__version!==R.version){oe(z,R,w);return}t.bindTexture(e.TEXTURE_2D_ARRAY,z.__webglTexture,e.TEXTURE0+w)}function K(R,w){const z=n.get(R);if(R.version>0&&z.__version!==R.version){oe(z,R,w);return}t.bindTexture(e.TEXTURE_3D,z.__webglTexture,e.TEXTURE0+w)}function cA(R,w){const z=n.get(R);if(R.version>0&&z.__version!==R.version){be(z,R,w);return}t.bindTexture(e.TEXTURE_CUBE_MAP,z.__webglTexture,e.TEXTURE0+w)}const IA={[wl]:e.REPEAT,[Ye]:e.CLAMP_TO_EDGE,[yl]:e.MIRRORED_REPEAT},hA={[ye]:e.NEAREST,[Tc]:e.NEAREST_MIPMAP_NEAREST,[TI]:e.NEAREST_MIPMAP_LINEAR,[Kt]:e.LINEAR,[TD]:e.LINEAR_MIPMAP_NEAREST,[go]:e.LINEAR_MIPMAP_LINEAR},DA={[XD]:e.NEVER,[iS]:e.ALWAYS,[ZD]:e.LESS,[AS]:e.LEQUAL,[$D]:e.EQUAL,[nS]:e.GEQUAL,[eS]:e.GREATER,[tS]:e.NOTEQUAL};function TA(R,w,z){if(z?(e.texParameteri(R,e.TEXTURE_WRAP_S,IA[w.wrapS]),e.texParameteri(R,e.TEXTURE_WRAP_T,IA[w.wrapT]),(R===e.TEXTURE_3D||R===e.TEXTURE_2D_ARRAY)&&e.texParameteri(R,e.TEXTURE_WRAP_R,IA[w.wrapR]),e.texParameteri(R,e.TEXTURE_MAG_FILTER,hA[w.magFilter]),e.texParameteri(R,e.TEXTURE_MIN_FILTER,hA[w.minFilter])):(e.texParameteri(R,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(R,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),(R===e.TEXTURE_3D||R===e.TEXTURE_2D_ARRAY)&&e.texParameteri(R,e.TEXTURE_WRAP_R,e.CLAMP_TO_EDGE),(w.wrapS!==Ye||w.wrapT!==Ye)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),e.texParameteri(R,e.TEXTURE_MAG_FILTER,M(w.magFilter)),e.texParameteri(R,e.TEXTURE_MIN_FILTER,M(w.minFilter)),w.minFilter!==ye&&w.minFilter!==Kt&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),w.compareFunction&&(e.texParameteri(R,e.TEXTURE_COMPARE_MODE,e.COMPARE_REF_TO_TEXTURE),e.texParameteri(R,e.TEXTURE_COMPARE_FUNC,DA[w.compareFunction])),A.has("EXT_texture_filter_anisotropic")===!0){const sA=A.get("EXT_texture_filter_anisotropic");if(w.magFilter===ye||w.minFilter!==TI&&w.minFilter!==go||w.type===si&&A.has("OES_texture_float_linear")===!1||s===!1&&w.type===Io&&A.has("OES_texture_half_float_linear")===!1)return;(w.anisotropy>1||n.get(w).__currentAnisotropy)&&(e.texParameterf(R,sA.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(w.anisotropy,i.getMaxAnisotropy())),n.get(w).__currentAnisotropy=w.anisotropy)}}function kA(R,w){let z=!1;R.__webglInit===void 0&&(R.__webglInit=!0,w.addEventListener("dispose",P));const sA=w.source;let tA=c.get(sA);tA===void 0&&(tA={},c.set(sA,tA));const rA=J(w);if(rA!==R.__cacheKey){tA[rA]===void 0&&(tA[rA]={texture:e.createTexture(),usedTimes:0},o.memory.textures++,z=!0),tA[rA].usedTimes++;const vA=tA[R.__cacheKey];vA!==void 0&&(tA[R.__cacheKey].usedTimes--,vA.usedTimes===0&&v(w)),R.__cacheKey=rA,R.__webglTexture=tA[rA].texture}return z}function oe(R,w,z){let sA=e.TEXTURE_2D;(w.isDataArrayTexture||w.isCompressedArrayTexture)&&(sA=e.TEXTURE_2D_ARRAY),w.isData3DTexture&&(sA=e.TEXTURE_3D);const tA=kA(R,w),rA=w.source;t.bindTexture(sA,R.__webglTexture,e.TEXTURE0+z);const vA=n.get(rA);if(rA.version!==vA.__version||tA===!0){t.activeTexture(e.TEXTURE0+z);const CA=Ee.getPrimaries(Ee.workingColorSpace),dA=w.colorSpace===st?null:Ee.getPrimaries(w.colorSpace),x=w.colorSpace===st||CA===dA?e.NONE:e.BROWSER_DEFAULT_WEBGL;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,w.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,w.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,w.unpackAlignment),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,x);const gA=D(w)&&p(w.image)===!1;let eA=Q(w.image,gA,!1,I);eA=Ge(w,eA);const YA=p(eA)||s,NA=r.convert(w.format,w.colorSpace);let UA=r.convert(w.type),MA=N(w.internalFormat,NA,UA,w.colorSpace,w.isVideoTexture);TA(sA,w,YA);let F;const lA=w.mipmaps,aA=s&&w.isVideoTexture!==!0,QA=vA.__version===void 0||tA===!0,EA=m(w,eA,YA);if(w.isDepthTexture)MA=e.DEPTH_COMPONENT,s?w.type===si?MA=e.DEPTH_COMPONENT32F:w.type===En?MA=e.DEPTH_COMPONENT24:w.type===Ji?MA=e.DEPTH24_STENCIL8:MA=e.DEPTH_COMPONENT16:w.type===si&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),w.format===Wi&&MA===e.DEPTH_COMPONENT&&w.type!==UB&&w.type!==En&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),w.type=En,UA=r.convert(w.type)),w.format===Co&&MA===e.DEPTH_COMPONENT&&(MA=e.DEPTH_STENCIL,w.type!==Ji&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),w.type=Ji,UA=r.convert(w.type))),QA&&(aA?t.texStorage2D(e.TEXTURE_2D,1,MA,eA.width,eA.height):t.texImage2D(e.TEXTURE_2D,0,MA,eA.width,eA.height,0,NA,UA,null));else if(w.isDataTexture)if(lA.length>0&&YA){aA&&QA&&t.texStorage2D(e.TEXTURE_2D,EA,MA,lA[0].width,lA[0].height);for(let nA=0,RA=lA.length;nA>=1,RA>>=1}}else if(lA.length>0&&YA){aA&&QA&&t.texStorage2D(e.TEXTURE_2D,EA,MA,lA[0].width,lA[0].height);for(let nA=0,RA=lA.length;nA0&&QA++,t.texStorage2D(e.TEXTURE_CUBE_MAP,QA,F,eA[0].width,eA[0].height));for(let nA=0;nA<6;nA++)if(gA){lA?t.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+nA,0,0,0,eA[nA].width,eA[nA].height,UA,MA,eA[nA].data):t.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+nA,0,F,eA[nA].width,eA[nA].height,0,UA,MA,eA[nA].data);for(let RA=0;RA>rA),eA=Math.max(1,w.height>>rA);tA===e.TEXTURE_3D||tA===e.TEXTURE_2D_ARRAY?t.texImage3D(tA,rA,dA,gA,eA,w.depth,0,vA,CA,null):t.texImage2D(tA,rA,dA,gA,eA,0,vA,CA,null)}t.bindFramebuffer(e.FRAMEBUFFER,R),se(w)?B.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,sA,tA,n.get(z).__webglTexture,0,jA(w)):(tA===e.TEXTURE_2D||tA>=e.TEXTURE_CUBE_MAP_POSITIVE_X&&tA<=e.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&e.framebufferTexture2D(e.FRAMEBUFFER,sA,tA,n.get(z).__webglTexture,rA),t.bindFramebuffer(e.FRAMEBUFFER,null)}function b(R,w,z){if(e.bindRenderbuffer(e.RENDERBUFFER,R),w.depthBuffer&&!w.stencilBuffer){let sA=s===!0?e.DEPTH_COMPONENT24:e.DEPTH_COMPONENT16;if(z||se(w)){const tA=w.depthTexture;tA&&tA.isDepthTexture&&(tA.type===si?sA=e.DEPTH_COMPONENT32F:tA.type===En&&(sA=e.DEPTH_COMPONENT24));const rA=jA(w);se(w)?B.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,rA,sA,w.width,w.height):e.renderbufferStorageMultisample(e.RENDERBUFFER,rA,sA,w.width,w.height)}else e.renderbufferStorage(e.RENDERBUFFER,sA,w.width,w.height);e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,R)}else if(w.depthBuffer&&w.stencilBuffer){const sA=jA(w);z&&se(w)===!1?e.renderbufferStorageMultisample(e.RENDERBUFFER,sA,e.DEPTH24_STENCIL8,w.width,w.height):se(w)?B.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,sA,e.DEPTH24_STENCIL8,w.width,w.height):e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_STENCIL,w.width,w.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,R)}else{const sA=w.isWebGLMultipleRenderTargets===!0?w.texture:[w.texture];for(let tA=0;tA0){z.__webglFramebuffer[CA]=[];for(let dA=0;dA0){z.__webglFramebuffer=[];for(let CA=0;CA0&&se(R)===!1){const CA=rA?w:[w];z.__webglMultisampledFramebuffer=e.createFramebuffer(),z.__webglColorRenderbuffer=[],t.bindFramebuffer(e.FRAMEBUFFER,z.__webglMultisampledFramebuffer);for(let dA=0;dA0)for(let dA=0;dA0)for(let dA=0;dA0&&se(R)===!1){const w=R.isWebGLMultipleRenderTargets?R.texture:[R.texture],z=R.width,sA=R.height;let tA=e.COLOR_BUFFER_BIT;const rA=[],vA=R.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,CA=n.get(R),dA=R.isWebGLMultipleRenderTargets===!0;if(dA)for(let x=0;x0&&A.has("WEBGL_multisampled_render_to_texture")===!0&&w.__useRenderToTexture!==!1}function xe(R){const w=o.render.frame;d.get(R)!==w&&(d.set(R,w),R.update())}function Ge(R,w){const z=R.colorSpace,sA=R.format,tA=R.type;return R.isCompressedTexture===!0||R.isVideoTexture===!0||R.format===Sl||z!==Yn&&z!==st&&(Ee.getTransfer(z)===we?s===!1?A.has("EXT_sRGB")===!0&&sA===on?(R.format=Sl,R.minFilter=Kt,R.generateMipmaps=!1):w=uf.sRGBToLinear(w):(sA!==on||tA!==Gn)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",z)),w}this.allocateTextureUnit=Y,this.resetTextureUnits=j,this.setTexture2D=W,this.setTexture2DArray=_,this.setTexture3D=K,this.setTextureCube=cA,this.rebindTextures=OA,this.setupRenderTarget=zA,this.updateRenderTargetMipmap=Qe,this.updateMultisampleRenderTarget=ee,this.setupDepthRenderbuffer=HA,this.setupFrameBufferTexture=_A,this.useMultisampledRTT=se}function BF(e,A,t){const n=t.isWebGL2;function i(r,o=st){let s;const a=Ee.getTransfer(o);if(r===Gn)return e.UNSIGNED_BYTE;if(r===Cf)return e.UNSIGNED_SHORT_4_4_4_4;if(r===lf)return e.UNSIGNED_SHORT_5_5_5_1;if(r===kD)return e.BYTE;if(r===HD)return e.SHORT;if(r===UB)return e.UNSIGNED_SHORT;if(r===GB)return e.INT;if(r===En)return e.UNSIGNED_INT;if(r===si)return e.FLOAT;if(r===Io)return n?e.HALF_FLOAT:(s=A.get("OES_texture_half_float"),s!==null?s.HALF_FLOAT_OES:null);if(r===bD)return e.ALPHA;if(r===on)return e.RGBA;if(r===OD)return e.LUMINANCE;if(r===YD)return e.LUMINANCE_ALPHA;if(r===Wi)return e.DEPTH_COMPONENT;if(r===Co)return e.DEPTH_STENCIL;if(r===Sl)return s=A.get("EXT_sRGB"),s!==null?s.SRGB_ALPHA_EXT:null;if(r===KD)return e.RED;if(r===Bf)return e.RED_INTEGER;if(r===PD)return e.RG;if(r===TB)return e.RG_INTEGER;if(r===kB)return e.RGBA_INTEGER;if(r===kI||r===HI||r===bI||r===OI)if(a===we)if(s=A.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(r===kI)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(r===HI)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(r===bI)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(r===OI)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=A.get("WEBGL_compressed_texture_s3tc"),s!==null){if(r===kI)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(r===HI)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(r===bI)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(r===OI)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(r===kc||r===Hc||r===bc||r===Oc)if(s=A.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(r===kc)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(r===Hc)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(r===bc)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(r===Oc)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(r===JD)return s=A.get("WEBGL_compressed_texture_etc1"),s!==null?s.COMPRESSED_RGB_ETC1_WEBGL:null;if(r===Yc||r===Kc)if(s=A.get("WEBGL_compressed_texture_etc"),s!==null){if(r===Yc)return a===we?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(r===Kc)return a===we?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(r===Pc||r===Jc||r===Wc||r===zc||r===qc||r===Vc||r===jc||r===Xc||r===Zc||r===$c||r===Au||r===eu||r===tu||r===nu)if(s=A.get("WEBGL_compressed_texture_astc"),s!==null){if(r===Pc)return a===we?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(r===Jc)return a===we?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(r===Wc)return a===we?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(r===zc)return a===we?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(r===qc)return a===we?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(r===Vc)return a===we?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(r===jc)return a===we?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(r===Xc)return a===we?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(r===Zc)return a===we?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(r===$c)return a===we?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(r===Au)return a===we?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(r===eu)return a===we?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(r===tu)return a===we?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(r===nu)return a===we?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(r===YI||r===iu||r===ru)if(s=A.get("EXT_texture_compression_bptc"),s!==null){if(r===YI)return a===we?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(r===iu)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(r===ru)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(r===WD||r===ou||r===su||r===au)if(s=A.get("EXT_texture_compression_rgtc"),s!==null){if(r===YI)return s.COMPRESSED_RED_RGTC1_EXT;if(r===ou)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(r===su)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(r===au)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return r===Ji?n?e.UNSIGNED_INT_24_8:(s=A.get("WEBGL_depth_texture"),s!==null?s.UNSIGNED_INT_24_8_WEBGL:null):e[r]!==void 0?e[r]:null}return{convert:i}}class EF extends rn{constructor(A=[]){super(),this.isArrayCamera=!0,this.cameras=A}}class ha extends at{constructor(){super(),this.isGroup=!0,this.type="Group"}}const cF={type:"move"};class IC{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new ha,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new ha,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new k,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new k),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new ha,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new k,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new k),this._grip}dispatchEvent(A){return this._targetRay!==null&&this._targetRay.dispatchEvent(A),this._grip!==null&&this._grip.dispatchEvent(A),this._hand!==null&&this._hand.dispatchEvent(A),this}connect(A){if(A&&A.hand){const t=this._hand;if(t)for(const n of A.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:"connected",data:A}),this}disconnect(A){return this.dispatchEvent({type:"disconnected",data:A}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(A,t,n){let i=null,r=null,o=null;const s=this._targetRay,a=this._grip,g=this._hand;if(A&&t.session.visibilityState!=="visible-blurred"){if(g&&A.hand){o=!0;for(const h of A.hand.values()){const c=t.getJointPose(h,n),l=this._getHandJoint(g,h);c!==null&&(l.matrix.fromArray(c.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,l.jointRadius=c.radius),l.visible=c!==null}const I=g.joints["index-finger-tip"],C=g.joints["thumb-tip"],B=I.position.distanceTo(C.position),E=.02,d=.005;g.inputState.pinching&&B>E+d?(g.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:A.handedness,target:this})):!g.inputState.pinching&&B<=E-d&&(g.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:A.handedness,target:this}))}else a!==null&&A.gripSpace&&(r=t.getPose(A.gripSpace,n),r!==null&&(a.matrix.fromArray(r.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,r.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(r.linearVelocity)):a.hasLinearVelocity=!1,r.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(r.angularVelocity)):a.hasAngularVelocity=!1));s!==null&&(i=t.getPose(A.targetRaySpace,n),i===null&&r!==null&&(i=r),i!==null&&(s.matrix.fromArray(i.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale),s.matrixWorldNeedsUpdate=!0,i.linearVelocity?(s.hasLinearVelocity=!0,s.linearVelocity.copy(i.linearVelocity)):s.hasLinearVelocity=!1,i.angularVelocity?(s.hasAngularVelocity=!0,s.angularVelocity.copy(i.angularVelocity)):s.hasAngularVelocity=!1,this.dispatchEvent(cF)))}return s!==null&&(s.visible=i!==null),a!==null&&(a.visible=r!==null),g!==null&&(g.visible=o!==null),this}_getHandJoint(A,t){if(A.joints[t.jointName]===void 0){const n=new ha;n.matrixAutoUpdate=!1,n.visible=!1,A.joints[t.jointName]=n,A.add(n)}return A.joints[t.jointName]}}class uF extends Dt{constructor(A,t,n,i,r,o,s,a,g,I){if(I=I!==void 0?I:Wi,I!==Wi&&I!==Co)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&I===Wi&&(n=En),n===void 0&&I===Co&&(n=Ji),super(null,i,r,o,s,a,I,n,g),this.isDepthTexture=!0,this.image={width:A,height:t},this.magFilter=s!==void 0?s:ye,this.minFilter=a!==void 0?a:ye,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(A){return super.copy(A),this.compareFunction=A.compareFunction,this}toJSON(A){const t=super.toJSON(A);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class QF extends rr{constructor(A,t){super();const n=this;let i=null,r=1,o=null,s="local-floor",a=1,g=null,I=null,C=null,B=null,E=null,d=null;const h=t.getContextAttributes();let c=null,l=null;const u=[],Q=[],p=new rn;p.layers.enable(1),p.viewport=new Pe;const D=new rn;D.layers.enable(2),D.viewport=new Pe;const f=[p,D],y=new EF;y.layers.enable(1),y.layers.enable(2);let N=null,m=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(_){let K=u[_];return K===void 0&&(K=new IC,u[_]=K),K.getTargetRaySpace()},this.getControllerGrip=function(_){let K=u[_];return K===void 0&&(K=new IC,u[_]=K),K.getGripSpace()},this.getHand=function(_){let K=u[_];return K===void 0&&(K=new IC,u[_]=K),K.getHandSpace()};function M(_){const K=Q.indexOf(_.inputSource);if(K===-1)return;const cA=u[K];cA!==void 0&&(cA.update(_.inputSource,_.frame,g||o),cA.dispatchEvent({type:_.type,data:_.inputSource}))}function P(){i.removeEventListener("select",M),i.removeEventListener("selectstart",M),i.removeEventListener("selectend",M),i.removeEventListener("squeeze",M),i.removeEventListener("squeezestart",M),i.removeEventListener("squeezeend",M),i.removeEventListener("end",P),i.removeEventListener("inputsourceschange",X);for(let _=0;_=0&&(Q[IA]=null,u[IA].disconnect(cA))}for(let K=0;K<_.added.length;K++){const cA=_.added[K];let IA=Q.indexOf(cA);if(IA===-1){for(let DA=0;DA=Q.length){Q.push(cA),IA=DA;break}else if(Q[DA]===null){Q[DA]=cA,IA=DA;break}if(IA===-1)break}const hA=u[IA];hA&&hA.connect(cA)}}const Z=new k,v=new k;function H(_,K,cA){Z.setFromMatrixPosition(K.matrixWorld),v.setFromMatrixPosition(cA.matrixWorld);const IA=Z.distanceTo(v),hA=K.projectionMatrix.elements,DA=cA.projectionMatrix.elements,TA=hA[14]/(hA[10]-1),kA=hA[14]/(hA[10]+1),oe=(hA[9]+1)/hA[5],be=(hA[9]-1)/hA[5],_A=(hA[8]-1)/hA[0],b=(DA[8]+1)/DA[0],Fe=TA*_A,HA=TA*b,OA=IA/(-_A+b),zA=OA*-_A;K.matrixWorld.decompose(_.position,_.quaternion,_.scale),_.translateX(zA),_.translateZ(OA),_.matrixWorld.compose(_.position,_.quaternion,_.scale),_.matrixWorldInverse.copy(_.matrixWorld).invert();const Qe=TA+OA,ee=kA+OA,jA=Fe-zA,se=HA+(IA-zA),xe=oe*kA/ee*Qe,Ge=be*kA/ee*Qe;_.projectionMatrix.makePerspective(jA,se,xe,Ge,Qe,ee),_.projectionMatrixInverse.copy(_.projectionMatrix).invert()}function $(_,K){K===null?_.matrixWorld.copy(_.matrix):_.matrixWorld.multiplyMatrices(K.matrixWorld,_.matrix),_.matrixWorldInverse.copy(_.matrixWorld).invert()}this.updateCamera=function(_){if(i===null)return;y.near=D.near=p.near=_.near,y.far=D.far=p.far=_.far,(N!==y.near||m!==y.far)&&(i.updateRenderState({depthNear:y.near,depthFar:y.far}),N=y.near,m=y.far);const K=_.parent,cA=y.cameras;$(y,K);for(let IA=0;IA0&&(c.alphaTest.value=l.alphaTest);const u=A.get(l).envMap;if(u&&(c.envMap.value=u,c.flipEnvMap.value=u.isCubeTexture&&u.isRenderTargetTexture===!1?-1:1,c.reflectivity.value=l.reflectivity,c.ior.value=l.ior,c.refractionRatio.value=l.refractionRatio),l.lightMap){c.lightMap.value=l.lightMap;const Q=e._useLegacyLights===!0?Math.PI:1;c.lightMapIntensity.value=l.lightMapIntensity*Q,t(l.lightMap,c.lightMapTransform)}l.aoMap&&(c.aoMap.value=l.aoMap,c.aoMapIntensity.value=l.aoMapIntensity,t(l.aoMap,c.aoMapTransform))}function o(c,l){c.diffuse.value.copy(l.color),c.opacity.value=l.opacity,l.map&&(c.map.value=l.map,t(l.map,c.mapTransform))}function s(c,l){c.dashSize.value=l.dashSize,c.totalSize.value=l.dashSize+l.gapSize,c.scale.value=l.scale}function a(c,l,u,Q){c.diffuse.value.copy(l.color),c.opacity.value=l.opacity,c.size.value=l.size*u,c.scale.value=Q*.5,l.map&&(c.map.value=l.map,t(l.map,c.uvTransform)),l.alphaMap&&(c.alphaMap.value=l.alphaMap,t(l.alphaMap,c.alphaMapTransform)),l.alphaTest>0&&(c.alphaTest.value=l.alphaTest)}function g(c,l){c.diffuse.value.copy(l.color),c.opacity.value=l.opacity,c.rotation.value=l.rotation,l.map&&(c.map.value=l.map,t(l.map,c.mapTransform)),l.alphaMap&&(c.alphaMap.value=l.alphaMap,t(l.alphaMap,c.alphaMapTransform)),l.alphaTest>0&&(c.alphaTest.value=l.alphaTest)}function I(c,l){c.specular.value.copy(l.specular),c.shininess.value=Math.max(l.shininess,1e-4)}function C(c,l){l.gradientMap&&(c.gradientMap.value=l.gradientMap)}function B(c,l){c.metalness.value=l.metalness,l.metalnessMap&&(c.metalnessMap.value=l.metalnessMap,t(l.metalnessMap,c.metalnessMapTransform)),c.roughness.value=l.roughness,l.roughnessMap&&(c.roughnessMap.value=l.roughnessMap,t(l.roughnessMap,c.roughnessMapTransform)),A.get(l).envMap&&(c.envMapIntensity.value=l.envMapIntensity)}function E(c,l,u){c.ior.value=l.ior,l.sheen>0&&(c.sheenColor.value.copy(l.sheenColor).multiplyScalar(l.sheen),c.sheenRoughness.value=l.sheenRoughness,l.sheenColorMap&&(c.sheenColorMap.value=l.sheenColorMap,t(l.sheenColorMap,c.sheenColorMapTransform)),l.sheenRoughnessMap&&(c.sheenRoughnessMap.value=l.sheenRoughnessMap,t(l.sheenRoughnessMap,c.sheenRoughnessMapTransform))),l.clearcoat>0&&(c.clearcoat.value=l.clearcoat,c.clearcoatRoughness.value=l.clearcoatRoughness,l.clearcoatMap&&(c.clearcoatMap.value=l.clearcoatMap,t(l.clearcoatMap,c.clearcoatMapTransform)),l.clearcoatRoughnessMap&&(c.clearcoatRoughnessMap.value=l.clearcoatRoughnessMap,t(l.clearcoatRoughnessMap,c.clearcoatRoughnessMapTransform)),l.clearcoatNormalMap&&(c.clearcoatNormalMap.value=l.clearcoatNormalMap,t(l.clearcoatNormalMap,c.clearcoatNormalMapTransform),c.clearcoatNormalScale.value.copy(l.clearcoatNormalScale),l.side===ct&&c.clearcoatNormalScale.value.negate())),l.iridescence>0&&(c.iridescence.value=l.iridescence,c.iridescenceIOR.value=l.iridescenceIOR,c.iridescenceThicknessMinimum.value=l.iridescenceThicknessRange[0],c.iridescenceThicknessMaximum.value=l.iridescenceThicknessRange[1],l.iridescenceMap&&(c.iridescenceMap.value=l.iridescenceMap,t(l.iridescenceMap,c.iridescenceMapTransform)),l.iridescenceThicknessMap&&(c.iridescenceThicknessMap.value=l.iridescenceThicknessMap,t(l.iridescenceThicknessMap,c.iridescenceThicknessMapTransform))),l.transmission>0&&(c.transmission.value=l.transmission,c.transmissionSamplerMap.value=u.texture,c.transmissionSamplerSize.value.set(u.width,u.height),l.transmissionMap&&(c.transmissionMap.value=l.transmissionMap,t(l.transmissionMap,c.transmissionMapTransform)),c.thickness.value=l.thickness,l.thicknessMap&&(c.thicknessMap.value=l.thicknessMap,t(l.thicknessMap,c.thicknessMapTransform)),c.attenuationDistance.value=l.attenuationDistance,c.attenuationColor.value.copy(l.attenuationColor)),l.anisotropy>0&&(c.anisotropyVector.value.set(l.anisotropy*Math.cos(l.anisotropyRotation),l.anisotropy*Math.sin(l.anisotropyRotation)),l.anisotropyMap&&(c.anisotropyMap.value=l.anisotropyMap,t(l.anisotropyMap,c.anisotropyMapTransform))),c.specularIntensity.value=l.specularIntensity,c.specularColor.value.copy(l.specularColor),l.specularColorMap&&(c.specularColorMap.value=l.specularColorMap,t(l.specularColorMap,c.specularColorMapTransform)),l.specularIntensityMap&&(c.specularIntensityMap.value=l.specularIntensityMap,t(l.specularIntensityMap,c.specularIntensityMapTransform))}function d(c,l){l.matcap&&(c.matcap.value=l.matcap)}function h(c,l){const u=A.get(l).light;c.referencePosition.value.setFromMatrixPosition(u.matrixWorld),c.nearDistance.value=u.shadow.camera.near,c.farDistance.value=u.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:i}}function dF(e,A,t,n){let i={},r={},o=[];const s=t.isWebGL2?e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS):0;function a(u,Q){const p=Q.program;n.uniformBlockBinding(u,p)}function g(u,Q){let p=i[u.id];p===void 0&&(d(u),p=I(u),i[u.id]=p,u.addEventListener("dispose",c));const D=Q.program;n.updateUBOMapping(u,D);const f=A.render.frame;r[u.id]!==f&&(B(u),r[u.id]=f)}function I(u){const Q=C();u.__bindingPointIndex=Q;const p=e.createBuffer(),D=u.__size,f=u.usage;return e.bindBuffer(e.UNIFORM_BUFFER,p),e.bufferData(e.UNIFORM_BUFFER,D,f),e.bindBuffer(e.UNIFORM_BUFFER,null),e.bindBufferBase(e.UNIFORM_BUFFER,Q,p),p}function C(){for(let u=0;u0){f=p%D;const X=D-f;f!==0&&X-M.boundary<0&&(p+=D-f,m.__offset=p)}p+=M.storage}return f=p%D,f>0&&(p+=D-f),u.__size=p,u.__cache={},this}function h(u){const Q={boundary:0,storage:0};return typeof u=="number"?(Q.boundary=4,Q.storage=4):u.isVector2?(Q.boundary=8,Q.storage=8):u.isVector3||u.isColor?(Q.boundary=16,Q.storage=12):u.isVector4?(Q.boundary=16,Q.storage=16):u.isMatrix3?(Q.boundary=48,Q.storage=48):u.isMatrix4?(Q.boundary=64,Q.storage=64):u.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",u),Q}function c(u){const Q=u.target;Q.removeEventListener("dispose",c);const p=o.indexOf(Q.__bindingPointIndex);o.splice(p,1),e.deleteBuffer(i[Q.id]),delete i[Q.id],delete r[Q.id]}function l(){for(const u in i)e.deleteBuffer(i[u]);o=[],i={},r={}}return{bind:a,update:g,dispose:l}}class _f{constructor(A={}){const{canvas:t=fS(),context:n=null,depth:i=!0,stencil:r=!0,alpha:o=!1,antialias:s=!1,premultipliedAlpha:a=!0,preserveDrawingBuffer:g=!1,powerPreference:I="default",failIfMajorPerformanceCaveat:C=!1}=A;this.isWebGLRenderer=!0;let B;n!==null?B=n.getContextAttributes().alpha:B=o;const E=new Uint32Array(4),d=new Int32Array(4);let h=null,c=null;const l=[],u=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=Ze,this._useLegacyLights=!1,this.toneMapping=hi,this.toneMappingExposure=1;const Q=this;let p=!1,D=0,f=0,y=null,N=-1,m=null;const M=new Pe,P=new Pe;let X=null;const Z=new ue(0);let v=0,H=t.width,$=t.height,j=1,Y=null,J=null;const W=new Pe(0,0,H,$),_=new Pe(0,0,H,$);let K=!1;const cA=new KB;let IA=!1,hA=!1,DA=null;const TA=new Ie,kA=new qA,oe=new k,be={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function _A(){return y===null?j:1}let b=n;function Fe(S,U){for(let q=0;q0?c=u[u.length-1]:c=null,l.pop(),l.length>0?h=l[l.length-1]:h=null};function T(S,U,q,G){if(S.visible===!1)return;if(S.layers.test(U.layers)){if(S.isGroup)q=S.renderOrder;else if(S.isLOD)S.autoUpdate===!0&&S.update(U);else if(S.isLight)c.pushLight(S),S.castShadow&&c.pushShadow(S);else if(S.isSprite){if(!S.frustumCulled||cA.intersectsSprite(S)){G&&oe.setFromMatrixPosition(S.matrixWorld).applyMatrix4(TA);const xA=w.update(S),KA=S.material;KA.visible&&h.push(S,xA,KA,q,oe.z,null)}}else if((S.isMesh||S.isLine||S.isPoints)&&(!S.frustumCulled||cA.intersectsObject(S))){const xA=w.update(S),KA=S.material;if(G&&(S.boundingSphere!==void 0?(S.boundingSphere===null&&S.computeBoundingSphere(),oe.copy(S.boundingSphere.center)):(xA.boundingSphere===null&&xA.computeBoundingSphere(),oe.copy(xA.boundingSphere.center)),oe.applyMatrix4(S.matrixWorld).applyMatrix4(TA)),Array.isArray(KA)){const GA=xA.groups;for(let WA=0,PA=GA.length;WA0&&iA(O,BA,U,q),G&&zA.viewport(M.copy(G)),O.length>0&&pA(O,U,q),BA.length>0&&pA(BA,U,q),xA.length>0&&pA(xA,U,q),zA.buffers.depth.setTest(!0),zA.buffers.depth.setMask(!0),zA.buffers.color.setMask(!0),zA.setPolygonOffset(!1)}function iA(S,U,q,G){const O=OA.isWebGL2;DA===null&&(DA=new Ar(1,1,{generateMipmaps:!0,type:HA.has("EXT_color_buffer_half_float")?Io:Gn,minFilter:go,samples:O?4:0})),Q.getDrawingBufferSize(kA),O?DA.setSize(kA.x,kA.y):DA.setSize(mg(kA.x),mg(kA.y));const BA=Q.getRenderTarget();Q.setRenderTarget(DA),Q.getClearColor(Z),v=Q.getClearAlpha(),v<1&&Q.setClearColor(16777215,.5),Q.clear();const xA=Q.toneMapping;Q.toneMapping=hi,pA(S,q,G),jA.updateMultisampleRenderTarget(DA),jA.updateRenderTargetMipmap(DA);let KA=!1;for(let GA=0,WA=U.length;GA0),VA=!!q.morphAttributes.position,Ce=!!q.morphAttributes.normal,de=!!q.morphAttributes.color;let je=hi;G.toneMapped&&(y===null||y.isXRRenderTarget===!0)&&(je=Q.toneMapping);const Ae=q.morphAttributes.position||q.morphAttributes.normal||q.morphAttributes.color,ZA=Ae!==void 0?Ae.length:0,$A=ee.get(G),pn=c.state.lights;if(IA===!0&&(hA===!0||S!==m)){const Mt=S===m&&G.id===N;vA.setState(G,S,Mt)}let te=!1;G.version===$A.__version?($A.needsLights&&$A.lightsStateVersion!==pn.state.version||$A.outputColorSpace!==KA||O.isInstancedMesh&&$A.instancing===!1||!O.isInstancedMesh&&$A.instancing===!0||O.isSkinnedMesh&&$A.skinning===!1||!O.isSkinnedMesh&&$A.skinning===!0||O.isInstancedMesh&&$A.instancingColor===!0&&O.instanceColor===null||O.isInstancedMesh&&$A.instancingColor===!1&&O.instanceColor!==null||$A.envMap!==GA||G.fog===!0&&$A.fog!==BA||$A.numClippingPlanes!==void 0&&($A.numClippingPlanes!==vA.numPlanes||$A.numIntersection!==vA.numIntersection)||$A.vertexAlphas!==WA||$A.vertexTangents!==PA||$A.morphTargets!==VA||$A.morphNormals!==Ce||$A.morphColors!==de||$A.toneMapping!==je||OA.isWebGL2===!0&&$A.morphTargetsCount!==ZA)&&(te=!0):(te=!0,$A.__version=G.version);let ht=$A.currentProgram;te===!0&&(ht=JA(G,U,O));let mo=!1,yi=!1,eI=!1;const It=ht.getUniforms(),Di=$A.uniforms;if(zA.useProgram(ht.program)&&(mo=!0,yi=!0,eI=!0),G.id!==N&&(N=G.id,yi=!0),mo||m!==S){It.setValue(b,"projectionMatrix",S.projectionMatrix),It.setValue(b,"viewMatrix",S.matrixWorldInverse);const Mt=It.map.cameraPosition;Mt!==void 0&&Mt.setValue(b,oe.setFromMatrixPosition(S.matrixWorld)),OA.logarithmicDepthBuffer&&It.setValue(b,"logDepthBufFC",2/(Math.log(S.far+1)/Math.LN2)),(G.isMeshPhongMaterial||G.isMeshToonMaterial||G.isMeshLambertMaterial||G.isMeshBasicMaterial||G.isMeshStandardMaterial||G.isShaderMaterial)&&It.setValue(b,"isOrthographic",S.isOrthographicCamera===!0),m!==S&&(m=S,yi=!0,eI=!0)}if(O.isSkinnedMesh){It.setOptional(b,O,"bindMatrix"),It.setOptional(b,O,"bindMatrixInverse");const Mt=O.skeleton;Mt&&(OA.floatVertexTextures?(Mt.boneTexture===null&&Mt.computeBoneTexture(),It.setValue(b,"boneTexture",Mt.boneTexture,jA),It.setValue(b,"boneTextureSize",Mt.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}const tI=q.morphAttributes;if((tI.position!==void 0||tI.normal!==void 0||tI.color!==void 0&&OA.isWebGL2===!0)&&x.update(O,q,ht),(yi||$A.receiveShadow!==O.receiveShadow)&&($A.receiveShadow=O.receiveShadow,It.setValue(b,"receiveShadow",O.receiveShadow)),G.isMeshGouraudMaterial&&G.envMap!==null&&(Di.envMap.value=GA,Di.flipEnvMap.value=GA.isCubeTexture&&GA.isRenderTargetTexture===!1?-1:1),yi&&(It.setValue(b,"toneMappingExposure",Q.toneMappingExposure),$A.needsLights&&mA(Di,eI),BA&&G.fog===!0&&sA.refreshFogUniforms(Di,BA),sA.refreshMaterialUniforms(Di,G,j,$,DA),Oa.upload(b,$A.uniformsList,Di,jA)),G.isShaderMaterial&&G.uniformsNeedUpdate===!0&&(Oa.upload(b,$A.uniformsList,Di,jA),G.uniformsNeedUpdate=!1),G.isSpriteMaterial&&It.setValue(b,"center",O.center),It.setValue(b,"modelViewMatrix",O.modelViewMatrix),It.setValue(b,"normalMatrix",O.normalMatrix),It.setValue(b,"modelMatrix",O.matrixWorld),G.isShaderMaterial||G.isRawShaderMaterial){const Mt=G.uniformsGroups;for(let nI=0,Jf=Mt.length;nI0&&jA.useMultisampledRTT(S)===!1?O=ee.get(S).__webglMultisampledFramebuffer:Array.isArray(PA)?O=PA[q]:O=PA,M.copy(S.viewport),P.copy(S.scissor),X=S.scissorTest}else M.copy(W).multiplyScalar(j).floor(),P.copy(_).multiplyScalar(j).floor(),X=K;if(zA.bindFramebuffer(b.FRAMEBUFFER,O)&&OA.drawBuffers&&G&&zA.drawBuffers(S,O),zA.viewport(M),zA.scissor(P),zA.setScissorTest(X),BA){const GA=ee.get(S.texture);b.framebufferTexture2D(b.FRAMEBUFFER,b.COLOR_ATTACHMENT0,b.TEXTURE_CUBE_MAP_POSITIVE_X+U,GA.__webglTexture,q)}else if(xA){const GA=ee.get(S.texture),WA=U||0;b.framebufferTextureLayer(b.FRAMEBUFFER,b.COLOR_ATTACHMENT0,GA.__webglTexture,q||0,WA)}N=-1},this.readRenderTargetPixels=function(S,U,q,G,O,BA,xA){if(!(S&&S.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let KA=ee.get(S).__webglFramebuffer;if(S.isWebGLCubeRenderTarget&&xA!==void 0&&(KA=KA[xA]),KA){zA.bindFramebuffer(b.FRAMEBUFFER,KA);try{const GA=S.texture,WA=GA.format,PA=GA.type;if(WA!==on&&YA.convert(WA)!==b.getParameter(b.IMPLEMENTATION_COLOR_READ_FORMAT)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}const VA=PA===Io&&(HA.has("EXT_color_buffer_half_float")||OA.isWebGL2&&HA.has("EXT_color_buffer_float"));if(PA!==Gn&&YA.convert(PA)!==b.getParameter(b.IMPLEMENTATION_COLOR_READ_TYPE)&&!(PA===si&&(OA.isWebGL2||HA.has("OES_texture_float")||HA.has("WEBGL_color_buffer_float")))&&!VA){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}U>=0&&U<=S.width-G&&q>=0&&q<=S.height-O&&b.readPixels(U,q,G,O,YA.convert(WA),YA.convert(PA),BA)}finally{const GA=y!==null?ee.get(y).__webglFramebuffer:null;zA.bindFramebuffer(b.FRAMEBUFFER,GA)}}},this.copyFramebufferToTexture=function(S,U,q=0){const G=Math.pow(2,-q),O=Math.floor(U.image.width*G),BA=Math.floor(U.image.height*G);jA.setTexture2D(U,0),b.copyTexSubImage2D(b.TEXTURE_2D,q,0,0,S.x,S.y,O,BA),zA.unbindTexture()},this.copyTextureToTexture=function(S,U,q,G=0){const O=U.image.width,BA=U.image.height,xA=YA.convert(q.format),KA=YA.convert(q.type);jA.setTexture2D(q,0),b.pixelStorei(b.UNPACK_FLIP_Y_WEBGL,q.flipY),b.pixelStorei(b.UNPACK_PREMULTIPLY_ALPHA_WEBGL,q.premultiplyAlpha),b.pixelStorei(b.UNPACK_ALIGNMENT,q.unpackAlignment),U.isDataTexture?b.texSubImage2D(b.TEXTURE_2D,G,S.x,S.y,O,BA,xA,KA,U.image.data):U.isCompressedTexture?b.compressedTexSubImage2D(b.TEXTURE_2D,G,S.x,S.y,U.mipmaps[0].width,U.mipmaps[0].height,xA,U.mipmaps[0].data):b.texSubImage2D(b.TEXTURE_2D,G,S.x,S.y,xA,KA,U.image),G===0&&q.generateMipmaps&&b.generateMipmap(b.TEXTURE_2D),zA.unbindTexture()},this.copyTextureToTexture3D=function(S,U,q,G,O=0){if(Q.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}const BA=S.max.x-S.min.x+1,xA=S.max.y-S.min.y+1,KA=S.max.z-S.min.z+1,GA=YA.convert(G.format),WA=YA.convert(G.type);let PA;if(G.isData3DTexture)jA.setTexture3D(G,0),PA=b.TEXTURE_3D;else if(G.isDataArrayTexture)jA.setTexture2DArray(G,0),PA=b.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}b.pixelStorei(b.UNPACK_FLIP_Y_WEBGL,G.flipY),b.pixelStorei(b.UNPACK_PREMULTIPLY_ALPHA_WEBGL,G.premultiplyAlpha),b.pixelStorei(b.UNPACK_ALIGNMENT,G.unpackAlignment);const VA=b.getParameter(b.UNPACK_ROW_LENGTH),Ce=b.getParameter(b.UNPACK_IMAGE_HEIGHT),de=b.getParameter(b.UNPACK_SKIP_PIXELS),je=b.getParameter(b.UNPACK_SKIP_ROWS),Ae=b.getParameter(b.UNPACK_SKIP_IMAGES),ZA=q.isCompressedTexture?q.mipmaps[0]:q.image;b.pixelStorei(b.UNPACK_ROW_LENGTH,ZA.width),b.pixelStorei(b.UNPACK_IMAGE_HEIGHT,ZA.height),b.pixelStorei(b.UNPACK_SKIP_PIXELS,S.min.x),b.pixelStorei(b.UNPACK_SKIP_ROWS,S.min.y),b.pixelStorei(b.UNPACK_SKIP_IMAGES,S.min.z),q.isDataTexture||q.isData3DTexture?b.texSubImage3D(PA,O,U.x,U.y,U.z,BA,xA,KA,GA,WA,ZA.data):q.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),b.compressedTexSubImage3D(PA,O,U.x,U.y,U.z,BA,xA,KA,GA,ZA.data)):b.texSubImage3D(PA,O,U.x,U.y,U.z,BA,xA,KA,GA,WA,ZA),b.pixelStorei(b.UNPACK_ROW_LENGTH,VA),b.pixelStorei(b.UNPACK_IMAGE_HEIGHT,Ce),b.pixelStorei(b.UNPACK_SKIP_PIXELS,de),b.pixelStorei(b.UNPACK_SKIP_ROWS,je),b.pixelStorei(b.UNPACK_SKIP_IMAGES,Ae),O===0&&G.generateMipmaps&&b.generateMipmap(PA),zA.unbindTexture()},this.initTexture=function(S){S.isCubeTexture?jA.setTextureCube(S,0):S.isData3DTexture?jA.setTexture3D(S,0):S.isDataArrayTexture||S.isCompressedArrayTexture?jA.setTexture2DArray(S,0):jA.setTexture2D(S,0),zA.unbindTexture()},this.resetState=function(){D=0,f=0,y=null,zA.reset(),NA.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return _n}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(A){this._outputColorSpace=A;const t=this.getContext();t.drawingBufferColorSpace=A===bB?"display-p3":"srgb",t.unpackColorSpace=Ee.workingColorSpace===Xg?"display-p3":"srgb"}get physicallyCorrectLights(){return console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),!this.useLegacyLights}set physicallyCorrectLights(A){console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),this.useLegacyLights=!A}get outputEncoding(){return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace===Ze?zi:Ef}set outputEncoding(A){console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace=A===zi?Ze:Yn}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(A){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=A}}class fF extends _f{}fF.prototype.isWebGL1Renderer=!0;class Ya extends at{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(A,t){return super.copy(A,t),A.background!==null&&(this.background=A.background.clone()),A.environment!==null&&(this.environment=A.environment.clone()),A.fog!==null&&(this.fog=A.fog.clone()),this.backgroundBlurriness=A.backgroundBlurriness,this.backgroundIntensity=A.backgroundIntensity,A.overrideMaterial!==null&&(this.overrideMaterial=A.overrideMaterial.clone()),this.matrixAutoUpdate=A.matrixAutoUpdate,this}toJSON(A){const t=super.toJSON(A);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t}}class da extends Dt{constructor(A=null,t=1,n=1,i,r,o,s,a,g=ye,I=ye,C,B){super(null,o,s,a,g,I,i,r,C,B),this.isDataTexture=!0,this.image={data:A,width:t,height:n},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class pF extends St{constructor(A,t,n,i=1){super(A,t,n),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=i}copy(A){return super.copy(A),this.meshPerAttribute=A.meshPerAttribute,this}toJSON(){const A=super.toJSON();return A.meshPerAttribute=this.meshPerAttribute,A.isInstancedBufferAttribute=!0,A}}class Uf extends fn{constructor(A){super(A),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}}class mF extends ho{constructor(A){super(),this.isMeshStandardMaterial=!0,this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new ue(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ue(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=HB,this.normalScale=new qA(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.defines={STANDARD:""},this.color.copy(A.color),this.roughness=A.roughness,this.metalness=A.metalness,this.map=A.map,this.lightMap=A.lightMap,this.lightMapIntensity=A.lightMapIntensity,this.aoMap=A.aoMap,this.aoMapIntensity=A.aoMapIntensity,this.emissive.copy(A.emissive),this.emissiveMap=A.emissiveMap,this.emissiveIntensity=A.emissiveIntensity,this.bumpMap=A.bumpMap,this.bumpScale=A.bumpScale,this.normalMap=A.normalMap,this.normalMapType=A.normalMapType,this.normalScale.copy(A.normalScale),this.displacementMap=A.displacementMap,this.displacementScale=A.displacementScale,this.displacementBias=A.displacementBias,this.roughnessMap=A.roughnessMap,this.metalnessMap=A.metalnessMap,this.alphaMap=A.alphaMap,this.envMap=A.envMap,this.envMapIntensity=A.envMapIntensity,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.wireframeLinecap=A.wireframeLinecap,this.wireframeLinejoin=A.wireframeLinejoin,this.flatShading=A.flatShading,this.fog=A.fog,this}}class wF extends ho{constructor(A){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=HB,this.normalScale=new qA(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(A)}copy(A){return super.copy(A),this.bumpMap=A.bumpMap,this.bumpScale=A.bumpScale,this.normalMap=A.normalMap,this.normalMapType=A.normalMapType,this.normalScale.copy(A.normalScale),this.displacementMap=A.displacementMap,this.displacementScale=A.displacementScale,this.displacementBias=A.displacementBias,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.flatShading=A.flatShading,this}}class Gf extends at{constructor(A,t=1){super(),this.isLight=!0,this.type="Light",this.color=new ue(A),this.intensity=t}dispose(){}copy(A,t){return super.copy(A,t),this.color.copy(A.color),this.intensity=A.intensity,this}toJSON(A){const t=super.toJSON(A);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),t}}const CC=new Ie,Vu=new k,ju=new k;class yF{constructor(A){this.camera=A,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new qA(512,512),this.map=null,this.mapPass=null,this.matrix=new Ie,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new KB,this._frameExtents=new qA(1,1),this._viewportCount=1,this._viewports=[new Pe(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(A){const t=this.camera,n=this.matrix;Vu.setFromMatrixPosition(A.matrixWorld),t.position.copy(Vu),ju.setFromMatrixPosition(A.target.matrixWorld),t.lookAt(ju),t.updateMatrixWorld(),CC.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(CC),n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(CC)}getViewport(A){return this._viewports[A]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(A){return this.camera=A.camera.clone(),this.bias=A.bias,this.radius=A.radius,this.mapSize.copy(A.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){const A={};return this.bias!==0&&(A.bias=this.bias),this.normalBias!==0&&(A.normalBias=this.normalBias),this.radius!==1&&(A.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(A.mapSize=this.mapSize.toArray()),A.camera=this.camera.toJSON(!1).object,delete A.camera.matrix,A}}class DF extends yF{constructor(){super(new PB(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class SF extends Gf{constructor(A,t){super(A,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(at.DEFAULT_UP),this.updateMatrix(),this.target=new at,this.shadow=new DF}dispose(){this.shadow.dispose()}copy(A){return super.copy(A),this.target=A.target.clone(),this.shadow=A.shadow.clone(),this}}class MF extends Gf{constructor(A,t){super(A,t),this.isAmbientLight=!0,this.type="AmbientLight"}}class Xu extends Jn{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(A){return super.copy(A),this.instanceCount=A.instanceCount,this}toJSON(){const A=super.toJSON();return A.instanceCount=this.instanceCount,A.isInstancedBufferGeometry=!0,A}}class Be{constructor(A){this.value=A}clone(){return new Be(this.value.clone===void 0?this.value:this.value.clone())}}class RF{constructor(A,t,n,i,r){this.isGLBufferAttribute=!0,this.name="",this.buffer=A,this.type=t,this.itemSize=n,this.elementSize=i,this.count=r,this.version=0}set needsUpdate(A){A===!0&&this.version++}setBuffer(A){return this.buffer=A,this}setType(A,t){return this.type=A,this.elementSize=t,this}setItemSize(A){return this.itemSize=A,this}setCount(A){return this.count=A,this}}class Zu{constructor(A=1,t=0,n=0){return this.radius=A,this.phi=t,this.theta=n,this}set(A,t,n){return this.radius=A,this.phi=t,this.theta=n,this}copy(A){return this.radius=A.radius,this.phi=A.phi,this.theta=A.theta,this}makeSafe(){return this.phi=Math.max(1e-6,Math.min(Math.PI-1e-6,this.phi)),this}setFromVector3(A){return this.setFromCartesianCoords(A.x,A.y,A.z)}setFromCartesianCoords(A,t,n){return this.radius=Math.sqrt(A*A+t*t+n*n),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(A,n),this.phi=Math.acos(ot(t/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:xB}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=xB);const $u={type:"change"},lC={type:"start"},AQ={type:"end"},fa=new df,eQ=new ei,vF=Math.cos(70*dS.DEG2RAD);class NF extends rr{constructor(A,t){super(),this.object=A,this.domElement=t,this.domElement.style.touchAction="none",this.enabled=!0,this.target=new k,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:gr.ROTATE,MIDDLE:gr.DOLLY,RIGHT:gr.PAN},this.touches={ONE:Ir.ROTATE,TWO:Ir.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this.getPolarAngle=function(){return s.phi},this.getAzimuthalAngle=function(){return s.theta},this.getDistance=function(){return this.object.position.distanceTo(this.target)},this.listenToKeyEvents=function(x){x.addEventListener("keydown",w),this._domElementKeyEvents=x},this.stopListenToKeyEvents=function(){this._domElementKeyEvents.removeEventListener("keydown",w),this._domElementKeyEvents=null},this.saveState=function(){n.target0.copy(n.target),n.position0.copy(n.object.position),n.zoom0=n.object.zoom},this.reset=function(){n.target.copy(n.target0),n.object.position.copy(n.position0),n.object.zoom=n.zoom0,n.object.updateProjectionMatrix(),n.dispatchEvent($u),n.update(),r=i.NONE},this.update=function(){const x=new k,gA=new hn().setFromUnitVectors(A.up,new k(0,1,0)),eA=gA.clone().invert(),YA=new k,NA=new hn,UA=new k,MA=2*Math.PI;return function(lA=null){const aA=n.object.position;x.copy(aA).sub(n.target),x.applyQuaternion(gA),s.setFromVector3(x),n.autoRotate&&r===i.NONE&&P(m(lA)),n.enableDamping?(s.theta+=a.theta*n.dampingFactor,s.phi+=a.phi*n.dampingFactor):(s.theta+=a.theta,s.phi+=a.phi);let QA=n.minAzimuthAngle,EA=n.maxAzimuthAngle;isFinite(QA)&&isFinite(EA)&&(QA<-Math.PI?QA+=MA:QA>Math.PI&&(QA-=MA),EA<-Math.PI?EA+=MA:EA>Math.PI&&(EA-=MA),QA<=EA?s.theta=Math.max(QA,Math.min(EA,s.theta)):s.theta=s.theta>(QA+EA)/2?Math.max(QA,s.theta):Math.min(EA,s.theta)),s.phi=Math.max(n.minPolarAngle,Math.min(n.maxPolarAngle,s.phi)),s.makeSafe(),n.enableDamping===!0?n.target.addScaledVector(I,n.dampingFactor):n.target.add(I),n.zoomToCursor&&f||n.object.isOrthographicCamera?s.radius=J(s.radius):s.radius=J(s.radius*g),x.setFromSpherical(s),x.applyQuaternion(eA),aA.copy(n.target).add(x),n.object.lookAt(n.target),n.enableDamping===!0?(a.theta*=1-n.dampingFactor,a.phi*=1-n.dampingFactor,I.multiplyScalar(1-n.dampingFactor)):(a.set(0,0,0),I.set(0,0,0));let nA=!1;if(n.zoomToCursor&&f){let RA=null;if(n.object.isPerspectiveCamera){const bA=x.length();RA=J(bA*g);const pe=bA-RA;n.object.position.addScaledVector(p,pe),n.object.updateMatrixWorld()}else if(n.object.isOrthographicCamera){const bA=new k(D.x,D.y,0);bA.unproject(n.object),n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom/g)),n.object.updateProjectionMatrix(),nA=!0;const pe=new k(D.x,D.y,0);pe.unproject(n.object),n.object.position.sub(pe).add(bA),n.object.updateMatrixWorld(),RA=x.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),n.zoomToCursor=!1;RA!==null&&(this.screenSpacePanning?n.target.set(0,0,-1).transformDirection(n.object.matrix).multiplyScalar(RA).add(n.object.position):(fa.origin.copy(n.object.position),fa.direction.set(0,0,-1).transformDirection(n.object.matrix),Math.abs(n.object.up.dot(fa.direction))o||8*(1-NA.dot(n.object.quaternion))>o||UA.distanceToSquared(n.target)>0?(n.dispatchEvent($u),YA.copy(n.object.position),NA.copy(n.object.quaternion),UA.copy(n.target),nA=!1,!0):!1}}(),this.dispose=function(){n.domElement.removeEventListener("contextmenu",tA),n.domElement.removeEventListener("pointerdown",ee),n.domElement.removeEventListener("pointercancel",se),n.domElement.removeEventListener("wheel",R),n.domElement.removeEventListener("pointermove",jA),n.domElement.removeEventListener("pointerup",se),n._domElementKeyEvents!==null&&(n._domElementKeyEvents.removeEventListener("keydown",w),n._domElementKeyEvents=null)};const n=this,i={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let r=i.NONE;const o=1e-6,s=new Zu,a=new Zu;let g=1;const I=new k,C=new qA,B=new qA,E=new qA,d=new qA,h=new qA,c=new qA,l=new qA,u=new qA,Q=new qA,p=new k,D=new qA;let f=!1;const y=[],N={};function m(x){return x!==null?2*Math.PI/60*n.autoRotateSpeed*x:2*Math.PI/60/60*n.autoRotateSpeed}function M(){return Math.pow(.95,n.zoomSpeed)}function P(x){a.theta-=x}function X(x){a.phi-=x}const Z=function(){const x=new k;return function(eA,YA){x.setFromMatrixColumn(YA,0),x.multiplyScalar(-eA),I.add(x)}}(),v=function(){const x=new k;return function(eA,YA){n.screenSpacePanning===!0?x.setFromMatrixColumn(YA,1):(x.setFromMatrixColumn(YA,0),x.crossVectors(n.object.up,x)),x.multiplyScalar(eA),I.add(x)}}(),H=function(){const x=new k;return function(eA,YA){const NA=n.domElement;if(n.object.isPerspectiveCamera){const UA=n.object.position;x.copy(UA).sub(n.target);let MA=x.length();MA*=Math.tan(n.object.fov/2*Math.PI/180),Z(2*eA*MA/NA.clientHeight,n.object.matrix),v(2*YA*MA/NA.clientHeight,n.object.matrix)}else n.object.isOrthographicCamera?(Z(eA*(n.object.right-n.object.left)/n.object.zoom/NA.clientWidth,n.object.matrix),v(YA*(n.object.top-n.object.bottom)/n.object.zoom/NA.clientHeight,n.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),n.enablePan=!1)}}();function $(x){n.object.isPerspectiveCamera||n.object.isOrthographicCamera?g/=x:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),n.enableZoom=!1)}function j(x){n.object.isPerspectiveCamera||n.object.isOrthographicCamera?g*=x:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),n.enableZoom=!1)}function Y(x){if(!n.zoomToCursor)return;f=!0;const gA=n.domElement.getBoundingClientRect(),eA=x.clientX-gA.left,YA=x.clientY-gA.top,NA=gA.width,UA=gA.height;D.x=eA/NA*2-1,D.y=-(YA/UA)*2+1,p.set(D.x,D.y,1).unproject(n.object).sub(n.object.position).normalize()}function J(x){return Math.max(n.minDistance,Math.min(n.maxDistance,x))}function W(x){C.set(x.clientX,x.clientY)}function _(x){Y(x),l.set(x.clientX,x.clientY)}function K(x){d.set(x.clientX,x.clientY)}function cA(x){B.set(x.clientX,x.clientY),E.subVectors(B,C).multiplyScalar(n.rotateSpeed);const gA=n.domElement;P(2*Math.PI*E.x/gA.clientHeight),X(2*Math.PI*E.y/gA.clientHeight),C.copy(B),n.update()}function IA(x){u.set(x.clientX,x.clientY),Q.subVectors(u,l),Q.y>0?$(M()):Q.y<0&&j(M()),l.copy(u),n.update()}function hA(x){h.set(x.clientX,x.clientY),c.subVectors(h,d).multiplyScalar(n.panSpeed),H(c.x,c.y),d.copy(h),n.update()}function DA(x){Y(x),x.deltaY<0?j(M()):x.deltaY>0&&$(M()),n.update()}function TA(x){let gA=!1;switch(x.code){case n.keys.UP:x.ctrlKey||x.metaKey||x.shiftKey?X(2*Math.PI*n.rotateSpeed/n.domElement.clientHeight):H(0,n.keyPanSpeed),gA=!0;break;case n.keys.BOTTOM:x.ctrlKey||x.metaKey||x.shiftKey?X(-2*Math.PI*n.rotateSpeed/n.domElement.clientHeight):H(0,-n.keyPanSpeed),gA=!0;break;case n.keys.LEFT:x.ctrlKey||x.metaKey||x.shiftKey?P(2*Math.PI*n.rotateSpeed/n.domElement.clientHeight):H(n.keyPanSpeed,0),gA=!0;break;case n.keys.RIGHT:x.ctrlKey||x.metaKey||x.shiftKey?P(-2*Math.PI*n.rotateSpeed/n.domElement.clientHeight):H(-n.keyPanSpeed,0),gA=!0;break}gA&&(x.preventDefault(),n.update())}function kA(){if(y.length===1)C.set(y[0].pageX,y[0].pageY);else{const x=.5*(y[0].pageX+y[1].pageX),gA=.5*(y[0].pageY+y[1].pageY);C.set(x,gA)}}function oe(){if(y.length===1)d.set(y[0].pageX,y[0].pageY);else{const x=.5*(y[0].pageX+y[1].pageX),gA=.5*(y[0].pageY+y[1].pageY);d.set(x,gA)}}function be(){const x=y[0].pageX-y[1].pageX,gA=y[0].pageY-y[1].pageY,eA=Math.sqrt(x*x+gA*gA);l.set(0,eA)}function _A(){n.enableZoom&&be(),n.enablePan&&oe()}function b(){n.enableZoom&&be(),n.enableRotate&&kA()}function Fe(x){if(y.length==1)B.set(x.pageX,x.pageY);else{const eA=dA(x),YA=.5*(x.pageX+eA.x),NA=.5*(x.pageY+eA.y);B.set(YA,NA)}E.subVectors(B,C).multiplyScalar(n.rotateSpeed);const gA=n.domElement;P(2*Math.PI*E.x/gA.clientHeight),X(2*Math.PI*E.y/gA.clientHeight),C.copy(B)}function HA(x){if(y.length===1)h.set(x.pageX,x.pageY);else{const gA=dA(x),eA=.5*(x.pageX+gA.x),YA=.5*(x.pageY+gA.y);h.set(eA,YA)}c.subVectors(h,d).multiplyScalar(n.panSpeed),H(c.x,c.y),d.copy(h)}function OA(x){const gA=dA(x),eA=x.pageX-gA.x,YA=x.pageY-gA.y,NA=Math.sqrt(eA*eA+YA*YA);u.set(0,NA),Q.set(0,Math.pow(u.y/l.y,n.zoomSpeed)),$(Q.y),l.copy(u)}function zA(x){n.enableZoom&&OA(x),n.enablePan&&HA(x)}function Qe(x){n.enableZoom&&OA(x),n.enableRotate&&Fe(x)}function ee(x){n.enabled!==!1&&(y.length===0&&(n.domElement.setPointerCapture(x.pointerId),n.domElement.addEventListener("pointermove",jA),n.domElement.addEventListener("pointerup",se)),rA(x),x.pointerType==="touch"?z(x):xe(x))}function jA(x){n.enabled!==!1&&(x.pointerType==="touch"?sA(x):Ge(x))}function se(x){vA(x),y.length===0&&(n.domElement.releasePointerCapture(x.pointerId),n.domElement.removeEventListener("pointermove",jA),n.domElement.removeEventListener("pointerup",se)),n.dispatchEvent(AQ),r=i.NONE}function xe(x){let gA;switch(x.button){case 0:gA=n.mouseButtons.LEFT;break;case 1:gA=n.mouseButtons.MIDDLE;break;case 2:gA=n.mouseButtons.RIGHT;break;default:gA=-1}switch(gA){case gr.DOLLY:if(n.enableZoom===!1)return;_(x),r=i.DOLLY;break;case gr.ROTATE:if(x.ctrlKey||x.metaKey||x.shiftKey){if(n.enablePan===!1)return;K(x),r=i.PAN}else{if(n.enableRotate===!1)return;W(x),r=i.ROTATE}break;case gr.PAN:if(x.ctrlKey||x.metaKey||x.shiftKey){if(n.enableRotate===!1)return;W(x),r=i.ROTATE}else{if(n.enablePan===!1)return;K(x),r=i.PAN}break;default:r=i.NONE}r!==i.NONE&&n.dispatchEvent(lC)}function Ge(x){switch(r){case i.ROTATE:if(n.enableRotate===!1)return;cA(x);break;case i.DOLLY:if(n.enableZoom===!1)return;IA(x);break;case i.PAN:if(n.enablePan===!1)return;hA(x);break}}function R(x){n.enabled===!1||n.enableZoom===!1||r!==i.NONE||(x.preventDefault(),n.dispatchEvent(lC),DA(x),n.dispatchEvent(AQ))}function w(x){n.enabled===!1||n.enablePan===!1||TA(x)}function z(x){switch(CA(x),y.length){case 1:switch(n.touches.ONE){case Ir.ROTATE:if(n.enableRotate===!1)return;kA(),r=i.TOUCH_ROTATE;break;case Ir.PAN:if(n.enablePan===!1)return;oe(),r=i.TOUCH_PAN;break;default:r=i.NONE}break;case 2:switch(n.touches.TWO){case Ir.DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;_A(),r=i.TOUCH_DOLLY_PAN;break;case Ir.DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;b(),r=i.TOUCH_DOLLY_ROTATE;break;default:r=i.NONE}break;default:r=i.NONE}r!==i.NONE&&n.dispatchEvent(lC)}function sA(x){switch(CA(x),r){case i.TOUCH_ROTATE:if(n.enableRotate===!1)return;Fe(x),n.update();break;case i.TOUCH_PAN:if(n.enablePan===!1)return;HA(x),n.update();break;case i.TOUCH_DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;zA(x),n.update();break;case i.TOUCH_DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;Qe(x),n.update();break;default:r=i.NONE}}function tA(x){n.enabled!==!1&&x.preventDefault()}function rA(x){y.push(x)}function vA(x){delete N[x.pointerId];for(let gA=0;gA()=>(o&&(t=o(o=0)),t);var OB=(o,t)=>()=>(t||o((t={exports:{}}).exports,t),t.exports);var sB=(o,t,I,T)=>{if(t&&typeof t=="object"||typeof t=="function")for(let c of tB(t))!DB.call(o,c)&&c!==I&&HA(o,c,{get:()=>t[c],enumerable:!(T=oB(t,c))||T.enumerable});return o};var NB=(o,t,I)=>(I=o!=null?iB(aB(o)):{},sB(t||!o||!o.__esModule?HA(I,"default",{value:o,enumerable:!0}):I,o));var J=cB(()=>{});var zA=OB((kA,rA)=>{J();var pA=(()=>{var o=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var I=t,T,c;I.ready=new Promise((A,g)=>{T=A,c=g});var v=Object.assign({},I),m=[],_="./this.program",S=(A,g)=>{throw g},z=!0,L=!1,O="";function mA(A){return I.locateFile?I.locateFile(A,O):O+A}var SA,LA,x;(z||L)&&(L?O=self.location.href:typeof document<"u"&&document.currentScript&&(O=document.currentScript.src),o&&(O=o),O.indexOf("blob:")!==0?O=O.substr(0,O.replace(/[?#].*/,"").lastIndexOf("/")+1):O="",SA=A=>{var g=new XMLHttpRequest;return g.open("GET",A,!1),g.send(null),g.responseText},L&&(x=A=>{var g=new XMLHttpRequest;return g.open("GET",A,!1),g.responseType="arraybuffer",g.send(null),new Uint8Array(g.response)}),LA=(A,g,B)=>{var C=new XMLHttpRequest;C.open("GET",A,!0),C.responseType="arraybuffer",C.onload=()=>{if(C.status==200||C.status==0&&C.response){g(C.response);return}B()},C.onerror=B,C.send(null)});var dB=I.print||console.log.bind(console),$=I.printErr||console.error.bind(console);Object.assign(I,v),v=null,I.arguments&&(m=I.arguments),I.thisProgram&&(_=I.thisProgram),I.quit&&(S=I.quit);var W;I.wasmBinary&&(W=I.wasmBinary),typeof WebAssembly!="object"&&X("no native wasm support detected");function WA(A){for(var g=atob(A),B=new Uint8Array(g.length),C=0;CA.startsWith(NA),U;U="data:application/octet-stream;base64,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EDYCECABIAIoAhQ2AhQgASACKAIYNgIYIAEgAigCHDYCHCABIAIoAiA2AiAgASACKAIkNgIkIAEgAigCKDYCKCABIAIoAiw2AiwgASACKAIwNgIwIAEgAigCNDYCNCABIAIoAjg2AjggASACKAI8NgI8IAJBQGshAiABQUBrIgEgBE0NAAsLIAEgBU8NAQNAIAEgAigCADYCACACQQRqIQIgAUEEaiIBIAVJDQALDAELIANBBEkEQCAAIQEMAQsgACADQQRrIgRLBEAgACEBDAELIAAhAQNAIAEgAi0AADoAACABIAItAAE6AAEgASACLQACOgACIAEgAi0AAzoAAyACQQRqIQIgAUEEaiIBIARNDQALCyABIANJBEADQCABIAItAAA6AAAgAkEBaiECIAFBAWoiASADRw0ACwsgAAsFQQALC0cBAX8jAEEQayIJJAAgCUEIaiABIAIgAyAEIAUgBiAHIAggABELACAJKAIMIgAQByAJKAIMIgcEQCAHEAYLIAlBEGokACAACzkBAX8jAEEQayICJAAgAkEIaiABIAARBAAgAigCDCIAEAcgAigCDCIBBEAgARAGCyACQRBqJAAgAAsuAEGhywBBAkHM0QBB8NEAQQFBAkEAEAJBgMsAQQlBgNIAQaTSAEEDQQRBABACCxoAIAAgASgCCCAFEBAEQCABIAIgAyAEEBkLCzcAIAAgASgCCCAFEBAEQCABIAIgAyAEEBkPCyAAKAIIIgAgASACIAMgBCAFIAAoAgAoAhQRBwALpwEAIAAgASgCCCAEEBAEQAJAIAEoAgQgAkcNACABKAIcQQFGDQAgASADNgIcCw8LAkAgACABKAIAIAQQEEUNAAJAIAIgASgCEEcEQCABKAIUIAJHDQELIANBAUcNASABQQE2AiAPCyABIAI2AhQgASADNgIgIAEgASgCKEEBajYCKAJAIAEoAiRBAUcNACABKAIYQQJHDQAgAUEBOgA2CyABQQQ2AiwLC4gCACAAIAEoAgggBBAQBEACQCABKAIEIAJHDQAgASgCHEEBRg0AIAEgAzYCHAsPCwJAIAAgASgCACAEEBAEQAJAIAIgASgCEEcEQCABKAIUIAJHDQELIANBAUcNAiABQQE2AiAPCyABIAM2AiACQCABKAIsQQRGDQAgAUEAOwE0IAAoAggiACABIAIgAkEBIAQg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AADiNgAA5DYAAOY2AADoNgAA6jYAAOw2AADuNgAA8DYAAPI2AAD0NgAA9jYAAPg2AAD6NgAA/DYAAP42AAAANwAAATcAAAI3AAADNwAABDcAAAU3AAAGNwAABzcAAAg3AAAJNwAACjcAAAs3AAAMNwAADTcAAA43AAAPNwAAEDcAABE3AAASNwAAEzcAABQ3AAAVNwAAFjcAABc3AAAYNwAAGTcAABo3AAAbNwAAHDcAAB03AAAeNwAAHzcAACA3AAAhNwAAIjcAACM3AAAkNwAAJTcAACY3AAAnNwAAKDcAACk3AAAqNwAAKzcAACw3AAAtNwAALjcAAC83AAAwNwAAMTcAADI3AAAzNwAANDcAADU3AAA2NwAANzcAADg3AAA5NwAAOjcAADs3AAA8NwAAPTcAAD43AAA/NwAAQDcAAEE3AABCNwAAQzcAAEQ3AABFNwAARjcAAEc3AABINwAASTcAAEo3AABLNwAATDcAAE03AABONwAATzcAAFA3AABRNwAAUjcAAFM3AABUNwAAVTcAAFY3AABXNwAAWDcAAFk3AABaNwAAWzcAAFw3AABdNwAAXjcAAF83AABgNwAAYTcAAGI3AABjNwAAZDcAAGU3AABmNwAAZzcAAGg3AABpNwAAajcAAGs3AABsNwAAbTcAAG43AABvNwAAcDcAAHE3AAByNwAAczcAAHQ3AAB1NwAAdjcAAHc3AAB4NwAAeTcAAHo3AAB7NwAAfDcAAH03AAB+NwAAfzcAAIA3AICANwAAgTcAgIE3AACCNwCAgjcAAIM3AICDNwAAhDcAgIQ3AACFNwCAhTcAAIY3AICGNwAAhzcAgIc3AACINwCAiDcAAIk3AICJNwAAijcAgIo3AACLNwCAizcAAIw3AICMNwAAjTcAgI03AACONwCAjjcAAI83AICPNwAAkDcAgJA3AACRNwCAkTcAAJI3AICSNwAAkzcAgJM3AACUNwCAlDcAAJU3AICVNwAAljcAgJY3AACXNwCAlzcAAJg3AICYNwAAmTcAgJk3AACaNwCAmjcAAJs3AICbNwAAnDcAgJw3AACdNwCAnTcAAJ43AICeNwAAnzcAgJ83AACgNwCAoDcAAKE3AIChNwAAojcAgKI3AACjNwCAozcAAKQ3AICkNwAApTcAgKU3AACmNwCApjcAAKc3AICnNwAAqDcAgKg3AACpNwCAqTcAAKo3AICqNwAAqzcAgKs3AACsNwCArDcAAK03AICtNwAArjcAgK43AACvNwCArzcAALA3AICwNwAAsTcAgLE3AACyNwCAsjcAALM3AICzNwAAtDcAgLQ3AAC1NwCAtTcAALY3AIC2NwAAtzcAgLc3AAC4NwCAuDcAALk3AIC5NwAAujcAgLo3AAC7NwCAuzcAALw3AIC8NwAAvTcAgL03AAC+NwCAvjcAAL83AIC/NwAAwDcAgMA3AADBNwCAwTcAAMI3AIDCNwAAwzcAgMM3AADENwCAxDcAAMU3AIDFNwAAxjcAgMY3AADHNwCAxzcAAMg3AIDINwAAyTcAgMk3AADKNwCAyjcAAMs3AIDLNwAAzDcAgMw3AADNNwCAzTcAAM43AIDONwAAzzcAgM83AADQNwCA0DcAANE3AIDRNwAA0jcAgNI3AADTNwCA0zcAANQ3AIDUNwAA1TcAgNU3AADWNwCA1jcAANc3AIDXNwAA2DcAgNg3AADZNwCA2TcAANo3AIDaNwAA2zcAgNs3AADcNwCA3DcAAN03AIDdNwAA3jcAgN43AADfNwCA3zcAAOA3AIDgNwAA4TcAgOE3AADiNwCA4jcAAOM3AIDjNwAA5DcAgOQ3AADlNwCA5TcAAOY3AIDmNwAA5zcAgOc3AADoNwCA6DcAAOk3AIDpNwAA6jcAgOo3AADrNwCA6zcAAOw3AIDsNwAA7TcAgO03AADuNwCA7jcAAO83AIDvNwAA8DcAgPA3AADxNwCA8TcAAPI3AIDyNwAA8zcAgPM3AAD0NwCA9DcAAPU3AID1NwAA9jcAgPY3AAD3NwCA9zcAAPg3AID4NwAA+TcAgPk3AAD6NwCA+jcAAPs3AID7NwAA/DcAgPw3AAD9NwCA/TcAAP43AID+NwAA/zcAgP83AAAAOABAADgAgAA4AMAAOAAAATgAQAE4AIABOADAATgAAAI4AEACOACAAjgAwAI4AAADOABAAzgAgAM4AMADOAAABDgAQAQ4AIAEOADABDgAAAU4AEAFOACABTgAwAU4AAAGOABABjgAgAY4AMAGOAAABzgAQAc4AIAHOADABzgAAAg4AEAIOACACDgAwAg4AAAJOABACTgAgAk4AMAJOAAACjgAQAo4AIAKOADACjgAAAs4AEALOACACzgAwAs4AAAMOABADDgAgAw4AMAMOAAADTgAQA04AIANOADADTgAAA44AEAOOACADjgAwA44AAAPOABADzgAgA84AMAPOAAAEDgAQBA4AIAQOADAEDgAABE4AEAROACAETgAwBE4AAASOABAEjgAgBI4AMASOAAAEzgAQBM4AIATOADAEzgAABQ4AEAUOACAFDgAwBQ4AAAVOABAFTgAgBU4AMAVOAAAFjgAQBY4AIAWOADAFjgAABc4AEAXOACAFzgAwBc4AAAYOABAGDgAgBg4AMAYOAAAGTgAQBk4AIAZOADAGTgAABo4AEAaOACAGjgAwBo4AAAbOABAGzgAgBs4AMAbOAAAHDgAQBw4AIAcOADAHDgAAB04AEAdOACAHTgAwB04AAAeOABAHjgAgB44AMAeOAAAHzgAQB84AIAfOADAHzgAACA4AEAgOACAIDgAwCA4AAAhOABAITgAgCE4AMAhOAAAIjgAQCI4AIAiOADAIjgAACM4AEAjOACAIzgAwCM4AAAkOABAJDgAgCQ4AMAkOAAAJTgAQCU4AIAlOADAJTgAACY4AEAmOACAJjgAwCY4AAAnOABAJzgAgCc4AMAnOAAAKDgAQCg4AIAoOADAKDgAACk4AEApOACAKTgAwCk4AAAqOABAKjgAgCo4AMAqOAAAKzgAQCs4AIArOADAKzgAACw4AEAsOACALDgAwCw4AAAtOABALTgAgC04AMAtOAAALjgAQC44AIAuOADALjgAAC84AEAvOACALzgAwC84AAAwOABAMDgAgDA4AMAwOAAAMTgAQDE4AIAxOADAMTgAADI4AEAyOACAMjgAwDI4AAAzOABAMzgAgDM4AMAzOAAANDgAQDQ4AIA0OADANDgAADU4AEA1OACANTgAwDU4AAA2OABANjgAgDY4AMA2OAAANzgAQDc4AIA3OADANzgAADg4AEA4OACAODgAwDg4AAA5OABAOTgAgDk4AMA5OAAAOjgAQDo4AIA6OADAOjgAADs4AEA7OACAOzgAwDs4AAA8OABAPDgAgDw4AMA8OAAAPTgAQD04AIA9OADAPTgAAD44AEA+OACAPjgAwD44AAA/OABAPzgAgD84AMA/OAAAQDgAQEA4AIBAOADAQDgAAEE4AEBBOACAQTgAwEE4AABCOABAQjgAgEI4AMBCOAAAQzgAQEM4AIBDOADAQzgAAEQ4AEBEOACARDgAwEQ4AABFOABARTgAgEU4AMBFOAAARjgAQEY4AIBGOADARjgAAEc4AEBHOACARzgAwEc4AABIOABASDgAgEg4AMBIOAAASTgAQEk4AIBJOADASTgAAEo4AEBKOACASjgAwEo4AABLOABASzgAgEs4AMBLOAAATDgAQEw4AIBMOADATDgAAE04AEBNOACATTgAwE04AABOOABATjgAgE44AMBOOAAATzgAQE84AIBPOADATzgAAFA4AEBQOACAUDgAwFA4AABROABAUTgAgFE4AMBROAAAUjgAQFI4AIBSOADAUjgAAFM4AEBTOACAUzgAwFM4AABUOABAVDgAgFQ4AMBUOAAAVTgAQFU4AIBVOADAVTgAAFY4AEBWOACAVjgAwFY4AABXOABAVzgAgFc4AMBXOAAAWDgAQFg4AIBYOADAWDgAAFk4AEBZOACAWTgAwFk4AABaOABAWjgAgFo4AMBaOAAAWzgAQFs4AIBbOADAWzgAAFw4AEBcOACAXDgAwFw4AABdOABAXTgAgF04AMBdOAAAXjgAQF44AIBeOADAXjgAAF84AEBfOACAXzgAwF84AABgOABAYDgAgGA4AMBgOAAAYTgAQGE4AIBhOADAYTgAAGI4AEBiOACAYjgAwGI4AABjOABAYzgAgGM4AMBjOAAAZDgAQGQ4AIBkOADAZDgAAGU4AEBlOACAZTgAwGU4AABmOABAZjgAgGY4AMBmOAAAZzgAQGc4AIBnOADAZzgAAGg4AEBoOACAaDgAwGg4AABpOABAaTgAgGk4AMBpOAAAajgAQGo4AIBqOADAajgAAGs4AEBrOACAazgAwGs4AABsOABAbDgAgGw4AMBsOAAAbTgAQG04AIBtOADAbTgAAG44AEBuOACAbjgAwG44AABvOABAbzgAgG84AMBvOAAAcDgAQHA4AIBwOADAcDgAAHE4AEBxOACAcTgAwHE4AAByOABAcjgAgHI4AMByOAAAczgAQHM4AIBzOADAczgAAHQ4AEB0OACAdDgAwHQ4AAB1OABAdTgAgHU4AMB1OAAAdjgAQHY4AIB2OADAdjgAAHc4AEB3OACAdzgAwHc4AAB4OABAeDgAgHg4AMB4OAAAeTgAQHk4AIB5OADAeTgAAHo4AEB6OACAejgAwHo4AAB7OABAezgAgHs4AMB7OAAAfDgAQHw4AIB8OADAfDgAAH04AEB9OACAfTgAwH04AAB+OABAfjgAgH44AMB+OAAAfzgAQH84AIB/OADAfzgAAAA4ACAAOABAADgAYAA4AIAAOACgADgAwAA4AOAAOAAAATgAIAE4AEABOABgATgAgAE4AKABOADAATgA4AE4AAACOAAgAjgAQAI4AGACOACAAjgAoAI4AMACOADgAjgAAAM4ACADOABAAzgAYAM4AIADOACgAzgAwAM4AOADOAAABDgAIAQ4AEAEOABgBDgAgAQ4AKAEOADABDgA4AQ4AAAFOAAgBTgAQAU4AGAFOACABTgAoAU4AMAFOADgBTgAAAY4ACAGOABABjgAYAY4AIAGOACgBjgAwAY4AOAGOAAABzgAIAc4AEAHOABgBzgAgAc4AKAHOADABzgA4Ac4AAAIOAAgCDgAQAg4AGAIOACACDgAoAg4AMAIOADgCDgAAAk4ACAJOABACTgAYAk4AIAJOACgCTgAwAk4AOAJOAAACjgAIAo4AEAKOABgCjgAgAo4AKAKOADACjgA4Ao4AAALOAAgCzgAQAs4AGALOACACzgAoAs4AMALOADgCzgAAAw4ACAMOABADDgAYAw4AIAMOACgDDgAwAw4AOAMOAAADTgAIA04AEANOABgDTgAgA04AKANOADADTgA4A04AAAOOAAgDjgAQA44AGAOOACADjgAoA44AMAOOADgDjgAAA84ACAPOABADzgAYA84AIAPOACgDzgAwA84AOAPOAAAEDgAIBA4AEAQOABgEDgAgBA4AKAQOADAEDgA4BA4AAAROAAgETgAQBE4AGAROACAETgAoBE4AMAROADgETgAABI4ACASOABAEjgAYBI4AIASOACgEjgAwBI4AOASOAAAEzgAIBM4AEATOABgEzgAgBM4AKATOADAEzgA4BM4AAAUOAAgFDgAQBQ4AGAUOACAFDgAoBQ4AMAUOADgFDgAABU4ACAVOABAFTgAYBU4AIAVOACgFTgAwBU4AOAVOAAAFjgAIBY4AEAWOABgFjgAgBY4AKAWOADAFjgA4BY4AAAXOAAgFzgAQBc4AGAXOACAFzgAoBc4AMAXOADgFzgAABg4ACAYOABAGDgAYBg4AIAYOACgGDgAwBg4AOAYOAAAGTgAIBk4AEAZOABgGTgAgBk4AKAZOADAGTgA4Bk4AAAaOAAgGjgAQBo4AGAaOACAGjgAoBo4AMAaOADgGjgAABs4ACAbOABAGzgAYBs4AIAbOACgGzgAwBs4AOAbOAAAHDgAIBw4AEAcOABgHDgAgBw4AKAcOADAHDgA4Bw4AAAdOAAgHTgAQB04AGAdOACAHTgAoB04AMAdOADgHTgAAB44ACAeOABAHjgAYB44AIAeOACgHjgAwB44AOAeOAAAHzgAIB84AEAfOABgHzgAgB84AKAfOADAHzgA4B84AAAgOAAgIDgAQCA4AGAgOACAIDgAoCA4AMAgOADgIDgAACE4ACAhOABAITgAYCE4AIAhOACgITgAwCE4AOAhOAAAIjgAICI4AEAiOABgIjgAgCI4AKAiOADAIjgA4CI4AAAjOAAgIzgAQCM4AGAjOACAIzgAoCM4AMAjOADgIzgAACQ4ACAkOABAJDgAYCQ4AIAkOACgJDgAwCQ4AOAkOAAAJTgAICU4AEAlOABgJTgAgCU4AKAlOADAJTgA4CU4AAAmOAAgJjgAQCY4AGAmOACAJjgAoCY4AMAmOADgJjgAACc4ACAnOABAJzgAYCc4AIAnOACgJzgAwCc4AOAnOAAAKDgAICg4AEAoOABgKDgAgCg4AKAoOADAKDgA4Cg4AAApOAAgKTgAQCk4AGApOACAKTgAoCk4AMApOADgKTgAACo4ACAqOABAKjgAYCo4AIAqOACgKjgAwCo4AOAqOAAAKzgAICs4AEArOABgKzgAgCs4AKArOADAKzgA4Cs4AAAsOAAgLDgAQCw4AGAsOACALDgAoCw4AMAsOADgLDgAAC04ACAtOABALTgAYC04AIAtOACgLTgAwC04AOAtOAAALjgAIC44AEAuOABgLjgAgC44AKAuOADALjgA4C44AAAvOAAgLzgAQC84AGAvOACALzgAoC84AMAvOADgLzgAADA4ACAwOABAMDgAYDA4AIAwOACgMDgAwDA4AOAwOAAAMTgAIDE4AEAxOABgMTgAgDE4AKAxOADAMTgA4DE4AAAyOAAgMjgAQDI4AGAyOACAMjgAoDI4AMAyOADgMjgAADM4ACAzOABAMzgAYDM4AIAzOACgMzgAwDM4AOAzOAAANDgAIDQ4AEA0OABgNDgAgDQ4AKA0OADANDgA4DQ4AAA1OAAgNTgAQDU4AGA1OACANTgAoDU4AMA1OADgNTgAADY4ACA2OABANjgAYDY4AIA2OACgNjgAwDY4AOA2OAAANzgAIDc4AEA3OABgNzgAgDc4AKA3OADANzgA4Dc4AAA4OAAgODgAQDg4AGA4OACAODgAoDg4AMA4OADgODgAADk4ACA5OABAOTgAYDk4AIA5OACgOTgAwDk4AOA5OAAAOjgAIDo4AEA6OABgOjgAgDo4AKA6OADAOjgA4Do4AAA7OAAgOzgAQDs4AGA7OACAOzgAoDs4AMA7OADgOzgAADw4ACA8OABAPDgAYDw4AIA8OACgPDgAwDw4AOA8OAAAPTgAID04AEA9OABgPTgAgD04AKA9OADAPTgA4D04AAA+OAAgPjgAQD44AGA+OACAPjgAoD44AMA+OADgPjgAAD84ACA/OABAPzgAYD84AIA/OACgPzgAwD84AOA/OAAAQDgAIEA4AEBAOABgQDgAgEA4AKBAOADAQDgA4EA4AABBOAAgQTgAQEE4AGBBOACAQTgAoEE4AMBBOADgQTgAAEI4ACBCOABAQjgAYEI4AIBCOACgQjgAwEI4AOBCOAAAQzgAIEM4AEBDOABgQzgAgEM4AKBDOADAQzgA4EM4AABEOAAgRDgAQEQ4AGBEOACARDgAoEQ4AMBEOADgRDgAAEU4ACBFOABARTgAYEU4AIBFOACgRTgAwEU4AOBFOAAARjgAIEY4AEBGOABgRjgAgEY4AKBGOADARjgA4EY4AABHOAAgRzgAQEc4AGBHOACARzgAoEc4AMBHOADgRzgAAEg4ACBIOABASDgAYEg4AIBIOACgSDgAwEg4AOBIOAAASTgAIEk4AEBJOABgSTgAgEk4AKBJOADASTgA4Ek4AABKOAAgSjgAQEo4AGBKOACASjgAoEo4AMBKOADgSjgAAEs4ACBLOABASzgAYEs4AIBLOACgSzgAwEs4AOBLOAAATDgAIEw4AEBMOABgTDgAgEw4AKBMOADATDgA4Ew4AABNOAAgTTgAQE04AGBNOACATTgAoE04AMBNOADgTTgAAE44ACBOOABATjgAYE44AIBOOACgTjgAwE44AOBOOAAATzgAIE84AEBPOABgTzgAgE84AKBPOADATzgA4E84AABQOAAgUDgAQFA4AGBQOACAUDgAoFA4AMBQOADgUDgAAFE4ACBROABAUTgAYFE4AIBROACgUTgAwFE4AOBROAAAUjgAIFI4AEBSOABgUjgAgFI4AKBSOADAUjgA4FI4AABTOAAgUzgAQFM4AGBTOACAUzgAoFM4AMBTOADgUzgAAFQ4ACBUOABAVDgAYFQ4AIBUOACgVDgAwFQ4AOBUOAAAVTgAIFU4AEBVOABgVTgAgFU4AKBVOADAVTgA4FU4AABWOAAgVjgAQFY4AGBWOACAVjgAoFY4AMBWOADgVjgAAFc4ACBXOABAVzgAYFc4AIBXOACgVzgAwFc4AOBXOAAAWDgAIFg4AEBYOABgWDgAgFg4AKBYOADAWDgA4Fg4AABZOAAgWTgAQFk4AGBZOACAWTgAoFk4AMBZOADgWTgAAFo4ACBaOABAWjgAYFo4AIBaOACgWjgAwFo4AOBaOAAAWzgAIFs4AEBbOABgWzgAgFs4AKBbOADAWzgA4Fs4AABcOAAgXDgAQFw4AGBcOACAXDgAoFw4AMBcOADgXDgAAF04ACBdOABAXTgAYF04AIBdOACgXTgAwF04AOBdOAAAXjgAIF44AEBeOABgXjgAgF44AKBeOADAXjgA4F44AABfOAAgXzgAQF84AGBfOACAXzgAoF84AMBfOADgXzgAAGA4ACBgOABAYDgAYGA4AIBgOACgYDgAwGA4AOBgOAAAYTgAIGE4AEBhOABgYTgAgGE4AKBhOADAYTgA4GE4AABiOAAgYjgAQGI4AGBiOACAYjgAoGI4AMBiOADgYjgAAGM4ACBjOABAYzgAYGM4AIBjOACgYzgAwGM4AOBjOAAAZDgAIGQ4AEBkOABgZDgAgGQ4AKBkOADAZDgA4GQ4AABlOAAgZTgAQGU4AGBlOACAZTgAoGU4AMBlOADgZTgAAGY4ACBmOABAZjgAYGY4AIBmOACgZjgAwGY4AOBmOAAAZzgAIGc4AEBnOABgZzgAgGc4AKBnOADAZzgA4Gc4AABoOAAgaDgAQGg4AGBoOACAaDgAoGg4AMBoOADgaDgAAGk4ACBpOABAaTgAYGk4AIBpOACgaTgAwGk4AOBpOAAAajgAIGo4AEBqOABgajgAgGo4AKBqOADAajgA4Go4AABrOAAgazgAQGs4AGBrOACAazgAoGs4AMBrOADgazgAAGw4ACBsOABAbDgAYGw4AIBsOACgbDgAwGw4AOBsOAAAbTgAIG04AEBtOABgbTgAgG04AKBtOADAbTgA4G04AABuOAAgbjgAQG44AGBuOACAbjgAoG44AMBuOADgbjgAAG84ACBvOABAbzgAYG84AIBvOACgbzgAwG84AOBvOAAAcDgAIHA4AEBwOABgcDgAgHA4AKBwOADAcDgA4HA4AABxOAAgcTgAQHE4AGBxOACAcTgAoHE4AMBxOADgcTgAAHI4ACByOABAcjgAYHI4AIByOACgcjgAwHI4AOByOAAAczgAIHM4AEBzOABgczgAgHM4AKBzOADAczgA4HM4AAB0OAAgdDgAQHQ4AGB0OACAdDgAoHQ4AMB0OADgdDgAAHU4ACB1OABAdTgAYHU4AIB1OACgdTgAwHU4AOB1OAAAdjgAIHY4AEB2OABgdjgAgHY4AKB2OADAdjgA4HY4AAB3OAAgdzgAQHc4AGB3OACAdzgAoHc4AMB3OADgdzgAAHg4ACB4OABAeDgAYHg4AIB4OACgeDgAwHg4AOB4OAAAeTgAIHk4AEB5OABgeTgAgHk4AKB5OADAeTgA4Hk4AAB6OAAgejgAQHo4AGB6OACAejgAoHo4AMB6OADgejgAAHs4ACB7OABAezgAYHs4AIB7OACgezgAwHs4AOB7OAAAfDgAIHw4AEB8OABgfDgAgHw4AKB8OADAfDgA4Hw4AAB9OAAgfTgAQH04AGB9OACAfTgAoH04AMB9OADgfTgAAH44ACB+OABAfjgAYH44AIB+OACgfjgAwH44AOB+OAAAfzgAIH84AEB/OABgfzgAgH84AKB/OADAfzgA4H84AAAAAAAAgAAAAAABAACAAQAAAAIAAIACAAAAAwAAgAMAAAAEAACABAAAAAUAAIAFAAAABgAAgAYAAAAHAACABwAAAAgAAIAIAAAACQAAgAkAAAAKAACACgAAAAsAAIALAAAADAAAgAwAAAANAACADQAAAA4AAIAOAAAADwAAgEcAAACAAACAgAAAAIEAAICBAAAAggAAgIIAAACDAACAgwAAAIQAAICEAAAAhQAAgIUAAACGAACAhgAAAIcAAICHAAAAiAAAgIgAAACJAACAiQAAAIoAAICKAAAAiwAAgIsAAACMAACAjAAAAI0AAICNAAAAjgAAgI4AAACPAACAxwAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEc29ydAB1bnNpZ25lZCBzaG9ydAB1bnNpZ25lZCBpbnQAaW5pdABmbG9hdAB1aW50NjRfdAB1bnNpZ25lZCBjaGFyAGJvb2wAZW1zY3JpcHRlbjo6dmFsAHVuc2lnbmVkIGxvbmcAc3RkOjp3c3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGRvdWJsZQB2b2lkAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGNoYXI+AHN0ZDo6YmFzaWNfc3RyaW5nPHVuc2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+AOgoAACwLQAATjEwZW1zY3JpcHRlbjN2YWxFAAAULgAA1CgAAGlpaQBBgNIAC6YL6CgAAPgtAAD4LQAA+C0AAPgtAAD4LQAA+C0AALAtAAD4LQAAaWlmZmZmZmZpZgBOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAAAAULgAALykAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAFC4AAFgpAABOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAFC4AAIApAABOU3QzX18yMTJiYXNpY19zdHJpbmdJaE5TXzExY2hhcl90cmFpdHNJaEVFTlNfOWFsbG9jYXRvckloRUVFRQAAFC4AAMgpAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAFC4AABAqAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAABQuAABYKgAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAAAULgAApCoAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAAFC4AAPAqAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUAABQuAAAYKwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaEVFAAAULgAAQCsAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAAFC4AAGgrAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lpRUUAABQuAACQKwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbEVFAAAULgAAuCsAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SW1FRQAAFC4AAOArAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l4RUUAABQuAAAILAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJeUVFAAAULgAAMCwAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWZFRQAAFC4AAFgsAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lkRUUAABQuAACALAAATjEwX19jeHhhYml2MTE2X19zaGltX3R5cGVfaW5mb0UAAAAAPC4AAKgsAACgLgAATjEwX19jeHhhYml2MTE3X19jbGFzc190eXBlX2luZm9FAAAAPC4AANgsAADMLAAAAAAAAEwtAAAHAAAACAAAAAkAAAAKAAAACwAAAE4xMF9fY3h4YWJpdjEyM19fZnVuZGFtZW50YWxfdHlwZV9pbmZvRQA8LgAAJC0AAMwsAAB2AAAAEC0AAFgtAABiAAAAEC0AAGQtAABjAAAAEC0AAHAtAABoAAAAEC0AAHwtAABhAAAAEC0AAIgtAABzAAAAEC0AAJQtAAB0AAAAEC0AAKAtAABpAAAAEC0AAKwtAABqAAAAEC0AALgtAABsAAAAEC0AAMQtAABtAAAAEC0AANAtAAB4AAAAEC0AANwtAAB5AAAAEC0AAOgtAABmAAAAEC0AAPQtAABkAAAAEC0AAAAuAAAAAAAA/CwAAAcAAAAMAAAACQAAAAoAAAANAAAADgAAAA8AAAAQAAAAAAAAAIQuAAAHAAAAEQAAAAkAAAAKAAAADQAAABIAAAATAAAAFAAAAE4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRQAAAAA8LgAAXC4AAPwsAABTdDl0eXBlX2luZm8AAAAAFC4AAJAuAEGo3QALA5AxAQ==",wA(U)||(U=mA(U));function Ig(A){if(A==U&&W)return new Uint8Array(W);var g=ZA(A);if(g)return g;if(x)return x(A);throw"both async and sync fetching of the wasm failed"}function Qg(A){return Promise.resolve().then(()=>Ig(A))}function Eg(A,g,B){return Qg(A).then(C=>WebAssembly.instantiate(C,g)).then(C=>C).then(B,C=>{$(`failed to asynchronously prepare wasm: ${C}`),X(C)})}function rg(A,g,B,C){return Eg(g,B,C)}function eg(){var A={a:EB};function g(C,Q){return G=C.exports,oA=G.q,VA(),TA=G.s,Ag(G.r),Cg("wasm-instantiate"),G}Bg("wasm-instantiate");function B(C){g(C.instance)}if(I.instantiateWasm)try{return I.instantiateWasm(A,g)}catch(C){$(`Module.instantiateWasm callback failed with error: ${C}`),c(C)}return rg(W,U,A,B).catch(c),{}}var BA=A=>{for(;A.length>0;)A.shift()(I)},FB=I.noExitRuntime||!0,ng=(A,g,B,C,Q)=>{},ig=()=>{for(var A=new Array(256),g=0;g<256;++g)A[g]=String.fromCharCode(g);lA=A},lA,F=A=>{for(var g="",B=A;s[B];)g+=lA[s[B++]];return g},j={},M={},V={},fA,w=A=>{throw new fA(A)},dA,FA=A=>{throw new dA(A)},og=(A,g,B)=>{A.forEach(function(r){V[r]=g});function C(r){var i=B(r);i.length!==A.length&&FA("Mismatched type converter count");for(var e=0;e{M.hasOwnProperty(r)?Q[i]=M[r]:(E.push(r),j.hasOwnProperty(r)||(j[r]=[]),j[r].push(()=>{Q[i]=M[r],++n,n===E.length&&C(Q)}))}),E.length===0&&C(Q)};function tg(A,g,B={}){var C=g.name;if(A||w(`type "${C}" must have a positive integer typeid pointer`),M.hasOwnProperty(A)){if(B.ignoreDuplicateRegistrations)return;w(`Cannot register type \'${C}\' twice`)}if(M[A]=g,delete V[A],j.hasOwnProperty(A)){var Q=j[A];delete j[A],Q.forEach(E=>E())}}function u(A,g,B={}){if(!("argPackAdvance"in g))throw new TypeError("registerType registeredInstance requires argPackAdvance");return tg(A,g,B)}var h=8,ag=(A,g,B,C)=>{g=F(g),u(A,{name:g,fromWireType:function(Q){return!!Q},toWireType:function(Q,E){return E?B:C},argPackAdvance:h,readValueFromPointer:function(Q){return this.fromWireType(s[Q])},destructorFunction:null})};function Dg(){Object.assign(GA.prototype,{get(A){return this.allocated[A]},has(A){return this.allocated[A]!==void 0},allocate(A){var g=this.freelist.pop()||this.allocated.length;return this.allocated[g]=A,g},free(A){this.allocated[A]=void 0,this.freelist.push(A)}})}function GA(){this.allocated=[void 0],this.freelist=[]}var f=new GA,uA=A=>{A>=f.reserved&&--f.get(A).refcount===0&&f.free(A)},cg=()=>{for(var A=0,g=f.reserved;g{f.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),f.reserved=f.allocated.length,I.count_emval_handles=cg},CA={toValue:A=>(A||w("Cannot use deleted val. handle = "+A),f.get(A).value),toHandle:A=>{switch(A){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return f.allocate({refcount:1,value:A})}}};function YA(A){return this.fromWireType(R[A>>2])}var sg=(A,g)=>{g=F(g),u(A,{name:g,fromWireType:B=>{var C=CA.toValue(B);return uA(B),C},toWireType:(B,C)=>CA.toHandle(C),argPackAdvance:h,readValueFromPointer:YA,destructorFunction:null})},Ng=(A,g)=>{switch(g){case 4:return function(B){return this.fromWireType(aA[B>>2])};case 8:return function(B){return this.fromWireType(DA[B>>3])};default:throw new TypeError(`invalid float width (${g}): ${A}`)}},wg=(A,g,B)=>{g=F(g),u(A,{name:g,fromWireType:C=>C,toWireType:(C,Q)=>Q,argPackAdvance:h,readValueFromPointer:Ng(g,B),destructorFunction:null})},IA=(A,g)=>Object.defineProperty(g,"name",{value:A}),lg=A=>{for(;A.length;){var g=A.pop(),B=A.pop();B(g)}};function fg(A,g){if(!(A instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof A} which is not a function`);var B=IA(A.name||"unknownFunctionName",function(){});B.prototype=A.prototype;var C=new B,Q=A.apply(C,g);return Q instanceof Object?Q:C}function dg(A,g,B,C,Q,E){var n=g.length;n<2&&w("argTypes array size mismatch! Must at least get return value and \'this\' types!");for(var r=g[1]!==null&&B!==null,i=!1,e=1;e0?", ":"")+l),N+=(D||E?"var rv = ":"")+"invoker(fn"+(l.length>0?", ":"")+l+`);\n`,i)N+=`runDestructors(destructors);\n`;else for(var e=r?1:2;e{if(A[g].overloadTable===void 0){var C=A[g];A[g]=function(){return A[g].overloadTable.hasOwnProperty(arguments.length)||w(`Function \'${B}\' called with an invalid number of arguments (${arguments.length}) - expects one of (${A[g].overloadTable})!`),A[g].overloadTable[arguments.length].apply(this,arguments)},A[g].overloadTable=[],A[g].overloadTable[C.argCount]=C}},Gg=(A,g,B)=>{I.hasOwnProperty(A)?((B===void 0||I[A].overloadTable!==void 0&&I[A].overloadTable[B]!==void 0)&&w(`Cannot register public name \'${A}\' twice`),Fg(I,A,A),I.hasOwnProperty(B)&&w(`Cannot register multiple overloads of a function with the same number of arguments (${B})!`),I[A].overloadTable[B]=g):(I[A]=g,B!==void 0&&(I[A].numArguments=B))},ug=(A,g)=>{for(var B=[],C=0;C>2]);return B},Yg=(A,g,B)=>{I.hasOwnProperty(A)||FA("Replacing nonexistant public symbol"),I[A].overloadTable!==void 0&&B!==void 0?I[A].overloadTable[B]=g:(I[A]=g,I[A].argCount=B)},Tg=(A,g,B)=>{var C=I["dynCall_"+A];return B&&B.length?C.apply(null,[g].concat(B)):C.call(null,g)},P=[],TA,yA=A=>{var g=P[A];return g||(A>=P.length&&(P.length=A+1),P[A]=g=TA.get(A)),g},yg=(A,g,B)=>{if(A.includes("j"))return Tg(A,g,B);var C=yA(g).apply(null,B);return C},Mg=(A,g)=>{var B=[];return function(){return B.length=0,Object.assign(B,arguments),yg(A,g,B)}},hg=(A,g)=>{A=F(A);function B(){return A.includes("j")?Mg(A,g):yA(g)}var C=B();return typeof C!="function"&&w(`unknown function pointer with signature ${A}: ${g}`),C},vg=(A,g)=>{var B=IA(g,function(C){this.name=g,this.message=C;var Q=new Error(C).stack;Q!==void 0&&(this.stack=this.toString()+`\n`+Q.replace(/^Error(:[^\\n]*)?\\n/,""))});return B.prototype=Object.create(A.prototype),B.prototype.constructor=B,B.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},B},MA,hA=A=>{var g=UA(A),B=F(g);return Y(g),B},Rg=(A,g)=>{var B=[],C={};function Q(E){if(!C[E]&&!M[E]){if(V[E]){V[E].forEach(Q);return}B.push(E),C[E]=!0}}throw g.forEach(Q),new MA(`${A}: `+B.map(hA).join([", "]))},Ug=A=>{A=A.trim();let g=A.indexOf("(");return g!==-1?A.substr(0,g):A},jg=(A,g,B,C,Q,E,n)=>{var r=ug(g,B);A=F(A),A=Ug(A),Q=hg(C,Q),Gg(A,function(){Rg(`Cannot call ${A} due to unbound types`,r)},g-1),og([],r,function(i){var e=[i[0],null].concat(i.slice(1));return Yg(A,dg(A,e,null,Q,E,n),g-1),[]})},Hg=(A,g,B)=>{switch(g){case 1:return B?C=>AA[C>>0]:C=>s[C>>0];case 2:return B?C=>b[C>>1]:C=>Z[C>>1];case 4:return B?C=>R[C>>2]:C=>d[C>>2];default:throw new TypeError(`invalid integer width (${g}): ${A}`)}},pg=(A,g,B,C,Q)=>{g=F(g),Q===-1&&(Q=4294967295);var E=D=>D;if(C===0){var n=32-8*B;E=D=>D<>>n}var r=g.includes("unsigned"),i=(D,a)=>{},e;r?e=function(D,a){return i(a,this.name),a>>>0}:e=function(D,a){return i(a,this.name),a},u(A,{name:g,fromWireType:E,toWireType:e,argPackAdvance:h,readValueFromPointer:Hg(g,B,C!==0),destructorFunction:null})},kg=(A,g,B)=>{var C=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],Q=C[g];function E(n){var r=d[n>>2],i=d[n+4>>2];return new Q(AA.buffer,i,r)}B=F(B),u(A,{name:B,fromWireType:E,argPackAdvance:h,readValueFromPointer:E},{ignoreDuplicateRegistrations:!0})};function zg(A){return this.fromWireType(d[A>>2])}var bg=(A,g,B,C)=>{if(!(C>0))return 0;for(var Q=B,E=B+C-1,n=0;n=55296&&r<=57343){var i=A.charCodeAt(++n);r=65536+((r&1023)<<10)|i&1023}if(r<=127){if(B>=E)break;g[B++]=r}else if(r<=2047){if(B+1>=E)break;g[B++]=192|r>>6,g[B++]=128|r&63}else if(r<=65535){if(B+2>=E)break;g[B++]=224|r>>12,g[B++]=128|r>>6&63,g[B++]=128|r&63}else{if(B+3>=E)break;g[B++]=240|r>>18,g[B++]=128|r>>12&63,g[B++]=128|r>>6&63,g[B++]=128|r&63}}return g[B]=0,B-Q},Kg=(A,g,B)=>bg(A,s,g,B),Jg=A=>{for(var g=0,B=0;B=55296&&C<=57343?(g+=4,++B):g+=3}return g},vA=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,mg=(A,g,B)=>{for(var C=g+B,Q=g;A[Q]&&!(Q>=C);)++Q;if(Q-g>16&&A.buffer&&vA)return vA.decode(A.subarray(g,Q));for(var E="";g>10,56320|e&1023)}}return E},Sg=(A,g)=>A?mg(s,A,g):"",Lg=(A,g)=>{g=F(g);var B=g==="std::string";u(A,{name:g,fromWireType(C){var Q=d[C>>2],E=C+4,n;if(B)for(var r=E,i=0;i<=Q;++i){var e=E+i;if(i==Q||s[e]==0){var D=e-r,a=Sg(r,D);n===void 0?n=a:(n+=String.fromCharCode(0),n+=a),r=e+1}}else{for(var l=new Array(Q),i=0;i>2]=E,B&&n)Kg(Q,i,E+1);else if(n)for(var e=0;e255&&(Y(i),w("String has UTF-16 code units that do not fit in 8 bits")),s[i+e]=D}else for(var e=0;e{for(var B=A,C=B>>1,Q=C+g/2;!(C>=Q)&&Z[C];)++C;if(B=C<<1,B-A>32&&RA)return RA.decode(s.subarray(A,B));for(var E="",n=0;!(n>=g/2);++n){var r=b[A+n*2>>1];if(r==0)break;E+=String.fromCharCode(r)}return E},Zg=(A,g,B)=>{if(B===void 0&&(B=2147483647),B<2)return 0;B-=2;for(var C=g,Q=B>1]=n,g+=2}return b[g>>1]=0,g-C},Xg=A=>A.length*2,Vg=(A,g)=>{for(var B=0,C="";!(B>=g/4);){var Q=R[A+B*4>>2];if(Q==0)break;if(++B,Q>=65536){var E=Q-65536;C+=String.fromCharCode(55296|E>>10,56320|E&1023)}else C+=String.fromCharCode(Q)}return C},Pg=(A,g,B)=>{if(B===void 0&&(B=2147483647),B<4)return 0;for(var C=g,Q=C+B-4,E=0;E=55296&&n<=57343){var r=A.charCodeAt(++E);n=65536+((n&1023)<<10)|r&1023}if(R[g>>2]=n,g+=4,g+4>Q)break}return R[g>>2]=0,g-C},qg=A=>{for(var g=0,B=0;B=55296&&C<=57343&&++B,g+=4}return g},_g=(A,g,B)=>{B=F(B);var C,Q,E,n,r;g===2?(C=Wg,Q=Zg,n=Xg,E=()=>Z,r=1):g===4&&(C=Vg,Q=Pg,n=qg,E=()=>d,r=2),u(A,{name:B,fromWireType:i=>{for(var e=d[i>>2],D=E(),a,l=i+4,N=0;N<=e;++N){var H=i+4+N*g;if(N==e||D[H>>r]==0){var p=H-l,k=C(l,p);a===void 0?a=k:(a+=String.fromCharCode(0),a+=k),l=H+g}}return Y(i),a},toWireType:(i,e)=>{typeof e!="string"&&w(`Cannot pass non-string to C++ string type ${B}`);var D=n(e),a=QA(4+D+g);return d[a>>2]=D>>r,Q(e,a+4,D+g),i!==null&&i.push(Y,a),a},argPackAdvance:h,readValueFromPointer:YA,destructorFunction(i){Y(i)}})},xg=(A,g)=>{g=F(g),u(A,{isVoid:!0,name:g,argPackAdvance:0,fromWireType:()=>{},toWireType:(B,C)=>{}})},$g=A=>{A>4&&(f.get(A).refcount+=1)},AB=(A,g)=>{var B=M[A];return B===void 0&&w(g+" has unknown type "+hA(A)),B},gB=(A,g)=>{A=AB(A,"_emval_take_value");var B=A.readValueFromPointer(g);return CA.toHandle(B)},BB=()=>{X("")},CB=(A,g,B)=>s.copyWithin(A,g,g+B),IB=A=>{X("OOM")},QB=A=>{var g=s.length;A>>>=0,IB(A)};ig(),fA=I.BindingError=class extends Error{constructor(g){super(g),this.name="BindingError"}},dA=I.InternalError=class extends Error{constructor(g){super(g),this.name="InternalError"}},Dg(),Og(),MA=I.UnboundTypeError=vg(Error,"UnboundTypeError");var EB={l:ng,j:ag,p:sg,f:wg,c:jg,b:pg,a:kg,e:Lg,d:_g,k:xg,g:uA,h:$g,i:gB,m:BB,o:CB,n:QB},G=eg(),rB=()=>(rB=G.r)(),UA=A=>(UA=G.t)(A),eB=()=>(eB=G.__errno_location)(),QA=A=>(QA=G.u)(A),Y=A=>(Y=G.v)(A),q;K=function A(){q||jA(),q||(K=A)};function jA(){if(y>0||(qA(),y>0))return;function A(){q||(q=!0,I.calledRun=!0,!tA&&(_A(),T(I),I.onRuntimeInitialized&&I.onRuntimeInitialized(),xA()))}I.setStatus?(I.setStatus("Running..."),setTimeout(function(){setTimeout(function(){I.setStatus("")},1),A()},1)):A()}if(I.preInit)for(typeof I.preInit=="function"&&(I.preInit=[I.preInit]);I.preInit.length>0;)I.preInit.pop()();return jA(),t.ready}})();typeof kA=="object"&&typeof rA=="object"?rA.exports=pA:typeof define=="function"&&define.amd&&define([],()=>pA)});J();var JA=NB(zA()),eA=null,nA=null,bA=0,iA=[];function KA(){if(nA)for(;iA.length;){let o=iA.shift();nA.set(o,bA),bA+=o.length}}self.onmessage=function(o){let t=o.data;switch(t.type){case"init":lB("Worker starting.");let I=t.maxpts;(0,JA.default)().then(O=>{eA=O,nA=eA.init(I),KA(),postMessage({type:"ready"})}).catch(O=>fB(O));break;case"points":let T=t.data;iA.push(T),KA();break;case"sort":let c=t.eye,v=t.dir,m=t.end,_=t.bound,S=eA.sort(c[0],c[1],c[2],v[0],v[1],v[2],m,_),z=new Uint32Array(S.length);z.set(S),postMessage({type:"indices",indices:z,offset:m},[z.buffer]);break}};function lB(o){postMessage({type:"log",str:o})}function fB(o){postMessage({type:"error",str:o})}\n',xF=new Blob([LF],{type:"text/javascript"}),_F=URL.createObjectURL(xF),UF=class extends(typeof Worker=="function"?Worker:null){constructor(){super(_F)}},GF=`#version 300 es +precision highp float;precision highp int;const float A=0.1,B=0.2;uniform mat4 view,proj;uniform vec2 res2,ires2;uniform vec3 cpos;uniform float inv_sqrt_scale_to_world;uniform int offset,size,debug;uniform vec3 zs_aa_ts,scene_center;uniform vec2 load_r,reveal_r,solid_r;uniform highp usampler2D s0,s1; +#ifdef HAVE_SEMANTICS +uniform uint semanticsMask;uniform lowp usampler2D s3; +#endif +in vec2 a0;in int a1;out vec4 v_color;out vec2 v_uv;ivec2 C(int D){return ivec2(4*((D>>4)&0x1ff)+(D&3),4*(D>>13)+((D>>2)&3));} +#ifdef HAVE_SH +uniform mediump sampler2D s2;mediump vec3 E(ivec2 F,int G,int H){return texelFetch(s2,F+ivec2(G,H),0).rgb;}mediump vec3 I(uint J,vec3 K){ivec2 F=ivec2(int(J&0xffu),int(J>>8u))*4;float L=K.x,M=K.y,N=K.z,O=L*L,P=M*M,Q=N*N,R=L*M,S=M*N,T=L*N;return-0.4886025*E(F,0,0)*M+0.4886025*E(F,1,0)*N-0.4886025*E(F,2,0)*L+1.0925484*E(F,3,0)*R-1.0925484*E(F,0,1)*S+0.3153916*E(F,1,1)*(3.*Q-1.)-1.0925484*E(F,2,1)*T+0.5462742*E(F,3,1)*(O-P)-0.5900436*E(F,0,2)*M*(3.*O-P)+2.8906114*E(F,1,2)*R*N-0.4570458*E(F,2,2)*M*(5.*Q-1.)+0.3731763*E(F,3,2)*N*(5.*Q-3.)-0.4570458*E(F,0,3)*L*(5.*Q-1.)+1.4453057*E(F,1,3)*N*(O-P)-0.5900436*E(F,2,3)*L*(O-3.*P);} +#endif +vec3 U(float V){vec3 W=fract(vec3(1.,255.,65025.)*V);return W-W.yzz*vec3(1./255.,1./255.,0.);} +#pragma shader_hook_injection +void main(){int D=a1;if(gl_InstanceIDg||f.y<-g||f.y>g){gl_Position=vec4(0.,0.,2.,1.);return;}float h=1./f.w;vec2 i=f.xy*h;uvec4 j=texelFetch(s1,X,0);vec2 k=unpackHalf2x16(j.x),l=unpackHalf2x16(j.y),m=unpackHalf2x16(j.z);vec3 n=vec3(b.y,k),o=vec3(l,m.x);n*=zs_aa_ts.z;o*=zs_aa_ts.z;uint p=j.z>>16u;mediump float q=float(j.a&0xffu),r=float((j.a>>8)&0xffu),s=float((j.a>>16)&0xffu),t=float((j.a>>24)&0xffu);mediump vec4 u=vec4(q,r,s,t)*(1./255.);vec2 v=vec2(proj[0][0]*res2.x,proj[1][1]*res2.y);float w=-h,x=w*w;mat3 y=mat3(-v.x*w,0,0,0,-v.y*w,0,v.x*e.x*x,v.y*e.y*x,0),z=mat3(d[0].xyz,d[1].xyz,d[2].xyz),AA=y*z,AB=mat3(n.x,o.x,o.y,o.x,n.y,o.z,o.y,o.z,n.z),AC=AA*AB*transpose(AA);float AD=AC[0][0]+zs_aa_ts.y,AE=AC[0][1],AF=AC[1][1]+zs_aa_ts.y;vec3 AG=(c-cpos);float AH=dot(AG,AG)*inv_sqrt_scale_to_world;float AI=(AH-A)/(B-A);AI=clamp(AI,0.,1.);float AJ=length(c-scene_center);float AK=clamp((load_r.x-AJ)*load_r.y,0.,1.);float AL=clamp((reveal_r.x-AJ)*reveal_r.y,0.,1.);float AM=clamp((solid_r.x-AJ)*solid_r.y,0.,1.);float AN=1.-AM;float AO=(AD+AF)/2.,AP=length(vec2((AD-AF)/2.,AE)),AQ=AO+AP,AR=max(AO-AP,0.1);vec2 AS=normalize(vec2(AE,AQ-AD)),AT=vec2(AS.y,-AS.x),AU=AI*mix(sqrt(2.*vec2(AQ,AR)),vec2(1.),AN),AV=min(AU.x,1024.)*AS,AW=min(AU.y,1024.)*AT;gl_Position=vec4(i+a0.x*AV*ires2+a0.y*AW*ires2,f.z*h,1.);v_uv=a0;u.a*=AI*AK*AL; +#ifndef RD +#ifdef HAVE_SH +u.rgb+=I(p,normalize(c-cpos)); +#endif +if(debug==2){v_color=vec4(vec3(u.a),1.);}else{ +#ifdef SHADER_HOOK_getSplatColor +u=_shaderHook_getSplatColor(u,c,Y); +#endif +v_color=u;} +#else +v_color=vec4(U(f.w*zs_aa_ts.x),u.a); +#endif +#ifdef SHADER_HOOK_onMainEnd +_shaderHook_onMainEnd(); +#endif +}`,TF=`#version 300 es +precision highp float;uniform float ellip;in vec4 v_color;in vec2 v_uv;out vec4 fc; +#pragma shader_hook_injection +void main(){float A=-dot(v_uv,v_uv);if(A<-4.){discard;}float B=max(exp(A),ellip)*v_color.a; +#ifndef RD +fc=vec4(v_color.rgb,B); +#ifdef SHADER_HOOK_getFragmentColor +fc=_shaderHook_getFragmentColor(fc); +#endif +fc.rgb*=fc.a; +#else +if(B<0.25){discard;}fc=vec4(v_color.rgb,1.); +#endif +}`,Tf=`#version 300 es +precision highp float;uniform mat4 view,proj;uniform float radius;uniform vec3 origin;in vec3 a_pos;out vec3 v_pos; +#pragma shader_hook_injection +void main(){gl_Position=proj*(view*vec4(radius*a_pos+origin,1.));gl_Position.z=0.;v_pos=a_pos; +#ifdef SHADER_HOOK_onMainEnd +_shaderHook_onMainEnd(); +#endif +}`,kf=`#version 300 es +precision mediump float;uniform lowp samplerCube s0;uniform float fade;in vec3 v_pos;out vec4 fc; +#pragma shader_hook_injection +void main(){vec3 A=v_pos;fc=fade*texture(s0,vec3(A.x,-A.y,-A.z)); +#ifdef SHADER_HOOK_getFragmentColor +fc=_shaderHook_getFragmentColor(fc); +#endif +}`,kF=class{constructor(e,A,t,n=void 0){if(n){let i=/(#version\s+[^\n]+)/;i.test(A)?A=A.replace(i,`$1 +${n}`):A=`${n} +${A}`,i.test(t)?t=t.replace(i,`$1 +${n}`):t=`${n} +${t}`}this.gl=e,this.vs=this._compile(e.VERTEX_SHADER,A),this.fs=this._compile(e.FRAGMENT_SHADER,t),this.program=this._link(this.vs,this.fs),this.aLoc=new Map,this.uLoc=new Map}use(){this.gl.useProgram(this.program)}uniform(e){let A=this.uLoc.get(e);return A!==void 0||(A=this.gl.getUniformLocation(this.program,e),A===null&&console.warn(`Uniform ${e} not found.`),this.uLoc.set(e,A)),A}attrib(e){let A=this.aLoc.get(e);return A!==void 0||(A=this.gl.getAttribLocation(this.program,e),A===null&&console.warn(`Attribute ${e} not found.`),this.aLoc.set(e,A)),A}relink(){let e=this.gl;e.linkProgram(this.program);var A=e.getProgramParameter(this.program,e.LINK_STATUS);if(!A)throw new Error("Error linking program:"+e.getProgramInfoLog(this.program))}_compile(e,A){let t=this.gl,n=t.createShader(e);t.shaderSource(n,A),t.compileShader(n);var i=t.getShaderParameter(n,t.COMPILE_STATUS);if(!i)throw console.error(t.getShaderInfoLog(n)),console.log(A),new Error(`Error compiling ${e==t.VERTEX_SHADER?"vertex":"fragment"} shader: ${t.getShaderInfoLog(n)}`);return n}_link(e,A){let t=this.gl,n=t.createProgram();t.attachShader(n,e),t.attachShader(n,A),t.linkProgram(n);var i=t.getProgramParameter(n,t.LINK_STATUS);if(!i)throw new Error("Error linking program:"+t.getProgramInfoLog(n));return n}delete(){this.gl.deleteProgram(this.program),this.gl.deleteShader(this.vs),this.gl.deleteShader(this.fs),this.program=null,this.vs=null,this.fs=null}},Hf=Float32Array;function HF(e,A,t){return t=t||new Hf(3),t[0]=e[0]-A[0],t[1]=e[1]-A[1],t[2]=e[2]-A[2],t}function bF(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2])}function tQ(e,A){let t=e[0]-A[0],n=e[1]-A[1],i=e[2]-A[2];return t*t+n*n+i*i}function nQ(e,A){return A=A||new Hf(3),A[0]=e[0],A[1]=e[1],A[2]=e[2],A}var Nt=class{constructor(){this.listeners=new Array}addListener(e,A=0){let t={priority:A,listener:e,remove:()=>this.removeListener(e)};return e!==null&&this.listeners.push(t),t}removeListener(e){let A=0;for(;A{e(n),this.removeListener(t)};return this.addListener(t,A)}dispatch(e,A){if(this.listeners.length!==0)return this.dispatchWithExistingEvent(e,A)}dispatchWithExistingEvent(e,A=1/0){if(this.listeners.length===0)return;let t=this.patchPayload(e);this.sortPriorityDescending();for(let n=0;nA)&&(this.listeners[n].listener(t),typeof t=="object"&&t.propagationStopped))return}hasListeners(){return this.listeners.length>0}sortPriorityDescending(){this.listeners.sort((e,A)=>A.priority-e.priority)}patchPayload(e){return e instanceof Event&&e.propagationStopped===void 0&&(e.propagationStopped=!1,e._stopPropagation=e.stopPropagation,e.stopPropagation=OF),e}};function OF(){this.propagationStopped=!0,this._stopPropagation()}var YF=(e=>(e[e.BACKGROUND=1]="BACKGROUND",e[e.FOREGROUND=2]="FOREGROUND",e[e.ALL=255]="ALL",e))(YF||{}),KF=class{constructor(e,A){this.loader=e,this.semanticsMask=255,this.hasSphericalHarmonicsTexture=!1,this.hasSemanticsTexture=!1,this.hasSkyboxTexture=!1,this.maxSortAge=1/0,this.sortAge=0,this.indicesNeedUpload=!1,this.gaussTextureUpdatePayloads=[null,null],this.gaussTextureUploadedHeight=[0,0],this.shTextureUpdatePayload=null,this.semanticsTextureUpdatePayload=null,this.skyboxTextureUpdatePayload=[],this.partialIndices=new Uint32Array(0),this.numVisible=0,this.sortEnd=0,this.needsSort=!1,this.enableEnd=!0,this.workerBusy=!1,this.loadingAnimation={enabled:!0,particleRevealEnabled:!1,particleSolidDelay_ms:3500,particleRevealSpeed:1,particleRevealOffset_ms:0,startTime_ms:-1},this.shaderParams={loadR1:0,loadR2:0,revealR1:0,revealR2:0,solidR1:0,solidR2:0,debugView:0,tweakScale:1},this.events={onLoad:new Nt,onWorkerError:new Nt,onRequestRender:new Nt},this.glObjects=null,this.compiledShaders=new Map,this.lastEye=new Float32Array(3),this.lastDir=new Float32Array(3),this.numWorkerPoints=0,this.lastWorkerPoints=0,this.loaderMetaReady=!1,this.shaderHooks=null,this.resolveWorkerReady=()=>{},A.loadingAnimationEnabled!=null&&(this.loadingAnimation.enabled=A.loadingAnimationEnabled),A.particleRevealEnabled!=null&&(this.loadingAnimation.particleRevealEnabled=A.particleRevealEnabled),this.worker=new UF,this.worker.onmessage=this.onWorkerMessage.bind(this),this.workerBusy=!0,this.workerReady=new Promise(t=>{this.resolveWorkerReady=t}),e.events.partialUpdate.addListener(()=>{this.partialUpdate()}),e.events.updateGauss1Texture.addListener(t=>{this.queueUpdateGaussTexture(0,t)}),e.events.updateGauss2Texture.addListener(t=>{this.queueUpdateGaussTexture(1,t)}),e.gauss1Ready.then(t=>{this.queueUpdateGaussTexture(0,t)}),e.gauss2Ready.then(t=>{this.queueUpdateGaussTexture(1,t)}),e.shReady.then(t=>{t!=null&&this.queueUpdateSHTexture(t)}),e.metaReady.then(()=>{this.loaderMetaReady=!0,this.initWorker()}),e.semanticsReady.then(t=>{if(t){let n=this.convertSemanticsToTiledTexture(t);this.queueUpdateSemanticsTexture(n)}}),e.skyboxReady.then(t=>{if(t)for(let n of t)this.queueUpdateSkyboxTexture(n)}),e.allReady.then(()=>{this.partialUpdate()}),Promise.all([e.allReady,this.workerReady]).then(()=>{this.events.onLoad.dispatch(this)}),this.handleQuirks()}get numSplats(){return this.loader.numSplats}syncGpuResources(e){let A=!1;return this.glObjects==null&&this.loaderMetaReady&&(this.initGLObjects(e),A=!0),this.syncQueuedGpuData(e)||A}drawSkybox(e,A){let t=this.glObjects;if(!t)return;e.disable(e.DEPTH_TEST);let n=this.getShader(e,"skybox",Tf,kf,0);n.use();let i=new Float32Array(16);i.set(A.viewMatrix),i.subarray(12,15).set([0,0,0]),e.uniformMatrix4fv(n.uniform("view"),!1,i),e.uniformMatrix4fv(n.uniform("proj"),!1,A.projectionMatrix);let r=(this.shaderParams.solidR1+this.shaderParams.solidR2)/2,o=this.loader.sceneRadius(),s=o*.9,a=Math.min(Math.max((r-s)/(o-s),0),1);e.uniform1f(n.uniform("radius"),this.loader.skybox.distance),e.uniform3fv(n.uniform("origin"),this.loader.skybox.origin),e.uniform1f(n.uniform("fade"),a),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_CUBE_MAP,t.skyboxTexture),e.uniform1i(n.uniform("s0"),0);let g=n.attrib("a_pos");e.bindBuffer(e.ARRAY_BUFFER,t.skyboxVertices),e.vertexAttribPointer(g,3,e.FLOAT,!1,0,0),e.vertexAttribDivisor(g,0),e.enableVertexAttribArray(g),e.drawArrays(e.TRIANGLES,0,6*2*3),e.disableVertexAttribArray(g)}draw(e,A,t,n,i){let r=this.glObjects,o=this.shaderParams;if(!r)return;this.hasSkyboxTexture&&!A&&this.drawSkybox(e,i),A||this.requestSort(i.position,i.direction),this.tickAnimation();let s=this.shaderHooks!=null,a=(this.semanticsMask!=255||s)&&this.hasSemanticsTexture,g=(this.hasSphericalHarmonicsTexture?2:0)|(a?4:0),I;A?(I=this.getShader(e,"splat",yg,Dg,g|1),e.clearColor(1,1,1,1),e.disable(e.BLEND)):(I=this.getShader(e,"splat",yg,Dg,g),e.enable(e.BLEND),e.blendFunc(e.ONE,e.ONE_MINUS_SRC_ALPHA)),e.disable(e.DEPTH_TEST),I.use(),e.uniformMatrix4fv(I.uniform("view"),!1,i.viewMatrix),e.uniformMatrix4fv(I.uniform("proj"),!1,i.projectionMatrix),e.uniform2f(I.uniform("res2"),t/2,n/2),e.uniform2f(I.uniform("ires2"),2/t,2/n),e.uniform1f(I.uniform("inv_sqrt_scale_to_world"),1/Math.sqrt(this.loader.scaleToWorld)),e.uniform1i(I.uniform("offset"),this.sortEnd),e.uniform1i(I.uniform("size"),this.numSplats),e.uniform3f(I.uniform("zs_aa_ts"),1/i.far,this.loader.antialias,Math.pow(o.tweakScale,2)),e.uniform3fv(I.uniform("cpos"),i.position),e.uniform3fv(I.uniform("scene_center"),this.loader.sceneCenter),e.uniform2f(I.uniform("load_r"),o.loadR2,1/(o.loadR2-o.loadR1)),e.uniform2f(I.uniform("reveal_r"),o.revealR2,1/(o.revealR2-o.revealR1)),e.uniform2f(I.uniform("solid_r"),o.solidR2,1/(o.solidR2-o.solidR1)),e.uniform1i(I.uniform("debug"),o.debugView),e.uniform1f(I.uniform("ellip"),o.debugView>0?1:0),g&4&&(e.uniform1ui(I.uniform("semanticsMask"),this.semanticsMask),e.activeTexture(e.TEXTURE3),e.bindTexture(e.TEXTURE_2D,r.semanticsTexture),e.uniform1i(I.uniform("s3"),3)),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,r.gaussTextures[0]),e.uniform1i(I.uniform("s0"),0),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,r.gaussTextures[1]),e.uniform1i(I.uniform("s1"),1),!A&&this.loader.haveSH&&(e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,r.shTexture),e.uniform1i(I.uniform("s2"),2)),e.bindBuffer(e.ARRAY_BUFFER,r.quadVertices);let C=I.attrib("a0");e.vertexAttribPointer(C,2,e.FLOAT,!1,0,0),e.vertexAttribDivisor(C,0),e.enableVertexAttribArray(C),e.bindBuffer(e.ARRAY_BUFFER,r.indexBuffer1);let B=I.attrib("a1");e.vertexAttribIPointer(B,1,e.INT,0,0),e.vertexAttribDivisor(B,1),e.enableVertexAttribArray(B),this.numSplatsthis.lastWorkerPoints||this.sortAge>=this.maxSortAge||this.needsSort)?(this.queueSort(e,A),this.needsSort=!1,!0):!1}queueSort(e,A,t){let n=bF(HF(e,this.loader.sceneCenter)),i=1.5*Math.max(n,this.loader.minRadius),r=this.loader.radiusList,o=r.findIndex(a=>a>i),s;if(o>=0&&this.enableEnd?(s=o*this.loader.radiusStep,s=Math.min(s,this.loader.numSplats)):(o=r.length-1,s=this.loader.numSplats),s=Math.min(s,this.numWorkerPoints),this.worker.postMessage({type:"sort",eye:e,dir:A,end:s,bound:r[o]}),this.workerBusy=!0,nQ(e,this.lastEye),nQ(A,this.lastDir),this.lastWorkerPoints=this.numWorkerPoints,t){let a=g=>{var I;g.data.type==="indices"&&((I=this.worker)==null||I.removeEventListener("message",a),t())};this.worker.addEventListener("message",a,{once:!0})}}tickAnimation(){if(this.loadingAnimation.enabled){let e=!1;e=this.tickSoftLoadingBoundary()||e,e=this.tickLoadingAnimation()||e,e?this.events.onRequestRender.dispatch():this.loadingAnimation.enabled=!this.loader.isComplete}else{let e=this.loader.sceneRadius(),A=1.1;this.shaderParams.loadR1=e,this.shaderParams.loadR2=e*A,this.shaderParams.revealR1=e,this.shaderParams.revealR2=e*A,this.shaderParams.solidR1=e,this.shaderParams.solidR2=e*A}}setShaderHooks(e){for(let A of this.compiledShaders.values())for(let t of A.values())t.delete();this.compiledShaders.clear(),this.shaderHooks=e}dispose(){this.worker&&this.worker.terminate(),this.glObjects&&(this.glObjects.dispose(),this.glObjects=null);for(let e of this.compiledShaders.values())for(let A of e.values())A.delete();this.compiledShaders.clear()}initWorker(){this.worker.postMessage({type:"init",maxpts:this.loader.totalSplats})}updateWorkerPoints(){let e=this.loader.cpuPtsCount;if(this.worker&&this.numWorkerPoints.001||n>.001}onWorkerMessage(e){let A="color: #ff00ff",t=e.data;switch(t.type){case"indices":this.partialIndices=t.indices,this.sortEnd=t.offset,this.queueUpdateIndices(),this.workerBusy=!1,this.sortAge=0,this.events.onRequestRender.dispatch();break;case"ready":this.workerBusy=!1,console.log("%cSorter ready.",A),this.events.onRequestRender.dispatch(),this.resolveWorkerReady(this.worker);break;case"log":console.log(`%cSorter: ${t.str}`,A);break;case"error":console.error(`%cSorter error: ${t.str}`,A),this.events.onWorkerError.dispatch(t.str);break}}partialUpdate(){this.updateWorkerPoints(),this.queueUpdateIndices(),this.needsSort=!0,this.events.onRequestRender.dispatch(),this.loadingAnimation.startTime_ms<0&&(this.loadingAnimation.startTime_ms=performance.now())}syncQueuedGpuData(e){if(!this.glObjects)return!1;let A=this.glObjects,t=!1;if(this.indicesNeedUpload){e.bindBuffer(e.ARRAY_BUFFER,A.indexBuffer1);let n=(this.loader.numSplats-this.sortEnd)*this.partialIndices.BYTES_PER_ELEMENT;e.bufferSubData(e.ARRAY_BUFFER,n,this.partialIndices),e.bindBuffer(e.ARRAY_BUFFER,null),this.numVisible=this.partialIndices.length,this.indicesNeedUpload=!1,t=!0}for(let n=0;n<2;n++){let i=this.gaussTextureUpdatePayloads[n];if(i==null)continue;let r=this.gaussTextureUploadedHeight[n],o=i.currentHeight-r,s=A.gaussTextures[n];if(o>0){e.bindTexture(e.TEXTURE_2D,s),this.gaussTextureUploadedHeight[n]===0&&(e.texImage2D(e.TEXTURE_2D,0,i.internalFormat,i.width,i.height,0,i.format,i.type,null),this.setGLTexParameters(e,e.TEXTURE_2D,i.minMagFilter));let a=r*i.width*i.channels,g=this.replaceGLPixelStoreParametersForPayload(e,i);e.texSubImage2D(e.TEXTURE_2D,0,0,r,i.width,o,i.format,i.type,i.data,a),this.setGLPixelStoreParameters(e,g)}this.gaussTextureUploadedHeight[n]=i.currentHeight,this.gaussTextureUpdatePayloads[n]=null,t=!0}for(this.shTextureUpdatePayload&&(this.uploadTexture(e,A.shTexture,this.shTextureUpdatePayload),this.hasSphericalHarmonicsTexture=!0,this.shTextureUpdatePayload=null,t=!0),this.semanticsTextureUpdatePayload&&(this.uploadTexture(e,A.semanticsTexture,this.semanticsTextureUpdatePayload),this.hasSemanticsTexture=!0,this.semanticsTextureUpdatePayload=null,t=!0);this.skyboxTextureUpdatePayload.length;){let n=this.skyboxTextureUpdatePayload.shift();this.uploadTexture(e,A.skyboxTexture,n),this.hasSkyboxTexture=!0,t=!0}return t}uploadTexture(e,A,t){let n=t.target;n>=e.TEXTURE_CUBE_MAP_POSITIVE_X&&n<=e.TEXTURE_CUBE_MAP_NEGATIVE_Z&&(n=e.TEXTURE_CUBE_MAP),e.bindTexture(n,A);let i=this.replaceGLPixelStoreParametersForPayload(e,t);e.texImage2D(t.target,0,t.internalFormat,t.width,t.height,0,t.format,t.type,t.data),this.setGLTexParameters(e,n,t.minMagFilter),this.setGLPixelStoreParameters(e,i)}replaceGLPixelStoreParametersForPayload(e,A){let t=this.getGLPixelStoreParameters(e),n={UNPACK_ALIGNMENT:1,UNPACK_FLIP_Y_WEBGL:!1,UNPACK_PREMULTIPLY_ALPHA_WEBGL:!1,UNPACK_COLORSPACE_CONVERSION_WEBGL:e.NONE,UNPACK_ROW_LENGTH:A.width,UNPACK_IMAGE_HEIGHT:A.height,UNPACK_SKIP_PIXELS:0,UNPACK_SKIP_ROWS:0,UNPACK_SKIP_IMAGES:0};return this.setGLPixelStoreParameters(e,n),t}getGLPixelStoreParameters(e){return{UNPACK_ALIGNMENT:e.getParameter(e.UNPACK_ALIGNMENT),UNPACK_FLIP_Y_WEBGL:e.getParameter(e.UNPACK_FLIP_Y_WEBGL),UNPACK_PREMULTIPLY_ALPHA_WEBGL:e.getParameter(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL),UNPACK_COLORSPACE_CONVERSION_WEBGL:e.getParameter(e.UNPACK_COLORSPACE_CONVERSION_WEBGL),UNPACK_ROW_LENGTH:e.getParameter(e.UNPACK_ROW_LENGTH),UNPACK_IMAGE_HEIGHT:e.getParameter(e.UNPACK_IMAGE_HEIGHT),UNPACK_SKIP_PIXELS:e.getParameter(e.UNPACK_SKIP_PIXELS),UNPACK_SKIP_ROWS:e.getParameter(e.UNPACK_SKIP_ROWS),UNPACK_SKIP_IMAGES:e.getParameter(e.UNPACK_SKIP_IMAGES)}}setGLPixelStoreParameters(e,A){e.pixelStorei(e.UNPACK_ALIGNMENT,A.UNPACK_ALIGNMENT),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,A.UNPACK_FLIP_Y_WEBGL),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,A.UNPACK_PREMULTIPLY_ALPHA_WEBGL),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,A.UNPACK_COLORSPACE_CONVERSION_WEBGL),e.pixelStorei(e.UNPACK_ROW_LENGTH,A.UNPACK_ROW_LENGTH),e.pixelStorei(e.UNPACK_IMAGE_HEIGHT,A.UNPACK_IMAGE_HEIGHT),e.pixelStorei(e.UNPACK_SKIP_PIXELS,A.UNPACK_SKIP_PIXELS),e.pixelStorei(e.UNPACK_SKIP_ROWS,A.UNPACK_SKIP_ROWS),e.pixelStorei(e.UNPACK_SKIP_IMAGES,A.UNPACK_SKIP_IMAGES)}setGLTexParameters(e,A,t){e.texParameteri(A,e.TEXTURE_MIN_FILTER,t),e.texParameteri(A,e.TEXTURE_MAG_FILTER,t),e.texParameteri(A,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(A,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),A==WebGL2RenderingContext.TEXTURE_CUBE_MAP&&e.texParameteri(A,e.TEXTURE_WRAP_R,e.CLAMP_TO_EDGE)}initGLObjects(e){let A=this.loader.totalSplats,t=e.createBuffer(),n=e.createBuffer();if(!t||!n)throw new Error("Failed to create buffer");e.bindBuffer(e.ARRAY_BUFFER,t),e.bufferData(e.ARRAY_BUFFER,4*A,e.DYNAMIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,4*A,e.DYNAMIC_DRAW),this.sortEnd===0&&(this.sortEnd=this.loader.numSplats);let i=e.createTexture(),r=e.createTexture(),o=e.createTexture(),s=e.createTexture(),a=e.createTexture();if(!i||!r||!o||!s||!a)throw new Error("Failed to create texture");let g=e.createBuffer();if(!g)throw new Error("Failed to create buffer");e.bindBuffer(e.ARRAY_BUFFER,g),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-2,-2,2,-2,2,2,-2,2]),e.STATIC_DRAW);let I=this.createSkyboxCube(e);this.glObjects={gaussTextures:[i,r],shTexture:o,semanticsTexture:s,indexBuffer1:t,indexBuffer2:n,quadVertices:g,skyboxTexture:a,skyboxVertices:I,dispose:()=>{e.deleteTexture(i),e.deleteTexture(r),e.deleteTexture(o),e.deleteBuffer(t),e.deleteBuffer(n),e.deleteTexture(a),e.deleteBuffer(I)}}}createSkyboxCube(e){let A=e.createBuffer();if(!A)throw new Error("Failed to create buffer");return e.bindBuffer(e.ARRAY_BUFFER,A),e.bufferData(e.ARRAY_BUFFER,bf,e.STATIC_DRAW),A}getShader(e,A,t,n,i){let r=this.compiledShaders.get(A);r||(r=new Map,this.compiledShaders.set(A,r));let o=r.get(i);return o||(o=this.compileShader(e,t,n,i,this.shaderHooks),r.set(i,o)),o}compileShader(e,A,t,n,i){let r=this.getShaderDefines(n),o=Of(A,t,i);return new kF(e,o.vertexShader,o.fragmentShader,r)}getShaderDefines(e){let A="";for(let t in oQ){let n=parseInt(t);e&n&&(A+=`#define ${oQ[n]} +`)}return A}queueUpdateIndices(){this.indicesNeedUpload=this.partialIndices.length>=0&&this.loaderMetaReady}queueUpdateGaussTexture(e,A){this.gaussTextureUpdatePayloads[e]=A}queueUpdateSHTexture(e){this.shTextureUpdatePayload=e}queueUpdateSemanticsTexture(e){this.semanticsTextureUpdatePayload=e}queueUpdateSkyboxTexture(e){this.skyboxTextureUpdatePayload.push(e)}convertSemanticsToTiledTexture(e){let A=2048,t=e.byteLength*8-1,n=this.tiledCoords(t|0).y,i=Math.ceil(n/4)*4,r=1,o=WebGL2RenderingContext.R8UI,s=WebGL2RenderingContext.RED_INTEGER,a=WebGL2RenderingContext.UNSIGNED_BYTE,g=new Uint8Array(A*i*r),I=new Uint8Array(e);for(let C=0;C>E&1,{x:c,y:l}=this.tiledCoords(d|0),u=l*A+c,Q=h+1;g[u*r]=Q}}return{target:WebGL2RenderingContext.TEXTURE_2D,internalFormat:o,format:s,type:a,width:A,height:i,data:g,currentHeight:i,channels:r,minMagFilter:WebGL2RenderingContext.NEAREST,unpackAlignment:1,complete:!0}}tiledCoords(e){return{x:4*(e>>4&511)+(e&3),y:4*(e>>13)+(e>>2&3)}}tickLoadingAnimation(){if(this.loadingAnimation.startTime_ms<0)return!1;let e=this.shaderParams,A=this.loadingAnimation,t=this.loader.sceneRadius();A.particleRevealEnabled||(this.shaderParams.revealR1=t,this.shaderParams.revealR2=t,this.shaderParams.solidR1=t,this.shaderParams.solidR2=t);let n=(performance.now()-A.startTime_ms+A.particleRevealOffset_ms)*A.particleRevealSpeed,i=()=>e.revealR1>=t&&e.solidR1>=t;if(i())return!1;let r=function(a){return Math.pow(Math.max((a+1e3)/5e3,0),2.5)},o=r(n)*t;e.revealR1=o*.9,e.revealR2=o*1.1;let s=r(n-A.particleSolidDelay_ms)*t;return e.solidR1=s*.9,e.solidR2=s*1.1,!i()}tickSoftLoadingBoundary(){let e=this.shaderParams,A=this.loader.loadedRadius,t=.99;if(e.loadR1/A>t||e.loadR2/A>t)return!1;let n=.1,i=.05;return e.loadR1=i*A+(1-i)*e.loadR1,e.loadR2=n*A+(1-n)*e.loadR2,!0}handleQuirks(){this.loader.metaReady.then(e=>{let A=e.radiusList,t=!0;for(let n=1;n()=>(y&&(R=y(y=0)),R);var mI=(y,R)=>()=>(R||y((R={exports:{}}).exports,R),R.exports);var vI=(y,R,Q,d)=>{if(R&&typeof R=="object"||typeof R=="function")for(let K of zI(R))!bI.call(y,K)&&K!==Q&&$A(y,K,{get:()=>R[K],enumerable:!(d=pI(R,K))||d.enumerable});return y};var _I=(y,R,Q)=>(Q=y!=null?ZI(uI(y)):{},vI(R||!y||!y.__esModule?$A(Q,"default",{value:y,enumerable:!0}):Q,y));var m=PI(()=>{});var Ig=mI((gg,SA)=>{m();var Ag=(()=>{var y=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return function(R={}){var Q=R,d,K;Q.ready=new Promise((A,g)=>{d=A,K=g});var v=Object.assign({},Q),_=[],p="./this.program",$=(A,g)=>{throw g},KA=!0,X=!1,U="";function z(A){return Q.locateFile?Q.locateFile(A,U):U+A}var AA,gA,GA;(KA||X)&&(X?U=self.location.href:typeof document<"u"&&document.currentScript&&(U=document.currentScript.src),y&&(U=y),U.indexOf("blob:")!==0?U=U.substr(0,U.replace(/[?#].*/,"").lastIndexOf("/")+1):U="",AA=A=>{var g=new XMLHttpRequest;return g.open("GET",A,!1),g.send(null),g.responseText},X&&(GA=A=>{var g=new XMLHttpRequest;return g.open("GET",A,!1),g.responseType="arraybuffer",g.send(null),new Uint8Array(g.response)}),gA=(A,g,I)=>{var B=new XMLHttpRequest;B.open("GET",A,!0),B.responseType="arraybuffer",B.onload=()=>{if(B.status==200||B.status==0&&B.response){g(B.response);return}I()},B.onerror=I,B.send(null)});var BB=Q.print||console.log.bind(console),yA=Q.printErr||console.error.bind(console);Object.assign(Q,v),v=null,Q.arguments&&(_=Q.arguments),Q.thisProgram&&(p=Q.thisProgram),Q.quit&&($=Q.quit);var IA;Q.wasmBinary&&(IA=Q.wasmBinary),typeof WebAssembly!="object"&&CA("no native wasm support detected");function Qg(A){for(var g=atob(A),I=new Uint8Array(g.length),B=0;BA.startsWith(rA),V;V="data:application/octet-stream;base64,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gMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASALQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgC4QhGUIAIQEgGVAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgC4RQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIAtC////////P1gEQCAFQdAAaiABIA0gASANIA1QIgYbeSAGQQZ0rXynIgZBD2sQOEEQIAZrIQYgBSkDWCINQiCIIQ4gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAwgAyAMIAxQIggbeSAIQQZ0rXynIghBD2sQOCAGIAhrQRBqIQYgBSkDSCEMIAUpA0AhAwsgA0IPhiILQoCA/v8PgyICIAFCIIgiBH4iECALQiCIIhMgAUL/////D4MiAX58Ig9CIIYiESABIAJ+fCILIBFUrSACIA1C/////w+DIg1+IhUgBCATfnwiESAMQg+GIhIgA0IxiIRC/////w+DIgMgAX58IhQgDyAQVK1CIIYgD0IgiIR8Ig8gAiAOQoCABIQiDH4iFiANIBN+fCIOIBJCIIhCgICAgAiEIgIgAX58IhAgAyAEfnwiEkIghnwiF3whASAHIAlqIAZqQf//AGshBgJAIAIgBH4iGCAMIBN+fCIEIBhUrSAEIAQgAyANfnwiBFatfCACIAx+fCAEIAQgESAVVK0gESAUVq18fCIEVq18IAMgDH4iAyACIA1+fCICIANUrUIghiACQiCIhHwgBCACQiCGfCICIARUrXwgAiACIBAgElatIA4gFlStIA4gEFatfHxCIIYgEkIgiIR8IgJWrXwgAiACIA8gFFStIA8gF1atfHwiAlatfCIEQoCAgICAgMAAg0IAUgRAIAZBAWohBgwBCyALQj+IIRogBEIBhiACQj+IhCEEIAJCAYYgAUI/iIQhAiALQgGGIQsgGiABQgGGhCEBCyAGQf//AU4EQCAKQoCAgICAgMD//wCEIQpCACEBDAELAn4gBkEATARAQQEgBmsiB0H/AE0EQCAFQTBqIAsgASAGQf8AaiIGEDggBUEg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AEEBayIBNgIAIAFBf0cNAQsgACAAKAIAKAIQEQEACws0AQF/IwBBEGsiAyQAIAMgATYCDCAAIAMoAgw2AgAgAEEEaiACKAIANgIAIANBEGokACAACw4AIABB0ABqECRB0ABqC/ICAgJ/AX4CQCACRQ0AIAAgAToAACAAIAJqIgNBAWsgAToAACACQQNJDQAgACABOgACIAAgAToAASADQQNrIAE6AAAgA0ECayABOgAAIAJBB0kNACAAIAE6AAMgA0EEayABOgAAIAJBCUkNACAAQQAgAGtBA3EiBGoiAyABQf8BcUGBgoQIbCIBNgIAIAMgAiAEa0F8cSIEaiICQQRrIAE2AgAgBEEJSQ0AIAMgATYCCCADIAE2AgQgAkEIayABNgIAIAJBDGsgATYCACAEQRlJDQAgAyABNgIYIAMgATYCFCADIAE2AhAgAyABNgIMIAJBEGsgATYCACACQRRrIAE2AgAgAkEYayABNgIAIAJBHGsgATYCACAEIANBBHFBGHIiBGsiAkEgSQ0AIAGtQoGAgIAQfiEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkEgayICQR9LDQALCyAACwQAQQAL0wUBA38CQCAAKALIjwFFBEAMAQsgACAAKALAjwEiAEERIAAgAEERTBsgAGtBB2pBeHFqQQhqNgLAjwEPCwNAQQAhAwJAIAENAAJAIAAoAgAiASgCrAEiAiABKAKwAUkEQCABIAJBAWo2AqwBIAItAAAhAwwBCyABKAIgRQ0BIAEoAhwgAUEoaiIDIAEoAiQgASgCEBEEACECIAEgASgCqAEgASgCrAEgASgCtAFrajYCqAECfyACRQRAIAFBADoAKCABQQA2AiAgAUEpaiECQQAMAQsgAiADaiECIAMtAAALIQMgASACNgKwASABIAFBKWo2AqwBCyADQf8BRw0AAkAgACgCACIBKAKsASICIAEoArABSQRAIAEgAkEBajYCrAEgAi0AACECDAELIAEoAiBFBEBBACECDAELIAEoAhwgAUEoaiICIAEoAiQgASgCEBEEACEDIAEgASgCqAEgASgCrAEgASgCtAFrajYCqAECfyADRQRAIAFBADoAKCABQQA2AiAgAUEpaiEDQQAMAQsgAiADaiEDIAItAAALIQIgASADNgKwASABIAFBKWo2AqwBCwNAIAJB/wFxIgFB/wFHBEBB/wEhAyABRQ0CIABBATYCyI8BIAAgAjoAxI8BDwsgACgCACIBKAKsASICIAEoArABSQRAIAEgAkEBajYCrAEgAi0AACECDAELQQAhAiABKAIgRQ0AIAEoAhwgAUEoaiICIAEoAiQgASgCEBEEACEDIAEgASgCqAEgASgCrAEgASgCtAFrajYCqAECfyADRQRAIAFBADoAKCABQQA2AiAgAUEpaiEDQQAMAQsgAiADaiEDIAItAAALIQIgASADNgKwASABIAFBKWo2AqwBDAALAAsgACAAKALAjwEiAUEIajYCwI8BIAAgACgCvI8BIANBGCABa3RyNgK8jwEgAUERSARAIAAoAsiPASEBDAELCwsNACAAKAIAEOUCGiAACw0AIAAoAgAQ2AEaIAALBQAQCQALwgEBA38gAC0AAEEgcUUEQAJAIAIgACgCECIDBH8gAwUgABDxAg0BIAAoAhALIAAoAhQiBGtLBEAgACABIAIgACgCJBEEABoMAQsCQAJAIAAoAlBBAEgNACACRQ0AIAIhAwNAIAEgA2oiBUEBay0AAEEKRwRAIANBAWsiAw0BDAILCyAAIAEgAyAAKAIkEQQAIANJDQIgAiADayECIAAoAhQhBAwBCyABIQULIAQgBSACEDQaIAAgACgCFCACajYCFAsLC3UBAX4gACABIAR+IAIgA358IANCIIgiAiABQiCIIgR+fCADQv////8PgyIDIAFC/////w+DIgF+IgVCIIggAyAEfnwiA0IgiHwgASACfiADQv////8Pg3wiAUIgiHw3AwggACAFQv////8PgyABQiCGhDcDAAuABAEDfyACQYAETwRAIAAgASACEBQgAA8LIAAgAmohAwJAIAAgAXNBA3FFBEACQCAAQQNxRQRAIAAhAgwBCyACRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCwJAIANBfHEiBEHAAEkNACACIARBQGoiBUsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIAVNDQALCyACIARPDQEDQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAESQ0ACwwBCyADQQRJBEAgACECDAELIAAgA0EEayIESwRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLIAALbAECfyMAQRBrIgUkACAFIAI2AgwgBSAENgIIIAVBBGogBUEMahBLIQYgACABIAMgBSgCCBChASEBIAYoAgAiAARAQcSoAigCABogAARAQcSoAkHMpwIgACAAQX9GGzYCAAsLIAVBEGokACABC+0BAQJ/An8gAC0AC0EHdgRAIAAoAgQMAQsgAC0AC0H/AHELIQQCQCACIAFrQQVIDQAgBEUNACABIAIQmQEgAkEEayEEAn8gAC0AC0EHdgRAIAAoAgQMAQsgAC0AC0H/AHELAn8gAC0AC0EHdgRAIAAoAgAMAQsgAAsiAmohBQJAA0ACQCACLAAAIQAgASAETw0AAkAgAEEATA0AIABB/wBODQAgACABKAIARw0DCyABQQRqIQEgAiAFIAJrQQFKaiECDAELCyAAQQBMDQEgAEH/AE4NASACLAAAIAQoAgBBAWtLDQELIANBBDYCAAsLbwEBfyMAQYACayIFJAACQCACIANMDQAgBEGAwARxDQAgBSABQf8BcSACIANrIgNBgAIgA0GAAkkiARsQLBogAUUEQANAIAAgBUGAAhAyIANBgAJrIgNB/wFLDQALCyAAIAUgAxAyCyAFQYACaiQAC1ABAX4CQCADQcAAcQRAIAEgA0FAaq2GIQJCACEBDAELIANFDQAgAiADrSIEhiABQcAAIANrrYiEIQIgASAEhiEBCyAAIAE3AwAgACACNwMIC3YBAX8jAEEQayICJAAgAC0AC0EHdgRAIAAgACgCACAAKAIIQf////8HcRCkAQsgACABKAIINgIIIAAgASkCADcCACABIAEtAAtBgAFxOgALIAEgAS0AC0H/AHE6AAsgAkEAOgAPIAEgAi0ADzoAACACQRBqJAALCgAgAEHorgIQZgsJAEH3CRCQAwALAgALLQAgAkUEQCAAKAIEIAEoAgRGDwsgACABRgRAQQEPCyAAKAIEIAEoAgQQogFFC8UJAgR/Bn4jAEHwAGsiBiQAIARC////////////AIMhCQJAAkAgAVAiBSACQv///////////wCDIgpCgICAgICAwP//AH1CgICAgICAwICAf1QgClAbRQRAIANCAFIgCUKAgICAgIDA//8AfSILQoCAgICAgMCAgH9WIAtCgICAgICAwICAf1EbDQELIAUgCkKAgICAgIDA//8AVCAKQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQQgASEDDAILIANQIAlCgICAgICAwP//AFQgCUKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCEEDAILIAEgCkKAgICAgIDA//8AhYRQBEBCgICAgICA4P//ACACIAEgA4UgAiAEhUKAgICAgICAgIB/hYRQIgUbIQRCACABIAUbIQMMAgsgAyAJQoCAgICAgMD//wCFhFANASABIAqEUARAIAMgCYRCAFINAiABIAODIQMgAiAEgyEEDAILIAMgCYRCAFINACABIQMgAiEEDAELIAMgASABIANUIAkgClYgCSAKURsiCBshCiAEIAIgCBsiC0L///////8/gyEJIAIgBCAIGyICQjCIp0H//wFxIQcgC0IwiKdB//8BcSIFRQRAIAZB4ABqIAogCSAKIAkgCVAiBRt5IAVBBnStfKciBUEPaxA4IAYpA2ghCSAGKQNgIQpBECAFayEFCyABIAMgCBshAyACQv///////z+DIQQgB0UEQCAGQdAAaiADIAQgAyAEIARQIgcbeSAHQQZ0rXynIgdBD2sQOEEQIAdrIQcgBikDWCEEIAYpA1AhAwsgBEIDhiADQj2IhEKAgICAgICABIQhASAJQgOGIApCPYiEIQ4gAiALhSENAn4gA0IDhiICIAUgB0YNABogBSAHayIHQf8ASwRAQgAhAUIBDAELIAZBQGsgAiABQYABIAdrEDggBkEwaiACIAEgBxBzIAYpAzghASAGKQMwIAYpA0AgBikDSIRCAFKthAshCSAOQoCAgICAgIAEhCEMIApCA4YhCgJAIA1CAFMEQEIAIQNCACEEIAkgCoUgASAMhYRQDQIgCiAJfSECIAwgAX0gCSAKVq19IgRC/////////wNWDQEgBkEgaiACIAQgAiAEIARQIgcbeSAHQQZ0rXynQQxrIgcQOCAFIAdrIQUgBikDKCEEIAYpAyAhAgwBCyAJIAp8IgIgCVStIAEgDHx8IgRCgICAgICAgAiDUA0AIAlCAYMgBEI/hiACQgGIhIQhAiAFQQFqIQUgBEIBiCEECyALQoCAgICAgICAgH+DIQEgBUH//wFOBEAgAUKAgICAgIDA//8AhCEEQgAhAwwBC0EAIQcCQCAFQQBKBEAgBSEHDAELIAZBEGogAiAEIAVB/wBqEDggBiACIARBASAFaxBzIAYpAwAgBikDECAGKQMYhEIAUq2EIQIgBikDCCEECyACp0EHcSIFQQRLrSAEQj2GIAJCA4iEIgJ8IgMgAlStIARCA4hC////////P4MgB61CMIaEIAGEfCEEAkAgBUEERgRAIAQgA0IBgyIBIAN8IgMgAVStfCEEDAELIAVFDQELCyAAIAM3AwAgACAENwMIIAZB8ABqJAALCgAgAEHwrgIQZgtkACACKAIEQbABcSICQSBGBEAgAQ8LAkAgAkEQRw0AAkACQCAALQAAIgJBK2sOAwABAAELIABBAWoPCyABIABrQQJIDQAgAkEwRw0AIAAtAAFBIHJB+ABHDQAgAEECaiEACyAACz0BAn8CfyAALQALQQd2BEAgACgCAAwBCyAACyEBIwBBEGsiACQAIAAgATYCDCAAKAIMIQIgAEEQaiQAIAILfgICfwF+IwBBEGsiAyQAIAACfiABRQRAQgAMAQsgAyABIAFBH3UiAnMgAmsiAq1CACACZyICQdEAahA4IAMpAwhCgICAgICAwACFQZ6AASACa61CMIZ8IAFBgICAgHhxrUIghoQhBCADKQMACzcDACAAIAQ3AwggA0EQaiQAC+wCAQR/AkAgACgCrAEiAiAAKAKwASIDSQRAIAAgAkEBaiIBNgKsASACLQAAIQQMAQsgACgCIEUEQCACIQEMAQsgACgCHCAAQShqIgEgACgCJCAAKAIQEQQAIQIgACAAKAKoASAAKAKsASAAKAK0AWtqNgKoAQJ/IAJFBEAgAEEAOgAoIABBADYCICAAQSlqIQNBAAwBCyABIAJqIQMgAS0AAAshBCAAIAM2ArABIAAgAEEpaiIBNgKsAQsCQCABIANJBEAgACABQQFqNgKsASABLQAAIQEMAQsgACgCIEUEQEEAIQEMAQsgACgCHCAAQShqIgEgACgCJCAAKAIQEQQAIQIgACAAKAKoASAAKAKsASAAKAK0AWtqNgKoAQJ/IAJFBEAgAEEAOgAoIABBADYCICAAQSlqIQJBAAwBCyABIAJqIQIgAS0AAAshASAAIAI2ArABIAAgAEEpajYCrAELIAFB/wFxIARBCHRyCwkAQbsMEJADAAsMACABIAIgABDwAhoLgQEBAn8CQAJAIAJBBE8EQCAAIAFyQQNxDQEDQCAAKAIAIAEoAgBHDQIgAUEEaiEBIABBBGohACACQQRrIgJBA0sNAAsLIAJFDQELA0AgAC0AACIDIAEtAAAiBEYEQCABQQFqIQEgAEEBaiEAIAJBAWsiAg0BDAILCyADIARrDwtBAAsHACAALQAEC9QCAQd/IwBBEGsiByQAIAEQTiEFAn8gAi0AC0EHdgRAIAIoAgQMAQsgAi0AC0H/AHELIQYCfwJ/IwBBEGsiCCQAIAUgBmoiA0Hv////B00EQAJAIANBC0kEQCAAQgA3AgAgAEEANgIIIAAgAC0AC0GAAXEgA3I6AAsgACAALQALQf8AcToACwwBCyAAIANBC08EfyADQRBqQXBxIgQgBEEBayIEIARBC0YbBUEKC0EBaiIEEOACIQkgACAAKAIIQYCAgIB4cSAEQf////8HcXI2AgggACAAKAIIQYCAgIB4cjYCCCAAIAk2AgAgACADNgIECyAIQRBqJAAgAAwBCxBEAAsiAC0AC0EHdgRAIAAoAgAMAQsgAAsiACABIAUQRSAAIAVqIgACfyACLQALQQd2BEAgAigCAAwBCyACCyAGEEUgACAGakEBQQAQtQEgB0EQaiQACyAAIwBBEGsiASQAIABCADcCACAAQQA2AgggAUEQaiQACyAAIABBnJsCNgIAIABBoJwCNgIAIABBBGogARC4ASAACz0BAX9BxKgCKAIAIQIgASgCACIBBEBBxKgCQcynAiABIAFBf0YbNgIACyAAQX8gAiACQcynAkYbNgIAIAALRwECfyAAIAE3A3AgACAAKAIsIAAoAgQiA2usNwN4IAAoAgghAgJAIAFQDQAgAiADa6wgAVcNACADIAGnaiECCyAAIAI2AmgLeAECfyMAQRBrIgQkACAAQQA2AgQgBEEPaiAAEOwCQQQhAyAELQAPBEAgACAAIAAoAgBBDGsoAgBqKAIYIgMgASACIAMoAgAoAiARBAAiATYCBEEGQQAgASACRxshAwsgACAAKAIAQQxrKAIAaiADEHQgBEEQaiQAC3oBA38CQAJAIAAiAUEDcUUNACABLQAARQRAQQAPCwNAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASICQQRqIQEgAigCACIDQX9zIANBgYKECGtxQYCBgoR4cUUNAAsDQCACIgFBAWohAiABLQAADQALCyABIABrC0sBAnwgACAAoiIBIACiIgIgASABoqIgAUSnRjuMh83GPqJEdOfK4vkAKr+goiACIAFEsvtuiRARgT+iRHesy1RVVcW/oKIgAKCgtgtPAQF8IAAgAKIiACAAIACiIgGiIABEaVDu4EKT+T6iRCceD+iHwFa/oKIgAURCOgXhU1WlP6IgAESBXgz9///fv6JEAAAAAAAA8D+goKC2C3YBAX8jAEEQayICJAAgAC0AC0EHdgRAIAAgACgCACAAKAIIQf////8HcRCUAQsgACABKAIINgIIIAAgASkCADcCACABIAEtAAtBgAFxOgALIAEgAS0AC0H/AHE6AAsgAkEANgIMIAEgAigCDDYCACACQRBqJAALsgIBBH8jAEEQayIHJAAgByABNgIMQQAhAUEGIQUCQAJAIAAgB0EMahAhDQBBBCEFIANBwAACfyAAKAIAIgYoAgwiCCAGKAIQRgRAIAYgBigCACgCJBEAAAwBCyAIKAIACyIGIAMoAgAoAgwRBABFDQAgAyAGQQAgAygCACgCNBEEACEBA0ACQCAAEC8aIAFBMGshASAAIAdBDGoQIQ0AIARBAkgNACADQcAAAn8gACgCACIFKAIMIgYgBSgCEEYEQCAFIAUoAgAoAiQRAAAMAQsgBigCAAsiBSADKAIAKAIMEQQARQ0DIARBAWshBCADIAVBACADKAIAKAI0EQQAIAFBCmxqIQEMAQsLQQIhBSAAIAdBDGoQIUUNAQsgAiACKAIAIAVyNgIACyAHQRBqJAAgAQvYAgEEfyMAQRBrIgckACAHIAE2AgxBACEBQQYhBQJAAkAgACAHQQxqECINAEEEIQUCfyAAKAIAIgYoAgwiCCAGKAIQRgRAIAYgBigCACgCJBEAAAwBCyAILQAAC8AiBkEATgR/IAMoAgggBkH/AXFBAnRqKAIAQcAAcUEARwVBAAtFDQAgAyAGQQAgAygCACgCJBEEACEBA0ACQCAAEDAaIAFBMGshASAAIAdBDGoQIg0AIARBAkgNAAJ/IAAoAgAiBSgCDCIGIAUoAhBGBEAgBSAFKAIAKAIkEQAADAELIAYtAAALwCIFQQBOBH8gAygCCCAFQf8BcUECdGooAgBBwABxQQBHBUEAC0UNAyAEQQFrIQQgAyAFQQAgAygCACgCJBEEACABQQpsaiEBDAELC0ECIQUgACAHQQxqECJFDQELIAIgAigCACAFcjYCAAsgB0EQaiQAIAELvwEBBH8jAEEQayIEJAAgBCABNgIMIAQgAzYCCCAEQQRqIARBDGoQSyEHIAQoAgghAyMAQRBrIgEkACABIAM2AgwgASADNgIIQX8hBQJAQQBBACACIAMQoQEiA0EASA0AIAAgA0EBaiIDECQiADYCACAARQ0AIAAgAyACIAEoAgwQoQEhBQsgAUEQaiQAIAcoAgAiAARAQcSoAigCABogAARAQcSoAkHMpwIgACAAQX9GGzYCAAsLIARBEGokACAFCy4AAkAgACgCBEHKAHEiAARAIABBwABGBEBBCA8LIABBCEcNAUEQDwtBAA8LQQoL+QECA34CfyMAQRBrIgUkAAJ+IAG9IgRC////////////AIMiAkKAgICAgICACH1C/////////+//AFgEQCACQjyGIQMgAkIEiEKAgICAgICAgDx8DAELIAJCgICAgICAgPj/AFoEQCAEQjyGIQMgBEIEiEKAgICAgIDA//8AhAwBCyACUARAQgAMAQsgBSACQgAgAqdnQSBqIAJCIIinZyACQoCAgIAQVBsiBkExahA4IAUpAwAhAyAFKQMIQoCAgICAgMAAhUGM+AAgBmutQjCGhAshAiAAIAM3AwAgACACIARCgICAgICAgICAf4OENwMIIAVBEGokAAuwAwEDfwJAIAAtAMSPASICQf8BRwRAIABB/wE6AMSPAQwBCwJAIAAoAgAiASgCrAEiAiABKAKwAUkEQCABIAJBAWo2AqwBIAItAAAhAwwBCyABKAIgRQRAQf8BIQIMAgsgASgCHCABQShqIgMgASgCJCABKAIQEQQAIQIgASABKAKoASABKAKsASABKAK0AWtqNgKo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aAsgCEECcQRAIAAgFSACIAMgBCAUIBMQaAsgCEEEcQRAIAAgASAUIAMgFSAFIBMQaAsgCEEIcQRAIAAgFSAUIAMgBCAFIBMQaAsgCEEQcQRAIAAgASACIBMgFSAUIAYQaAsgCEEgcQRAIAAgFSACIBMgBCAUIAYQaAsgCEHAAHEEQCAAIAEgFCATIBUgBSAGEGgLIBUhASAUIQIgEyEDIAjAQQBIDQEMAgsLIAAoAhwiByAAKAIUIggoAgQgCCgCACIKayIIIAcgCEsbIQtBACENA0AgByALRg0EIAAgB0EBaiIINgIcIA0gByAKai0AACIJaiENIAghByAJQf8BRg0ACyANRQ0AQQAhESATvCIHQRB2QYCAAnEiCyAHQf////8HcSIKQQ12IghB/wNxQYAEckEAIApBgICA/AdHG0EAIApB////+wdLG3JBgPgBciAIIAdB/x9xQQBHciAHQQx2cUEBcSAIQYCAB2sgC3JqIApB////uwRLGyAHQf///wNxQYCAgARyIglB/QAgCkEXdiIIayIHdiAJQf4AIAhrdiIIIAlBfyAHdEF/c3FBAEdycUEBcSAIIAtyaiALIApB////lwNLGyAKQf///8MDSxshEiAUvCIHQRB2QYCAAnEiCyAHQf////8HcSIKQQ12IghB/wNxQYAEckEAIApBgICA/AdHG0EAIApB////+wdLG3JBgPgBciAIIAdB/x9xQQBHciAHQQx2cUEBcSAIQYCAB2sgC3JqIApB////uwRLGyAHQf///wNxQYCAgARyIglB/QAgCkEXdiIIayIHdiAJQf4AIAhrdiIIIAlBfyAHdEF/c3FBAEdycUEBcSAIIAtyaiALIApB////lwNLGyAKQf///8MDSxshECAVvCIHQRB2QYCAAnEiCyAHQf////8HcSIKQQ12IghB/wNxQYAEckEAIApBgICA/AdHG0EAIApB////+wdLG3JBgPgBciAIIAdB/x9xQQBHciAHQQx2cUEBcSAIQYCAB2sgC3JqIApB////uwRLGyAHQf///wNxQYCAgARyIglB/QAgCkEXdiIIayIHdiAJQf4AIAhrdiIIIAlBfyAHdEF/c3FBAEdycUEBcSAIIAtyaiALIApB////lwNLGyAKQf///8MDSxshCgNAAkAgACgCBCIMIAAoAggiCEkEQCAMIAo7AQAgACAMQQJqIgc2AgQMAQsgDCAAKAIAIgtrQQF1IglBfkwNA0H/////ByAIIAtrIgcgCUEBaiIIIAcgCEsbIAdB/v///wdPGyIHBH8gB0EASA0FIAdBAXQQHQVBAAsiCCAJQQF0aiIOIAo7AQAgCCAHQQF0aiEIIA5BAmohByALIAxHBEADQCAOQQJrIg4gDEECayIMLwEAOwEAIAsgDEcNAAsLIAAgCDYCCCAAIAc2AgQgACAONgIAIAtFDQAgCxAXIAAoAgghCCAAKAIEIQcLAkAgByAISQRAIAcgEDsBACAAIAdBAmoiDDYCBAwBCyAHIAAoAgAiD2tBAXUiC0F+TA0DQf////8HIAggD2siCSALQQFqIgggCCAJSRsgCUH+////B08bIgkEfyAJQQBIDQUgCUEBdBAdBUEACyIIIAtBAXRqIg4gEDsBACAIIAlBAXRqIQggDkECaiEMIAcgD0cEQANAIA5BAmsiDiAHQQJrIgcvAQA7AQAgByAPRw0ACwsgACAINgIIIAAgDDYCBCAAIA42AgAgD0UNACAPEBcgACgCCCEIIAAoAgQhDAsCQCAIIAxLBEAgDCASOwEAIAAgDEECajYCBAwBCyAMIAAoAgAiDmtBAXUiC0F+TA0DQf////8HIAggDmsiByALQQFqIgggByAISxsgB0H+////B08bIg8EfyAPQQBIDQUgD0EBdBAdBUEACyIJIAtBAXRqIgcgEjsBACAHQQJqIQggDCAORwRAA0AgB0ECayIHIAxBAmsiDC8BADsBACAMIA5HDQALCyAAIAkgD0EBdGo2AgggACAINgIEIAAgBzYCACAORQ0AIA4QFwsgEUEBaiIRIA1HDQALCw8LEDsACxBtAAtBCBArQf8OEEpBxJ0CQQwQAAALEgAgASABIAJBAnRqIAAQ4gIaC94CAQl/IAEgACgCCCIDIAAoAgQiAmtNBEAgACABBH8gAkEAIAEQLCABagUgAgs2AgQPCyACIAAoAgAiBWsiBiABaiIEQQBOBEBB/////wcgAyAFayIDQQF0IgggBCAEIAhJGyADQf////8DTxsiBARAIAQQHSEHCyAEIAdqIQggASAGIAdqIgNBACABECwiBGohCQJAIAIgBUYEQCAEIQcMAQsgBUF/cyACaiEKIAZBA3EiBgRAQQAhAQNAIANBAWsiAyACQQFrIgItAAA6AAAgAUEBaiIBIAZHDQALCyAKQQNPBEADQCADQQFrIAJBAWstAAA6AAAgA0ECayACQQJrLQAAOgAAIANBA2sgAkEDay0AADoAACADQQRrIgMgAkEEayICLQAAOgAAIAIgBUcNAAsLIAAoAgAhAgsgACAINgIIIAAgCTYCBCAAIAc2AgAgAgRAIAIQFwsPCxA7AAsHACAAKAIEC20BA38gARBOIgJB8P///wdJBEACQCACQQpNBEAgACACOgALIAAhAwwBCyACQQ9yQQFqIgQQHSEDIAAgBEGAgICAeHI2AgggACADNgIAIAAgAjYCBAsgAyABIAIQhAEgAmpBADoAACAADwsQRAALLgEBf0EEECsiAEGcmwI2AgAgAEH0mgI2AgAgAEGImwI2AgAgAEH4mwJBBRAAAAsTACABQQF0QYCUAmpBAiAAEPACCzUAIABBnJsCNgIAIABBoJwCNgIAIABBBGoCfyABLQALQQd2BEAgASgCAAwBCyABCxC4ASAAC3YBAX8jAEEQayICJAAgAiAANgIMAkAgACABRg0AA0AgAiABQQFrIgE2AgggACABTw0BIAIoAgwiAC0AACEBIAAgAigCCCIALQAAOgAAIAAgAToAACACIAIoAgxBAWoiADYCDCACKAIIIQEMAAsACyACQRBqJAAL+wEBAX9BFBAdIgBB5OMANgIMIABB7OIANgIAIABCADcCBEG4ngIgADYCAEG0ngIgAEEMajYCAEEUEB0iAEHA5QA2AgAgAEIANwIEIABBuOYANgIMIABBAToAEEHAngIgADYCAEG8ngIgAEEMajYCAEEUEB0iAEHA5QA2AgAgAEIANwIEIABBuOYANgIMIABBADoAEEHongJCADcCAEHIngIgADYCAEHEngIgAEEMajYCAEHMngJCADcCAEHUngJCADcCAEHcngJCADcCAEGInwJBADYCAEGAnwJCADcCAEHkngJB6J4CNgIAQfCeAkIANwIAQfWeAkIANwAAC9sBAgF/An5BASEEAkAgAEIAUiABQv///////////wCDIgVCgICAgICAwP//AFYgBUKAgICAgIDA//8AURsNACACQgBSIANC////////////AIMiBkKAgICAgIDA//8AViAGQoCAgICAgMD//wBRGw0AIAAgAoQgBSAGhIRQBEBBAA8LIAEgA4NCAFkEQEF/IQQgACACVCABIANTIAEgA1EbDQEgACAChSABIAOFhEIAUg8LQX8hBCAAIAJWIAEgA1UgASADURsNACAAIAKFIAEgA4WEQgBSIQQLIAQLUAEBfgJAIANBwABxBEAgAiADQUBqrYghAUIAIQIMAQsgA0UNACACQcAAIANrrYYgASADrSIEiIQhASACIASIIQILIAAgATcDACAAIAI3AwgLDwAgACAAKAIQIAFyEIwBC6gBAAJAIAFBgAhOBEAgAEQAAAAAAADgf6IhACABQf8PSQRAIAFB/wdrIQEMAgsgAEQAAAAAAADgf6IhAEH9FyABIAFB/RdOG0H+D2shAQwBCyABQYF4Sg0AIABEAAAAAAAAYAOiIQAgAUG4cEsEQCABQckHaiEBDAELIABEAAAAAAAAYAOiIQBB8GggASABQfBoTBtBkg9qIQELIAAgAUH/B2qtQjSGv6ILBwAgACgCCAsHACAALwEECwcAIAAuAQQL/gEBA38CfyAALQALQQd2BEAgACgCBAwBCyAALQALQf8AcQsiAiABSQRAIwBBEGsiBCQAIAEgAmsiAgRAIAIgAC0AC0EHdgR/IAAoAghB/////wdxQQFrBUEKCyIDAn8gAC0AC0EHdgRAIAAoAgQMAQsgAC0AC0H/AHELIgFrSwRAIAAgAyACIANrIAFqIAEgARC2AQsgAQJ/IAAtAAtBB3YEQCAAKAIADAELIAALIgNqIAJBABC1ASAAIAEgAmoiABBhIARBADoADyAAIANqIAQtAA86AAALIARBEGokAA8LIAACfyAALQALQQd2BEAgACgCAAwBCyAACyABEPwBCxkAIAEgAhD9ASEBIAAgAjYCBCAAIAE2AgALhAIBBH8jAEEQayIFJAAgARD0ASECIwBBEGsiAyQAAkAgAkHv////A00EQAJAIAJBAkkEQCAAIAAtAAtBgAFxIAJyOgALIAAgAC0AC0H/AHE6AAsgACEEDAELIANBCGogACACQQJPBH8gAkEEakF8cSIEIARBAWsiBCAEQQJGGwVBAQtBAWoQeiADKAIMGiAAIAMoAggiBDYCACAAIAAoAghBgICAgHhxIAMoAgxB/////wdxcjYCCCAAIAAoAghBgICAgHhyNgIIIAAgAjYCBAsgBCABIAIQaSADQQA2AgQgBCACQQJ0aiADKAIENgIAIANBEGokAAwBCxBEAAsgBUEQaiQAC+QBAQZ/IwBBEGsiBSQAIAAoAgQhAwJ/IAIoAgAgACgCAGsiBEH/////B0kEQCAEQQF0DAELQX8LIgRBBCAEGyEEIAEoAgAhByAAKAIAIQggA0GgA0YEf0EABSAAKAIACyAEEKkBIgYEQCADQaADRwRAIAAoAgAaIABBADYCAAsgBUGfAzYCBCAAIAVBCGogBiAFQQRqECoiAxCeAiADKAIAIQYgA0EANgIAIAYEQCAGIAMoAgQRAQALIAEgACgCACAHIAhrajYCACACIAAoAgAgBEF8cWo2AgAgBUEQaiQADwsQMQALigMBAn8jAEEQayIKJAAgCiAANgIMAkACQAJAIAMoAgAgAkcNAEErIQsgACAJKAJgRwRAQS0hCyAJKAJkIABHDQELIAMgAkEBajYCACACIAs6AAAMAQsCQAJ/IAYtAAtBB3YEQCAGKAIEDAELIAYtAAtB/wBxC0UNACAAIAVHDQBBACEAIAgoAgAiASAHa0GfAUoNAiAEKAIAIQAgCCABQQRqNgIAIAEgADYCAAwBC0F/IQAgCSAJQegAaiAKQQxqEMMBIAlrQQJ1IgVBF0oNAQJAAkACQCABQQhrDgMAAgABCyABIAVKDQEMAwsgAUEQRw0AIAVBFkgNACADKAIAIgEgAkYNAiABIAJrQQJKDQIgAUEBay0AAEEwRw0CQQAhACAEQQA2AgAgAyABQQFqNgIAIAEgBUGA3QFqLQAAOgAADAILIAMgAygCACIAQQFqNgIAIAAgBUGA3QFqLQAAOgAAIAQgBCgCAEEBajYCAEEAIQAMAQtBACEAIARBADYCAAsgCkEQaiQAIAALCgAgAEGwrwIQZguMAwEDfyMAQRBrIgokACAKIAA6AA8CQAJAAkAgAygCACACRw0AQSshCyAAQf8BcSIMIAktABhHBEBBLSELIAktABkgDEcNAQsgAyACQQFqNgIAIAIgCzoAAAwBCwJAAn8gBi0AC0EHdgRAIAYoAgQMAQsgBi0AC0H/AHELRQ0AIAAgBUcNAEEAIQAgCCgCACIBIAdrQZ8BSg0CIAQoAgAhACAIIAFBBGo2AgAgASAANgIADAELQX8hACAJIAlBGmogCkEPahDGASAJayIFQRdKDQECQAJAAkAgAUEIaw4DAAIAAQsgASAFSg0BDAMLIAFBEEcNACAFQRZIDQAgAygCACIBIAJGDQIgASACa0ECSg0CIAFBAWstAABBMEcNAkEAIQAgBEEANgIAIAMgAUEBajYCACABIAVBgN0Bai0AADoAAAwCCyADIAMoAgAiAEEBajYCACAAIAVBgN0Bai0AADoAACAEIAQoAgBBAWo2AgBBACEADAELQQAhACAEQQA2AgALIApBEGokACAACwoAIABBqK8CEGYLgwECBX8BfgJAIABCgICAgBBUBEAgACEHDAELA0AgAUEBayIBIAAgAEIKgCIHQgp+fadBMHI6AAAgAEL/////nwFWIQUgByEAIAUNAAsLIAenIgIEQANAIAFBAWsiASACIAJBCm4iA0EKbGtBMHI6AAAgAkEJSyEGIAMhAiAGDQALCyABC2MCAX8BfiMAQRBrIgIkACAAAn4gAUUEQEIADAELIAIgAa1CACABZyIBQdEAahA4IAIpAwhCgICAgICAwACFQZ6AASABa61CMIZ8IQMgAikDAAs3AwAgACADNwMIIAJBEGokAAtSAQJ/QeidAigCACIBIABBB2pBeHEiAmohAAJAIAJBACAAIAFNGw0AIAA/AEEQdEsEQCAAEBNFDQELQeidAiAANgIAIAEPC0HoqAJBMDYCAEF/C+gCAQJ/AkAgACABRg0AIAEgACACaiIEa0EAIAJBAXRrTQRAIAAgASACEDQPCyAAIAFzQQNxIQMCQAJAIAAgAUkEQCADBEAgACEDDAMLIABBA3FFBEAgACEDDAILIAAhAwNAIAJFDQQgAyABLQAAOgAAIAFBAWohASACQQFrIQIgA0EBaiIDQQNxDQALDAELAkAgAw0AIARBA3EEQANAIAJFDQUgACACQQFrIgJqIgMgASACai0AADoAACADQQNxDQALCyACQQNNDQADQCAAIAJBBGsiAmogASACaigCADYCACACQQNLDQALCyACRQ0CA0AgACACQQFrIgJqIAEgAmotAAA6AAAgAg0ACwwCCyACQQNNDQADQCADIAEoAgA2AgAgAUEEaiEBIANBBGohAyACQQRrIgJBA0sNAAsLIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQQFrIgINAAsLIAALBABBBAsHACAAQQRqC4gDAQV/IwBBEGsiCCQAIAIgAUF/c0Hv////B2pNBEACfyAALQALQQd2BEAgACgCAAwBCyAACyEKIAhBBGoiCSAAIAFB5////wNJBH8gCCABQQF0NgIMIAggASACajYCBCMAQRBrIgIkACAJKAIAIAhBDGoiCygCAEkhDCACQRBqJAAgCyAJIAwbKAIAIgJBC08EfyACQRBqQXBxIgIgAkEBayICIAJBC0YbBUEKC0EBagVB7////wcLEI0BIAgoAgQhAiAIKAIIGiAEBEAgAiAKIAQQRQsgBgRAIAIgBGogByAGEEULIAMgBCAFaiIJayEHIAMgCUcEQCACIARqIAZqIAQgCmogBWogBxBFCyABQQFqIgFBC0cEQCAAIAogARCkAQsgACACNgIAIAAgACgCCEGAgICAeHEgCCgCCEH/////B3FyNgIIIAAgACgCCEGAgICAeHI2AgggACAEIAZqIAdqIgA2AgQgCEEAOgAMIAAgAmogCC0ADDoAACAIQRBqJAAPCxBEAAsLACAEIAI2AgBBAwuAAQECfyMAQRBrIgMkACADQQxqIgQgASgCHCIBNgIAIAEgASgCBEEBajYCBCACIAQQfiIBIAEoAgAoAhARAAA2AgAgACABIAEoAgAoAhQRAwAgBCgCACIAIAAoAgRBAWsiATYCBCABQX9GBEAgACAAKAIAKAIIEQEACyADQRBqJAALeQECfyMAQRBrIgMkACADQQxqIgIgACgCHCIANgIAIAAgACgCBEEBajYCBCACEDoiAEGA3QFBmt0BIAEgACgCACgCMBEKABogAigCACIAIAAoAgRBAWsiAjYCBCACQX9GBEAgACAAKAIAKAIIEQEACyADQRBqJAAgAQuBAQECfyMAQRBrIgMkACADQQxqIgQgASgCHCIBNgIAIAEgASgCBEEBajYCBCACIAQQgAEiASABKAIAKAIQEQAAOgAAIAAgASABKAIAKAIUEQMAIAQoAgAiACAAKAIEQQFrIgE2AgQgAUF/RgRAIAAgACgCACgCCBEBAAsgA0EQaiQACyAAIAAgACgCGEUgAXIiATYCECAAKAIUIAFxBEAQMQALCxkAIAEgAhDgAiEBIAAgAjYCBCAAIAE2AgALCAAgABDOARoLqwMCBH8DfSAEIAIoAgAiCEECdGoqAgAhCQJAIAQgASgCACIFQQJ0aioCACIKIAQgACgCACIHQQJ0aioCACILXUUEQCAJIApdRQRAIAghBQwCCyABIAg2AgAgAiAFNgIAQQEhBiAEIAEoAgAiB0ECdGoqAgAgBCAAKAIAIghBAnRqKgIAXUUNASAAIAc2AgAgASAINgIAIAIoAgAhBUECIQYMAQsCQCAJIApdBEAgACAINgIAIAIgBzYCAEEBIQYMAQsgACAFNgIAIAEgBzYCAEECIQYgBCACKAIAIgVBAnRqKgIAIAtdRQRAQQEhBgwCCyABIAU2AgAgAiAHNgIACyAHIQULIAQgAygCACIHQQJ0aioCACAEIAVBAnRqKgIAXQR/IAIgBzYCACADIAU2AgAgBCACKAIAIgNBAnRqKgIAIAQgASgCACIFQQJ0aioCAF1FBEAgBkEBag8LIAEgAzYCACACIAU2AgAgBCABKAIAIgJBAnRqKgIAIAQgACgCACIDQQJ0aioCAF1FBEAgBkECag8LIAAgAjYCACABIAM2AgAgBkEDagUgBgsLuAIBBX8jAEEgayIDJAACQCACEE4iBEHw////B0kEQAJAIARBCk0EQCADIAQ6AB8gA0EUaiEFDAELIARBD3JBAWoiBhAdIQUgAyAGQYCAgIB4cjYCHCADIAU2AhQgAyAENgIYCyAFIAIgBBA0IARqQQA6AAAgACABKAIAIgEgA0EUaiABKAIAKAJYEQIAIgEoAgA2AgAgACABKAIEIgE2AgQgAQRAIAEgASgCBEEBajYCBAsgAywAH0EASARAIAMoAhQQFwsgACgCACIAIAAoAgAoAgwRAABBwABHDQEgA0EgaiQADwsQRAALQQgQKyEHIANBFGoiASADQQhqQfwWEGwgAiACEE4Q8AEiACkCADcCACABIAAoAgg2AgggAEIANwIAIABBADYCCCAHIAEQb0HEnQJBDBAAAAtJAQJ/IAAoAgQiBUEIdSEGIAAoAgAiACABIAVBAXEEfyAGIAIoAgBqKAIABSAGCyACaiADQQIgBUECcRsgBCAAKAIAKAIYEQ0AC/gBAQN/IwBBEGsiAiQAIAIgAToADwJAAkACfyAALQALIgNBB3YiBEUEQEEKIQEgA0H/AHEMAQsgACgCCEH/////B3FBAWshASAAKAIECyIDIAFGBEAgACABQQEgASABELYBAn8gAC0AC0EHdgRAIAAoAgAMAQtBAAsaDAELAn8gAC0AC0EHdgRAIAAoAgAMAQtBAAsaIAQNACAAIgEgA0EBaiAALQALQYABcXI6AAsgACAALQALQf8AcToACwwBCyAAKAIAIQEgACADQQFqNgIECyABIANqIgAgAi0ADzoAACACQQA6AA4gACACLQAOOgABIAJBEGokAAuHAQEBfyAALQALQQd2BH8gACgCCEH/////B3FBAWsFQQoLIgMgAk8EQAJ/IAAtAAtBB3YEQCAAKAIADAELIAALIgMgASACELcBIAAgAyACEPwBDwsgACADIAIgA2sCfyAALQALQQd2BEAgACgCBAwBCyAALQALQf8AcQsiAEEAIAAgAiABEIcBCwkAIAAgARD7AQvTAQEEfyMAQRBrIgQkAAJAIAAoAgAiAyADKAIAKAIMEQAAQcAARwRAIAJBvAlBGxCTAUEAIQMMAQtBASEDIAEoAgQiBUUNACABKAIAIgEgBUEEdGohBQNAIAAoAgAiBiABIAYoAgAoAlgRAgAoAgAiBiAGKAIAKAIMEQAAIAEoAgxHBEAgBEEEakGmFiABEEggAiwAC0EASARAIAIoAgAQFwsgAiAEKQIENwIAIAIgBCgCDDYCCEEAIQMMAgsgAUEQaiIBIAVHDQALCyAEQRBqJAAgAwvdCAEJfyMAQRBrIgckAEGcpwItAABFBEAjAEGgAmsiAyQAIANBADYCnAIgA0EANgKUAiADQQA2AowCIANBADYChAIgA0EWNgL8ASADQRc2AvQBIANBGDYC7AEgA0EZNgLkASADQRo2AtQBIANBGzYCvAEgA0EcNgK0ASADQR02AqwBIANBHjYCpAEgA0EfNgKcASADQSA2ApQBIANBITYCjAEgA0EiNgKEASADQSM2AnwgA0EkNgJ0IANBJTYCbCADQSY2AmQgA0EnNgJcIANBKDYCVCADQSk2AkwgA0EqNgJEIANBKzYCPCADQSw2AjQgA0EtNgIsIANBLjYCJCADQS82AhwgA0EwNgIUIANBMTYCDCADQdwBOgDYASADQTI2AtwBIANBzAE6AHggA0EzNgLMASADQcQBOgA4IANBNDYCxAEgA0EAOgCYAiADQQA6AJACIANBADoAiAIgA0EAOgCAAiADQf8BOgD4ASADQd8BOgDwASADQd4BOgDoASADQd0BOgDgASADQdsBOgDQASADQdoBOgDIASADQdkBOgDAASADQdgBOgC4ASADQdMBOgCwASADQdIBOgCoASADQdEBOgCgASADQdABOgCY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C0EHdgRAIAAoAgAMAQtBAAsaIAQNACAAIgEgA0EBaiAALQALQYABcXI6AAsgACAALQALQf8AcToACwwBCyAAKAIAIQEgACADQQFqNgIECyABIANBAnRqIgAgAigCDDYCACACQQA2AgggACACKAIINgIEIAJBEGokAAs9AQF/IwBBEGsiAyQAIAMgAjoADwNAIAEEQCAAIAMtAA86AAAgAUEBayEBIABBAWohAAwBCwsgA0EQaiQAC8MCAQV/IwBBEGsiBSQAIAJB7////wcgAWtNBEACfyAALQALQQd2BEAgACgCAAwBCyAACyEGIAVBBGoiByAAIAFB5////wNJBH8gBSABQQF0NgIMIAUgASACajYCBCMAQRBrIgIkACAHKAIAIAVBDGoiCCgCAEkhCSACQRBqJAAgCCAHIAkbKAIAIgJBC08EfyACQRBqQXBxIgIgAkEBayICIAJBC0YbBUEKC0EBagVB7////wcLEI0BIAUoAgQhAiAFKAIIGiAEBEAgAiAGIAQQRQsgAyAERwRAIAIgBGogBCAGaiADIARrEEULIAFBAWoiAUELRwRAIAAgBiABEKQBCyAAIAI2AgAgACAAKAIIQYCAgIB4cSAFKAIIQf////8HcXI2AgggACAAKAIIQYCAgIB4cjYCCCAFQRBqJAAPCxBEAAsMACAAIAEgAhCEARoLNwECfyABEE4iAkENahAdIgNBADYCCCADIAI2AgQgAyACNgIAIAAgA0EMaiABIAJBAWoQNDYCAAsNACAAIAEgAkJ/EMMCCxcAIAAoAggQI0cEQCAAKAIIEMUCCyAAC14BAn8jAEEQayIDJAAgAyACNgIMIANBCGogA0EMahBLIQQgACABEMoBIQEgBCgCACIABEBBxKgCKAIAGiAABEBBxKgCQcynAiAAIABBf0YbNgIACwsgA0EQaiQAIAELgwIBB38gASAAKAIIIgIgACgCBCIDa0ECdU0EQCAAIAEEfyADQQAgAUECdCIAECwgAGoFIAMLNgIEDwsCQCADIAAoAgAiBWtBAnUiByABaiIEQYCAgIAESQRAQf////8DIAIgBWsiAkEBdSIIIAQgBCAISRsgAkH8////B08bIgQEQCAEQYCAgIAETw0CIARBAnQQHSEGCyAHQQJ0IAZqIgJBACABQQJ0IgEQLCABaiEBIAMgBUcEQANAIAJB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cQRAA0AgAS0AACICRQ0CIAJBPUYNAiABQQFqIgFBA3ENAAsLAkAgASgCACICQX9zIAJBgYKECGtxQYCBgoR4cQ0AA0AgAkG9+vTpA3MiAkF/cyACQYGChAhrcUGAgYKEeHENASABKAIEIQIgAUEEaiEBIAJBgYKECGsgAkF/c3FBgIGChHhxRQ0ACwsDQCABIgItAAAiBQRAIAFBAWohASAFQT1HDQELCyACDAELIAELIgFGBEBBAA8LAkAgACABIABrIgVqLQAADQBB4KwCKAIAIgNFDQAgAygCACIBRQ0AA0ACQAJ/IAAhAkEAIAUiBkUNABogAi0AACIEBH8CQANAIAQgAS0AACIHRw0BIAdFDQEgBkEBayIGRQ0BIAFBAWohASACLQABIQQgAkEBaiECIAQNAAtBACEECyAEBUEACyABLQAAawtFBEAgAygCACAFaiIBLQAAQT1GDQELIAMoAgQhASADQQRqIQMgAQ0BDAILCyABQQFqIQgLIAgL0QMCAn4CfyMAQSBrIgQkAAJAIAFC////////////AIMiA0KAgICAgIDAgDx9IANCgICAgICAwP/DAH1UBEAgAUIEhiAAQjyIhCEDIABC//////////8PgyIAQoGAgICAgICACFoEQCADQoGAgICAgICAwAB8IQIMAgsgA0KAgICAgICAgEB9IQIgAEKAgICAgICAgAhSDQEgAiADQgGDfCECDAELIABQIANCgICAgICAwP//AFQgA0KAgICAgIDA//8AURtFBEAgAUIEhiAAQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgA0L///////+//8MAVg0AQgAhAiADQjCIpyIFQZH3AEkNACAEQRBqIAAgAUL///////8/g0KAgICAgIDAAIQiAiAFQYH3AGsQOCAEIAAgAkGB+AAgBWsQcyAEKQMIQgSGIAQpAwAiAEI8iIQhAiAEKQMQIAQpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyAAQoCAgICAgICACFINACACQgGDIAJ8IQILIARBIGokACACIAFCgICAgICAgICAf4OEvwtEAQF/IwBBEGsiBSQAIAUgASACIAMgBEKAgICAgICAgIB/hRA+IAUpAwAhASAAIAUpAwg3AwggACABNwMAIAVBEGokAAuMAQECfyAAQei6ATYCACAAKAIoIQEDQCABBEBBACAAIAFBAWsiAUECdCICIAAoAiRqKAIAIAAoAiAgAmooAgARBwAMAQsLIAAoAhwiASABKAIEQQFrIgI2AgQgAkF/RgRAIAEgASgCACgCCBEBAAsgACgCIBAXIAAoAiQQFyAAKAIwEBcgACgCPBAXIAALQwAjAEEQayIBJAAgASADNgIMIAEgBCACIAMgAmsiAhCEASACajYCCCAAIAEoAgw2AgAgACABKAIINgIEIAFBEGokAAs2AQF/IwBBEGsiAyQAIAMgATYCDCADIAI2AgggACADKAIMNgIAIAAgAygCCDYCBCADQRBqJAALCQAgABClARAXCxgAIABB8LMBNgIAIABBIGoQGRogABCnAQsJACAAEKYBEBcLJAEBfwJAIAAoAgAiAkUNACACIAEQ6gJBf0cNACAAQQA2AgALC3UBAn8CQCAAKAIEIgEgASgCAEEMaygCACICaigCGEUNACABIAJqIgIoAhANACACKAIEQYDAAHFFDQAgASgCAEEMaygCACABaigCGCIBIAEoAgAoAhgRAABBf0cNACAAKAIEIgAgACgCAEEMaygCAGpBARB0Cws9ACAAIAE2AgQgAEEAOgAAIAEgASgCAEEMaygCAGoiASgCEEUEQCABKAJIIgEEQCABEOsCCyAAQQE6AAALCwwAIABBBGoQjgEgAAsxAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCKBEAAA8LIAAgAUEBajYCDCABLQAACwwAIABBCGoQjgEgAAsCAAsEAEEBC/4CAgF8A38jAEEQayIEJAACQCAAvCIDQf////8HcSICQdqfpPoDTQRAIAJBgICAzANJDQEgALsQTyEADAELIAJB0aftgwRNBEAgALshASACQeOX24AETQRAIANBAEgEQCABRBgtRFT7Ifk/oBBQjCEADAMLIAFEGC1EVPsh+b+gEFAhAAwCC0QYLURU+yEJwEQYLURU+yEJQCADQQBOGyABoJoQTyEADAELIAJB1eOIhwRNBEAgAkHf27+FBE0EQCAAuyEBIANBAEgEQCABRNIhM3982RJAoBBQIQAMAwsgAUTSITN/fNkSwKAQUIwhAAwCC0QYLURU+yEZQEQYLURU+yEZwCADQQBIGyAA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AAwBCyAACyEHIAVBBGoiBiAAIAFB5////wFJBH8gBSABQQF0NgIMIAUgASACajYCBCMAQRBrIgIkACAGKAIAIAVBDGoiCCgCAEkhCSACQRBqJAAgCCAGIAkbKAIAIgJBAk8EfyACQQRqQXxxIgIgAkEBayICIAJBAkYbBUEBC0EBagVB7////wMLEHogBSgCBCECIAUoAggaIAQEQCACIAcgBBBpCyADIARHBEAgBEECdCIGIAJqIAYgB2ogAyAEaxBpCyABQQFqIgFBAkcEQCAAIAcgARCUAQsgACACNgIAIAAgACgCCEGAgICAeHEgBSgCCEH/////B3FyNgIIIAAgACgCCEGAgICAeHI2AgggBUEQaiQADwsQRAALmAMBBX8jAEEQayIIJAAgAiABQX9zQe////8Dak0EQAJ/IAAtAAtBB3YEQCAAKAIADAELIAALIQogCEEEaiIJIAAgAUHn////AUkEfyAIIAFBAXQ2AgwgCCABIAJqNgIEIwBBEGsiAiQAIAkoAgAgCEEMaiILKAIASSEMIAJBEGokACALIAkgDBsoAgAiAkECTwR/IAJBBGpBfHEiAiACQQFrIgIgAkECRhsFQQELQQFqBUHv////AwsQeiAIKAIEIQIgCCgCCBogBARAIAIgCiAEEGkLIAYEQCAEQQJ0IAJqIAcgBhBpCyADIAQgBWoiCWshByADIAlHBEAgBEECdCIDIAJqIAZBAnRqIAMgCmogBUECdGogBxBpCyABQQFqIgFBAkcEQCAAIAogARCUAQsgACACNgIAIAAgACgCCEGAgICAeHEgCCgCCEH/////B3FyNgIIIAAgACgCCEGAgICAeHI2AgggACAEIAZqIAdqIgA2AgQgCEEANgIMIAIgAEECdGogCCgCDDYCACAIQRBqJAAPCxBEAAvAAQEDfyMAQRBrIgUkAAJAIAIgAC0AC0EHdgR/IAAoAghB/////wdxQQFrBUEKCyIEAn8gAC0AC0EHdgRAIAAoAgQMAQsgAC0AC0H/AHELIgNrTQRAIAJFDQECfyAALQALQQd2BEAgACgCAAwBCyAACyIEIANqIAEgAhBFIAAgAiADaiIBEGEgBUEAOgAPIAEgBGogBS0ADzoAAAwBCyAAIAQgAiAEayADaiADIANBACACIAEQhwELIAVBEGokACAACyAAIABBnJsCNgIA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KAIAKAIkEQAADAELIAIQnwIhAAJAIAEEQCAKQQRqIgEgACAAKAIAKAIsEQMAIAMgCigCBDYAACABIAAgACgCACgCIBEDAAwBCyAKQQRqIgEgACAAKAIAKAIoEQMAIAMgCigCBDYAACABIAAgACgCACgCHBEDAAsgCCABEDkgARAZGiAEIAAgACgCACgCDBEAADoAACAFIAAgACgCACgCEBEAADoAACAKQQRqIgEgACAAKAIAKAIUEQMAIAYgARA5IAEQGRogASAAIAAoAgAoAhgRAwAgByABEDkgARAZGiAAIAAoAgAoAiQRAAALNgIAIApBEGokAAsKACAAQYSuAhBmCwoAIABBjK4CEGYLHwEBfyABKAIAEOUCIQIgACABKAIANgIEIAAgAjYCAAuxGAEJfyMAQZAEayILJAAgCyAKNgKIBCALIAE2AowEAkAgACALQYwEahAhBEAgBSAFKAIAQQRyNgIAQQAhAAwBCyALQaADNgJIIAsgC0HoAGogC0HwAGogC0HIAGoiDxAqIhEoAgAiATYCZCALIAFBkANqNgJgIwBBEGsiASQAIA9CADcCACAPQQA2AgggAUEQaiQAIwBBEGsiASQAIAtBPGoiDkIANwIAIA5BADYCCCABQRBqJAAjAEEQayIBJAAgC0EwaiINQgA3AgAgDUEANgIIIAFBEGokACMAQRBrIgEkACALQSRqIgxCADcCACAMQQA2AgggAUEQaiQAIwBBEGsiASQAIAtBGGoiEEIANwIAIBBBADYCCCABQRBqJAAjAEEQayIKJAAgCwJ/IAIEQCAKQQRqIgIgAxCbAiIBIAEoAgAoAiwRAwAgCyAKKAIENgBcIAIgASABKAIAKAIgEQMAIAwgAhBRIAIQKBogAiABIAEoAgAoAhwRAwAgDSACEFEgAhAoGiALIAEgASgCACgCDBEAADYCWCALIAEgASgCACgCEBEAADYCVCACIAEgASgCACgCFBEDACAPIAIQOSACEBkaIAIgASABKAIAKAIYEQMAIA4gAhBRIAIQKBogASABKAIAKAIkEQAADAELIApBBGoiAiADEJoCIgEgASgCACgCLBEDACALIAooAgQ2AFwgAiABIAEoAgAoAiARAwAgDCACEFEgAhAoGiACIAEgASgCACgCHBEDACANIAIQUSACECgaIAsgASABKAIAKAIMEQAA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DwsgAEEBaiEAIAFBAWsiAQ0ACwtBAAtDAAJAIABFDQACQAJAAkACQCABQQJqDgYAAQICBAMECyAAIAI8AAAPCyAAIAI9AQAPCyAAIAI+AgAPCyAAIAI3AwALC7QDAgN/AX4jAEEgayIDJAACQCABQv///////////wCDIgVCgICAgICAwMA/fSAFQoCAgICAgMC/wAB9VARAIAFCGYinIQQgAFAgAUL///8PgyIFQoCAgAhUIAVCgICACFEbRQRAIARBgYCAgARqIQIMAgsgBEGAgICABGohAiAAIAVCgICACIWEQgBSDQEgAiAEQQFxaiECDAELIABQIAVCgICAgICAwP//AFQgBUKAgICAgIDA//8AURtFBEAgAUIZiKdB////AXFBgICA/gdyIQIMAQtBgICA/AchAiAFQv///////7+/wABWDQBBACECIAVCMIinIgRBkf4ASQ0AIANBEGogACABQv///////z+DQoCAgICAgMAAhCIFIARBgf4AaxA4IAMgACAFQYH/ACAEaxBzIAMpAwgiAEIZiKchAiADKQMAIAMpAxAgAykDGIRCAFKthCIFUCAAQv///w+DIgBCgICACFQgAEKAgIAIURtFBEAgAkEBaiECDAELIAUgAEKAgIAIhYRCAFINACACQQFxIAJqIQILIANBIGokACACIAFCIIinQYCAgIB4cXK+C40EAgV/AX4CQAJAAkACQAJAAn8gACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAMAQsgABAeCyICQStrDgMAAQABCyACQS1GIQUCfyAAKAIEIgMgACgCaEcEQCAAIANBAWo2AgQgAy0AAAwBCyAAEB4LIgNBOmshBCABRQ0BIARBdUsNASAAKQNwQgBTDQIgACAAKAIEQQFrNgIEDAILIAJBOmshBCACIQMLIARBdkkNAAJAIANBMGtBCk8NAEEAIQIDQCADIAJBCmxqIQYCfyAAKAIEIgIgACgCaEcEQCAAIAJBAWo2AgQgAi0AAAwBCyAAEB4LIQMgBkEwayECIAJBzJmz5gBIIANBMGsiAUEJTXENAAsgAqwhByABQQpPDQADQCADrSAHQgp+fCEHAn8gACgCBCIBIAAoAmhHBEAgACABQQFqNgIEIAEtAAAMAQsgABAeCyIDQTBrIgFBCU0gB0IwfSIHQq6PhdfHwuuj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AyABKAIoSA0ACwsgASgCLEEASgRAQQAhAwNAIAAgAmpBgApqQQw6AAAgAkEBaiECIANBAWoiAyABKAIsSA0ACwsgASgCMEEASgRAQQAhAwNAIAAgAmpBgApqQQ06AAAgAkEBaiECIANBAWoiAyABKAIwSA0ACwsgASgCNEEASgRAQQAhAwNAIAAgAmpBgApqQQ46AAAgAkEBaiECIANBAWoiAyABKAI0SA0ACwsgASgCOEEASgRAQQAhAwNAIAAgAmpBgApqQQ86AAAgAkEBaiECIANBAWoiAyABKAI4SA0ACwsgASgCPEEASgRAQQAhAwNAIAAgAmpBgApqQRA6AAAgAkEBaiECIANBAWoiAyABKAI8SA0ACwtBACEBIAAgAmpBgApqQQA6AABBASEEQQAhAgNAIAAgBEECdGoiBUHMDGogAiABazYCAAJAIAQgACACakGACmotAABHDQADQCAAIAJBAXRqIAEiAzsBgAQgAUEBaiEBIAQgACACQQFqIgJqQYAKai0AAEYNAAsgAyAEdkUNAEEADwsgBUGEDGogAUEQIARrdDYCACABQQF0IQEgBEEBaiIEQRFHDQALIABByAxqQX82AgAgAEH/AUGABBAsIQMgAkEASgRAQQAhAQNAIAEgA2pBgApqLQAAIgBBCU0EQCADIAFBAXRqLwGABEEJIABrIgR0IQVBACEAA0AgAyAAIAVqaiABOgAAIABBAWoiACAEdkUNAAsLIAFBAWoiASACRw0ACwtBAQvHBgIFfwR+IwBBgAFrIgUkAAJAAkACQCADIARCAEIAEHJFDQACfyAEQv///////z+DIQsCfyAEQjCIp0H//wFxIgZB//8BRwRAQQQgBg0BGkECQQMgAyALhFAbDAILIAMgC4RQCwshCSACQjCIpyIIQf//AXEiB0H//wFGDQAgCQ0BCyAFQRBqIAEgAiADIAQQJSAFIAUpAxAiAiAFKQMYIgEgAiABENkCIAUpAwghAiAFKQMAIQQMAQsgASACQv///////////wCDIgsgAyAEQv///////////wCDIgoQckEATARAIAEgCyADIAoQcgRAIAEhBAwCCyAFQfAAaiABIAJCAEIAECUgBSkDeCECIAUpA3AhBAwBCyAEQjCIp0H//wFxIQYgBwR+IAEFIAVB4ABqIAEgC0IAQoCAgICAgMC7wAAQJSAFKQNoIgtCMIinQfgAayEHIAUpA2ALIQQgBkUEQCAFQdAAaiADIApCAEKAgICAgIDAu8AAECUgBSkDWCIKQjCIp0H4AGshBiAFKQNQIQMLIApC////////P4NCgICAgICAwACEIQwgC0L///////8/g0KAgICAgIDAAIQhCyAGIAdIBEADQAJ+IAsgDH0gAyAEVq19IgpCAFkEQCAKIAQgA30iBIRQBEAgBUEgaiABIAJCAEIAECUgBSkDKCECIAUpAyAhBAwFCyAKQgGGIARCP4iEDAELIAtCAYYgBEI/iIQLIQsgBEIBhiEEIAdBAWsiByAGSg0ACyAGIQcLAkAgCyAMfSADIARWrX0iCkIAUwRAIAshCgwBCyAKIAQgA30iBIRCAFINACAFQTBqIAEgAkIAQgAQJSAFKQM4IQIgBSkDMCEEDAELIApC////////P1gEQANAIARCP4ghDSAHQQFrIQcgBEIBhiEEIA0gCkIBhoQiCkKAgICAgIDAAFQNAAsLIAhBgIACcSEGIAdBAEwEQCAFQUBrIAQgCkL///////8/gyAHQfgAaiAGcq1CMIaEQgBCgICAgICAwMM/ECUgBSkDSCECIAUpA0AhBAwBCyAKQv///////z+DIAYgB3KtQjCGhCECCyAAIAQ3AwAgACACNwMIIAVBgAFqJAALqQ8CBX8PfiMAQdACayIFJAAgBEL///////8/gyEKIAJC////////P4MhCyACIASFQoCAgICAgICAgH+DIQwgBEIwiKdB//8BcSEIAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgCEH//wFrQYGAfksNAQsgAVAgAkL///////////8AgyINQoCAgICAgMD//wBUIA1CgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhDAwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCEMIAMhAQwCCyABIA1CgICAgICAwP//AIWEUARAIAMgAkKAgICAgIDA//8AhYRQBEBCACEBQoCAgICAgOD//wAhDAwDCyAMQoCAgICAgMD//wCEIQxCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEBCACEBDAILIAEgDYRQBEBCgICAgICA4P//ACAMIAIgA4RQGyEMQgAhAQwCCyACIAOEUARAIAxCgICAgICAwP//AIQhDEIAIQEMAgsgDUL///////8/WARAIAVBwAJqIAEgCyABIAsgC1AiBht5IAZBBnStfKciBkEPaxA4QRAgBmshBiAFKQPIAiELIAUpA8ACIQELIAJC////////P1YNACAFQbACaiADIAogAyAKIApQIgcbeSAHQQZ0rXynIgdBD2sQOCAGIAdqQRBrIQYgBSkDuAIhCiAFKQOwAiEDCyAFQaACaiAKQoCAgICAgMAAhCISQg+GIANCMYiEIgJCAEKAgICAsOa8gvUAIAJ9IgRCABAzIAVBkAJqQgAgBSkDqAJ9QgAgBEIAEDMgBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQMyAFQfABaiAEQgBCACAFKQOIAn1CABAzIAVB4AFqIAUpA/gBQgGGIAUpA/ABQj+IhCIEQgAgAkIAEDMgBUHQAWogBEIAQgAgBSkD6AF9QgAQMyAFQcABaiAFKQPYAUIBhiAFKQPQAUI/iIQiBEIAIAJCABAzIAVBsAFqIARCAEIAIAUpA8gBfUIAEDMgBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSICQgAQMyAFQZABaiADQg+GQgAgAkIAEDMgBUHwAGogAkIAQgAgBSkDqAEgBSkDoAEiDSAFKQOYAXwiBCANVK18IARCAVatfH1CABAzIAVBgAFqQgEgBH1CACACQgAQMyAGIAkgCGtqIQYCfyAFKQNwIhNCAYYiDiAFKQOIASIPQgGGIAUpA4ABQj+IhHwiEELn7AB9IhRCIIgiAiALQoCAgICAgMAAhCIVQgGGIhZCIIgiBH4iESABQgGGIg1CIIgiCiAQIBRWrSAOIBBWrSAFKQN4QgGGIBNCP4iEIA9CP4h8fHxCAX0iE0IgiCIQfnwiDiARVK0gDiAOIBNC/////w+DIhMgAUI/iCIXIAtCAYaEQv////8PgyILfnwiDlatfCAEIBB+fCAEIBN+IhEgCyAQfnwiDyARVK1CIIYgD0IgiIR8IA4gDiAPQiCGfCIOVq18IA4gDiAUQv////8PgyIUIAt+IhEgAiAKfnwiDyARVK0gDyAPIBMgDUL+////D4MiEX58Ig9WrXx8Ig5WrXwgDiAEIBR+IhggECARfnwiBCACIAt+fCILIAogE358IhBCIIggCyAQVq0gBCAYVK0gBCALVq18fEIghoR8IgQgDlStfCAEIA8gAiARfiICIAogFH58IgpCIIggAiAKVq1CIIaEfCICIA9UrSACIBBCIIZ8IAJUrXx8IgIgBFStfCIEQv////////8AWARAIBYgF4QhFSAFQdAAaiACIAQgAyASEDMgAUIxhiAFKQNYfSAFKQNQIgFCAFKtfSEKQgAgAX0hCyAGQf7/AGoMAQsgBUHgAGogBEI/hiACQgGIhCICIARCAYgiBCADIBIQMyABQjCGIAUpA2h9IAUpA2AiDUIAUq19IQpCACANfSELIAEhDSAGQf//AGoLIgZB//8BTgRAIAxCgICAgICAwP//AIQhDEIAIQEMAQsCfiAGQQBKBEAgCkIBhiALQj+IhCEBIARC////////P4MgBq1CMIaEIQogC0IBhgwBCyAGQY9/TARAQgAhAQwCCyAFQUBrIAIgBEEBIAZrEHMgBUEwaiANIBUgBkHwAGoQOCAFQSBqIAMgEiAFKQNAIgIgBSkDSCIKEDMgBSkDOCAFKQMoQgGGIAUpAyAiAUI/iIR9IAUpAzAiBCABQgGGIg1UrX0hASAEIA19CyEEIAVBEGogAyASQgNCABAzIAUgAyASQgVCABAzIAogAiACIAMgBCACQgGDIgR8IgNUIAEgAyAEVK18IgEgElYgASASURutfCICVq18IgQgAiACIARCgICAgICAwP//AFQgAyAFKQMQViABIAUpAxgiBFYgASAEURtxrXwiAlatfCIEIAIgBEKAgICAgIDA//8AVCADIAUpAwBWIAEgBSkDCCIDViABIANRG3GtfCIBIAJUrXwgDIQhDAsgACABNwMAIAAgDDcDCCAFQdACaiQAC78CAQF/IwBB0ABrIgQkAAJAIANBgIABTgRAIARBIGogASACQgBCgICAgICAgP//ABAlIAQpAyghAiAEKQMgIQEgA0H//wFJBEAgA0H//wBrIQMMAgsgBEEQaiABIAJCAEKAgICAgICA//8AECVB/f8CIAMgA0H9/wJOG0H+/wFrIQMgBCkDGCECIAQpAxAhAQwBCyADQYGAf0oNACAEQUBrIAEgAkIAQoCAgICAgIA5ECUgBCkDSCECIAQpA0AhASADQfSAfksEQCADQY3/AGohAwwBCyAEQTBqIAEgAkIAQoCAgICAgIA5ECVB6IF9IAMgA0HogX1MG0Ga/gFqIQMgBCkDOCECIAQpAzAhAQsgBCABIAJCACADQf//AGqtQjCGECUgACAEKQMINwMIIAAgBCkDADcDACAEQdAAaiQACzwAIAAgATcDACAAIAJC////////P4MgAkKAgICAgIDA//8Ag0IwiKcgBEIwiKdBgIACcXKtQjCGhDcDCAvAAQIBfwJ+QX8hAwJAIABCAFIgAUL///////////8AgyIEQoCAgICAgMD//wBWIARCgICAgICAwP//AFEbDQAgAkL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFJxDQAgACAEIAWEhFAEQEEADwsgASACg0IAWQRAIAEgAlIgASACU3ENASAAIAEgAoWEQgBSDwsgAEIAUiABIAJVIAEgAlEbDQAgACABIAKFhEIAUiEDCyADC0sBAn8gACgCACIBBEACfyABKAIMIgIgASgCEEYEQCABIAEoAgAoAiQRAAAMAQsgAigCAAtBf0cEQCAAKAIARQ8LIABBADYCAAtBAQtLAQJ/IAAoAgAiAQRAAn8gASgCDCICIAEoAhBGBEAgASABKAIAKAIkEQAADAELIAItAAALQX9HBEAgACgCAEUPCyAAQQA2AgALQQELmAUBCH8gAUEISwRAQQQgASABQQRNGyEDQQEgACAAQQFNGyEHA0ACQCADIAdqQQFrQQAgA2txIgAgByAAIAdLGyEEQQAhASMAQRBrIggkAAJAIANBA3ENACAEIANwDQACfwJAQTACfyADQQhGBEAgBBAkDAELQRwhASADQQRJDQEgA0EDcQ0BIANBAnYiACAAQQFrcQ0BQTAhAUFAIANrIARJDQECf0EQIQECQEEQQRAgAyADQRBNGyIAIABBEE0bIgIgAkEBa3FFBEAgAiEADAELA0AgASIAQQF0IQEgACACSQ0ACwsgBEFAIABrTwRAQeioAkEwNgIAQQAMAQtBAEEQIARBC2pBeHEgBEELSRsiBSAAakEMahAkIgJFDQAaIAJBCGshAQJAIABBAWsgAnFFBEAgASEADAELIAJBBGsiCSgCACIEQXhxIAAgAmpBAWtBACAAa3FBCGsiAiAAQQAgAiABa0EPTRtqIgAgAWsiBmshAiAEQQNxRQRAIAEoAgAhASAAIAI2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KAIgRQRAIAMhAQwBCyACKAIcIAJBKGoiAyACKAIkIAIoAhARBAAhASACIAIoAqgBIAIoAqwBIAIoArQBa2o2AqgBIAICfyABRQRAIAJBADoAKCACQQA2AiAgAkEpagwBCyADLQAAIQogASADags2ArABIAIgAkEpajYCrAEgACgCACICKAKwASEEIAIoAqwBIQELAkAgASAETwRAIAIoAiBFBEAMAgsgAigCHCACQShqIgMgAigCJCACKAIQEQQAIQEgAiACKAKoASACKAKsASACKAK0AWtqNgKoASACAn8gAQRAIAMtAAAhCCABIANqDAELIAJBADoAKCACQQA2AiAgAkEpags2ArABIAIgAkEpajYCrAEgACgCACICKAKwASEEIAIoAqwBIQEMAQsgAiABQQFqIgM2AqwBIAEtAAAhCCADIQELAkAgASAETwRAIAIoAiBFBEAMAgsgAigCHCACQShqIgMgAigCJCACKAIQEQQAIQEgAiACKAKoASACKAKsASACKAK0AWtqNgKoASACAn8gAQRAIAMtAAAhBSABIANqDAELIAJBADoAKCACQQA2AiAgAkEpags2ArABIAIgAkEpajYCrAEgACgCACICKAKwASEEIAIoAqwBIQEMAQsgAiABQQFqIgM2AqwBIAEtAAAhBSADIQELAkAgASAETwRAIAIoAiBFBEAMAgsgAigCHCACQShqIgMgAigCJCACKAIQEQQAIQEgAiACKAKoASACKAKsASACKAK0AWtqNgKoASACAn8gAQRAIAMtAAAhBiABIANqDAELIAJBADoAKCACQQA2AiAgAkEpags2ArABIAIgAkEpajYCrAEgACgCACICKAKwASEEIAIoAqwBIQEMAQsgAiABQQFqIgM2AqwBIAEtAAAhBiADIQELAkAgASAETwRAIAIoAiBFBEAMAgsgAigCHCACQShqIgMgAigCJCACKAIQEQQAIQEgAiACKAKoASACKAKsASACKAK0AWtqNgKoASACAn8gAQRAIAMtAAAhByABIANqDAELIAJBADoAKCACQQA2AiAgAkEpags2ArABIAIgAkEpajYCrAEgACgCACICKAKwASEEIAIoAqwBIQEMAQsgAiABQQFqIgM2AqwBIAEtAAAhByADIQELAkAgASAETwRAIAIoAiBFBEBBACEBDAILIAIoAhwgAkEo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BwAgADMBBAsIACAALwEEuAsHACAAMQAECwgAIAAtAAS4CwcAIAAvAQgLjAQBCH8gASAAKAIIIgYgACgCBCIEa0ECdU0EQAJAIAFFDQAgAigCACEDIAQhAiABQQdxIgcEQANAIAIgAzYCACACQQRqIQIgBUEBaiIFIAdHDQALCyABQQJ0IARqIQQgAUEBa0H/////A3FBB0kNAANAIAIgAzYCHCACIAM2AhggAiADNgIUIAIgAzYCECACIAM2AgwgAiADNgIIIAIgAzYCBCACIAM2AgAgAkEgaiICIARHDQALCyAAIAQ2AgQPCwJAIAQgACgCACIHa0ECdSIFIAFqIgNBgICAgARJBEBB/////wMgBiAHayIGQQF1IgggAyADIAhJGyAGQfz///8HTxsiBgRAIAZBgICAgARPDQIgBkECdBAdIQkLIAIoAgAhAyAJIAVBAnRqIgUhAiABQQdxIggEQANAIAIgAzYCACACQQRqIQIgCkEBaiIKIAhHDQALCyABQQJ0IAVqIQggAUEBa0H/////A3FBB08EQANAIAIgAzYCHCACIAM2AhggAiADNgIUIAIgAzYCECACIAM2AgwgAiADNgIIIAIgAzYCBCACIAM2AgAgAkEgaiICIAhHDQALCyAEIAdHBEADQCAFQQRrIgUgBEEEayIEKAIANgIAIAQgB0cNAAsLIAAgCSAGQQJ0ajYCCCAAIAg2AgQgACAFNgIAIAcEQCAHEBcLDwsQOwALEG0ACwcAIAAtAAgLBwAgAC4BCAsIACAAKQMIuQvGAQEBfwJAIAECfyAAQv////8PWARAIACnIgJB//8DTQRAIAJBgP4DcUUEQCACwCICQQBODQRBzAEMAwsgAUFNEBggAEIIiKcMAgsgAUFOEBggASACQRh1EBggASACQRB2wBAYIABCCIinDAELIAFBTxAYIAEgAEI4iKfAEBggASAAQjCIp8AQGCABIABCKIinwBAYIAEgAEIgiKfAEBggASAApyICQRh1EBggASACQRB2wBAYIABCCIinC8AQGAsgASACwBAYCwcAIAA0AgQLCAAgACgCBLcLvAEAAkAgAQJ/IABB//99TARAIAFBUhAYIAEgAEEYdRAYIAEgAEEQdsAQGCAAQQh2DAELIABBAEwEQCAAwUGAf04EQEHQASAAwCIAQWBIDQIaDAMLIAFBURAY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IwAgASACIAMgBCAFrSAGrUIghoQgB60gCK1CIIaEIAARGgALGQAgASACIAMgBCAFrSAGrUIghoQgABEUAAsZACABIAIgA60gBK1CIIaEIAUgBiAAERYACxYBAX4gASAAEQsAIgJCIIinJAEgAqcLDAAgABDoARogABAXC5sDAQh/IwBBEGsiBCQAIAEgASgCACgCDBEAACECAn9BASABIAEoAgAoAgwRAABBwABKDQAaQQAgAkHAAEcNABogACgCBCECIABBCGohBQJAAkAgASgCBCIDIAFBCGoiBkYNAANAQQEhASACIAVGDQIgAigCECIAIAMoAhAgACgCACgCBBECAA0CIAMoAhAiACACKAIQIAAoAgAoAgQRAgBFBEAgAigCGCIAIAMoAhggACgCACgCBBECAA0DCyADKAIQIgAgAigCECAAKAIAKAIEEQIADQEgAigCECIAIAMoAhAgACgCACgCBBECAEUEQCADKAIYIgAgAigCGCAAKAIAKAIEEQIADQILAkAgAigCBCIABEADQCAAIgEoAgAiAA0ADAILAAsDQCACKAIIIgEoAgAgAkchByABIQIgBw0ACwsCQCADKAIEIgIEQANAIAIiACgCACICDQAMAgsACwNAIAMoAggiACgCACADRyEIIAAhAyAIDQALCyABIQIgACIDIAZHDQALC0EAIQELIAELIQkgBEEQaiQAIAkLBQBBgQwLBQBBvQ4LBQBBgAsLFwAgAEUEQEEADwsgAEH8lgIQ7QFBAEcLGwAgACABKAIIIAUQPQRAIAEgAiADIAQQrwELCzgAIAAgASgCCCAFED0EQCABIAIgAyAEEK8BDwsgACgCCCIAIAEgAiADIAQgBSAAKAIAKAIUEQwAC5ACAQd/IAAgASgCCCAFED0EQCABIAIgAyAEEK8BDwsgAS0ANSEGIAAoAgwhCCABQQA6ADUgAS0ANCEHIAFBADoANCAAQRBqIgwgASACIAMgBCAFEK4BIAEtADQiCiAHckEARyEHIAEtADUiCyAGckEARyEGAkAgAEEYaiIJIAwgCEEDdGoiCE8NAANAIAEtADYNAQJAIAoEQCABKAIYQQFGDQMgAC0ACEECcQ0BDAMLIAtFDQAgAC0ACEEBcUUNAgsgAUEAOwE0IAkgASACIAMgBCAFEK4BIAYgAS0ANSILckEARyEGIAcgAS0A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IAQgACgCACgCGBEJACECDAELIAVBEGoiASACKAIcIgA2AgAgACAAKAIEQQFqNgIEIAEQgAEhACABKAIAIgIgAigCBEEBayIDNgIEIANBf0YEQCACIAIoAgAoAggRAQALAkAgBARAIAEgACAAKAIAKAIYEQMADAELIAVBEGogACAAKAIAKAIcEQMACyAFIAVBEGoQQTYCDANAIAUgBUEQaiIAEGU2AgggBSgCDCIBIAUoAghHBEAgBUEcaiABLAAAENQBIAUgBSgCDEEBajYCDAwBBSAFKAIcIQIgABAZGgsLCyAFQSBqJAAgAgvJBQEGfyMAQcACayIAJAAgACACNgK4AiAAIAE2ArwCIwBBEGsiAiQAIABBxAFqIgFCADcCACABQQA2AgggAkEQaiQAIABBEGoiBiADKAIcIgI2AgAgAiACKAIEQQFqNgIEIAYQOiICQYDdAUGa3QEgAEHQAWogAigCACgCMBEKABogBigCACICIAIoAgRBAWsiAzYCBCADQX9GBEAgAiACKAIAKAIIEQEACyABIQMjAEEQayIBJAAgAEG4AWoiAkIANwIAIAJBADYCCCABQRBqJAAgAiACLQALQQd2BH8gAigCCEH/////B3FBAWsFQQoLEBwgAAJ/IAItAAtBB3YEQCACKAIADAELIAILIgE2ArQBIAAgBjYCDCAAQQA2AggDQAJAIABBvAJqIABBuAJqECENACAAKAK0AQJ/IAItAAtBB3YEQCACKAIEDAELIAItAAtB/wBxCyABakYEQAJ/IAItAAtBB3YEQCACKAIEDAELIAItAAtB/wBxCyEGIAICfyACLQALQQd2BEAgAigCBAwBCyACLQALQf8AcQtBAXQQHCACIAItAAtBB3YEfyACKAIIQf////8HcUEBawVBCgsQHCAAIAYCfyACLQALQQd2BEAgAigCAAwBCyACCyIBajYCtAELAn8gAEG8AmoiBygCACIGKAIMIgggBigCEEYEQCAGIAYoAgAoAiQRAAAMAQsgCCgCAAtBECABIABBtAFqIABBCGpBACADIABBEGogAEEMaiAAQdABahB9DQAgBxAvGgwBCwsgAiAAKAK0ASABaxAcAn8gAi0AC0EHdgRAIAIoAgAMAQsgAgshCxAjIQkgACAFNgIAIAsgCSAAELYCQQFHBEAgBEEENgIACyAAQbwCaiAAQbgCahAhBEAgBCAEKAIAQQJyNgIACyAAKAK8AiEKIAIQGRogAxAZGiAAQcACaiQAIAoL0AUCA38BfiMAQYADayIAJAAgACACNgL4AiAAIAE2AvwCIABB3AFqIAMgAEHwAWogAEHsAWogAEHoAWoQxQEjAEEQayICJAAgAEHQAWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEBwgAAJ/IAEtAAtBB3YEQCABKAIADAELIAELIgI2AswBIAAgAEEgajYCHCAAQQA2AhggAEEBOgAXIABBxQA6ABYDQAJAIABB/AJqIABB+AJqECENACAAKALMAQJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyACakYEQAJ/IAEtAAtBB3YEQCABKAIEDAELIAEtAAtB/wBxCyEDIAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQtBAXQQHCABIAEtAAtBB3YEfyABKAIIQf////8HcUEBawVBCgsQHCAAIAMCfyABLQALQQd2BEAgASgCAAwBCyABCyICajYCzAELAn8gAEH8AmoiBigCACIDKAIMIgcgAygCEEYEQCADIAMoAgAoAiQRAAAMAQsgBygCAAsgAEEXaiAAQRZqIAIgAEHMAWogACgC7AEgACgC6AEgAEHcAWogAEEgaiAAQRxqIABBGGogAEHwAWoQxAENACAGEC8aDAELCwJAAn8gAC0A5wFBB3YEQCAAKALgAQwBCyAALQDnAUH/AHELRQ0AIAAtABdFDQAgACgCHCIDIABBIGprQZ8BSg0AIAAgA0EEajYCHCADIAAoAhg2AgALIAAgAiAAKALMASAEELcCIAApAwAhCSAFIAApAwg3AwggBSAJNwMAIABB3AFqIABBIGogACgCHCAEEDYgAEH8AmogAEH4AmoQIQRAIAQgBCgCAEECcjYCAAsgACgC/AIhCCABEBkaIABB3AFqEBkaIABBgANqJAAgCAu5BQEDfyMAQfACayIAJAAgACACNgLoAiAAIAE2AuwCIABBzAFqIAMgAEHgAWogAEHcAWogAEHYAWoQxQEjAEEQayICJAAgAEHAAWoiAUIANwIAIAFBADYCCCACQRBqJAAgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoL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AyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCtAEgBCAGELsCNwMAIABBxAFqIABBEGogACgCDCAEEDYgAEHMAmogAEHIAmoQIQRAIAQgBCgCAEECcjYCAAsgACgCzAIhCiABEBkaIABBxAFqEBkaIABB0AJqJAAgCguYBQEFfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQVSEGIAMgAEHQAWoQigEhByAAQcQBaiADIABBxAJqEIkBIwBBEGsiAiQAIABBuAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxAcIAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQcwCaiAAQcgCahAhDQAgACgCtAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EBwgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEBwgACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAmo2ArQBCwJ/IABBzAJqIggoAgAiAygCDCIJIAMoAhBGBEAgAyADKAIAKAIkEQAADAELIAkoAgALIAYgAiAAQbQBaiAAQQhqIAAoAsQCIABBxAFqIABBEGogAEEMaiAHEH0NACAIEC8aDAELCwJAAn8gAC0AzwFBB3YEQCAAKALIAQwBCyAALQDPAUH/AHELRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCtAEgBCAGEL4COwEAIABBxAFqIABBEGogACgCDCAEEDYgAEHMAmogAEHIAmoQIQRAIAQgBCgCAEECcjYCAAsgACgCzAIhCiABEBkaIABBxAFqEBkaIABB0AJqJAAgCguYBQEFfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQVSEGIAMgAEHQAWoQigEhByAAQcQBaiADIABBxAJqEIkBIwBBEGsiAiQAIABBuAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxAcIAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQcwCaiAAQcgCahAhDQAgACgCtAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EBwgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEBwgACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAmo2ArQBCwJ/IABBzAJqIggoAgAiAygCDCIJIAMoAhBGBEAgAyADKAIAKAIkEQAADAELIAkoAgALIAYgAiAAQbQBaiAAQQhqIAAoAsQCIABBxAFqIABBEGogAEEMaiAHEH0NACAIEC8aDAELCwJAAn8gAC0AzwFBB3YEQCAAKALIAQwBCyAALQDPAUH/AHELRQ0AIAAoAgwiAyAAQRBqa0GfAUoNACAAIANBBGo2AgwgAyAAKAIINgIACyAFIAIgACgCtAEgBCAGEL8CNwMAIABBxAFqIABBEGogACgCDCAEEDYgAEHMAmogAEHIAmoQIQRAIAQgBCgCAEECcjYCAAsgACgCzAIhCiABEBkaIABBxAFqEBkaIABB0AJqJAAgCguYBQEFfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQVSEGIAMgAEHQAWoQigEhByAAQcQBaiADIABBxAJqEIkBIwBBEGsiAiQAIABBuAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxAcIAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgK0ASAAIABBEGo2AgwgAEEANgIIA0ACQCAAQcwCaiAAQcgCahAhDQAgACgCtAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EBwgASABLQALQQd2BH8gASgC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CyICajYCwAELAn8gAEGMAmoiBigCACIDKAIMIgcgAygCEEYEQCADIAMoAgAoAiQRAAAMAQsgBy0AAAvAIABBF2ogAEEWaiACIABBwAFqIAAsAN8BIAAsAN4BIABB0AFqIABBIGogAEEcaiAAQRhqIABB4AFqEMcBDQAgBhAwGgwBCwsCQAJ/IAAtANsBQQd2BEAgACgC1AEMAQsgAC0A2wFB/wBxC0UNACAALQAXRQ0AIAAoAhwiAyAAQSBqa0GfAUoNACAAIANBBGo2AhwgAyAAKAIYNgIACyAAIAIgACgCwAEgBBC3AiAAKQMAIQkgBSAAKQMINwMIIAUgCTcDACAAQdABaiAAQSBqIAAoAhwgBBA2IABBjAJqIABBiAJqECIEQCAEIAQoAgBBAnI2AgALIAAoAowCIQggARAZGiAAQdABahAZGiAAQZACaiQAIAgLugUBA38jAEGAAmsiACQAIAAgAjYC+AEgACABNgL8ASAAQcABaiADIABB0AFqIABBzwFqIABBzgFqEMgBIwBBEGsiAiQAIABBtAFqIgFCADcCACABQQA2AgggAkEQaiQAIAEgAS0AC0EHdgR/IAEoAghB/////wdxQQFrBUEKCxAcIAACfyABLQALQQd2BEAgASgCAAwBCyABCyICNgKwASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGA0ACQCAAQfwBaiAAQfgBahAiDQAgACgCsAECfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQsgAmpGBEACfyABLQALQQd2BEAgASgCBAwBCyABLQALQf8AcQshAyABAn8gAS0AC0EHdgRAIAEoAgQMAQsgAS0AC0H/AHELQQF0EBwgASABLQALQQd2BH8gASgCCEH/////B3FBAWsFQQoLEBwgACADAn8gAS0AC0EHdgRAIAEoAgAMAQsgAQsiAmo2ArABCwJ/IABB/AFqIgYoAgAiAygCDCIHIAMoAhBGBEAgAyADKAIAKAIkEQAADAELIActAAALwCAAQQdqIABBBmogAiAAQbABaiAALADPASAALADOASAAQcABaiAAQRBqIABBDGogAEEIaiAAQdABahDHAQ0AIAYQMBoMAQsLAkACfyAALQDLAUEHdgRAIAAoAsQBDAELIAAtAMsBQf8AcQtFDQAgAC0AB0UNACAA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IAdKBEBBAQ8FIANBAWohAyABQQFqIQEMAgsACwsgAiAFRyEACyAAC6gBAQV/IAAoAlQiAygCACEFIAMoAgQiBCAAKAIUIAAoAhwiB2siBiAEIAZJGyIGBEAgBSAHIAYQNBogAyADKAIAIAZqIgU2AgAgAyADKAIEIAZrIgQ2AgQLIAQgAiACIARLGyIEBEAgBSABIAQQNBogAyADKAIAIARqIgU2AgAgAyADKAIEIARrNgIECyAFQQA6AAAgACAAKAIsIgE2AhwgACABNgIUIAILGwBBlJ4CKAIAIgAEQEGYngIgADYCACAAEBcLC1IBAn8gASAAKAJUIgEgASACQYACaiIDENICIgQgAWsgAyAEGyIDIAIgAiADSxsiAhA0GiAAIAEgA2oiAzYCVCAAIAM2AgggACABIAJqNgIEIAIL5QEBA39BASECIAEtAAAhBCADQQFGBEAgACAEOgAAIAAgBDoAASAADwsgACAEOgAAIAAgAS0AASAEQQNsakECakECdjoAASADQQFrIQRBAiEFIANBA04EQANAIAAgAkEBdGoiBSABIAJqIgYtAABBA2xBAmoiByAGQQFrLQAAakECdjoAACAFIAcgASACQQFqIgJqLQAAakECdjoAASACIARHDQALIARBAXQhBQsgACAFaiABIARqIgItAAAgASADakECay0AAEEDbGpBAmpBAnY6AAAgACAFQQFyaiACLQAAOgAAIAALDAAgABDOARogABAXC4ECAQd/AkAgA0EATA0AIARBAEwNACAEQXhxIQogBEEHcSEJIARBCEkhCwNAIAAgBCAIbGohBSABIAhqLQAAIQZBACECQQAhByALRQRAA0AgAiAFaiAGOgAAIAUgAkEBcmogBjoAACAFIAJBAnJqIAY6AAAgBSACQQNyaiAGOgAAIAUgAkEEcmogBjoAACAFIAJBBXJqIAY6AAAgBSACQQZyaiAGOgAAIAUgAkEHcmogBjoAACACQQhqIQIgB0EIaiIHIApHDQALC0EAIQcgCQRAA0AgAiAFaiAGOgAAIAJBAWohAiAHQQFqIgcgCUcNAAsLIAhBAWoiCCADRw0ACwsgAAusAQEDfwJAIANBAEwNAEEAIQQgA0EBRwRAIANBfnEhBwNAIAAgBGogAiAEai0AACABIARqLQAAQQNsakECakECdjoAACAAIARBAXIi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AiABLQAAIgNGIQQgAiADRw0BIAFBAWohASAAQQFqIQAgBUEBayIFDQALCyAECx0AIABBqIsBNgIMIAAsABtBAEgEQCAAKAIQEBcLCw8AIABBoIgBNgIAIAAQFwsNACAAQaCIATYCACAACwgAIAApAwi1CwQAQS8LDAAgACkDCCABEIUDC+oBAgF/An4CQAJAAkAgASABKAIAKAIMEQAAQR9rDhEAAgICAgICAgICAgICAgICAQILIAApAwgiAyABIAEoAgAoAjwRCwAiBFQgAyAEhEIAWXEPCyAAKQMIIAEgASgCACgCPBELAFQPCwJAIAEgASgCACgCDBEAAEEJa0EfdyICQRNLDQBBASACdEGl1SpxRQ0AIAAgACgCACgCGBEGACABIAEoAgAoAhgRBgBjDwsgASABKAIAKAIMEQAAIQICf0EBIAEgASgCACgCDBEAAEEvSg0AGkEAIAJBL0cNABogACkDCCABKQMIVAsL0wECAX8CfgJAAkACQCABIAEoAgAoAgwRAABBH2sOEQACAgICAgICAgICAgICAgIBAgsgACkDCCIDIAEgASgCACgCLBELACIEUSADIASEQgBZcQ8LIAApAwggASABKAIAKAI8EQsAUQ8LAkAgASABKAIAKAIMEQAAQQlrQR93IgJBE0sNAEEBIAJ0QaXVKnFFDQAgACAAKAIAKAIYEQYAIAEgASgCACgCGBEGAGEPC0EAIQIgASABKAIAKAIMEQAAQS9GBH8gACkDCCABKQMIUQVBAAsLDwAgAEGYhQE2AgAgABAXCw0AIABBmIUBNgIAIAALCAAgACgCBLMLBABBKwtoAAJAIAECfyAAKAIEIgBB//8DTQRAIABBgP4DcUUEQCAAwCIAQQBODQNBzAEMAgsgAUFNEBggAEEIdgwBCyABQU4QGCABIABBGHUQGCABIABBEHbAEBggAEEIdgvAEBgLIAEgAMAQGAuGAQEBfwJAIAEgASgCACgCDBEAAEEJa0EfdyICQRNLDQBBASACdEGl1SpxRQ0AIAAgACgCACgCGBEGACABIAEoAgAoAhgRBgBjDwsgASABKAIAKAIMEQAAIQICf0EBIAEgASgCACgCDBEAAEErSg0AGkEAIAJBK0cNABogACgCBCABKAIESQsLbwEBfwJAIAEgASgCACgCDBEAAEEJa0EfdyICQRNLDQBB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AgRBAAwBC0EAIQIgA0EANgIMIANCADcCBEEAIARB/wFxIgFFDQAaIANBBGogARBqIAEhAiADKAIECyACEE0gACADQQRqEMABIAMoAgQiAARAIAMgADYCCCAAEBcLIANBEGokAAuVAQECfyMAQRBrIgIkACABEBohAyABEBohBCABIAEoAgBBDGsoAgBqKAIQIQUgAkEANgIMIAJCADcCBCABQQAgA0EIdEGA/gNxIARB/wFxciAFQQdxGyIBBH8gAkEEaiABEGogAigCBAVBAAsgARBNIAAgAkEEahDAASACKAIEIgAEQCACIAA2AgggABAXCyACQRBqJAALvwEBA38jAEEQayICJAAgARAaIQMgARAaIQQgARAaIQUgARAaIQYgASABKAIAQQxrKAIAai0AEEEHcQRAQQAhBEEAIQVBACEGQQAhAwsgAkEANgIMIAJCADcCBCABIAZB/wFxIAVBCHRBgP4DcSAEQRB0QYCA/AdxIANBGHRycnIiAQR/IAJBBGogARBqIAIoAgQFQQALIAEQTSAAIAJBBGoQwAEgAigCBCIABEAgAiAANgIIIAAQFwsgAkEQaiQAC98DAQh/IwBBMGsiAyQAIAEQGiECIAEgASgCAEEMaygCAGooAhAhBCABEBohBSABIAEoAgBBDGsoAgBqKAIQIQYgA0EANgIsIANCADcCJCABQQAgAkH/AXEgBEEHcRsiAQR/IANBJGogARBqIAMoAiQFQQALIAEQTSADQQA2AhAgA0IANwIIIANBACAFIAZBB3EbIgg6AARBACEBQQAhAgJAAkAgAygCKCIFIAMoAiQiBEYNACAFIARrIgZBAEgNASAEQX9zIAVqIQsgBhAdIQICQCAGQQdxIgpFBEAgAiEBDAELIAIhAQNAIAEgBC0AADoAACABQQFqIQEgBEEBaiEEIAdBAWoiByAKRw0ACwsgAiAGaiEHIAtBB0kNAANAIAEgBC0AADoAACABIAQtAAE6AAEgASAELQACOgACIAEgBC0AAzoAAyABIAQtAAQ6AAQgASAELQAFOgAFIAEgBC0ABjoABiABIAQtAAc6AAcgAUEIaiEBIARBCGoiBCAFRw0ACwsgAyAHNgIgIAMgATYCHCADIAI2AhggAyAIOgAUIAAgA0EUahCaASADKAIYIgAEQCADIAA2AhwgABAXCyADKAIkIgAEQCADIAA2AiggABAXCyADQTBqJAAPCxA7AAv0AwEIfyMAQTBrIgMkACABEBohAiABEBohBCABIAEoAgBBDGsoAgBqKAIQIQUgARAaIQYgASABKAIAQQxrKAIAaigCECEHIANBADYCLCADQgA3AiQgAUEAIAJBCHRBgP4DcSAEQf8BcXIgBUEHcRsiAQR/IANBJGogARBqIAMoAiQFQQALIAEQTSADQQA2AhAgA0IANwIIIANBACAGIAdBB3EbIgk6AARBACEBQQAhAgJAAkAgAygCKCIFIAMoAiQiBEYNACAFIARrIgZBAEgNASAEQX9zIAVqIQsgBhAdIQICQCAGQQdxIghFBEAgAiEBDAELQQAhByACIQEDQCABIAQtAAA6AAAgAUEBaiEBIARBAWohBCAHQQFqIgcgCEcNAAsLIAIgBmohCCALQQdJDQADQCABIAQtAAA6AAAgASAELQABOgABIAEgBC0AAjoAAiABIAQtAAM6AAMgASAELQAEOgAEIAEgBC0ABToABSABIAQtAAY6AAYgASAELQAHOgAHIAFBCGohASAEQQhqIgQgBUcNAAsLIAMgCDYCICADIAE2AhwgAyACNgIYIAMgCToAFCAAIANBFGoQmgEgAygCGCIABEAgAyAANgIcIAAQFwsgAygCJCIABEAgAyAANgIoIAAQFwsgA0EwaiQADwsQOwALngQBCH8jAEEwayIDJAAgARAaIQQgARAaIQcgARAaIQUgARAaIQYgASABKAIAQQxrKAIAai0AEEEHcQRAQQAhB0EAIQVBACEGQQAhBAsgARAaIQggASABKAIAQQxrKAIAaigCECEJIANBADYCLCADQgA3AiRBACECIAEgBkH/AXEgBUEIdEGA/gNxIAdBEHRBgID8B3EgBEEYdHJyciIBBH8gA0EkaiABEGogAygCJAVBAAsgARBNIANBADYCECADQgA3AgggA0EAIAggCUEHcRsiCDoABEEAIQECQAJAIAMoAigiBSADKAIkIgRGDQAgBSAEayIGQQBIDQEgBEF/cyAFaiELIAYQHSECAkAgBkEHcSIKRQRAIAIhAQwBC0EAIQcgAiEBA0AgASAELQAAOgAAIAFBAWohASAEQQFqIQQgB0EBaiIHIApHDQALCyACIAZqIQogC0EHSQ0AA0AgASAELQAAOgAAIAEgBC0AAToAASAB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ZDo6ZXhjZXB0aW9uAHZlcnNpb24ATW9uAG5hbgBKYW4ASW52YWxpZCBjb21wcmVzc2VkIHN0cmVhbQBVbnN1cHBvcnRlZCBjb21wcmVzc2VkIHN0cmVhbQBKdWwAYm9vbABsbABBcHJpbABlbXNjcmlwdGVuOjp2YWwARnJpAGJhZF9hcnJheV9uZXdfbGVuZ3RoAE1hcmNoAEF1ZwB1bnNpZ25lZCBsb25nAHN0ZDo6d3N0cmluZwBiYXNpY19zdHJpbmcAc3RkOjpzdHJpbmcAc3RkOjp1MTZzdHJpbmcAc3RkOjp1MzJzdHJpbmcAaW5mACUuMExmACVMZgBzMWYASW52YWxpZCBibG9jayBzaXplAHRydWUAVHVlAEVycm9yIGRlY29kaW5nIHJnYjogaW52YWxpZCBkYXRhIGF0dHJpYnV0ZQBVbnN1cHBvcnRlZDogaGFsZiA9PSBmYWxzZQBkdHlwZQBKdW5lAGRvdWJsZQB0YWJsZQBvY3RyZWUAZGVjb2RlAGNlbnRlci1kaXN0YW5jZQBtZXRob2QAdm9pZAB1bmNvbXByZXNzZWQAV2VkAHMxZABzdGQ6OmJhZF9hbGxvYwBEZWMAcmdiAEZlYgBFcnJvciBkZWNvZGluZyBjb3YzOiBpbnN1ZmZpY2llbnQgZGF0YQBQcmVtYXR1cmUgZW5kIG9mIGRhdGEARXJyb3IgcmVhZGluZyBhdHRyaWJ1dGUgZGF0YQBhbHBoYQAlYSAlYiAlZCAlSDolTTolUyAlWQBQT1NJWAAlSDolTTolUwBOQU4AUE0AQU0ATENfQUxMAExBTkcASU5GAEMAZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZmxvYXQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ2NF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ2NF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4AMDEyMzQ1Njc4OQB1aW50OABDLlVURi04AGZsb2F0MTYAY292MwB0ZXgyAHRleDEAZm9ybWF0IGVycm9yLgBlbmQgb2YgYnVmZmVyLgBFcnJvciBkZWNvZGluZyByZ2IgZGF0YS4AKG51bGwpAFB1cmUgdmlydHVhbCBmdW5jdGlvbiBjYWxsZWQhAGJhZCB0eXBlIGZvciAARXJyb3IgZGVjb2RpbmcgeHl6OiAAVW5zdXBwb3J0ZWQgYmxvY2sgdmVyc2lvbjogAEVycm9yIGRlY29kaW5nIGJsb2NrOiAATWlzc2luZyBhdHRyaWJ1dGU6IABVbnN1cHBvcnRlZCBkdHlwZTogAFVuc3VwcG9ydGVkIG1ldGhvZDogAEVycm9yIGRlY29kaW5nIHJnYjogAEVycm9yIGRlY29kaW5nIGFscGhhOiAARXJyb3IgZGVjb2RpbmcgY292MzogAAAcDAAAMIwAADCMAABOMTBlbXNjcmlwdGVuM3ZhbEUAAJSMAAAIDAAAaWlpaQAAAAAAAAAAMIwAADCMAAAwjAAAMIwAAGlpaWlpAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAAAACUjAAARgwAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAlIwAAHAMAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAAJSMAACYDAAAAAAAAAAAgDMAAAA0AABANAAAgDQAAKA0AADANAAA4DQAAAA1AAAQNQAAIDUAADA1AABANQAAUDUAAGA1AABwNQAAgDUAAIg1AACQNQAAmDUAAKA1AACoNQAAsDUAALg1AADANQAAyDUAANA1AADYNQAA4DUAAOg1AADwNQAA+DUAAAA2AAAENgAACDYAAAw2AAAQNgAAFDYAABg2AAAcNgAAIDYAACQ2AAAoNgAALDYAADA2AAA0NgAAODYAADw2AABANgAARDYAAEg2AABMNgAAUDYAAFQ2AABYNgAAXDYAAGA2AABkNgAAaDYAAGw2AABwNgAAdDYAAHg2AAB8NgAAgDYAAII2AACENgAAhjYAAIg2AACKNgAAjDYAAI42AACQNgAAkjYAAJQ2AACWNgAAmDYAAJo2AACcNgAAnjYAAKA2AACiNgAApDYAAKY2AACoNgAAqjYAAKw2AACuNgAAsDYAALI2AAC0NgAAtjYAALg2AAC6NgAAvDYAAL42AADANgAAwjYAAMQ2AADGNgAAyDYAAMo2AADMNgAAzjYAANA2AADSNgAA1DYAANY2AADYNgAA2jYAANw2AADeNgAA4DYAAOI2AADkNgAA5jYAAOg2AADqNgAA7DYAAO42AADwNgAA8jYAAPQ2AAD2NgAA+DYAAPo2AAD8NgAA/jYAAAA3AAABNwAAAjcAAAM3AAAENwAABTcAAAY3AAAHNwAACDcAAAk3AAAKNwAACzcAAAw3AAANNwAADjcAAA83AAAQNwAAETcAABI3AAATNwAAFDcAABU3AAAWNwAAFzcAABg3AAAZNwAAGjcAABs3AAAcNwAAHTcAAB43AAAfNwAAIDcAACE3AAAiNwAAIzcAACQ3AAAlNwAAJjcAACc3AAAoNwAAKTcAACo3AAArNwAALDcAAC03AAAuNwAALzcAADA3AAAxNwAAMjcAADM3AAA0NwAANTcAADY3AAA3NwAAODcAADk3AAA6NwAAOzcAADw3AAA9NwAAPjcAAD83AABANwAAQTcAAEI3AABDNwAARDcAAEU3AABGNwAARzcAAEg3AABJNwAASjcAAEs3AABMNwAATTcAAE43AABPNwAAUDcAAFE3AABSNwAAUzcAAFQ3AABVNwAAVjcAAFc3AABYNwAAWTcAAFo3AABbNwAAXDcAAF03AABeNwAAXzcAAGA3AABhNwAAYjcAAGM3AABkNwAAZTcAAGY3AABnNwAAaDcAAGk3AABqNwAAazcAAGw3AABtNwAAbjcAAG83AABwNwAAcTcAAHI3AABzNwAAdDcAAHU3AAB2NwAAdzcAAHg3AAB5NwAAejcAAHs3AAB8NwAAfTcAAH43AAB/NwAAgDcAgIA3AACBNwCAgTcAAII3AICCNwAAgzcAgIM3AACENwCAhDcAAIU3AICFNwAAhjcAgIY3AACHNwCAhzcAAIg3AICINwAAiTcAgIk3AACKNwCAijcAAIs3AICLNwAAjDcAgIw3AACNNwCAjTcAAI43AICONwAAjzcAgI83AACQNwCAkDcAAJE3AICRNwAAkjcAgJI3AACTNwCAkzcAAJQ3AICUNwAAlTcAgJU3AACWNwCAljcAAJc3AICXNwAAmDcAgJg3AACZNwCAmTcAAJo3AICaNwAAmzcAgJs3AACcNwCAnDcAAJ03AICdNwAAnjcAgJ43AACfNwCAnzcAAKA3AICgNwAAoTcAgKE3AACiNwCAojcAAKM3AICjNwAApDcAgKQ3AAClNwCApTcAAKY3AICmNwAApzcAgKc3AACoNwCAqDcAAKk3AICpNwAAqjcAgKo3AACrNwCAqzcAAKw3AICsNwAArTcAgK03AACuNwCArjcAAK83AICvNwAAsDcAgLA3AACxNwCAsTcAALI3AICyNwAAszcAgLM3AAC0NwCAtDcAALU3AIC1NwAAtjcAgLY3AAC3NwCAtzcAALg3AIC4NwAAuTcAgLk3AAC6NwCAujcAALs3AIC7NwAAvDcAgLw3AAC9NwCAvTcAAL43AIC+NwAAvzcAgL83AADANwCAwDcAAME3AIDBNwAAwjcAgMI3AADDNwCAwzcAAMQ3AIDENwAAxTcAgMU3AADGNwCAxjcAAMc3AIDHNwAAyDcAgMg3AADJNwCAyTcAAMo3AIDKNwAAyzcAgMs3AADMNwCAzDcAAM03AIDNNwAAzjcAgM43AADPNwCAzzcAANA3AIDQNwAA0TcAgNE3AADSNwCA0jcAANM3AIDTNwAA1DcAgNQ3AADVNwCA1TcAANY3AIDWNwAA1zcAgNc3AADYNwCA2DcAANk3AIDZNwAA2jcAgNo3AADbNwCA2zcAANw3AIDcNwAA3TcAgN03AADeNwCA3jcAAN83AIDfNwAA4DcAgOA3AADhNwCA4TcAAOI3AIDiNwAA4zcAgOM3AADkNwCA5DcAAOU3AIDlNwAA5jcAgOY3AADnNwCA5zcAAOg3AIDoNwAA6TcAgOk3AADqNwCA6jcAAOs3AIDrNwAA7DcAgOw3AADtNwCA7TcAAO43AIDuNwAA7zcAgO83AADwNwCA8DcAAPE3AIDxNwAA8jcAgPI3AADzNwCA8zcAAPQ3AID0NwAA9TcAgPU3AAD2NwCA9jcAAPc3AID3NwAA+DcAgPg3AAD5NwCA+TcAAPo3AID6NwAA+zcAgPs3AAD8NwCA/DcAAP03AID9NwAA/jcAgP43AAD/NwCA/zcAAAA4AEAAOACAADgAwAA4AAABOABAATgAgAE4AMABOAAAAjgAQAI4AIACOADAAjgAAAM4AEADOACAAzgAwAM4AAAEOABABDgAgAQ4AMAEOAAABTgAQAU4AIAFOADABTgAAAY4AEAGOACABjgAwAY4AAAHOABABzgAgAc4AMAHOAAACDgAQAg4AIAIOADACDgAAAk4AEAJOACACTgAwAk4AAAKOABACjgAgAo4AMAKOAAACzgAQAs4AIALOADACzgAAAw4AEAMOACADDgAwAw4AAANOABADTgAgA04AMANOAAADjgAQA44AIAOOADADjgAAA84AEAPOACADzgAwA84AAAQOABAEDgAgBA4AMAQOAAAETgAQBE4AIAROADAETgAABI4AEASOACAEjgAwBI4AAATOABAEzgAgBM4AMATOAAAFDgAQBQ4AIAUOADAFDgAABU4AEAVOACAFTgAwBU4AAAWOABAFjgAgBY4AMAWOAAAFzgAQBc4AIAXOADAFzgAABg4AEAYOACAGDgAwBg4AAAZOABAGTgAgBk4AMAZOAAAGjgAQBo4AIAaOADAGjgAABs4AEAbOACAGzgAwBs4AAAcOABAHDgAgBw4AMAcOAAAHTgAQB04AIAdOADAHTgAAB44AEAeOACAHjgAwB44AAAfOABAHzgAgB84AMAfOAAAIDgAQCA4AIAgOADAIDgAACE4AEAhOACAITgAwCE4AAAiOABAIjgAgCI4AMAiOAAAIzgAQCM4AIAjOADAIzgAACQ4AEAkOACAJDgAwCQ4AAAlOABAJTgAgCU4AMAlOAAAJjgAQCY4AIAmOADAJjgAACc4AEAnOACAJzgAwCc4AAAoOABAKDgAgCg4AMAoOAAAKTgAQCk4AIApOADAKTgAACo4AEAqOACAKjgAwCo4AAArOABAKzgAgCs4AMArOAAALDgAQCw4AIAsOADALDgAAC04AEAtOACALTgAwC04AAAuOABALjgAgC44AMAuOAAALzgAQC84AIAvOADALzgAADA4AEAwOACAMDgAwDA4AAAxOABAMTgAgDE4AMAxOAAAMjgAQDI4AIAyOADAMjgAADM4AEAzOACAMzgAwDM4AAA0OABANDgAgDQ4AMA0OAAANTgAQDU4AIA1OADANTgAADY4AEA2OACANjgAwDY4AAA3OABANzgAgDc4AMA3OAAAODgAQDg4AIA4OADAODgAADk4AEA5OACAOTgAwDk4AAA6OABAOjgAgDo4AMA6OAAAOzgAQDs4AIA7OADAOzgAADw4AEA8OACAPDgAwDw4AAA9OABAPTgAgD04AMA9OAAAPjgAQD44AIA+OADAPjgAAD84AEA/OACAPzgAwD84AABAOABAQDgAgEA4AMBAOAAAQTgAQEE4AIBBOADAQTgAAEI4AEBCOACAQjgAwEI4AABDOABAQzgAgEM4AMBDOAAARDgAQEQ4AIBEOADARDgAAEU4AEBFOACARTgAwEU4AABGOABARjgAgEY4AMBGOAAARzgAQEc4AIBHOADARzgAAEg4AEBIOACASDgAwEg4AABJOABASTgAgEk4AMBJOAAASjgAQEo4AIBKOADASjgAAEs4AEBLOACASzgAwEs4AABMOABATDgAgEw4AMBMOAAATTgAQE04AIBNOADATTgAAE44AEBOOACATjgAwE44AABPOABATzgAgE84AMBPOAAAUDgAQFA4AIBQOADAUDgAAFE4AEBROACAUTgAwFE4AABSOABAUjgAgFI4AMBSOAAAUzgAQFM4AIBTOADAUzgAAFQ4AEBUOACAVDgAwFQ4AABVOABAVTgAgFU4AMBVOAAAVjgAQFY4AIBWOADAVjgAAFc4AEBXOACAVzgAwFc4AABYOABAWDgAgFg4AMBYOAAAWTgAQFk4AIBZOADAWTgAAFo4AEBaOACAWjgAwFo4AABbOABAWzgAgFs4AMBbOAAAXDgAQFw4AIBcOADAXDgAAF04AEBdOACAXTgAwF04AABeOABAXjgAgF44AMBeOAAAXzgAQF84AIBfOADAXzgAAGA4AEBgOACAYDgAwGA4AABhOABAYTgAgGE4AMBhOAAAYjgAQGI4AIBiOADAYjgAAGM4AEBjOACAYzgAwGM4AABkOABAZDgAgGQ4AMBkOAAAZTgAQGU4AIBlOADAZTgAAGY4AEBmOACAZjgAwGY4AABnOABAZzgAgGc4AMBnOAAAaDgAQGg4AIBoOADAaDgAAGk4AEBpOACAaTgAwGk4AABqOABAajgAgGo4AMBqOAAAazgAQGs4AIBrOADAazgAAGw4AEBsOACAbDgAwGw4AABtOABAbTgAgG04AMBtOAAAbjgAQG44AIBuOADAbjgAAG84AEBvOACAbzgAwG84AABwOABAcDgAgHA4AMBwOAAAcTgAQHE4AIBxOADAcTgAAHI4AEByOACAcjgAwHI4AABzOABAczgAgHM4AMBzOAAAdDgAQHQ4AIB0OADAdDgAAHU4AEB1OACAdTgAwHU4AAB2OABAdjgAgHY4AMB2OAAAdzgAQHc4AIB3OADAdzgAAHg4AEB4OACAeDgAwHg4AAB5OABAeTgAgHk4AMB5OAAAejgAQHo4AIB6OADAejgAAHs4AEB7OACAezgAwHs4AAB8OABAfDgAgHw4AMB8OAAAfTgAQH04AIB9OADAfTgAAH44AEB+OACAfjgAwH44AAB/OABAfzgAgH84AMB/OAAAADgAIAA4AEAAOABgADgAgAA4AKAAOADAADgA4AA4AAABOAAgATgAQAE4AGABOACAATgAoAE4AMABOADgATgAAAI4ACACOABAAjgAYAI4AIACOACgAjgAwAI4AOACOAAAAzgAIAM4AEADOABgAzgAgAM4AKADOADAAzgA4AM4AAAEOAAgBDgAQAQ4AGAEOACABDgAoAQ4AMAEOADgBDgAAAU4ACAFOABABTgAYAU4AIAFOACgBTgAwAU4AOAFOAAABjgAIAY4AEAGOABgBjgAgAY4AKAGOADABjgA4AY4AAAHOAAgBzgAQAc4AGAHOACABzgAoAc4AMAHOADgBzgAAAg4ACAIOABACDgAYAg4AIAIOACgCDgAwAg4AOAIOAAACTgAIAk4AEAJOABgCTgAgAk4AKAJOADACTgA4Ak4AAAKOAAgCjgAQAo4AGAKOACACjgAoAo4AMAKOADgCjgAAAs4ACALOABACzgAYAs4AIALOACgCzgAwAs4AOALOAAADDgAIAw4AEAMOABgDDgAgAw4AKAMOADADDgA4Aw4AAANOAAgDTgAQA04AGANOACADTgAoA04AMANOADgDTgAAA44ACAOOABADjgAYA44AIAOOACgDjgAwA44AOAOOAAADzgAIA84AEAPOABgDzgAgA84AKAPOADADzgA4A84AAAQOAAgEDgAQBA4AGAQOACAEDgAoBA4AMAQOADgEDgAABE4ACAROABAETgAYBE4AIAROACgETgAwBE4AOAROAAAEjgAIBI4AEASOABgEjgAgBI4AKASOADAEjgA4BI4AAATOAAgEzgAQBM4AGATOACAEzgAoBM4AMATOADgEzgAABQ4ACAUOABAFDgAYBQ4AIAUOACgFDgAwBQ4AOAUOAAAFTgAIBU4AEAVOABgFTgAgBU4AKAVOADAFTgA4BU4AAAWOAAgFjgAQBY4AGAWOACAFjgAoBY4AMAWOADgFjgAABc4ACAXOABAFzgAYBc4AIAXOACgFzgAwBc4AOAXOAAAGDgAIBg4AEAYOABgGDgAgBg4AKAYOADAGDgA4Bg4AAAZOAAgGTgAQBk4AGAZOACAGTgAoBk4AMAZOADgGTgAABo4ACAaOABAGjgAYBo4AIAaOACgGjgAwBo4AOAaOAAAGzgAIBs4AEAbOABgGzgAgBs4AKAbOADAGzgA4Bs4AAAcOAAgHDgAQBw4AGAcOACAHDgAoBw4AMAcOADgHDgAAB04ACAdOABAHTgAYB04AIAdOACgHTgAwB04AOAdOAAAHjgAIB44AEAeOABgHjgAgB44AKAeOADAHjgA4B44AAAfOAAgHzgAQB84AGAfOACAHzgAoB84AMAfOADgHzgAACA4ACAgOABAIDgAYCA4AIAgOACgIDgAwCA4AOAgOAAAITgAICE4AEAhOABgITgAgCE4AKAhOADAITgA4CE4AAAiOAAgIjgAQCI4AGAiOACAIjgAoCI4AMAiOADgIjgAACM4ACAjOABAIzgAYCM4AIAjOACgIzgAwCM4AOAjOAAAJDgAICQ4AEAkOABgJDgAgCQ4AKAkOADAJDgA4CQ4AAAlOAAgJTgAQCU4AGAlOACAJTgAoCU4AMAlOADgJTgAACY4ACAmOABAJjgAYCY4AIAmOACgJjgAwCY4AOAmOAAAJzgAICc4AEAnOABgJzgAgCc4AKAnOADAJzgA4Cc4AAAoOAAgKDgAQCg4AGAoOACAKDgAoCg4AMAoOADgKDgAACk4ACApOABAKTgAYCk4AIApOACgKTgAwCk4AOApOAAAKjgAICo4AEAqOABgKjgAgCo4AKAqOADAKjgA4Co4AAArOAAgKzgAQCs4AGArOACAKzgAoCs4AMArOADgKzgAACw4ACAsOABALDgAYCw4AIAsOACgLDgAwCw4AOAsOAAALTgAIC04AEAtOABgLTgAgC04AKAtOADALTgA4C04AAAuOAAgLjgAQC44AGAuOACALjgAoC44AMAuOADgLjgAAC84ACAvOABALzgAYC84AIAvOACgLzgAwC84AOAvOAAAMDgAIDA4AEAwOABgMDgAgDA4AKAwOADAMDgA4DA4AAAxOAAgMTgAQDE4AGAxOACAMTgAoDE4AMAxOADgMTgAADI4ACAyOABAMjgAYDI4AIAyOACgMjgAwDI4AOAyOAAAMzgAIDM4AEAzOABgMzgAgDM4AKAzOADAMzgA4DM4AAA0OAAgNDgAQDQ4AGA0OACANDgAoDQ4AMA0OADgNDgAADU4ACA1OABANTgAYDU4AIA1OACgNTgAwDU4AOA1OAAANjgAIDY4AEA2OABgNjgAgDY4AKA2OADANjgA4DY4AAA3OAAgNzgAQDc4AGA3OACANzgAoDc4AMA3OADgNzgAADg4ACA4OABAODgAYDg4AIA4OACgODgAwDg4AOA4OAAAOTgAIDk4AEA5OABgOTgAgDk4AKA5OADAOTgA4Dk4AAA6OAAgOjgAQDo4AGA6OACAOjgAoDo4AMA6OADgOjgAADs4ACA7OABAOzgAYDs4AIA7OACgOzgAwDs4AOA7OAAAPDgAIDw4AEA8OABgPDgAgDw4AKA8OADAPDgA4Dw4AAA9OAAgPTgAQD04AGA9OACAPTgAoD04AMA9OADgPTgAAD44ACA+OABAPjgAYD44AIA+OACgPjgAwD44AOA+OAAAPzgAID84AEA/OABgPzgAgD84AKA/OADAPzgA4D84AABAOAAgQDgAQEA4AGBAOACAQDgAoEA4AMBAOADgQDgAAEE4ACBBOABAQTgAYEE4AIBBOACgQTgAwEE4AOBBOAAAQjgAIEI4AEBCOABgQjgAgEI4AKBCOADAQjgA4EI4AABDOAAgQzgAQEM4AGBDOACAQzgAoEM4AMBDOADgQzgAAEQ4ACBEOABARDgAYEQ4AIBEOACgRDgAwEQ4AOBEOAAARTgAIEU4AEBFOABgRTgAgEU4AKBFOADARTgA4EU4AABGOAAgRjgAQEY4AGBGOACARjgAoEY4AMBGOADgRjgAAEc4ACBHOABARzgAYEc4AIBHOACgRzgAwEc4AOBHOAAASDgAIEg4AEBIOABgSDgAgEg4AKBIOADASDgA4Eg4AABJOAAgSTgAQEk4AGBJOACASTgAoEk4AMBJOADgSTgAAEo4ACBKOABASjgAYEo4AIBKOACgSjgAwEo4AOBKOAAASzgAIEs4AEBLOABgSzgAgEs4AKBLOADASzgA4Es4AABMOAAgTDgAQEw4AGBMOACATDgAoEw4AMBMOADgTDgAAE04ACBNOABATTgAYE04AIBNOACgTTgAwE04AOBNOAAATjgAIE44AEBOOABgTjgAgE44AKBOOADATjgA4E44AABPOAAgTzgAQE84AGBPOACATzgAoE84AMBPOADgTzgAAFA4ACBQOABAUDgAYFA4AIBQOACgUDgAwFA4AOBQOAAAUTgAIFE4AEBROABgUTgAgFE4AKBROADAUTgA4FE4AABSOAAgUjgAQFI4AGBSOACAUjgAoFI4AMBSOADgUjgAAFM4ACBTOABAUzgAYFM4AIBTOACgUzgAwFM4AOBTOAAAVDgAIFQ4AEBUOABgVDgAgFQ4AKBUOADAVDgA4FQ4AABVOAAgVTgAQFU4AGBVOACAVTgAoFU4AMBVOADgVTgAAFY4ACBWOABAVjgAYFY4AIBWOACgVjgAwFY4AOBWOAAAVzgAIFc4AEBXOABgVzgAgFc4AKBXOADAVzgA4Fc4AABYOAAgWDgAQFg4AGBYOACAWDgAoFg4AMBYOADgWDgAAFk4ACBZOABAWTgAYFk4AIBZOACgWTgAwFk4AOBZOAAAWjgAIFo4AEBaOABgWjgAgFo4AKBaOADAWjgA4Fo4AABbOAAgWzgAQFs4AGBbOACAWzgAoFs4AMBbOADgWzgAAFw4ACBcOABAXDgAYFw4AIBcOACgXDgAwFw4AOBcOAAAXTgAIF04AEBdOABgXTgAgF04AKBdOADAXTgA4F04AABeOAAgXjgAQF44AGBeOACAXjgAoF44AMBeOADgXjgAAF84ACBfOABAXzgAYF84AIBfOACgXzgAwF84AOBfOAAAYDgAIGA4AEBgOABgYDgAgGA4AKBgOADAYDgA4GA4AABhOAAgYTgAQGE4AGBhOACAYTgAoGE4AMBhOADgYTgAAGI4ACBiOABAYjgAYGI4AIBiOACgYjgAwGI4AOBiOAAAYzgAIGM4AEBjOABgYzgAgGM4AKBjOADAYzgA4GM4AABkOAAgZDgAQGQ4AGBkOACAZDgAoGQ4AMBkOADgZDgAAGU4ACBlOABAZTgAYGU4AIBlOACgZTgAwGU4AOBlOAAAZjgAIGY4AEBmOABgZjgAgGY4AKBmOADAZjgA4GY4AABnOAAgZzgAQGc4AGBnOACAZzgAoGc4AMBnOADgZzgAAGg4ACBoOABAaDgAYGg4AIBoOACgaDgAwGg4AOBoOAAAaTgAIGk4AEBpOABgaTgAgGk4AKBpOADAaTgA4Gk4AABqOAAgajgAQGo4AGBqOACAajgAoGo4AMBqOADgajgAAGs4ACBrOABAazgAYGs4AIBrOACgazgAwGs4AOBrOAAAbDgAIGw4AEBsOABgbDgAgGw4AKBsOADAbDgA4Gw4AABtOAAgbTgAQG04AGBtOACAbTgAoG04AMBtOADgbTgAAG44ACBuOABAbjgAYG44AIBuOACgbjgAwG44AOBuOAAAbzgAIG84AEBvOABgbzgAgG84AKBvOADAbzgA4G84AABwOAAgcDgAQHA4AGBwOACAcDgAoHA4AMBwOADgcDgAAHE4ACBxOABAcTgAYHE4AIBxOACgcTgAwHE4AOBxOAAAcjgAIHI4AEByOABgcjgAgHI4AKByOADAcjgA4HI4AABzOAAgczgAQHM4AGBzOACAczgAoHM4AMBzOADgczgAAHQ4ACB0OABAdDgAYHQ4AIB0OACgdDgAwHQ4AOB0OAAAdTgAIHU4AEB1OABgdTgAgHU4AKB1OADAdTgA4HU4AAB2OAAgdjgAQHY4AGB2OACAdjgAoHY4AMB2OADgdjgAAHc4ACB3OABAdzgAYHc4AIB3OACgdzgAwHc4AOB3OAAAeDgAIHg4AEB4OABgeDgAgHg4AKB4OADAeDgA4Hg4AAB5OAAgeTgAQHk4AGB5OACAeTgAoHk4AMB5OADgeTgAAHo4ACB6OABAejgAYHo4AIB6OACgejgAwHo4AOB6OAAAezgAIHs4AEB7OABgezgAgHs4AKB7OADAezgA4Hs4AAB8OAAgfDgAQHw4AGB8OACAfDgAoHw4AMB8OADgfDgAAH04ACB9OABAfTgAYH04AIB9OACgfTgAwH04AOB9OAAAfjgAIH44AEB+OABgfjgAgH44AKB+OADAfjgA4H44AAB/OAAgfzgAQH84AGB/OACAfzgAoH84AMB/OADgfzgAAAAAAACAAAAAAAEAAIABAAAAAgAAgAIAAAADAACAAwAAAAQAAIAEAAAABQAAgAUAAAAGAACABgAAAAcAAIAHAAAACAAAgAgAAAAJAACACQAAAAoAAIAKAAAACwAAgAsAAAAMAACADAAAAA0AAIANAAAADgAAgA4AAAAPAACARwAAAIAAAICAAAAAgQAAgIEAAACCAACAggAAAIMAAICDAAAAhAAAgIQAAACFAACAhQAAAIYAAICGAAAAhwAAgIcAAACIAACAiAAAAIkAAICJAAAAigAAgIoAAACLAACAiwAAAIwAAICMAAAAjQAAgI0AAACOAACAjgAAAI8AAIDHAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAQgQCQIDChEYIBkSCwQFDBMaISgwKSIbFA0GBw4VHCMqMTg5MiskHRYPFx4lLDM6OzQtJh8nLjU8PTYvNz4/Pz8/Pz8/Pz8/Pz8/Pz8/UkdCAEGk3QALPgEAAAADAAAABwAAAA8AAAAfAAAAPwAAAH8AAAD/AAAA/wEAAP8DAAD/BwAA/w8AAP8fAAD/PwAA/38AAP//AEH03QALs1P//////f////n////x////4f///8H///+B////Af///wH+//8B/P//Afj//wHw//8B4P//AcD//wGA//9OOW1zZ3BhY2sxMTEyTXNnUGFja1ZhbHVlRQAAlIwAADAvAAAAAAAAQDAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAATjltc2dwYWNrMTExMk1zZ1BhY2tBcnJheUUATjltc2dwYWNrMTE1VmFsdWVJTE5TXzdNc2dQYWNrNFR5cGVFNjBFTlN0M19fMjZ2ZWN0b3JJUzFfTlMzXzlhbGxvY2F0b3JJUzFfRUVFRUVFAAAAALyMAADfLwAATC8AALyMAADELwAANDAAAAAAAABYMQAAUAAAAFEAAABSAAAAUwAAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAAVAAAAEkAAABVAAAAVgAAAFcAAABNAAAAWAAAAFkAAABOOW1zZ3BhY2sxMTEzTXNnUGFja09iamVjdEUATjltc2dwYWNrMTE1VmFsdWVJTE5TXzdNc2dQYWNrNFR5cGVFNjRFTlN0M19fMjNtYXBJUzFfUzFfTlMzXzRsZXNzSVMxX0VFTlMzXzlhbGxvY2F0b3JJTlMzXzRwYWlySUtTMV9TMV9FRUVFRUVFRQAAAAC8jAAA2DAAAEwvAAC8jAAAvDAAAEwxAAAAAAAA0DEAAFoAAABbAAAAXAAAAF0AAABeAAAATlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTjltc2dwYWNrMTExMU1zZ1BhY2tOdWxsRU5TXzlhbGxvY2F0b3JJUzJfRUVFRQAAAAC8jAAAgDEAALiJAAAAAAAArDIAAF8AAABgAAAAYQAAAGIAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAFQAAABJAAAAVQAAAEsAAABMAAAATQAAAGMAAABkAAAATjltc2dwYWNrMTExMU1zZ1BhY2tOdWxsRQBOOW1zZ3BhY2sxMTVWYWx1ZUlMTlNfN01zZ1BhY2s0VHlwZUU0RU5TXzEwTnVsbFN0cnVjdEVFRQAAvIwAAGYyAABMLwAAvIwAAEwyAACgMgAAAAAAACQzAABlAAAAZgAAAGcAAABdAAAAaAAAAE5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU45bXNncGFjazExMTRNc2dQYWNrQm9vbGVhbkVOU185YWxsb2NhdG9ySVMyX0VFRUUAvIwAANQyAAC4iQAAAAAAAPQzAABpAAAAagAAAGsAAABsAAAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAAbQAAAEcAAABUAAAASQAAAFUAAABLAAAATAAAAE0AAABjAAAAbgAAAE45bXNncGFjazExMTRNc2dQYWNrQm9vbGVhbkUATjltc2dwYWNrMTE1VmFsdWVJTE5TXzdNc2dQYWNrNFR5cGVFNDhFYkVFALyMAAC9MwAATC8AALyMAACgMwAA6DMAAAAAAAA0MAAANgAAADcAAAA4AAAAOQAAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAAVAAAAEkAAABVAAAASwAAAEwAAABNAAAATgAAAG8AAAAAAAAATDEAAFAAAABRAAAAUgAAAFMAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAFQAAABJAAAAVQAAAEsAAABMAAAATQAAAFgAAABwAAAAAAAAAEw1AABxAAAAcgAAAHMAAABdAAAAdAAAAE5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU45bXNncGFjazExMTJNc2dQYWNrRmxvYXRFTlNfOWFsbG9jYXRvcklTMl9FRUVFAAAAvIwAAPw0AAC4iQAAAAAAAFg2AAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAAB7AAAAfAAAAH0AAAB+AAAAfwAAAIAAAACBAAAAggAAAIMAAACEAAAARgAAAEcAAABUAAAASQAAAFUAAABLAAAATAAAAE0AAABjAAAAhQAAAE45bXNncGFjazExMTJNc2dQYWNrRmxvYXRFAE45bXNncGFjazExMTFOdW1iZXJWYWx1ZUlMTlNfN01zZ1BhY2s0VHlwZUU5RWZFRQBOOW1zZ3BhY2sxMTVWYWx1ZUlMTlNfN01zZ1BhY2s0VHlwZUU5RWZFRQAAALyMAAAUNgAATC8AALyMAADjNQAAQDYAALyMAADINQAATDYAAAAAAADQNgAAhgAAAIcAAACIAAAAXQAAAIkAAABOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOOW1zZ3BhY2sxMTEzTXNnUGFja0RvdWJsZUVOU185YWxsb2NhdG9ySVMyX0VFRUUAALyMAACANgAAuIkAAAAAAADgNwAAigAAAIsAAACMAAAAjQAAAI4AAACPAAAAkAAAAJEAAACSAAAAkwAAAJQAAACVAAAAlgAAAJcAAACYAAAAmQAAAEYAAABHAAAAVAAAAEkAAABVAAAASwAAAEwAAABNAAAAYwAAAJoAAABOOW1zZ3BhY2sxMTEzTXNnUGFja0RvdWJsZUUATjltc2dwYWNrMTExMU51bWJlclZhbHVlSUxOU183TXNnUGFjazRUeXBlRTEzRWRFRQBOOW1zZ3BhY2sxMTVWYWx1ZUlMTlNfN01zZ1BhY2s0VHlwZUUxM0VkRUUAAAAAvIwAAJo3AABMLwAAvIwAAGg3AADINwAAvIwAAEw3AADUNwAAAAAAAFg4AACbAAAAnAAAAJ0AAABdAAAAngAAAE5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU45bXNncGFjazExMTFNc2dQYWNrSW50OEVOU185YWxsb2NhdG9ySVMyX0VFRUUAAAAAvIwAAAg4AAC4iQAAAAAAAGQ5AACfAAAAoAAAAKEAAACiAAAAowAAAKQAAAClAAAApgAAAKcAAACoAAAAqQAAAKoAAACrAAAArAAAAK0AAACuAAAARgAAAEcAAABUAAAASQAAAFUAAABLAAAATAAAAE0AAABjAAAArwAAAE45bXNncGFjazExMTFNc2dQYWNrSW50OEUATjltc2dwYWNrMTExMU51bWJlclZhbHVlSUxOU183TXNnUGFjazRUeXBlRTE5RWFFRQBOOW1zZ3BhY2sxMTVWYWx1ZUlMTlNfN01zZ1BhY2s0VHlwZUUxOUVhRUUAALyMAAAgOQAATC8AALyMAADuOAAATDkAALyMAADUOAAAWDkAAAAAAADcOQAAsAAAALEAAACyAAAAXQAAALMAAABOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOOW1zZ3BhY2sxMTEyTXNnUGFja0ludDE2RU5TXzlhbGxvY2F0b3JJUzJfRUVFRQAAALyMAACMOQAAuIkAAAAAAADoOgAAtAAAALUAAAC2AAAAtwAAALgAAAC5AAAAugAAALsAAAC8AAAAvQAAAL4AAAC/AAAAwAAAAMEAAADCAAAAwwAAAEYAAABHAAAAVAAAAEkAAABVAAAASwAAAEwAAABNAAAAYwAAAMQAAABOOW1zZ3BhY2sxMTEyTXNnUGFja0ludDE2RQBOOW1zZ3BhY2sxMTExTnVtYmVyVmFsdWVJTE5TXzdNc2dQYWNrNFR5cGVFMjNFc0VFAE45bXNncGFjazExNVZhbHVlSUxOU183TXNnUGFjazRUeXBlRTIzRXNFRQC8jAAApToAAEwvAAC8jAAAczoAANA6AAC8jAAAWDoAANw6AAAAAAAAYDsAAMUAAADGAAAAxwAAAF0AAADIAAAATlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTjltc2dwYWNrMTExMk1zZ1BhY2tJbnQzMkVOU185YWxsb2NhdG9ySVMyX0VFRUUAAAC8jAAAEDsAALiJAAAAAAAAbDwAAMkAAADKAAAAywAAAMwAAADNAAAAzgAAAM8AAADQAAAA0QAAANIAAADTAAAA1AAAANUAAADWAAAA1wAAANgAAABGAAAARwAAAFQAAABJAAAAVQAAAEsAAABMAAAATQAAAGMAAADZAAAATjltc2dwYWNrMTExMk1zZ1BhY2tJbnQzMkUATjltc2dwYWNrMTExMU51bWJlclZhbHVlSUxOU183TXNnUGFjazRUeXBlRTI3RWlFRQBOOW1zZ3BhY2sxMTVWYWx1ZUlMTlNfN01zZ1BhY2s0VHlwZUUyN0VpRUUAvIwAACk8AABMLwAAvIwAAPc7AABUPAAAvIwAANw7AABgPAAAAAAAAOQ8AADaAAAA2wAAANwAAABdAAAA3QAAAE5TdDNfXzIyMF9fc2hhcmVkX3B0cl9lbXBsYWNlSU45bXNncGFjazExMTJNc2dQYWNrSW50NjRFTlNfOWFsbG9jYXRvcklTMl9FRUVFAAAAvIwAAJQ8AAC4iQAAAAAAAPA9AADeAAAA3wAAAOAAAADhAAAA4gAAAOMAAADkAAAA5QAAAOYAAADnAAAA6AAAAOkAAADqAAAA6wAAAOwAAADtAAAARgAAAEcAAABUAAAASQAAAFUAAABLAAAATAAAAE0AAABjAAAA7gAAAE45bXNncGFjazExMTJNc2dQYWNrSW50NjRFAE45bXNncGFjazExMTFOdW1iZXJWYWx1ZUlMTlNfN01zZ1BhY2s0VHlwZUUzMUV4RUUATjltc2dwYWNrMTE1VmFsdWVJTE5TXzdNc2dQYWNrNFR5cGVFMzFFeEVF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AFQAAABJAAAAVQAAAEsAAABMAAAATQAAAEwBAABNAQAATjltc2dwYWNrMTExM01zZ1BhY2tTdHJpbmdFAE45bXNncGFjazExNVZhbHVlSUxOU183TXNnUGFjazRUeXBlRTUyRU5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlMzXzExY2hhcl90cmFpdHNJY0VFTlMzXzlhbGxvY2F0b3JJY0VFRUVFRQAAALyMAAAcRQAATC8AALyMAAAARQAAiEUAAAAAAACIRQAARwEAAEgBAABJAQAASgEAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAAVAAAAEkAAABVAAAASwAAAEwAAABNAAAATAEAAE4BAAAAAAAAfEYAAE8BAABQAQAAUQEAAF0AAABSAQAATlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTjltc2dwYWNrMTExMk1zZ1BhY2tBcnJheUVOU185YWxsb2NhdG9ySVMyX0VFRUUAAAC8jAAALEYAALiJAAAAAAAA9EYAAFMBAABUAQAAVQEAAF0AAABWAQAATlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTjltc2dwYWNrMTExM01zZ1BhY2tPYmplY3RFTlNfOWFsbG9jYXRvcklTMl9FRUVFAAC8jAAApEYAALiJAAAAAAAAbEcAAFcBAABYAQAAWQEAAF0AAABaAQAATlN0M19fMjIwX19zaGFyZWRfcHRyX2VtcGxhY2VJTjltc2dwYWNrMTExM01zZ1BhY2tCaW5hcnlFTlNfOWFsbG9jYXRvcklTMl9FRUVFAAC8jAAAHEcAALiJAAAAAAAAYEgAAFsBAABcAQAAXQEAAF4BAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAFQAAABfAQAAVQAAAEsAAABMAAAATQAAAGABAABhAQAATjltc2dwYWNrMTExM01zZ1BhY2tCaW5hcnlFAE45bXNncGFjazExNVZhbHVlSUxOU183TXNnUGFjazRUeXBlRTU2RU5TdDNfXzI2dmVjdG9ySWhOUzNfOWFsbG9jYXRvckloRUVFRUVFAAAAvIwAAARIAABMLwAAvIwAAOhHAABUSAAAAAAAAFRIAABbAQAAXAEAAF0BAABeAQAAOgAAADsAAAA8AAAAPQAAAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAEcAAABUAAAASQAAAFUAAABLAAAATAAAAE0AAABgAQAAYgEAAAAAAABMSQAAYwEAAGQBAABlAQAAXQAAAGYBAABOU3QzX18yMjBfX3NoYXJlZF9wdHJfZW1wbGFjZUlOOW1zZ3BhY2sxMTE2TXNnUGFja0V4dGVuc2lvbkVOU185YWxsb2NhdG9ySVMyX0VFRUUAAAC8jAAA+EgAALiJAAAAAAAAVEoAAGcBAABoAQAAaQEAAGoBAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAFQAAABJAAAAVQAAAEsAAABMAAAAawEAAGwBAABtAQAATjltc2dwYWNrMTExNk1zZ1BhY2tFeHRlbnNpb25FAE45bXNncGFjazExNVZhbHVlSUxOU183TXNnUGFjazRUeXBlRTY4RU5TdDNfXzI1dHVwbGVJSmFOUzNfNnZlY3RvckloTlMzXzlhbGxvY2F0b3JJaEVFRUVFRUVFRQAAAAC8jAAA50kAAEwvAAC8jAAAyEkAAEhKAAAAAAAASEoAAGcBAABoAQAAaQEAAGoBAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAFQAAABJAAAAVQAAAEsAAABMAAAATQAAAGwBAABuAQAATlN0M19fMjEyYmFzaWNfc3RyaW5nSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAAJSMAADQSgAATlN0M19fMjEyYmFzaWNfc3RyaW5nSWhOU18xMWNoYXJfdHJhaXRzSWhFRU5TXzlhbGxvY2F0b3JJaEVFRUUAAJSMAAAYSwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSXdOU18xMWNoYXJfdHJhaXRzSXdFRU5TXzlhbGxvY2F0b3JJd0VFRUUAAJSMAABgSwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURzTlNfMTFjaGFyX3RyYWl0c0lEc0VFTlNfOWFsbG9jYXRvcklEc0VF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ZUUAAACUjAAAcF0AAAAAAADRdJ4AV529KoBwUg///z4nCgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUYAAAANQAAAHEAAABr////zvv//5K///8AAAAAAAAAAP////////////////////////////////////////////////////////////////8AAQIDBAUGBwgJ/////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAECBAcDBgUAAAAAAAAAAgAAwAMAAMAEAADABQAAwAYAAMAHAADACAAAwAkAAMAKAADACwAAwAwAAMANAADADgAAwA8AAMAQAADAEQAAwBIAAMATAADAFAAAwBUAAMAWAADAFwAAwBgAAMAZAADAGgAAwBsAAMAcAADAHQAAwB4AAMAfAADAAAAAswEAAMMCAADDAwAAwwQAAMMFAADDBgAAwwcAAMMIAADDCQAAwwoAAMMLAADDDAAAww0AANMOAADDDwAAwwAADLsBAAzDAgAMwwMADMMEAAzbAAAAAN4SBJUAAAAA////////////////wF8AABQAAABDLlVURi04AEGQwAELAtRfAEGwwAELR0xDX0NUWVBFAAAAAExDX05VTUVSSUMAAExDX1RJTUUAAAAAAExDX0NPTExBVEUAAExDX01PTkVUQVJZAExDX01FU1NBR0VTAEGAwQELQRkACgAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQARChkZGQMKBwABAAkLGAAACQYLAAALAAYZAAAAGRkZAEHRwQELIQ4AAAAAAAAAABkACg0ZGRkADQAAAgAJDgAAAAkADgAADgBBi8IBCwEMAEGXwgELFRMAAAAAEwAAAAAJDAAAAAAADAAADABBxcIBCwEQAEHRwgELFQ8AAAAEDwAAAAAJEAAAAAAAEAAAEABB/8IBCwESAEGLwwELHhEA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",dA(V)||(V=z(V));function Lg(A){if(A==V&&IA)return new Uint8Array(IA);var g=Eg(A);if(g)return g;if(GA)return GA(A);throw"both async and sync fetching of the wasm failed"}function Mg(A){return Promise.resolve().then(()=>Lg(A))}function Sg(A,g,I){return Mg(A).then(B=>WebAssembly.instantiate(B,g)).then(B=>B).then(I,B=>{yA(`failed to asynchronously prepare wasm: ${B}`),CA(B)})}function Yg(A,g,I,B){return Sg(g,I,B)}function Kg(){var A={a:eI};function g(B,C){return Y=B.exports,UA=Y.x,ig(),lA=Y.z,Rg(Y.y),ag("wasm-instantiate"),Y}sg("wasm-instantiate");function I(B){g(B.instance)}if(Q.instantiateWasm)try{return Q.instantiateWasm(A,g)}catch(B){yA(`Module.instantiateWasm callback failed with error: ${B}`),K(B)}return Yg(IA,V,A,I).catch(K),{}}var NA=A=>{for(;A.length>0;)A.shift()(Q)},CB=Q.noExitRuntime||!0;function Ug(A){this.excPtr=A,this.ptr=A-24,this.set_type=function(g){L[this.ptr+4>>2]=g},this.get_type=function(){return L[this.ptr+4>>2]},this.set_destructor=function(g){L[this.ptr+8>>2]=g},this.get_destructor=function(){return L[this.ptr+8>>2]},this.set_caught=function(g){g=g?1:0,r[this.ptr+12>>0]=g},this.get_caught=function(){return r[this.ptr+12>>0]!=0},this.set_rethrown=function(g){g=g?1:0,r[this.ptr+13>>0]=g},this.get_rethrown=function(){return r[this.ptr+13>>0]!=0},this.init=function(g,I){this.set_adjusted_ptr(0),this.set_type(g),this.set_destructor(I)},this.set_adjusted_ptr=function(g){L[this.ptr+16>>2]=g},this.get_adjusted_ptr=function(){return L[this.ptr+16>>2]},this.get_exception_ptr=function(){var g=vA(this.get_type());if(g)return L[this.excPtr>>2];var I=this.get_adjusted_ptr();return I!==0?I:this.excPtr}}var qA=0,Jg=0,hg=(A,g,I)=>{var B=new Ug(A);throw B.init(g,I),qA=A,Jg++,qA},Hg=(A,g,I,B,C)=>{},kg=()=>{for(var A=new Array(256),g=0;g<256;++g)A[g]=String.fromCharCode(g);fA=A},fA,k=A=>{for(var g="",I=A;J[I];)g+=fA[J[I++]];return g},Z={},j={},QA={},nA,H=A=>{throw new nA(A)},eA,OA=A=>{throw new eA(A)},cg=(A,g,I)=>{A.forEach(function(o){QA[o]=g});function B(o){var F=I(o);F.length!==A.length&&OA("Mismatched type converter count");for(var w=0;w{j.hasOwnProperty(o)?C[F]=j[o]:(D.push(o),Z.hasOwnProperty(o)||(Z[o]=[]),Z[o].push(()=>{C[F]=j[o],++i,i===D.length&&B(C)}))}),D.length===0&&B(C)};function tg(A,g,I={}){var B=g.name;if(A||H(`type "${B}" must have a positive integer typeid pointer`),j.hasOwnProperty(A)){if(I.ignoreDuplicateRegistrations)return;H(`Cannot register type \'${B}\' twice`)}if(j[A]=g,delete QA[A],Z.hasOwnProperty(A)){var C=Z[A];delete Z[A],C.forEach(D=>D())}}function q(A,g,I={}){if(!("argPackAdvance"in g))throw new TypeError("registerType registeredInstance requires argPackAdvance");return tg(A,g,I)}var l=8,rg=(A,g,I,B)=>{g=k(g),q(A,{name:g,fromWireType:function(C){return!!C},toWireType:function(C,D){return D?I:B},argPackAdvance:l,readValueFromPointer:function(C){return this.fromWireType(J[C])},destructorFunction:null})};function dg(){Object.assign(WA.prototype,{get(A){return this.allocated[A]},has(A){return this.allocated[A]!==void 0},allocate(A){var g=this.freelist.pop()||this.allocated.length;return this.allocated[g]=A,g},free(A){this.allocated[A]=void 0,this.freelist.push(A)}})}function WA(){this.allocated=[void 0],this.freelist=[]}var c=new WA,TA=A=>{A>=c.reserved&&--c.get(A).refcount===0&&c.free(A)},qg=()=>{for(var A=0,g=c.reserved;g{c.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),c.reserved=c.allocated.length,Q.count_emval_handles=qg},W={toValue:A=>(A||H("Cannot use deleted val. handle = "+A),c.get(A).value),toHandle:A=>{switch(A){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return c.allocate({refcount:1,value:A})}}};function jA(A){return this.fromWireType(M[A>>2])}var ng=(A,g)=>{g=k(g),q(A,{name:g,fromWireType:I=>{var B=W.toValue(I);return TA(I),B},toWireType:(I,B)=>W.toHandle(B),argPackAdvance:l,readValueFromPointer:jA,destructorFunction:null})},eg=(A,g)=>{switch(g){case 4:return function(I){return this.fromWireType(hA[I>>2])};case 8:return function(I){return this.fromWireType(HA[I>>3])};default:throw new TypeError(`invalid float width (${g}): ${A}`)}},Og=(A,g,I)=>{g=k(g),q(A,{name:g,fromWireType:B=>B,toWireType:(B,C)=>C,argPackAdvance:l,readValueFromPointer:eg(g,I),destructorFunction:null})},sA=(A,g)=>Object.defineProperty(g,"name",{value:A}),Wg=A=>{for(;A.length;){var g=A.pop(),I=A.pop();I(g)}};function Tg(A,g){if(!(A instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof A} which is not a function`);var I=sA(A.name||"unknownFunctionName",function(){});I.prototype=A.prototype;var B=new I,C=A.apply(B,g);return C instanceof Object?C:B}function jg(A,g,I,B,C,D){var i=g.length;i<2&&H("argTypes array size mismatch! Must at least get return value and \'this\' types!");for(var o=g[1]!==null&&I!==null,F=!1,w=1;w0?", ":"")+s),S+=(a||D?"var rv = ":"")+"invoker(fn"+(s.length>0?", ":"")+s+`);\n`,F)S+=`runDestructors(destructors);\n`;else for(var w=o?1:2;w{if(A[g].overloadTable===void 0){var B=A[g];A[g]=function(){return A[g].overloadTable.hasOwnProperty(arguments.length)||H(`Function \'${I}\' called with an invalid number of arguments (${arguments.length}) - expects one of (${A[g].overloadTable})!`),A[g].overloadTable[arguments.length].apply(this,arguments)},A[g].overloadTable=[],A[g].overloadTable[B.argCount]=B}},xg=(A,g,I)=>{Q.hasOwnProperty(A)?((I===void 0||Q[A].overloadTable!==void 0&&Q[A].overloadTable[I]!==void 0)&&H(`Cannot register public name \'${A}\' twice`),lg(Q,A,A),Q.hasOwnProperty(I)&&H(`Cannot register multiple overloads of a function with the same number of arguments (${I})!`),Q[A].overloadTable[I]=g):(Q[A]=g,I!==void 0&&(Q[A].numArguments=I))},Xg=(A,g)=>{for(var I=[],B=0;B>2]);return I},Vg=(A,g,I)=>{Q.hasOwnProperty(A)||OA("Replacing nonexistant public symbol"),Q[A].overloadTable!==void 0&&I!==void 0?Q[A].overloadTable[I]=g:(Q[A]=g,Q[A].argCount=I)},Zg=(A,g,I)=>{var B=Q["dynCall_"+A];return I&&I.length?B.apply(null,[g].concat(I)):B.call(null,g)},EA=[],lA,xA=A=>{var g=EA[A];return g||(A>=EA.length&&(EA.length=A+1),EA[A]=g=lA.get(A)),g},pg=(A,g,I)=>{if(A.includes("j"))return Zg(A,g,I);var B=xA(g).apply(null,I);return B},zg=(A,g)=>{var I=[];return function(){return I.length=0,Object.assign(I,arguments),pg(A,g,I)}},ug=(A,g)=>{A=k(A);function I(){return A.includes("j")?zg(A,g):xA(g)}var B=I();return typeof B!="function"&&H(`unknown function pointer with signature ${A}: ${g}`),B},bg=(A,g)=>{var I=sA(g,function(B){this.name=g,this.message=B;var C=new Error(B).stack;C!==void 0&&(this.stack=this.toString()+`\n`+C.replace(/^Error(:[^\\n]*)?\\n/,""))});return I.prototype=Object.create(A.prototype),I.prototype.constructor=I,I.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},I},XA,VA=A=>{var g=mA(A),I=k(g);return f(g),I},Pg=(A,g)=>{var I=[],B={};function C(D){if(!B[D]&&!j[D]){if(QA[D]){QA[D].forEach(C);return}I.push(D),B[D]=!0}}throw g.forEach(C),new XA(`${A}: `+I.map(VA).join([", "]))},mg=A=>{A=A.trim();let g=A.indexOf("(");return g!==-1?A.substr(0,g):A},vg=(A,g,I,B,C,D,i)=>{var o=Xg(g,I);A=k(A),A=mg(A),C=ug(B,C),xg(A,function(){Pg(`Cannot call ${A} due to unbound types`,o)},g-1),cg([],o,function(F){var w=[F[0],null].concat(F.slice(1));return Vg(A,jg(A,w,null,C,D,i),g-1),[]})},_g=(A,g,I)=>{switch(g){case 1:return I?B=>r[B>>0]:B=>J[B>>0];case 2:return I?B=>u[B>>1]:B=>BA[B>>1];case 4:return I?B=>M[B>>2]:B=>L[B>>2];default:throw new TypeError(`invalid integer width (${g}): ${A}`)}},$g=(A,g,I,B,C)=>{g=k(g),C===-1&&(C=4294967295);var D=a=>a;if(B===0){var i=32-8*I;D=a=>a<>>i}var o=g.includes("unsigned"),F=(a,N)=>{},w;o?w=function(a,N){return F(N,this.name),N>>>0}:w=function(a,N){return F(N,this.name),N},q(A,{name:g,fromWireType:D,toWireType:w,argPackAdvance:l,readValueFromPointer:_g(g,I,B!==0),destructorFunction:null})},AI=(A,g,I)=>{var B=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],C=B[g];function D(i){var o=L[i>>2],F=L[i+4>>2];return new C(r.buffer,F,o)}I=k(I),q(A,{name:I,fromWireType:D,argPackAdvance:l,readValueFromPointer:D},{ignoreDuplicateRegistrations:!0})};function gI(A){return this.fromWireType(L[A>>2])}var ZA=(A,g,I,B)=>{if(!(B>0))return 0;for(var C=I,D=I+B-1,i=0;i=55296&&o<=57343){var F=A.charCodeAt(++i);o=65536+((o&1023)<<10)|F&1023}if(o<=127){if(I>=D)break;g[I++]=o}else if(o<=2047){if(I+1>=D)break;g[I++]=192|o>>6,g[I++]=128|o&63}else if(o<=65535){if(I+2>=D)break;g[I++]=224|o>>12,g[I++]=128|o>>6&63,g[I++]=128|o&63}else{if(I+3>=D)break;g[I++]=240|o>>18,g[I++]=128|o>>12&63,g[I++]=128|o>>6&63,g[I++]=128|o&63}}return g[I]=0,I-C},II=(A,g,I)=>ZA(A,J,g,I),pA=A=>{for(var g=0,I=0;I=55296&&B<=57343?(g+=4,++I):g+=3}return g},zA=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,BI=(A,g,I)=>{for(var B=g+I,C=g;A[C]&&!(C>=B);)++C;if(C-g>16&&A.buffer&&zA)return zA.decode(A.subarray(g,C));for(var D="";g>10,56320|w&1023)}}return D},DA=(A,g)=>A?BI(J,A,g):"",CI=(A,g)=>{g=k(g);var I=g==="std::string";q(A,{name:g,fromWireType(B){var C=L[B>>2],D=B+4,i;if(I)for(var o=D,F=0;F<=C;++F){var w=D+F;if(F==C||J[w]==0){var a=w-o,N=DA(o,a);i===void 0?i=N:(i+=String.fromCharCode(0),i+=N),o=w+1}}else{for(var s=new Array(C),F=0;F>2]=D,I&&i)II(C,F,D+1);else if(i)for(var w=0;w255&&(f(F),H("String has UTF-16 code units that do not fit in 8 bits")),J[F+w]=a}else for(var w=0;w{for(var I=A,B=I>>1,C=B+g/2;!(B>=C)&&BA[B];)++B;if(I=B<<1,I-A>32&&uA)return uA.decode(J.subarray(A,I));for(var D="",i=0;!(i>=g/2);++i){var o=u[A+i*2>>1];if(o==0)break;D+=String.fromCharCode(o)}return D},EI=(A,g,I)=>{if(I===void 0&&(I=2147483647),I<2)return 0;I-=2;for(var B=g,C=I>1]=i,g+=2}return u[g>>1]=0,g-B},DI=A=>A.length*2,iI=(A,g)=>{for(var I=0,B="";!(I>=g/4);){var C=M[A+I*4>>2];if(C==0)break;if(++I,C>=65536){var D=C-65536;B+=String.fromCharCode(55296|D>>10,56320|D&1023)}else B+=String.fromCharCode(C)}return B},oI=(A,g,I)=>{if(I===void 0&&(I=2147483647),I<4)return 0;for(var B=g,C=B+I-4,D=0;D=55296&&i<=57343){var o=A.charCodeAt(++D);i=65536+((i&1023)<<10)|o&1023}if(M[g>>2]=i,g+=4,g+4>C)break}return M[g>>2]=0,g-B},wI=A=>{for(var g=0,I=0;I=55296&&B<=57343&&++I,g+=4}return g},FI=(A,g,I)=>{I=k(I);var B,C,D,i,o;g===2?(B=QI,C=EI,i=DI,D=()=>BA,o=1):g===4&&(B=iI,C=oI,i=wI,D=()=>L,o=2),q(A,{name:I,fromWireType:F=>{for(var w=L[F>>2],a=D(),N,s=F+4,S=0;S<=w;++S){var n=F+4+S*g;if(S==w||a[n>>o]==0){var e=n-s,O=B(s,e);N===void 0?N=O:(N+=String.fromCharCode(0),N+=O),s=n+g}}return f(F),N},toWireType:(F,w)=>{typeof w!="string"&&H(`Cannot pass non-string to C++ string type ${I}`);var a=i(w),N=MA(4+a+g);return L[N>>2]=a>>o,C(w,N+4,a+g),F!==null&&F.push(f,N),N},argPackAdvance:l,readValueFromPointer:jA,destructorFunction(F){f(F)}})},GI=(A,g)=>{g=k(g),q(A,{isVoid:!0,name:g,argPackAdvance:0,fromWireType:()=>{},toWireType:(I,B)=>{}})},yI=A=>{A>4&&(c.get(A).refcount+=1)},RI={},NI=A=>{var g=RI[A];return g===void 0?k(A):g},sI=A=>W.toHandle(NI(A)),aI=()=>W.toHandle({}),LI=(A,g,I)=>{A=W.toValue(A),g=W.toValue(g),I=W.toValue(I),A[g]=I},MI=(A,g)=>{var I=j[A];return I===void 0&&H(g+" has unknown type "+VA(A)),I},SI=(A,g)=>{A=MI(A,"_emval_take_value");var I=A.readValueFromPointer(g);return W.toHandle(I)},YI=()=>{CA("")},KI=(A,g,I)=>J.copyWithin(A,g,g+I),UI=A=>{CA("OOM")},JI=A=>{var g=J.length;A>>>=0,UI(A)},aA={},hI=()=>p||"./this.program",P=()=>{if(!P.strings){var A=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",g={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:A,_:hI()};for(var I in aA)aA[I]===void 0?delete g[I]:g[I]=aA[I];var B=[];for(var I in g)B.push(`${I}=${g[I]}`);P.strings=B}return P.strings},HI=(A,g)=>{for(var I=0;I>0]=A.charCodeAt(I);r[g>>0]=0},LA={varargs:void 0,get(){var A=M[+LA.varargs>>2];return LA.varargs+=4,A},getp(){return LA.get()},getStr(A){var g=DA(A);return g}},kI=(A,g)=>{var I=0;return P().forEach((B,C)=>{var D=g+I;L[A+C*4>>2]=D,HI(B,D),I+=B.length+1}),0},cI=(A,g)=>{var I=P();L[A>>2]=I.length;var B=0;return I.forEach(C=>B+=C.length+1),L[g>>2]=B,0},iA=A=>A%4===0&&(A%100!==0||A%400===0),tI=(A,g)=>{for(var I=0,B=0;B<=g;I+=A[B++]);return I},bA=[31,29,31,30,31,30,31,31,30,31,30,31],PA=[31,28,31,30,31,30,31,31,30,31,30,31],rI=(A,g)=>{for(var I=new Date(A.getTime());g>0;){var B=iA(I.getFullYear()),C=I.getMonth(),D=(B?bA:PA)[C];if(g>D-I.getDate())g-=D-I.getDate()+1,I.setDate(1),C<11?I.setMonth(C+1):(I.setMonth(0),I.setFullYear(I.getFullYear()+1));else return I.setDate(I.getDate()+g),I}return I};function dI(A,g,I){var B=I>0?I:pA(A)+1,C=new Array(B),D=ZA(A,C,0,C.length);return g&&(C.length=D),C}var qI=(A,g)=>{r.set(A,g)},fI=(A,g,I,B)=>{var C=L[B+40>>2],D={tm_sec:M[B>>2],tm_min:M[B+4>>2],tm_hour:M[B+8>>2],tm_mday:M[B+12>>2],tm_mon:M[B+16>>2],tm_year:M[B+20>>2],tm_wday:M[B+24>>2],tm_yday:M[B+28>>2],tm_isdst:M[B+32>>2],tm_gmtoff:M[B+36>>2],tm_zone:C?DA(C):""},i=DA(I),o={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var F in o)i=i.replace(new RegExp(F,"g"),o[F]);var w=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["January","February","March","April","May","June","July","August","September","October","November","December"];function N(E,G,t){for(var h=typeof E=="number"?E.toString():E||"";h.length0?1:0}var h;return(h=t(E.getFullYear()-G.getFullYear()))===0&&(h=t(E.getMonth()-G.getMonth()))===0&&(h=t(E.getDate()-G.getDate())),h}function n(E){switch(E.getDay()){case 0:return new Date(E.getFullYear()-1,11,29);case 1:return E;case 2:return new Date(E.getFullYear(),0,3);case 3:return new Date(E.getFullYear(),0,2);case 4:return new Date(E.getFullYear(),0,1);case 5:return new Date(E.getFullYear()-1,11,31);case 6:return new Date(E.getFullYear()-1,11,30)}}function e(E){var G=rI(new Date(E.tm_year+1900,0,1),E.tm_yday),t=new Date(G.getFullYear(),0,4),h=new Date(G.getFullYear()+1,0,4),wA=n(t),VI=n(h);return S(wA,G)<=0?S(VI,G)<=0?G.getFullYear()+1:G.getFullYear():G.getFullYear()-1}var O={"%a":E=>w[E.tm_wday].substring(0,3),"%A":E=>w[E.tm_wday],"%b":E=>a[E.tm_mon].substring(0,3),"%B":E=>a[E.tm_mon],"%C":E=>{var G=E.tm_year+1900;return s(G/100|0,2)},"%d":E=>s(E.tm_mday,2),"%e":E=>N(E.tm_mday,2," "),"%g":E=>e(E).toString().substring(2),"%G":E=>e(E),"%H":E=>s(E.tm_hour,2),"%I":E=>{var G=E.tm_hour;return G==0?G=12:G>12&&(G-=12),s(G,2)},"%j":E=>s(E.tm_mday+tI(iA(E.tm_year+1900)?bA:PA,E.tm_mon-1),3),"%m":E=>s(E.tm_mon+1,2),"%M":E=>s(E.tm_min,2),"%n":()=>`\n`,"%p":E=>E.tm_hour>=0&&E.tm_hour<12?"AM":"PM","%S":E=>s(E.tm_sec,2),"%t":()=>" ","%u":E=>E.tm_wday||7,"%U":E=>{var G=E.tm_yday+7-E.tm_wday;return s(Math.floor(G/7),2)},"%V":E=>{var G=Math.floor((E.tm_yday+7-(E.tm_wday+6)%7)/7);if((E.tm_wday+371-E.tm_yday-2)%7<=2&&G++,G){if(G==53){var h=(E.tm_wday+371-E.tm_yday)%7;h!=4&&(h!=3||!iA(E.tm_year))&&(G=1)}}else{G=52;var t=(E.tm_wday+7-E.tm_yday-1)%7;(t==4||t==5&&iA(E.tm_year%400-1))&&G++}return s(G,2)},"%w":E=>E.tm_wday,"%W":E=>{var G=E.tm_yday+7-(E.tm_wday+6)%7;return s(Math.floor(G/7),2)},"%y":E=>(E.tm_year+1900).toString().substring(2),"%Y":E=>E.tm_year+1900,"%z":E=>{var G=E.tm_gmtoff,t=G>=0;return G=Math.abs(G)/60,G=G/60*100+G%60,(t?"+":"-")+("0000"+G).slice(-4)},"%Z":E=>E.tm_zone,"%%":()=>"%"};i=i.replace(/%%/g,"\\0\\0");for(var F in O)i.includes(F)&&(i=i.replace(new RegExp(F,"g"),O[F](D)));i=i.replace(/\\0\\0/g,"%");var x=dI(i,!1);return x.length>g?0:(qI(x,A),x.length-1)},nI=(A,g,I,B,C)=>fI(A,g,I,B);kg(),nA=Q.BindingError=class extends Error{constructor(g){super(g),this.name="BindingError"}},eA=Q.InternalError=class extends Error{constructor(g){super(g),this.name="InternalError"}},dg(),fg(),XA=Q.UnboundTypeError=bg(Error,"UnboundTypeError");var eI={a:hg,p:Hg,m:rg,v:ng,l:Og,e:vg,d:$g,b:AI,k:CI,i:FI,n:GI,c:TA,o:yI,h:sI,w:aI,f:LI,g:SI,j:YI,u:KI,t:JI,r:kI,s:cI,q:nI},Y=Kg(),OI=()=>(OI=Y.y)(),f=A=>(f=Y.A)(A),MA=A=>(MA=Y.B)(A),mA=A=>(mA=Y.C)(A),WI=()=>(WI=Y.__errno_location)(),vA=A=>(vA=Y.D)(A),TI=Q.dynCall_ji=(A,g)=>(TI=Q.dynCall_ji=Y.E)(A,g),jI=Q.dynCall_viijii=(A,g,I,B,C,D,i)=>(jI=Q.dynCall_viijii=Y.F)(A,g,I,B,C,D,i),lI=Q.dynCall_iiiiij=(A,g,I,B,C,D,i)=>(lI=Q.dynCall_iiiiij=Y.G)(A,g,I,B,C,D,i),xI=Q.dynCall_iiiiijj=(A,g,I,B,C,D,i,o,F)=>(xI=Q.dynCall_iiiiijj=Y.H)(A,g,I,B,C,D,i,o,F),XI=Q.dynCall_iiiiiijj=(A,g,I,B,C,D,i,o,F,w)=>(XI=Q.dynCall_iiiiiijj=Y.I)(A,g,I,B,C,D,i,o,F,w),oA;b=function A(){oA||_A(),oA||(b=A)};function _A(){if(T>0||(wg(),T>0))return;function A(){oA||(oA=!0,Q.calledRun=!0,!JA&&(Fg(),d(Q),Q.onRuntimeInitialized&&Q.onRuntimeInitialized(),Gg()))}Q.setStatus?(Q.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Q.setStatus("")},1),A()},1)):A()}if(Q.preInit)for(typeof Q.preInit=="function"&&(Q.preInit=[Q.preInit]);Q.preInit.length>0;)Q.preInit.pop()();return _A(),R.ready}})();typeof gg=="object"&&typeof SA=="object"?SA.exports=Ag:typeof define=="function"&&define.amd&&define([],()=>Ag)});m();var Bg=_I(Ig()),FA=null,YA=[];function AB(y,R,Q,d,K){YA.push({data:y,maxSize:R,sd:Q,width:d,tile:K})}function Cg(){if(FA)for(;YA.length;){let{data:y,maxSize:R,sd:Q,width:d,tile:K}=YA.shift(),{input:v,tex1:_,tex2:p,xyz:$}=FA.alloc(y.length,R);v.set(y);let KA=performance.now(),X=FA.decode(Q,d,K),U=new Uint32Array(_.length),z=new Uint32Array(p.length),AA=new Uint16Array($.length);U.set(_),z.set(p),AA.set($);let gA=AA.subarray(0,3*X);postMessage({type:"decoded",size:X,tex1:U,tex2:z,xyz:gA},[U.buffer,z.buffer,gA.buffer])}}self.onmessage=function(y){let R=y.data;switch(R.type){case"decode":AB(R.data,R.maxSize,R.sd,R.width,R.tile),Cg();break}};gB("worker starting.");(0,Bg.default)().then(y=>{FA=y,postMessage({type:"ready"}),Cg()}).catch(y=>IB(y));function gB(y){postMessage({type:"log",str:y})}function IB(y){postMessage({type:"error",str:y})}\n',JF=new Blob([PF],{type:"text/javascript"}),WF=URL.createObjectURL(JF),zF=class extends(typeof Worker=="function"?Worker:null){constructor(){super(WF)}},qF="https://webapp.engineeringlumalabs.com/api/v3/captures",Ni=2048,pa=4,VF=class{constructor(e,A=!0){typeof e=="string"?e.toLowerCase().startsWith("https://lumalabs.ai")?this.dataset={captureUrl:e}:this.dataset={src:e}:this.dataset=e,this.streaming=A,this.fetchOptions=this.dataset.fetchOptions??void 0,this.metaVersion=0,this.numSplats=0,this.totalSplats=0,this.totalBytes=0,this.currentBytes=0,this.initialPose=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,1,0,0,1]),this.scaleToWorld=1,this.animFrames=[],this.animFps=0,this.cpuPoints=new Uint16Array(0),this.sceneCenter=[0,0,0],this.radiusList=null,this.radiusStep=1024,this.minRadius=2,this.loadedRadius=0,this.isComplete=!1,this.antialias=.3,this.haveSH=!1,this.haveSemantics=!1,this.haveSkybox=!1,this.skybox={type:"sphere",distance:1e3,origin:[0,0,0]},this.events={partialUpdate:new Nt,progress:new Nt,showProgress:new Nt,hideProgress:new Nt,updateGauss1Texture:new Nt,updateGauss2Texture:new Nt,updateSHTexture:new Nt,updateSkyboxTexture:new Nt,updateCpuPoints:new Nt,complete:new Nt},this.blocksDowloaded=0,this.gauss1Data=null,this.gauss2Data=null,this.gauss1Count=0,this.gauss2Count=0,this.gauss1Height=0,this.gauss2Height=0,this.cpuPtsCount=0,this.initWorker(),this.bytesReady=0,this.totalBytes=1e10,this.streaming?setTimeout(()=>{(!this.totalBytes||this.currentBytes/this.totalBytes<.1)&&this.showProgress()},3e3):this.showProgress(),this.metaReady,this.allReady,this.coreBinReady,this.gauss1Ready,this.gauss2Ready,this.shReady,this.semanticsReady,this.skyboxReady,this.downloadAllFiles(),this.allReady.then(()=>{var t;this.hideProgress(),this.loadedRadius=this.sceneRadius(),this.events.complete.dispatch(this),this.isComplete=!0,(t=this.worker)==null||t.terminate()}).catch(t=>console.error(t))}sceneRadius(){return this.radiusList?1.05*this.radiusList[this.radiusList.length-1]:0}addProgress(e){this.bytesReady+=e;let A=Math.min(this.bytesReady*100/this.totalBytes,100)/100;this.events.progress.dispatch({bytesReady:this.bytesReady,totalBytes:this.totalBytes,progress:A})}showProgress(){this.events.showProgress.dispatch()}hideProgress(){this.events.hideProgress.dispatch()}convertArtifactArray(e){let A={};for(let t of e)A[t.type]=t.url;return A}async getArtifacts(){let e=this.dataset.uuid;if(e==null&&this.dataset.captureUrl!=null){let A=this.dataset.captureUrl.split("/").pop()??"",t=/^([\w-]+)/.exec(A);e=t?t[1]:null}if(this.dataset.artifacts!=null)return this.dataset.artifacts;if(e!=null)return(await fetch(`${qF}/${e}/public`,this.fetchOptions)).json().then(A=>{let t=(A.response??A.latestRun).artifacts;if(t==null)throw new Error(`No artifacts run for capture ${e}`);return this.convertArtifactArray(t)});if(this.dataset.src!=null)return{gs_web_meta:`${this.dataset.src}/gs_web_meta.json`,gs_web_gauss1:`${this.dataset.src}/gs_web_gauss1.bin`,gs_web_gauss2:`${this.dataset.src}/gs_web_gauss2.bin`,gs_web_sh:`${this.dataset.src}/gs_web_sh.bin`,gs_web_webmeta:`${this.dataset.src}/gs_web_webmeta.json`,gs_compressed:`${this.dataset.src}/gs_compressed.bin`,gs_compressed_meta:`${this.dataset.src}/gs_compressed_meta.json`,with_background_gs_camera_params:`${this.dataset.src}/with_background_gs_camera_params.json`,semantics:`${this.dataset.src}/semantics.bin`,skybox:`${this.dataset.src}/skybox.jpg`,skybox_meta:`${this.dataset.src}/skybox_meta.json`};throw new Error(`Cannot get artifacts from ${JSON.stringify(this.dataset)}`)}downloadAllFiles(){let e=this.getArtifacts();this.metaReady=e.then(A=>{let t=A.gs_web_webmeta&&A.gs_web_gauss1&&A.gs_web_gauss2,n=A.gs_compressed&&A.gs_compressed_meta;if(!t&&!n)throw new Error(`Missing required artifacts in ${JSON.stringify(A)}`);return this.haveSemantics=!!A.semantics,Promise.all([this.downloadMeta(A.gs_compressed_meta??A.gs_web_webmeta).catch(i=>{if(A.gs_web_webmeta!=null)return this.downloadMeta(A.gs_web_webmeta);throw`Unable to download metadata: ${i}`}),this.downloadMeta2(A.gs_web_meta),this.downloadMeta3(A.with_background_gs_camera_params)]).then(i=>{let r={artifacts:A};for(let o of i)Object.assign(r,o);return r})}),this.coreReady=e.then(A=>A.gs_compressed?this.downloadCoreBin(A.gs_compressed):null),this.gauss1Ready=this.metaReady.then(A=>A.metaVersion===1?this.downloadGauss1(A.artifacts.gs_web_gauss1):new Promise((t,n)=>{let i=this.events.updateGauss1Texture.addListener(r=>{r.complete&&(t(r),i.remove())})})),this.gauss2Ready=this.metaReady.then(A=>A.metaVersion===1?this.downloadGauss2(A.artifacts.gs_web_gauss2):new Promise((t,n)=>{let i=this.events.updateGauss2Texture.addListener(r=>{r.complete&&(t(r),i.remove())})})),this.shReady=this.metaReady.then(A=>A.haveSH?this.downloadSHTexture(A.artifacts.gs_web_sh):null),this.semanticsReady=e.then(A=>A.semantics?this.fetchFile(A.semantics).catch(t=>null):null),this.skyboxReady=e.then(A=>A.skybox&&A.skybox_meta?this.downloadSkybox(A):null),this.allReady=this.metaReady.then(A=>{let t=[this.coreReady,this.gauss1Ready,this.gauss2Ready,this.semanticsReady,this.skyboxReady];return this.haveSH&&t.push(this.shReady),Promise.all(t)}).then(()=>{})}async fetchFile(e,A=void 0,t=256*1024){let n=await fetch(e,this.fetchOptions);if(!n.ok)throw new Error(`${e} ${n.statusText}`);let i=new Uint8Array(1<<20),r=function(g,I){if(I<=g.length)return g;let C=g.length;for(;C<=I;)C*=2;let B=new Uint8Array(C);return B.set(g),B},o=0,s=0;if(n.body==null)throw new Error(`Response body is null for ${e}`);let a=n.body.getReader();for(;;){let{done:g,value:I}=await a.read();if(g)break;if(I==null)throw new Error(`Read value is null for ${e}`);i=r(i,o+I.length),i.set(I,o),o+=I.length,this.addProgress(I.length),this.currentBytes=o,this.streaming&&A&&o-s>=t&&(A(i.subarray(0,o),!1),s=o)}return i.subarray(0,o)}parseJSON(e){let A=new TextDecoder().decode(e);return JSON.parse(A)}downloadMeta(e){return this.fetchFile(e).then(A=>{let t=this.parseJSON(A);if(this.metaVersion=t.version,this.metaVersion==1)this.totalSplats=t.num_splats,this.totalBytes=t.total_bytes,this.sceneCenter=t.scene_center??this.sceneCenter,this.radiusList=new Float32Array(t.rlist),this.radiusStep=t.rstep??this.radiusStep,this.minRadius=t.minr??this.minRadius,this.antialias=t.antialias??this.antialias,this.haveSH=t.have_sh??this.haveSH;else{let n=t.gaussians,i=n.core,r=n.options??{},o=n.radius??{},s=t.scene??{},a=t.camera??{};this.totalSplats=n.size,this.totalBytes=i.file_size,this.sceneCenter=s.center??this.sceneCenter,this.radiusList=new Float32Array(o.list),this.radiusStep=o.step??this.radiusStep,this.minRadius=o.min??this.minRadius,this.antialias=r.cov2_antialias??this.antialias,this.haveSH=!1,this.scaleToWorld=s.scale_to_world??this.scaleToWorld,a.initial_pose&&(this.initialPose=sQ(a.initial_pose[0]))}return{metaVersion:this.metaVersion,totalSplats:this.totalSplats,totalBytes:this.totalBytes,sceneCenter:this.sceneCenter,radiusList:this.radiusList,radiusStep:this.radiusStep,minRadius:this.minRadius,antialias:this.antialias,haveSH:this.haveSH,scaleToWorld:this.scaleToWorld,initialPose:this.initialPose}})}downloadMeta2(e){return e?this.fetchFile(e).then(A=>{let t=this.parseJSON(A);return this.scaleToWorld=t.scale_to_world??this.scaleToWorld,this.initialPose=sQ(t.camera.initial_pose[0]),{scaleToWorld:this.scaleToWorld,initialPose:this.initialPose}}).catch(A=>(console.warn(`downloadMeta2 error: ${A}, for URL: ${e}`),null)):{}}downloadMeta3(e){return this.fetchFile(e).then(A=>{let t=this.parseJSON(A),n=t.c2w;this.animFrames=new Array(n.length);for(let i=0;iconsole.log(A,e))}partialSizes(e,A){let t=e.length/A,n=pa*Ni;return t=Math.floor(t/n)*n,[t/Ni,Math.min(t,this.totalSplats)]}downloadCoreBin(e){let A=(t,n)=>{let i=new Uint32Array(t.buffer,0,Math.floor(t.length/4)),[r,o,s,a,g,I]=i.subarray(0,6);if(r!=1397183820)throw Error(`Unsupported core.bin format: ${r}`);if(o!=1)throw Error(`Unsupported core.bin version: ${o}`);if(!this.totalSplats)this.totalSplats=s;else if(this.totalSplats!=s)throw Error(`Mismatched splat count: ${s}`);for(let C=6,B=0;C=this.blocksDowloaded&&C+E<=i.length){let d=t.slice(4*C,4*(C+E));this.decodeBlock(d,a,I),this.blocksDowloaded++}C+=E,I&&++I}};return this.fetchFile(e,this.streaming?A:void 0).then(t=>A(t))}updateCoreBlock(e,A,t,n){let i=E=>Math.ceil(E/(Ni*pa))*pa,r=Ni,o=i(this.totalSplats),s=i(this.gauss1Count),a=i(this.gauss1Count+e),g=a>=o;this.gauss1Data||(this.gauss1Data=new Uint32Array(2*r*o)),this.gauss2Data||(this.gauss2Data=new Uint32Array(4*r*o));let I=a-s;this.gauss1Data.set(A.subarray(0,2*I*r),2*s*r),this.gauss2Data.set(t.subarray(0,4*I*r),4*s*r);let C=(E,d,h,c)=>({width:r,height:o,channels:d,currentHeight:a,data:E,format:h,internalFormat:c,target:WebGL2RenderingContext.TEXTURE_2D,type:WebGL2RenderingContext.UNSIGNED_INT,unpackAlignment:1,minMagFilter:WebGL2RenderingContext.NEAREST,complete:g});this.events.updateGauss1Texture.dispatch(C(this.gauss1Data,2,WebGL2RenderingContext.RG_INTEGER,WebGL2RenderingContext.RG32UI)),this.gauss1Count+=e,this.gauss1Height=a,this.events.updateGauss2Texture.dispatch(C(this.gauss2Data,4,WebGL2RenderingContext.RGBA_INTEGER,WebGL2RenderingContext.RGBA32UI)),this.gauss2Count+=e,this.gauss2Height=a,this.cpuPoints.length||(this.cpuPoints=new Uint16Array(3*this.totalSplats));let B=this.cpuPtsCount;this.cpuPoints.set(n,3*B),this.cpuPtsCount+=e,this.events.updateCpuPoints.dispatch({start:B,end:this.cpuPtsCount,cpuPoints:this.cpuPoints}),this.partialUpdate()}downloadGauss1(e){let A=(t,n)=>{let i=new Uint32Array(t.buffer,0,4),[r,o,s,a]=i;if(r!=1||o!=Ni||a!=2)throw new Error(`${e}: invalid data`);let g=i.byteLength,I=new Uint32Array(t.buffer,g,Math.floor((t.length-g)/4)),C=this.totalSplats,B=0;n?B=s:[B,C]=this.partialSizes(I,2),n=n||B==s,this.gauss1Height*o*2;let E={width:o,height:s,channels:2,currentHeight:B,data:I,target:WebGL2RenderingContext.TEXTURE_2D,internalFormat:WebGL2RenderingContext.RG32UI,format:WebGL2RenderingContext.RG_INTEGER,type:WebGL2RenderingContext.UNSIGNED_INT,unpackAlignment:1,minMagFilter:WebGL2RenderingContext.NEAREST,complete:n};return this.events.updateGauss1Texture.dispatch(E),this.gauss1Count=C,this.gauss1Height=B,this.extractCpuPoints(t,o,C),this.partialUpdate(),E};return this.fetchFile(e,this.streaming?A:void 0).then(t=>A(t,!0))}downloadGauss2(e){let A=(t,n)=>{let i=new Uint32Array(t.buffer,0,4),[r,o,s,a]=i;if(r!=1||o!=Ni||a!=4)throw new Error(`${e}: invalid data`);let g=i.byteLength,I=new Uint32Array(t.buffer,g,Math.floor((t.length-g)/4)),C=this.totalSplats,B=0;n?B=s:[B,C]=this.partialSizes(I,4),n=n||B==s,this.gauss2Height*o*4;let E={width:o,height:s,channels:4,currentHeight:B,data:I,target:WebGL2RenderingContext.TEXTURE_2D,internalFormat:WebGL2RenderingContext.RGBA32UI,format:WebGL2RenderingContext.RGBA_INTEGER,type:WebGL2RenderingContext.UNSIGNED_INT,unpackAlignment:1,minMagFilter:WebGL2RenderingContext.NEAREST,complete:n};return this.events.updateGauss2Texture.dispatch(E),this.gauss2Count=C,this.gauss2Height=B,this.partialUpdate(),E};return this.fetchFile(e,this.streaming?A:void 0).then(t=>A(t,!0))}partialUpdate(){if(this.numSplats=Math.min(this.gauss1Count,this.gauss2Count),this.radiusList){let e=Math.floor(this.numSplats/this.radiusStep);this.loadedRadius=this.radiusList[Math.min(e,this.radiusList.length-1)]}this.streaming&&this.events.partialUpdate.dispatch()}downloadSHTexture(e){return this.fetchFile(e).then(A=>{let t=new Uint32Array(A.buffer,0,2);t[0];let n=t[1],i=256,r=Math.ceil(n/i),o=new Uint16Array(A.buffer,t.byteLength),s={width:4*i,height:4*r,channels:3,currentHeight:4*r,target:WebGL2RenderingContext.TEXTURE_2D,format:WebGL2RenderingContext.RGB,internalFormat:WebGL2RenderingContext.RGB16F,type:WebGL2RenderingContext.HALF_FLOAT,unpackAlignment:1,minMagFilter:WebGL2RenderingContext.NEAREST,data:o,complete:!0};return this.events.updateSHTexture.dispatch(s),s})}downloadSkybox(e){return this.fetchFile(e.skybox_meta).then(A=>{let t=this.parseJSON(A),n=(t.cubemap??{}).order??["py","pz","ny","nx","px","nz"];return this.skybox.distance=t.distance??this.skybox.distance,this.skybox.origin=t.origin??this.skybox.origin,this.fetchFile(e.skybox).then(i=>{let r=new Blob([i],{type:"image/jpeg"});return new Promise(o=>{let s=new Image;s.onload=()=>o(s),s.src=URL.createObjectURL(r)}).then(o=>{var g;this.haveSkybox=!0;let s=o.width;if(o.height!=6*s)throw new Error("Invalid skybox image");let a=[];for(let I=0;I<6;I++){let C=document.createElement("canvas");C.width=C.height=s,(g=C.getContext("2d"))==null||g.drawImage(o,0,-I*s);let B={px:WebGL2RenderingContext.TEXTURE_CUBE_MAP_POSITIVE_X,nx:WebGL2RenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_X,py:WebGL2RenderingContext.TEXTURE_CUBE_MAP_POSITIVE_Y,ny:WebGL2RenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_Y,pz:WebGL2RenderingContext.TEXTURE_CUBE_MAP_POSITIVE_Z,nz:WebGL2RenderingContext.TEXTURE_CUBE_MAP_NEGATIVE_Z},E={width:s,height:s,channels:3,currentHeight:s,target:B[n[I]],format:WebGL2RenderingContext.RGB,internalFormat:WebGL2RenderingContext.RGB,type:WebGL2RenderingContext.UNSIGNED_BYTE,unpackAlignment:1,minMagFilter:WebGL2RenderingContext.LINEAR,data:C,complete:!0};this.events.updateSkyboxTexture.dispatch(E),a.push(E)}return a})})})}extractCpuPoints(e,A,t){let n=new Uint16Array(e.buffer,16,Math.floor((e.length-16)/2));this.cpuPoints.length||(this.cpuPoints=new Uint16Array(3*this.totalSplats));let i=this.cpuPtsCount;for(let r=i;r>4&511)+(r&3),s=4*(r>>13)+(r>>2&3),a=4*(A*s+o);this.cpuPoints[3*r+0]=n[a+0],this.cpuPoints[3*r+1]=n[a+1],this.cpuPoints[3*r+2]=n[a+2]}this.cpuPtsCount=t,this.events.updateCpuPoints.dispatch({start:i,end:t,cpuPoints:this.cpuPoints})}initWorker(){this.worker=new zF,this.worker.onmessage=this.onWorkerMessage.bind(this)}decodeBlock(e,A,t){var n;(n=this.worker)==null||n.postMessage({type:"decode",data:e,maxSize:A,sd:t,width:Ni,tile:pa},[e.buffer])}onWorkerMessage(e){let A="color: #00ff00",t=e.data;switch(t.type){case"decoded":this.updateCoreBlock(t.size,t.tex1,t.tex2,t.xyz);break;case"ready":console.log("%cDecoder ready.",A);break;case"log":console.log(`%cDecoder: ${t.str}`,A);break;case"error":console.error(`%cDecoder error: ${t.str}`,A);break}}};function sQ(e){let A=new Float32Array(16);for(let t=0;t<4;t++)for(let n=0;n<4;n++)A[n*4+t]=e[t][n];return A}var aQ=new Float32Array([-2,-2,2,-2,2,2,2,2,-2,2,-2,-2]),Fi=new k(-1,-1,1),gQ=!1,jF=class Yf extends Jt{constructor(A={}){gQ||(console.log(`%cLumaSplatsThree git version #${FF.GIT_HASH}`,"color: magenta"),gQ=!0);let t;typeof A=="string"?t={source:A}:t=A;let n=t.enableThreeShaderIntegration??!0,i=new Xu;i.setAttribute("a0",new St(aQ,2)),i.setDrawRange(0,0),i.boundingSphere=new Zr(new k(0,0,0),1);let r=new pF(new Int32Array(0),1,!1,1);r.setUsage(Dl),r.gpuType=GB,r.needsUpdate=!1,i.setAttribute("a1",r);let o=new XF,s=new ZF;super(i,n?o:s),this.boundingBox=new er,this.boundingSphere=new Zr,this.semanticsMask=255,this.preventDraw=!1,this.preventSort=!1,this._source=null,this.onInitialCameraTransform=null,this.onLoad=null,this.onProgress=null,this.splatIndexAttribute=null,this.lumaSplatsWebGL=null,this.addedSkybox=!1,this.instancedQuadGeometry=null,this.dispose=()=>{var l;(l=this.lumaSplatsWebGL)==null||l.dispose(),this.geometry.dispose(),this.material.dispose(),this.skybox.material.dispose(),this.skybox.geometry.dispose()},this._loaderEventListeners=new Array,this.onPointsUpdate=l=>{let u=1/0,Q=1/0,p=1/0,D=-1/0,f=-1/0,y=-1/0,N=l.end-l.start;for(let m=l.start;m0&&(this.boundingBox.expandByPoint(new k(u,Q,p)),this.boundingBox.expandByPoint(new k(D,f,y)),this.boundingBox.getBoundingSphere(this.boundingSphere))},this.placeholderGeometry=i,this._materialThreeShaderIntegration=o,this._materialRaw=s,this.loadingAnimationEnabled=t.loadingAnimationEnabled??!0,this.particleRevealEnabled=t.particleRevealEnabled??!1,this.gaussTextures=[new da(null,-1,-1,TB,En,Or,Ye,Ye,ye,ye,0,st),new da(null,-1,-1,kB,En,Or,Ye,Ye,ye,ye,0,st)],this.gaussTextures[0].internalFormat="RG32UI",this.gaussTextures[0].unpackAlignment=1,this.gaussTextures[0].generateMipmaps=!1,this.gaussTextures[0].needsUpdate=!1,this.gaussTextures[1].internalFormat="RGBA32UI",this.gaussTextures[1].unpackAlignment=1,this.gaussTextures[1].generateMipmaps=!1,this.gaussTextures[0].needsUpdate=!1,this.shTexture=new da(null,-1,-1,"RGB",Io,Or,Ye,Ye,ye,ye,0,st),this.shTexture.internalFormat="RGB16F",this.shTexture.unpackAlignment=1,this.shTexture.generateMipmaps=!1,this.shTexture.needsUpdate=!1,this.semanticsTexture=new da(null,-1,-1,"R",Gn,Or,Ye,Ye,ye,ye,0,st),this.semanticsTexture.internalFormat="R8UI",this.semanticsTexture.unpackAlignment=1,this.semanticsTexture.generateMipmaps=!1,this.semanticsTexture.needsUpdate=!1,this.skyboxTexture=new YB,this._skyboxMaterialThreeShaderIntegration=new $F,this._skyboxMaterialRaw=new AL;let a=new Jn;a.setAttribute("a_pos",new St(new Float32Array(bf),3)),a.setDrawRange(0,36),a.boundingSphere=new Zr(new k(0,0,0),1),a.boundingBox=new er(new k(-1,-1,-1),new k(1,1,1)),this.skybox=new Jt(a,n?this._skyboxMaterialThreeShaderIntegration:this._skyboxMaterialRaw),this.skybox.frustumCulled=!1,this.frustumCulled=!0,t.loader!=null?(this.updateLoader(t.loader),this._source=t.loader.dataset):t.source!=null&&(this.source=t.source);let g=new Ie,I=new k,C=new Ie,B=new Ie,E=new hn,d=new k,h=new k,c=new Jt(new $g,new wF({colorWrite:!1,depthWrite:!1}));c.renderOrder=-1/0,c.frustumCulled=!1,c.scale.setScalar(1),this.add(c),c.onBeforeRender=(l,u,Q)=>{if(!l.capabilities.isWebGL2)throw"LumaSplatsThree requires WebGL2";if(t.onBeforeRender!=null&&t.onBeforeRender(l,u,Q,this),g.copy(this.matrixWorld),g.scale(Fi),C.copy(Q.matrixWorldInverse).multiply(g),B.copy(C).invert(),B.decompose(I,E,h),d.set(0,0,-1).applyQuaternion(E),!this.lumaSplatsWebGL){this.geometry=i;return}!this.preventSort&&this.visible&&this.lumaSplatsWebGL.requestSort(I.toArray(),d.toArray()),this.prepareGLObjects(l),this.lumaSplatsWebGL.tickAnimation(),this.lumaSplatsWebGL.semanticsMask=this.semanticsMask,this.lumaSplatsWebGL.loadingAnimation.enabled=this.loadingAnimationEnabled,this.lumaSplatsWebGL.loadingAnimation.particleRevealEnabled=this.particleRevealEnabled;let p={modelViewMatrix:C,viewPosition:I,projectionMatrix:Q.projectionMatrix,far:Q.far},D={gaussTexture0:this.gaussTextures[0],gaussTexture1:this.gaussTextures[1],shTexture:this.shTexture,semanticsTexture:this.semanticsTexture,skyboxTexture:this.skyboxTexture};if(this.material.updateUniformsAndDefines(this,this.lumaSplatsWebGL,l,u,p,D),this.lumaSplatsWebGL.hasSkyboxTexture){this.skybox.material.updateUniformsAndDefines(this,this.lumaSplatsWebGL,l,u,p,D);let f=(this.semanticsMask&1)!==0;this.skybox.visible=f&&!this.preventDraw}this.instancedQuadGeometry&&(this.preventDraw?(this.instancedQuadGeometry.setDrawRange(0,0),this.instancedQuadGeometry.instanceCount=0):(this.instancedQuadGeometry.instanceCount=this.lumaSplatsWebGL.numSplats-this.lumaSplatsWebGL.sortEnd+this.lumaSplatsWebGL.numVisible,this.instancedQuadGeometry.setDrawRange(0,6))),this.lumaSplatsWebGL.sortAge++}}get source(){return this._source}set source(A){JSON.stringify(A)!==JSON.stringify(this._source)&&(this.updateLoader(A?new VF(A):null),this._source=A)}get enableThreeShaderIntegration(){return this.material===this._materialThreeShaderIntegration}set enableThreeShaderIntegration(A){this.material=A?this._materialThreeShaderIntegration:this._materialRaw,this.skybox.material=A?this._skyboxMaterialThreeShaderIntegration:this._skyboxMaterialRaw}prepareGLObjects(A){let t=this.placeholderGeometry;if(!this.lumaSplatsWebGL){this.geometry=t;return}if(this.lumaSplatsWebGL.syncGpuResources(A.getContext())&&(A.state.activeTexture(WebGL2RenderingContext.TEXTURE0),A.state.unbindTexture(),A.state.activeTexture(WebGL2RenderingContext.TEXTURE1),A.state.unbindTexture(),A.state.activeTexture(WebGL2RenderingContext.TEXTURE2),A.state.unbindTexture(),A.state.activeTexture(WebGL2RenderingContext.TEXTURE3),A.state.unbindTexture()),this.lumaSplatsWebGL.glObjects){if(A.properties.get(this.gaussTextures[0]).__webglTexture=this.lumaSplatsWebGL.glObjects.gaussTextures[0],A.properties.get(this.gaussTextures[1]).__webglTexture=this.lumaSplatsWebGL.glObjects.gaussTextures[1],A.properties.get(this.shTexture).__webglTexture=this.lumaSplatsWebGL.glObjects.shTexture,A.properties.get(this.semanticsTexture).__webglTexture=this.lumaSplatsWebGL.glObjects.semanticsTexture,A.properties.get(this.skyboxTexture).__webglTexture=this.lumaSplatsWebGL.glObjects.skyboxTexture,this.gaussTextures[0].needsUpdate=!1,this.gaussTextures[1].needsUpdate=!1,this.shTexture.needsUpdate=!1,this.semanticsTexture.needsUpdate=!1,this.skyboxTexture.needsUpdate=!1,this.splatIndexAttribute==null){let n=new RF(this.lumaSplatsWebGL.glObjects.indexBuffer1,WebGL2RenderingContext.INT,1,4,this.lumaSplatsWebGL.loader.totalSplats);n.needsUpdate=!0,n.isInstancedBufferAttribute=!0,n.meshPerAttribute=1,this.instancedQuadGeometry=new Xu,this.instancedQuadGeometry.setAttribute("a0",new St(aQ,2)),this.instancedQuadGeometry.setDrawRange(0,6),this.instancedQuadGeometry.setAttribute("a1",n),this.instancedQuadGeometry.boundingBox=this.boundingBox,this.instancedQuadGeometry.boundingSphere=this.boundingSphere,this.splatIndexAttribute=n}this.splatIndexAttribute.buffer=this.lumaSplatsWebGL.glObjects.indexBuffer1}this.geometry=this.instancedQuadGeometry??t}setShaderHooks(A){this._materialRaw.setShaderHooks(A),this._materialThreeShaderIntegration.setShaderHooks(A),this._skyboxMaterialRaw.setShaderHooks(A),this._skyboxMaterialThreeShaderIntegration.setShaderHooks(A)}captureCubemap(A,t=new k,n=.01,i=1e3,r=128){return new Promise((o,s)=>{var C;let a=this;for(;a.parent!=null&&(a=a.parent,!(a instanceof Ya)););let g=a instanceof Ya?a.clone():new Ya;g.environment=null,g.background=null;let I=new Yf({loader:(C=this.lumaSplatsWebGL)==null?void 0:C.loader,enableThreeShaderIntegration:!0,loadingAnimationEnabled:!1});I.preventSort=!0,I.onLoad=()=>{I.prepareGLObjects(A),I.lumaSplatsWebGL.queueSort(t.toArray(),new k(0,0,-1).toArray(),()=>{let B=new Rf(r,{generateMipmaps:!0,minFilter:go}),E=new Mf(n,i,B);E.position.copy(t),g.clear(),g.add(E),g.add(I),E.update(A,g),I.dispose(),o(B.texture)})}})}updateLoader(A){var t;for(let n of this._loaderEventListeners)n.remove();(t=this.lumaSplatsWebGL)==null||t.dispose(),this.lumaSplatsWebGL=null,A&&(this.lumaSplatsWebGL=new KF(A,this),A.metaReady.then(n=>{var g;if(n.initialPose==null)throw"initialPose not provided";let i=new Ie().fromArray(n.initialPose);i=i.premultiply(new Ie().makeScale(Fi.x,Fi.y,Fi.z));let r=i.clone();r=r.premultiply(new Ie().makeScale(-1,-1,-1));let o=new k,s=new hn;r.decompose(new k,s,new k),i.decompose(o,new hn,new k);let a=new Ie().compose(o,s,new k(1,1,1));(g=this.onInitialCameraTransform)==null||g.call(this,a)}),this.lumaSplatsWebGL.events.onLoad.addListener(()=>{var n;(n=this.onLoad)==null||n.call(this,this)}),A.skyboxReady.then(n=>{n&&!this.addedSkybox&&(this.add(this.skybox),this.addedSkybox=!0)}),this.onPointsUpdate({start:0,end:A.cpuPtsCount,cpuPoints:A.cpuPoints}),this._loaderEventListeners=[A.events.updateCpuPoints.addListener(this.onPointsUpdate),A.events.progress.addListener(n=>{var i;(i=this.onProgress)==null||i.call(this,n)})])}},XF=Kf(!0),ZF=Kf(!1);function Kf(e){return class extends(e?fn:Uf){constructor(){let A={s0:new Be(null),s1:new Be(null),s2:new Be(null),s3:new Be(null),view:new Be(new Ie),proj:new Be(new Ie),res2:new Be(new qA),ires2:new Be(new qA),inv_sqrt_scale_to_world:new Be(1),offset:new Be(0),size:new Be(0),zs_aa_ts:new Be(new k),scene_center:new Be(new k),cpos:new Be(new k),load_r:new Be(new qA),reveal_r:new Be(new qA),solid_r:new Be(new qA),debug:new Be(0),ellip:new Be(0),semanticsMask:new Be(255)},t=Sg(yg,Dg,e,!0),n={...t.additionalUniforms,...A};super({glslVersion:t.glslVersion,vertexShader:t.vertexShader,fragmentShader:t.fragmentShader,defines:{},uniforms:n,blending:dl,blendEquation:Ti,blendSrc:af,blendDst:_B,transparent:!0,depthWrite:!1,depthTest:!0,fog:e,side:ct}),this.usingShaderHooks=!1,this.renderDepth=!1,this._viewport=new Pe,this.baseUniforms=A,this.uniforms=n}updateUniformsAndDefines(A,t,n,i,r,o){let s=this.renderDepth,a=(A.semanticsMask!=255||this.usingShaderHooks)&&t.hasSemanticsTexture;this.setDefines({hasSphericalHarmonics:t.hasSphericalHarmonicsTexture,hasSemantics:a,renderDepth:s});let g=this.blending;s?this.blending=Qn:this.blending=dl,this.needsUpdate=this.needsUpdate||g!==this.blending;let I=t.shaderParams;t.glObjects&&(this.uniforms.s0.value=o.gaussTexture0,this.uniforms.s1.value=o.gaussTexture1,!s&&t.hasSphericalHarmonicsTexture&&(this.uniforms.s2.value=o.shTexture),a&&(this.uniforms.s3.value=o.semanticsTexture,this.uniforms.semanticsMask.value=t.semanticsMask),this.uniforms.view.value=r.modelViewMatrix,this.uniforms.proj.value=r.projectionMatrix,e&&this.uniforms.inv_proj&&this.uniforms.inv_proj.value.copy(r.projectionMatrix).invert(),n.getCurrentViewport(this._viewport),this.uniforms.res2.value.set(this._viewport.width/2,this._viewport.height/2),this.uniforms.ires2.value.set(2/this._viewport.width,2/this._viewport.height),this.uniforms.inv_sqrt_scale_to_world.value=1/Math.sqrt(t.loader.scaleToWorld),this.uniforms.offset.value=t.sortEnd,this.uniforms.size.value=t.loader.numSplats,this.uniforms.zs_aa_ts.value.set(r.far,t.loader.antialias,Math.pow(I.tweakScale,2)),this.uniforms.cpos.value.copy(r.viewPosition),this.uniforms.scene_center.value.fromArray(t.loader.sceneCenter),this.uniforms.load_r.value.set(I.loadR2,1/(I.loadR2-I.loadR1)),this.uniforms.reveal_r.value.set(I.revealR2,1/(I.revealR2-I.revealR1)),this.uniforms.solid_r.value.set(I.solidR2,1/(I.solidR2-I.solidR1)),this.uniforms.debug.value=I.debugView,this.uniforms.ellip.value=I.debugView>0?1:0)}setDefines(A){let t=this.defines;A.hasSphericalHarmonics&&t.HAVE_SH==null?(t.HAVE_SH="",this.needsUpdate=!0):!A.hasSphericalHarmonics&&t.HAVE_SH!=null&&(delete t.HAVE_SH,this.needsUpdate=!0),A.renderDepth&&t.RD==null?(t.RD="",this.needsUpdate=!0):!A.renderDepth&&t.RD!=null&&(delete t.RD,this.needsUpdate=!0),A.hasSemantics&&t.HAVE_SEMANTICS==null?(t.HAVE_SEMANTICS="",this.needsUpdate=!0):!A.hasSemantics&&t.HAVE_SEMANTICS!=null&&(delete t.HAVE_SEMANTICS,this.needsUpdate=!0)}setShaderHooks(A){let t=Sg(yg,Dg,e,!0,A);this.vertexShader=t.vertexShader,this.fragmentShader=t.fragmentShader,this.uniforms={...t.additionalUniforms,...this.baseUniforms},this.usingShaderHooks=A.vertexShaderHooks!=null||A.fragmentShaderHooks!=null,this.needsUpdate=!0}}}function Sg(e,A,t,n,i){var h,c,l,u,Q,p,D,f,y,N;let r=t?{vertexShaderHooks:{additionalGlobals:[XA.fog_pars_vertex,XA.clipping_planes_pars_vertex,(h=i==null?void 0:i.vertexShaderHooks)==null?void 0:h.additionalGlobals,(c=i==null?void 0:i.vertexShaderHooks)!=null&&c.onMainEnd?`void _three_onMainEnd${i.vertexShaderHooks.onMainEnd}`:void 0].join(` +`),additionalUniforms:{inv_proj:["mat4",{value:new Ie}],...(l=i==null?void 0:i.vertexShaderHooks)==null?void 0:l.additionalUniforms},getSplatColor:(u=i==null?void 0:i.vertexShaderHooks)==null?void 0:u.getSplatColor,onMainEnd:` + () { + ${n?` + // inverse gl_Position back to view-space, + // rather then just the center we now have + // vertex positions in view-space + vec4 mvPosition = inv_proj * gl_Position; + mvPosition /= mvPosition.w; + `:""} + + #include + #include + ${(Q=i==null?void 0:i.vertexShaderHooks)!=null&&Q.onMainEnd?"_three_onMainEnd()":""}; + } + `,getSplatTransform:(p=i==null?void 0:i.vertexShaderHooks)==null?void 0:p.getSplatTransform},fragmentShaderHooks:{additionalGlobals:[XA.fog_pars_fragment,XA.clipping_planes_pars_fragment,(D=i==null?void 0:i.fragmentShaderHooks)==null?void 0:D.additionalGlobals,(f=i==null?void 0:i.fragmentShaderHooks)!=null&&f.getFragmentColor?`vec4 _three_getFragmentColor${i.fragmentShaderHooks.getFragmentColor}`:void 0].join(` +`),additionalUniforms:{...(y=i==null?void 0:i.fragmentShaderHooks)==null?void 0:y.additionalUniforms},getFragmentColor:` + (vec4 fragColor) { + #include + + fragColor.rgb = pow(fragColor.rgb, vec3(2.2)); + + #define gl_FragColor fragColor + #include + #include + #include + #undef gl_FragColor + return ${(N=i==null?void 0:i.fragmentShaderHooks)!=null&&N.getFragmentColor?"_three_getFragmentColor(fragColor)":"fragColor"}; + } + `}}:i,o=Of(e,A,r),s=t?{...uA.fog}:{},a=r==null?void 0:r.vertexShaderHooks,g=r==null?void 0:r.fragmentShaderHooks;if(a!=null&&a.additionalUniforms)for(let m in a.additionalUniforms)s[m]=a==null?void 0:a.additionalUniforms[m][1];if(g!=null&&g.additionalUniforms)for(let m in g.additionalUniforms)s[m]=g==null?void 0:g.additionalUniforms[m][1];let I=/#version\s+([^\n]+)\n/,C=o.fragmentShader.match(I),B=o.vertexShader.match(I),E=o.vertexShader.replace(I,""),d=o.fragmentShader.replace(I,"");return{glslVersion:((C==null?void 0:C[1])||(B==null?void 0:B[1]))??"300 es",vertexShader:E,fragmentShader:d,additionalUniforms:s}}var $F=Pf(!0),AL=Pf(!1);function Pf(e){return class extends(e?fn:Uf){constructor(){let A={s0:new Be(null),view:new Be(new Ie),proj:new Be(new Ie),radius:new Be(0),origin:new Be(new k),fade:new Be(0)},t=Sg(iQ,rQ,e,!1),n={...t.additionalUniforms,...A};super({glslVersion:t.glslVersion,vertexShader:t.vertexShader,fragmentShader:t.fragmentShader,defines:{mvPosition:"vec3(0.0, 0.0, 1000.0)"},uniforms:n,blending:Qn,transparent:!1,depthWrite:!1,depthTest:!0,fog:e,side:On}),this.baseUniforms=A,this.uniforms=n}updateUniformsAndDefines(A,t,n,i,r,o){if(!t.glObjects)return;this.uniforms.view.value.copy(r.modelViewMatrix),this.uniforms.view.value.setPosition(0,0,0),this.uniforms.proj.value=r.projectionMatrix;let s=t.shaderParams,a=(s.solidR1+s.solidR2)/2,g=t.loader.sceneRadius(),I=g*.9,C=Math.min(Math.max((a-I)/(g-I),0),1);this.uniforms.fade.value=C,this.uniforms.radius.value=t.loader.skybox.distance,this.uniforms.origin.value.fromArray(t.loader.skybox.origin),this.uniforms.s0.value=o.skyboxTexture}setShaderHooks(A){let t=Sg(iQ,rQ,e,!1,A);this.vertexShader=t.vertexShader,this.fragmentShader=t.fragmentShader,this.uniforms={...t.additionalUniforms,...this.baseUniforms},this.needsUpdate=!0}}}function BC(e){let A=(e&31744)>>10,t=e&1023;return(e>>15?-1:1)*(A?A===31?t?NaN:1/0:Math.pow(2,A-15)*(1+t/1024):6103515625e-14*(t/1024))}async function IQ(e){const A=await fetch(e,{credentials:"include"});if(!A.ok)throw new Error(await A.text());return A.json()}function CQ(e){return{x:e%3,y:Math.floor(e/3)}}function eL(){const e=AA.useRef(null),[A,t]=AA.useState(""),[n,i]=AA.useState("");return AA.useEffect(()=>{(async()=>{var r;try{const o=await IQ("/api/maps");(r=o.maps)!=null&&r.length&&t(o.maps[0]._id)}catch(o){i(String(o.message||o))}})()},[]),AA.useEffect(()=>{if(!A)return;const r=e.current;let o,s,a,g,I=0;const C=async()=>{s=new Ya;const E=r.clientWidth,d=r.clientHeight,h=14;a=new PB(-h*E/d,h*E/d,h,-h,.1,2e3),a.position.set(22,22,22),a.lookAt(0,0,0),o=new _f({antialias:!1}),o.setSize(E,d),r.appendChild(o.domElement),g=new NF(a,o.domElement),g.enableDamping=!0,g.target.set(0,0,0),s.add(new MF(16777215,.8));const c=new SF(16777215,.5);c.position.set(10,30,10),s.add(c);const l=6,u=new fo(5.5,.5,5.5),Q=new mF;for(let N=0;N<9;N+=1){const{x:m,y:M}=CQ(N),P=(m-1)*l,X=(M-1)*l,Z=new Jt(u,Q);Z.position.set(P,-.25,X),s.add(Z)}const D=((await IQ(`/api/maps/${A}/state?gridMode=9`)).cells||[]).filter(N=>{var m;return N.status==="filled"&&((m=N.splat)==null?void 0:m.lumaCaptureUrl)&&N.splat.lumaCaptureUrl.trim()});for(const N of D){const{x:m,y:M}=CQ(N.cellIndex),P=(m-1)*l,X=(M-1)*l,Z=new jF({source:N.splat.lumaCaptureUrl.trim(),particleRevealEnabled:!0});Z.position.set(P,.02,X),Z.scale.setScalar(.5),s.add(Z)}const f=()=>{const N=r.clientWidth,m=r.clientHeight;a.left=-h*N/m,a.right=h*N/m,a.top=h,a.bottom=-h,a.updateProjectionMatrix(),o.setSize(N,m)};window.addEventListener("resize",f);const y=()=>{I=requestAnimationFrame(y),g.update(),o.render(s,a)};return y(),()=>window.removeEventListener("resize",f)};let B=null;return C().then(E=>B=E).catch(E=>i(String(E.message||E))),()=>{var E;B&&B(),I&&cancelAnimationFrame(I),o&&(o.dispose(),(E=o.domElement)!=null&&E.parentNode&&o.domElement.parentNode.removeChild(o.domElement))}},[A]),fA.jsxs("div",{style:{width:"100%",height:"100vh",background:"#000",color:"#fff"},children:[fA.jsxs("div",{style:{position:"absolute",top:12,left:12,zIndex:2,fontSize:14,opacity:.9},children:["Drag to orbit. Scroll to zoom.",n?fA.jsx("div",{style:{color:"#ff7777",marginTop:8},children:n}):null]}),fA.jsx("div",{ref:e,style:{width:"100%",height:"100%"}})]})}const tL="591627307861-idhri9haqvo1g4vqfhodahckgp3m6q6t.apps.googleusercontent.com",nL=Tw(Il(fA.jsxs(Mr,{errorElement:fA.jsx(Vy,{}),element:fA.jsx(qy,{}),children:[fA.jsx(Mr,{path:"/",element:fA.jsx(nD,{})}),fA.jsx(Mr,{path:"/login",element:fA.jsx(of,{})}),fA.jsx(Mr,{path:"/maps",element:fA.jsx(gD,{})}),fA.jsx(Mr,{path:"/walk",element:fA.jsx(eL,{})})]})));EC.createRoot(document.getElementById("root")).render(fA.jsx(Xy,{clientId:tL,children:fA.jsx(Ww,{router:nL})})); diff --git a/client/dist/assets/index-58bfc9a9.css b/client/dist/assets/index-58bfc9a9.css new file mode 100644 index 0000000..db9597c --- /dev/null +++ b/client/dist/assets/index-58bfc9a9.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css?family=Roboto&display=swap";:root{--primary: #396dff;--primary--dim: #6987db;--darkgrey: #d4d4d4;--medgrey: #e0e0e0;--grey: #f7f7f7;--white: #fff;--xs: 4px;--s: 8px;--m: 16px;--l: 24px}body{margin:0;padding:0;font-family:Roboto,sans-serif;font-weight:300}form{flex-grow:1}.u-flex{display:flex}.u-flexColumn{display:flex;flex-direction:column}.u-flex-justifyCenter{justify-content:center}.u-flex-alignCenter{align-items:center}.u-inlineBlock{display:inline-block}.u-bold{font-weight:600}.u-textCenter{text-align:center}.u-relative{position:relative}.u-pointer{cursor:pointer}.u-link{color:var(--primary);text-decoration:none;cursor:pointer}.u-link:hover{color:var(--primary--dim)} diff --git a/client/dist/index.html b/client/dist/index.html new file mode 100644 index 0000000..4b9fe2c --- /dev/null +++ b/client/dist/index.html @@ -0,0 +1,16 @@ + + + + + + + + PlaybackXR + + + + +
+ + + diff --git a/client/dist/placeholder.png b/client/dist/placeholder.png new file mode 100644 index 0000000..3cac42e Binary files /dev/null and b/client/dist/placeholder.png differ diff --git a/client/favicon.png b/client/favicon.png index d56b0ae..3cac42e 100644 Binary files a/client/favicon.png and b/client/favicon.png differ diff --git a/client/index.html b/client/index.html index cc078ea..6e736a3 100644 --- a/client/index.html +++ b/client/index.html @@ -1,14 +1,14 @@ - + - CHANGE ME! + PlaybackXR
- \ No newline at end of file + diff --git a/client/public/placeholder.png b/client/public/placeholder.png new file mode 100644 index 0000000..3cac42e Binary files /dev/null and b/client/public/placeholder.png differ diff --git a/client/src/components/pages/Landing.jsx b/client/src/components/pages/Landing.jsx new file mode 100644 index 0000000..0739209 --- /dev/null +++ b/client/src/components/pages/Landing.jsx @@ -0,0 +1,97 @@ +import React from "react"; +import { useNavigate } from "react-router-dom"; +import Login from "./Login"; + +export default function Landing() { + const navigate = useNavigate(); + const YT_ID = "jV_am1GXbGM"; + + return ( +
+ {/* YouTube background */} +
+