hart-estate-widget 2.0.3 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ /*! For license information please see widget.module.js.LICENSE.txt */
2
+ (()=>{var e,t,n={4:(e,t,n)=>{var i=n(431),r={ease:i(.25,.1,.25,1),easeIn:i(.42,0,1,1),easeOut:i(0,0,.58,1),easeInOut:i(.42,0,.58,1),linear:i(0,0,1,1)};function a(){}function o(){var e=new Set,t=new Set,n=0;return{next:i,cancel:i,clearAll:function(){e.clear(),t.clear(),cancelAnimationFrame(n),n=0}};function i(e){t.add(e),n||(n=requestAnimationFrame(r))}function r(){n=0;var i=t;t=e,(e=i).forEach((function(e){e()})),e.clear()}}e.exports=function(e,t,n){var i=Object.create(null),o=Object.create(null),s="function"==typeof(n=n||{}).easing?n.easing:r[n.easing];s||(n.easing&&console.warn("Unknown easing function in amator: "+n.easing),s=r.ease);var l="function"==typeof n.step?n.step:a,c="function"==typeof n.done?n.done:a,u=function(e){if(!e)return"undefined"!=typeof window&&window.requestAnimationFrame?{next:window.requestAnimationFrame.bind(window),cancel:window.cancelAnimationFrame.bind(window)}:{next:function(e){return setTimeout(e,1e3/60)},cancel:function(e){return clearTimeout(e)}};if("function"!=typeof e.next)throw new Error("Scheduler is supposed to have next(cb) function");if("function"!=typeof e.cancel)throw new Error("Scheduler is supposed to have cancel(handle) function");return e}(n.scheduler),h=Object.keys(t);h.forEach((function(n){i[n]=e[n],o[n]=t[n]-e[n]}));var d,p="number"==typeof n.duration?n.duration:400,f=Math.max(1,.06*p),A=0;return d=u.next((function t(){var n=s(A/f);A+=1,function(t){h.forEach((function(n){e[n]=o[n]*t+i[n]}))}(n),A<=f?(d=u.next(t),l(e)):(d=0,setTimeout((function(){c(e)}),0))})),{cancel:function(){u.cancel(d),d=0}}},e.exports.makeAggregateRaf=o,e.exports.sharedScheduler=o()},431:e=>{var t=.1,n="function"==typeof Float32Array;function i(e,t){return 1-3*t+3*e}function r(e,t){return 3*t-6*e}function a(e){return 3*e}function o(e,t,n){return((i(t,n)*e+r(t,n))*e+a(t))*e}function s(e,t,n){return 3*i(t,n)*e*e+2*r(t,n)*e+a(t)}function l(e){return e}e.exports=function(e,i,r,a){if(!(0<=e&&e<=1&&0<=r&&r<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===i&&r===a)return l;for(var c=n?new Float32Array(11):new Array(11),u=0;u<11;++u)c[u]=o(u*t,e,r);return function(n){return 0===n?0:1===n?1:o(function(n){for(var i=0,a=1;10!==a&&c[a]<=n;++a)i+=t;--a;var l=i+(n-c[a])/(c[a+1]-c[a])*t,u=s(l,e,r);return u>=.001?function(e,t,n,i){for(var r=0;r<4;++r){var a=s(t,n,i);if(0===a)return t;t-=(o(t,n,i)-e)/a}return t}(n,l,e,r):0===u?l:function(e,t,n,i,r){var a,s,l=0;do{(a=o(s=t+(n-t)/2,i,r)-e)>0?n=s:t=s}while(Math.abs(a)>1e-7&&++l<10);return s}(n,i,i+t,e,r)}(n),i,a)}}},615:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var i=n(81),r=n.n(i),a=n(645),o=n.n(a),s=n(667),l=n.n(s),c=new URL(n(286),n.b),u=new URL(n(35),n.b),h=o()(r()),d=l()(c),p=l()(u);h.push([e.id,`@font-face{font-family:"Roboto Mono";font-style:normal;font-display:swap;font-weight:100;src:url(${d}) format("woff2"),url(${p}) format("woff")}`,""]);const f=h},500:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var i=n(81),r=n.n(i),a=n(645),o=n.n(a),s=n(667),l=n.n(s),c=new URL(n(801),n.b),u=new URL(n(607),n.b),h=o()(r()),d=l()(c),p=l()(u);h.push([e.id,`@font-face{font-family:"Roboto Mono";font-style:normal;font-display:swap;font-weight:700;src:url(${d}) format("woff2"),url(${p}) format("woff")}`,""]);const f=h},94:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var i=n(81),r=n.n(i),a=n(645),o=n.n(a),s=n(667),l=n.n(s),c=new URL(n(103),n.b),u=new URL(n(308),n.b),h=o()(r()),d=l()(c),p=l()(u);h.push([e.id,`@font-face{font-family:"Roboto Mono";font-style:normal;font-display:swap;font-weight:100;src:url(${d}) format("woff2"),url(${p}) format("woff")}`,""]);const f=h},545:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var i=n(81),r=n.n(i),a=n(645),o=n.n(a),s=n(667),l=n.n(s),c=new URL(n(517),n.b),u=new URL(n(904),n.b),h=o()(r()),d=l()(c),p=l()(u);h.push([e.id,`@font-face{font-family:"Roboto Mono";font-style:normal;font-display:swap;font-weight:700;src:url(${d}) format("woff2"),url(${p}) format("woff")}`,""]);const f=h},273:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var i=n(81),r=n.n(i),a=n(645),o=n.n(a)()(r());o.push([e.id,'.widget-application{--main-color: #FAC62D;--main-text: #413E3E;width:100%;height:100%;flex:none;overflow:hidden;position:relative;z-index:1;background-color:#fff;font-size:20px}.widget-application *,.widget-application *:before,.widget-application *:after{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:"Roboto Mono",monospace;text-decoration:none;font-weight:700;color:#413e3e;outline:none;padding:0;margin:0;box-sizing:border-box;-webkit-box-sizing:border-box}.widget-application .widget-logo{position:absolute;left:45px;top:30px;z-index:3}.widget-application--tablet.widget-application .widget-logo{left:36px;top:39px}.widget-application--mobile.widget-application .widget-logo{left:23px;top:24px}.widget-application--smallMobile.widget-application .widget-logo{left:23px;top:21px}.widget-application .widget-logo img{display:block;width:82px;height:82px;object-fit:contain;object-position:center}.widget-application--tablet.widget-application .widget-logo img{width:58px;height:58px}.widget-application--mobile.widget-application .widget-logo img{width:36px;height:36px}.widget-application--smallMobile.widget-application .widget-logo img{width:28px;height:28px}.widget-application .widget-tab__panorama-close-map{position:absolute;right:45px;top:36px;z-index:3;padding:10px;touch-action:none;ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer}.widget-application--tablet.widget-application .widget-tab__panorama-close-map{right:30px;top:35px}.widget-application--mobile.widget-application .widget-tab__panorama-close-map{padding:5px;right:22px;top:20px}.widget-application .widget-tab__panorama-close-map img{display:block;width:50px;height:50px;object-fit:contain;object-position:center}.widget-application--tablet.widget-application .widget-tab__panorama-close-map img{width:40px;height:40px}.widget-application--mobile.widget-application .widget-tab__panorama-close-map img{width:32px;height:32px}.widget-application--smallMobile.widget-application .widget-tab__panorama-close-map img{width:26px;height:26px}.widget-application .widget-enter-fullscreen{position:absolute;right:45px;top:36px;z-index:3;padding:10px;touch-action:none;ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer}.widget-application--tablet.widget-application .widget-enter-fullscreen{right:30px;top:35px}.widget-application--mobile.widget-application .widget-enter-fullscreen{padding:5px;right:22px;top:20px}.widget-application .widget-enter-fullscreen img{display:block;width:50px;height:50px;object-fit:contain;object-position:center}.widget-application--tablet.widget-application .widget-enter-fullscreen img{width:40px;height:40px}.widget-application--mobile.widget-application .widget-enter-fullscreen img{width:32px;height:32px}.widget-application--smallMobile.widget-application .widget-enter-fullscreen img{width:26px;height:26px}.widget-application .widget-exit-fullscreen{position:absolute;right:45px;top:36px;z-index:3;padding:10px;touch-action:none;ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer}.widget-application--tablet.widget-application .widget-exit-fullscreen{right:30px;top:35px}.widget-application--mobile.widget-application .widget-exit-fullscreen{padding:5px;right:22px;top:20px}.widget-application .widget-exit-fullscreen img{display:block;width:50px;height:50px;object-fit:contain;object-position:center}.widget-application--tablet.widget-application .widget-exit-fullscreen img{width:40px;height:40px}.widget-application--mobile.widget-application .widget-exit-fullscreen img{width:32px;height:32px}.widget-application--smallMobile.widget-application .widget-exit-fullscreen img{width:26px;height:26px}.widget-application .widget-tab-buttons{position:absolute;z-index:3;right:44px;bottom:35px;display:flex;align-items:center;justify-content:flex-end}.widget-application--tablet.widget-application .widget-tab-buttons{right:35px;bottom:35px}.widget-application--mobile.widget-application .widget-tab-buttons{right:22px;bottom:22px}.widget-application--smallMobile.widget-application .widget-tab-buttons{right:20px;bottom:30px}.widget-application .widget-tab-button{ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;width:72px;height:72px;border-radius:50%;display:flex;align-items:center;justify-content:center;background-color:#eaeaea;color:#413e3e;font-size:28px;line-height:120%;font-weight:700;margin-left:40px}.widget-application--tablet.widget-application .widget-tab-button{margin-left:20px;width:60px;height:60px;font-size:22px}.widget-application--mobile.widget-application .widget-tab-button{margin-left:10px;font-size:17px;width:44px;height:44px}.widget-application--smallMobile.widget-application .widget-tab-button{width:36px;height:36px;font-size:14px}.widget-application .widget-tab-button--active{background-color:var(--main-color);color:var(--main-text)}.widget-application .widget-tab{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:60px 30px}.widget-application--smallMobile.widget-application .widget-tab{padding:60px 20px}.widget-application .widget-tab--rotation{padding:0 !important}.widget-application .widget-tab-menu{position:absolute;z-index:3;left:15px;top:15px;max-height:100%;overflow-y:auto;padding-bottom:30px}.widget-application .widget-tab-menu__wallpapers{display:flex;flex-wrap:wrap;align-items:flex-start;margin-top:10px;width:100%}.widget-application .widget-tab-menu__wallpapers img{width:30px;height:30px;display:block;object-fit:cover;cursor:pointer;margin-right:10px;margin-block-end:10px}.widget-application .widget-tab-menu ul{list-style-type:none}.widget-application .widget-tab-menu ul li{color:#413e3e;background-color:var(--main-color);padding:5px 15px;border-radius:10px;font-size:.7rem;border:none;cursor:pointer;margin-bottom:15px;width:200px;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none}.widget-application .widget-tab-menu ul li label{display:flex;cursor:inherit;width:100%}.widget-application .widget-tab-menu ul li input[type=color]{cursor:pointer;margin-left:auto;width:50px;height:20px;border:0;border-radius:5px}.widget-application .widget-tab-menu ul li input[type=color]::-webkit-color-swatch-wrapper{display:none !important}.widget-application .widget-tab-menu ul li input[type=file]{display:none}.widget-application .widget-tab-menu ul li:nth-child(1){position:relative}.widget-application .widget-tab-menu ul li:nth-child(1)::after{--bar-width: 2px;content:"";width:20px;height:15px;display:block;background:repeating-linear-gradient(180deg, #000000, #000000 var(--bar-width), rgba(0, 0, 0, 0) var(--bar-width), rgba(0, 0, 0, 0) calc(var(--bar-width) * 3));position:absolute;right:10px;top:50%;transform:translateY(-50%)}.widget-application .widget-instructions{position:absolute;z-index:2;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-position:center;background-repeat:no-repeat;background-size:cover}.widget-application .widget-instructions__content{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;background-color:rgba(234,234,234,.85);border-radius:20px;overflow:hidden;width:400px;max-width:calc(100% - 60px);padding:36px 30px 30px 30px;backdrop-filter:blur(5px);-moz-backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.widget-application--mobile.widget-application .widget-instructions__content{width:280px;padding:26px 20px 20px 20px}.widget-application .widget-instructions__steps{display:flex;align-items:flex-start;justify-content:center}.widget-application .widget-instructions__step{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;margin:0 15px}.widget-application--tablet.widget-application .widget-instructions__step{margin:0 10px}.widget-application .widget-instructions__step img{display:block;width:52px;height:80px;object-fit:contain;object-position:center}.widget-application--mobile.widget-application .widget-instructions__step img{width:40px;height:60px}.widget-application--smallMobile.widget-application .widget-instructions__step img{width:35px}.widget-application .widget-instructions__step p{color:#413e3e;font-size:20px;font-weight:700;text-align:center;margin-top:10px;max-width:130px}.widget-application--tablet.widget-application .widget-instructions__step p{font-size:18px;max-width:115px}.widget-application--mobile.widget-application .widget-instructions__step p{font-size:16px}.widget-application--smallMobile.widget-application .widget-instructions__step p{font-size:14px}.widget-application .widget-instructions__hint p{color:#413e3e;font-weight:700;text-align:center;margin-top:1.5em;font-size:14px}.widget-application--tablet.widget-application .widget-instructions__hint p{font-size:12px}.widget-application--mobile.widget-application .widget-instructions__hint p{font-size:10px}.widget-application--smallMobile.widget-application .widget-instructions__hint p{font-size:8px}.widget-application .widget-instructions button{ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;display:flex;align-items:center;justify-content:center;height:44px;padding:0 33px;border-radius:52px;background-color:var(--main-color);color:var(--main-text);font-size:24px;font-weight:700;text-transform:uppercase;margin:25px auto 0 auto}.widget-application .widget-instructions button:disabled{opacity:.75;cursor:not-allowed}.widget-application--tablet.widget-application .widget-instructions button{font-size:18px;height:40px}.widget-application--mobile.widget-application .widget-instructions button{font-size:16px;height:35px}.widget-application--smallMobile.widget-application .widget-instructions button{font-size:14px;height:26px;padding:0 25px}.widget-application .widget-tab__panorama{width:100%;height:100%;position:absolute;left:0;top:0;z-index:2}.widget-application .widget-tab__panorama-overlay{width:100%;height:100%;overflow:hidden;background:#fff !important}.widget-application .widget-tab__panorama-overlay *{display:none !important}.widget-application .widget-tab__panorama-overlay canvas{display:block !important}.widget-application .widget-tab__panorama-enter-vr{position:absolute;left:50%;bottom:50px;transform:translateX(-50%);z-index:3;padding:10px 15px;border-radius:10px;border:2px solid #000;background-color:#fff;font-size:16px;font-weight:600;cursor:pointer}.widget-application .widget-tab__panorama-enter-vr:disabled{opacity:.5}.widget-application .widget-tab__panorama-controls{position:absolute;z-index:2;left:50%;bottom:35px;display:flex;align-items:center;justify-content:center;padding:8px;border-radius:38px;background-color:rgba(0,0,0,.2);transform:translateX(-50%);backdrop-filter:blur(5px);-moz-backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.widget-application--mobile.widget-application .widget-tab__panorama-controls{padding:5px;bottom:22px}.widget-application--smallMobile.widget-application .widget-tab__panorama-controls{bottom:30px}.widget-application .widget-tab__panorama-controls-button{ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;width:55px;height:55px;border-radius:50%;background-color:#fff;display:flex;align-items:center;justify-content:center;margin-right:18px}.widget-application--tablet.widget-application .widget-tab__panorama-controls-button{width:44px;height:44px}.widget-application--mobile.widget-application .widget-tab__panorama-controls-button{margin-right:10px;width:33px;height:33px}.widget-application--smallMobile.widget-application .widget-tab__panorama-controls-button{width:26px;height:26px}.widget-application .widget-tab__panorama-controls-button:disabled{background-color:#e6e6e6;cursor:not-allowed}.widget-application .widget-tab__panorama-controls-button:disabled img{filter:invert(100%) saturate(0)}.widget-application .widget-tab__panorama-controls-button img{display:block}.widget-application--tablet.widget-application .widget-tab__panorama-controls-button img{transform:scale(0.7)}.widget-application--mobile.widget-application .widget-tab__panorama-controls-button img{transform:scale(0.52)}.widget-application--smallMobile.widget-application .widget-tab__panorama-controls-button img{transform:scale(0.45)}.widget-application .widget-tab__panorama-controls-button:nth-last-child(1){margin-right:0}.widget-application .widget-tab__panorama-close-map{z-index:4}.widget-application .widget-tab__panorama-map{position:absolute;left:45px;bottom:35px;z-index:3;border-radius:10px;opacity:1;transition:opacity .5s;padding:8px;background-color:#fff;touch-action:none;-webkit-touch-action:none}.widget-application .widget-tab__panorama-map::before{content:"";position:absolute;z-index:-1;left:50%;top:50%;transform:translate(-50%, -50%);width:100%;height:100%;border-radius:inherit;background-color:#fff}.widget-application--tablet.widget-application .widget-tab__panorama-map{left:35px;transform:scale(0.6);transform-origin:0% 100%}.widget-application--mobile.widget-application .widget-tab__panorama-map{left:22px;bottom:22px;transform:scale(0.4)}.widget-application--smallMobile.widget-application .widget-tab__panorama-map{left:20px;bottom:30px;transform:scale(0.35)}.widget-application--tablet.widget-application .widget-tab__panorama-map--scaled{transform:scale(1.4) translate(-50%, 50%);left:50%;bottom:50%}.widget-application--tablet.widget-application .widget-tab__panorama-map--scaled::after{content:"";position:absolute;z-index:-2;left:50%;top:50%;transform:translate(-50%, -50%);width:100vw;height:100vh;background-color:rgba(196,196,196,.8)}.widget-application--tablet.widget-application .widget-tab__panorama-map--scaled svg polygon:active{opacity:.3 !important}.widget-application--mobile.widget-application .widget-tab__panorama-map--scaled{transform:scale(1) translate(-50%, 50%)}.widget-application .widget-tab__panorama-map--hidden{opacity:0;pointer-events:none}.widget-application .widget-tab__panorama-map canvas{width:200px;border-radius:none;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none;-webkit-backface-visibility:hidden;-ms-transform:translateZ(0);-webkit-transform:translateZ(0);transform:translateZ(0)}.widget-application .widget-tab__panorama-map-image{position:absolute;left:0;top:0;z-index:-1;display:none;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none;-webkit-backface-visibility:hidden;-ms-transform:translateZ(0);-webkit-transform:translateZ(0);transform:translateZ(0)}.widget-application .widget-tab__panorama-map svg{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);width:200px;height:calc(100% - 16px);z-index:3;display:block;border-radius:inherit}.widget-application .widget-tab__panorama-map svg polygon{opacity:0;fill:var(--main-color);cursor:pointer}.widget-application .widget-tab__panorama-map svg polygon:hover{opacity:.3}.widget-application .widget-tab__panorama-map__fov{--x: 0;--y: 0;--rotate: 0;position:absolute;left:calc(var(--x) + 8px);top:calc(var(--y) + 8px);width:16px;height:16px;transform:translate(-50%, -50%) rotate(calc(var(--rotate) * 1rad));transform-origin:50% 50%;z-index:4;pointer-events:none}.widget-application .widget-tab__panorama-map__fov-direction{border-radius:50%;border-left:30px solid rgba(0,0,0,0);border-right:30px solid rgba(0,0,0,0);border-bottom:30px solid rgba(0,0,0,0);border-top:40px solid var(--main-color);opacity:.4;position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);z-index:1}.widget-application .widget-tab__panorama-map__fov-dot{position:relative;z-index:5;width:100%;height:100%;background-color:var(--main-color);border-radius:50%;border:2px solid var(--main-color);box-shadow:inset 0 0 0 2px #fff}.widget-application .widget-tab__rotation{width:100%;height:100%}.widget-application .widget-tab__rotation-start{ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;position:absolute;left:50%;bottom:35px;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;padding:0 25px 0 10px;background-color:#eaeaea;border-radius:38px;height:72px;width:202px}.widget-application--tablet.widget-application .widget-tab__rotation-start{height:60px;width:166px;padding:0 20px 0 8px;bottom:35px}.widget-application--mobile.widget-application .widget-tab__rotation-start{height:44px;width:115px;padding:0 10px 0 6px}.widget-application--smallMobile.widget-application .widget-tab__rotation-start{height:36px;width:85px;padding:0 8px 0 6px;bottom:30px}.widget-application .widget-tab__rotation-start-icon{display:flex;align-items:center;justify-content:center;border-radius:50%;background-color:#fff;margin-right:18px;padding:10px}.widget-application--tablet.widget-application .widget-tab__rotation-start-icon{padding:7px;margin-right:15px}.widget-application--mobile.widget-application .widget-tab__rotation-start-icon{margin-right:7px}.widget-application--smallMobile.widget-application .widget-tab__rotation-start-icon{padding:6px;margin-right:5px}.widget-application .widget-tab__rotation-start-icon img{display:block;position:relative;top:2px;width:34px}.widget-application--tablet.widget-application .widget-tab__rotation-start-icon img{width:30px;top:1px}.widget-application--mobile.widget-application .widget-tab__rotation-start-icon img{width:19px;top:0}.widget-application--smallMobile.widget-application .widget-tab__rotation-start-icon img{width:15px}.widget-application .widget-tab__rotation-start span{font-size:24px;font-weight:700;color:#413e3e;text-transform:uppercase;width:100%;display:block;text-align:center;position:relative;top:1px}.widget-application--tablet.widget-application .widget-tab__rotation-start span{font-size:20px}.widget-application--mobile.widget-application .widget-tab__rotation-start span{font-size:14px}.widget-application--smallMobile.widget-application .widget-tab__rotation-start span{font-size:10px;top:0}.widget-application .widget-tab__threesixty,.widget-application .widget-tab__isometry{width:100%;height:100%;touch-action:none;-webkit-touch-action:none}.widget-application .widget-tab__threesixty-container,.widget-application .widget-tab__isometry-container{width:100% !important;height:100% !important;position:relative;background-image:none !important}.widget-application .widget-tab__threesixty-container img,.widget-application .widget-tab__isometry-container img{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);max-width:calc(100% - 60px);max-height:calc(100% - 120px);width:600px;height:600px;object-fit:contain;opacity:0;pointer-events:none;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none}.widget-application .widget-tab__threesixty-container img.active,.widget-application .widget-tab__isometry-container img.active{opacity:1}.widget-application .widget-tab__threesixty--active{cursor:move}.widget-application--smallMobile.widget-application .widget-tab__threesixty-container img{max-width:calc(100% - 40px)}.widget-application--smallMobile.widget-application .widget-tab__isometry-container img{max-width:calc(100% - 40px)}.widget-application .widget-tab__isometry-arrows{position:absolute;z-index:3;left:50%;bottom:35px;transform:translateX(-50%);height:72px;display:flex;align-items:center;justify-content:center}.widget-application--tablet.widget-application .widget-tab__isometry-arrows{bottom:35px;height:60px}.widget-application--mobile.widget-application .widget-tab__isometry-arrows{bottom:22px;height:44px}.widget-application--smallMobile.widget-application .widget-tab__isometry-arrows{bottom:100px;height:36px}.widget-application .widget-tab__isometry-arrows::before{content:"";position:absolute;left:50%;top:50%;width:calc(100% + 30px);height:100%;transform:translate(-50%, -50%);background-color:#eaeaea;z-index:-1;border-radius:60px}.widget-application--tablet.widget-application .widget-tab__isometry-arrows::before{border-radius:32px}.widget-application--mobile.widget-application .widget-tab__isometry-arrows::before{width:calc(100% + 15px);border-radius:30px}.widget-application .widget-tab__isometry-arrows span{font-size:28px;font-weight:700;display:block;margin:0 9px}.widget-application--tablet.widget-application .widget-tab__isometry-arrows span{font-size:22px}.widget-application--mobile.widget-application .widget-tab__isometry-arrows span{font-size:17px;margin:0 3px}.widget-application--smallMobile.widget-application .widget-tab__isometry-arrows span{font-size:14px;margin:0}.widget-application .widget-tab__isometry-arrow{ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:5px}.widget-application .widget-tab__isometry-arrow img{width:32px}.widget-application--tablet.widget-application .widget-tab__isometry-arrow img{width:24px}.widget-application--mobile.widget-application .widget-tab__isometry-arrow img{width:18px}.widget-application--smallMobile.widget-application .widget-tab__isometry-arrow img{width:14px}.widget-application .widget-tab__isometry-buttons{position:absolute;z-index:3;left:44px;bottom:35px;display:flex;align-items:center;justify-content:flex-end}.widget-application--tablet.widget-application .widget-tab__isometry-buttons{left:35px;bottom:35px}.widget-application--mobile.widget-application .widget-tab__isometry-buttons{left:22px;bottom:22px}.widget-application--smallMobile.widget-application .widget-tab__isometry-buttons{left:20px;bottom:30px}.widget-application .widget-tab__isometry-button{ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;width:72px;height:72px;border-radius:50%;display:flex;align-items:center;justify-content:center;background-color:#eaeaea;margin-top:40px}.widget-application--tablet.widget-application .widget-tab__isometry-button{margin-top:20px;width:60px;height:60px}.widget-application--mobile.widget-application .widget-tab__isometry-button{margin-top:10px;width:44px;height:44px}.widget-application--smallMobile.widget-application .widget-tab__isometry-button{width:36px;height:36px}.widget-application .widget-tab__isometry-button img{display:block;width:50px}.widget-application--tablet.widget-application .widget-tab__isometry-button img{width:40px}.widget-application--mobile.widget-application .widget-tab__isometry-button img{width:30px}.widget-application--smallMobile.widget-application .widget-tab__isometry-button img{width:25px}.widget-application .widget-loader{display:block;position:relative;width:80px;height:80px}.widget-application .widget-loader--absolute{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%)}.widget-application .widget-loader--sm{transform:translate(-50%, -50%) scale(0.75)}.widget-application .widget-loader div{position:absolute;top:33px;width:13px;height:13px;border-radius:50%;background:var(--main-color);animation-timing-function:cubic-bezier(0, 1, 1, 0)}.widget-application .widget-loader div:nth-child(1){left:8px;animation:widget-loader-1 .6s infinite}.widget-application .widget-loader div:nth-child(2){left:8px;animation:widget-loader-2 .6s infinite}.widget-application .widget-loader div:nth-child(3){left:32px;animation:widget-loader-2 .6s infinite}.widget-application .widget-loader div:nth-child(4){left:56px;animation:widget-loader-3 .6s infinite}@keyframes widget-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes widget-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes widget-loader-2{0%{transform:translate(0, 0)}100%{transform:translate(24px, 0)}}.widget-application .widget-watermark-button{position:absolute;right:4px;bottom:4px;z-index:1000}.widget-application--tablet.widget-application .widget-watermark-button{right:3px;bottom:2px}.widget-application--mobile.widget-application .widget-watermark-button{right:2px}.widget-application--smallMobile.widget-application .widget-watermark-button{right:13px;bottom:8px}.widget-application .widget-watermark-button a{font-size:18px;line-height:90%;color:#000;opacity:.5}.widget-application--tablet.widget-application .widget-watermark-button a{font-size:15px}.widget-application--mobile.widget-application .widget-watermark-button a{font-size:10px}.widget-application--smallMobile.widget-application .widget-watermark-button a{font-size:9px}.widget-application .widget-watermark-button a span{font-weight:100;font-size:inherit;line-height:90%;color:inherit}.widget-application .floors-select{display:none;position:absolute;top:47px;left:50%;background:none;height:37px;border:none;transform:translateX(-50%);cursor:pointer;white-space:nowrap;overflow-x:visible;border-bottom:1px #413e3e solid;z-index:3}.widget-application--tablet.widget-application .floors-select{height:34px}.widget-application--mobile.widget-application .floors-select{height:32px}.widget-application--smallMobile.widget-application .floors-select{height:30px}.widget-application .floors-select__option{text-align:center;justify-content:center;cursor:pointer;font-size:20px;line-height:132%;font-weight:600;word-spacing:-10px}.widget-application--tablet.widget-application .floors-select__option{font-size:18px;word-spacing:-7px}.widget-application--mobile.widget-application .floors-select__option{font-size:13px;word-spacing:-4px}.widget-application--smallMobile.widget-application .floors-select__option{font-size:10px;word-spacing:-3px}.widget-application .floors-select__control{background:none;border:none;box-shadow:none;justify-content:center;max-height:100%;text-align:center;max-height:100%;border-radius:0;overflow:visible;cursor:pointer;font-size:28px;line-height:132%;word-spacing:-12px}.widget-application--tablet.widget-application .floors-select__control{font-size:22px;word-spacing:-9px}.widget-application--mobile.widget-application .floors-select__control{font-size:17px;word-spacing:-6px}.widget-application--smallMobile.widget-application .floors-select__control{font-size:14px;word-spacing:-5px}.widget-application .floors-select__placeholder{color:#413e3e;text-align:center}.widget-application .floors-select__input{text-align:center;margin:0;padding:0;justify-content:center;color:rgba(0,0,0,0)}.widget-application .floors-select__single-value{color:#413e3e}.widget-application .floors-select__value-container{padding:0;overflow:visible}.widget-application .floors-select:hover{border-bottom:1px #000 solid}.widget-application .floors-select--active{display:block}',""]);const s=o},645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",i=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),i&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),i&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,i,r,a){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(i)for(var s=0;s<this.length;s++){var l=this[s][0];null!=l&&(o[l]=!0)}for(var c=0;c<e.length;c++){var u=[].concat(e[c]);i&&o[u[0]]||(void 0!==a&&(void 0===u[5]||(u[1]="@layer".concat(u[5].length>0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=a),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),r&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=r):u[4]="".concat(r)),t.push(u))}},t}},667:e=>{"use strict";e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e):e}},81:e=>{"use strict";e.exports=function(e){return e[1]}},679:(e,t,n)=>{"use strict";var i=n(864),r={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return i.isMemo(e)?o:s[e.$$typeof]||r}s[i.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[i.Memo]=o;var c=Object.defineProperty,u=Object.getOwnPropertyNames,h=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,f=Object.prototype;e.exports=function e(t,n,i){if("string"!=typeof n){if(f){var r=p(n);r&&r!==f&&e(t,r,i)}var o=u(n);h&&(o=o.concat(h(n)));for(var s=l(t),A=l(n),m=0;m<o.length;++m){var g=o[m];if(!(a[g]||i&&i[g]||A&&A[g]||s&&s[g])){var v=d(n,g);try{c(t,g,v)}catch(e){}}}}return t}},245:e=>{e.exports=function(e){!function(e){if(!e)throw new Error("Eventify cannot use falsy object as events subject");for(var t=["on","fire","off"],n=0;n<t.length;++n)if(e.hasOwnProperty(t[n]))throw new Error("Subject cannot be eventified, since it already has property '"+t[n]+"'")}(e);var t=function(e){var t=Object.create(null);return{on:function(n,i,r){if("function"!=typeof i)throw new Error("callback is expected to be a function");var a=t[n];return a||(a=t[n]=[]),a.push({callback:i,ctx:r}),e},off:function(n,i){if(void 0===n)return t=Object.create(null),e;if(t[n])if("function"!=typeof i)delete t[n];else for(var r=t[n],a=0;a<r.length;++a)r[a].callback===i&&r.splice(a,1);return e},fire:function(n){var i,r=t[n];if(!r)return e;arguments.length>1&&(i=Array.prototype.splice.call(arguments,1));for(var a=0;a<r.length;++a){var o=r[a];o.callback.apply(o.ctx,i)}return e}}}(e);return e.on=t.on,e.off=t.off,e.fire=t.fire,e}},418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach((function(e){i[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(e){return!1}}()?Object.assign:function(e,r){for(var a,o,s=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l<arguments.length;l++){for(var c in a=Object(arguments[l]))n.call(a,c)&&(s[c]=a[c]);if(t){o=t(a);for(var u=0;u<o.length;u++)i.call(a,o[u])&&(s[o[u]]=a[o[u]])}}return s}},874:(e,t,n)=>{"use strict";var i=n(42),r=n(4),a=n(245),o=n(89),s=n(336),l=s(),c=s(!0),u=n(190),h=n(876),d=n(835);function p(e,t){var n=(t=t||{}).controller;if(n||(h.canAttach(e)?n=h(e,t):d.canAttach(e)&&(n=d(e,t))),!n)throw new Error("Cannot create panzoom for the current type of dom element");var s=n.getOwner(),p={x:0,y:0},A=!1,y=new u;n.initTransform&&n.initTransform(y);var b,w="function"==typeof t.filterKey?t.filterKey:m,x="number"==typeof t.pinchSpeed?t.pinchSpeed:1,M=t.bounds,S="number"==typeof t.maxZoom?t.maxZoom:Number.POSITIVE_INFINITY,E="number"==typeof t.minZoom?t.minZoom:0,_="number"==typeof t.boundsPadding?t.boundsPadding:.05,T="number"==typeof t.zoomDoubleClickSpeed?t.zoomDoubleClickSpeed:1.75,C=t.beforeWheel||m,I=t.beforeMouseDown||m,D="number"==typeof t.zoomSpeed?t.zoomSpeed:1,N=f(t.transformOrigin),L=t.enableTextSelection?c:l;!function(e){var t=typeof e;if("undefined"!==t&&"boolean"!==t&&!(g(e.left)&&g(e.top)&&g(e.bottom)&&g(e.right)))throw new Error("Bounds object is not valid. It can be: undefined, boolean (true|false) or an object {left, top, right, bottom}")}(M),t.autocenter&&function(){var e,t,i=0,r=0,a=ae();if(a)i=a.left,r=a.top,e=a.right-a.left,t=a.bottom-a.top;else{var o=s.getBoundingClientRect();e=o.width,t=o.height}var l=n.getBBox();if(0!==l.width&&0!==l.height){var c=t/l.height,u=e/l.width,h=Math.min(u,c);y.x=-(l.left+l.width/2)*h+e/2+i,y.y=-(l.top+l.height/2)*h+t/2+r,y.scale=h}}();var R,O,P,z,k,U,B,F,j,H,V=0,W=0,G=0,Q=null,X=new Date,Y=!1,Z=!1;B="smoothScroll"in t&&!t.smoothScroll?{start:m,stop:m,cancel:m}:o((function(){return{x:y.x,y:y.y}}),(function(e,t){Le(),ne(e,t)}),t.smoothScroll);var q=!1;ue();var K={dispose:function(){he()},moveBy:ce,moveTo:ne,smoothMoveTo:function(e,t){ce(e-y.x,t-y.y,!0)},centerOn:function(e){var t=e.ownerSVGElement;if(!t)throw new Error("ui element is required to be within the scene");var n=e.getBoundingClientRect(),i=n.left+n.width/2,r=n.top+n.height/2,a=t.getBoundingClientRect();ce(a.width/2-i,a.height/2-r,!0)},zoomTo:Ne,zoomAbs:le,smoothZoom:Ie,smoothZoomAbs:function(e,t,n){var i={scale:y.scale},a={scale:n};B.cancel(),Le(),j=r(i,a,{step:function(n){le(e,t,n.scale)}})},showRectangle:function(e){var t=s.getBoundingClientRect(),n=te(t.width,t.height),i=e.right-e.left,r=e.bottom-e.top;if(!Number.isFinite(i)||!Number.isFinite(r))throw new Error("Invalid rectangle");var a=n.x/i,o=n.y/r,l=Math.min(a,o);y.x=-(e.left+i/2)*l+n.x/2,y.y=-(e.top+r/2)*l+n.y/2,y.scale=l},pause:function(){he(),q=!0},resume:function(){q&&(ue(),q=!1)},isPaused:function(){return q},getTransform:function(){return y},getMinZoom:function(){return E},setMinZoom:function(e){E=e},getMaxZoom:function(){return S},setMaxZoom:function(e){S=e},getTransformOrigin:function(){return N},setTransformOrigin:function(e){N=f(e)},getZoomSpeed:function(){return D},setZoomSpeed:function(e){if(!Number.isFinite(e))throw new Error("Zoom speed should be a number");D=e}};a(K);var J="number"==typeof t.initialX?t.initialX:y.x,$="number"==typeof t.initialY?t.initialY:y.y,ee="number"==typeof t.initialZoom?t.initialZoom:y.scale;return J==y.x&&$==y.y&&ee==y.scale||le(J,$,ee),K;function te(e,t){if(n.getScreenCTM){var i=n.getScreenCTM(),r=i.a,a=i.d,o=i.e,s=i.f;p.x=e*r-o,p.y=t*a-s}else p.x=e,p.y=t;return p}function ne(e,t){y.x=e,y.y=t,re(),ke("pan"),oe()}function ie(e,t){ne(y.x+e,y.y+t)}function re(){var e=ae();if(e){var t,i,r,a,o=!1,s=(r=(t=n.getBBox()).left,a=t.top,{left:(i={x:r*y.scale+y.x,y:a*y.scale+y.y}).x,top:i.y,right:t.width*y.scale+i.x,bottom:t.height*y.scale+i.y}),l=e.left-s.right;return l>0&&(y.x+=l,o=!0),(l=e.right-s.left)<0&&(y.x+=l,o=!0),(l=e.top-s.bottom)>0&&(y.y+=l,o=!0),(l=e.bottom-s.top)<0&&(y.y+=l,o=!0),o}}function ae(){if(M){if("boolean"==typeof M){var e=s.getBoundingClientRect(),t=e.width,n=e.height;return{left:t*_,top:n*_,right:t*(1-_),bottom:n*(1-_)}}return M}}function oe(){A=!0,b=window.requestAnimationFrame(de)}function se(e,t,n){if(v(e)||v(t)||v(n))throw new Error("zoom requires valid numbers");var i=y.scale*n;if(i<E){if(y.scale===E)return;n=E/y.scale}if(i>S){if(y.scale===S)return;n=S/y.scale}var r=te(e,t);y.x=r.x-n*(r.x-y.x),y.y=r.y-n*(r.y-y.y),M&&1===_&&1===E?(y.scale*=n,re()):re()||(y.scale*=n),ke("zoom"),oe()}function le(e,t,n){se(e,t,n/y.scale)}function ce(e,t,n){if(!n)return ie(e,t);F&&F.cancel();var i=0,a=0;F=r({x:0,y:0},{x:e,y:t},{step:function(e){ie(e.x-i,e.y-a),i=e.x,a=e.y}})}function ue(){s.addEventListener("mousedown",xe,{passive:!1}),s.addEventListener("dblclick",we,{passive:!1}),s.addEventListener("touchstart",fe,{passive:!1}),s.addEventListener("keydown",pe,{passive:!1}),i.addWheelListener(s,Te,{passive:!1}),oe()}function he(){i.removeWheelListener(s,Te),s.removeEventListener("mousedown",xe),s.removeEventListener("keydown",pe),s.removeEventListener("dblclick",we),s.removeEventListener("touchstart",fe),b&&(window.cancelAnimationFrame(b),b=0),B.cancel(),Ee(),_e(),L.release(),Pe()}function de(){A&&(A=!1,n.applyTransform(y),ke("transform"),b=0)}function pe(e){var t=0,n=0,i=0;if(38===e.keyCode?n=1:40===e.keyCode?n=-1:37===e.keyCode?t=1:39===e.keyCode?t=-1:189===e.keyCode||109===e.keyCode?i=1:187!==e.keyCode&&107!==e.keyCode||(i=-1),!w(e,t,n,i)){if(t||n){e.preventDefault(),e.stopPropagation();var r=s.getBoundingClientRect();ce(.05*(a=Math.min(r.width,r.height))*t,.05*a*n)}if(i){var a,o=Re(100*i);Ne((a=N?De():{x:(l=s.getBoundingClientRect()).width/2,y:l.height/2}).x,a.y,o)}var l}}function fe(e){if(function(e){t.onTouch&&!t.onTouch(e)||(e.stopPropagation(),e.preventDefault())}(e),ge(),1===e.touches.length)return function(e){W=new Date;var t=Ce(e.touches[0]);R=t;var n=te(t.x,t.y);O=n.x,P=n.y,z=O,k=P,B.cancel(),Ae()}(e,e.touches[0]);2===e.touches.length&&(U=be(e.touches[0],e.touches[1]),H=!0,Ae())}function Ae(){Y||(Y=!0,document.addEventListener("touchmove",me),document.addEventListener("touchend",ye),document.addEventListener("touchcancel",ye))}function me(e){if(1===e.touches.length){e.stopPropagation();var t=te((u=Ce(e.touches[0])).x,u.y),n=t.x-O,i=t.y-P;0!==n&&0!==i&&Oe(),O=t.x,P=t.y,ce(n,i)}else if(2===e.touches.length){H=!0;var r=e.touches[0],a=e.touches[1],o=be(r,a),s=1+(o/U-1)*x,l=Ce(r),c=Ce(a);if(O=(l.x+c.x)/2,P=(l.y+c.y)/2,N){var u=De();O=u.x,P=u.y}Ne(O,P,s),U=o,e.stopPropagation(),e.preventDefault()}}function ge(){G&&(clearTimeout(G),G=0)}function ve(e){if(t.onClick){ge();var n=O-z,i=P-k;Math.sqrt(n*n+i*i)>5||(G=setTimeout((function(){G=0,t.onClick(e)}),300))}}function ye(e){if(ge(),e.touches.length>0){var t=te((n=Ce(e.touches[0])).x,n.y);O=t.x,P=t.y}else{var n,i=new Date;i-V<300?N?Ie((n=De()).x,n.y,T):Ie(R.x,R.y,T):i-W<200&&ve(e),V=i,Pe(),_e()}}function be(e,t){var n=e.clientX-t.clientX,i=e.clientY-t.clientY;return Math.sqrt(n*n+i*i)}function we(e){!function(e){ge(),t.onDoubleClick&&!t.onDoubleClick(e)||(e.preventDefault(),e.stopPropagation())}(e);var n=Ce(e);N&&(n=De()),Ie(n.x,n.y,T)}function xe(e){if(ge(),!I(e)){if(Q=e,X=new Date,Y)return e.stopPropagation(),!1;if(1===e.button&&null!==window.event||0===e.button){B.cancel();var t=Ce(e),n=te(t.x,t.y);return z=O=n.x,k=P=n.y,document.addEventListener("mousemove",Me),document.addEventListener("mouseup",Se),L.capture(e.target||e.srcElement),!1}}}function Me(e){if(!Y){Oe();var t=Ce(e),n=te(t.x,t.y),i=n.x-O,r=n.y-P;O=n.x,P=n.y,ce(i,r)}}function Se(){new Date-X<200&&ve(Q),L.release(),Pe(),Ee()}function Ee(){document.removeEventListener("mousemove",Me),document.removeEventListener("mouseup",Se),Z=!1}function _e(){document.removeEventListener("touchmove",me),document.removeEventListener("touchend",ye),document.removeEventListener("touchcancel",ye),Z=!1,H=!1,Y=!1}function Te(e){if(!C(e)){B.cancel();var t=e.deltaY;e.deltaMode>0&&(t*=100);var n=Re(t);if(1!==n){var i=N?De():Ce(e);Ne(i.x,i.y,n),e.preventDefault()}}}function Ce(e){var t=s.getBoundingClientRect();return{x:e.clientX-t.left,y:e.clientY-t.top}}function Ie(e,t,n){var i=y.scale,a={scale:i},o={scale:n*i};B.cancel(),Le(),j=r(a,o,{step:function(n){le(e,t,n.scale)},done:ze})}function De(){var e=s.getBoundingClientRect();return{x:e.width*N.x,y:e.height*N.y}}function Ne(e,t,n){return B.cancel(),Le(),se(e,t,n)}function Le(){j&&(j.cancel(),j=null)}function Re(e){return 1-Math.sign(e)*Math.min(.25,Math.abs(D*e/128))}function Oe(){Z||(ke("panstart"),Z=!0,B.start())}function Pe(){Z&&(H||B.stop(),ke("panend"))}function ze(){ke("zoomend")}function ke(e){K.fire(e,K)}}function f(e){if(e)return"object"==typeof e?(g(e.x)&&g(e.y)||A(e),e):void A()}function A(e){throw console.error(e),new Error(["Cannot parse transform origin.","Some good examples:",' "center center" can be achieved with {x: 0.5, y: 0.5}',' "top center" can be achieved with {x: 0.5, y: 0}',' "bottom right" can be achieved with {x: 1, y: 1}'].join("\n"))}function m(){}function g(e){return Number.isFinite(e)}function v(e){return Number.isNaN?Number.isNaN(e):e!=e}e.exports=p,function(){if("undefined"!=typeof document){var e=document.getElementsByTagName("script");if(e){for(var t,n=0;n<e.length;++n){var i=e[n];if(i.src&&i.src.match(/\bpanzoom(\.min)?\.js/)){t=i;break}}if(t){var r=t.getAttribute("query");if(r){var a=t.getAttribute("name")||"pz",o=Date.now();!function e(){var n=document.querySelector(r);if(!n)return Date.now()-o<2e3?void setTimeout(e,100):void console.error("Cannot find the panzoom element",a);var i=function(e){for(var t=e.attributes,n={},i=0;i<t.length;++i){var r=s(t[i]);r&&(n[r.name]=r.value)}return n}(t);console.log(i),window[a]=p(n,i)}()}}}}function s(e){if(e.name&&"p"===e.name[0]&&"z"===e.name[1]&&"-"===e.name[2])return{name:e.name.substr(3),value:JSON.parse(e.value)}}}()},336:e=>{function t(e){return e.stopPropagation(),!1}function n(){}e.exports=function(e){if(e)return{capture:n,release:n};var i,r,a,o=!1;return{capture:function(e){o=!0,r=window.document.onselectstart,a=window.document.ondragstart,window.document.onselectstart=t,(i=e).ondragstart=t},release:function(){o&&(o=!1,window.document.onselectstart=r,i&&(i.ondragstart=a))}}}},835:e=>{function t(e){return e&&e.parentElement&&e.style}e.exports=function(e,n){if(!t(e))throw new Error("panzoom requires DOM element to be attached to the DOM tree");var i=e.parentElement;return e.scrollTop=0,n.disableKeyboardInteraction||i.setAttribute("tabindex",0),{getBBox:function(){return{left:0,top:0,width:e.clientWidth,height:e.clientHeight}},getOwner:function(){return i},applyTransform:function(t){e.style.transformOrigin="0 0 0",e.style.transform="matrix("+t.scale+", 0, 0, "+t.scale+", "+t.x+", "+t.y+")"}}},e.exports.canAttach=t},89:e=>{function t(){return"function"==typeof cancelAnimationFrame?cancelAnimationFrame:clearTimeout}function n(){return"function"==typeof requestAnimationFrame?requestAnimationFrame:function(e){return setTimeout(e,16)}}e.exports=function(e,i,r){"object"!=typeof r&&(r={});var a,o,s,l,c,u,h,d,p,f,A="number"==typeof r.minVelocity?r.minVelocity:5,m="number"==typeof r.amplitude?r.amplitude:.25,g="function"==typeof r.cancelAnimationFrame?r.cancelAnimationFrame:t(),v="function"==typeof r.requestAnimationFrame?r.requestAnimationFrame:n();return{start:function(){a=e(),u=p=l=h=0,o=new Date,g(s),g(f),s=v(y)},stop:function(){g(s),g(f);var t=e();c=t.x,d=t.y,o=Date.now(),(l<-A||l>A)&&(c+=u=m*l),(h<-A||h>A)&&(d+=p=m*h),f=v(b)},cancel:function(){g(s),g(f)}};function y(){var t=Date.now(),n=t-o;o=t;var i=e(),r=i.x-a.x,c=i.y-a.y;a=i;var u=1e3/(1+n);l=.8*r*u+.2*l,h=.8*c*u+.2*h,s=v(y)}function b(){var e=Date.now()-o,t=!1,n=0,r=0;u&&((n=-u*Math.exp(-e/342))>.5||n<-.5?t=!0:n=u=0),p&&((r=-p*Math.exp(-e/342))>.5||r<-.5?t=!0:r=p=0),t&&(i(c+n,d+r),f=v(b))}}},876:e=>{function t(e){return e&&e.ownerSVGElement&&e.getCTM}e.exports=function(e,n){if(!t(e))throw new Error("svg element is required for svg.panzoom to work");var i=e.ownerSVGElement;if(!i)throw new Error("Do not apply panzoom to the root <svg> element. Use its child instead (e.g. <g></g>). As of March 2016 only FireFox supported transform on the root element");return n.disableKeyboardInteraction||i.setAttribute("tabindex",0),{getBBox:function(){var t=e.getBBox();return{left:t.x,top:t.y,width:t.width,height:t.height}},getScreenCTM:function(){var e=i.getCTM();return e||i.getScreenCTM()},getOwner:function(){return i},applyTransform:function(t){e.setAttribute("transform","matrix("+t.scale+" 0 0 "+t.scale+" "+t.x+" "+t.y+")")},initTransform:function(t){var n=e.getCTM();null===n&&(n=document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGMatrix()),t.x=n.e,t.y=n.f,t.scale=n.a,i.removeAttributeNS(null,"viewBox")}}},e.exports.canAttach=t},190:e=>{e.exports=function(){this.x=0,this.y=0,this.scale=1}},448:(e,t,n)=>{"use strict";var i=n(294),r=n(418),a=n(840);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!i)throw Error(o(227));var s=new Set,l={};function c(e,t){u(e,t),u(e+"Capture",t)}function u(e,t){for(l[e]=t,e=0;e<t.length;e++)s.add(t[e])}var h=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),d=/^[: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]*$/,p=Object.prototype.hasOwnProperty,f={},A={};function m(e,t,n,i,r,a,o){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=i,this.attributeNamespace=r,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=o}var g={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){g[e]=new m(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];g[t]=new m(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){g[e]=new m(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){g[e]=new m(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){g[e]=new m(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){g[e]=new m(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){g[e]=new m(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){g[e]=new m(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){g[e]=new m(e,5,!1,e.toLowerCase(),null,!1,!1)}));var v=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function b(e,t,n,i){var r=g.hasOwnProperty(t)?g[t]:null;(null!==r?0===r.type:!i&&2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1]))||(function(e,t,n,i){if(null==t||function(e,t,n,i){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!i&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,i))return!0;if(i)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,r,i)&&(n=null),i||null===r?function(e){return!!p.call(A,e)||!p.call(f,e)&&(d.test(e)?A[e]=!0:(f[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):r.mustUseProperty?e[r.propertyName]=null===n?3!==r.type&&"":n:(t=r.attributeName,i=r.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(r=r.type)||4===r&&!0===n?"":""+n,i?e.setAttributeNS(i,t,n):e.setAttribute(t,n))))}"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 t=e.replace(v,y);g[t]=new m(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(v,y);g[t]=new m(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(v,y);g[t]=new m(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){g[e]=new m(e,1,!1,e.toLowerCase(),null,!1,!1)})),g.xlinkHref=new m("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){g[e]=new m(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,x=60103,M=60106,S=60107,E=60108,_=60114,T=60109,C=60110,I=60112,D=60113,N=60120,L=60115,R=60116,O=60121,P=60128,z=60129,k=60130,U=60131;if("function"==typeof Symbol&&Symbol.for){var B=Symbol.for;x=B("react.element"),M=B("react.portal"),S=B("react.fragment"),E=B("react.strict_mode"),_=B("react.profiler"),T=B("react.provider"),C=B("react.context"),I=B("react.forward_ref"),D=B("react.suspense"),N=B("react.suspense_list"),L=B("react.memo"),R=B("react.lazy"),O=B("react.block"),B("react.scope"),P=B("react.opaque.id"),z=B("react.debug_trace_mode"),k=B("react.offscreen"),U=B("react.legacy_hidden")}var F,j="function"==typeof Symbol&&Symbol.iterator;function H(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=j&&e[j]||e["@@iterator"])?e:null}function V(e){if(void 0===F)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);F=t&&t[1]||""}return"\n"+F+e}var W=!1;function G(e,t){if(!e||W)return"";W=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(e){var i=e}Reflect.construct(e,[],t)}else{try{t.call()}catch(e){i=e}e.call(t.prototype)}else{try{throw Error()}catch(e){i=e}e()}}catch(e){if(e&&i&&"string"==typeof e.stack){for(var r=e.stack.split("\n"),a=i.stack.split("\n"),o=r.length-1,s=a.length-1;1<=o&&0<=s&&r[o]!==a[s];)s--;for(;1<=o&&0<=s;o--,s--)if(r[o]!==a[s]){if(1!==o||1!==s)do{if(o--,0>--s||r[o]!==a[s])return"\n"+r[o].replace(" at new "," at ")}while(1<=o&&0<=s);break}}}finally{W=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?V(e):""}function Q(e){switch(e.tag){case 5:return V(e.type);case 16:return V("Lazy");case 13:return V("Suspense");case 19:return V("SuspenseList");case 0:case 2:case 15:return G(e.type,!1);case 11:return G(e.type.render,!1);case 22:return G(e.type._render,!1);case 1:return G(e.type,!0);default:return""}}function X(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case S:return"Fragment";case M:return"Portal";case _:return"Profiler";case E:return"StrictMode";case D:return"Suspense";case N:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case C:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case I:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case L:return X(e.type);case O:return X(e._render);case R:t=e._payload,e=e._init;try{return X(e(t))}catch(e){}}return null}function Y(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Z(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function q(e){e._valueTracker||(e._valueTracker=function(e){var t=Z(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),i=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var r=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return r.call(this)},set:function(e){i=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return i},setValue:function(e){i=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function K(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),i="";return e&&(i=Z(e)?e.checked?"true":"false":e.value),(e=i)!==n&&(t.setValue(e),!0)}function J(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function $(e,t){var n=t.checked;return r({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,i=null!=t.checked?t.checked:t.defaultChecked;n=Y(null!=t.value?t.value:n),e._wrapperState={initialChecked:i,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&b(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=Y(t.value),i=t.type;if(null!=n)"number"===i?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===i||"reset"===i)return void e.removeAttribute("value");t.hasOwnProperty("value")?re(e,t.type,n):t.hasOwnProperty("defaultValue")&&re(e,t.type,Y(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function ie(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var i=t.type;if(!("submit"!==i&&"reset"!==i||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function re(e,t,n){"number"===t&&J(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function ae(e,t){return e=r({children:void 0},t),(t=function(e){var t="";return i.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function oe(e,t,n,i){if(e=e.options,t){t={};for(var r=0;r<n.length;r++)t["$"+n[r]]=!0;for(n=0;n<e.length;n++)r=t.hasOwnProperty("$"+e[n].value),e[n].selected!==r&&(e[n].selected=r),r&&i&&(e[n].defaultSelected=!0)}else{for(n=""+Y(n),t=null,r=0;r<e.length;r++){if(e[r].value===n)return e[r].selected=!0,void(i&&(e[r].defaultSelected=!0));null!==t||e[r].disabled||(t=e[r])}null!==t&&(t.selected=!0)}}function se(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(o(91));return r({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function le(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(o(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(o(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:Y(n)}}function ce(e,t){var n=Y(t.value),i=Y(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=i&&(e.defaultValue=""+i)}function ue(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var he={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function de(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function pe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?de(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var fe,Ae,me=(Ae=function(e,t){if(e.namespaceURI!==he.svg||"innerHTML"in e)e.innerHTML=t;else{for((fe=fe||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=fe.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,i){MSApp.execUnsafeLocalFunction((function(){return Ae(e,t)}))}:Ae);function ge(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var ve={animationIterationCount:!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},ye=["Webkit","ms","Moz","O"];function be(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||ve.hasOwnProperty(e)&&ve[e]?(""+t).trim():t+"px"}function we(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var i=0===n.indexOf("--"),r=be(n,t[n],i);"float"===n&&(n="cssFloat"),i?e.setProperty(n,r):e[n]=r}}Object.keys(ve).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ve[t]=ve[e]}))}));var xe=r({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 Me(e,t){if(t){if(xe[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(o(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(o(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(o(62))}}function Se(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;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}}function Ee(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var _e=null,Te=null,Ce=null;function Ie(e){if(e=nr(e)){if("function"!=typeof _e)throw Error(o(280));var t=e.stateNode;t&&(t=rr(t),_e(e.stateNode,e.type,t))}}function De(e){Te?Ce?Ce.push(e):Ce=[e]:Te=e}function Ne(){if(Te){var e=Te,t=Ce;if(Ce=Te=null,Ie(e),t)for(e=0;e<t.length;e++)Ie(t[e])}}function Le(e,t){return e(t)}function Re(e,t,n,i,r){return e(t,n,i,r)}function Oe(){}var Pe=Le,ze=!1,ke=!1;function Ue(){null===Te&&null===Ce||(Oe(),Ne())}function Be(e,t){var n=e.stateNode;if(null===n)return null;var i=rr(n);if(null===i)return null;n=i[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(i=!i.disabled)||(i=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!i;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(o(231,t,typeof n));return n}var Fe=!1;if(h)try{var je={};Object.defineProperty(je,"passive",{get:function(){Fe=!0}}),window.addEventListener("test",je,je),window.removeEventListener("test",je,je)}catch(Ae){Fe=!1}function He(e,t,n,i,r,a,o,s,l){var c=Array.prototype.slice.call(arguments,3);try{t.apply(n,c)}catch(e){this.onError(e)}}var Ve=!1,We=null,Ge=!1,Qe=null,Xe={onError:function(e){Ve=!0,We=e}};function Ye(e,t,n,i,r,a,o,s,l){Ve=!1,We=null,He.apply(Xe,arguments)}function Ze(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function qe(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&null!==(e=e.alternate)&&(t=e.memoizedState),null!==t)return t.dehydrated}return null}function Ke(e){if(Ze(e)!==e)throw Error(o(188))}function Je(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ze(e)))throw Error(o(188));return t!==e?null:e}for(var n=e,i=t;;){var r=n.return;if(null===r)break;var a=r.alternate;if(null===a){if(null!==(i=r.return)){n=i;continue}break}if(r.child===a.child){for(a=r.child;a;){if(a===n)return Ke(r),e;if(a===i)return Ke(r),t;a=a.sibling}throw Error(o(188))}if(n.return!==i.return)n=r,i=a;else{for(var s=!1,l=r.child;l;){if(l===n){s=!0,n=r,i=a;break}if(l===i){s=!0,i=r,n=a;break}l=l.sibling}if(!s){for(l=a.child;l;){if(l===n){s=!0,n=a,i=r;break}if(l===i){s=!0,i=a,n=r;break}l=l.sibling}if(!s)throw Error(o(189))}}if(n.alternate!==i)throw Error(o(190))}if(3!==n.tag)throw Error(o(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function $e(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,it,rt=!1,at=[],ot=null,st=null,lt=null,ct=new Map,ut=new Map,ht=[],dt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function pt(e,t,n,i,r){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:r,targetContainers:[i]}}function ft(e,t){switch(e){case"focusin":case"focusout":ot=null;break;case"dragenter":case"dragleave":st=null;break;case"mouseover":case"mouseout":lt=null;break;case"pointerover":case"pointerout":ct.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ut.delete(t.pointerId)}}function At(e,t,n,i,r,a){return null===e||e.nativeEvent!==a?(e=pt(t,n,i,r,a),null!==t&&null!==(t=nr(t))&&tt(t),e):(e.eventSystemFlags|=i,t=e.targetContainers,null!==r&&-1===t.indexOf(r)&&t.push(r),e)}function mt(e){var t=tr(e.target);if(null!==t){var n=Ze(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=qe(n)))return e.blockedOn=t,void it(e.lanePriority,(function(){a.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function gt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Jt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=nr(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function vt(e,t,n){gt(e)&&n.delete(t)}function yt(){for(rt=!1;0<at.length;){var e=at[0];if(null!==e.blockedOn){null!==(e=nr(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Jt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&at.shift()}null!==ot&&gt(ot)&&(ot=null),null!==st&&gt(st)&&(st=null),null!==lt&&gt(lt)&&(lt=null),ct.forEach(vt),ut.forEach(vt)}function bt(e,t){e.blockedOn===t&&(e.blockedOn=null,rt||(rt=!0,a.unstable_scheduleCallback(a.unstable_NormalPriority,yt)))}function wt(e){function t(t){return bt(t,e)}if(0<at.length){bt(at[0],e);for(var n=1;n<at.length;n++){var i=at[n];i.blockedOn===e&&(i.blockedOn=null)}}for(null!==ot&&bt(ot,e),null!==st&&bt(st,e),null!==lt&&bt(lt,e),ct.forEach(t),ut.forEach(t),n=0;n<ht.length;n++)(i=ht[n]).blockedOn===e&&(i.blockedOn=null);for(;0<ht.length&&null===(n=ht[0]).blockedOn;)mt(n),null===n.blockedOn&&ht.shift()}function xt(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var Mt={animationend:xt("Animation","AnimationEnd"),animationiteration:xt("Animation","AnimationIteration"),animationstart:xt("Animation","AnimationStart"),transitionend:xt("Transition","TransitionEnd")},St={},Et={};function _t(e){if(St[e])return St[e];if(!Mt[e])return e;var t,n=Mt[e];for(t in n)if(n.hasOwnProperty(t)&&t in Et)return St[e]=n[t];return e}h&&(Et=document.createElement("div").style,"AnimationEvent"in window||(delete Mt.animationend.animation,delete Mt.animationiteration.animation,delete Mt.animationstart.animation),"TransitionEvent"in window||delete Mt.transitionend.transition);var Tt=_t("animationend"),Ct=_t("animationiteration"),It=_t("animationstart"),Dt=_t("transitionend"),Nt=new Map,Lt=new Map,Rt=["abort","abort",Tt,"animationEnd",Ct,"animationIteration",It,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Dt,"transitionEnd","waiting","waiting"];function Ot(e,t){for(var n=0;n<e.length;n+=2){var i=e[n],r=e[n+1];r="on"+(r[0].toUpperCase()+r.slice(1)),Lt.set(i,t),Nt.set(i,r),c(r,[i])}}(0,a.unstable_now)();var Pt=8;function zt(e){if(0!=(1&e))return Pt=15,1;if(0!=(2&e))return Pt=14,2;if(0!=(4&e))return Pt=13,4;var t=24&e;return 0!==t?(Pt=12,t):0!=(32&e)?(Pt=11,32):0!=(t=192&e)?(Pt=10,t):0!=(256&e)?(Pt=9,256):0!=(t=3584&e)?(Pt=8,t):0!=(4096&e)?(Pt=7,4096):0!=(t=4186112&e)?(Pt=6,t):0!=(t=62914560&e)?(Pt=5,t):67108864&e?(Pt=4,67108864):0!=(134217728&e)?(Pt=3,134217728):0!=(t=805306368&e)?(Pt=2,t):0!=(1073741824&e)?(Pt=1,1073741824):(Pt=8,e)}function kt(e,t){var n=e.pendingLanes;if(0===n)return Pt=0;var i=0,r=0,a=e.expiredLanes,o=e.suspendedLanes,s=e.pingedLanes;if(0!==a)i=a,r=Pt=15;else if(0!=(a=134217727&n)){var l=a&~o;0!==l?(i=zt(l),r=Pt):0!=(s&=a)&&(i=zt(s),r=Pt)}else 0!=(a=n&~o)?(i=zt(a),r=Pt):0!==s&&(i=zt(s),r=Pt);if(0===i)return 0;if(i=n&((0>(i=31-Vt(i))?0:1<<i)<<1)-1,0!==t&&t!==i&&0==(t&o)){if(zt(t),r<=Pt)return t;Pt=r}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=i;0<t;)r=1<<(n=31-Vt(t)),i|=e[n],t&=~r;return i}function Ut(e){return 0!=(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function Bt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=Ft(24&~t))?Bt(10,t):e;case 10:return 0===(e=Ft(192&~t))?Bt(8,t):e;case 8:return 0===(e=Ft(3584&~t))&&0===(e=Ft(4186112&~t))&&(e=512),e;case 2:return 0===(t=Ft(805306368&~t))&&(t=268435456),t}throw Error(o(358,e))}function Ft(e){return e&-e}function jt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ht(e,t,n){e.pendingLanes|=t;var i=t-1;e.suspendedLanes&=i,e.pingedLanes&=i,(e=e.eventTimes)[t=31-Vt(t)]=n}var Vt=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Wt(e)/Gt|0)|0},Wt=Math.log,Gt=Math.LN2,Qt=a.unstable_UserBlockingPriority,Xt=a.unstable_runWithPriority,Yt=!0;function Zt(e,t,n,i){ze||Oe();var r=Kt,a=ze;ze=!0;try{Re(r,e,t,n,i)}finally{(ze=a)||Ue()}}function qt(e,t,n,i){Xt(Qt,Kt.bind(null,e,t,n,i))}function Kt(e,t,n,i){var r;if(Yt)if((r=0==(4&t))&&0<at.length&&-1<dt.indexOf(e))e=pt(null,e,t,n,i),at.push(e);else{var a=Jt(e,t,n,i);if(null===a)r&&ft(e,i);else{if(r){if(-1<dt.indexOf(e))return e=pt(a,e,t,n,i),void at.push(e);if(function(e,t,n,i,r){switch(t){case"focusin":return ot=At(ot,e,t,n,i,r),!0;case"dragenter":return st=At(st,e,t,n,i,r),!0;case"mouseover":return lt=At(lt,e,t,n,i,r),!0;case"pointerover":var a=r.pointerId;return ct.set(a,At(ct.get(a)||null,e,t,n,i,r)),!0;case"gotpointercapture":return a=r.pointerId,ut.set(a,At(ut.get(a)||null,e,t,n,i,r)),!0}return!1}(a,e,t,n,i))return;ft(e,i)}Oi(e,t,i,null,n)}}}function Jt(e,t,n,i){var r=Ee(i);if(null!==(r=tr(r))){var a=Ze(r);if(null===a)r=null;else{var o=a.tag;if(13===o){if(null!==(r=qe(a)))return r;r=null}else if(3===o){if(a.stateNode.hydrate)return 3===a.tag?a.stateNode.containerInfo:null;r=null}else a!==r&&(r=null)}}return Oi(e,t,i,r,n),null}var $t=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,i=n.length,r="value"in $t?$t.value:$t.textContent,a=r.length;for(e=0;e<i&&n[e]===r[e];e++);var o=i-e;for(t=1;t<=o&&n[i-t]===r[a-t];t++);return tn=r.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function on(){return!1}function sn(e){function t(t,n,i,r,a){for(var o in this._reactName=t,this._targetInst=i,this.type=n,this.nativeEvent=r,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(o)&&(t=e[o],this[o]=t?t(r):r[o]);return this.isDefaultPrevented=(null!=r.defaultPrevented?r.defaultPrevented:!1===r.returnValue)?an:on,this.isPropagationStopped=on,this}return r(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var ln,cn,un,hn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},dn=sn(hn),pn=r({},hn,{view:0,detail:0}),fn=sn(pn),An=r({},pn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Tn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==un&&(un&&"mousemove"===e.type?(ln=e.screenX-un.screenX,cn=e.screenY-un.screenY):cn=ln=0,un=e),ln)},movementY:function(e){return"movementY"in e?e.movementY:cn}}),mn=sn(An),gn=sn(r({},An,{dataTransfer:0})),vn=sn(r({},pn,{relatedTarget:0})),yn=sn(r({},hn,{animationName:0,elapsedTime:0,pseudoElement:0})),bn=r({},hn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),wn=sn(bn),xn=sn(r({},hn,{data:0})),Mn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Sn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},En={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function _n(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=En[e])&&!!t[e]}function Tn(){return _n}var Cn=r({},pn,{key:function(e){if(e.key){var t=Mn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?Sn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Tn,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),In=sn(Cn),Dn=sn(r({},An,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Nn=sn(r({},pn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Tn})),Ln=sn(r({},hn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Rn=r({},An,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),On=sn(Rn),Pn=[9,13,27,32],zn=h&&"CompositionEvent"in window,kn=null;h&&"documentMode"in document&&(kn=document.documentMode);var Un=h&&"TextEvent"in window&&!kn,Bn=h&&(!zn||kn&&8<kn&&11>=kn),Fn=String.fromCharCode(32),jn=!1;function Hn(e,t){switch(e){case"keyup":return-1!==Pn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Vn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Wn=!1,Gn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Qn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Gn[e.type]:"textarea"===t}function Xn(e,t,n,i){De(i),0<(t=zi(t,"onChange")).length&&(n=new dn("onChange","change",null,n,i),e.push({event:n,listeners:t}))}var Yn=null,Zn=null;function qn(e){Ci(e,0)}function Kn(e){if(K(ir(e)))return e}function Jn(e,t){if("change"===e)return t}var $n=!1;if(h){var ei;if(h){var ti="oninput"in document;if(!ti){var ni=document.createElement("div");ni.setAttribute("oninput","return;"),ti="function"==typeof ni.oninput}ei=ti}else ei=!1;$n=ei&&(!document.documentMode||9<document.documentMode)}function ii(){Yn&&(Yn.detachEvent("onpropertychange",ri),Zn=Yn=null)}function ri(e){if("value"===e.propertyName&&Kn(Zn)){var t=[];if(Xn(t,Zn,e,Ee(e)),e=qn,ze)e(t);else{ze=!0;try{Le(e,t)}finally{ze=!1,Ue()}}}}function ai(e,t,n){"focusin"===e?(ii(),Zn=n,(Yn=t).attachEvent("onpropertychange",ri)):"focusout"===e&&ii()}function oi(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Kn(Zn)}function si(e,t){if("click"===e)return Kn(t)}function li(e,t){if("input"===e||"change"===e)return Kn(t)}var ci="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},ui=Object.prototype.hasOwnProperty;function hi(e,t){if(ci(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(i=0;i<n.length;i++)if(!ui.call(t,n[i])||!ci(e[n[i]],t[n[i]]))return!1;return!0}function di(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function pi(e,t){var n,i=di(e);for(e=0;i;){if(3===i.nodeType){if(n=e+i.textContent.length,e<=t&&n>=t)return{node:i,offset:t-e};e=n}e:{for(;i;){if(i.nextSibling){i=i.nextSibling;break e}i=i.parentNode}i=void 0}i=di(i)}}function fi(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?fi(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function Ai(){for(var e=window,t=J();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=J((e=t.contentWindow).document)}return t}function mi(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var gi=h&&"documentMode"in document&&11>=document.documentMode,vi=null,yi=null,bi=null,wi=!1;function xi(e,t,n){var i=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;wi||null==vi||vi!==J(i)||(i="selectionStart"in(i=vi)&&mi(i)?{start:i.selectionStart,end:i.selectionEnd}:{anchorNode:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset},bi&&hi(bi,i)||(bi=i,0<(i=zi(yi,"onSelect")).length&&(t=new dn("onSelect","select",null,t,n),e.push({event:t,listeners:i}),t.target=vi)))}Ot("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Ot("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Ot(Rt,2);for(var Mi="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),Si=0;Si<Mi.length;Si++)Lt.set(Mi[Si],0);u("onMouseEnter",["mouseout","mouseover"]),u("onMouseLeave",["mouseout","mouseover"]),u("onPointerEnter",["pointerout","pointerover"]),u("onPointerLeave",["pointerout","pointerover"]),c("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),c("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),c("onBeforeInput",["compositionend","keypress","textInput","paste"]),c("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),c("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Ei="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),_i=new Set("cancel close invalid load scroll toggle".split(" ").concat(Ei));function Ti(e,t,n){var i=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,i,r,a,s,l,c){if(Ye.apply(this,arguments),Ve){if(!Ve)throw Error(o(198));var u=We;Ve=!1,We=null,Ge||(Ge=!0,Qe=u)}}(i,t,void 0,e),e.currentTarget=null}function Ci(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var i=e[n],r=i.event;i=i.listeners;e:{var a=void 0;if(t)for(var o=i.length-1;0<=o;o--){var s=i[o],l=s.instance,c=s.currentTarget;if(s=s.listener,l!==a&&r.isPropagationStopped())break e;Ti(r,s,c),a=l}else for(o=0;o<i.length;o++){if(l=(s=i[o]).instance,c=s.currentTarget,s=s.listener,l!==a&&r.isPropagationStopped())break e;Ti(r,s,c),a=l}}}if(Ge)throw e=Qe,Ge=!1,Qe=null,e}function Ii(e,t){var n=ar(t),i=e+"__bubble";n.has(i)||(Ri(t,e,2,!1),n.add(i))}var Di="_reactListening"+Math.random().toString(36).slice(2);function Ni(e){e[Di]||(e[Di]=!0,s.forEach((function(t){_i.has(t)||Li(t,!1,e,null),Li(t,!0,e,null)})))}function Li(e,t,n,i){var r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,a=n;if("selectionchange"===e&&9!==n.nodeType&&(a=n.ownerDocument),null!==i&&!t&&_i.has(e)){if("scroll"!==e)return;r|=2,a=i}var o=ar(a),s=e+"__"+(t?"capture":"bubble");o.has(s)||(t&&(r|=4),Ri(a,e,r,t),o.add(s))}function Ri(e,t,n,i){var r=Lt.get(t);switch(void 0===r?2:r){case 0:r=Zt;break;case 1:r=qt;break;default:r=Kt}n=r.bind(null,t,n,e),r=void 0,!Fe||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(r=!0),i?void 0!==r?e.addEventListener(t,n,{capture:!0,passive:r}):e.addEventListener(t,n,!0):void 0!==r?e.addEventListener(t,n,{passive:r}):e.addEventListener(t,n,!1)}function Oi(e,t,n,i,r){var a=i;if(0==(1&t)&&0==(2&t)&&null!==i)e:for(;;){if(null===i)return;var o=i.tag;if(3===o||4===o){var s=i.stateNode.containerInfo;if(s===r||8===s.nodeType&&s.parentNode===r)break;if(4===o)for(o=i.return;null!==o;){var l=o.tag;if((3===l||4===l)&&((l=o.stateNode.containerInfo)===r||8===l.nodeType&&l.parentNode===r))return;o=o.return}for(;null!==s;){if(null===(o=tr(s)))return;if(5===(l=o.tag)||6===l){i=a=o;continue e}s=s.parentNode}}i=i.return}!function(e,t,n){if(ke)return e();ke=!0;try{return Pe(e,t,n)}finally{ke=!1,Ue()}}((function(){var i=a,r=Ee(n),o=[];e:{var s=Nt.get(e);if(void 0!==s){var l=dn,c=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":l=In;break;case"focusin":c="focus",l=vn;break;case"focusout":c="blur",l=vn;break;case"beforeblur":case"afterblur":l=vn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":l=mn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":l=gn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":l=Nn;break;case Tt:case Ct:case It:l=yn;break;case Dt:l=Ln;break;case"scroll":l=fn;break;case"wheel":l=On;break;case"copy":case"cut":case"paste":l=wn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":l=Dn}var u=0!=(4&t),h=!u&&"scroll"===e,d=u?null!==s?s+"Capture":null:s;u=[];for(var p,f=i;null!==f;){var A=(p=f).stateNode;if(5===p.tag&&null!==A&&(p=A,null!==d&&null!=(A=Be(f,d))&&u.push(Pi(f,A,p))),h)break;f=f.return}0<u.length&&(s=new l(s,c,null,n,r),o.push({event:s,listeners:u}))}}if(0==(7&t)){if(l="mouseout"===e||"pointerout"===e,(!(s="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(c=n.relatedTarget||n.fromElement)||!tr(c)&&!c[$i])&&(l||s)&&(s=r.window===r?r:(s=r.ownerDocument)?s.defaultView||s.parentWindow:window,l?(l=i,null!==(c=(c=n.relatedTarget||n.toElement)?tr(c):null)&&(c!==(h=Ze(c))||5!==c.tag&&6!==c.tag)&&(c=null)):(l=null,c=i),l!==c)){if(u=mn,A="onMouseLeave",d="onMouseEnter",f="mouse","pointerout"!==e&&"pointerover"!==e||(u=Dn,A="onPointerLeave",d="onPointerEnter",f="pointer"),h=null==l?s:ir(l),p=null==c?s:ir(c),(s=new u(A,f+"leave",l,n,r)).target=h,s.relatedTarget=p,A=null,tr(r)===i&&((u=new u(d,f+"enter",c,n,r)).target=p,u.relatedTarget=h,A=u),h=A,l&&c)e:{for(d=c,f=0,p=u=l;p;p=ki(p))f++;for(p=0,A=d;A;A=ki(A))p++;for(;0<f-p;)u=ki(u),f--;for(;0<p-f;)d=ki(d),p--;for(;f--;){if(u===d||null!==d&&u===d.alternate)break e;u=ki(u),d=ki(d)}u=null}else u=null;null!==l&&Ui(o,s,l,u,!1),null!==c&&null!==h&&Ui(o,h,c,u,!0)}if("select"===(l=(s=i?ir(i):window).nodeName&&s.nodeName.toLowerCase())||"input"===l&&"file"===s.type)var m=Jn;else if(Qn(s))if($n)m=li;else{m=oi;var g=ai}else(l=s.nodeName)&&"input"===l.toLowerCase()&&("checkbox"===s.type||"radio"===s.type)&&(m=si);switch(m&&(m=m(e,i))?Xn(o,m,n,r):(g&&g(e,s,i),"focusout"===e&&(g=s._wrapperState)&&g.controlled&&"number"===s.type&&re(s,"number",s.value)),g=i?ir(i):window,e){case"focusin":(Qn(g)||"true"===g.contentEditable)&&(vi=g,yi=i,bi=null);break;case"focusout":bi=yi=vi=null;break;case"mousedown":wi=!0;break;case"contextmenu":case"mouseup":case"dragend":wi=!1,xi(o,n,r);break;case"selectionchange":if(gi)break;case"keydown":case"keyup":xi(o,n,r)}var v;if(zn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Wn?Hn(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(Bn&&"ko"!==n.locale&&(Wn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Wn&&(v=nn()):(en="value"in($t=r)?$t.value:$t.textContent,Wn=!0)),0<(g=zi(i,y)).length&&(y=new xn(y,e,null,n,r),o.push({event:y,listeners:g}),(v||null!==(v=Vn(n)))&&(y.data=v))),(v=Un?function(e,t){switch(e){case"compositionend":return Vn(t);case"keypress":return 32!==t.which?null:(jn=!0,Fn);case"textInput":return(e=t.data)===Fn&&jn?null:e;default:return null}}(e,n):function(e,t){if(Wn)return"compositionend"===e||!zn&&Hn(e,t)?(e=nn(),tn=en=$t=null,Wn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Bn&&"ko"!==t.locale?null:t.data}}(e,n))&&0<(i=zi(i,"onBeforeInput")).length&&(r=new xn("onBeforeInput","beforeinput",null,n,r),o.push({event:r,listeners:i}),r.data=v)}Ci(o,t)}))}function Pi(e,t,n){return{instance:e,listener:t,currentTarget:n}}function zi(e,t){for(var n=t+"Capture",i=[];null!==e;){var r=e,a=r.stateNode;5===r.tag&&null!==a&&(r=a,null!=(a=Be(e,n))&&i.unshift(Pi(e,a,r)),null!=(a=Be(e,t))&&i.push(Pi(e,a,r))),e=e.return}return i}function ki(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Ui(e,t,n,i,r){for(var a=t._reactName,o=[];null!==n&&n!==i;){var s=n,l=s.alternate,c=s.stateNode;if(null!==l&&l===i)break;5===s.tag&&null!==c&&(s=c,r?null!=(l=Be(n,a))&&o.unshift(Pi(n,l,s)):r||null!=(l=Be(n,a))&&o.push(Pi(n,l,s))),n=n.return}0!==o.length&&e.push({event:t,listeners:o})}function Bi(){}var Fi=null,ji=null;function Hi(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function Vi(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Wi="function"==typeof setTimeout?setTimeout:void 0,Gi="function"==typeof clearTimeout?clearTimeout:void 0;function Qi(e){(1===e.nodeType||9===e.nodeType&&null!=(e=e.body))&&(e.textContent="")}function Xi(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Yi(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Zi=0,qi=Math.random().toString(36).slice(2),Ki="__reactFiber$"+qi,Ji="__reactProps$"+qi,$i="__reactContainer$"+qi,er="__reactEvents$"+qi;function tr(e){var t=e[Ki];if(t)return t;for(var n=e.parentNode;n;){if(t=n[$i]||n[Ki]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Yi(e);null!==e;){if(n=e[Ki])return n;e=Yi(e)}return t}n=(e=n).parentNode}return null}function nr(e){return!(e=e[Ki]||e[$i])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ir(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(33))}function rr(e){return e[Ji]||null}function ar(e){var t=e[er];return void 0===t&&(t=e[er]=new Set),t}var or=[],sr=-1;function lr(e){return{current:e}}function cr(e){0>sr||(e.current=or[sr],or[sr]=null,sr--)}function ur(e,t){sr++,or[sr]=e.current,e.current=t}var hr={},dr=lr(hr),pr=lr(!1),fr=hr;function Ar(e,t){var n=e.type.contextTypes;if(!n)return hr;var i=e.stateNode;if(i&&i.__reactInternalMemoizedUnmaskedChildContext===t)return i.__reactInternalMemoizedMaskedChildContext;var r,a={};for(r in n)a[r]=t[r];return i&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function mr(e){return null!=e.childContextTypes}function gr(){cr(pr),cr(dr)}function vr(e,t,n){if(dr.current!==hr)throw Error(o(168));ur(dr,t),ur(pr,n)}function yr(e,t,n){var i=e.stateNode;if(e=t.childContextTypes,"function"!=typeof i.getChildContext)return n;for(var a in i=i.getChildContext())if(!(a in e))throw Error(o(108,X(t)||"Unknown",a));return r({},n,i)}function br(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||hr,fr=dr.current,ur(dr,e),ur(pr,pr.current),!0}function wr(e,t,n){var i=e.stateNode;if(!i)throw Error(o(169));n?(e=yr(e,t,fr),i.__reactInternalMemoizedMergedChildContext=e,cr(pr),cr(dr),ur(dr,e)):cr(pr),ur(pr,n)}var xr=null,Mr=null,Sr=a.unstable_runWithPriority,Er=a.unstable_scheduleCallback,_r=a.unstable_cancelCallback,Tr=a.unstable_shouldYield,Cr=a.unstable_requestPaint,Ir=a.unstable_now,Dr=a.unstable_getCurrentPriorityLevel,Nr=a.unstable_ImmediatePriority,Lr=a.unstable_UserBlockingPriority,Rr=a.unstable_NormalPriority,Or=a.unstable_LowPriority,Pr=a.unstable_IdlePriority,zr={},kr=void 0!==Cr?Cr:function(){},Ur=null,Br=null,Fr=!1,jr=Ir(),Hr=1e4>jr?Ir:function(){return Ir()-jr};function Vr(){switch(Dr()){case Nr:return 99;case Lr:return 98;case Rr:return 97;case Or:return 96;case Pr:return 95;default:throw Error(o(332))}}function Wr(e){switch(e){case 99:return Nr;case 98:return Lr;case 97:return Rr;case 96:return Or;case 95:return Pr;default:throw Error(o(332))}}function Gr(e,t){return e=Wr(e),Sr(e,t)}function Qr(e,t,n){return e=Wr(e),Er(e,t,n)}function Xr(){if(null!==Br){var e=Br;Br=null,_r(e)}Yr()}function Yr(){if(!Fr&&null!==Ur){Fr=!0;var e=0;try{var t=Ur;Gr(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Ur=null}catch(t){throw null!==Ur&&(Ur=Ur.slice(e+1)),Er(Nr,Xr),t}finally{Fr=!1}}}var Zr=w.ReactCurrentBatchConfig;function qr(e,t){if(e&&e.defaultProps){for(var n in t=r({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Kr=lr(null),Jr=null,$r=null,ea=null;function ta(){ea=$r=Jr=null}function na(e){var t=Kr.current;cr(Kr),e.type._context._currentValue=t}function ia(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ra(e,t){Jr=e,ea=$r=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(zo=!0),e.firstContext=null)}function aa(e,t){if(ea!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(ea=e,t=1073741823),t={context:e,observedBits:t,next:null},null===$r){if(null===Jr)throw Error(o(308));$r=t,Jr.dependencies={lanes:0,firstContext:t,responders:null}}else $r=$r.next=t;return e._currentValue}var oa=!1;function sa(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function la(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function ca(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function ua(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function ha(e,t){var n=e.updateQueue,i=e.alternate;if(null!==i&&n===(i=i.updateQueue)){var r=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var o={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===a?r=a=o:a=a.next=o,n=n.next}while(null!==n);null===a?r=a=t:a=a.next=t}else r=a=t;return n={baseState:i.baseState,firstBaseUpdate:r,lastBaseUpdate:a,shared:i.shared,effects:i.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function da(e,t,n,i){var a=e.updateQueue;oa=!1;var o=a.firstBaseUpdate,s=a.lastBaseUpdate,l=a.shared.pending;if(null!==l){a.shared.pending=null;var c=l,u=c.next;c.next=null,null===s?o=u:s.next=u,s=c;var h=e.alternate;if(null!==h){var d=(h=h.updateQueue).lastBaseUpdate;d!==s&&(null===d?h.firstBaseUpdate=u:d.next=u,h.lastBaseUpdate=c)}}if(null!==o){for(d=a.baseState,s=0,h=u=c=null;;){l=o.lane;var p=o.eventTime;if((i&l)===l){null!==h&&(h=h.next={eventTime:p,lane:0,tag:o.tag,payload:o.payload,callback:o.callback,next:null});e:{var f=e,A=o;switch(l=t,p=n,A.tag){case 1:if("function"==typeof(f=A.payload)){d=f.call(p,d,l);break e}d=f;break e;case 3:f.flags=-4097&f.flags|64;case 0:if(null==(l="function"==typeof(f=A.payload)?f.call(p,d,l):f))break e;d=r({},d,l);break e;case 2:oa=!0}}null!==o.callback&&(e.flags|=32,null===(l=a.effects)?a.effects=[o]:l.push(o))}else p={eventTime:p,lane:l,tag:o.tag,payload:o.payload,callback:o.callback,next:null},null===h?(u=h=p,c=d):h=h.next=p,s|=l;if(null===(o=o.next)){if(null===(l=a.shared.pending))break;o=l.next,l.next=null,a.lastBaseUpdate=l,a.shared.pending=null}}null===h&&(c=d),a.baseState=c,a.firstBaseUpdate=u,a.lastBaseUpdate=h,Bs|=s,e.lanes=s,e.memoizedState=d}}function pa(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var i=e[t],r=i.callback;if(null!==r){if(i.callback=null,i=n,"function"!=typeof r)throw Error(o(191,r));r.call(i)}}}var fa=(new i.Component).refs;function Aa(e,t,n,i){n=null==(n=n(i,t=e.memoizedState))?t:r({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var ma={isMounted:function(e){return!!(e=e._reactInternals)&&Ze(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var i=ul(),r=hl(e),a=ca(i,r);a.payload=t,null!=n&&(a.callback=n),ua(e,a),dl(e,r,i)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var i=ul(),r=hl(e),a=ca(i,r);a.tag=1,a.payload=t,null!=n&&(a.callback=n),ua(e,a),dl(e,r,i)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ul(),i=hl(e),r=ca(n,i);r.tag=2,null!=t&&(r.callback=t),ua(e,r),dl(e,i,n)}};function ga(e,t,n,i,r,a,o){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(i,a,o):!(t.prototype&&t.prototype.isPureReactComponent&&hi(n,i)&&hi(r,a))}function va(e,t,n){var i=!1,r=hr,a=t.contextType;return"object"==typeof a&&null!==a?a=aa(a):(r=mr(t)?fr:dr.current,a=(i=null!=(i=t.contextTypes))?Ar(e,r):hr),t=new t(n,a),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=ma,e.stateNode=t,t._reactInternals=e,i&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=r,e.__reactInternalMemoizedMaskedChildContext=a),t}function ya(e,t,n,i){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,i),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,i),t.state!==e&&ma.enqueueReplaceState(t,t.state,null)}function ba(e,t,n,i){var r=e.stateNode;r.props=n,r.state=e.memoizedState,r.refs=fa,sa(e);var a=t.contextType;"object"==typeof a&&null!==a?r.context=aa(a):(a=mr(t)?fr:dr.current,r.context=Ar(e,a)),da(e,n,r,i),r.state=e.memoizedState,"function"==typeof(a=t.getDerivedStateFromProps)&&(Aa(e,t,a,n),r.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof r.getSnapshotBeforeUpdate||"function"!=typeof r.UNSAFE_componentWillMount&&"function"!=typeof r.componentWillMount||(t=r.state,"function"==typeof r.componentWillMount&&r.componentWillMount(),"function"==typeof r.UNSAFE_componentWillMount&&r.UNSAFE_componentWillMount(),t!==r.state&&ma.enqueueReplaceState(r,r.state,null),da(e,n,r,i),r.state=e.memoizedState),"function"==typeof r.componentDidMount&&(e.flags|=4)}var wa=Array.isArray;function xa(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(o(309));var i=n.stateNode}if(!i)throw Error(o(147,e));var r=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===r?t.ref:(t=function(e){var t=i.refs;t===fa&&(t=i.refs={}),null===e?delete t[r]:t[r]=e},t._stringRef=r,t)}if("string"!=typeof e)throw Error(o(284));if(!n._owner)throw Error(o(290,e))}return e}function Ma(e,t){if("textarea"!==e.type)throw Error(o(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function Sa(e){function t(t,n){if(e){var i=t.lastEffect;null!==i?(i.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,i){if(!e)return null;for(;null!==i;)t(n,i),i=i.sibling;return null}function i(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function r(e,t){return(e=Wl(e,t)).index=0,e.sibling=null,e}function a(t,n,i){return t.index=i,e?null!==(i=t.alternate)?(i=i.index)<n?(t.flags=2,n):i:(t.flags=2,n):n}function s(t){return e&&null===t.alternate&&(t.flags=2),t}function l(e,t,n,i){return null===t||6!==t.tag?((t=Yl(n,e.mode,i)).return=e,t):((t=r(t,n)).return=e,t)}function c(e,t,n,i){return null!==t&&t.elementType===n.type?((i=r(t,n.props)).ref=xa(e,t,n),i.return=e,i):((i=Gl(n.type,n.key,n.props,null,e.mode,i)).ref=xa(e,t,n),i.return=e,i)}function u(e,t,n,i){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Zl(n,e.mode,i)).return=e,t):((t=r(t,n.children||[])).return=e,t)}function h(e,t,n,i,a){return null===t||7!==t.tag?((t=Ql(n,e.mode,i,a)).return=e,t):((t=r(t,n)).return=e,t)}function d(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Yl(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case x:return(n=Gl(t.type,t.key,t.props,null,e.mode,n)).ref=xa(e,null,t),n.return=e,n;case M:return(t=Zl(t,e.mode,n)).return=e,t}if(wa(t)||H(t))return(t=Ql(t,e.mode,n,null)).return=e,t;Ma(e,t)}return null}function p(e,t,n,i){var r=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==r?null:l(e,t,""+n,i);if("object"==typeof n&&null!==n){switch(n.$$typeof){case x:return n.key===r?n.type===S?h(e,t,n.props.children,i,r):c(e,t,n,i):null;case M:return n.key===r?u(e,t,n,i):null}if(wa(n)||H(n))return null!==r?null:h(e,t,n,i,null);Ma(e,n)}return null}function f(e,t,n,i,r){if("string"==typeof i||"number"==typeof i)return l(t,e=e.get(n)||null,""+i,r);if("object"==typeof i&&null!==i){switch(i.$$typeof){case x:return e=e.get(null===i.key?n:i.key)||null,i.type===S?h(t,e,i.props.children,r,i.key):c(t,e,i,r);case M:return u(t,e=e.get(null===i.key?n:i.key)||null,i,r)}if(wa(i)||H(i))return h(t,e=e.get(n)||null,i,r,null);Ma(t,i)}return null}function A(r,o,s,l){for(var c=null,u=null,h=o,A=o=0,m=null;null!==h&&A<s.length;A++){h.index>A?(m=h,h=null):m=h.sibling;var g=p(r,h,s[A],l);if(null===g){null===h&&(h=m);break}e&&h&&null===g.alternate&&t(r,h),o=a(g,o,A),null===u?c=g:u.sibling=g,u=g,h=m}if(A===s.length)return n(r,h),c;if(null===h){for(;A<s.length;A++)null!==(h=d(r,s[A],l))&&(o=a(h,o,A),null===u?c=h:u.sibling=h,u=h);return c}for(h=i(r,h);A<s.length;A++)null!==(m=f(h,r,A,s[A],l))&&(e&&null!==m.alternate&&h.delete(null===m.key?A:m.key),o=a(m,o,A),null===u?c=m:u.sibling=m,u=m);return e&&h.forEach((function(e){return t(r,e)})),c}function m(r,s,l,c){var u=H(l);if("function"!=typeof u)throw Error(o(150));if(null==(l=u.call(l)))throw Error(o(151));for(var h=u=null,A=s,m=s=0,g=null,v=l.next();null!==A&&!v.done;m++,v=l.next()){A.index>m?(g=A,A=null):g=A.sibling;var y=p(r,A,v.value,c);if(null===y){null===A&&(A=g);break}e&&A&&null===y.alternate&&t(r,A),s=a(y,s,m),null===h?u=y:h.sibling=y,h=y,A=g}if(v.done)return n(r,A),u;if(null===A){for(;!v.done;m++,v=l.next())null!==(v=d(r,v.value,c))&&(s=a(v,s,m),null===h?u=v:h.sibling=v,h=v);return u}for(A=i(r,A);!v.done;m++,v=l.next())null!==(v=f(A,r,m,v.value,c))&&(e&&null!==v.alternate&&A.delete(null===v.key?m:v.key),s=a(v,s,m),null===h?u=v:h.sibling=v,h=v);return e&&A.forEach((function(e){return t(r,e)})),u}return function(e,i,a,l){var c="object"==typeof a&&null!==a&&a.type===S&&null===a.key;c&&(a=a.props.children);var u="object"==typeof a&&null!==a;if(u)switch(a.$$typeof){case x:e:{for(u=a.key,c=i;null!==c;){if(c.key===u){if(7===c.tag){if(a.type===S){n(e,c.sibling),(i=r(c,a.props.children)).return=e,e=i;break e}}else if(c.elementType===a.type){n(e,c.sibling),(i=r(c,a.props)).ref=xa(e,c,a),i.return=e,e=i;break e}n(e,c);break}t(e,c),c=c.sibling}a.type===S?((i=Ql(a.props.children,e.mode,l,a.key)).return=e,e=i):((l=Gl(a.type,a.key,a.props,null,e.mode,l)).ref=xa(e,i,a),l.return=e,e=l)}return s(e);case M:e:{for(c=a.key;null!==i;){if(i.key===c){if(4===i.tag&&i.stateNode.containerInfo===a.containerInfo&&i.stateNode.implementation===a.implementation){n(e,i.sibling),(i=r(i,a.children||[])).return=e,e=i;break e}n(e,i);break}t(e,i),i=i.sibling}(i=Zl(a,e.mode,l)).return=e,e=i}return s(e)}if("string"==typeof a||"number"==typeof a)return a=""+a,null!==i&&6===i.tag?(n(e,i.sibling),(i=r(i,a)).return=e,e=i):(n(e,i),(i=Yl(a,e.mode,l)).return=e,e=i),s(e);if(wa(a))return A(e,i,a,l);if(H(a))return m(e,i,a,l);if(u&&Ma(e,a),void 0===a&&!c)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(o(152,X(e.type)||"Component"))}return n(e,i)}}var Ea=Sa(!0),_a=Sa(!1),Ta={},Ca=lr(Ta),Ia=lr(Ta),Da=lr(Ta);function Na(e){if(e===Ta)throw Error(o(174));return e}function La(e,t){switch(ur(Da,t),ur(Ia,e),ur(Ca,Ta),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:pe(null,"");break;default:t=pe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}cr(Ca),ur(Ca,t)}function Ra(){cr(Ca),cr(Ia),cr(Da)}function Oa(e){Na(Da.current);var t=Na(Ca.current),n=pe(t,e.type);t!==n&&(ur(Ia,e),ur(Ca,n))}function Pa(e){Ia.current===e&&(cr(Ca),cr(Ia))}var za=lr(0);function ka(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Ua=null,Ba=null,Fa=!1;function ja(e,t){var n=Hl(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Ha(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Va(e){if(Fa){var t=Ba;if(t){var n=t;if(!Ha(e,t)){if(!(t=Xi(n.nextSibling))||!Ha(e,t))return e.flags=-1025&e.flags|2,Fa=!1,void(Ua=e);ja(Ua,n)}Ua=e,Ba=Xi(t.firstChild)}else e.flags=-1025&e.flags|2,Fa=!1,Ua=e}}function Wa(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Ua=e}function Ga(e){if(e!==Ua)return!1;if(!Fa)return Wa(e),Fa=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!Vi(t,e.memoizedProps))for(t=Ba;t;)ja(e,t),t=Xi(t.nextSibling);if(Wa(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(o(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){Ba=Xi(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}Ba=null}}else Ba=Ua?Xi(e.stateNode.nextSibling):null;return!0}function Qa(){Ba=Ua=null,Fa=!1}var Xa=[];function Ya(){for(var e=0;e<Xa.length;e++)Xa[e]._workInProgressVersionPrimary=null;Xa.length=0}var Za=w.ReactCurrentDispatcher,qa=w.ReactCurrentBatchConfig,Ka=0,Ja=null,$a=null,eo=null,to=!1,no=!1;function io(){throw Error(o(321))}function ro(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ci(e[n],t[n]))return!1;return!0}function ao(e,t,n,i,r,a){if(Ka=a,Ja=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Za.current=null===e||null===e.memoizedState?Lo:Ro,e=n(i,r),no){a=0;do{if(no=!1,!(25>a))throw Error(o(301));a+=1,eo=$a=null,t.updateQueue=null,Za.current=Oo,e=n(i,r)}while(no)}if(Za.current=No,t=null!==$a&&null!==$a.next,Ka=0,eo=$a=Ja=null,to=!1,t)throw Error(o(300));return e}function oo(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===eo?Ja.memoizedState=eo=e:eo=eo.next=e,eo}function so(){if(null===$a){var e=Ja.alternate;e=null!==e?e.memoizedState:null}else e=$a.next;var t=null===eo?Ja.memoizedState:eo.next;if(null!==t)eo=t,$a=e;else{if(null===e)throw Error(o(310));e={memoizedState:($a=e).memoizedState,baseState:$a.baseState,baseQueue:$a.baseQueue,queue:$a.queue,next:null},null===eo?Ja.memoizedState=eo=e:eo=eo.next=e}return eo}function lo(e,t){return"function"==typeof t?t(e):t}function co(e){var t=so(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var i=$a,r=i.baseQueue,a=n.pending;if(null!==a){if(null!==r){var s=r.next;r.next=a.next,a.next=s}i.baseQueue=r=a,n.pending=null}if(null!==r){r=r.next,i=i.baseState;var l=s=a=null,c=r;do{var u=c.lane;if((Ka&u)===u)null!==l&&(l=l.next={lane:0,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null}),i=c.eagerReducer===e?c.eagerState:e(i,c.action);else{var h={lane:u,action:c.action,eagerReducer:c.eagerReducer,eagerState:c.eagerState,next:null};null===l?(s=l=h,a=i):l=l.next=h,Ja.lanes|=u,Bs|=u}c=c.next}while(null!==c&&c!==r);null===l?a=i:l.next=s,ci(i,t.memoizedState)||(zo=!0),t.memoizedState=i,t.baseState=a,t.baseQueue=l,n.lastRenderedState=i}return[t.memoizedState,n.dispatch]}function uo(e){var t=so(),n=t.queue;if(null===n)throw Error(o(311));n.lastRenderedReducer=e;var i=n.dispatch,r=n.pending,a=t.memoizedState;if(null!==r){n.pending=null;var s=r=r.next;do{a=e(a,s.action),s=s.next}while(s!==r);ci(a,t.memoizedState)||(zo=!0),t.memoizedState=a,null===t.baseQueue&&(t.baseState=a),n.lastRenderedState=a}return[a,i]}function ho(e,t,n){var i=t._getVersion;i=i(t._source);var r=t._workInProgressVersionPrimary;if(null!==r?e=r===i:(e=e.mutableReadLanes,(e=(Ka&e)===e)&&(t._workInProgressVersionPrimary=i,Xa.push(t))),e)return n(t._source);throw Xa.push(t),Error(o(350))}function po(e,t,n,i){var r=Ns;if(null===r)throw Error(o(349));var a=t._getVersion,s=a(t._source),l=Za.current,c=l.useState((function(){return ho(r,t,n)})),u=c[1],h=c[0];c=eo;var d=e.memoizedState,p=d.refs,f=p.getSnapshot,A=d.source;d=d.subscribe;var m=Ja;return e.memoizedState={refs:p,source:t,subscribe:i},l.useEffect((function(){p.getSnapshot=n,p.setSnapshot=u;var e=a(t._source);if(!ci(s,e)){e=n(t._source),ci(h,e)||(u(e),e=hl(m),r.mutableReadLanes|=e&r.pendingLanes),e=r.mutableReadLanes,r.entangledLanes|=e;for(var i=r.entanglements,o=e;0<o;){var l=31-Vt(o),c=1<<l;i[l]|=e,o&=~c}}}),[n,t,i]),l.useEffect((function(){return i(t._source,(function(){var e=p.getSnapshot,n=p.setSnapshot;try{n(e(t._source));var i=hl(m);r.mutableReadLanes|=i&r.pendingLanes}catch(e){n((function(){throw e}))}}))}),[t,i]),ci(f,n)&&ci(A,t)&&ci(d,i)||((e={pending:null,dispatch:null,lastRenderedReducer:lo,lastRenderedState:h}).dispatch=u=Do.bind(null,Ja,e),c.queue=e,c.baseQueue=null,h=ho(r,t,n),c.memoizedState=c.baseState=h),h}function fo(e,t,n){return po(so(),e,t,n)}function Ao(e){var t=oo();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:lo,lastRenderedState:e}).dispatch=Do.bind(null,Ja,e),[t.memoizedState,e]}function mo(e,t,n,i){return e={tag:e,create:t,destroy:n,deps:i,next:null},null===(t=Ja.updateQueue)?(t={lastEffect:null},Ja.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(i=n.next,n.next=e,e.next=i,t.lastEffect=e),e}function go(e){return e={current:e},oo().memoizedState=e}function vo(){return so().memoizedState}function yo(e,t,n,i){var r=oo();Ja.flags|=e,r.memoizedState=mo(1|t,n,void 0,void 0===i?null:i)}function bo(e,t,n,i){var r=so();i=void 0===i?null:i;var a=void 0;if(null!==$a){var o=$a.memoizedState;if(a=o.destroy,null!==i&&ro(i,o.deps))return void mo(t,n,a,i)}Ja.flags|=e,r.memoizedState=mo(1|t,n,a,i)}function wo(e,t){return yo(516,4,e,t)}function xo(e,t){return bo(516,4,e,t)}function Mo(e,t){return bo(4,2,e,t)}function So(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Eo(e,t,n){return n=null!=n?n.concat([e]):null,bo(4,2,So.bind(null,t,e),n)}function _o(){}function To(e,t){var n=so();t=void 0===t?null:t;var i=n.memoizedState;return null!==i&&null!==t&&ro(t,i[1])?i[0]:(n.memoizedState=[e,t],e)}function Co(e,t){var n=so();t=void 0===t?null:t;var i=n.memoizedState;return null!==i&&null!==t&&ro(t,i[1])?i[0]:(e=e(),n.memoizedState=[e,t],e)}function Io(e,t){var n=Vr();Gr(98>n?98:n,(function(){e(!0)})),Gr(97<n?97:n,(function(){var n=qa.transition;qa.transition=1;try{e(!1),t()}finally{qa.transition=n}}))}function Do(e,t,n){var i=ul(),r=hl(e),a={lane:r,action:n,eagerReducer:null,eagerState:null,next:null},o=t.pending;if(null===o?a.next=a:(a.next=o.next,o.next=a),t.pending=a,o=e.alternate,e===Ja||null!==o&&o===Ja)no=to=!0;else{if(0===e.lanes&&(null===o||0===o.lanes)&&null!==(o=t.lastRenderedReducer))try{var s=t.lastRenderedState,l=o(s,n);if(a.eagerReducer=o,a.eagerState=l,ci(l,s))return}catch(e){}dl(e,r,i)}}var No={readContext:aa,useCallback:io,useContext:io,useEffect:io,useImperativeHandle:io,useLayoutEffect:io,useMemo:io,useReducer:io,useRef:io,useState:io,useDebugValue:io,useDeferredValue:io,useTransition:io,useMutableSource:io,useOpaqueIdentifier:io,unstable_isNewReconciler:!1},Lo={readContext:aa,useCallback:function(e,t){return oo().memoizedState=[e,void 0===t?null:t],e},useContext:aa,useEffect:wo,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yo(4,2,So.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yo(4,2,e,t)},useMemo:function(e,t){var n=oo();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var i=oo();return t=void 0!==n?n(t):t,i.memoizedState=i.baseState=t,e=(e=i.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Do.bind(null,Ja,e),[i.memoizedState,e]},useRef:go,useState:Ao,useDebugValue:_o,useDeferredValue:function(e){var t=Ao(e),n=t[0],i=t[1];return wo((function(){var t=qa.transition;qa.transition=1;try{i(e)}finally{qa.transition=t}}),[e]),n},useTransition:function(){var e=Ao(!1),t=e[0];return go(e=Io.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var i=oo();return i.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},po(i,e,t,n)},useOpaqueIdentifier:function(){if(Fa){var e=!1,t=function(e){return{$$typeof:P,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Zi++).toString(36))),Error(o(355))})),n=Ao(t)[1];return 0==(2&Ja.mode)&&(Ja.flags|=516,mo(5,(function(){n("r:"+(Zi++).toString(36))}),void 0,null)),t}return Ao(t="r:"+(Zi++).toString(36)),t},unstable_isNewReconciler:!1},Ro={readContext:aa,useCallback:To,useContext:aa,useEffect:xo,useImperativeHandle:Eo,useLayoutEffect:Mo,useMemo:Co,useReducer:co,useRef:vo,useState:function(){return co(lo)},useDebugValue:_o,useDeferredValue:function(e){var t=co(lo),n=t[0],i=t[1];return xo((function(){var t=qa.transition;qa.transition=1;try{i(e)}finally{qa.transition=t}}),[e]),n},useTransition:function(){var e=co(lo)[0];return[vo().current,e]},useMutableSource:fo,useOpaqueIdentifier:function(){return co(lo)[0]},unstable_isNewReconciler:!1},Oo={readContext:aa,useCallback:To,useContext:aa,useEffect:xo,useImperativeHandle:Eo,useLayoutEffect:Mo,useMemo:Co,useReducer:uo,useRef:vo,useState:function(){return uo(lo)},useDebugValue:_o,useDeferredValue:function(e){var t=uo(lo),n=t[0],i=t[1];return xo((function(){var t=qa.transition;qa.transition=1;try{i(e)}finally{qa.transition=t}}),[e]),n},useTransition:function(){var e=uo(lo)[0];return[vo().current,e]},useMutableSource:fo,useOpaqueIdentifier:function(){return uo(lo)[0]},unstable_isNewReconciler:!1},Po=w.ReactCurrentOwner,zo=!1;function ko(e,t,n,i){t.child=null===e?_a(t,null,n,i):Ea(t,e.child,n,i)}function Uo(e,t,n,i,r){n=n.render;var a=t.ref;return ra(t,r),i=ao(e,t,n,i,a,r),null===e||zo?(t.flags|=1,ko(e,t,i,r),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~r,is(e,t,r))}function Bo(e,t,n,i,r,a){if(null===e){var o=n.type;return"function"!=typeof o||Vl(o)||void 0!==o.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Gl(n.type,null,i,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,Fo(e,t,o,i,r,a))}return o=e.child,0==(r&a)&&(r=o.memoizedProps,(n=null!==(n=n.compare)?n:hi)(r,i)&&e.ref===t.ref)?is(e,t,a):(t.flags|=1,(e=Wl(o,i)).ref=t.ref,e.return=t,t.child=e)}function Fo(e,t,n,i,r,a){if(null!==e&&hi(e.memoizedProps,i)&&e.ref===t.ref){if(zo=!1,0==(a&r))return t.lanes=e.lanes,is(e,t,a);0!=(16384&e.flags)&&(zo=!0)}return Vo(e,t,n,i,a)}function jo(e,t,n){var i=t.pendingProps,r=i.children,a=null!==e?e.memoizedState:null;if("hidden"===i.mode||"unstable-defer-without-hiding"===i.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},bl(0,n);else{if(0==(1073741824&n))return e=null!==a?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},bl(0,e),null;t.memoizedState={baseLanes:0},bl(0,null!==a?a.baseLanes:n)}else null!==a?(i=a.baseLanes|n,t.memoizedState=null):i=n,bl(0,i);return ko(e,t,r,n),t.child}function Ho(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function Vo(e,t,n,i,r){var a=mr(n)?fr:dr.current;return a=Ar(t,a),ra(t,r),n=ao(e,t,n,i,a,r),null===e||zo?(t.flags|=1,ko(e,t,n,r),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~r,is(e,t,r))}function Wo(e,t,n,i,r){if(mr(n)){var a=!0;br(t)}else a=!1;if(ra(t,r),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),va(t,n,i),ba(t,n,i,r),i=!0;else if(null===e){var o=t.stateNode,s=t.memoizedProps;o.props=s;var l=o.context,c=n.contextType;c="object"==typeof c&&null!==c?aa(c):Ar(t,c=mr(n)?fr:dr.current);var u=n.getDerivedStateFromProps,h="function"==typeof u||"function"==typeof o.getSnapshotBeforeUpdate;h||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(s!==i||l!==c)&&ya(t,o,i,c),oa=!1;var d=t.memoizedState;o.state=d,da(t,i,o,r),l=t.memoizedState,s!==i||d!==l||pr.current||oa?("function"==typeof u&&(Aa(t,n,u,i),l=t.memoizedState),(s=oa||ga(t,n,s,i,d,l,c))?(h||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||("function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount()),"function"==typeof o.componentDidMount&&(t.flags|=4)):("function"==typeof o.componentDidMount&&(t.flags|=4),t.memoizedProps=i,t.memoizedState=l),o.props=i,o.state=l,o.context=c,i=s):("function"==typeof o.componentDidMount&&(t.flags|=4),i=!1)}else{o=t.stateNode,la(e,t),s=t.memoizedProps,c=t.type===t.elementType?s:qr(t.type,s),o.props=c,h=t.pendingProps,d=o.context,l="object"==typeof(l=n.contextType)&&null!==l?aa(l):Ar(t,l=mr(n)?fr:dr.current);var p=n.getDerivedStateFromProps;(u="function"==typeof p||"function"==typeof o.getSnapshotBeforeUpdate)||"function"!=typeof o.UNSAFE_componentWillReceiveProps&&"function"!=typeof o.componentWillReceiveProps||(s!==h||d!==l)&&ya(t,o,i,l),oa=!1,d=t.memoizedState,o.state=d,da(t,i,o,r);var f=t.memoizedState;s!==h||d!==f||pr.current||oa?("function"==typeof p&&(Aa(t,n,p,i),f=t.memoizedState),(c=oa||ga(t,n,c,i,d,f,l))?(u||"function"!=typeof o.UNSAFE_componentWillUpdate&&"function"!=typeof o.componentWillUpdate||("function"==typeof o.componentWillUpdate&&o.componentWillUpdate(i,f,l),"function"==typeof o.UNSAFE_componentWillUpdate&&o.UNSAFE_componentWillUpdate(i,f,l)),"function"==typeof o.componentDidUpdate&&(t.flags|=4),"function"==typeof o.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof o.componentDidUpdate||s===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||s===e.memoizedProps&&d===e.memoizedState||(t.flags|=256),t.memoizedProps=i,t.memoizedState=f),o.props=i,o.state=f,o.context=l,i=c):("function"!=typeof o.componentDidUpdate||s===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof o.getSnapshotBeforeUpdate||s===e.memoizedProps&&d===e.memoizedState||(t.flags|=256),i=!1)}return Go(e,t,n,i,a,r)}function Go(e,t,n,i,r,a){Ho(e,t);var o=0!=(64&t.flags);if(!i&&!o)return r&&wr(t,n,!1),is(e,t,a);i=t.stateNode,Po.current=t;var s=o&&"function"!=typeof n.getDerivedStateFromError?null:i.render();return t.flags|=1,null!==e&&o?(t.child=Ea(t,e.child,null,a),t.child=Ea(t,null,s,a)):ko(e,t,s,a),t.memoizedState=i.state,r&&wr(t,n,!0),t.child}function Qo(e){var t=e.stateNode;t.pendingContext?vr(0,t.pendingContext,t.pendingContext!==t.context):t.context&&vr(0,t.context,!1),La(e,t.containerInfo)}var Xo,Yo,Zo,qo,Ko={dehydrated:null,retryLane:0};function Jo(e,t,n){var i,r=t.pendingProps,a=za.current,o=!1;return(i=0!=(64&t.flags))||(i=(null===e||null!==e.memoizedState)&&0!=(2&a)),i?(o=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===r.fallback||!0===r.unstable_avoidThisFallback||(a|=1),ur(za,1&a),null===e?(void 0!==r.fallback&&Va(t),e=r.children,a=r.fallback,o?(e=$o(t,e,a,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Ko,e):"number"==typeof r.unstable_expectedLoadTime?(e=$o(t,e,a,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Ko,t.lanes=33554432,e):((n=Xl({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,o?(r=function(e,t,n,i,r){var a=t.mode,o=e.child;e=o.sibling;var s={mode:"hidden",children:n};return 0==(2&a)&&t.child!==o?((n=t.child).childLanes=0,n.pendingProps=s,null!==(o=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=o,o.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Wl(o,s),null!==e?i=Wl(e,i):(i=Ql(i,a,r,null)).flags|=2,i.return=t,n.return=t,n.sibling=i,t.child=n,i}(e,t,r.children,r.fallback,n),o=t.child,a=e.child.memoizedState,o.memoizedState=null===a?{baseLanes:n}:{baseLanes:a.baseLanes|n},o.childLanes=e.childLanes&~n,t.memoizedState=Ko,r):(n=function(e,t,n,i){var r=e.child;return e=r.sibling,n=Wl(r,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=i),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}(e,t,r.children,n),t.memoizedState=null,n))}function $o(e,t,n,i){var r=e.mode,a=e.child;return t={mode:"hidden",children:t},0==(2&r)&&null!==a?(a.childLanes=0,a.pendingProps=t):a=Xl(t,r,0,null),n=Ql(n,r,i,null),a.return=e,n.return=e,a.sibling=n,e.child=a,n}function es(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ia(e.return,t)}function ts(e,t,n,i,r,a){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:i,tail:n,tailMode:r,lastEffect:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=i,o.tail=n,o.tailMode=r,o.lastEffect=a)}function ns(e,t,n){var i=t.pendingProps,r=i.revealOrder,a=i.tail;if(ko(e,t,i.children,n),0!=(2&(i=za.current)))i=1&i|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&es(e,n);else if(19===e.tag)es(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}i&=1}if(ur(za,i),0==(2&t.mode))t.memoizedState=null;else switch(r){case"forwards":for(n=t.child,r=null;null!==n;)null!==(e=n.alternate)&&null===ka(e)&&(r=n),n=n.sibling;null===(n=r)?(r=t.child,t.child=null):(r=n.sibling,n.sibling=null),ts(t,!1,r,n,a,t.lastEffect);break;case"backwards":for(n=null,r=t.child,t.child=null;null!==r;){if(null!==(e=r.alternate)&&null===ka(e)){t.child=r;break}e=r.sibling,r.sibling=n,n=r,r=e}ts(t,!0,n,null,a,t.lastEffect);break;case"together":ts(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function is(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Bs|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(o(153));if(null!==t.child){for(n=Wl(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Wl(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function rs(e,t){if(!Fa)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var i=null;null!==n;)null!==n.alternate&&(i=n),n=n.sibling;null===i?t||null===e.tail?e.tail=null:e.tail.sibling=null:i.sibling=null}}function as(e,t,n){var i=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return mr(t.type)&&gr(),null;case 3:return Ra(),cr(pr),cr(dr),Ya(),(i=t.stateNode).pendingContext&&(i.context=i.pendingContext,i.pendingContext=null),null!==e&&null!==e.child||(Ga(t)?t.flags|=4:i.hydrate||(t.flags|=256)),Yo(t),null;case 5:Pa(t);var a=Na(Da.current);if(n=t.type,null!==e&&null!=t.stateNode)Zo(e,t,n,i,a),e.ref!==t.ref&&(t.flags|=128);else{if(!i){if(null===t.stateNode)throw Error(o(166));return null}if(e=Na(Ca.current),Ga(t)){i=t.stateNode,n=t.type;var s=t.memoizedProps;switch(i[Ki]=t,i[Ji]=s,n){case"dialog":Ii("cancel",i),Ii("close",i);break;case"iframe":case"object":case"embed":Ii("load",i);break;case"video":case"audio":for(e=0;e<Ei.length;e++)Ii(Ei[e],i);break;case"source":Ii("error",i);break;case"img":case"image":case"link":Ii("error",i),Ii("load",i);break;case"details":Ii("toggle",i);break;case"input":ee(i,s),Ii("invalid",i);break;case"select":i._wrapperState={wasMultiple:!!s.multiple},Ii("invalid",i);break;case"textarea":le(i,s),Ii("invalid",i)}for(var c in Me(n,s),e=null,s)s.hasOwnProperty(c)&&(a=s[c],"children"===c?"string"==typeof a?i.textContent!==a&&(e=["children",a]):"number"==typeof a&&i.textContent!==""+a&&(e=["children",""+a]):l.hasOwnProperty(c)&&null!=a&&"onScroll"===c&&Ii("scroll",i));switch(n){case"input":q(i),ie(i,s,!0);break;case"textarea":q(i),ue(i);break;case"select":case"option":break;default:"function"==typeof s.onClick&&(i.onclick=Bi)}i=e,t.updateQueue=i,null!==i&&(t.flags|=4)}else{switch(c=9===a.nodeType?a:a.ownerDocument,e===he.html&&(e=de(n)),e===he.html?"script"===n?((e=c.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof i.is?e=c.createElement(n,{is:i.is}):(e=c.createElement(n),"select"===n&&(c=e,i.multiple?c.multiple=!0:i.size&&(c.size=i.size))):e=c.createElementNS(e,n),e[Ki]=t,e[Ji]=i,Xo(e,t,!1,!1),t.stateNode=e,c=Se(n,i),n){case"dialog":Ii("cancel",e),Ii("close",e),a=i;break;case"iframe":case"object":case"embed":Ii("load",e),a=i;break;case"video":case"audio":for(a=0;a<Ei.length;a++)Ii(Ei[a],e);a=i;break;case"source":Ii("error",e),a=i;break;case"img":case"image":case"link":Ii("error",e),Ii("load",e),a=i;break;case"details":Ii("toggle",e),a=i;break;case"input":ee(e,i),a=$(e,i),Ii("invalid",e);break;case"option":a=ae(e,i);break;case"select":e._wrapperState={wasMultiple:!!i.multiple},a=r({},i,{value:void 0}),Ii("invalid",e);break;case"textarea":le(e,i),a=se(e,i),Ii("invalid",e);break;default:a=i}Me(n,a);var u=a;for(s in u)if(u.hasOwnProperty(s)){var h=u[s];"style"===s?we(e,h):"dangerouslySetInnerHTML"===s?null!=(h=h?h.__html:void 0)&&me(e,h):"children"===s?"string"==typeof h?("textarea"!==n||""!==h)&&ge(e,h):"number"==typeof h&&ge(e,""+h):"suppressContentEditableWarning"!==s&&"suppressHydrationWarning"!==s&&"autoFocus"!==s&&(l.hasOwnProperty(s)?null!=h&&"onScroll"===s&&Ii("scroll",e):null!=h&&b(e,s,h,c))}switch(n){case"input":q(e),ie(e,i,!1);break;case"textarea":q(e),ue(e);break;case"option":null!=i.value&&e.setAttribute("value",""+Y(i.value));break;case"select":e.multiple=!!i.multiple,null!=(s=i.value)?oe(e,!!i.multiple,s,!1):null!=i.defaultValue&&oe(e,!!i.multiple,i.defaultValue,!0);break;default:"function"==typeof a.onClick&&(e.onclick=Bi)}Hi(n,i)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)qo(e,t,e.memoizedProps,i);else{if("string"!=typeof i&&null===t.stateNode)throw Error(o(166));n=Na(Da.current),Na(Ca.current),Ga(t)?(i=t.stateNode,n=t.memoizedProps,i[Ki]=t,i.nodeValue!==n&&(t.flags|=4)):((i=(9===n.nodeType?n:n.ownerDocument).createTextNode(i))[Ki]=t,t.stateNode=i)}return null;case 13:return cr(za),i=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(i=null!==i,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Ga(t):n=null!==e.memoizedState,i&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&za.current)?0===zs&&(zs=3):(0!==zs&&3!==zs||(zs=4),null===Ns||0==(134217727&Bs)&&0==(134217727&Fs)||ml(Ns,Rs))),(i||n)&&(t.flags|=4),null);case 4:return Ra(),Yo(t),null===e&&Ni(t.stateNode.containerInfo),null;case 10:return na(t),null;case 19:if(cr(za),null===(i=t.memoizedState))return null;if(s=0!=(64&t.flags),null===(c=i.rendering))if(s)rs(i,!1);else{if(0!==zs||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(c=ka(e))){for(t.flags|=64,rs(i,!1),null!==(s=c.updateQueue)&&(t.updateQueue=s,t.flags|=4),null===i.lastEffect&&(t.firstEffect=null),t.lastEffect=i.lastEffect,i=n,n=t.child;null!==n;)e=i,(s=n).flags&=2,s.nextEffect=null,s.firstEffect=null,s.lastEffect=null,null===(c=s.alternate)?(s.childLanes=0,s.lanes=e,s.child=null,s.memoizedProps=null,s.memoizedState=null,s.updateQueue=null,s.dependencies=null,s.stateNode=null):(s.childLanes=c.childLanes,s.lanes=c.lanes,s.child=c.child,s.memoizedProps=c.memoizedProps,s.memoizedState=c.memoizedState,s.updateQueue=c.updateQueue,s.type=c.type,e=c.dependencies,s.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ur(za,1&za.current|2),t.child}e=e.sibling}null!==i.tail&&Hr()>Ws&&(t.flags|=64,s=!0,rs(i,!1),t.lanes=33554432)}else{if(!s)if(null!==(e=ka(c))){if(t.flags|=64,s=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),rs(i,!0),null===i.tail&&"hidden"===i.tailMode&&!c.alternate&&!Fa)return null!==(t=t.lastEffect=i.lastEffect)&&(t.nextEffect=null),null}else 2*Hr()-i.renderingStartTime>Ws&&1073741824!==n&&(t.flags|=64,s=!0,rs(i,!1),t.lanes=33554432);i.isBackwards?(c.sibling=t.child,t.child=c):(null!==(n=i.last)?n.sibling=c:t.child=c,i.last=c)}return null!==i.tail?(n=i.tail,i.rendering=n,i.tail=n.sibling,i.lastEffect=t.lastEffect,i.renderingStartTime=Hr(),n.sibling=null,t=za.current,ur(za,s?1&t|2:1&t),n):null;case 23:case 24:return wl(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==i.mode&&(t.flags|=4),null}throw Error(o(156,t.tag))}function os(e){switch(e.tag){case 1:mr(e.type)&&gr();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Ra(),cr(pr),cr(dr),Ya(),0!=(64&(t=e.flags)))throw Error(o(285));return e.flags=-4097&t|64,e;case 5:return Pa(e),null;case 13:return cr(za),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return cr(za),null;case 4:return Ra(),null;case 10:return na(e),null;case 23:case 24:return wl(),null;default:return null}}function ss(e,t){try{var n="",i=t;do{n+=Q(i),i=i.return}while(i);var r=n}catch(e){r="\nError generating stack: "+e.message+"\n"+e.stack}return{value:e,source:t,stack:r}}function ls(e,t){try{console.error(t.value)}catch(e){setTimeout((function(){throw e}))}}Xo=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Yo=function(){},Zo=function(e,t,n,i){var a=e.memoizedProps;if(a!==i){e=t.stateNode,Na(Ca.current);var o,s=null;switch(n){case"input":a=$(e,a),i=$(e,i),s=[];break;case"option":a=ae(e,a),i=ae(e,i),s=[];break;case"select":a=r({},a,{value:void 0}),i=r({},i,{value:void 0}),s=[];break;case"textarea":a=se(e,a),i=se(e,i),s=[];break;default:"function"!=typeof a.onClick&&"function"==typeof i.onClick&&(e.onclick=Bi)}for(h in Me(n,i),n=null,a)if(!i.hasOwnProperty(h)&&a.hasOwnProperty(h)&&null!=a[h])if("style"===h){var c=a[h];for(o in c)c.hasOwnProperty(o)&&(n||(n={}),n[o]="")}else"dangerouslySetInnerHTML"!==h&&"children"!==h&&"suppressContentEditableWarning"!==h&&"suppressHydrationWarning"!==h&&"autoFocus"!==h&&(l.hasOwnProperty(h)?s||(s=[]):(s=s||[]).push(h,null));for(h in i){var u=i[h];if(c=null!=a?a[h]:void 0,i.hasOwnProperty(h)&&u!==c&&(null!=u||null!=c))if("style"===h)if(c){for(o in c)!c.hasOwnProperty(o)||u&&u.hasOwnProperty(o)||(n||(n={}),n[o]="");for(o in u)u.hasOwnProperty(o)&&c[o]!==u[o]&&(n||(n={}),n[o]=u[o])}else n||(s||(s=[]),s.push(h,n)),n=u;else"dangerouslySetInnerHTML"===h?(u=u?u.__html:void 0,c=c?c.__html:void 0,null!=u&&c!==u&&(s=s||[]).push(h,u)):"children"===h?"string"!=typeof u&&"number"!=typeof u||(s=s||[]).push(h,""+u):"suppressContentEditableWarning"!==h&&"suppressHydrationWarning"!==h&&(l.hasOwnProperty(h)?(null!=u&&"onScroll"===h&&Ii("scroll",e),s||c===u||(s=[])):"object"==typeof u&&null!==u&&u.$$typeof===P?u.toString():(s=s||[]).push(h,u))}n&&(s=s||[]).push("style",n);var h=s;(t.updateQueue=h)&&(t.flags|=4)}},qo=function(e,t,n,i){n!==i&&(t.flags|=4)};var cs="function"==typeof WeakMap?WeakMap:Map;function us(e,t,n){(n=ca(-1,n)).tag=3,n.payload={element:null};var i=t.value;return n.callback=function(){Ys||(Ys=!0,Zs=i),ls(0,t)},n}function hs(e,t,n){(n=ca(-1,n)).tag=3;var i=e.type.getDerivedStateFromError;if("function"==typeof i){var r=t.value;n.payload=function(){return ls(0,t),i(r)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){"function"!=typeof i&&(null===qs?qs=new Set([this]):qs.add(this),ls(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ds="function"==typeof WeakSet?WeakSet:Set;function ps(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(t){Ul(e,t)}else t.current=null}function fs(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,i=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:qr(t.type,n),i),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Qi(t.stateNode.containerInfo))}throw Error(o(163))}function As(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var i=e.create;e.destroy=i()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var r=e;i=r.next,0!=(4&(r=r.tag))&&0!=(1&r)&&(Pl(n,e),Ol(n,e)),e=i}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(i=n.elementType===n.type?t.memoizedProps:qr(n.type,t.memoizedProps),e.componentDidUpdate(i,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&pa(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}pa(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&Hi(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&wt(n)))))}throw Error(o(163))}function ms(e,t){for(var n=e;;){if(5===n.tag){var i=n.stateNode;if(t)"function"==typeof(i=i.style).setProperty?i.setProperty("display","none","important"):i.display="none";else{i=n.stateNode;var r=n.memoizedProps.style;r=null!=r&&r.hasOwnProperty("display")?r.display:null,i.style.display=be("display",r)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function gs(e,t){if(Mr&&"function"==typeof Mr.onCommitFiberUnmount)try{Mr.onCommitFiberUnmount(xr,t)}catch(e){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var i=n,r=i.destroy;if(i=i.tag,void 0!==r)if(0!=(4&i))Pl(t,n);else{i=t;try{r()}catch(e){Ul(i,e)}}n=n.next}while(n!==e)}break;case 1:if(ps(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(e){Ul(t,e)}break;case 5:ps(t);break;case 4:Ms(e,t)}}function vs(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function ys(e){return 5===e.tag||3===e.tag||4===e.tag}function bs(e){e:{for(var t=e.return;null!==t;){if(ys(t))break e;t=t.return}throw Error(o(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var i=!1;break;case 3:case 4:t=t.containerInfo,i=!0;break;default:throw Error(o(161))}16&n.flags&&(ge(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||ys(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}i?ws(e,n,t):xs(e,n,t)}function ws(e,t,n){var i=e.tag,r=5===i||6===i;if(r)e=r?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Bi));else if(4!==i&&null!==(e=e.child))for(ws(e,t,n),e=e.sibling;null!==e;)ws(e,t,n),e=e.sibling}function xs(e,t,n){var i=e.tag,r=5===i||6===i;if(r)e=r?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==i&&null!==(e=e.child))for(xs(e,t,n),e=e.sibling;null!==e;)xs(e,t,n),e=e.sibling}function Ms(e,t){for(var n,i,r=t,a=!1;;){if(!a){a=r.return;e:for(;;){if(null===a)throw Error(o(160));switch(n=a.stateNode,a.tag){case 5:i=!1;break e;case 3:case 4:n=n.containerInfo,i=!0;break e}a=a.return}a=!0}if(5===r.tag||6===r.tag){e:for(var s=e,l=r,c=l;;)if(gs(s,c),null!==c.child&&4!==c.tag)c.child.return=c,c=c.child;else{if(c===l)break e;for(;null===c.sibling;){if(null===c.return||c.return===l)break e;c=c.return}c.sibling.return=c.return,c=c.sibling}i?(s=n,l=r.stateNode,8===s.nodeType?s.parentNode.removeChild(l):s.removeChild(l)):n.removeChild(r.stateNode)}else if(4===r.tag){if(null!==r.child){n=r.stateNode.containerInfo,i=!0,r.child.return=r,r=r.child;continue}}else if(gs(e,r),null!==r.child){r.child.return=r,r=r.child;continue}if(r===t)break;for(;null===r.sibling;){if(null===r.return||r.return===t)return;4===(r=r.return).tag&&(a=!1)}r.sibling.return=r.return,r=r.sibling}}function Ss(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var i=n=n.next;do{3==(3&i.tag)&&(e=i.destroy,i.destroy=void 0,void 0!==e&&e()),i=i.next}while(i!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){i=t.memoizedProps;var r=null!==e?e.memoizedProps:i;e=t.type;var a=t.updateQueue;if(t.updateQueue=null,null!==a){for(n[Ji]=i,"input"===e&&"radio"===i.type&&null!=i.name&&te(n,i),Se(e,r),t=Se(e,i),r=0;r<a.length;r+=2){var s=a[r],l=a[r+1];"style"===s?we(n,l):"dangerouslySetInnerHTML"===s?me(n,l):"children"===s?ge(n,l):b(n,s,l,t)}switch(e){case"input":ne(n,i);break;case"textarea":ce(n,i);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!i.multiple,null!=(a=i.value)?oe(n,!!i.multiple,a,!1):e!==!!i.multiple&&(null!=i.defaultValue?oe(n,!!i.multiple,i.defaultValue,!0):oe(n,!!i.multiple,i.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(o(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,wt(n.containerInfo)));case 13:return null!==t.memoizedState&&(Vs=Hr(),ms(t.child,!0)),void Es(t);case 19:return void Es(t);case 23:case 24:return void ms(t,null!==t.memoizedState)}throw Error(o(163))}function Es(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ds),t.forEach((function(t){var i=Fl.bind(null,e,t);n.has(t)||(n.add(t),t.then(i,i))}))}}function _s(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&null!==(t=t.memoizedState)&&null===t.dehydrated}var Ts=Math.ceil,Cs=w.ReactCurrentDispatcher,Is=w.ReactCurrentOwner,Ds=0,Ns=null,Ls=null,Rs=0,Os=0,Ps=lr(0),zs=0,ks=null,Us=0,Bs=0,Fs=0,js=0,Hs=null,Vs=0,Ws=1/0;function Gs(){Ws=Hr()+500}var Qs,Xs=null,Ys=!1,Zs=null,qs=null,Ks=!1,Js=null,$s=90,el=[],tl=[],nl=null,il=0,rl=null,al=-1,ol=0,sl=0,ll=null,cl=!1;function ul(){return 0!=(48&Ds)?Hr():-1!==al?al:al=Hr()}function hl(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===Vr()?1:2;if(0===ol&&(ol=Us),0!==Zr.transition){0!==sl&&(sl=null!==Hs?Hs.pendingLanes:0),e=ol;var t=4186112&~sl;return 0==(t&=-t)&&0==(t=(e=4186112&~e)&-e)&&(t=8192),t}return e=Vr(),e=Bt(0!=(4&Ds)&&98===e?12:e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ol)}function dl(e,t,n){if(50<il)throw il=0,rl=null,Error(o(185));if(null===(e=pl(e,t)))return null;Ht(e,t,n),e===Ns&&(Fs|=t,4===zs&&ml(e,Rs));var i=Vr();1===t?0!=(8&Ds)&&0==(48&Ds)?gl(e):(fl(e,n),0===Ds&&(Gs(),Xr())):(0==(4&Ds)||98!==i&&99!==i||(null===nl?nl=new Set([e]):nl.add(e)),fl(e,n)),Hs=e}function pl(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function fl(e,t){for(var n=e.callbackNode,i=e.suspendedLanes,r=e.pingedLanes,a=e.expirationTimes,s=e.pendingLanes;0<s;){var l=31-Vt(s),c=1<<l,u=a[l];if(-1===u){if(0==(c&i)||0!=(c&r)){u=t,zt(c);var h=Pt;a[l]=10<=h?u+250:6<=h?u+5e3:-1}}else u<=t&&(e.expiredLanes|=c);s&=~c}if(i=kt(e,e===Ns?Rs:0),t=Pt,0===i)null!==n&&(n!==zr&&_r(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==zr&&_r(n)}15===t?(n=gl.bind(null,e),null===Ur?(Ur=[n],Br=Er(Nr,Yr)):Ur.push(n),n=zr):14===t?n=Qr(99,gl.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(o(358,e))}}(t),n=Qr(n,Al.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function Al(e){if(al=-1,sl=ol=0,0!=(48&Ds))throw Error(o(327));var t=e.callbackNode;if(Rl()&&e.callbackNode!==t)return null;var n=kt(e,e===Ns?Rs:0);if(0===n)return null;var i=n,r=Ds;Ds|=16;var a=Sl();for(Ns===e&&Rs===i||(Gs(),xl(e,i));;)try{Tl();break}catch(t){Ml(e,t)}if(ta(),Cs.current=a,Ds=r,null!==Ls?i=0:(Ns=null,Rs=0,i=zs),0!=(Us&Fs))xl(e,0);else if(0!==i){if(2===i&&(Ds|=64,e.hydrate&&(e.hydrate=!1,Qi(e.containerInfo)),0!==(n=Ut(e))&&(i=El(e,n))),1===i)throw t=ks,xl(e,0),ml(e,n),fl(e,Hr()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,i){case 0:case 1:throw Error(o(345));case 2:case 5:Dl(e);break;case 3:if(ml(e,n),(62914560&n)===n&&10<(i=Vs+500-Hr())){if(0!==kt(e,0))break;if(((r=e.suspendedLanes)&n)!==n){ul(),e.pingedLanes|=e.suspendedLanes&r;break}e.timeoutHandle=Wi(Dl.bind(null,e),i);break}Dl(e);break;case 4:if(ml(e,n),(4186112&n)===n)break;for(i=e.eventTimes,r=-1;0<n;){var s=31-Vt(n);a=1<<s,(s=i[s])>r&&(r=s),n&=~a}if(n=r,10<(n=(120>(n=Hr()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Ts(n/1960))-n)){e.timeoutHandle=Wi(Dl.bind(null,e),n);break}Dl(e);break;default:throw Error(o(329))}}return fl(e,Hr()),e.callbackNode===t?Al.bind(null,e):null}function ml(e,t){for(t&=~js,t&=~Fs,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-Vt(t),i=1<<n;e[n]=-1,t&=~i}}function gl(e){if(0!=(48&Ds))throw Error(o(327));if(Rl(),e===Ns&&0!=(e.expiredLanes&Rs)){var t=Rs,n=El(e,t);0!=(Us&Fs)&&(n=El(e,t=kt(e,t)))}else n=El(e,t=kt(e,0));if(0!==e.tag&&2===n&&(Ds|=64,e.hydrate&&(e.hydrate=!1,Qi(e.containerInfo)),0!==(t=Ut(e))&&(n=El(e,t))),1===n)throw n=ks,xl(e,0),ml(e,t),fl(e,Hr()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Dl(e),fl(e,Hr()),null}function vl(e,t){var n=Ds;Ds|=1;try{return e(t)}finally{0===(Ds=n)&&(Gs(),Xr())}}function yl(e,t){var n=Ds;Ds&=-2,Ds|=8;try{return e(t)}finally{0===(Ds=n)&&(Gs(),Xr())}}function bl(e,t){ur(Ps,Os),Os|=t,Us|=t}function wl(){Os=Ps.current,cr(Ps)}function xl(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Gi(n)),null!==Ls)for(n=Ls.return;null!==n;){var i=n;switch(i.tag){case 1:null!=(i=i.type.childContextTypes)&&gr();break;case 3:Ra(),cr(pr),cr(dr),Ya();break;case 5:Pa(i);break;case 4:Ra();break;case 13:case 19:cr(za);break;case 10:na(i);break;case 23:case 24:wl()}n=n.return}Ns=e,Ls=Wl(e.current,null),Rs=Os=Us=t,zs=0,ks=null,js=Fs=Bs=0}function Ml(e,t){for(;;){var n=Ls;try{if(ta(),Za.current=No,to){for(var i=Ja.memoizedState;null!==i;){var r=i.queue;null!==r&&(r.pending=null),i=i.next}to=!1}if(Ka=0,eo=$a=Ja=null,no=!1,Is.current=null,null===n||null===n.return){zs=1,ks=t,Ls=null;break}e:{var a=e,o=n.return,s=n,l=t;if(t=Rs,s.flags|=2048,s.firstEffect=s.lastEffect=null,null!==l&&"object"==typeof l&&"function"==typeof l.then){var c=l;if(0==(2&s.mode)){var u=s.alternate;u?(s.updateQueue=u.updateQueue,s.memoizedState=u.memoizedState,s.lanes=u.lanes):(s.updateQueue=null,s.memoizedState=null)}var h=0!=(1&za.current),d=o;do{var p;if(p=13===d.tag){var f=d.memoizedState;if(null!==f)p=null!==f.dehydrated;else{var A=d.memoizedProps;p=void 0!==A.fallback&&(!0!==A.unstable_avoidThisFallback||!h)}}if(p){var m=d.updateQueue;if(null===m){var g=new Set;g.add(c),d.updateQueue=g}else m.add(c);if(0==(2&d.mode)){if(d.flags|=64,s.flags|=16384,s.flags&=-2981,1===s.tag)if(null===s.alternate)s.tag=17;else{var v=ca(-1,1);v.tag=2,ua(s,v)}s.lanes|=1;break e}l=void 0,s=t;var y=a.pingCache;if(null===y?(y=a.pingCache=new cs,l=new Set,y.set(c,l)):void 0===(l=y.get(c))&&(l=new Set,y.set(c,l)),!l.has(s)){l.add(s);var b=Bl.bind(null,a,c,s);c.then(b,b)}d.flags|=4096,d.lanes=t;break e}d=d.return}while(null!==d);l=Error((X(s.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==zs&&(zs=2),l=ss(l,s),d=o;do{switch(d.tag){case 3:a=l,d.flags|=4096,t&=-t,d.lanes|=t,ha(d,us(0,a,t));break e;case 1:a=l;var w=d.type,x=d.stateNode;if(0==(64&d.flags)&&("function"==typeof w.getDerivedStateFromError||null!==x&&"function"==typeof x.componentDidCatch&&(null===qs||!qs.has(x)))){d.flags|=4096,t&=-t,d.lanes|=t,ha(d,hs(d,a,t));break e}}d=d.return}while(null!==d)}Il(n)}catch(e){t=e,Ls===n&&null!==n&&(Ls=n=n.return);continue}break}}function Sl(){var e=Cs.current;return Cs.current=No,null===e?No:e}function El(e,t){var n=Ds;Ds|=16;var i=Sl();for(Ns===e&&Rs===t||xl(e,t);;)try{_l();break}catch(t){Ml(e,t)}if(ta(),Ds=n,Cs.current=i,null!==Ls)throw Error(o(261));return Ns=null,Rs=0,zs}function _l(){for(;null!==Ls;)Cl(Ls)}function Tl(){for(;null!==Ls&&!Tr();)Cl(Ls)}function Cl(e){var t=Qs(e.alternate,e,Os);e.memoizedProps=e.pendingProps,null===t?Il(e):Ls=t,Is.current=null}function Il(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=as(n,t,Os)))return void(Ls=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Os)||0==(4&n.mode)){for(var i=0,r=n.child;null!==r;)i|=r.lanes|r.childLanes,r=r.sibling;n.childLanes=i}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=os(t)))return n.flags&=2047,void(Ls=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Ls=t);Ls=t=e}while(null!==t);0===zs&&(zs=5)}function Dl(e){var t=Vr();return Gr(99,Nl.bind(null,e,t)),null}function Nl(e,t){do{Rl()}while(null!==Js);if(0!=(48&Ds))throw Error(o(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(o(177));e.callbackNode=null;var i=n.lanes|n.childLanes,r=i,a=e.pendingLanes&~r;e.pendingLanes=r,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=r,e.mutableReadLanes&=r,e.entangledLanes&=r,r=e.entanglements;for(var s=e.eventTimes,l=e.expirationTimes;0<a;){var c=31-Vt(a),u=1<<c;r[c]=0,s[c]=-1,l[c]=-1,a&=~u}if(null!==nl&&0==(24&i)&&nl.has(e)&&nl.delete(e),e===Ns&&(Ls=Ns=null,Rs=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,i=n.firstEffect):i=n:i=n.firstEffect,null!==i){if(r=Ds,Ds|=32,Is.current=null,Fi=Yt,mi(s=Ai())){if("selectionStart"in s)l={start:s.selectionStart,end:s.selectionEnd};else e:if(l=(l=s.ownerDocument)&&l.defaultView||window,(u=l.getSelection&&l.getSelection())&&0!==u.rangeCount){l=u.anchorNode,a=u.anchorOffset,c=u.focusNode,u=u.focusOffset;try{l.nodeType,c.nodeType}catch(e){l=null;break e}var h=0,d=-1,p=-1,f=0,A=0,m=s,g=null;t:for(;;){for(var v;m!==l||0!==a&&3!==m.nodeType||(d=h+a),m!==c||0!==u&&3!==m.nodeType||(p=h+u),3===m.nodeType&&(h+=m.nodeValue.length),null!==(v=m.firstChild);)g=m,m=v;for(;;){if(m===s)break t;if(g===l&&++f===a&&(d=h),g===c&&++A===u&&(p=h),null!==(v=m.nextSibling))break;g=(m=g).parentNode}m=v}l=-1===d||-1===p?null:{start:d,end:p}}else l=null;l=l||{start:0,end:0}}else l=null;ji={focusedElem:s,selectionRange:l},Yt=!1,ll=null,cl=!1,Xs=i;do{try{Ll()}catch(e){if(null===Xs)throw Error(o(330));Ul(Xs,e),Xs=Xs.nextEffect}}while(null!==Xs);ll=null,Xs=i;do{try{for(s=e;null!==Xs;){var y=Xs.flags;if(16&y&&ge(Xs.stateNode,""),128&y){var b=Xs.alternate;if(null!==b){var w=b.ref;null!==w&&("function"==typeof w?w(null):w.current=null)}}switch(1038&y){case 2:bs(Xs),Xs.flags&=-3;break;case 6:bs(Xs),Xs.flags&=-3,Ss(Xs.alternate,Xs);break;case 1024:Xs.flags&=-1025;break;case 1028:Xs.flags&=-1025,Ss(Xs.alternate,Xs);break;case 4:Ss(Xs.alternate,Xs);break;case 8:Ms(s,l=Xs);var x=l.alternate;vs(l),null!==x&&vs(x)}Xs=Xs.nextEffect}}catch(e){if(null===Xs)throw Error(o(330));Ul(Xs,e),Xs=Xs.nextEffect}}while(null!==Xs);if(w=ji,b=Ai(),y=w.focusedElem,s=w.selectionRange,b!==y&&y&&y.ownerDocument&&fi(y.ownerDocument.documentElement,y)){null!==s&&mi(y)&&(b=s.start,void 0===(w=s.end)&&(w=b),"selectionStart"in y?(y.selectionStart=b,y.selectionEnd=Math.min(w,y.value.length)):(w=(b=y.ownerDocument||document)&&b.defaultView||window).getSelection&&(w=w.getSelection(),l=y.textContent.length,x=Math.min(s.start,l),s=void 0===s.end?x:Math.min(s.end,l),!w.extend&&x>s&&(l=s,s=x,x=l),l=pi(y,x),a=pi(y,s),l&&a&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==a.node||w.focusOffset!==a.offset)&&((b=b.createRange()).setStart(l.node,l.offset),w.removeAllRanges(),x>s?(w.addRange(b),w.extend(a.node,a.offset)):(b.setEnd(a.node,a.offset),w.addRange(b))))),b=[];for(w=y;w=w.parentNode;)1===w.nodeType&&b.push({element:w,left:w.scrollLeft,top:w.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<b.length;y++)(w=b[y]).element.scrollLeft=w.left,w.element.scrollTop=w.top}Yt=!!Fi,ji=Fi=null,e.current=n,Xs=i;do{try{for(y=e;null!==Xs;){var M=Xs.flags;if(36&M&&As(y,Xs.alternate,Xs),128&M){b=void 0;var S=Xs.ref;if(null!==S){var E=Xs.stateNode;Xs.tag,b=E,"function"==typeof S?S(b):S.current=b}}Xs=Xs.nextEffect}}catch(e){if(null===Xs)throw Error(o(330));Ul(Xs,e),Xs=Xs.nextEffect}}while(null!==Xs);Xs=null,kr(),Ds=r}else e.current=n;if(Ks)Ks=!1,Js=e,$s=t;else for(Xs=i;null!==Xs;)t=Xs.nextEffect,Xs.nextEffect=null,8&Xs.flags&&((M=Xs).sibling=null,M.stateNode=null),Xs=t;if(0===(i=e.pendingLanes)&&(qs=null),1===i?e===rl?il++:(il=0,rl=e):il=0,n=n.stateNode,Mr&&"function"==typeof Mr.onCommitFiberRoot)try{Mr.onCommitFiberRoot(xr,n,void 0,64==(64&n.current.flags))}catch(e){}if(fl(e,Hr()),Ys)throw Ys=!1,e=Zs,Zs=null,e;return 0!=(8&Ds)||Xr(),null}function Ll(){for(;null!==Xs;){var e=Xs.alternate;cl||null===ll||(0!=(8&Xs.flags)?$e(Xs,ll)&&(cl=!0):13===Xs.tag&&_s(e,Xs)&&$e(Xs,ll)&&(cl=!0));var t=Xs.flags;0!=(256&t)&&fs(e,Xs),0==(512&t)||Ks||(Ks=!0,Qr(97,(function(){return Rl(),null}))),Xs=Xs.nextEffect}}function Rl(){if(90!==$s){var e=97<$s?97:$s;return $s=90,Gr(e,zl)}return!1}function Ol(e,t){el.push(t,e),Ks||(Ks=!0,Qr(97,(function(){return Rl(),null})))}function Pl(e,t){tl.push(t,e),Ks||(Ks=!0,Qr(97,(function(){return Rl(),null})))}function zl(){if(null===Js)return!1;var e=Js;if(Js=null,0!=(48&Ds))throw Error(o(331));var t=Ds;Ds|=32;var n=tl;tl=[];for(var i=0;i<n.length;i+=2){var r=n[i],a=n[i+1],s=r.destroy;if(r.destroy=void 0,"function"==typeof s)try{s()}catch(e){if(null===a)throw Error(o(330));Ul(a,e)}}for(n=el,el=[],i=0;i<n.length;i+=2){r=n[i],a=n[i+1];try{var l=r.create;r.destroy=l()}catch(e){if(null===a)throw Error(o(330));Ul(a,e)}}for(l=e.current.firstEffect;null!==l;)e=l.nextEffect,l.nextEffect=null,8&l.flags&&(l.sibling=null,l.stateNode=null),l=e;return Ds=t,Xr(),!0}function kl(e,t,n){ua(e,t=us(0,t=ss(n,t),1)),t=ul(),null!==(e=pl(e,1))&&(Ht(e,1,t),fl(e,t))}function Ul(e,t){if(3===e.tag)kl(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){kl(n,e,t);break}if(1===n.tag){var i=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof i.componentDidCatch&&(null===qs||!qs.has(i))){var r=hs(n,e=ss(t,e),1);if(ua(n,r),r=ul(),null!==(n=pl(n,1)))Ht(n,1,r),fl(n,r);else if("function"==typeof i.componentDidCatch&&(null===qs||!qs.has(i)))try{i.componentDidCatch(t,e)}catch(e){}break}}n=n.return}}function Bl(e,t,n){var i=e.pingCache;null!==i&&i.delete(t),t=ul(),e.pingedLanes|=e.suspendedLanes&n,Ns===e&&(Rs&n)===n&&(4===zs||3===zs&&(62914560&Rs)===Rs&&500>Hr()-Vs?xl(e,0):js|=n),fl(e,t)}function Fl(e,t){var n=e.stateNode;null!==n&&n.delete(t),0==(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===Vr()?1:2:(0===ol&&(ol=Us),0===(t=Ft(62914560&~ol))&&(t=4194304))),n=ul(),null!==(e=pl(e,t))&&(Ht(e,t,n),fl(e,n))}function jl(e,t,n,i){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Hl(e,t,n,i){return new jl(e,t,n,i)}function Vl(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Wl(e,t){var n=e.alternate;return null===n?((n=Hl(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Gl(e,t,n,i,r,a){var s=2;if(i=e,"function"==typeof e)Vl(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case S:return Ql(n.children,r,a,t);case z:s=8,r|=16;break;case E:s=8,r|=1;break;case _:return(e=Hl(12,n,t,8|r)).elementType=_,e.type=_,e.lanes=a,e;case D:return(e=Hl(13,n,t,r)).type=D,e.elementType=D,e.lanes=a,e;case N:return(e=Hl(19,n,t,r)).elementType=N,e.lanes=a,e;case k:return Xl(n,r,a,t);case U:return(e=Hl(24,n,t,r)).elementType=U,e.lanes=a,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:s=10;break e;case C:s=9;break e;case I:s=11;break e;case L:s=14;break e;case R:s=16,i=null;break e;case O:s=22;break e}throw Error(o(130,null==e?e:typeof e,""))}return(t=Hl(s,n,t,r)).elementType=e,t.type=i,t.lanes=a,t}function Ql(e,t,n,i){return(e=Hl(7,e,i,t)).lanes=n,e}function Xl(e,t,n,i){return(e=Hl(23,e,i,t)).elementType=k,e.lanes=n,e}function Yl(e,t,n){return(e=Hl(6,e,null,t)).lanes=n,e}function Zl(e,t,n){return(t=Hl(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function ql(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=jt(0),this.expirationTimes=jt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=jt(0),this.mutableSourceEagerHydrationData=null}function Kl(e,t,n,i){var r=t.current,a=ul(),s=hl(r);e:if(n){t:{if(Ze(n=n._reactInternals)!==n||1!==n.tag)throw Error(o(170));var l=n;do{switch(l.tag){case 3:l=l.stateNode.context;break t;case 1:if(mr(l.type)){l=l.stateNode.__reactInternalMemoizedMergedChildContext;break t}}l=l.return}while(null!==l);throw Error(o(171))}if(1===n.tag){var c=n.type;if(mr(c)){n=yr(n,c,l);break e}}n=l}else n=hr;return null===t.context?t.context=n:t.pendingContext=n,(t=ca(a,s)).payload={element:e},null!==(i=void 0===i?null:i)&&(t.callback=i),ua(r,t),dl(r,s,a),s}function Jl(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function $l(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function ec(e,t){$l(e,t),(e=e.alternate)&&$l(e,t)}function tc(e,t,n){var i=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new ql(e,t,null!=n&&!0===n.hydrate),t=Hl(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,sa(t),e[$i]=n.current,Ni(8===e.nodeType?e.parentNode:e),i)for(e=0;e<i.length;e++){var r=(t=i[e])._getVersion;r=r(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,r]:n.mutableSourceEagerHydrationData.push(t,r)}this._internalRoot=n}function nc(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function ic(e,t,n,i,r){var a=n._reactRootContainer;if(a){var o=a._internalRoot;if("function"==typeof r){var s=r;r=function(){var e=Jl(o);s.call(e)}}Kl(t,o,e,r)}else{if(a=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new tc(e,0,t?{hydrate:!0}:void 0)}(n,i),o=a._internalRoot,"function"==typeof r){var l=r;r=function(){var e=Jl(o);l.call(e)}}yl((function(){Kl(t,o,e,r)}))}return Jl(o)}function rc(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nc(t))throw Error(o(200));return function(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:M,key:null==i?null:""+i,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Qs=function(e,t,n){var i=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||pr.current)zo=!0;else{if(0==(n&i)){switch(zo=!1,t.tag){case 3:Qo(t),Qa();break;case 5:Oa(t);break;case 1:mr(t.type)&&br(t);break;case 4:La(t,t.stateNode.containerInfo);break;case 10:i=t.memoizedProps.value;var r=t.type._context;ur(Kr,r._currentValue),r._currentValue=i;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Jo(e,t,n):(ur(za,1&za.current),null!==(t=is(e,t,n))?t.sibling:null);ur(za,1&za.current);break;case 19:if(i=0!=(n&t.childLanes),0!=(64&e.flags)){if(i)return ns(e,t,n);t.flags|=64}if(null!==(r=t.memoizedState)&&(r.rendering=null,r.tail=null,r.lastEffect=null),ur(za,za.current),i)break;return null;case 23:case 24:return t.lanes=0,jo(e,t,n)}return is(e,t,n)}zo=0!=(16384&e.flags)}else zo=!1;switch(t.lanes=0,t.tag){case 2:if(i=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,r=Ar(t,dr.current),ra(t,n),r=ao(null,t,i,e,r,n),t.flags|=1,"object"==typeof r&&null!==r&&"function"==typeof r.render&&void 0===r.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,mr(i)){var a=!0;br(t)}else a=!1;t.memoizedState=null!==r.state&&void 0!==r.state?r.state:null,sa(t);var s=i.getDerivedStateFromProps;"function"==typeof s&&Aa(t,i,s,e),r.updater=ma,t.stateNode=r,r._reactInternals=t,ba(t,i,e,n),t=Go(null,t,i,!0,a,n)}else t.tag=0,ko(null,t,r,n),t=t.child;return t;case 16:r=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,r=(a=r._init)(r._payload),t.type=r,a=t.tag=function(e){if("function"==typeof e)return Vl(e)?1:0;if(null!=e){if((e=e.$$typeof)===I)return 11;if(e===L)return 14}return 2}(r),e=qr(r,e),a){case 0:t=Vo(null,t,r,e,n);break e;case 1:t=Wo(null,t,r,e,n);break e;case 11:t=Uo(null,t,r,e,n);break e;case 14:t=Bo(null,t,r,qr(r.type,e),i,n);break e}throw Error(o(306,r,""))}return t;case 0:return i=t.type,r=t.pendingProps,Vo(e,t,i,r=t.elementType===i?r:qr(i,r),n);case 1:return i=t.type,r=t.pendingProps,Wo(e,t,i,r=t.elementType===i?r:qr(i,r),n);case 3:if(Qo(t),i=t.updateQueue,null===e||null===i)throw Error(o(282));if(i=t.pendingProps,r=null!==(r=t.memoizedState)?r.element:null,la(e,t),da(t,i,null,n),(i=t.memoizedState.element)===r)Qa(),t=is(e,t,n);else{if((a=(r=t.stateNode).hydrate)&&(Ba=Xi(t.stateNode.containerInfo.firstChild),Ua=t,a=Fa=!0),a){if(null!=(e=r.mutableSourceEagerHydrationData))for(r=0;r<e.length;r+=2)(a=e[r])._workInProgressVersionPrimary=e[r+1],Xa.push(a);for(n=_a(t,null,i,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else ko(e,t,i,n),Qa();t=t.child}return t;case 5:return Oa(t),null===e&&Va(t),i=t.type,r=t.pendingProps,a=null!==e?e.memoizedProps:null,s=r.children,Vi(i,r)?s=null:null!==a&&Vi(i,a)&&(t.flags|=16),Ho(e,t),ko(e,t,s,n),t.child;case 6:return null===e&&Va(t),null;case 13:return Jo(e,t,n);case 4:return La(t,t.stateNode.containerInfo),i=t.pendingProps,null===e?t.child=Ea(t,null,i,n):ko(e,t,i,n),t.child;case 11:return i=t.type,r=t.pendingProps,Uo(e,t,i,r=t.elementType===i?r:qr(i,r),n);case 7:return ko(e,t,t.pendingProps,n),t.child;case 8:case 12:return ko(e,t,t.pendingProps.children,n),t.child;case 10:e:{i=t.type._context,r=t.pendingProps,s=t.memoizedProps,a=r.value;var l=t.type._context;if(ur(Kr,l._currentValue),l._currentValue=a,null!==s)if(l=s.value,0==(a=ci(l,a)?0:0|("function"==typeof i._calculateChangedBits?i._calculateChangedBits(l,a):1073741823))){if(s.children===r.children&&!pr.current){t=is(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var c=l.dependencies;if(null!==c){s=l.child;for(var u=c.firstContext;null!==u;){if(u.context===i&&0!=(u.observedBits&a)){1===l.tag&&((u=ca(-1,n&-n)).tag=2,ua(l,u)),l.lanes|=n,null!==(u=l.alternate)&&(u.lanes|=n),ia(l.return,n),c.lanes|=n;break}u=u.next}}else s=10===l.tag&&l.type===t.type?null:l.child;if(null!==s)s.return=l;else for(s=l;null!==s;){if(s===t){s=null;break}if(null!==(l=s.sibling)){l.return=s.return,s=l;break}s=s.return}l=s}ko(e,t,r.children,n),t=t.child}return t;case 9:return r=t.type,i=(a=t.pendingProps).children,ra(t,n),i=i(r=aa(r,a.unstable_observedBits)),t.flags|=1,ko(e,t,i,n),t.child;case 14:return a=qr(r=t.type,t.pendingProps),Bo(e,t,r,a=qr(r.type,a),i,n);case 15:return Fo(e,t,t.type,t.pendingProps,i,n);case 17:return i=t.type,r=t.pendingProps,r=t.elementType===i?r:qr(i,r),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,mr(i)?(e=!0,br(t)):e=!1,ra(t,n),va(t,i,r),ba(t,i,r,n),Go(null,t,i,!0,e,n);case 19:return ns(e,t,n);case 23:case 24:return jo(e,t,n)}throw Error(o(156,t.tag))},tc.prototype.render=function(e){Kl(e,this._internalRoot,null,null)},tc.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Kl(null,e,null,(function(){t[$i]=null}))},et=function(e){13===e.tag&&(dl(e,4,ul()),ec(e,4))},tt=function(e){13===e.tag&&(dl(e,67108864,ul()),ec(e,67108864))},nt=function(e){if(13===e.tag){var t=ul(),n=hl(e);dl(e,n,t),ec(e,n)}},it=function(e,t){return t()},_e=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var i=n[t];if(i!==e&&i.form===e.form){var r=rr(i);if(!r)throw Error(o(90));K(i),ne(i,r)}}}break;case"textarea":ce(e,n);break;case"select":null!=(t=n.value)&&oe(e,!!n.multiple,t,!1)}},Le=vl,Re=function(e,t,n,i,r){var a=Ds;Ds|=4;try{return Gr(98,e.bind(null,t,n,i,r))}finally{0===(Ds=a)&&(Gs(),Xr())}},Oe=function(){0==(49&Ds)&&(function(){if(null!==nl){var e=nl;nl=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,fl(e,Hr())}))}Xr()}(),Rl())},Pe=function(e,t){var n=Ds;Ds|=2;try{return e(t)}finally{0===(Ds=n)&&(Gs(),Xr())}};var ac={Events:[nr,ir,rr,De,Ne,Rl,{current:!1}]},oc={findFiberByHostInstance:tr,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},sc={bundleType:oc.bundleType,version:oc.version,rendererPackageName:oc.rendererPackageName,rendererConfig:oc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Je(e))?null:e.stateNode},findFiberByHostInstance:oc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var lc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!lc.isDisabled&&lc.supportsFiber)try{xr=lc.inject(sc),Mr=lc}catch(Ae){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ac,t.createPortal=rc,t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(o(188));throw Error(o(268,Object.keys(e)))}return null===(e=Je(t))?null:e.stateNode},t.flushSync=function(e,t){var n=Ds;if(0!=(48&n))return e(t);Ds|=1;try{if(e)return Gr(99,e.bind(null,t))}finally{Ds=n,Xr()}},t.hydrate=function(e,t,n){if(!nc(t))throw Error(o(200));return ic(null,e,t,!0,n)},t.render=function(e,t,n){if(!nc(t))throw Error(o(200));return ic(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!nc(e))throw Error(o(40));return!!e._reactRootContainer&&(yl((function(){ic(null,null,e,!1,(function(){e._reactRootContainer=null,e[$i]=null}))})),!0)},t.unstable_batchedUpdates=vl,t.unstable_createPortal=function(e,t){return rc(e,t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)},t.unstable_renderSubtreeIntoContainer=function(e,t,n,i){if(!nc(n))throw Error(o(200));if(null==e||void 0===e._reactInternals)throw Error(o(38));return ic(e,t,n,!1,i)},t.version="17.0.2"},935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(448)},921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,i=n?Symbol.for("react.element"):60103,r=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,o=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,h=n?Symbol.for("react.concurrent_mode"):60111,d=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,f=n?Symbol.for("react.suspense_list"):60120,A=n?Symbol.for("react.memo"):60115,m=n?Symbol.for("react.lazy"):60116,g=n?Symbol.for("react.block"):60121,v=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,b=n?Symbol.for("react.scope"):60119;function w(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case i:switch(e=e.type){case u:case h:case a:case s:case o:case p:return e;default:switch(e=e&&e.$$typeof){case c:case d:case m:case A:case l:return e;default:return t}}case r:return t}}}function x(e){return w(e)===h}t.AsyncMode=u,t.ConcurrentMode=h,t.ContextConsumer=c,t.ContextProvider=l,t.Element=i,t.ForwardRef=d,t.Fragment=a,t.Lazy=m,t.Memo=A,t.Portal=r,t.Profiler=s,t.StrictMode=o,t.Suspense=p,t.isAsyncMode=function(e){return x(e)||w(e)===u},t.isConcurrentMode=x,t.isContextConsumer=function(e){return w(e)===c},t.isContextProvider=function(e){return w(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===i},t.isForwardRef=function(e){return w(e)===d},t.isFragment=function(e){return w(e)===a},t.isLazy=function(e){return w(e)===m},t.isMemo=function(e){return w(e)===A},t.isPortal=function(e){return w(e)===r},t.isProfiler=function(e){return w(e)===s},t.isStrictMode=function(e){return w(e)===o},t.isSuspense=function(e){return w(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===h||e===s||e===o||e===p||e===f||"object"==typeof e&&null!==e&&(e.$$typeof===m||e.$$typeof===A||e.$$typeof===l||e.$$typeof===c||e.$$typeof===d||e.$$typeof===v||e.$$typeof===y||e.$$typeof===b||e.$$typeof===g)},t.typeOf=w},864:(e,t,n)=>{"use strict";e.exports=n(921)},408:(e,t,n)=>{"use strict";var i=n(418),r=60103,a=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var o=60109,s=60110,l=60112;t.Suspense=60113;var c=60115,u=60116;if("function"==typeof Symbol&&Symbol.for){var h=Symbol.for;r=h("react.element"),a=h("react.portal"),t.Fragment=h("react.fragment"),t.StrictMode=h("react.strict_mode"),t.Profiler=h("react.profiler"),o=h("react.provider"),s=h("react.context"),l=h("react.forward_ref"),t.Suspense=h("react.suspense"),c=h("react.memo"),u=h("react.lazy")}var d="function"==typeof Symbol&&Symbol.iterator;function p(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var f={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},A={};function m(e,t,n){this.props=e,this.context=t,this.refs=A,this.updater=n||f}function g(){}function v(e,t,n){this.props=e,this.context=t,this.refs=A,this.updater=n||f}m.prototype.isReactComponent={},m.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(p(85));this.updater.enqueueSetState(this,e,t,"setState")},m.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},g.prototype=m.prototype;var y=v.prototype=new g;y.constructor=v,i(y,m.prototype),y.isPureReactComponent=!0;var b={current:null},w=Object.prototype.hasOwnProperty,x={key:!0,ref:!0,__self:!0,__source:!0};function M(e,t,n){var i,a={},o=null,s=null;if(null!=t)for(i in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(o=""+t.key),t)w.call(t,i)&&!x.hasOwnProperty(i)&&(a[i]=t[i]);var l=arguments.length-2;if(1===l)a.children=n;else if(1<l){for(var c=Array(l),u=0;u<l;u++)c[u]=arguments[u+2];a.children=c}if(e&&e.defaultProps)for(i in l=e.defaultProps)void 0===a[i]&&(a[i]=l[i]);return{$$typeof:r,type:e,key:o,ref:s,props:a,_owner:b.current}}function S(e){return"object"==typeof e&&null!==e&&e.$$typeof===r}var E=/\/+/g;function _(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function T(e,t,n,i,o){var s=typeof e;"undefined"!==s&&"boolean"!==s||(e=null);var l=!1;if(null===e)l=!0;else switch(s){case"string":case"number":l=!0;break;case"object":switch(e.$$typeof){case r:case a:l=!0}}if(l)return o=o(l=e),e=""===i?"."+_(l,0):i,Array.isArray(o)?(n="",null!=e&&(n=e.replace(E,"$&/")+"/"),T(o,t,n,"",(function(e){return e}))):null!=o&&(S(o)&&(o=function(e,t){return{$$typeof:r,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(o,n+(!o.key||l&&l.key===o.key?"":(""+o.key).replace(E,"$&/")+"/")+e)),t.push(o)),1;if(l=0,i=""===i?".":i+":",Array.isArray(e))for(var c=0;c<e.length;c++){var u=i+_(s=e[c],c);l+=T(s,t,n,u,o)}else if(u=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=d&&e[d]||e["@@iterator"])?e:null}(e),"function"==typeof u)for(e=u.call(e),c=0;!(s=e.next()).done;)l+=T(s=s.value,t,n,u=i+_(s,c++),o);else if("object"===s)throw t=""+e,Error(p(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return l}function C(e,t,n){if(null==e)return e;var i=[],r=0;return T(e,i,"","",(function(e){return t.call(n,e,r++)})),i}function I(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var D={current:null};function N(){var e=D.current;if(null===e)throw Error(p(321));return e}var L={ReactCurrentDispatcher:D,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:b,IsSomeRendererActing:{current:!1},assign:i};t.Children={map:C,forEach:function(e,t,n){C(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return C(e,(function(){t++})),t},toArray:function(e){return C(e,(function(e){return e}))||[]},only:function(e){if(!S(e))throw Error(p(143));return e}},t.Component=m,t.PureComponent=v,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=L,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var a=i({},e.props),o=e.key,s=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(s=t.ref,l=b.current),void 0!==t.key&&(o=""+t.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(u in t)w.call(t,u)&&!x.hasOwnProperty(u)&&(a[u]=void 0===t[u]&&void 0!==c?c[u]:t[u])}var u=arguments.length-2;if(1===u)a.children=n;else if(1<u){c=Array(u);for(var h=0;h<u;h++)c[h]=arguments[h+2];a.children=c}return{$$typeof:r,type:e.type,key:o,ref:s,props:a,_owner:l}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:s,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:o,_context:e},e.Consumer=e},t.createElement=M,t.createFactory=function(e){var t=M.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:l,render:e}},t.isValidElement=S,t.lazy=function(e){return{$$typeof:u,_payload:{_status:-1,_result:e},_init:I}},t.memo=function(e,t){return{$$typeof:c,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return N().useCallback(e,t)},t.useContext=function(e,t){return N().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return N().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return N().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return N().useLayoutEffect(e,t)},t.useMemo=function(e,t){return N().useMemo(e,t)},t.useReducer=function(e,t,n){return N().useReducer(e,t,n)},t.useRef=function(e){return N().useRef(e)},t.useState=function(e){return N().useState(e)},t.version="17.0.2"},294:(e,t,n)=>{"use strict";e.exports=n(408)},53:(e,t)=>{"use strict";var n,i,r,a;if("object"==typeof performance&&"function"==typeof performance.now){var o=performance;t.unstable_now=function(){return o.now()}}else{var s=Date,l=s.now();t.unstable_now=function(){return s.now()-l}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var c=null,u=null,h=function(){if(null!==c)try{var e=t.unstable_now();c(!0,e),c=null}catch(e){throw setTimeout(h,0),e}};n=function(e){null!==c?setTimeout(n,0,e):(c=e,setTimeout(h,0))},i=function(e,t){u=setTimeout(e,t)},r=function(){clearTimeout(u)},t.unstable_shouldYield=function(){return!1},a=t.unstable_forceFrameRate=function(){}}else{var d=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var f=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof f&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var A=!1,m=null,g=-1,v=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},a=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):v=0<e?Math.floor(1e3/e):5};var b=new MessageChannel,w=b.port2;b.port1.onmessage=function(){if(null!==m){var e=t.unstable_now();y=e+v;try{m(!0,e)?w.postMessage(null):(A=!1,m=null)}catch(e){throw w.postMessage(null),e}}else A=!1},n=function(e){m=e,A||(A=!0,w.postMessage(null))},i=function(e,n){g=d((function(){e(t.unstable_now())}),n)},r=function(){p(g),g=-1}}function x(e,t){var n=e.length;e.push(t);e:for(;;){var i=n-1>>>1,r=e[i];if(!(void 0!==r&&0<E(r,t)))break e;e[i]=t,e[n]=r,n=i}}function M(e){return void 0===(e=e[0])?null:e}function S(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var i=0,r=e.length;i<r;){var a=2*(i+1)-1,o=e[a],s=a+1,l=e[s];if(void 0!==o&&0>E(o,n))void 0!==l&&0>E(l,o)?(e[i]=l,e[s]=n,i=s):(e[i]=o,e[a]=n,i=a);else{if(!(void 0!==l&&0>E(l,n)))break e;e[i]=l,e[s]=n,i=s}}}return t}return null}function E(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var _=[],T=[],C=1,I=null,D=3,N=!1,L=!1,R=!1;function O(e){for(var t=M(T);null!==t;){if(null===t.callback)S(T);else{if(!(t.startTime<=e))break;S(T),t.sortIndex=t.expirationTime,x(_,t)}t=M(T)}}function P(e){if(R=!1,O(e),!L)if(null!==M(_))L=!0,n(z);else{var t=M(T);null!==t&&i(P,t.startTime-e)}}function z(e,n){L=!1,R&&(R=!1,r()),N=!0;var a=D;try{for(O(n),I=M(_);null!==I&&(!(I.expirationTime>n)||e&&!t.unstable_shouldYield());){var o=I.callback;if("function"==typeof o){I.callback=null,D=I.priorityLevel;var s=o(I.expirationTime<=n);n=t.unstable_now(),"function"==typeof s?I.callback=s:I===M(_)&&S(_),O(n)}else S(_);I=M(_)}if(null!==I)var l=!0;else{var c=M(T);null!==c&&i(P,c.startTime-n),l=!1}return l}finally{I=null,D=a,N=!1}}var k=a;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){L||N||(L=!0,n(z))},t.unstable_getCurrentPriorityLevel=function(){return D},t.unstable_getFirstCallbackNode=function(){return M(_)},t.unstable_next=function(e){switch(D){case 1:case 2:case 3:var t=3;break;default:t=D}var n=D;D=t;try{return e()}finally{D=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=k,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=D;D=e;try{return t()}finally{D=n}},t.unstable_scheduleCallback=function(e,a,o){var s=t.unstable_now();switch(o="object"==typeof o&&null!==o&&"number"==typeof(o=o.delay)&&0<o?s+o:s,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:C++,callback:a,priorityLevel:e,startTime:o,expirationTime:l=o+l,sortIndex:-1},o>s?(e.sortIndex=o,x(T,e),null===M(_)&&e===M(T)&&(R?r():R=!0,i(P,o-s))):(e.sortIndex=l,x(_,e),L||N||(L=!0,n(z))),e},t.unstable_wrapCallback=function(e){var t=D;return function(){var n=D;D=t;try{return e.apply(this,arguments)}finally{D=n}}}},840:(e,t,n)=>{"use strict";e.exports=n(53)},379:e=>{"use strict";var t=[];function n(e){for(var n=-1,i=0;i<t.length;i++)if(t[i].identifier===e){n=i;break}return n}function i(e,i){for(var a={},o=[],s=0;s<e.length;s++){var l=e[s],c=i.base?l[0]+i.base:l[0],u=a[c]||0,h="".concat(c," ").concat(u);a[c]=u+1;var d=n(h),p={css:l[1],media:l[2],sourceMap:l[3],supports:l[4],layer:l[5]};if(-1!==d)t[d].references++,t[d].updater(p);else{var f=r(p,i);i.byIndex=s,t.splice(s,0,{identifier:h,updater:f,references:1})}o.push(h)}return o}function r(e,t){var n=t.domAPI(t);return n.update(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap&&t.supports===e.supports&&t.layer===e.layer)return;n.update(e=t)}else n.remove()}}e.exports=function(e,r){var a=i(e=e||[],r=r||{});return function(e){e=e||[];for(var o=0;o<a.length;o++){var s=n(a[o]);t[s].references--}for(var l=i(e,r),c=0;c<a.length;c++){var u=n(a[c]);0===t[u].references&&(t[u].updater(),t.splice(u,1))}a=l}}},569:e=>{"use strict";var t={};e.exports=function(e,n){var i=function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}t[e]=n}return t[e]}(e);if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(n)}},216:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},565:(e,t,n)=>{"use strict";e.exports=function(e){var t=n.nc;t&&e.setAttribute("nonce",t)}},795:e=>{"use strict";e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=e.insertStyleElement(e);return{update:function(n){!function(e,t,n){var i="";n.supports&&(i+="@supports (".concat(n.supports,") {")),n.media&&(i+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(i+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),i+=n.css,r&&(i+="}"),n.media&&(i+="}"),n.supports&&(i+="}");var a=n.sourceMap;a&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),t.styleTagTransform(i,e,t.options)}(t,e,n)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:e=>{"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},238:function(e,t,n){var i;!function(r,a){"use strict";var o="function",s="undefined",l="object",c="string",u="major",h="model",d="name",p="type",f="vendor",A="version",m="architecture",g="console",v="mobile",y="tablet",b="smarttv",w="wearable",x="embedded",M="Amazon",S="Apple",E="ASUS",_="BlackBerry",T="Browser",C="Chrome",I="Firefox",D="Google",N="Huawei",L="LG",R="Microsoft",O="Motorola",P="Opera",z="Samsung",k="Sharp",U="Sony",B="Xiaomi",F="Zebra",j="Facebook",H="Chromium OS",V="Mac OS",W=function(e){for(var t={},n=0;n<e.length;n++)t[e[n].toUpperCase()]=e[n];return t},G=function(e,t){return typeof e===c&&-1!==Q(t).indexOf(Q(e))},Q=function(e){return e.toLowerCase()},X=function(e,t){if(typeof e===c)return e=e.replace(/^\s\s*/,""),typeof t===s?e:e.substring(0,500)},Y=function(e,t){for(var n,i,r,s,c,u,h=0;h<t.length&&!c;){var d=t[h],p=t[h+1];for(n=i=0;n<d.length&&!c&&d[n];)if(c=d[n++].exec(e))for(r=0;r<p.length;r++)u=c[++i],typeof(s=p[r])===l&&s.length>0?2===s.length?typeof s[1]==o?this[s[0]]=s[1].call(this,u):this[s[0]]=s[1]:3===s.length?typeof s[1]!==o||s[1].exec&&s[1].test?this[s[0]]=u?u.replace(s[1],s[2]):a:this[s[0]]=u?s[1].call(this,u,s[2]):a:4===s.length&&(this[s[0]]=u?s[3].call(this,u.replace(s[1],s[2])):a):this[s]=u||a;h+=2}},Z=function(e,t){for(var n in t)if(typeof t[n]===l&&t[n].length>0){for(var i=0;i<t[n].length;i++)if(G(t[n][i],e))return"?"===n?a:n}else if(G(t[n],e))return"?"===n?a:n;return e},q={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},K={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[A,[d,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[A,[d,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[d,A],[/opios[\/ ]+([\w\.]+)/i],[A,[d,P+" Mini"]],[/\bopr\/([\w\.]+)/i],[A,[d,P]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[A,[d,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[d,A],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[A,[d,"UC"+T]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[A,[d,"WeChat"]],[/konqueror\/([\w\.]+)/i],[A,[d,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[A,[d,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[A,[d,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[A,[d,"Smart Lenovo "+T]],[/(avast|avg)\/([\w\.]+)/i],[[d,/(.+)/,"$1 Secure "+T],A],[/\bfocus\/([\w\.]+)/i],[A,[d,I+" Focus"]],[/\bopt\/([\w\.]+)/i],[A,[d,P+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[A,[d,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[A,[d,"Dolphin"]],[/coast\/([\w\.]+)/i],[A,[d,P+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[A,[d,"MIUI "+T]],[/fxios\/([-\w\.]+)/i],[A,[d,I]],[/\bqihu|(qi?ho?o?|360)browser/i],[[d,"360 "+T]],[/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],[[d,/(.+)/,"$1 "+T],A],[/samsungbrowser\/([\w\.]+)/i],[A,[d,z+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[d,/_/g," "],A],[/metasr[\/ ]?([\d\.]+)/i],[A,[d,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[d,"Sogou Mobile"],A],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[d,A],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[d],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[d,j],A],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[d,A],[/\bgsa\/([\w\.]+) .*safari\//i],[A,[d,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[A,[d,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[A,[d,C+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[d,C+" WebView"],A],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[A,[d,"Android "+T]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[d,A],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[A,[d,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[A,d],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[d,[A,Z,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[d,A],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[d,"Netscape"],A],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[A,[d,I+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[d,A],[/(cobalt)\/([\w\.]+)/i],[d,[A,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[m,"amd64"]],[/(ia32(?=;))/i],[[m,Q]],[/((?:i[346]|x)86)[;\)]/i],[[m,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[m,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[m,"armhf"]],[/windows (ce|mobile); ppc;/i],[[m,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[m,/ower/,"",Q]],[/(sun4\w)[;\)]/i],[[m,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[m,Q]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[h,[f,z],[p,y]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[h,[f,z],[p,v]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[h,[f,S],[p,v]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[h,[f,S],[p,y]],[/(macintosh);/i],[h,[f,S]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[h,[f,k],[p,v]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[h,[f,N],[p,y]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[h,[f,N],[p,v]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[h,/_/g," "],[f,B],[p,v]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[h,/_/g," "],[f,B],[p,y]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[h,[f,"OPPO"],[p,v]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[h,[f,"Vivo"],[p,v]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[h,[f,"Realme"],[p,v]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[h,[f,O],[p,v]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[h,[f,O],[p,y]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[h,[f,L],[p,y]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[h,[f,L],[p,v]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[h,[f,"Lenovo"],[p,y]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[h,/_/g," "],[f,"Nokia"],[p,v]],[/(pixel c)\b/i],[h,[f,D],[p,y]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[h,[f,D],[p,v]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[h,[f,U],[p,v]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[h,"Xperia Tablet"],[f,U],[p,y]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[h,[f,"OnePlus"],[p,v]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[h,[f,M],[p,y]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[h,/(.+)/g,"Fire Phone $1"],[f,M],[p,v]],[/(playbook);[-\w\),; ]+(rim)/i],[h,f,[p,y]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[h,[f,_],[p,v]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[h,[f,E],[p,y]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[h,[f,E],[p,v]],[/(nexus 9)/i],[h,[f,"HTC"],[p,y]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[f,[h,/_/g," "],[p,v]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[h,[f,"Acer"],[p,y]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[h,[f,"Meizu"],[p,v]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[h,[f,"Ulefone"],[p,v]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[f,h,[p,v]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[f,h,[p,y]],[/(surface duo)/i],[h,[f,R],[p,y]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[h,[f,"Fairphone"],[p,v]],[/(u304aa)/i],[h,[f,"AT&T"],[p,v]],[/\bsie-(\w*)/i],[h,[f,"Siemens"],[p,v]],[/\b(rct\w+) b/i],[h,[f,"RCA"],[p,y]],[/\b(venue[\d ]{2,7}) b/i],[h,[f,"Dell"],[p,y]],[/\b(q(?:mv|ta)\w+) b/i],[h,[f,"Verizon"],[p,y]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[h,[f,"Barnes & Noble"],[p,y]],[/\b(tm\d{3}\w+) b/i],[h,[f,"NuVision"],[p,y]],[/\b(k88) b/i],[h,[f,"ZTE"],[p,y]],[/\b(nx\d{3}j) b/i],[h,[f,"ZTE"],[p,v]],[/\b(gen\d{3}) b.+49h/i],[h,[f,"Swiss"],[p,v]],[/\b(zur\d{3}) b/i],[h,[f,"Swiss"],[p,y]],[/\b((zeki)?tb.*\b) b/i],[h,[f,"Zeki"],[p,y]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[f,"Dragon Touch"],h,[p,y]],[/\b(ns-?\w{0,9}) b/i],[h,[f,"Insignia"],[p,y]],[/\b((nxa|next)-?\w{0,9}) b/i],[h,[f,"NextBook"],[p,y]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[f,"Voice"],h,[p,v]],[/\b(lvtel\-)?(v1[12]) b/i],[[f,"LvTel"],h,[p,v]],[/\b(ph-1) /i],[h,[f,"Essential"],[p,v]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[h,[f,"Envizen"],[p,y]],[/\b(trio[-\w\. ]+) b/i],[h,[f,"MachSpeed"],[p,y]],[/\btu_(1491) b/i],[h,[f,"Rotor"],[p,y]],[/(shield[\w ]+) b/i],[h,[f,"Nvidia"],[p,y]],[/(sprint) (\w+)/i],[f,h,[p,v]],[/(kin\.[onetw]{3})/i],[[h,/\./g," "],[f,R],[p,v]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[h,[f,F],[p,y]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[h,[f,F],[p,v]],[/smart-tv.+(samsung)/i],[f,[p,b]],[/hbbtv.+maple;(\d+)/i],[[h,/^/,"SmartTV"],[f,z],[p,b]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[f,L],[p,b]],[/(apple) ?tv/i],[f,[h,S+" TV"],[p,b]],[/crkey/i],[[h,C+"cast"],[f,D],[p,b]],[/droid.+aft(\w+)( bui|\))/i],[h,[f,M],[p,b]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[h,[f,k],[p,b]],[/(bravia[\w ]+)( bui|\))/i],[h,[f,U],[p,b]],[/(mitv-\w{5}) bui/i],[h,[f,B],[p,b]],[/Hbbtv.*(technisat) (.*);/i],[f,h,[p,b]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[f,X],[h,X],[p,b]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[p,b]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[f,h,[p,g]],[/droid.+; (shield) bui/i],[h,[f,"Nvidia"],[p,g]],[/(playstation [345portablevi]+)/i],[h,[f,U],[p,g]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[h,[f,R],[p,g]],[/((pebble))app/i],[f,h,[p,w]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[h,[f,S],[p,w]],[/droid.+; (glass) \d/i],[h,[f,D],[p,w]],[/droid.+; (wt63?0{2,3})\)/i],[h,[f,F],[p,w]],[/(quest( 2| pro)?)/i],[h,[f,j],[p,w]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[f,[p,x]],[/(aeobc)\b/i],[h,[f,M],[p,x]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[h,[p,v]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[h,[p,y]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[p,y]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[p,v]],[/(android[-\w\. ]{0,9});.+buil/i],[h,[f,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[A,[d,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[A,[d,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[d,A],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[A,d]],os:[[/microsoft (windows) (vista|xp)/i],[d,A],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[d,[A,Z,q]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[A,Z,q],[d,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[A,/_/g,"."],[d,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[d,V],[A,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[A,d],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[d,A],[/\(bb(10);/i],[A,[d,_]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[A,[d,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[A,[d,I+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[A,[d,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[A,[d,"watchOS"]],[/crkey\/([\d\.]+)/i],[A,[d,C+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[d,H],A],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[d,A],[/(sunos) ?([\w\.\d]*)/i],[[d,"Solaris"],A],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[d,A]]},J=function(e,t){if(typeof e===l&&(t=e,e=a),!(this instanceof J))return new J(e,t).getResult();var n=typeof r!==s&&r.navigator?r.navigator:a,i=e||(n&&n.userAgent?n.userAgent:""),g=n&&n.userAgentData?n.userAgentData:a,b=t?function(e,t){var n={};for(var i in e)t[i]&&t[i].length%2==0?n[i]=t[i].concat(e[i]):n[i]=e[i];return n}(K,t):K,w=n&&n.userAgent==i;return this.getBrowser=function(){var e,t={};return t[d]=a,t[A]=a,Y.call(t,i,b.browser),t[u]=typeof(e=t[A])===c?e.replace(/[^\d\.]/g,"").split(".")[0]:a,w&&n&&n.brave&&typeof n.brave.isBrave==o&&(t[d]="Brave"),t},this.getCPU=function(){var e={};return e[m]=a,Y.call(e,i,b.cpu),e},this.getDevice=function(){var e={};return e[f]=a,e[h]=a,e[p]=a,Y.call(e,i,b.device),w&&!e[p]&&g&&g.mobile&&(e[p]=v),w&&"Macintosh"==e[h]&&n&&typeof n.standalone!==s&&n.maxTouchPoints&&n.maxTouchPoints>2&&(e[h]="iPad",e[p]=y),e},this.getEngine=function(){var e={};return e[d]=a,e[A]=a,Y.call(e,i,b.engine),e},this.getOS=function(){var e={};return e[d]=a,e[A]=a,Y.call(e,i,b.os),w&&!e[d]&&g&&"Unknown"!=g.platform&&(e[d]=g.platform.replace(/chrome os/i,H).replace(/macos/i,V)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return i},this.setUA=function(e){return i=typeof e===c&&e.length>500?X(e,500):e,this},this.setUA(i),this};J.VERSION="1.0.37",J.BROWSER=W([d,A,u]),J.CPU=W([m]),J.DEVICE=W([h,f,p,g,v,b,y,w,x]),J.ENGINE=J.OS=W([d,A]),typeof t!==s?(e.exports&&(t=e.exports=J),t.UAParser=J):n.amdO?(i=function(){return J}.call(t,n,t,e))===a||(e.exports=i):typeof r!==s&&(r.UAParser=J);var $=typeof r!==s&&(r.jQuery||r.Zepto);if($&&!$.ua){var ee=new J;$.ua=ee.getResult(),$.ua.get=function(){return ee.getUA()},$.ua.set=function(e){ee.setUA(e);var t=ee.getResult();for(var n in t)$.ua[n]=t[n]}}}("object"==typeof window?window:this)},42:e=>{function t(e,t,n){e.addEventListener("wheel",t,n)}e.exports=t,e.exports.addWheelListener=t,e.exports.removeWheelListener=function(e,t,n){e.removeEventListener("wheel",t,n)}},35:e=>{"use strict";e.exports="data:font/woff;base64,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"},286:e=>{"use strict";e.exports="data:font/woff2;base64,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"},607:e=>{"use strict";e.exports="data:font/woff;base64,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"},801:e=>{"use strict";e.exports="data:font/woff2;base64,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"},308:e=>{"use strict";e.exports="data:font/woff;base64,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"},103:e=>{"use strict";e.exports="data:font/woff2;base64,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"},904:e=>{"use strict";e.exports="data:font/woff;base64,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"},517:e=>{"use strict";e.exports="data:font/woff2;base64,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"}},i={};function r(e){var t=i[e];if(void 0!==t)return t.exports;var a=i[e]={id:e,exports:{}};return n[e].call(a.exports,a,a.exports,r),a.exports}r.m=n,r.amdO={},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(n,i){if(1&i&&(n=this(n)),8&i)return n;if("object"==typeof n&&n){if(4&i&&n.__esModule)return n;if(16&i&&"function"==typeof n.then)return n}var a=Object.create(null);r.r(a);var o={};e=e||[null,t({}),t([]),t(t)];for(var s=2&i&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>o[e]=()=>n[e]));return o.default=()=>n,r.d(a,o),a},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.b=document.baseURI||self.location.href,r.nc=void 0;var a={};(()=>{"use strict";r.r(a),r.d(a,{ApiStore:()=>zi,Widget:()=>KC,rotationModes:()=>Ur});var e={};r.r(e),r.d(e,{ACESFilmicToneMapping:()=>Va,AddEquation:()=>la,AddOperation:()=>Ua,AdditiveAnimationBlendMode:()=>Ms,AdditiveBlending:()=>ra,AlphaFormat:()=>So,AlwaysCompare:()=>hl,AlwaysDepth:()=>Ia,AlwaysStencilFunc:()=>il,AmbientLight:()=>Tv,AnimationAction:()=>my,AnimationClip:()=>Kg,AnimationLoader:()=>ov,AnimationMixer:()=>vy,AnimationObjectGroup:()=>Ay,AnimationUtils:()=>Ug,ArcCurve:()=>im,ArrayCamera:()=>_f,ArrowHelper:()=>cb,AttachedBindMode:()=>Ga,Audio:()=>ey,AudioAnalyser:()=>oy,AudioContext:()=>jv,AudioListener:()=>$v,AudioLoader:()=>Hv,AxesHelper:()=>ub,BackSide:()=>$r,BasicDepthPacking:()=>Is,BasicShadowMap:()=>Yr,Bone:()=>gA,BooleanKeyframeTrack:()=>Wg,Box2:()=>Dy,Box3:()=>Mc,Box3Helper:()=>rb,BoxGeometry:()=>Oh,BoxHelper:()=>ib,BufferAttribute:()=>qu,BufferGeometry:()=>fh,BufferGeometryLoader:()=>Ov,ByteType:()=>fo,Cache:()=>$g,Camera:()=>Fh,CameraHelper:()=>eb,CanvasTexture:()=>em,CapsuleGeometry:()=>Sm,CatmullRomCurve3:()=>cm,CineonToneMapping:()=>Ha,CircleGeometry:()=>Em,ClampToEdgeWrapping:()=>eo,Clock:()=>Xv,Color:()=>Uu,ColorKeyframeTrack:()=>Gg,ColorManagement:()=>tc,CompressedArrayTexture:()=>JA,CompressedCubeTexture:()=>$A,CompressedTexture:()=>KA,CompressedTextureLoader:()=>sv,ConeGeometry:()=>Tm,ConstantAlphaFactor:()=>_a,ConstantColorFactor:()=>Sa,CubeCamera:()=>Vh,CubeReflectionMapping:()=>Ya,CubeRefractionMapping:()=>Za,CubeTexture:()=>Wh,CubeTextureLoader:()=>cv,CubeUVReflectionMapping:()=>Ja,CubicBezierCurve:()=>pm,CubicBezierCurve3:()=>fm,CubicInterpolant:()=>Fg,CullFaceBack:()=>Gr,CullFaceFront:()=>Qr,CullFaceFrontBack:()=>Xr,CullFaceNone:()=>Wr,Curve:()=>tm,CurvePath:()=>wm,CustomBlending:()=>sa,CustomToneMapping:()=>Wa,CylinderGeometry:()=>_m,Cylindrical:()=>Cy,Data3DTexture:()=>mc,DataArrayTexture:()=>fc,DataTexture:()=>vA,DataTextureLoader:()=>uv,DataUtils:()=>Xu,DecrementStencilOp:()=>Qs,DecrementWrapStencilOp:()=>Ys,DefaultLoadingManager:()=>tv,DepthFormat:()=>Co,DepthStencilFormat:()=>Io,DepthTexture:()=>Df,DetachedBindMode:()=>Qa,DirectionalLight:()=>_v,DirectionalLightHelper:()=>Ky,DiscreteInterpolant:()=>Hg,DisplayP3ColorSpace:()=>zs,DodecahedronGeometry:()=>Im,DoubleSide:()=>ea,DstAlphaFactor:()=>ya,DstColorFactor:()=>wa,DynamicCopyUsage:()=>yl,DynamicDrawUsage:()=>pl,DynamicReadUsage:()=>ml,EdgesGeometry:()=>Om,EllipseCurve:()=>nm,EqualCompare:()=>ol,EqualDepth:()=>La,EqualStencilFunc:()=>Js,EquirectangularReflectionMapping:()=>qa,EquirectangularRefractionMapping:()=>Ka,Euler:()=>ou,EventDispatcher:()=>_l,ExtrudeGeometry:()=>cg,FileLoader:()=>av,Float16BufferAttribute:()=>rh,Float32BufferAttribute:()=>ah,Float64BufferAttribute:()=>oh,FloatType:()=>yo,Fog:()=>kf,FogExp2:()=>zf,FramebufferTexture:()=>qA,FrontSide:()=>Jr,Frustum:()=>Jh,GLBufferAttribute:()=>My,GLSL1:()=>wl,GLSL3:()=>xl,GreaterCompare:()=>ll,GreaterDepth:()=>Oa,GreaterEqualCompare:()=>ul,GreaterEqualDepth:()=>Ra,GreaterEqualStencilFunc:()=>nl,GreaterStencilFunc:()=>el,GridHelper:()=>Qy,Group:()=>Tf,HalfFloatType:()=>bo,HemisphereLight:()=>pv,HemisphereLightHelper:()=>Gy,IcosahedronGeometry:()=>hg,ImageBitmapLoader:()=>Bv,ImageLoader:()=>lv,ImageUtils:()=>ac,IncrementStencilOp:()=>Gs,IncrementWrapStencilOp:()=>Xs,InstancedBufferAttribute:()=>xA,InstancedBufferGeometry:()=>Rv,InstancedInterleavedBuffer:()=>xy,InstancedMesh:()=>DA,Int16BufferAttribute:()=>eh,Int32BufferAttribute:()=>nh,Int8BufferAttribute:()=>Ku,IntType:()=>go,InterleavedBuffer:()=>Bf,InterleavedBufferAttribute:()=>jf,Interpolant:()=>Bg,InterpolateDiscrete:()=>ms,InterpolateLinear:()=>gs,InterpolateSmooth:()=>vs,InvertStencilOp:()=>Zs,KeepStencilOp:()=>Vs,KeyframeTrack:()=>Vg,LOD:()=>oA,LatheGeometry:()=>Mm,Layers:()=>su,LessCompare:()=>al,LessDepth:()=>Da,LessEqualCompare:()=>sl,LessEqualDepth:()=>Na,LessEqualStencilFunc:()=>$s,LessStencilFunc:()=>Ks,Light:()=>dv,LightProbe:()=>Dv,Line:()=>kA,Line3:()=>Ry,LineBasicMaterial:()=>NA,LineCurve:()=>Am,LineCurve3:()=>mm,LineDashedMaterial:()=>Lg,LineLoop:()=>jA,LineSegments:()=>FA,LinearDisplayP3ColorSpace:()=>ks,LinearEncoding:()=>Ts,LinearFilter:()=>so,LinearInterpolant:()=>jg,LinearMipMapLinearFilter:()=>ho,LinearMipMapNearestFilter:()=>co,LinearMipmapLinearFilter:()=>uo,LinearMipmapNearestFilter:()=>lo,LinearSRGBColorSpace:()=>Ps,LinearToneMapping:()=>Fa,LinearTransfer:()=>Us,Loader:()=>nv,LoaderUtils:()=>Lv,LoadingManager:()=>ev,LoopOnce:()=>ps,LoopPingPong:()=>As,LoopRepeat:()=>fs,LuminanceAlphaFormat:()=>To,LuminanceFormat:()=>_o,MOUSE:()=>Hr,Material:()=>ju,MaterialLoader:()=>Nv,MathUtils:()=>Fl,Matrix3:()=>Hl,Matrix4:()=>qc,MaxEquation:()=>da,Mesh:()=>Lh,MeshBasicMaterial:()=>Hu,MeshDepthMaterial:()=>bf,MeshDistanceMaterial:()=>wf,MeshLambertMaterial:()=>Dg,MeshMatcapMaterial:()=>Ng,MeshNormalMaterial:()=>Ig,MeshPhongMaterial:()=>Tg,MeshPhysicalMaterial:()=>_g,MeshStandardMaterial:()=>Eg,MeshToonMaterial:()=>Cg,MinEquation:()=>ha,MirroredRepeatWrapping:()=>to,MixOperation:()=>ka,MultiplyBlending:()=>oa,MultiplyOperation:()=>za,NearestFilter:()=>no,NearestMipMapLinearFilter:()=>oo,NearestMipMapNearestFilter:()=>ro,NearestMipmapLinearFilter:()=>ao,NearestMipmapNearestFilter:()=>io,NeverCompare:()=>rl,NeverDepth:()=>Ca,NeverStencilFunc:()=>qs,NoBlending:()=>na,NoColorSpace:()=>Rs,NoToneMapping:()=>Ba,NormalAnimationBlendMode:()=>xs,NormalBlending:()=>ia,NotEqualCompare:()=>cl,NotEqualDepth:()=>Pa,NotEqualStencilFunc:()=>tl,NumberKeyframeTrack:()=>Qg,Object3D:()=>wu,ObjectLoader:()=>Pv,ObjectSpaceNormalMap:()=>Ls,OctahedronGeometry:()=>dg,OneFactor:()=>fa,OneMinusConstantAlphaFactor:()=>Ta,OneMinusConstantColorFactor:()=>Ea,OneMinusDstAlphaFactor:()=>ba,OneMinusDstColorFactor:()=>xa,OneMinusSrcAlphaFactor:()=>va,OneMinusSrcColorFactor:()=>ma,OrthographicCamera:()=>dd,P3Primaries:()=>js,PCFShadowMap:()=>Zr,PCFSoftShadowMap:()=>qr,PMREMGenerator:()=>xd,Path:()=>xm,PerspectiveCamera:()=>jh,Plane:()=>Zh,PlaneGeometry:()=>td,PlaneHelper:()=>ab,PointLight:()=>Sv,PointLightHelper:()=>jy,Points:()=>XA,PointsMaterial:()=>HA,PolarGridHelper:()=>Xy,PolyhedronGeometry:()=>Cm,PositionalAudio:()=>ay,PropertyBinding:()=>fy,PropertyMixer:()=>sy,QuadraticBezierCurve:()=>gm,QuadraticBezierCurve3:()=>vm,Quaternion:()=>yc,QuaternionKeyframeTrack:()=>Yg,QuaternionLinearInterpolant:()=>Xg,RED_GREEN_RGTC2_Format:()=>hs,RED_RGTC1_Format:()=>cs,REVISION:()=>jr,RGBADepthPacking:()=>Ds,RGBAFormat:()=>Eo,RGBAIntegerFormat:()=>Oo,RGBA_ASTC_10x10_Format:()=>is,RGBA_ASTC_10x5_Format:()=>es,RGBA_ASTC_10x6_Format:()=>ts,RGBA_ASTC_10x8_Format:()=>ns,RGBA_ASTC_12x10_Format:()=>rs,RGBA_ASTC_12x12_Format:()=>as,RGBA_ASTC_4x4_Format:()=>Qo,RGBA_ASTC_5x4_Format:()=>Xo,RGBA_ASTC_5x5_Format:()=>Yo,RGBA_ASTC_6x5_Format:()=>Zo,RGBA_ASTC_6x6_Format:()=>qo,RGBA_ASTC_8x5_Format:()=>Ko,RGBA_ASTC_8x6_Format:()=>Jo,RGBA_ASTC_8x8_Format:()=>$o,RGBA_BPTC_Format:()=>os,RGBA_ETC2_EAC_Format:()=>Go,RGBA_PVRTC_2BPPV1_Format:()=>Ho,RGBA_PVRTC_4BPPV1_Format:()=>jo,RGBA_S3TC_DXT1_Format:()=>zo,RGBA_S3TC_DXT3_Format:()=>ko,RGBA_S3TC_DXT5_Format:()=>Uo,RGB_BPTC_SIGNED_Format:()=>ss,RGB_BPTC_UNSIGNED_Format:()=>ls,RGB_ETC1_Format:()=>Vo,RGB_ETC2_Format:()=>Wo,RGB_PVRTC_2BPPV1_Format:()=>Fo,RGB_PVRTC_4BPPV1_Format:()=>Bo,RGB_S3TC_DXT1_Format:()=>Po,RGFormat:()=>Lo,RGIntegerFormat:()=>Ro,RawShaderMaterial:()=>Sg,Ray:()=>Zc,Raycaster:()=>Sy,Rec709Primaries:()=>Fs,RectAreaLight:()=>Cv,RedFormat:()=>Do,RedIntegerFormat:()=>No,ReinhardToneMapping:()=>ja,RenderTarget:()=>dc,RepeatWrapping:()=>$a,ReplaceStencilOp:()=>Ws,ReverseSubtractEquation:()=>ua,RingGeometry:()=>pg,SIGNED_RED_GREEN_RGTC2_Format:()=>ds,SIGNED_RED_RGTC1_Format:()=>us,SRGBColorSpace:()=>Os,SRGBTransfer:()=>Bs,Scene:()=>Uf,ShaderChunk:()=>nd,ShaderLib:()=>rd,ShaderMaterial:()=>Bh,ShadowMaterial:()=>Mg,Shape:()=>Pm,ShapeGeometry:()=>fg,ShapePath:()=>hb,ShapeUtils:()=>og,ShortType:()=>Ao,Skeleton:()=>wA,SkeletonHelper:()=>By,SkinnedMesh:()=>mA,Source:()=>sc,Sphere:()=>jc,SphereGeometry:()=>Ag,Spherical:()=>Ty,SphericalHarmonics3:()=>Iv,SplineCurve:()=>ym,SpotLight:()=>yv,SpotLightHelper:()=>Py,Sprite:()=>nA,SpriteMaterial:()=>Hf,SrcAlphaFactor:()=>ga,SrcAlphaSaturateFactor:()=>Ma,SrcColorFactor:()=>Aa,StaticCopyUsage:()=>vl,StaticDrawUsage:()=>dl,StaticReadUsage:()=>Al,StereoCamera:()=>Qv,StreamCopyUsage:()=>bl,StreamDrawUsage:()=>fl,StreamReadUsage:()=>gl,StringKeyframeTrack:()=>Zg,SubtractEquation:()=>ca,SubtractiveBlending:()=>aa,TOUCH:()=>Vr,TangentSpaceNormalMap:()=>Ns,TetrahedronGeometry:()=>mg,Texture:()=>uc,TextureLoader:()=>hv,TorusGeometry:()=>gg,TorusKnotGeometry:()=>vg,Triangle:()=>Ru,TriangleFanDrawMode:()=>_s,TriangleStripDrawMode:()=>Es,TrianglesDrawMode:()=>Ss,TubeGeometry:()=>yg,TwoPassDoubleSide:()=>ta,UVMapping:()=>Xa,Uint16BufferAttribute:()=>th,Uint32BufferAttribute:()=>ih,Uint8BufferAttribute:()=>Ju,Uint8ClampedBufferAttribute:()=>$u,Uniform:()=>yy,UniformsGroup:()=>wy,UniformsLib:()=>id,UniformsUtils:()=>Uh,UnsignedByteType:()=>po,UnsignedInt248Type:()=>Mo,UnsignedIntType:()=>vo,UnsignedShort4444Type:()=>wo,UnsignedShort5551Type:()=>xo,UnsignedShortType:()=>mo,VSMShadowMap:()=>Kr,Vector2:()=>jl,Vector3:()=>bc,Vector4:()=>hc,VectorKeyframeTrack:()=>qg,VideoTexture:()=>ZA,WebGL1Renderer:()=>Pf,WebGL3DRenderTarget:()=>gc,WebGLArrayRenderTarget:()=>Ac,WebGLCoordinateSystem:()=>Sl,WebGLCubeRenderTarget:()=>Gh,WebGLMultipleRenderTargets:()=>vc,WebGLRenderTarget:()=>pc,WebGLRenderer:()=>Of,WebGLUtils:()=>Ef,WebGPUCoordinateSystem:()=>El,WireframeGeometry:()=>bg,WrapAroundEnding:()=>ws,ZeroCurvatureEnding:()=>ys,ZeroFactor:()=>pa,ZeroSlopeEnding:()=>bs,ZeroStencilOp:()=>Hs,_SRGBAFormat:()=>Ml,createCanvasElement:()=>Yl,sRGBEncoding:()=>Cs});var t=r(294),n=r.t(t,2),i=r(379),o=r.n(i),s=r(795),l=r.n(s),c=r(569),u=r.n(c),h=r(565),d=r.n(h),p=r(216),f=r.n(p),A=r(589),m=r.n(A),g=r(615),v={};v.styleTagTransform=m(),v.setAttributes=d(),v.insert=u().bind(null,"head"),v.domAPI=l(),v.insertStyleElement=f(),o()(g.Z,v),g.Z&&g.Z.locals&&g.Z.locals;var y=r(500),b={};b.styleTagTransform=m(),b.setAttributes=d(),b.insert=u().bind(null,"head"),b.domAPI=l(),b.insertStyleElement=f(),o()(y.Z,b),y.Z&&y.Z.locals&&y.Z.locals;var w=r(94),x={};x.styleTagTransform=m(),x.setAttributes=d(),x.insert=u().bind(null,"head"),x.domAPI=l(),x.insertStyleElement=f(),o()(w.Z,x),w.Z&&w.Z.locals&&w.Z.locals;var M=r(545),S={};S.styleTagTransform=m(),S.setAttributes=d(),S.insert=u().bind(null,"head"),S.domAPI=l(),S.insertStyleElement=f(),o()(M.Z,S),M.Z&&M.Z.locals&&M.Z.locals;var E=r(273),_={};function T(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];throw new Error("number"==typeof e?"[MobX] minified error nr: "+e+(n.length?" "+n.map(String).join(","):"")+". Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts":"[MobX] "+e)}_.styleTagTransform=m(),_.setAttributes=d(),_.insert=u().bind(null,"head"),_.domAPI=l(),_.insertStyleElement=f(),o()(E.Z,_),E.Z&&E.Z.locals&&E.Z.locals;var C={};function I(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==r.g?r.g:"undefined"!=typeof self?self:C}var D=Object.assign,N=Object.getOwnPropertyDescriptor,L=Object.defineProperty,R=Object.prototype,O=[];Object.freeze(O);var P={};Object.freeze(P);var z="undefined"!=typeof Proxy,k=Object.toString();function U(){z||T("Proxy not available")}function B(e){var t=!1;return function(){if(!t)return t=!0,e.apply(this,arguments)}}var F=function(){};function j(e){return"function"==typeof e}function H(e){switch(typeof e){case"string":case"symbol":case"number":return!0}return!1}function V(e){return null!==e&&"object"==typeof e}function W(e){if(!V(e))return!1;var t=Object.getPrototypeOf(e);if(null==t)return!0;var n=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n.toString()===k}function G(e){var t=null==e?void 0:e.constructor;return!!t&&("GeneratorFunction"===t.name||"GeneratorFunction"===t.displayName)}function Q(e,t,n){L(e,t,{enumerable:!1,writable:!0,configurable:!0,value:n})}function X(e,t,n){L(e,t,{enumerable:!1,writable:!1,configurable:!0,value:n})}function Y(e,t){var n="isMobX"+e;return t.prototype[n]=!0,function(e){return V(e)&&!0===e[n]}}function Z(e){return e instanceof Map}function q(e){return e instanceof Set}var K=void 0!==Object.getOwnPropertySymbols,J="undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:K?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:Object.getOwnPropertyNames;function $(e){return null===e?null:"object"==typeof e?""+e:e}function ee(e,t){return R.hasOwnProperty.call(e,t)}var te=Object.getOwnPropertyDescriptors||function(e){var t={};return J(e).forEach((function(n){t[n]=N(e,n)})),t};function ne(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(void 0,"symbol"==typeof(r=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(i.key))?r:String(r)),i)}var r}function ie(e,t,n){return t&&ne(e.prototype,t),n&&ne(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function re(){return re=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},re.apply(this,arguments)}function ae(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,oe(e,t)}function oe(e,t){return oe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},oe(e,t)}function se(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function le(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function ce(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return le(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?le(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0;return function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var ue=Symbol("mobx-stored-annotations");function he(e){return Object.assign((function(t,n){if(pe(n))return e.decorate_20223_(t,n);de(t,n,e)}),e)}function de(e,t,n){ee(e,ue)||Q(e,ue,re({},e[ue])),function(e){return e.annotationType_===we}(n)||(e[ue][t]=n)}function pe(e){return"object"==typeof e&&"string"==typeof e.kind}var fe=Symbol("mobx administration"),Ae=function(){function e(e){void 0===e&&(e="Atom"),this.name_=void 0,this.isPendingUnobservation_=!1,this.isBeingObserved_=!1,this.observers_=new Set,this.diffValue_=0,this.lastAccessedBy_=0,this.lowestObserverState_=yt.NOT_TRACKING_,this.onBOL=void 0,this.onBUOL=void 0,this.name_=e}var t=e.prototype;return t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.reportObserved=function(){return Vt(this)},t.reportChanged=function(){jt(),Wt(this),Ht()},t.toString=function(){return this.name_},e}(),me=Y("Atom",Ae);function ge(e,t,n){void 0===t&&(t=F),void 0===n&&(n=F);var i=new Ae(e);return t!==F&&dn(cn,i,t,undefined),n!==F&&hn(i,n),i}var ve={identity:function(e,t){return e===t},structural:function(e,t){return Di(e,t)},default:function(e,t){return Object.is?Object.is(e,t):e===t?0!==e||1/e==1/t:e!=e&&t!=t},shallow:function(e,t){return Di(e,t,1)}};function ye(e,t,n){return Sn(e)?e:Array.isArray(e)?rt.array(e,{name:n}):W(e)?rt.object(e,void 0,{name:n}):Z(e)?rt.map(e,{name:n}):q(e)?rt.set(e,{name:n}):"function"!=typeof e||sn(e)||Mn(e)?e:G(e)?wn(e):on(n,e)}function be(e){return e}var we="override";function xe(e,t){return{annotationType_:e,options_:t,make_:Me,extend_:Se,decorate_20223_:Ee}}function Me(e,t,n,i){var r;if(null!=(r=this.options_)&&r.bound)return null===this.extend_(e,t,n,!1)?0:1;if(i===e.target_)return null===this.extend_(e,t,n,!1)?0:2;if(sn(n.value))return 1;var a=_e(e,this,t,n,!1);return L(i,t,a),2}function Se(e,t,n,i){var r=_e(e,this,t,n);return e.defineProperty_(t,r,i)}function Ee(e,t){var n=t.kind,i=t.name,r=t.addInitializer,a=this;if("field"!=n){var o,s,l,c,u,h;if("method"==n)return sn(e)||(s=e,e=ft(null!=(l=null==(c=a.options_)?void 0:c.name)?l:i.toString(),s,null!=(u=null==(h=a.options_)?void 0:h.autoAction)&&u)),null!=(o=this.options_)&&o.bound&&r((function(){var e=this,t=e[i].bind(e);t.isMobxAction=!0,e[i]=t})),e;T("Cannot apply '"+a.annotationType_+"' to '"+String(i)+"' (kind: "+n+"):\n'"+a.annotationType_+"' can only be used on properties with a function value.")}else r((function(){de(this,i,a)}))}function _e(e,t,n,i,r){var a,o,s,l,c,u,h;void 0===r&&(r=kt.safeDescriptors),function(e,t,n,i){t.annotationType_,i.value}(0,t,0,i);var d,p=i.value;return null!=(a=t.options_)&&a.bound&&(p=p.bind(null!=(d=e.proxy_)?d:e.target_)),{value:ft(null!=(o=null==(s=t.options_)?void 0:s.name)?o:n.toString(),p,null!=(l=null==(c=t.options_)?void 0:c.autoAction)&&l,null!=(u=t.options_)&&u.bound?null!=(h=e.proxy_)?h:e.target_:void 0),configurable:!r||e.isPlainObject_,enumerable:!1,writable:!r}}function Te(e,t){return{annotationType_:e,options_:t,make_:Ce,extend_:Ie,decorate_20223_:De}}function Ce(e,t,n,i){var r;if(i===e.target_)return null===this.extend_(e,t,n,!1)?0:2;if(null!=(r=this.options_)&&r.bound&&(!ee(e.target_,t)||!Mn(e.target_[t]))&&null===this.extend_(e,t,n,!1))return 0;if(Mn(n.value))return 1;var a=Ne(e,this,0,n,!1,!1);return L(i,t,a),2}function Ie(e,t,n,i){var r,a=Ne(e,this,0,n,null==(r=this.options_)?void 0:r.bound);return e.defineProperty_(t,a,i)}function De(e,t){var n,i=t.name,r=t.addInitializer;return Mn(e)||(e=wn(e)),null!=(n=this.options_)&&n.bound&&r((function(){var e=this,t=e[i].bind(e);t.isMobXFlow=!0,e[i]=t})),e}function Ne(e,t,n,i,r,a){void 0===a&&(a=kt.safeDescriptors),function(e,t,n,i){t.annotationType_,i.value}(0,t,0,i);var o,s=i.value;return Mn(s)||(s=wn(s)),r&&((s=s.bind(null!=(o=e.proxy_)?o:e.target_)).isMobXFlow=!0),{value:s,configurable:!a||e.isPlainObject_,enumerable:!1,writable:!a}}function Le(e,t){return{annotationType_:e,options_:t,make_:Re,extend_:Oe,decorate_20223_:Pe}}function Re(e,t,n){return null===this.extend_(e,t,n,!1)?0:1}function Oe(e,t,n,i){return function(e,t,n,i){t.annotationType_,i.get}(0,this,0,n),e.defineComputedProperty_(t,re({},this.options_,{get:n.get,set:n.set}),i)}function Pe(e,t){var n=this,i=t.name;return(0,t.addInitializer)((function(){var t=ci(this)[fe],r=re({},n.options_,{get:e,context:this});r.name||(r.name="ObservableObject."+i.toString()),t.values_.set(i,new wt(r))})),function(){return this[fe].getObservablePropValue_(i)}}function ze(e,t){return{annotationType_:e,options_:t,make_:ke,extend_:Ue,decorate_20223_:Be}}function ke(e,t,n){return null===this.extend_(e,t,n,!1)?0:1}function Ue(e,t,n,i){var r,a;return function(e,t,n,i){t.annotationType_}(0,this),e.defineObservableProperty_(t,n.value,null!=(r=null==(a=this.options_)?void 0:a.enhancer)?r:ye,i)}function Be(e,t){var n=this,i=t.kind,r=t.name,a=new WeakSet;function o(e,t){var i,o,s=ci(e)[fe],l=new vt(t,null!=(i=null==(o=n.options_)?void 0:o.enhancer)?i:ye,"ObservableObject."+r.toString(),!1);s.values_.set(r,l),a.add(e)}if("accessor"==i)return{get:function(){return a.has(this)||o(this,e.get.call(this)),this[fe].getObservablePropValue_(r)},set:function(e){return a.has(this)||o(this,e),this[fe].setObservablePropValue_(r,e)},init:function(e){return a.has(this)||o(this,e),e}}}var Fe="true",je=He();function He(e){return{annotationType_:Fe,options_:e,make_:Ve,extend_:We,decorate_20223_:Ge}}function Ve(e,t,n,i){var r,a,o,s;if(n.get)return lt.make_(e,t,n,i);if(n.set){var l=ft(t.toString(),n.set);return i===e.target_?null===e.defineProperty_(t,{configurable:!kt.safeDescriptors||e.isPlainObject_,set:l})?0:2:(L(i,t,{configurable:!0,set:l}),2)}if(i!==e.target_&&"function"==typeof n.value)return G(n.value)?(null!=(s=this.options_)&&s.autoBind?wn.bound:wn).make_(e,t,n,i):(null!=(o=this.options_)&&o.autoBind?on.bound:on).make_(e,t,n,i);var c,u=!1===(null==(r=this.options_)?void 0:r.deep)?rt.ref:rt;return"function"==typeof n.value&&null!=(a=this.options_)&&a.autoBind&&(n.value=n.value.bind(null!=(c=e.proxy_)?c:e.target_)),u.make_(e,t,n,i)}function We(e,t,n,i){var r,a,o;return n.get?lt.extend_(e,t,n,i):n.set?e.defineProperty_(t,{configurable:!kt.safeDescriptors||e.isPlainObject_,set:ft(t.toString(),n.set)},i):("function"==typeof n.value&&null!=(r=this.options_)&&r.autoBind&&(n.value=n.value.bind(null!=(o=e.proxy_)?o:e.target_)),(!1===(null==(a=this.options_)?void 0:a.deep)?rt.ref:rt).extend_(e,t,n,i))}function Ge(e,t){T("'"+this.annotationType_+"' cannot be used as a decorator")}var Qe={deep:!0,name:void 0,defaultDecorator:void 0,proxy:!0};function Xe(e){return e||Qe}Object.freeze(Qe);var Ye=ze("observable"),Ze=ze("observable.ref",{enhancer:be}),qe=ze("observable.shallow",{enhancer:function(e,t,n){return null==e||di(e)||Zn(e)||ni(e)||ai(e)?e:Array.isArray(e)?rt.array(e,{name:n,deep:!1}):W(e)?rt.object(e,void 0,{name:n,deep:!1}):Z(e)?rt.map(e,{name:n,deep:!1}):q(e)?rt.set(e,{name:n,deep:!1}):void 0}}),Ke=ze("observable.struct",{enhancer:function(e,t){return Di(e,t)?t:e}}),Je=he(Ye);function $e(e){return!0===e.deep?ye:!1===e.deep?be:(t=e.defaultDecorator)&&null!=(n=null==(i=t.options_)?void 0:i.enhancer)?n:ye;var t,n,i}function et(e,t,n){return pe(t)?Ye.decorate_20223_(e,t):H(t)?void de(e,t,Ye):Sn(e)?e:W(e)?rt.object(e,t,n):Array.isArray(e)?rt.array(e,t):Z(e)?rt.map(e,t):q(e)?rt.set(e,t):"object"==typeof e&&null!==e?e:rt.box(e,t)}D(et,Je);var tt,nt,it={box:function(e,t){var n=Xe(t);return new vt(e,$e(n),n.name,!0,n.equals)},array:function(e,t){var n=Xe(t);return(!1===kt.useProxies||!1===n.proxy?Si:Fn)(e,$e(n),n.name)},map:function(e,t){var n=Xe(t);return new ti(e,$e(n),n.name)},set:function(e,t){var n=Xe(t);return new ri(e,$e(n),n.name)},object:function(e,t,n){return Ci((function(){return An(!1===kt.useProxies||!1===(null==n?void 0:n.proxy)?ci({},n):function(e,t){var n,i;return U(),null!=(i=(n=(e=ci(e,t))[fe]).proxy_)?i:n.proxy_=new Proxy(e,Tn)}({},n),e,t)}))},ref:he(Ze),shallow:he(qe),deep:Je,struct:he(Ke)},rt=D(et,it),at="computed",ot=Le(at),st=Le("computed.struct",{equals:ve.structural}),lt=function(e,t){if(pe(t))return ot.decorate_20223_(e,t);if(H(t))return de(e,t,ot);if(W(e))return he(Le(at,e));var n=W(t)?t:{};return n.get=e,n.name||(n.name=e.name||""),new wt(n)};Object.assign(lt,ot),lt.struct=he(st);var ct,ut=0,ht=1,dt=null!=(tt=null==(nt=N((function(){}),"name"))?void 0:nt.configurable)&&tt,pt={value:"action",configurable:!0,writable:!1,enumerable:!1};function ft(e,t,n,i){function r(){return function(e,t,n,i,r){var a=function(e,t,n,i){var r=!1,a=0,o=kt.trackingDerivation,s=!t||!o;jt();var l=kt.allowStateChanges;s&&(It(),l=At(!0));var c={runAsAction_:s,prevDerivation_:o,prevAllowStateChanges_:l,prevAllowStateReads_:Nt(!0),notifySpy_:r,startTime_:a,actionId_:ht++,parentActionId_:ut};return ut=c.actionId_,c}(0,t);try{return n.apply(i,r)}catch(e){throw a.error_=e,e}finally{!function(e){ut!==e.actionId_&&T(30),ut=e.parentActionId_,void 0!==e.error_&&(kt.suppressReactionErrors=!0),mt(e.prevAllowStateChanges_),Lt(e.prevAllowStateReads_),Ht(),e.runAsAction_&&Dt(e.prevDerivation_),kt.suppressReactionErrors=!1}(a)}}(0,n,t,i||this,arguments)}return void 0===n&&(n=!1),r.isMobxAction=!0,r.toString=function(){return t.toString()},dt&&(pt.value=e,L(r,"name",pt)),r}function At(e){var t=kt.allowStateChanges;return kt.allowStateChanges=e,t}function mt(e){kt.allowStateChanges=e}ct=Symbol.toPrimitive;var gt,vt=function(e){function t(t,n,i,r,a){var o;return void 0===i&&(i="ObservableValue"),void 0===r&&(r=!0),void 0===a&&(a=ve.default),(o=e.call(this,i)||this).enhancer=void 0,o.name_=void 0,o.equals=void 0,o.hasUnreportedChange_=!1,o.interceptors_=void 0,o.changeListeners_=void 0,o.value_=void 0,o.dehancer=void 0,o.enhancer=n,o.name_=i,o.equals=a,o.value_=n(t,void 0,i),o}ae(t,e);var n=t.prototype;return n.dehanceValue=function(e){return void 0!==this.dehancer?this.dehancer(e):e},n.set=function(e){this.value_,(e=this.prepareNewValue_(e))!==kt.UNCHANGED&&this.setNewValue_(e)},n.prepareNewValue_=function(e){if(Cn(this)){var t=Dn(this,{object:this,type:kn,newValue:e});if(!t)return kt.UNCHANGED;e=t.newValue}return e=this.enhancer(e,this.value_,this.name_),this.equals(this.value_,e)?kt.UNCHANGED:e},n.setNewValue_=function(e){var t=this.value_;this.value_=e,this.reportChanged(),Nn(this)&&Rn(this,{type:kn,object:this,newValue:e,oldValue:t})},n.get=function(){return this.reportObserved(),this.dehanceValue(this.value_)},n.intercept_=function(e){return In(this,e)},n.observe_=function(e,t){return t&&e({observableKind:"value",debugObjectName:this.name_,object:this,type:kn,newValue:this.value_,oldValue:void 0}),Ln(this,e)},n.raw=function(){return this.value_},n.toJSON=function(){return this.get()},n.toString=function(){return this.name_+"["+this.value_+"]"},n.valueOf=function(){return $(this.get())},n[ct]=function(){return this.valueOf()},t}(Ae);gt=Symbol.toPrimitive;var yt,bt,wt=function(){function e(e){this.dependenciesState_=yt.NOT_TRACKING_,this.observing_=[],this.newObserving_=null,this.isBeingObserved_=!1,this.isPendingUnobservation_=!1,this.observers_=new Set,this.diffValue_=0,this.runId_=0,this.lastAccessedBy_=0,this.lowestObserverState_=yt.UP_TO_DATE_,this.unboundDepsCount_=0,this.value_=new Mt(null),this.name_=void 0,this.triggeredBy_=void 0,this.isComputing_=!1,this.isRunningSetter_=!1,this.derivation=void 0,this.setter_=void 0,this.isTracing_=bt.NONE,this.scope_=void 0,this.equals_=void 0,this.requiresReaction_=void 0,this.keepAlive_=void 0,this.onBOL=void 0,this.onBUOL=void 0,e.get||T(31),this.derivation=e.get,this.name_=e.name||"ComputedValue",e.set&&(this.setter_=ft("ComputedValue-setter",e.set)),this.equals_=e.equals||(e.compareStructural||e.struct?ve.structural:ve.default),this.scope_=e.context,this.requiresReaction_=e.requiresReaction,this.keepAlive_=!!e.keepAlive}var t=e.prototype;return t.onBecomeStale_=function(){var e;(e=this).lowestObserverState_===yt.UP_TO_DATE_&&(e.lowestObserverState_=yt.POSSIBLY_STALE_,e.observers_.forEach((function(e){e.dependenciesState_===yt.UP_TO_DATE_&&(e.dependenciesState_=yt.POSSIBLY_STALE_,e.onBecomeStale_())})))},t.onBO=function(){this.onBOL&&this.onBOL.forEach((function(e){return e()}))},t.onBUO=function(){this.onBUOL&&this.onBUOL.forEach((function(e){return e()}))},t.get=function(){if(this.isComputing_&&T(32,this.name_,this.derivation),0!==kt.inBatch||0!==this.observers_.size||this.keepAlive_){if(Vt(this),Et(this)){var e=kt.trackingContext;this.keepAlive_&&!e&&(kt.trackingContext=this),this.trackAndCompute()&&((t=this).lowestObserverState_!==yt.STALE_&&(t.lowestObserverState_=yt.STALE_,t.observers_.forEach((function(e){e.dependenciesState_===yt.POSSIBLY_STALE_?e.dependenciesState_=yt.STALE_:e.dependenciesState_===yt.UP_TO_DATE_&&(t.lowestObserverState_=yt.UP_TO_DATE_)})))),kt.trackingContext=e}}else Et(this)&&(this.warnAboutUntrackedRead_(),jt(),this.value_=this.computeValue_(!1),Ht());var t,n=this.value_;if(St(n))throw n.cause;return n},t.set=function(e){if(this.setter_){this.isRunningSetter_&&T(33,this.name_),this.isRunningSetter_=!0;try{this.setter_.call(this.scope_,e)}finally{this.isRunningSetter_=!1}}else T(34,this.name_)},t.trackAndCompute=function(){var e=this.value_,t=this.dependenciesState_===yt.NOT_TRACKING_,n=this.computeValue_(!0),i=t||St(e)||St(n)||!this.equals_(e,n);return i&&(this.value_=n),i},t.computeValue_=function(e){this.isComputing_=!0;var t,n=At(!1);if(e)t=_t(this,this.derivation,this.scope_);else if(!0===kt.disableErrorBoundaries)t=this.derivation.call(this.scope_);else try{t=this.derivation.call(this.scope_)}catch(e){t=new Mt(e)}return mt(n),this.isComputing_=!1,t},t.suspend_=function(){this.keepAlive_||(Tt(this),this.value_=void 0)},t.observe_=function(e,t){var n=this,i=!0,r=void 0;return function(e,t){var n,i,r,a,o;void 0===t&&(t=P);var s,l=null!=(n=null==(i=t)?void 0:i.name)?n:"Autorun";if(t.scheduler||t.delay){var c=function(e){return e.scheduler?e.scheduler:e.delay?function(t){return setTimeout(t,e.delay)}:ln}(t),u=!1;s=new Gt(l,(function(){u||(u=!0,c((function(){u=!1,s.isDisposed_||s.track(h)})))}),t.onError,t.requiresObservable)}else s=new Gt(l,(function(){this.track(h)}),t.onError,t.requiresObservable);function h(){e(s)}return null!=(r=t)&&null!=(a=r.signal)&&a.aborted||s.schedule_(),s.getDisposer_(null==(o=t)?void 0:o.signal)}((function(){var a=n.get();if(!i||t){var o=It();e({observableKind:"computed",debugObjectName:n.name_,type:kn,object:n,newValue:a,oldValue:r}),Dt(o)}i=!1,r=a}))},t.warnAboutUntrackedRead_=function(){},t.toString=function(){return this.name_+"["+this.derivation.toString()+"]"},t.valueOf=function(){return $(this.get())},t[gt]=function(){return this.valueOf()},e}(),xt=Y("ComputedValue",wt);!function(e){e[e.NOT_TRACKING_=-1]="NOT_TRACKING_",e[e.UP_TO_DATE_=0]="UP_TO_DATE_",e[e.POSSIBLY_STALE_=1]="POSSIBLY_STALE_",e[e.STALE_=2]="STALE_"}(yt||(yt={})),function(e){e[e.NONE=0]="NONE",e[e.LOG=1]="LOG",e[e.BREAK=2]="BREAK"}(bt||(bt={}));var Mt=function(e){this.cause=void 0,this.cause=e};function St(e){return e instanceof Mt}function Et(e){switch(e.dependenciesState_){case yt.UP_TO_DATE_:return!1;case yt.NOT_TRACKING_:case yt.STALE_:return!0;case yt.POSSIBLY_STALE_:for(var t=Nt(!0),n=It(),i=e.observing_,r=i.length,a=0;a<r;a++){var o=i[a];if(xt(o)){if(kt.disableErrorBoundaries)o.get();else try{o.get()}catch(e){return Dt(n),Lt(t),!0}if(e.dependenciesState_===yt.STALE_)return Dt(n),Lt(t),!0}}return Rt(e),Dt(n),Lt(t),!1}}function _t(e,t,n){var i=Nt(!0);Rt(e),e.newObserving_=new Array(e.observing_.length+100),e.unboundDepsCount_=0,e.runId_=++kt.runId;var r,a=kt.trackingDerivation;if(kt.trackingDerivation=e,kt.inBatch++,!0===kt.disableErrorBoundaries)r=t.call(n);else try{r=t.call(n)}catch(e){r=new Mt(e)}return kt.inBatch--,kt.trackingDerivation=a,function(e){for(var t=e.observing_,n=e.observing_=e.newObserving_,i=yt.UP_TO_DATE_,r=0,a=e.unboundDepsCount_,o=0;o<a;o++){var s=n[o];0===s.diffValue_&&(s.diffValue_=1,r!==o&&(n[r]=s),r++),s.dependenciesState_>i&&(i=s.dependenciesState_)}for(n.length=r,e.newObserving_=null,a=t.length;a--;){var l=t[a];0===l.diffValue_&&Bt(l,e),l.diffValue_=0}for(;r--;){var c=n[r];1===c.diffValue_&&(c.diffValue_=0,Ut(c,e))}i!==yt.UP_TO_DATE_&&(e.dependenciesState_=i,e.onBecomeStale_())}(e),Lt(i),r}function Tt(e){var t=e.observing_;e.observing_=[];for(var n=t.length;n--;)Bt(t[n],e);e.dependenciesState_=yt.NOT_TRACKING_}function Ct(e){var t=It();try{return e()}finally{Dt(t)}}function It(){var e=kt.trackingDerivation;return kt.trackingDerivation=null,e}function Dt(e){kt.trackingDerivation=e}function Nt(e){var t=kt.allowStateReads;return kt.allowStateReads=e,t}function Lt(e){kt.allowStateReads=e}function Rt(e){if(e.dependenciesState_!==yt.UP_TO_DATE_){e.dependenciesState_=yt.UP_TO_DATE_;for(var t=e.observing_,n=t.length;n--;)t[n].lowestObserverState_=yt.UP_TO_DATE_}}var Ot=function(){this.version=6,this.UNCHANGED={},this.trackingDerivation=null,this.trackingContext=null,this.runId=0,this.mobxGuid=0,this.inBatch=0,this.pendingUnobservations=[],this.pendingReactions=[],this.isRunningReactions=!1,this.allowStateChanges=!1,this.allowStateReads=!0,this.enforceActions=!0,this.spyListeners=[],this.globalReactionErrorHandlers=[],this.computedRequiresReaction=!1,this.reactionRequiresObservable=!1,this.observableRequiresReaction=!1,this.disableErrorBoundaries=!1,this.suppressReactionErrors=!1,this.useProxies=!0,this.verifyProxies=!1,this.safeDescriptors=!0},Pt=!0,zt=!1,kt=function(){var e=I();return e.__mobxInstanceCount>0&&!e.__mobxGlobals&&(Pt=!1),e.__mobxGlobals&&e.__mobxGlobals.version!==(new Ot).version&&(Pt=!1),Pt?e.__mobxGlobals?(e.__mobxInstanceCount+=1,e.__mobxGlobals.UNCHANGED||(e.__mobxGlobals.UNCHANGED={}),e.__mobxGlobals):(e.__mobxInstanceCount=1,e.__mobxGlobals=new Ot):(setTimeout((function(){zt||T(35)}),1),new Ot)}();function Ut(e,t){e.observers_.add(t),e.lowestObserverState_>t.dependenciesState_&&(e.lowestObserverState_=t.dependenciesState_)}function Bt(e,t){e.observers_.delete(t),0===e.observers_.size&&Ft(e)}function Ft(e){!1===e.isPendingUnobservation_&&(e.isPendingUnobservation_=!0,kt.pendingUnobservations.push(e))}function jt(){kt.inBatch++}function Ht(){if(0==--kt.inBatch){Yt();for(var e=kt.pendingUnobservations,t=0;t<e.length;t++){var n=e[t];n.isPendingUnobservation_=!1,0===n.observers_.size&&(n.isBeingObserved_&&(n.isBeingObserved_=!1,n.onBUO()),n instanceof wt&&n.suspend_())}kt.pendingUnobservations=[]}}function Vt(e){var t=kt.trackingDerivation;return null!==t?(t.runId_!==e.lastAccessedBy_&&(e.lastAccessedBy_=t.runId_,t.newObserving_[t.unboundDepsCount_++]=e,!e.isBeingObserved_&&kt.trackingContext&&(e.isBeingObserved_=!0,e.onBO())),e.isBeingObserved_):(0===e.observers_.size&&kt.inBatch>0&&Ft(e),!1)}function Wt(e){e.lowestObserverState_!==yt.STALE_&&(e.lowestObserverState_=yt.STALE_,e.observers_.forEach((function(e){e.dependenciesState_===yt.UP_TO_DATE_&&e.onBecomeStale_(),e.dependenciesState_=yt.STALE_})))}var Gt=function(){function e(e,t,n,i){void 0===e&&(e="Reaction"),this.name_=void 0,this.onInvalidate_=void 0,this.errorHandler_=void 0,this.requiresObservable_=void 0,this.observing_=[],this.newObserving_=[],this.dependenciesState_=yt.NOT_TRACKING_,this.diffValue_=0,this.runId_=0,this.unboundDepsCount_=0,this.isDisposed_=!1,this.isScheduled_=!1,this.isTrackPending_=!1,this.isRunning_=!1,this.isTracing_=bt.NONE,this.name_=e,this.onInvalidate_=t,this.errorHandler_=n,this.requiresObservable_=i}var t=e.prototype;return t.onBecomeStale_=function(){this.schedule_()},t.schedule_=function(){this.isScheduled_||(this.isScheduled_=!0,kt.pendingReactions.push(this),Yt())},t.isScheduled=function(){return this.isScheduled_},t.runReaction_=function(){if(!this.isDisposed_){jt(),this.isScheduled_=!1;var e=kt.trackingContext;if(kt.trackingContext=this,Et(this)){this.isTrackPending_=!0;try{this.onInvalidate_()}catch(e){this.reportExceptionInDerivation_(e)}}kt.trackingContext=e,Ht()}},t.track=function(e){if(!this.isDisposed_){jt(),this.isRunning_=!0;var t=kt.trackingContext;kt.trackingContext=this;var n=_t(this,e,void 0);kt.trackingContext=t,this.isRunning_=!1,this.isTrackPending_=!1,this.isDisposed_&&Tt(this),St(n)&&this.reportExceptionInDerivation_(n.cause),Ht()}},t.reportExceptionInDerivation_=function(e){var t=this;if(this.errorHandler_)this.errorHandler_(e,this);else{if(kt.disableErrorBoundaries)throw e;var n="[mobx] uncaught error in '"+this+"'";kt.suppressReactionErrors||console.error(n,e),kt.globalReactionErrorHandlers.forEach((function(n){return n(e,t)}))}},t.dispose=function(){this.isDisposed_||(this.isDisposed_=!0,this.isRunning_||(jt(),Tt(this),Ht()))},t.getDisposer_=function(e){var t=this,n=function n(){t.dispose(),null==e||null==e.removeEventListener||e.removeEventListener("abort",n)};return null==e||null==e.addEventListener||e.addEventListener("abort",n),n[fe]=this,n},t.toString=function(){return"Reaction["+this.name_+"]"},t.trace=function(e){void 0===e&&(e=!1)},e}(),Qt=100,Xt=function(e){return e()};function Yt(){kt.inBatch>0||kt.isRunningReactions||Xt(Zt)}function Zt(){kt.isRunningReactions=!0;for(var e=kt.pendingReactions,t=0;e.length>0;){++t===Qt&&(console.error("[mobx] cycle in reaction: "+e[0]),e.splice(0));for(var n=e.splice(0),i=0,r=n.length;i<r;i++)n[i].runReaction_()}kt.isRunningReactions=!1}var qt=Y("Reaction",Gt),Kt="action",Jt="autoAction",$t=xe(Kt),en=xe("action.bound",{bound:!0}),tn=xe(Jt,{autoAction:!0}),nn=xe("autoAction.bound",{autoAction:!0,bound:!0});function rn(e){return function(t,n){return j(t)?ft(t.name||"<unnamed action>",t,e):j(n)?ft(t,n,e):pe(n)?(e?tn:$t).decorate_20223_(t,n):H(n)?de(t,n,e?tn:$t):H(t)?he(xe(e?Jt:Kt,{name:t,autoAction:e})):void 0}}var an=rn(!1);Object.assign(an,$t);var on=rn(!0);function sn(e){return j(e)&&!0===e.isMobxAction}Object.assign(on,tn),an.bound=he(en),on.bound=he(nn);var ln=function(e){return e()};var cn="onBO",un="onBUO";function hn(e,t,n){return dn(un,e,t,n)}function dn(e,t,n,i){var r="function"==typeof i?Ei(t,n):Ei(t),a=j(i)?i:n,o=e+"L";return r[o]?r[o].add(a):r[o]=new Set([a]),function(){var e=r[o];e&&(e.delete(a),0===e.size&&delete r[o])}}var pn="always";function fn(e){!0===e.isolateGlobalState&&function(){if((kt.pendingReactions.length||kt.inBatch||kt.isRunningReactions)&&T(36),zt=!0,Pt){var e=I();0==--e.__mobxInstanceCount&&(e.__mobxGlobals=void 0),kt=new Ot}}();var t,n,i=e.useProxies,r=e.enforceActions;if(void 0!==i&&(kt.useProxies=i===pn||"never"!==i&&"undefined"!=typeof Proxy),"ifavailable"===i&&(kt.verifyProxies=!0),void 0!==r){var a=r===pn?pn:"observed"===r;kt.enforceActions=a,kt.allowStateChanges=!0!==a&&a!==pn}["computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","disableErrorBoundaries","safeDescriptors"].forEach((function(t){t in e&&(kt[t]=!!e[t])})),kt.allowStateReads=!kt.observableRequiresReaction,e.reactionScheduler&&(t=e.reactionScheduler,n=Xt,Xt=function(e){return t((function(){return n(e)}))})}function An(e,t,n,i){var r=te(t);return Ci((function(){var t=ci(e,i)[fe];J(r).forEach((function(e){t.extend_(e,r[e],!n||!(e in n)||n[e])}))})),e}function mn(e){var t,n={name:e.name_};return e.observing_&&e.observing_.length>0&&(n.dependencies=(t=e.observing_,Array.from(new Set(t))).map(mn)),n}var gn=0;function vn(){this.message="FLOW_CANCELLED"}vn.prototype=Object.create(Error.prototype);var yn=Te("flow"),bn=Te("flow.bound",{bound:!0}),wn=Object.assign((function(e,t){if(pe(t))return yn.decorate_20223_(e,t);if(H(t))return de(e,t,yn);var n=e,i=n.name||"<unnamed flow>",r=function(){var e,t=arguments,r=++gn,a=an(i+" - runid: "+r+" - init",n).apply(this,t),o=void 0,s=new Promise((function(t,n){var s=0;function l(e){var t;o=void 0;try{t=an(i+" - runid: "+r+" - yield "+s++,a.next).call(a,e)}catch(e){return n(e)}u(t)}function c(e){var t;o=void 0;try{t=an(i+" - runid: "+r+" - yield "+s++,a.throw).call(a,e)}catch(e){return n(e)}u(t)}function u(e){if(!j(null==e?void 0:e.then))return e.done?t(e.value):(o=Promise.resolve(e.value)).then(l,c);e.then(u,n)}e=n,l(void 0)}));return s.cancel=an(i+" - runid: "+r+" - cancel",(function(){try{o&&xn(o);var t=a.return(void 0),n=Promise.resolve(t.value);n.then(F,F),xn(n),e(new vn)}catch(t){e(t)}})),s};return r.isMobXFlow=!0,r}),yn);function xn(e){j(e.cancel)&&e.cancel()}function Mn(e){return!0===(null==e?void 0:e.isMobXFlow)}function Sn(e){return function(e,t){return!!e&&(void 0!==t?!!di(e)&&e[fe].values_.has(t):di(e)||!!e[fe]||me(e)||qt(e)||xt(e))}(e)}function En(e,t){void 0===t&&(t=void 0),jt();try{return e.apply(t)}finally{Ht()}}function _n(e){return e[fe]}wn.bound=he(bn);var Tn={has:function(e,t){return _n(e).has_(t)},get:function(e,t){return _n(e).get_(t)},set:function(e,t,n){var i;return!!H(t)&&(null==(i=_n(e).set_(t,n,!0))||i)},deleteProperty:function(e,t){var n;return!!H(t)&&(null==(n=_n(e).delete_(t,!0))||n)},defineProperty:function(e,t,n){var i;return null==(i=_n(e).defineProperty_(t,n))||i},ownKeys:function(e){return _n(e).ownKeys_()},preventExtensions:function(e){T(13)}};function Cn(e){return void 0!==e.interceptors_&&e.interceptors_.length>0}function In(e,t){var n=e.interceptors_||(e.interceptors_=[]);return n.push(t),B((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function Dn(e,t){var n=It();try{for(var i=[].concat(e.interceptors_||[]),r=0,a=i.length;r<a&&((t=i[r](t))&&!t.type&&T(14),t);r++);return t}finally{Dt(n)}}function Nn(e){return void 0!==e.changeListeners_&&e.changeListeners_.length>0}function Ln(e,t){var n=e.changeListeners_||(e.changeListeners_=[]);return n.push(t),B((function(){var e=n.indexOf(t);-1!==e&&n.splice(e,1)}))}function Rn(e,t){var n=It(),i=e.changeListeners_;if(i){for(var r=0,a=(i=i.slice()).length;r<a;r++)i[r](t);Dt(n)}}var On=Symbol("mobx-keys");function Pn(e,t,n){return W(e)?An(e,e,t,n):(Ci((function(){var i=ci(e,n)[fe];if(!e[On]){var r=Object.getPrototypeOf(e),a=new Set([].concat(J(e),J(r)));a.delete("constructor"),a.delete(fe),Q(r,On,a)}e[On].forEach((function(e){return i.make_(e,!t||!(e in t)||t[e])}))})),e)}var zn="splice",kn="update",Un={get:function(e,t){var n=e[fe];return t===fe?n:"length"===t?n.getArrayLength_():"string"!=typeof t||isNaN(t)?ee(jn,t)?jn[t]:e[t]:n.get_(parseInt(t))},set:function(e,t,n){var i=e[fe];return"length"===t&&i.setArrayLength_(n),"symbol"==typeof t||isNaN(t)?e[t]=n:i.set_(parseInt(t),n),!0},preventExtensions:function(){T(15)}},Bn=function(){function e(e,t,n,i){void 0===e&&(e="ObservableArray"),this.owned_=void 0,this.legacyMode_=void 0,this.atom_=void 0,this.values_=[],this.interceptors_=void 0,this.changeListeners_=void 0,this.enhancer_=void 0,this.dehancer=void 0,this.proxy_=void 0,this.lastKnownLength_=0,this.owned_=n,this.legacyMode_=i,this.atom_=new Ae(e),this.enhancer_=function(e,n){return t(e,n,"ObservableArray[..]")}}var t=e.prototype;return t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.dehanceValues_=function(e){return void 0!==this.dehancer&&e.length>0?e.map(this.dehancer):e},t.intercept_=function(e){return In(this,e)},t.observe_=function(e,t){return void 0===t&&(t=!1),t&&e({observableKind:"array",object:this.proxy_,debugObjectName:this.atom_.name_,type:"splice",index:0,added:this.values_.slice(),addedCount:this.values_.length,removed:[],removedCount:0}),Ln(this,e)},t.getArrayLength_=function(){return this.atom_.reportObserved(),this.values_.length},t.setArrayLength_=function(e){("number"!=typeof e||isNaN(e)||e<0)&&T("Out of range: "+e);var t=this.values_.length;if(e!==t)if(e>t){for(var n=new Array(e-t),i=0;i<e-t;i++)n[i]=void 0;this.spliceWithArray_(t,0,n)}else this.spliceWithArray_(e,t-e)},t.updateArrayLength_=function(e,t){e!==this.lastKnownLength_&&T(16),this.lastKnownLength_+=t,this.legacyMode_&&t>0&&Mi(e+t+1)},t.spliceWithArray_=function(e,t,n){var i=this;this.atom_;var r=this.values_.length;if(void 0===e?e=0:e>r?e=r:e<0&&(e=Math.max(0,r+e)),t=1===arguments.length?r-e:null==t?0:Math.max(0,Math.min(t,r-e)),void 0===n&&(n=O),Cn(this)){var a=Dn(this,{object:this.proxy_,type:zn,index:e,removedCount:t,added:n});if(!a)return O;t=a.removedCount,n=a.added}if(n=0===n.length?n:n.map((function(e){return i.enhancer_(e,void 0)})),this.legacyMode_){var o=n.length-t;this.updateArrayLength_(r,o)}var s=this.spliceItemsIntoValues_(e,t,n);return 0===t&&0===n.length||this.notifyArraySplice_(e,n,s),this.dehanceValues_(s)},t.spliceItemsIntoValues_=function(e,t,n){var i;if(n.length<1e4)return(i=this.values_).splice.apply(i,[e,t].concat(n));var r=this.values_.slice(e,e+t),a=this.values_.slice(e+t);this.values_.length+=n.length-t;for(var o=0;o<n.length;o++)this.values_[e+o]=n[o];for(var s=0;s<a.length;s++)this.values_[e+n.length+s]=a[s];return r},t.notifyArrayChildUpdate_=function(e,t,n){var i=!this.owned_&&!1,r=Nn(this),a=r||i?{observableKind:"array",object:this.proxy_,type:kn,debugObjectName:this.atom_.name_,index:e,newValue:t,oldValue:n}:null;this.atom_.reportChanged(),r&&Rn(this,a)},t.notifyArraySplice_=function(e,t,n){var i=!this.owned_&&!1,r=Nn(this),a=r||i?{observableKind:"array",object:this.proxy_,debugObjectName:this.atom_.name_,type:zn,index:e,removed:n,added:t,removedCount:n.length,addedCount:t.length}:null;this.atom_.reportChanged(),r&&Rn(this,a)},t.get_=function(e){if(!(this.legacyMode_&&e>=this.values_.length))return this.atom_.reportObserved(),this.dehanceValue_(this.values_[e]);console.warn("[mobx] Out of bounds read: "+e)},t.set_=function(e,t){var n=this.values_;if(this.legacyMode_&&e>n.length&&T(17,e,n.length),e<n.length){this.atom_;var i=n[e];if(Cn(this)){var r=Dn(this,{type:kn,object:this.proxy_,index:e,newValue:t});if(!r)return;t=r.newValue}(t=this.enhancer_(t,i))!==i&&(n[e]=t,this.notifyArrayChildUpdate_(e,t,i))}else{for(var a=new Array(e+1-n.length),o=0;o<a.length-1;o++)a[o]=void 0;a[a.length-1]=t,this.spliceWithArray_(n.length,0,a)}},e}();function Fn(e,t,n,i){return void 0===n&&(n="ObservableArray"),void 0===i&&(i=!1),U(),Ci((function(){var r=new Bn(n,t,i,!1);X(r.values_,fe,r);var a=new Proxy(r.values_,Un);return r.proxy_=a,e&&e.length&&r.spliceWithArray_(0,0,e),a}))}var jn={clear:function(){return this.splice(0)},replace:function(e){var t=this[fe];return t.spliceWithArray_(0,t.values_.length,e)},toJSON:function(){return this.slice()},splice:function(e,t){for(var n=arguments.length,i=new Array(n>2?n-2:0),r=2;r<n;r++)i[r-2]=arguments[r];var a=this[fe];switch(arguments.length){case 0:return[];case 1:return a.spliceWithArray_(e);case 2:return a.spliceWithArray_(e,t)}return a.spliceWithArray_(e,t,i)},spliceWithArray:function(e,t,n){return this[fe].spliceWithArray_(e,t,n)},push:function(){for(var e=this[fe],t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e.spliceWithArray_(e.values_.length,0,n),e.values_.length},pop:function(){return this.splice(Math.max(this[fe].values_.length-1,0),1)[0]},shift:function(){return this.splice(0,1)[0]},unshift:function(){for(var e=this[fe],t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e.spliceWithArray_(0,0,n),e.values_.length},reverse:function(){return kt.trackingDerivation&&T(37,"reverse"),this.replace(this.slice().reverse()),this},sort:function(){kt.trackingDerivation&&T(37,"sort");var e=this.slice();return e.sort.apply(e,arguments),this.replace(e),this},remove:function(e){var t=this[fe],n=t.dehanceValues_(t.values_).indexOf(e);return n>-1&&(this.splice(n,1),!0)}};function Hn(e,t){"function"==typeof Array.prototype[e]&&(jn[e]=t(e))}function Vn(e){return function(){var t=this[fe];t.atom_.reportObserved();var n=t.dehanceValues_(t.values_);return n[e].apply(n,arguments)}}function Wn(e){return function(t,n){var i=this,r=this[fe];return r.atom_.reportObserved(),r.dehanceValues_(r.values_)[e]((function(e,r){return t.call(n,e,r,i)}))}}function Gn(e){return function(){var t=this,n=this[fe];n.atom_.reportObserved();var i=n.dehanceValues_(n.values_),r=arguments[0];return arguments[0]=function(e,n,i){return r(e,n,i,t)},i[e].apply(i,arguments)}}Hn("at",Vn),Hn("concat",Vn),Hn("flat",Vn),Hn("includes",Vn),Hn("indexOf",Vn),Hn("join",Vn),Hn("lastIndexOf",Vn),Hn("slice",Vn),Hn("toString",Vn),Hn("toLocaleString",Vn),Hn("toSorted",Vn),Hn("toSpliced",Vn),Hn("with",Vn),Hn("every",Wn),Hn("filter",Wn),Hn("find",Wn),Hn("findIndex",Wn),Hn("findLast",Wn),Hn("findLastIndex",Wn),Hn("flatMap",Wn),Hn("forEach",Wn),Hn("map",Wn),Hn("some",Wn),Hn("toReversed",Wn),Hn("reduce",Gn),Hn("reduceRight",Gn);var Qn,Xn,Yn=Y("ObservableArrayAdministration",Bn);function Zn(e){return V(e)&&Yn(e[fe])}var qn={},Kn="add",Jn="delete";Qn=Symbol.iterator,Xn=Symbol.toStringTag;var $n,ei,ti=function(){function e(e,t,n){var i=this;void 0===t&&(t=ye),void 0===n&&(n="ObservableMap"),this.enhancer_=void 0,this.name_=void 0,this[fe]=qn,this.data_=void 0,this.hasMap_=void 0,this.keysAtom_=void 0,this.interceptors_=void 0,this.changeListeners_=void 0,this.dehancer=void 0,this.enhancer_=t,this.name_=n,j(Map)||T(18),Ci((function(){i.keysAtom_=ge("ObservableMap.keys()"),i.data_=new Map,i.hasMap_=new Map,e&&i.merge(e)}))}var t=e.prototype;return t.has_=function(e){return this.data_.has(e)},t.has=function(e){var t=this;if(!kt.trackingDerivation)return this.has_(e);var n=this.hasMap_.get(e);if(!n){var i=n=new vt(this.has_(e),be,"ObservableMap.key?",!1);this.hasMap_.set(e,i),hn(i,(function(){return t.hasMap_.delete(e)}))}return n.get()},t.set=function(e,t){var n=this.has_(e);if(Cn(this)){var i=Dn(this,{type:n?kn:Kn,object:this,newValue:t,name:e});if(!i)return this;t=i.newValue}return n?this.updateValue_(e,t):this.addValue_(e,t),this},t.delete=function(e){var t=this;if(this.keysAtom_,Cn(this)&&!Dn(this,{type:Jn,object:this,name:e}))return!1;if(this.has_(e)){var n=Nn(this),i=n?{observableKind:"map",debugObjectName:this.name_,type:Jn,object:this,oldValue:this.data_.get(e).value_,name:e}:null;return En((function(){var n;t.keysAtom_.reportChanged(),null==(n=t.hasMap_.get(e))||n.setNewValue_(!1),t.data_.get(e).setNewValue_(void 0),t.data_.delete(e)})),n&&Rn(this,i),!0}return!1},t.updateValue_=function(e,t){var n=this.data_.get(e);if((t=n.prepareNewValue_(t))!==kt.UNCHANGED){var i=Nn(this),r=i?{observableKind:"map",debugObjectName:this.name_,type:kn,object:this,oldValue:n.value_,name:e,newValue:t}:null;n.setNewValue_(t),i&&Rn(this,r)}},t.addValue_=function(e,t){var n=this;this.keysAtom_,En((function(){var i,r=new vt(t,n.enhancer_,"ObservableMap.key",!1);n.data_.set(e,r),t=r.value_,null==(i=n.hasMap_.get(e))||i.setNewValue_(!0),n.keysAtom_.reportChanged()}));var i=Nn(this),r=i?{observableKind:"map",debugObjectName:this.name_,type:Kn,object:this,name:e,newValue:t}:null;i&&Rn(this,r)},t.get=function(e){return this.has(e)?this.dehanceValue_(this.data_.get(e).get()):this.dehanceValue_(void 0)},t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.keys=function(){return this.keysAtom_.reportObserved(),this.data_.keys()},t.values=function(){var e=this,t=this.keys();return Ri({next:function(){var n=t.next(),i=n.done,r=n.value;return{done:i,value:i?void 0:e.get(r)}}})},t.entries=function(){var e=this,t=this.keys();return Ri({next:function(){var n=t.next(),i=n.done,r=n.value;return{done:i,value:i?void 0:[r,e.get(r)]}}})},t[Qn]=function(){return this.entries()},t.forEach=function(e,t){for(var n,i=ce(this);!(n=i()).done;){var r=n.value,a=r[0],o=r[1];e.call(t,o,a,this)}},t.merge=function(e){var t=this;return ni(e)&&(e=new Map(e)),En((function(){W(e)?function(e){var t=Object.keys(e);if(!K)return t;var n=Object.getOwnPropertySymbols(e);return n.length?[].concat(t,n.filter((function(t){return R.propertyIsEnumerable.call(e,t)}))):t}(e).forEach((function(n){return t.set(n,e[n])})):Array.isArray(e)?e.forEach((function(e){var n=e[0],i=e[1];return t.set(n,i)})):Z(e)?(e.constructor!==Map&&T(19,e),e.forEach((function(e,n){return t.set(n,e)}))):null!=e&&T(20,e)})),this},t.clear=function(){var e=this;En((function(){Ct((function(){for(var t,n=ce(e.keys());!(t=n()).done;){var i=t.value;e.delete(i)}}))}))},t.replace=function(e){var t=this;return En((function(){for(var n,i=function(e){if(Z(e)||ni(e))return e;if(Array.isArray(e))return new Map(e);if(W(e)){var t=new Map;for(var n in e)t.set(n,e[n]);return t}return T(21,e)}(e),r=new Map,a=!1,o=ce(t.data_.keys());!(n=o()).done;){var s=n.value;if(!i.has(s))if(t.delete(s))a=!0;else{var l=t.data_.get(s);r.set(s,l)}}for(var c,u=ce(i.entries());!(c=u()).done;){var h=c.value,d=h[0],p=h[1],f=t.data_.has(d);if(t.set(d,p),t.data_.has(d)){var A=t.data_.get(d);r.set(d,A),f||(a=!0)}}if(!a)if(t.data_.size!==r.size)t.keysAtom_.reportChanged();else for(var m=t.data_.keys(),g=r.keys(),v=m.next(),y=g.next();!v.done;){if(v.value!==y.value){t.keysAtom_.reportChanged();break}v=m.next(),y=g.next()}t.data_=r})),this},t.toString=function(){return"[object ObservableMap]"},t.toJSON=function(){return Array.from(this)},t.observe_=function(e,t){return Ln(this,e)},t.intercept_=function(e){return In(this,e)},ie(e,[{key:"size",get:function(){return this.keysAtom_.reportObserved(),this.data_.size}},{key:Xn,get:function(){return"Map"}}]),e}(),ni=Y("ObservableMap",ti),ii={};$n=Symbol.iterator,ei=Symbol.toStringTag;var ri=function(){function e(e,t,n){var i=this;void 0===t&&(t=ye),void 0===n&&(n="ObservableSet"),this.name_=void 0,this[fe]=ii,this.data_=new Set,this.atom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.dehancer=void 0,this.enhancer_=void 0,this.name_=n,j(Set)||T(22),this.enhancer_=function(e,i){return t(e,i,n)},Ci((function(){i.atom_=ge(i.name_),e&&i.replace(e)}))}var t=e.prototype;return t.dehanceValue_=function(e){return void 0!==this.dehancer?this.dehancer(e):e},t.clear=function(){var e=this;En((function(){Ct((function(){for(var t,n=ce(e.data_.values());!(t=n()).done;){var i=t.value;e.delete(i)}}))}))},t.forEach=function(e,t){for(var n,i=ce(this);!(n=i()).done;){var r=n.value;e.call(t,r,r,this)}},t.add=function(e){var t=this;if(this.atom_,Cn(this)&&!Dn(this,{type:Kn,object:this,newValue:e}))return this;if(!this.has(e)){En((function(){t.data_.add(t.enhancer_(e,void 0)),t.atom_.reportChanged()}));var n=Nn(this),i=n?{observableKind:"set",debugObjectName:this.name_,type:Kn,object:this,newValue:e}:null;n&&Rn(this,i)}return this},t.delete=function(e){var t=this;if(Cn(this)&&!Dn(this,{type:Jn,object:this,oldValue:e}))return!1;if(this.has(e)){var n=Nn(this),i=n?{observableKind:"set",debugObjectName:this.name_,type:Jn,object:this,oldValue:e}:null;return En((function(){t.atom_.reportChanged(),t.data_.delete(e)})),n&&Rn(this,i),!0}return!1},t.has=function(e){return this.atom_.reportObserved(),this.data_.has(this.dehanceValue_(e))},t.entries=function(){var e=0,t=Array.from(this.keys()),n=Array.from(this.values());return Ri({next:function(){var i=e;return e+=1,i<n.length?{value:[t[i],n[i]],done:!1}:{done:!0}}})},t.keys=function(){return this.values()},t.values=function(){this.atom_.reportObserved();var e=this,t=0,n=Array.from(this.data_.values());return Ri({next:function(){return t<n.length?{value:e.dehanceValue_(n[t++]),done:!1}:{done:!0}}})},t.replace=function(e){var t=this;return ai(e)&&(e=new Set(e)),En((function(){Array.isArray(e)||q(e)?(t.clear(),e.forEach((function(e){return t.add(e)}))):null!=e&&T("Cannot initialize set from "+e)})),this},t.observe_=function(e,t){return Ln(this,e)},t.intercept_=function(e){return In(this,e)},t.toJSON=function(){return Array.from(this)},t.toString=function(){return"[object ObservableSet]"},t[$n]=function(){return this.values()},ie(e,[{key:"size",get:function(){return this.atom_.reportObserved(),this.data_.size}},{key:ei,get:function(){return"Set"}}]),e}(),ai=Y("ObservableSet",ri),oi=Object.create(null),si="remove",li=function(){function e(e,t,n,i){void 0===t&&(t=new Map),void 0===i&&(i=je),this.target_=void 0,this.values_=void 0,this.name_=void 0,this.defaultAnnotation_=void 0,this.keysAtom_=void 0,this.changeListeners_=void 0,this.interceptors_=void 0,this.proxy_=void 0,this.isPlainObject_=void 0,this.appliedAnnotations_=void 0,this.pendingKeys_=void 0,this.target_=e,this.values_=t,this.name_=n,this.defaultAnnotation_=i,this.keysAtom_=new Ae("ObservableObject.keys"),this.isPlainObject_=W(this.target_)}var t=e.prototype;return t.getObservablePropValue_=function(e){return this.values_.get(e).get()},t.setObservablePropValue_=function(e,t){var n=this.values_.get(e);if(n instanceof wt)return n.set(t),!0;if(Cn(this)){var i=Dn(this,{type:kn,object:this.proxy_||this.target_,name:e,newValue:t});if(!i)return null;t=i.newValue}if((t=n.prepareNewValue_(t))!==kt.UNCHANGED){var r=Nn(this),a=r?{type:kn,observableKind:"object",debugObjectName:this.name_,object:this.proxy_||this.target_,oldValue:n.value_,name:e,newValue:t}:null;n.setNewValue_(t),r&&Rn(this,a)}return!0},t.get_=function(e){return kt.trackingDerivation&&!ee(this.target_,e)&&this.has_(e),this.target_[e]},t.set_=function(e,t,n){return void 0===n&&(n=!1),ee(this.target_,e)?this.values_.has(e)?this.setObservablePropValue_(e,t):n?Reflect.set(this.target_,e,t):(this.target_[e]=t,!0):this.extend_(e,{value:t,enumerable:!0,writable:!0,configurable:!0},this.defaultAnnotation_,n)},t.has_=function(e){if(!kt.trackingDerivation)return e in this.target_;this.pendingKeys_||(this.pendingKeys_=new Map);var t=this.pendingKeys_.get(e);return t||(t=new vt(e in this.target_,be,"ObservableObject.key?",!1),this.pendingKeys_.set(e,t)),t.get()},t.make_=function(e,t){if(!0===t&&(t=this.defaultAnnotation_),!1!==t){if(!(e in this.target_)){var n;if(null!=(n=this.target_[ue])&&n[e])return;T(1,t.annotationType_,this.name_+"."+e.toString())}for(var i=this.target_;i&&i!==R;){var r=N(i,e);if(r){var a=t.make_(this,e,r,i);if(0===a)return;if(1===a)break}i=Object.getPrototypeOf(i)}pi(this,0,e)}},t.extend_=function(e,t,n,i){if(void 0===i&&(i=!1),!0===n&&(n=this.defaultAnnotation_),!1===n)return this.defineProperty_(e,t,i);var r=n.extend_(this,e,t,i);return r&&pi(this,0,e),r},t.defineProperty_=function(e,t,n){void 0===n&&(n=!1),this.keysAtom_;try{jt();var i=this.delete_(e);if(!i)return i;if(Cn(this)){var r=Dn(this,{object:this.proxy_||this.target_,name:e,type:Kn,newValue:t.value});if(!r)return null;var a=r.newValue;t.value!==a&&(t=re({},t,{value:a}))}if(n){if(!Reflect.defineProperty(this.target_,e,t))return!1}else L(this.target_,e,t);this.notifyPropertyAddition_(e,t.value)}finally{Ht()}return!0},t.defineObservableProperty_=function(e,t,n,i){void 0===i&&(i=!1),this.keysAtom_;try{jt();var r=this.delete_(e);if(!r)return r;if(Cn(this)){var a=Dn(this,{object:this.proxy_||this.target_,name:e,type:Kn,newValue:t});if(!a)return null;t=a.newValue}var o=hi(e),s={configurable:!kt.safeDescriptors||this.isPlainObject_,enumerable:!0,get:o.get,set:o.set};if(i){if(!Reflect.defineProperty(this.target_,e,s))return!1}else L(this.target_,e,s);var l=new vt(t,n,"ObservableObject.key",!1);this.values_.set(e,l),this.notifyPropertyAddition_(e,l.value_)}finally{Ht()}return!0},t.defineComputedProperty_=function(e,t,n){void 0===n&&(n=!1),this.keysAtom_;try{jt();var i=this.delete_(e);if(!i)return i;if(Cn(this)&&!Dn(this,{object:this.proxy_||this.target_,name:e,type:Kn,newValue:void 0}))return null;t.name||(t.name="ObservableObject.key"),t.context=this.proxy_||this.target_;var r=hi(e),a={configurable:!kt.safeDescriptors||this.isPlainObject_,enumerable:!1,get:r.get,set:r.set};if(n){if(!Reflect.defineProperty(this.target_,e,a))return!1}else L(this.target_,e,a);this.values_.set(e,new wt(t)),this.notifyPropertyAddition_(e,void 0)}finally{Ht()}return!0},t.delete_=function(e,t){if(void 0===t&&(t=!1),this.keysAtom_,!ee(this.target_,e))return!0;if(Cn(this)&&!Dn(this,{object:this.proxy_||this.target_,name:e,type:si}))return null;try{var n,i;jt();var r,a=Nn(this),o=this.values_.get(e),s=void 0;if(!o&&a&&(s=null==(r=N(this.target_,e))?void 0:r.value),t){if(!Reflect.deleteProperty(this.target_,e))return!1}else delete this.target_[e];if(o&&(this.values_.delete(e),o instanceof vt&&(s=o.value_),Wt(o)),this.keysAtom_.reportChanged(),null==(n=this.pendingKeys_)||null==(i=n.get(e))||i.set(e in this.target_),a){var l={type:si,observableKind:"object",object:this.proxy_||this.target_,debugObjectName:this.name_,oldValue:s,name:e};a&&Rn(this,l)}}finally{Ht()}return!0},t.observe_=function(e,t){return Ln(this,e)},t.intercept_=function(e){return In(this,e)},t.notifyPropertyAddition_=function(e,t){var n,i,r=Nn(this);if(r){var a=r?{type:Kn,observableKind:"object",debugObjectName:this.name_,object:this.proxy_||this.target_,name:e,newValue:t}:null;r&&Rn(this,a)}null==(n=this.pendingKeys_)||null==(i=n.get(e))||i.set(!0),this.keysAtom_.reportChanged()},t.ownKeys_=function(){return this.keysAtom_.reportObserved(),J(this.target_)},t.keys_=function(){return this.keysAtom_.reportObserved(),Object.keys(this.target_)},e}();function ci(e,t){var n;if(ee(e,fe))return e;var i=null!=(n=null==t?void 0:t.name)?n:"ObservableObject",r=new li(e,new Map,String(i),function(e){var t;return e?null!=(t=e.defaultDecorator)?t:He(e):void 0}(t));return Q(e,fe,r),e}var ui=Y("ObservableObjectAdministration",li);function hi(e){return oi[e]||(oi[e]={get:function(){return this[fe].getObservablePropValue_(e)},set:function(t){return this[fe].setObservablePropValue_(e,t)}})}function di(e){return!!V(e)&&ui(e[fe])}function pi(e,t,n){var i;null==(i=e.target_[ue])||delete i[n]}var fi,Ai,mi=wi(0),gi=function(){var e=!1,t={};return Object.defineProperty(t,"0",{set:function(){e=!0}}),Object.create(t)[0]=1,!1===e}(),vi=0,yi=function(){};fi=yi,Ai=Array.prototype,Object.setPrototypeOf?Object.setPrototypeOf(fi.prototype,Ai):void 0!==fi.prototype.__proto__?fi.prototype.__proto__=Ai:fi.prototype=Ai;var bi=function(e,t,n){function i(t,n,i,r){var a;return void 0===i&&(i="ObservableArray"),void 0===r&&(r=!1),a=e.call(this)||this,Ci((function(){var e=new Bn(i,n,r,!0);e.proxy_=se(a),X(se(a),fe,e),t&&t.length&&a.spliceWithArray(0,0,t),gi&&Object.defineProperty(se(a),"0",mi)})),a}ae(i,e);var r=i.prototype;return r.concat=function(){this[fe].atom_.reportObserved();for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return Array.prototype.concat.apply(this.slice(),t.map((function(e){return Zn(e)?e.slice():e})))},r[n]=function(){var e=this,t=0;return Ri({next:function(){return t<e.length?{value:e[t++],done:!1}:{done:!0,value:void 0}}})},ie(i,[{key:"length",get:function(){return this[fe].getArrayLength_()},set:function(e){this[fe].setArrayLength_(e)}},{key:t,get:function(){return"Array"}}]),i}(yi,Symbol.toStringTag,Symbol.iterator);function wi(e){return{enumerable:!1,configurable:!0,get:function(){return this[fe].get_(e)},set:function(t){this[fe].set_(e,t)}}}function xi(e){L(bi.prototype,""+e,wi(e))}function Mi(e){if(e>vi){for(var t=vi;t<e+100;t++)xi(t);vi=e}}function Si(e,t,n){return new bi(e,t,n)}function Ei(e,t){if("object"==typeof e&&null!==e){if(Zn(e))return void 0!==t&&T(23),e[fe].atom_;if(ai(e))return e.atom_;if(ni(e)){if(void 0===t)return e.keysAtom_;var n=e.data_.get(t)||e.hasMap_.get(t);return n||T(25,t,Ti(e)),n}if(di(e)){if(!t)return T(26);var i=e[fe].values_.get(t);return i||T(27,t,Ti(e)),i}if(me(e)||xt(e)||qt(e))return e}else if(j(e)&&qt(e[fe]))return e[fe];T(28)}function _i(e,t){return e||T(29),void 0!==t?_i(Ei(e,t)):me(e)||xt(e)||qt(e)||ni(e)||ai(e)?e:e[fe]?e[fe]:void T(24,e)}function Ti(e,t){var n;if(void 0!==t)n=Ei(e,t);else{if(sn(e))return e.name;n=di(e)||ni(e)||ai(e)?_i(e):Ei(e)}return n.name_}function Ci(e){var t=It(),n=At(!0);jt();try{return e()}finally{Ht(),mt(n),Dt(t)}}Object.entries(jn).forEach((function(e){var t=e[0],n=e[1];"concat"!==t&&Q(bi.prototype,t,n)})),Mi(1e3);var Ii=R.toString;function Di(e,t,n){return void 0===n&&(n=-1),Ni(e,t,n)}function Ni(e,t,n,i,r){if(e===t)return 0!==e||1/e==1/t;if(null==e||null==t)return!1;if(e!=e)return t!=t;var a=typeof e;if("function"!==a&&"object"!==a&&"object"!=typeof t)return!1;var o=Ii.call(e);if(o!==Ii.call(t))return!1;switch(o){case"[object RegExp]":case"[object String]":return""+e==""+t;case"[object Number]":return+e!=+e?+t!=+t:0==+e?1/+e==1/t:+e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object Symbol]":return"undefined"!=typeof Symbol&&Symbol.valueOf.call(e)===Symbol.valueOf.call(t);case"[object Map]":case"[object Set]":n>=0&&n++}e=Li(e),t=Li(t);var s="[object Array]"===o;if(!s){if("object"!=typeof e||"object"!=typeof t)return!1;var l=e.constructor,c=t.constructor;if(l!==c&&!(j(l)&&l instanceof l&&j(c)&&c instanceof c)&&"constructor"in e&&"constructor"in t)return!1}if(0===n)return!1;n<0&&(n=-1),r=r||[];for(var u=(i=i||[]).length;u--;)if(i[u]===e)return r[u]===t;if(i.push(e),r.push(t),s){if((u=e.length)!==t.length)return!1;for(;u--;)if(!Ni(e[u],t[u],n-1,i,r))return!1}else{var h,d=Object.keys(e);if(u=d.length,Object.keys(t).length!==u)return!1;for(;u--;)if(!ee(t,h=d[u])||!Ni(e[h],t[h],n-1,i,r))return!1}return i.pop(),r.pop(),!0}function Li(e){return Zn(e)?e.slice():Z(e)||ni(e)||q(e)||ai(e)?Array.from(e.entries()):e}function Ri(e){return e[Symbol.iterator]=Oi,e}function Oi(){return this}function Pi(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}["Symbol","Map","Set"].forEach((function(e){void 0===I()[e]&&T("MobX requires global '"+e+"' to be available or polyfilled")})),"object"==typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__&&__MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({spy:function(e){return console.warn("[mobx.spy] Is a no-op in production builds"),function(){}},extras:{getDebugName:Ti},$mobx:fe}),fn({useProxies:"never"});const zi=class{constructor(e){Pi(this,"API_URL",null),Pi(this,"getBrandingData",(e=>e?{name:e.company_name,url:e.company_url}:null)),Pi(this,"getParsedData",(async e=>{var t,n;const i=await this.loadJson(e.json.value),r=this.getBrandingData(e.widget_branding);return{raw:e,parsed:{locale:(null===(t=e.widget_branding)||void 0===t?void 0:t.widget_language)||"en",logo:(null===(n=e.widget_branding)||void 0===n?void 0:n.logo_path)||null,floors:e.floors,branding:r,json:i}}})),Pi(this,"loadFurnitureData",(async()=>{const e="".concat(this.API_URL,"/api/furniture"),t=await fetch(e);return await t.json()})),Pi(this,"loadCrmWidgetData",(async e=>{const t="".concat(this.API_URL,"/api/crm/plans/").concat(e,"/widget"),n=await fetch(t),i=await n.json();return this.getParsedData(i)})),Pi(this,"loadWidgetData",(async e=>{const t="".concat(this.API_URL,"/api/plans/").concat(e,"/v2/widget"),n=await fetch(t),i=await n.json();return this.getParsedData(i)})),Pi(this,"loadEditorData",(async(e,t)=>{const n="".concat(this.API_URL,"/api/plans/").concat(e,"/editor?token=").concat(t),i=await fetch(n);return await i.json()})),Pi(this,"loadPanoramaData",(async e=>{const t="".concat(this.API_URL,"/api/plans/").concat(e,"/panorama"),n=await fetch(t);return await n.json()})),Pi(this,"loadJson",(async e=>{const t=await fetch(e);return await t.json()})),Pn(this),this.API_URL=e}},ki=JSON.parse('{"create-points":"Создавайте точки","delete-points":"Удаляйте точки","research-plan":"Исследовать планировку","rotate-plan":"Вращать планировку","rotate":"Старт","stop":"Стоп","plan":"Планировка","off":"Выкл","on":"Вкл","ok":"Ок","menu":"Меню","wasd":"WASD","view-from-above":"Обзор сверху","free-camera":"Свободный обзор","shadows":"Тени","hide-walls":"Скрыть стены","show-walls":"Показать стены","hide-doors":"Скрыть двери","show-doors":"Показать двери","material":"Материал","texture":"Текстура","color":"Цвет","wall-color":"Цвет стен","wall-texture":"Текстура стен","upload-wall-texture":"Загрузить текстуру стен","made-by-link":"https://hart-estate.ru/","made-by-text":"hart-estate.ru","floor":"этаж"}'),Ui=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://getfloorplan.com/","made-by-text":"getfloorplan.com","floor":"floor"}'),Bi=JSON.parse('{"research-plan":"klicken","rotate-plan":"drehen","rotate":"Drehen","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"Sicht von oben","free-camera":"Kostenlose Kamera","shadows":"Schatten","hide-walls":"Wände verstecken","show-walls":"Wände anzeigen","hide-doors":"Türen verstecken","show-doors":"Türen anzeigen","material":"Material","texture":"Textur","color":"Farbe","wall-color":"Wandfarbe","wall-texture":"Wandstruktur","upload-wall-texture":"Wandtextur hochladen","made-by-link":"","made-by-text":"","floor":"boden"}'),Fi=JSON.parse('{"research-plan":"Explora el diseño","rotate-plan":"Girar diseño","rotate":"Comenzar","stop":"Detener","plan":"Disposición","off":"Apagar","on":"Encender","ok":"Ok","menu":"Menú","wasd":"WASD","view-from-above":"Vista desde arriba","free-camera":"Revisión gratuita","shadows":"Oscuridad","hide-walls":"Ocultar paredes","show-walls":"Mostrar paredes","hide-doors":"Ocultar puertas","show-doors":"Mostrar puertas","material":"Material","texture":"Textura","color":"Color","wall-color":"Color de la pared","wall-texture":"Textura de la pared","upload-wall-texture":"Textura de la pared de carga","made-by-link":"","made-by-text":"","floor":"piso"}'),ji=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"klicken","rotate-plan":"drehen","rotate":"Drehen","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://treuco.nrw/","made-by-text":"treuco.nrw","floor":"floor"}'),Hi=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":" https://www.jetfueldesign.com/","made-by-text":"jetfueldesign.сom","floor":"floor"}'),Vi=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":" https://www.neotechture.com/","made-by-text":"neotechture.сom","floor":"floor"}'),Wi=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://www.99.co/","made-by-text":"99.со","floor":"floor"}'),Gi=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"http://www.cleverestates.de/","made-by-text":"cleverestates.de","floor":"floor"}'),Qi=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://orionvisio.com/","made-by-text":"orionvisio.com","floor":"floor"}'),Xi=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://samolet.ru/","made-by-text":"samolet.ru","floor":"floor"}'),Yi=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://www.etalongroup.com/ru/","made-by-text":"etalongroup.com","floor":"floor"}'),Zi=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"http://up-vs.online/","made-by-text":"up-vs.online","floor":"floor"}'),qi=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://www.aixx.ai/","made-by-text":"aixx.ai","floor":"floor"}'),Ki=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://biege.io/","made-by-text":"biege.io","floor":"floor"}'),Ji=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://presale3d.com/","made-by-text":"presale 3d.com","floor":"floor"}'),$i=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://getfloorplan.com/","made-by-text":"getfloorplan.com","floor":"floor","instructions-hint-text":"Apartments serve illustrational purpose only, design may vary"}'),er=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://nvisionfloorplan.com/","made-by-text":"nvisionfloorplan.com","floor":"floor"}'),tr=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://www.tpm-homes.es/","made-by-text":"tpm-homes.es","floor":"floor"}'),nr=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://www.beforeafter.co.il/","made-by-text":"beforeafter.co.il","floor":"floor"}'),ir=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://www.ohadarc.com/","made-by-text":"ohadarc.com","floor":"floor"}'),rr=JSON.parse('{"create-points":"Создавайте точки","delete-points":"Удаляйте точки","research-plan":"Исследовать планировку","rotate-plan":"Вращать планировку","rotate":"Старт","stop":"Стоп","plan":"Планировка","off":"Выкл","on":"Вкл","ok":"Ок","menu":"Меню","wasd":"WASD","view-from-above":"Обзор сверху","free-camera":"Свободный обзор","shadows":"Тени","hide-walls":"Скрыть стены","show-walls":"Показать стены","hide-doors":"Скрыть двери","show-doors":"Показать двери","material":"Материал","texture":"Текстура","color":"Цвет","wall-color":"Цвет стен","wall-texture":"Текстура стен","upload-wall-texture":"Загрузить текстуру стен","made-by-link":"https://тюмень.талан.рф/apartment-complex/botanika","made-by-text":"тюмень.талан.рф","floor":"этаж"}'),ar=JSON.parse('{"create-points":"Создавайте точки","delete-points":"Удаляйте точки","research-plan":"Исследовать планировку","rotate-plan":"Вращать планировку","rotate":"Старт","stop":"Стоп","plan":"Планировка","off":"Выкл","on":"Вкл","ok":"Ок","menu":"Меню","wasd":"WASD","view-from-above":"Обзор сверху","free-camera":"Свободный обзор","shadows":"Тени","hide-walls":"Скрыть стены","show-walls":"Показать стены","hide-doors":"Скрыть двери","show-doors":"Показать двери","material":"Материал","texture":"Текстура","color":"Цвет","wall-color":"Цвет стен","wall-texture":"Текстура стен","upload-wall-texture":"Загрузить текстуру стен","made-by-link":"https://gkatmosfera.ru/","made-by-text":"gkatmosfera.ru","floor":"этаж"}'),or=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"http://www.geotopo.gr/","made-by-text":"geotopo.gr","floor":"floor"}'),sr=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://www.homestratosphere.com/","made-by-text":"homestratosphere.com","floor":"floor"}'),lr=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://www.inmperson.es/","made-by-text":"inmperson.es","floor":"floor"}'),cr=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://www.reysus.ch/vente","made-by-text":"reysus.ch","floor":"floor"}'),ur=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://sedo.com/search/details/?partnerid=324561&language=e&domain=yourcompany.com&origin=sales_lander_4&utm_medium=Parking&utm_campaign=offerpage","made-by-text":"yourcompany.com","floor":"floor"}'),hr=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://www.eloforteimob.com.br/","made-by-text":"eloforteimob.com","floor":"floor"}'),dr=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://merkaz-nadlan.co.il/","made-by-text":"merkaz-nadlan.co.il","floor":"floor"}'),pr=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://www.larastudio.pl/","made-by-text":"larastudio.pl","floor":"floor"}'),fr=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://comfortandinterior.com/","made-by-text":"comfortandinterior.com","floor":"floor"}'),Ar=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://www.inmobiliariamonpas.com/","made-by-text":"inmobiliariamonpas.com","floor":"floor"}'),mr=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://arcasl.es/","made-by-text":"arcasl.es","floor":"floor"}'),gr=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"","made-by-text":"MQC","floor":"floor"}'),vr=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://chadnelson.book.live/","made-by-text":"kprbrokers.com","floor":"floor"}'),yr=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"","made-by-text":"iotci.co.uk","floor":"floor"}'),br=JSON.parse('{"create-points":"Create a point","delete-points":"Remove point","research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://www.propflo.ai/","made-by-text":"propflo.ai","floor":"floor"}'),wr=JSON.parse('{"research-plan":"Research plan","rotate-plan":"Rotate plan","rotate":"Rotate","stop":"Stop","plan":"Plan","off":"Off","on":"On","ok":"Ok","menu":"Menu","wasd":"WASD","view-from-above":"View from above","free-camera":"Free camera","shadows":"Shadows","hide-walls":"Hide walls","show-walls":"Show walls","hide-doors":"Hide doors","show-doors":"Show doors","material":"Material","texture":"Texture","color":"Color","wall-color":"Wall color","wall-texture":"Wall texture","upload-wall-texture":"Upload wall texture","made-by-link":"https://propvr.ai/","made-by-text":"propvr.ai","floor":"floor"}'),xr=JSON.parse('{"create-points":"Создавайте точки","delete-points":"Удаляйте точки","research-plan":"Исследовать планировку","rotate-plan":"Вращать планировку","rotate":"Старт","stop":"Стоп","plan":"Планировка","off":"Выкл","on":"Вкл","ok":"Ок","menu":"Меню","wasd":"WASD","view-from-above":"Обзор сверху","free-camera":"Свободный обзор","shadows":"Тени","hide-walls":"Скрыть стены","show-walls":"Показать стены","hide-doors":"Скрыть двери","show-doors":"Показать двери","material":"Материал","texture":"Текстура","color":"Цвет","wall-color":"Цвет стен","wall-texture":"Текстура стен","upload-wall-texture":"Загрузить текстуру стен","made-by-link":"https://getfloorplan.com/","made-by-text":"getfloorplan.com","floor":"этаж","instructions-hint-text":"Дизайн интерьера представлен в качестве иллюстративного примера и не входит в состав недвижимости, доступной для продажи"}'),Mr={talan_1:"https://xn--80aacf4bwnk3a.xn--80aa6ajv.xn--p1ai/apartments/flats?area_range={%22min%22:%2232.4%22,%22max%22:%2293.8%22}&complex=2322376&cost_filter=sale,+booked&cost_filter=presale&cost_range={%22min%22:%229126800%22,%22max%22:%2217650400%22}&floor_range={%22min%22:%221%22,%22max%22:%2224%22}&group_layout=false&hypotec_range={%22min%22:%2236420%22,%22max%22:%2270434%22}&not_first=false&not_last=false&range_type=price&queue=1",talan_2:"https://xn--80aacf4bwnk3a.xn--80aa6ajv.xn--p1ai/apartments/flats?area_range={%22min%22:%2232.4%22,%22max%22:%2293.8%22}&complex=2322376&cost_filter=sale,+booked&cost_filter=presale&cost_range={%22min%22:%229126800%22,%22max%22:%2217650400%22}&floor_range={%22min%22:%221%22,%22max%22:%2224%22}&group_layout=false&hypotec_range={%22min%22:%2254545%22,%22max%22:%22102240%22}&not_first=false&not_last=false&range_type=price&queue=2",talan_3:"https://xn--80aacf4bwnk3a.xn--80aa6ajv.xn--p1ai/apartments/flats?area_range={%22min%22:%2232.4%22,%22max%22:%2293.8%22}&complex=2322227&cost_filter=sale,+booked&cost_filter=presale&cost_range={%22min%22:%229126800%22,%22max%22:%2217650400%22}&floor_range={%22min%22:%221%22,%22max%22:%2224%22}&group_layout=false&hypotec_range={%22min%22:%2236420%22,%22max%22:%2270434%22}&not_first=false&not_last=false&range_type=price",talan_4:"https://xn--80aacf4bwnk3a.xn--80aa6ajv.xn--p1ai/apartments/flats?area_range={%22min%22:%2232.4%22,%22max%22:%2293.8%22}&complex=99984&cost_filter=sale,+booked&cost_filter=presale&cost_range={%22min%22:%229126800%22,%22max%22:%2217650400%22}&entrance=1&floor_range={%22min%22:%221%22,%22max%22:%2224%22}&group_layout=false&house=4&hypotec_range={%22min%22:%2236420%22,%22max%22:%2270434%22}&not_first=false&not_last=false&range_type=price",talan_5:"https://xn--80aacf4bwnk3a.xn--80aa6ajv.xn--p1ai/apartments/flats?area_range={%22min%22:%2232.4%22,%22max%22:%2293.8%22}&complex=99984&cost_filter=sale,+booked&cost_filter=presale&cost_range={%22min%22:%229126800%22,%22max%22:%2217650400%22}&entrance=1&floor_range={%22min%22:%221%22,%22max%22:%2224%22}&group_layout=false&house=1&hypotec_range={%22min%22:%2236420%22,%22max%22:%2270434%22}&not_first=false&not_last=false&range_type=price",talan_6:"https://xn--80aacf4bwnk3a.xn--80aa6ajv.xn--p1ai/apartments/flats?area_range={%22min%22:%2238.1%22,%22max%22:%2285.9%22}&complex=2322380&cost_filter=sale,+booked&cost_filter=presale&cost_range={%22min%22:%227301200%22,%22max%22:%2212447900%22}&entrance=1&floor_range={%22min%22:%222%22,%22max%22:%2221%22}&group_layout=false&house=1&hypotec_range={%22min%22:%2229135%22,%22max%22:%2249673%22}&not_first=false&not_last=false&range_type=price",talan_7:"https://xn--80aacf4bwnk3a.xn--80aa6ajv.xn--p1ai/apartments/flats?area_range={%22min%22:%2238.1%22,%22max%22:%2285.9%22}&complex=2322380&cost_filter=sale,+booked&cost_filter=presale&cost_range={%22min%22:%227301200%22,%22max%22:%2212447900%22}&entrance=2&floor_range={%22min%22:%222%22,%22max%22:%2221%22}&group_layout=false&house=1&hypotec_range={%22min%22:%2229135%22,%22max%22:%2249673%22}&not_first=false&not_last=false&range_type=price",talan_8:"https://xn--80aacf4bwnk3a.xn--80aa6ajv.xn--p1ai/apartments/flats?area_range={%22min%22:%2226.3%22,%22max%22:%2279.1%22}&complex=2322378&cost_filter=sale,+booked&cost_filter=presale&cost_range={%22min%22:%224667400%22,%22max%22:%2210745700%22}&floor_range={%22min%22:%221%22,%22max%22:%2220%22}&group_layout=false&house=1&hypotec_range={%22min%22:%2218625%22,%22max%22:%2242881%2",talan_9:"https://xn--80aacf4bwnk3a.xn--80aa6ajv.xn--p1ai/apartments/flats?area_range={%22min%22:%2226.3%22,%22max%22:%2279.1%22}&complex=2322378&cost_filter=sale,+booked&cost_filter=presale&cost_range={%22min%22:%224667400%22,%22max%22:%2210745700%22}&floor_range={%22min%22:%221%22,%22max%22:%2220%22}&group_layout=false&house=2&hypotec_range={%22min%22:%2218625%22,%22max%22:%2242881%22}&not_first=false&not_last=false&range_type=price",talan_10:"https://xn--80aacf4bwnk3a.xn--80aa6ajv.xn--p1ai/apartments/flats?area_range={%22min%22:%2226.3%22,%22max%22:%2279.1%22}&complex=2322378&cost_filter=sale,+booked&cost_filter=presale&cost_range={%22min%22:%224667400%22,%22max%22:%2210745700%22}&floor_range={%22min%22:%221%22,%22max%22:%2220%22}&group_layout=false&house=3&hypotec_range={%22min%22:%2218625%22,%22max%22:%2242881%22}&not_first=false&not_last=false&range_type=price",talan_11:"https://xn--80aacf4bwnk3a.xn--80aa6ajv.xn--p1ai/apartments/flats?area_range={%22min%22:%2226.3%22,%22max%22:%2279.1%22}&complex=2322378&cost_filter=sale,+booked&cost_filter=presale&cost_range={%22min%22:%224667400%22,%22max%22:%2210745700%22}&floor_range={%22min%22:%221%22,%22max%22:%2220%22}&group_layout=false&house=4&hypotec_range={%22min%22:%2218625%22,%22max%22:%2242881%22}&not_first=false&not_last=false&range_type=price",talan_12:"https://xn--80aacf4bwnk3a.xn--80aa6ajv.xn--p1ai/apartments/flats?area_range={%22min%22:%2226.3%22,%22max%22:%2279.1%22}&complex=2322378&cost_filter=sale,+booked&cost_filter=presale&cost_range={%22min%22:%220%22,%22max%22:%220%22}&floor_range={%22min%22:%221%22,%22max%22:%2220%22}&group_layout=false&hypotec_range={%22min%22:%2218625%22,%22max%22:%2242881%22}&not_first=false&not_last=false&range_type=price"},Sr=["ru","en","de","es","treuco","giorgos","neotechture","99.co","cleverEstates","orionvisio","samolet","etalongroup","up-vs","aixx","biege","presale3d","evometa","nvisionhome","tpm-homes","beforeafter","ohadarc","talant","atmosfera","geotopo","homestratosphere","inmperson","reysus","yourcompany","eloforteimob","merkaz","lara","comfort","inmobiliariamonpas","arcasl","mqc","kprbrokers","iotci","propflo","propvr","evometaRu",...Object.keys(Mr)],Er={};Object.entries(Mr).forEach((e=>{let[t,n]=e;Er[t]={"create-points":"Создавайте точки","delete-points":"Удаляйте точки","research-plan":"Исследовать планировку","rotate-plan":"Вращать планировку",rotate:"Старт",stop:"Стоп",plan:"Планировка",off:"Выкл",on:"Вкл",ok:"Ок",menu:"Меню",wasd:"WASD","view-from-above":"Обзор сверху","free-camera":"Свободный обзор",shadows:"Тени","hide-walls":"Скрыть стены","show-walls":"Показать стены","hide-doors":"Скрыть двери","show-doors":"Показать двери",material:"Материал",texture:"Текстура",color:"Цвет","wall-color":"Цвет стен","wall-texture":"Текстура стен","upload-wall-texture":"Загрузить текстуру стен","made-by-link":n,"made-by-text":"хабаровск.талан.рф",floor:"этаж"}}));const _r={...Er,ru:ki,en:Ui,de:Bi,es:Fi,treuco:ji,giorgos:Hi,neotechture:Vi,"99.co":Wi,cleverEstates:Gi,orionvisio:Qi,samolet:Xi,etalongroup:Yi,"up-vs":Zi,aixx:qi,biege:Ki,presale3d:Ji,evometa:$i,nvisionhome:er,"tpm-homes":tr,beforeafter:nr,ohadarc:ir,talant:rr,atmosfera:ar,geotopo:or,homestratosphere:sr,inmperson:lr,reysus:cr,yourcompany:ur,eloforteimob:hr,merkaz:dr,lara:pr,comfort:fr,inmobiliariamonpas:Ar,arcasl:mr,mqc:gr,kprbrokers:vr,iotci:yr,propflo:br,propvr:wr,evometaRu:xr};function Tr(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}fn({useProxies:"never"});const Cr=new class{constructor(){Tr(this,"availableLocales",[...Sr]),Tr(this,"locales",{..._r}),Tr(this,"currentLocale","en"),Tr(this,"getLocaleText",(e=>this.localeData[e])),Tr(this,"setCurrentLocale",(e=>{this.availableLocales.some((t=>t===e))&&(this.currentLocale=e)})),Pn(this)}get localeData(){return this.locales[this.currentLocale]}};function Ir(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}fn({useProxies:"never"});const Dr=new class{constructor(){Ir(this,"controlsVisible",!0),Ir(this,"currentFloorIndex",0),Ir(this,"configParams",null),Ir(this,"listeners",{resize:[]}),Pn(this)}get initialPanoramaRoomId(){if(!this.config.json)return null;const{Rooms:e}=this.config.json.Floors[this.currentFloorIndex].Units[0],t=[...e].sort(((e,t)=>t.Area-e.Area)),n=t.find((e=>{let{Type:t}=e;return"Living"===t})),i=t[0];return(null==n?void 0:n.ID)||(null==i?void 0:i.ID)||null}get config(){const e=this.getCurrentFloorParamByKey("original_plan_img"),t=this.getCurrentFloorParamByKey("styled_plan_img"),n=this.getCurrentFloorParamByKey("top_view_img"),i=this.getCurrentFloorParamByKey("panorama"),r=this.getCurrentFloorParamByKey("rotate");return{...this.configParams,planImage:t||e,rotationData:r,panoramaData:i,topViewImage:n}}setCurrentFloorIndex(e){this.currentFloorIndex=e}getCurrentFloorParamByKey(e){return this.configParams.floors[this.currentFloorIndex][e]}isTabIncluded(e){return this.config.tabs.find((t=>t===e))}setConfig(e){this.configParams=e,Cr.setCurrentLocale(e.locale),this.dispatchEvent("resize",{width:e.width,height:e.height})}hideControls(){this.controlsVisible=!1}showControls(){this.controlsVisible=!0}addEventListener(e,t){this.listeners[e]&&this.listeners[e].push(t)}dispatchEvent(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.listeners[e]&&this.listeners[e].forEach((e=>e(t)))}},Nr=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],Lr=(()=>{if("undefined"==typeof document)return!1;const e=Nr[0],t={};for(const n of Nr){const i=n?.[1];if(i in document){for(const[i,r]of n.entries())t[e[i]]=r;return t}}return!1})(),Rr={change:Lr.fullscreenchange,error:Lr.fullscreenerror};let Or={request:(e=document.documentElement,t)=>new Promise(((n,i)=>{const r=()=>{Or.off("change",r),n()};Or.on("change",r);const a=e[Lr.requestFullscreen](t);a instanceof Promise&&a.then(r).catch(i)})),exit:()=>new Promise(((e,t)=>{if(!Or.isFullscreen)return void e();const n=()=>{Or.off("change",n),e()};Or.on("change",n);const i=document[Lr.exitFullscreen]();i instanceof Promise&&i.then(n).catch(t)})),toggle:(e,t)=>Or.isFullscreen?Or.exit():Or.request(e,t),onchange(e){Or.on("change",e)},onerror(e){Or.on("error",e)},on(e,t){const n=Rr[e];n&&document.addEventListener(n,t,!1)},off(e,t){const n=Rr[e];n&&document.removeEventListener(n,t,!1)},raw:Lr};Object.defineProperties(Or,{isFullscreen:{get:()=>Boolean(document[Lr.fullscreenElement])},element:{enumerable:!0,get:()=>document[Lr.fullscreenElement]??void 0},isEnabled:{enumerable:!0,get:()=>Boolean(document[Lr.fullscreenEnabled])}}),Lr||(Or={isEnabled:!1});const Pr=Or;function zr(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}fn({useProxies:"never"});const kr=new class{constructor(){zr(this,"enabled",Pr.isEnabled),zr(this,"active",!1),zr(this,"element",null),zr(this,"width",null),zr(this,"height",null),Pn(this)}init(){this.element=document.querySelector("#widget-application"),this.enabled&&(this.resize(Dr.config),Pr.on("change",(()=>{setTimeout((()=>{this.active=Pr.isFullscreen,this.active?Dr.setConfig({...Dr.config,width:window.innerWidth,height:window.innerHeight}):Dr.setConfig({...Dr.config,width:this.width,height:this.height})}),100)})))}async enter(){return await Pr.request(this.element)}async exit(){return await Pr.exit()}resize(e){let{width:t,height:n}=e;this.width=t,this.height=n}},Ur={DEFAULT:0,THREESIXTY:1},Br={tabs:["rotation","panorama"],logo:null,logoUrl:null,width:1920,height:1080,resizable:!0,rotationMode:Ur.DEFAULT,floors:[],panoramaFov:75,json:null,locale:"en",API_URL:"https://backend.estate.hart-digital.com",branding:null,colors:{main:"#FAC62D",mainText:"#413E3E"}},Fr=Br,jr="158",Hr={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},Vr={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},Wr=0,Gr=1,Qr=2,Xr=3,Yr=0,Zr=1,qr=2,Kr=3,Jr=0,$r=1,ea=2,ta=2,na=0,ia=1,ra=2,aa=3,oa=4,sa=5,la=100,ca=101,ua=102,ha=103,da=104,pa=200,fa=201,Aa=202,ma=203,ga=204,va=205,ya=206,ba=207,wa=208,xa=209,Ma=210,Sa=211,Ea=212,_a=213,Ta=214,Ca=0,Ia=1,Da=2,Na=3,La=4,Ra=5,Oa=6,Pa=7,za=0,ka=1,Ua=2,Ba=0,Fa=1,ja=2,Ha=3,Va=4,Wa=5,Ga="attached",Qa="detached",Xa=300,Ya=301,Za=302,qa=303,Ka=304,Ja=306,$a=1e3,eo=1001,to=1002,no=1003,io=1004,ro=1004,ao=1005,oo=1005,so=1006,lo=1007,co=1007,uo=1008,ho=1008,po=1009,fo=1010,Ao=1011,mo=1012,go=1013,vo=1014,yo=1015,bo=1016,wo=1017,xo=1018,Mo=1020,So=1021,Eo=1023,_o=1024,To=1025,Co=1026,Io=1027,Do=1028,No=1029,Lo=1030,Ro=1031,Oo=1033,Po=33776,zo=33777,ko=33778,Uo=33779,Bo=35840,Fo=35841,jo=35842,Ho=35843,Vo=36196,Wo=37492,Go=37496,Qo=37808,Xo=37809,Yo=37810,Zo=37811,qo=37812,Ko=37813,Jo=37814,$o=37815,es=37816,ts=37817,ns=37818,is=37819,rs=37820,as=37821,os=36492,ss=36494,ls=36495,cs=36283,us=36284,hs=36285,ds=36286,ps=2200,fs=2201,As=2202,ms=2300,gs=2301,vs=2302,ys=2400,bs=2401,ws=2402,xs=2500,Ms=2501,Ss=0,Es=1,_s=2,Ts=3e3,Cs=3001,Is=3200,Ds=3201,Ns=0,Ls=1,Rs="",Os="srgb",Ps="srgb-linear",zs="display-p3",ks="display-p3-linear",Us="linear",Bs="srgb",Fs="rec709",js="p3",Hs=0,Vs=7680,Ws=7681,Gs=7682,Qs=7683,Xs=34055,Ys=34056,Zs=5386,qs=512,Ks=513,Js=514,$s=515,el=516,tl=517,nl=518,il=519,rl=512,al=513,ol=514,sl=515,ll=516,cl=517,ul=518,hl=519,dl=35044,pl=35048,fl=35040,Al=35045,ml=35049,gl=35041,vl=35046,yl=35050,bl=35042,wl="100",xl="300 es",Ml=1035,Sl=2e3,El=2001;class _l{addEventListener(e,t){void 0===this._listeners&&(this._listeners={});const n=this._listeners;void 0===n[e]&&(n[e]=[]),-1===n[e].indexOf(t)&&n[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;const n=this._listeners;return void 0!==n[e]&&-1!==n[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;const n=this._listeners[e];if(void 0!==n){const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;const t=this._listeners[e.type];if(void 0!==t){e.target=this;const n=t.slice(0);for(let t=0,i=n.length;t<i;t++)n[t].call(this,e);e.target=null}}}const Tl=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let Cl=1234567;const Il=Math.PI/180,Dl=180/Math.PI;function Nl(){const e=4294967295*Math.random()|0,t=4294967295*Math.random()|0,n=4294967295*Math.random()|0,i=4294967295*Math.random()|0;return(Tl[255&e]+Tl[e>>8&255]+Tl[e>>16&255]+Tl[e>>24&255]+"-"+Tl[255&t]+Tl[t>>8&255]+"-"+Tl[t>>16&15|64]+Tl[t>>24&255]+"-"+Tl[63&n|128]+Tl[n>>8&255]+"-"+Tl[n>>16&255]+Tl[n>>24&255]+Tl[255&i]+Tl[i>>8&255]+Tl[i>>16&255]+Tl[i>>24&255]).toLowerCase()}function Ll(e,t,n){return Math.max(t,Math.min(n,e))}function Rl(e,t){return(e%t+t)%t}function Ol(e,t,n){return(1-n)*e+n*t}function Pl(e){return 0==(e&e-1)&&0!==e}function zl(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))}function kl(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))}function Ul(e,t){switch(t.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 Bl(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return Math.round(4294967295*e);case Uint16Array:return Math.round(65535*e);case Uint8Array:return Math.round(255*e);case Int32Array:return Math.round(2147483647*e);case Int16Array:return Math.round(32767*e);case Int8Array:return Math.round(127*e);default:throw new Error("Invalid component type.")}}const Fl={DEG2RAD:Il,RAD2DEG:Dl,generateUUID:Nl,clamp:Ll,euclideanModulo:Rl,mapLinear:function(e,t,n,i,r){return i+(e-t)*(r-i)/(n-t)},inverseLerp:function(e,t,n){return e!==t?(n-e)/(t-e):0},lerp:Ol,damp:function(e,t,n,i){return Ol(e,t,1-Math.exp(-n*i))},pingpong:function(e,t=1){return t-Math.abs(Rl(e,2*t)-t)},smoothstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*(3-2*e)},smootherstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*e*(e*(6*e-15)+10)},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},seededRandom:function(e){void 0!==e&&(Cl=e);let t=Cl+=1831565813;return t=Math.imul(t^t>>>15,1|t),t^=t+Math.imul(t^t>>>7,61|t),((t^t>>>14)>>>0)/4294967296},degToRad:function(e){return e*Il},radToDeg:function(e){return e*Dl},isPowerOfTwo:Pl,ceilPowerOfTwo:zl,floorPowerOfTwo:kl,setQuaternionFromProperEuler:function(e,t,n,i,r){const a=Math.cos,o=Math.sin,s=a(n/2),l=o(n/2),c=a((t+i)/2),u=o((t+i)/2),h=a((t-i)/2),d=o((t-i)/2),p=a((i-t)/2),f=o((i-t)/2);switch(r){case"XYX":e.set(s*u,l*h,l*d,s*c);break;case"YZY":e.set(l*d,s*u,l*h,s*c);break;case"ZXZ":e.set(l*h,l*d,s*u,s*c);break;case"XZX":e.set(s*u,l*f,l*p,s*c);break;case"YXY":e.set(l*p,s*u,l*f,s*c);break;case"ZYZ":e.set(l*f,l*p,s*u,s*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}},normalize:Bl,denormalize:Ul};class jl{constructor(e=0,t=0){jl.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,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(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.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(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(0===t)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ll(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const n=Math.cos(t),i=Math.sin(t),r=this.x-e.x,a=this.y-e.y;return this.x=r*n-a*i+e.x,this.y=r*i+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Hl{constructor(e,t,n,i,r,a,o,s,l){Hl.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==e&&this.set(e,t,n,i,r,a,o,s,l)}set(e,t,n,i,r,a,o,s,l){const c=this.elements;return c[0]=e,c[1]=i,c[2]=o,c[3]=t,c[4]=r,c[5]=s,c[6]=n,c[7]=a,c[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.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(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,r=this.elements,a=n[0],o=n[3],s=n[6],l=n[1],c=n[4],u=n[7],h=n[2],d=n[5],p=n[8],f=i[0],A=i[3],m=i[6],g=i[1],v=i[4],y=i[7],b=i[2],w=i[5],x=i[8];return r[0]=a*f+o*g+s*b,r[3]=a*A+o*v+s*w,r[6]=a*m+o*y+s*x,r[1]=l*f+c*g+u*b,r[4]=l*A+c*v+u*w,r[7]=l*m+c*y+u*x,r[2]=h*f+d*g+p*b,r[5]=h*A+d*v+p*w,r[8]=h*m+d*y+p*x,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],s=e[6],l=e[7],c=e[8];return t*a*c-t*o*l-n*r*c+n*o*s+i*r*l-i*a*s}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],s=e[6],l=e[7],c=e[8],u=c*a-o*l,h=o*s-c*r,d=l*r-a*s,p=t*u+n*h+i*d;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);const f=1/p;return e[0]=u*f,e[1]=(i*l-c*n)*f,e[2]=(o*n-i*a)*f,e[3]=h*f,e[4]=(c*t-i*s)*f,e[5]=(i*r-o*t)*f,e[6]=d*f,e[7]=(n*s-l*t)*f,e[8]=(a*t-n*r)*f,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,r,a,o){const s=Math.cos(r),l=Math.sin(r);return this.set(n*s,n*l,-n*(s*a+l*o)+a+e,-i*l,i*s,-i*(-l*a+s*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(Vl.makeScale(e,t)),this}rotate(e){return this.premultiply(Vl.makeRotation(-e)),this}translate(e,t){return this.premultiply(Vl.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let e=0;e<9;e++)if(t[e]!==n[e])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return(new this.constructor).fromArray(this.elements)}}const Vl=new Hl;function Wl(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}const Gl={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function Ql(e,t){return new Gl[e](t)}function Xl(e){return document.createElementNS("http://www.w3.org/1999/xhtml",e)}function Yl(){const e=Xl("canvas");return e.style.display="block",e}const Zl={};function ql(e){e in Zl||(Zl[e]=!0,console.warn(e))}const Kl=(new Hl).set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Jl=(new Hl).set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),$l={[Ps]:{transfer:Us,primaries:Fs,toReference:e=>e,fromReference:e=>e},[Os]:{transfer:Bs,primaries:Fs,toReference:e=>e.convertSRGBToLinear(),fromReference:e=>e.convertLinearToSRGB()},[ks]:{transfer:Us,primaries:js,toReference:e=>e.applyMatrix3(Jl),fromReference:e=>e.applyMatrix3(Kl)},[zs]:{transfer:Bs,primaries:js,toReference:e=>e.convertSRGBToLinear().applyMatrix3(Jl),fromReference:e=>e.applyMatrix3(Kl).convertLinearToSRGB()}},ec=new Set([Ps,ks]),tc={enabled:!0,_workingColorSpace:Ps,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(!ec.has(e))throw new Error(`Unsupported working color space, "${e}".`);this._workingColorSpace=e},convert:function(e,t,n){if(!1===this.enabled||t===n||!t||!n)return e;const i=$l[t].toReference;return(0,$l[n].fromReference)(i(e))},fromWorkingColorSpace:function(e,t){return this.convert(e,this._workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this._workingColorSpace)},getPrimaries:function(e){return $l[e].primaries},getTransfer:function(e){return e===Rs?Us:$l[e].transfer}};function nc(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function ic(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}let rc;class ac{static getDataURL(e){if(/^data:/i.test(e.src))return e.src;if("undefined"==typeof HTMLCanvasElement)return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{void 0===rc&&(rc=Xl("canvas")),rc.width=e.width,rc.height=e.height;const n=rc.getContext("2d");e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=rc}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){const t=Xl("canvas");t.width=e.width,t.height=e.height;const n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);const i=n.getImageData(0,0,e.width,e.height),r=i.data;for(let e=0;e<r.length;e++)r[e]=255*nc(r[e]/255);return n.putImageData(i,0,0),t}if(e.data){const t=e.data.slice(0);for(let e=0;e<t.length;e++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[e]=Math.floor(255*nc(t[e]/255)):t[e]=nc(t[e]);return{data:t,width:e.width,height:e.height}}return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),e}}let oc=0;class sc{constructor(e=null){this.isSource=!0,Object.defineProperty(this,"id",{value:oc++}),this.uuid=Nl(),this.data=e,this.version=0}set needsUpdate(e){!0===e&&this.version++}toJSON(e){const t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.images[this.uuid])return e.images[this.uuid];const n={uuid:this.uuid,url:""},i=this.data;if(null!==i){let e;if(Array.isArray(i)){e=[];for(let t=0,n=i.length;t<n;t++)i[t].isDataTexture?e.push(lc(i[t].image)):e.push(lc(i[t]))}else e=lc(i);n.url=e}return t||(e.images[this.uuid]=n),n}}function lc(e){return"undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap?ac.getDataURL(e):e.data?{data:Array.from(e.data),width:e.width,height:e.height,type:e.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let cc=0;class uc extends _l{constructor(e=uc.DEFAULT_IMAGE,t=uc.DEFAULT_MAPPING,n=eo,i=eo,r=so,a=uo,o=Eo,s=po,l=uc.DEFAULT_ANISOTROPY,c=Rs){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:cc++}),this.uuid=Nl(),this.name="",this.source=new sc(e),this.mipmaps=[],this.mapping=t,this.channel=0,this.wrapS=n,this.wrapT=i,this.magFilter=r,this.minFilter=a,this.anisotropy=l,this.format=o,this.internalFormat=null,this.type=s,this.offset=new jl(0,0),this.repeat=new jl(1,1),this.center=new jl(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Hl,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,"string"==typeof c?this.colorSpace=c:(ql("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace=c===Cs?Os:Rs),this.userData={},this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1,this.needsPMREMUpdate=!1}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return(new this.constructor).copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}toJSON(e){const t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.textures[this.uuid])return e.textures[this.uuid];const n={metadata:{version:4.6,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==Xa)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case $a:e.x=e.x-Math.floor(e.x);break;case eo:e.x=e.x<0?0:1;break;case to:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case $a:e.y=e.y-Math.floor(e.y);break;case eo:e.y=e.y<0?0:1;break;case to:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){!0===e&&(this.version++,this.source.needsUpdate=!0)}get encoding(){return ql("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace===Os?Cs:Ts}set encoding(e){ql("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace=e===Cs?Os:Rs}}uc.DEFAULT_IMAGE=null,uc.DEFAULT_MAPPING=Xa,uc.DEFAULT_ANISOTROPY=1;class hc{constructor(e=0,t=0,n=0,i=1){hc.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){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: "+e)}return this}getComponent(e){switch(e){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: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,r=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*i+a[12]*r,this.y=a[1]*t+a[5]*n+a[9]*i+a[13]*r,this.z=a[2]*t+a[6]*n+a[10]*i+a[14]*r,this.w=a[3]*t+a[7]*n+a[11]*i+a[15]*r,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,r;const a=.01,o=.1,s=e.elements,l=s[0],c=s[4],u=s[8],h=s[1],d=s[5],p=s[9],f=s[2],A=s[6],m=s[10];if(Math.abs(c-h)<a&&Math.abs(u-f)<a&&Math.abs(p-A)<a){if(Math.abs(c+h)<o&&Math.abs(u+f)<o&&Math.abs(p+A)<o&&Math.abs(l+d+m-3)<o)return this.set(1,0,0,0),this;t=Math.PI;const e=(l+1)/2,s=(d+1)/2,g=(m+1)/2,v=(c+h)/4,y=(u+f)/4,b=(p+A)/4;return e>s&&e>g?e<a?(n=0,i=.707106781,r=.707106781):(n=Math.sqrt(e),i=v/n,r=y/n):s>g?s<a?(n=.707106781,i=0,r=.707106781):(i=Math.sqrt(s),n=v/i,r=b/i):g<a?(n=.707106781,i=.707106781,r=0):(r=Math.sqrt(g),n=y/r,i=b/r),this.set(n,i,r,t),this}let g=Math.sqrt((A-p)*(A-p)+(u-f)*(u-f)+(h-c)*(h-c));return Math.abs(g)<.001&&(g=1),this.x=(A-p)/g,this.y=(u-f)/g,this.z=(h-c)/g,this.w=Math.acos((l+d+m-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,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(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.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(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.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 dc extends _l{constructor(e=1,t=1,n={}){super(),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new hc(0,0,e,t),this.scissorTest=!1,this.viewport=new hc(0,0,e,t);const i={width:e,height:t,depth:1};void 0!==n.encoding&&(ql("THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace."),n.colorSpace=n.encoding===Cs?Os:Rs),n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:so,depthBuffer:!0,stencilBuffer:!1,depthTexture:null,samples:0},n),this.texture=new uc(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(e,t,n=1){this.width===e&&this.height===t&&this.depth===n||(this.width=e,this.height=t,this.depth=n,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=n,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return(new this.constructor).copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.texture.isRenderTargetTexture=!0;const t=Object.assign({},e.texture.image);return this.texture.source=new sc(t),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,null!==e.depthTexture&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class pc extends dc{constructor(e=1,t=1,n={}){super(e,t,n),this.isWebGLRenderTarget=!0}}class fc extends uc{constructor(e=null,t=1,n=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:n,depth:i},this.magFilter=no,this.minFilter=no,this.wrapR=eo,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class Ac extends pc{constructor(e=1,t=1,n=1){super(e,t),this.isWebGLArrayRenderTarget=!0,this.depth=n,this.texture=new fc(null,e,t,n),this.texture.isRenderTargetTexture=!0}}class mc extends uc{constructor(e=null,t=1,n=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:n,depth:i},this.magFilter=no,this.minFilter=no,this.wrapR=eo,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class gc extends pc{constructor(e=1,t=1,n=1){super(e,t),this.isWebGL3DRenderTarget=!0,this.depth=n,this.texture=new mc(null,e,t,n),this.texture.isRenderTargetTexture=!0}}class vc extends pc{constructor(e=1,t=1,n=1,i={}){super(e,t,i),this.isWebGLMultipleRenderTargets=!0;const r=this.texture;this.texture=[];for(let e=0;e<n;e++)this.texture[e]=r.clone(),this.texture[e].isRenderTargetTexture=!0}setSize(e,t,n=1){if(this.width!==e||this.height!==t||this.depth!==n){this.width=e,this.height=t,this.depth=n;for(let i=0,r=this.texture.length;i<r;i++)this.texture[i].image.width=e,this.texture[i].image.height=t,this.texture[i].image.depth=n;this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}copy(e){this.dispose(),this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,null!==e.depthTexture&&(this.depthTexture=e.depthTexture.clone()),this.texture.length=0;for(let t=0,n=e.texture.length;t<n;t++)this.texture[t]=e.texture[t].clone(),this.texture[t].isRenderTargetTexture=!0;return this}}class yc{constructor(e=0,t=0,n=0,i=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=i}static slerpFlat(e,t,n,i,r,a,o){let s=n[i+0],l=n[i+1],c=n[i+2],u=n[i+3];const h=r[a+0],d=r[a+1],p=r[a+2],f=r[a+3];if(0===o)return e[t+0]=s,e[t+1]=l,e[t+2]=c,void(e[t+3]=u);if(1===o)return e[t+0]=h,e[t+1]=d,e[t+2]=p,void(e[t+3]=f);if(u!==f||s!==h||l!==d||c!==p){let e=1-o;const t=s*h+l*d+c*p+u*f,n=t>=0?1:-1,i=1-t*t;if(i>Number.EPSILON){const r=Math.sqrt(i),a=Math.atan2(r,t*n);e=Math.sin(e*a)/r,o=Math.sin(o*a)/r}const r=o*n;if(s=s*e+h*r,l=l*e+d*r,c=c*e+p*r,u=u*e+f*r,e===1-o){const e=1/Math.sqrt(s*s+l*l+c*c+u*u);s*=e,l*=e,c*=e,u*=e}}e[t]=s,e[t+1]=l,e[t+2]=c,e[t+3]=u}static multiplyQuaternionsFlat(e,t,n,i,r,a){const o=n[i],s=n[i+1],l=n[i+2],c=n[i+3],u=r[a],h=r[a+1],d=r[a+2],p=r[a+3];return e[t]=o*p+c*u+s*d-l*h,e[t+1]=s*p+c*h+l*u-o*d,e[t+2]=l*p+c*d+o*h-s*u,e[t+3]=c*p-o*u-s*h-l*d,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,i){return this._x=e,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(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){const n=e._x,i=e._y,r=e._z,a=e._order,o=Math.cos,s=Math.sin,l=o(n/2),c=o(i/2),u=o(r/2),h=s(n/2),d=s(i/2),p=s(r/2);switch(a){case"XYZ":this._x=h*c*u+l*d*p,this._y=l*d*u-h*c*p,this._z=l*c*p+h*d*u,this._w=l*c*u-h*d*p;break;case"YXZ":this._x=h*c*u+l*d*p,this._y=l*d*u-h*c*p,this._z=l*c*p-h*d*u,this._w=l*c*u+h*d*p;break;case"ZXY":this._x=h*c*u-l*d*p,this._y=l*d*u+h*c*p,this._z=l*c*p+h*d*u,this._w=l*c*u-h*d*p;break;case"ZYX":this._x=h*c*u-l*d*p,this._y=l*d*u+h*c*p,this._z=l*c*p-h*d*u,this._w=l*c*u+h*d*p;break;case"YZX":this._x=h*c*u+l*d*p,this._y=l*d*u+h*c*p,this._z=l*c*p-h*d*u,this._w=l*c*u-h*d*p;break;case"XZY":this._x=h*c*u-l*d*p,this._y=l*d*u-h*c*p,this._z=l*c*p+h*d*u,this._w=l*c*u+h*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return!1!==t&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],i=t[4],r=t[8],a=t[1],o=t[5],s=t[9],l=t[2],c=t[6],u=t[10],h=n+o+u;if(h>0){const e=.5/Math.sqrt(h+1);this._w=.25/e,this._x=(c-s)*e,this._y=(r-l)*e,this._z=(a-i)*e}else if(n>o&&n>u){const e=2*Math.sqrt(1+n-o-u);this._w=(c-s)/e,this._x=.25*e,this._y=(i+a)/e,this._z=(r+l)/e}else if(o>u){const e=2*Math.sqrt(1+o-n-u);this._w=(r-l)/e,this._x=(i+a)/e,this._y=.25*e,this._z=(s+c)/e}else{const e=2*Math.sqrt(1+u-n-o);this._w=(a-i)/e,this._x=(r+l)/e,this._y=(s+c)/e,this._z=.25*e}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<Number.EPSILON?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Ll(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(0===n)return this;const i=Math.min(1,t/n);return this.slerp(e,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(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._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 e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,i=e._y,r=e._z,a=e._w,o=t._x,s=t._y,l=t._z,c=t._w;return this._x=n*c+a*o+i*l-r*s,this._y=i*c+a*s+r*o-n*l,this._z=r*c+a*l+n*s-i*o,this._w=a*c-n*o-i*s-r*l,this._onChangeCallback(),this}slerp(e,t){if(0===t)return this;if(1===t)return this.copy(e);const n=this._x,i=this._y,r=this._z,a=this._w;let o=a*e._w+n*e._x+i*e._y+r*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=i,this._z=r,this;const s=1-o*o;if(s<=Number.EPSILON){const e=1-t;return this._w=e*a+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 l=Math.sqrt(s),c=Math.atan2(l,o),u=Math.sin((1-t)*c)/l,h=Math.sin(t*c)/l;return this._w=a*u+this._w*h,this._x=n*u+this._x*h,this._y=i*u+this._y*h,this._z=r*u+this._z*h,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=Math.random(),t=Math.sqrt(1-e),n=Math.sqrt(e),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(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class bc{constructor(e=0,t=0,n=0){bc.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return void 0===n&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){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: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(xc.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(xc.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,i=this.z,r=e.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(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,r=e.elements,a=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])*a,this.y=(r[1]*t+r[5]*n+r[9]*i+r[13])*a,this.z=(r[2]*t+r[6]*n+r[10]*i+r[14])*a,this}applyQuaternion(e){const t=this.x,n=this.y,i=this.z,r=e.x,a=e.y,o=e.z,s=e.w,l=2*(a*i-o*n),c=2*(o*t-r*i),u=2*(r*n-a*t);return this.x=t+s*l+a*u-o*c,this.y=n+s*c+o*l-r*u,this.z=i+s*u+r*c-a*l,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,n=this.y,i=this.z,r=e.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(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,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(e){return this.x*e.x+this.y*e.y+this.z*e.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(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,i=e.y,r=e.z,a=t.x,o=t.y,s=t.z;return this.x=i*s-r*o,this.y=r*a-n*s,this.z=n*o-i*a,this}projectOnVector(e){const t=e.lengthSq();if(0===t)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return wc.copy(this).projectOnVector(e),this.sub(wc)}reflect(e){return this.sub(wc.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(0===t)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ll(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){const i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,4*t)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,3*t)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=2*(Math.random()-.5),t=Math.random()*Math.PI*2,n=Math.sqrt(1-e**2);return this.x=n*Math.cos(t),this.y=n*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const wc=new bc,xc=new yc;class Mc{constructor(e=new bc(1/0,1/0,1/0),t=new bc(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t+=3)this.expandByPoint(Ec.fromArray(e,t));return this}setFromBufferAttribute(e){this.makeEmpty();for(let t=0,n=e.count;t<n;t++)this.expandByPoint(Ec.fromBufferAttribute(e,t));return this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){const n=Ec.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(n),this.max.copy(e).add(n),this}setFromObject(e,t=!1){return this.makeEmpty(),this.expandByObject(e,t)}clone(){return(new this.constructor).copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,t=!1){e.updateWorldMatrix(!1,!1);const n=e.geometry;if(void 0!==n){const i=n.getAttribute("position");if(!0===t&&void 0!==i&&!0!==e.isInstancedMesh)for(let t=0,n=i.count;t<n;t++)!0===e.isMesh?e.getVertexPosition(t,Ec):Ec.fromBufferAttribute(i,t),Ec.applyMatrix4(e.matrixWorld),this.expandByPoint(Ec);else void 0!==e.boundingBox?(null===e.boundingBox&&e.computeBoundingBox(),_c.copy(e.boundingBox)):(null===n.boundingBox&&n.computeBoundingBox(),_c.copy(n.boundingBox)),_c.applyMatrix4(e.matrixWorld),this.union(_c)}const i=e.children;for(let e=0,n=i.length;e<n;e++)this.expandByObject(i[e],t);return this}containsPoint(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y||e.z<this.min.z||e.z>this.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y||e.max.z<this.min.z||e.min.z>this.max.z)}intersectsSphere(e){return this.clampPoint(e.center,Ec),Ec.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Rc),Oc.subVectors(this.max,Rc),Tc.subVectors(e.a,Rc),Cc.subVectors(e.b,Rc),Ic.subVectors(e.c,Rc),Dc.subVectors(Cc,Tc),Nc.subVectors(Ic,Cc),Lc.subVectors(Tc,Ic);let t=[0,-Dc.z,Dc.y,0,-Nc.z,Nc.y,0,-Lc.z,Lc.y,Dc.z,0,-Dc.x,Nc.z,0,-Nc.x,Lc.z,0,-Lc.x,-Dc.y,Dc.x,0,-Nc.y,Nc.x,0,-Lc.y,Lc.x,0];return!!kc(t,Tc,Cc,Ic,Oc)&&(t=[1,0,0,0,1,0,0,0,1],!!kc(t,Tc,Cc,Ic,Oc)&&(Pc.crossVectors(Dc,Nc),t=[Pc.x,Pc.y,Pc.z],kc(t,Tc,Cc,Ic,Oc)))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Ec).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=.5*this.getSize(Ec).length()),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()||(Sc[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Sc[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Sc[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Sc[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Sc[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Sc[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Sc[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Sc[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Sc)),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const Sc=[new bc,new bc,new bc,new bc,new bc,new bc,new bc,new bc],Ec=new bc,_c=new Mc,Tc=new bc,Cc=new bc,Ic=new bc,Dc=new bc,Nc=new bc,Lc=new bc,Rc=new bc,Oc=new bc,Pc=new bc,zc=new bc;function kc(e,t,n,i,r){for(let a=0,o=e.length-3;a<=o;a+=3){zc.fromArray(e,a);const o=r.x*Math.abs(zc.x)+r.y*Math.abs(zc.y)+r.z*Math.abs(zc.z),s=t.dot(zc),l=n.dot(zc),c=i.dot(zc);if(Math.max(-Math.max(s,l,c),Math.min(s,l,c))>o)return!1}return!0}const Uc=new Mc,Bc=new bc,Fc=new bc;class jc{constructor(e=new bc,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const n=this.center;void 0!==t?n.copy(t):Uc.setFromPoints(e).getCenter(n);let i=0;for(let t=0,r=e.length;t<r;t++)i=Math.max(i,n.distanceToSquared(e[t]));return this.radius=Math.sqrt(i),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){const t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,t){const n=this.center.distanceToSquared(e);return t.copy(e),n>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;Bc.subVectors(e,this.center);const t=Bc.lengthSq();if(t>this.radius*this.radius){const e=Math.sqrt(t),n=.5*(e-this.radius);this.center.addScaledVector(Bc,n/e),this.radius+=n}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(!0===this.center.equals(e.center)?this.radius=Math.max(this.radius,e.radius):(Fc.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Bc.copy(e.center).add(Fc)),this.expandByPoint(Bc.copy(e.center).sub(Fc))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return(new this.constructor).copy(this)}}const Hc=new bc,Vc=new bc,Wc=new bc,Gc=new bc,Qc=new bc,Xc=new bc,Yc=new bc;class Zc{constructor(e=new bc,t=new bc(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Hc)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=Hc.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Hc.copy(this.origin).addScaledVector(this.direction,t),Hc.distanceToSquared(e))}distanceSqToSegment(e,t,n,i){Vc.copy(e).add(t).multiplyScalar(.5),Wc.copy(t).sub(e).normalize(),Gc.copy(this.origin).sub(Vc);const r=.5*e.distanceTo(t),a=-this.direction.dot(Wc),o=Gc.dot(this.direction),s=-Gc.dot(Wc),l=Gc.lengthSq(),c=Math.abs(1-a*a);let u,h,d,p;if(c>0)if(u=a*s-o,h=a*o-s,p=r*c,u>=0)if(h>=-p)if(h<=p){const e=1/c;u*=e,h*=e,d=u*(u+a*h+2*o)+h*(a*u+h+2*s)+l}else h=r,u=Math.max(0,-(a*h+o)),d=-u*u+h*(h+2*s)+l;else h=-r,u=Math.max(0,-(a*h+o)),d=-u*u+h*(h+2*s)+l;else h<=-p?(u=Math.max(0,-(-a*r+o)),h=u>0?-r:Math.min(Math.max(-r,-s),r),d=-u*u+h*(h+2*s)+l):h<=p?(u=0,h=Math.min(Math.max(-r,-s),r),d=h*(h+2*s)+l):(u=Math.max(0,-(a*r+o)),h=u>0?r:Math.min(Math.max(-r,-s),r),d=-u*u+h*(h+2*s)+l);else h=a>0?-r:r,u=Math.max(0,-(a*h+o)),d=-u*u+h*(h+2*s)+l;return n&&n.copy(this.origin).addScaledVector(this.direction,u),i&&i.copy(Vc).addScaledVector(Wc,h),d}intersectSphere(e,t){Hc.subVectors(e.center,this.origin);const n=Hc.dot(this.direction),i=Hc.dot(Hc)-n*n,r=e.radius*e.radius;if(i>r)return null;const a=Math.sqrt(r-i),o=n-a,s=n+a;return s<0?null:o<0?this.at(s,t):this.at(o,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){const n=this.distanceToPlane(e);return null===n?null:this.at(n,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,i,r,a,o,s;const l=1/this.direction.x,c=1/this.direction.y,u=1/this.direction.z,h=this.origin;return l>=0?(n=(e.min.x-h.x)*l,i=(e.max.x-h.x)*l):(n=(e.max.x-h.x)*l,i=(e.min.x-h.x)*l),c>=0?(r=(e.min.y-h.y)*c,a=(e.max.y-h.y)*c):(r=(e.max.y-h.y)*c,a=(e.min.y-h.y)*c),n>a||r>i?null:((r>n||isNaN(n))&&(n=r),(a<i||isNaN(i))&&(i=a),u>=0?(o=(e.min.z-h.z)*u,s=(e.max.z-h.z)*u):(o=(e.max.z-h.z)*u,s=(e.min.z-h.z)*u),n>s||o>i?null:((o>n||n!=n)&&(n=o),(s<i||i!=i)&&(i=s),i<0?null:this.at(n>=0?n:i,t)))}intersectsBox(e){return null!==this.intersectBox(e,Hc)}intersectTriangle(e,t,n,i,r){Qc.subVectors(t,e),Xc.subVectors(n,e),Yc.crossVectors(Qc,Xc);let a,o=this.direction.dot(Yc);if(o>0){if(i)return null;a=1}else{if(!(o<0))return null;a=-1,o=-o}Gc.subVectors(this.origin,e);const s=a*this.direction.dot(Xc.crossVectors(Gc,Xc));if(s<0)return null;const l=a*this.direction.dot(Qc.cross(Gc));if(l<0)return null;if(s+l>o)return null;const c=-a*Gc.dot(Yc);return c<0?null:this.at(c/o,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}}class qc{constructor(e,t,n,i,r,a,o,s,l,c,u,h,d,p,f,A){qc.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==e&&this.set(e,t,n,i,r,a,o,s,l,c,u,h,d,p,f,A)}set(e,t,n,i,r,a,o,s,l,c,u,h,d,p,f,A){const m=this.elements;return m[0]=e,m[4]=t,m[8]=n,m[12]=i,m[1]=r,m[5]=a,m[9]=o,m[13]=s,m[2]=l,m[6]=c,m[10]=u,m[14]=h,m[3]=d,m[7]=p,m[11]=f,m[15]=A,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 qc).fromArray(this.elements)}copy(e){const t=this.elements,n=e.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(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.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(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,n=e.elements,i=1/Kc.setFromMatrixColumn(e,0).length(),r=1/Kc.setFromMatrixColumn(e,1).length(),a=1/Kc.setFromMatrixColumn(e,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]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,i=e.y,r=e.z,a=Math.cos(n),o=Math.sin(n),s=Math.cos(i),l=Math.sin(i),c=Math.cos(r),u=Math.sin(r);if("XYZ"===e.order){const e=a*c,n=a*u,i=o*c,r=o*u;t[0]=s*c,t[4]=-s*u,t[8]=l,t[1]=n+i*l,t[5]=e-r*l,t[9]=-o*s,t[2]=r-e*l,t[6]=i+n*l,t[10]=a*s}else if("YXZ"===e.order){const e=s*c,n=s*u,i=l*c,r=l*u;t[0]=e+r*o,t[4]=i*o-n,t[8]=a*l,t[1]=a*u,t[5]=a*c,t[9]=-o,t[2]=n*o-i,t[6]=r+e*o,t[10]=a*s}else if("ZXY"===e.order){const e=s*c,n=s*u,i=l*c,r=l*u;t[0]=e-r*o,t[4]=-a*u,t[8]=i+n*o,t[1]=n+i*o,t[5]=a*c,t[9]=r-e*o,t[2]=-a*l,t[6]=o,t[10]=a*s}else if("ZYX"===e.order){const e=a*c,n=a*u,i=o*c,r=o*u;t[0]=s*c,t[4]=i*l-n,t[8]=e*l+r,t[1]=s*u,t[5]=r*l+e,t[9]=n*l-i,t[2]=-l,t[6]=o*s,t[10]=a*s}else if("YZX"===e.order){const e=a*s,n=a*l,i=o*s,r=o*l;t[0]=s*c,t[4]=r-e*u,t[8]=i*u+n,t[1]=u,t[5]=a*c,t[9]=-o*c,t[2]=-l*c,t[6]=n*u+i,t[10]=e-r*u}else if("XZY"===e.order){const e=a*s,n=a*l,i=o*s,r=o*l;t[0]=s*c,t[4]=-u,t[8]=l*c,t[1]=e*u+r,t[5]=a*c,t[9]=n*u-i,t[2]=i*u-n,t[6]=o*c,t[10]=r*u+e}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose($c,e,eu)}lookAt(e,t,n){const i=this.elements;return iu.subVectors(e,t),0===iu.lengthSq()&&(iu.z=1),iu.normalize(),tu.crossVectors(n,iu),0===tu.lengthSq()&&(1===Math.abs(n.z)?iu.x+=1e-4:iu.z+=1e-4,iu.normalize(),tu.crossVectors(n,iu)),tu.normalize(),nu.crossVectors(iu,tu),i[0]=tu.x,i[4]=nu.x,i[8]=iu.x,i[1]=tu.y,i[5]=nu.y,i[9]=iu.y,i[2]=tu.z,i[6]=nu.z,i[10]=iu.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,r=this.elements,a=n[0],o=n[4],s=n[8],l=n[12],c=n[1],u=n[5],h=n[9],d=n[13],p=n[2],f=n[6],A=n[10],m=n[14],g=n[3],v=n[7],y=n[11],b=n[15],w=i[0],x=i[4],M=i[8],S=i[12],E=i[1],_=i[5],T=i[9],C=i[13],I=i[2],D=i[6],N=i[10],L=i[14],R=i[3],O=i[7],P=i[11],z=i[15];return r[0]=a*w+o*E+s*I+l*R,r[4]=a*x+o*_+s*D+l*O,r[8]=a*M+o*T+s*N+l*P,r[12]=a*S+o*C+s*L+l*z,r[1]=c*w+u*E+h*I+d*R,r[5]=c*x+u*_+h*D+d*O,r[9]=c*M+u*T+h*N+d*P,r[13]=c*S+u*C+h*L+d*z,r[2]=p*w+f*E+A*I+m*R,r[6]=p*x+f*_+A*D+m*O,r[10]=p*M+f*T+A*N+m*P,r[14]=p*S+f*C+A*L+m*z,r[3]=g*w+v*E+y*I+b*R,r[7]=g*x+v*_+y*D+b*O,r[11]=g*M+v*T+y*N+b*P,r[15]=g*S+v*C+y*L+b*z,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],i=e[8],r=e[12],a=e[1],o=e[5],s=e[9],l=e[13],c=e[2],u=e[6],h=e[10],d=e[14];return e[3]*(+r*s*u-i*l*u-r*o*h+n*l*h+i*o*d-n*s*d)+e[7]*(+t*s*d-t*l*h+r*a*h-i*a*d+i*l*c-r*s*c)+e[11]*(+t*l*u-t*o*d-r*a*u+n*a*d+r*o*c-n*l*c)+e[15]*(-i*o*c-t*s*u+t*o*h+i*a*u-n*a*h+n*s*c)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],s=e[6],l=e[7],c=e[8],u=e[9],h=e[10],d=e[11],p=e[12],f=e[13],A=e[14],m=e[15],g=u*A*l-f*h*l+f*s*d-o*A*d-u*s*m+o*h*m,v=p*h*l-c*A*l-p*s*d+a*A*d+c*s*m-a*h*m,y=c*f*l-p*u*l+p*o*d-a*f*d-c*o*m+a*u*m,b=p*u*s-c*f*s-p*o*h+a*f*h+c*o*A-a*u*A,w=t*g+n*v+i*y+r*b;if(0===w)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const x=1/w;return e[0]=g*x,e[1]=(f*h*r-u*A*r-f*i*d+n*A*d+u*i*m-n*h*m)*x,e[2]=(o*A*r-f*s*r+f*i*l-n*A*l-o*i*m+n*s*m)*x,e[3]=(u*s*r-o*h*r-u*i*l+n*h*l+o*i*d-n*s*d)*x,e[4]=v*x,e[5]=(c*A*r-p*h*r+p*i*d-t*A*d-c*i*m+t*h*m)*x,e[6]=(p*s*r-a*A*r-p*i*l+t*A*l+a*i*m-t*s*m)*x,e[7]=(a*h*r-c*s*r+c*i*l-t*h*l-a*i*d+t*s*d)*x,e[8]=y*x,e[9]=(p*u*r-c*f*r-p*n*d+t*f*d+c*n*m-t*u*m)*x,e[10]=(a*f*r-p*o*r+p*n*l-t*f*l-a*n*m+t*o*m)*x,e[11]=(c*o*r-a*u*r-c*n*l+t*u*l+a*n*d-t*o*d)*x,e[12]=b*x,e[13]=(c*f*i-p*u*i+p*n*h-t*f*h-c*n*A+t*u*A)*x,e[14]=(p*o*i-a*f*i-p*n*s+t*f*s+a*n*A-t*o*A)*x,e[15]=(a*u*i-c*o*i+c*n*s-t*u*s-a*n*h+t*o*h)*x,this}scale(e){const t=this.elements,n=e.x,i=e.y,r=e.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 e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,i))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),i=Math.sin(t),r=1-n,a=e.x,o=e.y,s=e.z,l=r*a,c=r*o;return this.set(l*a+n,l*o-i*s,l*s+i*o,0,l*o+i*s,c*o+n,c*s-i*a,0,l*s-i*o,c*s+i*a,r*s*s+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,r,a){return this.set(1,n,r,0,e,1,a,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){const i=this.elements,r=t._x,a=t._y,o=t._z,s=t._w,l=r+r,c=a+a,u=o+o,h=r*l,d=r*c,p=r*u,f=a*c,A=a*u,m=o*u,g=s*l,v=s*c,y=s*u,b=n.x,w=n.y,x=n.z;return i[0]=(1-(f+m))*b,i[1]=(d+y)*b,i[2]=(p-v)*b,i[3]=0,i[4]=(d-y)*w,i[5]=(1-(h+m))*w,i[6]=(A+g)*w,i[7]=0,i[8]=(p+v)*x,i[9]=(A-g)*x,i[10]=(1-(h+f))*x,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){const i=this.elements;let r=Kc.set(i[0],i[1],i[2]).length();const a=Kc.set(i[4],i[5],i[6]).length(),o=Kc.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),e.x=i[12],e.y=i[13],e.z=i[14],Jc.copy(this);const s=1/r,l=1/a,c=1/o;return Jc.elements[0]*=s,Jc.elements[1]*=s,Jc.elements[2]*=s,Jc.elements[4]*=l,Jc.elements[5]*=l,Jc.elements[6]*=l,Jc.elements[8]*=c,Jc.elements[9]*=c,Jc.elements[10]*=c,t.setFromRotationMatrix(Jc),n.x=r,n.y=a,n.z=o,this}makePerspective(e,t,n,i,r,a,o=Sl){const s=this.elements,l=2*r/(t-e),c=2*r/(n-i),u=(t+e)/(t-e),h=(n+i)/(n-i);let d,p;if(o===Sl)d=-(a+r)/(a-r),p=-2*a*r/(a-r);else{if(o!==El)throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);d=-a/(a-r),p=-a*r/(a-r)}return s[0]=l,s[4]=0,s[8]=u,s[12]=0,s[1]=0,s[5]=c,s[9]=h,s[13]=0,s[2]=0,s[6]=0,s[10]=d,s[14]=p,s[3]=0,s[7]=0,s[11]=-1,s[15]=0,this}makeOrthographic(e,t,n,i,r,a,o=Sl){const s=this.elements,l=1/(t-e),c=1/(n-i),u=1/(a-r),h=(t+e)*l,d=(n+i)*c;let p,f;if(o===Sl)p=(a+r)*u,f=-2*u;else{if(o!==El)throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);p=r*u,f=-1*u}return s[0]=2*l,s[4]=0,s[8]=0,s[12]=-h,s[1]=0,s[5]=2*c,s[9]=0,s[13]=-d,s[2]=0,s[6]=0,s[10]=f,s[14]=-p,s[3]=0,s[7]=0,s[11]=0,s[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let e=0;e<16;e++)if(t[e]!==n[e])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const Kc=new bc,Jc=new qc,$c=new bc(0,0,0),eu=new bc(1,1,1),tu=new bc,nu=new bc,iu=new bc,ru=new qc,au=new yc;class ou{constructor(e=0,t=0,n=0,i=ou.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,i=this._order){return this._x=e,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(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const i=e.elements,r=i[0],a=i[4],o=i[8],s=i[1],l=i[5],c=i[9],u=i[2],h=i[6],d=i[10];switch(t){case"XYZ":this._y=Math.asin(Ll(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-c,d),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(h,l),this._z=0);break;case"YXZ":this._x=Math.asin(-Ll(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(o,d),this._z=Math.atan2(s,l)):(this._y=Math.atan2(-u,r),this._z=0);break;case"ZXY":this._x=Math.asin(Ll(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(-u,d),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(s,r));break;case"ZYX":this._y=Math.asin(-Ll(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(h,d),this._z=Math.atan2(s,r)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(Ll(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(-c,l),this._y=Math.atan2(-u,r)):(this._x=0,this._y=Math.atan2(o,d));break;case"XZY":this._z=Math.asin(-Ll(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(h,l),this._y=Math.atan2(o,r)):(this._x=Math.atan2(-c,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!0===n&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return ru.makeRotationFromQuaternion(e),this.setFromRotationMatrix(ru,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return au.setFromEuler(this),this.setFromQuaternion(au,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}ou.DEFAULT_ORDER="XYZ";class su{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(e){this.mask|=1<<e|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e|0}disable(e){this.mask&=~(1<<e|0)}disableAll(){this.mask=0}test(e){return 0!=(this.mask&e.mask)}isEnabled(e){return 0!=(this.mask&(1<<e|0))}}let lu=0;const cu=new bc,uu=new yc,hu=new qc,du=new bc,pu=new bc,fu=new bc,Au=new yc,mu=new bc(1,0,0),gu=new bc(0,1,0),vu=new bc(0,0,1),yu={type:"added"},bu={type:"removed"};class wu extends _l{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:lu++}),this.uuid=Nl(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=wu.DEFAULT_UP.clone();const e=new bc,t=new ou,n=new yc,i=new bc(1,1,1);t._onChange((function(){n.setFromEuler(t,!1)})),n._onChange((function(){t.setFromQuaternion(n,void 0,!1)})),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:n},scale:{configurable:!0,enumerable:!0,value:i},modelViewMatrix:{value:new qc},normalMatrix:{value:new Hl}}),this.matrix=new qc,this.matrixWorld=new qc,this.matrixAutoUpdate=wu.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.matrixWorldAutoUpdate=wu.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.layers=new su,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return uu.setFromAxisAngle(e,t),this.quaternion.multiply(uu),this}rotateOnWorldAxis(e,t){return uu.setFromAxisAngle(e,t),this.quaternion.premultiply(uu),this}rotateX(e){return this.rotateOnAxis(mu,e)}rotateY(e){return this.rotateOnAxis(gu,e)}rotateZ(e){return this.rotateOnAxis(vu,e)}translateOnAxis(e,t){return cu.copy(e).applyQuaternion(this.quaternion),this.position.add(cu.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(mu,e)}translateY(e){return this.translateOnAxis(gu,e)}translateZ(e){return this.translateOnAxis(vu,e)}localToWorld(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(hu.copy(this.matrixWorld).invert())}lookAt(e,t,n){e.isVector3?du.copy(e):du.set(e,t,n);const i=this.parent;this.updateWorldMatrix(!0,!1),pu.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?hu.lookAt(pu,du,this.up):hu.lookAt(du,pu,this.up),this.quaternion.setFromRotationMatrix(hu),i&&(hu.extractRotation(i.matrixWorld),uu.setFromRotationMatrix(hu),this.quaternion.premultiply(uu.invert()))}add(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return e===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",e),this):(e&&e.isObject3D?(null!==e.parent&&e.parent.remove(e),e.parent=this,this.children.push(e),e.dispatchEvent(yu)):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",e),this)}remove(e){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.remove(arguments[e]);return this}const t=this.children.indexOf(e);return-1!==t&&(e.parent=null,this.children.splice(t,1),e.dispatchEvent(bu)),this}removeFromParent(){const e=this.parent;return null!==e&&e.remove(this),this}clear(){return this.remove(...this.children)}attach(e){return this.updateWorldMatrix(!0,!1),hu.copy(this.matrixWorld).invert(),null!==e.parent&&(e.parent.updateWorldMatrix(!0,!1),hu.multiply(e.parent.matrixWorld)),e.applyMatrix4(hu),this.add(e),e.updateWorldMatrix(!1,!0),this}getObjectById(e){return this.getObjectByProperty("id",e)}getObjectByName(e){return this.getObjectByProperty("name",e)}getObjectByProperty(e,t){if(this[e]===t)return this;for(let n=0,i=this.children.length;n<i;n++){const i=this.children[n].getObjectByProperty(e,t);if(void 0!==i)return i}}getObjectsByProperty(e,t){let n=[];this[e]===t&&n.push(this);for(let i=0,r=this.children.length;i<r;i++){const r=this.children[i].getObjectsByProperty(e,t);r.length>0&&(n=n.concat(r))}return n}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(pu,e,fu),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(pu,Au,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);const t=this.children;for(let n=0,i=t.length;n<i;n++)t[n].traverse(e)}traverseVisible(e){if(!1===this.visible)return;e(this);const t=this.children;for(let n=0,i=t.length;n<i;n++)t[n].traverseVisible(e)}traverseAncestors(e){const t=this.parent;null!==t&&(e(t),t.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,e=!0);const t=this.children;for(let n=0,i=t.length;n<i;n++){const i=t[n];!0!==i.matrixWorldAutoUpdate&&!0!==e||i.updateMatrixWorld(e)}}updateWorldMatrix(e,t){const n=this.parent;if(!0===e&&null!==n&&!0===n.matrixWorldAutoUpdate&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),!0===t){const e=this.children;for(let t=0,n=e.length;t<n;t++){const n=e[t];!0===n.matrixWorldAutoUpdate&&n.updateWorldMatrix(!1,!0)}}}toJSON(e){const t=void 0===e||"string"==typeof e,n={};t&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},n.metadata={version:4.6,type:"Object",generator:"Object3D.toJSON"});const i={};function r(t,n){return void 0===t[n.uuid]&&(t[n.uuid]=n.toJSON(e)),n.uuid}if(i.uuid=this.uuid,i.type=this.type,""!==this.name&&(i.name=this.name),!0===this.castShadow&&(i.castShadow=!0),!0===this.receiveShadow&&(i.receiveShadow=!0),!1===this.visible&&(i.visible=!1),!1===this.frustumCulled&&(i.frustumCulled=!1),0!==this.renderOrder&&(i.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(i.instanceColor=this.instanceColor.toJSON())),this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(i.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(e.geometries,this.geometry);const t=this.geometry.parameters;if(void 0!==t&&void 0!==t.shapes){const n=t.shapes;if(Array.isArray(n))for(let t=0,i=n.length;t<i;t++){const i=n[t];r(e.shapes,i)}else r(e.shapes,n)}}if(this.isSkinnedMesh&&(i.bindMode=this.bindMode,i.bindMatrix=this.bindMatrix.toArray(),void 0!==this.skeleton&&(r(e.skeletons,this.skeleton),i.skeleton=this.skeleton.uuid)),void 0!==this.material)if(Array.isArray(this.material)){const t=[];for(let n=0,i=this.material.length;n<i;n++)t.push(r(e.materials,this.material[n]));i.material=t}else i.material=r(e.materials,this.material);if(this.children.length>0){i.children=[];for(let t=0;t<this.children.length;t++)i.children.push(this.children[t].toJSON(e).object)}if(this.animations.length>0){i.animations=[];for(let t=0;t<this.animations.length;t++){const n=this.animations[t];i.animations.push(r(e.animations,n))}}if(t){const t=a(e.geometries),i=a(e.materials),r=a(e.textures),o=a(e.images),s=a(e.shapes),l=a(e.skeletons),c=a(e.animations),u=a(e.nodes);t.length>0&&(n.geometries=t),i.length>0&&(n.materials=i),r.length>0&&(n.textures=r),o.length>0&&(n.images=o),s.length>0&&(n.shapes=s),l.length>0&&(n.skeletons=l),c.length>0&&(n.animations=c),u.length>0&&(n.nodes=u)}return n.object=i,n;function a(e){const t=[];for(const n in e){const i=e[n];delete i.metadata,t.push(i)}return t}}clone(e){return(new this.constructor).copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(let t=0;t<e.children.length;t++){const n=e.children[t];this.add(n.clone())}return this}}wu.DEFAULT_UP=new bc(0,1,0),wu.DEFAULT_MATRIX_AUTO_UPDATE=!0,wu.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const xu=new bc,Mu=new bc,Su=new bc,Eu=new bc,_u=new bc,Tu=new bc,Cu=new bc,Iu=new bc,Du=new bc,Nu=new bc;let Lu=!1;class Ru{constructor(e=new bc,t=new bc,n=new bc){this.a=e,this.b=t,this.c=n}static getNormal(e,t,n,i){i.subVectors(n,t),xu.subVectors(e,t),i.cross(xu);const r=i.lengthSq();return r>0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(e,t,n,i,r){xu.subVectors(i,t),Mu.subVectors(n,t),Su.subVectors(e,t);const a=xu.dot(xu),o=xu.dot(Mu),s=xu.dot(Su),l=Mu.dot(Mu),c=Mu.dot(Su),u=a*l-o*o;if(0===u)return r.set(-2,-1,-1);const h=1/u,d=(l*s-o*c)*h,p=(a*c-o*s)*h;return r.set(1-d-p,p,d)}static containsPoint(e,t,n,i){return this.getBarycoord(e,t,n,i,Eu),Eu.x>=0&&Eu.y>=0&&Eu.x+Eu.y<=1}static getUV(e,t,n,i,r,a,o,s){return!1===Lu&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),Lu=!0),this.getInterpolation(e,t,n,i,r,a,o,s)}static getInterpolation(e,t,n,i,r,a,o,s){return this.getBarycoord(e,t,n,i,Eu),s.setScalar(0),s.addScaledVector(r,Eu.x),s.addScaledVector(a,Eu.y),s.addScaledVector(o,Eu.z),s}static isFrontFacing(e,t,n,i){return xu.subVectors(n,t),Mu.subVectors(e,t),xu.cross(Mu).dot(i)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this}setFromAttributeAndIndices(e,t,n,i){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,i),this}clone(){return(new this.constructor).copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return xu.subVectors(this.c,this.b),Mu.subVectors(this.a,this.b),.5*xu.cross(Mu).length()}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Ru.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Ru.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,n,i,r){return!1===Lu&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),Lu=!0),Ru.getInterpolation(e,this.a,this.b,this.c,t,n,i,r)}getInterpolation(e,t,n,i,r){return Ru.getInterpolation(e,this.a,this.b,this.c,t,n,i,r)}containsPoint(e){return Ru.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Ru.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const n=this.a,i=this.b,r=this.c;let a,o;_u.subVectors(i,n),Tu.subVectors(r,n),Iu.subVectors(e,n);const s=_u.dot(Iu),l=Tu.dot(Iu);if(s<=0&&l<=0)return t.copy(n);Du.subVectors(e,i);const c=_u.dot(Du),u=Tu.dot(Du);if(c>=0&&u<=c)return t.copy(i);const h=s*u-c*l;if(h<=0&&s>=0&&c<=0)return a=s/(s-c),t.copy(n).addScaledVector(_u,a);Nu.subVectors(e,r);const d=_u.dot(Nu),p=Tu.dot(Nu);if(p>=0&&d<=p)return t.copy(r);const f=d*l-s*p;if(f<=0&&l>=0&&p<=0)return o=l/(l-p),t.copy(n).addScaledVector(Tu,o);const A=c*p-d*u;if(A<=0&&u-c>=0&&d-p>=0)return Cu.subVectors(r,i),o=(u-c)/(u-c+(d-p)),t.copy(i).addScaledVector(Cu,o);const m=1/(A+f+h);return a=f*m,o=h*m,t.copy(n).addScaledVector(_u,a).addScaledVector(Tu,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const Ou={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},Pu={h:0,s:0,l:0},zu={h:0,s:0,l:0};function ku(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+6*(t-e)*(2/3-n):e}class Uu{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(void 0===t&&void 0===n){const t=e;t&&t.isColor?this.copy(t):"number"==typeof t?this.setHex(t):"string"==typeof t&&this.setStyle(t)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Os){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,tc.toWorkingColorSpace(this,t),this}setRGB(e,t,n,i=tc.workingColorSpace){return this.r=e,this.g=t,this.b=n,tc.toWorkingColorSpace(this,i),this}setHSL(e,t,n,i=tc.workingColorSpace){if(e=Rl(e,1),t=Ll(t,0,1),n=Ll(n,0,1),0===t)this.r=this.g=this.b=n;else{const i=n<=.5?n*(1+t):n+t-n*t,r=2*n-i;this.r=ku(r,i,e+1/3),this.g=ku(r,i,e),this.b=ku(r,i,e-1/3)}return tc.toWorkingColorSpace(this,i),this}setStyle(e,t=Os){function n(t){void 0!==t&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(e)){let r;const a=i[1],o=i[2];switch(a){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))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(o))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(o))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 "+e)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){const n=i[1],r=n.length;if(3===r)return this.setRGB(parseInt(n.charAt(0),16)/15,parseInt(n.charAt(1),16)/15,parseInt(n.charAt(2),16)/15,t);if(6===r)return this.setHex(parseInt(n,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Os){const n=Ou[e.toLowerCase()];return void 0!==n?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=nc(e.r),this.g=nc(e.g),this.b=nc(e.b),this}copyLinearToSRGB(e){return this.r=ic(e.r),this.g=ic(e.g),this.b=ic(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Os){return tc.fromWorkingColorSpace(Bu.copy(this),e),65536*Math.round(Ll(255*Bu.r,0,255))+256*Math.round(Ll(255*Bu.g,0,255))+Math.round(Ll(255*Bu.b,0,255))}getHexString(e=Os){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=tc.workingColorSpace){tc.fromWorkingColorSpace(Bu.copy(this),t);const n=Bu.r,i=Bu.g,r=Bu.b,a=Math.max(n,i,r),o=Math.min(n,i,r);let s,l;const c=(o+a)/2;if(o===a)s=0,l=0;else{const e=a-o;switch(l=c<=.5?e/(a+o):e/(2-a-o),a){case n:s=(i-r)/e+(i<r?6:0);break;case i:s=(r-n)/e+2;break;case r:s=(n-i)/e+4}s/=6}return e.h=s,e.s=l,e.l=c,e}getRGB(e,t=tc.workingColorSpace){return tc.fromWorkingColorSpace(Bu.copy(this),t),e.r=Bu.r,e.g=Bu.g,e.b=Bu.b,e}getStyle(e=Os){tc.fromWorkingColorSpace(Bu.copy(this),e);const t=Bu.r,n=Bu.g,i=Bu.b;return e!==Os?`color(${e} ${t.toFixed(3)} ${n.toFixed(3)} ${i.toFixed(3)})`:`rgb(${Math.round(255*t)},${Math.round(255*n)},${Math.round(255*i)})`}offsetHSL(e,t,n){return this.getHSL(Pu),this.setHSL(Pu.h+e,Pu.s+t,Pu.l+n)}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}lerpColors(e,t,n){return this.r=e.r+(t.r-e.r)*n,this.g=e.g+(t.g-e.g)*n,this.b=e.b+(t.b-e.b)*n,this}lerpHSL(e,t){this.getHSL(Pu),e.getHSL(zu);const n=Ol(Pu.h,zu.h,t),i=Ol(Pu.s,zu.s,t),r=Ol(Pu.l,zu.l,t);return this.setHSL(n,i,r),this}setFromVector3(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}applyMatrix3(e){const t=this.r,n=this.g,i=this.b,r=e.elements;return this.r=r[0]*t+r[3]*n+r[6]*i,this.g=r[1]*t+r[4]*n+r[7]*i,this.b=r[2]*t+r[5]*n+r[8]*i,this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}toArray(e=[],t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}fromBufferAttribute(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const Bu=new Uu;Uu.NAMES=Ou;let Fu=0;class ju extends _l{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Fu++}),this.uuid=Nl(),this.name="",this.type="Material",this.blending=ia,this.side=Jr,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=ga,this.blendDst=va,this.blendEquation=la,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new Uu(0,0,0),this.blendAlpha=0,this.depthFunc=Na,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=il,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=Vs,this.stencilZFail=Vs,this.stencilZPass=Vs,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(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(void 0!==e)for(const t in e){const n=e[t];if(void 0===n){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const i=this[t];void 0!==i?i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[t]=n:console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`)}}toJSON(e){const t=void 0===e||"string"==typeof e;t&&(e={textures:{},images:{}});const n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};function i(e){const t=[];for(const n in e){const i=e[n];delete i.metadata,t.push(i)}return t}if(n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),void 0!==this.roughness&&(n.roughness=this.roughness),void 0!==this.metalness&&(n.metalness=this.metalness),void 0!==this.sheen&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(n.shininess=this.shininess),void 0!==this.clearcoat&&(n.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.iridescence&&(n.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(n.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),void 0!==this.anisotropy&&(n.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,void 0!==this.combine&&(n.combine=this.combine)),void 0!==this.envMapIntensity&&(n.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(n.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.transmission&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),void 0!==this.thickness&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(n.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(n.size=this.size),null!==this.shadowSide&&(n.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==ia&&(n.blending=this.blending),this.side!==Jr&&(n.side=this.side),!0===this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),!0===this.transparent&&(n.transparent=!0),this.blendSrc!==ga&&(n.blendSrc=this.blendSrc),this.blendDst!==va&&(n.blendDst=this.blendDst),this.blendEquation!==la&&(n.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(n.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(n.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==Na&&(n.depthFunc=this.depthFunc),!1===this.depthTest&&(n.depthTest=this.depthTest),!1===this.depthWrite&&(n.depthWrite=this.depthWrite),!1===this.colorWrite&&(n.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==il&&(n.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(n.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Vs&&(n.stencilFail=this.stencilFail),this.stencilZFail!==Vs&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==Vs&&(n.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(n.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(n.rotation=this.rotation),!0===this.polygonOffset&&(n.polygonOffset=!0),0!==this.polygonOffsetFactor&&(n.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(n.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(n.linewidth=this.linewidth),void 0!==this.dashSize&&(n.dashSize=this.dashSize),void 0!==this.gapSize&&(n.gapSize=this.gapSize),void 0!==this.scale&&(n.scale=this.scale),!0===this.dithering&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),!0===this.alphaHash&&(n.alphaHash=!0),!0===this.alphaToCoverage&&(n.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=!0),!0===this.forceSinglePass&&(n.forceSinglePass=!0),!0===this.wireframe&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(n.flatShading=!0),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),!1===this.fog&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData),t){const t=i(e.textures),r=i(e.images);t.length>0&&(n.textures=t),r.length>0&&(n.images=r)}return n}clone(){return(new this.constructor).copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let n=null;if(null!==t){const e=t.length;n=new Array(e);for(let i=0;i!==e;++i)n[i]=t[i].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){!0===e&&this.version++}}class Hu extends ju{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Uu(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=za,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const Vu=Wu();function Wu(){const e=new ArrayBuffer(4),t=new Float32Array(e),n=new Uint32Array(e),i=new Uint32Array(512),r=new Uint32Array(512);for(let e=0;e<256;++e){const t=e-127;t<-27?(i[e]=0,i[256|e]=32768,r[e]=24,r[256|e]=24):t<-14?(i[e]=1024>>-t-14,i[256|e]=1024>>-t-14|32768,r[e]=-t-1,r[256|e]=-t-1):t<=15?(i[e]=t+15<<10,i[256|e]=t+15<<10|32768,r[e]=13,r[256|e]=13):t<128?(i[e]=31744,i[256|e]=64512,r[e]=24,r[256|e]=24):(i[e]=31744,i[256|e]=64512,r[e]=13,r[256|e]=13)}const a=new Uint32Array(2048),o=new Uint32Array(64),s=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,n=0;for(;0==(8388608&t);)t<<=1,n-=8388608;t&=-8388609,n+=947912704,a[e]=t|n}for(let e=1024;e<2048;++e)a[e]=939524096+(e-1024<<13);for(let e=1;e<31;++e)o[e]=e<<23;o[31]=1199570944,o[32]=2147483648;for(let e=33;e<63;++e)o[e]=2147483648+(e-32<<23);o[63]=3347054592;for(let e=1;e<64;++e)32!==e&&(s[e]=1024);return{floatView:t,uint32View:n,baseTable:i,shiftTable:r,mantissaTable:a,exponentTable:o,offsetTable:s}}function Gu(e){Math.abs(e)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),e=Ll(e,-65504,65504),Vu.floatView[0]=e;const t=Vu.uint32View[0],n=t>>23&511;return Vu.baseTable[n]+((8388607&t)>>Vu.shiftTable[n])}function Qu(e){const t=e>>10;return Vu.uint32View[0]=Vu.mantissaTable[Vu.offsetTable[t]+(1023&e)]+Vu.exponentTable[t],Vu.floatView[0]}const Xu={toHalfFloat:Gu,fromHalfFloat:Qu},Yu=new bc,Zu=new jl;class qu{constructor(e,t,n=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=n,this.usage=dl,this.updateRange={offset:0,count:-1},this.gpuType=yo,this.version=0}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let i=0,r=this.itemSize;i<r;i++)this.array[e+i]=t.array[n+i];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(2===this.itemSize)for(let t=0,n=this.count;t<n;t++)Zu.fromBufferAttribute(this,t),Zu.applyMatrix3(e),this.setXY(t,Zu.x,Zu.y);else if(3===this.itemSize)for(let t=0,n=this.count;t<n;t++)Yu.fromBufferAttribute(this,t),Yu.applyMatrix3(e),this.setXYZ(t,Yu.x,Yu.y,Yu.z);return this}applyMatrix4(e){for(let t=0,n=this.count;t<n;t++)Yu.fromBufferAttribute(this,t),Yu.applyMatrix4(e),this.setXYZ(t,Yu.x,Yu.y,Yu.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)Yu.fromBufferAttribute(this,t),Yu.applyNormalMatrix(e),this.setXYZ(t,Yu.x,Yu.y,Yu.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)Yu.fromBufferAttribute(this,t),Yu.transformDirection(e),this.setXYZ(t,Yu.x,Yu.y,Yu.z);return this}set(e,t=0){return this.array.set(e,t),this}getComponent(e,t){let n=this.array[e*this.itemSize+t];return this.normalized&&(n=Ul(n,this.array)),n}setComponent(e,t,n){return this.normalized&&(n=Bl(n,this.array)),this.array[e*this.itemSize+t]=n,this}getX(e){let t=this.array[e*this.itemSize];return this.normalized&&(t=Ul(t,this.array)),t}setX(e,t){return this.normalized&&(t=Bl(t,this.array)),this.array[e*this.itemSize]=t,this}getY(e){let t=this.array[e*this.itemSize+1];return this.normalized&&(t=Ul(t,this.array)),t}setY(e,t){return this.normalized&&(t=Bl(t,this.array)),this.array[e*this.itemSize+1]=t,this}getZ(e){let t=this.array[e*this.itemSize+2];return this.normalized&&(t=Ul(t,this.array)),t}setZ(e,t){return this.normalized&&(t=Bl(t,this.array)),this.array[e*this.itemSize+2]=t,this}getW(e){let t=this.array[e*this.itemSize+3];return this.normalized&&(t=Ul(t,this.array)),t}setW(e,t){return this.normalized&&(t=Bl(t,this.array)),this.array[e*this.itemSize+3]=t,this}setXY(e,t,n){return e*=this.itemSize,this.normalized&&(t=Bl(t,this.array),n=Bl(n,this.array)),this.array[e+0]=t,this.array[e+1]=n,this}setXYZ(e,t,n,i){return e*=this.itemSize,this.normalized&&(t=Bl(t,this.array),n=Bl(n,this.array),i=Bl(i,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this}setXYZW(e,t,n,i,r){return e*=this.itemSize,this.normalized&&(t=Bl(t,this.array),n=Bl(n,this.array),i=Bl(i,this.array),r=Bl(r,this.array)),this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this.array[e+3]=r,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return""!==this.name&&(e.name=this.name),this.usage!==dl&&(e.usage=this.usage),0===this.updateRange.offset&&-1===this.updateRange.count||(e.updateRange=this.updateRange),e}}class Ku extends qu{constructor(e,t,n){super(new Int8Array(e),t,n)}}class Ju extends qu{constructor(e,t,n){super(new Uint8Array(e),t,n)}}class $u extends qu{constructor(e,t,n){super(new Uint8ClampedArray(e),t,n)}}class eh extends qu{constructor(e,t,n){super(new Int16Array(e),t,n)}}class th extends qu{constructor(e,t,n){super(new Uint16Array(e),t,n)}}class nh extends qu{constructor(e,t,n){super(new Int32Array(e),t,n)}}class ih extends qu{constructor(e,t,n){super(new Uint32Array(e),t,n)}}class rh extends qu{constructor(e,t,n){super(new Uint16Array(e),t,n),this.isFloat16BufferAttribute=!0}getX(e){let t=Qu(this.array[e*this.itemSize]);return this.normalized&&(t=Ul(t,this.array)),t}setX(e,t){return this.normalized&&(t=Bl(t,this.array)),this.array[e*this.itemSize]=Gu(t),this}getY(e){let t=Qu(this.array[e*this.itemSize+1]);return this.normalized&&(t=Ul(t,this.array)),t}setY(e,t){return this.normalized&&(t=Bl(t,this.array)),this.array[e*this.itemSize+1]=Gu(t),this}getZ(e){let t=Qu(this.array[e*this.itemSize+2]);return this.normalized&&(t=Ul(t,this.array)),t}setZ(e,t){return this.normalized&&(t=Bl(t,this.array)),this.array[e*this.itemSize+2]=Gu(t),this}getW(e){let t=Qu(this.array[e*this.itemSize+3]);return this.normalized&&(t=Ul(t,this.array)),t}setW(e,t){return this.normalized&&(t=Bl(t,this.array)),this.array[e*this.itemSize+3]=Gu(t),this}setXY(e,t,n){return e*=this.itemSize,this.normalized&&(t=Bl(t,this.array),n=Bl(n,this.array)),this.array[e+0]=Gu(t),this.array[e+1]=Gu(n),this}setXYZ(e,t,n,i){return e*=this.itemSize,this.normalized&&(t=Bl(t,this.array),n=Bl(n,this.array),i=Bl(i,this.array)),this.array[e+0]=Gu(t),this.array[e+1]=Gu(n),this.array[e+2]=Gu(i),this}setXYZW(e,t,n,i,r){return e*=this.itemSize,this.normalized&&(t=Bl(t,this.array),n=Bl(n,this.array),i=Bl(i,this.array),r=Bl(r,this.array)),this.array[e+0]=Gu(t),this.array[e+1]=Gu(n),this.array[e+2]=Gu(i),this.array[e+3]=Gu(r),this}}class ah extends qu{constructor(e,t,n){super(new Float32Array(e),t,n)}}class oh extends qu{constructor(e,t,n){super(new Float64Array(e),t,n)}}let sh=0;const lh=new qc,ch=new wu,uh=new bc,hh=new Mc,dh=new Mc,ph=new bc;class fh extends _l{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:sh++}),this.uuid=Nl(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(Wl(e)?ih:th)(e,1):this.index=e,this}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return void 0!==this.attributes[e]}addGroup(e,t,n=0){this.groups.push({start:e,count:t,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){const t=this.attributes.position;void 0!==t&&(t.applyMatrix4(e),t.needsUpdate=!0);const n=this.attributes.normal;if(void 0!==n){const t=(new Hl).getNormalMatrix(e);n.applyNormalMatrix(t),n.needsUpdate=!0}const i=this.attributes.tangent;return void 0!==i&&(i.transformDirection(e),i.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}applyQuaternion(e){return lh.makeRotationFromQuaternion(e),this.applyMatrix4(lh),this}rotateX(e){return lh.makeRotationX(e),this.applyMatrix4(lh),this}rotateY(e){return lh.makeRotationY(e),this.applyMatrix4(lh),this}rotateZ(e){return lh.makeRotationZ(e),this.applyMatrix4(lh),this}translate(e,t,n){return lh.makeTranslation(e,t,n),this.applyMatrix4(lh),this}scale(e,t,n){return lh.makeScale(e,t,n),this.applyMatrix4(lh),this}lookAt(e){return ch.lookAt(e),ch.updateMatrix(),this.applyMatrix4(ch.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(uh).negate(),this.translate(uh.x,uh.y,uh.z),this}setFromPoints(e){const t=[];for(let n=0,i=e.length;n<i;n++){const i=e[n];t.push(i.x,i.y,i.z||0)}return this.setAttribute("position",new ah(t,3)),this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new Mc);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute)return console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false".',this),void this.boundingBox.set(new bc(-1/0,-1/0,-1/0),new bc(1/0,1/0,1/0));if(void 0!==e){if(this.boundingBox.setFromBufferAttribute(e),t)for(let e=0,n=t.length;e<n;e++){const n=t[e];hh.setFromBufferAttribute(n),this.morphTargetsRelative?(ph.addVectors(this.boundingBox.min,hh.min),this.boundingBox.expandByPoint(ph),ph.addVectors(this.boundingBox.max,hh.max),this.boundingBox.expandByPoint(ph)):(this.boundingBox.expandByPoint(hh.min),this.boundingBox.expandByPoint(hh.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new jc);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute)return console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "false".',this),void this.boundingSphere.set(new bc,1/0);if(e){const n=this.boundingSphere.center;if(hh.setFromBufferAttribute(e),t)for(let e=0,n=t.length;e<n;e++){const n=t[e];dh.setFromBufferAttribute(n),this.morphTargetsRelative?(ph.addVectors(hh.min,dh.min),hh.expandByPoint(ph),ph.addVectors(hh.max,dh.max),hh.expandByPoint(ph)):(hh.expandByPoint(dh.min),hh.expandByPoint(dh.max))}hh.getCenter(n);let i=0;for(let t=0,r=e.count;t<r;t++)ph.fromBufferAttribute(e,t),i=Math.max(i,n.distanceToSquared(ph));if(t)for(let r=0,a=t.length;r<a;r++){const a=t[r],o=this.morphTargetsRelative;for(let t=0,r=a.count;t<r;t++)ph.fromBufferAttribute(a,t),o&&(uh.fromBufferAttribute(e,t),ph.add(uh)),i=Math.max(i,n.distanceToSquared(ph))}this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const e=this.index,t=this.attributes;if(null===e||void 0===t.position||void 0===t.normal||void 0===t.uv)return void console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");const n=e.array,i=t.position.array,r=t.normal.array,a=t.uv.array,o=i.length/3;!1===this.hasAttribute("tangent")&&this.setAttribute("tangent",new qu(new Float32Array(4*o),4));const s=this.getAttribute("tangent").array,l=[],c=[];for(let e=0;e<o;e++)l[e]=new bc,c[e]=new bc;const u=new bc,h=new bc,d=new bc,p=new jl,f=new jl,A=new jl,m=new bc,g=new bc;function v(e,t,n){u.fromArray(i,3*e),h.fromArray(i,3*t),d.fromArray(i,3*n),p.fromArray(a,2*e),f.fromArray(a,2*t),A.fromArray(a,2*n),h.sub(u),d.sub(u),f.sub(p),A.sub(p);const r=1/(f.x*A.y-A.x*f.y);isFinite(r)&&(m.copy(h).multiplyScalar(A.y).addScaledVector(d,-f.y).multiplyScalar(r),g.copy(d).multiplyScalar(f.x).addScaledVector(h,-A.x).multiplyScalar(r),l[e].add(m),l[t].add(m),l[n].add(m),c[e].add(g),c[t].add(g),c[n].add(g))}let y=this.groups;0===y.length&&(y=[{start:0,count:n.length}]);for(let e=0,t=y.length;e<t;++e){const t=y[e],i=t.start;for(let e=i,r=i+t.count;e<r;e+=3)v(n[e+0],n[e+1],n[e+2])}const b=new bc,w=new bc,x=new bc,M=new bc;function S(e){x.fromArray(r,3*e),M.copy(x);const t=l[e];b.copy(t),b.sub(x.multiplyScalar(x.dot(t))).normalize(),w.crossVectors(M,t);const n=w.dot(c[e])<0?-1:1;s[4*e]=b.x,s[4*e+1]=b.y,s[4*e+2]=b.z,s[4*e+3]=n}for(let e=0,t=y.length;e<t;++e){const t=y[e],i=t.start;for(let e=i,r=i+t.count;e<r;e+=3)S(n[e+0]),S(n[e+1]),S(n[e+2])}}computeVertexNormals(){const e=this.index,t=this.getAttribute("position");if(void 0!==t){let n=this.getAttribute("normal");if(void 0===n)n=new qu(new Float32Array(3*t.count),3),this.setAttribute("normal",n);else for(let e=0,t=n.count;e<t;e++)n.setXYZ(e,0,0,0);const i=new bc,r=new bc,a=new bc,o=new bc,s=new bc,l=new bc,c=new bc,u=new bc;if(e)for(let h=0,d=e.count;h<d;h+=3){const d=e.getX(h+0),p=e.getX(h+1),f=e.getX(h+2);i.fromBufferAttribute(t,d),r.fromBufferAttribute(t,p),a.fromBufferAttribute(t,f),c.subVectors(a,r),u.subVectors(i,r),c.cross(u),o.fromBufferAttribute(n,d),s.fromBufferAttribute(n,p),l.fromBufferAttribute(n,f),o.add(c),s.add(c),l.add(c),n.setXYZ(d,o.x,o.y,o.z),n.setXYZ(p,s.x,s.y,s.z),n.setXYZ(f,l.x,l.y,l.z)}else for(let e=0,o=t.count;e<o;e+=3)i.fromBufferAttribute(t,e+0),r.fromBufferAttribute(t,e+1),a.fromBufferAttribute(t,e+2),c.subVectors(a,r),u.subVectors(i,r),c.cross(u),n.setXYZ(e+0,c.x,c.y,c.z),n.setXYZ(e+1,c.x,c.y,c.z),n.setXYZ(e+2,c.x,c.y,c.z);this.normalizeNormals(),n.needsUpdate=!0}}normalizeNormals(){const e=this.attributes.normal;for(let t=0,n=e.count;t<n;t++)ph.fromBufferAttribute(e,t),ph.normalize(),e.setXYZ(t,ph.x,ph.y,ph.z)}toNonIndexed(){function e(e,t){const n=e.array,i=e.itemSize,r=e.normalized,a=new n.constructor(t.length*i);let o=0,s=0;for(let r=0,l=t.length;r<l;r++){o=e.isInterleavedBufferAttribute?t[r]*e.data.stride+e.offset:t[r]*i;for(let e=0;e<i;e++)a[s++]=n[o++]}return new qu(a,i,r)}if(null===this.index)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const t=new fh,n=this.index.array,i=this.attributes;for(const r in i){const a=e(i[r],n);t.setAttribute(r,a)}const r=this.morphAttributes;for(const i in r){const a=[],o=r[i];for(let t=0,i=o.length;t<i;t++){const i=e(o[t],n);a.push(i)}t.morphAttributes[i]=a}t.morphTargetsRelative=this.morphTargetsRelative;const a=this.groups;for(let e=0,n=a.length;e<n;e++){const n=a[e];t.addGroup(n.start,n.count,n.materialIndex)}return t}toJSON(){const e={metadata:{version:4.6,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,""!==this.name&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),void 0!==this.parameters){const t=this.parameters;for(const n in t)void 0!==t[n]&&(e[n]=t[n]);return e}e.data={attributes:{}};const t=this.index;null!==t&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const t in n){const i=n[t];e.data.attributes[t]=i.toJSON(e.data)}const i={};let r=!1;for(const t in this.morphAttributes){const n=this.morphAttributes[t],a=[];for(let t=0,i=n.length;t<i;t++){const i=n[t];a.push(i.toJSON(e.data))}a.length>0&&(i[t]=a,r=!0)}r&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));const o=this.boundingSphere;return null!==o&&(e.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),e}clone(){return(new this.constructor).copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const n=e.index;null!==n&&this.setIndex(n.clone(t));const i=e.attributes;for(const e in i){const n=i[e];this.setAttribute(e,n.clone(t))}const r=e.morphAttributes;for(const e in r){const n=[],i=r[e];for(let e=0,r=i.length;e<r;e++)n.push(i[e].clone(t));this.morphAttributes[e]=n}this.morphTargetsRelative=e.morphTargetsRelative;const a=e.groups;for(let e=0,t=a.length;e<t;e++){const t=a[e];this.addGroup(t.start,t.count,t.materialIndex)}const o=e.boundingBox;null!==o&&(this.boundingBox=o.clone());const s=e.boundingSphere;return null!==s&&(this.boundingSphere=s.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const Ah=new qc,mh=new Zc,gh=new jc,vh=new bc,yh=new bc,bh=new bc,wh=new bc,xh=new bc,Mh=new bc,Sh=new jl,Eh=new jl,_h=new jl,Th=new bc,Ch=new bc,Ih=new bc,Dh=new bc,Nh=new bc;class Lh extends wu{constructor(e=new fh,t=new Hu){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),void 0!==e.morphTargetInfluences&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),void 0!==e.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const n=e[t[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e<t;e++){const t=n[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}getVertexPosition(e,t){const n=this.geometry,i=n.attributes.position,r=n.morphAttributes.position,a=n.morphTargetsRelative;t.fromBufferAttribute(i,e);const o=this.morphTargetInfluences;if(r&&o){Mh.set(0,0,0);for(let n=0,i=r.length;n<i;n++){const i=o[n],s=r[n];0!==i&&(xh.fromBufferAttribute(s,e),a?Mh.addScaledVector(xh,i):Mh.addScaledVector(xh.sub(t),i))}t.add(Mh)}return t}raycast(e,t){const n=this.geometry,i=this.material,r=this.matrixWorld;if(void 0!==i){if(null===n.boundingSphere&&n.computeBoundingSphere(),gh.copy(n.boundingSphere),gh.applyMatrix4(r),mh.copy(e.ray).recast(e.near),!1===gh.containsPoint(mh.origin)){if(null===mh.intersectSphere(gh,vh))return;if(mh.origin.distanceToSquared(vh)>(e.far-e.near)**2)return}Ah.copy(r).invert(),mh.copy(e.ray).applyMatrix4(Ah),null!==n.boundingBox&&!1===mh.intersectsBox(n.boundingBox)||this._computeIntersections(e,t,mh)}}_computeIntersections(e,t,n){let i;const r=this.geometry,a=this.material,o=r.index,s=r.attributes.position,l=r.attributes.uv,c=r.attributes.uv1,u=r.attributes.normal,h=r.groups,d=r.drawRange;if(null!==o)if(Array.isArray(a))for(let r=0,s=h.length;r<s;r++){const s=h[r],p=a[s.materialIndex];for(let r=Math.max(s.start,d.start),a=Math.min(o.count,Math.min(s.start+s.count,d.start+d.count));r<a;r+=3)i=Rh(this,p,e,n,l,c,u,o.getX(r),o.getX(r+1),o.getX(r+2)),i&&(i.faceIndex=Math.floor(r/3),i.face.materialIndex=s.materialIndex,t.push(i))}else for(let r=Math.max(0,d.start),s=Math.min(o.count,d.start+d.count);r<s;r+=3)i=Rh(this,a,e,n,l,c,u,o.getX(r),o.getX(r+1),o.getX(r+2)),i&&(i.faceIndex=Math.floor(r/3),t.push(i));else if(void 0!==s)if(Array.isArray(a))for(let r=0,o=h.length;r<o;r++){const o=h[r],p=a[o.materialIndex];for(let r=Math.max(o.start,d.start),a=Math.min(s.count,Math.min(o.start+o.count,d.start+d.count));r<a;r+=3)i=Rh(this,p,e,n,l,c,u,r,r+1,r+2),i&&(i.faceIndex=Math.floor(r/3),i.face.materialIndex=o.materialIndex,t.push(i))}else for(let r=Math.max(0,d.start),o=Math.min(s.count,d.start+d.count);r<o;r+=3)i=Rh(this,a,e,n,l,c,u,r,r+1,r+2),i&&(i.faceIndex=Math.floor(r/3),t.push(i))}}function Rh(e,t,n,i,r,a,o,s,l,c){e.getVertexPosition(s,yh),e.getVertexPosition(l,bh),e.getVertexPosition(c,wh);const u=function(e,t,n,i,r,a,o,s){let l;if(l=t.side===$r?i.intersectTriangle(o,a,r,!0,s):i.intersectTriangle(r,a,o,t.side===Jr,s),null===l)return null;Nh.copy(s),Nh.applyMatrix4(e.matrixWorld);const c=n.ray.origin.distanceTo(Nh);return c<n.near||c>n.far?null:{distance:c,point:Nh.clone(),object:e}}(e,t,n,i,yh,bh,wh,Dh);if(u){r&&(Sh.fromBufferAttribute(r,s),Eh.fromBufferAttribute(r,l),_h.fromBufferAttribute(r,c),u.uv=Ru.getInterpolation(Dh,yh,bh,wh,Sh,Eh,_h,new jl)),a&&(Sh.fromBufferAttribute(a,s),Eh.fromBufferAttribute(a,l),_h.fromBufferAttribute(a,c),u.uv1=Ru.getInterpolation(Dh,yh,bh,wh,Sh,Eh,_h,new jl),u.uv2=u.uv1),o&&(Th.fromBufferAttribute(o,s),Ch.fromBufferAttribute(o,l),Ih.fromBufferAttribute(o,c),u.normal=Ru.getInterpolation(Dh,yh,bh,wh,Th,Ch,Ih,new bc),u.normal.dot(i.direction)>0&&u.normal.multiplyScalar(-1));const e={a:s,b:l,c,normal:new bc,materialIndex:0};Ru.getNormal(yh,bh,wh,e.normal),u.face=e}return u}class Oh extends fh{constructor(e=1,t=1,n=1,i=1,r=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:i,heightSegments:r,depthSegments:a};const o=this;i=Math.floor(i),r=Math.floor(r),a=Math.floor(a);const s=[],l=[],c=[],u=[];let h=0,d=0;function p(e,t,n,i,r,a,p,f,A,m,g){const v=a/A,y=p/m,b=a/2,w=p/2,x=f/2,M=A+1,S=m+1;let E=0,_=0;const T=new bc;for(let a=0;a<S;a++){const o=a*y-w;for(let s=0;s<M;s++){const h=s*v-b;T[e]=h*i,T[t]=o*r,T[n]=x,l.push(T.x,T.y,T.z),T[e]=0,T[t]=0,T[n]=f>0?1:-1,c.push(T.x,T.y,T.z),u.push(s/A),u.push(1-a/m),E+=1}}for(let e=0;e<m;e++)for(let t=0;t<A;t++){const n=h+t+M*e,i=h+t+M*(e+1),r=h+(t+1)+M*(e+1),a=h+(t+1)+M*e;s.push(n,i,a),s.push(i,r,a),_+=6}o.addGroup(d,_,g),d+=_,h+=E}p("z","y","x",-1,-1,n,t,e,a,r,0),p("z","y","x",1,-1,n,t,-e,a,r,1),p("x","z","y",1,1,e,n,t,i,a,2),p("x","z","y",1,-1,e,n,-t,i,a,3),p("x","y","z",1,-1,e,t,n,i,r,4),p("x","y","z",-1,-1,e,t,-n,i,r,5),this.setIndex(s),this.setAttribute("position",new ah(l,3)),this.setAttribute("normal",new ah(c,3)),this.setAttribute("uv",new ah(u,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Oh(e.width,e.height,e.depth,e.widthSegments,e.heightSegments,e.depthSegments)}}function Ph(e){const t={};for(const n in e){t[n]={};for(const i in e[n]){const r=e[n][i];r&&(r.isColor||r.isMatrix3||r.isMatrix4||r.isVector2||r.isVector3||r.isVector4||r.isTexture||r.isQuaternion)?r.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),t[n][i]=null):t[n][i]=r.clone():Array.isArray(r)?t[n][i]=r.slice():t[n][i]=r}}return t}function zh(e){const t={};for(let n=0;n<e.length;n++){const i=Ph(e[n]);for(const e in i)t[e]=i[e]}return t}function kh(e){return null===e.getRenderTarget()?e.outputColorSpace:tc.workingColorSpace}const Uh={clone:Ph,merge:zh};class Bh extends ju{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader="void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",this.fragmentShader="void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}",this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,void 0!==e&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=Ph(e.uniforms),this.uniformsGroups=function(e){const t=[];for(let n=0;n<e.length;n++)t.push(e[n].clone());return t}(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){const t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uniforms={};for(const n in this.uniforms){const i=this.uniforms[n].value;i&&i.isTexture?t.uniforms[n]={type:"t",value:i.toJSON(e).uuid}:i&&i.isColor?t.uniforms[n]={type:"c",value:i.getHex()}:i&&i.isVector2?t.uniforms[n]={type:"v2",value:i.toArray()}:i&&i.isVector3?t.uniforms[n]={type:"v3",value:i.toArray()}:i&&i.isVector4?t.uniforms[n]={type:"v4",value:i.toArray()}:i&&i.isMatrix3?t.uniforms[n]={type:"m3",value:i.toArray()}:i&&i.isMatrix4?t.uniforms[n]={type:"m4",value:i.toArray()}:t.uniforms[n]={value:i}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const n={};for(const e in this.extensions)!0===this.extensions[e]&&(n[e]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class Fh extends wu{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new qc,this.projectionMatrix=new qc,this.projectionMatrixInverse=new qc,this.coordinateSystem=Sl}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return(new this.constructor).copy(this)}}class jh extends Fh{constructor(e=50,t=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,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(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=2*Dl*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(.5*Il*this.fov);return.5*this.getFilmHeight()/e}getEffectiveFOV(){return 2*Dl*Math.atan(Math.tan(.5*Il*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,n,i,r,a){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(.5*Il*this.fov)/this.zoom,n=2*t,i=this.aspect*n,r=-.5*i;const a=this.view;if(null!==this.view&&this.view.enabled){const e=a.fullWidth,o=a.fullHeight;r+=a.offsetX*i/e,t-=a.offsetY*n/o,i*=a.width/e,n*=a.height/o}const o=this.filmOffset;0!==o&&(r+=e*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,t,t-n,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);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,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const Hh=-90;class Vh extends wu{constructor(e,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const i=new jh(Hh,1,e,t);i.layers=this.layers,this.add(i);const r=new jh(Hh,1,e,t);r.layers=this.layers,this.add(r);const a=new jh(Hh,1,e,t);a.layers=this.layers,this.add(a);const o=new jh(Hh,1,e,t);o.layers=this.layers,this.add(o);const s=new jh(Hh,1,e,t);s.layers=this.layers,this.add(s);const l=new jh(Hh,1,e,t);l.layers=this.layers,this.add(l)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[n,i,r,a,o,s]=t;for(const e of t)this.remove(e);if(e===Sl)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),a.up.set(0,0,1),a.lookAt(0,-1,0),o.up.set(0,1,0),o.lookAt(0,0,1),s.up.set(0,1,0),s.lookAt(0,0,-1);else{if(e!==El)throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);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),a.up.set(0,0,-1),a.lookAt(0,-1,0),o.up.set(0,-1,0),o.lookAt(0,0,1),s.up.set(0,-1,0),s.lookAt(0,0,-1)}for(const e of t)this.add(e),e.updateMatrixWorld()}update(e,t){null===this.parent&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:i}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[r,a,o,s,l,c]=this.children,u=e.getRenderTarget(),h=e.getActiveCubeFace(),d=e.getActiveMipmapLevel(),p=e.xr.enabled;e.xr.enabled=!1;const f=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,i),e.render(t,r),e.setRenderTarget(n,1,i),e.render(t,a),e.setRenderTarget(n,2,i),e.render(t,o),e.setRenderTarget(n,3,i),e.render(t,s),e.setRenderTarget(n,4,i),e.render(t,l),n.texture.generateMipmaps=f,e.setRenderTarget(n,5,i),e.render(t,c),e.setRenderTarget(u,h,d),e.xr.enabled=p,n.texture.needsPMREMUpdate=!0}}class Wh extends uc{constructor(e,t,n,i,r,a,o,s,l,c){super(e=void 0!==e?e:[],t=void 0!==t?t:Ya,n,i,r,a,o,s,l,c),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class Gh extends pc{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const n={width:e,height:e,depth:1},i=[n,n,n,n,n,n];void 0!==t.encoding&&(ql("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."),t.colorSpace=t.encoding===Cs?Os:Rs),this.texture=new Wh(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=void 0!==t.generateMipmaps&&t.generateMipmaps,this.texture.minFilter=void 0!==t.minFilter?t.minFilter:so}fromEquirectangularTexture(e,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={tEquirect:{value:null}},i="\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include <begin_vertex>\n\t\t\t\t\t#include <project_vertex>\n\n\t\t\t\t}\n\t\t\t",r="\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include <common>\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t",a=new Oh(5,5,5),o=new Bh({name:"CubemapFromEquirect",uniforms:Ph(n),vertexShader:i,fragmentShader:r,side:$r,blending:na});o.uniforms.tEquirect.value=t;const s=new Lh(a,o),l=t.minFilter;return t.minFilter===uo&&(t.minFilter=so),new Vh(1,10,this).update(e,s),t.minFilter=l,s.geometry.dispose(),s.material.dispose(),this}clear(e,t,n,i){const r=e.getRenderTarget();for(let r=0;r<6;r++)e.setRenderTarget(this,r),e.clear(t,n,i);e.setRenderTarget(r)}}const Qh=new bc,Xh=new bc,Yh=new Hl;class Zh{constructor(e=new bc(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,n,i){return this.normal.set(e,t,n),this.constant=i,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,n){const i=Qh.subVectors(n,t).cross(Xh.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(i,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t){const n=e.delta(Qh),i=this.normal.dot(n);if(0===i)return 0===this.distanceToPoint(e.start)?t.copy(e.start):null;const r=-(e.start.dot(this.normal)+this.constant)/i;return r<0||r>1?null:t.copy(e.start).addScaledVector(n,r)}intersectsLine(e){const t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const n=t||Yh.getNormalMatrix(e),i=this.coplanarPoint(Qh).applyMatrix4(e),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return(new this.constructor).copy(this)}}const qh=new jc,Kh=new bc;class Jh{constructor(e=new Zh,t=new Zh,n=new Zh,i=new Zh,r=new Zh,a=new Zh){this.planes=[e,t,n,i,r,a]}set(e,t,n,i,r,a){const o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(n),o[3].copy(i),o[4].copy(r),o[5].copy(a),this}copy(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=Sl){const n=this.planes,i=e.elements,r=i[0],a=i[1],o=i[2],s=i[3],l=i[4],c=i[5],u=i[6],h=i[7],d=i[8],p=i[9],f=i[10],A=i[11],m=i[12],g=i[13],v=i[14],y=i[15];if(n[0].setComponents(s-r,h-l,A-d,y-m).normalize(),n[1].setComponents(s+r,h+l,A+d,y+m).normalize(),n[2].setComponents(s+a,h+c,A+p,y+g).normalize(),n[3].setComponents(s-a,h-c,A-p,y-g).normalize(),n[4].setComponents(s-o,h-u,A-f,y-v).normalize(),t===Sl)n[5].setComponents(s+o,h+u,A+f,y+v).normalize();else{if(t!==El)throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);n[5].setComponents(o,u,f,v).normalize()}return this}intersectsObject(e){if(void 0!==e.boundingSphere)null===e.boundingSphere&&e.computeBoundingSphere(),qh.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;null===t.boundingSphere&&t.computeBoundingSphere(),qh.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(qh)}intersectsSprite(e){return qh.center.set(0,0,0),qh.radius=.7071067811865476,qh.applyMatrix4(e.matrixWorld),this.intersectsSphere(qh)}intersectsSphere(e){const t=this.planes,n=e.center,i=-e.radius;for(let e=0;e<6;e++)if(t[e].distanceToPoint(n)<i)return!1;return!0}intersectsBox(e){const t=this.planes;for(let n=0;n<6;n++){const i=t[n];if(Kh.x=i.normal.x>0?e.max.x:e.min.x,Kh.y=i.normal.y>0?e.max.y:e.min.y,Kh.z=i.normal.z>0?e.max.z:e.min.z,i.distanceToPoint(Kh)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return(new this.constructor).copy(this)}}function $h(){let e=null,t=!1,n=null,i=null;function r(t,a){n(t,a),i=e.requestAnimationFrame(r)}return{start:function(){!0!==t&&null!==n&&(i=e.requestAnimationFrame(r),t=!0)},stop:function(){e.cancelAnimationFrame(i),t=!1},setAnimationLoop:function(e){n=e},setContext:function(t){e=t}}}function ed(e,t){const n=t.isWebGL2,i=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),i.get(e)},remove:function(t){t.isInterleavedBufferAttribute&&(t=t.data);const n=i.get(t);n&&(e.deleteBuffer(n.buffer),i.delete(t))},update:function(t,r){if(t.isGLBufferAttribute){const e=i.get(t);return void((!e||e.version<t.version)&&i.set(t,{buffer:t.buffer,type:t.type,bytesPerElement:t.elementSize,version:t.version}))}t.isInterleavedBufferAttribute&&(t=t.data);const a=i.get(t);void 0===a?i.set(t,function(t,i){const r=t.array,a=t.usage,o=e.createBuffer();let s;if(e.bindBuffer(i,o),e.bufferData(i,r,a),t.onUploadCallback(),r instanceof Float32Array)s=e.FLOAT;else if(r instanceof Uint16Array)if(t.isFloat16BufferAttribute){if(!n)throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");s=e.HALF_FLOAT}else s=e.UNSIGNED_SHORT;else if(r instanceof Int16Array)s=e.SHORT;else if(r instanceof Uint32Array)s=e.UNSIGNED_INT;else if(r instanceof Int32Array)s=e.INT;else if(r instanceof Int8Array)s=e.BYTE;else if(r instanceof Uint8Array)s=e.UNSIGNED_BYTE;else{if(!(r instanceof Uint8ClampedArray))throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+r);s=e.UNSIGNED_BYTE}return{buffer:o,type:s,bytesPerElement:r.BYTES_PER_ELEMENT,version:t.version}}(t,r)):a.version<t.version&&(function(t,i,r){const a=i.array,o=i.updateRange;e.bindBuffer(r,t),-1===o.count?e.bufferSubData(r,0,a):(n?e.bufferSubData(r,o.offset*a.BYTES_PER_ELEMENT,a,o.offset,o.count):e.bufferSubData(r,o.offset*a.BYTES_PER_ELEMENT,a.subarray(o.offset,o.offset+o.count)),o.count=-1),i.onUploadCallback()}(a.buffer,t,r),a.version=t.version)}}}class td extends fh{constructor(e=1,t=1,n=1,i=1){super(),this.type="PlaneGeometry",this.parameters={width:e,height:t,widthSegments:n,heightSegments:i};const r=e/2,a=t/2,o=Math.floor(n),s=Math.floor(i),l=o+1,c=s+1,u=e/o,h=t/s,d=[],p=[],f=[],A=[];for(let e=0;e<c;e++){const t=e*h-a;for(let n=0;n<l;n++){const i=n*u-r;p.push(i,-t,0),f.push(0,0,1),A.push(n/o),A.push(1-e/s)}}for(let e=0;e<s;e++)for(let t=0;t<o;t++){const n=t+l*e,i=t+l*(e+1),r=t+1+l*(e+1),a=t+1+l*e;d.push(n,i,a),d.push(i,r,a)}this.setIndex(d),this.setAttribute("position",new ah(p,3)),this.setAttribute("normal",new ah(f,3)),this.setAttribute("uv",new ah(A,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new td(e.width,e.height,e.widthSegments,e.heightSegments)}}const nd={alphahash_fragment:"#ifdef USE_ALPHAHASH\n\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\n#endif",alphahash_pars_fragment:"#ifdef USE_ALPHAHASH\n\tconst float ALPHA_HASH_SCALE = 0.05;\n\tfloat hash2D( vec2 value ) {\n\t\treturn fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\n\t}\n\tfloat hash3D( vec3 value ) {\n\t\treturn hash2D( vec2( hash2D( value.xy ), value.z ) );\n\t}\n\tfloat getAlphaHashThreshold( vec3 position ) {\n\t\tfloat maxDeriv = max(\n\t\t\tlength( dFdx( position.xyz ) ),\n\t\t\tlength( dFdy( position.xyz ) )\n\t\t);\n\t\tfloat pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\n\t\tvec2 pixScales = vec2(\n\t\t\texp2( floor( log2( pixScale ) ) ),\n\t\t\texp2( ceil( log2( pixScale ) ) )\n\t\t);\n\t\tvec2 alpha = vec2(\n\t\t\thash3D( floor( pixScales.x * position.xyz ) ),\n\t\t\thash3D( floor( pixScales.y * position.xyz ) )\n\t\t);\n\t\tfloat lerpFactor = fract( log2( pixScale ) );\n\t\tfloat x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\n\t\tfloat a = min( lerpFactor, 1.0 - lerpFactor );\n\t\tvec3 cases = vec3(\n\t\t\tx * x / ( 2.0 * a * ( 1.0 - a ) ),\n\t\t\t( x - 0.5 * a ) / ( 1.0 - a ),\n\t\t\t1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\n\t\t);\n\t\tfloat threshold = ( x < ( 1.0 - a ) )\n\t\t\t? ( ( x < a ) ? cases.x : cases.y )\n\t\t\t: cases.z;\n\t\treturn clamp( threshold , 1.0e-6, 1.0 );\n\t}\n#endif",alphamap_fragment:"#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\n#endif",alphamap_pars_fragment:"#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",alphatest_fragment:"#ifdef USE_ALPHATEST\n\tif ( diffuseColor.a < alphaTest ) discard;\n#endif",alphatest_pars_fragment:"#ifdef USE_ALPHATEST\n\tuniform float alphaTest;\n#endif",aomap_fragment:"#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_CLEARCOAT ) \n\t\tclearcoatSpecularIndirect *= ambientOcclusion;\n\t#endif\n\t#if defined( USE_SHEEN ) \n\t\tsheenSpecularIndirect *= ambientOcclusion;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\n\t\tfloat dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\n\t#endif\n#endif",aomap_pars_fragment:"#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif",begin_vertex:"vec3 transformed = vec3( position );\n#ifdef USE_ALPHAHASH\n\tvPosition = vec3( position );\n#endif",beginnormal_vertex:"vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif",bsdfs:"float G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n} // validated",iridescence_fragment:"#ifdef USE_IRIDESCENCE\n\tconst mat3 XYZ_TO_REC709 = mat3(\n\t\t 3.2404542, -0.9692660, 0.0556434,\n\t\t-1.5371385, 1.8760108, -0.2040259,\n\t\t-0.4985314, 0.0415560, 1.0572252\n\t);\n\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\n\t\tvec3 sqrtF0 = sqrt( fresnel0 );\n\t\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\n\t}\n\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\n\t}\n\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\n\t}\n\tvec3 evalSensitivity( float OPD, vec3 shift ) {\n\t\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\n\t\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\n\t\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\n\t\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\n\t\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\n\t\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\n\t\txyz /= 1.0685e-7;\n\t\tvec3 rgb = XYZ_TO_REC709 * xyz;\n\t\treturn rgb;\n\t}\n\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\n\t\tvec3 I;\n\t\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\n\t\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\n\t\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\n\t\tif ( cosTheta2Sq < 0.0 ) {\n\t\t\treturn vec3( 1.0 );\n\t\t}\n\t\tfloat cosTheta2 = sqrt( cosTheta2Sq );\n\t\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\n\t\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\n\t\tfloat T121 = 1.0 - R12;\n\t\tfloat phi12 = 0.0;\n\t\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\n\t\tfloat phi21 = PI - phi12;\n\t\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\t\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\n\t\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\n\t\tvec3 phi23 = vec3( 0.0 );\n\t\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\n\t\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\n\t\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\n\t\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\n\t\tvec3 phi = vec3( phi21 ) + phi23;\n\t\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\n\t\tvec3 r123 = sqrt( R123 );\n\t\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\n\t\tvec3 C0 = R12 + Rs;\n\t\tI = C0;\n\t\tvec3 Cm = Rs - T121;\n\t\tfor ( int m = 1; m <= 2; ++ m ) {\n\t\t\tCm *= r123;\n\t\t\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\n\t\t\tI += Cm * Sm;\n\t\t}\n\t\treturn max( I, vec3( 0.0 ) );\n\t}\n#endif",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vBumpMapUv );\n\t\tvec2 dSTdy = dFdy( vBumpMapUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n\t\tvec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\n\t\tvec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\n#ifdef USE_ALPHAHASH\n\tvarying vec3 vPosition;\n#endif\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat luminance( const in vec3 rgb ) {\n\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\n\treturn dot( weights, rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\n\t\t#ifdef texture2DGradEXT\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n\t\t#else\n\t\t\treturn texture2D( envMap, uv ).rgb;\n\t\t#endif\n\t}\n\t#define cubeUV_r0 1.0\n\t#define cubeUV_v0 0.339\n\t#define cubeUV_m0 - 2.0\n\t#define cubeUV_r1 0.8\n\t#define cubeUV_v1 0.276\n\t#define cubeUV_m1 - 1.0\n\t#define cubeUV_r4 0.4\n\t#define cubeUV_v4 0.046\n\t#define cubeUV_m4 2.0\n\t#define cubeUV_r5 0.305\n\t#define cubeUV_v5 0.016\n\t#define cubeUV_m5 3.0\n\t#define cubeUV_r6 0.21\n\t#define cubeUV_v6 0.0038\n\t#define cubeUV_m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= cubeUV_r1 ) {\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n\t\t} else if ( roughness >= cubeUV_r4 ) {\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n\t\t} else if ( roughness >= cubeUV_r5 ) {\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n\t\t} else if ( roughness >= cubeUV_r6 ) {\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",colorspace_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",colorspace_pars_fragment:"\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\n\tvec3( 0.8224621, 0.177538, 0.0 ),\n\tvec3( 0.0331941, 0.9668058, 0.0 ),\n\tvec3( 0.0170827, 0.0723974, 0.9105199 )\n);\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\n\tvec3( 1.2249401, - 0.2249404, 0.0 ),\n\tvec3( - 0.0420569, 1.0420571, 0.0 ),\n\tvec3( - 0.0196376, - 0.0786361, 1.0982735 )\n);\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\n\treturn vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\n}\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\n\treturn vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\n}\nvec4 LinearTransferOETF( in vec4 value ) {\n\treturn value;\n}\nvec4 sRGBTransferOETF( in vec4 value ) {\n\treturn 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 );\n}\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn sRGBTransferOETF( value );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#ifdef USE_ENVMAP\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\t#ifdef USE_ANISOTROPY\n\t\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\n\t\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\t\tvec3 bentNormal = cross( bitangent, viewDir );\n\t\t\t\tbentNormal = normalize( cross( bentNormal, bitangent ) );\n\t\t\t\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\n\t\t\t\treturn getIBLRadiance( viewDir, bentNormal, roughness );\n\t\t\t#else\n\t\t\t\treturn vec3( 0.0 );\n\t\t\t#endif\n\t\t}\n\t#endif\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\n\t#else\n\t\tvec2 fw = fwidth( coord ) * 0.5;\n\t\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_fragment:"LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;",lights_lambert_pars_fragment:"varying vec3 vViewPosition;\nstruct LambertMaterial {\n\tvec3 diffuseColor;\n\tfloat specularStrength;\n};\nvoid 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 ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid 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 ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Lambert\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Lambert",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\n#if defined( USE_LIGHT_PROBES )\n\tuniform vec3 lightProbe[ 9 ];\n#endif\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( LEGACY_LIGHTS )\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#else\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometryPosition;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometryPosition;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid 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 ) {\n\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid 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 ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid 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 ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid 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 ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\tmaterial.ior = ior;\n\t#ifdef USE_SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULAR_COLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n\t\t#endif\n\t\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_IRIDESCENCE\n\tmaterial.iridescence = iridescence;\n\tmaterial.iridescenceIOR = iridescenceIOR;\n\t#ifdef USE_IRIDESCENCEMAP\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\n\t#else\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\n\t#endif\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\t#ifdef USE_ANISOTROPYMAP\n\t\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\n\t\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\n\t\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\n\t#else\n\t\tvec2 anisotropyV = anisotropyVector;\n\t#endif\n\tmaterial.anisotropy = length( anisotropyV );\n\tanisotropyV /= material.anisotropy;\n\tmaterial.anisotropy = saturate( material.anisotropy );\n\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\n\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x - tbn[ 1 ] * anisotropyV.y;\n\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x + tbn[ 0 ] * anisotropyV.y;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\tfloat iridescence;\n\t\tfloat iridescenceIOR;\n\t\tfloat iridescenceThickness;\n\t\tvec3 iridescenceFresnel;\n\t\tvec3 iridescenceF0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n\t#ifdef IOR\n\t\tfloat ior;\n\t#endif\n\t#ifdef USE_TRANSMISSION\n\t\tfloat transmission;\n\t\tfloat transmissionAlpha;\n\t\tfloat thickness;\n\t\tfloat attenuationDistance;\n\t\tvec3 attenuationColor;\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat anisotropy;\n\t\tfloat alphaT;\n\t\tvec3 anisotropyT;\n\t\tvec3 anisotropyB;\n\t#endif\n};\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\nvec3 sheenSpecularDirect = vec3( 0.0 );\nvec3 sheenSpecularIndirect = vec3(0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\n#ifdef USE_ANISOTROPY\n\tfloat 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 ) {\n\t\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\n\t\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\n\t\tfloat v = 0.5 / ( gv + gl );\n\t\treturn saturate(v);\n\t}\n\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\n\t\tfloat a2 = alphaT * alphaB;\n\t\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\n\t\thighp float v2 = dot( v, v );\n\t\tfloat w2 = a2 / v2;\n\t\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\n\t}\n#endif\n#ifdef USE_CLEARCOAT\n\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n\t\tvec3 f0 = material.clearcoatF0;\n\t\tfloat f90 = material.clearcoatF90;\n\t\tfloat roughness = material.clearcoatRoughness;\n\t\tfloat alpha = pow2( roughness );\n\t\tvec3 halfDir = normalize( lightDir + viewDir );\n\t\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\t\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\t\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\t\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\t\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t\treturn F * ( V * D );\n\t}\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n\tvec3 f0 = material.specularColor;\n\tfloat f90 = material.specularF90;\n\tfloat roughness = material.roughness;\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t#ifdef USE_IRIDESCENCE\n\t\tF = mix( F, material.iridescenceFresnel, material.iridescence );\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat dotTL = dot( material.anisotropyT, lightDir );\n\t\tfloat dotTV = dot( material.anisotropyT, viewDir );\n\t\tfloat dotTH = dot( material.anisotropyT, halfDir );\n\t\tfloat dotBL = dot( material.anisotropyB, lightDir );\n\t\tfloat dotBV = dot( material.anisotropyB, viewDir );\n\t\tfloat dotBH = dot( material.anisotropyB, halfDir );\n\t\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\n\t\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\n\t#else\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t#endif\n\treturn F * ( V * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid 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 ) {\n#else\nvoid 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 ) {\n#endif\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\t#ifdef USE_IRIDESCENCE\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n\t#else\n\t\tvec3 Fr = specularColor;\n\t#endif\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid 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 ) {\n\t\tvec3 normal = geometryNormal;\n\t\tvec3 viewDir = geometryViewDir;\n\t\tvec3 position = geometryPosition;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid 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 ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid 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 ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid 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) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t#ifdef USE_IRIDESCENCE\n\t\tcomputeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\t#endif\n\tvec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nvec3 geometryPosition = - vViewPosition;\nvec3 geometryNormal = normal;\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\nvec3 geometryClearcoatNormal = vec3( 0.0 );\n#ifdef USE_CLEARCOAT\n\tgeometryClearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\n\tif ( material.iridescenceThickness == 0.0 ) {\n\t\tmaterial.iridescence = 0.0;\n\t} else {\n\t\tmaterial.iridescence = saturate( material.iridescence );\n\t}\n\tif ( material.iridescence > 0.0 ) {\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n\t}\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometryPosition, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\tvec4 spotColor;\n\tvec3 spotLightCoord;\n\tbool inSpotLightMap;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometryPosition, directLight );\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n\t\t#else\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#endif\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n\t\t#endif\n\t\t#undef SPOT_LIGHT_MAP_INDEX\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#if defined( USE_LIGHT_PROBES )\n\t\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n\t#endif\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometryNormal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\t#ifdef USE_ANISOTROPY\n\t\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\n\t#else\n\t\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tsampledDiffuseColor = 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 );\n\t\n\t#endif\n\tdiffuseColor *= sampledDiffuseColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\t#if defined( USE_POINTS_UV )\n\t\tvec2 uv = vUv;\n\t#else\n\t\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\t#endif\n#endif\n#ifdef USE_MAP\n\tdiffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_POINTS_UV )\n\tvarying vec2 vUv;\n#else\n\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\t\tuniform mat3 uvTransform;\n\t#endif\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphcolor_vertex:"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\n\tvColor *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t#if defined( USE_COLOR_ALPHA )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n\t\t#elif defined( USE_COLOR )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n\t\t#endif\n\t}\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n\t#endif\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\t\tuniform sampler2DArray morphTargetsTexture;\n\t\tuniform ivec2 morphTargetsTextureSize;\n\t\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n\t\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n\t\t\tint y = texelIndex / morphTargetsTextureSize.x;\n\t\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\n\t\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\n\t\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\n\t\t}\n\t#else\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\tuniform float morphTargetInfluences[ 8 ];\n\t\t#else\n\t\t\tuniform float morphTargetInfluences[ 4 ];\n\t\t#endif\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t\t#endif\n\t#endif\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal *= faceDirection;\n\t#endif\n#endif\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\n\t\t#if defined( USE_NORMALMAP )\n\t\t\tvNormalMapUv\n\t\t#elif defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tvClearcoatNormalMapUv\n\t\t#else\n\t\t\tvUv\n\t\t#endif\n\t\t);\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn[0] *= faceDirection;\n\t\ttbn[1] *= faceDirection;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn2[0] *= faceDirection;\n\t\ttbn2[1] *= faceDirection;\n\t#endif\n#endif\nvec3 nonPerturbedNormal = normal;",normal_fragment_maps:"#ifdef USE_NORMALMAP_OBJECTSPACE\n\tnormal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\n\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\tnormal = normalize( tbn * mapN );\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_pars_vertex:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_vertex:"#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef USE_NORMALMAP_OBJECTSPACE\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\n\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( uv.st );\n\t\tvec2 st1 = dFdy( uv.st );\n\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n\t\treturn mat3( T * scale, B * scale, N );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = nonPerturbedNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif",iridescence_pars_fragment:"#ifdef USE_IRIDESCENCEMAP\n\tuniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform sampler2D iridescenceThicknessMap;\n#endif",opaque_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec2 packDepthToRG( in highp float v ) {\n\treturn packDepthToRGBA( v ).yx;\n}\nfloat unpackRGToDepth( const in highp vec2 v ) {\n\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\n\treturn depth * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * depth - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#if NUM_SPOT_LIGHT_COORDS > 0\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n\t\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",shadowmap_pars_vertex:"#if NUM_SPOT_LIGHT_COORDS > 0\n\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\tvec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition;\n\t\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n\t\t#endif\n\t\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\tuniform highp sampler2D boneTexture;\n\tuniform int boneTextureSize;\n\tmat4 getBoneMatrix( const in float i ) {\n\t\tfloat j = i * 4.0;\n\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\ty = dy * ( y + 0.5 );\n\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\treturn bone;\n\t}\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn saturate( toneMappingExposure * color );\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n\tmaterial.transmission = transmission;\n\tmaterial.transmissionAlpha = 1.0;\n\tmaterial.thickness = thickness;\n\tmaterial.attenuationDistance = attenuationDistance;\n\tmaterial.attenuationColor = attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmitted = getIBLVolumeRefraction(\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\n\t\tmaterial.attenuationColor, material.attenuationDistance );\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\n\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tfloat w0( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n\t}\n\tfloat w1( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n\t}\n\tfloat w2( float a ){\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n\t}\n\tfloat w3( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * a );\n\t}\n\tfloat g0( float a ) {\n\t\treturn w0( a ) + w1( a );\n\t}\n\tfloat g1( float a ) {\n\t\treturn w2( a ) + w3( a );\n\t}\n\tfloat h0( float a ) {\n\t\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n\t}\n\tfloat h1( float a ) {\n\t\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n\t}\n\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n\t\tuv = uv * texelSize.zw + 0.5;\n\t\tvec2 iuv = floor( uv );\n\t\tvec2 fuv = fract( uv );\n\t\tfloat g0x = g0( fuv.x );\n\t\tfloat g1x = g1( fuv.x );\n\t\tfloat h0x = h0( fuv.x );\n\t\tfloat h1x = h1( fuv.x );\n\t\tfloat h0y = h0( fuv.y );\n\t\tfloat h1y = h1( fuv.y );\n\t\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n\t\t\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n\t}\n\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n\t\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n\t\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n\t\tvec2 fLodSizeInv = 1.0 / fLodSize;\n\t\tvec2 cLodSizeInv = 1.0 / cLodSize;\n\t\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n\t\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n\t\treturn mix( fSample, cSample, fract( lod ) );\n\t}\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n\t}\n\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( isinf( attenuationDistance ) ) {\n\t\t\treturn vec3( 1.0 );\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\n\t}\n#endif",uv_pars_fragment:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif",uv_pars_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tuniform mat3 mapTransform;\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform mat3 alphaMapTransform;\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tuniform mat3 lightMapTransform;\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tuniform mat3 aoMapTransform;\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tuniform mat3 bumpMapTransform;\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tuniform mat3 normalMapTransform;\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tuniform mat3 displacementMapTransform;\n\tvarying vec2 vDisplacementMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tuniform mat3 emissiveMapTransform;\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tuniform mat3 metalnessMapTransform;\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tuniform mat3 roughnessMapTransform;\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tuniform mat3 anisotropyMapTransform;\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tuniform mat3 clearcoatMapTransform;\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform mat3 clearcoatNormalMapTransform;\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform mat3 clearcoatRoughnessMapTransform;\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tuniform mat3 sheenColorMapTransform;\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tuniform mat3 sheenRoughnessMapTransform;\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tuniform mat3 iridescenceMapTransform;\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform mat3 iridescenceThicknessMapTransform;\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tuniform mat3 specularMapTransform;\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tuniform mat3 specularColorMapTransform;\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tuniform mat3 specularIntensityMapTransform;\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif",uv_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvUv = vec3( uv, 1 ).xy;\n#endif\n#ifdef USE_MAP\n\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ALPHAMAP\n\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_LIGHTMAP\n\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_AOMAP\n\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_BUMPMAP\n\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_NORMALMAP\n\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_METALNESSMAP\n\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULARMAP\n\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_THICKNESSMAP\n\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",background_frag:"uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\ttexColor = 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 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}",backgroundCube_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}",backgroundCube_frag:"#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nvarying vec3 vWorldDirection;\n#include <cube_uv_reflection_fragment>\nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}",cube_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\n\tgl_FragColor.a *= opacity;\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}",depth_vert:"#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <logdepthbuf_fragment>\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main () {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include <common>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",meshbasic_vert:"#include <common>\n#include <uv_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinbase_vertex>\n\t\t#include <skinnormal_vertex>\n\t\t#include <defaultnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <fog_vertex>\n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <specularmap_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include <aomap_fragment>\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include <envmap_fragment>\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vViewPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",meshlambert_frag:"#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_lambert_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_lambert_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n\tvViewPosition = - mvPosition.xyz;\n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <normal_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t#else\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\n#include <packing>\n#include <uv_pars_fragment>\n#include <normal_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_phong_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef USE_SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULAR_COLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEEN_COLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\tuniform vec2 anisotropyVector;\n\t#ifdef USE_ANISOTROPYMAP\n\t\tuniform sampler2D anisotropyMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <iridescence_fragment>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_physical_pars_fragment>\n#include <transmission_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_pars_fragment>\n#include <iridescence_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <roughnessmap_fragment>\n\t#include <metalnessmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <clearcoat_normal_fragment_begin>\n\t#include <clearcoat_normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include <transmission_fragment>\n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n\t#endif\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <normal_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <normal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <gradientmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <normal_pars_fragment>\n#include <lights_toon_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_toon_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",points_vert:"uniform float size;\nuniform float scale;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\n#ifdef USE_POINTS_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\nvoid main() {\n\t#ifdef USE_POINTS_UV\n\t\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\t#endif\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <fog_vertex>\n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <color_pars_fragment>\n#include <map_particle_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_particle_fragment>\n\t#include <color_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",shadow_vert:"#include <common>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <shadowmap_pars_vertex>\nvoid main() {\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <logdepthbuf_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\nvoid main() {\n\t#include <logdepthbuf_fragment>\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include <common>\n#include <uv_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <alphatest_pars_fragment>\n#include <alphahash_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <alphahash_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\t#include <opaque_fragment>\n\t#include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n\t#include <fog_fragment>\n}"},id={common:{diffuse:{value:new Uu(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Hl},alphaMap:{value:null},alphaMapTransform:{value:new Hl},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Hl}},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 Hl}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Hl}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Hl},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Hl},normalScale:{value:new jl(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Hl},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Hl}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Hl}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Hl}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Uu(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 Uu(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Hl},alphaTest:{value:0},uvTransform:{value:new Hl}},sprite:{diffuse:{value:new Uu(16777215)},opacity:{value:1},center:{value:new jl(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Hl},alphaMap:{value:null},alphaMapTransform:{value:new Hl},alphaTest:{value:0}}},rd={basic:{uniforms:zh([id.common,id.specularmap,id.envmap,id.aomap,id.lightmap,id.fog]),vertexShader:nd.meshbasic_vert,fragmentShader:nd.meshbasic_frag},lambert:{uniforms:zh([id.common,id.specularmap,id.envmap,id.aomap,id.lightmap,id.emissivemap,id.bumpmap,id.normalmap,id.displacementmap,id.fog,id.lights,{emissive:{value:new Uu(0)}}]),vertexShader:nd.meshlambert_vert,fragmentShader:nd.meshlambert_frag},phong:{uniforms:zh([id.common,id.specularmap,id.envmap,id.aomap,id.lightmap,id.emissivemap,id.bumpmap,id.normalmap,id.displacementmap,id.fog,id.lights,{emissive:{value:new Uu(0)},specular:{value:new Uu(1118481)},shininess:{value:30}}]),vertexShader:nd.meshphong_vert,fragmentShader:nd.meshphong_frag},standard:{uniforms:zh([id.common,id.envmap,id.aomap,id.lightmap,id.emissivemap,id.bumpmap,id.normalmap,id.displacementmap,id.roughnessmap,id.metalnessmap,id.fog,id.lights,{emissive:{value:new Uu(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:nd.meshphysical_vert,fragmentShader:nd.meshphysical_frag},toon:{uniforms:zh([id.common,id.aomap,id.lightmap,id.emissivemap,id.bumpmap,id.normalmap,id.displacementmap,id.gradientmap,id.fog,id.lights,{emissive:{value:new Uu(0)}}]),vertexShader:nd.meshtoon_vert,fragmentShader:nd.meshtoon_frag},matcap:{uniforms:zh([id.common,id.bumpmap,id.normalmap,id.displacementmap,id.fog,{matcap:{value:null}}]),vertexShader:nd.meshmatcap_vert,fragmentShader:nd.meshmatcap_frag},points:{uniforms:zh([id.points,id.fog]),vertexShader:nd.points_vert,fragmentShader:nd.points_frag},dashed:{uniforms:zh([id.common,id.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:nd.linedashed_vert,fragmentShader:nd.linedashed_frag},depth:{uniforms:zh([id.common,id.displacementmap]),vertexShader:nd.depth_vert,fragmentShader:nd.depth_frag},normal:{uniforms:zh([id.common,id.bumpmap,id.normalmap,id.displacementmap,{opacity:{value:1}}]),vertexShader:nd.meshnormal_vert,fragmentShader:nd.meshnormal_frag},sprite:{uniforms:zh([id.sprite,id.fog]),vertexShader:nd.sprite_vert,fragmentShader:nd.sprite_frag},background:{uniforms:{uvTransform:{value:new Hl},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:nd.background_vert,fragmentShader:nd.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:nd.backgroundCube_vert,fragmentShader:nd.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:nd.cube_vert,fragmentShader:nd.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:nd.equirect_vert,fragmentShader:nd.equirect_frag},distanceRGBA:{uniforms:zh([id.common,id.displacementmap,{referencePosition:{value:new bc},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:nd.distanceRGBA_vert,fragmentShader:nd.distanceRGBA_frag},shadow:{uniforms:zh([id.lights,id.fog,{color:{value:new Uu(0)},opacity:{value:1}}]),vertexShader:nd.shadow_vert,fragmentShader:nd.shadow_frag}};rd.physical={uniforms:zh([rd.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Hl},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Hl},clearcoatNormalScale:{value:new jl(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Hl},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Hl},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Hl},sheen:{value:0},sheenColor:{value:new Uu(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Hl},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Hl},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Hl},transmissionSamplerSize:{value:new jl},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Hl},attenuationDistance:{value:0},attenuationColor:{value:new Uu(0)},specularColor:{value:new Uu(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Hl},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Hl},anisotropyVector:{value:new jl},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Hl}}]),vertexShader:nd.meshphysical_vert,fragmentShader:nd.meshphysical_frag};const ad={r:0,b:0,g:0};function od(e,t,n,i,r,a,o){const s=new Uu(0);let l,c,u=!0===a?0:1,h=null,d=0,p=null;function f(t,n){t.getRGB(ad,kh(e)),i.buffers.color.setClear(ad.r,ad.g,ad.b,n,o)}return{getClearColor:function(){return s},setClearColor:function(e,t=1){s.set(e),u=t,f(s,u)},getClearAlpha:function(){return u},setClearAlpha:function(e){u=e,f(s,u)},render:function(a,A){let m=!1,g=!0===A.isScene?A.background:null;g&&g.isTexture&&(g=(A.backgroundBlurriness>0?n:t).get(g)),null===g?f(s,u):g&&g.isColor&&(f(g,1),m=!0);const v=e.xr.getEnvironmentBlendMode();"additive"===v?i.buffers.color.setClear(0,0,0,1,o):"alpha-blend"===v&&i.buffers.color.setClear(0,0,0,0,o),(e.autoClear||m)&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),g&&(g.isCubeTexture||g.mapping===Ja)?(void 0===c&&(c=new Lh(new Oh(1,1,1),new Bh({name:"BackgroundCubeMaterial",uniforms:Ph(rd.backgroundCube.uniforms),vertexShader:rd.backgroundCube.vertexShader,fragmentShader:rd.backgroundCube.fragmentShader,side:$r,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),c.geometry.deleteAttribute("uv"),c.onBeforeRender=function(e,t,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(c.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(c)),c.material.uniforms.envMap.value=g,c.material.uniforms.flipEnvMap.value=g.isCubeTexture&&!1===g.isRenderTargetTexture?-1:1,c.material.uniforms.backgroundBlurriness.value=A.backgroundBlurriness,c.material.uniforms.backgroundIntensity.value=A.backgroundIntensity,c.material.toneMapped=tc.getTransfer(g.colorSpace)!==Bs,h===g&&d===g.version&&p===e.toneMapping||(c.material.needsUpdate=!0,h=g,d=g.version,p=e.toneMapping),c.layers.enableAll(),a.unshift(c,c.geometry,c.material,0,0,null)):g&&g.isTexture&&(void 0===l&&(l=new Lh(new td(2,2),new Bh({name:"BackgroundMaterial",uniforms:Ph(rd.background.uniforms),vertexShader:rd.background.vertexShader,fragmentShader:rd.background.fragmentShader,side:Jr,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(l)),l.material.uniforms.t2D.value=g,l.material.uniforms.backgroundIntensity.value=A.backgroundIntensity,l.material.toneMapped=tc.getTransfer(g.colorSpace)!==Bs,!0===g.matrixAutoUpdate&&g.updateMatrix(),l.material.uniforms.uvTransform.value.copy(g.matrix),h===g&&d===g.version&&p===e.toneMapping||(l.material.needsUpdate=!0,h=g,d=g.version,p=e.toneMapping),l.layers.enableAll(),a.unshift(l,l.geometry,l.material,0,0,null))}}}function sd(e,t,n,i){const r=e.getParameter(e.MAX_VERTEX_ATTRIBS),a=i.isWebGL2?null:t.get("OES_vertex_array_object"),o=i.isWebGL2||null!==a,s={},l=p(null);let c=l,u=!1;function h(t){return i.isWebGL2?e.bindVertexArray(t):a.bindVertexArrayOES(t)}function d(t){return i.isWebGL2?e.deleteVertexArray(t):a.deleteVertexArrayOES(t)}function p(e){const t=[],n=[],i=[];for(let e=0;e<r;e++)t[e]=0,n[e]=0,i[e]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:t,enabledAttributes:n,attributeDivisors:i,object:e,attributes:{},index:null}}function f(){const e=c.newAttributes;for(let t=0,n=e.length;t<n;t++)e[t]=0}function A(e){m(e,0)}function m(n,r){const a=c.newAttributes,o=c.enabledAttributes,s=c.attributeDivisors;a[n]=1,0===o[n]&&(e.enableVertexAttribArray(n),o[n]=1),s[n]!==r&&((i.isWebGL2?e:t.get("ANGLE_instanced_arrays"))[i.isWebGL2?"vertexAttribDivisor":"vertexAttribDivisorANGLE"](n,r),s[n]=r)}function g(){const t=c.newAttributes,n=c.enabledAttributes;for(let i=0,r=n.length;i<r;i++)n[i]!==t[i]&&(e.disableVertexAttribArray(i),n[i]=0)}function v(t,n,i,r,a,o,s){!0===s?e.vertexAttribIPointer(t,n,i,a,o):e.vertexAttribPointer(t,n,i,r,a,o)}function y(){b(),u=!0,c!==l&&(c=l,h(c.object))}function b(){l.geometry=null,l.program=null,l.wireframe=!1}return{setup:function(r,l,d,y,b){let w=!1;if(o){const t=function(t,n,r){const o=!0===r.wireframe;let l=s[t.id];void 0===l&&(l={},s[t.id]=l);let c=l[n.id];void 0===c&&(c={},l[n.id]=c);let u=c[o];return void 0===u&&(u=p(i.isWebGL2?e.createVertexArray():a.createVertexArrayOES()),c[o]=u),u}(y,d,l);c!==t&&(c=t,h(c.object)),w=function(e,t,n,i){const r=c.attributes,a=t.attributes;let o=0;const s=n.getAttributes();for(const t in s)if(s[t].location>=0){const n=r[t];let i=a[t];if(void 0===i&&("instanceMatrix"===t&&e.instanceMatrix&&(i=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(i=e.instanceColor)),void 0===n)return!0;if(n.attribute!==i)return!0;if(i&&n.data!==i.data)return!0;o++}return c.attributesNum!==o||c.index!==i}(r,y,d,b),w&&function(e,t,n,i){const r={},a=t.attributes;let o=0;const s=n.getAttributes();for(const t in s)if(s[t].location>=0){let n=a[t];void 0===n&&("instanceMatrix"===t&&e.instanceMatrix&&(n=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(n=e.instanceColor));const i={};i.attribute=n,n&&n.data&&(i.data=n.data),r[t]=i,o++}c.attributes=r,c.attributesNum=o,c.index=i}(r,y,d,b)}else{const e=!0===l.wireframe;c.geometry===y.id&&c.program===d.id&&c.wireframe===e||(c.geometry=y.id,c.program=d.id,c.wireframe=e,w=!0)}null!==b&&n.update(b,e.ELEMENT_ARRAY_BUFFER),(w||u)&&(u=!1,function(r,a,o,s){if(!1===i.isWebGL2&&(r.isInstancedMesh||s.isInstancedBufferGeometry)&&null===t.get("ANGLE_instanced_arrays"))return;f();const l=s.attributes,c=o.getAttributes(),u=a.defaultAttributeValues;for(const t in c){const a=c[t];if(a.location>=0){let o=l[t];if(void 0===o&&("instanceMatrix"===t&&r.instanceMatrix&&(o=r.instanceMatrix),"instanceColor"===t&&r.instanceColor&&(o=r.instanceColor)),void 0!==o){const t=o.normalized,l=o.itemSize,c=n.get(o);if(void 0===c)continue;const u=c.buffer,h=c.type,d=c.bytesPerElement,p=!0===i.isWebGL2&&(h===e.INT||h===e.UNSIGNED_INT||o.gpuType===go);if(o.isInterleavedBufferAttribute){const n=o.data,i=n.stride,c=o.offset;if(n.isInstancedInterleavedBuffer){for(let e=0;e<a.locationSize;e++)m(a.location+e,n.meshPerAttribute);!0!==r.isInstancedMesh&&void 0===s._maxInstanceCount&&(s._maxInstanceCount=n.meshPerAttribute*n.count)}else for(let e=0;e<a.locationSize;e++)A(a.location+e);e.bindBuffer(e.ARRAY_BUFFER,u);for(let e=0;e<a.locationSize;e++)v(a.location+e,l/a.locationSize,h,t,i*d,(c+l/a.locationSize*e)*d,p)}else{if(o.isInstancedBufferAttribute){for(let e=0;e<a.locationSize;e++)m(a.location+e,o.meshPerAttribute);!0!==r.isInstancedMesh&&void 0===s._maxInstanceCount&&(s._maxInstanceCount=o.meshPerAttribute*o.count)}else for(let e=0;e<a.locationSize;e++)A(a.location+e);e.bindBuffer(e.ARRAY_BUFFER,u);for(let e=0;e<a.locationSize;e++)v(a.location+e,l/a.locationSize,h,t,l*d,l/a.locationSize*e*d,p)}}else if(void 0!==u){const n=u[t];if(void 0!==n)switch(n.length){case 2:e.vertexAttrib2fv(a.location,n);break;case 3:e.vertexAttrib3fv(a.location,n);break;case 4:e.vertexAttrib4fv(a.location,n);break;default:e.vertexAttrib1fv(a.location,n)}}}}g()}(r,l,d,y),null!==b&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n.get(b).buffer))},reset:y,resetDefaultState:b,dispose:function(){y();for(const e in s){const t=s[e];for(const e in t){const n=t[e];for(const e in n)d(n[e].object),delete n[e];delete t[e]}delete s[e]}},releaseStatesOfGeometry:function(e){if(void 0===s[e.id])return;const t=s[e.id];for(const e in t){const n=t[e];for(const e in n)d(n[e].object),delete n[e];delete t[e]}delete s[e.id]},releaseStatesOfProgram:function(e){for(const t in s){const n=s[t];if(void 0===n[e.id])continue;const i=n[e.id];for(const e in i)d(i[e].object),delete i[e];delete n[e.id]}},initAttributes:f,enableAttribute:A,disableUnusedAttributes:g}}function ld(e,t,n,i){const r=i.isWebGL2;let a;this.setMode=function(e){a=e},this.render=function(t,i){e.drawArrays(a,t,i),n.update(i,a,1)},this.renderInstances=function(i,o,s){if(0===s)return;let l,c;if(r)l=e,c="drawArraysInstanced";else if(l=t.get("ANGLE_instanced_arrays"),c="drawArraysInstancedANGLE",null===l)return void console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");l[c](a,i,o,s),n.update(o,a,s)}}function cd(e,t,n){let i;function r(t){if("highp"===t){if(e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision>0)return"highp";t="mediump"}return"mediump"===t&&e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}const a="undefined"!=typeof WebGL2RenderingContext&&"WebGL2RenderingContext"===e.constructor.name;let o=void 0!==n.precision?n.precision:"highp";const s=r(o);s!==o&&(console.warn("THREE.WebGLRenderer:",o,"not supported, using",s,"instead."),o=s);const l=a||t.has("WEBGL_draw_buffers"),c=!0===n.logarithmicDepthBuffer,u=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),h=e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS),d=e.getParameter(e.MAX_TEXTURE_SIZE),p=e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE),f=e.getParameter(e.MAX_VERTEX_ATTRIBS),A=e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),m=e.getParameter(e.MAX_VARYING_VECTORS),g=e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),v=h>0,y=a||t.has("OES_texture_float");return{isWebGL2:a,drawBuffers:l,getMaxAnisotropy:function(){if(void 0!==i)return i;if(!0===t.has("EXT_texture_filter_anisotropic")){const n=t.get("EXT_texture_filter_anisotropic");i=e.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else i=0;return i},getMaxPrecision:r,precision:o,logarithmicDepthBuffer:c,maxTextures:u,maxVertexTextures:h,maxTextureSize:d,maxCubemapSize:p,maxAttributes:f,maxVertexUniforms:A,maxVaryings:m,maxFragmentUniforms:g,vertexTextures:v,floatFragmentTextures:y,floatVertexTextures:v&&y,maxSamples:a?e.getParameter(e.MAX_SAMPLES):0}}function ud(e){const t=this;let n=null,i=0,r=!1,a=!1;const o=new Zh,s=new Hl,l={value:null,needsUpdate:!1};function c(e,n,i,r){const a=null!==e?e.length:0;let c=null;if(0!==a){if(c=l.value,!0!==r||null===c){const t=i+4*a,r=n.matrixWorldInverse;s.getNormalMatrix(r),(null===c||c.length<t)&&(c=new Float32Array(t));for(let t=0,n=i;t!==a;++t,n+=4)o.copy(e[t]).applyMatrix4(r,s),o.normal.toArray(c,n),c[n+3]=o.constant}l.value=c,l.needsUpdate=!0}return t.numPlanes=a,t.numIntersection=0,c}this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(e,t){const n=0!==e.length||t||0!==i||r;return r=t,i=e.length,n},this.beginShadows=function(){a=!0,c(null)},this.endShadows=function(){a=!1},this.setGlobalState=function(e,t){n=c(e,t,0)},this.setState=function(o,s,u){const h=o.clippingPlanes,d=o.clipIntersection,p=o.clipShadows,f=e.get(o);if(!r||null===h||0===h.length||a&&!p)a?c(null):(l.value!==n&&(l.value=n,l.needsUpdate=i>0),t.numPlanes=i,t.numIntersection=0);else{const e=a?0:i,t=4*e;let r=f.clippingState||null;l.value=r,r=c(h,s,t,u);for(let e=0;e!==t;++e)r[e]=n[e];f.clippingState=r,this.numIntersection=d?this.numPlanes:0,this.numPlanes+=e}}}function hd(e){let t=new WeakMap;function n(e,t){return t===qa?e.mapping=Ya:t===Ka&&(e.mapping=Za),e}function i(e){const n=e.target;n.removeEventListener("dispose",i);const r=t.get(n);void 0!==r&&(t.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture&&!1===r.isRenderTargetTexture){const a=r.mapping;if(a===qa||a===Ka){if(t.has(r))return n(t.get(r).texture,r.mapping);{const a=r.image;if(a&&a.height>0){const o=new Gh(a.height/2);return o.fromEquirectangularTexture(e,r),t.set(r,o),r.addEventListener("dispose",i),n(o.texture,r.mapping)}return null}}}return r},dispose:function(){t=new WeakMap}}}class dd extends Fh{constructor(e=-1,t=1,n=1,i=-1,r=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=i,this.near=r,this.far=a,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=null===e.view?null:Object.assign({},e.view),this}setViewOffset(e,t,n,i,r,a){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(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-e,a=n+e,o=i+t,s=i-t;if(null!==this.view&&this.view.enabled){const e=(this.right-this.left)/this.view.fullWidth/this.zoom,t=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=e*this.view.offsetX,a=r+e*this.view.width,o-=t*this.view.offsetY,s=o-t*this.view.height}this.projectionMatrix.makeOrthographic(r,a,o,s,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);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,null!==this.view&&(t.object.view=Object.assign({},this.view)),t}}const pd=[.125,.215,.35,.446,.526,.582],fd=new dd,Ad=new Uu;let md=null,gd=0,vd=0;const yd=(1+Math.sqrt(5))/2,bd=1/yd,wd=[new bc(1,1,1),new bc(-1,1,1),new bc(1,1,-1),new bc(-1,1,-1),new bc(0,yd,bd),new bc(0,yd,-bd),new bc(bd,0,yd),new bc(-bd,0,yd),new bc(yd,bd,0),new bc(-yd,bd,0)];class xd{constructor(e){this._renderer=e,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(e,t=0,n=.1,i=100){md=this._renderer.getRenderTarget(),gd=this._renderer.getActiveCubeFace(),vd=this._renderer.getActiveMipmapLevel(),this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(e,n,i,r),t>0&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=_d(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=Ed(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let e=0;e<this._lodPlanes.length;e++)this._lodPlanes[e].dispose()}_cleanup(e){this._renderer.setRenderTarget(md,gd,vd),e.scissorTest=!1,Sd(e,0,0,e.width,e.height)}_fromTexture(e,t){e.mapping===Ya||e.mapping===Za?this._setSize(0===e.image.length?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4),md=this._renderer.getRenderTarget(),gd=this._renderer.getActiveCubeFace(),vd=this._renderer.getActiveMipmapLevel();const n=t||this._allocateTargets();return this._textureToCubeUV(e,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTargets(){const e=3*Math.max(this._cubeSize,112),t=4*this._cubeSize,n={magFilter:so,minFilter:so,generateMipmaps:!1,type:bo,format:Eo,colorSpace:Ps,depthBuffer:!1},i=Md(e,t,n);if(null===this._pingPongRenderTarget||this._pingPongRenderTarget.width!==e||this._pingPongRenderTarget.height!==t){null!==this._pingPongRenderTarget&&this._dispose(),this._pingPongRenderTarget=Md(e,t,n);const{_lodMax:i}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=function(e){const t=[],n=[],i=[];let r=e;const a=e-4+1+pd.length;for(let o=0;o<a;o++){const a=Math.pow(2,r);n.push(a);let s=1/a;o>e-4?s=pd[o-e+4-1]:0===o&&(s=0),i.push(s);const l=1/(a-2),c=-l,u=1+l,h=[c,c,u,c,u,u,c,c,u,u,c,u],d=6,p=6,f=3,A=2,m=1,g=new Float32Array(f*p*d),v=new Float32Array(A*p*d),y=new Float32Array(m*p*d);for(let e=0;e<d;e++){const t=e%3*2/3-1,n=e>2?0:-1,i=[t,n,0,t+2/3,n,0,t+2/3,n+1,0,t,n,0,t+2/3,n+1,0,t,n+1,0];g.set(i,f*p*e),v.set(h,A*p*e);const r=[e,e,e,e,e,e];y.set(r,m*p*e)}const b=new fh;b.setAttribute("position",new qu(g,f)),b.setAttribute("uv",new qu(v,A)),b.setAttribute("faceIndex",new qu(y,m)),t.push(b),r>4&&r--}return{lodPlanes:t,sizeLods:n,sigmas:i}}(i)),this._blurMaterial=function(e,t,n){const i=new Float32Array(20),r=new bc(0,1,0);return new Bh({name:"SphericalGaussianBlur",defines:{n:20,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/n,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t",fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include <cube_uv_reflection_fragment>\n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t",blending:na,depthTest:!1,depthWrite:!1})}(i,e,t)}return i}_compileMaterial(e){const t=new Lh(this._lodPlanes[0],e);this._renderer.compile(t,fd)}_sceneToCubeUV(e,t,n,i){const r=new jh(90,1,t,n),a=[1,-1,1,1,1,1],o=[1,1,1,-1,-1,-1],s=this._renderer,l=s.autoClear,c=s.toneMapping;s.getClearColor(Ad),s.toneMapping=Ba,s.autoClear=!1;const u=new Hu({name:"PMREM.Background",side:$r,depthWrite:!1,depthTest:!1}),h=new Lh(new Oh,u);let d=!1;const p=e.background;p?p.isColor&&(u.color.copy(p),e.background=null,d=!0):(u.color.copy(Ad),d=!0);for(let t=0;t<6;t++){const n=t%3;0===n?(r.up.set(0,a[t],0),r.lookAt(o[t],0,0)):1===n?(r.up.set(0,0,a[t]),r.lookAt(0,o[t],0)):(r.up.set(0,a[t],0),r.lookAt(0,0,o[t]));const l=this._cubeSize;Sd(i,n*l,t>2?l:0,l,l),s.setRenderTarget(i),d&&s.render(h,r),s.render(e,r)}h.geometry.dispose(),h.material.dispose(),s.toneMapping=c,s.autoClear=l,e.background=p}_textureToCubeUV(e,t){const n=this._renderer,i=e.mapping===Ya||e.mapping===Za;i?(null===this._cubemapMaterial&&(this._cubemapMaterial=_d()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===e.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=Ed());const r=i?this._cubemapMaterial:this._equirectMaterial,a=new Lh(this._lodPlanes[0],r);r.uniforms.envMap.value=e;const o=this._cubeSize;Sd(t,0,0,3*o,2*o),n.setRenderTarget(t),n.render(a,fd)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;for(let t=1;t<this._lodPlanes.length;t++){const n=Math.sqrt(this._sigmas[t]*this._sigmas[t]-this._sigmas[t-1]*this._sigmas[t-1]),i=wd[(t-1)%wd.length];this._blur(e,t-1,t,n,i)}t.autoClear=n}_blur(e,t,n,i,r){const a=this._pingPongRenderTarget;this._halfBlur(e,a,t,n,i,"latitudinal",r),this._halfBlur(a,e,n,n,i,"longitudinal",r)}_halfBlur(e,t,n,i,r,a,o){const s=this._renderer,l=this._blurMaterial;"latitudinal"!==a&&"longitudinal"!==a&&console.error("blur direction must be either latitudinal or longitudinal!");const c=new Lh(this._lodPlanes[i],l),u=l.uniforms,h=this._sizeLods[n]-1,d=isFinite(r)?Math.PI/(2*h):2*Math.PI/39,p=r/d,f=isFinite(r)?1+Math.floor(3*p):20;f>20&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${f} samples when the maximum is set to 20`);const A=[];let m=0;for(let e=0;e<20;++e){const t=e/p,n=Math.exp(-t*t/2);A.push(n),0===e?m+=n:e<f&&(m+=2*n)}for(let e=0;e<A.length;e++)A[e]=A[e]/m;u.envMap.value=e.texture,u.samples.value=f,u.weights.value=A,u.latitudinal.value="latitudinal"===a,o&&(u.poleAxis.value=o);const{_lodMax:g}=this;u.dTheta.value=d,u.mipInt.value=g-n;const v=this._sizeLods[i];Sd(t,3*v*(i>g-4?i-g+4:0),4*(this._cubeSize-v),3*v,2*v),s.setRenderTarget(t),s.render(c,fd)}}function Md(e,t,n){const i=new pc(e,t,n);return i.texture.mapping=Ja,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function Sd(e,t,n,i,r){e.viewport.set(t,n,i,r),e.scissor.set(t,n,i,r)}function Ed(){return new Bh({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t",fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t",blending:na,depthTest:!1,depthWrite:!1})}function _d(){return new Bh({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t",fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t",blending:na,depthTest:!1,depthWrite:!1})}function Td(e){let t=new WeakMap,n=null;function i(e){const n=e.target;n.removeEventListener("dispose",i);const r=t.get(n);void 0!==r&&(t.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture){const a=r.mapping,o=a===qa||a===Ka,s=a===Ya||a===Za;if(o||s){if(r.isRenderTargetTexture&&!0===r.needsPMREMUpdate){r.needsPMREMUpdate=!1;let i=t.get(r);return null===n&&(n=new xd(e)),i=o?n.fromEquirectangular(r,i):n.fromCubemap(r,i),t.set(r,i),i.texture}if(t.has(r))return t.get(r).texture;{const a=r.image;if(o&&a&&a.height>0||s&&a&&function(e){let t=0;for(let n=0;n<6;n++)void 0!==e[n]&&t++;return 6===t}(a)){null===n&&(n=new xd(e));const a=o?n.fromEquirectangular(r):n.fromCubemap(r);return t.set(r,a),r.addEventListener("dispose",i),a.texture}return null}}}return r},dispose:function(){t=new WeakMap,null!==n&&(n.dispose(),n=null)}}}function Cd(e){const t={};function n(n){if(void 0!==t[n])return t[n];let i;switch(n){case"WEBGL_depth_texture":i=e.getExtension("WEBGL_depth_texture")||e.getExtension("MOZ_WEBGL_depth_texture")||e.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":i=e.getExtension("EXT_texture_filter_anisotropic")||e.getExtension("MOZ_EXT_texture_filter_anisotropic")||e.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":i=e.getExtension("WEBGL_compressed_texture_s3tc")||e.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":i=e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:i=e.getExtension(n)}return t[n]=i,i}return{has:function(e){return null!==n(e)},init:function(e){e.isWebGL2?n("EXT_color_buffer_float"):(n("WEBGL_depth_texture"),n("OES_texture_float"),n("OES_texture_half_float"),n("OES_texture_half_float_linear"),n("OES_standard_derivatives"),n("OES_element_index_uint"),n("OES_vertex_array_object"),n("ANGLE_instanced_arrays")),n("OES_texture_float_linear"),n("EXT_color_buffer_half_float"),n("WEBGL_multisampled_render_to_texture")},get:function(e){const t=n(e);return null===t&&console.warn("THREE.WebGLRenderer: "+e+" extension not supported."),t}}}function Id(e,t,n,i){const r={},a=new WeakMap;function o(e){const s=e.target;null!==s.index&&t.remove(s.index);for(const e in s.attributes)t.remove(s.attributes[e]);for(const e in s.morphAttributes){const n=s.morphAttributes[e];for(let e=0,i=n.length;e<i;e++)t.remove(n[e])}s.removeEventListener("dispose",o),delete r[s.id];const l=a.get(s);l&&(t.remove(l),a.delete(s)),i.releaseStatesOfGeometry(s),!0===s.isInstancedBufferGeometry&&delete s._maxInstanceCount,n.memory.geometries--}function s(e){const n=[],i=e.index,r=e.attributes.position;let o=0;if(null!==i){const e=i.array;o=i.version;for(let t=0,i=e.length;t<i;t+=3){const i=e[t+0],r=e[t+1],a=e[t+2];n.push(i,r,r,a,a,i)}}else{if(void 0===r)return;{const e=r.array;o=r.version;for(let t=0,i=e.length/3-1;t<i;t+=3){const e=t+0,i=t+1,r=t+2;n.push(e,i,i,r,r,e)}}}const s=new(Wl(n)?ih:th)(n,1);s.version=o;const l=a.get(e);l&&t.remove(l),a.set(e,s)}return{get:function(e,t){return!0===r[t.id]||(t.addEventListener("dispose",o),r[t.id]=!0,n.memory.geometries++),t},update:function(n){const i=n.attributes;for(const n in i)t.update(i[n],e.ARRAY_BUFFER);const r=n.morphAttributes;for(const n in r){const i=r[n];for(let n=0,r=i.length;n<r;n++)t.update(i[n],e.ARRAY_BUFFER)}},getWireframeAttribute:function(e){const t=a.get(e);if(t){const n=e.index;null!==n&&t.version<n.version&&s(e)}else s(e);return a.get(e)}}}function Dd(e,t,n,i){const r=i.isWebGL2;let a,o,s;this.setMode=function(e){a=e},this.setIndex=function(e){o=e.type,s=e.bytesPerElement},this.render=function(t,i){e.drawElements(a,i,o,t*s),n.update(i,a,1)},this.renderInstances=function(i,l,c){if(0===c)return;let u,h;if(r)u=e,h="drawElementsInstanced";else if(u=t.get("ANGLE_instanced_arrays"),h="drawElementsInstancedANGLE",null===u)return void console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");u[h](a,l,o,i*s,c),n.update(l,a,c)}}function Nd(e){const t={frame:0,calls:0,triangles:0,points:0,lines:0};return{memory:{geometries:0,textures:0},render:t,programs:null,autoReset:!0,reset:function(){t.calls=0,t.triangles=0,t.points=0,t.lines=0},update:function(n,i,r){switch(t.calls++,i){case e.TRIANGLES:t.triangles+=r*(n/3);break;case e.LINES:t.lines+=r*(n/2);break;case e.LINE_STRIP:t.lines+=r*(n-1);break;case e.LINE_LOOP:t.lines+=r*n;break;case e.POINTS:t.points+=r*n;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",i)}}}}function Ld(e,t){return e[0]-t[0]}function Rd(e,t){return Math.abs(t[1])-Math.abs(e[1])}function Od(e,t,n){const i={},r=new Float32Array(8),a=new WeakMap,o=new hc,s=[];for(let e=0;e<8;e++)s[e]=[e,0];return{update:function(l,c,u){const h=l.morphTargetInfluences;if(!0===t.isWebGL2){const d=c.morphAttributes.position||c.morphAttributes.normal||c.morphAttributes.color,p=void 0!==d?d.length:0;let f=a.get(c);if(void 0===f||f.count!==p){void 0!==f&&f.texture.dispose();const g=void 0!==c.morphAttributes.position,v=void 0!==c.morphAttributes.normal,y=void 0!==c.morphAttributes.color,b=c.morphAttributes.position||[],w=c.morphAttributes.normal||[],x=c.morphAttributes.color||[];let M=0;!0===g&&(M=1),!0===v&&(M=2),!0===y&&(M=3);let S=c.attributes.position.count*M,E=1;S>t.maxTextureSize&&(E=Math.ceil(S/t.maxTextureSize),S=t.maxTextureSize);const _=new Float32Array(S*E*4*p),T=new fc(_,S,E,p);T.type=yo,T.needsUpdate=!0;const C=4*M;for(let D=0;D<p;D++){const N=b[D],L=w[D],R=x[D],O=S*E*4*D;for(let P=0;P<N.count;P++){const z=P*C;!0===g&&(o.fromBufferAttribute(N,P),_[O+z+0]=o.x,_[O+z+1]=o.y,_[O+z+2]=o.z,_[O+z+3]=0),!0===v&&(o.fromBufferAttribute(L,P),_[O+z+4]=o.x,_[O+z+5]=o.y,_[O+z+6]=o.z,_[O+z+7]=0),!0===y&&(o.fromBufferAttribute(R,P),_[O+z+8]=o.x,_[O+z+9]=o.y,_[O+z+10]=o.z,_[O+z+11]=4===R.itemSize?o.w:1)}}function I(){T.dispose(),a.delete(c),c.removeEventListener("dispose",I)}f={count:p,texture:T,size:new jl(S,E)},a.set(c,f),c.addEventListener("dispose",I)}let A=0;for(let k=0;k<h.length;k++)A+=h[k];const m=c.morphTargetsRelative?1:1-A;u.getUniforms().setValue(e,"morphTargetBaseInfluence",m),u.getUniforms().setValue(e,"morphTargetInfluences",h),u.getUniforms().setValue(e,"morphTargetsTexture",f.texture,n),u.getUniforms().setValue(e,"morphTargetsTextureSize",f.size)}else{const U=void 0===h?0:h.length;let B=i[c.id];if(void 0===B||B.length!==U){B=[];for(let W=0;W<U;W++)B[W]=[W,0];i[c.id]=B}for(let G=0;G<U;G++){const Q=B[G];Q[0]=G,Q[1]=h[G]}B.sort(Rd);for(let X=0;X<8;X++)X<U&&B[X][1]?(s[X][0]=B[X][0],s[X][1]=B[X][1]):(s[X][0]=Number.MAX_SAFE_INTEGER,s[X][1]=0);s.sort(Ld);const F=c.morphAttributes.position,j=c.morphAttributes.normal;let H=0;for(let Y=0;Y<8;Y++){const Z=s[Y],q=Z[0],K=Z[1];q!==Number.MAX_SAFE_INTEGER&&K?(F&&c.getAttribute("morphTarget"+Y)!==F[q]&&c.setAttribute("morphTarget"+Y,F[q]),j&&c.getAttribute("morphNormal"+Y)!==j[q]&&c.setAttribute("morphNormal"+Y,j[q]),r[Y]=K,H+=K):(F&&!0===c.hasAttribute("morphTarget"+Y)&&c.deleteAttribute("morphTarget"+Y),j&&!0===c.hasAttribute("morphNormal"+Y)&&c.deleteAttribute("morphNormal"+Y),r[Y]=0)}const V=c.morphTargetsRelative?1:1-H;u.getUniforms().setValue(e,"morphTargetBaseInfluence",V),u.getUniforms().setValue(e,"morphTargetInfluences",r)}}}}function Pd(e,t,n,i){let r=new WeakMap;function a(e){const t=e.target;t.removeEventListener("dispose",a),n.remove(t.instanceMatrix),null!==t.instanceColor&&n.remove(t.instanceColor)}return{update:function(o){const s=i.render.frame,l=o.geometry,c=t.get(o,l);if(r.get(c)!==s&&(t.update(c),r.set(c,s)),o.isInstancedMesh&&(!1===o.hasEventListener("dispose",a)&&o.addEventListener("dispose",a),r.get(o)!==s&&(n.update(o.instanceMatrix,e.ARRAY_BUFFER),null!==o.instanceColor&&n.update(o.instanceColor,e.ARRAY_BUFFER),r.set(o,s))),o.isSkinnedMesh){const e=o.skeleton;r.get(e)!==s&&(e.update(),r.set(e,s))}return c},dispose:function(){r=new WeakMap}}}const zd=new uc,kd=new fc,Ud=new mc,Bd=new Wh,Fd=[],jd=[],Hd=new Float32Array(16),Vd=new Float32Array(9),Wd=new Float32Array(4);function Gd(e,t,n){const i=e[0];if(i<=0||i>0)return e;const r=t*n;let a=Fd[r];if(void 0===a&&(a=new Float32Array(r),Fd[r]=a),0!==t){i.toArray(a,0);for(let i=1,r=0;i!==t;++i)r+=n,e[i].toArray(a,r)}return a}function Qd(e,t){if(e.length!==t.length)return!1;for(let n=0,i=e.length;n<i;n++)if(e[n]!==t[n])return!1;return!0}function Xd(e,t){for(let n=0,i=t.length;n<i;n++)e[n]=t[n]}function Yd(e,t){let n=jd[t];void 0===n&&(n=new Int32Array(t),jd[t]=n);for(let i=0;i!==t;++i)n[i]=e.allocateTextureUnit();return n}function Zd(e,t){const n=this.cache;n[0]!==t&&(e.uniform1f(this.addr,t),n[0]=t)}function qd(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y||(e.uniform2f(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y);else{if(Qd(n,t))return;e.uniform2fv(this.addr,t),Xd(n,t)}}function Kd(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y&&n[2]===t.z||(e.uniform3f(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else if(void 0!==t.r)n[0]===t.r&&n[1]===t.g&&n[2]===t.b||(e.uniform3f(this.addr,t.r,t.g,t.b),n[0]=t.r,n[1]=t.g,n[2]=t.b);else{if(Qd(n,t))return;e.uniform3fv(this.addr,t),Xd(n,t)}}function Jd(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y&&n[2]===t.z&&n[3]===t.w||(e.uniform4f(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w);else{if(Qd(n,t))return;e.uniform4fv(this.addr,t),Xd(n,t)}}function $d(e,t){const n=this.cache,i=t.elements;if(void 0===i){if(Qd(n,t))return;e.uniformMatrix2fv(this.addr,!1,t),Xd(n,t)}else{if(Qd(n,i))return;Wd.set(i),e.uniformMatrix2fv(this.addr,!1,Wd),Xd(n,i)}}function ep(e,t){const n=this.cache,i=t.elements;if(void 0===i){if(Qd(n,t))return;e.uniformMatrix3fv(this.addr,!1,t),Xd(n,t)}else{if(Qd(n,i))return;Vd.set(i),e.uniformMatrix3fv(this.addr,!1,Vd),Xd(n,i)}}function tp(e,t){const n=this.cache,i=t.elements;if(void 0===i){if(Qd(n,t))return;e.uniformMatrix4fv(this.addr,!1,t),Xd(n,t)}else{if(Qd(n,i))return;Hd.set(i),e.uniformMatrix4fv(this.addr,!1,Hd),Xd(n,i)}}function np(e,t){const n=this.cache;n[0]!==t&&(e.uniform1i(this.addr,t),n[0]=t)}function ip(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y||(e.uniform2i(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y);else{if(Qd(n,t))return;e.uniform2iv(this.addr,t),Xd(n,t)}}function rp(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y&&n[2]===t.z||(e.uniform3i(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else{if(Qd(n,t))return;e.uniform3iv(this.addr,t),Xd(n,t)}}function ap(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y&&n[2]===t.z&&n[3]===t.w||(e.uniform4i(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w);else{if(Qd(n,t))return;e.uniform4iv(this.addr,t),Xd(n,t)}}function op(e,t){const n=this.cache;n[0]!==t&&(e.uniform1ui(this.addr,t),n[0]=t)}function sp(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y||(e.uniform2ui(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y);else{if(Qd(n,t))return;e.uniform2uiv(this.addr,t),Xd(n,t)}}function lp(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y&&n[2]===t.z||(e.uniform3ui(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else{if(Qd(n,t))return;e.uniform3uiv(this.addr,t),Xd(n,t)}}function cp(e,t){const n=this.cache;if(void 0!==t.x)n[0]===t.x&&n[1]===t.y&&n[2]===t.z&&n[3]===t.w||(e.uniform4ui(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w);else{if(Qd(n,t))return;e.uniform4uiv(this.addr,t),Xd(n,t)}}function up(e,t,n){const i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.setTexture2D(t||zd,r)}function hp(e,t,n){const i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.setTexture3D(t||Ud,r)}function dp(e,t,n){const i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.setTextureCube(t||Bd,r)}function pp(e,t,n){const i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.setTexture2DArray(t||kd,r)}function fp(e,t){e.uniform1fv(this.addr,t)}function Ap(e,t){const n=Gd(t,this.size,2);e.uniform2fv(this.addr,n)}function mp(e,t){const n=Gd(t,this.size,3);e.uniform3fv(this.addr,n)}function gp(e,t){const n=Gd(t,this.size,4);e.uniform4fv(this.addr,n)}function vp(e,t){const n=Gd(t,this.size,4);e.uniformMatrix2fv(this.addr,!1,n)}function yp(e,t){const n=Gd(t,this.size,9);e.uniformMatrix3fv(this.addr,!1,n)}function bp(e,t){const n=Gd(t,this.size,16);e.uniformMatrix4fv(this.addr,!1,n)}function wp(e,t){e.uniform1iv(this.addr,t)}function xp(e,t){e.uniform2iv(this.addr,t)}function Mp(e,t){e.uniform3iv(this.addr,t)}function Sp(e,t){e.uniform4iv(this.addr,t)}function Ep(e,t){e.uniform1uiv(this.addr,t)}function _p(e,t){e.uniform2uiv(this.addr,t)}function Tp(e,t){e.uniform3uiv(this.addr,t)}function Cp(e,t){e.uniform4uiv(this.addr,t)}function Ip(e,t,n){const i=this.cache,r=t.length,a=Yd(n,r);Qd(i,a)||(e.uniform1iv(this.addr,a),Xd(i,a));for(let e=0;e!==r;++e)n.setTexture2D(t[e]||zd,a[e])}function Dp(e,t,n){const i=this.cache,r=t.length,a=Yd(n,r);Qd(i,a)||(e.uniform1iv(this.addr,a),Xd(i,a));for(let e=0;e!==r;++e)n.setTexture3D(t[e]||Ud,a[e])}function Np(e,t,n){const i=this.cache,r=t.length,a=Yd(n,r);Qd(i,a)||(e.uniform1iv(this.addr,a),Xd(i,a));for(let e=0;e!==r;++e)n.setTextureCube(t[e]||Bd,a[e])}function Lp(e,t,n){const i=this.cache,r=t.length,a=Yd(n,r);Qd(i,a)||(e.uniform1iv(this.addr,a),Xd(i,a));for(let e=0;e!==r;++e)n.setTexture2DArray(t[e]||kd,a[e])}class Rp{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.setValue=function(e){switch(e){case 5126:return Zd;case 35664:return qd;case 35665:return Kd;case 35666:return Jd;case 35674:return $d;case 35675:return ep;case 35676:return tp;case 5124:case 35670:return np;case 35667:case 35671:return ip;case 35668:case 35672:return rp;case 35669:case 35673:return ap;case 5125:return op;case 36294:return sp;case 36295:return lp;case 36296:return cp;case 35678:case 36198:case 36298:case 36306:case 35682:return up;case 35679:case 36299:case 36307:return hp;case 35680:case 36300:case 36308:case 36293:return dp;case 36289:case 36303:case 36311:case 36292:return pp}}(t.type)}}class Op{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.size=t.size,this.setValue=function(e){switch(e){case 5126:return fp;case 35664:return Ap;case 35665:return mp;case 35666:return gp;case 35674:return vp;case 35675:return yp;case 35676:return bp;case 5124:case 35670:return wp;case 35667:case 35671:return xp;case 35668:case 35672:return Mp;case 35669:case 35673:return Sp;case 5125:return Ep;case 36294:return _p;case 36295:return Tp;case 36296:return Cp;case 35678:case 36198:case 36298:case 36306:case 35682:return Ip;case 35679:case 36299:case 36307:return Dp;case 35680:case 36300:case 36308:case 36293:return Np;case 36289:case 36303:case 36311:case 36292:return Lp}}(t.type)}}class Pp{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,n){const i=this.seq;for(let r=0,a=i.length;r!==a;++r){const a=i[r];a.setValue(e,t[a.id],n)}}}const zp=/(\w+)(\])?(\[|\.)?/g;function kp(e,t){e.seq.push(t),e.map[t.id]=t}function Up(e,t,n){const i=e.name,r=i.length;for(zp.lastIndex=0;;){const a=zp.exec(i),o=zp.lastIndex;let s=a[1];const l="]"===a[2],c=a[3];if(l&&(s|=0),void 0===c||"["===c&&o+2===r){kp(n,void 0===c?new Rp(s,e,t):new Op(s,e,t));break}{let e=n.map[s];void 0===e&&(e=new Pp(s),kp(n,e)),n=e}}}class Bp{constructor(e,t){this.seq=[],this.map={};const n=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let i=0;i<n;++i){const n=e.getActiveUniform(t,i);Up(n,e.getUniformLocation(t,n.name),this)}}setValue(e,t,n,i){const r=this.map[t];void 0!==r&&r.setValue(e,n,i)}setOptional(e,t,n){const i=t[n];void 0!==i&&this.setValue(e,n,i)}static upload(e,t,n,i){for(let r=0,a=t.length;r!==a;++r){const a=t[r],o=n[a.id];!1!==o.needsUpdate&&a.setValue(e,o.value,i)}}static seqWithValue(e,t){const n=[];for(let i=0,r=e.length;i!==r;++i){const r=e[i];r.id in t&&n.push(r)}return n}}function Fp(e,t,n){const i=e.createShader(t);return e.shaderSource(i,n),e.compileShader(i),i}const jp=37297;let Hp=0;function Vp(e,t,n){const i=e.getShaderParameter(t,e.COMPILE_STATUS),r=e.getShaderInfoLog(t).trim();if(i&&""===r)return"";const a=/ERROR: 0:(\d+)/.exec(r);if(a){const i=parseInt(a[1]);return n.toUpperCase()+"\n\n"+r+"\n\n"+function(e,t){const n=e.split("\n"),i=[],r=Math.max(t-6,0),a=Math.min(t+6,n.length);for(let e=r;e<a;e++){const r=e+1;i.push(`${r===t?">":" "} ${r}: ${n[e]}`)}return i.join("\n")}(e.getShaderSource(t),i)}return r}function Wp(e,t){const n=function(e){const t=tc.getPrimaries(tc.workingColorSpace),n=tc.getPrimaries(e);let i;switch(t===n?i="":t===js&&n===Fs?i="LinearDisplayP3ToLinearSRGB":t===Fs&&n===js&&(i="LinearSRGBToLinearDisplayP3"),e){case Ps:case ks:return[i,"LinearTransferOETF"];case Os:case zs:return[i,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",e),[i,"LinearTransferOETF"]}}(t);return`vec4 ${e}( vec4 value ) { return ${n[0]}( ${n[1]}( value ) ); }`}function Gp(e,t){let n;switch(t){case Fa:n="Linear";break;case ja:n="Reinhard";break;case Ha:n="OptimizedCineon";break;case Va:n="ACESFilmic";break;case Wa:n="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),n="Linear"}return"vec3 "+e+"( vec3 color ) { return "+n+"ToneMapping( color ); }"}function Qp(e){return""!==e}function Xp(e,t){const n=t.numSpotLightShadows+t.numSpotLightMaps-t.numSpotLightShadowsWithMaps;return e.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,t.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,n).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,t.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function Yp(e,t){return e.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}const Zp=/^[ \t]*#include +<([\w\d./]+)>/gm;function qp(e){return e.replace(Zp,Jp)}const Kp=new Map([["encodings_fragment","colorspace_fragment"],["encodings_pars_fragment","colorspace_pars_fragment"],["output_fragment","opaque_fragment"]]);function Jp(e,t){let n=nd[t];if(void 0===n){const e=Kp.get(t);if(void 0===e)throw new Error("Can not resolve #include <"+t+">");n=nd[e],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',t,e)}return qp(n)}const $p=/#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 ef(e){return e.replace($p,tf)}function tf(e,t,n,i){let r="";for(let e=parseInt(t);e<parseInt(n);e++)r+=i.replace(/\[\s*i\s*\]/g,"[ "+e+" ]").replace(/UNROLLED_LOOP_INDEX/g,e);return r}function nf(e){let t="precision "+e.precision+" float;\nprecision "+e.precision+" int;";return"highp"===e.precision?t+="\n#define HIGH_PRECISION":"mediump"===e.precision?t+="\n#define MEDIUM_PRECISION":"lowp"===e.precision&&(t+="\n#define LOW_PRECISION"),t}function rf(e,t,n,i){const r=e.getContext(),a=n.defines;let o=n.vertexShader,s=n.fragmentShader;const l=function(e){let t="SHADOWMAP_TYPE_BASIC";return e.shadowMapType===Zr?t="SHADOWMAP_TYPE_PCF":e.shadowMapType===qr?t="SHADOWMAP_TYPE_PCF_SOFT":e.shadowMapType===Kr&&(t="SHADOWMAP_TYPE_VSM"),t}(n),c=function(e){let t="ENVMAP_TYPE_CUBE";if(e.envMap)switch(e.envMapMode){case Ya:case Za:t="ENVMAP_TYPE_CUBE";break;case Ja:t="ENVMAP_TYPE_CUBE_UV"}return t}(n),u=function(e){let t="ENVMAP_MODE_REFLECTION";return e.envMap&&e.envMapMode===Za&&(t="ENVMAP_MODE_REFRACTION"),t}(n),h=function(e){let t="ENVMAP_BLENDING_NONE";if(e.envMap)switch(e.combine){case za:t="ENVMAP_BLENDING_MULTIPLY";break;case ka:t="ENVMAP_BLENDING_MIX";break;case Ua:t="ENVMAP_BLENDING_ADD"}return t}(n),d=function(e){const t=e.envMapCubeUVHeight;if(null===t)return null;const n=Math.log2(t)-2,i=1/t;return{texelWidth:1/(3*Math.max(Math.pow(2,n),112)),texelHeight:i,maxMip:n}}(n),p=n.isWebGL2?"":function(e){return[e.extensionDerivatives||e.envMapCubeUVHeight||e.bumpMap||e.normalMapTangentSpace||e.clearcoatNormalMap||e.flatShading||"physical"===e.shaderID?"#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(Qp).join("\n")}(n),f=function(e){const t=[];for(const n in e){const i=e[n];!1!==i&&t.push("#define "+n+" "+i)}return t.join("\n")}(a),A=r.createProgram();let m,g,v=n.glslVersion?"#version "+n.glslVersion+"\n":"";n.isRawShaderMaterial?(m=["#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,f].filter(Qp).join("\n"),m.length>0&&(m+="\n"),g=[p,"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,f].filter(Qp).join("\n"),g.length>0&&(g+="\n")):(m=[nf(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,f,n.instancing?"#define USE_INSTANCING":"",n.instancingColor?"#define USE_INSTANCING_COLOR":"",n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+u:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.displacementMap?"#define USE_DISPLACEMENTMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.mapUv?"#define MAP_UV "+n.mapUv:"",n.alphaMapUv?"#define ALPHAMAP_UV "+n.alphaMapUv:"",n.lightMapUv?"#define LIGHTMAP_UV "+n.lightMapUv:"",n.aoMapUv?"#define AOMAP_UV "+n.aoMapUv:"",n.emissiveMapUv?"#define EMISSIVEMAP_UV "+n.emissiveMapUv:"",n.bumpMapUv?"#define BUMPMAP_UV "+n.bumpMapUv:"",n.normalMapUv?"#define NORMALMAP_UV "+n.normalMapUv:"",n.displacementMapUv?"#define DISPLACEMENTMAP_UV "+n.displacementMapUv:"",n.metalnessMapUv?"#define METALNESSMAP_UV "+n.metalnessMapUv:"",n.roughnessMapUv?"#define ROUGHNESSMAP_UV "+n.roughnessMapUv:"",n.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+n.anisotropyMapUv:"",n.clearcoatMapUv?"#define CLEARCOATMAP_UV "+n.clearcoatMapUv:"",n.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+n.clearcoatNormalMapUv:"",n.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+n.clearcoatRoughnessMapUv:"",n.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+n.iridescenceMapUv:"",n.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+n.iridescenceThicknessMapUv:"",n.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+n.sheenColorMapUv:"",n.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+n.sheenRoughnessMapUv:"",n.specularMapUv?"#define SPECULARMAP_UV "+n.specularMapUv:"",n.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+n.specularColorMapUv:"",n.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+n.specularIntensityMapUv:"",n.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+n.transmissionMapUv:"",n.thicknessMapUv?"#define THICKNESSMAP_UV "+n.thicknessMapUv:"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&!1===n.flatShading?"#define USE_MORPHNORMALS":"",n.morphColors&&n.isWebGL2?"#define USE_MORPHCOLORS":"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+n.morphTextureStride:"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_COUNT "+n.morphTargetsCount:"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+l:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.useLegacyLights?"#define LEGACY_LIGHTS":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.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","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1","\tattribute vec2 uv1;","#endif","#ifdef USE_UV2","\tattribute vec2 uv2;","#endif","#ifdef USE_UV3","\tattribute vec2 uv3;","#endif","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(Qp).join("\n"),g=[p,nf(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,f,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+c:"",n.envMap?"#define "+u:"",n.envMap?"#define "+h:"",d?"#define CUBEUV_TEXEL_WIDTH "+d.texelWidth:"",d?"#define CUBEUV_TEXEL_HEIGHT "+d.texelHeight:"",d?"#define CUBEUV_MAX_MIP "+d.maxMip+".0":"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoat?"#define USE_CLEARCOAT":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescence?"#define USE_IRIDESCENCE":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaTest?"#define USE_ALPHATEST":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.sheen?"#define USE_SHEEN":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+l:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.useLegacyLights?"#define LEGACY_LIGHTS":"",n.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",n.toneMapping!==Ba?"#define TONE_MAPPING":"",n.toneMapping!==Ba?nd.tonemapping_pars_fragment:"",n.toneMapping!==Ba?Gp("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",n.opaque?"#define OPAQUE":"",nd.colorspace_pars_fragment,Wp("linearToOutputTexel",n.outputColorSpace),n.useDepthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(Qp).join("\n")),o=qp(o),o=Xp(o,n),o=Yp(o,n),s=qp(s),s=Xp(s,n),s=Yp(s,n),o=ef(o),s=ef(s),n.isWebGL2&&!0!==n.isRawShaderMaterial&&(v="#version 300 es\n",m=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+m,g=["precision mediump sampler2DArray;","#define varying in",n.glslVersion===xl?"":"layout(location = 0) out highp vec4 pc_fragColor;",n.glslVersion===xl?"":"#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("\n")+"\n"+g);const y=v+m+o,b=v+g+s,w=Fp(r,r.VERTEX_SHADER,y),x=Fp(r,r.FRAGMENT_SHADER,b);function M(t){if(e.debug.checkShaderErrors){const n=r.getProgramInfoLog(A).trim(),i=r.getShaderInfoLog(w).trim(),a=r.getShaderInfoLog(x).trim();let o=!0,s=!0;if(!1===r.getProgramParameter(A,r.LINK_STATUS))if(o=!1,"function"==typeof e.debug.onShaderError)e.debug.onShaderError(r,A,w,x);else{const e=Vp(r,w,"vertex"),t=Vp(r,x,"fragment");console.error("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(A,r.VALIDATE_STATUS)+"\n\nProgram Info Log: "+n+"\n"+e+"\n"+t)}else""!==n?console.warn("THREE.WebGLProgram: Program Info Log:",n):""!==i&&""!==a||(s=!1);s&&(t.diagnostics={runnable:o,programLog:n,vertexShader:{log:i,prefix:m},fragmentShader:{log:a,prefix:g}})}r.deleteShader(w),r.deleteShader(x),S=new Bp(r,A),E=function(e,t){const n={},i=e.getProgramParameter(t,e.ACTIVE_ATTRIBUTES);for(let r=0;r<i;r++){const i=e.getActiveAttrib(t,r),a=i.name;let o=1;i.type===e.FLOAT_MAT2&&(o=2),i.type===e.FLOAT_MAT3&&(o=3),i.type===e.FLOAT_MAT4&&(o=4),n[a]={type:i.type,location:e.getAttribLocation(t,a),locationSize:o}}return n}(r,A)}let S,E;r.attachShader(A,w),r.attachShader(A,x),void 0!==n.index0AttributeName?r.bindAttribLocation(A,0,n.index0AttributeName):!0===n.morphTargets&&r.bindAttribLocation(A,0,"position"),r.linkProgram(A),this.getUniforms=function(){return void 0===S&&M(this),S},this.getAttributes=function(){return void 0===E&&M(this),E};let _=!1===n.rendererExtensionParallelShaderCompile;return this.isReady=function(){return!1===_&&(_=r.getProgramParameter(A,jp)),_},this.destroy=function(){i.releaseStatesOfProgram(this),r.deleteProgram(A),this.program=void 0},this.type=n.shaderType,this.name=n.shaderName,this.id=Hp++,this.cacheKey=t,this.usedTimes=1,this.program=A,this.vertexShader=w,this.fragmentShader=x,this}let af=0;class of{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,n=e.fragmentShader,i=this._getShaderStage(t),r=this._getShaderStage(n),a=this._getShaderCacheForMaterial(e);return!1===a.has(i)&&(a.add(i),i.usedTimes++),!1===a.has(r)&&(a.add(r),r.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const e of t)e.usedTimes--,0===e.usedTimes&&this.shaderCache.delete(e.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let n=t.get(e);return void 0===n&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){const t=this.shaderCache;let n=t.get(e);return void 0===n&&(n=new sf(e),t.set(e,n)),n}}class sf{constructor(e){this.id=af++,this.code=e,this.usedTimes=0}}function lf(e,t,n,i,r,a,o){const s=new su,l=new of,c=[],u=r.isWebGL2,h=r.logarithmicDepthBuffer,d=r.vertexTextures;let p=r.precision;const f={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 A(e){return 0===e?"uv":`uv${e}`}return{getParameters:function(a,s,c,m,g){const v=m.fog,y=g.geometry,b=a.isMeshStandardMaterial?m.environment:null,w=(a.isMeshStandardMaterial?n:t).get(a.envMap||b),x=w&&w.mapping===Ja?w.image.height:null,M=f[a.type];null!==a.precision&&(p=r.getMaxPrecision(a.precision),p!==a.precision&&console.warn("THREE.WebGLProgram.getParameters:",a.precision,"not supported, using",p,"instead."));const S=y.morphAttributes.position||y.morphAttributes.normal||y.morphAttributes.color,E=void 0!==S?S.length:0;let _,T,C,I,D=0;if(void 0!==y.morphAttributes.position&&(D=1),void 0!==y.morphAttributes.normal&&(D=2),void 0!==y.morphAttributes.color&&(D=3),M){const e=rd[M];_=e.vertexShader,T=e.fragmentShader}else _=a.vertexShader,T=a.fragmentShader,l.update(a),C=l.getVertexShaderID(a),I=l.getFragmentShaderID(a);const N=e.getRenderTarget(),L=!0===g.isInstancedMesh,R=!!a.map,O=!!a.matcap,P=!!w,z=!!a.aoMap,k=!!a.lightMap,U=!!a.bumpMap,B=!!a.normalMap,F=!!a.displacementMap,j=!!a.emissiveMap,H=!!a.metalnessMap,V=!!a.roughnessMap,W=a.anisotropy>0,G=a.clearcoat>0,Q=a.iridescence>0,X=a.sheen>0,Y=a.transmission>0,Z=W&&!!a.anisotropyMap,q=G&&!!a.clearcoatMap,K=G&&!!a.clearcoatNormalMap,J=G&&!!a.clearcoatRoughnessMap,$=Q&&!!a.iridescenceMap,ee=Q&&!!a.iridescenceThicknessMap,te=X&&!!a.sheenColorMap,ne=X&&!!a.sheenRoughnessMap,ie=!!a.specularMap,re=!!a.specularColorMap,ae=!!a.specularIntensityMap,oe=Y&&!!a.transmissionMap,se=Y&&!!a.thicknessMap,le=!!a.gradientMap,ce=!!a.alphaMap,ue=a.alphaTest>0,he=!!a.alphaHash,de=!!a.extensions,pe=!!y.attributes.uv1,fe=!!y.attributes.uv2,Ae=!!y.attributes.uv3;let me=Ba;return a.toneMapped&&(null!==N&&!0!==N.isXRRenderTarget||(me=e.toneMapping)),{isWebGL2:u,shaderID:M,shaderType:a.type,shaderName:a.name,vertexShader:_,fragmentShader:T,defines:a.defines,customVertexShaderID:C,customFragmentShaderID:I,isRawShaderMaterial:!0===a.isRawShaderMaterial,glslVersion:a.glslVersion,precision:p,instancing:L,instancingColor:L&&null!==g.instanceColor,supportsVertexTextures:d,outputColorSpace:null===N?e.outputColorSpace:!0===N.isXRRenderTarget?N.texture.colorSpace:Ps,map:R,matcap:O,envMap:P,envMapMode:P&&w.mapping,envMapCubeUVHeight:x,aoMap:z,lightMap:k,bumpMap:U,normalMap:B,displacementMap:d&&F,emissiveMap:j,normalMapObjectSpace:B&&a.normalMapType===Ls,normalMapTangentSpace:B&&a.normalMapType===Ns,metalnessMap:H,roughnessMap:V,anisotropy:W,anisotropyMap:Z,clearcoat:G,clearcoatMap:q,clearcoatNormalMap:K,clearcoatRoughnessMap:J,iridescence:Q,iridescenceMap:$,iridescenceThicknessMap:ee,sheen:X,sheenColorMap:te,sheenRoughnessMap:ne,specularMap:ie,specularColorMap:re,specularIntensityMap:ae,transmission:Y,transmissionMap:oe,thicknessMap:se,gradientMap:le,opaque:!1===a.transparent&&a.blending===ia,alphaMap:ce,alphaTest:ue,alphaHash:he,combine:a.combine,mapUv:R&&A(a.map.channel),aoMapUv:z&&A(a.aoMap.channel),lightMapUv:k&&A(a.lightMap.channel),bumpMapUv:U&&A(a.bumpMap.channel),normalMapUv:B&&A(a.normalMap.channel),displacementMapUv:F&&A(a.displacementMap.channel),emissiveMapUv:j&&A(a.emissiveMap.channel),metalnessMapUv:H&&A(a.metalnessMap.channel),roughnessMapUv:V&&A(a.roughnessMap.channel),anisotropyMapUv:Z&&A(a.anisotropyMap.channel),clearcoatMapUv:q&&A(a.clearcoatMap.channel),clearcoatNormalMapUv:K&&A(a.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:J&&A(a.clearcoatRoughnessMap.channel),iridescenceMapUv:$&&A(a.iridescenceMap.channel),iridescenceThicknessMapUv:ee&&A(a.iridescenceThicknessMap.channel),sheenColorMapUv:te&&A(a.sheenColorMap.channel),sheenRoughnessMapUv:ne&&A(a.sheenRoughnessMap.channel),specularMapUv:ie&&A(a.specularMap.channel),specularColorMapUv:re&&A(a.specularColorMap.channel),specularIntensityMapUv:ae&&A(a.specularIntensityMap.channel),transmissionMapUv:oe&&A(a.transmissionMap.channel),thicknessMapUv:se&&A(a.thicknessMap.channel),alphaMapUv:ce&&A(a.alphaMap.channel),vertexTangents:!!y.attributes.tangent&&(B||W),vertexColors:a.vertexColors,vertexAlphas:!0===a.vertexColors&&!!y.attributes.color&&4===y.attributes.color.itemSize,vertexUv1s:pe,vertexUv2s:fe,vertexUv3s:Ae,pointsUvs:!0===g.isPoints&&!!y.attributes.uv&&(R||ce),fog:!!v,useFog:!0===a.fog,fogExp2:v&&v.isFogExp2,flatShading:!0===a.flatShading,sizeAttenuation:!0===a.sizeAttenuation,logarithmicDepthBuffer:h,skinning:!0===g.isSkinnedMesh,morphTargets:void 0!==y.morphAttributes.position,morphNormals:void 0!==y.morphAttributes.normal,morphColors:void 0!==y.morphAttributes.color,morphTargetsCount:E,morphTextureStride:D,numDirLights:s.directional.length,numPointLights:s.point.length,numSpotLights:s.spot.length,numSpotLightMaps:s.spotLightMap.length,numRectAreaLights:s.rectArea.length,numHemiLights:s.hemi.length,numDirLightShadows:s.directionalShadowMap.length,numPointLightShadows:s.pointShadowMap.length,numSpotLightShadows:s.spotShadowMap.length,numSpotLightShadowsWithMaps:s.numSpotLightShadowsWithMaps,numLightProbes:s.numLightProbes,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:a.dithering,shadowMapEnabled:e.shadowMap.enabled&&c.length>0,shadowMapType:e.shadowMap.type,toneMapping:me,useLegacyLights:e._useLegacyLights,decodeVideoTexture:R&&!0===a.map.isVideoTexture&&tc.getTransfer(a.map.colorSpace)===Bs,premultipliedAlpha:a.premultipliedAlpha,doubleSided:a.side===ea,flipSided:a.side===$r,useDepthPacking:a.depthPacking>=0,depthPacking:a.depthPacking||0,index0AttributeName:a.index0AttributeName,extensionDerivatives:de&&!0===a.extensions.derivatives,extensionFragDepth:de&&!0===a.extensions.fragDepth,extensionDrawBuffers:de&&!0===a.extensions.drawBuffers,extensionShaderTextureLOD:de&&!0===a.extensions.shaderTextureLOD,rendererExtensionFragDepth:u||i.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||i.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||i.has("EXT_shader_texture_lod"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:a.customProgramCacheKey()}},getProgramCacheKey:function(t){const n=[];if(t.shaderID?n.push(t.shaderID):(n.push(t.customVertexShaderID),n.push(t.customFragmentShaderID)),void 0!==t.defines)for(const e in t.defines)n.push(e),n.push(t.defines[e]);return!1===t.isRawShaderMaterial&&(function(e,t){e.push(t.precision),e.push(t.outputColorSpace),e.push(t.envMapMode),e.push(t.envMapCubeUVHeight),e.push(t.mapUv),e.push(t.alphaMapUv),e.push(t.lightMapUv),e.push(t.aoMapUv),e.push(t.bumpMapUv),e.push(t.normalMapUv),e.push(t.displacementMapUv),e.push(t.emissiveMapUv),e.push(t.metalnessMapUv),e.push(t.roughnessMapUv),e.push(t.anisotropyMapUv),e.push(t.clearcoatMapUv),e.push(t.clearcoatNormalMapUv),e.push(t.clearcoatRoughnessMapUv),e.push(t.iridescenceMapUv),e.push(t.iridescenceThicknessMapUv),e.push(t.sheenColorMapUv),e.push(t.sheenRoughnessMapUv),e.push(t.specularMapUv),e.push(t.specularColorMapUv),e.push(t.specularIntensityMapUv),e.push(t.transmissionMapUv),e.push(t.thicknessMapUv),e.push(t.combine),e.push(t.fogExp2),e.push(t.sizeAttenuation),e.push(t.morphTargetsCount),e.push(t.morphAttributeCount),e.push(t.numDirLights),e.push(t.numPointLights),e.push(t.numSpotLights),e.push(t.numSpotLightMaps),e.push(t.numHemiLights),e.push(t.numRectAreaLights),e.push(t.numDirLightShadows),e.push(t.numPointLightShadows),e.push(t.numSpotLightShadows),e.push(t.numSpotLightShadowsWithMaps),e.push(t.numLightProbes),e.push(t.shadowMapType),e.push(t.toneMapping),e.push(t.numClippingPlanes),e.push(t.numClipIntersection),e.push(t.depthPacking)}(n,t),function(e,t){s.disableAll(),t.isWebGL2&&s.enable(0),t.supportsVertexTextures&&s.enable(1),t.instancing&&s.enable(2),t.instancingColor&&s.enable(3),t.matcap&&s.enable(4),t.envMap&&s.enable(5),t.normalMapObjectSpace&&s.enable(6),t.normalMapTangentSpace&&s.enable(7),t.clearcoat&&s.enable(8),t.iridescence&&s.enable(9),t.alphaTest&&s.enable(10),t.vertexColors&&s.enable(11),t.vertexAlphas&&s.enable(12),t.vertexUv1s&&s.enable(13),t.vertexUv2s&&s.enable(14),t.vertexUv3s&&s.enable(15),t.vertexTangents&&s.enable(16),t.anisotropy&&s.enable(17),t.alphaHash&&s.enable(18),e.push(s.mask),s.disableAll(),t.fog&&s.enable(0),t.useFog&&s.enable(1),t.flatShading&&s.enable(2),t.logarithmicDepthBuffer&&s.enable(3),t.skinning&&s.enable(4),t.morphTargets&&s.enable(5),t.morphNormals&&s.enable(6),t.morphColors&&s.enable(7),t.premultipliedAlpha&&s.enable(8),t.shadowMapEnabled&&s.enable(9),t.useLegacyLights&&s.enable(10),t.doubleSided&&s.enable(11),t.flipSided&&s.enable(12),t.useDepthPacking&&s.enable(13),t.dithering&&s.enable(14),t.transmission&&s.enable(15),t.sheen&&s.enable(16),t.opaque&&s.enable(17),t.pointsUvs&&s.enable(18),t.decodeVideoTexture&&s.enable(19),e.push(s.mask)}(n,t),n.push(e.outputColorSpace)),n.push(t.customProgramCacheKey),n.join()},getUniforms:function(e){const t=f[e.type];let n;if(t){const e=rd[t];n=Uh.clone(e.uniforms)}else n=e.uniforms;return n},acquireProgram:function(t,n){let i;for(let e=0,t=c.length;e<t;e++){const t=c[e];if(t.cacheKey===n){i=t,++i.usedTimes;break}}return void 0===i&&(i=new rf(e,n,t,a),c.push(i)),i},releaseProgram:function(e){if(0==--e.usedTimes){const t=c.indexOf(e);c[t]=c[c.length-1],c.pop(),e.destroy()}},releaseShaderCache:function(e){l.remove(e)},programs:c,dispose:function(){l.dispose()}}}function cf(){let e=new WeakMap;return{get:function(t){let n=e.get(t);return void 0===n&&(n={},e.set(t,n)),n},remove:function(t){e.delete(t)},update:function(t,n,i){e.get(t)[n]=i},dispose:function(){e=new WeakMap}}}function uf(e,t){return e.groupOrder!==t.groupOrder?e.groupOrder-t.groupOrder:e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.material.id!==t.material.id?e.material.id-t.material.id:e.z!==t.z?e.z-t.z:e.id-t.id}function hf(e,t){return e.groupOrder!==t.groupOrder?e.groupOrder-t.groupOrder:e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.z!==t.z?t.z-e.z:e.id-t.id}function df(){const e=[];let t=0;const n=[],i=[],r=[];function a(n,i,r,a,o,s){let l=e[t];return void 0===l?(l={id:n.id,object:n,geometry:i,material:r,groupOrder:a,renderOrder:n.renderOrder,z:o,group:s},e[t]=l):(l.id=n.id,l.object=n,l.geometry=i,l.material=r,l.groupOrder=a,l.renderOrder=n.renderOrder,l.z=o,l.group=s),t++,l}return{opaque:n,transmissive:i,transparent:r,init:function(){t=0,n.length=0,i.length=0,r.length=0},push:function(e,t,o,s,l,c){const u=a(e,t,o,s,l,c);o.transmission>0?i.push(u):!0===o.transparent?r.push(u):n.push(u)},unshift:function(e,t,o,s,l,c){const u=a(e,t,o,s,l,c);o.transmission>0?i.unshift(u):!0===o.transparent?r.unshift(u):n.unshift(u)},finish:function(){for(let n=t,i=e.length;n<i;n++){const t=e[n];if(null===t.id)break;t.id=null,t.object=null,t.geometry=null,t.material=null,t.group=null}},sort:function(e,t){n.length>1&&n.sort(e||uf),i.length>1&&i.sort(t||hf),r.length>1&&r.sort(t||hf)}}}function pf(){let e=new WeakMap;return{get:function(t,n){const i=e.get(t);let r;return void 0===i?(r=new df,e.set(t,[r])):n>=i.length?(r=new df,i.push(r)):r=i[n],r},dispose:function(){e=new WeakMap}}}function ff(){const e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let n;switch(t.type){case"DirectionalLight":n={direction:new bc,color:new Uu};break;case"SpotLight":n={position:new bc,direction:new bc,color:new Uu,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":n={position:new bc,color:new Uu,distance:0,decay:0};break;case"HemisphereLight":n={direction:new bc,skyColor:new Uu,groundColor:new Uu};break;case"RectAreaLight":n={color:new Uu,position:new bc,halfWidth:new bc,halfHeight:new bc}}return e[t.id]=n,n}}}let Af=0;function mf(e,t){return(t.castShadow?2:0)-(e.castShadow?2:0)+(t.map?1:0)-(e.map?1:0)}function gf(e,t){const n=new ff,i=function(){const e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let n;switch(t.type){case"DirectionalLight":case"SpotLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new jl};break;case"PointLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new jl,shadowCameraNear:1,shadowCameraFar:1e3}}return e[t.id]=n,n}}}(),r={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 e=0;e<9;e++)r.probe.push(new bc);const a=new bc,o=new qc,s=new qc;return{setup:function(a,o){let s=0,l=0,c=0;for(let e=0;e<9;e++)r.probe[e].set(0,0,0);let u=0,h=0,d=0,p=0,f=0,A=0,m=0,g=0,v=0,y=0,b=0;a.sort(mf);const w=!0===o?Math.PI:1;for(let e=0,t=a.length;e<t;e++){const t=a[e],o=t.color,x=t.intensity,M=t.distance,S=t.shadow&&t.shadow.map?t.shadow.map.texture:null;if(t.isAmbientLight)s+=o.r*x*w,l+=o.g*x*w,c+=o.b*x*w;else if(t.isLightProbe){for(let e=0;e<9;e++)r.probe[e].addScaledVector(t.sh.coefficients[e],x);b++}else if(t.isDirectionalLight){const e=n.get(t);if(e.color.copy(t.color).multiplyScalar(t.intensity*w),t.castShadow){const e=t.shadow,n=i.get(t);n.shadowBias=e.bias,n.shadowNormalBias=e.normalBias,n.shadowRadius=e.radius,n.shadowMapSize=e.mapSize,r.directionalShadow[u]=n,r.directionalShadowMap[u]=S,r.directionalShadowMatrix[u]=t.shadow.matrix,A++}r.directional[u]=e,u++}else if(t.isSpotLight){const e=n.get(t);e.position.setFromMatrixPosition(t.matrixWorld),e.color.copy(o).multiplyScalar(x*w),e.distance=M,e.coneCos=Math.cos(t.angle),e.penumbraCos=Math.cos(t.angle*(1-t.penumbra)),e.decay=t.decay,r.spot[d]=e;const a=t.shadow;if(t.map&&(r.spotLightMap[v]=t.map,v++,a.updateMatrices(t),t.castShadow&&y++),r.spotLightMatrix[d]=a.matrix,t.castShadow){const e=i.get(t);e.shadowBias=a.bias,e.shadowNormalBias=a.normalBias,e.shadowRadius=a.radius,e.shadowMapSize=a.mapSize,r.spotShadow[d]=e,r.spotShadowMap[d]=S,g++}d++}else if(t.isRectAreaLight){const e=n.get(t);e.color.copy(o).multiplyScalar(x),e.halfWidth.set(.5*t.width,0,0),e.halfHeight.set(0,.5*t.height,0),r.rectArea[p]=e,p++}else if(t.isPointLight){const e=n.get(t);if(e.color.copy(t.color).multiplyScalar(t.intensity*w),e.distance=t.distance,e.decay=t.decay,t.castShadow){const e=t.shadow,n=i.get(t);n.shadowBias=e.bias,n.shadowNormalBias=e.normalBias,n.shadowRadius=e.radius,n.shadowMapSize=e.mapSize,n.shadowCameraNear=e.camera.near,n.shadowCameraFar=e.camera.far,r.pointShadow[h]=n,r.pointShadowMap[h]=S,r.pointShadowMatrix[h]=t.shadow.matrix,m++}r.point[h]=e,h++}else if(t.isHemisphereLight){const e=n.get(t);e.skyColor.copy(t.color).multiplyScalar(x*w),e.groundColor.copy(t.groundColor).multiplyScalar(x*w),r.hemi[f]=e,f++}}p>0&&(t.isWebGL2||!0===e.has("OES_texture_float_linear")?(r.rectAreaLTC1=id.LTC_FLOAT_1,r.rectAreaLTC2=id.LTC_FLOAT_2):!0===e.has("OES_texture_half_float_linear")?(r.rectAreaLTC1=id.LTC_HALF_1,r.rectAreaLTC2=id.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),r.ambient[0]=s,r.ambient[1]=l,r.ambient[2]=c;const x=r.hash;x.directionalLength===u&&x.pointLength===h&&x.spotLength===d&&x.rectAreaLength===p&&x.hemiLength===f&&x.numDirectionalShadows===A&&x.numPointShadows===m&&x.numSpotShadows===g&&x.numSpotMaps===v&&x.numLightProbes===b||(r.directional.length=u,r.spot.length=d,r.rectArea.length=p,r.point.length=h,r.hemi.length=f,r.directionalShadow.length=A,r.directionalShadowMap.length=A,r.pointShadow.length=m,r.pointShadowMap.length=m,r.spotShadow.length=g,r.spotShadowMap.length=g,r.directionalShadowMatrix.length=A,r.pointShadowMatrix.length=m,r.spotLightMatrix.length=g+v-y,r.spotLightMap.length=v,r.numSpotLightShadowsWithMaps=y,r.numLightProbes=b,x.directionalLength=u,x.pointLength=h,x.spotLength=d,x.rectAreaLength=p,x.hemiLength=f,x.numDirectionalShadows=A,x.numPointShadows=m,x.numSpotShadows=g,x.numSpotMaps=v,x.numLightProbes=b,r.version=Af++)},setupView:function(e,t){let n=0,i=0,l=0,c=0,u=0;const h=t.matrixWorldInverse;for(let t=0,d=e.length;t<d;t++){const d=e[t];if(d.isDirectionalLight){const e=r.directional[n];e.direction.setFromMatrixPosition(d.matrixWorld),a.setFromMatrixPosition(d.target.matrixWorld),e.direction.sub(a),e.direction.transformDirection(h),n++}else if(d.isSpotLight){const e=r.spot[l];e.position.setFromMatrixPosition(d.matrixWorld),e.position.applyMatrix4(h),e.direction.setFromMatrixPosition(d.matrixWorld),a.setFromMatrixPosition(d.target.matrixWorld),e.direction.sub(a),e.direction.transformDirection(h),l++}else if(d.isRectAreaLight){const e=r.rectArea[c];e.position.setFromMatrixPosition(d.matrixWorld),e.position.applyMatrix4(h),s.identity(),o.copy(d.matrixWorld),o.premultiply(h),s.extractRotation(o),e.halfWidth.set(.5*d.width,0,0),e.halfHeight.set(0,.5*d.height,0),e.halfWidth.applyMatrix4(s),e.halfHeight.applyMatrix4(s),c++}else if(d.isPointLight){const e=r.point[i];e.position.setFromMatrixPosition(d.matrixWorld),e.position.applyMatrix4(h),i++}else if(d.isHemisphereLight){const e=r.hemi[u];e.direction.setFromMatrixPosition(d.matrixWorld),e.direction.transformDirection(h),u++}}},state:r}}function vf(e,t){const n=new gf(e,t),i=[],r=[];return{init:function(){i.length=0,r.length=0},state:{lightsArray:i,shadowsArray:r,lights:n},setupLights:function(e){n.setup(i,e)},setupLightsView:function(e){n.setupView(i,e)},pushLight:function(e){i.push(e)},pushShadow:function(e){r.push(e)}}}function yf(e,t){let n=new WeakMap;return{get:function(i,r=0){const a=n.get(i);let o;return void 0===a?(o=new vf(e,t),n.set(i,[o])):r>=a.length?(o=new vf(e,t),a.push(o)):o=a[r],o},dispose:function(){n=new WeakMap}}}class bf extends ju{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=Is,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class wf extends ju{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}function xf(e,t,n){let i=new Jh;const r=new jl,a=new jl,o=new hc,s=new bf({depthPacking:Ds}),l=new wf,c={},u=n.maxTextureSize,h={[Jr]:$r,[$r]:Jr,[ea]:ea},d=new Bh({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new jl},radius:{value:4}},vertexShader:"void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include <packing>\nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),p=d.clone();p.defines.HORIZONTAL_PASS=1;const f=new fh;f.setAttribute("position",new qu(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const A=new Lh(f,d),m=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Zr;let g=this.type;function v(n,i){const a=t.update(A);d.defines.VSM_SAMPLES!==n.blurSamples&&(d.defines.VSM_SAMPLES=n.blurSamples,p.defines.VSM_SAMPLES=n.blurSamples,d.needsUpdate=!0,p.needsUpdate=!0),null===n.mapPass&&(n.mapPass=new pc(r.x,r.y)),d.uniforms.shadow_pass.value=n.map.texture,d.uniforms.resolution.value=n.mapSize,d.uniforms.radius.value=n.radius,e.setRenderTarget(n.mapPass),e.clear(),e.renderBufferDirect(i,null,a,d,A,null),p.uniforms.shadow_pass.value=n.mapPass.texture,p.uniforms.resolution.value=n.mapSize,p.uniforms.radius.value=n.radius,e.setRenderTarget(n.map),e.clear(),e.renderBufferDirect(i,null,a,p,A,null)}function y(t,n,i,r){let a=null;const o=!0===i.isPointLight?t.customDistanceMaterial:t.customDepthMaterial;if(void 0!==o)a=o;else if(a=!0===i.isPointLight?l:s,e.localClippingEnabled&&!0===n.clipShadows&&Array.isArray(n.clippingPlanes)&&0!==n.clippingPlanes.length||n.displacementMap&&0!==n.displacementScale||n.alphaMap&&n.alphaTest>0||n.map&&n.alphaTest>0){const e=a.uuid,t=n.uuid;let i=c[e];void 0===i&&(i={},c[e]=i);let r=i[t];void 0===r&&(r=a.clone(),i[t]=r),a=r}return a.visible=n.visible,a.wireframe=n.wireframe,a.side=r===Kr?null!==n.shadowSide?n.shadowSide:n.side:null!==n.shadowSide?n.shadowSide:h[n.side],a.alphaMap=n.alphaMap,a.alphaTest=n.alphaTest,a.map=n.map,a.clipShadows=n.clipShadows,a.clippingPlanes=n.clippingPlanes,a.clipIntersection=n.clipIntersection,a.displacementMap=n.displacementMap,a.displacementScale=n.displacementScale,a.displacementBias=n.displacementBias,a.wireframeLinewidth=n.wireframeLinewidth,a.linewidth=n.linewidth,!0===i.isPointLight&&!0===a.isMeshDistanceMaterial&&(e.properties.get(a).light=i),a}function b(n,r,a,o,s){if(!1===n.visible)return;if(n.layers.test(r.layers)&&(n.isMesh||n.isLine||n.isPoints)&&(n.castShadow||n.receiveShadow&&s===Kr)&&(!n.frustumCulled||i.intersectsObject(n))){n.modelViewMatrix.multiplyMatrices(a.matrixWorldInverse,n.matrixWorld);const i=t.update(n),r=n.material;if(Array.isArray(r)){const t=i.groups;for(let l=0,c=t.length;l<c;l++){const c=t[l],u=r[c.materialIndex];if(u&&u.visible){const t=y(n,u,o,s);e.renderBufferDirect(a,null,i,t,n,c)}}}else if(r.visible){const t=y(n,r,o,s);e.renderBufferDirect(a,null,i,t,n,null)}}const l=n.children;for(let e=0,t=l.length;e<t;e++)b(l[e],r,a,o,s)}this.render=function(t,n,s){if(!1===m.enabled)return;if(!1===m.autoUpdate&&!1===m.needsUpdate)return;if(0===t.length)return;const l=e.getRenderTarget(),c=e.getActiveCubeFace(),h=e.getActiveMipmapLevel(),d=e.state;d.setBlending(na),d.buffers.color.setClear(1,1,1,1),d.buffers.depth.setTest(!0),d.setScissorTest(!1);const p=g!==Kr&&this.type===Kr,f=g===Kr&&this.type!==Kr;for(let l=0,c=t.length;l<c;l++){const c=t[l],h=c.shadow;if(void 0===h){console.warn("THREE.WebGLShadowMap:",c,"has no shadow.");continue}if(!1===h.autoUpdate&&!1===h.needsUpdate)continue;r.copy(h.mapSize);const A=h.getFrameExtents();if(r.multiply(A),a.copy(h.mapSize),(r.x>u||r.y>u)&&(r.x>u&&(a.x=Math.floor(u/A.x),r.x=a.x*A.x,h.mapSize.x=a.x),r.y>u&&(a.y=Math.floor(u/A.y),r.y=a.y*A.y,h.mapSize.y=a.y)),null===h.map||!0===p||!0===f){const e=this.type!==Kr?{minFilter:no,magFilter:no}:{};null!==h.map&&h.map.dispose(),h.map=new pc(r.x,r.y,e),h.map.texture.name=c.name+".shadowMap",h.camera.updateProjectionMatrix()}e.setRenderTarget(h.map),e.clear();const m=h.getViewportCount();for(let e=0;e<m;e++){const t=h.getViewport(e);o.set(a.x*t.x,a.y*t.y,a.x*t.z,a.y*t.w),d.viewport(o),h.updateMatrices(c,e),i=h.getFrustum(),b(n,s,h.camera,c,this.type)}!0!==h.isPointLightShadow&&this.type===Kr&&v(h,s),h.needsUpdate=!1}g=this.type,m.needsUpdate=!1,e.setRenderTarget(l,c,h)}}function Mf(e,t,n){const i=n.isWebGL2,r=new function(){let t=!1;const n=new hc;let i=null;const r=new hc(0,0,0,0);return{setMask:function(n){i===n||t||(e.colorMask(n,n,n,n),i=n)},setLocked:function(e){t=e},setClear:function(t,i,a,o,s){!0===s&&(t*=o,i*=o,a*=o),n.set(t,i,a,o),!1===r.equals(n)&&(e.clearColor(t,i,a,o),r.copy(n))},reset:function(){t=!1,i=null,r.set(-1,0,0,0)}}},a=new function(){let t=!1,n=null,i=null,r=null;return{setTest:function(t){t?H(e.DEPTH_TEST):V(e.DEPTH_TEST)},setMask:function(i){n===i||t||(e.depthMask(i),n=i)},setFunc:function(t){if(i!==t){switch(t){case Ca:e.depthFunc(e.NEVER);break;case Ia:e.depthFunc(e.ALWAYS);break;case Da:e.depthFunc(e.LESS);break;case Na:e.depthFunc(e.LEQUAL);break;case La:e.depthFunc(e.EQUAL);break;case Ra:e.depthFunc(e.GEQUAL);break;case Oa:e.depthFunc(e.GREATER);break;case Pa:e.depthFunc(e.NOTEQUAL);break;default:e.depthFunc(e.LEQUAL)}i=t}},setLocked:function(e){t=e},setClear:function(t){r!==t&&(e.clearDepth(t),r=t)},reset:function(){t=!1,n=null,i=null,r=null}}},o=new function(){let t=!1,n=null,i=null,r=null,a=null,o=null,s=null,l=null,c=null;return{setTest:function(n){t||(n?H(e.STENCIL_TEST):V(e.STENCIL_TEST))},setMask:function(i){n===i||t||(e.stencilMask(i),n=i)},setFunc:function(t,n,o){i===t&&r===n&&a===o||(e.stencilFunc(t,n,o),i=t,r=n,a=o)},setOp:function(t,n,i){o===t&&s===n&&l===i||(e.stencilOp(t,n,i),o=t,s=n,l=i)},setLocked:function(e){t=e},setClear:function(t){c!==t&&(e.clearStencil(t),c=t)},reset:function(){t=!1,n=null,i=null,r=null,a=null,o=null,s=null,l=null,c=null}}},s=new WeakMap,l=new WeakMap;let c={},u={},h=new WeakMap,d=[],p=null,f=!1,A=null,m=null,g=null,v=null,y=null,b=null,w=null,x=new Uu(0,0,0),M=0,S=!1,E=null,_=null,T=null,C=null,I=null;const D=e.getParameter(e.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let N=!1,L=0;const R=e.getParameter(e.VERSION);-1!==R.indexOf("WebGL")?(L=parseFloat(/^WebGL (\d)/.exec(R)[1]),N=L>=1):-1!==R.indexOf("OpenGL ES")&&(L=parseFloat(/^OpenGL ES (\d)/.exec(R)[1]),N=L>=2);let O=null,P={};const z=e.getParameter(e.SCISSOR_BOX),k=e.getParameter(e.VIEWPORT),U=(new hc).fromArray(z),B=(new hc).fromArray(k);function F(t,n,r,a){const o=new Uint8Array(4),s=e.createTexture();e.bindTexture(t,s),e.texParameteri(t,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(t,e.TEXTURE_MAG_FILTER,e.NEAREST);for(let s=0;s<r;s++)!i||t!==e.TEXTURE_3D&&t!==e.TEXTURE_2D_ARRAY?e.texImage2D(n+s,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,o):e.texImage3D(n,0,e.RGBA,1,1,a,0,e.RGBA,e.UNSIGNED_BYTE,o);return s}const j={};function H(t){!0!==c[t]&&(e.enable(t),c[t]=!0)}function V(t){!1!==c[t]&&(e.disable(t),c[t]=!1)}j[e.TEXTURE_2D]=F(e.TEXTURE_2D,e.TEXTURE_2D,1),j[e.TEXTURE_CUBE_MAP]=F(e.TEXTURE_CUBE_MAP,e.TEXTURE_CUBE_MAP_POSITIVE_X,6),i&&(j[e.TEXTURE_2D_ARRAY]=F(e.TEXTURE_2D_ARRAY,e.TEXTURE_2D_ARRAY,1,1),j[e.TEXTURE_3D]=F(e.TEXTURE_3D,e.TEXTURE_3D,1,1)),r.setClear(0,0,0,1),a.setClear(1),o.setClear(0),H(e.DEPTH_TEST),a.setFunc(Na),X(!1),Y(Gr),H(e.CULL_FACE),Q(na);const W={[la]:e.FUNC_ADD,[ca]:e.FUNC_SUBTRACT,[ua]:e.FUNC_REVERSE_SUBTRACT};if(i)W[ha]=e.MIN,W[da]=e.MAX;else{const e=t.get("EXT_blend_minmax");null!==e&&(W[ha]=e.MIN_EXT,W[da]=e.MAX_EXT)}const G={[pa]:e.ZERO,[fa]:e.ONE,[Aa]:e.SRC_COLOR,[ga]:e.SRC_ALPHA,[Ma]:e.SRC_ALPHA_SATURATE,[wa]:e.DST_COLOR,[ya]:e.DST_ALPHA,[ma]:e.ONE_MINUS_SRC_COLOR,[va]:e.ONE_MINUS_SRC_ALPHA,[xa]:e.ONE_MINUS_DST_COLOR,[ba]:e.ONE_MINUS_DST_ALPHA,[Sa]:e.CONSTANT_COLOR,[Ea]:e.ONE_MINUS_CONSTANT_COLOR,[_a]:e.CONSTANT_ALPHA,[Ta]:e.ONE_MINUS_CONSTANT_ALPHA};function Q(t,n,i,r,a,o,s,l,c,u){if(t!==na){if(!1===f&&(H(e.BLEND),f=!0),t===sa)a=a||n,o=o||i,s=s||r,n===m&&a===y||(e.blendEquationSeparate(W[n],W[a]),m=n,y=a),i===g&&r===v&&o===b&&s===w||(e.blendFuncSeparate(G[i],G[r],G[o],G[s]),g=i,v=r,b=o,w=s),!1!==l.equals(x)&&c===M||(e.blendColor(l.r,l.g,l.b,c),x.copy(l),M=c),A=t,S=!1;else if(t!==A||u!==S){if(m===la&&y===la||(e.blendEquation(e.FUNC_ADD),m=la,y=la),u)switch(t){case ia:e.blendFuncSeparate(e.ONE,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA);break;case ra:e.blendFunc(e.ONE,e.ONE);break;case aa:e.blendFuncSeparate(e.ZERO,e.ONE_MINUS_SRC_COLOR,e.ZERO,e.ONE);break;case oa:e.blendFuncSeparate(e.ZERO,e.SRC_COLOR,e.ZERO,e.SRC_ALPHA);break;default:console.error("THREE.WebGLState: Invalid blending: ",t)}else switch(t){case ia:e.blendFuncSeparate(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA);break;case ra:e.blendFunc(e.SRC_ALPHA,e.ONE);break;case aa:e.blendFuncSeparate(e.ZERO,e.ONE_MINUS_SRC_COLOR,e.ZERO,e.ONE);break;case oa:e.blendFunc(e.ZERO,e.SRC_COLOR);break;default:console.error("THREE.WebGLState: Invalid blending: ",t)}g=null,v=null,b=null,w=null,x.set(0,0,0),M=0,A=t,S=u}}else!0===f&&(V(e.BLEND),f=!1)}function X(t){E!==t&&(t?e.frontFace(e.CW):e.frontFace(e.CCW),E=t)}function Y(t){t!==Wr?(H(e.CULL_FACE),t!==_&&(t===Gr?e.cullFace(e.BACK):t===Qr?e.cullFace(e.FRONT):e.cullFace(e.FRONT_AND_BACK))):V(e.CULL_FACE),_=t}function Z(t,n,i){t?(H(e.POLYGON_OFFSET_FILL),C===n&&I===i||(e.polygonOffset(n,i),C=n,I=i)):V(e.POLYGON_OFFSET_FILL)}return{buffers:{color:r,depth:a,stencil:o},enable:H,disable:V,bindFramebuffer:function(t,n){return u[t]!==n&&(e.bindFramebuffer(t,n),u[t]=n,i&&(t===e.DRAW_FRAMEBUFFER&&(u[e.FRAMEBUFFER]=n),t===e.FRAMEBUFFER&&(u[e.DRAW_FRAMEBUFFER]=n)),!0)},drawBuffers:function(i,r){let a=d,o=!1;if(i)if(a=h.get(r),void 0===a&&(a=[],h.set(r,a)),i.isWebGLMultipleRenderTargets){const t=i.texture;if(a.length!==t.length||a[0]!==e.COLOR_ATTACHMENT0){for(let n=0,i=t.length;n<i;n++)a[n]=e.COLOR_ATTACHMENT0+n;a.length=t.length,o=!0}}else a[0]!==e.COLOR_ATTACHMENT0&&(a[0]=e.COLOR_ATTACHMENT0,o=!0);else a[0]!==e.BACK&&(a[0]=e.BACK,o=!0);o&&(n.isWebGL2?e.drawBuffers(a):t.get("WEBGL_draw_buffers").drawBuffersWEBGL(a))},useProgram:function(t){return p!==t&&(e.useProgram(t),p=t,!0)},setBlending:Q,setMaterial:function(t,n){t.side===ea?V(e.CULL_FACE):H(e.CULL_FACE);let i=t.side===$r;n&&(i=!i),X(i),t.blending===ia&&!1===t.transparent?Q(na):Q(t.blending,t.blendEquation,t.blendSrc,t.blendDst,t.blendEquationAlpha,t.blendSrcAlpha,t.blendDstAlpha,t.blendColor,t.blendAlpha,t.premultipliedAlpha),a.setFunc(t.depthFunc),a.setTest(t.depthTest),a.setMask(t.depthWrite),r.setMask(t.colorWrite);const s=t.stencilWrite;o.setTest(s),s&&(o.setMask(t.stencilWriteMask),o.setFunc(t.stencilFunc,t.stencilRef,t.stencilFuncMask),o.setOp(t.stencilFail,t.stencilZFail,t.stencilZPass)),Z(t.polygonOffset,t.polygonOffsetFactor,t.polygonOffsetUnits),!0===t.alphaToCoverage?H(e.SAMPLE_ALPHA_TO_COVERAGE):V(e.SAMPLE_ALPHA_TO_COVERAGE)},setFlipSided:X,setCullFace:Y,setLineWidth:function(t){t!==T&&(N&&e.lineWidth(t),T=t)},setPolygonOffset:Z,setScissorTest:function(t){t?H(e.SCISSOR_TEST):V(e.SCISSOR_TEST)},activeTexture:function(t){void 0===t&&(t=e.TEXTURE0+D-1),O!==t&&(e.activeTexture(t),O=t)},bindTexture:function(t,n,i){void 0===i&&(i=null===O?e.TEXTURE0+D-1:O);let r=P[i];void 0===r&&(r={type:void 0,texture:void 0},P[i]=r),r.type===t&&r.texture===n||(O!==i&&(e.activeTexture(i),O=i),e.bindTexture(t,n||j[t]),r.type=t,r.texture=n)},unbindTexture:function(){const t=P[O];void 0!==t&&void 0!==t.type&&(e.bindTexture(t.type,null),t.type=void 0,t.texture=void 0)},compressedTexImage2D:function(){try{e.compressedTexImage2D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},compressedTexImage3D:function(){try{e.compressedTexImage3D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texImage2D:function(){try{e.texImage2D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texImage3D:function(){try{e.texImage3D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},updateUBOMapping:function(t,n){let i=l.get(n);void 0===i&&(i=new WeakMap,l.set(n,i));let r=i.get(t);void 0===r&&(r=e.getUniformBlockIndex(n,t.name),i.set(t,r))},uniformBlockBinding:function(t,n){const i=l.get(n).get(t);s.get(n)!==i&&(e.uniformBlockBinding(n,i,t.__bindingPointIndex),s.set(n,i))},texStorage2D:function(){try{e.texStorage2D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texStorage3D:function(){try{e.texStorage3D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texSubImage2D:function(){try{e.texSubImage2D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texSubImage3D:function(){try{e.texSubImage3D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},compressedTexSubImage2D:function(){try{e.compressedTexSubImage2D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},compressedTexSubImage3D:function(){try{e.compressedTexSubImage3D.apply(e,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},scissor:function(t){!1===U.equals(t)&&(e.scissor(t.x,t.y,t.z,t.w),U.copy(t))},viewport:function(t){!1===B.equals(t)&&(e.viewport(t.x,t.y,t.z,t.w),B.copy(t))},reset:function(){e.disable(e.BLEND),e.disable(e.CULL_FACE),e.disable(e.DEPTH_TEST),e.disable(e.POLYGON_OFFSET_FILL),e.disable(e.SCISSOR_TEST),e.disable(e.STENCIL_TEST),e.disable(e.SAMPLE_ALPHA_TO_COVERAGE),e.blendEquation(e.FUNC_ADD),e.blendFunc(e.ONE,e.ZERO),e.blendFuncSeparate(e.ONE,e.ZERO,e.ONE,e.ZERO),e.blendColor(0,0,0,0),e.colorMask(!0,!0,!0,!0),e.clearColor(0,0,0,0),e.depthMask(!0),e.depthFunc(e.LESS),e.clearDepth(1),e.stencilMask(4294967295),e.stencilFunc(e.ALWAYS,0,4294967295),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.clearStencil(0),e.cullFace(e.BACK),e.frontFace(e.CCW),e.polygonOffset(0,0),e.activeTexture(e.TEXTURE0),e.bindFramebuffer(e.FRAMEBUFFER,null),!0===i&&(e.bindFramebuffer(e.DRAW_FRAMEBUFFER,null),e.bindFramebuffer(e.READ_FRAMEBUFFER,null)),e.useProgram(null),e.lineWidth(1),e.scissor(0,0,e.canvas.width,e.canvas.height),e.viewport(0,0,e.canvas.width,e.canvas.height),c={},O=null,P={},u={},h=new WeakMap,d=[],p=null,f=!1,A=null,m=null,g=null,v=null,y=null,b=null,w=null,x=new Uu(0,0,0),M=0,S=!1,E=null,_=null,T=null,C=null,I=null,U.set(0,0,e.canvas.width,e.canvas.height),B.set(0,0,e.canvas.width,e.canvas.height),r.reset(),a.reset(),o.reset()}}}function Sf(e,t,n,i,r,a,o){const s=r.isWebGL2,l=r.maxTextures,c=r.maxCubemapSize,u=r.maxTextureSize,h=r.maxSamples,d=t.has("WEBGL_multisampled_render_to_texture")?t.get("WEBGL_multisampled_render_to_texture"):null,p="undefined"!=typeof navigator&&/OculusBrowser/g.test(navigator.userAgent),f=new WeakMap;let A;const m=new WeakMap;let g=!1;try{g="undefined"!=typeof OffscreenCanvas&&null!==new OffscreenCanvas(1,1).getContext("2d")}catch(e){}function v(e,t){return g?new OffscreenCanvas(e,t):Xl("canvas")}function y(e,t,n,i){let r=1;if((e.width>i||e.height>i)&&(r=i/Math.max(e.width,e.height)),r<1||!0===t){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){const i=t?kl:Math.floor,a=i(r*e.width),o=i(r*e.height);void 0===A&&(A=v(a,o));const s=n?v(a,o):A;return s.width=a,s.height=o,s.getContext("2d").drawImage(e,0,0,a,o),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+e.width+"x"+e.height+") to ("+a+"x"+o+")."),s}return"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e}return e}function b(e){return Pl(e.width)&&Pl(e.height)}function w(e,t){return e.generateMipmaps&&t&&e.minFilter!==no&&e.minFilter!==so}function x(t){e.generateMipmap(t)}function M(n,i,r,a,o=!1){if(!1===s)return i;if(null!==n){if(void 0!==e[n])return e[n];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+n+"'")}let l=i;if(i===e.RED&&(r===e.FLOAT&&(l=e.R32F),r===e.HALF_FLOAT&&(l=e.R16F),r===e.UNSIGNED_BYTE&&(l=e.R8)),i===e.RED_INTEGER&&(r===e.UNSIGNED_BYTE&&(l=e.R8UI),r===e.UNSIGNED_SHORT&&(l=e.R16UI),r===e.UNSIGNED_INT&&(l=e.R32UI),r===e.BYTE&&(l=e.R8I),r===e.SHORT&&(l=e.R16I),r===e.INT&&(l=e.R32I)),i===e.RG&&(r===e.FLOAT&&(l=e.RG32F),r===e.HALF_FLOAT&&(l=e.RG16F),r===e.UNSIGNED_BYTE&&(l=e.RG8)),i===e.RGBA){const t=o?Us:tc.getTransfer(a);r===e.FLOAT&&(l=e.RGBA32F),r===e.HALF_FLOAT&&(l=e.RGBA16F),r===e.UNSIGNED_BYTE&&(l=t===Bs?e.SRGB8_ALPHA8:e.RGBA8),r===e.UNSIGNED_SHORT_4_4_4_4&&(l=e.RGBA4),r===e.UNSIGNED_SHORT_5_5_5_1&&(l=e.RGB5_A1)}return l!==e.R16F&&l!==e.R32F&&l!==e.RG16F&&l!==e.RG32F&&l!==e.RGBA16F&&l!==e.RGBA32F||t.get("EXT_color_buffer_float"),l}function S(e,t,n){return!0===w(e,n)||e.isFramebufferTexture&&e.minFilter!==no&&e.minFilter!==so?Math.log2(Math.max(t.width,t.height))+1:void 0!==e.mipmaps&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?t.mipmaps.length:1}function E(t){return t===no||t===io||t===ao?e.NEAREST:e.LINEAR}function _(e){const t=e.target;t.removeEventListener("dispose",_),function(e){const t=i.get(e);if(void 0===t.__webglInit)return;const n=e.source,r=m.get(n);if(r){const i=r[t.__cacheKey];i.usedTimes--,0===i.usedTimes&&C(e),0===Object.keys(r).length&&m.delete(n)}i.remove(e)}(t),t.isVideoTexture&&f.delete(t)}function T(t){const n=t.target;n.removeEventListener("dispose",T),function(t){const n=t.texture,r=i.get(t),a=i.get(n);if(void 0!==a.__webglTexture&&(e.deleteTexture(a.__webglTexture),o.memory.textures--),t.depthTexture&&t.depthTexture.dispose(),t.isWebGLCubeRenderTarget)for(let t=0;t<6;t++){if(Array.isArray(r.__webglFramebuffer[t]))for(let n=0;n<r.__webglFramebuffer[t].length;n++)e.deleteFramebuffer(r.__webglFramebuffer[t][n]);else e.deleteFramebuffer(r.__webglFramebuffer[t]);r.__webglDepthbuffer&&e.deleteRenderbuffer(r.__webglDepthbuffer[t])}else{if(Array.isArray(r.__webglFramebuffer))for(let t=0;t<r.__webglFramebuffer.length;t++)e.deleteFramebuffer(r.__webglFramebuffer[t]);else e.deleteFramebuffer(r.__webglFramebuffer);if(r.__webglDepthbuffer&&e.deleteRenderbuffer(r.__webglDepthbuffer),r.__webglMultisampledFramebuffer&&e.deleteFramebuffer(r.__webglMultisampledFramebuffer),r.__webglColorRenderbuffer)for(let t=0;t<r.__webglColorRenderbuffer.length;t++)r.__webglColorRenderbuffer[t]&&e.deleteRenderbuffer(r.__webglColorRenderbuffer[t]);r.__webglDepthRenderbuffer&&e.deleteRenderbuffer(r.__webglDepthRenderbuffer)}if(t.isWebGLMultipleRenderTargets)for(let t=0,r=n.length;t<r;t++){const r=i.get(n[t]);r.__webglTexture&&(e.deleteTexture(r.__webglTexture),o.memory.textures--),i.remove(n[t])}i.remove(n),i.remove(t)}(n)}function C(t){const n=i.get(t);e.deleteTexture(n.__webglTexture);const r=t.source;delete m.get(r)[n.__cacheKey],o.memory.textures--}let I=0;function D(t,r){const a=i.get(t);if(t.isVideoTexture&&function(e){const t=o.render.frame;f.get(e)!==t&&(f.set(e,t),e.update())}(t),!1===t.isRenderTargetTexture&&t.version>0&&a.__version!==t.version){const e=t.image;if(null===e)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==e.complete)return void z(a,t,r);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}n.bindTexture(e.TEXTURE_2D,a.__webglTexture,e.TEXTURE0+r)}const N={[$a]:e.REPEAT,[eo]:e.CLAMP_TO_EDGE,[to]:e.MIRRORED_REPEAT},L={[no]:e.NEAREST,[io]:e.NEAREST_MIPMAP_NEAREST,[ao]:e.NEAREST_MIPMAP_LINEAR,[so]:e.LINEAR,[lo]:e.LINEAR_MIPMAP_NEAREST,[uo]:e.LINEAR_MIPMAP_LINEAR},R={[rl]:e.NEVER,[hl]:e.ALWAYS,[al]:e.LESS,[sl]:e.LEQUAL,[ol]:e.EQUAL,[ul]:e.GEQUAL,[ll]:e.GREATER,[cl]:e.NOTEQUAL};function O(n,a,o){if(o?(e.texParameteri(n,e.TEXTURE_WRAP_S,N[a.wrapS]),e.texParameteri(n,e.TEXTURE_WRAP_T,N[a.wrapT]),n!==e.TEXTURE_3D&&n!==e.TEXTURE_2D_ARRAY||e.texParameteri(n,e.TEXTURE_WRAP_R,N[a.wrapR]),e.texParameteri(n,e.TEXTURE_MAG_FILTER,L[a.magFilter]),e.texParameteri(n,e.TEXTURE_MIN_FILTER,L[a.minFilter])):(e.texParameteri(n,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(n,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),n!==e.TEXTURE_3D&&n!==e.TEXTURE_2D_ARRAY||e.texParameteri(n,e.TEXTURE_WRAP_R,e.CLAMP_TO_EDGE),a.wrapS===eo&&a.wrapT===eo||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),e.texParameteri(n,e.TEXTURE_MAG_FILTER,E(a.magFilter)),e.texParameteri(n,e.TEXTURE_MIN_FILTER,E(a.minFilter)),a.minFilter!==no&&a.minFilter!==so&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),a.compareFunction&&(e.texParameteri(n,e.TEXTURE_COMPARE_MODE,e.COMPARE_REF_TO_TEXTURE),e.texParameteri(n,e.TEXTURE_COMPARE_FUNC,R[a.compareFunction])),!0===t.has("EXT_texture_filter_anisotropic")){const o=t.get("EXT_texture_filter_anisotropic");if(a.magFilter===no)return;if(a.minFilter!==ao&&a.minFilter!==uo)return;if(a.type===yo&&!1===t.has("OES_texture_float_linear"))return;if(!1===s&&a.type===bo&&!1===t.has("OES_texture_half_float_linear"))return;(a.anisotropy>1||i.get(a).__currentAnisotropy)&&(e.texParameterf(n,o.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(a.anisotropy,r.getMaxAnisotropy())),i.get(a).__currentAnisotropy=a.anisotropy)}}function P(t,n){let i=!1;void 0===t.__webglInit&&(t.__webglInit=!0,n.addEventListener("dispose",_));const r=n.source;let a=m.get(r);void 0===a&&(a={},m.set(r,a));const s=function(e){const t=[];return t.push(e.wrapS),t.push(e.wrapT),t.push(e.wrapR||0),t.push(e.magFilter),t.push(e.minFilter),t.push(e.anisotropy),t.push(e.internalFormat),t.push(e.format),t.push(e.type),t.push(e.generateMipmaps),t.push(e.premultiplyAlpha),t.push(e.flipY),t.push(e.unpackAlignment),t.push(e.colorSpace),t.join()}(n);if(s!==t.__cacheKey){void 0===a[s]&&(a[s]={texture:e.createTexture(),usedTimes:0},o.memory.textures++,i=!0),a[s].usedTimes++;const r=a[t.__cacheKey];void 0!==r&&(a[t.__cacheKey].usedTimes--,0===r.usedTimes&&C(n)),t.__cacheKey=s,t.__webglTexture=a[s].texture}return i}function z(t,r,o){let l=e.TEXTURE_2D;(r.isDataArrayTexture||r.isCompressedArrayTexture)&&(l=e.TEXTURE_2D_ARRAY),r.isData3DTexture&&(l=e.TEXTURE_3D);const c=P(t,r),h=r.source;n.bindTexture(l,t.__webglTexture,e.TEXTURE0+o);const d=i.get(h);if(h.version!==d.__version||!0===c){n.activeTexture(e.TEXTURE0+o);const t=tc.getPrimaries(tc.workingColorSpace),i=r.colorSpace===Rs?null:tc.getPrimaries(r.colorSpace),p=r.colorSpace===Rs||t===i?e.NONE:e.BROWSER_DEFAULT_WEBGL;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,r.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,r.unpackAlignment),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,p);const f=function(e){return!s&&(e.wrapS!==eo||e.wrapT!==eo||e.minFilter!==no&&e.minFilter!==so)}(r)&&!1===b(r.image);let A=y(r.image,f,!1,u);A=H(r,A);const m=b(A)||s,g=a.convert(r.format,r.colorSpace);let v,E=a.convert(r.type),_=M(r.internalFormat,g,E,r.colorSpace,r.isVideoTexture);O(l,r,m);const T=r.mipmaps,C=s&&!0!==r.isVideoTexture,I=void 0===d.__version||!0===c,D=S(r,A,m);if(r.isDepthTexture)_=e.DEPTH_COMPONENT,s?_=r.type===yo?e.DEPTH_COMPONENT32F:r.type===vo?e.DEPTH_COMPONENT24:r.type===Mo?e.DEPTH24_STENCIL8:e.DEPTH_COMPONENT16:r.type===yo&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),r.format===Co&&_===e.DEPTH_COMPONENT&&r.type!==mo&&r.type!==vo&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),r.type=vo,E=a.convert(r.type)),r.format===Io&&_===e.DEPTH_COMPONENT&&(_=e.DEPTH_STENCIL,r.type!==Mo&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),r.type=Mo,E=a.convert(r.type))),I&&(C?n.texStorage2D(e.TEXTURE_2D,1,_,A.width,A.height):n.texImage2D(e.TEXTURE_2D,0,_,A.width,A.height,0,g,E,null));else if(r.isDataTexture)if(T.length>0&&m){C&&I&&n.texStorage2D(e.TEXTURE_2D,D,_,T[0].width,T[0].height);for(let t=0,i=T.length;t<i;t++)v=T[t],C?n.texSubImage2D(e.TEXTURE_2D,t,0,0,v.width,v.height,g,E,v.data):n.texImage2D(e.TEXTURE_2D,t,_,v.width,v.height,0,g,E,v.data);r.generateMipmaps=!1}else C?(I&&n.texStorage2D(e.TEXTURE_2D,D,_,A.width,A.height),n.texSubImage2D(e.TEXTURE_2D,0,0,0,A.width,A.height,g,E,A.data)):n.texImage2D(e.TEXTURE_2D,0,_,A.width,A.height,0,g,E,A.data);else if(r.isCompressedTexture)if(r.isCompressedArrayTexture){C&&I&&n.texStorage3D(e.TEXTURE_2D_ARRAY,D,_,T[0].width,T[0].height,A.depth);for(let t=0,i=T.length;t<i;t++)v=T[t],r.format!==Eo?null!==g?C?n.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,t,0,0,0,v.width,v.height,A.depth,g,v.data,0,0):n.compressedTexImage3D(e.TEXTURE_2D_ARRAY,t,_,v.width,v.height,A.depth,0,v.data,0,0):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):C?n.texSubImage3D(e.TEXTURE_2D_ARRAY,t,0,0,0,v.width,v.height,A.depth,g,E,v.data):n.texImage3D(e.TEXTURE_2D_ARRAY,t,_,v.width,v.height,A.depth,0,g,E,v.data)}else{C&&I&&n.texStorage2D(e.TEXTURE_2D,D,_,T[0].width,T[0].height);for(let t=0,i=T.length;t<i;t++)v=T[t],r.format!==Eo?null!==g?C?n.compressedTexSubImage2D(e.TEXTURE_2D,t,0,0,v.width,v.height,g,v.data):n.compressedTexImage2D(e.TEXTURE_2D,t,_,v.width,v.height,0,v.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):C?n.texSubImage2D(e.TEXTURE_2D,t,0,0,v.width,v.height,g,E,v.data):n.texImage2D(e.TEXTURE_2D,t,_,v.width,v.height,0,g,E,v.data)}else if(r.isDataArrayTexture)C?(I&&n.texStorage3D(e.TEXTURE_2D_ARRAY,D,_,A.width,A.height,A.depth),n.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,0,A.width,A.height,A.depth,g,E,A.data)):n.texImage3D(e.TEXTURE_2D_ARRAY,0,_,A.width,A.height,A.depth,0,g,E,A.data);else if(r.isData3DTexture)C?(I&&n.texStorage3D(e.TEXTURE_3D,D,_,A.width,A.height,A.depth),n.texSubImage3D(e.TEXTURE_3D,0,0,0,0,A.width,A.height,A.depth,g,E,A.data)):n.texImage3D(e.TEXTURE_3D,0,_,A.width,A.height,A.depth,0,g,E,A.data);else if(r.isFramebufferTexture){if(I)if(C)n.texStorage2D(e.TEXTURE_2D,D,_,A.width,A.height);else{let t=A.width,i=A.height;for(let r=0;r<D;r++)n.texImage2D(e.TEXTURE_2D,r,_,t,i,0,g,E,null),t>>=1,i>>=1}}else if(T.length>0&&m){C&&I&&n.texStorage2D(e.TEXTURE_2D,D,_,T[0].width,T[0].height);for(let t=0,i=T.length;t<i;t++)v=T[t],C?n.texSubImage2D(e.TEXTURE_2D,t,0,0,g,E,v):n.texImage2D(e.TEXTURE_2D,t,_,g,E,v);r.generateMipmaps=!1}else C?(I&&n.texStorage2D(e.TEXTURE_2D,D,_,A.width,A.height),n.texSubImage2D(e.TEXTURE_2D,0,0,0,g,E,A)):n.texImage2D(e.TEXTURE_2D,0,_,g,E,A);w(r,m)&&x(l),d.__version=h.version,r.onUpdate&&r.onUpdate(r)}t.__version=r.version}function k(t,r,o,s,l,c){const u=a.convert(o.format,o.colorSpace),h=a.convert(o.type),p=M(o.internalFormat,u,h,o.colorSpace);if(!i.get(r).__hasExternalTextures){const t=Math.max(1,r.width>>c),i=Math.max(1,r.height>>c);l===e.TEXTURE_3D||l===e.TEXTURE_2D_ARRAY?n.texImage3D(l,c,p,t,i,r.depth,0,u,h,null):n.texImage2D(l,c,p,t,i,0,u,h,null)}n.bindFramebuffer(e.FRAMEBUFFER,t),j(r)?d.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,s,l,i.get(o).__webglTexture,0,F(r)):(l===e.TEXTURE_2D||l>=e.TEXTURE_CUBE_MAP_POSITIVE_X&&l<=e.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&e.framebufferTexture2D(e.FRAMEBUFFER,s,l,i.get(o).__webglTexture,c),n.bindFramebuffer(e.FRAMEBUFFER,null)}function U(t,n,i){if(e.bindRenderbuffer(e.RENDERBUFFER,t),n.depthBuffer&&!n.stencilBuffer){let r=!0===s?e.DEPTH_COMPONENT24:e.DEPTH_COMPONENT16;if(i||j(n)){const t=n.depthTexture;t&&t.isDepthTexture&&(t.type===yo?r=e.DEPTH_COMPONENT32F:t.type===vo&&(r=e.DEPTH_COMPONENT24));const i=F(n);j(n)?d.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,i,r,n.width,n.height):e.renderbufferStorageMultisample(e.RENDERBUFFER,i,r,n.width,n.height)}else e.renderbufferStorage(e.RENDERBUFFER,r,n.width,n.height);e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,t)}else if(n.depthBuffer&&n.stencilBuffer){const r=F(n);i&&!1===j(n)?e.renderbufferStorageMultisample(e.RENDERBUFFER,r,e.DEPTH24_STENCIL8,n.width,n.height):j(n)?d.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,r,e.DEPTH24_STENCIL8,n.width,n.height):e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_STENCIL,n.width,n.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,t)}else{const t=!0===n.isWebGLMultipleRenderTargets?n.texture:[n.texture];for(let r=0;r<t.length;r++){const o=t[r],s=a.convert(o.format,o.colorSpace),l=a.convert(o.type),c=M(o.internalFormat,s,l,o.colorSpace),u=F(n);i&&!1===j(n)?e.renderbufferStorageMultisample(e.RENDERBUFFER,u,c,n.width,n.height):j(n)?d.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,u,c,n.width,n.height):e.renderbufferStorage(e.RENDERBUFFER,c,n.width,n.height)}}e.bindRenderbuffer(e.RENDERBUFFER,null)}function B(t){const r=i.get(t),a=!0===t.isWebGLCubeRenderTarget;if(t.depthTexture&&!r.__autoAllocateDepthBuffer){if(a)throw new Error("target.depthTexture not supported in Cube render targets");!function(t,r){if(r&&r.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(n.bindFramebuffer(e.FRAMEBUFFER,t),!r.depthTexture||!r.depthTexture.isDepthTexture)throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");i.get(r.depthTexture).__webglTexture&&r.depthTexture.image.width===r.width&&r.depthTexture.image.height===r.height||(r.depthTexture.image.width=r.width,r.depthTexture.image.height=r.height,r.depthTexture.needsUpdate=!0),D(r.depthTexture,0);const a=i.get(r.depthTexture).__webglTexture,o=F(r);if(r.depthTexture.format===Co)j(r)?d.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.TEXTURE_2D,a,0,o):e.framebufferTexture2D(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.TEXTURE_2D,a,0);else{if(r.depthTexture.format!==Io)throw new Error("Unknown depthTexture format");j(r)?d.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.TEXTURE_2D,a,0,o):e.framebufferTexture2D(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.TEXTURE_2D,a,0)}}(r.__webglFramebuffer,t)}else if(a){r.__webglDepthbuffer=[];for(let i=0;i<6;i++)n.bindFramebuffer(e.FRAMEBUFFER,r.__webglFramebuffer[i]),r.__webglDepthbuffer[i]=e.createRenderbuffer(),U(r.__webglDepthbuffer[i],t,!1)}else n.bindFramebuffer(e.FRAMEBUFFER,r.__webglFramebuffer),r.__webglDepthbuffer=e.createRenderbuffer(),U(r.__webglDepthbuffer,t,!1);n.bindFramebuffer(e.FRAMEBUFFER,null)}function F(e){return Math.min(h,e.samples)}function j(e){const n=i.get(e);return s&&e.samples>0&&!0===t.has("WEBGL_multisampled_render_to_texture")&&!1!==n.__useRenderToTexture}function H(e,n){const i=e.colorSpace,r=e.format,a=e.type;return!0===e.isCompressedTexture||!0===e.isVideoTexture||e.format===Ml||i!==Ps&&i!==Rs&&(tc.getTransfer(i)===Bs?!1===s?!0===t.has("EXT_sRGB")&&r===Eo?(e.format=Ml,e.minFilter=so,e.generateMipmaps=!1):n=ac.sRGBToLinear(n):r===Eo&&a===po||console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",i)),n}this.allocateTextureUnit=function(){const e=I;return e>=l&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+l),I+=1,e},this.resetTextureUnits=function(){I=0},this.setTexture2D=D,this.setTexture2DArray=function(t,r){const a=i.get(t);t.version>0&&a.__version!==t.version?z(a,t,r):n.bindTexture(e.TEXTURE_2D_ARRAY,a.__webglTexture,e.TEXTURE0+r)},this.setTexture3D=function(t,r){const a=i.get(t);t.version>0&&a.__version!==t.version?z(a,t,r):n.bindTexture(e.TEXTURE_3D,a.__webglTexture,e.TEXTURE0+r)},this.setTextureCube=function(t,r){const o=i.get(t);t.version>0&&o.__version!==t.version?function(t,r,o){if(6!==r.image.length)return;const l=P(t,r),u=r.source;n.bindTexture(e.TEXTURE_CUBE_MAP,t.__webglTexture,e.TEXTURE0+o);const h=i.get(u);if(u.version!==h.__version||!0===l){n.activeTexture(e.TEXTURE0+o);const t=tc.getPrimaries(tc.workingColorSpace),i=r.colorSpace===Rs?null:tc.getPrimaries(r.colorSpace),d=r.colorSpace===Rs||t===i?e.NONE:e.BROWSER_DEFAULT_WEBGL;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,r.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,r.unpackAlignment),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,d);const p=r.isCompressedTexture||r.image[0].isCompressedTexture,f=r.image[0]&&r.image[0].isDataTexture,A=[];for(let e=0;e<6;e++)A[e]=p||f?f?r.image[e].image:r.image[e]:y(r.image[e],!1,!0,c),A[e]=H(r,A[e]);const m=A[0],g=b(m)||s,v=a.convert(r.format,r.colorSpace),E=a.convert(r.type),_=M(r.internalFormat,v,E,r.colorSpace),T=s&&!0!==r.isVideoTexture,C=void 0===h.__version||!0===l;let I,D=S(r,m,g);if(O(e.TEXTURE_CUBE_MAP,r,g),p){T&&C&&n.texStorage2D(e.TEXTURE_CUBE_MAP,D,_,m.width,m.height);for(let t=0;t<6;t++){I=A[t].mipmaps;for(let i=0;i<I.length;i++){const a=I[i];r.format!==Eo?null!==v?T?n.compressedTexSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,i,0,0,a.width,a.height,v,a.data):n.compressedTexImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,i,_,a.width,a.height,0,a.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):T?n.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,i,0,0,a.width,a.height,v,E,a.data):n.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,i,_,a.width,a.height,0,v,E,a.data)}}}else{I=r.mipmaps,T&&C&&(I.length>0&&D++,n.texStorage2D(e.TEXTURE_CUBE_MAP,D,_,A[0].width,A[0].height));for(let t=0;t<6;t++)if(f){T?n.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,0,0,A[t].width,A[t].height,v,E,A[t].data):n.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,_,A[t].width,A[t].height,0,v,E,A[t].data);for(let i=0;i<I.length;i++){const r=I[i].image[t].image;T?n.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,i+1,0,0,r.width,r.height,v,E,r.data):n.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,i+1,_,r.width,r.height,0,v,E,r.data)}}else{T?n.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,0,0,v,E,A[t]):n.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,_,v,E,A[t]);for(let i=0;i<I.length;i++){const r=I[i];T?n.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,i+1,0,0,v,E,r.image[t]):n.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,i+1,_,v,E,r.image[t])}}}w(r,g)&&x(e.TEXTURE_CUBE_MAP),h.__version=u.version,r.onUpdate&&r.onUpdate(r)}t.__version=r.version}(o,t,r):n.bindTexture(e.TEXTURE_CUBE_MAP,o.__webglTexture,e.TEXTURE0+r)},this.rebindTextures=function(t,n,r){const a=i.get(t);void 0!==n&&k(a.__webglFramebuffer,t,t.texture,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,0),void 0!==r&&B(t)},this.setupRenderTarget=function(t){const l=t.texture,c=i.get(t),u=i.get(l);t.addEventListener("dispose",T),!0!==t.isWebGLMultipleRenderTargets&&(void 0===u.__webglTexture&&(u.__webglTexture=e.createTexture()),u.__version=l.version,o.memory.textures++);const h=!0===t.isWebGLCubeRenderTarget,d=!0===t.isWebGLMultipleRenderTargets,p=b(t)||s;if(h){c.__webglFramebuffer=[];for(let t=0;t<6;t++)if(s&&l.mipmaps&&l.mipmaps.length>0){c.__webglFramebuffer[t]=[];for(let n=0;n<l.mipmaps.length;n++)c.__webglFramebuffer[t][n]=e.createFramebuffer()}else c.__webglFramebuffer[t]=e.createFramebuffer()}else{if(s&&l.mipmaps&&l.mipmaps.length>0){c.__webglFramebuffer=[];for(let t=0;t<l.mipmaps.length;t++)c.__webglFramebuffer[t]=e.createFramebuffer()}else c.__webglFramebuffer=e.createFramebuffer();if(d)if(r.drawBuffers){const n=t.texture;for(let t=0,r=n.length;t<r;t++){const r=i.get(n[t]);void 0===r.__webglTexture&&(r.__webglTexture=e.createTexture(),o.memory.textures++)}}else console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.");if(s&&t.samples>0&&!1===j(t)){const i=d?l:[l];c.__webglMultisampledFramebuffer=e.createFramebuffer(),c.__webglColorRenderbuffer=[],n.bindFramebuffer(e.FRAMEBUFFER,c.__webglMultisampledFramebuffer);for(let n=0;n<i.length;n++){const r=i[n];c.__webglColorRenderbuffer[n]=e.createRenderbuffer(),e.bindRenderbuffer(e.RENDERBUFFER,c.__webglColorRenderbuffer[n]);const o=a.convert(r.format,r.colorSpace),s=a.convert(r.type),l=M(r.internalFormat,o,s,r.colorSpace,!0===t.isXRRenderTarget),u=F(t);e.renderbufferStorageMultisample(e.RENDERBUFFER,u,l,t.width,t.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0+n,e.RENDERBUFFER,c.__webglColorRenderbuffer[n])}e.bindRenderbuffer(e.RENDERBUFFER,null),t.depthBuffer&&(c.__webglDepthRenderbuffer=e.createRenderbuffer(),U(c.__webglDepthRenderbuffer,t,!0)),n.bindFramebuffer(e.FRAMEBUFFER,null)}}if(h){n.bindTexture(e.TEXTURE_CUBE_MAP,u.__webglTexture),O(e.TEXTURE_CUBE_MAP,l,p);for(let n=0;n<6;n++)if(s&&l.mipmaps&&l.mipmaps.length>0)for(let i=0;i<l.mipmaps.length;i++)k(c.__webglFramebuffer[n][i],t,l,e.COLOR_ATTACHMENT0,e.TEXTURE_CUBE_MAP_POSITIVE_X+n,i);else k(c.__webglFramebuffer[n],t,l,e.COLOR_ATTACHMENT0,e.TEXTURE_CUBE_MAP_POSITIVE_X+n,0);w(l,p)&&x(e.TEXTURE_CUBE_MAP),n.unbindTexture()}else if(d){const r=t.texture;for(let a=0,o=r.length;a<o;a++){const o=r[a],s=i.get(o);n.bindTexture(e.TEXTURE_2D,s.__webglTexture),O(e.TEXTURE_2D,o,p),k(c.__webglFramebuffer,t,o,e.COLOR_ATTACHMENT0+a,e.TEXTURE_2D,0),w(o,p)&&x(e.TEXTURE_2D)}n.unbindTexture()}else{let i=e.TEXTURE_2D;if((t.isWebGL3DRenderTarget||t.isWebGLArrayRenderTarget)&&(s?i=t.isWebGL3DRenderTarget?e.TEXTURE_3D:e.TEXTURE_2D_ARRAY:console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")),n.bindTexture(i,u.__webglTexture),O(i,l,p),s&&l.mipmaps&&l.mipmaps.length>0)for(let n=0;n<l.mipmaps.length;n++)k(c.__webglFramebuffer[n],t,l,e.COLOR_ATTACHMENT0,i,n);else k(c.__webglFramebuffer,t,l,e.COLOR_ATTACHMENT0,i,0);w(l,p)&&x(i),n.unbindTexture()}t.depthBuffer&&B(t)},this.updateRenderTargetMipmap=function(t){const r=b(t)||s,a=!0===t.isWebGLMultipleRenderTargets?t.texture:[t.texture];for(let o=0,s=a.length;o<s;o++){const s=a[o];if(w(s,r)){const r=t.isWebGLCubeRenderTarget?e.TEXTURE_CUBE_MAP:e.TEXTURE_2D,a=i.get(s).__webglTexture;n.bindTexture(r,a),x(r),n.unbindTexture()}}},this.updateMultisampleRenderTarget=function(t){if(s&&t.samples>0&&!1===j(t)){const r=t.isWebGLMultipleRenderTargets?t.texture:[t.texture],a=t.width,o=t.height;let s=e.COLOR_BUFFER_BIT;const l=[],c=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,u=i.get(t),h=!0===t.isWebGLMultipleRenderTargets;if(h)for(let t=0;t<r.length;t++)n.bindFramebuffer(e.FRAMEBUFFER,u.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.RENDERBUFFER,null),n.bindFramebuffer(e.FRAMEBUFFER,u.__webglFramebuffer),e.framebufferTexture2D(e.DRAW_FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.TEXTURE_2D,null,0);n.bindFramebuffer(e.READ_FRAMEBUFFER,u.__webglMultisampledFramebuffer),n.bindFramebuffer(e.DRAW_FRAMEBUFFER,u.__webglFramebuffer);for(let n=0;n<r.length;n++){l.push(e.COLOR_ATTACHMENT0+n),t.depthBuffer&&l.push(c);const d=void 0!==u.__ignoreDepthValues&&u.__ignoreDepthValues;if(!1===d&&(t.depthBuffer&&(s|=e.DEPTH_BUFFER_BIT),t.stencilBuffer&&(s|=e.STENCIL_BUFFER_BIT)),h&&e.framebufferRenderbuffer(e.READ_FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.RENDERBUFFER,u.__webglColorRenderbuffer[n]),!0===d&&(e.invalidateFramebuffer(e.READ_FRAMEBUFFER,[c]),e.invalidateFramebuffer(e.DRAW_FRAMEBUFFER,[c])),h){const t=i.get(r[n]).__webglTexture;e.framebufferTexture2D(e.DRAW_FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0)}e.blitFramebuffer(0,0,a,o,0,0,a,o,s,e.NEAREST),p&&e.invalidateFramebuffer(e.READ_FRAMEBUFFER,l)}if(n.bindFramebuffer(e.READ_FRAMEBUFFER,null),n.bindFramebuffer(e.DRAW_FRAMEBUFFER,null),h)for(let t=0;t<r.length;t++){n.bindFramebuffer(e.FRAMEBUFFER,u.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.RENDERBUFFER,u.__webglColorRenderbuffer[t]);const a=i.get(r[t]).__webglTexture;n.bindFramebuffer(e.FRAMEBUFFER,u.__webglFramebuffer),e.framebufferTexture2D(e.DRAW_FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.TEXTURE_2D,a,0)}n.bindFramebuffer(e.DRAW_FRAMEBUFFER,u.__webglMultisampledFramebuffer)}},this.setupDepthRenderbuffer=B,this.setupFrameBufferTexture=k,this.useMultisampledRTT=j}function Ef(e,t,n){const i=n.isWebGL2;return{convert:function(n,r=Rs){let a;const o=tc.getTransfer(r);if(n===po)return e.UNSIGNED_BYTE;if(n===wo)return e.UNSIGNED_SHORT_4_4_4_4;if(n===xo)return e.UNSIGNED_SHORT_5_5_5_1;if(n===fo)return e.BYTE;if(n===Ao)return e.SHORT;if(n===mo)return e.UNSIGNED_SHORT;if(n===go)return e.INT;if(n===vo)return e.UNSIGNED_INT;if(n===yo)return e.FLOAT;if(n===bo)return i?e.HALF_FLOAT:(a=t.get("OES_texture_half_float"),null!==a?a.HALF_FLOAT_OES:null);if(n===So)return e.ALPHA;if(n===Eo)return e.RGBA;if(n===_o)return e.LUMINANCE;if(n===To)return e.LUMINANCE_ALPHA;if(n===Co)return e.DEPTH_COMPONENT;if(n===Io)return e.DEPTH_STENCIL;if(n===Ml)return a=t.get("EXT_sRGB"),null!==a?a.SRGB_ALPHA_EXT:null;if(n===Do)return e.RED;if(n===No)return e.RED_INTEGER;if(n===Lo)return e.RG;if(n===Ro)return e.RG_INTEGER;if(n===Oo)return e.RGBA_INTEGER;if(n===Po||n===zo||n===ko||n===Uo)if(o===Bs){if(a=t.get("WEBGL_compressed_texture_s3tc_srgb"),null===a)return null;if(n===Po)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===zo)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===ko)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===Uo)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else{if(a=t.get("WEBGL_compressed_texture_s3tc"),null===a)return null;if(n===Po)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===zo)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===ko)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===Uo)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(n===Bo||n===Fo||n===jo||n===Ho){if(a=t.get("WEBGL_compressed_texture_pvrtc"),null===a)return null;if(n===Bo)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===Fo)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===jo)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===Ho)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(n===Vo)return a=t.get("WEBGL_compressed_texture_etc1"),null!==a?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(n===Wo||n===Go){if(a=t.get("WEBGL_compressed_texture_etc"),null===a)return null;if(n===Wo)return o===Bs?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(n===Go)return o===Bs?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}if(n===Qo||n===Xo||n===Yo||n===Zo||n===qo||n===Ko||n===Jo||n===$o||n===es||n===ts||n===ns||n===is||n===rs||n===as){if(a=t.get("WEBGL_compressed_texture_astc"),null===a)return null;if(n===Qo)return o===Bs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===Xo)return o===Bs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===Yo)return o===Bs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===Zo)return o===Bs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===qo)return o===Bs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===Ko)return o===Bs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===Jo)return o===Bs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===$o)return o===Bs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===es)return o===Bs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===ts)return o===Bs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===ns)return o===Bs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===is)return o===Bs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===rs)return o===Bs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===as)return o===Bs?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}if(n===os||n===ss||n===ls){if(a=t.get("EXT_texture_compression_bptc"),null===a)return null;if(n===os)return o===Bs?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===ss)return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===ls)return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}if(n===cs||n===us||n===hs||n===ds){if(a=t.get("EXT_texture_compression_rgtc"),null===a)return null;if(n===os)return a.COMPRESSED_RED_RGTC1_EXT;if(n===us)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===hs)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===ds)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}return n===Mo?i?e.UNSIGNED_INT_24_8:(a=t.get("WEBGL_depth_texture"),null!==a?a.UNSIGNED_INT_24_8_WEBGL:null):void 0!==e[n]?e[n]:null}}}class _f extends jh{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}}class Tf extends wu{constructor(){super(),this.isGroup=!0,this.type="Group"}}const Cf={type:"move"};class If{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return null===this._hand&&(this._hand=new Tf,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return null===this._targetRay&&(this._targetRay=new Tf,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new bc,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new bc),this._targetRay}getGripSpace(){return null===this._grip&&(this._grip=new Tf,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new bc,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new bc),this._grip}dispatchEvent(e){return null!==this._targetRay&&this._targetRay.dispatchEvent(e),null!==this._grip&&this._grip.dispatchEvent(e),null!==this._hand&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),null!==this._targetRay&&(this._targetRay.visible=!1),null!==this._grip&&(this._grip.visible=!1),null!==this._hand&&(this._hand.visible=!1),this}update(e,t,n){let i=null,r=null,a=null;const o=this._targetRay,s=this._grip,l=this._hand;if(e&&"visible-blurred"!==t.session.visibilityState){if(l&&e.hand){a=!0;for(const i of e.hand.values()){const e=t.getJointPose(i,n),r=this._getHandJoint(l,i);null!==e&&(r.matrix.fromArray(e.transform.matrix),r.matrix.decompose(r.position,r.rotation,r.scale),r.matrixWorldNeedsUpdate=!0,r.jointRadius=e.radius),r.visible=null!==e}const i=l.joints["index-finger-tip"],r=l.joints["thumb-tip"],o=i.position.distanceTo(r.position),s=.02,c=.005;l.inputState.pinching&&o>s+c?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!l.inputState.pinching&&o<=s-c&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else null!==s&&e.gripSpace&&(r=t.getPose(e.gripSpace,n),null!==r&&(s.matrix.fromArray(r.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale),s.matrixWorldNeedsUpdate=!0,r.linearVelocity?(s.hasLinearVelocity=!0,s.linearVelocity.copy(r.linearVelocity)):s.hasLinearVelocity=!1,r.angularVelocity?(s.hasAngularVelocity=!0,s.angularVelocity.copy(r.angularVelocity)):s.hasAngularVelocity=!1));null!==o&&(i=t.getPose(e.targetRaySpace,n),null===i&&null!==r&&(i=r),null!==i&&(o.matrix.fromArray(i.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,i.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(i.linearVelocity)):o.hasLinearVelocity=!1,i.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(i.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(Cf)))}return null!==o&&(o.visible=null!==i),null!==s&&(s.visible=null!==r),null!==l&&(l.visible=null!==a),this}_getHandJoint(e,t){if(void 0===e.joints[t.jointName]){const n=new Tf;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}class Df extends uc{constructor(e,t,n,i,r,a,o,s,l,c){if((c=void 0!==c?c:Co)!==Co&&c!==Io)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===n&&c===Co&&(n=vo),void 0===n&&c===Io&&(n=Mo),super(null,i,r,a,o,s,c,n,l),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=void 0!==o?o:no,this.minFilter=void 0!==s?s:no,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return null!==this.compareFunction&&(t.compareFunction=this.compareFunction),t}}class Nf extends _l{constructor(e,t){super();const n=this;let i=null,r=1,a=null,o="local-floor",s=1,l=null,c=null,u=null,h=null,d=null,p=null;const f=t.getContextAttributes();let A=null,m=null;const g=[],v=[],y=new jh;y.layers.enable(1),y.viewport=new hc;const b=new jh;b.layers.enable(2),b.viewport=new hc;const w=[y,b],x=new _f;x.layers.enable(1),x.layers.enable(2);let M=null,S=null;function E(e){const t=v.indexOf(e.inputSource);if(-1===t)return;const n=g[t];void 0!==n&&(n.update(e.inputSource,e.frame,l||a),n.dispatchEvent({type:e.type,data:e.inputSource}))}function _(){i.removeEventListener("select",E),i.removeEventListener("selectstart",E),i.removeEventListener("selectend",E),i.removeEventListener("squeeze",E),i.removeEventListener("squeezestart",E),i.removeEventListener("squeezeend",E),i.removeEventListener("end",_),i.removeEventListener("inputsourceschange",T);for(let e=0;e<g.length;e++){const t=v[e];null!==t&&(v[e]=null,g[e].disconnect(t))}M=null,S=null,e.setRenderTarget(A),d=null,h=null,u=null,i=null,m=null,L.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}function T(e){for(let t=0;t<e.removed.length;t++){const n=e.removed[t],i=v.indexOf(n);i>=0&&(v[i]=null,g[i].disconnect(n))}for(let t=0;t<e.added.length;t++){const n=e.added[t];let i=v.indexOf(n);if(-1===i){for(let e=0;e<g.length;e++){if(e>=v.length){v.push(n),i=e;break}if(null===v[e]){v[e]=n,i=e;break}}if(-1===i)break}const r=g[i];r&&r.connect(n)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let t=g[e];return void 0===t&&(t=new If,g[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){let t=g[e];return void 0===t&&(t=new If,g[e]=t),t.getGripSpace()},this.getHand=function(e){let t=g[e];return void 0===t&&(t=new If,g[e]=t),t.getHandSpace()},this.setFramebufferScaleFactor=function(e){r=e,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(e){o=e,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||a},this.setReferenceSpace=function(e){l=e},this.getBaseLayer=function(){return null!==h?h:d},this.getBinding=function(){return u},this.getFrame=function(){return p},this.getSession=function(){return i},this.setSession=async function(c){if(i=c,null!==i){if(A=e.getRenderTarget(),i.addEventListener("select",E),i.addEventListener("selectstart",E),i.addEventListener("selectend",E),i.addEventListener("squeeze",E),i.addEventListener("squeezestart",E),i.addEventListener("squeezeend",E),i.addEventListener("end",_),i.addEventListener("inputsourceschange",T),!0!==f.xrCompatible&&await t.makeXRCompatible(),void 0===i.renderState.layers||!1===e.capabilities.isWebGL2){const n={antialias:void 0!==i.renderState.layers||f.antialias,alpha:!0,depth:f.depth,stencil:f.stencil,framebufferScaleFactor:r};d=new XRWebGLLayer(i,t,n),i.updateRenderState({baseLayer:d}),m=new pc(d.framebufferWidth,d.framebufferHeight,{format:Eo,type:po,colorSpace:e.outputColorSpace,stencilBuffer:f.stencil})}else{let n=null,a=null,o=null;f.depth&&(o=f.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,n=f.stencil?Io:Co,a=f.stencil?Mo:vo);const s={colorFormat:t.RGBA8,depthFormat:o,scaleFactor:r};u=new XRWebGLBinding(i,t),h=u.createProjectionLayer(s),i.updateRenderState({layers:[h]}),m=new pc(h.textureWidth,h.textureHeight,{format:Eo,type:po,depthTexture:new Df(h.textureWidth,h.textureHeight,a,void 0,void 0,void 0,void 0,void 0,void 0,n),stencilBuffer:f.stencil,colorSpace:e.outputColorSpace,samples:f.antialias?4:0}),e.properties.get(m).__ignoreDepthValues=h.ignoreDepthValues}m.isXRRenderTarget=!0,this.setFoveation(s),l=null,a=await i.requestReferenceSpace(o),L.setContext(i),L.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(null!==i)return i.environmentBlendMode};const C=new bc,I=new bc;function D(e,t){null===t?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){if(null===i)return;x.near=b.near=y.near=e.near,x.far=b.far=y.far=e.far,M===x.near&&S===x.far||(i.updateRenderState({depthNear:x.near,depthFar:x.far}),M=x.near,S=x.far);const t=e.parent,n=x.cameras;D(x,t);for(let e=0;e<n.length;e++)D(n[e],t);2===n.length?function(e,t,n){C.setFromMatrixPosition(t.matrixWorld),I.setFromMatrixPosition(n.matrixWorld);const i=C.distanceTo(I),r=t.projectionMatrix.elements,a=n.projectionMatrix.elements,o=r[14]/(r[10]-1),s=r[14]/(r[10]+1),l=(r[9]+1)/r[5],c=(r[9]-1)/r[5],u=(r[8]-1)/r[0],h=(a[8]+1)/a[0],d=o*u,p=o*h,f=i/(-u+h),A=f*-u;t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(A),e.translateZ(f),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert();const m=o+f,g=s+f,v=d-A,y=p+(i-A),b=l*s/g*m,w=c*s/g*m;e.projectionMatrix.makePerspective(v,y,b,w,m,g),e.projectionMatrixInverse.copy(e.projectionMatrix).invert()}(x,y,b):x.projectionMatrix.copy(y.projectionMatrix),function(e,t,n){null===n?e.matrix.copy(t.matrixWorld):(e.matrix.copy(n.matrixWorld),e.matrix.invert(),e.matrix.multiply(t.matrixWorld)),e.matrix.decompose(e.position,e.quaternion,e.scale),e.updateMatrixWorld(!0),e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse),e.isPerspectiveCamera&&(e.fov=2*Dl*Math.atan(1/e.projectionMatrix.elements[5]),e.zoom=1)}(e,x,t)},this.getCamera=function(){return x},this.getFoveation=function(){if(null!==h||null!==d)return s},this.setFoveation=function(e){s=e,null!==h&&(h.fixedFoveation=e),null!==d&&void 0!==d.fixedFoveation&&(d.fixedFoveation=e)};let N=null;const L=new $h;L.setAnimationLoop((function(t,i){if(c=i.getViewerPose(l||a),p=i,null!==c){const t=c.views;null!==d&&(e.setRenderTargetFramebuffer(m,d.framebuffer),e.setRenderTarget(m));let n=!1;t.length!==x.cameras.length&&(x.cameras.length=0,n=!0);for(let i=0;i<t.length;i++){const r=t[i];let a=null;if(null!==d)a=d.getViewport(r);else{const t=u.getViewSubImage(h,r);a=t.viewport,0===i&&(e.setRenderTargetTextures(m,t.colorTexture,h.ignoreDepthValues?void 0:t.depthStencilTexture),e.setRenderTarget(m))}let o=w[i];void 0===o&&(o=new jh,o.layers.enable(i),o.viewport=new hc,w[i]=o),o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.quaternion,o.scale),o.projectionMatrix.fromArray(r.projectionMatrix),o.projectionMatrixInverse.copy(o.projectionMatrix).invert(),o.viewport.set(a.x,a.y,a.width,a.height),0===i&&(x.matrix.copy(o.matrix),x.matrix.decompose(x.position,x.quaternion,x.scale)),!0===n&&x.cameras.push(o)}}for(let e=0;e<g.length;e++){const t=v[e],n=g[e];null!==t&&void 0!==n&&n.update(t,i,l||a)}N&&N(t,i),i.detectedPlanes&&n.dispatchEvent({type:"planesdetected",data:i}),p=null})),this.setAnimationLoop=function(e){N=e},this.dispose=function(){}}}function Lf(e,t){function n(e,t){!0===e.matrixAutoUpdate&&e.updateMatrix(),t.value.copy(e.matrix)}function i(i,r){i.opacity.value=r.opacity,r.color&&i.diffuse.value.copy(r.color),r.emissive&&i.emissive.value.copy(r.emissive).multiplyScalar(r.emissiveIntensity),r.map&&(i.map.value=r.map,n(r.map,i.mapTransform)),r.alphaMap&&(i.alphaMap.value=r.alphaMap,n(r.alphaMap,i.alphaMapTransform)),r.bumpMap&&(i.bumpMap.value=r.bumpMap,n(r.bumpMap,i.bumpMapTransform),i.bumpScale.value=r.bumpScale,r.side===$r&&(i.bumpScale.value*=-1)),r.normalMap&&(i.normalMap.value=r.normalMap,n(r.normalMap,i.normalMapTransform),i.normalScale.value.copy(r.normalScale),r.side===$r&&i.normalScale.value.negate()),r.displacementMap&&(i.displacementMap.value=r.displacementMap,n(r.displacementMap,i.displacementMapTransform),i.displacementScale.value=r.displacementScale,i.displacementBias.value=r.displacementBias),r.emissiveMap&&(i.emissiveMap.value=r.emissiveMap,n(r.emissiveMap,i.emissiveMapTransform)),r.specularMap&&(i.specularMap.value=r.specularMap,n(r.specularMap,i.specularMapTransform)),r.alphaTest>0&&(i.alphaTest.value=r.alphaTest);const a=t.get(r).envMap;if(a&&(i.envMap.value=a,i.flipEnvMap.value=a.isCubeTexture&&!1===a.isRenderTargetTexture?-1:1,i.reflectivity.value=r.reflectivity,i.ior.value=r.ior,i.refractionRatio.value=r.refractionRatio),r.lightMap){i.lightMap.value=r.lightMap;const t=!0===e._useLegacyLights?Math.PI:1;i.lightMapIntensity.value=r.lightMapIntensity*t,n(r.lightMap,i.lightMapTransform)}r.aoMap&&(i.aoMap.value=r.aoMap,i.aoMapIntensity.value=r.aoMapIntensity,n(r.aoMap,i.aoMapTransform))}return{refreshFogUniforms:function(t,n){n.color.getRGB(t.fogColor.value,kh(e)),n.isFog?(t.fogNear.value=n.near,t.fogFar.value=n.far):n.isFogExp2&&(t.fogDensity.value=n.density)},refreshMaterialUniforms:function(e,r,a,o,s){r.isMeshBasicMaterial||r.isMeshLambertMaterial?i(e,r):r.isMeshToonMaterial?(i(e,r),function(e,t){t.gradientMap&&(e.gradientMap.value=t.gradientMap)}(e,r)):r.isMeshPhongMaterial?(i(e,r),function(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4)}(e,r)):r.isMeshStandardMaterial?(i(e,r),function(e,i){e.metalness.value=i.metalness,i.metalnessMap&&(e.metalnessMap.value=i.metalnessMap,n(i.metalnessMap,e.metalnessMapTransform)),e.roughness.value=i.roughness,i.roughnessMap&&(e.roughnessMap.value=i.roughnessMap,n(i.roughnessMap,e.roughnessMapTransform));t.get(i).envMap&&(e.envMapIntensity.value=i.envMapIntensity)}(e,r),r.isMeshPhysicalMaterial&&function(e,t,i){e.ior.value=t.ior,t.sheen>0&&(e.sheenColor.value.copy(t.sheenColor).multiplyScalar(t.sheen),e.sheenRoughness.value=t.sheenRoughness,t.sheenColorMap&&(e.sheenColorMap.value=t.sheenColorMap,n(t.sheenColorMap,e.sheenColorMapTransform)),t.sheenRoughnessMap&&(e.sheenRoughnessMap.value=t.sheenRoughnessMap,n(t.sheenRoughnessMap,e.sheenRoughnessMapTransform))),t.clearcoat>0&&(e.clearcoat.value=t.clearcoat,e.clearcoatRoughness.value=t.clearcoatRoughness,t.clearcoatMap&&(e.clearcoatMap.value=t.clearcoatMap,n(t.clearcoatMap,e.clearcoatMapTransform)),t.clearcoatRoughnessMap&&(e.clearcoatRoughnessMap.value=t.clearcoatRoughnessMap,n(t.clearcoatRoughnessMap,e.clearcoatRoughnessMapTransform)),t.clearcoatNormalMap&&(e.clearcoatNormalMap.value=t.clearcoatNormalMap,n(t.clearcoatNormalMap,e.clearcoatNormalMapTransform),e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale),t.side===$r&&e.clearcoatNormalScale.value.negate())),t.iridescence>0&&(e.iridescence.value=t.iridescence,e.iridescenceIOR.value=t.iridescenceIOR,e.iridescenceThicknessMinimum.value=t.iridescenceThicknessRange[0],e.iridescenceThicknessMaximum.value=t.iridescenceThicknessRange[1],t.iridescenceMap&&(e.iridescenceMap.value=t.iridescenceMap,n(t.iridescenceMap,e.iridescenceMapTransform)),t.iridescenceThicknessMap&&(e.iridescenceThicknessMap.value=t.iridescenceThicknessMap,n(t.iridescenceThicknessMap,e.iridescenceThicknessMapTransform))),t.transmission>0&&(e.transmission.value=t.transmission,e.transmissionSamplerMap.value=i.texture,e.transmissionSamplerSize.value.set(i.width,i.height),t.transmissionMap&&(e.transmissionMap.value=t.transmissionMap,n(t.transmissionMap,e.transmissionMapTransform)),e.thickness.value=t.thickness,t.thicknessMap&&(e.thicknessMap.value=t.thicknessMap,n(t.thicknessMap,e.thicknessMapTransform)),e.attenuationDistance.value=t.attenuationDistance,e.attenuationColor.value.copy(t.attenuationColor)),t.anisotropy>0&&(e.anisotropyVector.value.set(t.anisotropy*Math.cos(t.anisotropyRotation),t.anisotropy*Math.sin(t.anisotropyRotation)),t.anisotropyMap&&(e.anisotropyMap.value=t.anisotropyMap,n(t.anisotropyMap,e.anisotropyMapTransform))),e.specularIntensity.value=t.specularIntensity,e.specularColor.value.copy(t.specularColor),t.specularColorMap&&(e.specularColorMap.value=t.specularColorMap,n(t.specularColorMap,e.specularColorMapTransform)),t.specularIntensityMap&&(e.specularIntensityMap.value=t.specularIntensityMap,n(t.specularIntensityMap,e.specularIntensityMapTransform))}(e,r,s)):r.isMeshMatcapMaterial?(i(e,r),function(e,t){t.matcap&&(e.matcap.value=t.matcap)}(e,r)):r.isMeshDepthMaterial?i(e,r):r.isMeshDistanceMaterial?(i(e,r),function(e,n){const i=t.get(n).light;e.referencePosition.value.setFromMatrixPosition(i.matrixWorld),e.nearDistance.value=i.shadow.camera.near,e.farDistance.value=i.shadow.camera.far}(e,r)):r.isMeshNormalMaterial?i(e,r):r.isLineBasicMaterial?(function(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,t.map&&(e.map.value=t.map,n(t.map,e.mapTransform))}(e,r),r.isLineDashedMaterial&&function(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}(e,r)):r.isPointsMaterial?function(e,t,i,r){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.size.value=t.size*i,e.scale.value=.5*r,t.map&&(e.map.value=t.map,n(t.map,e.uvTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,n(t.alphaMap,e.alphaMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}(e,r,a,o):r.isSpriteMaterial?function(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.rotation.value=t.rotation,t.map&&(e.map.value=t.map,n(t.map,e.mapTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,n(t.alphaMap,e.alphaMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}(e,r):r.isShadowMaterial?(e.color.value.copy(r.color),e.opacity.value=r.opacity):r.isShaderMaterial&&(r.uniformsNeedUpdate=!1)}}}function Rf(e,t,n,i){let r={},a={},o=[];const s=n.isWebGL2?e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS):0;function l(e,t,n){const i=e.value;if(void 0===n[t]){if("number"==typeof i)n[t]=i;else{const e=Array.isArray(i)?i:[i],r=[];for(let t=0;t<e.length;t++)r.push(e[t].clone());n[t]=r}return!0}if("number"==typeof i){if(n[t]!==i)return n[t]=i,!0}else{const e=Array.isArray(n[t])?n[t]:[n[t]],r=Array.isArray(i)?i:[i];for(let t=0;t<e.length;t++){const n=e[t];if(!1===n.equals(r[t]))return n.copy(r[t]),!0}}return!1}function c(e){const t={boundary:0,storage:0};return"number"==typeof e?(t.boundary=4,t.storage=4):e.isVector2?(t.boundary=8,t.storage=8):e.isVector3||e.isColor?(t.boundary=16,t.storage=12):e.isVector4?(t.boundary=16,t.storage=16):e.isMatrix3?(t.boundary=48,t.storage=48):e.isMatrix4?(t.boundary=64,t.storage=64):e.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",e),t}function u(t){const n=t.target;n.removeEventListener("dispose",u);const i=o.indexOf(n.__bindingPointIndex);o.splice(i,1),e.deleteBuffer(r[n.id]),delete r[n.id],delete a[n.id]}return{bind:function(e,t){const n=t.program;i.uniformBlockBinding(e,n)},update:function(n,h){let d=r[n.id];void 0===d&&(function(e){const t=e.uniforms;let n=0;let i=0;for(let e=0,r=t.length;e<r;e++){const r=t[e],a={boundary:0,storage:0},o=Array.isArray(r.value)?r.value:[r.value];for(let e=0,t=o.length;e<t;e++){const t=c(o[e]);a.boundary+=t.boundary,a.storage+=t.storage}r.__data=new Float32Array(a.storage/Float32Array.BYTES_PER_ELEMENT),r.__offset=n,e>0&&(i=n%16,0!==i&&16-i-a.boundary<0&&(n+=16-i,r.__offset=n)),n+=a.storage}i=n%16,i>0&&(n+=16-i),e.__size=n,e.__cache={}}(n),d=function(t){const n=function(){for(let e=0;e<s;e++)if(-1===o.indexOf(e))return o.push(e),e;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}();t.__bindingPointIndex=n;const i=e.createBuffer(),r=t.__size,a=t.usage;return e.bindBuffer(e.UNIFORM_BUFFER,i),e.bufferData(e.UNIFORM_BUFFER,r,a),e.bindBuffer(e.UNIFORM_BUFFER,null),e.bindBufferBase(e.UNIFORM_BUFFER,n,i),i}(n),r[n.id]=d,n.addEventListener("dispose",u));const p=h.program;i.updateUBOMapping(n,p);const f=t.render.frame;a[n.id]!==f&&(function(t){const n=r[t.id],i=t.uniforms,a=t.__cache;e.bindBuffer(e.UNIFORM_BUFFER,n);for(let t=0,n=i.length;t<n;t++){const n=i[t];if(!0===l(n,t,a)){const t=n.__offset,i=Array.isArray(n.value)?n.value:[n.value];let r=0;for(let a=0;a<i.length;a++){const o=i[a],s=c(o);"number"==typeof o?(n.__data[0]=o,e.bufferSubData(e.UNIFORM_BUFFER,t+r,n.__data)):o.isMatrix3?(n.__data[0]=o.elements[0],n.__data[1]=o.elements[1],n.__data[2]=o.elements[2],n.__data[3]=o.elements[0],n.__data[4]=o.elements[3],n.__data[5]=o.elements[4],n.__data[6]=o.elements[5],n.__data[7]=o.elements[0],n.__data[8]=o.elements[6],n.__data[9]=o.elements[7],n.__data[10]=o.elements[8],n.__data[11]=o.elements[0]):(o.toArray(n.__data,r),r+=s.storage/Float32Array.BYTES_PER_ELEMENT)}e.bufferSubData(e.UNIFORM_BUFFER,t,n.__data)}}e.bindBuffer(e.UNIFORM_BUFFER,null)}(n),a[n.id]=f)},dispose:function(){for(const t in r)e.deleteBuffer(r[t]);o=[],r={},a={}}}}class Of{constructor(e={}){const{canvas:t=Yl(),context:n=null,depth:i=!0,stencil:r=!0,alpha:a=!1,antialias:o=!1,premultipliedAlpha:s=!0,preserveDrawingBuffer:l=!1,powerPreference:c="default",failIfMajorPerformanceCaveat:u=!1}=e;let h;this.isWebGLRenderer=!0,h=null!==n?n.getContextAttributes().alpha:a;const d=new Uint32Array(4),p=new Int32Array(4);let f=null,A=null;const m=[],g=[];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=Os,this._useLegacyLights=!1,this.toneMapping=Ba,this.toneMappingExposure=1;const v=this;let y=!1,b=0,w=0,x=null,M=-1,S=null;const E=new hc,_=new hc;let T=null;const C=new Uu(0);let I=0,D=t.width,N=t.height,L=1,R=null,O=null;const P=new hc(0,0,D,N),z=new hc(0,0,D,N);let k=!1;const U=new Jh;let B=!1,F=!1,j=null;const H=new qc,V=new jl,W=new bc,G={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function Q(){return null===x?L:1}let X,Y,Z,q,K,J,$,ee,te,ne,ie,re,ae,oe,se,le,ce,ue,he,de,pe,fe,Ae,me,ge=n;function ve(e,n){for(let i=0;i<e.length;i++){const r=e[i],a=t.getContext(r,n);if(null!==a)return a}return null}try{const e={alpha:!0,depth:i,stencil:r,antialias:o,premultipliedAlpha:s,preserveDrawingBuffer:l,powerPreference:c,failIfMajorPerformanceCaveat:u};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${jr}`),t.addEventListener("webglcontextlost",we,!1),t.addEventListener("webglcontextrestored",xe,!1),t.addEventListener("webglcontextcreationerror",Me,!1),null===ge){const t=["webgl2","webgl","experimental-webgl"];if(!0===v.isWebGL1Renderer&&t.shift(),ge=ve(t,e),null===ge)throw ve(t)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}"undefined"!=typeof WebGLRenderingContext&&ge instanceof WebGLRenderingContext&&console.warn("THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163."),void 0===ge.getShaderPrecisionFormat&&(ge.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(e){throw console.error("THREE.WebGLRenderer: "+e.message),e}function ye(){X=new Cd(ge),Y=new cd(ge,X,e),X.init(Y),fe=new Ef(ge,X,Y),Z=new Mf(ge,X,Y),q=new Nd(ge),K=new cf,J=new Sf(ge,X,Z,K,Y,fe,q),$=new hd(v),ee=new Td(v),te=new ed(ge,Y),Ae=new sd(ge,X,te,Y),ne=new Id(ge,te,q,Ae),ie=new Pd(ge,ne,te,q),he=new Od(ge,Y,J),le=new ud(K),re=new lf(v,$,ee,X,Y,Ae,le),ae=new Lf(v,K),oe=new pf,se=new yf(X,Y),ue=new od(v,$,ee,Z,ie,h,s),ce=new xf(v,ie,Y),me=new Rf(ge,q,Y,Z),de=new ld(ge,X,q,Y),pe=new Dd(ge,X,q,Y),q.programs=re.programs,v.capabilities=Y,v.extensions=X,v.properties=K,v.renderLists=oe,v.shadowMap=ce,v.state=Z,v.info=q}ye();const be=new Nf(v,ge);function we(e){e.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),y=!0}function xe(){console.log("THREE.WebGLRenderer: Context Restored."),y=!1;const e=q.autoReset,t=ce.enabled,n=ce.autoUpdate,i=ce.needsUpdate,r=ce.type;ye(),q.autoReset=e,ce.enabled=t,ce.autoUpdate=n,ce.needsUpdate=i,ce.type=r}function Me(e){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",e.statusMessage)}function Se(e){const t=e.target;t.removeEventListener("dispose",Se),function(e){(function(e){const t=K.get(e).programs;void 0!==t&&(t.forEach((function(e){re.releaseProgram(e)})),e.isShaderMaterial&&re.releaseShaderCache(e))})(e),K.remove(e)}(t)}function Ee(e,t,n){!0===e.transparent&&e.side===ea&&!1===e.forceSinglePass?(e.side=$r,e.needsUpdate=!0,Oe(e,t,n),e.side=Jr,e.needsUpdate=!0,Oe(e,t,n),e.side=ea):Oe(e,t,n)}this.xr=be,this.getContext=function(){return ge},this.getContextAttributes=function(){return ge.getContextAttributes()},this.forceContextLoss=function(){const e=X.get("WEBGL_lose_context");e&&e.loseContext()},this.forceContextRestore=function(){const e=X.get("WEBGL_lose_context");e&&e.restoreContext()},this.getPixelRatio=function(){return L},this.setPixelRatio=function(e){void 0!==e&&(L=e,this.setSize(D,N,!1))},this.getSize=function(e){return e.set(D,N)},this.setSize=function(e,n,i=!0){be.isPresenting?console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."):(D=e,N=n,t.width=Math.floor(e*L),t.height=Math.floor(n*L),!0===i&&(t.style.width=e+"px",t.style.height=n+"px"),this.setViewport(0,0,e,n))},this.getDrawingBufferSize=function(e){return e.set(D*L,N*L).floor()},this.setDrawingBufferSize=function(e,n,i){D=e,N=n,L=i,t.width=Math.floor(e*i),t.height=Math.floor(n*i),this.setViewport(0,0,e,n)},this.getCurrentViewport=function(e){return e.copy(E)},this.getViewport=function(e){return e.copy(P)},this.setViewport=function(e,t,n,i){e.isVector4?P.set(e.x,e.y,e.z,e.w):P.set(e,t,n,i),Z.viewport(E.copy(P).multiplyScalar(L).floor())},this.getScissor=function(e){return e.copy(z)},this.setScissor=function(e,t,n,i){e.isVector4?z.set(e.x,e.y,e.z,e.w):z.set(e,t,n,i),Z.scissor(_.copy(z).multiplyScalar(L).floor())},this.getScissorTest=function(){return k},this.setScissorTest=function(e){Z.setScissorTest(k=e)},this.setOpaqueSort=function(e){R=e},this.setTransparentSort=function(e){O=e},this.getClearColor=function(e){return e.copy(ue.getClearColor())},this.setClearColor=function(){ue.setClearColor.apply(ue,arguments)},this.getClearAlpha=function(){return ue.getClearAlpha()},this.setClearAlpha=function(){ue.setClearAlpha.apply(ue,arguments)},this.clear=function(e=!0,t=!0,n=!0){let i=0;if(e){let e=!1;if(null!==x){const t=x.texture.format;e=t===Oo||t===Ro||t===No}if(e){const e=x.texture.type,t=e===po||e===vo||e===mo||e===Mo||e===wo||e===xo,n=ue.getClearColor(),i=ue.getClearAlpha(),r=n.r,a=n.g,o=n.b;t?(d[0]=r,d[1]=a,d[2]=o,d[3]=i,ge.clearBufferuiv(ge.COLOR,0,d)):(p[0]=r,p[1]=a,p[2]=o,p[3]=i,ge.clearBufferiv(ge.COLOR,0,p))}else i|=ge.COLOR_BUFFER_BIT}t&&(i|=ge.DEPTH_BUFFER_BIT),n&&(i|=ge.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),ge.clear(i)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",we,!1),t.removeEventListener("webglcontextrestored",xe,!1),t.removeEventListener("webglcontextcreationerror",Me,!1),oe.dispose(),se.dispose(),K.dispose(),$.dispose(),ee.dispose(),ie.dispose(),Ae.dispose(),me.dispose(),re.dispose(),be.dispose(),be.removeEventListener("sessionstart",Te),be.removeEventListener("sessionend",Ce),j&&(j.dispose(),j=null),Ie.stop()},this.renderBufferDirect=function(e,t,n,i,r,a){null===t&&(t=G);const o=r.isMesh&&r.matrixWorld.determinant()<0,s=function(e,t,n,i,r){!0!==t.isScene&&(t=G),J.resetTextureUnits();const a=t.fog,o=i.isMeshStandardMaterial?t.environment:null,s=null===x?v.outputColorSpace:!0===x.isXRRenderTarget?x.texture.colorSpace:Ps,l=(i.isMeshStandardMaterial?ee:$).get(i.envMap||o),c=!0===i.vertexColors&&!!n.attributes.color&&4===n.attributes.color.itemSize,u=!!n.attributes.tangent&&(!!i.normalMap||i.anisotropy>0),h=!!n.morphAttributes.position,d=!!n.morphAttributes.normal,p=!!n.morphAttributes.color;let f=Ba;i.toneMapped&&(null!==x&&!0!==x.isXRRenderTarget||(f=v.toneMapping));const m=n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color,g=void 0!==m?m.length:0,y=K.get(i),b=A.state.lights;if(!0===B&&(!0===F||e!==S)){const t=e===S&&i.id===M;le.setState(i,e,t)}let w=!1;i.version===y.__version?y.needsLights&&y.lightsStateVersion!==b.state.version||y.outputColorSpace!==s||r.isInstancedMesh&&!1===y.instancing?w=!0:r.isInstancedMesh||!0!==y.instancing?r.isSkinnedMesh&&!1===y.skinning?w=!0:r.isSkinnedMesh||!0!==y.skinning?r.isInstancedMesh&&!0===y.instancingColor&&null===r.instanceColor||r.isInstancedMesh&&!1===y.instancingColor&&null!==r.instanceColor||y.envMap!==l||!0===i.fog&&y.fog!==a?w=!0:void 0===y.numClippingPlanes||y.numClippingPlanes===le.numPlanes&&y.numIntersection===le.numIntersection?(y.vertexAlphas!==c||y.vertexTangents!==u||y.morphTargets!==h||y.morphNormals!==d||y.morphColors!==p||y.toneMapping!==f||!0===Y.isWebGL2&&y.morphTargetsCount!==g)&&(w=!0):w=!0:w=!0:w=!0:(w=!0,y.__version=i.version);let E=y.currentProgram;!0===w&&(E=Oe(i,t,r));let _=!1,T=!1,C=!1;const I=E.getUniforms(),D=y.uniforms;if(Z.useProgram(E.program)&&(_=!0,T=!0,C=!0),i.id!==M&&(M=i.id,T=!0),_||S!==e){I.setValue(ge,"projectionMatrix",e.projectionMatrix),I.setValue(ge,"viewMatrix",e.matrixWorldInverse);const t=I.map.cameraPosition;void 0!==t&&t.setValue(ge,W.setFromMatrixPosition(e.matrixWorld)),Y.logarithmicDepthBuffer&&I.setValue(ge,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial)&&I.setValue(ge,"isOrthographic",!0===e.isOrthographicCamera),S!==e&&(S=e,T=!0,C=!0)}if(r.isSkinnedMesh){I.setOptional(ge,r,"bindMatrix"),I.setOptional(ge,r,"bindMatrixInverse");const e=r.skeleton;e&&(Y.floatVertexTextures?(null===e.boneTexture&&e.computeBoneTexture(),I.setValue(ge,"boneTexture",e.boneTexture,J),I.setValue(ge,"boneTextureSize",e.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 R=n.morphAttributes;var O,P;if((void 0!==R.position||void 0!==R.normal||void 0!==R.color&&!0===Y.isWebGL2)&&he.update(r,n,E),(T||y.receiveShadow!==r.receiveShadow)&&(y.receiveShadow=r.receiveShadow,I.setValue(ge,"receiveShadow",r.receiveShadow)),i.isMeshGouraudMaterial&&null!==i.envMap&&(D.envMap.value=l,D.flipEnvMap.value=l.isCubeTexture&&!1===l.isRenderTargetTexture?-1:1),T&&(I.setValue(ge,"toneMappingExposure",v.toneMappingExposure),y.needsLights&&(P=C,(O=D).ambientLightColor.needsUpdate=P,O.lightProbe.needsUpdate=P,O.directionalLights.needsUpdate=P,O.directionalLightShadows.needsUpdate=P,O.pointLights.needsUpdate=P,O.pointLightShadows.needsUpdate=P,O.spotLights.needsUpdate=P,O.spotLightShadows.needsUpdate=P,O.rectAreaLights.needsUpdate=P,O.hemisphereLights.needsUpdate=P),a&&!0===i.fog&&ae.refreshFogUniforms(D,a),ae.refreshMaterialUniforms(D,i,L,N,j),Bp.upload(ge,Pe(y),D,J)),i.isShaderMaterial&&!0===i.uniformsNeedUpdate&&(Bp.upload(ge,Pe(y),D,J),i.uniformsNeedUpdate=!1),i.isSpriteMaterial&&I.setValue(ge,"center",r.center),I.setValue(ge,"modelViewMatrix",r.modelViewMatrix),I.setValue(ge,"normalMatrix",r.normalMatrix),I.setValue(ge,"modelMatrix",r.matrixWorld),i.isShaderMaterial||i.isRawShaderMaterial){const e=i.uniformsGroups;for(let t=0,n=e.length;t<n;t++)if(Y.isWebGL2){const n=e[t];me.update(n,E),me.bind(n,E)}else console.warn("THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.")}return E}(e,t,n,i,r);Z.setMaterial(i,o);let l=n.index,c=1;if(!0===i.wireframe){if(l=ne.getWireframeAttribute(n),void 0===l)return;c=2}const u=n.drawRange,h=n.attributes.position;let d=u.start*c,p=(u.start+u.count)*c;null!==a&&(d=Math.max(d,a.start*c),p=Math.min(p,(a.start+a.count)*c)),null!==l?(d=Math.max(d,0),p=Math.min(p,l.count)):null!=h&&(d=Math.max(d,0),p=Math.min(p,h.count));const f=p-d;if(f<0||f===1/0)return;let m;Ae.setup(r,i,s,n,l);let g=de;if(null!==l&&(m=te.get(l),g=pe,g.setIndex(m)),r.isMesh)!0===i.wireframe?(Z.setLineWidth(i.wireframeLinewidth*Q()),g.setMode(ge.LINES)):g.setMode(ge.TRIANGLES);else if(r.isLine){let e=i.linewidth;void 0===e&&(e=1),Z.setLineWidth(e*Q()),r.isLineSegments?g.setMode(ge.LINES):r.isLineLoop?g.setMode(ge.LINE_LOOP):g.setMode(ge.LINE_STRIP)}else r.isPoints?g.setMode(ge.POINTS):r.isSprite&&g.setMode(ge.TRIANGLES);if(r.isInstancedMesh)g.renderInstances(d,f,r.count);else if(n.isInstancedBufferGeometry){const e=void 0!==n._maxInstanceCount?n._maxInstanceCount:1/0,t=Math.min(n.instanceCount,e);g.renderInstances(d,f,t)}else g.render(d,f)},this.compile=function(e,t,n=null){null===n&&(n=e),A=se.get(n),A.init(),g.push(A),n.traverseVisible((function(e){e.isLight&&e.layers.test(t.layers)&&(A.pushLight(e),e.castShadow&&A.pushShadow(e))})),e!==n&&e.traverseVisible((function(e){e.isLight&&e.layers.test(t.layers)&&(A.pushLight(e),e.castShadow&&A.pushShadow(e))})),A.setupLights(v._useLegacyLights);const i=new Set;return e.traverse((function(e){const t=e.material;if(t)if(Array.isArray(t))for(let r=0;r<t.length;r++){const a=t[r];Ee(a,n,e),i.add(a)}else Ee(t,n,e),i.add(t)})),g.pop(),A=null,i},this.compileAsync=function(e,t,n=null){const i=this.compile(e,t,n);return new Promise((t=>{function n(){i.forEach((function(e){K.get(e).currentProgram.isReady()&&i.delete(e)})),0!==i.size?setTimeout(n,10):t(e)}null!==X.get("KHR_parallel_shader_compile")?n():setTimeout(n,10)}))};let _e=null;function Te(){Ie.stop()}function Ce(){Ie.start()}const Ie=new $h;function De(e,t,n,i){if(!1===e.visible)return;if(e.layers.test(t.layers))if(e.isGroup)n=e.renderOrder;else if(e.isLOD)!0===e.autoUpdate&&e.update(t);else if(e.isLight)A.pushLight(e),e.castShadow&&A.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||U.intersectsSprite(e)){i&&W.setFromMatrixPosition(e.matrixWorld).applyMatrix4(H);const t=ie.update(e),r=e.material;r.visible&&f.push(e,t,r,n,W.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||U.intersectsObject(e))){const t=ie.update(e),r=e.material;if(i&&(void 0!==e.boundingSphere?(null===e.boundingSphere&&e.computeBoundingSphere(),W.copy(e.boundingSphere.center)):(null===t.boundingSphere&&t.computeBoundingSphere(),W.copy(t.boundingSphere.center)),W.applyMatrix4(e.matrixWorld).applyMatrix4(H)),Array.isArray(r)){const i=t.groups;for(let a=0,o=i.length;a<o;a++){const o=i[a],s=r[o.materialIndex];s&&s.visible&&f.push(e,t,s,n,W.z,o)}}else r.visible&&f.push(e,t,r,n,W.z,null)}const r=e.children;for(let e=0,a=r.length;e<a;e++)De(r[e],t,n,i)}function Ne(e,t,n,i){const r=e.opaque,a=e.transmissive,o=e.transparent;A.setupLightsView(n),!0===B&&le.setGlobalState(v.clippingPlanes,n),a.length>0&&function(e,t,n,i){if(null!==(!0===n.isScene?n.overrideMaterial:null))return;const r=Y.isWebGL2;null===j&&(j=new pc(1,1,{generateMipmaps:!0,type:X.has("EXT_color_buffer_half_float")?bo:po,minFilter:uo,samples:r?4:0})),v.getDrawingBufferSize(V),r?j.setSize(V.x,V.y):j.setSize(kl(V.x),kl(V.y));const a=v.getRenderTarget();v.setRenderTarget(j),v.getClearColor(C),I=v.getClearAlpha(),I<1&&v.setClearColor(16777215,.5),v.clear();const o=v.toneMapping;v.toneMapping=Ba,Le(e,n,i),J.updateMultisampleRenderTarget(j),J.updateRenderTargetMipmap(j);let s=!1;for(let e=0,r=t.length;e<r;e++){const r=t[e],a=r.object,o=r.geometry,l=r.material,c=r.group;if(l.side===ea&&a.layers.test(i.layers)){const e=l.side;l.side=$r,l.needsUpdate=!0,Re(a,n,i,o,l,c),l.side=e,l.needsUpdate=!0,s=!0}}!0===s&&(J.updateMultisampleRenderTarget(j),J.updateRenderTargetMipmap(j)),v.setRenderTarget(a),v.setClearColor(C,I),v.toneMapping=o}(r,a,t,n),i&&Z.viewport(E.copy(i)),r.length>0&&Le(r,t,n),a.length>0&&Le(a,t,n),o.length>0&&Le(o,t,n),Z.buffers.depth.setTest(!0),Z.buffers.depth.setMask(!0),Z.buffers.color.setMask(!0),Z.setPolygonOffset(!1)}function Le(e,t,n){const i=!0===t.isScene?t.overrideMaterial:null;for(let r=0,a=e.length;r<a;r++){const a=e[r],o=a.object,s=a.geometry,l=null===i?a.material:i,c=a.group;o.layers.test(n.layers)&&Re(o,t,n,s,l,c)}}function Re(e,t,n,i,r,a){e.onBeforeRender(v,t,n,i,r,a),e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix),r.onBeforeRender(v,t,n,i,e,a),!0===r.transparent&&r.side===ea&&!1===r.forceSinglePass?(r.side=$r,r.needsUpdate=!0,v.renderBufferDirect(n,t,i,r,e,a),r.side=Jr,r.needsUpdate=!0,v.renderBufferDirect(n,t,i,r,e,a),r.side=ea):v.renderBufferDirect(n,t,i,r,e,a),e.onAfterRender(v,t,n,i,r,a)}function Oe(e,t,n){!0!==t.isScene&&(t=G);const i=K.get(e),r=A.state.lights,a=A.state.shadowsArray,o=r.state.version,s=re.getParameters(e,r.state,a,t,n),l=re.getProgramCacheKey(s);let c=i.programs;i.environment=e.isMeshStandardMaterial?t.environment:null,i.fog=t.fog,i.envMap=(e.isMeshStandardMaterial?ee:$).get(e.envMap||i.environment),void 0===c&&(e.addEventListener("dispose",Se),c=new Map,i.programs=c);let u=c.get(l);if(void 0!==u){if(i.currentProgram===u&&i.lightsStateVersion===o)return ze(e,s),u}else s.uniforms=re.getUniforms(e),e.onBuild(n,s,v),e.onBeforeCompile(s,v),u=re.acquireProgram(s,l),c.set(l,u),i.uniforms=s.uniforms;const h=i.uniforms;return(e.isShaderMaterial||e.isRawShaderMaterial)&&!0!==e.clipping||(h.clippingPlanes=le.uniform),ze(e,s),i.needsLights=function(e){return e.isMeshLambertMaterial||e.isMeshToonMaterial||e.isMeshPhongMaterial||e.isMeshStandardMaterial||e.isShadowMaterial||e.isShaderMaterial&&!0===e.lights}(e),i.lightsStateVersion=o,i.needsLights&&(h.ambientLightColor.value=r.state.ambient,h.lightProbe.value=r.state.probe,h.directionalLights.value=r.state.directional,h.directionalLightShadows.value=r.state.directionalShadow,h.spotLights.value=r.state.spot,h.spotLightShadows.value=r.state.spotShadow,h.rectAreaLights.value=r.state.rectArea,h.ltc_1.value=r.state.rectAreaLTC1,h.ltc_2.value=r.state.rectAreaLTC2,h.pointLights.value=r.state.point,h.pointLightShadows.value=r.state.pointShadow,h.hemisphereLights.value=r.state.hemi,h.directionalShadowMap.value=r.state.directionalShadowMap,h.directionalShadowMatrix.value=r.state.directionalShadowMatrix,h.spotShadowMap.value=r.state.spotShadowMap,h.spotLightMatrix.value=r.state.spotLightMatrix,h.spotLightMap.value=r.state.spotLightMap,h.pointShadowMap.value=r.state.pointShadowMap,h.pointShadowMatrix.value=r.state.pointShadowMatrix),i.currentProgram=u,i.uniformsList=null,u}function Pe(e){if(null===e.uniformsList){const t=e.currentProgram.getUniforms();e.uniformsList=Bp.seqWithValue(t.seq,e.uniforms)}return e.uniformsList}function ze(e,t){const n=K.get(e);n.outputColorSpace=t.outputColorSpace,n.instancing=t.instancing,n.instancingColor=t.instancingColor,n.skinning=t.skinning,n.morphTargets=t.morphTargets,n.morphNormals=t.morphNormals,n.morphColors=t.morphColors,n.morphTargetsCount=t.morphTargetsCount,n.numClippingPlanes=t.numClippingPlanes,n.numIntersection=t.numClipIntersection,n.vertexAlphas=t.vertexAlphas,n.vertexTangents=t.vertexTangents,n.toneMapping=t.toneMapping}Ie.setAnimationLoop((function(e){_e&&_e(e)})),"undefined"!=typeof self&&Ie.setContext(self),this.setAnimationLoop=function(e){_e=e,be.setAnimationLoop(e),null===e?Ie.stop():Ie.start()},be.addEventListener("sessionstart",Te),be.addEventListener("sessionend",Ce),this.render=function(e,t){if(void 0!==t&&!0!==t.isCamera)return void console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");if(!0===y)return;!0===e.matrixWorldAutoUpdate&&e.updateMatrixWorld(),null===t.parent&&!0===t.matrixWorldAutoUpdate&&t.updateMatrixWorld(),!0===be.enabled&&!0===be.isPresenting&&(!0===be.cameraAutoUpdate&&be.updateCamera(t),t=be.getCamera()),!0===e.isScene&&e.onBeforeRender(v,e,t,x),A=se.get(e,g.length),A.init(),g.push(A),H.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),U.setFromProjectionMatrix(H),F=this.localClippingEnabled,B=le.init(this.clippingPlanes,F),f=oe.get(e,m.length),f.init(),m.push(f),De(e,t,0,v.sortObjects),f.finish(),!0===v.sortObjects&&f.sort(R,O),this.info.render.frame++,!0===B&&le.beginShadows();const n=A.state.shadowsArray;if(ce.render(n,e,t),!0===B&&le.endShadows(),!0===this.info.autoReset&&this.info.reset(),ue.render(f,e),A.setupLights(v._useLegacyLights),t.isArrayCamera){const n=t.cameras;for(let t=0,i=n.length;t<i;t++){const i=n[t];Ne(f,e,i,i.viewport)}}else Ne(f,e,t);null!==x&&(J.updateMultisampleRenderTarget(x),J.updateRenderTargetMipmap(x)),!0===e.isScene&&e.onAfterRender(v,e,t),Ae.resetDefaultState(),M=-1,S=null,g.pop(),A=g.length>0?g[g.length-1]:null,m.pop(),f=m.length>0?m[m.length-1]:null},this.getActiveCubeFace=function(){return b},this.getActiveMipmapLevel=function(){return w},this.getRenderTarget=function(){return x},this.setRenderTargetTextures=function(e,t,n){K.get(e.texture).__webglTexture=t,K.get(e.depthTexture).__webglTexture=n;const i=K.get(e);i.__hasExternalTextures=!0,i.__hasExternalTextures&&(i.__autoAllocateDepthBuffer=void 0===n,i.__autoAllocateDepthBuffer||!0===X.has("WEBGL_multisampled_render_to_texture")&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),i.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(e,t){const n=K.get(e);n.__webglFramebuffer=t,n.__useDefaultFramebuffer=void 0===t},this.setRenderTarget=function(e,t=0,n=0){x=e,b=t,w=n;let i=!0,r=null,a=!1,o=!1;if(e){const s=K.get(e);void 0!==s.__useDefaultFramebuffer?(Z.bindFramebuffer(ge.FRAMEBUFFER,null),i=!1):void 0===s.__webglFramebuffer?J.setupRenderTarget(e):s.__hasExternalTextures&&J.rebindTextures(e,K.get(e.texture).__webglTexture,K.get(e.depthTexture).__webglTexture);const l=e.texture;(l.isData3DTexture||l.isDataArrayTexture||l.isCompressedArrayTexture)&&(o=!0);const c=K.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(r=Array.isArray(c[t])?c[t][n]:c[t],a=!0):r=Y.isWebGL2&&e.samples>0&&!1===J.useMultisampledRTT(e)?K.get(e).__webglMultisampledFramebuffer:Array.isArray(c)?c[n]:c,E.copy(e.viewport),_.copy(e.scissor),T=e.scissorTest}else E.copy(P).multiplyScalar(L).floor(),_.copy(z).multiplyScalar(L).floor(),T=k;if(Z.bindFramebuffer(ge.FRAMEBUFFER,r)&&Y.drawBuffers&&i&&Z.drawBuffers(e,r),Z.viewport(E),Z.scissor(_),Z.setScissorTest(T),a){const i=K.get(e.texture);ge.framebufferTexture2D(ge.FRAMEBUFFER,ge.COLOR_ATTACHMENT0,ge.TEXTURE_CUBE_MAP_POSITIVE_X+t,i.__webglTexture,n)}else if(o){const i=K.get(e.texture),r=t||0;ge.framebufferTextureLayer(ge.FRAMEBUFFER,ge.COLOR_ATTACHMENT0,i.__webglTexture,n||0,r)}M=-1},this.readRenderTargetPixels=function(e,t,n,i,r,a,o){if(!e||!e.isWebGLRenderTarget)return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let s=K.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==o&&(s=s[o]),s){Z.bindFramebuffer(ge.FRAMEBUFFER,s);try{const o=e.texture,s=o.format,l=o.type;if(s!==Eo&&fe.convert(s)!==ge.getParameter(ge.IMPLEMENTATION_COLOR_READ_FORMAT))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");const c=l===bo&&(X.has("EXT_color_buffer_half_float")||Y.isWebGL2&&X.has("EXT_color_buffer_float"));if(!(l===po||fe.convert(l)===ge.getParameter(ge.IMPLEMENTATION_COLOR_READ_TYPE)||l===yo&&(Y.isWebGL2||X.has("OES_texture_float")||X.has("WEBGL_color_buffer_float"))||c))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");t>=0&&t<=e.width-i&&n>=0&&n<=e.height-r&&ge.readPixels(t,n,i,r,fe.convert(s),fe.convert(l),a)}finally{const e=null!==x?K.get(x).__webglFramebuffer:null;Z.bindFramebuffer(ge.FRAMEBUFFER,e)}}},this.copyFramebufferToTexture=function(e,t,n=0){const i=Math.pow(2,-n),r=Math.floor(t.image.width*i),a=Math.floor(t.image.height*i);J.setTexture2D(t,0),ge.copyTexSubImage2D(ge.TEXTURE_2D,n,0,0,e.x,e.y,r,a),Z.unbindTexture()},this.copyTextureToTexture=function(e,t,n,i=0){const r=t.image.width,a=t.image.height,o=fe.convert(n.format),s=fe.convert(n.type);J.setTexture2D(n,0),ge.pixelStorei(ge.UNPACK_FLIP_Y_WEBGL,n.flipY),ge.pixelStorei(ge.UNPACK_PREMULTIPLY_ALPHA_WEBGL,n.premultiplyAlpha),ge.pixelStorei(ge.UNPACK_ALIGNMENT,n.unpackAlignment),t.isDataTexture?ge.texSubImage2D(ge.TEXTURE_2D,i,e.x,e.y,r,a,o,s,t.image.data):t.isCompressedTexture?ge.compressedTexSubImage2D(ge.TEXTURE_2D,i,e.x,e.y,t.mipmaps[0].width,t.mipmaps[0].height,o,t.mipmaps[0].data):ge.texSubImage2D(ge.TEXTURE_2D,i,e.x,e.y,o,s,t.image),0===i&&n.generateMipmaps&&ge.generateMipmap(ge.TEXTURE_2D),Z.unbindTexture()},this.copyTextureToTexture3D=function(e,t,n,i,r=0){if(v.isWebGL1Renderer)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");const a=e.max.x-e.min.x+1,o=e.max.y-e.min.y+1,s=e.max.z-e.min.z+1,l=fe.convert(i.format),c=fe.convert(i.type);let u;if(i.isData3DTexture)J.setTexture3D(i,0),u=ge.TEXTURE_3D;else{if(!i.isDataArrayTexture)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");J.setTexture2DArray(i,0),u=ge.TEXTURE_2D_ARRAY}ge.pixelStorei(ge.UNPACK_FLIP_Y_WEBGL,i.flipY),ge.pixelStorei(ge.UNPACK_PREMULTIPLY_ALPHA_WEBGL,i.premultiplyAlpha),ge.pixelStorei(ge.UNPACK_ALIGNMENT,i.unpackAlignment);const h=ge.getParameter(ge.UNPACK_ROW_LENGTH),d=ge.getParameter(ge.UNPACK_IMAGE_HEIGHT),p=ge.getParameter(ge.UNPACK_SKIP_PIXELS),f=ge.getParameter(ge.UNPACK_SKIP_ROWS),A=ge.getParameter(ge.UNPACK_SKIP_IMAGES),m=n.isCompressedTexture?n.mipmaps[0]:n.image;ge.pixelStorei(ge.UNPACK_ROW_LENGTH,m.width),ge.pixelStorei(ge.UNPACK_IMAGE_HEIGHT,m.height),ge.pixelStorei(ge.UNPACK_SKIP_PIXELS,e.min.x),ge.pixelStorei(ge.UNPACK_SKIP_ROWS,e.min.y),ge.pixelStorei(ge.UNPACK_SKIP_IMAGES,e.min.z),n.isDataTexture||n.isData3DTexture?ge.texSubImage3D(u,r,t.x,t.y,t.z,a,o,s,l,c,m.data):n.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),ge.compressedTexSubImage3D(u,r,t.x,t.y,t.z,a,o,s,l,m.data)):ge.texSubImage3D(u,r,t.x,t.y,t.z,a,o,s,l,c,m),ge.pixelStorei(ge.UNPACK_ROW_LENGTH,h),ge.pixelStorei(ge.UNPACK_IMAGE_HEIGHT,d),ge.pixelStorei(ge.UNPACK_SKIP_PIXELS,p),ge.pixelStorei(ge.UNPACK_SKIP_ROWS,f),ge.pixelStorei(ge.UNPACK_SKIP_IMAGES,A),0===r&&i.generateMipmaps&&ge.generateMipmap(u),Z.unbindTexture()},this.initTexture=function(e){e.isCubeTexture?J.setTextureCube(e,0):e.isData3DTexture?J.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?J.setTexture2DArray(e,0):J.setTexture2D(e,0),Z.unbindTexture()},this.resetState=function(){b=0,w=0,x=null,Z.reset(),Ae.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return Sl}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;const t=this.getContext();t.drawingBufferColorSpace=e===zs?"display-p3":"srgb",t.unpackColorSpace=tc.workingColorSpace===ks?"display-p3":"srgb"}get physicallyCorrectLights(){return console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),!this.useLegacyLights}set physicallyCorrectLights(e){console.warn("THREE.WebGLRenderer: The property .physicallyCorrectLights has been removed. Set renderer.useLegacyLights instead."),this.useLegacyLights=!e}get outputEncoding(){return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace===Os?Cs:Ts}set outputEncoding(e){console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace=e===Cs?Os:Ps}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(e){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=e}}class Pf extends Of{}Pf.prototype.isWebGL1Renderer=!0;class zf{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new Uu(e),this.density=t}clone(){return new zf(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class kf{constructor(e,t=1,n=1e3){this.isFog=!0,this.name="",this.color=new Uu(e),this.near=t,this.far=n}clone(){return new kf(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class Uf extends wu{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,"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),null!==e.background&&(this.background=e.background.clone()),null!==e.environment&&(this.environment=e.environment.clone()),null!==e.fog&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,null!==e.overrideMaterial&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return null!==this.fog&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(t.object.backgroundIntensity=this.backgroundIntensity),t}}class Bf{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.usage=dl,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=Nl()}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let i=0,r=this.stride;i<r;i++)this.array[e+i]=t.array[n+i];return this}set(e,t=0){return this.array.set(e,t),this}clone(e){void 0===e.arrayBuffers&&(e.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=Nl()),void 0===e.arrayBuffers[this.array.buffer._uuid]&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);const t=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),n=new this.constructor(t,this.stride);return n.setUsage(this.usage),n}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return void 0===e.arrayBuffers&&(e.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=Nl()),void 0===e.arrayBuffers[this.array.buffer._uuid]&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}}const Ff=new bc;class jf{constructor(e,t,n,i=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=e,this.itemSize=t,this.offset=n,this.normalized=i}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let t=0,n=this.data.count;t<n;t++)Ff.fromBufferAttribute(this,t),Ff.applyMatrix4(e),this.setXYZ(t,Ff.x,Ff.y,Ff.z);return this}applyNormalMatrix(e){for(let t=0,n=this.count;t<n;t++)Ff.fromBufferAttribute(this,t),Ff.applyNormalMatrix(e),this.setXYZ(t,Ff.x,Ff.y,Ff.z);return this}transformDirection(e){for(let t=0,n=this.count;t<n;t++)Ff.fromBufferAttribute(this,t),Ff.transformDirection(e),this.setXYZ(t,Ff.x,Ff.y,Ff.z);return this}setX(e,t){return this.normalized&&(t=Bl(t,this.array)),this.data.array[e*this.data.stride+this.offset]=t,this}setY(e,t){return this.normalized&&(t=Bl(t,this.array)),this.data.array[e*this.data.stride+this.offset+1]=t,this}setZ(e,t){return this.normalized&&(t=Bl(t,this.array)),this.data.array[e*this.data.stride+this.offset+2]=t,this}setW(e,t){return this.normalized&&(t=Bl(t,this.array)),this.data.array[e*this.data.stride+this.offset+3]=t,this}getX(e){let t=this.data.array[e*this.data.stride+this.offset];return this.normalized&&(t=Ul(t,this.array)),t}getY(e){let t=this.data.array[e*this.data.stride+this.offset+1];return this.normalized&&(t=Ul(t,this.array)),t}getZ(e){let t=this.data.array[e*this.data.stride+this.offset+2];return this.normalized&&(t=Ul(t,this.array)),t}getW(e){let t=this.data.array[e*this.data.stride+this.offset+3];return this.normalized&&(t=Ul(t,this.array)),t}setXY(e,t,n){return e=e*this.data.stride+this.offset,this.normalized&&(t=Bl(t,this.array),n=Bl(n,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this}setXYZ(e,t,n,i){return e=e*this.data.stride+this.offset,this.normalized&&(t=Bl(t,this.array),n=Bl(n,this.array),i=Bl(i,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this}setXYZW(e,t,n,i,r){return e=e*this.data.stride+this.offset,this.normalized&&(t=Bl(t,this.array),n=Bl(n,this.array),i=Bl(i,this.array),r=Bl(r,this.array)),this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this.data.array[e+3]=r,this}clone(e){if(void 0===e){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.");const e=[];for(let t=0;t<this.count;t++){const n=t*this.data.stride+this.offset;for(let t=0;t<this.itemSize;t++)e.push(this.data.array[n+t])}return new qu(new this.array.constructor(e),this.itemSize,this.normalized)}return void 0===e.interleavedBuffers&&(e.interleavedBuffers={}),void 0===e.interleavedBuffers[this.data.uuid]&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new jf(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(e){if(void 0===e){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.");const e=[];for(let t=0;t<this.count;t++){const n=t*this.data.stride+this.offset;for(let t=0;t<this.itemSize;t++)e.push(this.data.array[n+t])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:e,normalized:this.normalized}}return void 0===e.interleavedBuffers&&(e.interleavedBuffers={}),void 0===e.interleavedBuffers[this.data.uuid]&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}}class Hf extends ju{constructor(e){super(),this.isSpriteMaterial=!0,this.type="SpriteMaterial",this.color=new Uu(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}let Vf;const Wf=new bc,Gf=new bc,Qf=new bc,Xf=new jl,Yf=new jl,Zf=new qc,qf=new bc,Kf=new bc,Jf=new bc,$f=new jl,eA=new jl,tA=new jl;class nA extends wu{constructor(e=new Hf){if(super(),this.isSprite=!0,this.type="Sprite",void 0===Vf){Vf=new fh;const e=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),t=new Bf(e,5);Vf.setIndex([0,1,2,0,2,3]),Vf.setAttribute("position",new jf(t,3,0,!1)),Vf.setAttribute("uv",new jf(t,2,3,!1))}this.geometry=Vf,this.material=e,this.center=new jl(.5,.5)}raycast(e,t){null===e.camera&&console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),Gf.setFromMatrixScale(this.matrixWorld),Zf.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),Qf.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&!1===this.material.sizeAttenuation&&Gf.multiplyScalar(-Qf.z);const n=this.material.rotation;let i,r;0!==n&&(r=Math.cos(n),i=Math.sin(n));const a=this.center;iA(qf.set(-.5,-.5,0),Qf,a,Gf,i,r),iA(Kf.set(.5,-.5,0),Qf,a,Gf,i,r),iA(Jf.set(.5,.5,0),Qf,a,Gf,i,r),$f.set(0,0),eA.set(1,0),tA.set(1,1);let o=e.ray.intersectTriangle(qf,Kf,Jf,!1,Wf);if(null===o&&(iA(Kf.set(-.5,.5,0),Qf,a,Gf,i,r),eA.set(0,1),o=e.ray.intersectTriangle(qf,Jf,Kf,!1,Wf),null===o))return;const s=e.ray.origin.distanceTo(Wf);s<e.near||s>e.far||t.push({distance:s,point:Wf.clone(),uv:Ru.getInterpolation(Wf,qf,Kf,Jf,$f,eA,tA,new jl),face:null,object:this})}copy(e,t){return super.copy(e,t),void 0!==e.center&&this.center.copy(e.center),this.material=e.material,this}}function iA(e,t,n,i,r,a){Xf.subVectors(e,n).addScalar(.5).multiply(i),void 0!==r?(Yf.x=a*Xf.x-r*Xf.y,Yf.y=r*Xf.x+a*Xf.y):Yf.copy(Xf),e.copy(t),e.x+=Yf.x,e.y+=Yf.y,e.applyMatrix4(Zf)}const rA=new bc,aA=new bc;class oA extends wu{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const t=e.levels;for(let e=0,n=t.length;e<n;e++){const n=t[e];this.addLevel(n.object.clone(),n.distance,n.hysteresis)}return this.autoUpdate=e.autoUpdate,this}addLevel(e,t=0,n=0){t=Math.abs(t);const i=this.levels;let r;for(r=0;r<i.length&&!(t<i[r].distance);r++);return i.splice(r,0,{distance:t,hysteresis:n,object:e}),this.add(e),this}getCurrentLevel(){return this._currentLevel}getObjectForDistance(e){const t=this.levels;if(t.length>0){let n,i;for(n=1,i=t.length;n<i;n++){let i=t[n].distance;if(t[n].object.visible&&(i-=i*t[n].hysteresis),e<i)break}return t[n-1].object}return null}raycast(e,t){if(this.levels.length>0){rA.setFromMatrixPosition(this.matrixWorld);const n=e.ray.origin.distanceTo(rA);this.getObjectForDistance(n).raycast(e,t)}}update(e){const t=this.levels;if(t.length>1){rA.setFromMatrixPosition(e.matrixWorld),aA.setFromMatrixPosition(this.matrixWorld);const n=rA.distanceTo(aA)/e.zoom;let i,r;for(t[0].object.visible=!0,i=1,r=t.length;i<r;i++){let e=t[i].distance;if(t[i].object.visible&&(e-=e*t[i].hysteresis),!(n>=e))break;t[i-1].object.visible=!1,t[i].object.visible=!0}for(this._currentLevel=i-1;i<r;i++)t[i].object.visible=!1}}toJSON(e){const t=super.toJSON(e);!1===this.autoUpdate&&(t.object.autoUpdate=!1),t.object.levels=[];const n=this.levels;for(let e=0,i=n.length;e<i;e++){const i=n[e];t.object.levels.push({object:i.object.uuid,distance:i.distance,hysteresis:i.hysteresis})}return t}}const sA=new bc,lA=new hc,cA=new hc,uA=new bc,hA=new qc,dA=new bc,pA=new jc,fA=new qc,AA=new Zc;class mA extends Lh{constructor(e,t){super(e,t),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode=Ga,this.bindMatrix=new qc,this.bindMatrixInverse=new qc,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){const e=this.geometry;null===this.boundingBox&&(this.boundingBox=new Mc),this.boundingBox.makeEmpty();const t=e.getAttribute("position");for(let e=0;e<t.count;e++)this.getVertexPosition(e,dA),this.boundingBox.expandByPoint(dA)}computeBoundingSphere(){const e=this.geometry;null===this.boundingSphere&&(this.boundingSphere=new jc),this.boundingSphere.makeEmpty();const t=e.getAttribute("position");for(let e=0;e<t.count;e++)this.getVertexPosition(e,dA),this.boundingSphere.expandByPoint(dA)}copy(e,t){return super.copy(e,t),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),this}raycast(e,t){const n=this.material,i=this.matrixWorld;void 0!==n&&(null===this.boundingSphere&&this.computeBoundingSphere(),pA.copy(this.boundingSphere),pA.applyMatrix4(i),!1!==e.ray.intersectsSphere(pA)&&(fA.copy(i).invert(),AA.copy(e.ray).applyMatrix4(fA),null!==this.boundingBox&&!1===AA.intersectsBox(this.boundingBox)||this._computeIntersections(e,t,AA)))}getVertexPosition(e,t){return super.getVertexPosition(e,t),this.applyBoneTransform(e,t),t}bind(e,t){this.skeleton=e,void 0===t&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const e=new hc,t=this.geometry.attributes.skinWeight;for(let n=0,i=t.count;n<i;n++){e.fromBufferAttribute(t,n);const i=1/e.manhattanLength();i!==1/0?e.multiplyScalar(i):e.set(1,0,0,0),t.setXYZW(n,e.x,e.y,e.z,e.w)}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode===Ga?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode===Qa?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)}applyBoneTransform(e,t){const n=this.skeleton,i=this.geometry;lA.fromBufferAttribute(i.attributes.skinIndex,e),cA.fromBufferAttribute(i.attributes.skinWeight,e),sA.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let e=0;e<4;e++){const i=cA.getComponent(e);if(0!==i){const r=lA.getComponent(e);hA.multiplyMatrices(n.bones[r].matrixWorld,n.boneInverses[r]),t.addScaledVector(uA.copy(sA).applyMatrix4(hA),i)}}return t.applyMatrix4(this.bindMatrixInverse)}boneTransform(e,t){return console.warn("THREE.SkinnedMesh: .boneTransform() was renamed to .applyBoneTransform() in r151."),this.applyBoneTransform(e,t)}}class gA extends wu{constructor(){super(),this.isBone=!0,this.type="Bone"}}class vA extends uc{constructor(e=null,t=1,n=1,i,r,a,o,s,l=no,c=no,u,h){super(null,a,o,s,l,c,i,r,u,h),this.isDataTexture=!0,this.image={data:e,width:t,height:n},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}const yA=new qc,bA=new qc;class wA{constructor(e=[],t=[]){this.uuid=Nl(),this.bones=e.slice(0),this.boneInverses=t,this.boneMatrices=null,this.boneTexture=null,this.boneTextureSize=0,this.init()}init(){const e=this.bones,t=this.boneInverses;if(this.boneMatrices=new Float32Array(16*e.length),0===t.length)this.calculateInverses();else if(e.length!==t.length){console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(let e=0,t=this.bones.length;e<t;e++)this.boneInverses.push(new qc)}}calculateInverses(){this.boneInverses.length=0;for(let e=0,t=this.bones.length;e<t;e++){const t=new qc;this.bones[e]&&t.copy(this.bones[e].matrixWorld).invert(),this.boneInverses.push(t)}}pose(){for(let e=0,t=this.bones.length;e<t;e++){const t=this.bones[e];t&&t.matrixWorld.copy(this.boneInverses[e]).invert()}for(let e=0,t=this.bones.length;e<t;e++){const t=this.bones[e];t&&(t.parent&&t.parent.isBone?(t.matrix.copy(t.parent.matrixWorld).invert(),t.matrix.multiply(t.matrixWorld)):t.matrix.copy(t.matrixWorld),t.matrix.decompose(t.position,t.quaternion,t.scale))}}update(){const e=this.bones,t=this.boneInverses,n=this.boneMatrices,i=this.boneTexture;for(let i=0,r=e.length;i<r;i++){const r=e[i]?e[i].matrixWorld:bA;yA.multiplyMatrices(r,t[i]),yA.toArray(n,16*i)}null!==i&&(i.needsUpdate=!0)}clone(){return new wA(this.bones,this.boneInverses)}computeBoneTexture(){let e=Math.sqrt(4*this.bones.length);e=zl(e),e=Math.max(e,4);const t=new Float32Array(e*e*4);t.set(this.boneMatrices);const n=new vA(t,e,e,Eo,yo);return n.needsUpdate=!0,this.boneMatrices=t,this.boneTexture=n,this.boneTextureSize=e,this}getBoneByName(e){for(let t=0,n=this.bones.length;t<n;t++){const n=this.bones[t];if(n.name===e)return n}}dispose(){null!==this.boneTexture&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(e,t){this.uuid=e.uuid;for(let n=0,i=e.bones.length;n<i;n++){const i=e.bones[n];let r=t[i];void 0===r&&(console.warn("THREE.Skeleton: No bone found with UUID:",i),r=new gA),this.bones.push(r),this.boneInverses.push((new qc).fromArray(e.boneInverses[n]))}return this.init(),this}toJSON(){const e={metadata:{version:4.6,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]};e.uuid=this.uuid;const t=this.bones,n=this.boneInverses;for(let i=0,r=t.length;i<r;i++){const r=t[i];e.bones.push(r.uuid);const a=n[i];e.boneInverses.push(a.toArray())}return e}}class xA extends qu{constructor(e,t,n,i=1){super(e,t,n),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=i}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}toJSON(){const e=super.toJSON();return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}}const MA=new qc,SA=new qc,EA=[],_A=new Mc,TA=new qc,CA=new Lh,IA=new jc;class DA extends Lh{constructor(e,t,n){super(e,t),this.isInstancedMesh=!0,this.instanceMatrix=new xA(new Float32Array(16*n),16),this.instanceColor=null,this.count=n,this.boundingBox=null,this.boundingSphere=null;for(let e=0;e<n;e++)this.setMatrixAt(e,TA)}computeBoundingBox(){const e=this.geometry,t=this.count;null===this.boundingBox&&(this.boundingBox=new Mc),null===e.boundingBox&&e.computeBoundingBox(),this.boundingBox.makeEmpty();for(let n=0;n<t;n++)this.getMatrixAt(n,MA),_A.copy(e.boundingBox).applyMatrix4(MA),this.boundingBox.union(_A)}computeBoundingSphere(){const e=this.geometry,t=this.count;null===this.boundingSphere&&(this.boundingSphere=new jc),null===e.boundingSphere&&e.computeBoundingSphere(),this.boundingSphere.makeEmpty();for(let n=0;n<t;n++)this.getMatrixAt(n,MA),IA.copy(e.boundingSphere).applyMatrix4(MA),this.boundingSphere.union(IA)}copy(e,t){return super.copy(e,t),this.instanceMatrix.copy(e.instanceMatrix),null!==e.instanceColor&&(this.instanceColor=e.instanceColor.clone()),this.count=e.count,null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),this}getColorAt(e,t){t.fromArray(this.instanceColor.array,3*e)}getMatrixAt(e,t){t.fromArray(this.instanceMatrix.array,16*e)}raycast(e,t){const n=this.matrixWorld,i=this.count;if(CA.geometry=this.geometry,CA.material=this.material,void 0!==CA.material&&(null===this.boundingSphere&&this.computeBoundingSphere(),IA.copy(this.boundingSphere),IA.applyMatrix4(n),!1!==e.ray.intersectsSphere(IA)))for(let r=0;r<i;r++){this.getMatrixAt(r,MA),SA.multiplyMatrices(n,MA),CA.matrixWorld=SA,CA.raycast(e,EA);for(let e=0,n=EA.length;e<n;e++){const n=EA[e];n.instanceId=r,n.object=this,t.push(n)}EA.length=0}}setColorAt(e,t){null===this.instanceColor&&(this.instanceColor=new xA(new Float32Array(3*this.instanceMatrix.count),3)),t.toArray(this.instanceColor.array,3*e)}setMatrixAt(e,t){t.toArray(this.instanceMatrix.array,16*e)}updateMorphTargets(){}dispose(){this.dispatchEvent({type:"dispose"})}}class NA extends ju{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Uu(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}}const LA=new bc,RA=new bc,OA=new qc,PA=new Zc,zA=new jc;class kA extends wu{constructor(e=new fh,t=new NA){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){const e=this.geometry;if(null===e.index){const t=e.attributes.position,n=[0];for(let e=1,i=t.count;e<i;e++)LA.fromBufferAttribute(t,e-1),RA.fromBufferAttribute(t,e),n[e]=n[e-1],n[e]+=LA.distanceTo(RA);e.setAttribute("lineDistance",new ah(n,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(e,t){const n=this.geometry,i=this.matrixWorld,r=e.params.Line.threshold,a=n.drawRange;if(null===n.boundingSphere&&n.computeBoundingSphere(),zA.copy(n.boundingSphere),zA.applyMatrix4(i),zA.radius+=r,!1===e.ray.intersectsSphere(zA))return;OA.copy(i).invert(),PA.copy(e.ray).applyMatrix4(OA);const o=r/((this.scale.x+this.scale.y+this.scale.z)/3),s=o*o,l=new bc,c=new bc,u=new bc,h=new bc,d=this.isLineSegments?2:1,p=n.index,f=n.attributes.position;if(null!==p)for(let n=Math.max(0,a.start),i=Math.min(p.count,a.start+a.count)-1;n<i;n+=d){const i=p.getX(n),r=p.getX(n+1);if(l.fromBufferAttribute(f,i),c.fromBufferAttribute(f,r),PA.distanceSqToSegment(l,c,h,u)>s)continue;h.applyMatrix4(this.matrixWorld);const a=e.ray.origin.distanceTo(h);a<e.near||a>e.far||t.push({distance:a,point:u.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this})}else for(let n=Math.max(0,a.start),i=Math.min(f.count,a.start+a.count)-1;n<i;n+=d){if(l.fromBufferAttribute(f,n),c.fromBufferAttribute(f,n+1),PA.distanceSqToSegment(l,c,h,u)>s)continue;h.applyMatrix4(this.matrixWorld);const i=e.ray.origin.distanceTo(h);i<e.near||i>e.far||t.push({distance:i,point:u.clone().applyMatrix4(this.matrixWorld),index:n,face:null,faceIndex:null,object:this})}}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const n=e[t[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e<t;e++){const t=n[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}}const UA=new bc,BA=new bc;class FA extends kA{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(null===e.index){const t=e.attributes.position,n=[];for(let e=0,i=t.count;e<i;e+=2)UA.fromBufferAttribute(t,e),BA.fromBufferAttribute(t,e+1),n[e]=0===e?0:n[e-1],n[e+1]=n[e]+UA.distanceTo(BA);e.setAttribute("lineDistance",new ah(n,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}class jA extends kA{constructor(e,t){super(e,t),this.isLineLoop=!0,this.type="LineLoop"}}class HA extends ju{constructor(e){super(),this.isPointsMaterial=!0,this.type="PointsMaterial",this.color=new Uu(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.size=e.size,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}const VA=new qc,WA=new Zc,GA=new jc,QA=new bc;class XA extends wu{constructor(e=new fh,t=new HA){super(),this.isPoints=!0,this.type="Points",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}raycast(e,t){const n=this.geometry,i=this.matrixWorld,r=e.params.Points.threshold,a=n.drawRange;if(null===n.boundingSphere&&n.computeBoundingSphere(),GA.copy(n.boundingSphere),GA.applyMatrix4(i),GA.radius+=r,!1===e.ray.intersectsSphere(GA))return;VA.copy(i).invert(),WA.copy(e.ray).applyMatrix4(VA);const o=r/((this.scale.x+this.scale.y+this.scale.z)/3),s=o*o,l=n.index,c=n.attributes.position;if(null!==l)for(let n=Math.max(0,a.start),r=Math.min(l.count,a.start+a.count);n<r;n++){const r=l.getX(n);QA.fromBufferAttribute(c,r),YA(QA,r,s,i,e,t,this)}else for(let n=Math.max(0,a.start),r=Math.min(c.count,a.start+a.count);n<r;n++)QA.fromBufferAttribute(c,n),YA(QA,n,s,i,e,t,this)}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const n=e[t[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e<t;e++){const t=n[e].name||String(e);this.morphTargetInfluences.push(0),this.morphTargetDictionary[t]=e}}}}}function YA(e,t,n,i,r,a,o){const s=WA.distanceSqToPoint(e);if(s<n){const n=new bc;WA.closestPointToPoint(e,n),n.applyMatrix4(i);const l=r.ray.origin.distanceTo(n);if(l<r.near||l>r.far)return;a.push({distance:l,distanceToRay:Math.sqrt(s),point:n,index:t,face:null,object:o})}}class ZA extends uc{constructor(e,t,n,i,r,a,o,s,l){super(e,t,n,i,r,a,o,s,l),this.isVideoTexture=!0,this.minFilter=void 0!==a?a:so,this.magFilter=void 0!==r?r:so,this.generateMipmaps=!1;const c=this;"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback((function t(){c.needsUpdate=!0,e.requestVideoFrameCallback(t)}))}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;!1=="requestVideoFrameCallback"in e&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}class qA extends uc{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=no,this.minFilter=no,this.generateMipmaps=!1,this.needsUpdate=!0}}class KA extends uc{constructor(e,t,n,i,r,a,o,s,l,c,u,h){super(null,a,o,s,l,c,i,r,u,h),this.isCompressedTexture=!0,this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class JA extends KA{constructor(e,t,n,i,r,a){super(e,t,n,r,a),this.isCompressedArrayTexture=!0,this.image.depth=i,this.wrapR=eo}}class $A extends KA{constructor(e,t,n){super(void 0,e[0].width,e[0].height,t,n,Ya),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}}class em extends uc{constructor(e,t,n,i,r,a,o,s,l){super(e,t,n,i,r,a,o,s,l),this.isCanvasTexture=!0,this.needsUpdate=!0}}class tm{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){const n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){const t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){const t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const t=[];let n,i=this.getPoint(0),r=0;t.push(0);for(let a=1;a<=e;a++)n=this.getPoint(a/e),r+=n.distanceTo(i),t.push(r),i=n;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){const n=this.getLengths();let i=0;const r=n.length;let a;a=t||e*n[r-1];let o,s=0,l=r-1;for(;s<=l;)if(i=Math.floor(s+(l-s)/2),o=n[i]-a,o<0)s=i+1;else{if(!(o>0)){l=i;break}l=i-1}if(i=l,n[i]===a)return i/(r-1);const c=n[i];return(i+(a-c)/(n[i+1]-c))/(r-1)}getTangent(e,t){const n=1e-4;let i=e-n,r=e+n;i<0&&(i=0),r>1&&(r=1);const a=this.getPoint(i),o=this.getPoint(r),s=t||(a.isVector2?new jl:new bc);return s.copy(o).sub(a).normalize(),s}getTangentAt(e,t){const n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t){const n=new bc,i=[],r=[],a=[],o=new bc,s=new qc;for(let t=0;t<=e;t++){const n=t/e;i[t]=this.getTangentAt(n,new bc)}r[0]=new bc,a[0]=new bc;let l=Number.MAX_VALUE;const c=Math.abs(i[0].x),u=Math.abs(i[0].y),h=Math.abs(i[0].z);c<=l&&(l=c,n.set(1,0,0)),u<=l&&(l=u,n.set(0,1,0)),h<=l&&n.set(0,0,1),o.crossVectors(i[0],n).normalize(),r[0].crossVectors(i[0],o),a[0].crossVectors(i[0],r[0]);for(let t=1;t<=e;t++){if(r[t]=r[t-1].clone(),a[t]=a[t-1].clone(),o.crossVectors(i[t-1],i[t]),o.length()>Number.EPSILON){o.normalize();const e=Math.acos(Ll(i[t-1].dot(i[t]),-1,1));r[t].applyMatrix4(s.makeRotationAxis(o,e))}a[t].crossVectors(i[t],r[t])}if(!0===t){let t=Math.acos(Ll(r[0].dot(r[e]),-1,1));t/=e,i[0].dot(o.crossVectors(r[0],r[e]))>0&&(t=-t);for(let n=1;n<=e;n++)r[n].applyMatrix4(s.makeRotationAxis(i[n],t*n)),a[n].crossVectors(i[n],r[n])}return{tangents:i,normals:r,binormals:a}}clone(){return(new this.constructor).copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.6,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class nm extends tm{constructor(e=0,t=0,n=1,i=1,r=0,a=2*Math.PI,o=!1,s=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=i,this.aStartAngle=r,this.aEndAngle=a,this.aClockwise=o,this.aRotation=s}getPoint(e,t){const n=t||new jl,i=2*Math.PI;let r=this.aEndAngle-this.aStartAngle;const a=Math.abs(r)<Number.EPSILON;for(;r<0;)r+=i;for(;r>i;)r-=i;r<Number.EPSILON&&(r=a?0:i),!0!==this.aClockwise||a||(r===i?r=-i:r-=i);const o=this.aStartAngle+e*r;let s=this.aX+this.xRadius*Math.cos(o),l=this.aY+this.yRadius*Math.sin(o);if(0!==this.aRotation){const e=Math.cos(this.aRotation),t=Math.sin(this.aRotation),n=s-this.aX,i=l-this.aY;s=n*e-i*t+this.aX,l=n*t+i*e+this.aY}return n.set(s,l)}copy(e){return super.copy(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}toJSON(){const e=super.toJSON();return e.aX=this.aX,e.aY=this.aY,e.xRadius=this.xRadius,e.yRadius=this.yRadius,e.aStartAngle=this.aStartAngle,e.aEndAngle=this.aEndAngle,e.aClockwise=this.aClockwise,e.aRotation=this.aRotation,e}fromJSON(e){return super.fromJSON(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}}class im extends nm{constructor(e,t,n,i,r,a){super(e,t,n,n,i,r,a),this.isArcCurve=!0,this.type="ArcCurve"}}function rm(){let e=0,t=0,n=0,i=0;function r(r,a,o,s){e=r,t=o,n=-3*r+3*a-2*o-s,i=2*r-2*a+o+s}return{initCatmullRom:function(e,t,n,i,a){r(t,n,a*(n-e),a*(i-t))},initNonuniformCatmullRom:function(e,t,n,i,a,o,s){let l=(t-e)/a-(n-e)/(a+o)+(n-t)/o,c=(n-t)/o-(i-t)/(o+s)+(i-n)/s;l*=o,c*=o,r(t,n,l,c)},calc:function(r){const a=r*r;return e+t*r+n*a+i*(a*r)}}}const am=new bc,om=new rm,sm=new rm,lm=new rm;class cm extends tm{constructor(e=[],t=!1,n="centripetal",i=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=e,this.closed=t,this.curveType=n,this.tension=i}getPoint(e,t=new bc){const n=t,i=this.points,r=i.length,a=(r-(this.closed?0:1))*e;let o,s,l=Math.floor(a),c=a-l;this.closed?l+=l>0?0:(Math.floor(Math.abs(l)/r)+1)*r:0===c&&l===r-1&&(l=r-2,c=1),this.closed||l>0?o=i[(l-1)%r]:(am.subVectors(i[0],i[1]).add(i[0]),o=am);const u=i[l%r],h=i[(l+1)%r];if(this.closed||l+2<r?s=i[(l+2)%r]:(am.subVectors(i[r-1],i[r-2]).add(i[r-1]),s=am),"centripetal"===this.curveType||"chordal"===this.curveType){const e="chordal"===this.curveType?.5:.25;let t=Math.pow(o.distanceToSquared(u),e),n=Math.pow(u.distanceToSquared(h),e),i=Math.pow(h.distanceToSquared(s),e);n<1e-4&&(n=1),t<1e-4&&(t=n),i<1e-4&&(i=n),om.initNonuniformCatmullRom(o.x,u.x,h.x,s.x,t,n,i),sm.initNonuniformCatmullRom(o.y,u.y,h.y,s.y,t,n,i),lm.initNonuniformCatmullRom(o.z,u.z,h.z,s.z,t,n,i)}else"catmullrom"===this.curveType&&(om.initCatmullRom(o.x,u.x,h.x,s.x,this.tension),sm.initCatmullRom(o.y,u.y,h.y,s.y,this.tension),lm.initCatmullRom(o.z,u.z,h.z,s.z,this.tension));return n.set(om.calc(c),sm.calc(c),lm.calc(c)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){const n=e.points[t];this.points.push(n.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}toJSON(){const e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){const n=this.points[t];e.points.push(n.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){const n=e.points[t];this.points.push((new bc).fromArray(n))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}}function um(e,t,n,i,r){const a=.5*(i-t),o=.5*(r-n),s=e*e;return(2*n-2*i+a+o)*(e*s)+(-3*n+3*i-2*a-o)*s+a*e+n}function hm(e,t,n,i){return function(e,t){const n=1-e;return n*n*t}(e,t)+function(e,t){return 2*(1-e)*e*t}(e,n)+function(e,t){return e*e*t}(e,i)}function dm(e,t,n,i,r){return function(e,t){const n=1-e;return n*n*n*t}(e,t)+function(e,t){const n=1-e;return 3*n*n*e*t}(e,n)+function(e,t){return 3*(1-e)*e*e*t}(e,i)+function(e,t){return e*e*e*t}(e,r)}class pm extends tm{constructor(e=new jl,t=new jl,n=new jl,i=new jl){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new jl){const n=t,i=this.v0,r=this.v1,a=this.v2,o=this.v3;return n.set(dm(e,i.x,r.x,a.x,o.x),dm(e,i.y,r.y,a.y,o.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}}class fm extends tm{constructor(e=new bc,t=new bc,n=new bc,i=new bc){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=e,this.v1=t,this.v2=n,this.v3=i}getPoint(e,t=new bc){const n=t,i=this.v0,r=this.v1,a=this.v2,o=this.v3;return n.set(dm(e,i.x,r.x,a.x,o.x),dm(e,i.y,r.y,a.y,o.y),dm(e,i.z,r.z,a.z,o.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}}class Am extends tm{constructor(e=new jl,t=new jl){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=e,this.v2=t}getPoint(e,t=new jl){const n=t;return 1===e?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t=new jl){return t.subVectors(this.v2,this.v1).normalize()}getTangentAt(e,t){return this.getTangent(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class mm extends tm{constructor(e=new bc,t=new bc){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=e,this.v2=t}getPoint(e,t=new bc){const n=t;return 1===e?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(e).add(this.v1)),n}getPointAt(e,t){return this.getPoint(e,t)}getTangent(e,t=new bc){return t.subVectors(this.v2,this.v1).normalize()}getTangentAt(e,t){return this.getTangent(e,t)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class gm extends tm{constructor(e=new jl,t=new jl,n=new jl){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new jl){const n=t,i=this.v0,r=this.v1,a=this.v2;return n.set(hm(e,i.x,r.x,a.x),hm(e,i.y,r.y,a.y)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class vm extends tm{constructor(e=new bc,t=new bc,n=new bc){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=e,this.v1=t,this.v2=n}getPoint(e,t=new bc){const n=t,i=this.v0,r=this.v1,a=this.v2;return n.set(hm(e,i.x,r.x,a.x),hm(e,i.y,r.y,a.y),hm(e,i.z,r.z,a.z)),n}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class ym extends tm{constructor(e=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve",this.points=e}getPoint(e,t=new jl){const n=t,i=this.points,r=(i.length-1)*e,a=Math.floor(r),o=r-a,s=i[0===a?a:a-1],l=i[a],c=i[a>i.length-2?i.length-1:a+1],u=i[a>i.length-3?i.length-1:a+2];return n.set(um(o,s.x,l.x,c.x,u.x),um(o,s.y,l.y,c.y,u.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){const n=e.points[t];this.points.push(n.clone())}return this}toJSON(){const e=super.toJSON();e.points=[];for(let t=0,n=this.points.length;t<n;t++){const n=this.points[t];e.points.push(n.toArray())}return e}fromJSON(e){super.fromJSON(e),this.points=[];for(let t=0,n=e.points.length;t<n;t++){const n=e.points[t];this.points.push((new jl).fromArray(n))}return this}}var bm=Object.freeze({__proto__:null,ArcCurve:im,CatmullRomCurve3:cm,CubicBezierCurve:pm,CubicBezierCurve3:fm,EllipseCurve:nm,LineCurve:Am,LineCurve3:mm,QuadraticBezierCurve:gm,QuadraticBezierCurve3:vm,SplineCurve:ym});class wm extends tm{constructor(){super(),this.type="CurvePath",this.curves=[],this.autoClose=!1}add(e){this.curves.push(e)}closePath(){const e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);if(!e.equals(t)){const n=!0===e.isVector2?"LineCurve":"LineCurve3";this.curves.push(new bm[n](t,e))}return this}getPoint(e,t){const n=e*this.getLength(),i=this.getCurveLengths();let r=0;for(;r<i.length;){if(i[r]>=n){const e=i[r]-n,a=this.curves[r],o=a.getLength(),s=0===o?0:1-e/o;return a.getPointAt(s,t)}r++}return null}getLength(){const e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const e=[];let t=0;for(let n=0,i=this.curves.length;n<i;n++)t+=this.curves[n].getLength(),e.push(t);return this.cacheLengths=e,e}getSpacedPoints(e=40){const t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return this.autoClose&&t.push(t[0]),t}getPoints(e=12){const t=[];let n;for(let i=0,r=this.curves;i<r.length;i++){const a=r[i],o=a.isEllipseCurve?2*e:a.isLineCurve||a.isLineCurve3?1:a.isSplineCurve?e*a.points.length:e,s=a.getPoints(o);for(let e=0;e<s.length;e++){const i=s[e];n&&n.equals(i)||(t.push(i),n=i)}}return this.autoClose&&t.length>1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t<n;t++){const n=e.curves[t];this.curves.push(n.clone())}return this.autoClose=e.autoClose,this}toJSON(){const e=super.toJSON();e.autoClose=this.autoClose,e.curves=[];for(let t=0,n=this.curves.length;t<n;t++){const n=this.curves[t];e.curves.push(n.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.autoClose=e.autoClose,this.curves=[];for(let t=0,n=e.curves.length;t<n;t++){const n=e.curves[t];this.curves.push((new bm[n.type]).fromJSON(n))}return this}}class xm extends wm{constructor(e){super(),this.type="Path",this.currentPoint=new jl,e&&this.setFromPoints(e)}setFromPoints(e){this.moveTo(e[0].x,e[0].y);for(let t=1,n=e.length;t<n;t++)this.lineTo(e[t].x,e[t].y);return this}moveTo(e,t){return this.currentPoint.set(e,t),this}lineTo(e,t){const n=new Am(this.currentPoint.clone(),new jl(e,t));return this.curves.push(n),this.currentPoint.set(e,t),this}quadraticCurveTo(e,t,n,i){const r=new gm(this.currentPoint.clone(),new jl(e,t),new jl(n,i));return this.curves.push(r),this.currentPoint.set(n,i),this}bezierCurveTo(e,t,n,i,r,a){const o=new pm(this.currentPoint.clone(),new jl(e,t),new jl(n,i),new jl(r,a));return this.curves.push(o),this.currentPoint.set(r,a),this}splineThru(e){const t=[this.currentPoint.clone()].concat(e),n=new ym(t);return this.curves.push(n),this.currentPoint.copy(e[e.length-1]),this}arc(e,t,n,i,r,a){const o=this.currentPoint.x,s=this.currentPoint.y;return this.absarc(e+o,t+s,n,i,r,a),this}absarc(e,t,n,i,r,a){return this.absellipse(e,t,n,n,i,r,a),this}ellipse(e,t,n,i,r,a,o,s){const l=this.currentPoint.x,c=this.currentPoint.y;return this.absellipse(e+l,t+c,n,i,r,a,o,s),this}absellipse(e,t,n,i,r,a,o,s){const l=new nm(e,t,n,i,r,a,o,s);if(this.curves.length>0){const e=l.getPoint(0);e.equals(this.currentPoint)||this.lineTo(e.x,e.y)}this.curves.push(l);const c=l.getPoint(1);return this.currentPoint.copy(c),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class Mm extends fh{constructor(e=[new jl(0,-.5),new jl(.5,0),new jl(0,.5)],t=12,n=0,i=2*Math.PI){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:n,phiLength:i},t=Math.floor(t),i=Ll(i,0,2*Math.PI);const r=[],a=[],o=[],s=[],l=[],c=1/t,u=new bc,h=new jl,d=new bc,p=new bc,f=new bc;let A=0,m=0;for(let t=0;t<=e.length-1;t++)switch(t){case 0:A=e[t+1].x-e[t].x,m=e[t+1].y-e[t].y,d.x=1*m,d.y=-A,d.z=0*m,f.copy(d),d.normalize(),s.push(d.x,d.y,d.z);break;case e.length-1:s.push(f.x,f.y,f.z);break;default:A=e[t+1].x-e[t].x,m=e[t+1].y-e[t].y,d.x=1*m,d.y=-A,d.z=0*m,p.copy(d),d.x+=f.x,d.y+=f.y,d.z+=f.z,d.normalize(),s.push(d.x,d.y,d.z),f.copy(p)}for(let r=0;r<=t;r++){const d=n+r*c*i,p=Math.sin(d),f=Math.cos(d);for(let n=0;n<=e.length-1;n++){u.x=e[n].x*p,u.y=e[n].y,u.z=e[n].x*f,a.push(u.x,u.y,u.z),h.x=r/t,h.y=n/(e.length-1),o.push(h.x,h.y);const i=s[3*n+0]*p,c=s[3*n+1],d=s[3*n+0]*f;l.push(i,c,d)}}for(let n=0;n<t;n++)for(let t=0;t<e.length-1;t++){const i=t+n*e.length,a=i,o=i+e.length,s=i+e.length+1,l=i+1;r.push(a,o,l),r.push(s,l,o)}this.setIndex(r),this.setAttribute("position",new ah(a,3)),this.setAttribute("uv",new ah(o,2)),this.setAttribute("normal",new ah(l,3))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Mm(e.points,e.segments,e.phiStart,e.phiLength)}}class Sm extends Mm{constructor(e=1,t=1,n=4,i=8){const r=new xm;r.absarc(0,-t/2,e,1.5*Math.PI,0),r.absarc(0,t/2,e,0,.5*Math.PI),super(r.getPoints(n),i),this.type="CapsuleGeometry",this.parameters={radius:e,length:t,capSegments:n,radialSegments:i}}static fromJSON(e){return new Sm(e.radius,e.length,e.capSegments,e.radialSegments)}}class Em extends fh{constructor(e=1,t=32,n=0,i=2*Math.PI){super(),this.type="CircleGeometry",this.parameters={radius:e,segments:t,thetaStart:n,thetaLength:i},t=Math.max(3,t);const r=[],a=[],o=[],s=[],l=new bc,c=new jl;a.push(0,0,0),o.push(0,0,1),s.push(.5,.5);for(let r=0,u=3;r<=t;r++,u+=3){const h=n+r/t*i;l.x=e*Math.cos(h),l.y=e*Math.sin(h),a.push(l.x,l.y,l.z),o.push(0,0,1),c.x=(a[u]/e+1)/2,c.y=(a[u+1]/e+1)/2,s.push(c.x,c.y)}for(let e=1;e<=t;e++)r.push(e,e+1,0);this.setIndex(r),this.setAttribute("position",new ah(a,3)),this.setAttribute("normal",new ah(o,3)),this.setAttribute("uv",new ah(s,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Em(e.radius,e.segments,e.thetaStart,e.thetaLength)}}class _m extends fh{constructor(e=1,t=1,n=1,i=32,r=1,a=!1,o=0,s=2*Math.PI){super(),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:t,height:n,radialSegments:i,heightSegments:r,openEnded:a,thetaStart:o,thetaLength:s};const l=this;i=Math.floor(i),r=Math.floor(r);const c=[],u=[],h=[],d=[];let p=0;const f=[],A=n/2;let m=0;function g(n){const r=p,a=new jl,f=new bc;let g=0;const v=!0===n?e:t,y=!0===n?1:-1;for(let e=1;e<=i;e++)u.push(0,A*y,0),h.push(0,y,0),d.push(.5,.5),p++;const b=p;for(let e=0;e<=i;e++){const t=e/i*s+o,n=Math.cos(t),r=Math.sin(t);f.x=v*r,f.y=A*y,f.z=v*n,u.push(f.x,f.y,f.z),h.push(0,y,0),a.x=.5*n+.5,a.y=.5*r*y+.5,d.push(a.x,a.y),p++}for(let e=0;e<i;e++){const t=r+e,i=b+e;!0===n?c.push(i,i+1,t):c.push(i+1,i,t),g+=3}l.addGroup(m,g,!0===n?1:2),m+=g}!function(){const a=new bc,g=new bc;let v=0;const y=(t-e)/n;for(let l=0;l<=r;l++){const c=[],m=l/r,v=m*(t-e)+e;for(let e=0;e<=i;e++){const t=e/i,r=t*s+o,l=Math.sin(r),f=Math.cos(r);g.x=v*l,g.y=-m*n+A,g.z=v*f,u.push(g.x,g.y,g.z),a.set(l,y,f).normalize(),h.push(a.x,a.y,a.z),d.push(t,1-m),c.push(p++)}f.push(c)}for(let e=0;e<i;e++)for(let t=0;t<r;t++){const n=f[t][e],i=f[t+1][e],r=f[t+1][e+1],a=f[t][e+1];c.push(n,i,a),c.push(i,r,a),v+=6}l.addGroup(m,v,0),m+=v}(),!1===a&&(e>0&&g(!0),t>0&&g(!1)),this.setIndex(c),this.setAttribute("position",new ah(u,3)),this.setAttribute("normal",new ah(h,3)),this.setAttribute("uv",new ah(d,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new _m(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class Tm extends _m{constructor(e=1,t=1,n=32,i=1,r=!1,a=0,o=2*Math.PI){super(0,e,t,n,i,r,a,o),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:n,heightSegments:i,openEnded:r,thetaStart:a,thetaLength:o}}static fromJSON(e){return new Tm(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class Cm extends fh{constructor(e=[],t=[],n=1,i=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:n,detail:i};const r=[],a=[];function o(e,t,n,i){const r=i+1,a=[];for(let i=0;i<=r;i++){a[i]=[];const o=e.clone().lerp(n,i/r),s=t.clone().lerp(n,i/r),l=r-i;for(let e=0;e<=l;e++)a[i][e]=0===e&&i===r?o:o.clone().lerp(s,e/l)}for(let e=0;e<r;e++)for(let t=0;t<2*(r-e)-1;t++){const n=Math.floor(t/2);t%2==0?(s(a[e][n+1]),s(a[e+1][n]),s(a[e][n])):(s(a[e][n+1]),s(a[e+1][n+1]),s(a[e+1][n]))}}function s(e){r.push(e.x,e.y,e.z)}function l(t,n){const i=3*t;n.x=e[i+0],n.y=e[i+1],n.z=e[i+2]}function c(e,t,n,i){i<0&&1===e.x&&(a[t]=e.x-1),0===n.x&&0===n.z&&(a[t]=i/2/Math.PI+.5)}function u(e){return Math.atan2(e.z,-e.x)}!function(e){const n=new bc,i=new bc,r=new bc;for(let a=0;a<t.length;a+=3)l(t[a+0],n),l(t[a+1],i),l(t[a+2],r),o(n,i,r,e)}(i),function(e){const t=new bc;for(let n=0;n<r.length;n+=3)t.x=r[n+0],t.y=r[n+1],t.z=r[n+2],t.normalize().multiplyScalar(e),r[n+0]=t.x,r[n+1]=t.y,r[n+2]=t.z}(n),function(){const e=new bc;for(let n=0;n<r.length;n+=3){e.x=r[n+0],e.y=r[n+1],e.z=r[n+2];const i=u(e)/2/Math.PI+.5,o=(t=e,Math.atan2(-t.y,Math.sqrt(t.x*t.x+t.z*t.z))/Math.PI+.5);a.push(i,1-o)}var t;(function(){const e=new bc,t=new bc,n=new bc,i=new bc,o=new jl,s=new jl,l=new jl;for(let h=0,d=0;h<r.length;h+=9,d+=6){e.set(r[h+0],r[h+1],r[h+2]),t.set(r[h+3],r[h+4],r[h+5]),n.set(r[h+6],r[h+7],r[h+8]),o.set(a[d+0],a[d+1]),s.set(a[d+2],a[d+3]),l.set(a[d+4],a[d+5]),i.copy(e).add(t).add(n).divideScalar(3);const p=u(i);c(o,d+0,e,p),c(s,d+2,t,p),c(l,d+4,n,p)}})(),function(){for(let e=0;e<a.length;e+=6){const t=a[e+0],n=a[e+2],i=a[e+4],r=Math.max(t,n,i),o=Math.min(t,n,i);r>.9&&o<.1&&(t<.2&&(a[e+0]+=1),n<.2&&(a[e+2]+=1),i<.2&&(a[e+4]+=1))}}()}(),this.setAttribute("position",new ah(r,3)),this.setAttribute("normal",new ah(r.slice(),3)),this.setAttribute("uv",new ah(a,2)),0===i?this.computeVertexNormals():this.normalizeNormals()}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Cm(e.vertices,e.indices,e.radius,e.details)}}class Im extends Cm{constructor(e=1,t=0){const n=(1+Math.sqrt(5))/2,i=1/n;super([-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-n,0,-i,n,0,i,-n,0,i,n,-i,-n,0,-i,n,0,i,-n,0,i,n,0,-n,0,-i,n,0,-i,-n,0,i,n,0,i],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new Im(e.radius,e.detail)}}const Dm=new bc,Nm=new bc,Lm=new bc,Rm=new Ru;class Om extends fh{constructor(e=null,t=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:e,thresholdAngle:t},null!==e){const n=4,i=Math.pow(10,n),r=Math.cos(Il*t),a=e.getIndex(),o=e.getAttribute("position"),s=a?a.count:o.count,l=[0,0,0],c=["a","b","c"],u=new Array(3),h={},d=[];for(let e=0;e<s;e+=3){a?(l[0]=a.getX(e),l[1]=a.getX(e+1),l[2]=a.getX(e+2)):(l[0]=e,l[1]=e+1,l[2]=e+2);const{a:t,b:n,c:s}=Rm;if(t.fromBufferAttribute(o,l[0]),n.fromBufferAttribute(o,l[1]),s.fromBufferAttribute(o,l[2]),Rm.getNormal(Lm),u[0]=`${Math.round(t.x*i)},${Math.round(t.y*i)},${Math.round(t.z*i)}`,u[1]=`${Math.round(n.x*i)},${Math.round(n.y*i)},${Math.round(n.z*i)}`,u[2]=`${Math.round(s.x*i)},${Math.round(s.y*i)},${Math.round(s.z*i)}`,u[0]!==u[1]&&u[1]!==u[2]&&u[2]!==u[0])for(let e=0;e<3;e++){const t=(e+1)%3,n=u[e],i=u[t],a=Rm[c[e]],o=Rm[c[t]],s=`${n}_${i}`,p=`${i}_${n}`;p in h&&h[p]?(Lm.dot(h[p].normal)<=r&&(d.push(a.x,a.y,a.z),d.push(o.x,o.y,o.z)),h[p]=null):s in h||(h[s]={index0:l[e],index1:l[t],normal:Lm.clone()})}}for(const e in h)if(h[e]){const{index0:t,index1:n}=h[e];Dm.fromBufferAttribute(o,t),Nm.fromBufferAttribute(o,n),d.push(Dm.x,Dm.y,Dm.z),d.push(Nm.x,Nm.y,Nm.z)}this.setAttribute("position",new ah(d,3))}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}}class Pm extends xm{constructor(e){super(e),this.uuid=Nl(),this.type="Shape",this.holes=[]}getPointsHoles(e){const t=[];for(let n=0,i=this.holes.length;n<i;n++)t[n]=this.holes[n].getPoints(e);return t}extractPoints(e){return{shape:this.getPoints(e),holes:this.getPointsHoles(e)}}copy(e){super.copy(e),this.holes=[];for(let t=0,n=e.holes.length;t<n;t++){const n=e.holes[t];this.holes.push(n.clone())}return this}toJSON(){const e=super.toJSON();e.uuid=this.uuid,e.holes=[];for(let t=0,n=this.holes.length;t<n;t++){const n=this.holes[t];e.holes.push(n.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.uuid=e.uuid,this.holes=[];for(let t=0,n=e.holes.length;t<n;t++){const n=e.holes[t];this.holes.push((new xm).fromJSON(n))}return this}}function zm(e,t,n,i,r){let a,o;if(r===function(e,t,n,i){let r=0;for(let a=t,o=n-i;a<n;a+=i)r+=(e[o]-e[a])*(e[a+1]+e[o+1]),o=a;return r}(e,t,n,i)>0)for(a=t;a<n;a+=i)o=ig(a,e[a],e[a+1],o);else for(a=n-i;a>=t;a-=i)o=ig(a,e[a],e[a+1],o);return o&&Km(o,o.next)&&(rg(o),o=o.next),o}function km(e,t){if(!e)return e;t||(t=e);let n,i=e;do{if(n=!1,i.steiner||!Km(i,i.next)&&0!==qm(i.prev,i,i.next))i=i.next;else{if(rg(i),i=t=i.prev,i===i.next)break;n=!0}}while(n||i!==t);return t}function Um(e,t,n,i,r,a,o){if(!e)return;!o&&a&&function(e,t,n,i){let r=e;do{0===r.z&&(r.z=Qm(r.x,r.y,t,n,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next}while(r!==e);r.prevZ.nextZ=null,r.prevZ=null,function(e){let t,n,i,r,a,o,s,l,c=1;do{for(n=e,e=null,a=null,o=0;n;){for(o++,i=n,s=0,t=0;t<c&&(s++,i=i.nextZ,i);t++);for(l=c;s>0||l>0&&i;)0!==s&&(0===l||!i||n.z<=i.z)?(r=n,n=n.nextZ,s--):(r=i,i=i.nextZ,l--),a?a.nextZ=r:e=r,r.prevZ=a,a=r;n=i}a.nextZ=null,c*=2}while(o>1)}(r)}(e,i,r,a);let s,l,c=e;for(;e.prev!==e.next;)if(s=e.prev,l=e.next,a?Fm(e,i,r,a):Bm(e))t.push(s.i/n|0),t.push(e.i/n|0),t.push(l.i/n|0),rg(e),e=l.next,c=l.next;else if((e=l)===c){o?1===o?Um(e=jm(km(e),t,n),t,n,i,r,a,2):2===o&&Hm(e,t,n,i,r,a):Um(km(e),t,n,i,r,a,1);break}}function Bm(e){const t=e.prev,n=e,i=e.next;if(qm(t,n,i)>=0)return!1;const r=t.x,a=n.x,o=i.x,s=t.y,l=n.y,c=i.y,u=r<a?r<o?r:o:a<o?a:o,h=s<l?s<c?s:c:l<c?l:c,d=r>a?r>o?r:o:a>o?a:o,p=s>l?s>c?s:c:l>c?l:c;let f=i.next;for(;f!==t;){if(f.x>=u&&f.x<=d&&f.y>=h&&f.y<=p&&Ym(r,s,a,l,o,c,f.x,f.y)&&qm(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function Fm(e,t,n,i){const r=e.prev,a=e,o=e.next;if(qm(r,a,o)>=0)return!1;const s=r.x,l=a.x,c=o.x,u=r.y,h=a.y,d=o.y,p=s<l?s<c?s:c:l<c?l:c,f=u<h?u<d?u:d:h<d?h:d,A=s>l?s>c?s:c:l>c?l:c,m=u>h?u>d?u:d:h>d?h:d,g=Qm(p,f,t,n,i),v=Qm(A,m,t,n,i);let y=e.prevZ,b=e.nextZ;for(;y&&y.z>=g&&b&&b.z<=v;){if(y.x>=p&&y.x<=A&&y.y>=f&&y.y<=m&&y!==r&&y!==o&&Ym(s,u,l,h,c,d,y.x,y.y)&&qm(y.prev,y,y.next)>=0)return!1;if(y=y.prevZ,b.x>=p&&b.x<=A&&b.y>=f&&b.y<=m&&b!==r&&b!==o&&Ym(s,u,l,h,c,d,b.x,b.y)&&qm(b.prev,b,b.next)>=0)return!1;b=b.nextZ}for(;y&&y.z>=g;){if(y.x>=p&&y.x<=A&&y.y>=f&&y.y<=m&&y!==r&&y!==o&&Ym(s,u,l,h,c,d,y.x,y.y)&&qm(y.prev,y,y.next)>=0)return!1;y=y.prevZ}for(;b&&b.z<=v;){if(b.x>=p&&b.x<=A&&b.y>=f&&b.y<=m&&b!==r&&b!==o&&Ym(s,u,l,h,c,d,b.x,b.y)&&qm(b.prev,b,b.next)>=0)return!1;b=b.nextZ}return!0}function jm(e,t,n){let i=e;do{const r=i.prev,a=i.next.next;!Km(r,a)&&Jm(r,i,i.next,a)&&tg(r,a)&&tg(a,r)&&(t.push(r.i/n|0),t.push(i.i/n|0),t.push(a.i/n|0),rg(i),rg(i.next),i=e=a),i=i.next}while(i!==e);return km(i)}function Hm(e,t,n,i,r,a){let o=e;do{let e=o.next.next;for(;e!==o.prev;){if(o.i!==e.i&&Zm(o,e)){let s=ng(o,e);return o=km(o,o.next),s=km(s,s.next),Um(o,t,n,i,r,a,0),void Um(s,t,n,i,r,a,0)}e=e.next}o=o.next}while(o!==e)}function Vm(e,t){return e.x-t.x}function Wm(e,t){const n=function(e,t){let n,i=t,r=-1/0;const a=e.x,o=e.y;do{if(o<=i.y&&o>=i.next.y&&i.next.y!==i.y){const e=i.x+(o-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(e<=a&&e>r&&(r=e,n=i.x<i.next.x?i:i.next,e===a))return n}i=i.next}while(i!==t);if(!n)return null;const s=n,l=n.x,c=n.y;let u,h=1/0;i=n;do{a>=i.x&&i.x>=l&&a!==i.x&&Ym(o<c?a:r,o,l,c,o<c?r:a,o,i.x,i.y)&&(u=Math.abs(o-i.y)/(a-i.x),tg(i,e)&&(u<h||u===h&&(i.x>n.x||i.x===n.x&&Gm(n,i)))&&(n=i,h=u)),i=i.next}while(i!==s);return n}(e,t);if(!n)return t;const i=ng(n,e);return km(i,i.next),km(n,n.next)}function Gm(e,t){return qm(e.prev,e,t.prev)<0&&qm(t.next,e,e.next)<0}function Qm(e,t,n,i,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*r|0)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-i)*r|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function Xm(e){let t=e,n=e;do{(t.x<n.x||t.x===n.x&&t.y<n.y)&&(n=t),t=t.next}while(t!==e);return n}function Ym(e,t,n,i,r,a,o,s){return(r-o)*(t-s)>=(e-o)*(a-s)&&(e-o)*(i-s)>=(n-o)*(t-s)&&(n-o)*(a-s)>=(r-o)*(i-s)}function Zm(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&Jm(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}(e,t)&&(tg(e,t)&&tg(t,e)&&function(e,t){let n=e,i=!1;const r=(e.x+t.x)/2,a=(e.y+t.y)/2;do{n.y>a!=n.next.y>a&&n.next.y!==n.y&&r<(n.next.x-n.x)*(a-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next}while(n!==e);return i}(e,t)&&(qm(e.prev,e,t.prev)||qm(e,t.prev,t))||Km(e,t)&&qm(e.prev,e,e.next)>0&&qm(t.prev,t,t.next)>0)}function qm(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function Km(e,t){return e.x===t.x&&e.y===t.y}function Jm(e,t,n,i){const r=eg(qm(e,t,n)),a=eg(qm(e,t,i)),o=eg(qm(n,i,e)),s=eg(qm(n,i,t));return r!==a&&o!==s||!(0!==r||!$m(e,n,t))||!(0!==a||!$m(e,i,t))||!(0!==o||!$m(n,e,i))||!(0!==s||!$m(n,t,i))}function $m(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function eg(e){return e>0?1:e<0?-1:0}function tg(e,t){return qm(e.prev,e,e.next)<0?qm(e,t,e.next)>=0&&qm(e,e.prev,t)>=0:qm(e,t,e.prev)<0||qm(e,e.next,t)<0}function ng(e,t){const n=new ag(e.i,e.x,e.y),i=new ag(t.i,t.x,t.y),r=e.next,a=t.prev;return e.next=t,t.prev=e,n.next=r,r.prev=n,i.next=n,n.prev=i,a.next=i,i.prev=a,i}function ig(e,t,n,i){const r=new ag(e,t,n);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function rg(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function ag(e,t,n){this.i=e,this.x=t,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}class og{static area(e){const t=e.length;let n=0;for(let i=t-1,r=0;r<t;i=r++)n+=e[i].x*e[r].y-e[r].x*e[i].y;return.5*n}static isClockWise(e){return og.area(e)<0}static triangulateShape(e,t){const n=[],i=[],r=[];sg(e),lg(n,e);let a=e.length;t.forEach(sg);for(let e=0;e<t.length;e++)i.push(a),a+=t[e].length,lg(n,t[e]);const o=function(e,t,n=2){const i=t&&t.length,r=i?t[0]*n:e.length;let a=zm(e,0,r,n,!0);const o=[];if(!a||a.next===a.prev)return o;let s,l,c,u,h,d,p;if(i&&(a=function(e,t,n,i){const r=[];let a,o,s,l,c;for(a=0,o=t.length;a<o;a++)s=t[a]*i,l=a<o-1?t[a+1]*i:e.length,c=zm(e,s,l,i,!1),c===c.next&&(c.steiner=!0),r.push(Xm(c));for(r.sort(Vm),a=0;a<r.length;a++)n=Wm(r[a],n);return n}(e,t,a,n)),e.length>80*n){s=c=e[0],l=u=e[1];for(let t=n;t<r;t+=n)h=e[t],d=e[t+1],h<s&&(s=h),d<l&&(l=d),h>c&&(c=h),d>u&&(u=d);p=Math.max(c-s,u-l),p=0!==p?32767/p:0}return Um(a,o,n,s,l,p,0),o}(n,i);for(let e=0;e<o.length;e+=3)r.push(o.slice(e,e+3));return r}}function sg(e){const t=e.length;t>2&&e[t-1].equals(e[0])&&e.pop()}function lg(e,t){for(let n=0;n<t.length;n++)e.push(t[n].x),e.push(t[n].y)}class cg extends fh{constructor(e=new Pm([new jl(.5,.5),new jl(-.5,.5),new jl(-.5,-.5),new jl(.5,-.5)]),t={}){super(),this.type="ExtrudeGeometry",this.parameters={shapes:e,options:t},e=Array.isArray(e)?e:[e];const n=this,i=[],r=[];for(let t=0,n=e.length;t<n;t++)a(e[t]);function a(e){const a=[],o=void 0!==t.curveSegments?t.curveSegments:12,s=void 0!==t.steps?t.steps:1,l=void 0!==t.depth?t.depth:1;let c=void 0===t.bevelEnabled||t.bevelEnabled,u=void 0!==t.bevelThickness?t.bevelThickness:.2,h=void 0!==t.bevelSize?t.bevelSize:u-.1,d=void 0!==t.bevelOffset?t.bevelOffset:0,p=void 0!==t.bevelSegments?t.bevelSegments:3;const f=t.extrudePath,A=void 0!==t.UVGenerator?t.UVGenerator:ug;let m,g,v,y,b,w=!1;f&&(m=f.getSpacedPoints(s),w=!0,c=!1,g=f.computeFrenetFrames(s,!1),v=new bc,y=new bc,b=new bc),c||(p=0,u=0,h=0,d=0);const x=e.extractPoints(o);let M=x.shape;const S=x.holes;if(!og.isClockWise(M)){M=M.reverse();for(let e=0,t=S.length;e<t;e++){const t=S[e];og.isClockWise(t)&&(S[e]=t.reverse())}}const E=og.triangulateShape(M,S),_=M;for(let e=0,t=S.length;e<t;e++){const t=S[e];M=M.concat(t)}function T(e,t,n){return t||console.error("THREE.ExtrudeGeometry: vec does not exist"),e.clone().addScaledVector(t,n)}const C=M.length,I=E.length;function D(e,t,n){let i,r,a;const o=e.x-t.x,s=e.y-t.y,l=n.x-e.x,c=n.y-e.y,u=o*o+s*s,h=o*c-s*l;if(Math.abs(h)>Number.EPSILON){const h=Math.sqrt(u),d=Math.sqrt(l*l+c*c),p=t.x-s/h,f=t.y+o/h,A=((n.x-c/d-p)*c-(n.y+l/d-f)*l)/(o*c-s*l);i=p+o*A-e.x,r=f+s*A-e.y;const m=i*i+r*r;if(m<=2)return new jl(i,r);a=Math.sqrt(m/2)}else{let e=!1;o>Number.EPSILON?l>Number.EPSILON&&(e=!0):o<-Number.EPSILON?l<-Number.EPSILON&&(e=!0):Math.sign(s)===Math.sign(c)&&(e=!0),e?(i=-s,r=o,a=Math.sqrt(u)):(i=o,r=s,a=Math.sqrt(u/2))}return new jl(i/a,r/a)}const N=[];for(let e=0,t=_.length,n=t-1,i=e+1;e<t;e++,n++,i++)n===t&&(n=0),i===t&&(i=0),N[e]=D(_[e],_[n],_[i]);const L=[];let R,O=N.concat();for(let e=0,t=S.length;e<t;e++){const t=S[e];R=[];for(let e=0,n=t.length,i=n-1,r=e+1;e<n;e++,i++,r++)i===n&&(i=0),r===n&&(r=0),R[e]=D(t[e],t[i],t[r]);L.push(R),O=O.concat(R)}for(let e=0;e<p;e++){const t=e/p,n=u*Math.cos(t*Math.PI/2),i=h*Math.sin(t*Math.PI/2)+d;for(let e=0,t=_.length;e<t;e++){const t=T(_[e],N[e],i);k(t.x,t.y,-n)}for(let e=0,t=S.length;e<t;e++){const t=S[e];R=L[e];for(let e=0,r=t.length;e<r;e++){const r=T(t[e],R[e],i);k(r.x,r.y,-n)}}}const P=h+d;for(let e=0;e<C;e++){const t=c?T(M[e],O[e],P):M[e];w?(y.copy(g.normals[0]).multiplyScalar(t.x),v.copy(g.binormals[0]).multiplyScalar(t.y),b.copy(m[0]).add(y).add(v),k(b.x,b.y,b.z)):k(t.x,t.y,0)}for(let e=1;e<=s;e++)for(let t=0;t<C;t++){const n=c?T(M[t],O[t],P):M[t];w?(y.copy(g.normals[e]).multiplyScalar(n.x),v.copy(g.binormals[e]).multiplyScalar(n.y),b.copy(m[e]).add(y).add(v),k(b.x,b.y,b.z)):k(n.x,n.y,l/s*e)}for(let e=p-1;e>=0;e--){const t=e/p,n=u*Math.cos(t*Math.PI/2),i=h*Math.sin(t*Math.PI/2)+d;for(let e=0,t=_.length;e<t;e++){const t=T(_[e],N[e],i);k(t.x,t.y,l+n)}for(let e=0,t=S.length;e<t;e++){const t=S[e];R=L[e];for(let e=0,r=t.length;e<r;e++){const r=T(t[e],R[e],i);w?k(r.x,r.y+m[s-1].y,m[s-1].x+n):k(r.x,r.y,l+n)}}}function z(e,t){let n=e.length;for(;--n>=0;){const i=n;let r=n-1;r<0&&(r=e.length-1);for(let e=0,n=s+2*p;e<n;e++){const n=C*e,a=C*(e+1);B(t+i+n,t+r+n,t+r+a,t+i+a)}}}function k(e,t,n){a.push(e),a.push(t),a.push(n)}function U(e,t,r){F(e),F(t),F(r);const a=i.length/3,o=A.generateTopUV(n,i,a-3,a-2,a-1);j(o[0]),j(o[1]),j(o[2])}function B(e,t,r,a){F(e),F(t),F(a),F(t),F(r),F(a);const o=i.length/3,s=A.generateSideWallUV(n,i,o-6,o-3,o-2,o-1);j(s[0]),j(s[1]),j(s[3]),j(s[1]),j(s[2]),j(s[3])}function F(e){i.push(a[3*e+0]),i.push(a[3*e+1]),i.push(a[3*e+2])}function j(e){r.push(e.x),r.push(e.y)}!function(){const e=i.length/3;if(c){let e=0,t=C*e;for(let e=0;e<I;e++){const n=E[e];U(n[2]+t,n[1]+t,n[0]+t)}e=s+2*p,t=C*e;for(let e=0;e<I;e++){const n=E[e];U(n[0]+t,n[1]+t,n[2]+t)}}else{for(let e=0;e<I;e++){const t=E[e];U(t[2],t[1],t[0])}for(let e=0;e<I;e++){const t=E[e];U(t[0]+C*s,t[1]+C*s,t[2]+C*s)}}n.addGroup(e,i.length/3-e,0)}(),function(){const e=i.length/3;let t=0;z(_,t),t+=_.length;for(let e=0,n=S.length;e<n;e++){const n=S[e];z(n,t),t+=n.length}n.addGroup(e,i.length/3-e,1)}()}this.setAttribute("position",new ah(i,3)),this.setAttribute("uv",new ah(r,2)),this.computeVertexNormals()}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){const e=super.toJSON();return function(e,t,n){if(n.shapes=[],Array.isArray(e))for(let t=0,i=e.length;t<i;t++){const i=e[t];n.shapes.push(i.uuid)}else n.shapes.push(e.uuid);return n.options=Object.assign({},t),void 0!==t.extrudePath&&(n.options.extrudePath=t.extrudePath.toJSON()),n}(this.parameters.shapes,this.parameters.options,e)}static fromJSON(e,t){const n=[];for(let i=0,r=e.shapes.length;i<r;i++){const r=t[e.shapes[i]];n.push(r)}const i=e.options.extrudePath;return void 0!==i&&(e.options.extrudePath=(new bm[i.type]).fromJSON(i)),new cg(n,e.options)}}const ug={generateTopUV:function(e,t,n,i,r){const a=t[3*n],o=t[3*n+1],s=t[3*i],l=t[3*i+1],c=t[3*r],u=t[3*r+1];return[new jl(a,o),new jl(s,l),new jl(c,u)]},generateSideWallUV:function(e,t,n,i,r,a){const o=t[3*n],s=t[3*n+1],l=t[3*n+2],c=t[3*i],u=t[3*i+1],h=t[3*i+2],d=t[3*r],p=t[3*r+1],f=t[3*r+2],A=t[3*a],m=t[3*a+1],g=t[3*a+2];return Math.abs(s-u)<Math.abs(o-c)?[new jl(o,1-l),new jl(c,1-h),new jl(d,1-f),new jl(A,1-g)]:[new jl(s,1-l),new jl(u,1-h),new jl(p,1-f),new jl(m,1-g)]}};class hg extends Cm{constructor(e=1,t=0){const n=(1+Math.sqrt(5))/2;super([-1,n,0,1,n,0,-1,-n,0,1,-n,0,0,-1,n,0,1,n,0,-1,-n,0,1,-n,n,0,-1,n,0,1,-n,0,-1,-n,0,1],[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],e,t),this.type="IcosahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new hg(e.radius,e.detail)}}class dg extends Cm{constructor(e=1,t=0){super([1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t),this.type="OctahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new dg(e.radius,e.detail)}}class pg extends fh{constructor(e=.5,t=1,n=32,i=1,r=0,a=2*Math.PI){super(),this.type="RingGeometry",this.parameters={innerRadius:e,outerRadius:t,thetaSegments:n,phiSegments:i,thetaStart:r,thetaLength:a},n=Math.max(3,n);const o=[],s=[],l=[],c=[];let u=e;const h=(t-e)/(i=Math.max(1,i)),d=new bc,p=new jl;for(let e=0;e<=i;e++){for(let e=0;e<=n;e++){const i=r+e/n*a;d.x=u*Math.cos(i),d.y=u*Math.sin(i),s.push(d.x,d.y,d.z),l.push(0,0,1),p.x=(d.x/t+1)/2,p.y=(d.y/t+1)/2,c.push(p.x,p.y)}u+=h}for(let e=0;e<i;e++){const t=e*(n+1);for(let e=0;e<n;e++){const i=e+t,r=i,a=i+n+1,s=i+n+2,l=i+1;o.push(r,a,l),o.push(a,s,l)}}this.setIndex(o),this.setAttribute("position",new ah(s,3)),this.setAttribute("normal",new ah(l,3)),this.setAttribute("uv",new ah(c,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new pg(e.innerRadius,e.outerRadius,e.thetaSegments,e.phiSegments,e.thetaStart,e.thetaLength)}}class fg extends fh{constructor(e=new Pm([new jl(0,.5),new jl(-.5,-.5),new jl(.5,-.5)]),t=12){super(),this.type="ShapeGeometry",this.parameters={shapes:e,curveSegments:t};const n=[],i=[],r=[],a=[];let o=0,s=0;if(!1===Array.isArray(e))l(e);else for(let t=0;t<e.length;t++)l(e[t]),this.addGroup(o,s,t),o+=s,s=0;function l(e){const o=i.length/3,l=e.extractPoints(t);let c=l.shape;const u=l.holes;!1===og.isClockWise(c)&&(c=c.reverse());for(let e=0,t=u.length;e<t;e++){const t=u[e];!0===og.isClockWise(t)&&(u[e]=t.reverse())}const h=og.triangulateShape(c,u);for(let e=0,t=u.length;e<t;e++){const t=u[e];c=c.concat(t)}for(let e=0,t=c.length;e<t;e++){const t=c[e];i.push(t.x,t.y,0),r.push(0,0,1),a.push(t.x,t.y)}for(let e=0,t=h.length;e<t;e++){const t=h[e],i=t[0]+o,r=t[1]+o,a=t[2]+o;n.push(i,r,a),s+=3}}this.setIndex(n),this.setAttribute("position",new ah(i,3)),this.setAttribute("normal",new ah(r,3)),this.setAttribute("uv",new ah(a,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){const e=super.toJSON();return function(e,t){if(t.shapes=[],Array.isArray(e))for(let n=0,i=e.length;n<i;n++){const i=e[n];t.shapes.push(i.uuid)}else t.shapes.push(e.uuid);return t}(this.parameters.shapes,e)}static fromJSON(e,t){const n=[];for(let i=0,r=e.shapes.length;i<r;i++){const r=t[e.shapes[i]];n.push(r)}return new fg(n,e.curveSegments)}}class Ag extends fh{constructor(e=1,t=32,n=16,i=0,r=2*Math.PI,a=0,o=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:e,widthSegments:t,heightSegments:n,phiStart:i,phiLength:r,thetaStart:a,thetaLength:o},t=Math.max(3,Math.floor(t)),n=Math.max(2,Math.floor(n));const s=Math.min(a+o,Math.PI);let l=0;const c=[],u=new bc,h=new bc,d=[],p=[],f=[],A=[];for(let d=0;d<=n;d++){const m=[],g=d/n;let v=0;0===d&&0===a?v=.5/t:d===n&&s===Math.PI&&(v=-.5/t);for(let n=0;n<=t;n++){const s=n/t;u.x=-e*Math.cos(i+s*r)*Math.sin(a+g*o),u.y=e*Math.cos(a+g*o),u.z=e*Math.sin(i+s*r)*Math.sin(a+g*o),p.push(u.x,u.y,u.z),h.copy(u).normalize(),f.push(h.x,h.y,h.z),A.push(s+v,1-g),m.push(l++)}c.push(m)}for(let e=0;e<n;e++)for(let i=0;i<t;i++){const t=c[e][i+1],r=c[e][i],o=c[e+1][i],l=c[e+1][i+1];(0!==e||a>0)&&d.push(t,r,l),(e!==n-1||s<Math.PI)&&d.push(r,o,l)}this.setIndex(d),this.setAttribute("position",new ah(p,3)),this.setAttribute("normal",new ah(f,3)),this.setAttribute("uv",new ah(A,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new Ag(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}}class mg extends Cm{constructor(e=1,t=0){super([1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],e,t),this.type="TetrahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new mg(e.radius,e.detail)}}class gg extends fh{constructor(e=1,t=.4,n=12,i=48,r=2*Math.PI){super(),this.type="TorusGeometry",this.parameters={radius:e,tube:t,radialSegments:n,tubularSegments:i,arc:r},n=Math.floor(n),i=Math.floor(i);const a=[],o=[],s=[],l=[],c=new bc,u=new bc,h=new bc;for(let a=0;a<=n;a++)for(let d=0;d<=i;d++){const p=d/i*r,f=a/n*Math.PI*2;u.x=(e+t*Math.cos(f))*Math.cos(p),u.y=(e+t*Math.cos(f))*Math.sin(p),u.z=t*Math.sin(f),o.push(u.x,u.y,u.z),c.x=e*Math.cos(p),c.y=e*Math.sin(p),h.subVectors(u,c).normalize(),s.push(h.x,h.y,h.z),l.push(d/i),l.push(a/n)}for(let e=1;e<=n;e++)for(let t=1;t<=i;t++){const n=(i+1)*e+t-1,r=(i+1)*(e-1)+t-1,o=(i+1)*(e-1)+t,s=(i+1)*e+t;a.push(n,r,s),a.push(r,o,s)}this.setIndex(a),this.setAttribute("position",new ah(o,3)),this.setAttribute("normal",new ah(s,3)),this.setAttribute("uv",new ah(l,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new gg(e.radius,e.tube,e.radialSegments,e.tubularSegments,e.arc)}}class vg extends fh{constructor(e=1,t=.4,n=64,i=8,r=2,a=3){super(),this.type="TorusKnotGeometry",this.parameters={radius:e,tube:t,tubularSegments:n,radialSegments:i,p:r,q:a},n=Math.floor(n),i=Math.floor(i);const o=[],s=[],l=[],c=[],u=new bc,h=new bc,d=new bc,p=new bc,f=new bc,A=new bc,m=new bc;for(let o=0;o<=n;++o){const v=o/n*r*Math.PI*2;g(v,r,a,e,d),g(v+.01,r,a,e,p),A.subVectors(p,d),m.addVectors(p,d),f.crossVectors(A,m),m.crossVectors(f,A),f.normalize(),m.normalize();for(let e=0;e<=i;++e){const r=e/i*Math.PI*2,a=-t*Math.cos(r),p=t*Math.sin(r);u.x=d.x+(a*m.x+p*f.x),u.y=d.y+(a*m.y+p*f.y),u.z=d.z+(a*m.z+p*f.z),s.push(u.x,u.y,u.z),h.subVectors(u,d).normalize(),l.push(h.x,h.y,h.z),c.push(o/n),c.push(e/i)}}for(let e=1;e<=n;e++)for(let t=1;t<=i;t++){const n=(i+1)*(e-1)+(t-1),r=(i+1)*e+(t-1),a=(i+1)*e+t,s=(i+1)*(e-1)+t;o.push(n,r,s),o.push(r,a,s)}function g(e,t,n,i,r){const a=Math.cos(e),o=Math.sin(e),s=n/t*e,l=Math.cos(s);r.x=i*(2+l)*.5*a,r.y=i*(2+l)*o*.5,r.z=i*Math.sin(s)*.5}this.setIndex(o),this.setAttribute("position",new ah(s,3)),this.setAttribute("normal",new ah(l,3)),this.setAttribute("uv",new ah(c,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new vg(e.radius,e.tube,e.tubularSegments,e.radialSegments,e.p,e.q)}}class yg extends fh{constructor(e=new vm(new bc(-1,-1,0),new bc(-1,1,0),new bc(1,1,0)),t=64,n=1,i=8,r=!1){super(),this.type="TubeGeometry",this.parameters={path:e,tubularSegments:t,radius:n,radialSegments:i,closed:r};const a=e.computeFrenetFrames(t,r);this.tangents=a.tangents,this.normals=a.normals,this.binormals=a.binormals;const o=new bc,s=new bc,l=new jl;let c=new bc;const u=[],h=[],d=[],p=[];function f(r){c=e.getPointAt(r/t,c);const l=a.normals[r],d=a.binormals[r];for(let e=0;e<=i;e++){const t=e/i*Math.PI*2,r=Math.sin(t),a=-Math.cos(t);s.x=a*l.x+r*d.x,s.y=a*l.y+r*d.y,s.z=a*l.z+r*d.z,s.normalize(),h.push(s.x,s.y,s.z),o.x=c.x+n*s.x,o.y=c.y+n*s.y,o.z=c.z+n*s.z,u.push(o.x,o.y,o.z)}}!function(){for(let e=0;e<t;e++)f(e);f(!1===r?t:0),function(){for(let e=0;e<=t;e++)for(let n=0;n<=i;n++)l.x=e/t,l.y=n/i,d.push(l.x,l.y)}(),function(){for(let e=1;e<=t;e++)for(let t=1;t<=i;t++){const n=(i+1)*(e-1)+(t-1),r=(i+1)*e+(t-1),a=(i+1)*e+t,o=(i+1)*(e-1)+t;p.push(n,r,o),p.push(r,a,o)}}()}(),this.setIndex(p),this.setAttribute("position",new ah(u,3)),this.setAttribute("normal",new ah(h,3)),this.setAttribute("uv",new ah(d,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){const e=super.toJSON();return e.path=this.parameters.path.toJSON(),e}static fromJSON(e){return new yg((new bm[e.path.type]).fromJSON(e.path),e.tubularSegments,e.radius,e.radialSegments,e.closed)}}class bg extends fh{constructor(e=null){if(super(),this.type="WireframeGeometry",this.parameters={geometry:e},null!==e){const t=[],n=new Set,i=new bc,r=new bc;if(null!==e.index){const a=e.attributes.position,o=e.index;let s=e.groups;0===s.length&&(s=[{start:0,count:o.count,materialIndex:0}]);for(let e=0,l=s.length;e<l;++e){const l=s[e],c=l.start;for(let e=c,s=c+l.count;e<s;e+=3)for(let s=0;s<3;s++){const l=o.getX(e+s),c=o.getX(e+(s+1)%3);i.fromBufferAttribute(a,l),r.fromBufferAttribute(a,c),!0===wg(i,r,n)&&(t.push(i.x,i.y,i.z),t.push(r.x,r.y,r.z))}}}else{const a=e.attributes.position;for(let e=0,o=a.count/3;e<o;e++)for(let o=0;o<3;o++){const s=3*e+o,l=3*e+(o+1)%3;i.fromBufferAttribute(a,s),r.fromBufferAttribute(a,l),!0===wg(i,r,n)&&(t.push(i.x,i.y,i.z),t.push(r.x,r.y,r.z))}}this.setAttribute("position",new ah(t,3))}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}}function wg(e,t,n){const i=`${e.x},${e.y},${e.z}-${t.x},${t.y},${t.z}`,r=`${t.x},${t.y},${t.z}-${e.x},${e.y},${e.z}`;return!0!==n.has(i)&&!0!==n.has(r)&&(n.add(i),n.add(r),!0)}var xg=Object.freeze({__proto__:null,BoxGeometry:Oh,CapsuleGeometry:Sm,CircleGeometry:Em,ConeGeometry:Tm,CylinderGeometry:_m,DodecahedronGeometry:Im,EdgesGeometry:Om,ExtrudeGeometry:cg,IcosahedronGeometry:hg,LatheGeometry:Mm,OctahedronGeometry:dg,PlaneGeometry:td,PolyhedronGeometry:Cm,RingGeometry:pg,ShapeGeometry:fg,SphereGeometry:Ag,TetrahedronGeometry:mg,TorusGeometry:gg,TorusKnotGeometry:vg,TubeGeometry:yg,WireframeGeometry:bg});class Mg extends ju{constructor(e){super(),this.isShadowMaterial=!0,this.type="ShadowMaterial",this.color=new Uu(0),this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.fog=e.fog,this}}class Sg extends Bh{constructor(e){super(e),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}}class Eg extends ju{constructor(e){super(),this.isMeshStandardMaterial=!0,this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new Uu(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 Uu(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ns,this.normalScale=new jl(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(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class _g extends Eg{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new jl(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return Ll(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(e){this.ior=(1+.4*e)/(1-.4*e)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new Uu(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new Uu(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new Uu(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(e)}get anisotropy(){return this._anisotropy}set anisotropy(e){this._anisotropy>0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class Tg extends ju{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new Uu(16777215),this.specular=new Uu(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Uu(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ns,this.normalScale=new jl(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=za,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class Cg extends ju{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new Uu(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Uu(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ns,this.normalScale=new jl(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class Ig extends ju{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ns,this.normalScale=new jl(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class Dg extends ju{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new Uu(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Uu(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ns,this.normalScale=new jl(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=za,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class Ng extends ju{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new Uu(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ns,this.normalScale=new jl(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this.fog=e.fog,this}}class Lg extends NA{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function Rg(e,t,n){return!e||!n&&e.constructor===t?e:"number"==typeof t.BYTES_PER_ELEMENT?new t(e):Array.prototype.slice.call(e)}function Og(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Pg(e){const t=e.length,n=new Array(t);for(let e=0;e!==t;++e)n[e]=e;return n.sort((function(t,n){return e[t]-e[n]})),n}function zg(e,t,n){const i=e.length,r=new e.constructor(i);for(let a=0,o=0;o!==i;++a){const i=n[a]*t;for(let n=0;n!==t;++n)r[o++]=e[i+n]}return r}function kg(e,t,n,i){let r=1,a=e[0];for(;void 0!==a&&void 0===a[i];)a=e[r++];if(void 0===a)return;let o=a[i];if(void 0!==o)if(Array.isArray(o))do{o=a[i],void 0!==o&&(t.push(a.time),n.push.apply(n,o)),a=e[r++]}while(void 0!==a);else if(void 0!==o.toArray)do{o=a[i],void 0!==o&&(t.push(a.time),o.toArray(n,n.length)),a=e[r++]}while(void 0!==a);else do{o=a[i],void 0!==o&&(t.push(a.time),n.push(o)),a=e[r++]}while(void 0!==a)}const Ug={convertArray:Rg,isTypedArray:Og,getKeyframeOrder:Pg,sortedArray:zg,flattenJSON:kg,subclip:function(e,t,n,i,r=30){const a=e.clone();a.name=t;const o=[];for(let e=0;e<a.tracks.length;++e){const t=a.tracks[e],s=t.getValueSize(),l=[],c=[];for(let e=0;e<t.times.length;++e){const a=t.times[e]*r;if(!(a<n||a>=i)){l.push(t.times[e]);for(let n=0;n<s;++n)c.push(t.values[e*s+n])}}0!==l.length&&(t.times=Rg(l,t.times.constructor),t.values=Rg(c,t.values.constructor),o.push(t))}a.tracks=o;let s=1/0;for(let e=0;e<a.tracks.length;++e)s>a.tracks[e].times[0]&&(s=a.tracks[e].times[0]);for(let e=0;e<a.tracks.length;++e)a.tracks[e].shift(-1*s);return a.resetDuration(),a},makeClipAdditive:function(e,t=0,n=e,i=30){i<=0&&(i=30);const r=n.tracks.length,a=t/i;for(let t=0;t<r;++t){const i=n.tracks[t],r=i.ValueTypeName;if("bool"===r||"string"===r)continue;const o=e.tracks.find((function(e){return e.name===i.name&&e.ValueTypeName===r}));if(void 0===o)continue;let s=0;const l=i.getValueSize();i.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(s=l/3);let c=0;const u=o.getValueSize();o.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(c=u/3);const h=i.times.length-1;let d;if(a<=i.times[0]){const e=s,t=l-s;d=i.values.slice(e,t)}else if(a>=i.times[h]){const e=h*l+s,t=e+l-s;d=i.values.slice(e,t)}else{const e=i.createInterpolant(),t=s,n=l-s;e.evaluate(a),d=e.resultBuffer.slice(t,n)}"quaternion"===r&&(new yc).fromArray(d).normalize().conjugate().toArray(d);const p=o.times.length;for(let e=0;e<p;++e){const t=e*u+c;if("quaternion"===r)yc.multiplyQuaternionsFlat(o.values,t,d,0,o.values,t);else{const e=u-2*c;for(let n=0;n<e;++n)o.values[t+n]-=d[n]}}}return e.blendMode=Ms,e}};class Bg{constructor(e,t,n,i){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=void 0!==i?i:new t.constructor(n),this.sampleValues=t,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(e){const t=this.parameterPositions;let n=this._cachedIndex,i=t[n],r=t[n-1];e:{t:{let a;n:{i:if(!(e<i)){for(let a=n+2;;){if(void 0===i){if(e<r)break i;return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}if(n===a)break;if(r=i,i=t[++n],e<i)break t}a=t.length;break n}if(e>=r)break e;{const o=t[1];e<o&&(n=2,r=o);for(let a=n-2;;){if(void 0===r)return this._cachedIndex=0,this.copySampleValue_(0);if(n===a)break;if(i=r,r=t[--n-1],e>=r)break t}a=n,n=0}}for(;n<a;){const i=n+a>>>1;e<t[i]?a=i:n=i+1}if(i=t[n],r=t[n-1],void 0===r)return this._cachedIndex=0,this.copySampleValue_(0);if(void 0===i)return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}this._cachedIndex=n,this.intervalChanged_(n,r,i)}return this.interpolate_(n,r,e,i)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=e*i;for(let e=0;e!==i;++e)t[e]=n[r+e];return t}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}}class Fg extends Bg{constructor(e,t,n,i){super(e,t,n,i),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:ys,endingEnd:ys}}intervalChanged_(e,t,n){const i=this.parameterPositions;let r=e-2,a=e+1,o=i[r],s=i[a];if(void 0===o)switch(this.getSettings_().endingStart){case bs:r=e,o=2*t-n;break;case ws:r=i.length-2,o=t+i[r]-i[r+1];break;default:r=e,o=n}if(void 0===s)switch(this.getSettings_().endingEnd){case bs:a=e,s=2*n-t;break;case ws:a=1,s=n+i[1]-i[0];break;default:a=e-1,s=t}const l=.5*(n-t),c=this.valueSize;this._weightPrev=l/(t-o),this._weightNext=l/(s-n),this._offsetPrev=r*c,this._offsetNext=a*c}interpolate_(e,t,n,i){const r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=e*o,l=s-o,c=this._offsetPrev,u=this._offsetNext,h=this._weightPrev,d=this._weightNext,p=(n-t)/(i-t),f=p*p,A=f*p,m=-h*A+2*h*f-h*p,g=(1+h)*A+(-1.5-2*h)*f+(-.5+h)*p+1,v=(-1-d)*A+(1.5+d)*f+.5*p,y=d*A-d*f;for(let e=0;e!==o;++e)r[e]=m*a[c+e]+g*a[l+e]+v*a[s+e]+y*a[u+e];return r}}class jg extends Bg{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){const r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=e*o,l=s-o,c=(n-t)/(i-t),u=1-c;for(let e=0;e!==o;++e)r[e]=a[l+e]*u+a[s+e]*c;return r}}class Hg extends Bg{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e){return this.copySampleValue_(e-1)}}class Vg{constructor(e,t,n,i){if(void 0===e)throw new Error("THREE.KeyframeTrack: track name is undefined");if(void 0===t||0===t.length)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=Rg(t,this.TimeBufferType),this.values=Rg(n,this.ValueBufferType),this.setInterpolation(i||this.DefaultInterpolation)}static toJSON(e){const t=e.constructor;let n;if(t.toJSON!==this.toJSON)n=t.toJSON(e);else{n={name:e.name,times:Rg(e.times,Array),values:Rg(e.values,Array)};const t=e.getInterpolation();t!==e.DefaultInterpolation&&(n.interpolation=t)}return n.type=e.ValueTypeName,n}InterpolantFactoryMethodDiscrete(e){return new Hg(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new jg(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new Fg(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let t;switch(e){case ms:t=this.InterpolantFactoryMethodDiscrete;break;case gs:t=this.InterpolantFactoryMethodLinear;break;case vs:t=this.InterpolantFactoryMethodSmooth}if(void 0===t){const t="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(void 0===this.createInterpolant){if(e===this.DefaultInterpolation)throw new Error(t);this.setInterpolation(this.DefaultInterpolation)}return console.warn("THREE.KeyframeTrack:",t),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return ms;case this.InterpolantFactoryMethodLinear:return gs;case this.InterpolantFactoryMethodSmooth:return vs}}getValueSize(){return this.values.length/this.times.length}shift(e){if(0!==e){const t=this.times;for(let n=0,i=t.length;n!==i;++n)t[n]+=e}return this}scale(e){if(1!==e){const t=this.times;for(let n=0,i=t.length;n!==i;++n)t[n]*=e}return this}trim(e,t){const n=this.times,i=n.length;let r=0,a=i-1;for(;r!==i&&n[r]<e;)++r;for(;-1!==a&&n[a]>t;)--a;if(++a,0!==r||a!==i){r>=a&&(a=Math.max(a,1),r=a-1);const e=this.getValueSize();this.times=n.slice(r,a),this.values=this.values.slice(r*e,a*e)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const n=this.times,i=this.values,r=n.length;0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let a=null;for(let t=0;t!==r;t++){const i=n[t];if("number"==typeof i&&isNaN(i)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,t,i),e=!1;break}if(null!==a&&a>i){console.error("THREE.KeyframeTrack: Out of order keys.",this,t,i,a),e=!1;break}a=i}if(void 0!==i&&Og(i))for(let t=0,n=i.length;t!==n;++t){const n=i[t];if(isNaN(n)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,t,n),e=!1;break}}return e}optimize(){const e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),i=this.getInterpolation()===vs,r=e.length-1;let a=1;for(let o=1;o<r;++o){let r=!1;const s=e[o];if(s!==e[o+1]&&(1!==o||s!==e[0]))if(i)r=!0;else{const e=o*n,i=e-n,a=e+n;for(let o=0;o!==n;++o){const n=t[e+o];if(n!==t[i+o]||n!==t[a+o]){r=!0;break}}}if(r){if(o!==a){e[a]=e[o];const i=o*n,r=a*n;for(let e=0;e!==n;++e)t[r+e]=t[i+e]}++a}}if(r>0){e[a]=e[r];for(let e=r*n,i=a*n,o=0;o!==n;++o)t[i+o]=t[e+o];++a}return a!==e.length?(this.times=e.slice(0,a),this.values=t.slice(0,a*n)):(this.times=e,this.values=t),this}clone(){const e=this.times.slice(),t=this.values.slice(),n=new(0,this.constructor)(this.name,e,t);return n.createInterpolant=this.createInterpolant,n}}Vg.prototype.TimeBufferType=Float32Array,Vg.prototype.ValueBufferType=Float32Array,Vg.prototype.DefaultInterpolation=gs;class Wg extends Vg{}Wg.prototype.ValueTypeName="bool",Wg.prototype.ValueBufferType=Array,Wg.prototype.DefaultInterpolation=ms,Wg.prototype.InterpolantFactoryMethodLinear=void 0,Wg.prototype.InterpolantFactoryMethodSmooth=void 0;class Gg extends Vg{}Gg.prototype.ValueTypeName="color";class Qg extends Vg{}Qg.prototype.ValueTypeName="number";class Xg extends Bg{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){const r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=(n-t)/(i-t);let l=e*o;for(let e=l+o;l!==e;l+=4)yc.slerpFlat(r,0,a,l-o,a,l,s);return r}}class Yg extends Vg{InterpolantFactoryMethodLinear(e){return new Xg(this.times,this.values,this.getValueSize(),e)}}Yg.prototype.ValueTypeName="quaternion",Yg.prototype.DefaultInterpolation=gs,Yg.prototype.InterpolantFactoryMethodSmooth=void 0;class Zg extends Vg{}Zg.prototype.ValueTypeName="string",Zg.prototype.ValueBufferType=Array,Zg.prototype.DefaultInterpolation=ms,Zg.prototype.InterpolantFactoryMethodLinear=void 0,Zg.prototype.InterpolantFactoryMethodSmooth=void 0;class qg extends Vg{}qg.prototype.ValueTypeName="vector";class Kg{constructor(e,t=-1,n,i=xs){this.name=e,this.tracks=n,this.duration=t,this.blendMode=i,this.uuid=Nl(),this.duration<0&&this.resetDuration()}static parse(e){const t=[],n=e.tracks,i=1/(e.fps||1);for(let e=0,r=n.length;e!==r;++e)t.push(Jg(n[e]).scale(i));const r=new this(e.name,e.duration,t,e.blendMode);return r.uuid=e.uuid,r}static toJSON(e){const t=[],n=e.tracks,i={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let e=0,i=n.length;e!==i;++e)t.push(Vg.toJSON(n[e]));return i}static CreateFromMorphTargetSequence(e,t,n,i){const r=t.length,a=[];for(let e=0;e<r;e++){let o=[],s=[];o.push((e+r-1)%r,e,(e+1)%r),s.push(0,1,0);const l=Pg(o);o=zg(o,1,l),s=zg(s,1,l),i||0!==o[0]||(o.push(r),s.push(s[0])),a.push(new Qg(".morphTargetInfluences["+t[e].name+"]",o,s).scale(1/n))}return new this(e,-1,a)}static findByName(e,t){let n=e;if(!Array.isArray(e)){const t=e;n=t.geometry&&t.geometry.animations||t.animations}for(let e=0;e<n.length;e++)if(n[e].name===t)return n[e];return null}static CreateClipsFromMorphTargetSequences(e,t,n){const i={},r=/^([\w-]*?)([\d]+)$/;for(let t=0,n=e.length;t<n;t++){const n=e[t],a=n.name.match(r);if(a&&a.length>1){const e=a[1];let t=i[e];t||(i[e]=t=[]),t.push(n)}}const a=[];for(const e in i)a.push(this.CreateFromMorphTargetSequence(e,i[e],t,n));return a}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const n=function(e,t,n,i,r){if(0!==n.length){const a=[],o=[];kg(n,a,o,i),0!==a.length&&r.push(new e(t,a,o))}},i=[],r=e.name||"default",a=e.fps||30,o=e.blendMode;let s=e.length||-1;const l=e.hierarchy||[];for(let e=0;e<l.length;e++){const r=l[e].keys;if(r&&0!==r.length)if(r[0].morphTargets){const e={};let t;for(t=0;t<r.length;t++)if(r[t].morphTargets)for(let n=0;n<r[t].morphTargets.length;n++)e[r[t].morphTargets[n]]=-1;for(const n in e){const e=[],a=[];for(let i=0;i!==r[t].morphTargets.length;++i){const i=r[t];e.push(i.time),a.push(i.morphTarget===n?1:0)}i.push(new Qg(".morphTargetInfluence["+n+"]",e,a))}s=e.length*a}else{const a=".bones["+t[e].name+"]";n(qg,a+".position",r,"pos",i),n(Yg,a+".quaternion",r,"rot",i),n(qg,a+".scale",r,"scl",i)}}return 0===i.length?null:new this(r,s,i,o)}resetDuration(){let e=0;for(let t=0,n=this.tracks.length;t!==n;++t){const n=this.tracks[t];e=Math.max(e,n.times[n.times.length-1])}return this.duration=e,this}trim(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].trim(0,this.duration);return this}validate(){let e=!0;for(let t=0;t<this.tracks.length;t++)e=e&&this.tracks[t].validate();return e}optimize(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].optimize();return this}clone(){const e=[];for(let t=0;t<this.tracks.length;t++)e.push(this.tracks[t].clone());return new this.constructor(this.name,this.duration,e,this.blendMode)}toJSON(){return this.constructor.toJSON(this)}}function Jg(e){if(void 0===e.type)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");const t=function(e){switch(e.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return Qg;case"vector":case"vector2":case"vector3":case"vector4":return qg;case"color":return Gg;case"quaternion":return Yg;case"bool":case"boolean":return Wg;case"string":return Zg}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+e)}(e.type);if(void 0===e.times){const t=[],n=[];kg(e.keys,t,n,"value"),e.times=t,e.values=n}return void 0!==t.parse?t.parse(e):new t(e.name,e.times,e.values,e.interpolation)}const $g={enabled:!1,files:{},add:function(e,t){!1!==this.enabled&&(this.files[e]=t)},get:function(e){if(!1!==this.enabled)return this.files[e]},remove:function(e){delete this.files[e]},clear:function(){this.files={}}};class ev{constructor(e,t,n){const i=this;let r,a=!1,o=0,s=0;const l=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=n,this.itemStart=function(e){s++,!1===a&&void 0!==i.onStart&&i.onStart(e,o,s),a=!0},this.itemEnd=function(e){o++,void 0!==i.onProgress&&i.onProgress(e,o,s),o===s&&(a=!1,void 0!==i.onLoad&&i.onLoad())},this.itemError=function(e){void 0!==i.onError&&i.onError(e)},this.resolveURL=function(e){return r?r(e):e},this.setURLModifier=function(e){return r=e,this},this.addHandler=function(e,t){return l.push(e,t),this},this.removeHandler=function(e){const t=l.indexOf(e);return-1!==t&&l.splice(t,2),this},this.getHandler=function(e){for(let t=0,n=l.length;t<n;t+=2){const n=l[t],i=l[t+1];if(n.global&&(n.lastIndex=0),n.test(e))return i}return null}}}const tv=new ev;class nv{constructor(e){this.manager=void 0!==e?e:tv,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,t){const n=this;return new Promise((function(i,r){n.load(e,i,t,r)}))}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}}nv.DEFAULT_MATERIAL_NAME="__DEFAULT";const iv={};class rv extends Error{constructor(e,t){super(e),this.response=t}}class av extends nv{constructor(e){super(e)}load(e,t,n,i){void 0===e&&(e=""),void 0!==this.path&&(e=this.path+e),e=this.manager.resolveURL(e);const r=$g.get(e);if(void 0!==r)return this.manager.itemStart(e),setTimeout((()=>{t&&t(r),this.manager.itemEnd(e)}),0),r;if(void 0!==iv[e])return void iv[e].push({onLoad:t,onProgress:n,onError:i});iv[e]=[],iv[e].push({onLoad:t,onProgress:n,onError:i});const a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),o=this.mimeType,s=this.responseType;fetch(a).then((t=>{if(200===t.status||0===t.status){if(0===t.status&&console.warn("THREE.FileLoader: HTTP Status 0 received."),"undefined"==typeof ReadableStream||void 0===t.body||void 0===t.body.getReader)return t;const n=iv[e],i=t.body.getReader(),r=t.headers.get("Content-Length")||t.headers.get("X-File-Size"),a=r?parseInt(r):0,o=0!==a;let s=0;const l=new ReadableStream({start(e){!function t(){i.read().then((({done:i,value:r})=>{if(i)e.close();else{s+=r.byteLength;const i=new ProgressEvent("progress",{lengthComputable:o,loaded:s,total:a});for(let e=0,t=n.length;e<t;e++){const t=n[e];t.onProgress&&t.onProgress(i)}e.enqueue(r),t()}}))}()}});return new Response(l)}throw new rv(`fetch for "${t.url}" responded with ${t.status}: ${t.statusText}`,t)})).then((e=>{switch(s){case"arraybuffer":return e.arrayBuffer();case"blob":return e.blob();case"document":return e.text().then((e=>(new DOMParser).parseFromString(e,o)));case"json":return e.json();default:if(void 0===o)return e.text();{const t=/charset="?([^;"\s]*)"?/i.exec(o),n=t&&t[1]?t[1].toLowerCase():void 0,i=new TextDecoder(n);return e.arrayBuffer().then((e=>i.decode(e)))}}})).then((t=>{$g.add(e,t);const n=iv[e];delete iv[e];for(let e=0,i=n.length;e<i;e++){const i=n[e];i.onLoad&&i.onLoad(t)}})).catch((t=>{const n=iv[e];if(void 0===n)throw this.manager.itemError(e),t;delete iv[e];for(let e=0,i=n.length;e<i;e++){const i=n[e];i.onError&&i.onError(t)}this.manager.itemError(e)})).finally((()=>{this.manager.itemEnd(e)})),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class ov extends nv{constructor(e){super(e)}load(e,t,n,i){const r=this,a=new av(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,(function(n){try{t(r.parse(JSON.parse(n)))}catch(t){i?i(t):console.error(t),r.manager.itemError(e)}}),n,i)}parse(e){const t=[];for(let n=0;n<e.length;n++){const i=Kg.parse(e[n]);t.push(i)}return t}}class sv extends nv{constructor(e){super(e)}load(e,t,n,i){const r=this,a=[],o=new KA,s=new av(this.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(r.withCredentials);let l=0;function c(c){s.load(e[c],(function(e){const n=r.parse(e,!0);a[c]={width:n.width,height:n.height,format:n.format,mipmaps:n.mipmaps},l+=1,6===l&&(1===n.mipmapCount&&(o.minFilter=so),o.image=a,o.format=n.format,o.needsUpdate=!0,t&&t(o))}),n,i)}if(Array.isArray(e))for(let t=0,n=e.length;t<n;++t)c(t);else s.load(e,(function(e){const n=r.parse(e,!0);if(n.isCubemap){const e=n.mipmaps.length/n.mipmapCount;for(let t=0;t<e;t++){a[t]={mipmaps:[]};for(let e=0;e<n.mipmapCount;e++)a[t].mipmaps.push(n.mipmaps[t*n.mipmapCount+e]),a[t].format=n.format,a[t].width=n.width,a[t].height=n.height}o.image=a}else o.image.width=n.width,o.image.height=n.height,o.mipmaps=n.mipmaps;1===n.mipmapCount&&(o.minFilter=so),o.format=n.format,o.needsUpdate=!0,t&&t(o)}),n,i);return o}}class lv extends nv{constructor(e){super(e)}load(e,t,n,i){void 0!==this.path&&(e=this.path+e),e=this.manager.resolveURL(e);const r=this,a=$g.get(e);if(void 0!==a)return r.manager.itemStart(e),setTimeout((function(){t&&t(a),r.manager.itemEnd(e)}),0),a;const o=Xl("img");function s(){c(),$g.add(e,this),t&&t(this),r.manager.itemEnd(e)}function l(t){c(),i&&i(t),r.manager.itemError(e),r.manager.itemEnd(e)}function c(){o.removeEventListener("load",s,!1),o.removeEventListener("error",l,!1)}return o.addEventListener("load",s,!1),o.addEventListener("error",l,!1),"data:"!==e.slice(0,5)&&void 0!==this.crossOrigin&&(o.crossOrigin=this.crossOrigin),r.manager.itemStart(e),o.src=e,o}}class cv extends nv{constructor(e){super(e)}load(e,t,n,i){const r=new Wh;r.colorSpace=Os;const a=new lv(this.manager);a.setCrossOrigin(this.crossOrigin),a.setPath(this.path);let o=0;function s(n){a.load(e[n],(function(e){r.images[n]=e,o++,6===o&&(r.needsUpdate=!0,t&&t(r))}),void 0,i)}for(let t=0;t<e.length;++t)s(t);return r}}class uv extends nv{constructor(e){super(e)}load(e,t,n,i){const r=this,a=new vA,o=new av(this.manager);return o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setPath(this.path),o.setWithCredentials(r.withCredentials),o.load(e,(function(e){let n;try{n=r.parse(e)}catch(e){if(void 0===i)return void console.error(e);i(e)}void 0!==n.image?a.image=n.image:void 0!==n.data&&(a.image.width=n.width,a.image.height=n.height,a.image.data=n.data),a.wrapS=void 0!==n.wrapS?n.wrapS:eo,a.wrapT=void 0!==n.wrapT?n.wrapT:eo,a.magFilter=void 0!==n.magFilter?n.magFilter:so,a.minFilter=void 0!==n.minFilter?n.minFilter:so,a.anisotropy=void 0!==n.anisotropy?n.anisotropy:1,void 0!==n.colorSpace?a.colorSpace=n.colorSpace:void 0!==n.encoding&&(a.encoding=n.encoding),void 0!==n.flipY&&(a.flipY=n.flipY),void 0!==n.format&&(a.format=n.format),void 0!==n.type&&(a.type=n.type),void 0!==n.mipmaps&&(a.mipmaps=n.mipmaps,a.minFilter=uo),1===n.mipmapCount&&(a.minFilter=so),void 0!==n.generateMipmaps&&(a.generateMipmaps=n.generateMipmaps),a.needsUpdate=!0,t&&t(a,n)}),n,i),a}}class hv extends nv{constructor(e){super(e)}load(e,t,n,i){const r=new uc,a=new lv(this.manager);return a.setCrossOrigin(this.crossOrigin),a.setPath(this.path),a.load(e,(function(e){r.image=e,r.needsUpdate=!0,void 0!==t&&t(r)}),n,i),r}}class dv extends wu{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new Uu(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){const t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,void 0!==this.groundColor&&(t.object.groundColor=this.groundColor.getHex()),void 0!==this.distance&&(t.object.distance=this.distance),void 0!==this.angle&&(t.object.angle=this.angle),void 0!==this.decay&&(t.object.decay=this.decay),void 0!==this.penumbra&&(t.object.penumbra=this.penumbra),void 0!==this.shadow&&(t.object.shadow=this.shadow.toJSON()),t}}class pv extends dv{constructor(e,t,n){super(e,n),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(wu.DEFAULT_UP),this.updateMatrix(),this.groundColor=new Uu(t)}copy(e,t){return super.copy(e,t),this.groundColor.copy(e.groundColor),this}}const fv=new qc,Av=new bc,mv=new bc;class gv{constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new jl(512,512),this.map=null,this.mapPass=null,this.matrix=new qc,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new Jh,this._frameExtents=new jl(1,1),this._viewportCount=1,this._viewports=[new hc(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){const t=this.camera,n=this.matrix;Av.setFromMatrixPosition(e.matrixWorld),t.position.copy(Av),mv.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(mv),t.updateMatrixWorld(),fv.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(fv),n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(fv)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return(new this.constructor).copy(this)}toJSON(){const e={};return 0!==this.bias&&(e.bias=this.bias),0!==this.normalBias&&(e.normalBias=this.normalBias),1!==this.radius&&(e.radius=this.radius),512===this.mapSize.x&&512===this.mapSize.y||(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}}class vv extends gv{constructor(){super(new jh(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(e){const t=this.camera,n=2*Dl*e.angle*this.focus,i=this.mapSize.width/this.mapSize.height,r=e.distance||t.far;n===t.fov&&i===t.aspect&&r===t.far||(t.fov=n,t.aspect=i,t.far=r,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}}class yv extends dv{constructor(e,t,n=0,i=Math.PI/3,r=0,a=2){super(e,t),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(wu.DEFAULT_UP),this.updateMatrix(),this.target=new wu,this.distance=n,this.angle=i,this.penumbra=r,this.decay=a,this.map=null,this.shadow=new vv}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}const bv=new qc,wv=new bc,xv=new bc;class Mv extends gv{constructor(){super(new jh(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new jl(4,2),this._viewportCount=6,this._viewports=[new hc(2,1,1,1),new hc(0,1,1,1),new hc(3,1,1,1),new hc(1,1,1,1),new hc(3,0,1,1),new hc(1,0,1,1)],this._cubeDirections=[new bc(1,0,0),new bc(-1,0,0),new bc(0,0,1),new bc(0,0,-1),new bc(0,1,0),new bc(0,-1,0)],this._cubeUps=[new bc(0,1,0),new bc(0,1,0),new bc(0,1,0),new bc(0,1,0),new bc(0,0,1),new bc(0,0,-1)]}updateMatrices(e,t=0){const n=this.camera,i=this.matrix,r=e.distance||n.far;r!==n.far&&(n.far=r,n.updateProjectionMatrix()),wv.setFromMatrixPosition(e.matrixWorld),n.position.copy(wv),xv.copy(n.position),xv.add(this._cubeDirections[t]),n.up.copy(this._cubeUps[t]),n.lookAt(xv),n.updateMatrixWorld(),i.makeTranslation(-wv.x,-wv.y,-wv.z),bv.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix(bv)}}class Sv extends dv{constructor(e,t,n=0,i=2){super(e,t),this.isPointLight=!0,this.type="PointLight",this.distance=n,this.decay=i,this.shadow=new Mv}get power(){return 4*this.intensity*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,t){return super.copy(e,t),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}}class Ev extends gv{constructor(){super(new dd(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class _v extends dv{constructor(e,t){super(e,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(wu.DEFAULT_UP),this.updateMatrix(),this.target=new wu,this.shadow=new Ev}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}class Tv extends dv{constructor(e,t){super(e,t),this.isAmbientLight=!0,this.type="AmbientLight"}}class Cv extends dv{constructor(e,t,n=10,i=10){super(e,t),this.isRectAreaLight=!0,this.type="RectAreaLight",this.width=n,this.height=i}get power(){return this.intensity*this.width*this.height*Math.PI}set power(e){this.intensity=e/(this.width*this.height*Math.PI)}copy(e){return super.copy(e),this.width=e.width,this.height=e.height,this}toJSON(e){const t=super.toJSON(e);return t.object.width=this.width,t.object.height=this.height,t}}class Iv{constructor(){this.isSphericalHarmonics3=!0,this.coefficients=[];for(let e=0;e<9;e++)this.coefficients.push(new bc)}set(e){for(let t=0;t<9;t++)this.coefficients[t].copy(e[t]);return this}zero(){for(let e=0;e<9;e++)this.coefficients[e].set(0,0,0);return this}getAt(e,t){const n=e.x,i=e.y,r=e.z,a=this.coefficients;return t.copy(a[0]).multiplyScalar(.282095),t.addScaledVector(a[1],.488603*i),t.addScaledVector(a[2],.488603*r),t.addScaledVector(a[3],.488603*n),t.addScaledVector(a[4],n*i*1.092548),t.addScaledVector(a[5],i*r*1.092548),t.addScaledVector(a[6],.315392*(3*r*r-1)),t.addScaledVector(a[7],n*r*1.092548),t.addScaledVector(a[8],.546274*(n*n-i*i)),t}getIrradianceAt(e,t){const n=e.x,i=e.y,r=e.z,a=this.coefficients;return t.copy(a[0]).multiplyScalar(.886227),t.addScaledVector(a[1],1.023328*i),t.addScaledVector(a[2],1.023328*r),t.addScaledVector(a[3],1.023328*n),t.addScaledVector(a[4],.858086*n*i),t.addScaledVector(a[5],.858086*i*r),t.addScaledVector(a[6],.743125*r*r-.247708),t.addScaledVector(a[7],.858086*n*r),t.addScaledVector(a[8],.429043*(n*n-i*i)),t}add(e){for(let t=0;t<9;t++)this.coefficients[t].add(e.coefficients[t]);return this}addScaledSH(e,t){for(let n=0;n<9;n++)this.coefficients[n].addScaledVector(e.coefficients[n],t);return this}scale(e){for(let t=0;t<9;t++)this.coefficients[t].multiplyScalar(e);return this}lerp(e,t){for(let n=0;n<9;n++)this.coefficients[n].lerp(e.coefficients[n],t);return this}equals(e){for(let t=0;t<9;t++)if(!this.coefficients[t].equals(e.coefficients[t]))return!1;return!0}copy(e){return this.set(e.coefficients)}clone(){return(new this.constructor).copy(this)}fromArray(e,t=0){const n=this.coefficients;for(let i=0;i<9;i++)n[i].fromArray(e,t+3*i);return this}toArray(e=[],t=0){const n=this.coefficients;for(let i=0;i<9;i++)n[i].toArray(e,t+3*i);return e}static getBasisAt(e,t){const n=e.x,i=e.y,r=e.z;t[0]=.282095,t[1]=.488603*i,t[2]=.488603*r,t[3]=.488603*n,t[4]=1.092548*n*i,t[5]=1.092548*i*r,t[6]=.315392*(3*r*r-1),t[7]=1.092548*n*r,t[8]=.546274*(n*n-i*i)}}class Dv extends dv{constructor(e=new Iv,t=1){super(void 0,t),this.isLightProbe=!0,this.sh=e}copy(e){return super.copy(e),this.sh.copy(e.sh),this}fromJSON(e){return this.intensity=e.intensity,this.sh.fromArray(e.sh),this}toJSON(e){const t=super.toJSON(e);return t.object.sh=this.sh.toArray(),t}}class Nv extends nv{constructor(e){super(e),this.textures={}}load(e,t,n,i){const r=this,a=new av(r.manager);a.setPath(r.path),a.setRequestHeader(r.requestHeader),a.setWithCredentials(r.withCredentials),a.load(e,(function(n){try{t(r.parse(JSON.parse(n)))}catch(t){i?i(t):console.error(t),r.manager.itemError(e)}}),n,i)}parse(e){const t=this.textures;function n(e){return void 0===t[e]&&console.warn("THREE.MaterialLoader: Undefined texture",e),t[e]}const i=Nv.createMaterialFromType(e.type);if(void 0!==e.uuid&&(i.uuid=e.uuid),void 0!==e.name&&(i.name=e.name),void 0!==e.color&&void 0!==i.color&&i.color.setHex(e.color),void 0!==e.roughness&&(i.roughness=e.roughness),void 0!==e.metalness&&(i.metalness=e.metalness),void 0!==e.sheen&&(i.sheen=e.sheen),void 0!==e.sheenColor&&(i.sheenColor=(new Uu).setHex(e.sheenColor)),void 0!==e.sheenRoughness&&(i.sheenRoughness=e.sheenRoughness),void 0!==e.emissive&&void 0!==i.emissive&&i.emissive.setHex(e.emissive),void 0!==e.specular&&void 0!==i.specular&&i.specular.setHex(e.specular),void 0!==e.specularIntensity&&(i.specularIntensity=e.specularIntensity),void 0!==e.specularColor&&void 0!==i.specularColor&&i.specularColor.setHex(e.specularColor),void 0!==e.shininess&&(i.shininess=e.shininess),void 0!==e.clearcoat&&(i.clearcoat=e.clearcoat),void 0!==e.clearcoatRoughness&&(i.clearcoatRoughness=e.clearcoatRoughness),void 0!==e.iridescence&&(i.iridescence=e.iridescence),void 0!==e.iridescenceIOR&&(i.iridescenceIOR=e.iridescenceIOR),void 0!==e.iridescenceThicknessRange&&(i.iridescenceThicknessRange=e.iridescenceThicknessRange),void 0!==e.transmission&&(i.transmission=e.transmission),void 0!==e.thickness&&(i.thickness=e.thickness),void 0!==e.attenuationDistance&&(i.attenuationDistance=e.attenuationDistance),void 0!==e.attenuationColor&&void 0!==i.attenuationColor&&i.attenuationColor.setHex(e.attenuationColor),void 0!==e.anisotropy&&(i.anisotropy=e.anisotropy),void 0!==e.anisotropyRotation&&(i.anisotropyRotation=e.anisotropyRotation),void 0!==e.fog&&(i.fog=e.fog),void 0!==e.flatShading&&(i.flatShading=e.flatShading),void 0!==e.blending&&(i.blending=e.blending),void 0!==e.combine&&(i.combine=e.combine),void 0!==e.side&&(i.side=e.side),void 0!==e.shadowSide&&(i.shadowSide=e.shadowSide),void 0!==e.opacity&&(i.opacity=e.opacity),void 0!==e.transparent&&(i.transparent=e.transparent),void 0!==e.alphaTest&&(i.alphaTest=e.alphaTest),void 0!==e.alphaHash&&(i.alphaHash=e.alphaHash),void 0!==e.depthFunc&&(i.depthFunc=e.depthFunc),void 0!==e.depthTest&&(i.depthTest=e.depthTest),void 0!==e.depthWrite&&(i.depthWrite=e.depthWrite),void 0!==e.colorWrite&&(i.colorWrite=e.colorWrite),void 0!==e.blendSrc&&(i.blendSrc=e.blendSrc),void 0!==e.blendDst&&(i.blendDst=e.blendDst),void 0!==e.blendEquation&&(i.blendEquation=e.blendEquation),void 0!==e.blendSrcAlpha&&(i.blendSrcAlpha=e.blendSrcAlpha),void 0!==e.blendDstAlpha&&(i.blendDstAlpha=e.blendDstAlpha),void 0!==e.blendEquationAlpha&&(i.blendEquationAlpha=e.blendEquationAlpha),void 0!==e.blendColor&&void 0!==i.blendColor&&i.blendColor.setHex(e.blendColor),void 0!==e.blendAlpha&&(i.blendAlpha=e.blendAlpha),void 0!==e.stencilWriteMask&&(i.stencilWriteMask=e.stencilWriteMask),void 0!==e.stencilFunc&&(i.stencilFunc=e.stencilFunc),void 0!==e.stencilRef&&(i.stencilRef=e.stencilRef),void 0!==e.stencilFuncMask&&(i.stencilFuncMask=e.stencilFuncMask),void 0!==e.stencilFail&&(i.stencilFail=e.stencilFail),void 0!==e.stencilZFail&&(i.stencilZFail=e.stencilZFail),void 0!==e.stencilZPass&&(i.stencilZPass=e.stencilZPass),void 0!==e.stencilWrite&&(i.stencilWrite=e.stencilWrite),void 0!==e.wireframe&&(i.wireframe=e.wireframe),void 0!==e.wireframeLinewidth&&(i.wireframeLinewidth=e.wireframeLinewidth),void 0!==e.wireframeLinecap&&(i.wireframeLinecap=e.wireframeLinecap),void 0!==e.wireframeLinejoin&&(i.wireframeLinejoin=e.wireframeLinejoin),void 0!==e.rotation&&(i.rotation=e.rotation),void 0!==e.linewidth&&(i.linewidth=e.linewidth),void 0!==e.dashSize&&(i.dashSize=e.dashSize),void 0!==e.gapSize&&(i.gapSize=e.gapSize),void 0!==e.scale&&(i.scale=e.scale),void 0!==e.polygonOffset&&(i.polygonOffset=e.polygonOffset),void 0!==e.polygonOffsetFactor&&(i.polygonOffsetFactor=e.polygonOffsetFactor),void 0!==e.polygonOffsetUnits&&(i.polygonOffsetUnits=e.polygonOffsetUnits),void 0!==e.dithering&&(i.dithering=e.dithering),void 0!==e.alphaToCoverage&&(i.alphaToCoverage=e.alphaToCoverage),void 0!==e.premultipliedAlpha&&(i.premultipliedAlpha=e.premultipliedAlpha),void 0!==e.forceSinglePass&&(i.forceSinglePass=e.forceSinglePass),void 0!==e.visible&&(i.visible=e.visible),void 0!==e.toneMapped&&(i.toneMapped=e.toneMapped),void 0!==e.userData&&(i.userData=e.userData),void 0!==e.vertexColors&&("number"==typeof e.vertexColors?i.vertexColors=e.vertexColors>0:i.vertexColors=e.vertexColors),void 0!==e.uniforms)for(const t in e.uniforms){const r=e.uniforms[t];switch(i.uniforms[t]={},r.type){case"t":i.uniforms[t].value=n(r.value);break;case"c":i.uniforms[t].value=(new Uu).setHex(r.value);break;case"v2":i.uniforms[t].value=(new jl).fromArray(r.value);break;case"v3":i.uniforms[t].value=(new bc).fromArray(r.value);break;case"v4":i.uniforms[t].value=(new hc).fromArray(r.value);break;case"m3":i.uniforms[t].value=(new Hl).fromArray(r.value);break;case"m4":i.uniforms[t].value=(new qc).fromArray(r.value);break;default:i.uniforms[t].value=r.value}}if(void 0!==e.defines&&(i.defines=e.defines),void 0!==e.vertexShader&&(i.vertexShader=e.vertexShader),void 0!==e.fragmentShader&&(i.fragmentShader=e.fragmentShader),void 0!==e.glslVersion&&(i.glslVersion=e.glslVersion),void 0!==e.extensions)for(const t in e.extensions)i.extensions[t]=e.extensions[t];if(void 0!==e.lights&&(i.lights=e.lights),void 0!==e.clipping&&(i.clipping=e.clipping),void 0!==e.size&&(i.size=e.size),void 0!==e.sizeAttenuation&&(i.sizeAttenuation=e.sizeAttenuation),void 0!==e.map&&(i.map=n(e.map)),void 0!==e.matcap&&(i.matcap=n(e.matcap)),void 0!==e.alphaMap&&(i.alphaMap=n(e.alphaMap)),void 0!==e.bumpMap&&(i.bumpMap=n(e.bumpMap)),void 0!==e.bumpScale&&(i.bumpScale=e.bumpScale),void 0!==e.normalMap&&(i.normalMap=n(e.normalMap)),void 0!==e.normalMapType&&(i.normalMapType=e.normalMapType),void 0!==e.normalScale){let t=e.normalScale;!1===Array.isArray(t)&&(t=[t,t]),i.normalScale=(new jl).fromArray(t)}return void 0!==e.displacementMap&&(i.displacementMap=n(e.displacementMap)),void 0!==e.displacementScale&&(i.displacementScale=e.displacementScale),void 0!==e.displacementBias&&(i.displacementBias=e.displacementBias),void 0!==e.roughnessMap&&(i.roughnessMap=n(e.roughnessMap)),void 0!==e.metalnessMap&&(i.metalnessMap=n(e.metalnessMap)),void 0!==e.emissiveMap&&(i.emissiveMap=n(e.emissiveMap)),void 0!==e.emissiveIntensity&&(i.emissiveIntensity=e.emissiveIntensity),void 0!==e.specularMap&&(i.specularMap=n(e.specularMap)),void 0!==e.specularIntensityMap&&(i.specularIntensityMap=n(e.specularIntensityMap)),void 0!==e.specularColorMap&&(i.specularColorMap=n(e.specularColorMap)),void 0!==e.envMap&&(i.envMap=n(e.envMap)),void 0!==e.envMapIntensity&&(i.envMapIntensity=e.envMapIntensity),void 0!==e.reflectivity&&(i.reflectivity=e.reflectivity),void 0!==e.refractionRatio&&(i.refractionRatio=e.refractionRatio),void 0!==e.lightMap&&(i.lightMap=n(e.lightMap)),void 0!==e.lightMapIntensity&&(i.lightMapIntensity=e.lightMapIntensity),void 0!==e.aoMap&&(i.aoMap=n(e.aoMap)),void 0!==e.aoMapIntensity&&(i.aoMapIntensity=e.aoMapIntensity),void 0!==e.gradientMap&&(i.gradientMap=n(e.gradientMap)),void 0!==e.clearcoatMap&&(i.clearcoatMap=n(e.clearcoatMap)),void 0!==e.clearcoatRoughnessMap&&(i.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),void 0!==e.clearcoatNormalMap&&(i.clearcoatNormalMap=n(e.clearcoatNormalMap)),void 0!==e.clearcoatNormalScale&&(i.clearcoatNormalScale=(new jl).fromArray(e.clearcoatNormalScale)),void 0!==e.iridescenceMap&&(i.iridescenceMap=n(e.iridescenceMap)),void 0!==e.iridescenceThicknessMap&&(i.iridescenceThicknessMap=n(e.iridescenceThicknessMap)),void 0!==e.transmissionMap&&(i.transmissionMap=n(e.transmissionMap)),void 0!==e.thicknessMap&&(i.thicknessMap=n(e.thicknessMap)),void 0!==e.anisotropyMap&&(i.anisotropyMap=n(e.anisotropyMap)),void 0!==e.sheenColorMap&&(i.sheenColorMap=n(e.sheenColorMap)),void 0!==e.sheenRoughnessMap&&(i.sheenRoughnessMap=n(e.sheenRoughnessMap)),i}setTextures(e){return this.textures=e,this}static createMaterialFromType(e){return new{ShadowMaterial:Mg,SpriteMaterial:Hf,RawShaderMaterial:Sg,ShaderMaterial:Bh,PointsMaterial:HA,MeshPhysicalMaterial:_g,MeshStandardMaterial:Eg,MeshPhongMaterial:Tg,MeshToonMaterial:Cg,MeshNormalMaterial:Ig,MeshLambertMaterial:Dg,MeshDepthMaterial:bf,MeshDistanceMaterial:wf,MeshBasicMaterial:Hu,MeshMatcapMaterial:Ng,LineDashedMaterial:Lg,LineBasicMaterial:NA,Material:ju}[e]}}class Lv{static decodeText(e){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(e);let t="";for(let n=0,i=e.length;n<i;n++)t+=String.fromCharCode(e[n]);try{return decodeURIComponent(escape(t))}catch(e){return t}}static extractUrlBase(e){const t=e.lastIndexOf("/");return-1===t?"./":e.slice(0,t+1)}static resolveURL(e,t){return"string"!=typeof e||""===e?"":(/^https?:\/\//i.test(t)&&/^\//.test(e)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:t+e)}}class Rv extends fh{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}toJSON(){const e=super.toJSON();return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}class Ov extends nv{constructor(e){super(e)}load(e,t,n,i){const r=this,a=new av(r.manager);a.setPath(r.path),a.setRequestHeader(r.requestHeader),a.setWithCredentials(r.withCredentials),a.load(e,(function(n){try{t(r.parse(JSON.parse(n)))}catch(t){i?i(t):console.error(t),r.manager.itemError(e)}}),n,i)}parse(e){const t={},n={};function i(e,i){if(void 0!==t[i])return t[i];const r=e.interleavedBuffers[i],a=function(e,t){if(void 0!==n[t])return n[t];const i=e.arrayBuffers[t],r=new Uint32Array(i).buffer;return n[t]=r,r}(e,r.buffer),o=Ql(r.type,a),s=new Bf(o,r.stride);return s.uuid=r.uuid,t[i]=s,s}const r=e.isInstancedBufferGeometry?new Rv:new fh,a=e.data.index;if(void 0!==a){const e=Ql(a.type,a.array);r.setIndex(new qu(e,1))}const o=e.data.attributes;for(const t in o){const n=o[t];let a;if(n.isInterleavedBufferAttribute){const t=i(e.data,n.data);a=new jf(t,n.itemSize,n.offset,n.normalized)}else{const e=Ql(n.type,n.array);a=new(n.isInstancedBufferAttribute?xA:qu)(e,n.itemSize,n.normalized)}void 0!==n.name&&(a.name=n.name),void 0!==n.usage&&a.setUsage(n.usage),void 0!==n.updateRange&&(a.updateRange.offset=n.updateRange.offset,a.updateRange.count=n.updateRange.count),r.setAttribute(t,a)}const s=e.data.morphAttributes;if(s)for(const t in s){const n=s[t],a=[];for(let t=0,r=n.length;t<r;t++){const r=n[t];let o;if(r.isInterleavedBufferAttribute){const t=i(e.data,r.data);o=new jf(t,r.itemSize,r.offset,r.normalized)}else{const e=Ql(r.type,r.array);o=new qu(e,r.itemSize,r.normalized)}void 0!==r.name&&(o.name=r.name),a.push(o)}r.morphAttributes[t]=a}e.data.morphTargetsRelative&&(r.morphTargetsRelative=!0);const l=e.data.groups||e.data.drawcalls||e.data.offsets;if(void 0!==l)for(let e=0,t=l.length;e!==t;++e){const t=l[e];r.addGroup(t.start,t.count,t.materialIndex)}const c=e.data.boundingSphere;if(void 0!==c){const e=new bc;void 0!==c.center&&e.fromArray(c.center),r.boundingSphere=new jc(e,c.radius)}return e.name&&(r.name=e.name),e.userData&&(r.userData=e.userData),r}}class Pv extends nv{constructor(e){super(e)}load(e,t,n,i){const r=this,a=""===this.path?Lv.extractUrlBase(e):this.path;this.resourcePath=this.resourcePath||a;const o=new av(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,(function(n){let a=null;try{a=JSON.parse(n)}catch(t){return void 0!==i&&i(t),void console.error("THREE:ObjectLoader: Can't parse "+e+".",t.message)}const o=a.metadata;if(void 0===o||void 0===o.type||"geometry"===o.type.toLowerCase())return void 0!==i&&i(new Error("THREE.ObjectLoader: Can't load "+e)),void console.error("THREE.ObjectLoader: Can't load "+e);r.parse(a,t)}),n,i)}async loadAsync(e,t){const n=""===this.path?Lv.extractUrlBase(e):this.path;this.resourcePath=this.resourcePath||n;const i=new av(this.manager);i.setPath(this.path),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials);const r=await i.loadAsync(e,t),a=JSON.parse(r),o=a.metadata;if(void 0===o||void 0===o.type||"geometry"===o.type.toLowerCase())throw new Error("THREE.ObjectLoader: Can't load "+e);return await this.parseAsync(a)}parse(e,t){const n=this.parseAnimations(e.animations),i=this.parseShapes(e.shapes),r=this.parseGeometries(e.geometries,i),a=this.parseImages(e.images,(function(){void 0!==t&&t(l)})),o=this.parseTextures(e.textures,a),s=this.parseMaterials(e.materials,o),l=this.parseObject(e.object,r,s,o,n),c=this.parseSkeletons(e.skeletons,l);if(this.bindSkeletons(l,c),void 0!==t){let e=!1;for(const t in a)if(a[t].data instanceof HTMLImageElement){e=!0;break}!1===e&&t(l)}return l}async parseAsync(e){const t=this.parseAnimations(e.animations),n=this.parseShapes(e.shapes),i=this.parseGeometries(e.geometries,n),r=await this.parseImagesAsync(e.images),a=this.parseTextures(e.textures,r),o=this.parseMaterials(e.materials,a),s=this.parseObject(e.object,i,o,a,t),l=this.parseSkeletons(e.skeletons,s);return this.bindSkeletons(s,l),s}parseShapes(e){const t={};if(void 0!==e)for(let n=0,i=e.length;n<i;n++){const i=(new Pm).fromJSON(e[n]);t[i.uuid]=i}return t}parseSkeletons(e,t){const n={},i={};if(t.traverse((function(e){e.isBone&&(i[e.uuid]=e)})),void 0!==e)for(let t=0,r=e.length;t<r;t++){const r=(new wA).fromJSON(e[t],i);n[r.uuid]=r}return n}parseGeometries(e,t){const n={};if(void 0!==e){const i=new Ov;for(let r=0,a=e.length;r<a;r++){let a;const o=e[r];switch(o.type){case"BufferGeometry":case"InstancedBufferGeometry":a=i.parse(o);break;default:o.type in xg?a=xg[o.type].fromJSON(o,t):console.warn(`THREE.ObjectLoader: Unsupported geometry type "${o.type}"`)}a.uuid=o.uuid,void 0!==o.name&&(a.name=o.name),void 0!==o.userData&&(a.userData=o.userData),n[o.uuid]=a}}return n}parseMaterials(e,t){const n={},i={};if(void 0!==e){const r=new Nv;r.setTextures(t);for(let t=0,a=e.length;t<a;t++){const a=e[t];void 0===n[a.uuid]&&(n[a.uuid]=r.parse(a)),i[a.uuid]=n[a.uuid]}}return i}parseAnimations(e){const t={};if(void 0!==e)for(let n=0;n<e.length;n++){const i=e[n],r=Kg.parse(i);t[r.uuid]=r}return t}parseImages(e,t){const n=this,i={};let r;function a(e){if("string"==typeof e){const t=e;return function(e){return n.manager.itemStart(e),r.load(e,(function(){n.manager.itemEnd(e)}),void 0,(function(){n.manager.itemError(e),n.manager.itemEnd(e)}))}(/^(\/\/)|([a-z]+:(\/\/)?)/i.test(t)?t:n.resourcePath+t)}return e.data?{data:Ql(e.type,e.data),width:e.width,height:e.height}:null}if(void 0!==e&&e.length>0){const n=new ev(t);r=new lv(n),r.setCrossOrigin(this.crossOrigin);for(let t=0,n=e.length;t<n;t++){const n=e[t],r=n.url;if(Array.isArray(r)){const e=[];for(let t=0,n=r.length;t<n;t++){const n=a(r[t]);null!==n&&(n instanceof HTMLImageElement?e.push(n):e.push(new vA(n.data,n.width,n.height)))}i[n.uuid]=new sc(e)}else{const e=a(n.url);i[n.uuid]=new sc(e)}}}return i}async parseImagesAsync(e){const t=this,n={};let i;async function r(e){if("string"==typeof e){const n=e,r=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(n)?n:t.resourcePath+n;return await i.loadAsync(r)}return e.data?{data:Ql(e.type,e.data),width:e.width,height:e.height}:null}if(void 0!==e&&e.length>0){i=new lv(this.manager),i.setCrossOrigin(this.crossOrigin);for(let t=0,i=e.length;t<i;t++){const i=e[t],a=i.url;if(Array.isArray(a)){const e=[];for(let t=0,n=a.length;t<n;t++){const n=a[t],i=await r(n);null!==i&&(i instanceof HTMLImageElement?e.push(i):e.push(new vA(i.data,i.width,i.height)))}n[i.uuid]=new sc(e)}else{const e=await r(i.url);n[i.uuid]=new sc(e)}}}return n}parseTextures(e,t){function n(e,t){return"number"==typeof e?e:(console.warn("THREE.ObjectLoader.parseTexture: Constant should be in numeric form.",e),t[e])}const i={};if(void 0!==e)for(let r=0,a=e.length;r<a;r++){const a=e[r];void 0===a.image&&console.warn('THREE.ObjectLoader: No "image" specified for',a.uuid),void 0===t[a.image]&&console.warn("THREE.ObjectLoader: Undefined image",a.image);const o=t[a.image],s=o.data;let l;Array.isArray(s)?(l=new Wh,6===s.length&&(l.needsUpdate=!0)):(l=s&&s.data?new vA:new uc,s&&(l.needsUpdate=!0)),l.source=o,l.uuid=a.uuid,void 0!==a.name&&(l.name=a.name),void 0!==a.mapping&&(l.mapping=n(a.mapping,zv)),void 0!==a.channel&&(l.channel=a.channel),void 0!==a.offset&&l.offset.fromArray(a.offset),void 0!==a.repeat&&l.repeat.fromArray(a.repeat),void 0!==a.center&&l.center.fromArray(a.center),void 0!==a.rotation&&(l.rotation=a.rotation),void 0!==a.wrap&&(l.wrapS=n(a.wrap[0],kv),l.wrapT=n(a.wrap[1],kv)),void 0!==a.format&&(l.format=a.format),void 0!==a.internalFormat&&(l.internalFormat=a.internalFormat),void 0!==a.type&&(l.type=a.type),void 0!==a.colorSpace&&(l.colorSpace=a.colorSpace),void 0!==a.encoding&&(l.encoding=a.encoding),void 0!==a.minFilter&&(l.minFilter=n(a.minFilter,Uv)),void 0!==a.magFilter&&(l.magFilter=n(a.magFilter,Uv)),void 0!==a.anisotropy&&(l.anisotropy=a.anisotropy),void 0!==a.flipY&&(l.flipY=a.flipY),void 0!==a.generateMipmaps&&(l.generateMipmaps=a.generateMipmaps),void 0!==a.premultiplyAlpha&&(l.premultiplyAlpha=a.premultiplyAlpha),void 0!==a.unpackAlignment&&(l.unpackAlignment=a.unpackAlignment),void 0!==a.compareFunction&&(l.compareFunction=a.compareFunction),void 0!==a.userData&&(l.userData=a.userData),i[a.uuid]=l}return i}parseObject(e,t,n,i,r){let a,o,s;function l(e){return void 0===t[e]&&console.warn("THREE.ObjectLoader: Undefined geometry",e),t[e]}function c(e){if(void 0!==e){if(Array.isArray(e)){const t=[];for(let i=0,r=e.length;i<r;i++){const r=e[i];void 0===n[r]&&console.warn("THREE.ObjectLoader: Undefined material",r),t.push(n[r])}return t}return void 0===n[e]&&console.warn("THREE.ObjectLoader: Undefined material",e),n[e]}}function u(e){return void 0===i[e]&&console.warn("THREE.ObjectLoader: Undefined texture",e),i[e]}switch(e.type){case"Scene":a=new Uf,void 0!==e.background&&(Number.isInteger(e.background)?a.background=new Uu(e.background):a.background=u(e.background)),void 0!==e.environment&&(a.environment=u(e.environment)),void 0!==e.fog&&("Fog"===e.fog.type?a.fog=new kf(e.fog.color,e.fog.near,e.fog.far):"FogExp2"===e.fog.type&&(a.fog=new zf(e.fog.color,e.fog.density)),""!==e.fog.name&&(a.fog.name=e.fog.name)),void 0!==e.backgroundBlurriness&&(a.backgroundBlurriness=e.backgroundBlurriness),void 0!==e.backgroundIntensity&&(a.backgroundIntensity=e.backgroundIntensity);break;case"PerspectiveCamera":a=new jh(e.fov,e.aspect,e.near,e.far),void 0!==e.focus&&(a.focus=e.focus),void 0!==e.zoom&&(a.zoom=e.zoom),void 0!==e.filmGauge&&(a.filmGauge=e.filmGauge),void 0!==e.filmOffset&&(a.filmOffset=e.filmOffset),void 0!==e.view&&(a.view=Object.assign({},e.view));break;case"OrthographicCamera":a=new dd(e.left,e.right,e.top,e.bottom,e.near,e.far),void 0!==e.zoom&&(a.zoom=e.zoom),void 0!==e.view&&(a.view=Object.assign({},e.view));break;case"AmbientLight":a=new Tv(e.color,e.intensity);break;case"DirectionalLight":a=new _v(e.color,e.intensity);break;case"PointLight":a=new Sv(e.color,e.intensity,e.distance,e.decay);break;case"RectAreaLight":a=new Cv(e.color,e.intensity,e.width,e.height);break;case"SpotLight":a=new yv(e.color,e.intensity,e.distance,e.angle,e.penumbra,e.decay);break;case"HemisphereLight":a=new pv(e.color,e.groundColor,e.intensity);break;case"LightProbe":a=(new Dv).fromJSON(e);break;case"SkinnedMesh":o=l(e.geometry),s=c(e.material),a=new mA(o,s),void 0!==e.bindMode&&(a.bindMode=e.bindMode),void 0!==e.bindMatrix&&a.bindMatrix.fromArray(e.bindMatrix),void 0!==e.skeleton&&(a.skeleton=e.skeleton);break;case"Mesh":o=l(e.geometry),s=c(e.material),a=new Lh(o,s);break;case"InstancedMesh":o=l(e.geometry),s=c(e.material);const t=e.count,n=e.instanceMatrix,i=e.instanceColor;a=new DA(o,s,t),a.instanceMatrix=new xA(new Float32Array(n.array),16),void 0!==i&&(a.instanceColor=new xA(new Float32Array(i.array),i.itemSize));break;case"LOD":a=new oA;break;case"Line":a=new kA(l(e.geometry),c(e.material));break;case"LineLoop":a=new jA(l(e.geometry),c(e.material));break;case"LineSegments":a=new FA(l(e.geometry),c(e.material));break;case"PointCloud":case"Points":a=new XA(l(e.geometry),c(e.material));break;case"Sprite":a=new nA(c(e.material));break;case"Group":a=new Tf;break;case"Bone":a=new gA;break;default:a=new wu}if(a.uuid=e.uuid,void 0!==e.name&&(a.name=e.name),void 0!==e.matrix?(a.matrix.fromArray(e.matrix),void 0!==e.matrixAutoUpdate&&(a.matrixAutoUpdate=e.matrixAutoUpdate),a.matrixAutoUpdate&&a.matrix.decompose(a.position,a.quaternion,a.scale)):(void 0!==e.position&&a.position.fromArray(e.position),void 0!==e.rotation&&a.rotation.fromArray(e.rotation),void 0!==e.quaternion&&a.quaternion.fromArray(e.quaternion),void 0!==e.scale&&a.scale.fromArray(e.scale)),void 0!==e.up&&a.up.fromArray(e.up),void 0!==e.castShadow&&(a.castShadow=e.castShadow),void 0!==e.receiveShadow&&(a.receiveShadow=e.receiveShadow),e.shadow&&(void 0!==e.shadow.bias&&(a.shadow.bias=e.shadow.bias),void 0!==e.shadow.normalBias&&(a.shadow.normalBias=e.shadow.normalBias),void 0!==e.shadow.radius&&(a.shadow.radius=e.shadow.radius),void 0!==e.shadow.mapSize&&a.shadow.mapSize.fromArray(e.shadow.mapSize),void 0!==e.shadow.camera&&(a.shadow.camera=this.parseObject(e.shadow.camera))),void 0!==e.visible&&(a.visible=e.visible),void 0!==e.frustumCulled&&(a.frustumCulled=e.frustumCulled),void 0!==e.renderOrder&&(a.renderOrder=e.renderOrder),void 0!==e.userData&&(a.userData=e.userData),void 0!==e.layers&&(a.layers.mask=e.layers),void 0!==e.children){const o=e.children;for(let e=0;e<o.length;e++)a.add(this.parseObject(o[e],t,n,i,r))}if(void 0!==e.animations){const t=e.animations;for(let e=0;e<t.length;e++){const n=t[e];a.animations.push(r[n])}}if("LOD"===e.type){void 0!==e.autoUpdate&&(a.autoUpdate=e.autoUpdate);const t=e.levels;for(let e=0;e<t.length;e++){const n=t[e],i=a.getObjectByProperty("uuid",n.object);void 0!==i&&a.addLevel(i,n.distance,n.hysteresis)}}return a}bindSkeletons(e,t){0!==Object.keys(t).length&&e.traverse((function(e){if(!0===e.isSkinnedMesh&&void 0!==e.skeleton){const n=t[e.skeleton];void 0===n?console.warn("THREE.ObjectLoader: No skeleton found with UUID:",e.skeleton):e.bind(n,e.bindMatrix)}}))}}const zv={UVMapping:Xa,CubeReflectionMapping:Ya,CubeRefractionMapping:Za,EquirectangularReflectionMapping:qa,EquirectangularRefractionMapping:Ka,CubeUVReflectionMapping:Ja},kv={RepeatWrapping:$a,ClampToEdgeWrapping:eo,MirroredRepeatWrapping:to},Uv={NearestFilter:no,NearestMipmapNearestFilter:io,NearestMipmapLinearFilter:ao,LinearFilter:so,LinearMipmapNearestFilter:lo,LinearMipmapLinearFilter:uo};class Bv extends nv{constructor(e){super(e),this.isImageBitmapLoader=!0,"undefined"==typeof createImageBitmap&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),"undefined"==typeof fetch&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(e){return this.options=e,this}load(e,t,n,i){void 0===e&&(e=""),void 0!==this.path&&(e=this.path+e),e=this.manager.resolveURL(e);const r=this,a=$g.get(e);if(void 0!==a)return r.manager.itemStart(e),setTimeout((function(){t&&t(a),r.manager.itemEnd(e)}),0),a;const o={};o.credentials="anonymous"===this.crossOrigin?"same-origin":"include",o.headers=this.requestHeader,fetch(e,o).then((function(e){return e.blob()})).then((function(e){return createImageBitmap(e,Object.assign(r.options,{colorSpaceConversion:"none"}))})).then((function(n){$g.add(e,n),t&&t(n),r.manager.itemEnd(e)})).catch((function(t){i&&i(t),r.manager.itemError(e),r.manager.itemEnd(e)})),r.manager.itemStart(e)}}let Fv;class jv{static getContext(){return void 0===Fv&&(Fv=new(window.AudioContext||window.webkitAudioContext)),Fv}static setContext(e){Fv=e}}class Hv extends nv{constructor(e){super(e)}load(e,t,n,i){const r=this,a=new av(this.manager);function o(t){i?i(t):console.error(t),r.manager.itemError(e)}a.setResponseType("arraybuffer"),a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,(function(e){try{const n=e.slice(0);jv.getContext().decodeAudioData(n,(function(e){t(e)}),o)}catch(e){o(e)}}),n,i)}}const Vv=new qc,Wv=new qc,Gv=new qc;class Qv{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new jh,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new jh,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){const t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,Gv.copy(e.projectionMatrix);const n=t.eyeSep/2,i=n*t.near/t.focus,r=t.near*Math.tan(Il*t.fov*.5)/t.zoom;let a,o;Wv.elements[12]=-n,Vv.elements[12]=n,a=-r*t.aspect+i,o=r*t.aspect+i,Gv.elements[0]=2*t.near/(o-a),Gv.elements[8]=(o+a)/(o-a),this.cameraL.projectionMatrix.copy(Gv),a=-r*t.aspect-i,o=r*t.aspect-i,Gv.elements[0]=2*t.near/(o-a),Gv.elements[8]=(o+a)/(o-a),this.cameraR.projectionMatrix.copy(Gv)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(Wv),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(Vv)}}class Xv{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=Yv(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=Yv();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}function Yv(){return("undefined"==typeof performance?Date:performance).now()}const Zv=new bc,qv=new yc,Kv=new bc,Jv=new bc;class $v extends wu{constructor(){super(),this.type="AudioListener",this.context=jv.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new Xv}getInput(){return this.gain}removeFilter(){return null!==this.filter&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return null!==this.filter?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);const t=this.context.listener,n=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(Zv,qv,Kv),Jv.set(0,0,-1).applyQuaternion(qv),t.positionX){const e=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(Zv.x,e),t.positionY.linearRampToValueAtTime(Zv.y,e),t.positionZ.linearRampToValueAtTime(Zv.z,e),t.forwardX.linearRampToValueAtTime(Jv.x,e),t.forwardY.linearRampToValueAtTime(Jv.y,e),t.forwardZ.linearRampToValueAtTime(Jv.z,e),t.upX.linearRampToValueAtTime(n.x,e),t.upY.linearRampToValueAtTime(n.y,e),t.upZ.linearRampToValueAtTime(n.z,e)}else t.setPosition(Zv.x,Zv.y,Zv.z),t.setOrientation(Jv.x,Jv.y,Jv.z,n.x,n.y,n.z)}}class ey extends wu{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(!0===this.isPlaying)return void console.warn("THREE.Audio: Audio is already playing.");if(!1===this.hasPlaybackControl)return void console.warn("THREE.Audio: this Audio has no playback control.");this._startedAt=this.context.currentTime+e;const t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(!1!==this.hasPlaybackControl)return!0===this.isPlaying&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,!0===this.loop&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this;console.warn("THREE.Audio: this Audio has no playback control.")}stop(){if(!1!==this.hasPlaybackControl)return this._progress=0,null!==this.source&&(this.source.stop(),this.source.onended=null),this.isPlaying=!1,this;console.warn("THREE.Audio: this Audio has no playback control.")}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e<t;e++)this.filters[e-1].connect(this.filters[e]);this.filters[this.filters.length-1].connect(this.getOutput())}else this.source.connect(this.getOutput());return this._connected=!0,this}disconnect(){if(!1!==this._connected){if(this.filters.length>0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e<t;e++)this.filters[e-1].disconnect(this.filters[e]);this.filters[this.filters.length-1].disconnect(this.getOutput())}else this.source.disconnect(this.getOutput());return this._connected=!1,this}}getFilters(){return this.filters}setFilters(e){return e||(e=[]),!0===this._connected?(this.disconnect(),this.filters=e.slice(),this.connect()):this.filters=e.slice(),this}setDetune(e){if(this.detune=e,void 0!==this.source.detune)return!0===this.isPlaying&&this.source.detune.setTargetAtTime(this.detune,this.context.currentTime,.01),this}getDetune(){return this.detune}getFilter(){return this.getFilters()[0]}setFilter(e){return this.setFilters(e?[e]:[])}setPlaybackRate(e){if(!1!==this.hasPlaybackControl)return this.playbackRate=e,!0===this.isPlaying&&this.source.playbackRate.setTargetAtTime(this.playbackRate,this.context.currentTime,.01),this;console.warn("THREE.Audio: this Audio has no playback control.")}getPlaybackRate(){return this.playbackRate}onEnded(){this.isPlaying=!1}getLoop(){return!1===this.hasPlaybackControl?(console.warn("THREE.Audio: this Audio has no playback control."),!1):this.loop}setLoop(e){if(!1!==this.hasPlaybackControl)return this.loop=e,!0===this.isPlaying&&(this.source.loop=this.loop),this;console.warn("THREE.Audio: this Audio has no playback control.")}setLoopStart(e){return this.loopStart=e,this}setLoopEnd(e){return this.loopEnd=e,this}getVolume(){return this.gain.gain.value}setVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}}const ty=new bc,ny=new yc,iy=new bc,ry=new bc;class ay extends ey{constructor(e){super(e),this.panner=this.context.createPanner(),this.panner.panningModel="HRTF",this.panner.connect(this.gain)}connect(){super.connect(),this.panner.connect(this.gain)}disconnect(){super.disconnect(),this.panner.disconnect(this.gain)}getOutput(){return this.panner}getRefDistance(){return this.panner.refDistance}setRefDistance(e){return this.panner.refDistance=e,this}getRolloffFactor(){return this.panner.rolloffFactor}setRolloffFactor(e){return this.panner.rolloffFactor=e,this}getDistanceModel(){return this.panner.distanceModel}setDistanceModel(e){return this.panner.distanceModel=e,this}getMaxDistance(){return this.panner.maxDistance}setMaxDistance(e){return this.panner.maxDistance=e,this}setDirectionalCone(e,t,n){return this.panner.coneInnerAngle=e,this.panner.coneOuterAngle=t,this.panner.coneOuterGain=n,this}updateMatrixWorld(e){if(super.updateMatrixWorld(e),!0===this.hasPlaybackControl&&!1===this.isPlaying)return;this.matrixWorld.decompose(ty,ny,iy),ry.set(0,0,1).applyQuaternion(ny);const t=this.panner;if(t.positionX){const e=this.context.currentTime+this.listener.timeDelta;t.positionX.linearRampToValueAtTime(ty.x,e),t.positionY.linearRampToValueAtTime(ty.y,e),t.positionZ.linearRampToValueAtTime(ty.z,e),t.orientationX.linearRampToValueAtTime(ry.x,e),t.orientationY.linearRampToValueAtTime(ry.y,e),t.orientationZ.linearRampToValueAtTime(ry.z,e)}else t.setPosition(ty.x,ty.y,ty.z),t.setOrientation(ry.x,ry.y,ry.z)}}class oy{constructor(e,t=2048){this.analyser=e.context.createAnalyser(),this.analyser.fftSize=t,this.data=new Uint8Array(this.analyser.frequencyBinCount),e.getOutput().connect(this.analyser)}getFrequencyData(){return this.analyser.getByteFrequencyData(this.data),this.data}getAverageFrequency(){let e=0;const t=this.getFrequencyData();for(let n=0;n<t.length;n++)e+=t[n];return e/t.length}}class sy{constructor(e,t,n){let i,r,a;switch(this.binding=e,this.valueSize=n,t){case"quaternion":i=this._slerp,r=this._slerpAdditive,a=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(6*n),this._workIndex=5;break;case"string":case"bool":i=this._select,r=this._select,a=this._setAdditiveIdentityOther,this.buffer=new Array(5*n);break;default:i=this._lerp,r=this._lerpAdditive,a=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(5*n)}this._mixBufferRegion=i,this._mixBufferRegionAdditive=r,this._setIdentity=a,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(e,t){const n=this.buffer,i=this.valueSize,r=e*i+i;let a=this.cumulativeWeight;if(0===a){for(let e=0;e!==i;++e)n[r+e]=n[e];a=t}else{a+=t;const e=t/a;this._mixBufferRegion(n,r,0,e,i)}this.cumulativeWeight=a}accumulateAdditive(e){const t=this.buffer,n=this.valueSize,i=n*this._addIndex;0===this.cumulativeWeightAdditive&&this._setIdentity(),this._mixBufferRegionAdditive(t,i,0,e,n),this.cumulativeWeightAdditive+=e}apply(e){const t=this.valueSize,n=this.buffer,i=e*t+t,r=this.cumulativeWeight,a=this.cumulativeWeightAdditive,o=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,r<1){const e=t*this._origIndex;this._mixBufferRegion(n,i,e,1-r,t)}a>0&&this._mixBufferRegionAdditive(n,i,this._addIndex*t,1,t);for(let e=t,r=t+t;e!==r;++e)if(n[e]!==n[e+t]){o.setValue(n,i);break}}saveOriginalState(){const e=this.binding,t=this.buffer,n=this.valueSize,i=n*this._origIndex;e.getValue(t,i);for(let e=n,r=i;e!==r;++e)t[e]=t[i+e%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=3*this.valueSize;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n<t;n++)this.buffer[n]=0}_setAdditiveIdentityQuaternion(){this._setAdditiveIdentityNumeric(),this.buffer[this._addIndex*this.valueSize+3]=1}_setAdditiveIdentityOther(){const e=this._origIndex*this.valueSize,t=this._addIndex*this.valueSize;for(let n=0;n<this.valueSize;n++)this.buffer[t+n]=this.buffer[e+n]}_select(e,t,n,i,r){if(i>=.5)for(let i=0;i!==r;++i)e[t+i]=e[n+i]}_slerp(e,t,n,i){yc.slerpFlat(e,t,e,t,e,n,i)}_slerpAdditive(e,t,n,i,r){const a=this._workIndex*r;yc.multiplyQuaternionsFlat(e,a,e,t,e,n),yc.slerpFlat(e,t,e,t,e,a,i)}_lerp(e,t,n,i,r){const a=1-i;for(let o=0;o!==r;++o){const r=t+o;e[r]=e[r]*a+e[n+o]*i}}_lerpAdditive(e,t,n,i,r){for(let a=0;a!==r;++a){const r=t+a;e[r]=e[r]+e[n+a]*i}}}const ly="\\[\\]\\.:\\/",cy=new RegExp("["+ly+"]","g"),uy="[^"+ly+"]",hy="[^"+ly.replace("\\.","")+"]",dy=new RegExp("^"+/((?:WC+[\/:])*)/.source.replace("WC",uy)+/(WCOD+)?/.source.replace("WCOD",hy)+/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",uy)+/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",uy)+"$"),py=["material","materials","bones","map"];class fy{constructor(e,t,n){this.path=t,this.parsedPath=n||fy.parseTrackName(t),this.node=fy.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new fy.Composite(e,t,n):new fy(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(cy,"")}static parseTrackName(e){const t=dy.exec(e);if(null===t)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(void 0!==i&&-1!==i){const e=n.nodeName.substring(i+1);-1!==py.indexOf(e)&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=e)}if(null===n.propertyName||0===n.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(void 0===t||""===t||"."===t||-1===t||t===e.name||t===e.uuid)return e;if(e.skeleton){const n=e.skeleton.getBoneByName(t);if(void 0!==n)return n}if(e.children){const n=function(e){for(let i=0;i<e.length;i++){const r=e[i];if(r.name===t||r.uuid===t)return r;const a=n(r.children);if(a)return a}return null},i=n(e.children);if(i)return i}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(e,t){e[t]=this.targetObject[this.propertyName]}_getValue_array(e,t){const n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)e[t++]=n[i]}_getValue_arrayElement(e,t){e[t]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(e,t){this.resolvedProperty.toArray(e,t)}_setValue_direct(e,t){this.targetObject[this.propertyName]=e[t]}_setValue_direct_setNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(e,t){const n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)n[i]=e[t++]}_setValue_array_setNeedsUpdate(e,t){const n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)n[i]=e[t++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(e,t){const n=this.resolvedProperty;for(let i=0,r=n.length;i!==r;++i)n[i]=e[t++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(e,t){this.resolvedProperty[this.propertyIndex]=e[t]}_setValue_arrayElement_setNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(e,t){this.resolvedProperty.fromArray(e,t)}_setValue_fromArray_setNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(e,t){this.bind(),this.getValue(e,t)}_setValue_unbound(e,t){this.bind(),this.setValue(e,t)}bind(){let e=this.node;const t=this.parsedPath,n=t.objectName,i=t.propertyName;let r=t.propertyIndex;if(e||(e=fy.findNode(this.rootNode,t.nodeName),this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!e)return void console.warn("THREE.PropertyBinding: No target node found for track: "+this.path+".");if(n){let i=t.objectIndex;switch(n){case"materials":if(!e.material)return void console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);if(!e.material.materials)return void console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);e=e.material.materials;break;case"bones":if(!e.skeleton)return void console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);e=e.skeleton.bones;for(let t=0;t<e.length;t++)if(e[t].name===i){i=t;break}break;case"map":if("map"in e){e=e.map;break}if(!e.material)return void console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);if(!e.material.map)return void console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);e=e.material.map;break;default:if(void 0===e[n])return void console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);e=e[n]}if(void 0!==i){if(void 0===e[i])return void console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,e);e=e[i]}}const a=e[i];if(void 0===a){const n=t.nodeName;return void console.error("THREE.PropertyBinding: Trying to update property for track: "+n+"."+i+" but it wasn't found.",e)}let o=this.Versioning.None;this.targetObject=e,void 0!==e.needsUpdate?o=this.Versioning.NeedsUpdate:void 0!==e.matrixWorldNeedsUpdate&&(o=this.Versioning.MatrixWorldNeedsUpdate);let s=this.BindingType.Direct;if(void 0!==r){if("morphTargetInfluences"===i){if(!e.geometry)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);if(!e.geometry.morphAttributes)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);void 0!==e.morphTargetDictionary[r]&&(r=e.morphTargetDictionary[r])}s=this.BindingType.ArrayElement,this.resolvedProperty=a,this.propertyIndex=r}else void 0!==a.fromArray&&void 0!==a.toArray?(s=this.BindingType.HasFromToArray,this.resolvedProperty=a):Array.isArray(a)?(s=this.BindingType.EntireArray,this.resolvedProperty=a):this.propertyName=i;this.getValue=this.GetterByBindingType[s],this.setValue=this.SetterByBindingTypeAndVersioning[s][o]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}}fy.Composite=class{constructor(e,t,n){const i=n||fy.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,i)}getValue(e,t){this.bind();const n=this._targetGroup.nCachedObjects_,i=this._bindings[n];void 0!==i&&i.getValue(e,t)}setValue(e,t){const n=this._bindings;for(let i=this._targetGroup.nCachedObjects_,r=n.length;i!==r;++i)n[i].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}},fy.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},fy.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},fy.prototype.GetterByBindingType=[fy.prototype._getValue_direct,fy.prototype._getValue_array,fy.prototype._getValue_arrayElement,fy.prototype._getValue_toArray],fy.prototype.SetterByBindingTypeAndVersioning=[[fy.prototype._setValue_direct,fy.prototype._setValue_direct_setNeedsUpdate,fy.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[fy.prototype._setValue_array,fy.prototype._setValue_array_setNeedsUpdate,fy.prototype._setValue_array_setMatrixWorldNeedsUpdate],[fy.prototype._setValue_arrayElement,fy.prototype._setValue_arrayElement_setNeedsUpdate,fy.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[fy.prototype._setValue_fromArray,fy.prototype._setValue_fromArray_setNeedsUpdate,fy.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];class Ay{constructor(){this.isAnimationObjectGroup=!0,this.uuid=Nl(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;const e={};this._indicesByUUID=e;for(let t=0,n=arguments.length;t!==n;++t)e[arguments[t].uuid]=t;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};const t=this;this.stats={objects:{get total(){return t._objects.length},get inUse(){return this.total-t.nCachedObjects_}},get bindingsPerObject(){return t._bindings.length}}}add(){const e=this._objects,t=this._indicesByUUID,n=this._paths,i=this._parsedPaths,r=this._bindings,a=r.length;let o,s=e.length,l=this.nCachedObjects_;for(let c=0,u=arguments.length;c!==u;++c){const u=arguments[c],h=u.uuid;let d=t[h];if(void 0===d){d=s++,t[h]=d,e.push(u);for(let e=0,t=a;e!==t;++e)r[e].push(new fy(u,n[e],i[e]))}else if(d<l){o=e[d];const s=--l,c=e[s];t[c.uuid]=d,e[d]=c,t[h]=s,e[s]=u;for(let e=0,t=a;e!==t;++e){const t=r[e],a=t[s];let o=t[d];t[d]=a,void 0===o&&(o=new fy(u,n[e],i[e])),t[s]=o}}else e[d]!==o&&console.error("THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.")}this.nCachedObjects_=l}remove(){const e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length;let r=this.nCachedObjects_;for(let a=0,o=arguments.length;a!==o;++a){const o=arguments[a],s=o.uuid,l=t[s];if(void 0!==l&&l>=r){const a=r++,c=e[a];t[c.uuid]=l,e[l]=c,t[s]=a,e[a]=o;for(let e=0,t=i;e!==t;++e){const t=n[e],i=t[a],r=t[l];t[l]=i,t[a]=r}}}this.nCachedObjects_=r}uncache(){const e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length;let r=this.nCachedObjects_,a=e.length;for(let o=0,s=arguments.length;o!==s;++o){const s=arguments[o].uuid,l=t[s];if(void 0!==l)if(delete t[s],l<r){const o=--r,s=e[o],c=--a,u=e[c];t[s.uuid]=l,e[l]=s,t[u.uuid]=o,e[o]=u,e.pop();for(let e=0,t=i;e!==t;++e){const t=n[e],i=t[o],r=t[c];t[l]=i,t[o]=r,t.pop()}}else{const r=--a,o=e[r];r>0&&(t[o.uuid]=l),e[l]=o,e.pop();for(let e=0,t=i;e!==t;++e){const t=n[e];t[l]=t[r],t.pop()}}}this.nCachedObjects_=r}subscribe_(e,t){const n=this._bindingsIndicesByPath;let i=n[e];const r=this._bindings;if(void 0!==i)return r[i];const a=this._paths,o=this._parsedPaths,s=this._objects,l=s.length,c=this.nCachedObjects_,u=new Array(l);i=r.length,n[e]=i,a.push(e),o.push(t),r.push(u);for(let n=c,i=s.length;n!==i;++n){const i=s[n];u[n]=new fy(i,e,t)}return u}unsubscribe_(e){const t=this._bindingsIndicesByPath,n=t[e];if(void 0!==n){const i=this._paths,r=this._parsedPaths,a=this._bindings,o=a.length-1,s=a[o];t[e[o]]=n,a[n]=s,a.pop(),r[n]=r[o],r.pop(),i[n]=i[o],i.pop()}}}class my{constructor(e,t,n=null,i=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=n,this.blendMode=i;const r=t.tracks,a=r.length,o=new Array(a),s={endingStart:ys,endingEnd:ys};for(let e=0;e!==a;++e){const t=r[e].createInterpolant(null);o[e]=t,t.settings=s}this._interpolantSettings=s,this._interpolants=o,this._propertyBindings=new Array(a),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=fs,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,n){if(e.fadeOut(t),this.fadeIn(t),n){const n=this._clip.duration,i=e._clip.duration,r=i/n,a=n/i;e.warp(1,r,t),this.warp(a,1,t)}return this}crossFadeTo(e,t,n){return e.crossFadeFrom(this,t,n)}stopFading(){const e=this._weightInterpolant;return null!==e&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,n){const i=this._mixer,r=i.time,a=this.timeScale;let o=this._timeScaleInterpolant;null===o&&(o=i._lendControlInterpolant(),this._timeScaleInterpolant=o);const s=o.parameterPositions,l=o.sampleValues;return s[0]=r,s[1]=r+n,l[0]=e/a,l[1]=t/a,this}stopWarping(){const e=this._timeScaleInterpolant;return null!==e&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,n,i){if(!this.enabled)return void this._updateWeight(e);const r=this._startTime;if(null!==r){const i=(e-r)*n;i<0||0===n?t=0:(this._startTime=null,t=n*i)}t*=this._updateTimeScale(e);const a=this._updateTime(t),o=this._updateWeight(e);if(o>0){const e=this._interpolants,t=this._propertyBindings;if(this.blendMode===Ms)for(let n=0,i=e.length;n!==i;++n)e[n].evaluate(a),t[n].accumulateAdditive(o);else for(let n=0,r=e.length;n!==r;++n)e[n].evaluate(a),t[n].accumulate(i,o)}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const n=this._weightInterpolant;if(null!==n){const i=n.evaluate(e)[0];t*=i,e>n.parameterPositions[1]&&(this.stopFading(),0===i&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const n=this._timeScaleInterpolant;null!==n&&(t*=n.evaluate(e)[0],e>n.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t))}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,n=this.loop;let i=this.time+e,r=this._loopCount;const a=n===As;if(0===e)return-1===r?i:a&&1==(1&r)?t-i:i;if(n===ps){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(i>=t)i=t;else{if(!(i<0)){this.time=i;break e}i=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(-1===r&&(e>=0?(r=0,this._setEndings(!0,0===this.repetitions,a)):this._setEndings(0===this.repetitions,!0,a)),i>=t||i<0){const n=Math.floor(i/t);i-=t*n,r+=Math.abs(n);const o=this.repetitions-r;if(o<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,i=e>0?t:0,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(1===o){const t=e<0;this._setEndings(t,!t,a)}else this._setEndings(!1,!1,a);this._loopCount=r,this.time=i,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:n})}}else this.time=i;if(a&&1==(1&r))return t-i}return i}_setEndings(e,t,n){const i=this._interpolantSettings;n?(i.endingStart=bs,i.endingEnd=bs):(i.endingStart=e?this.zeroSlopeAtStart?bs:ys:ws,i.endingEnd=t?this.zeroSlopeAtEnd?bs:ys:ws)}_scheduleFading(e,t,n){const i=this._mixer,r=i.time;let a=this._weightInterpolant;null===a&&(a=i._lendControlInterpolant(),this._weightInterpolant=a);const o=a.parameterPositions,s=a.sampleValues;return o[0]=r,s[0]=t,o[1]=r+e,s[1]=n,this}}const gy=new Float32Array(1);class vy extends _l{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const n=e._localRoot||this._root,i=e._clip.tracks,r=i.length,a=e._propertyBindings,o=e._interpolants,s=n.uuid,l=this._bindingsByRootAndName;let c=l[s];void 0===c&&(c={},l[s]=c);for(let e=0;e!==r;++e){const r=i[e],l=r.name;let u=c[l];if(void 0!==u)++u.referenceCount,a[e]=u;else{if(u=a[e],void 0!==u){null===u._cacheIndex&&(++u.referenceCount,this._addInactiveBinding(u,s,l));continue}const i=t&&t._propertyBindings[e].binding.parsedPath;u=new sy(fy.create(n,l,i),r.ValueTypeName,r.getValueSize()),++u.referenceCount,this._addInactiveBinding(u,s,l),a[e]=u}o[e].resultBuffer=u.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(null===e._cacheIndex){const t=(e._localRoot||this._root).uuid,n=e._clip.uuid,i=this._actionsByClip[n];this._bindAction(e,i&&i.knownActions[0]),this._addInactiveAction(e,n,t)}const t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){const n=t[e];0==n.useCount++&&(this._lendBinding(n),n.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){const n=t[e];0==--n.useCount&&(n.restoreOriginalState(),this._takeBackBinding(n))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){const t=e._cacheIndex;return null!==t&&t<this._nActiveActions}_addInactiveAction(e,t,n){const i=this._actions,r=this._actionsByClip;let a=r[t];if(void 0===a)a={knownActions:[e],actionByRoot:{}},e._byClipCacheIndex=0,r[t]=a;else{const t=a.knownActions;e._byClipCacheIndex=t.length,t.push(e)}e._cacheIndex=i.length,i.push(e),a.actionByRoot[n]=e}_removeInactiveAction(e){const t=this._actions,n=t[t.length-1],i=e._cacheIndex;n._cacheIndex=i,t[i]=n,t.pop(),e._cacheIndex=null;const r=e._clip.uuid,a=this._actionsByClip,o=a[r],s=o.knownActions,l=s[s.length-1],c=e._byClipCacheIndex;l._byClipCacheIndex=c,s[c]=l,s.pop(),e._byClipCacheIndex=null,delete o.actionByRoot[(e._localRoot||this._root).uuid],0===s.length&&delete a[r],this._removeInactiveBindingsForAction(e)}_removeInactiveBindingsForAction(e){const t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){const n=t[e];0==--n.referenceCount&&this._removeInactiveBinding(n)}}_lendAction(e){const t=this._actions,n=e._cacheIndex,i=this._nActiveActions++,r=t[i];e._cacheIndex=i,t[i]=e,r._cacheIndex=n,t[n]=r}_takeBackAction(e){const t=this._actions,n=e._cacheIndex,i=--this._nActiveActions,r=t[i];e._cacheIndex=i,t[i]=e,r._cacheIndex=n,t[n]=r}_addInactiveBinding(e,t,n){const i=this._bindingsByRootAndName,r=this._bindings;let a=i[t];void 0===a&&(a={},i[t]=a),a[n]=e,e._cacheIndex=r.length,r.push(e)}_removeInactiveBinding(e){const t=this._bindings,n=e.binding,i=n.rootNode.uuid,r=n.path,a=this._bindingsByRootAndName,o=a[i],s=t[t.length-1],l=e._cacheIndex;s._cacheIndex=l,t[l]=s,t.pop(),delete o[r],0===Object.keys(o).length&&delete a[i]}_lendBinding(e){const t=this._bindings,n=e._cacheIndex,i=this._nActiveBindings++,r=t[i];e._cacheIndex=i,t[i]=e,r._cacheIndex=n,t[n]=r}_takeBackBinding(e){const t=this._bindings,n=e._cacheIndex,i=--this._nActiveBindings,r=t[i];e._cacheIndex=i,t[i]=e,r._cacheIndex=n,t[n]=r}_lendControlInterpolant(){const e=this._controlInterpolants,t=this._nActiveControlInterpolants++;let n=e[t];return void 0===n&&(n=new jg(new Float32Array(2),new Float32Array(2),1,gy),n.__cacheIndex=t,e[t]=n),n}_takeBackControlInterpolant(e){const t=this._controlInterpolants,n=e.__cacheIndex,i=--this._nActiveControlInterpolants,r=t[i];e.__cacheIndex=i,t[i]=e,r.__cacheIndex=n,t[n]=r}clipAction(e,t,n){const i=t||this._root,r=i.uuid;let a="string"==typeof e?Kg.findByName(i,e):e;const o=null!==a?a.uuid:e,s=this._actionsByClip[o];let l=null;if(void 0===n&&(n=null!==a?a.blendMode:xs),void 0!==s){const e=s.actionByRoot[r];if(void 0!==e&&e.blendMode===n)return e;l=s.knownActions[0],null===a&&(a=l._clip)}if(null===a)return null;const c=new my(this,a,t,n);return this._bindAction(c,l),this._addInactiveAction(c,o,r),c}existingAction(e,t){const n=t||this._root,i=n.uuid,r="string"==typeof e?Kg.findByName(n,e):e,a=r?r.uuid:e,o=this._actionsByClip[a];return void 0!==o&&o.actionByRoot[i]||null}stopAllAction(){const e=this._actions;for(let t=this._nActiveActions-1;t>=0;--t)e[t].stop();return this}update(e){e*=this.timeScale;const t=this._actions,n=this._nActiveActions,i=this.time+=e,r=Math.sign(e),a=this._accuIndex^=1;for(let o=0;o!==n;++o)t[o]._update(i,e,r,a);const o=this._bindings,s=this._nActiveBindings;for(let e=0;e!==s;++e)o[e].apply(a);return this}setTime(e){this.time=0;for(let e=0;e<this._actions.length;e++)this._actions[e].time=0;return this.update(e)}getRoot(){return this._root}uncacheClip(e){const t=this._actions,n=e.uuid,i=this._actionsByClip,r=i[n];if(void 0!==r){const e=r.knownActions;for(let n=0,i=e.length;n!==i;++n){const i=e[n];this._deactivateAction(i);const r=i._cacheIndex,a=t[t.length-1];i._cacheIndex=null,i._byClipCacheIndex=null,a._cacheIndex=r,t[r]=a,t.pop(),this._removeInactiveBindingsForAction(i)}delete i[n]}}uncacheRoot(e){const t=e.uuid,n=this._actionsByClip;for(const e in n){const i=n[e].actionByRoot[t];void 0!==i&&(this._deactivateAction(i),this._removeInactiveAction(i))}const i=this._bindingsByRootAndName[t];if(void 0!==i)for(const e in i){const t=i[e];t.restoreOriginalState(),this._removeInactiveBinding(t)}}uncacheAction(e,t){const n=this.existingAction(e,t);null!==n&&(this._deactivateAction(n),this._removeInactiveAction(n))}}class yy{constructor(e){this.value=e}clone(){return new yy(void 0===this.value.clone?this.value:this.value.clone())}}let by=0;class wy extends _l{constructor(){super(),this.isUniformsGroup=!0,Object.defineProperty(this,"id",{value:by++}),this.name="",this.usage=dl,this.uniforms=[]}add(e){return this.uniforms.push(e),this}remove(e){const t=this.uniforms.indexOf(e);return-1!==t&&this.uniforms.splice(t,1),this}setName(e){return this.name=e,this}setUsage(e){return this.usage=e,this}dispose(){return this.dispatchEvent({type:"dispose"}),this}copy(e){this.name=e.name,this.usage=e.usage;const t=e.uniforms;this.uniforms.length=0;for(let e=0,n=t.length;e<n;e++)this.uniforms.push(t[e].clone());return this}clone(){return(new this.constructor).copy(this)}}class xy extends Bf{constructor(e,t,n=1){super(e,t),this.isInstancedInterleavedBuffer=!0,this.meshPerAttribute=n}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}clone(e){const t=super.clone(e);return t.meshPerAttribute=this.meshPerAttribute,t}toJSON(e){const t=super.toJSON(e);return t.isInstancedInterleavedBuffer=!0,t.meshPerAttribute=this.meshPerAttribute,t}}class My{constructor(e,t,n,i,r){this.isGLBufferAttribute=!0,this.name="",this.buffer=e,this.type=t,this.itemSize=n,this.elementSize=i,this.count=r,this.version=0}set needsUpdate(e){!0===e&&this.version++}setBuffer(e){return this.buffer=e,this}setType(e,t){return this.type=e,this.elementSize=t,this}setItemSize(e){return this.itemSize=e,this}setCount(e){return this.count=e,this}}class Sy{constructor(e,t,n=0,i=1/0){this.ray=new Zc(e,t),this.near=n,this.far=i,this.camera=null,this.layers=new su,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error("THREE.Raycaster: Unsupported camera type: "+t.type)}intersectObject(e,t=!0,n=[]){return _y(e,this,n,t),n.sort(Ey),n}intersectObjects(e,t=!0,n=[]){for(let i=0,r=e.length;i<r;i++)_y(e[i],this,n,t);return n.sort(Ey),n}}function Ey(e,t){return e.distance-t.distance}function _y(e,t,n,i){if(e.layers.test(t.layers)&&e.raycast(t,n),!0===i){const i=e.children;for(let e=0,r=i.length;e<r;e++)_y(i[e],t,n,!0)}}class Ty{constructor(e=1,t=0,n=0){return this.radius=e,this.phi=t,this.theta=n,this}set(e,t,n){return this.radius=e,this.phi=t,this.theta=n,this}copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}makeSafe(){const e=1e-6;return this.phi=Math.max(e,Math.min(Math.PI-e,this.phi)),this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,n){return this.radius=Math.sqrt(e*e+t*t+n*n),0===this.radius?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,n),this.phi=Math.acos(Ll(t/this.radius,-1,1))),this}clone(){return(new this.constructor).copy(this)}}class Cy{constructor(e=1,t=0,n=0){return this.radius=e,this.theta=t,this.y=n,this}set(e,t,n){return this.radius=e,this.theta=t,this.y=n,this}copy(e){return this.radius=e.radius,this.theta=e.theta,this.y=e.y,this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,t,n){return this.radius=Math.sqrt(e*e+n*n),this.theta=Math.atan2(e,n),this.y=t,this}clone(){return(new this.constructor).copy(this)}}const Iy=new jl;class Dy{constructor(e=new jl(1/0,1/0),t=new jl(-1/0,-1/0)){this.isBox2=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;t<n;t++)this.expandByPoint(e[t]);return this}setFromCenterAndSize(e,t){const n=Iy.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(n),this.max.copy(e).add(n),this}clone(){return(new this.constructor).copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}getCenter(e){return this.isEmpty()?e.set(0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}containsPoint(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y)}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Iy).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const Ny=new bc,Ly=new bc;class Ry{constructor(e=new bc,t=new bc){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){Ny.subVectors(e,this.start),Ly.subVectors(this.end,this.start);const n=Ly.dot(Ly);let i=Ly.dot(Ny)/n;return t&&(i=Ll(i,0,1)),i}closestPointToPoint(e,t,n){const i=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(i).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return(new this.constructor).copy(this)}}const Oy=new bc;class Py extends wu{constructor(e,t){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const n=new fh,i=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let e=0,t=1,n=32;e<n;e++,t++){const r=e/n*Math.PI*2,a=t/n*Math.PI*2;i.push(Math.cos(r),Math.sin(r),1,Math.cos(a),Math.sin(a),1)}n.setAttribute("position",new ah(i,3));const r=new NA({fog:!1,toneMapped:!1});this.cone=new FA(n,r),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1);const e=this.light.distance?this.light.distance:1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),Oy.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(Oy),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}}const zy=new bc,ky=new qc,Uy=new qc;class By extends FA{constructor(e){const t=Fy(e),n=new fh,i=[],r=[],a=new Uu(0,0,1),o=new Uu(0,1,0);for(let e=0;e<t.length;e++){const n=t[e];n.parent&&n.parent.isBone&&(i.push(0,0,0),i.push(0,0,0),r.push(a.r,a.g,a.b),r.push(o.r,o.g,o.b))}n.setAttribute("position",new ah(i,3)),n.setAttribute("color",new ah(r,3)),super(n,new NA({vertexColors:!0,depthTest:!1,depthWrite:!1,toneMapped:!1,transparent:!0})),this.isSkeletonHelper=!0,this.type="SkeletonHelper",this.root=e,this.bones=t,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}updateMatrixWorld(e){const t=this.bones,n=this.geometry,i=n.getAttribute("position");Uy.copy(this.root.matrixWorld).invert();for(let e=0,n=0;e<t.length;e++){const r=t[e];r.parent&&r.parent.isBone&&(ky.multiplyMatrices(Uy,r.matrixWorld),zy.setFromMatrixPosition(ky),i.setXYZ(n,zy.x,zy.y,zy.z),ky.multiplyMatrices(Uy,r.parent.matrixWorld),zy.setFromMatrixPosition(ky),i.setXYZ(n+1,zy.x,zy.y,zy.z),n+=2)}n.getAttribute("position").needsUpdate=!0,super.updateMatrixWorld(e)}dispose(){this.geometry.dispose(),this.material.dispose()}}function Fy(e){const t=[];!0===e.isBone&&t.push(e);for(let n=0;n<e.children.length;n++)t.push.apply(t,Fy(e.children[n]));return t}class jy extends Lh{constructor(e,t,n){super(new Ag(t,4,2),new Hu({wireframe:!0,fog:!1,toneMapped:!1})),this.light=e,this.color=n,this.type="PointLightHelper",this.matrix=this.light.matrixWorld,this.matrixAutoUpdate=!1,this.update()}dispose(){this.geometry.dispose(),this.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),void 0!==this.color?this.material.color.set(this.color):this.material.color.copy(this.light.color)}}const Hy=new bc,Vy=new Uu,Wy=new Uu;class Gy extends wu{constructor(e,t,n){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=n,this.type="HemisphereLightHelper";const i=new dg(t);i.rotateY(.5*Math.PI),this.material=new Hu({wireframe:!0,fog:!1,toneMapped:!1}),void 0===this.color&&(this.material.vertexColors=!0);const r=i.getAttribute("position"),a=new Float32Array(3*r.count);i.setAttribute("color",new qu(a,3)),this.add(new Lh(i,this.material)),this.update()}dispose(){this.children[0].geometry.dispose(),this.children[0].material.dispose()}update(){const e=this.children[0];if(void 0!==this.color)this.material.color.set(this.color);else{const t=e.geometry.getAttribute("color");Vy.copy(this.light.color),Wy.copy(this.light.groundColor);for(let e=0,n=t.count;e<n;e++){const i=e<n/2?Vy:Wy;t.setXYZ(e,i.r,i.g,i.b)}t.needsUpdate=!0}this.light.updateWorldMatrix(!0,!1),e.lookAt(Hy.setFromMatrixPosition(this.light.matrixWorld).negate())}}class Qy extends FA{constructor(e=10,t=10,n=4473924,i=8947848){n=new Uu(n),i=new Uu(i);const r=t/2,a=e/t,o=e/2,s=[],l=[];for(let e=0,c=0,u=-o;e<=t;e++,u+=a){s.push(-o,0,u,o,0,u),s.push(u,0,-o,u,0,o);const t=e===r?n:i;t.toArray(l,c),c+=3,t.toArray(l,c),c+=3,t.toArray(l,c),c+=3,t.toArray(l,c),c+=3}const c=new fh;c.setAttribute("position",new ah(s,3)),c.setAttribute("color",new ah(l,3)),super(c,new NA({vertexColors:!0,toneMapped:!1})),this.type="GridHelper"}dispose(){this.geometry.dispose(),this.material.dispose()}}class Xy extends FA{constructor(e=10,t=16,n=8,i=64,r=4473924,a=8947848){r=new Uu(r),a=new Uu(a);const o=[],s=[];if(t>1)for(let n=0;n<t;n++){const i=n/t*(2*Math.PI),l=Math.sin(i)*e,c=Math.cos(i)*e;o.push(0,0,0),o.push(l,0,c);const u=1&n?r:a;s.push(u.r,u.g,u.b),s.push(u.r,u.g,u.b)}for(let t=0;t<n;t++){const l=1&t?r:a,c=e-e/n*t;for(let e=0;e<i;e++){let t=e/i*(2*Math.PI),n=Math.sin(t)*c,r=Math.cos(t)*c;o.push(n,0,r),s.push(l.r,l.g,l.b),t=(e+1)/i*(2*Math.PI),n=Math.sin(t)*c,r=Math.cos(t)*c,o.push(n,0,r),s.push(l.r,l.g,l.b)}}const l=new fh;l.setAttribute("position",new ah(o,3)),l.setAttribute("color",new ah(s,3)),super(l,new NA({vertexColors:!0,toneMapped:!1})),this.type="PolarGridHelper"}dispose(){this.geometry.dispose(),this.material.dispose()}}const Yy=new bc,Zy=new bc,qy=new bc;class Ky extends wu{constructor(e,t,n){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=n,this.type="DirectionalLightHelper",void 0===t&&(t=1);let i=new fh;i.setAttribute("position",new ah([-t,t,0,t,t,0,t,-t,0,-t,-t,0,-t,t,0],3));const r=new NA({fog:!1,toneMapped:!1});this.lightPlane=new kA(i,r),this.add(this.lightPlane),i=new fh,i.setAttribute("position",new ah([0,0,0,0,0,1],3)),this.targetLine=new kA(i,r),this.add(this.targetLine),this.update()}dispose(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),Yy.setFromMatrixPosition(this.light.matrixWorld),Zy.setFromMatrixPosition(this.light.target.matrixWorld),qy.subVectors(Zy,Yy),this.lightPlane.lookAt(Zy),void 0!==this.color?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(Zy),this.targetLine.scale.z=qy.length()}}const Jy=new bc,$y=new Fh;class eb extends FA{constructor(e){const t=new fh,n=new NA({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],r=[],a={};function o(e,t){s(e),s(t)}function s(e){i.push(0,0,0),r.push(0,0,0),void 0===a[e]&&(a[e]=[]),a[e].push(i.length/3-1)}o("n1","n2"),o("n2","n4"),o("n4","n3"),o("n3","n1"),o("f1","f2"),o("f2","f4"),o("f4","f3"),o("f3","f1"),o("n1","f1"),o("n2","f2"),o("n3","f3"),o("n4","f4"),o("p","n1"),o("p","n2"),o("p","n3"),o("p","n4"),o("u1","u2"),o("u2","u3"),o("u3","u1"),o("c","t"),o("p","c"),o("cn1","cn2"),o("cn3","cn4"),o("cf1","cf2"),o("cf3","cf4"),t.setAttribute("position",new ah(i,3)),t.setAttribute("color",new ah(r,3)),super(t,n),this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update();const l=new Uu(16755200),c=new Uu(16711680),u=new Uu(43775),h=new Uu(16777215),d=new Uu(3355443);this.setColors(l,c,u,h,d)}setColors(e,t,n,i,r){const a=this.geometry.getAttribute("color");a.setXYZ(0,e.r,e.g,e.b),a.setXYZ(1,e.r,e.g,e.b),a.setXYZ(2,e.r,e.g,e.b),a.setXYZ(3,e.r,e.g,e.b),a.setXYZ(4,e.r,e.g,e.b),a.setXYZ(5,e.r,e.g,e.b),a.setXYZ(6,e.r,e.g,e.b),a.setXYZ(7,e.r,e.g,e.b),a.setXYZ(8,e.r,e.g,e.b),a.setXYZ(9,e.r,e.g,e.b),a.setXYZ(10,e.r,e.g,e.b),a.setXYZ(11,e.r,e.g,e.b),a.setXYZ(12,e.r,e.g,e.b),a.setXYZ(13,e.r,e.g,e.b),a.setXYZ(14,e.r,e.g,e.b),a.setXYZ(15,e.r,e.g,e.b),a.setXYZ(16,e.r,e.g,e.b),a.setXYZ(17,e.r,e.g,e.b),a.setXYZ(18,e.r,e.g,e.b),a.setXYZ(19,e.r,e.g,e.b),a.setXYZ(20,e.r,e.g,e.b),a.setXYZ(21,e.r,e.g,e.b),a.setXYZ(22,e.r,e.g,e.b),a.setXYZ(23,e.r,e.g,e.b),a.setXYZ(24,t.r,t.g,t.b),a.setXYZ(25,t.r,t.g,t.b),a.setXYZ(26,t.r,t.g,t.b),a.setXYZ(27,t.r,t.g,t.b),a.setXYZ(28,t.r,t.g,t.b),a.setXYZ(29,t.r,t.g,t.b),a.setXYZ(30,t.r,t.g,t.b),a.setXYZ(31,t.r,t.g,t.b),a.setXYZ(32,n.r,n.g,n.b),a.setXYZ(33,n.r,n.g,n.b),a.setXYZ(34,n.r,n.g,n.b),a.setXYZ(35,n.r,n.g,n.b),a.setXYZ(36,n.r,n.g,n.b),a.setXYZ(37,n.r,n.g,n.b),a.setXYZ(38,i.r,i.g,i.b),a.setXYZ(39,i.r,i.g,i.b),a.setXYZ(40,r.r,r.g,r.b),a.setXYZ(41,r.r,r.g,r.b),a.setXYZ(42,r.r,r.g,r.b),a.setXYZ(43,r.r,r.g,r.b),a.setXYZ(44,r.r,r.g,r.b),a.setXYZ(45,r.r,r.g,r.b),a.setXYZ(46,r.r,r.g,r.b),a.setXYZ(47,r.r,r.g,r.b),a.setXYZ(48,r.r,r.g,r.b),a.setXYZ(49,r.r,r.g,r.b),a.needsUpdate=!0}update(){const e=this.geometry,t=this.pointMap;$y.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),tb("c",t,e,$y,0,0,-1),tb("t",t,e,$y,0,0,1),tb("n1",t,e,$y,-1,-1,-1),tb("n2",t,e,$y,1,-1,-1),tb("n3",t,e,$y,-1,1,-1),tb("n4",t,e,$y,1,1,-1),tb("f1",t,e,$y,-1,-1,1),tb("f2",t,e,$y,1,-1,1),tb("f3",t,e,$y,-1,1,1),tb("f4",t,e,$y,1,1,1),tb("u1",t,e,$y,.7,1.1,-1),tb("u2",t,e,$y,-.7,1.1,-1),tb("u3",t,e,$y,0,2,-1),tb("cf1",t,e,$y,-1,0,1),tb("cf2",t,e,$y,1,0,1),tb("cf3",t,e,$y,0,-1,1),tb("cf4",t,e,$y,0,1,1),tb("cn1",t,e,$y,-1,0,-1),tb("cn2",t,e,$y,1,0,-1),tb("cn3",t,e,$y,0,-1,-1),tb("cn4",t,e,$y,0,1,-1),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}function tb(e,t,n,i,r,a,o){Jy.set(r,a,o).unproject(i);const s=t[e];if(void 0!==s){const e=n.getAttribute("position");for(let t=0,n=s.length;t<n;t++)e.setXYZ(s[t],Jy.x,Jy.y,Jy.z)}}const nb=new Mc;class ib extends FA{constructor(e,t=16776960){const n=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),i=new Float32Array(24),r=new fh;r.setIndex(new qu(n,1)),r.setAttribute("position",new qu(i,3)),super(r,new NA({color:t,toneMapped:!1})),this.object=e,this.type="BoxHelper",this.matrixAutoUpdate=!1,this.update()}update(e){if(void 0!==e&&console.warn("THREE.BoxHelper: .update() has no longer arguments."),void 0!==this.object&&nb.setFromObject(this.object),nb.isEmpty())return;const t=nb.min,n=nb.max,i=this.geometry.attributes.position,r=i.array;r[0]=n.x,r[1]=n.y,r[2]=n.z,r[3]=t.x,r[4]=n.y,r[5]=n.z,r[6]=t.x,r[7]=t.y,r[8]=n.z,r[9]=n.x,r[10]=t.y,r[11]=n.z,r[12]=n.x,r[13]=n.y,r[14]=t.z,r[15]=t.x,r[16]=n.y,r[17]=t.z,r[18]=t.x,r[19]=t.y,r[20]=t.z,r[21]=n.x,r[22]=t.y,r[23]=t.z,i.needsUpdate=!0,this.geometry.computeBoundingSphere()}setFromObject(e){return this.object=e,this.update(),this}copy(e,t){return super.copy(e,t),this.object=e.object,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class rb extends FA{constructor(e,t=16776960){const n=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),i=new fh;i.setIndex(new qu(n,1)),i.setAttribute("position",new ah([1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],3)),super(i,new NA({color:t,toneMapped:!1})),this.box=e,this.type="Box3Helper",this.geometry.computeBoundingSphere()}updateMatrixWorld(e){const t=this.box;t.isEmpty()||(t.getCenter(this.position),t.getSize(this.scale),this.scale.multiplyScalar(.5),super.updateMatrixWorld(e))}dispose(){this.geometry.dispose(),this.material.dispose()}}class ab extends kA{constructor(e,t=1,n=16776960){const i=n,r=new fh;r.setAttribute("position",new ah([1,-1,0,-1,1,0,-1,-1,0,1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],3)),r.computeBoundingSphere(),super(r,new NA({color:i,toneMapped:!1})),this.type="PlaneHelper",this.plane=e,this.size=t;const a=new fh;a.setAttribute("position",new ah([1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],3)),a.computeBoundingSphere(),this.add(new Lh(a,new Hu({color:i,opacity:.2,transparent:!0,depthWrite:!1,toneMapped:!1})))}updateMatrixWorld(e){this.position.set(0,0,0),this.scale.set(.5*this.size,.5*this.size,1),this.lookAt(this.plane.normal),this.translateZ(-this.plane.constant),super.updateMatrixWorld(e)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}}const ob=new bc;let sb,lb;class cb extends wu{constructor(e=new bc(0,0,1),t=new bc(0,0,0),n=1,i=16776960,r=.2*n,a=.2*r){super(),this.type="ArrowHelper",void 0===sb&&(sb=new fh,sb.setAttribute("position",new ah([0,0,0,0,1,0],3)),lb=new _m(0,.5,1,5,1),lb.translate(0,-.5,0)),this.position.copy(t),this.line=new kA(sb,new NA({color:i,toneMapped:!1})),this.line.matrixAutoUpdate=!1,this.add(this.line),this.cone=new Lh(lb,new Hu({color:i,toneMapped:!1})),this.cone.matrixAutoUpdate=!1,this.add(this.cone),this.setDirection(e),this.setLength(n,r,a)}setDirection(e){if(e.y>.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{ob.set(e.z,0,-e.x).normalize();const t=Math.acos(e.y);this.quaternion.setFromAxisAngle(ob,t)}}setLength(e,t=.2*e,n=.2*t){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class ub extends FA{constructor(e=1){const t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],n=new fh;n.setAttribute("position",new ah(t,3)),n.setAttribute("color",new ah([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),super(n,new NA({vertexColors:!0,toneMapped:!1})),this.type="AxesHelper"}setColors(e,t,n){const i=new Uu,r=this.geometry.attributes.color.array;return i.set(e),i.toArray(r,0),i.toArray(r,3),i.set(t),i.toArray(r,6),i.toArray(r,9),i.set(n),i.toArray(r,12),i.toArray(r,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class hb{constructor(){this.type="ShapePath",this.color=new Uu,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new xm,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,i){return this.currentPath.quadraticCurveTo(e,t,n,i),this}bezierCurveTo(e,t,n,i,r,a){return this.currentPath.bezierCurveTo(e,t,n,i,r,a),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(e,t){const n=t.length;let i=!1;for(let r=n-1,a=0;a<n;r=a++){let n=t[r],o=t[a],s=o.x-n.x,l=o.y-n.y;if(Math.abs(l)>Number.EPSILON){if(l<0&&(n=t[a],s=-s,o=t[r],l=-l),e.y<n.y||e.y>o.y)continue;if(e.y===n.y){if(e.x===n.x)return!0}else{const t=l*(e.x-n.x)-s*(e.y-n.y);if(0===t)return!0;if(t<0)continue;i=!i}}else{if(e.y!==n.y)continue;if(o.x<=e.x&&e.x<=n.x||n.x<=e.x&&e.x<=o.x)return!0}}return i}const n=og.isClockWise,i=this.subPaths;if(0===i.length)return[];let r,a,o;const s=[];if(1===i.length)return a=i[0],o=new Pm,o.curves=a.curves,s.push(o),s;let l=!n(i[0].getPoints());l=e?!l:l;const c=[],u=[];let h,d,p=[],f=0;u[f]=void 0,p[f]=[];for(let t=0,o=i.length;t<o;t++)a=i[t],h=a.getPoints(),r=n(h),r=e?!r:r,r?(!l&&u[f]&&f++,u[f]={s:new Pm,p:h},u[f].s.curves=a.curves,l&&f++,p[f]=[]):p[f].push({h:a,p:h[0]});if(!u[0])return function(e){const t=[];for(let n=0,i=e.length;n<i;n++){const i=e[n],r=new Pm;r.curves=i.curves,t.push(r)}return t}(i);if(u.length>1){let e=!1,n=0;for(let e=0,t=u.length;e<t;e++)c[e]=[];for(let i=0,r=u.length;i<r;i++){const r=p[i];for(let a=0;a<r.length;a++){const o=r[a];let s=!0;for(let r=0;r<u.length;r++)t(o.p,u[r].p)&&(i!==r&&n++,s?(s=!1,c[r].push(o)):e=!0);s&&c[i].push(o)}}n>0&&!1===e&&(p=c)}for(let e=0,t=u.length;e<t;e++){o=u[e].s,s.push(o),d=p[e];for(let e=0,t=d.length;e<t;e++)o.holes.push(d[e].h)}return s}}function db(e,t){if(t===Ss)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t===_s||t===Es){let n=e.getIndex();if(null===n){const t=[],i=e.getAttribute("position");if(void 0===i)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;e<i.count;e++)t.push(e);e.setIndex(t),n=e.getIndex()}const i=n.count-2,r=[];if(t===_s)for(let e=1;e<=i;e++)r.push(n.getX(0)),r.push(n.getX(e)),r.push(n.getX(e+1));else for(let e=0;e<i;e++)e%2==0?(r.push(n.getX(e)),r.push(n.getX(e+1)),r.push(n.getX(e+2))):(r.push(n.getX(e+2)),r.push(n.getX(e+1)),r.push(n.getX(e)));r.length/3!==i&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const a=e.clone();return a.setIndex(r),a.clearGroups(),a}return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e}"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:jr}})),"undefined"!=typeof window&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=jr);class pb extends nv{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register((function(e){return new yb(e)})),this.register((function(e){return new Tb(e)})),this.register((function(e){return new Cb(e)})),this.register((function(e){return new Ib(e)})),this.register((function(e){return new wb(e)})),this.register((function(e){return new xb(e)})),this.register((function(e){return new Mb(e)})),this.register((function(e){return new Sb(e)})),this.register((function(e){return new vb(e)})),this.register((function(e){return new Eb(e)})),this.register((function(e){return new bb(e)})),this.register((function(e){return new _b(e)})),this.register((function(e){return new mb(e)})),this.register((function(e){return new Db(e)})),this.register((function(e){return new Nb(e)}))}load(e,t,n,i){const r=this;let a;a=""!==this.resourcePath?this.resourcePath:""!==this.path?this.path:Lv.extractUrlBase(e),this.manager.itemStart(e);const o=function(t){i?i(t):console.error(t),r.manager.itemError(e),r.manager.itemEnd(e)},s=new av(this.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,(function(n){try{r.parse(n,a,(function(n){t(n),r.manager.itemEnd(e)}),o)}catch(e){o(e)}}),n,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return-1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return-1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n,i){let r;const a={},o={},s=new TextDecoder;if("string"==typeof e)r=JSON.parse(e);else if(e instanceof ArrayBuffer)if(s.decode(new Uint8Array(e,0,4))===Lb){try{a[Ab.KHR_BINARY_GLTF]=new Rb(e)}catch(e){return void(i&&i(e))}r=JSON.parse(a[Ab.KHR_BINARY_GLTF].content)}else r=JSON.parse(s.decode(e));else r=e;if(void 0===r.asset||r.asset.version[0]<2)return void(i&&i(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const l=new tw(r,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){const t=this.pluginCallbacks[e](l);t.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),o[t.name]=t,a[t.name]=!0}if(r.extensionsUsed)for(let e=0;e<r.extensionsUsed.length;++e){const t=r.extensionsUsed[e],n=r.extensionsRequired||[];switch(t){case Ab.KHR_MATERIALS_UNLIT:a[t]=new gb;break;case Ab.KHR_DRACO_MESH_COMPRESSION:a[t]=new Ob(r,this.dracoLoader);break;case Ab.KHR_TEXTURE_TRANSFORM:a[t]=new Pb;break;case Ab.KHR_MESH_QUANTIZATION:a[t]=new zb;break;default:n.indexOf(t)>=0&&void 0===o[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}l.setExtensions(a),l.setPlugins(o),l.parse(n,i)}parseAsync(e,t){const n=this;return new Promise((function(i,r){n.parse(e,t,i,r)}))}}function fb(){let e={};return{get:function(t){return e[t]},add:function(t,n){e[t]=n},remove:function(t){delete e[t]},removeAll:function(){e={}}}}const Ab={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class mb{constructor(e){this.parser=e,this.name=Ab.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let n=0,i=t.length;n<i;n++){const i=t[n];i.extensions&&i.extensions[this.name]&&void 0!==i.extensions[this.name].light&&e._addNodeRef(this.cache,i.extensions[this.name].light)}}_loadLight(e){const t=this.parser,n="light:"+e;let i=t.cache.get(n);if(i)return i;const r=t.json,a=((r.extensions&&r.extensions[this.name]||{}).lights||[])[e];let o;const s=new Uu(16777215);void 0!==a.color&&s.setRGB(a.color[0],a.color[1],a.color[2],Ps);const l=void 0!==a.range?a.range:0;switch(a.type){case"directional":o=new _v(s),o.target.position.set(0,0,-1),o.add(o.target);break;case"point":o=new Sv(s),o.distance=l;break;case"spot":o=new yv(s),o.distance=l,a.spot=a.spot||{},a.spot.innerConeAngle=void 0!==a.spot.innerConeAngle?a.spot.innerConeAngle:0,a.spot.outerConeAngle=void 0!==a.spot.outerConeAngle?a.spot.outerConeAngle:Math.PI/4,o.angle=a.spot.outerConeAngle,o.penumbra=1-a.spot.innerConeAngle/a.spot.outerConeAngle,o.target.position.set(0,0,-1),o.add(o.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+a.type)}return o.position.set(0,0,0),o.decay=2,Zb(o,a),void 0!==a.intensity&&(o.intensity=a.intensity),o.name=t.createUniqueName(a.name||"light_"+e),i=Promise.resolve(o),t.cache.add(n,i),i}getDependency(e,t){if("light"===e)return this._loadLight(t)}createNodeAttachment(e){const t=this,n=this.parser,i=n.json.nodes[e],r=(i.extensions&&i.extensions[this.name]||{}).light;return void 0===r?null:this._loadLight(r).then((function(e){return n._getNodeRef(t.cache,r,e)}))}}class gb{constructor(){this.name=Ab.KHR_MATERIALS_UNLIT}getMaterialType(){return Hu}extendParams(e,t,n){const i=[];e.color=new Uu(1,1,1),e.opacity=1;const r=t.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){const t=r.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],Ps),e.opacity=t[3]}void 0!==r.baseColorTexture&&i.push(n.assignTexture(e,"map",r.baseColorTexture,Os))}return Promise.all(i)}}class vb{constructor(e){this.parser=e,this.name=Ab.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){const n=this.parser.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=n.extensions[this.name].emissiveStrength;return void 0!==i&&(t.emissiveIntensity=i),Promise.resolve()}}class yb{constructor(e){this.parser=e,this.name=Ab.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?_g:null}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];if(void 0!==a.clearcoatFactor&&(t.clearcoat=a.clearcoatFactor),void 0!==a.clearcoatTexture&&r.push(n.assignTexture(t,"clearcoatMap",a.clearcoatTexture)),void 0!==a.clearcoatRoughnessFactor&&(t.clearcoatRoughness=a.clearcoatRoughnessFactor),void 0!==a.clearcoatRoughnessTexture&&r.push(n.assignTexture(t,"clearcoatRoughnessMap",a.clearcoatRoughnessTexture)),void 0!==a.clearcoatNormalTexture&&(r.push(n.assignTexture(t,"clearcoatNormalMap",a.clearcoatNormalTexture)),void 0!==a.clearcoatNormalTexture.scale)){const e=a.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new jl(e,e)}return Promise.all(r)}}class bb{constructor(e){this.parser=e,this.name=Ab.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?_g:null}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];return void 0!==a.iridescenceFactor&&(t.iridescence=a.iridescenceFactor),void 0!==a.iridescenceTexture&&r.push(n.assignTexture(t,"iridescenceMap",a.iridescenceTexture)),void 0!==a.iridescenceIor&&(t.iridescenceIOR=a.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==a.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=a.iridescenceThicknessMinimum),void 0!==a.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=a.iridescenceThicknessMaximum),void 0!==a.iridescenceThicknessTexture&&r.push(n.assignTexture(t,"iridescenceThicknessMap",a.iridescenceThicknessTexture)),Promise.all(r)}}class wb{constructor(e){this.parser=e,this.name=Ab.KHR_MATERIALS_SHEEN}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?_g:null}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[];t.sheenColor=new Uu(0,0,0),t.sheenRoughness=0,t.sheen=1;const a=i.extensions[this.name];if(void 0!==a.sheenColorFactor){const e=a.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],Ps)}return void 0!==a.sheenRoughnessFactor&&(t.sheenRoughness=a.sheenRoughnessFactor),void 0!==a.sheenColorTexture&&r.push(n.assignTexture(t,"sheenColorMap",a.sheenColorTexture,Os)),void 0!==a.sheenRoughnessTexture&&r.push(n.assignTexture(t,"sheenRoughnessMap",a.sheenRoughnessTexture)),Promise.all(r)}}class xb{constructor(e){this.parser=e,this.name=Ab.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?_g:null}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];return void 0!==a.transmissionFactor&&(t.transmission=a.transmissionFactor),void 0!==a.transmissionTexture&&r.push(n.assignTexture(t,"transmissionMap",a.transmissionTexture)),Promise.all(r)}}class Mb{constructor(e){this.parser=e,this.name=Ab.KHR_MATERIALS_VOLUME}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?_g:null}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];t.thickness=void 0!==a.thicknessFactor?a.thicknessFactor:0,void 0!==a.thicknessTexture&&r.push(n.assignTexture(t,"thicknessMap",a.thicknessTexture)),t.attenuationDistance=a.attenuationDistance||1/0;const o=a.attenuationColor||[1,1,1];return t.attenuationColor=(new Uu).setRGB(o[0],o[1],o[2],Ps),Promise.all(r)}}class Sb{constructor(e){this.parser=e,this.name=Ab.KHR_MATERIALS_IOR}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?_g:null}extendMaterialParams(e,t){const n=this.parser.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();const i=n.extensions[this.name];return t.ior=void 0!==i.ior?i.ior:1.5,Promise.resolve()}}class Eb{constructor(e){this.parser=e,this.name=Ab.KHR_MATERIALS_SPECULAR}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?_g:null}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];t.specularIntensity=void 0!==a.specularFactor?a.specularFactor:1,void 0!==a.specularTexture&&r.push(n.assignTexture(t,"specularIntensityMap",a.specularTexture));const o=a.specularColorFactor||[1,1,1];return t.specularColor=(new Uu).setRGB(o[0],o[1],o[2],Ps),void 0!==a.specularColorTexture&&r.push(n.assignTexture(t,"specularColorMap",a.specularColorTexture,Os)),Promise.all(r)}}class _b{constructor(e){this.parser=e,this.name=Ab.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){const t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?_g:null}extendMaterialParams(e,t){const n=this.parser,i=n.json.materials[e];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],a=i.extensions[this.name];return void 0!==a.anisotropyStrength&&(t.anisotropy=a.anisotropyStrength),void 0!==a.anisotropyRotation&&(t.anisotropyRotation=a.anisotropyRotation),void 0!==a.anisotropyTexture&&r.push(n.assignTexture(t,"anisotropyMap",a.anisotropyTexture)),Promise.all(r)}}class Tb{constructor(e){this.parser=e,this.name=Ab.KHR_TEXTURE_BASISU}loadTexture(e){const t=this.parser,n=t.json,i=n.textures[e];if(!i.extensions||!i.extensions[this.name])return null;const r=i.extensions[this.name],a=t.options.ktx2Loader;if(!a){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,r.source,a)}}class Cb{constructor(e){this.parser=e,this.name=Ab.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,n=this.parser,i=n.json,r=i.textures[e];if(!r.extensions||!r.extensions[t])return null;const a=r.extensions[t],o=i.images[a.source];let s=n.textureLoader;if(o.uri){const e=n.options.manager.getHandler(o.uri);null!==e&&(s=e)}return this.detectSupport().then((function(r){if(r)return n.loadTextureImage(e,a.source,s);if(i.extensionsRequired&&i.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return n.loadTexture(e)}))}detectSupport(){return this.isSupported||(this.isSupported=new Promise((function(e){const t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}}))),this.isSupported}}class Ib{constructor(e){this.parser=e,this.name=Ab.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){const t=this.name,n=this.parser,i=n.json,r=i.textures[e];if(!r.extensions||!r.extensions[t])return null;const a=r.extensions[t],o=i.images[a.source];let s=n.textureLoader;if(o.uri){const e=n.options.manager.getHandler(o.uri);null!==e&&(s=e)}return this.detectSupport().then((function(r){if(r)return n.loadTextureImage(e,a.source,s);if(i.extensionsRequired&&i.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return n.loadTexture(e)}))}detectSupport(){return this.isSupported||(this.isSupported=new Promise((function(e){const t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(1===t.height)}}))),this.isSupported}}class Db{constructor(e){this.name=Ab.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){const e=n.extensions[this.name],i=this.parser.getDependency("buffer",e.buffer),r=this.parser.options.meshoptDecoder;if(!r||!r.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return i.then((function(t){const n=e.byteOffset||0,i=e.byteLength||0,a=e.count,o=e.byteStride,s=new Uint8Array(t,n,i);return r.decodeGltfBufferAsync?r.decodeGltfBufferAsync(a,o,s,e.mode,e.filter).then((function(e){return e.buffer})):r.ready.then((function(){const t=new ArrayBuffer(a*o);return r.decodeGltfBuffer(new Uint8Array(t),a,o,s,e.mode,e.filter),t}))}))}return null}}class Nb{constructor(e){this.name=Ab.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){const t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||void 0===n.mesh)return null;const i=t.meshes[n.mesh];for(const e of i.primitives)if(e.mode!==Fb.TRIANGLES&&e.mode!==Fb.TRIANGLE_STRIP&&e.mode!==Fb.TRIANGLE_FAN&&void 0!==e.mode)return null;const r=n.extensions[this.name].attributes,a=[],o={};for(const e in r)a.push(this.parser.getDependency("accessor",r[e]).then((t=>(o[e]=t,o[e]))));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then((e=>{const t=e.pop(),n=t.isGroup?t.children:[t],i=e[0].count,r=[];for(const e of n){const t=new qc,n=new bc,a=new yc,s=new bc(1,1,1),l=new DA(e.geometry,e.material,i);for(let e=0;e<i;e++)o.TRANSLATION&&n.fromBufferAttribute(o.TRANSLATION,e),o.ROTATION&&a.fromBufferAttribute(o.ROTATION,e),o.SCALE&&s.fromBufferAttribute(o.SCALE,e),l.setMatrixAt(e,t.compose(n,a,s));for(const t in o)if("_COLOR_0"===t){const e=o[t];l.instanceColor=new xA(e.array,e.itemSize,e.normalized)}else"TRANSLATION"!==t&&"ROTATION"!==t&&"SCALE"!==t&&e.geometry.setAttribute(t,o[t]);wu.prototype.copy.call(l,e),this.parser.assignFinalMaterial(l),r.push(l)}return t.isGroup?(t.clear(),t.add(...r),t):r[0]})))}}const Lb="glTF";class Rb{constructor(e){this.name=Ab.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12),n=new TextDecoder;if(this.header={magic:n.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==Lb)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const i=this.header.length-12,r=new DataView(e,12);let a=0;for(;a<i;){const t=r.getUint32(a,!0);a+=4;const i=r.getUint32(a,!0);if(a+=4,1313821514===i){const i=new Uint8Array(e,12+a,t);this.content=n.decode(i)}else if(5130562===i){const n=12+a;this.body=e.slice(n,n+t)}a+=t}if(null===this.content)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class Ob{constructor(e,t){if(!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=Ab.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){const n=this.json,i=this.dracoLoader,r=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,o={},s={},l={};for(const e in a){const t=Gb[e]||e.toLowerCase();o[t]=a[e]}for(const t in e.attributes){const i=Gb[t]||t.toLowerCase();if(void 0!==a[t]){const r=n.accessors[e.attributes[t]],a=jb[r.componentType];l[i]=a.name,s[i]=!0===r.normalized}}return t.getDependency("bufferView",r).then((function(e){return new Promise((function(t){i.decodeDracoFile(e,(function(e){for(const t in e.attributes){const n=e.attributes[t],i=s[t];void 0!==i&&(n.normalized=i)}t(e)}),o,l)}))}))}}class Pb{constructor(){this.name=Ab.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return void 0!==t.texCoord&&t.texCoord!==e.channel||void 0!==t.offset||void 0!==t.rotation||void 0!==t.scale?(e=e.clone(),void 0!==t.texCoord&&(e.channel=t.texCoord),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0,e):e}}class zb{constructor(){this.name=Ab.KHR_MESH_QUANTIZATION}}class kb extends Bg{constructor(e,t,n,i){super(e,t,n,i)}copySampleValue_(e){const t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=e*i*3+i;for(let e=0;e!==i;e++)t[e]=n[r+e];return t}interpolate_(e,t,n,i){const r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=2*o,l=3*o,c=i-t,u=(n-t)/c,h=u*u,d=h*u,p=e*l,f=p-l,A=-2*d+3*h,m=d-h,g=1-A,v=m-h+u;for(let e=0;e!==o;e++){const t=a[f+e+o],n=a[f+e+s]*c,i=a[p+e+o],l=a[p+e]*c;r[e]=g*t+v*n+A*i+m*l}return r}}const Ub=new yc;class Bb extends kb{interpolate_(e,t,n,i){const r=super.interpolate_(e,t,n,i);return Ub.fromArray(r).normalize().toArray(r),r}}const Fb={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},jb={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Hb={9728:no,9729:so,9984:io,9985:lo,9986:ao,9987:uo},Vb={33071:eo,33648:to,10497:$a},Wb={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Gb={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Qb={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Xb={CUBICSPLINE:void 0,LINEAR:gs,STEP:ms};function Yb(e,t,n){for(const i in n.extensions)void 0===e[i]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[i]=n.extensions[i])}function Zb(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function qb(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let n=0,i=t.weights.length;n<i;n++)e.morphTargetInfluences[n]=t.weights[n];if(t.extras&&Array.isArray(t.extras.targetNames)){const n=t.extras.targetNames;if(e.morphTargetInfluences.length===n.length){e.morphTargetDictionary={};for(let t=0,i=n.length;t<i;t++)e.morphTargetDictionary[n[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function Kb(e){let t;const n=e.extensions&&e.extensions[Ab.KHR_DRACO_MESH_COMPRESSION];if(t=n?"draco:"+n.bufferView+":"+n.indices+":"+Jb(n.attributes):e.indices+":"+Jb(e.attributes)+":"+e.mode,void 0!==e.targets)for(let n=0,i=e.targets.length;n<i;n++)t+=":"+Jb(e.targets[n]);return t}function Jb(e){let t="";const n=Object.keys(e).sort();for(let i=0,r=n.length;i<r;i++)t+=n[i]+":"+e[n[i]]+";";return t}function $b(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}const ew=new qc;class tw{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new fb,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,i=!1,r=-1;"undefined"!=typeof navigator&&(n=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),i=navigator.userAgent.indexOf("Firefox")>-1,r=i?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"undefined"==typeof createImageBitmap||n||i&&r<98?this.textureLoader=new hv(this.options.manager):this.textureLoader=new Bv(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new av(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const n=this,i=this.json,r=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll((function(e){return e._markDefs&&e._markDefs()})),Promise.all(this._invokeAll((function(e){return e.beforeRoot&&e.beforeRoot()}))).then((function(){return Promise.all([n.getDependencies("scene"),n.getDependencies("animation"),n.getDependencies("camera")])})).then((function(t){const a={scene:t[0][i.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:i.asset,parser:n,userData:{}};return Yb(r,a,i),Zb(a,i),Promise.all(n._invokeAll((function(e){return e.afterRoot&&e.afterRoot(a)}))).then((function(){e(a)}))})).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let n=0,i=t.length;n<i;n++){const i=t[n].joints;for(let t=0,n=i.length;t<n;t++)e[i[t]].isBone=!0}for(let t=0,i=e.length;t<i;t++){const i=e[t];void 0!==i.mesh&&(this._addNodeRef(this.meshCache,i.mesh),void 0!==i.skin&&(n[i.mesh].isSkinnedMesh=!0)),void 0!==i.camera&&this._addNodeRef(this.cameraCache,i.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,n){if(e.refs[t]<=1)return n;const i=n.clone(),r=(e,t)=>{const n=this.associations.get(e);null!=n&&this.associations.set(t,n);for(const[n,i]of e.children.entries())r(i,t.children[n])};return r(n,i),i.name+="_instance_"+e.uses[t]++,i}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let n=0;n<t.length;n++){const i=e(t[n]);if(i)return i}return null}_invokeAll(e){const t=Object.values(this.plugins);t.unshift(this);const n=[];for(let i=0;i<t.length;i++){const r=e(t[i]);r&&n.push(r)}return n}getDependency(e,t){const n=e+":"+t;let i=this.cache.get(n);if(!i){switch(e){case"scene":i=this.loadScene(t);break;case"node":i=this._invokeOne((function(e){return e.loadNode&&e.loadNode(t)}));break;case"mesh":i=this._invokeOne((function(e){return e.loadMesh&&e.loadMesh(t)}));break;case"accessor":i=this.loadAccessor(t);break;case"bufferView":i=this._invokeOne((function(e){return e.loadBufferView&&e.loadBufferView(t)}));break;case"buffer":i=this.loadBuffer(t);break;case"material":i=this._invokeOne((function(e){return e.loadMaterial&&e.loadMaterial(t)}));break;case"texture":i=this._invokeOne((function(e){return e.loadTexture&&e.loadTexture(t)}));break;case"skin":i=this.loadSkin(t);break;case"animation":i=this._invokeOne((function(e){return e.loadAnimation&&e.loadAnimation(t)}));break;case"camera":i=this.loadCamera(t);break;default:if(i=this._invokeOne((function(n){return n!=this&&n.getDependency&&n.getDependency(e,t)})),!i)throw new Error("Unknown type: "+e)}this.cache.add(n,i)}return i}getDependencies(e){let t=this.cache.get(e);if(!t){const n=this,i=this.json[e+("mesh"===e?"es":"s")]||[];t=Promise.all(i.map((function(t,i){return n.getDependency(e,i)}))),this.cache.add(e,t)}return t}loadBuffer(e){const t=this.json.buffers[e],n=this.fileLoader;if(t.type&&"arraybuffer"!==t.type)throw new Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(void 0===t.uri&&0===e)return Promise.resolve(this.extensions[Ab.KHR_BINARY_GLTF].body);const i=this.options;return new Promise((function(e,r){n.load(Lv.resolveURL(t.uri,i.path),e,void 0,(function(){r(new Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))}))}))}loadBufferView(e){const t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then((function(e){const n=t.byteLength||0,i=t.byteOffset||0;return e.slice(i,i+n)}))}loadAccessor(e){const t=this,n=this.json,i=this.json.accessors[e];if(void 0===i.bufferView&&void 0===i.sparse){const e=Wb[i.type],t=jb[i.componentType],n=!0===i.normalized,r=new t(i.count*e);return Promise.resolve(new qu(r,e,n))}const r=[];return void 0!==i.bufferView?r.push(this.getDependency("bufferView",i.bufferView)):r.push(null),void 0!==i.sparse&&(r.push(this.getDependency("bufferView",i.sparse.indices.bufferView)),r.push(this.getDependency("bufferView",i.sparse.values.bufferView))),Promise.all(r).then((function(e){const r=e[0],a=Wb[i.type],o=jb[i.componentType],s=o.BYTES_PER_ELEMENT,l=s*a,c=i.byteOffset||0,u=void 0!==i.bufferView?n.bufferViews[i.bufferView].byteStride:void 0,h=!0===i.normalized;let d,p;if(u&&u!==l){const e=Math.floor(c/u),n="InterleavedBuffer:"+i.bufferView+":"+i.componentType+":"+e+":"+i.count;let l=t.cache.get(n);l||(d=new o(r,e*u,i.count*u/s),l=new Bf(d,u/s),t.cache.add(n,l)),p=new jf(l,a,c%u/s,h)}else d=null===r?new o(i.count*a):new o(r,c,i.count*a),p=new qu(d,a,h);if(void 0!==i.sparse){const t=Wb.SCALAR,n=jb[i.sparse.indices.componentType],s=i.sparse.indices.byteOffset||0,l=i.sparse.values.byteOffset||0,c=new n(e[1],s,i.sparse.count*t),u=new o(e[2],l,i.sparse.count*a);null!==r&&(p=new qu(p.array.slice(),p.itemSize,p.normalized));for(let e=0,t=c.length;e<t;e++){const t=c[e];if(p.setX(t,u[e*a]),a>=2&&p.setY(t,u[e*a+1]),a>=3&&p.setZ(t,u[e*a+2]),a>=4&&p.setW(t,u[e*a+3]),a>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return p}))}loadTexture(e){const t=this.json,n=this.options,i=t.textures[e].source,r=t.images[i];let a=this.textureLoader;if(r.uri){const e=n.manager.getHandler(r.uri);null!==e&&(a=e)}return this.loadTextureImage(e,i,a)}loadTextureImage(e,t,n){const i=this,r=this.json,a=r.textures[e],o=r.images[t],s=(o.uri||o.bufferView)+":"+a.sampler;if(this.textureCache[s])return this.textureCache[s];const l=this.loadImageSource(t,n).then((function(t){t.flipY=!1,t.name=a.name||o.name||"",""===t.name&&"string"==typeof o.uri&&!1===o.uri.startsWith("data:image/")&&(t.name=o.uri);const n=(r.samplers||{})[a.sampler]||{};return t.magFilter=Hb[n.magFilter]||so,t.minFilter=Hb[n.minFilter]||uo,t.wrapS=Vb[n.wrapS]||$a,t.wrapT=Vb[n.wrapT]||$a,i.associations.set(t,{textures:e}),t})).catch((function(){return null}));return this.textureCache[s]=l,l}loadImageSource(e,t){const n=this.json,i=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then((e=>e.clone()));const r=n.images[e],a=self.URL||self.webkitURL;let o=r.uri||"",s=!1;if(void 0!==r.bufferView)o=this.getDependency("bufferView",r.bufferView).then((function(e){s=!0;const t=new Blob([e],{type:r.mimeType});return o=a.createObjectURL(t),o}));else if(void 0===r.uri)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const l=Promise.resolve(o).then((function(e){return new Promise((function(n,r){let a=n;!0===t.isImageBitmapLoader&&(a=function(e){const t=new uc(e);t.needsUpdate=!0,n(t)}),t.load(Lv.resolveURL(e,i.path),a,void 0,r)}))})).then((function(e){var t;return!0===s&&a.revokeObjectURL(o),e.userData.mimeType=r.mimeType||((t=r.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e})).catch((function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",o),e}));return this.sourceCache[e]=l,l}assignTexture(e,t,n,i){const r=this;return this.getDependency("texture",n.index).then((function(a){if(!a)return null;if(void 0!==n.texCoord&&n.texCoord>0&&((a=a.clone()).channel=n.texCoord),r.extensions[Ab.KHR_TEXTURE_TRANSFORM]){const e=void 0!==n.extensions?n.extensions[Ab.KHR_TEXTURE_TRANSFORM]:void 0;if(e){const t=r.associations.get(a);a=r.extensions[Ab.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),r.associations.set(a,t)}}return void 0!==i&&(a.colorSpace=i),e[t]=a,a}))}assignFinalMaterial(e){const t=e.geometry;let n=e.material;const i=void 0===t.attributes.tangent,r=void 0!==t.attributes.color,a=void 0===t.attributes.normal;if(e.isPoints){const e="PointsMaterial:"+n.uuid;let t=this.cache.get(e);t||(t=new HA,ju.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,t.sizeAttenuation=!1,this.cache.add(e,t)),n=t}else if(e.isLine){const e="LineBasicMaterial:"+n.uuid;let t=this.cache.get(e);t||(t=new NA,ju.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,this.cache.add(e,t)),n=t}if(i||r||a){let e="ClonedMaterial:"+n.uuid+":";i&&(e+="derivative-tangents:"),r&&(e+="vertex-colors:"),a&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=n.clone(),r&&(t.vertexColors=!0),a&&(t.flatShading=!0),i&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(n))),n=t}e.material=n}getMaterialType(){return Eg}loadMaterial(e){const t=this,n=this.json,i=this.extensions,r=n.materials[e];let a;const o={},s=[];if((r.extensions||{})[Ab.KHR_MATERIALS_UNLIT]){const e=i[Ab.KHR_MATERIALS_UNLIT];a=e.getMaterialType(),s.push(e.extendParams(o,r,t))}else{const n=r.pbrMetallicRoughness||{};if(o.color=new Uu(1,1,1),o.opacity=1,Array.isArray(n.baseColorFactor)){const e=n.baseColorFactor;o.color.setRGB(e[0],e[1],e[2],Ps),o.opacity=e[3]}void 0!==n.baseColorTexture&&s.push(t.assignTexture(o,"map",n.baseColorTexture,Os)),o.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,o.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(s.push(t.assignTexture(o,"metalnessMap",n.metallicRoughnessTexture)),s.push(t.assignTexture(o,"roughnessMap",n.metallicRoughnessTexture))),a=this._invokeOne((function(t){return t.getMaterialType&&t.getMaterialType(e)})),s.push(Promise.all(this._invokeAll((function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,o)}))))}!0===r.doubleSided&&(o.side=ea);const l=r.alphaMode||"OPAQUE";if("BLEND"===l?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,"MASK"===l&&(o.alphaTest=void 0!==r.alphaCutoff?r.alphaCutoff:.5)),void 0!==r.normalTexture&&a!==Hu&&(s.push(t.assignTexture(o,"normalMap",r.normalTexture)),o.normalScale=new jl(1,1),void 0!==r.normalTexture.scale)){const e=r.normalTexture.scale;o.normalScale.set(e,e)}if(void 0!==r.occlusionTexture&&a!==Hu&&(s.push(t.assignTexture(o,"aoMap",r.occlusionTexture)),void 0!==r.occlusionTexture.strength&&(o.aoMapIntensity=r.occlusionTexture.strength)),void 0!==r.emissiveFactor&&a!==Hu){const e=r.emissiveFactor;o.emissive=(new Uu).setRGB(e[0],e[1],e[2],Ps)}return void 0!==r.emissiveTexture&&a!==Hu&&s.push(t.assignTexture(o,"emissiveMap",r.emissiveTexture,Os)),Promise.all(s).then((function(){const n=new a(o);return r.name&&(n.name=r.name),Zb(n,r),t.associations.set(n,{materials:e}),r.extensions&&Yb(i,n,r),n}))}createUniqueName(e){const t=fy.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){const t=this,n=this.extensions,i=this.primitiveCache;function r(e){return n[Ab.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then((function(n){return nw(n,e,t)}))}const a=[];for(let n=0,o=e.length;n<o;n++){const o=e[n],s=Kb(o),l=i[s];if(l)a.push(l.promise);else{let e;e=o.extensions&&o.extensions[Ab.KHR_DRACO_MESH_COMPRESSION]?r(o):nw(new fh,o,t),i[s]={primitive:o,promise:e},a.push(e)}}return Promise.all(a)}loadMesh(e){const t=this,n=this.json,i=this.extensions,r=n.meshes[e],a=r.primitives,o=[];for(let e=0,t=a.length;e<t;e++){const t=void 0===a[e].material?(void 0===(s=this.cache).DefaultMaterial&&(s.DefaultMaterial=new Eg({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Jr})),s.DefaultMaterial):this.getDependency("material",a[e].material);o.push(t)}var s;return o.push(t.loadGeometries(a)),Promise.all(o).then((function(n){const o=n.slice(0,n.length-1),s=n[n.length-1],l=[];for(let n=0,c=s.length;n<c;n++){const c=s[n],u=a[n];let h;const d=o[n];if(u.mode===Fb.TRIANGLES||u.mode===Fb.TRIANGLE_STRIP||u.mode===Fb.TRIANGLE_FAN||void 0===u.mode)h=!0===r.isSkinnedMesh?new mA(c,d):new Lh(c,d),!0===h.isSkinnedMesh&&h.normalizeSkinWeights(),u.mode===Fb.TRIANGLE_STRIP?h.geometry=db(h.geometry,Es):u.mode===Fb.TRIANGLE_FAN&&(h.geometry=db(h.geometry,_s));else if(u.mode===Fb.LINES)h=new FA(c,d);else if(u.mode===Fb.LINE_STRIP)h=new kA(c,d);else if(u.mode===Fb.LINE_LOOP)h=new jA(c,d);else{if(u.mode!==Fb.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+u.mode);h=new XA(c,d)}Object.keys(h.geometry.morphAttributes).length>0&&qb(h,r),h.name=t.createUniqueName(r.name||"mesh_"+e),Zb(h,r),u.extensions&&Yb(i,h,u),t.assignFinalMaterial(h),l.push(h)}for(let n=0,i=l.length;n<i;n++)t.associations.set(l[n],{meshes:e,primitives:n});if(1===l.length)return r.extensions&&Yb(i,l[0],r),l[0];const c=new Tf;r.extensions&&Yb(i,c,r),t.associations.set(c,{meshes:e});for(let e=0,t=l.length;e<t;e++)c.add(l[e]);return c}))}loadCamera(e){let t;const n=this.json.cameras[e],i=n[n.type];if(i)return"perspective"===n.type?t=new jh(Fl.radToDeg(i.yfov),i.aspectRatio||1,i.znear||1,i.zfar||2e6):"orthographic"===n.type&&(t=new dd(-i.xmag,i.xmag,i.ymag,-i.ymag,i.znear,i.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),Zb(t,n),Promise.resolve(t);console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){const t=this.json.skins[e],n=[];for(let e=0,i=t.joints.length;e<i;e++)n.push(this._loadNodeShallow(t.joints[e]));return void 0!==t.inverseBindMatrices?n.push(this.getDependency("accessor",t.inverseBindMatrices)):n.push(null),Promise.all(n).then((function(e){const n=e.pop(),i=e,r=[],a=[];for(let e=0,o=i.length;e<o;e++){const o=i[e];if(o){r.push(o);const t=new qc;null!==n&&t.fromArray(n.array,16*e),a.push(t)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[e])}return new wA(r,a)}))}loadAnimation(e){const t=this.json,n=this,i=t.animations[e],r=i.name?i.name:"animation_"+e,a=[],o=[],s=[],l=[],c=[];for(let e=0,t=i.channels.length;e<t;e++){const t=i.channels[e],n=i.samplers[t.sampler],r=t.target,u=r.node,h=void 0!==i.parameters?i.parameters[n.input]:n.input,d=void 0!==i.parameters?i.parameters[n.output]:n.output;void 0!==r.node&&(a.push(this.getDependency("node",u)),o.push(this.getDependency("accessor",h)),s.push(this.getDependency("accessor",d)),l.push(n),c.push(r))}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(s),Promise.all(l),Promise.all(c)]).then((function(e){const t=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=[];for(let e=0,r=t.length;e<r;e++){const r=t[e],c=i[e],u=a[e],h=o[e],d=s[e];if(void 0===r)continue;r.updateMatrix&&r.updateMatrix();const p=n._createAnimationTracks(r,c,u,h,d);if(p)for(let e=0;e<p.length;e++)l.push(p[e])}return new Kg(r,void 0,l)}))}createNodeMesh(e){const t=this.json,n=this,i=t.nodes[e];return void 0===i.mesh?null:n.getDependency("mesh",i.mesh).then((function(e){const t=n._getNodeRef(n.meshCache,i.mesh,e);return void 0!==i.weights&&t.traverse((function(e){if(e.isMesh)for(let t=0,n=i.weights.length;t<n;t++)e.morphTargetInfluences[t]=i.weights[t]})),t}))}loadNode(e){const t=this,n=this.json.nodes[e],i=t._loadNodeShallow(e),r=[],a=n.children||[];for(let e=0,n=a.length;e<n;e++)r.push(t.getDependency("node",a[e]));const o=void 0===n.skin?Promise.resolve(null):t.getDependency("skin",n.skin);return Promise.all([i,Promise.all(r),o]).then((function(e){const t=e[0],n=e[1],i=e[2];null!==i&&t.traverse((function(e){e.isSkinnedMesh&&e.bind(i,ew)}));for(let e=0,i=n.length;e<i;e++)t.add(n[e]);return t}))}_loadNodeShallow(e){const t=this.json,n=this.extensions,i=this;if(void 0!==this.nodeCache[e])return this.nodeCache[e];const r=t.nodes[e],a=r.name?i.createUniqueName(r.name):"",o=[],s=i._invokeOne((function(t){return t.createNodeMesh&&t.createNodeMesh(e)}));return s&&o.push(s),void 0!==r.camera&&o.push(i.getDependency("camera",r.camera).then((function(e){return i._getNodeRef(i.cameraCache,r.camera,e)}))),i._invokeAll((function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)})).forEach((function(e){o.push(e)})),this.nodeCache[e]=Promise.all(o).then((function(t){let o;if(o=!0===r.isBone?new gA:t.length>1?new Tf:1===t.length?t[0]:new wu,o!==t[0])for(let e=0,n=t.length;e<n;e++)o.add(t[e]);if(r.name&&(o.userData.name=r.name,o.name=a),Zb(o,r),r.extensions&&Yb(n,o,r),void 0!==r.matrix){const e=new qc;e.fromArray(r.matrix),o.applyMatrix4(e)}else void 0!==r.translation&&o.position.fromArray(r.translation),void 0!==r.rotation&&o.quaternion.fromArray(r.rotation),void 0!==r.scale&&o.scale.fromArray(r.scale);return i.associations.has(o)||i.associations.set(o,{}),i.associations.get(o).nodes=e,o})),this.nodeCache[e]}loadScene(e){const t=this.extensions,n=this.json.scenes[e],i=this,r=new Tf;n.name&&(r.name=i.createUniqueName(n.name)),Zb(r,n),n.extensions&&Yb(t,r,n);const a=n.nodes||[],o=[];for(let e=0,t=a.length;e<t;e++)o.push(i.getDependency("node",a[e]));return Promise.all(o).then((function(e){for(let t=0,n=e.length;t<n;t++)r.add(e[t]);return i.associations=(e=>{const t=new Map;for(const[e,n]of i.associations)(e instanceof ju||e instanceof uc)&&t.set(e,n);return e.traverse((e=>{const n=i.associations.get(e);null!=n&&t.set(e,n)})),t})(r),r}))}_createAnimationTracks(e,t,n,i,r){const a=[],o=e.name?e.name:e.uuid,s=[];let l;switch(Qb[r.path]===Qb.weights?e.traverse((function(e){e.morphTargetInfluences&&s.push(e.name?e.name:e.uuid)})):s.push(o),Qb[r.path]){case Qb.weights:l=Qg;break;case Qb.rotation:l=Yg;break;case Qb.position:case Qb.scale:l=qg;break;default:l=1===n.itemSize?Qg:qg}const c=void 0!==i.interpolation?Xb[i.interpolation]:gs,u=this._getArrayFromAccessor(n);for(let e=0,n=s.length;e<n;e++){const n=new l(s[e]+"."+Qb[r.path],t.array,u,c);"CUBICSPLINE"===i.interpolation&&this._createCubicSplineTrackInterpolant(n),a.push(n)}return a}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){const e=$b(t.constructor),n=new Float32Array(t.length);for(let i=0,r=t.length;i<r;i++)n[i]=t[i]*e;t=n}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof Yg?Bb:kb)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function nw(e,t,n){const i=t.attributes,r=[];function a(t,i){return n.getDependency("accessor",t).then((function(t){e.setAttribute(i,t)}))}for(const t in i){const n=Gb[t]||t.toLowerCase();n in e.attributes||r.push(a(i[t],n))}if(void 0!==t.indices&&!e.index){const i=n.getDependency("accessor",t.indices).then((function(t){e.setIndex(t)}));r.push(i)}return tc.workingColorSpace!==Ps&&"COLOR_0"in i&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${tc.workingColorSpace}" not supported.`),Zb(e,t),function(e,t,n){const i=t.attributes,r=new Mc;if(void 0===i.POSITION)return;{const e=n.json.accessors[i.POSITION],t=e.min,a=e.max;if(void 0===t||void 0===a)return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(r.set(new bc(t[0],t[1],t[2]),new bc(a[0],a[1],a[2])),e.normalized){const t=$b(jb[e.componentType]);r.min.multiplyScalar(t),r.max.multiplyScalar(t)}}const a=t.targets;if(void 0!==a){const e=new bc,t=new bc;for(let i=0,r=a.length;i<r;i++){const r=a[i];if(void 0!==r.POSITION){const i=n.json.accessors[r.POSITION],a=i.min,o=i.max;if(void 0!==a&&void 0!==o){if(t.setX(Math.max(Math.abs(a[0]),Math.abs(o[0]))),t.setY(Math.max(Math.abs(a[1]),Math.abs(o[1]))),t.setZ(Math.max(Math.abs(a[2]),Math.abs(o[2]))),i.normalized){const e=$b(jb[i.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}r.expandByVector(e)}e.boundingBox=r;const o=new jc;r.getCenter(o.center),o.radius=r.min.distanceTo(r.max)/2,e.boundingSphere=o}(e,t,n),Promise.all(r).then((function(){return void 0!==t.targets?function(e,t,n){let i=!1,r=!1,a=!1;for(let e=0,n=t.length;e<n;e++){const n=t[e];if(void 0!==n.POSITION&&(i=!0),void 0!==n.NORMAL&&(r=!0),void 0!==n.COLOR_0&&(a=!0),i&&r&&a)break}if(!i&&!r&&!a)return Promise.resolve(e);const o=[],s=[],l=[];for(let c=0,u=t.length;c<u;c++){const u=t[c];if(i){const t=void 0!==u.POSITION?n.getDependency("accessor",u.POSITION):e.attributes.position;o.push(t)}if(r){const t=void 0!==u.NORMAL?n.getDependency("accessor",u.NORMAL):e.attributes.normal;s.push(t)}if(a){const t=void 0!==u.COLOR_0?n.getDependency("accessor",u.COLOR_0):e.attributes.color;l.push(t)}}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(l)]).then((function(t){const n=t[0],o=t[1],s=t[2];return i&&(e.morphAttributes.position=n),r&&(e.morphAttributes.normal=o),a&&(e.morphAttributes.color=s),e.morphTargetsRelative=!0,e}))}(e,t.targets,n):e}))}const iw={Handedness:Object.freeze({NONE:"none",LEFT:"left",RIGHT:"right"}),ComponentState:Object.freeze({DEFAULT:"default",TOUCHED:"touched",PRESSED:"pressed"}),ComponentProperty:Object.freeze({BUTTON:"button",X_AXIS:"xAxis",Y_AXIS:"yAxis",STATE:"state"}),ComponentType:Object.freeze({TRIGGER:"trigger",SQUEEZE:"squeeze",TOUCHPAD:"touchpad",THUMBSTICK:"thumbstick",BUTTON:"button"}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:"transform",VISIBILITY:"visibility"})};async function rw(e){const t=await fetch(e);if(t.ok)return t.json();throw new Error(t.statusText)}const aw={xAxis:0,yAxis:0,button:0,state:iw.ComponentState.DEFAULT};class ow{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===iw.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(aw)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:i}){const{normalizedXAxis:r,normalizedYAxis:a}=function(e=0,t=0){let n=e,i=t;if(Math.sqrt(e*e+t*t)>1){const r=Math.atan2(t,e);n=Math.cos(r),i=Math.sin(r)}return{normalizedXAxis:.5*n+.5,normalizedYAxis:.5*i+.5}}(e,t);switch(this.componentProperty){case iw.ComponentProperty.X_AXIS:this.value=this.states.includes(i)?r:.5;break;case iw.ComponentProperty.Y_AXIS:this.value=this.states.includes(i)?a:.5;break;case iw.ComponentProperty.BUTTON:this.value=this.states.includes(i)?n:0;break;case iw.ComponentProperty.STATE:this.valueNodeProperty===iw.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(i):this.value=this.states.includes(i)?1:0;break;default:throw new Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}}class sw{constructor(e,t){if(!(e&&t&&t.visualResponses&&t.gamepadIndices&&0!==Object.keys(t.gamepadIndices).length))throw new Error("Invalid arguments supplied");this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach((e=>{const n=new ow(t.visualResponses[e]);this.visualResponses[e]=n})),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:iw.ComponentState.DEFAULT,button:void 0!==this.gamepadIndices.button?0:void 0,xAxis:void 0!==this.gamepadIndices.xAxis?0:void 0,yAxis:void 0!==this.gamepadIndices.yAxis?0:void 0}}get data(){return{id:this.id,...this.values}}updateFromGamepad(e){if(this.values.state=iw.ComponentState.DEFAULT,void 0!==this.gamepadIndices.button&&e.buttons.length>this.gamepadIndices.button){const t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||1===this.values.button?this.values.state=iw.ComponentState.PRESSED:(t.touched||this.values.button>iw.ButtonTouchThreshold)&&(this.values.state=iw.ComponentState.TOUCHED)}void 0!==this.gamepadIndices.xAxis&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===iw.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>iw.AxisTouchThreshold&&(this.values.state=iw.ComponentState.TOUCHED)),void 0!==this.gamepadIndices.yAxis&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===iw.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>iw.AxisTouchThreshold&&(this.values.state=iw.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach((e=>{e.updateFromComponent(this.values)}))}}class lw{constructor(e,t,n){if(!e)throw new Error("No xrInputSource supplied");if(!t)throw new Error("No profile supplied");this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach((e=>{const t=this.layoutDescription.components[e];this.components[e]=new sw(e,t)})),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){const e=[];return Object.values(this.components).forEach((t=>{e.push(t.data)})),e}updateFromGamepad(){Object.values(this.components).forEach((e=>{e.updateFromGamepad(this.xrInputSource.gamepad)}))}}class cw extends wu{constructor(){super(),this.motionController=null,this.envMap=null}setEnvironmentMap(e){return this.envMap==e||(this.envMap=e,this.traverse((e=>{e.isMesh&&(e.material.envMap=this.envMap,e.material.needsUpdate=!0)}))),this}updateMatrixWorld(e){super.updateMatrixWorld(e),this.motionController&&(this.motionController.updateFromGamepad(),Object.values(this.motionController.components).forEach((e=>{Object.values(e.visualResponses).forEach((e=>{const{valueNode:t,minNode:n,maxNode:i,value:r,valueNodeProperty:a}=e;t&&(a===iw.VisualResponseProperty.VISIBILITY?t.visible=r:a===iw.VisualResponseProperty.TRANSFORM&&(t.quaternion.slerpQuaternions(n.quaternion,i.quaternion,r),t.position.lerpVectors(n.position,i.position,r)))}))})))}}function uw(e,t){!function(e,t){Object.values(e.components).forEach((e=>{const{type:n,touchPointNodeName:i,visualResponses:r}=e;if(n===iw.ComponentType.TOUCHPAD)if(e.touchPointNode=t.getObjectByName(i),e.touchPointNode){const t=new Ag(.001),n=new Hu({color:255}),i=new Lh(t,n);e.touchPointNode.add(i)}else console.warn(`Could not find touch dot, ${e.touchPointNodeName}, in touchpad component ${e.id}`);Object.values(r).forEach((e=>{const{valueNodeName:n,minNodeName:i,maxNodeName:r,valueNodeProperty:a}=e;if(a===iw.VisualResponseProperty.TRANSFORM){if(e.minNode=t.getObjectByName(i),e.maxNode=t.getObjectByName(r),!e.minNode)return void console.warn(`Could not find ${i} in the model`);if(!e.maxNode)return void console.warn(`Could not find ${r} in the model`)}e.valueNode=t.getObjectByName(n),e.valueNode||console.warn(`Could not find ${n} in the model`)}))}))}(e.motionController,t),e.envMap&&t.traverse((t=>{t.isMesh&&(t.material.envMap=e.envMap,t.material.needsUpdate=!0)})),e.add(t)}class hw{constructor(e=null){this.gltfLoader=e,this.path="https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles",this._assetCache={},this.gltfLoader||(this.gltfLoader=new pb)}createControllerModel(e){const t=new cw;let n=null;return e.addEventListener("connected",(e=>{const i=e.data;"tracked-pointer"===i.targetRayMode&&i.gamepad&&async function(e,t,n=null,i=!0){if(!e)throw new Error("No xrInputSource supplied");if(!t)throw new Error("No basePath supplied");const r=await async function(e){if(!e)throw new Error("No basePath supplied");return await rw(`${e}/profilesList.json`)}(t);let a;if(e.profiles.some((e=>{const n=r[e];return n&&(a={profileId:e,profilePath:`${t}/${n.path}`,deprecated:!!n.deprecated}),!!a})),!a){if(!n)throw new Error("No matching profile name found");const e=r[n];if(!e)throw new Error(`No matching profile name found and default profile "${n}" missing.`);a={profileId:n,profilePath:`${t}/${e.path}`,deprecated:!!e.deprecated}}const o=await rw(a.profilePath);let s;if(i){let t;if(t="any"===e.handedness?o.layouts[Object.keys(o.layouts)[0]]:o.layouts[e.handedness],!t)throw new Error(`No matching handedness, ${e.handedness}, in profile ${a.profileId}`);t.assetPath&&(s=a.profilePath.replace("profile.json",t.assetPath))}return{profile:o,assetPath:s}}(i,this.path,"generic-trigger").then((({profile:e,assetPath:r})=>{t.motionController=new lw(i,e,r);const a=this._assetCache[t.motionController.assetUrl];if(a)n=a.scene.clone(),uw(t,n);else{if(!this.gltfLoader)throw new Error("GLTFLoader not set.");this.gltfLoader.setPath(""),this.gltfLoader.load(t.motionController.assetUrl,(e=>{this._assetCache[t.motionController.assetUrl]=e,n=e.scene.clone(),uw(t,n)}),null,(()=>{throw new Error(`Asset ${t.motionController.assetUrl} missing or malformed.`)}))}})).catch((e=>{console.warn(e)}))})),e.addEventListener("disconnected",(()=>{t.motionController=null,t.remove(n),n=null})),t}}const dw=new qc,pw=new bc;class fw{constructor(e,t,n,i,r){let a;this.controller=t,this.handModel=e,this.envMap=null,r&&r.primitive&&"sphere"!==r.primitive?"box"===r.primitive&&(a=new Oh(1,1,1)):a=new Ag(1,10,10);const o=new Eg;this.handMesh=new DA(a,o,30),this.handMesh.frustumCulled=!1,this.handMesh.instanceMatrix.setUsage(pl),this.handMesh.castShadow=!0,this.handMesh.receiveShadow=!0,this.handModel.add(this.handMesh),this.joints=["wrist","thumb-metacarpal","thumb-phalanx-proximal","thumb-phalanx-distal","thumb-tip","index-finger-metacarpal","index-finger-phalanx-proximal","index-finger-phalanx-intermediate","index-finger-phalanx-distal","index-finger-tip","middle-finger-metacarpal","middle-finger-phalanx-proximal","middle-finger-phalanx-intermediate","middle-finger-phalanx-distal","middle-finger-tip","ring-finger-metacarpal","ring-finger-phalanx-proximal","ring-finger-phalanx-intermediate","ring-finger-phalanx-distal","ring-finger-tip","pinky-finger-metacarpal","pinky-finger-phalanx-proximal","pinky-finger-phalanx-intermediate","pinky-finger-phalanx-distal","pinky-finger-tip"]}updateMesh(){const e=this.controller.joints;let t=0;for(let n=0;n<this.joints.length;n++){const i=e[this.joints[n]];i.visible&&(pw.setScalar(i.jointRadius||.008),dw.compose(i.position,i.quaternion,pw),this.handMesh.setMatrixAt(n,dw),t++)}this.handMesh.count=t,this.handMesh.instanceMatrix.needsUpdate=!0}}class Aw{constructor(e,t,n,i,r=null){this.controller=t,this.handModel=e,this.bones=[],null===r&&(r=new pb).setPath(n||"https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles/generic-hand/"),r.load(`${i}.glb`,(e=>{const t=e.scene.children[0];this.handModel.add(t);const n=t.getObjectByProperty("type","SkinnedMesh");n.frustumCulled=!1,n.castShadow=!0,n.receiveShadow=!0,["wrist","thumb-metacarpal","thumb-phalanx-proximal","thumb-phalanx-distal","thumb-tip","index-finger-metacarpal","index-finger-phalanx-proximal","index-finger-phalanx-intermediate","index-finger-phalanx-distal","index-finger-tip","middle-finger-metacarpal","middle-finger-phalanx-proximal","middle-finger-phalanx-intermediate","middle-finger-phalanx-distal","middle-finger-tip","ring-finger-metacarpal","ring-finger-phalanx-proximal","ring-finger-phalanx-intermediate","ring-finger-phalanx-distal","ring-finger-tip","pinky-finger-metacarpal","pinky-finger-phalanx-proximal","pinky-finger-phalanx-intermediate","pinky-finger-phalanx-distal","pinky-finger-tip"].forEach((e=>{const n=t.getObjectByName(e);void 0!==n?n.jointName=e:console.warn(`Couldn't find ${e} in ${i} hand mesh`),this.bones.push(n)}))}))}updateMesh(){const e=this.controller.joints;for(let t=0;t<this.bones.length;t++){const n=this.bones[t];if(n){const t=e[n.jointName];if(t.visible){const e=t.position;n.position.copy(e),n.quaternion.copy(t.quaternion)}}}}}class mw extends wu{constructor(e){super(),this.controller=e,this.motionController=null,this.envMap=null,this.mesh=null}updateMatrixWorld(e){super.updateMatrixWorld(e),this.motionController&&this.motionController.updateMesh()}}class gw{constructor(){this.path=null}setPath(e){return this.path=e,this}createHandModel(e,t){const n=new mw(e);return e.addEventListener("connected",(i=>{const r=i.data;r.hand&&!n.motionController&&(n.xrInputSource=r,void 0===t||"spheres"===t?n.motionController=new fw(n,e,this.path,r.handedness,{primitive:"sphere"}):"boxes"===t?n.motionController=new fw(n,e,this.path,r.handedness,{primitive:"box"}):"mesh"===t&&(n.motionController=new Aw(n,e,this.path,r.handedness))),e.visible=!0})),e.addEventListener("disconnected",(()=>{e.visible=!1})),n}}var vw=function(e){return URL.createObjectURL(new Blob([e],{type:"text/javascript"}))};try{URL.revokeObjectURL(vw(""))}catch(e){vw=function(e){return"data:application/javascript;charset=UTF-8,"+encodeURI(e)}}var yw=Uint8Array,bw=Uint16Array,ww=Uint32Array,xw=new yw([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Mw=new yw([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Sw=new yw([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ew=function(e,t){for(var n=new bw(31),i=0;i<31;++i)n[i]=t+=1<<e[i-1];var r=new ww(n[30]);for(i=1;i<30;++i)for(var a=n[i];a<n[i+1];++a)r[a]=a-n[i]<<5|i;return[n,r]},_w=Ew(xw,2),Tw=_w[0],Cw=_w[1];Tw[28]=258,Cw[258]=28;for(var Iw=Ew(Mw,0),Dw=Iw[0],Nw=(Iw[1],new bw(32768)),Lw=0;Lw<32768;++Lw){var Rw=(43690&Lw)>>>1|(21845&Lw)<<1;Rw=(61680&(Rw=(52428&Rw)>>>2|(13107&Rw)<<2))>>>4|(3855&Rw)<<4,Nw[Lw]=((65280&Rw)>>>8|(255&Rw)<<8)>>>1}var Ow=function(e,t,n){for(var i=e.length,r=0,a=new bw(t);r<i;++r)++a[e[r]-1];var o,s=new bw(t);for(r=0;r<t;++r)s[r]=s[r-1]+a[r-1]<<1;if(n){o=new bw(1<<t);var l=15-t;for(r=0;r<i;++r)if(e[r])for(var c=r<<4|e[r],u=t-e[r],h=s[e[r]-1]++<<u,d=h|(1<<u)-1;h<=d;++h)o[Nw[h]>>>l]=c}else for(o=new bw(i),r=0;r<i;++r)e[r]&&(o[r]=Nw[s[e[r]-1]++]>>>15-e[r]);return o},Pw=new yw(288);for(Lw=0;Lw<144;++Lw)Pw[Lw]=8;for(Lw=144;Lw<256;++Lw)Pw[Lw]=9;for(Lw=256;Lw<280;++Lw)Pw[Lw]=7;for(Lw=280;Lw<288;++Lw)Pw[Lw]=8;var zw=new yw(32);for(Lw=0;Lw<32;++Lw)zw[Lw]=5;var kw=Ow(Pw,9,1),Uw=Ow(zw,5,1),Bw=function(e){for(var t=e[0],n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},Fw=function(e,t,n){var i=t/8|0;return(e[i]|e[i+1]<<8)>>(7&t)&n},jw=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(7&t)},Hw=function(e,t,n){var i=e.length;if(!i||n&&!n.l&&i<5)return t||new yw(0);var r=!t||n,a=!n||n.i;n||(n={}),t||(t=new yw(3*i));var o,s=function(e){var n=t.length;if(e>n){var i=new yw(Math.max(2*n,e));i.set(t),t=i}},l=n.f||0,c=n.p||0,u=n.b||0,h=n.l,d=n.d,p=n.m,f=n.n,A=8*i;do{if(!h){n.f=l=Fw(e,c,1);var m=Fw(e,c+1,3);if(c+=3,!m){var g=e[(o=c,(C=(o/8|0)+(7&o&&1)+4)-4)]|e[C-3]<<8,v=C+g;if(v>i){if(a)throw"unexpected EOF";break}r&&s(u+g),t.set(e.subarray(C,v),u),n.b=u+=g,n.p=c=8*v;continue}if(1==m)h=kw,d=Uw,p=9,f=5;else{if(2!=m)throw"invalid block type";var y=Fw(e,c,31)+257,b=Fw(e,c+10,15)+4,w=y+Fw(e,c+5,31)+1;c+=14;for(var x=new yw(w),M=new yw(19),S=0;S<b;++S)M[Sw[S]]=Fw(e,c+3*S,7);c+=3*b;var E=Bw(M),_=(1<<E)-1,T=Ow(M,E,1);for(S=0;S<w;){var C,I=T[Fw(e,c,_)];if(c+=15&I,(C=I>>>4)<16)x[S++]=C;else{var D=0,N=0;for(16==C?(N=3+Fw(e,c,3),c+=2,D=x[S-1]):17==C?(N=3+Fw(e,c,7),c+=3):18==C&&(N=11+Fw(e,c,127),c+=7);N--;)x[S++]=D}}var L=x.subarray(0,y),R=x.subarray(y);p=Bw(L),f=Bw(R),h=Ow(L,p,1),d=Ow(R,f,1)}if(c>A){if(a)throw"unexpected EOF";break}}r&&s(u+131072);for(var O=(1<<p)-1,P=(1<<f)-1,z=c;;z=c){var k=(D=h[jw(e,c)&O])>>>4;if((c+=15&D)>A){if(a)throw"unexpected EOF";break}if(!D)throw"invalid length/literal";if(k<256)t[u++]=k;else{if(256==k){z=c,h=null;break}var U=k-254;if(k>264){var B=xw[S=k-257];U=Fw(e,c,(1<<B)-1)+Tw[S],c+=B}var F=d[jw(e,c)&P],j=F>>>4;if(!F)throw"invalid distance";if(c+=15&F,R=Dw[j],j>3&&(B=Mw[j],R+=jw(e,c)&(1<<B)-1,c+=B),c>A){if(a)throw"unexpected EOF";break}r&&s(u+131072);for(var H=u+U;u<H;u+=4)t[u]=t[u-R],t[u+1]=t[u+1-R],t[u+2]=t[u+2-R],t[u+3]=t[u+3-R];u=H}}n.l=h,n.p=z,n.b=u,h&&(l=1,n.m=p,n.d=d,n.n=f)}while(!l);return u==t.length?t:function(e,t,n){(null==t||t<0)&&(t=0),(null==n||n>e.length)&&(n=e.length);var i=new(e instanceof bw?bw:e instanceof ww?ww:yw)(n-t);return i.set(e.subarray(t,n)),i}(t,0,u)},Vw=new yw(0);function Ww(e,t){return Hw((function(e){if(8!=(15&e[0])||e[0]>>>4>7||(e[0]<<8|e[1])%31)throw"invalid zlib data";if(32&e[1])throw"invalid zlib data: preset dictionaries not supported"}(e),e.subarray(2,-4)),t)}var Gw="undefined"!=typeof TextDecoder&&new TextDecoder;try{Gw.decode(Vw,{stream:!0})}catch(e){}class Qw extends uv{constructor(e){super(e),this.type=bo}parse(e){const t=65536,n=14,i=65537,r=Math.pow(2.7182818,2.2),a={l:0,c:0,lc:0};function o(e,t,n,i,r){for(;n<e;)t=t<<8|k(i,r),n+=8;n-=e,a.l=t>>n&(1<<e)-1,a.c=t,a.lc=n}const s=new Array(59);function l(e){return 63&e}function c(e){return e>>6}const u={c:0,lc:0};function h(e,t,n,i){e=e<<8|k(n,i),t+=8,u.c=e,u.lc=t}const d={c:0,lc:0};function p(e,t,n,i,r,a,o,s,l){if(e==t){i<8&&(h(n,i,r,a),n=u.c,i=u.lc);let e=n>>(i-=8);if(e=new Uint8Array([e])[0],s.value+e>l)return!1;const t=o[s.value-1];for(;e-- >0;)o[s.value++]=t}else{if(!(s.value<l))return!1;o[s.value++]=e}d.c=n,d.lc=i}function f(e){return 65535&e}function A(e){const t=f(e);return t>32767?t-65536:t}const m={a:0,b:0};function g(e,t){const n=A(e),i=A(t),r=n+(1&i)+(i>>1),a=r,o=r-i;m.a=a,m.b=o}function v(e,t){const n=f(e),i=f(t),r=n-(i>>1)&65535,a=i+r-32768&65535;m.a=a,m.b=r}function y(e,t,n,i,r,a,o){const s=o<16384,l=n>r?r:n;let c,u,h=1;for(;h<=l;)h<<=1;for(h>>=1,c=h,h>>=1;h>=1;){u=0;const o=u+a*(r-c),l=a*h,d=a*c,p=i*h,f=i*c;let A,y,b,w;for(;u<=o;u+=d){let r=u;const a=u+i*(n-c);for(;r<=a;r+=f){const n=r+p,i=r+l,a=i+p;s?(g(e[r+t],e[i+t]),A=m.a,b=m.b,g(e[n+t],e[a+t]),y=m.a,w=m.b,g(A,y),e[r+t]=m.a,e[n+t]=m.b,g(b,w),e[i+t]=m.a,e[a+t]=m.b):(v(e[r+t],e[i+t]),A=m.a,b=m.b,v(e[n+t],e[a+t]),y=m.a,w=m.b,v(A,y),e[r+t]=m.a,e[n+t]=m.b,v(b,w),e[i+t]=m.a,e[a+t]=m.b)}if(n&h){const n=r+l;s?g(e[r+t],e[n+t]):v(e[r+t],e[n+t]),A=m.a,e[n+t]=m.b,e[r+t]=A}}if(r&h){let r=u;const a=u+i*(n-c);for(;r<=a;r+=f){const n=r+p;s?g(e[r+t],e[n+t]):v(e[r+t],e[n+t]),A=m.a,e[n+t]=m.b,e[r+t]=A}}c=h,h>>=1}return u}function b(e,t,r,f,A,m){const g=r.value,v=z(t,r),y=z(t,r);r.value+=4;const b=z(t,r);if(r.value+=4,v<0||v>=i||y<0||y>=i)throw new Error("Something wrong with HUF_ENCSIZE");const w=new Array(i),x=new Array(16384);if(function(e){for(let t=0;t<16384;t++)e[t]={},e[t].len=0,e[t].lit=0,e[t].p=null}(x),function(e,t,n,r,l,c){const u=t;let h=0,d=0;for(;r<=l;r++){if(u.value-t.value>n)return!1;o(6,h,d,e,u);const i=a.l;if(h=a.c,d=a.lc,c[r]=i,63==i){if(u.value-t.value>n)throw new Error("Something wrong with hufUnpackEncTable");o(8,h,d,e,u);let i=a.l+6;if(h=a.c,d=a.lc,r+i>l+1)throw new Error("Something wrong with hufUnpackEncTable");for(;i--;)c[r++]=0;r--}else if(i>=59){let e=i-59+2;if(r+e>l+1)throw new Error("Something wrong with hufUnpackEncTable");for(;e--;)c[r++]=0;r--}}!function(e){for(let e=0;e<=58;++e)s[e]=0;for(let t=0;t<i;++t)s[e[t]]+=1;let t=0;for(let e=58;e>0;--e){const n=t+s[e]>>1;s[e]=t,t=n}for(let t=0;t<i;++t){const n=e[t];n>0&&(e[t]=n|s[n]++<<6)}}(c)}(e,r,f-(r.value-g),v,y,w),b>8*(f-(r.value-g)))throw new Error("Something wrong with hufUncompress");!function(e,t,i,r){for(;t<=i;t++){const i=c(e[t]),a=l(e[t]);if(i>>a)throw new Error("Invalid table entry");if(a>n){const e=r[i>>a-n];if(e.len)throw new Error("Invalid table entry");if(e.lit++,e.p){const t=e.p;e.p=new Array(e.lit);for(let n=0;n<e.lit-1;++n)e.p[n]=t[n]}else e.p=new Array(1);e.p[e.lit-1]=t}else if(a){let e=0;for(let o=1<<n-a;o>0;o--){const o=r[(i<<n-a)+e];if(o.len||o.p)throw new Error("Invalid table entry");o.len=a,o.lit=t,e++}}}}(w,v,y,x),function(e,t,i,r,a,o,s,f,A){let m=0,g=0;const v=s,y=Math.trunc(r.value+(a+7)/8);for(;r.value<y;)for(h(m,g,i,r),m=u.c,g=u.lc;g>=n;){const a=t[m>>g-n&16383];if(a.len)g-=a.len,p(a.lit,o,m,g,i,r,f,A,v),m=d.c,g=d.lc;else{if(!a.p)throw new Error("hufDecode issues");let t;for(t=0;t<a.lit;t++){const n=l(e[a.p[t]]);for(;g<n&&r.value<y;)h(m,g,i,r),m=u.c,g=u.lc;if(g>=n&&c(e[a.p[t]])==(m>>g-n&(1<<n)-1)){g-=n,p(a.p[t],o,m,g,i,r,f,A,v),m=d.c,g=d.lc;break}}if(t==a.lit)throw new Error("hufDecode issues")}}const b=8-a&7;for(m>>=b,g-=b;g>0;){const e=t[m<<n-g&16383];if(!e.len)throw new Error("hufDecode issues");g-=e.len,p(e.lit,o,m,g,i,r,f,A,v),m=d.c,g=d.lc}}(w,x,e,r,b,y,m,A,{value:0})}function w(e){for(let t=1;t<e.length;t++){const n=e[t-1]+e[t]-128;e[t]=n}}function x(e,t){let n=0,i=Math.floor((e.length+1)/2),r=0;const a=e.length-1;for(;!(r>a||(t[r++]=e[n++],r>a));)t[r++]=e[i++]}function M(e){let t=e.byteLength;const n=new Array;let i=0;const r=new DataView(e);for(;t>0;){const e=r.getInt8(i++);if(e<0){const a=-e;t-=a+1;for(let e=0;e<a;e++)n.push(r.getUint8(i++))}else{const a=e;t-=2;const o=r.getUint8(i++);for(let e=0;e<a+1;e++)n.push(o)}}return n}function S(e,t,n){let i,r=1;for(;r<64;)i=t[e.value],65280==i?r=64:i>>8==255?r+=255&i:(n[r]=i,r++),e.value++}function E(e){const t=.5*Math.cos(.7853975),n=.5*Math.cos(3.14159/16),i=.5*Math.cos(3.14159/8),r=.5*Math.cos(3*3.14159/16),a=.5*Math.cos(.981746875),o=.5*Math.cos(3*3.14159/8),s=.5*Math.cos(1.374445625),l=new Array(4),c=new Array(4),u=new Array(4),h=new Array(4);for(let d=0;d<8;++d){const p=8*d;l[0]=i*e[p+2],l[1]=o*e[p+2],l[2]=i*e[p+6],l[3]=o*e[p+6],c[0]=n*e[p+1]+r*e[p+3]+a*e[p+5]+s*e[p+7],c[1]=r*e[p+1]-s*e[p+3]-n*e[p+5]-a*e[p+7],c[2]=a*e[p+1]-n*e[p+3]+s*e[p+5]+r*e[p+7],c[3]=s*e[p+1]-a*e[p+3]+r*e[p+5]-n*e[p+7],u[0]=t*(e[p+0]+e[p+4]),u[3]=t*(e[p+0]-e[p+4]),u[1]=l[0]+l[3],u[2]=l[1]-l[2],h[0]=u[0]+u[1],h[1]=u[3]+u[2],h[2]=u[3]-u[2],h[3]=u[0]-u[1],e[p+0]=h[0]+c[0],e[p+1]=h[1]+c[1],e[p+2]=h[2]+c[2],e[p+3]=h[3]+c[3],e[p+4]=h[3]-c[3],e[p+5]=h[2]-c[2],e[p+6]=h[1]-c[1],e[p+7]=h[0]-c[0]}for(let d=0;d<8;++d)l[0]=i*e[16+d],l[1]=o*e[16+d],l[2]=i*e[48+d],l[3]=o*e[48+d],c[0]=n*e[8+d]+r*e[24+d]+a*e[40+d]+s*e[56+d],c[1]=r*e[8+d]-s*e[24+d]-n*e[40+d]-a*e[56+d],c[2]=a*e[8+d]-n*e[24+d]+s*e[40+d]+r*e[56+d],c[3]=s*e[8+d]-a*e[24+d]+r*e[40+d]-n*e[56+d],u[0]=t*(e[d]+e[32+d]),u[3]=t*(e[d]-e[32+d]),u[1]=l[0]+l[3],u[2]=l[1]-l[2],h[0]=u[0]+u[1],h[1]=u[3]+u[2],h[2]=u[3]-u[2],h[3]=u[0]-u[1],e[0+d]=h[0]+c[0],e[8+d]=h[1]+c[1],e[16+d]=h[2]+c[2],e[24+d]=h[3]+c[3],e[32+d]=h[3]-c[3],e[40+d]=h[2]-c[2],e[48+d]=h[1]-c[1],e[56+d]=h[0]-c[0]}function _(e){for(let t=0;t<64;++t){const n=e[0][t],i=e[1][t],r=e[2][t];e[0][t]=n+1.5747*r,e[1][t]=n-.1873*i-.4682*r,e[2][t]=n+1.8556*i}}function T(e,t,n){for(let a=0;a<64;++a)t[n+a]=Xu.toHalfFloat((i=e[a])<=1?Math.sign(i)*Math.pow(Math.abs(i),2.2):Math.sign(i)*Math.pow(r,Math.abs(i)-1));var i}function C(e){return new DataView(e.array.buffer,e.offset.value,e.size)}function I(e){const t=e.viewer.buffer.slice(e.offset.value,e.offset.value+e.size),n=new Uint8Array(M(t)),i=new Uint8Array(n.length);return w(n),x(n,i),new DataView(i.buffer)}function D(e){const t=Ww(e.array.slice(e.offset.value,e.offset.value+e.size)),n=new Uint8Array(t.length);return w(t),x(t,n),new DataView(n.buffer)}function N(e){const n=e.viewer,i={value:e.offset.value},r=new Uint16Array(e.width*e.scanlineBlockSize*(e.channels*e.type)),a=new Uint8Array(8192);let o=0;const s=new Array(e.channels);for(let t=0;t<e.channels;t++)s[t]={},s[t].start=o,s[t].end=s[t].start,s[t].nx=e.width,s[t].ny=e.lines,s[t].size=e.type,o+=s[t].nx*s[t].ny*s[t].size;const l=V(n,i),c=V(n,i);if(c>=8192)throw new Error("Something is wrong with PIZ_COMPRESSION BITMAP_SIZE");if(l<=c)for(let e=0;e<c-l+1;e++)a[e+l]=U(n,i);const u=new Uint16Array(t),h=function(e,n){let i=0;for(let r=0;r<t;++r)(0==r||e[r>>3]&1<<(7&r))&&(n[i++]=r);const r=i-1;for(;i<t;)n[i++]=0;return r}(a,u),d=z(n,i);b(e.array,n,i,d,r,o);for(let t=0;t<e.channels;++t){const e=s[t];for(let n=0;n<s[t].size;++n)y(r,e.start+n,e.nx,e.size,e.ny,e.nx*e.size,h)}!function(e,t,n){for(let i=0;i<n;++i)t[i]=e[t[i]]}(u,r,o);let p=0;const f=new Uint8Array(r.buffer.byteLength);for(let t=0;t<e.lines;t++)for(let t=0;t<e.channels;t++){const e=s[t],n=e.nx*e.size,i=new Uint8Array(r.buffer,2*e.end,2*n);f.set(i,p),p+=2*n,e.end+=n}return new DataView(f.buffer)}function L(e){const t=Ww(e.array.slice(e.offset.value,e.offset.value+e.size)),n=e.lines*e.channels*e.width,i=1==e.type?new Uint16Array(n):new Uint32Array(n);let r=0,a=0;const o=new Array(4);for(let n=0;n<e.lines;n++)for(let n=0;n<e.channels;n++){let n=0;switch(e.type){case 1:o[0]=r,o[1]=o[0]+e.width,r=o[1]+e.width;for(let r=0;r<e.width;++r)n+=t[o[0]++]<<8|t[o[1]++],i[a]=n,a++;break;case 2:o[0]=r,o[1]=o[0]+e.width,o[2]=o[1]+e.width,r=o[2]+e.width;for(let r=0;r<e.width;++r)n+=t[o[0]++]<<24|t[o[1]++]<<16|t[o[2]++]<<8,i[a]=n,a++}}return new DataView(i.buffer)}function R(e){const t=e.viewer,n={value:e.offset.value},i=new Uint8Array(e.width*e.lines*(e.channels*e.type*2)),r={version:B(t,n),unknownUncompressedSize:B(t,n),unknownCompressedSize:B(t,n),acCompressedSize:B(t,n),dcCompressedSize:B(t,n),rleCompressedSize:B(t,n),rleUncompressedSize:B(t,n),rleRawSize:B(t,n),totalAcUncompressedCount:B(t,n),totalDcUncompressedCount:B(t,n),acCompression:B(t,n)};if(r.version<2)throw new Error("EXRLoader.parse: "+Z.compression+" version "+r.version+" is unsupported");const a=new Array;let o=V(t,n)-2;for(;o>0;){const e=O(t.buffer,n),i=U(t,n),r=i>>2&3,s=new Int8Array([(i>>4)-1])[0],l=U(t,n);a.push({name:e,index:s,type:l,compression:r}),o-=e.length+3}const s=Z.channels,l=new Array(e.channels);for(let t=0;t<e.channels;++t){const n=l[t]={},i=s[t];n.name=i.name,n.compression=0,n.decoded=!1,n.type=i.pixelType,n.pLinear=i.pLinear,n.width=e.width,n.height=e.lines}const c={idx:new Array(3)};for(let t=0;t<e.channels;++t){const e=l[t];for(let n=0;n<a.length;++n){const i=a[n];e.name==i.name&&(e.compression=i.compression,i.index>=0&&(c.idx[i.index]=t),e.offset=t)}}let u,h,d;if(r.acCompressedSize>0)switch(r.acCompression){case 0:u=new Uint16Array(r.totalAcUncompressedCount),b(e.array,t,n,r.acCompressedSize,u,r.totalAcUncompressedCount);break;case 1:const i=Ww(e.array.slice(n.value,n.value+r.totalAcUncompressedCount));u=new Uint16Array(i.buffer),n.value+=r.totalAcUncompressedCount}if(r.dcCompressedSize>0){const t={array:e.array,offset:n,size:r.dcCompressedSize};h=new Uint16Array(D(t).buffer),n.value+=r.dcCompressedSize}r.rleRawSize>0&&(d=M(Ww(e.array.slice(n.value,n.value+r.rleCompressedSize)).buffer),n.value+=r.rleCompressedSize);let p=0;const f=new Array(l.length);for(let e=0;e<f.length;++e)f[e]=new Array;for(let t=0;t<e.lines;++t)for(let t=0;t<l.length;++t)f[t].push(p),p+=l[t].width*e.type*2;!function(e,t,n,i,r,a){let o=new DataView(a.buffer);const s=n[e.idx[0]].width,l=n[e.idx[0]].height,c=Math.floor(s/8),u=Math.ceil(s/8),h=Math.ceil(l/8),d=s-8*(u-1),p=l-8*(h-1),f={value:0},A=new Array(3),m=new Array(3),g=new Array(3),v=new Array(3),y=new Array(3);for(let n=0;n<3;++n)y[n]=t[e.idx[n]],A[n]=n<1?0:A[n-1]+u*h,m[n]=new Float32Array(64),g[n]=new Uint16Array(64),v[n]=new Uint16Array(64*u);for(let t=0;t<h;++t){let a=8;t==h-1&&(a=p);let s=8;for(let e=0;e<u;++e){e==u-1&&(s=d);for(let e=0;e<3;++e)g[e].fill(0),g[e][0]=r[A[e]++],S(f,i,g[e]),b=g[e],(w=m[e])[0]=H(b[0]),w[1]=H(b[1]),w[2]=H(b[5]),w[3]=H(b[6]),w[4]=H(b[14]),w[5]=H(b[15]),w[6]=H(b[27]),w[7]=H(b[28]),w[8]=H(b[2]),w[9]=H(b[4]),w[10]=H(b[7]),w[11]=H(b[13]),w[12]=H(b[16]),w[13]=H(b[26]),w[14]=H(b[29]),w[15]=H(b[42]),w[16]=H(b[3]),w[17]=H(b[8]),w[18]=H(b[12]),w[19]=H(b[17]),w[20]=H(b[25]),w[21]=H(b[30]),w[22]=H(b[41]),w[23]=H(b[43]),w[24]=H(b[9]),w[25]=H(b[11]),w[26]=H(b[18]),w[27]=H(b[24]),w[28]=H(b[31]),w[29]=H(b[40]),w[30]=H(b[44]),w[31]=H(b[53]),w[32]=H(b[10]),w[33]=H(b[19]),w[34]=H(b[23]),w[35]=H(b[32]),w[36]=H(b[39]),w[37]=H(b[45]),w[38]=H(b[52]),w[39]=H(b[54]),w[40]=H(b[20]),w[41]=H(b[22]),w[42]=H(b[33]),w[43]=H(b[38]),w[44]=H(b[46]),w[45]=H(b[51]),w[46]=H(b[55]),w[47]=H(b[60]),w[48]=H(b[21]),w[49]=H(b[34]),w[50]=H(b[37]),w[51]=H(b[47]),w[52]=H(b[50]),w[53]=H(b[56]),w[54]=H(b[59]),w[55]=H(b[61]),w[56]=H(b[35]),w[57]=H(b[36]),w[58]=H(b[48]),w[59]=H(b[49]),w[60]=H(b[57]),w[61]=H(b[58]),w[62]=H(b[62]),w[63]=H(b[63]),E(m[e]);_(m);for(let t=0;t<3;++t)T(m[t],v[t],64*e)}let l=0;for(let i=0;i<3;++i){const r=n[e.idx[i]].type;for(let e=8*t;e<8*t+a;++e){l=y[i][e];for(let t=0;t<c;++t){const n=64*t+8*(7&e);o.setUint16(l+0*r,v[i][n+0],!0),o.setUint16(l+2*r,v[i][n+1],!0),o.setUint16(l+4*r,v[i][n+2],!0),o.setUint16(l+6*r,v[i][n+3],!0),o.setUint16(l+8*r,v[i][n+4],!0),o.setUint16(l+10*r,v[i][n+5],!0),o.setUint16(l+12*r,v[i][n+6],!0),o.setUint16(l+14*r,v[i][n+7],!0),l+=16*r}}if(c!=u)for(let e=8*t;e<8*t+a;++e){const t=y[i][e]+8*c*2*r,n=64*c+8*(7&e);for(let e=0;e<s;++e)o.setUint16(t+2*e*r,v[i][n+e],!0)}}}var b,w;const x=new Uint16Array(s);o=new DataView(a.buffer);for(let t=0;t<3;++t){n[e.idx[t]].decoded=!0;const i=n[e.idx[t]].type;if(2==n[t].type)for(let e=0;e<l;++e){const n=y[t][e];for(let e=0;e<s;++e)x[e]=o.getUint16(n+2*e*i,!0);for(let e=0;e<s;++e)o.setFloat32(n+2*e*i,H(x[e]),!0)}}}(c,f,l,u,h,i);for(let t=0;t<l.length;++t){const n=l[t];if(!n.decoded){if(2!==n.compression)throw new Error("EXRLoader.parse: unsupported channel compression");{let r=0,a=0;for(let o=0;o<e.lines;++o){let e=f[t][r];for(let t=0;t<n.width;++t){for(let t=0;t<2*n.type;++t)i[e++]=d[a+t*n.width*n.height];a++}r++}}}}return new DataView(i.buffer)}function O(e,t){const n=new Uint8Array(e);let i=0;for(;0!=n[t.value+i];)i+=1;const r=(new TextDecoder).decode(n.slice(t.value,t.value+i));return t.value=t.value+i+1,r}function P(e,t){const n=e.getInt32(t.value,!0);return t.value=t.value+4,n}function z(e,t){const n=e.getUint32(t.value,!0);return t.value=t.value+4,n}function k(e,t){const n=e[t.value];return t.value=t.value+1,n}function U(e,t){const n=e.getUint8(t.value);return t.value=t.value+1,n}const B=function(e,t){let n;return n="getBigInt64"in DataView.prototype?Number(e.getBigInt64(t.value,!0)):e.getUint32(t.value+4,!0)+Number(e.getUint32(t.value,!0)<<32),t.value+=8,n};function F(e,t){const n=e.getFloat32(t.value,!0);return t.value+=4,n}function j(e,t){return Xu.toHalfFloat(F(e,t))}function H(e){const t=(31744&e)>>10,n=1023&e;return(e>>15?-1:1)*(t?31===t?n?NaN:1/0:Math.pow(2,t-15)*(1+n/1024):n/1024*6103515625e-14)}function V(e,t){const n=e.getUint16(t.value,!0);return t.value+=2,n}function W(e,t){return H(V(e,t))}function G(e,t,n,i,r){return"string"===i||"stringvector"===i||"iccProfile"===i?function(e,t,n){const i=(new TextDecoder).decode(new Uint8Array(e).slice(t.value,t.value+n));return t.value=t.value+n,i}(t,n,r):"chlist"===i?function(e,t,n,i){const r=n.value,a=[];for(;n.value<r+i-1;){const i=O(t,n),r=P(e,n),o=U(e,n);n.value+=3;const s=P(e,n),l=P(e,n);a.push({name:i,pixelType:r,pLinear:o,xSampling:s,ySampling:l})}return n.value+=1,a}(e,t,n,r):"chromaticities"===i?function(e,t){return{redX:F(e,t),redY:F(e,t),greenX:F(e,t),greenY:F(e,t),blueX:F(e,t),blueY:F(e,t),whiteX:F(e,t),whiteY:F(e,t)}}(e,n):"compression"===i?function(e,t){return["NO_COMPRESSION","RLE_COMPRESSION","ZIPS_COMPRESSION","ZIP_COMPRESSION","PIZ_COMPRESSION","PXR24_COMPRESSION","B44_COMPRESSION","B44A_COMPRESSION","DWAA_COMPRESSION","DWAB_COMPRESSION"][U(e,t)]}(e,n):"box2i"===i?function(e,t){return{xMin:z(e,t),yMin:z(e,t),xMax:z(e,t),yMax:z(e,t)}}(e,n):"lineOrder"===i?function(e,t){return["INCREASING_Y"][U(e,t)]}(e,n):"float"===i?F(e,n):"v2f"===i?function(e,t){return[F(e,t),F(e,t)]}(e,n):"v3f"===i?function(e,t){return[F(e,t),F(e,t),F(e,t)]}(e,n):"int"===i?P(e,n):"rational"===i?function(e,t){return[P(e,t),z(e,t)]}(e,n):"timecode"===i?function(e,t){return[z(e,t),z(e,t)]}(e,n):"preview"===i?(n.value+=r,"skipped"):void(n.value+=r)}const Q=new DataView(e),X=new Uint8Array(e),Y={value:0},Z=function(e,t,n){const i={};if(20000630!=e.getUint32(0,!0))throw new Error("THREE.EXRLoader: Provided file doesn't appear to be in OpenEXR format.");i.version=e.getUint8(4);const r=e.getUint8(5);i.spec={singleTile:!!(2&r),longName:!!(4&r),deepFormat:!!(8&r),multiPart:!!(16&r)},n.value=8;let a=!0;for(;a;){const r=O(t,n);if(0==r)a=!1;else{const a=O(t,n),o=G(e,t,n,a,z(e,n));void 0===o?console.warn(`THREE.EXRLoader: Skipped unknown header attribute type '${a}'.`):i[r]=o}}if(0!=(-5&r))throw console.error("THREE.EXRHeader:",i),new Error("THREE.EXRLoader: Provided file is currently unsupported.");return i}(Q,e,Y),q=function(e,t,n,i,r){const a={size:0,viewer:t,array:n,offset:i,width:e.dataWindow.xMax-e.dataWindow.xMin+1,height:e.dataWindow.yMax-e.dataWindow.yMin+1,channels:e.channels.length,bytesPerLine:null,lines:null,inputSize:null,type:e.channels[0].pixelType,uncompress:null,getter:null,format:null,colorSpace:Ps};switch(e.compression){case"NO_COMPRESSION":a.lines=1,a.uncompress=C;break;case"RLE_COMPRESSION":a.lines=1,a.uncompress=I;break;case"ZIPS_COMPRESSION":a.lines=1,a.uncompress=D;break;case"ZIP_COMPRESSION":a.lines=16,a.uncompress=D;break;case"PIZ_COMPRESSION":a.lines=32,a.uncompress=N;break;case"PXR24_COMPRESSION":a.lines=16,a.uncompress=L;break;case"DWAA_COMPRESSION":a.lines=32,a.uncompress=R;break;case"DWAB_COMPRESSION":a.lines=256,a.uncompress=R;break;default:throw new Error("EXRLoader.parse: "+e.compression+" is unsupported")}if(a.scanlineBlockSize=a.lines,1==a.type)switch(r){case yo:a.getter=W,a.inputSize=2;break;case bo:a.getter=V,a.inputSize=2}else{if(2!=a.type)throw new Error("EXRLoader.parse: unsupported pixelType "+a.type+" for "+e.compression+".");switch(r){case yo:a.getter=F,a.inputSize=4;break;case bo:a.getter=j,a.inputSize=4}}a.blockCount=(e.dataWindow.yMax+1)/a.scanlineBlockSize;for(let e=0;e<a.blockCount;e++)B(t,i);a.outputChannels=3==a.channels?4:a.channels;const o=a.width*a.height*a.outputChannels;switch(r){case yo:a.byteArray=new Float32Array(o),a.channels<a.outputChannels&&a.byteArray.fill(1,0,o);break;case bo:a.byteArray=new Uint16Array(o),a.channels<a.outputChannels&&a.byteArray.fill(15360,0,o);break;default:console.error("THREE.EXRLoader: unsupported type: ",r)}return a.bytesPerLine=a.width*a.inputSize*a.channels,4==a.outputChannels?(a.format=Eo,a.colorSpace=Ps):(a.format=Do,a.colorSpace=Rs),a}(Z,Q,X,Y,this.type),K={value:0},J={R:0,G:1,B:2,A:3,Y:0};for(let e=0;e<q.height/q.scanlineBlockSize;e++){const t=z(Q,Y);q.size=z(Q,Y),q.lines=t+q.scanlineBlockSize>q.height?q.height-t:q.scanlineBlockSize;const n=q.size<q.lines*q.bytesPerLine?q.uncompress(q):C(q);Y.value+=q.size;for(let t=0;t<q.scanlineBlockSize;t++){const i=t+e*q.scanlineBlockSize;if(i>=q.height)break;for(let e=0;e<q.channels;e++){const r=J[Z.channels[e].name];for(let a=0;a<q.width;a++){K.value=(t*(q.channels*q.width)+e*q.width+a)*q.inputSize;const o=(q.height-1-i)*(q.width*q.outputChannels)+a*q.outputChannels+r;q.byteArray[o]=q.getter(n,K)}}}}return{header:Z,width:q.width,height:q.height,data:q.byteArray,format:q.format,colorSpace:q.colorSpace,type:this.type}}setDataType(e){return this.type=e,this}load(e,t,n,i){return super.load(e,(function(e,n){e.colorSpace=n.colorSpace,e.minFilter=so,e.magFilter=so,e.generateMipmaps=!1,e.flipY=!1,t&&t(e,n)}),n,i)}}const Xw=e=>{const t=new uc(e);return t.center=new jl(.5,.5),t.colorSpace=Os,t.needsUpdate=!0,t.anisotropy=16,t},Yw=(e,t)=>{const{Rooms:n}=e.Floors[Dr.currentFloorIndex].Units[0];return n.find((e=>{let{ID:n}=e;return n===t}))||null},Zw=(e,t)=>{const{CameraPoints:n}=e.Floors[Dr.currentFloorIndex];return(null==n?void 0:n.find((e=>{let{ID:n}=e;return n===t})))||null},qw=(e,t)=>t.reduce(((t,n)=>{const i=function(e){return Math.sqrt(Math.pow(e[1][0]-e[0][0],2)+Math.pow(e[1][1]-e[0][1],2))}([e,[n.userData.left,n.userData.top]]);return i<t.length?{panorama:n,length:i}:t}),{length:1/0,panorama:null}),Kw=async(e,t)=>await new Promise((n=>{const i=setInterval((()=>{if(t<0&&e.opacity<=0||t>0&&e.opacity>=1)return clearInterval(i),n();e.opacity+=t}),1)})),Jw=async e=>await Kw(e,-.01),$w=async e=>await Kw(e,.01),ex=e=>Fl.DEG2RAD*e,tx=async e=>{const t=await(async(e,t)=>{const n=new Promise((n=>{t.load(e,(e=>{t.manager.onLoad=()=>n(e)}))}));return await n})(e,new hv);return t.colorSpace=Os,t.anisotropy=16,t.minFilter=no,t.generateMipmaps=!1,t.center=new jl(.5,.5),t};function nx(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ix=class extends Tf{constructor(e,t){super(),nx(this,"_event",{type:"",data:null}),nx(this,"_tempPointer",new jl),nx(this,"_raycaster",new Sy),nx(this,"_tempMatrix",new qc),nx(this,"_pointer",new jl),nx(this,"_hoverElement",void 0),nx(this,"controller1",void 0),nx(this,"controller2",void 0),nx(this,"_renderer",void 0),nx(this,"_camera",void 0),this._camera=t,this._renderer=e,this._event.data=this._pointer,this._renderer.domElement.addEventListener("pointermove",this.onPointerEvent.bind(this)),this._renderer.domElement.addEventListener("pointerdown",this.onPointerDown.bind(this)),this._renderer.domElement.addEventListener("pointerup",this.onPointerEvent.bind(this)),this._renderer.domElement.addEventListener("mousemove",this.onPointerEvent.bind(this)),this.controller1=this.createController(0),this.controller2=this.createController(1)}get deepChildren(){return this.children.reduce(((e,t)=>t.isVrController||t.isVrControllerGrip||t.isVrHand?e:[...e,t,...t.children]),[])}createControllerLine(e){const t=new Am(new bc(0,0,0),new bc(0,0,-.25)),n=new yg(t,100,.002,100,!1),i=new Eg({color:new Uu(16777215),side:ea}),r=new Lh(n,i);return r.defaultGeometry=n,r.renderOrder=7,e.add(r),r}createControllerCircle(e){const t=document.createElement("canvas"),n=t.getContext("2d");t.width=128,t.height=128,n.beginPath(),n.arc(t.width/2,t.height/2,t.width/4,0,2*Math.PI,!1),n.strokeStyle="rgba(255, 255, 255, 1)",n.fillStyle="rgba(20, 20, 20, 0.26)",n.lineWidth=10,n.fill(),n.stroke();const i=Xw(t),r=new Hf({color:new Uu(16777215),sizeAttenuation:!1,transparent:!0,side:ea,map:i,opacity:1}),a=new nA(r);return a.scale.setScalar(.05),a.renderOrder=7,e.add(a),a}createController(e){const t=this._renderer.xr.getController(e);t.isVrController=!0,this.createControllerLine(t),this.createControllerCircle(t);const n=new hw,i=new gw,r=this._renderer.xr.getControllerGrip(e);r.add(n.createControllerModel(r)),r.isVrControllerGrip=!0;const a=this._renderer.xr.getHand(e);return a.add(i.createHandModel(a,"mesh")),a.isVrHand=!0,t.addEventListener("move",this.onXRControllerEvent.bind(this)),t.addEventListener("select",this.onXRControllerEvent.bind(this)),this.add(t,r,a),t}onPointerDown(e){let{clientX:t,clientY:n}=e;this._tempPointer.x=Number(t.toFixed(0)),this._tempPointer.y=Number(n.toFixed(0))}onPointerEvent(e){const t=Math.abs(this._tempPointer.x-Number(e.clientX.toFixed(0)))<10,n=Math.abs(this._tempPointer.y-Number(e.clientY.toFixed(0)))<10,i="pointerup"===e.type?"click":e.type;if(!("click"!==i||t&&n))return;const r=this._renderer.domElement.getBoundingClientRect();this._pointer.x=(e.clientX-r.left)/r.width*2-1,this._pointer.y=-(e.clientY-r.top)/r.height*2+1,this._raycaster.setFromCamera(this._pointer,this._camera);const a=this._raycaster.intersectObjects(this.deepChildren,!1);if(this._hoverElement||this.deepChildren.forEach((e=>e.dispatchEvent({type:"hoverend"}))),a.length>0)return this.onIntersection(a,i);this._renderer.hover=!1,this._hoverElement=null}onXRControllerEvent(e){const t={move:"mousemove",select:"click"},n=e.target;this._tempMatrix.identity().extractRotation(n.matrixWorld),this._raycaster.ray.origin.setFromMatrixPosition(n.matrixWorld),this._raycaster.ray.direction.set(0,0,-1).applyMatrix4(this._tempMatrix);const i=this._raycaster.intersectObjects(this.deepChildren,!1);this._hoverElement||this.deepChildren.forEach((e=>e.dispatchEvent({type:"hoverend"}))),i.length>0?this.onIntersection(i,t[e.type],n)&&(n.children[1].material.depthTest=!1):(n.children[1].material.depthTest=!0,this.updateControllerPointer(n,5e3),this._renderer.hover=!1,this._hoverElement=null)}onIntersection(e,t,n){const i=e[0],r=i.object;if(!r.visible)return null;const a=i.uv;return this._event.type=t,this._event.data.set(a.x,1-a.y),r.dispatchEvent(this._event),r.dispatchEvent({type:"hoverstart",data:{x:a.x,y:1-a.y}}),n&&this.updateControllerPointer(n,i.distance),this._hoverElement=r,this._renderer.hover=!0,r}updateControllerPointer(e,t){if(e.children[1].position.z=-t,t<.25){const n=new Am(new bc(0,0,0),new bc(0,0,-t));return e.children[0].geometry=new yg(n,100,.002,100,!1),this}return e.children[0].geometry=e.children[0].defaultGeometry,this}},rx=class extends nA{constructor(e){super(),this.userData=e,this.scale.set(e.scale,e.scale,e.scale),this.position.copy(e.position),this.renderOrder=3,this.visible=!1,this.addEventListeners()}async createMaterial(){const e=new hv,t=await e.loadAsync(this.userData.icon),n=new Hf({color:new Uu(16777215),sizeAttenuation:!1,depthTest:!1,side:ea,map:t});return this.material=n,this}addEventListeners(){return this.addEventListener("select",(()=>this.onClick())),this.addEventListener("click",(()=>this.onClick())),this.addEventListener("hoverstart",(()=>this.onHoverStart())),this.addEventListener("hoverend",(()=>this.onHoverEnd())),this}onHoverStart(){const e=this.userData.scale+20*this.userData.scale/100;this.scale.lerp(new bc(e,e,e),.1)}onHoverEnd(){const e=this.userData.scale;this.scale.lerp(new bc(e,e,e),.1)}onClick(){}};function ax(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ox=class extends Lh{constructor(e,t){super(t),ax(this,"depthMap",null),ax(this,"loaded",!1),ax(this,"links",[]),this.renderOrder=0,this.userData=e}get panoramaId(){return this.userData.camera_id}async loadDepth(){try{this.depthMap=await(async e=>{const t=await fetch(e),n=await t.arrayBuffer(e),i=new Qw;return i.type=yo,i.parse(n)})(this.userData.images.scene_depth)}catch(e){this.depthMap=null,console.error("Error loading depthMap")}}async load(){return this.userData.images.scene_depth&&this.loadDepth(),await this.createMaterial().then((()=>this.loaded=!0))}async createLinks(e,t){return await this.createCameraPoints(e),await this.createDoors(e,t),this}async createCameraPoints(e){for(const t of this.userData.room_panoramas){if(t===this.panoramaId)continue;const n=Zw(e,t);n&&await this.createLink(t,n.Location,!1)}return this}async createDoors(e,t){const n=e.Floors[Dr.currentFloorIndex].Apertures||[],i=e.Floors[Dr.currentFloorIndex].Doors,r=Yw(e,this.userData.room_id),{Rooms:a}=e.Floors[Dr.currentFloorIndex].Units[0];for(const{Location:e,Walls:o}of[...i,...n]){if(!o.some((e=>r.Walls.some((t=>t===e)))))continue;const n=a.find((e=>{const t=e.Walls.some((e=>o.some((t=>e===t)))),n=e.ID===r.ID;return t&&!n}));if(!n)continue;const i=t.filter((e=>{let{userData:t}=e;return t.room_id===n.ID})),{panorama:s}=qw([e.X,e.Y],i);s&&await this.createLink(s.panoramaId,e,!0)}return this}async createLink(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=[this.userData.left,this.userData.top],r=n?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAYAAAB/HSuDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAACcTSURBVHgB7d3rcRzHucfhd0/pu3kiOKsIREfAZQSiIxAUgagICEYgKQJREZiOQFAEpiMgHIHpCHC6uQNhuMSde5md//NUda1l0/SlJC3e30x3VwEAAAAAAAAAAAAAAAAAAAAAAAAAe7EoAICJu7i4eNI+lm09Gf3T7xaLxYcCAAAAjlMf+NtatfVrW+8vbvZ++DWrAgAAAKZvGPpPhoH+PxcP977/+wsAAACYlmHof9nW748c+q/za1vLAgAAAA5nY+jflfciAAB8yiGAAMDODcP4d22thrUP/YDA54vF4l0BAAIAALAbF+uD+Z61dVLrE/wP4bzWEeC8ACCcAAAAbM0w9L9o69s63NC/6awFgOcFAAAAPN7F+rq+ny+2d4jfLrwsAAjnDQAA4EHaMP2kfTyt9Z7+/rT/SU1fPw/g68Vi8aEAINRXBQBwh2Ho78N+H/r78H8MQ/9Y/+970tbPBQChvAEAAFxrGPpPar2ff1XHz1kAAEQTAACAP12sr+u7PMRvVfPzv7YBAJDKFgAACNeG/v5K/+XAv6p5W7b1rgAgkAAAAIEu1tf1Pav1K/7LytFjhwAAQCQBAABCDEP/5UF+x3aI37ak/u8GAAEAAOZqdF1f+tA/5v8DAGIJAAAwI6Pr+p4NnwZeAOAjAQAAjtzGdX39ib+hHwD4jAAAAEdoY+hfFQDAHQQAADgSbehf1nov/6oM/QDAAwkAADBho+v6VmXoBwC+gAAAABMzuq6vv96/LACALRAAAGACRkO/6/oAgJ0QAADgAIZD/PqJ/X3gd10fALBzAgAA7Mkw9F8+5XddHwCwVwIAAOzQxnV9hn4A4GAEAADYso2hf1UAABMgAADAFrShf1nrV/tXZegHACZIAACARxpO7n9W66f9ywIAmDABAAAewHV9AMCxEgAA4Baj6/oM/QDAURMAAGDDMPSvan2IXx/8Df0AwNETAACg/hz6L5/yu64PAJgdAQCAWK7rAwCSCAAARBmu6+tP+g39AEAUAQCA2Rtd17cqQz8AEEoAAGCWRtf19Sf9ywIACCcAADAbo6HfdX0AABsEAACO1nCIXz+x39APAHAHAQCAozK6ru/Z8GnoBwC4BwEAgMnbuK6vP/E39AMAPJAAAMAkbQz9qwIA4IsIAABMRhv6l7Xey78qQz8AwFYJAAAc1HBy/+V+/qcFAMBOCAAA7N3our7+ev+yAADYOQEAgL0YDf2u6wMAOAABAICdGA7x66/094HfdX0AAAcmAACwNcPQf/mU33V9AAATIgAA8EVc1wcAcBwEAAAebLiu7/IQv1UBADB5AgAA99KG/v5K/+XAvyoAAI6KAADAjYaT+5/V+hX/ZQEAcLQEAAA+4bo+AIB5EgAAwo2u6zP0AwDMmAAAEGh0Xd+z4dPQDwAwcwIAQIjR0N+f8vcn/oZ+AIAgAgDAjA1D/0m5rg8AIJ4AADAzbehf1vpJv6EfAIA/CQAAMzC6rm9Vhn4AAK4hAAAcqdF1ff1J/7IAAOAWAgDAERkN/a7rAwDgQQQAgAkbDvHrJ/b3gd91fQAAPJoAADAxo+v6Lg/xM/QDAPDFBACACdi4rq8/8Tf0AwCwVQIAwIFsDP2rAgCAHRIAAPaoDf3LWu/nX5WhHwCAPRIAAHZsOLn/Wa2f9i8LAAAOQAAA2AHX9QEAMDUCAMAWjK7rM/QDADBJAgDAI42G/j7w98Hf0A8AwGQJAAAPMAz9l0/5XdcHAMDREAAA7uC6PgAA5kAAALjGcF1ff9Jv6AcAYBYEAIDB6Lq+VRn6AQCYGQEAiDYa+k/aWhYAAMyUAADEGYZ+1/UBABBFAABmb3Rdn6EfAIBYAgAwS6Pr+p4Nn4Z+AACiCQDAbGxc19ef+Bv6AQBgIAAAR21j6F8VAABwLQEAODpt6F/Wei//qgz9AABwLwIAcBRG1/X1/fxPCwAAeBABAJis0XV9/fX+ZQEAAI8mAACTMhr6XdcHAABbJAAABzUc4tdf6e8Dv+v6AABgRwQAYO+Gof/yKb/r+gAAYA8EAGAvXNcHAACHJQAAOzNc13d5iN+qADi40Vkr/WaVHmeXBcflfFh/tPV2sVi8K+BeFgWwRcPQ31/tX5WhH5ie121YOK0ww1tYP7T1smy7Yn7Oa/3X9psCbuUNAOCLDU+T+pOkk/IkCWBS2t+j+9P+X8vgz3wt2/q1/bn+qn0+byHgvIBrCQDAo7iuD2D62t+rf6r1U39IsGzrffvz/scWAX4u4DMCAHAvo+v6DP0AR6D9fbs/9T8pyPNT+/P/Ly0CvC7gEwIAcKPRdX3Phk9DP8ARGJ78nxTkOm1/HfzXmwDwKQEA+MRo6O9P+fsTf0M/wBEZ9kF77R/WbwKcuSUArggAwOXQf1Ku6wM4asNNLKcFXOpbYf5awEcCAIQafkjsT/oN/QDzcVrA2NP2M8+JKwJhTQCAIKPr+lZl6AeYlSHsflfAph/aelOAAABzN7qurz/pXxYAc/WigOv0twBWi8XirCCcAAAzNBr6XdcHkMPTf7hZ/7norCCcAAAzMBzi10/s7z/8ua4PIMzoewC43jcFCABwrEbX9V0e4mfoB8i1LOA2AhmUAABHZeO6vv5FZugHoPN9ALfz1wiUAACTtzH0rwoAPrcsALiDAAATNLrKaVWGfgDudl4AcAcBACZiOLn/Wa2f9i8LAO7vQwHAHQQAOCDX9QGwJecFAHcQAGDPDP0AbNtisfjQvl/OyrYxAG4hAMAeDAf5/dDWyzL0A7Abf5QAAMAt/qeAnWrDfx/637d1WoZ/AHbn5wKAWwgAsCP9qX9bv7d/+FMZ/AHYsb4NoH28LQC4gQAAOzBc4/fP8iomAPv1Y7kRAIAbCACwZcN+//7kf1kAsEeLxeK8fbwuALiGAADb96oM/wAcSIsA/SyA3woANggAsEXt6f9JrU/6B4CDaRHgpEQAADYIALBdrwoAJmCIAL8UAAwEANiS4en/sgBgIloE6G+lfd/WeQEQTwCA7fmuAGBiWgR40z6e1/pwwPMCIJYAAFswnPy/KgCYoH47QFunbX1d6xjQtwb8Ua4MBIjyVQHb8LQA4Ai0CHDWPs4KvkB7+LGs9dbHVVsv2vqmgMnzBgBshwAAAMQY3io5G94s6T8H9bdL3DwBEycAwHY8KQCAUEMQOKl1CDgvYJIEAAAAYCuGENAjgCsoYYIEAAAAYKuGKyhfFzApAgAAALB1/XyA8iYATIoAAAAA7MTwJsC7AiZBAAAAAHbpbwVMggAAAADsTD8YsFwRCJMgAAAAALt2WsDBCQAAAMBODW8BnBVwUAIAAACwD/8o4KAEAAAAYB/OCjgoAQAAANiH8wIOSgAAAAB2brFYfCjgoAQAAABgX/5dwMEIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAAAAIIAAAAABBAAAAAAIAAAgAAAAAEEAAAAAAggAAAAAAAAQQAAAAACCAAAAAAQAABAAAA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AAEAAAAAAggAAAAAEEAAAAAAgAACAAAAAAQQAAAAACCAAAAAAAABBAAAAAAIIAAAAABAAAEAAAAAAggAAAAAEEAAAAAAgAACAAAAAAQQAAAAACCAAAAAAAABBAAAAAAIIAAAAABAAAEAAAAAAggAAAAAEEAAAAAAgAACAAAAAAQQAAAAACCAAAAAAAABBAAAAAAIIAAAAABAAAEAAAAAAggAAAAAEEAAAAAAgAACAAAAAAQQAAAAACCAAAAAAAABBAAAAAAIIAAAAABAAAEAAAAAAggAAAAAEEAAAAAAgAACAAAAAAQQAAAAACCAAAAAAAABBAAAAAAIIAAAAABAAAEAAAAAAggAAAAAEEAAAAAAgAACAAAAAAQQAAAAACCAAAAAAAABBAAAAAAIIAAAAABAAAEAAAAAAggAAAAAEEAAAAAAgAACAAAAAAQQAAAAACCAAAAAAAABBAAAAAAIIAAAAABAAAEAAAAAAggAAAAAEEAAAAAAgAACAAAAAAQQAAAAACCAAAAAAAABBAAAAAAIIAAAAABAAAEAAAAAAggAAAAAEEAAAAAAgAACAAAAAAQQAAAAACCAAAAAAAABBAAAAAAIIAAAAABAAAEAAAAAAggAAAAAEEAAAAAAgAACAAAAAAQQAAAAACCAAAAAAAABBAAAAAAIIAAAAABAAAEAAAAAAggAAAAAEEAAAAAAgAACAAAAAAQQAAAAACCAAAAAAAABBAAAAAAIIAAAAABAAAEAAAAAAggAAAAAEEAAAAAAgAACAAAAQMH8CQAAAAAQQAAAAACAAAIAAAAABBAAAAAAIIAAAAAAAAEEAAAAAAggAAAAAEAAAQAAAAACCAAAAAAQQAAAAACAAAIAAAAABBAAAAAAIIAAAAAAAAEEAAAAAAggAAAAAEAAAQAAAAACCAAAAAAQQAAAAACAAAIAAAAABBAAAAAAIIAAAAAAAAEEAAAAAAggAAAAAEAAAQAAAAACCAAAAAAQQAAAAACAAAIAAAAABBAAAAAAIIAAAAAAAAEEAAAAAAggAAAAAEAAAQAAAAACCAAAAAAQQAAAAACAAAIAAAAABBAAAAAAIIAAAAAAAAEEAAAAAAggAAAAAEAAAQAAAAACCAAAAAAQQAAAAACAAAIAAAAABBAAAAAAIIAAAAAAAAEEAAAAAAggAAAAAEAAAQAAAAACCAAAAAAQ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":"data:image/png;base64,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",a=t.X-i[0],o=t.Y-i[1],s=new bc(a,n?-10:-100,o),l=new rx({panoramaId:this.panoramaId,position:s,targetId:e,scale:n?.1:.075,icon:r});return this.links.push(l),await l.createMaterial()}},sx=class extends ox{constructor(e){super(e,new Ag(500,512,512).scale(-1,1,1)),this.userData.image=e.images.sphere||e.images[0]}async createMaterial(){const e=await tx(this.userData.image);return this.material=new Eg({transparent:!0,depthWrite:!1,side:ea,map:e,opacity:0}),this}async fadeOut(){return await Jw(this.material).then((()=>this.visible=!1))}async fadeIn(){return this.visible=!0,await $w(this.material)}},lx=class extends ox{constructor(e){super(e,new Oh(1e3,1e3,1e3).scale(-1,1,1)),this.userData.cubemap=[{url:e.images.front,rotation:0},{url:e.images.back,rotation:0},{url:e.images.top,rotation:90},{url:e.images.bottom,rotation:270},{url:e.images.left,rotation:0},{url:e.images.right,rotation:0}]}async createMaterial(){const e=[];for(const t of this.userData.cubemap){const n=await tx(t.url);n.rotation=ex(t.rotation),e.push(n)}this.material=e.map((e=>new Eg({transparent:!0,depthWrite:!1,side:ea,opacity:0,map:e})))}async fadeOut(){const e=this.material.map(Jw);return await Promise.all(e).then((()=>this.visible=!1))}async fadeIn(){this.visible=!0;const e=this.material.map($w);return await Promise.all(e)}};function cx(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const ux=class extends Tf{constructor(e){super(),cx(this,"type","sphere"),cx(this,"json",null),cx(this,"items",[]),cx(this,"floorIndex",void 0),this.floorIndex=e}getCreatedPanoramas(){var e;if(!this.json)return this.items.map((e=>{const t={...e,room_panoramas:[],points:[],left:0,top:0};return this.createPanorama(t)}));const t=Zw(this.json,null===(e=this.json.Meta)||void 0===e?void 0:e.PrimaryCameraPointId),{Walls:n}=this.json.Floors[Dr.currentFloorIndex],{Vertices:i}=this.json;return this.items.reduce(((e,r)=>{const a=Zw(this.json,r.camera_id),o=Yw(this.json,r.room_id),s=this.items.reduce(((e,t)=>t.room_id!==r.room_id?e:[...e,t.camera_id]),[]),l=((e,t,n)=>{const i=e.Walls.reduce(((e,i)=>{const r=t.find((e=>e.ID===i));return((e,t,n)=>e.find((e=>e.ID===t)).Vertices.map((e=>{const t=n.find((t=>t.ID===e));return[t.Location.X,t.Location.Y]})))(t,r.ID,n).forEach((t=>e.push(t))),e}),[]);return i})(o,n,i),[c,u]=a?[a.Location.X,a.Location.Y]:function(e){let t=0,n=0,i=e.length;for(let r=0;r<i;r++){const i=e[r];t+=i[0],n+=i[1]}return[t/i,n/i]}(l),h={...r,room_panoramas:s,points:l,left:c,top:u},d=this.createPanorama(h);return t&&t.ID===a.ID?(e.unshift(d),e):t||o.ID!==Dr.initialPanoramaRoomId?(e.push(d),e):(e.unshift(d),e)}),[])}async createPanoramas(e,t,n){this.items=t,this.type=n,this.json=e;const i=this.getCreatedPanoramas(),r=i.map(((t,n)=>new Promise((r=>{if(t.userData.panorama_index=n,!e)return r(t);t.createLinks(this.json,i).then(r)}))));return await Promise.all(r)}createPanorama(e){const t="cube"===this.type?new lx(e):new sx(e);return t.visible=!1,this.add(t),t}};var hx=r(238),dx=r.n(hx);function px(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}fn({useProxies:"never"});const fx="granted",Ax=new class{constructor(){px(this,"parser",null),px(this,"deviceOrientationStatus","denied"),px(this,"setDeviceOrientationStatus",(e=>(this.deviceOrientationStatus=e,e))),px(this,"requestDeviceOrientation",(async()=>{try{return DeviceOrientationEvent.requestPermission?await DeviceOrientationEvent.requestPermission().then((e=>this.setDeviceOrientationStatus(e))):this.setDeviceOrientationStatus(fx)}catch(e){console.log(e)}})),Pn(this),this.parser=new(dx())}get device(){return this.parser.getDevice()}get isMobile(){return"mobile"===this.device.type}get isTablet(){return"tablet"===this.device.type}get deviceOrientationGranted(){return this.deviceOrientationStatus===fx}};function mx(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const gx=class extends Of{constructor(){super({preserveDrawingBuffer:!0,antialias:!0,alpha:!0}),mx(this,"currentVrSession",void 0),mx(this,"hover",!1),this.setPixelRatio(window.devicePixelRatio),this.toneMapping=Fa,this.toneMappingExposure=1,this.xr.setReferenceSpaceType("local"),this.xr.enabled=!0}async checkVrSessionSupport(){try{return await navigator.xr.isSessionSupported("immersive-vr")}catch(e){return!1}}async onSessionStarted(e){e.addEventListener("end",this.onSessionEnded.bind(this)),await this.xr.setSession(e),this.currentVrSession=e}onSessionEnded(){this.currentVrSession.removeEventListener("end",this.onSessionEnded.bind(this)),this.currentVrSession=null}async enterVR(){return await navigator.xr.requestSession("immersive-vr",{optionalFeatures:["local-floor","bounded-floor","hand-tracking","layers"]}).then(this.onSessionStarted.bind(this))}async exitVR(){if(this.currentVrSession)return await this.xr.getSession().end()}};function vx(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const yx=class{constructor(e,t){vx(this,"deviceOrientation",{}),vx(this,"screenOrientation",0),vx(this,"alphaOffsetAngle",0),vx(this,"connected",!1),vx(this,"enabled",!1),vx(this,"domElement",void 0),vx(this,"alpha",0),vx(this,"tempX",0),vx(this,"tempY",0),vx(this,"rotY",0),vx(this,"rotX",0),vx(this,"camera",void 0),this.camera=e,this.camera.rotation.reorder("YXZ"),this.domElement=t||document}enable(){this.enabled=!0}disable(){this.enabled=!1}connect(){this.onScreenOrientationChange(),window.addEventListener("orientationchange",this.onScreenOrientationChange.bind(this)),window.addEventListener("deviceorientation",this.onDeviceOrientationChange.bind(this)),window.addEventListener("deviceorientation",this.update.bind(this)),this.domElement.addEventListener("touchstart",this.onTouchStart.bind(this)),this.domElement.addEventListener("touchmove",this.onTouchMove.bind(this)),this.connected=!0}disconnect(){window.removeEventListener("orientationchange",this.onScreenOrientationChange.bind(this)),window.removeEventListener("deviceorientation",this.onDeviceOrientationChange.bind(this)),window.removeEventListener("deviceorientation",this.update.bind(this)),this.domElement.removeEventListener("touchstart",this.onTouchStart),this.domElement.removeEventListener("touchmove",this.onTouchMove),this.connected=!1}onDeviceOrientationChange(e){this.deviceOrientation=e}onScreenOrientationChange(){this.screenOrientation=window.orientation||0}onTouchStart(e){e.preventDefault(),e.stopPropagation(),this.tempX=e.touches[0].pageX,this.tempY=e.touches[0].pageY}onTouchMove(e){e.preventDefault(),e.stopPropagation(),this.rotY+=ex((e.touches[0].pageX-this.tempX)/4),this.rotX+=ex((this.tempY-e.touches[0].pageY)/4),this.updateAlphaOffsetAngle(this.rotY),this.tempX=e.touches[0].pageX,this.tempY=e.touches[0].pageY}setCameraQuaternion(e,t,n,i,r){const a=new bc(0,0,1),o=new ou,s=new yc,l=new yc(-Math.sqrt(.5),0,0,Math.sqrt(.5)),c=new yc,u=new yc;let h=null;0===this.screenOrientation?(h=new bc(1,0,0),c.setFromAxisAngle(h,-this.rotX)):180===this.screenOrientation?(h=new bc(1,0,0),c.setFromAxisAngle(h,this.rotX)):90===this.screenOrientation?(h=new bc(0,1,0),c.setFromAxisAngle(h,this.rotX)):-90===this.screenOrientation&&(h=new bc(0,1,0),c.setFromAxisAngle(h,-this.rotX)),l.multiply(c),l.multiply(u),o.set(n,t,-i,"YXZ"),e.setFromEuler(o),e.multiply(l),e.multiply(s.setFromAxisAngle(a,-r))}updateAlphaOffsetAngle(e){this.alphaOffsetAngle=e,this.update()}update(){if(!1===this.enabled)return;const e=this.deviceOrientation.alpha?ex(this.deviceOrientation.alpha+90)+this.alphaOffsetAngle:0,t=this.deviceOrientation.beta?ex(this.deviceOrientation.beta):0,n=this.deviceOrientation.gamma?ex(this.deviceOrientation.gamma):0,i=this.screenOrientation?ex(this.screenOrientation):0;this.setCameraQuaternion(this.camera.quaternion,e,t,n,i),this.alpha=e}dispose(){this.disconnect()}},bx=Object.freeze({NONE:0,ROTATE:1,TRUCK:2,OFFSET:4,DOLLY:8,ZOOM:16,TOUCH_ROTATE:32,TOUCH_TRUCK:64,TOUCH_OFFSET:128,TOUCH_DOLLY:256,TOUCH_ZOOM:512,TOUCH_DOLLY_TRUCK:1024,TOUCH_DOLLY_OFFSET:2048,TOUCH_DOLLY_ROTATE:4096,TOUCH_ZOOM_TRUCK:8192,TOUCH_ZOOM_OFFSET:16384,TOUCH_ZOOM_ROTATE:32768});function wx(e){return e.isPerspectiveCamera}function xx(e){return e.isOrthographicCamera}const Mx=2*Math.PI,Sx=Math.PI/2,Ex=1e-5,_x=Math.PI/180;function Tx(e,t,n){return Math.max(t,Math.min(n,e))}function Cx(e,t=Ex){return Math.abs(e)<t}function Ix(e,t,n=Ex){return Cx(e-t,n)}function Dx(e,t){return Math.round(e/t)*t}function Nx(e){return isFinite(e)?e:e<0?-Number.MAX_VALUE:Number.MAX_VALUE}function Lx(e){return Math.abs(e)<Number.MAX_VALUE?e:e*(1/0)}function Rx(e,t,n,i,r=1/0,a){const o=2/(i=Math.max(1e-4,i)),s=o*a,l=1/(1+s+.48*s*s+.235*s*s*s);let c=e-t;const u=t,h=r*i;c=Tx(c,-h,h),t=e-c;const d=(n.value+o*c)*a;n.value=(n.value-o*d)*l;let p=t+(c+d)*l;return u-e>0==p>u&&(p=u,n.value=(p-u)/a),p}function Ox(e,t,n,i,r=1/0,a,o){const s=2/(i=Math.max(1e-4,i)),l=s*a,c=1/(1+l+.48*l*l+.235*l*l*l);let u=t.x,h=t.y,d=t.z,p=e.x-u,f=e.y-h,A=e.z-d;const m=u,g=h,v=d,y=r*i,b=p*p+f*f+A*A;if(b>y*y){const e=Math.sqrt(b);p=p/e*y,f=f/e*y,A=A/e*y}u=e.x-p,h=e.y-f,d=e.z-A;const w=(n.x+s*p)*a,x=(n.y+s*f)*a,M=(n.z+s*A)*a;n.x=(n.x-s*w)*c,n.y=(n.y-s*x)*c,n.z=(n.z-s*M)*c,o.x=u+(p+w)*c,o.y=h+(f+x)*c,o.z=d+(A+M)*c;const S=m-e.x,E=g-e.y,_=v-e.z;return S*(o.x-m)+E*(o.y-g)+_*(o.z-v)>0&&(o.x=m,o.y=g,o.z=v,n.x=(o.x-m)/a,n.y=(o.y-g)/a,n.z=(o.z-v)/a),o}function Px(e,t){t.set(0,0),e.forEach((e=>{t.x+=e.clientX,t.y+=e.clientY})),t.x/=e.length,t.y/=e.length}function zx(e,t){return!!xx(e)&&(console.warn(`${t} is not supported in OrthographicCamera`),!0)}class kx{constructor(){this._listeners={}}addEventListener(e,t){const n=this._listeners;void 0===n[e]&&(n[e]=[]),-1===n[e].indexOf(t)&&n[e].push(t)}hasEventListener(e,t){const n=this._listeners;return void 0!==n[e]&&-1!==n[e].indexOf(t)}removeEventListener(e,t){const n=this._listeners[e];if(void 0!==n){const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}removeAllEventListeners(e){e?Array.isArray(this._listeners[e])&&(this._listeners[e].length=0):this._listeners={}}dispatchEvent(e){const t=this._listeners[e.type];if(void 0!==t){e.target=this;const n=t.slice(0);for(let t=0,i=n.length;t<i;t++)n[t].call(this,e)}}}const Ux=1/8,Bx="undefined"!=typeof window,Fx=Bx&&/Mac/.test(navigator.platform),jx=!(Bx&&"PointerEvent"in window);let Hx,Vx,Wx,Gx,Qx,Xx,Yx,Zx,qx,Kx,Jx,$x,eM,tM,nM,iM,rM,aM,oM,sM,lM,cM,uM;class hM extends kx{static install(e){Hx=e.THREE,Vx=Object.freeze(new Hx.Vector3(0,0,0)),Wx=Object.freeze(new Hx.Vector3(0,1,0)),Gx=Object.freeze(new Hx.Vector3(0,0,1)),Qx=new Hx.Vector2,Xx=new Hx.Vector3,Yx=new Hx.Vector3,Zx=new Hx.Vector3,qx=new Hx.Vector3,Kx=new Hx.Vector3,Jx=new Hx.Vector3,$x=new Hx.Vector3,eM=new Hx.Vector3,tM=new Hx.Vector3,nM=new Hx.Spherical,iM=new Hx.Spherical,rM=new Hx.Box3,aM=new Hx.Box3,oM=new Hx.Sphere,sM=new Hx.Quaternion,lM=new Hx.Quaternion,cM=new Hx.Matrix4,uM=new Hx.Raycaster}static get ACTION(){return bx}constructor(e,t){super(),this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.minDistance=Number.EPSILON,this.maxDistance=1/0,this.infinityDolly=!1,this.minZoom=.01,this.maxZoom=1/0,this.smoothTime=.25,this.draggingSmoothTime=.125,this.maxSpeed=1/0,this.azimuthRotateSpeed=1,this.polarRotateSpeed=1,this.dollySpeed=1,this.dollyDragInverted=!1,this.truckSpeed=2,this.dollyToCursor=!1,this.dragToOffset=!1,this.verticalDragToForward=!1,this.boundaryFriction=0,this.restThreshold=.01,this.colliderMeshes=[],this.cancel=()=>{},this._enabled=!0,this._state=bx.NONE,this._viewport=null,this._changedDolly=0,this._changedZoom=0,this._hasRested=!0,this._boundaryEnclosesCamera=!1,this._needsUpdate=!0,this._updatedLastTime=!1,this._elementRect=new DOMRect,this._isDragging=!1,this._dragNeedsUpdate=!0,this._activePointers=[],this._lockedPointer=null,this._interactiveArea=new DOMRect(0,0,1,1),this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._isUserControllingOffset=!1,this._isUserControllingZoom=!1,this._lastDollyDirection=0,this._thetaVelocity={value:0},this._phiVelocity={value:0},this._radiusVelocity={value:0},this._targetVelocity=new Hx.Vector3,this._focalOffsetVelocity=new Hx.Vector3,this._zoomVelocity={value:0},this._truckInternal=(e,t,n)=>{let i,r;if(wx(this._camera)){const n=Xx.copy(this._camera.position).sub(this._target),a=this._camera.getEffectiveFOV()*_x,o=n.length()*Math.tan(.5*a);i=this.truckSpeed*e*o/this._elementRect.height,r=this.truckSpeed*t*o/this._elementRect.height}else{if(!xx(this._camera))return;{const n=this._camera;i=e*(n.right-n.left)/n.zoom/this._elementRect.width,r=t*(n.top-n.bottom)/n.zoom/this._elementRect.height}}this.verticalDragToForward?(n?this.setFocalOffset(this._focalOffsetEnd.x+i,this._focalOffsetEnd.y,this._focalOffsetEnd.z,!0):this.truck(i,0,!0),this.forward(-r,!0)):n?this.setFocalOffset(this._focalOffsetEnd.x+i,this._focalOffsetEnd.y+r,this._focalOffsetEnd.z,!0):this.truck(i,r,!0)},this._rotateInternal=(e,t)=>{const n=Mx*this.azimuthRotateSpeed*e/this._elementRect.height,i=Mx*this.polarRotateSpeed*t/this._elementRect.height;this.rotate(n,i,!0)},this._dollyInternal=(e,t,n)=>{const i=Math.pow(.95,-e*this.dollySpeed),r=this._sphericalEnd.radius,a=this._sphericalEnd.radius*i,o=Tx(a,this.minDistance,this.maxDistance),s=o-a;this.infinityDolly&&this.dollyToCursor?this._dollyToNoClamp(a,!0):this.infinityDolly&&!this.dollyToCursor?(this.dollyInFixed(s,!0),this._dollyToNoClamp(o,!0)):this._dollyToNoClamp(o,!0),this.dollyToCursor&&(this._changedDolly+=(this.infinityDolly?a:o)-r,this._dollyControlCoord.set(t,n)),this._lastDollyDirection=Math.sign(-e)},this._zoomInternal=(e,t,n)=>{const i=Math.pow(.95,e*this.dollySpeed),r=this._zoom,a=this._zoom*i;this.zoomTo(a,!0),this.dollyToCursor&&(this._changedZoom+=a-r,this._dollyControlCoord.set(t,n))},void 0===Hx&&console.error("camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information."),this._camera=e,this._yAxisUpSpace=(new Hx.Quaternion).setFromUnitVectors(this._camera.up,Wx),this._yAxisUpSpaceInverse=this._yAxisUpSpace.clone().invert(),this._state=bx.NONE,this._target=new Hx.Vector3,this._targetEnd=this._target.clone(),this._focalOffset=new Hx.Vector3,this._focalOffsetEnd=this._focalOffset.clone(),this._spherical=(new Hx.Spherical).setFromVector3(Xx.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace)),this._sphericalEnd=this._spherical.clone(),this._lastDistance=this._spherical.radius,this._zoom=this._camera.zoom,this._zoomEnd=this._zoom,this._lastZoom=this._zoom,this._nearPlaneCorners=[new Hx.Vector3,new Hx.Vector3,new Hx.Vector3,new Hx.Vector3],this._updateNearPlaneCorners(),this._boundary=new Hx.Box3(new Hx.Vector3(-1/0,-1/0,-1/0),new Hx.Vector3(1/0,1/0,1/0)),this._cameraUp0=this._camera.up.clone(),this._target0=this._target.clone(),this._position0=this._camera.position.clone(),this._zoom0=this._zoom,this._focalOffset0=this._focalOffset.clone(),this._dollyControlCoord=new Hx.Vector2,this.mouseButtons={left:bx.ROTATE,middle:bx.DOLLY,right:bx.TRUCK,wheel:wx(this._camera)?bx.DOLLY:xx(this._camera)?bx.ZOOM:bx.NONE},this.touches={one:bx.TOUCH_ROTATE,two:wx(this._camera)?bx.TOUCH_DOLLY_TRUCK:xx(this._camera)?bx.TOUCH_ZOOM_TRUCK:bx.NONE,three:bx.TOUCH_TRUCK};const n=new Hx.Vector2,i=new Hx.Vector2,r=new Hx.Vector2,a=e=>{if(!this._enabled||!this._domElement)return;if(0!==this._interactiveArea.left||0!==this._interactiveArea.top||1!==this._interactiveArea.width||1!==this._interactiveArea.height){const t=this._domElement.getBoundingClientRect(),n=e.clientX/t.width,i=e.clientY/t.height;if(n<this._interactiveArea.left||n>this._interactiveArea.right||i<this._interactiveArea.top||i>this._interactiveArea.bottom)return}const t="mouse"!==e.pointerType?null:1==(1&e.buttons)?1:4==(4&e.buttons)?4:2==(2&e.buttons)?2:null;if(null!==t){const e=this._findPointerByMouseButton(t);e&&this._disposePointer(e)}if(1==(1&e.buttons)&&this._lockedPointer)return;const n={pointerId:e.pointerId,clientX:e.clientX,clientY:e.clientY,deltaX:0,deltaY:0,mouseButton:t};this._activePointers.push(n),this._domElement.ownerDocument.removeEventListener("pointermove",s,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",c),this._domElement.ownerDocument.addEventListener("pointermove",s,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",c),this._isDragging=!0,f(e)},o=e=>{if(!this._enabled||!this._domElement||this._lockedPointer)return;if(0!==this._interactiveArea.left||0!==this._interactiveArea.top||1!==this._interactiveArea.width||1!==this._interactiveArea.height){const t=this._domElement.getBoundingClientRect(),n=e.clientX/t.width,i=e.clientY/t.height;if(n<this._interactiveArea.left||n>this._interactiveArea.right||i<this._interactiveArea.top||i>this._interactiveArea.bottom)return}const t=1==(1&e.buttons)?1:4==(4&e.buttons)?4:2==(2&e.buttons)?2:null;if(null!==t){const e=this._findPointerByMouseButton(t);e&&this._disposePointer(e)}const n={pointerId:1,clientX:e.clientX,clientY:e.clientY,deltaX:0,deltaY:0,mouseButton:1==(1&e.buttons)?1:1==(4&e.buttons)?4:1==(2&e.buttons)?2:null};this._activePointers.push(n),this._domElement.ownerDocument.removeEventListener("mousemove",l),this._domElement.ownerDocument.removeEventListener("mouseup",u),this._domElement.ownerDocument.addEventListener("mousemove",l),this._domElement.ownerDocument.addEventListener("mouseup",u),this._isDragging=!0,f(e)},s=e=>{e.cancelable&&e.preventDefault();const t=e.pointerId,n=this._lockedPointer||this._findPointerById(t);if(n){if(n.clientX=e.clientX,n.clientY=e.clientY,n.deltaX=e.movementX,n.deltaY=e.movementY,this._state=0,"touch"===e.pointerType)switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three}else(!this._isDragging&&this._lockedPointer||this._isDragging&&1==(1&e.buttons))&&(this._state=this._state|this.mouseButtons.left),this._isDragging&&4==(4&e.buttons)&&(this._state=this._state|this.mouseButtons.middle),this._isDragging&&2==(2&e.buttons)&&(this._state=this._state|this.mouseButtons.right);A()}},l=e=>{const t=this._lockedPointer||this._findPointerById(1);t&&(t.clientX=e.clientX,t.clientY=e.clientY,t.deltaX=e.movementX,t.deltaY=e.movementY,this._state=0,(this._lockedPointer||1==(1&e.buttons))&&(this._state=this._state|this.mouseButtons.left),4==(4&e.buttons)&&(this._state=this._state|this.mouseButtons.middle),2==(2&e.buttons)&&(this._state=this._state|this.mouseButtons.right),A())},c=e=>{const t=this._findPointerById(e.pointerId);if(!t||t!==this._lockedPointer){if(t&&this._disposePointer(t),"touch"===e.pointerType)switch(this._activePointers.length){case 0:this._state=bx.NONE;break;case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three}else this._state=bx.NONE;m()}},u=()=>{const e=this._findPointerById(1);e&&e===this._lockedPointer||(e&&this._disposePointer(e),this._state=bx.NONE,m())};let h=-1;const d=e=>{if(!this._domElement)return;if(!this._enabled||this.mouseButtons.wheel===bx.NONE)return;if(0!==this._interactiveArea.left||0!==this._interactiveArea.top||1!==this._interactiveArea.width||1!==this._interactiveArea.height){const t=this._domElement.getBoundingClientRect(),n=e.clientX/t.width,i=e.clientY/t.height;if(n<this._interactiveArea.left||n>this._interactiveArea.right||i<this._interactiveArea.top||i>this._interactiveArea.bottom)return}if(e.preventDefault(),this.dollyToCursor||this.mouseButtons.wheel===bx.ROTATE||this.mouseButtons.wheel===bx.TRUCK){const e=performance.now();h-e<1e3&&this._getClientRect(this._elementRect),h=e}const t=Fx?-1:-3,n=1===e.deltaMode?e.deltaY/t:e.deltaY/(10*t),i=this.dollyToCursor?(e.clientX-this._elementRect.x)/this._elementRect.width*2-1:0,r=this.dollyToCursor?(e.clientY-this._elementRect.y)/this._elementRect.height*-2+1:0;switch(this.mouseButtons.wheel){case bx.ROTATE:this._rotateInternal(e.deltaX,e.deltaY),this._isUserControllingRotate=!0;break;case bx.TRUCK:this._truckInternal(e.deltaX,e.deltaY,!1),this._isUserControllingTruck=!0;break;case bx.OFFSET:this._truckInternal(e.deltaX,e.deltaY,!0),this._isUserControllingOffset=!0;break;case bx.DOLLY:this._dollyInternal(-n,i,r),this._isUserControllingDolly=!0;break;case bx.ZOOM:this._zoomInternal(-n,i,r),this._isUserControllingZoom=!0}this.dispatchEvent({type:"control"})},p=e=>{if(this._domElement&&this._enabled){if(this.mouseButtons.right===hM.ACTION.NONE){const t=e instanceof PointerEvent?e.pointerId:(MouseEvent,0),n=this._findPointerById(t);return n&&this._disposePointer(n),this._domElement.ownerDocument.removeEventListener("pointermove",s,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",c),this._domElement.ownerDocument.removeEventListener("mousemove",l),void this._domElement.ownerDocument.removeEventListener("mouseup",u)}e.preventDefault()}},f=e=>{if(this._enabled){if(Px(this._activePointers,Qx),this._getClientRect(this._elementRect),n.copy(Qx),i.copy(Qx),this._activePointers.length>=2){const e=Qx.x-this._activePointers[1].clientX,t=Qx.y-this._activePointers[1].clientY,n=Math.sqrt(e*e+t*t);r.set(0,n);const a=.5*(this._activePointers[0].clientX+this._activePointers[1].clientX),o=.5*(this._activePointers[0].clientY+this._activePointers[1].clientY);i.set(a,o)}if(this._state=0,e)if("pointerType"in e&&"touch"===e.pointerType)switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three}else this._lockedPointer||1!=(1&e.buttons)||(this._state=this._state|this.mouseButtons.left),4==(4&e.buttons)&&(this._state=this._state|this.mouseButtons.middle),2==(2&e.buttons)&&(this._state=this._state|this.mouseButtons.right);else this._lockedPointer&&(this._state=this._state|this.mouseButtons.left);(this._state&bx.ROTATE)!==bx.ROTATE&&(this._state&bx.TOUCH_ROTATE)!==bx.TOUCH_ROTATE&&(this._state&bx.TOUCH_DOLLY_ROTATE)!==bx.TOUCH_DOLLY_ROTATE&&(this._state&bx.TOUCH_ZOOM_ROTATE)!==bx.TOUCH_ZOOM_ROTATE||(this._sphericalEnd.theta=this._spherical.theta,this._sphericalEnd.phi=this._spherical.phi,this._thetaVelocity.value=0,this._phiVelocity.value=0),(this._state&bx.TRUCK)!==bx.TRUCK&&(this._state&bx.TOUCH_TRUCK)!==bx.TOUCH_TRUCK&&(this._state&bx.TOUCH_DOLLY_TRUCK)!==bx.TOUCH_DOLLY_TRUCK&&(this._state&bx.TOUCH_ZOOM_TRUCK)!==bx.TOUCH_ZOOM_TRUCK||(this._targetEnd.copy(this._target),this._targetVelocity.set(0,0,0)),(this._state&bx.DOLLY)!==bx.DOLLY&&(this._state&bx.TOUCH_DOLLY)!==bx.TOUCH_DOLLY&&(this._state&bx.TOUCH_DOLLY_TRUCK)!==bx.TOUCH_DOLLY_TRUCK&&(this._state&bx.TOUCH_DOLLY_OFFSET)!==bx.TOUCH_DOLLY_OFFSET&&(this._state&bx.TOUCH_DOLLY_ROTATE)!==bx.TOUCH_DOLLY_ROTATE||(this._sphericalEnd.radius=this._spherical.radius,this._radiusVelocity.value=0),(this._state&bx.ZOOM)!==bx.ZOOM&&(this._state&bx.TOUCH_ZOOM)!==bx.TOUCH_ZOOM&&(this._state&bx.TOUCH_ZOOM_TRUCK)!==bx.TOUCH_ZOOM_TRUCK&&(this._state&bx.TOUCH_ZOOM_OFFSET)!==bx.TOUCH_ZOOM_OFFSET&&(this._state&bx.TOUCH_ZOOM_ROTATE)!==bx.TOUCH_ZOOM_ROTATE||(this._zoomEnd=this._zoom,this._zoomVelocity.value=0),(this._state&bx.OFFSET)!==bx.OFFSET&&(this._state&bx.TOUCH_OFFSET)!==bx.TOUCH_OFFSET&&(this._state&bx.TOUCH_DOLLY_OFFSET)!==bx.TOUCH_DOLLY_OFFSET&&(this._state&bx.TOUCH_ZOOM_OFFSET)!==bx.TOUCH_ZOOM_OFFSET||(this._focalOffsetEnd.copy(this._focalOffset),this._focalOffsetVelocity.set(0,0,0)),this.dispatchEvent({type:"controlstart"})}},A=()=>{if(!this._enabled||!this._dragNeedsUpdate)return;this._dragNeedsUpdate=!1,Px(this._activePointers,Qx);const e=this._domElement&&document.pointerLockElement===this._domElement?this._lockedPointer||this._activePointers[0]:null,t=e?-e.deltaX:i.x-Qx.x,a=e?-e.deltaY:i.y-Qx.y;if(i.copy(Qx),(this._state&bx.ROTATE)!==bx.ROTATE&&(this._state&bx.TOUCH_ROTATE)!==bx.TOUCH_ROTATE&&(this._state&bx.TOUCH_DOLLY_ROTATE)!==bx.TOUCH_DOLLY_ROTATE&&(this._state&bx.TOUCH_ZOOM_ROTATE)!==bx.TOUCH_ZOOM_ROTATE||(this._rotateInternal(t,a),this._isUserControllingRotate=!0),(this._state&bx.DOLLY)===bx.DOLLY||(this._state&bx.ZOOM)===bx.ZOOM){const e=this.dollyToCursor?(n.x-this._elementRect.x)/this._elementRect.width*2-1:0,t=this.dollyToCursor?(n.y-this._elementRect.y)/this._elementRect.height*-2+1:0,i=this.dollyDragInverted?-1:1;(this._state&bx.DOLLY)===bx.DOLLY?(this._dollyInternal(i*a*Ux,e,t),this._isUserControllingDolly=!0):(this._zoomInternal(i*a*Ux,e,t),this._isUserControllingZoom=!0)}if((this._state&bx.TOUCH_DOLLY)===bx.TOUCH_DOLLY||(this._state&bx.TOUCH_ZOOM)===bx.TOUCH_ZOOM||(this._state&bx.TOUCH_DOLLY_TRUCK)===bx.TOUCH_DOLLY_TRUCK||(this._state&bx.TOUCH_ZOOM_TRUCK)===bx.TOUCH_ZOOM_TRUCK||(this._state&bx.TOUCH_DOLLY_OFFSET)===bx.TOUCH_DOLLY_OFFSET||(this._state&bx.TOUCH_ZOOM_OFFSET)===bx.TOUCH_ZOOM_OFFSET||(this._state&bx.TOUCH_DOLLY_ROTATE)===bx.TOUCH_DOLLY_ROTATE||(this._state&bx.TOUCH_ZOOM_ROTATE)===bx.TOUCH_ZOOM_ROTATE){const e=Qx.x-this._activePointers[1].clientX,t=Qx.y-this._activePointers[1].clientY,n=Math.sqrt(e*e+t*t),a=r.y-n;r.set(0,n);const o=this.dollyToCursor?(i.x-this._elementRect.x)/this._elementRect.width*2-1:0,s=this.dollyToCursor?(i.y-this._elementRect.y)/this._elementRect.height*-2+1:0;(this._state&bx.TOUCH_DOLLY)===bx.TOUCH_DOLLY||(this._state&bx.TOUCH_DOLLY_ROTATE)===bx.TOUCH_DOLLY_ROTATE||(this._state&bx.TOUCH_DOLLY_TRUCK)===bx.TOUCH_DOLLY_TRUCK||(this._state&bx.TOUCH_DOLLY_OFFSET)===bx.TOUCH_DOLLY_OFFSET?(this._dollyInternal(a*Ux,o,s),this._isUserControllingDolly=!0):(this._zoomInternal(a*Ux,o,s),this._isUserControllingZoom=!0)}(this._state&bx.TRUCK)!==bx.TRUCK&&(this._state&bx.TOUCH_TRUCK)!==bx.TOUCH_TRUCK&&(this._state&bx.TOUCH_DOLLY_TRUCK)!==bx.TOUCH_DOLLY_TRUCK&&(this._state&bx.TOUCH_ZOOM_TRUCK)!==bx.TOUCH_ZOOM_TRUCK||(this._truckInternal(t,a,!1),this._isUserControllingTruck=!0),(this._state&bx.OFFSET)!==bx.OFFSET&&(this._state&bx.TOUCH_OFFSET)!==bx.TOUCH_OFFSET&&(this._state&bx.TOUCH_DOLLY_OFFSET)!==bx.TOUCH_DOLLY_OFFSET&&(this._state&bx.TOUCH_ZOOM_OFFSET)!==bx.TOUCH_ZOOM_OFFSET||(this._truckInternal(t,a,!0),this._isUserControllingOffset=!0),this.dispatchEvent({type:"control"})},m=()=>{Px(this._activePointers,Qx),i.copy(Qx),this._dragNeedsUpdate=!1,(0===this._activePointers.length||1===this._activePointers.length&&this._activePointers[0]===this._lockedPointer)&&(this._isDragging=!1),0===this._activePointers.length&&this._domElement&&(this._domElement.ownerDocument.removeEventListener("pointermove",s,{passive:!1}),this._domElement.ownerDocument.removeEventListener("mousemove",l),this._domElement.ownerDocument.removeEventListener("pointerup",c),this._domElement.ownerDocument.removeEventListener("mouseup",u),this.dispatchEvent({type:"controlend"}))};this.lockPointer=()=>{this._enabled&&this._domElement&&(this.cancel(),this._lockedPointer={pointerId:-1,clientX:0,clientY:0,deltaX:0,deltaY:0,mouseButton:null},this._activePointers.push(this._lockedPointer),this._domElement.ownerDocument.removeEventListener("pointermove",s,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",c),this._domElement.requestPointerLock(),this._domElement.ownerDocument.addEventListener("pointerlockchange",g),this._domElement.ownerDocument.addEventListener("pointerlockerror",v),this._domElement.ownerDocument.addEventListener("pointermove",s,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",c),f())},this.unlockPointer=()=>{null!==this._lockedPointer&&(this._disposePointer(this._lockedPointer),this._lockedPointer=null),document.exitPointerLock(),this.cancel(),this._domElement&&(this._domElement.ownerDocument.removeEventListener("pointerlockchange",g),this._domElement.ownerDocument.removeEventListener("pointerlockerror",v))};const g=()=>{this._domElement&&this._domElement.ownerDocument.pointerLockElement===this._domElement||this.unlockPointer()},v=()=>{this.unlockPointer()};this._addAllEventListeners=e=>{this._domElement=e,this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none",this._domElement.addEventListener("pointerdown",a),jx&&this._domElement.addEventListener("mousedown",o),this._domElement.addEventListener("pointercancel",c),this._domElement.addEventListener("wheel",d,{passive:!1}),this._domElement.addEventListener("contextmenu",p)},this._removeAllEventListeners=()=>{this._domElement&&(this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect="",this._domElement.removeEventListener("pointerdown",a),this._domElement.removeEventListener("mousedown",o),this._domElement.removeEventListener("pointercancel",c),this._domElement.removeEventListener("wheel",d,{passive:!1}),this._domElement.removeEventListener("contextmenu",p),this._domElement.ownerDocument.removeEventListener("pointermove",s,{passive:!1}),this._domElement.ownerDocument.removeEventListener("mousemove",l),this._domElement.ownerDocument.removeEventListener("pointerup",c),this._domElement.ownerDocument.removeEventListener("mouseup",u),this._domElement.ownerDocument.removeEventListener("pointerlockchange",g),this._domElement.ownerDocument.removeEventListener("pointerlockerror",v))},this.cancel=()=>{this._state!==bx.NONE&&(this._state=bx.NONE,this._activePointers.length=0,m())},t&&this.connect(t),this.update(0)}get camera(){return this._camera}set camera(e){this._camera=e,this.updateCameraUp(),this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0}get enabled(){return this._enabled}set enabled(e){this._enabled=e,this._domElement&&(e?(this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none"):(this.cancel(),this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect=""))}get active(){return!this._hasRested}get currentAction(){return this._state}get distance(){return this._spherical.radius}set distance(e){this._spherical.radius===e&&this._sphericalEnd.radius===e||(this._spherical.radius=e,this._sphericalEnd.radius=e,this._needsUpdate=!0)}get azimuthAngle(){return this._spherical.theta}set azimuthAngle(e){this._spherical.theta===e&&this._sphericalEnd.theta===e||(this._spherical.theta=e,this._sphericalEnd.theta=e,this._needsUpdate=!0)}get polarAngle(){return this._spherical.phi}set polarAngle(e){this._spherical.phi===e&&this._sphericalEnd.phi===e||(this._spherical.phi=e,this._sphericalEnd.phi=e,this._needsUpdate=!0)}get boundaryEnclosesCamera(){return this._boundaryEnclosesCamera}set boundaryEnclosesCamera(e){this._boundaryEnclosesCamera=e,this._needsUpdate=!0}set interactiveArea(e){this._interactiveArea.width=Tx(e.width,0,1),this._interactiveArea.height=Tx(e.height,0,1),this._interactiveArea.x=Tx(e.x,0,1-this._interactiveArea.width),this._interactiveArea.y=Tx(e.y,0,1-this._interactiveArea.height)}addEventListener(e,t){super.addEventListener(e,t)}removeEventListener(e,t){super.removeEventListener(e,t)}rotate(e,t,n=!1){return this.rotateTo(this._sphericalEnd.theta+e,this._sphericalEnd.phi+t,n)}rotateAzimuthTo(e,t=!1){return this.rotateTo(e,this._sphericalEnd.phi,t)}rotatePolarTo(e,t=!1){return this.rotateTo(this._sphericalEnd.theta,e,t)}rotateTo(e,t,n=!1){this._isUserControllingRotate=!1;const i=Tx(e,this.minAzimuthAngle,this.maxAzimuthAngle),r=Tx(t,this.minPolarAngle,this.maxPolarAngle);this._sphericalEnd.theta=i,this._sphericalEnd.phi=r,this._sphericalEnd.makeSafe(),this._needsUpdate=!0,n||(this._spherical.theta=this._sphericalEnd.theta,this._spherical.phi=this._sphericalEnd.phi);const a=!n||Ix(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Ix(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold);return this._createOnRestPromise(a)}dolly(e,t=!1){return this.dollyTo(this._sphericalEnd.radius-e,t)}dollyTo(e,t=!1){return this._isUserControllingDolly=!1,this._lastDollyDirection=0,this._changedDolly=0,this._dollyToNoClamp(Tx(e,this.minDistance,this.maxDistance),t)}_dollyToNoClamp(e,t=!1){const n=this._sphericalEnd.radius;if(this.colliderMeshes.length>=1){const t=this._collisionTest(),i=Ix(t,this._spherical.radius);if(!(n>e)&&i)return Promise.resolve();this._sphericalEnd.radius=Math.min(e,t)}else this._sphericalEnd.radius=e;this._needsUpdate=!0,t||(this._spherical.radius=this._sphericalEnd.radius);const i=!t||Ix(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(i)}dollyInFixed(e,t=!1){this._targetEnd.add(this._getCameraDirection(qx).multiplyScalar(e)),t||this._target.copy(this._targetEnd);const n=!t||Ix(this._target.x,this._targetEnd.x,this.restThreshold)&&Ix(this._target.y,this._targetEnd.y,this.restThreshold)&&Ix(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(n)}zoom(e,t=!1){return this.zoomTo(this._zoomEnd+e,t)}zoomTo(e,t=!1){this._isUserControllingZoom=!1,this._zoomEnd=Tx(e,this.minZoom,this.maxZoom),this._needsUpdate=!0,t||(this._zoom=this._zoomEnd);const n=!t||Ix(this._zoom,this._zoomEnd,this.restThreshold);return this._changedZoom=0,this._createOnRestPromise(n)}pan(e,t,n=!1){return console.warn("`pan` has been renamed to `truck`"),this.truck(e,t,n)}truck(e,t,n=!1){this._camera.updateMatrix(),Kx.setFromMatrixColumn(this._camera.matrix,0),Jx.setFromMatrixColumn(this._camera.matrix,1),Kx.multiplyScalar(e),Jx.multiplyScalar(-t);const i=Xx.copy(Kx).add(Jx),r=Yx.copy(this._targetEnd).add(i);return this.moveTo(r.x,r.y,r.z,n)}forward(e,t=!1){Xx.setFromMatrixColumn(this._camera.matrix,0),Xx.crossVectors(this._camera.up,Xx),Xx.multiplyScalar(e);const n=Yx.copy(this._targetEnd).add(Xx);return this.moveTo(n.x,n.y,n.z,t)}elevate(e,t=!1){return Xx.copy(this._camera.up).multiplyScalar(e),this.moveTo(this._targetEnd.x+Xx.x,this._targetEnd.y+Xx.y,this._targetEnd.z+Xx.z,t)}moveTo(e,t,n,i=!1){this._isUserControllingTruck=!1;const r=Xx.set(e,t,n).sub(this._targetEnd);this._encloseToBoundary(this._targetEnd,r,this.boundaryFriction),this._needsUpdate=!0,i||this._target.copy(this._targetEnd);const a=!i||Ix(this._target.x,this._targetEnd.x,this.restThreshold)&&Ix(this._target.y,this._targetEnd.y,this.restThreshold)&&Ix(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(a)}lookInDirectionOf(e,t,n,i=!1){const r=Xx.set(e,t,n).sub(this._targetEnd).normalize().multiplyScalar(-this._sphericalEnd.radius);return this.setPosition(r.x,r.y,r.z,i)}fitToBox(e,t,{cover:n=!1,paddingLeft:i=0,paddingRight:r=0,paddingBottom:a=0,paddingTop:o=0}={}){const s=[],l=e.isBox3?rM.copy(e):rM.setFromObject(e);l.isEmpty()&&(console.warn("camera-controls: fitTo() cannot be used with an empty box. Aborting"),Promise.resolve());const c=Dx(this._sphericalEnd.theta,Sx),u=Dx(this._sphericalEnd.phi,Sx);s.push(this.rotateTo(c,u,t));const h=Xx.setFromSpherical(this._sphericalEnd).normalize(),d=sM.setFromUnitVectors(h,Gx),p=Ix(Math.abs(h.y),1);p&&d.multiply(lM.setFromAxisAngle(Wx,c)),d.multiply(this._yAxisUpSpaceInverse);const f=aM.makeEmpty();Yx.copy(l.min).applyQuaternion(d),f.expandByPoint(Yx),Yx.copy(l.min).setX(l.max.x).applyQuaternion(d),f.expandByPoint(Yx),Yx.copy(l.min).setY(l.max.y).applyQuaternion(d),f.expandByPoint(Yx),Yx.copy(l.max).setZ(l.min.z).applyQuaternion(d),f.expandByPoint(Yx),Yx.copy(l.min).setZ(l.max.z).applyQuaternion(d),f.expandByPoint(Yx),Yx.copy(l.max).setY(l.min.y).applyQuaternion(d),f.expandByPoint(Yx),Yx.copy(l.max).setX(l.min.x).applyQuaternion(d),f.expandByPoint(Yx),Yx.copy(l.max).applyQuaternion(d),f.expandByPoint(Yx),f.min.x-=i,f.min.y-=a,f.max.x+=r,f.max.y+=o,d.setFromUnitVectors(Gx,h),p&&d.premultiply(lM.invert()),d.premultiply(this._yAxisUpSpace);const A=f.getSize(Xx),m=f.getCenter(Yx).applyQuaternion(d);if(wx(this._camera)){const e=this.getDistanceToFitBox(A.x,A.y,A.z,n);s.push(this.moveTo(m.x,m.y,m.z,t)),s.push(this.dollyTo(e,t)),s.push(this.setFocalOffset(0,0,0,t))}else if(xx(this._camera)){const e=this._camera,i=e.right-e.left,r=e.top-e.bottom,a=n?Math.max(i/A.x,r/A.y):Math.min(i/A.x,r/A.y);s.push(this.moveTo(m.x,m.y,m.z,t)),s.push(this.zoomTo(a,t)),s.push(this.setFocalOffset(0,0,0,t))}return Promise.all(s)}fitToSphere(e,t){const n=[],i=e instanceof Hx.Sphere?oM.copy(e):hM.createBoundingSphere(e,oM);if(n.push(this.moveTo(i.center.x,i.center.y,i.center.z,t)),wx(this._camera)){const e=this.getDistanceToFitSphere(i.radius);n.push(this.dollyTo(e,t))}else if(xx(this._camera)){const e=this._camera.right-this._camera.left,r=this._camera.top-this._camera.bottom,a=2*i.radius,o=Math.min(e/a,r/a);n.push(this.zoomTo(o,t))}return n.push(this.setFocalOffset(0,0,0,t)),Promise.all(n)}setLookAt(e,t,n,i,r,a,o=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=0,this._changedDolly=0;const s=Yx.set(i,r,a),l=Xx.set(e,t,n);this._targetEnd.copy(s),this._sphericalEnd.setFromVector3(l.sub(s).applyQuaternion(this._yAxisUpSpace)),this.normalizeRotations(),this._needsUpdate=!0,o||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const c=!o||Ix(this._target.x,this._targetEnd.x,this.restThreshold)&&Ix(this._target.y,this._targetEnd.y,this.restThreshold)&&Ix(this._target.z,this._targetEnd.z,this.restThreshold)&&Ix(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Ix(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&Ix(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(c)}lerpLookAt(e,t,n,i,r,a,o,s,l,c,u,h,d,p=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=0,this._changedDolly=0;const f=Xx.set(i,r,a),A=Yx.set(e,t,n);nM.setFromVector3(A.sub(f).applyQuaternion(this._yAxisUpSpace));const m=Zx.set(c,u,h),g=Yx.set(o,s,l);iM.setFromVector3(g.sub(m).applyQuaternion(this._yAxisUpSpace)),this._targetEnd.copy(f.lerp(m,d));const v=iM.theta-nM.theta,y=iM.phi-nM.phi,b=iM.radius-nM.radius;this._sphericalEnd.set(nM.radius+b*d,nM.phi+y*d,nM.theta+v*d),this.normalizeRotations(),this._needsUpdate=!0,p||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const w=!p||Ix(this._target.x,this._targetEnd.x,this.restThreshold)&&Ix(this._target.y,this._targetEnd.y,this.restThreshold)&&Ix(this._target.z,this._targetEnd.z,this.restThreshold)&&Ix(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Ix(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&Ix(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(w)}setPosition(e,t,n,i=!1){return this.setLookAt(e,t,n,this._targetEnd.x,this._targetEnd.y,this._targetEnd.z,i)}setTarget(e,t,n,i=!1){const r=this.getPosition(Xx),a=this.setLookAt(r.x,r.y,r.z,e,t,n,i);return this._sphericalEnd.phi=Tx(this._sphericalEnd.phi,this.minPolarAngle,this.maxPolarAngle),a}setFocalOffset(e,t,n,i=!1){this._isUserControllingOffset=!1,this._focalOffsetEnd.set(e,t,n),this._needsUpdate=!0,i||this._focalOffset.copy(this._focalOffsetEnd);const r=!i||Ix(this._focalOffset.x,this._focalOffsetEnd.x,this.restThreshold)&&Ix(this._focalOffset.y,this._focalOffsetEnd.y,this.restThreshold)&&Ix(this._focalOffset.z,this._focalOffsetEnd.z,this.restThreshold);return this._createOnRestPromise(r)}setOrbitPoint(e,t,n){this._camera.updateMatrixWorld(),Kx.setFromMatrixColumn(this._camera.matrixWorldInverse,0),Jx.setFromMatrixColumn(this._camera.matrixWorldInverse,1),$x.setFromMatrixColumn(this._camera.matrixWorldInverse,2);const i=Xx.set(e,t,n),r=i.distanceTo(this._camera.position),a=i.sub(this._camera.position);Kx.multiplyScalar(a.x),Jx.multiplyScalar(a.y),$x.multiplyScalar(a.z),Xx.copy(Kx).add(Jx).add($x),Xx.z=Xx.z+r,this.dollyTo(r,!1),this.setFocalOffset(-Xx.x,Xx.y,-Xx.z,!1),this.moveTo(e,t,n,!1)}setBoundary(e){if(!e)return this._boundary.min.set(-1/0,-1/0,-1/0),this._boundary.max.set(1/0,1/0,1/0),void(this._needsUpdate=!0);this._boundary.copy(e),this._boundary.clampPoint(this._targetEnd,this._targetEnd),this._needsUpdate=!0}setViewport(e,t,n,i){null!==e?(this._viewport=this._viewport||new Hx.Vector4,"number"==typeof e?this._viewport.set(e,t,n,i):this._viewport.copy(e)):this._viewport=null}getDistanceToFitBox(e,t,n,i=!1){if(zx(this._camera,"getDistanceToFitBox"))return this._spherical.radius;const r=e/t,a=this._camera.getEffectiveFOV()*_x,o=this._camera.aspect;return.5*((i?r>o:r<o)?t:e/o)/Math.tan(.5*a)+.5*n}getDistanceToFitSphere(e){if(zx(this._camera,"getDistanceToFitSphere"))return this._spherical.radius;const t=this._camera.getEffectiveFOV()*_x,n=2*Math.atan(Math.tan(.5*t)*this._camera.aspect),i=1<this._camera.aspect?t:n;return e/Math.sin(.5*i)}getTarget(e,t=!0){return(e&&e.isVector3?e:new Hx.Vector3).copy(t?this._targetEnd:this._target)}getPosition(e,t=!0){return(e&&e.isVector3?e:new Hx.Vector3).setFromSpherical(t?this._sphericalEnd:this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(t?this._targetEnd:this._target)}getSpherical(e,t=!0){return(e&&e instanceof Hx.Spherical?e:new Hx.Spherical).copy(t?this._sphericalEnd:this._spherical)}getFocalOffset(e,t=!0){return(e&&e.isVector3?e:new Hx.Vector3).copy(t?this._focalOffsetEnd:this._focalOffset)}normalizeRotations(){this._sphericalEnd.theta=this._sphericalEnd.theta%Mx,this._sphericalEnd.theta<0&&(this._sphericalEnd.theta+=Mx),this._spherical.theta+=Mx*Math.round((this._sphericalEnd.theta-this._spherical.theta)/Mx)}reset(e=!1){if(!Ix(this._camera.up.x,this._cameraUp0.x)||!Ix(this._camera.up.y,this._cameraUp0.y)||!Ix(this._camera.up.z,this._cameraUp0.z)){this._camera.up.copy(this._cameraUp0);const e=this.getPosition(Xx);this.updateCameraUp(),this.setPosition(e.x,e.y,e.z)}const t=[this.setLookAt(this._position0.x,this._position0.y,this._position0.z,this._target0.x,this._target0.y,this._target0.z,e),this.setFocalOffset(this._focalOffset0.x,this._focalOffset0.y,this._focalOffset0.z,e),this.zoomTo(this._zoom0,e)];return Promise.all(t)}saveState(){this._cameraUp0.copy(this._camera.up),this.getTarget(this._target0),this.getPosition(this._position0),this._zoom0=this._zoom,this._focalOffset0.copy(this._focalOffset)}updateCameraUp(){this._yAxisUpSpace.setFromUnitVectors(this._camera.up,Wx),this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace).invert()}applyCameraUp(){const e=Xx.subVectors(this._target,this._camera.position).normalize(),t=Yx.crossVectors(e,this._camera.up);this._camera.up.crossVectors(t,e).normalize(),this._camera.updateMatrixWorld();const n=this.getPosition(Xx);this.updateCameraUp(),this.setPosition(n.x,n.y,n.z)}update(e){const t=this._sphericalEnd.theta-this._spherical.theta,n=this._sphericalEnd.phi-this._spherical.phi,i=this._sphericalEnd.radius-this._spherical.radius,r=eM.subVectors(this._targetEnd,this._target),a=tM.subVectors(this._focalOffsetEnd,this._focalOffset),o=this._zoomEnd-this._zoom;if(Cx(t))this._thetaVelocity.value=0,this._spherical.theta=this._sphericalEnd.theta;else{const t=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.theta=Rx(this._spherical.theta,this._sphericalEnd.theta,this._thetaVelocity,t,1/0,e),this._needsUpdate=!0}if(Cx(n))this._phiVelocity.value=0,this._spherical.phi=this._sphericalEnd.phi;else{const t=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.phi=Rx(this._spherical.phi,this._sphericalEnd.phi,this._phiVelocity,t,1/0,e),this._needsUpdate=!0}if(Cx(i))this._radiusVelocity.value=0,this._spherical.radius=this._sphericalEnd.radius;else{const t=this._isUserControllingDolly?this.draggingSmoothTime:this.smoothTime;this._spherical.radius=Rx(this._spherical.radius,this._sphericalEnd.radius,this._radiusVelocity,t,this.maxSpeed,e),this._needsUpdate=!0}if(Cx(r.x)&&Cx(r.y)&&Cx(r.z))this._targetVelocity.set(0,0,0),this._target.copy(this._targetEnd);else{const t=this._isUserControllingTruck?this.draggingSmoothTime:this.smoothTime;Ox(this._target,this._targetEnd,this._targetVelocity,t,this.maxSpeed,e,this._target),this._needsUpdate=!0}if(Cx(a.x)&&Cx(a.y)&&Cx(a.z))this._focalOffsetVelocity.set(0,0,0),this._focalOffset.copy(this._focalOffsetEnd);else{const t=this._isUserControllingOffset?this.draggingSmoothTime:this.smoothTime;Ox(this._focalOffset,this._focalOffsetEnd,this._focalOffsetVelocity,t,this.maxSpeed,e,this._focalOffset),this._needsUpdate=!0}if(Cx(o))this._zoomVelocity.value=0,this._zoom=this._zoomEnd;else{const t=this._isUserControllingZoom?this.draggingSmoothTime:this.smoothTime;this._zoom=Rx(this._zoom,this._zoomEnd,this._zoomVelocity,t,1/0,e)}if(this.dollyToCursor)if(wx(this._camera)&&0!==this._changedDolly){const e=this._spherical.radius-this._lastDistance,t=this._camera,n=this._getCameraDirection(qx),i=Xx.copy(n).cross(t.up).normalize();0===i.lengthSq()&&(i.x=1);const r=Yx.crossVectors(i,n),a=this._sphericalEnd.radius*Math.tan(t.getEffectiveFOV()*_x*.5),o=(this._sphericalEnd.radius-e-this._sphericalEnd.radius)/this._sphericalEnd.radius,s=Zx.copy(this._targetEnd).add(i.multiplyScalar(this._dollyControlCoord.x*a*t.aspect)).add(r.multiplyScalar(this._dollyControlCoord.y*a)),l=Xx.copy(this._targetEnd).lerp(s,o),c=1===this._lastDollyDirection&&this._spherical.radius<=this.minDistance,u=-1===this._lastDollyDirection&&this.maxDistance<=this._spherical.radius;if(this.infinityDolly&&(c||u)){this._sphericalEnd.radius-=e,this._spherical.radius-=e;const t=Yx.copy(n).multiplyScalar(-e);l.add(t)}this._boundary.clampPoint(l,l);const h=Yx.subVectors(l,this._targetEnd);this._targetEnd.copy(l),this._target.add(h),this._changedDolly-=e,Cx(this._changedDolly)&&(this._changedDolly=0)}else if(xx(this._camera)&&0!==this._changedZoom){const e=this._zoom-this._lastZoom,t=this._camera,n=Xx.set(this._dollyControlCoord.x,this._dollyControlCoord.y,(t.near+t.far)/(t.near-t.far)).unproject(t),i=Yx.set(0,0,-1).applyQuaternion(t.quaternion),r=Zx.copy(n).add(i.multiplyScalar(-n.dot(t.up))),a=-(this._zoom-e-this._zoom)/this._zoom,o=this._getCameraDirection(qx),s=this._targetEnd.dot(o),l=Xx.copy(this._targetEnd).lerp(r,a),c=l.dot(o),u=o.multiplyScalar(c-s);l.sub(u),this._boundary.clampPoint(l,l);const h=Yx.subVectors(l,this._targetEnd);this._targetEnd.copy(l),this._target.add(h),this._changedZoom-=e,Cx(this._changedZoom)&&(this._changedZoom=0)}this._camera.zoom!==this._zoom&&(this._camera.zoom=this._zoom,this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0),this._dragNeedsUpdate=!0;const s=this._collisionTest();this._spherical.radius=Math.min(this._spherical.radius,s),this._spherical.makeSafe(),this._camera.position.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(this._target),this._camera.lookAt(this._target),(!Cx(this._focalOffset.x)||!Cx(this._focalOffset.y)||!Cx(this._focalOffset.z))&&(this._camera.updateMatrixWorld(),Kx.setFromMatrixColumn(this._camera.matrix,0),Jx.setFromMatrixColumn(this._camera.matrix,1),$x.setFromMatrixColumn(this._camera.matrix,2),Kx.multiplyScalar(this._focalOffset.x),Jx.multiplyScalar(-this._focalOffset.y),$x.multiplyScalar(this._focalOffset.z),Xx.copy(Kx).add(Jx).add($x),this._camera.position.add(Xx)),this._boundaryEnclosesCamera&&this._encloseToBoundary(this._camera.position.copy(this._target),Xx.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse),1);const l=this._needsUpdate;return l&&!this._updatedLastTime?(this._hasRested=!1,this.dispatchEvent({type:"wake"}),this.dispatchEvent({type:"update"})):l?(this.dispatchEvent({type:"update"}),Cx(t,this.restThreshold)&&Cx(n,this.restThreshold)&&Cx(i,this.restThreshold)&&Cx(r.x,this.restThreshold)&&Cx(r.y,this.restThreshold)&&Cx(r.z,this.restThreshold)&&Cx(a.x,this.restThreshold)&&Cx(a.y,this.restThreshold)&&Cx(a.z,this.restThreshold)&&Cx(o,this.restThreshold)&&!this._hasRested&&(this._hasRested=!0,this.dispatchEvent({type:"rest"}))):!l&&this._updatedLastTime&&this.dispatchEvent({type:"sleep"}),this._lastDistance=this._spherical.radius,this._lastZoom=this._zoom,this._updatedLastTime=l,this._needsUpdate=!1,l}toJSON(){return JSON.stringify({enabled:this._enabled,minDistance:this.minDistance,maxDistance:Nx(this.maxDistance),minZoom:this.minZoom,maxZoom:Nx(this.maxZoom),minPolarAngle:this.minPolarAngle,maxPolarAngle:Nx(this.maxPolarAngle),minAzimuthAngle:Nx(this.minAzimuthAngle),maxAzimuthAngle:Nx(this.maxAzimuthAngle),smoothTime:this.smoothTime,draggingSmoothTime:this.draggingSmoothTime,dollySpeed:this.dollySpeed,truckSpeed:this.truckSpeed,dollyToCursor:this.dollyToCursor,verticalDragToForward:this.verticalDragToForward,target:this._targetEnd.toArray(),position:Xx.setFromSpherical(this._sphericalEnd).add(this._targetEnd).toArray(),zoom:this._zoomEnd,focalOffset:this._focalOffsetEnd.toArray(),target0:this._target0.toArray(),position0:this._position0.toArray(),zoom0:this._zoom0,focalOffset0:this._focalOffset0.toArray()})}fromJSON(e,t=!1){const n=JSON.parse(e);this.enabled=n.enabled,this.minDistance=n.minDistance,this.maxDistance=Lx(n.maxDistance),this.minZoom=n.minZoom,this.maxZoom=Lx(n.maxZoom),this.minPolarAngle=n.minPolarAngle,this.maxPolarAngle=Lx(n.maxPolarAngle),this.minAzimuthAngle=Lx(n.minAzimuthAngle),this.maxAzimuthAngle=Lx(n.maxAzimuthAngle),this.smoothTime=n.smoothTime,this.draggingSmoothTime=n.draggingSmoothTime,this.dollySpeed=n.dollySpeed,this.truckSpeed=n.truckSpeed,this.dollyToCursor=n.dollyToCursor,this.verticalDragToForward=n.verticalDragToForward,this._target0.fromArray(n.target0),this._position0.fromArray(n.position0),this._zoom0=n.zoom0,this._focalOffset0.fromArray(n.focalOffset0),this.moveTo(n.target[0],n.target[1],n.target[2],t),nM.setFromVector3(Xx.fromArray(n.position).sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace)),this.rotateTo(nM.theta,nM.phi,t),this.dollyTo(nM.radius,t),this.zoomTo(n.zoom,t),this.setFocalOffset(n.focalOffset[0],n.focalOffset[1],n.focalOffset[2],t),this._needsUpdate=!0}connect(e){this._domElement?console.warn("camera-controls is already connected."):(e.setAttribute("data-camera-controls-version","2.7.3"),this._addAllEventListeners(e),this._getClientRect(this._elementRect))}disconnect(){this.cancel(),this._removeAllEventListeners(),this._domElement&&(this._domElement.removeAttribute("data-camera-controls-version"),this._domElement=void 0)}dispose(){this.removeAllEventListeners(),this.disconnect()}_getTargetDirection(e){return e.setFromSpherical(this._spherical).divideScalar(this._spherical.radius).applyQuaternion(this._yAxisUpSpaceInverse)}_getCameraDirection(e){return this._getTargetDirection(e).negate()}_findPointerById(e){return this._activePointers.find((t=>t.pointerId===e))}_findPointerByMouseButton(e){return this._activePointers.find((t=>t.mouseButton===e))}_disposePointer(e){this._activePointers.splice(this._activePointers.indexOf(e),1)}_encloseToBoundary(e,t,n){const i=t.lengthSq();if(0===i)return e;const r=Yx.copy(t).add(e),a=this._boundary.clampPoint(r,Zx).sub(r),o=a.lengthSq();if(0===o)return e.add(t);if(o===i)return e;if(0===n)return e.add(t).add(a);{const i=1+n*o/t.dot(a);return e.add(Yx.copy(t).multiplyScalar(i)).add(a.multiplyScalar(1-n))}}_updateNearPlaneCorners(){if(wx(this._camera)){const e=this._camera,t=e.near,n=e.getEffectiveFOV()*_x,i=Math.tan(.5*n)*t,r=i*e.aspect;this._nearPlaneCorners[0].set(-r,-i,0),this._nearPlaneCorners[1].set(r,-i,0),this._nearPlaneCorners[2].set(r,i,0),this._nearPlaneCorners[3].set(-r,i,0)}else if(xx(this._camera)){const e=this._camera,t=1/e.zoom,n=e.left*t,i=e.right*t,r=e.top*t,a=e.bottom*t;this._nearPlaneCorners[0].set(n,r,0),this._nearPlaneCorners[1].set(i,r,0),this._nearPlaneCorners[2].set(i,a,0),this._nearPlaneCorners[3].set(n,a,0)}}_collisionTest(){let e=1/0;if(!(this.colliderMeshes.length>=1))return e;if(zx(this._camera,"_collisionTest"))return e;const t=this._getTargetDirection(qx);cM.lookAt(Vx,t,this._camera.up);for(let n=0;n<4;n++){const i=Yx.copy(this._nearPlaneCorners[n]);i.applyMatrix4(cM);const r=Zx.addVectors(this._target,i);uM.set(r,t),uM.far=this._spherical.radius+1;const a=uM.intersectObjects(this.colliderMeshes);0!==a.length&&a[0].distance<e&&(e=a[0].distance)}return e}_getClientRect(e){if(!this._domElement)return;const t=this._domElement.getBoundingClientRect();return e.x=t.left,e.y=t.top,this._viewport?(e.x+=this._viewport.x,e.y+=t.height-this._viewport.w-this._viewport.y,e.width=this._viewport.z,e.height=this._viewport.w):(e.width=t.width,e.height=t.height),e}_createOnRestPromise(e){return e?Promise.resolve():(this._hasRested=!1,this.dispatchEvent({type:"transitionstart"}),new Promise((e=>{const t=()=>{this.removeEventListener("rest",t),e()};this.addEventListener("rest",t)})))}_addAllEventListeners(e){}_removeAllEventListeners(){}get dampingFactor(){return console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead."),0}set dampingFactor(e){console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead.")}get draggingDampingFactor(){return console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead."),0}set draggingDampingFactor(e){console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.")}static createBoundingSphere(e,t=new Hx.Sphere){const n=t,i=n.center;rM.makeEmpty(),e.traverseVisible((e=>{e.isMesh&&rM.expandByObject(e)})),rM.getCenter(i);let r=0;return e.traverseVisible((e=>{if(!e.isMesh)return;const t=e,n=t.geometry.clone();n.applyMatrix4(t.matrixWorld);const a=n.attributes.position;for(let e=0,t=a.count;e<t;e++)Xx.fromBufferAttribute(a,e),r=Math.max(r,i.distanceToSquared(Xx))})),n.radius=Math.sqrt(r),n}}function dM(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}hM.install({THREE:e});const pM=class extends hM{constructor(e,t){super(t,e.domElement),dM(this,"disableAutoRotate",!1),dM(this,"userDragging",!1),dM(this,"_renderer",void 0),dM(this,"_camera",void 0),this._renderer=e,this._camera=t,this.mouseButtons.middle=hM.ACTION.NONE,this.mouseButtons.left=hM.ACTION.ROTATE,this.mouseButtons.right=hM.ACTION.NONE,this.mouseButtons.wheel=hM.ACTION.NONE,this.touches.three=hM.ACTION.NONE,this.touches.two=hM.ACTION.NONE,this.touches.one=hM.ACTION.TOUCH_ROTATE,this.verticalDragToForward=!0,this.azimuthRotateSpeed=-.25,this.polarRotateSpeed=-.25,this.maxDistance=.001,this.truckSpeed=1e4,this.minDistance=0,this.dollySpeed=0,this.minZoom=1,this.maxZoom=2,this.setDefaultPosition(),this.addListeners()}setDefaultPosition(){this.rotateTo(Math.PI/2,Math.PI/2),this.moveTo(0,0,0),this.dollyTo(1e-9),this.zoomTo(1)}onRest(){this.removeEventListener("rest",this.onRest),this.disableAutoRotate=!1,this.holding=!1}onControlStart(){this.currentAction!==hM.ACTION.NONE&&(this.removeEventListener("rest",this.onRest),this.disableAutoRotate=!0,this.holding=!0)}onControlEnd(){this.active?this.addEventListener("rest",this.onRest):this.onRest()}onTransitionStart(){this.holding||(this.disableAutoRotate=!0,this.addEventListener("rest",this.onRest))}addListeners(){this.addEventListener("transitionstart",this.onTransitionStart),this.addEventListener("controlstart",this.onControlStart),this.addEventListener("controlend",this.onControlEnd)}};function fM(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const AM=class extends jh{constructor(e){super(60,1,.1,1e4),fM(this,"deviceOrientationControls",void 0),fM(this,"controls",void 0),this.controls=new pM(e,this),this.deviceOrientationControls=new yx(this,e.domElement)}};const mM=class extends Uf{constructor(){var e,t,n;super(),e=this,n=void 0,t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="controls"),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,this.background=new Uu(16777215),this.add(new Tv(new Uu(16777215),3))}},gM=e=>{e.preventDefault()},vM=(e,t,n,i,r,a)=>{let o=a;i<2*o&&(o=i/2),r<2*a&&(o=r/2),e.beginPath(),e.moveTo(t+o,n),e.arcTo(t+i,n,t+i,n+r,o),e.arcTo(t+i,n+r,t,n+r,o),e.arcTo(t,n+r,t,n,o),e.arcTo(t,n,t+i,n,o),e.closePath()};function yM(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const bM=class extends Tf{constructor(e){super(),yM(this,"distanceMesh",null),yM(this,"centerPoint",null),yM(this,"secondPoint",null),yM(this,"firstPoint",null),yM(this,"isRuler",!0),yM(this,"distance",0),yM(this,"onClick",(()=>{this.destroy()})),yM(this,"onHoverStart",(()=>{this.updateCenterPointText(this.centerPoint.material.map.image,"rgba(255, 99, 64, 0.8)","rgba(255, 255, 255, 1)")})),yM(this,"onHoverEnd",(()=>{this.updateCenterPointText(this.centerPoint.material.map.image)})),this.userData={panoramaId:e}}createFirstPoint(e){return this.firstPoint=this.createPoint(e),this.add(this.firstPoint),this}createSecondPoint(e){return this.secondPoint=this.createPoint(e),this.add(this.secondPoint),this}createRest(e){return this.createSecondPoint(e),this.createDistanceLine(),this.createCenterPoint(),this}addEventListeners(){this.centerPoint.addEventListener("select",this.onClick),this.centerPoint.addEventListener("click",this.onClick),this.centerPoint.addEventListener("hoverstart",this.onHoverStart),this.centerPoint.addEventListener("hoverend",this.onHoverEnd)}createPoint(e){const t=document.createElement("canvas"),n=t.getContext("2d");t.width=128,t.height=128,n.beginPath(),n.arc(t.width/2,t.height/2,t.width/4,0,2*Math.PI,!1),n.fillStyle="rgba(255, 255, 255, 1)",n.fill(),n.lineWidth=15,n.strokeStyle=Dr.config.colors.main,n.stroke();const i=new uc(t);i.center=new jl(.5,.5),i.colorSpace=Os,i.needsUpdate=!0,i.rotation=Math.PI;const r=new Hf({color:new Uu(16777215),transparent:!0,depthWrite:!1,depthTest:!1,side:ea,map:i,opacity:1}),a=new nA(r);return a.scale.set(8,8,8),a.position.copy(e),a.renderOrder=4,a}updateFirstPoint(e){return this.firstPoint.position.lerp(e,.5),this}updateSecondPoint(e){return this.secondPoint.position.lerp(e,.5),this}createDistanceLine(){const e=new Eg({color:new Uu(4275774),transparent:!0,depthTest:!1,side:ea,opacity:1});return this.distanceMesh=new Lh(this.createDistanceLineGeometry(),e),this.distanceMesh.renderOrder=3,this.add(this.distanceMesh),this}createDistanceLineGeometry(){const e=new Am(this.firstPoint.position,this.secondPoint.position);return new yg(e,100,.1,100,!1)}updateDistance(){return this.distance=this.firstPoint.position.distanceTo(this.secondPoint.position),this}updateDistanceLine(){return this.distanceMesh.geometry=this.createDistanceLineGeometry(),this}createCenterPoint(){const e=.15,t=document.createElement("canvas");t.width=256,t.height=128;const n=new Am(this.firstPoint.position,this.secondPoint.position),i=new bc;n.getPoint(.5,i);const r=new Hf({color:new Uu(16777215),sizeAttenuation:!1,transparent:!0,depthTest:!1,side:ea,opacity:1});return this.centerPoint=new nA(r),this.centerPoint.scale.set(e,e/(t.width/t.height),e),this.centerPoint.position.copy(i),this.centerPoint.renderOrder=5,this.updateCenterPointText(t),this.add(this.centerPoint),this}updateCenterPointText(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"rgba(255, 255, 255, 0.8)",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"rgba(65, 62, 62, 1)";const i=e.getContext("2d"),r="".concat(Number(this.distance/100).toFixed(2)," m "),a="".concat(Number(.0328084*this.distance).toFixed(2)," ft");return i.clearRect(0,0,e.width,e.height),i.beginPath(),i.fillStyle=t,vM(i,0,0,e.width,e.height,55),i.fill(),i.textAlign="center",i.font="Bold 38px/1 Roboto Mono",i.fillStyle=n,i.fillText(a,e.width/2,100),i.fillText(r,e.width/2,50),this.centerPoint.material.needsUpdate=!0,this.centerPoint.material.map?this.centerPoint.material.map.needsUpdate=!0:this.centerPoint.material.map=Xw(e),this}updateCenterPoint(){const e=new Am(this.firstPoint.position,this.secondPoint.position),t=new bc;return e.getPoint(.5,t),this.updateCenterPointText(this.centerPoint.material.map.image),this.centerPoint.position.lerp(t,.5),this}destroy(){return this.traverse((e=>{e.material&&(e.material.map&&e.material.map.dispose(),e.material.dispose())})),this.centerPoint&&this.centerPoint.removeFromParent(),this.removeFromParent(),this}};const wM=class extends Lh{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:400;var t,n,i;super(),t=this,n="canvas",i=document.createElement("canvas"),n=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(n),n in t?Object.defineProperty(t,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[n]=i,this.canvas.width=e,this.canvas.height=120,this.createGeometry(),this.createMaterial(),this.renderOrder=5}get context(){return this.canvas.getContext("2d")}createGeometry(){return this.geometry=new td(this.canvas.width,this.canvas.height,100,100),this}createMaterial(){this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.beginPath(),this.context.fillStyle="rgba(20, 20, 20, 0.26)",vM(this.context,0,0,this.canvas.width,this.canvas.height,64),this.context.fill();const e=Xw(this.canvas);return this.material=new Eg({color:new Uu(16777215),transparent:!0,side:ea,map:e,opacity:1}),this}dispose(){this.material.map.dispose(),this.material.dispose(),this.removeFromParent()}};const xM=class extends Lh{constructor(e){var t,n,i;super(),t=this,n="canvas",i=document.createElement("canvas"),n=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(n),n in t?Object.defineProperty(t,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[n]=i,this.canvas.height=92,this.canvas.width=92,this.createGeometry(),this.createMaterial(),this.update(e),this.addEventListener("select",(()=>this.onClick())),this.addEventListener("click",(()=>this.onClick())),this.position.set(0,0,1),this.renderOrder=6}get context(){return this.canvas.getContext("2d")}onClick(){}createGeometry(){return this.geometry=new td(this.canvas.width,this.canvas.height,100,100),this}createMaterial(){return this.material=new Eg({color:new Uu(16777215),transparent:!0,side:ea,opacity:1}),this}update(e){return(async e=>{const t=new Promise((t=>{const n=new Image;n.onload=()=>t(n),n.src=e}));return await t})(e).then((e=>{this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.beginPath(),this.context.fillStyle="rgba(255, 255, 255, 1)",vM(this.context,0,0,this.canvas.width,this.canvas.height,46),this.context.fill(),this.context.drawImage(e,20,20,52,52),this.material.needsUpdate=!0,this.material.map?this.material.map.needsUpdate=!0:this.material.map=Xw(this.canvas)})),this}setVisibility(e){this.visible=e,this.scale.setScalar(e?1:0)}};function MM(e,t){let n=e[0],i=e[1],r=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){const o=t[e][0],s=t[e][1],l=t[a][0],c=t[a][1];s>i!=c>i&&n<(l-o)*(i-s)/(c-s)+o&&(r=!r)}return r}function SM(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const EM=class extends Lh{constructor(){super(),SM(this,"canvas",document.createElement("canvas")),SM(this,"planScale",new jl(1,1)),SM(this,"pointer",new jl(-1,-1)),SM(this,"padding",16),SM(this,"image",null),SM(this,"hoverRoom",void 0),this.canvas.width=200,this.canvas.height=200,this.createGeometry(),this.createMaterial(),this.addEventListener("hoverstart",this.onHoverStart),this.addEventListener("hoverend",this.onHoverEnd),this.addEventListener("click",this.handleClick),this.renderOrder=5}get context(){return this.canvas.getContext("2d")}createGeometry(){this.geometry=new td(this.canvas.width,this.canvas.height,100,100)}createMaterial(){return this.material=new Eg({color:new Uu(16777215),transparent:!0,side:ea,opacity:1}),this}async loadImage(e){const t=await fetch(e,{method:"GET",cache:"no-cache"}),n=await t.blob();return this.image=new Image,this.image.src=URL.createObjectURL(n),this}setDisabledState(e){this.disabled=e}setVisibility(e){this.visible=e,this.scale.setScalar(e?.0025:0)}onHoverStart(e){const{x:t,y:n}=e.data,i=this.canvas.width*t,r=this.canvas.height*n;this.pointer.x=i,this.pointer.y=r}onHoverEnd(){this.pointer.x=-1,this.pointer.y=-1}handleClick(){this.hoverRoom&&(this.onClick(this.hoverRoom.id),this.dispatchEvent({type:"closemap"}))}onClick(){}updateSize(e,t){return this.canvas.height=t+2*this.padding,this.canvas.width=e+2*this.padding,this.createGeometry(),this}updateScale(e){let{X:t,Y:n}=e;return this.planScale.x=t,this.planScale.y=n,this}update(e,t,n){if(this.context.clearRect(0,0,this.canvas.width,this.canvas.height),this.context.fillStyle="rgba(255, 255, 255, 1)",vM(this.context,0,0,this.canvas.width,this.canvas.height,20),this.context.fill(),this.image&&this.context.drawImage(this.image,this.padding,this.padding,this.canvas.width-2*this.padding,this.canvas.height-2*this.padding),n){const e=n.children.map((e=>{let{userData:t,panoramaId:n}=e;const i=t.points.map((e=>{let[t,n]=e;return[this.padding+2*t*this.planScale.x,this.padding+2*n*this.planScale.y]})).filter((e=>{let[t,n]=e;return!isNaN(t)&&!isNaN(n)}));return{id:n,points:i,userData:{left:this.padding+2*t.left*this.planScale.x,top:this.padding+2*t.top*this.planScale.y}}})),t=e.filter((e=>MM([this.pointer.x,this.pointer.y],e.points)));if(this.hoverRoom=qw([this.pointer.x,this.pointer.y],t).panorama,this.hoverRoom){const e=this.hoverRoom.points[0];this.context.beginPath(),this.context.fillStyle="rgba(250, 198, 45, 0.3)",this.context.moveTo(e[0],e[1]),this.hoverRoom.points.forEach((e=>{let[t,n]=e;return this.context.lineTo(t,n)})),this.context.fill(),this.context.closePath()}}if(!this.disabled&&t){const n=this.padding+2*t.userData.left*this.planScale.x,i=this.padding+2*t.userData.top*this.planScale.y,r=Math.PI/3*4,a=r-e,o=r+Math.PI/3-e;this.context.beginPath(),this.context.moveTo(n,i),this.context.fillStyle="rgba(250, 198, 45, 0.4)",this.context.arc(n,i,70,a,o),this.context.lineTo(n,i),this.context.fill(),this.context.closePath(),this.context.beginPath(),this.context.fillStyle="rgba(250, 198, 45, 1)",this.context.arc(n,i,16,0,2*Math.PI),this.context.fill(),this.context.closePath(),this.context.beginPath(),this.context.fillStyle="rgba(255, 255, 255, 1)",this.context.arc(n,i,12,0,2*Math.PI),this.context.fill(),this.context.closePath(),this.context.beginPath(),this.context.fillStyle="rgba(250, 198, 45, 1)",this.context.arc(n,i,8,0,2*Math.PI),this.context.fill(),this.context.closePath()}return this.material.needsUpdate=!0,this.material.map?this.material.map.needsUpdate=!0:this.material.map=Xw(this.canvas),this}},_M="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOCAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xODQ4XzYyNCkiPg0KPHBhdGggZD0iTTE4LjgyMjYgMS44NzQ4OUwxLjg3NTA1IDE4LjgyMjRDMS40NzYwMSAxOS4yMjE0IDEuNDQxNSAxOS44MzM5IDEuNzk3OTcgMjAuMTkwNEw3LjgwOTQ4IDI2LjIwMTlDOC4xNjU5NSAyNi41NTgzIDguNzc4NDIgMjYuNTIzOCA5LjE3NzQ2IDI2LjEyNDhMMjYuMTI1IDkuMTc3MjlDMjYuNTI0IDguNzc4MjUgMjYuNTU4NSA4LjE2NTc5IDI2LjIwMiA3LjgwOTMyTDIwLjE5MDUgMS43OTc4MUMxOS44MzQxIDEuNDQxMzQgMTkuMjIxNiAxLjQ3NTg1IDE4LjgyMjYgMS44NzQ4OVoiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4NCjxwYXRoIGQ9Ik0xNS41MjUgNi4zMjg2MUwxOS42MTIyIDEwLjQxNTgiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4NCjxwYXRoIGQ9Ik0xMC45MjY5IDEwLjkyNjhMMTQuMDE0MiAxNC4wMTQiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4NCjxwYXRoIGQ9Ik02LjMyODc0IDE1LjUyNDlMMTAuNDE2IDE5LjYxMjEiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4NCjwvZz4NCjxkZWZzPg0KPGNsaXBQYXRoIGlkPSJjbGlwMF8xODQ4XzYyNCI+DQo8cmVjdCB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIGZpbGw9IndoaXRlIi8+DQo8L2NsaXBQYXRoPg0KPC9kZWZzPg0KPC9zdmc+DQo=";function TM(e,t,n){!function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.set(e,n)}function CM(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function IM(e,t){return function(e,t){return t.get?t.get.call(e):t.value}(e,NM(e,t,"get"))}function DM(e,t,n){return function(e,t,n){if(t.set)t.set.call(e,n);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=n}}(e,NM(e,t,"set"),n),n}function NM(e,t,n){if(!t.has(e))throw new TypeError("attempted to "+n+" private field on non-instance");return t.get(e)}var LM=new WeakMap,RM=new WeakMap;const OM=class extends Tf{constructor(){super(),CM(this,"_matrixWorld",new qc),TM(this,LM,{writable:!0,value:void 0}),TM(this,RM,{writable:!0,value:void 0}),CM(this,"panel",new Tf),CM(this,"rulerButton",void 0),CM(this,"exitButton",void 0),CM(this,"mapButton",void 0),CM(this,"container",void 0),CM(this,"map",void 0),this.createContainer(),this.createButtons(),this.createMap(),this.mapButton.setVisibility(!1),this.map.setVisibility(!1),this.setVisibility(!1)}set rulerButtonAvailable(e){DM(this,LM,e),this.map.visible||this.setRulerButtonVisibility(e)}set mapButtonAvailable(e){DM(this,RM,e),this.map.visible||this.setMapButtonVisibility(e)}onRulerButtonClick(){}onExitButtonClick(){}createContainer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:400;return this.container=new wM(e),this.panel.add(this.container),this}createButtons(){return this.exitButton=new xM("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOCAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik0yMy4xNjYxIDQuODMzOThMMTQgMTQuMDAwMU0xNCAxNC4wMDAxTDQuODMzOCAyMy4xNjYzTTE0IDE0LjAwMDFMMjMuMTY2MSAyMy4xNjYzTTE0IDE0LjAwMDFMNC44MzM4IDQuODMzOTgiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4NCjwvc3ZnPg0K"),this.exitButton.onClick=()=>{if(this.map.visible)return this.closeMap();this.onExitButtonClick()},this.rulerButton=new xM(_M),this.rulerButton.onClick=()=>this.onRulerButtonClick(),this.mapButton=new xM("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOCAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik0yNC4yMTE0IDI0LjQyMTFIMy43ODg2NUMzLjYyNzQ4IDI0LjQyMTEgMy40OTY4MyAyNC4yOTA0IDMuNDk2ODMgMjQuMTI5M0wzLjQ5Njc3IDQuMDY2MjRDMy40OTY3NyAzLjkwNTA3IDMuNjI3NDIgMy43NzQ0MSAzLjc4ODU5IDMuNzc0NDFIMjQuMjExNEMyNC4zNzI1IDMuNzc0NDEgMjQuNTAzMiAzLjkwNTA3IDI0LjUwMzIgNC4wNjYyNFYyNC4xMjkzQzI0LjUwMzIgMjQuMjkwNCAyNC4zNzI1IDI0LjQyMTEgMjQuMjExNCAyNC40MjExWiIgc3Ryb2tlPSIjNDEzRTNFIiBzdHJva2Utd2lkdGg9IjIiLz4NCjxwYXRoIGQ9Ik00LjAwMTQ2IDEwLjA0NTRIMTMuMzY4NEMxMy41Mjk2IDEwLjA0NTQgMTMuNjYwMiAxMC4xNzYxIDEzLjY2MDIgMTAuMzM3MlYyNC4yMDU5IiBzdHJva2U9IiM0MTNFM0UiIHN0cm9rZS13aWR0aD0iMS40NTkxIi8+DQo8cGF0aCBkPSJNMjQuNTAzMiAxMS4wNjU2SDE4LjM2NTFDMTguMjA0IDExLjA2NTYgMTguMDczMyAxMC45MzQ5IDE4LjA3MzMgMTAuNzczOFYzLjU3OTEiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIxLjQ1OTEiLz4NCjwvc3ZnPg0K"),this.mapButton.onClick=()=>this.openMap(),this.panel.add(this.exitButton,this.rulerButton,this.mapButton),this}createMap(){return this.map=new EM,this.map.addEventListener("closemap",this.closeMap.bind(this)),this}openMap(){const e=new bc(0,0,-3);e.applyMatrix4(this._matrixWorld),e.y=0;const t=new bc(0,0,0);t.applyMatrix4(this._matrixWorld),this.map.position.copy(e),this.map.lookAt(t),this.map.updateMatrix(),this.map.setVisibility(!0),this.rulerButton.setVisibility(!1),this.setMapButtonVisibility(!1)}closeMap(){this.map.setVisibility(!1),this.rulerButton.setVisibility(IM(this,LM)),this.setMapButtonVisibility(!0)}setRulerButtonVisibility(e){this.rulerButton.setVisibility(e),this.updateButtonsPositions()}setMapButtonVisibility(e){this.mapButton.setVisibility(e),this.updateButtonsPositions()}setVisibility(e){e?(this.setRulerButtonVisibility(IM(this,LM)),this.setMapButtonVisibility(IM(this,RM))):(this.setRulerButtonVisibility(!1),this.setMapButtonVisibility(!1)),this.exitButton.setVisibility(e),this.container.visible=e,this.visible=e,this.panel.scale.setScalar(e?5e-4:0)}setRulerIcon(e){return e?this.rulerButton.update("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOCAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xODQ4XzY1OSkiPg0KPHBhdGggZD0iTTE4LjgyMjYgMS44NzQ4OUwxLjg3NTA1IDE4LjgyMjRDMS40NzYwMSAxOS4yMjE0IDEuNDQxNSAxOS44MzM5IDEuNzk3OTcgMjAuMTkwNEw3LjgwOTQ4IDI2LjIwMTlDOC4xNjU5NSAyNi41NTgzIDguNzc4NDIgMjYuNTIzOCA5LjE3NzQ2IDI2LjEyNDhMMjYuMTI1IDkuMTc3MjlDMjYuNTI0IDguNzc4MjUgMjYuNTU4NSA4LjE2NTc5IDI2LjIwMiA3LjgwOTMyTDIwLjE5MDUgMS43OTc4MUMxOS44MzQxIDEuNDQxMzQgMTkuMjIxNiAxLjQ3NTg1IDE4LjgyMjYgMS44NzQ4OVoiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4NCjxwYXRoIGQ9Ik0xNS41MjUgNi4zMjg2MUwxOS42MTIyIDEwLjQxNTgiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4NCjxwYXRoIGQ9Ik0xMC45MjY5IDEwLjkyNjhMMTQuMDE0MiAxNC4wMTQiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4NCjxwYXRoIGQ9Ik02LjMyODc0IDE1LjUyNDlMMTAuNDE2IDE5LjYxMjEiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4NCjxyZWN0IHg9IjEwLjYyNDYiIHk9IjYuMjkzNDYiIHdpZHRoPSIxNS44MDAyIiBoZWlnaHQ9IjMuNjYxNiIgdHJhbnNmb3JtPSJyb3RhdGUoNDUgMTAuNjI0NiA2LjI5MzQ2KSIgZmlsbD0id2hpdGUiLz4NCjxwYXRoIGQ9Ik0zLjAwNjI5IDQuNzExNDNMMjIuOTkzOCAyNS4yODc5IiBzdHJva2U9IiM0MTNFM0UiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+DQo8L2c+DQo8ZGVmcz4NCjxjbGlwUGF0aCBpZD0iY2xpcDBfMTg0OF82NTkiPg0KPHJlY3Qgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4IiBmaWxsPSJ3aGl0ZSIvPg0KPC9jbGlwUGF0aD4NCjwvZGVmcz4NCjwvc3ZnPg0K"):this.rulerButton.update(_M)}updateButtonsPositions(){return this.container.dispose(),this.map.visible?(this.exitButton.position.x=0,void this.createContainer(120)):this.mapButton.visible?this.rulerButton.visible?(this.rulerButton.position.x=0,this.exitButton.position.x=140,this.mapButton.position.x=-140,void this.createContainer(400)):(this.exitButton.position.x=70,this.mapButton.position.x=-70,void this.createContainer(260)):this.rulerButton.visible?(this.rulerButton.position.x=-70,this.exitButton.position.x=70,void this.createContainer(260)):(this.exitButton.position.x=0,void this.createContainer(120))}update(e,t,n,i){this._matrixWorld=e.matrixWorld,this.map.visible&&this.map.update(t,n,i);const r=new bc(.025,-.27,-.7);r.applyMatrix4(this._matrixWorld);const a=new ou(0,0,0);a.setFromRotationMatrix(this._matrixWorld),this.panel.position.lerp(r,.25),this.panel.rotation.copy(a),this.panel.rotateX(ex(-30)),this.panel.updateMatrix()}},PM="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzgiIGhlaWdodD0iMzgiIHZpZXdCb3g9IjAgMCAzOCAzOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI5Ljk2ODUgMjQuMjM4M0wyOS4yMzQ2IDIyLjg0MzJMMjkuOTY4NSAyNC4yMzgzWk0xMS45MDQ1IDI3LjIyMjFDMTIuNzQyMiAyNy40NTkzIDEzLjYxMzUgMjYuOTcyNiAxMy44NTA4IDI2LjEzNDlDMTQuMDg4IDI1LjI5NzMgMTMuNjAxMyAyNC40MjU5IDEyLjc2MzYgMjQuMTg4N0wxMS45MDQ1IDI3LjIyMjFaTTIyLjU1NTcgMjQuODUxM0MyMS42OTI1IDI0Ljk2NDEgMjEuMDg0MSAyNS43NTUzIDIxLjE5NjkgMjYuNjE4NkMyMS4zMDk3IDI3LjQ4MTggMjIuMTAxIDI4LjA5MDIgMjIuOTY0MiAyNy45Nzc0TDIyLjU1NTcgMjQuODUxM1pNMzAuNzAyMyAyNS42MzM1QzMzLjg4MDcgMjMuOTYxNiAzNi4yMDA0IDIxLjUwMzkgMzYuNzY0NiAxOC41NTVMMzMuNjY4IDE3Ljk2MjZDMzMuMzUwMiAxOS42MjM5IDMxLjkzMzUgMjEuNDIzNiAyOS4yMzQ2IDIyLjg0MzJMMzAuNzAyMyAyNS42MzM1Wk0zNi43NjQ2IDE4LjU1NUMzNy4zNDMxIDE1LjUzMSAzNS45NTI2IDEyLjY3NDQgMzMuMzY1NCAxMC41Mjg4TDMxLjM1MjkgMTIuOTU1NkMzMy4zMjc3IDE0LjU5MzMgMzMuOTcxNSAxNi4zNzY1IDMzLjY2OCAxNy45NjI2TDM2Ljc2NDYgMTguNTU1Wk0zMy4zNjU0IDEwLjUyODhDMzAuNzk2NyA4LjM5ODU2IDI3LjEwNzIgNi45ODQ4MSAyMy4wNjAzIDYuNDQxNTRMMjIuNjQwOCA5LjU2NjIyQzI2LjI3ODkgMTAuMDU0NiAyOS4zNTk1IDExLjMwMjUgMzEuMzUyOSAxMi45NTU2TDMzLjM2NTQgMTAuNTI4OFpNMjMuMDYwMyA2LjQ0MTU0QzE4Ljk5OTkgNS44OTY0NyAxNC43Mjk2IDYuMjQ2MjYgMTEuMDQwNCA3LjQ0NjgzTDEyLjAxNiAxMC40NDQ4QzE1LjIyNSA5LjQwMDQ5IDE5LjAxNjEgOS4wNzk2MyAyMi42NDA4IDkuNTY2MjJMMjMuMDYwMyA2LjQ0MTU0Wk0xMS4wNDA0IDcuNDQ2ODNDNy4zODAxOCA4LjYzNzk2IDQuMzYyMzQgMTAuNjQ5MyAyLjc5NzI5IDEzLjI4MzZMNS41MDc3NSAxNC44OTM5QzYuNTQ0NDQgMTMuMTQ4OSA4Ljc3ODA0IDExLjQ5ODUgMTIuMDE2IDEwLjQ0NDhMMTEuMDQwNCA3LjQ0NjgzWk0yLjc5NzI5IDEzLjI4MzZDMS4xNjczMSAxNi4wMjcyIDEuMzMzNzQgMTkuMDkyMiAzLjE4NzIxIDIxLjcyMzlMNS43NjQ4IDE5LjkwODVDNC41OTk4OSAxOC4yNTQ1IDQuNTM2MDEgMTYuNTI5NSA1LjUwNzc1IDE0Ljg5MzlMMi43OTcyOSAxMy4yODM2Wk0zLjE4NzIxIDIxLjcyMzlDNC45NzUwMSAyNC4yNjIzIDguMTQ0OTEgMjYuMTU3MyAxMS45MDQ1IDI3LjIyMjFMMTIuNzYzNiAyNC4xODg3QzkuNDIwMzcgMjMuMjQxOCA2Ljk5NTM3IDIxLjY1NTcgNS43NjQ4IDE5LjkwODVMMy4xODcyMSAyMS43MjM5Wk0yMi45NjQyIDI3Ljk3NzRDMjUuNzc4MyAyNy42MDk3IDI4LjQ0OTcgMjYuODE4NCAzMC43MDIzIDI1LjYzMzVMMjkuMjM0NiAyMi44NDMyQzI3LjM2NTEgMjMuODI2NiAyNS4wNjM3IDI0LjUyMzUgMjIuNTU1NyAyNC44NTEzTDIyLjk2NDIgMjcuOTc3NFoiIGZpbGw9IiM0MTNFM0UiLz4KPHBhdGggZD0iTTI1LjI1MzYgMTkuNDMzM0wxOS45Njg3IDI2LjA4MzlMMjYuMDg3MyAzMC45NDYzIiBzdHJva2U9IiM0MTNFM0UiIHN0cm9rZS13aWR0aD0iMy4xNTI3MSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPgo=",zM="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik0yMS44MzU0IDIuMTQwNzhMMi4zNzcxOCAyMS41OTlDMS45MTkwMiAyMi4wNTcyIDEuODc5NCAyMi43NjA0IDIuMjg4NjggMjMuMTY5N0w5LjE5MDc4IDMwLjA3MThDOS42MDAwNiAzMC40ODEgMTAuMzAzMyAzMC40NDE0IDEwLjc2MTQgMjkuOTgzM0wzMC4yMTk3IDEwLjUyNUMzMC42Nzc4IDEwLjA2NjkgMzAuNzE3NCA5LjM2MzY2IDMwLjMwODIgOC45NTQzOEwyMy40MDYxIDIuMDUyMjhDMjIuOTk2OCAxLjY0Mjk5IDIyLjI5MzYgMS42ODI2MiAyMS44MzU0IDIuMTQwNzhaIiBzdHJva2U9IiM0MTNFM0UiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4NCjxwYXRoIGQ9Ik0xOC4wNDkzIDcuMjU0MjdMMjIuNzQyMSAxMS45NDciIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPg0KPHBhdGggZD0iTTEyLjc3IDEyLjUzMzZMMTYuMzE0NiAxNi4wNzgyIiBzdHJva2U9IiM0MTNFM0UiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4NCjxwYXRoIGQ9Ik03LjQ5MDcyIDE3LjgxMjlMMTIuMTgzNSAyMi41MDU2IiBzdHJva2U9IiM0MTNFM0UiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4NCjwvc3ZnPg0K",kM="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTkuMTYzMiAyNC45MDY3VjUuOTA2NjhIOC45NjI1N0wwLjQ4Mjg1NyA4Ljg5NVYxMi4wNTNMNS40MDQ4NCAxMC4zMzA0VjI0LjkwNjdIOS4xNjMyWiIgZmlsbD0iIzQxM0UzRSIvPgo8cGF0aCBkPSJNMjMuMTI2NiAxNS4xOTc5TDE5Ljk5NjkgMTAuNzg3MkgxNS45OTc4TDIwLjgzOTUgMTcuNzE2NEwxNS44MTA1IDI0LjkwNjdIMTkuODM2NEwyMy4xNCAyMC4yODcyTDI2LjQ3MDQgMjQuOTA2N0gzMC40ODI5TDI1LjQ1MzkgMTcuNzE2NEwzMC4zMDkgMTAuNzg3MkgyNi4zMDk5TDIzLjEyNjYgMTUuMTk3OVoiIGZpbGw9IiM0MTNFM0UiLz4KPC9zdmc+Cg==";function UM(e,t,n){return t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}fn({useProxies:"never"});const BM=new class{constructor(){UM(this,"currentAutoRotateIcon",PM),UM(this,"currentRulerIcon",zM),UM(this,"currentFovIcon",kM),UM(this,"rulerInstructionShown",!1),UM(this,"tempPointer",new jl),UM(this,"raycaster",new Sy),UM(this,"tempMatrix",new qc),UM(this,"vrSessionSupported",!1),UM(this,"rulerButtonEnabled",!1),UM(this,"spritesGroup",new Tf),UM(this,"rulersGroup",new Tf),UM(this,"renderer",new gx),UM(this,"floorsGroup",new Tf),UM(this,"rulerModeEnabled",!1),UM(this,"autoRotateState",!1),UM(this,"pointer",new jl),UM(this,"panoramasGroup",null),UM(this,"initialized",!1),UM(this,"clock",new Xv),UM(this,"scene",new mM),UM(this,"animation",!1),UM(this,"currentPanoramaId",void 0),UM(this,"interactiveGroup",void 0),UM(this,"tempRuler",null),UM(this,"currentPanorama",void 0),UM(this,"loading",!1),UM(this,"vrControlPanel",void 0),UM(this,"camera",void 0),Pn(this),this.camera=new AM(this.renderer),this.interactiveGroup=new ix(this.renderer,this.camera),this.vrControlPanel=new OM,this.spritesGroup.rotation.y=Math.PI/2,this.floorsGroup.rotation.y=Math.PI,this.scene.add(this.interactiveGroup,this.rulersGroup,this.floorsGroup),this.interactiveGroup.add(this.spritesGroup,this.vrControlPanel.panel,this.vrControlPanel.map),this.vrControlPanel.onRulerButtonClick=this.toggleRulerMode.bind(this),this.vrControlPanel.onExitButtonClick=this.exitVr.bind(this),this.vrControlPanel.map.onClick=this.setCurrentPanoramaById.bind(this),this.setRulerButtonState(!1),this.addEventListeners()}get currentViewAngle(){const e=this.currentCamera.getWorldDirection(new bc),t=new bc(-1,0,0),n=e.x*t.x+e.z*t.z,i=Math.sqrt(Math.pow(e.x,2)+Math.pow(e.z,2)),r=Math.sqrt(Math.pow(t.x,2)+Math.pow(t.z,2)),a=Math.acos(n/(i*r));return Math.sign(e.z)*a}get currentCamera(){return this.renderer.xr.getCamera().cameras[0]||this.camera}get currentControls(){return this.camera.deviceOrientationControls.enabled?this.camera.deviceOrientationControls:this.camera.controls}get isMobileDevice(){return Ax.isMobile||Ax.isTablet}getPanoramaById(e){return this.panoramasGroup.children.find((t=>{let{panoramaId:n}=t;return n===e}))}setLoadingState(e){this.loading=e}setInitializedState(e){this.initialized=e}updateWindowSize(e,t){return this.renderer.setSize(e,t),this.camera.aspect=e/t,this.camera.updateProjectionMatrix(),this.render()}enableRender(){this.renderer.setAnimationLoop(this.render.bind(this))}disbleRender(){this.renderer.setAnimationLoop(null)}render(){const e=this.clock.getDelta();this.currentControls.update(e),this.camera.updateProjectionMatrix(),this.autoRotateState&&!this.camera.controls.disableAutoRotate&&(this.camera.controls.azimuthAngle-=ex(10*e)),this.renderer.currentVrSession||this.raycaster.setFromCamera(this.pointer,this.camera),this.tempRuler&&!this.isMobileDevice&&this.updateRuler(),this.renderer.hover?this.renderer.domElement.style.cursor="pointer":this.rulerModeEnabled?this.renderer.domElement.style.cursor="none":this.camera.controls.holding?this.renderer.domElement.style.cursor="grabbing":this.renderer.domElement.style.cursor="grab";const t=document.querySelector(".widget-tab__panorama-map__fov");return t&&t.style.setProperty("--rotate",-this.currentViewAngle),this.renderer.currentVrSession&&this.vrControlPanel.update(this.currentCamera,this.currentViewAngle,this.getPanoramaById(this.currentPanoramaId),this.panoramasGroup),this.renderer.render(this.scene,this.camera),this}async init(e,t,n,i){return this.cameraFovValues={x1:Dr.config.panoramaFov,x2:Dr.config.panoramaFov/2},this.setCameraFov(Dr.config.panoramaFov),await this.createPanoramasGroup(e,t,n,i),await this.checkVrSessionSupport(),this.setInitializedState(!0),this}async createPanoramasGroup(e,t,n,i){const r=new ux(i);return this.floorsGroup.add(r),this.setCurrentPanoramasGroup(i),await this.createPanoramas(e,t,n),await this.setInitialCurrentPanorama(),this}addEventListeners(){const{domElement:e}=this.renderer,t=this.interactiveGroup.controller2||this.interactiveGroup.controller1;e.addEventListener("contextmenu",(e=>e.preventDefault())),e.addEventListener("pointerdown",this.onPointerDown.bind(this)),e.addEventListener("pointerup",this.onPointerUp.bind(this)),e.addEventListener("mousemove",this.onMouseMove.bind(this)),t.addEventListener("move",this.onControllerMove.bind(this)),t.addEventListener("select",this.onControllerSelect.bind(this))}onMouseMove(e){let{clientX:t,clientY:n}=e;this.pointer.x=t/Dr.config.width*2-1,this.pointer.y=-n/Dr.config.height*2+1}onPointerDown(e){let{clientX:t,clientY:n}=e;this.tempPointer.x=Number(t.toFixed(0)),this.tempPointer.y=Number(n.toFixed(0)),this.onMouseMove({clientX:t,clientY:n})}onPointerUp(e){let{clientX:t,clientY:n}=e;if(!this.rulerModeEnabled)return;const i=Math.abs(this.tempPointer.x-Number(t.toFixed(0)))<10,r=Math.abs(this.tempPointer.y-Number(n.toFixed(0)))<10;i&&r&&this.addRulerPoint()}onControllerMove(e){const t=e.target;this.tempMatrix.identity().extractRotation(t.matrixWorld),this.raycaster.ray.origin.setFromMatrixPosition(t.matrixWorld),this.raycaster.ray.direction.set(0,0,-1).applyMatrix4(this.tempMatrix)}onControllerSelect(){this.rulerModeEnabled&&this.addRulerPoint()}async enterVr(){return await this.renderer.enterVR().then((()=>{this.vrControlPanel.setVisibility(!0)}))}async exitVr(){return await this.renderer.exitVR().then((()=>{this.camera.fov=this.cameraFov,this.vrControlPanel.setVisibility(!1)}))}async checkVrSessionSupport(){const e=await this.renderer.checkVrSessionSupport();return this.setVrSessionSupport(e),this.vrSessionSupported}setVrSessionSupport(e){this.vrSessionSupported=e}setRulerInstructionShown(e){this.rulerInstructionShown=e}setRulerButtonState(e){this.rulerButtonEnabled=e,this.vrControlPanel.rulerButtonAvailable=e}setRulerMode(e){this.rulerModeEnabled=e,this.vrControlPanel.setRulerIcon(e),this.rulersGroup.children.forEach((t=>{const n=!!e&&t.userData.panoramaId===this.currentPanorama.panoramaId;t.centerPoint&&(t.centerPoint.visible=n),t.visible=n})),e?(this.currentRulerIcon="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik0yMi45MjI4IDE3LjgyMkwyNS4zNTUgMTUuMzg5N0wzMC4yMTk2IDEwLjUyNTFDMzAuNjc3OCAxMC4wNjcgMzAuNzE3NCA5LjM2Mzc4IDMwLjMwODEgOC45NTQ1TDIzLjQwNiAyLjA1MjRDMjIuOTk2NyAxLjY0MzEyIDIyLjI5MzUgMS42ODI3NCAyMS44MzU0IDIuMTQwOUwxNi45NzA4IDcuMDA1NDZMMTQuNTM4NSA5LjQzNzc0TTE5LjMxNzggMjEuNDI3TDEwLjc2MTQgMjkuOTgzNEMxMC4zMDMyIDMwLjQ0MTUgOS42IDMwLjQ4MTIgOS4xOTA3MiAzMC4wNzE5TDIuMjg4NjIgMjMuMTY5OEMxLjg3OTMzIDIyLjc2MDUgMS45MTg5NiAyMi4wNTczIDIuMzc3MTIgMjEuNTk5MUwxMC43NjE0IDEzLjIxNDkiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPg0KPHBhdGggZD0iTTE4LjA0OTMgNy4yNTQzOUwyMi43NDIgMTEuOTQ3MSIgc3Ryb2tlPSIjNDEzRTNFIiBzdHJva2Utd2lkdGg9IjIuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+DQo8cGF0aCBkPSJNNy40OTA2IDE3LjgxM0wxMi4xODM0IDIyLjUwNTciIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPg0KPHBhdGggZD0iTTEuNTQ5MjYgMy40OTYwOUwyOS4xMDIzIDMwLjgxMTMiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyLjI4MzIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4NCjwvc3ZnPg0K",this.isMobileDevice||this.createTempRuler()):(this.currentRulerIcon=zM,this.destroyTempRuler())}toggleRulerMode(){this.setRulerMode(!this.rulerModeEnabled)}getRulerPoint(){const{data:e,width:t,height:n}=this.currentPanorama.depthMap,{x:i,y:r,z:a}=this.raycaster.ray.direction,o=e.length/n,s=(1+Math.atan2(a,i)/Math.PI)/2,l=Math.acos(r)/Math.PI,c=e[(Math.round(n-l*n)-1)*o+4*Math.round(s*t)];return{depthValue:c,position:new bc(i,r,a).multiplyScalar(c).add(this.currentCamera.position)}}updateRuler(){if(this.renderer.hover)return;const{position:e}=this.getRulerPoint();return this.tempRuler.secondPoint?this.tempRuler.updateSecondPoint(e).updateDistance().updateDistanceLine().updateCenterPoint():this.tempRuler.updateFirstPoint(e)}finishRuler(){return this.interactiveGroup.add(this.tempRuler.centerPoint),this.tempRuler.addEventListeners(),this.tempRuler=null,this}addRulerPoint(){if(this.renderer.hover)return;const{position:e}=this.getRulerPoint();return this.isMobileDevice?this.tempRuler?void(this.tempRuler.firstPoint&&(this.tempRuler.createRest(e),this.updateRuler(),this.finishRuler())):this.createTempRuler():this.tempRuler.secondPoint?(this.finishRuler(),this.createTempRuler()):this.tempRuler.createRest(e)}createTempRuler(){const{position:e}=this.getRulerPoint();return this.tempRuler=new bM(this.currentPanorama.panoramaId).createFirstPoint(e),this.rulersGroup.add(this.tempRuler),this}destroyTempRuler(){return this.tempRuler?(this.tempRuler.destroy(),this.tempRuler=null,this):this}setCameraFov(e){this.camera.fov=e,this.cameraFov=e,e===this.cameraFovValues.x1?this.currentFovIcon=kM:this.currentFovIcon="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjcwNzYgMjQuOTA2N1YyMS45OTc5SDUuMTYyMTRMOC44MjY0MSAxOC4yMTUxQzkuNDU5NDEgMTcuNTgwMyAxMC4wMzQ1IDE2Ljk3NTkgMTAuNTUxNiAxNi40MDJDMTEuMDY4NyAxNS44MTkzIDExLjUxNDQgMTUuMjQ5NyAxMS44ODg5IDE0LjY5MzJDMTIuMjU0NCAxNC4xMzY3IDEyLjUzNTMgMTMuNTc1OCAxMi43MzE0IDEzLjAxMDVDMTIuOTM2NSAxMi40MzY2IDEzLjAzOSAxMS44MzY2IDEzLjAzOSAxMS4yMTA0QzEzLjAzOSAxMC4zODQzIDEyLjkwNTIgOS42MzIxMiAxMi42Mzc4IDguOTUzODNDMTIuMzcwMyA4LjI2Njg0IDExLjk4MjUgNy42Nzk4NiAxMS40NzQzIDcuMTkyODhDMTAuOTU3MiA2LjcwNTkxIDEwLjMxNTMgNi4zMjc2MyA5LjU0ODU2IDYuMDU4MDVDOC43OTA3NSA1Ljc4ODQ3IDcuOTE3MDMgNS42NTM2OSA2LjkyNzQxIDUuNjUzNjlDNS44OTMyMSA1LjY1MzY5IDQuOTQ4MTcgNS44MTg5MSA0LjA5MjI4IDYuMTQ5MzZDMy4yNDUzMSA2LjQ3MTExIDIuNTIzMTYgNi45MTQ2MSAxLjkyNTgyIDcuNDc5ODVDMS4zMTk1NiA4LjA0NTA5IDAuODUxNSA4LjcwNTk5IDAuNTIxNjI3IDkuNDYyNTVDMC4xOTE3NTQgMTAuMjEwNCAwLjAyNjgxNzMgMTEuMDA2MSAwLjAyNjgxNzMgMTEuODQ5NkgzLjc1Nzk1QzMuNzU3OTUgMTEuMzM2NSAzLjgyNDgyIDEwLjg4IDMuOTU4NTUgMTAuNDhDNC4wOTIyOCAxMC4wOCA0LjI4ODQyIDkuNzQ1MTcgNC41NDY5NyA5LjQ3NTU5QzQuNzk2NjEgOS4yMTQ3MSA1LjEwODY1IDkuMDE5MDUgNS40ODMxIDguODg4NjFDNS44NjY0NyA4Ljc0OTQ3IDYuMzA3NzggOC42Nzk5IDYuODA3MDUgOC42Nzk5QzcuMTkwNDIgOC42Nzk5IDcuNTM4MTIgOC43NDA3NyA3Ljg1MDE2IDguODYyNTJDOC4xNzExMiA4Ljk4NDI2IDguNDQ3NSA5LjE1ODE4IDguNjc5MyA5LjM4NDI4QzguOTAyMTkgOS42MTkwNyA5LjA3NjA0IDkuOTAxNjkgOS4yMDA4NiAxMC4yMzIxQzkuMzI1NjggMTAuNTYyNiA5LjM4ODA5IDEwLjk0MDkgOS4zODgwOSAxMS4zNjdDOS4zODgwOSAxMS42NTM5IDkuMzM5MDUgMTEuOTQ5NiA5LjI0MDk4IDEyLjI1NEM5LjE1MTgzIDEyLjU1ODMgOS4wMDQ3MiAxMi44ODQ0IDguNzk5NjYgMTMuMjMyM0M4LjU4NTY5IDEzLjU4ODggOC4zMDkzMSAxMy45ODAxIDcuOTcwNTIgMTQuNDA2MkM3LjYzMTczIDE0LjgzMjMgNy4yMTcxNiAxNS4zMDYzIDYuNzI2ODEgMTUuODI4TDAuNDI4MDE1IDIyLjQyODNWMjQuOTA2N0gxMy43MDc2WiIgZmlsbD0iIzQxM0UzRSIvPgo8cGF0aCBkPSJNMjQuMDQ1MiAxNS4yMDE5TDIwLjkxNTggMTAuNzkzSDE2LjkxNzJMMjEuNzU4MyAxNy43MTk0TDE2LjczIDI0LjkwNjdIMjAuNzU1M0wyNC4wNTg1IDIwLjI4OTFMMjcuMzg4NSAyNC45MDY3SDMxLjQwMDRMMjYuMzcyMSAxNy43MTk0TDMxLjIyNjYgMTAuNzkzSDI3LjIyOEwyNC4wNDUyIDE1LjIwMTlaIiBmaWxsPSIjNDEzRTNFIi8+Cjwvc3ZnPgo="}toggleFov(){if(this.camera.fov===this.cameraFovValues.x1)return this.setCameraFov(this.cameraFovValues.x2);this.setCameraFov(this.cameraFovValues.x1)}setAutoRotateState(e){this.autoRotateState=e,this.currentAutoRotateIcon=e?"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzgiIGhlaWdodD0iMzgiIHZpZXdCb3g9IjAgMCAzOCAzOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTIyLjc2IDI2LjQxNDNDMjUuNDIxIDI2LjA2NjYgMjcuOTA3NCAyNS4zMjI1IDI5Ljk2ODUgMjQuMjM4M0MzMi45MDcxIDIyLjY5MjYgMzQuNzc1MyAyMC41NjM5IDM1LjIxNjMgMTguMjU4OEMzNS42NTczIDE1Ljk1MzcgMzQuNjQwMSAxMy42MzM4IDMyLjM1OTEgMTEuNzQyMkMzMC4wNzgxIDkuODUwNTEgMjYuNjkzMSA4LjUxOTY4IDIyLjg1MDUgOC4wMDM4NUMxOS4wMDggNy40ODgwMiAxNC45NzczIDcuODIzMzQgMTEuNTI4MiA4Ljk0NTc3QzguMDc5MTEgMTAuMDY4MiA1LjQ1MzM5IDExLjg5OTEgNC4xNTI1MiAxNC4wODg3QzMuODE4MTEgMTQuNjUxNiAzLjU3NzI4IDE1LjIyOCAzLjQyOTY1IDE1LjgxMDMiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIzLjE1MjcxIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTI1LjI1MzYgMTkuNDMzM0wxOS45Njg3IDI2LjA4MzlMMjYuMDg3MyAzMC45NDYzIiBzdHJva2U9IiM0MTNFM0UiIHN0cm9rZS13aWR0aD0iMy4xNTI3MSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0xNC40Nzg1IDIwLjk2OTdMNS40MTAyMyAzMC4wMzgiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIzLjE1IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTE0LjQ3ODUgMzAuMDM4TDUuNDEwMjMgMjAuOTY5NyIgc3Ryb2tlPSIjNDEzRTNFIiBzdHJva2Utd2lkdGg9IjMuMTUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K":PM}toggleAutoRotate(){this.setAutoRotateState(!this.autoRotateState),this.autoRotateState?this.camera.deviceOrientationControls.disable():Ax.deviceOrientationGranted&&this.camera.deviceOrientationControls.enable()}setCurrentPanoramasGroup(e){const t=this.floorsGroup.children.find((t=>t.floorIndex===e));if(t)return this.panoramasGroup=t,this}async setCurrentPanoramaById(e){var t;if((null===(t=this.currentPanorama)||void 0===t?void 0:t.panoramaId)===e)return;const n=this.getPanoramaById(e);if(this.animation||!n)return this;this.setCurrentPanoramaId(e),this.animation=!0,n.loaded||(this.setLoadingState(!0),await n.load(),this.setLoadingState(!1));for(const t of this.spritesGroup.children)t.visible=t.userData.panoramaId===e;if(this.rulerModeEnabled)for(const t of this.rulersGroup.children){const n=t.userData.panoramaId===e;t.centerPoint&&(t.centerPoint.visible=n),t.visible=n}this.currentPanorama&&(this.currentPanorama.renderOrder=0),n.renderOrder=1,await n.fadeIn(),this.currentPanorama&&await this.currentPanorama.fadeOut();const i=null!==n.depthMap;return this.setCurrentPanorama(n),this.animation=!1,this.destroyTempRuler(),this.setRulerButtonState(i),this.rulerModeEnabled&&this.setRulerMode(i),this}setCurrentPanoramaId(e){this.currentPanoramaId=e}setCurrentPanorama(e){this.currentPanorama=e}async setInitialCurrentPanorama(){const e=this.panoramasGroup.children.find((e=>0===e.userData.panorama_index));return await this.setCurrentPanoramaById(e.panoramaId),this}async createPanoramas(e,t,n){await this.panoramasGroup.createPanoramas(e,t,n);for(const e of this.panoramasGroup.children)for(const t of e.links)t.onClick=()=>{this.setCurrentPanoramaById(t.userData.targetId)},this.spritesGroup.add(t);return this}};if(!t.useState)throw new Error("mobx-react-lite requires React with Hooks support");if(!function(e,t,n){return Ci((function(){var i=ci(e,n)[fe];null!=t||(t=function(e){return ee(e,ue)||Q(e,ue,re({},e[ue])),e[ue]}(e)),J(t).forEach((function(e){return i.make_(e,t[e])}))})),e})throw new Error("mobx-react-lite@3 requires mobx at least version 6 to be available");var FM=r(935);function jM(e){e()}function HM(e){return mn(Ei(e,t));var t}var VM=function(){function e(e){var t=this;Object.defineProperty(this,"finalize",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"registrations",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"sweepTimeout",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"sweep",{enumerable:!0,configurable:!0,writable:!0,value:function(e){void 0===e&&(e=1e4),clearTimeout(t.sweepTimeout),t.sweepTimeout=void 0;var n=Date.now();t.registrations.forEach((function(i,r){n-i.registeredAt>=e&&(t.finalize(i.value),t.registrations.delete(r))})),t.registrations.size>0&&t.scheduleSweep()}}),Object.defineProperty(this,"finalizeAllImmediately",{enumerable:!0,configurable:!0,writable:!0,value:function(){t.sweep(0)}})}return Object.defineProperty(e.prototype,"register",{enumerable:!1,configurable:!0,writable:!0,value:function(e,t,n){this.registrations.set(n,{value:t,registeredAt:Date.now()}),this.scheduleSweep()}}),Object.defineProperty(e.prototype,"unregister",{enumerable:!1,configurable:!0,writable:!0,value:function(e){this.registrations.delete(e)}}),Object.defineProperty(e.prototype,"scheduleSweep",{enumerable:!1,configurable:!0,writable:!0,value:function(){void 0===this.sweepTimeout&&(this.sweepTimeout=setTimeout(this.sweep,1e4))}}),e}(),WM=new("undefined"!=typeof FinalizationRegistry?FinalizationRegistry:VM)((function(e){var t;null===(t=e.reaction)||void 0===t||t.dispose(),e.reaction=null})),GM=!1;function QM(){return GM}var XM=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,r,a=n.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(i=a.next()).done;)o.push(i.value)}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return o};function YM(e){return"observer".concat(e)}var ZM=function(){};function qM(){return new ZM}var KM="function"==typeof Symbol&&Symbol.for,JM=KM?Symbol.for("react.forward_ref"):"function"==typeof t.forwardRef&&(0,t.forwardRef)((function(e){return null})).$$typeof,$M=KM?Symbol.for("react.memo"):"function"==typeof t.memo&&(0,t.memo)((function(e){return null})).$$typeof;function eS(e,n){var i;if($M&&e.$$typeof===$M)throw new Error("[mobx-react-lite] You are trying to use `observer` on a function component wrapped in either another `observer` or `React.memo`. The observer already applies 'React.memo' for you.");if(QM())return e;var r=null!==(i=null==n?void 0:n.forwardRef)&&void 0!==i&&i,a=e,o=e.displayName||e.name;if(JM&&e.$$typeof===JM&&(r=!0,"function"!=typeof(a=e.render)))throw new Error("[mobx-react-lite] `render` property of ForwardRef was not a function");var s,l,c=function(e,n){return function(e,n){if(void 0===n&&(n="observed"),QM())return e();var i=XM(t.useState(qM),1)[0],r=XM(t.useState(),2)[1],a=function(){return r([])},o=t.useRef(null);o.current||(o.current={reaction:null,mounted:!1,changedBeforeMount:!1});var s,l,c=o.current;if(c.reaction||(c.reaction=new Gt(YM(n),(function(){c.mounted?a():c.changedBeforeMount=!0})),WM.register(i,c,c)),t.useDebugValue(c.reaction,HM),t.useEffect((function(){return WM.unregister(c),c.mounted=!0,c.reaction?c.changedBeforeMount&&(c.changedBeforeMount=!1,a()):(c.reaction=new Gt(YM(n),(function(){a()})),a()),function(){c.reaction.dispose(),c.reaction=null,c.mounted=!1,c.changedBeforeMount=!1}}),[]),c.reaction.track((function(){try{s=e()}catch(e){l=e}})),l)throw l;return s}((function(){return a(e,n)}),o)};return""!==o&&(c.displayName=o),e.contextTypes&&(c.contextTypes=e.contextTypes),r&&(c=(0,t.forwardRef)(c)),c=(0,t.memo)(c),s=e,l=c,Object.keys(s).forEach((function(e){tS[e]||Object.defineProperty(l,e,Object.getOwnPropertyDescriptor(s,e))})),c}var tS={$$typeof:!0,render:!0,compare:!0,type:!0,displayName:!0};!function(e){e||(e=jM),fn({reactionScheduler:e})}(FM.unstable_batchedUpdates),WM.finalizeAllImmediately;const nS={smallMobile:374,mobile:670,tablet:1100,laptop:1440},iS="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEiIGhlaWdodD0iNTEiIHZpZXdCb3g9IjAgMCA1MSA1MSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM5LjQwODkgMTAuMjc2OUwxMS4wMzQ1IDM4LjY1MTMiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIzLjE1MjcxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTM5LjQwODkgMzguNjUxM0wxMS4wMzQ1IDEwLjI3NjkiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIzLjE1MjcxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+Cg==",rS=eS((()=>kr.enabled?kr.active?t.createElement("button",{type:"button",className:"widget-exit-fullscreen",onClick:()=>kr.exit()},t.createElement("img",{src:iS,alt:"exit-fullscreen"})):t.createElement("button",{type:"button",className:"widget-enter-fullscreen",onClick:()=>kr.enter()},t.createElement("img",{src:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTEiIHZpZXdCb3g9IjAgMCA1MCA1MSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTMxLjI1IDkuODc1SDQwLjYyNVYxOS4yNSIgc3Ryb2tlPSIjNDEzRTNFIiBzdHJva2Utd2lkdGg9IjMuMTUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMjkuNjg3NSAyMC44MTI1TDQwLjYyNSA5Ljg3NSIgc3Ryb2tlPSIjNDEzRTNFIiBzdHJva2Utd2lkdGg9IjMuMTUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTguNzUgNDEuMTI1SDkuMzc1VjMxLjc1IiBzdHJva2U9IiM0MTNFM0UiIHN0cm9rZS13aWR0aD0iMy4xNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yMC4zMTI1IDMwLjE4NzVMOS4zNzUgNDEuMTI1IiBzdHJva2U9IiM0MTNFM0UiIHN0cm9rZS13aWR0aD0iMy4xNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=",alt:"enter-fullscreen"})):null));function aS(e){return aS="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},aS(e)}function oS(e){var t=function(e,t){if("object"!=aS(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=aS(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==aS(t)?t:String(t)}function sS(e,t,n){return(t=oS(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function lS(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function cS(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?lS(Object(n),!0).forEach((function(t){sS(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):lS(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function uS(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function hS(e,t){if(e){if("string"==typeof e)return uS(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?uS(e,t):void 0}}function dS(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,o,s=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(s.push(i.value),s.length!==t);l=!0);}catch(e){c=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw r}}return s}}(e,t)||hS(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pS(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},a=Object.keys(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var fS=["defaultInputValue","defaultMenuIsOpen","defaultValue","inputValue","menuIsOpen","onChange","onInputChange","onMenuClose","onMenuOpen","value"];function AS(){return AS=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},AS.apply(this,arguments)}function mS(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,oS(i.key),i)}}function gS(e,t){return gS=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},gS(e,t)}function vS(e){return vS=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},vS(e)}function yS(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=vS(e);if(t){var r=vS(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return function(e,t){if(t&&("object"===aS(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(this,n)}}function bS(e){return function(e){if(Array.isArray(e))return uS(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||hS(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var wS=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}(t);try{n.insertRule(e,n.cssRules.length)}catch(e){}}else t.appendChild(document.createTextNode(e));this.ctr++},t.flush=function(){this.tags.forEach((function(e){return e.parentNode&&e.parentNode.removeChild(e)})),this.tags=[],this.ctr=0},e}(),xS=Math.abs,MS=String.fromCharCode,SS=Object.assign;function ES(e){return e.trim()}function _S(e,t,n){return e.replace(t,n)}function TS(e,t){return e.indexOf(t)}function CS(e,t){return 0|e.charCodeAt(t)}function IS(e,t,n){return e.slice(t,n)}function DS(e){return e.length}function NS(e){return e.length}function LS(e,t){return t.push(e),e}var RS=1,OS=1,PS=0,zS=0,kS=0,US="";function BS(e,t,n,i,r,a,o){return{value:e,root:t,parent:n,type:i,props:r,children:a,line:RS,column:OS,length:o,return:""}}function FS(e,t){return SS(BS("",null,null,"",null,null,0),e,{length:-e.length},t)}function jS(){return kS=zS>0?CS(US,--zS):0,OS--,10===kS&&(OS=1,RS--),kS}function HS(){return kS=zS<PS?CS(US,zS++):0,OS++,10===kS&&(OS=1,RS++),kS}function VS(){return CS(US,zS)}function WS(){return zS}function GS(e,t){return IS(US,e,t)}function QS(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function XS(e){return RS=OS=1,PS=DS(US=e),zS=0,[]}function YS(e){return US="",e}function ZS(e){return ES(GS(zS-1,JS(91===e?e+2:40===e?e+1:e)))}function qS(e){for(;(kS=VS())&&kS<33;)HS();return QS(e)>2||QS(kS)>3?"":" "}function KS(e,t){for(;--t&&HS()&&!(kS<48||kS>102||kS>57&&kS<65||kS>70&&kS<97););return GS(e,WS()+(t<6&&32==VS()&&32==HS()))}function JS(e){for(;HS();)switch(kS){case e:return zS;case 34:case 39:34!==e&&39!==e&&JS(kS);break;case 40:41===e&&JS(e);break;case 92:HS()}return zS}function $S(e,t){for(;HS()&&e+kS!==57&&(e+kS!==84||47!==VS()););return"/*"+GS(t,zS-1)+"*"+MS(47===e?e:HS())}function eE(e){for(;!QS(VS());)HS();return GS(e,zS)}var tE="-ms-",nE="-moz-",iE="-webkit-",rE="comm",aE="rule",oE="decl",sE="@keyframes";function lE(e,t){for(var n="",i=NS(e),r=0;r<i;r++)n+=t(e[r],r,e,t)||"";return n}function cE(e,t,n,i){switch(e.type){case"@layer":if(e.children.length)break;case"@import":case oE:return e.return=e.return||e.value;case rE:return"";case sE:return e.return=e.value+"{"+lE(e.children,i)+"}";case aE:e.value=e.props.join(",")}return DS(n=lE(e.children,i))?e.return=e.value+"{"+n+"}":""}function uE(e){return YS(hE("",null,null,null,[""],e=XS(e),0,[0],e))}function hE(e,t,n,i,r,a,o,s,l){for(var c=0,u=0,h=o,d=0,p=0,f=0,A=1,m=1,g=1,v=0,y="",b=r,w=a,x=i,M=y;m;)switch(f=v,v=HS()){case 40:if(108!=f&&58==CS(M,h-1)){-1!=TS(M+=_S(ZS(v),"&","&\f"),"&\f")&&(g=-1);break}case 34:case 39:case 91:M+=ZS(v);break;case 9:case 10:case 13:case 32:M+=qS(f);break;case 92:M+=KS(WS()-1,7);continue;case 47:switch(VS()){case 42:case 47:LS(pE($S(HS(),WS()),t,n),l);break;default:M+="/"}break;case 123*A:s[c++]=DS(M)*g;case 125*A:case 59:case 0:switch(v){case 0:case 125:m=0;case 59+u:-1==g&&(M=_S(M,/\f/g,"")),p>0&&DS(M)-h&&LS(p>32?fE(M+";",i,n,h-1):fE(_S(M," ","")+";",i,n,h-2),l);break;case 59:M+=";";default:if(LS(x=dE(M,t,n,c,u,r,s,y,b=[],w=[],h),a),123===v)if(0===u)hE(M,t,x,x,b,a,h,s,w);else switch(99===d&&110===CS(M,3)?100:d){case 100:case 108:case 109:case 115:hE(e,x,x,i&&LS(dE(e,x,x,0,0,r,s,y,r,b=[],h),w),r,w,h,s,i?b:w);break;default:hE(M,x,x,x,[""],w,0,s,w)}}c=u=p=0,A=g=1,y=M="",h=o;break;case 58:h=1+DS(M),p=f;default:if(A<1)if(123==v)--A;else if(125==v&&0==A++&&125==jS())continue;switch(M+=MS(v),v*A){case 38:g=u>0?1:(M+="\f",-1);break;case 44:s[c++]=(DS(M)-1)*g,g=1;break;case 64:45===VS()&&(M+=ZS(HS())),d=VS(),u=h=DS(y=M+=eE(WS())),v++;break;case 45:45===f&&2==DS(M)&&(A=0)}}return a}function dE(e,t,n,i,r,a,o,s,l,c,u){for(var h=r-1,d=0===r?a:[""],p=NS(d),f=0,A=0,m=0;f<i;++f)for(var g=0,v=IS(e,h+1,h=xS(A=o[f])),y=e;g<p;++g)(y=ES(A>0?d[g]+" "+v:_S(v,/&\f/g,d[g])))&&(l[m++]=y);return BS(e,t,n,0===r?aE:s,l,c,u)}function pE(e,t,n){return BS(e,t,n,rE,MS(kS),IS(e,2,-2),0)}function fE(e,t,n,i){return BS(e,t,n,oE,IS(e,0,i),IS(e,i+1,-1),i)}var AE=function(e,t,n){for(var i=0,r=0;i=r,r=VS(),38===i&&12===r&&(t[n]=1),!QS(r);)HS();return GS(e,zS)},mE=new WeakMap,gE=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,i=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||mE.get(n))&&!i){mE.set(e,!0);for(var r=[],a=function(e,t){return YS(function(e,t){var n=-1,i=44;do{switch(QS(i)){case 0:38===i&&12===VS()&&(t[n]=1),e[n]+=AE(zS-1,t,n);break;case 2:e[n]+=ZS(i);break;case 4:if(44===i){e[++n]=58===VS()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=MS(i)}}while(i=HS());return e}(XS(e),t))}(t,r),o=n.props,s=0,l=0;s<a.length;s++)for(var c=0;c<o.length;c++,l++)e.props[l]=r[s]?a[s].replace(/&\f/g,o[c]):o[c]+" "+a[s]}}},vE=function(e){if("decl"===e.type){var t=e.value;108===t.charCodeAt(0)&&98===t.charCodeAt(2)&&(e.return="",e.value="")}};function yE(e,t){switch(function(e,t){return 45^CS(e,0)?(((t<<2^CS(e,0))<<2^CS(e,1))<<2^CS(e,2))<<2^CS(e,3):0}(e,t)){case 5103:return iE+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return iE+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return iE+e+nE+e+tE+e+e;case 6828:case 4268:return iE+e+tE+e+e;case 6165:return iE+e+tE+"flex-"+e+e;case 5187:return iE+e+_S(e,/(\w+).+(:[^]+)/,iE+"box-$1$2"+tE+"flex-$1$2")+e;case 5443:return iE+e+tE+"flex-item-"+_S(e,/flex-|-self/,"")+e;case 4675:return iE+e+tE+"flex-line-pack"+_S(e,/align-content|flex-|-self/,"")+e;case 5548:return iE+e+tE+_S(e,"shrink","negative")+e;case 5292:return iE+e+tE+_S(e,"basis","preferred-size")+e;case 6060:return iE+"box-"+_S(e,"-grow","")+iE+e+tE+_S(e,"grow","positive")+e;case 4554:return iE+_S(e,/([^-])(transform)/g,"$1"+iE+"$2")+e;case 6187:return _S(_S(_S(e,/(zoom-|grab)/,iE+"$1"),/(image-set)/,iE+"$1"),e,"")+e;case 5495:case 3959:return _S(e,/(image-set\([^]*)/,iE+"$1$`$1");case 4968:return _S(_S(e,/(.+:)(flex-)?(.*)/,iE+"box-pack:$3"+tE+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+iE+e+e;case 4095:case 3583:case 4068:case 2532:return _S(e,/(.+)-inline(.+)/,iE+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(DS(e)-1-t>6)switch(CS(e,t+1)){case 109:if(45!==CS(e,t+4))break;case 102:return _S(e,/(.+:)(.+)-([^]+)/,"$1"+iE+"$2-$3$1"+nE+(108==CS(e,t+3)?"$3":"$2-$3"))+e;case 115:return~TS(e,"stretch")?yE(_S(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==CS(e,t+1))break;case 6444:switch(CS(e,DS(e)-3-(~TS(e,"!important")&&10))){case 107:return _S(e,":",":"+iE)+e;case 101:return _S(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+iE+(45===CS(e,14)?"inline-":"")+"box$3$1"+iE+"$2$3$1"+tE+"$2box$3")+e}break;case 5936:switch(CS(e,t+11)){case 114:return iE+e+tE+_S(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return iE+e+tE+_S(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return iE+e+tE+_S(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return iE+e+tE+e+e}return e}var bE=[function(e,t,n,i){if(e.length>-1&&!e.return)switch(e.type){case oE:e.return=yE(e.value,e.length);break;case sE:return lE([FS(e,{value:_S(e.value,"@","@"+iE)})],i);case aE:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e,t){return(e=/(::plac\w+|:read-\w+)/.exec(e))?e[0]:e}(t)){case":read-only":case":read-write":return lE([FS(e,{props:[_S(t,/:(read-\w+)/,":-moz-$1")]})],i);case"::placeholder":return lE([FS(e,{props:[_S(t,/:(plac\w+)/,":"+iE+"input-$1")]}),FS(e,{props:[_S(t,/:(plac\w+)/,":-moz-$1")]}),FS(e,{props:[_S(t,/:(plac\w+)/,tE+"input-$1")]})],i)}return""}))}}],wE=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var i,r,a=e.stylisPlugins||bE,o={},s=[];i=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n<t.length;n++)o[t[n]]=!0;s.push(e)}));var l,c,u,h,d=[cE,(h=function(e){l.insert(e)},function(e){e.root||(e=e.return)&&h(e)})],p=(c=[gE,vE].concat(a,d),u=NS(c),function(e,t,n,i){for(var r="",a=0;a<u;a++)r+=c[a](e,t,n,i)||"";return r});r=function(e,t,n,i){l=n,lE(uE(e?e+"{"+t.styles+"}":t.styles),p),i&&(f.inserted[t.name]=!0)};var f={key:t,sheet:new wS({key:t,container:i,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:o,registered:{},insert:r};return f.sheet.hydrate(s),f},xE=function(e,t,n){var i=e.key+"-"+t.name;!1===n&&void 0===e.registered[i]&&(e.registered[i]=t.styles)},ME={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};function SE(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}var EE=/[A-Z]|^ms/g,_E=/_EMO_([^_]+?)_([^]*?)_EMO_/g,TE=function(e){return 45===e.charCodeAt(1)},CE=function(e){return null!=e&&"boolean"!=typeof e},IE=SE((function(e){return TE(e)?e:e.replace(EE,"-$&").toLowerCase()})),DE=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(_E,(function(e,t,n){return LE={name:t,styles:n,next:LE},t}))}return 1===ME[e]||TE(e)||"number"!=typeof t||0===t?t:t+"px"};function NE(e,t,n){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return LE={name:n.name,styles:n.styles,next:LE},n.name;if(void 0!==n.styles){var i=n.next;if(void 0!==i)for(;void 0!==i;)LE={name:i.name,styles:i.styles,next:LE},i=i.next;return n.styles+";"}return function(e,t,n){var i="";if(Array.isArray(n))for(var r=0;r<n.length;r++)i+=NE(e,t,n[r])+";";else for(var a in n){var o=n[a];if("object"!=typeof o)null!=t&&void 0!==t[o]?i+=a+"{"+t[o]+"}":CE(o)&&(i+=IE(a)+":"+DE(a,o)+";");else if(!Array.isArray(o)||"string"!=typeof o[0]||null!=t&&void 0!==t[o[0]]){var s=NE(e,t,o);switch(a){case"animation":case"animationName":i+=IE(a)+":"+s+";";break;default:i+=a+"{"+s+"}"}}else for(var l=0;l<o.length;l++)CE(o[l])&&(i+=IE(a)+":"+DE(a,o[l])+";")}return i}(e,t,n);case"function":if(void 0!==e){var r=LE,a=n(e);return LE=r,NE(e,t,a)}}if(null==t)return n;var o=t[n];return void 0!==o?o:n}var LE,RE=/label:\s*([^\s;\n{]+)\s*(;|$)/g,OE=function(e,t,n){if(1===e.length&&"object"==typeof e[0]&&null!==e[0]&&void 0!==e[0].styles)return e[0];var i=!0,r="";LE=void 0;var a=e[0];null==a||void 0===a.raw?(i=!1,r+=NE(n,t,a)):r+=a[0];for(var o=1;o<e.length;o++)r+=NE(n,t,e[o]),i&&(r+=a[o]);RE.lastIndex=0;for(var s,l="";null!==(s=RE.exec(r));)l+="-"+s[1];var c=function(e){for(var t,n=0,i=0,r=e.length;r>=4;++i,r-=4)t=1540483477*(65535&(t=255&e.charCodeAt(i)|(255&e.charCodeAt(++i))<<8|(255&e.charCodeAt(++i))<<16|(255&e.charCodeAt(++i))<<24))+(59797*(t>>>16)<<16),n=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&n)+(59797*(n>>>16)<<16);switch(r){case 3:n^=(255&e.charCodeAt(i+2))<<16;case 2:n^=(255&e.charCodeAt(i+1))<<8;case 1:n=1540483477*(65535&(n^=255&e.charCodeAt(i)))+(59797*(n>>>16)<<16)}return(((n=1540483477*(65535&(n^=n>>>13))+(59797*(n>>>16)<<16))^n>>>15)>>>0).toString(36)}(r)+l;return{name:c,styles:r,next:LE}},PE=!!n.useInsertionEffect&&n.useInsertionEffect,zE=PE||function(e){return e()},kE=(PE||t.useLayoutEffect,{}.hasOwnProperty),UE=t.createContext("undefined"!=typeof HTMLElement?wE({key:"css"}):null);UE.Provider;var BE=function(e){return(0,t.forwardRef)((function(n,i){var r=(0,t.useContext)(UE);return e(n,r,i)}))},FE=t.createContext({}),jE="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",HE=function(e){var t=e.cache,n=e.serialized,i=e.isStringTag;return xE(t,n,i),zE((function(){return function(e,t,n){xE(e,t,n);var i=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var r=t;do{e.insert(t===r?"."+i:"",r,e.sheet,!0),r=r.next}while(void 0!==r)}}(t,n,i)})),null},VE=BE((function(e,n,i){var r=e.css;"string"==typeof r&&void 0!==n.registered[r]&&(r=n.registered[r]);var a=e[jE],o=[r],s="";"string"==typeof e.className?s=function(e,t,n){var i="";return n.split(" ").forEach((function(n){void 0!==e[n]?t.push(e[n]+";"):i+=n+" "})),i}(n.registered,o,e.className):null!=e.className&&(s=e.className+" ");var l=OE(o,void 0,t.useContext(FE));s+=n.key+"-"+l.name;var c={};for(var u in e)kE.call(e,u)&&"css"!==u&&u!==jE&&(c[u]=e[u]);return c.ref=i,c.className=s,t.createElement(t.Fragment,null,t.createElement(HE,{cache:n,serialized:l,isStringTag:"string"==typeof a}),t.createElement(a,c))})),WE=VE,GE=(r(679),function(e,n){var i=arguments;if(null==n||!kE.call(n,"css"))return t.createElement.apply(void 0,i);var r=i.length,a=new Array(r);a[0]=WE,a[1]=function(e,t){var n={};for(var i in t)kE.call(t,i)&&(n[i]=t[i]);return n[jE]=e,n}(e,n);for(var o=2;o<r;o++)a[o]=i[o];return t.createElement.apply(null,a)});function QE(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return OE(t)}const XE=Math.min,YE=Math.max,ZE=Math.round,qE=Math.floor,KE=e=>({x:e,y:e});function JE(e){return t_(e)?(e.nodeName||"").toLowerCase():"#document"}function $E(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function e_(e){var t;return null==(t=(t_(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function t_(e){return e instanceof Node||e instanceof $E(e).Node}function n_(e){return e instanceof Element||e instanceof $E(e).Element}function i_(e){return e instanceof HTMLElement||e instanceof $E(e).HTMLElement}function r_(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof $E(e).ShadowRoot)}function a_(e){const{overflow:t,overflowX:n,overflowY:i,display:r}=o_(e);return/auto|scroll|overlay|hidden|clip/.test(t+i+n)&&!["inline","contents"].includes(r)}function o_(e){return $E(e).getComputedStyle(e)}function s_(e){const t=function(e){if("html"===JE(e))return e;const t=e.assignedSlot||e.parentNode||r_(e)&&e.host||e_(e);return r_(t)?t.host:t}(e);return function(e){return["html","body","#document"].includes(JE(e))}(t)?e.ownerDocument?e.ownerDocument.body:e.body:i_(t)&&a_(t)?t:s_(t)}function l_(e,t,n){var i;void 0===t&&(t=[]),void 0===n&&(n=!0);const r=s_(e),a=r===(null==(i=e.ownerDocument)?void 0:i.body),o=$E(r);return a?t.concat(o,o.visualViewport||[],a_(r)?r:[],o.frameElement&&n?l_(o.frameElement):[]):t.concat(r,l_(r,[],n))}function c_(e){return n_(e)?e:e.contextElement}function u_(e){const t=c_(e);if(!i_(t))return KE(1);const n=t.getBoundingClientRect(),{width:i,height:r,$:a}=function(e){const t=o_(e);let n=parseFloat(t.width)||0,i=parseFloat(t.height)||0;const r=i_(e),a=r?e.offsetWidth:n,o=r?e.offsetHeight:i,s=ZE(n)!==a||ZE(i)!==o;return s&&(n=a,i=o),{width:n,height:i,$:s}}(t);let o=(a?ZE(n.width):n.width)/i,s=(a?ZE(n.height):n.height)/r;return o&&Number.isFinite(o)||(o=1),s&&Number.isFinite(s)||(s=1),{x:o,y:s}}const h_=KE(0);function d_(e){const t=$E(e);return"undefined"!=typeof CSS&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:h_}function p_(e,t,n,i){void 0===t&&(t=!1),void 0===n&&(n=!1);const r=e.getBoundingClientRect(),a=c_(e);let o=KE(1);t&&(i?n_(i)&&(o=u_(i)):o=u_(e));const s=function(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==$E(e))&&t}(a,n,i)?d_(a):KE(0);let l=(r.left+s.x)/o.x,c=(r.top+s.y)/o.y,u=r.width/o.x,h=r.height/o.y;if(a){const e=$E(a),t=i&&n_(i)?$E(i):i;let n=e.frameElement;for(;n&&i&&t!==e;){const e=u_(n),t=n.getBoundingClientRect(),i=o_(n),r=t.left+(n.clientLeft+parseFloat(i.paddingLeft))*e.x,a=t.top+(n.clientTop+parseFloat(i.paddingTop))*e.y;l*=e.x,c*=e.y,u*=e.x,h*=e.y,l+=r,c+=a,n=$E(n).frameElement}}return d={width:u,height:h,x:l,y:c},{...d,top:d.y,left:d.x,right:d.x+d.width,bottom:d.y+d.height};var d}const f_=t.useLayoutEffect;var A_=["className","clearValue","cx","getStyles","getClassNames","getValue","hasValue","isMulti","isRtl","options","selectOption","selectProps","setValue","theme"],m_=function(){};function g_(e,t){return t?"-"===t[0]?e+t:e+"__"+t:e}function v_(e,t){for(var n=arguments.length,i=new Array(n>2?n-2:0),r=2;r<n;r++)i[r-2]=arguments[r];var a=[].concat(i);if(t&&e)for(var o in t)t.hasOwnProperty(o)&&t[o]&&a.push("".concat(g_(e,o)));return a.filter((function(e){return e})).map((function(e){return String(e).trim()})).join(" ")}var y_=function(e){return t=e,Array.isArray(t)?e.filter(Boolean):"object"===aS(e)&&null!==e?[e]:[];var t},b_=function(e){return e.className,e.clearValue,e.cx,e.getStyles,e.getClassNames,e.getValue,e.hasValue,e.isMulti,e.isRtl,e.options,e.selectOption,e.selectProps,e.setValue,e.theme,cS({},pS(e,A_))},w_=function(e,t,n){var i=e.cx,r=e.getStyles,a=e.getClassNames,o=e.className;return{css:r(t,e),className:i(null!=n?n:{},a(t,e),o)}};function x_(e){return[document.documentElement,document.body,window].indexOf(e)>-1}function M_(e){return x_(e)?window.pageYOffset:e.scrollTop}function S_(e,t){x_(e)?window.scrollTo(0,t):e.scrollTop=t}function E_(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:200,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:m_,r=M_(e),a=t-r,o=0;!function t(){var s,l=a*((s=(s=o+=10)/n-1)*s*s+1)+r;S_(e,l),o<n?window.requestAnimationFrame(t):i(e)}()}function __(e,t){var n=e.getBoundingClientRect(),i=t.getBoundingClientRect(),r=t.offsetHeight/3;i.bottom+r>n.bottom?S_(e,Math.min(t.offsetTop+t.clientHeight-e.offsetHeight+r,e.scrollHeight)):i.top-r<n.top&&S_(e,Math.max(t.offsetTop-r,0))}function T_(){try{return document.createEvent("TouchEvent"),!0}catch(e){return!1}}var C_=!1,I_={get passive(){return C_=!0}},D_="undefined"!=typeof window?window:{};D_.addEventListener&&D_.removeEventListener&&(D_.addEventListener("p",m_,I_),D_.removeEventListener("p",m_,!1));var N_=C_;function L_(e){return null!=e}function R_(e,t,n){return e?t:n}var O_=["children","innerProps"],P_=["children","innerProps"];var z_,k_,U_,B_=function(e){return"auto"===e?"bottom":e},F_=(0,t.createContext)(null),j_=function(e){var n=e.children,i=e.minMenuHeight,r=e.maxMenuHeight,a=e.menuPlacement,o=e.menuPosition,s=e.menuShouldScrollIntoView,l=e.theme,c=((0,t.useContext)(F_)||{}).setPortalPlacement,u=(0,t.useRef)(null),h=dS((0,t.useState)(r),2),d=h[0],p=h[1],f=dS((0,t.useState)(null),2),A=f[0],m=f[1],g=l.spacing.controlHeight;return f_((function(){var e=u.current;if(e){var t="fixed"===o,n=function(e){var t=e.maxHeight,n=e.menuEl,i=e.minHeight,r=e.placement,a=e.shouldScroll,o=e.isFixedPosition,s=e.controlHeight,l=function(e){var t=getComputedStyle(e),n="absolute"===t.position,i=/(auto|scroll)/;if("fixed"===t.position)return document.documentElement;for(var r=e;r=r.parentElement;)if(t=getComputedStyle(r),(!n||"static"!==t.position)&&i.test(t.overflow+t.overflowY+t.overflowX))return r;return document.documentElement}(n),c={placement:"bottom",maxHeight:t};if(!n||!n.offsetParent)return c;var u,h=l.getBoundingClientRect().height,d=n.getBoundingClientRect(),p=d.bottom,f=d.height,A=d.top,m=n.offsetParent.getBoundingClientRect().top,g=o||x_(u=l)?window.innerHeight:u.clientHeight,v=M_(l),y=parseInt(getComputedStyle(n).marginBottom,10),b=parseInt(getComputedStyle(n).marginTop,10),w=m-b,x=g-A,M=w+v,S=h-v-A,E=p-g+v+y,_=v+A-b,T=160;switch(r){case"auto":case"bottom":if(x>=f)return{placement:"bottom",maxHeight:t};if(S>=f&&!o)return a&&E_(l,E,T),{placement:"bottom",maxHeight:t};if(!o&&S>=i||o&&x>=i)return a&&E_(l,E,T),{placement:"bottom",maxHeight:o?x-y:S-y};if("auto"===r||o){var C=t,I=o?w:M;return I>=i&&(C=Math.min(I-y-s,t)),{placement:"top",maxHeight:C}}if("bottom"===r)return a&&S_(l,E),{placement:"bottom",maxHeight:t};break;case"top":if(w>=f)return{placement:"top",maxHeight:t};if(M>=f&&!o)return a&&E_(l,_,T),{placement:"top",maxHeight:t};if(!o&&M>=i||o&&w>=i){var D=t;return(!o&&M>=i||o&&w>=i)&&(D=o?w-b:M-b),a&&E_(l,_,T),{placement:"top",maxHeight:D}}return{placement:"bottom",maxHeight:t};default:throw new Error('Invalid placement provided "'.concat(r,'".'))}return c}({maxHeight:r,menuEl:e,minHeight:i,placement:a,shouldScroll:s&&!t,isFixedPosition:t,controlHeight:g});p(n.maxHeight),m(n.placement),null==c||c(n.placement)}}),[r,a,o,s,i,c,g]),n({ref:u,placerProps:cS(cS({},e),{},{placement:A||B_(a),maxHeight:d})})},H_=function(e,t){var n=e.theme,i=n.spacing.baseUnit,r=n.colors;return cS({textAlign:"center"},t?{}:{color:r.neutral40,padding:"".concat(2*i,"px ").concat(3*i,"px")})},V_=H_,W_=H_,G_=["size"],Q_=["innerProps","isRtl","size"],X_={name:"8mmkcg",styles:"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0"},Y_=function(e){var t=e.size,n=pS(e,G_);return GE("svg",AS({height:t,width:t,viewBox:"0 0 20 20","aria-hidden":"true",focusable:"false",css:X_},n))},Z_=function(e){return GE(Y_,AS({size:20},e),GE("path",{d:"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z"}))},q_=function(e){return GE(Y_,AS({size:20},e),GE("path",{d:"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"}))},K_=function(e,t){var n=e.isFocused,i=e.theme,r=i.spacing.baseUnit,a=i.colors;return cS({label:"indicatorContainer",display:"flex",transition:"color 150ms"},t?{}:{color:n?a.neutral60:a.neutral20,padding:2*r,":hover":{color:n?a.neutral80:a.neutral40}})},J_=K_,$_=K_,eT=function(){var e=QE.apply(void 0,arguments),t="animation-"+e.name;return{name:t,styles:"@keyframes "+t+"{"+e.styles+"}",anim:1,toString:function(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}}(z_||(k_=["\n 0%, 80%, 100% { opacity: 0; }\n 40% { opacity: 1; }\n"],U_||(U_=k_.slice(0)),z_=Object.freeze(Object.defineProperties(k_,{raw:{value:Object.freeze(U_)}})))),tT=function(e){var t=e.delay,n=e.offset;return GE("span",{css:QE({animation:"".concat(eT," 1s ease-in-out ").concat(t,"ms infinite;"),backgroundColor:"currentColor",borderRadius:"1em",display:"inline-block",marginLeft:n?"1em":void 0,height:"1em",verticalAlign:"top",width:"1em"},"","")})},nT=["data"],iT=["innerRef","isDisabled","isHidden","inputClassName"],rT={gridArea:"1 / 2",font:"inherit",minWidth:"2px",border:0,margin:0,outline:0,padding:0},aT={flex:"1 1 auto",display:"inline-grid",gridArea:"1 / 1 / 2 / 3",gridTemplateColumns:"0 min-content","&:after":cS({content:'attr(data-value) " "',visibility:"hidden",whiteSpace:"pre"},rT)},oT=function(e){return cS({label:"input",color:"inherit",background:0,opacity:e?0:1,width:"100%"},rT)},sT=function(e){var t=e.children,n=e.innerProps;return GE("div",n,t)},lT={ClearIndicator:function(e){var t=e.children,n=e.innerProps;return GE("div",AS({},w_(e,"clearIndicator",{indicator:!0,"clear-indicator":!0}),n),t||GE(Z_,null))},Control:function(e){var t=e.children,n=e.isDisabled,i=e.isFocused,r=e.innerRef,a=e.innerProps,o=e.menuIsOpen;return GE("div",AS({ref:r},w_(e,"control",{control:!0,"control--is-disabled":n,"control--is-focused":i,"control--menu-is-open":o}),a,{"aria-disabled":n||void 0}),t)},DropdownIndicator:function(e){var t=e.children,n=e.innerProps;return GE("div",AS({},w_(e,"dropdownIndicator",{indicator:!0,"dropdown-indicator":!0}),n),t||GE(q_,null))},DownChevron:q_,CrossIcon:Z_,Group:function(e){var t=e.children,n=e.cx,i=e.getStyles,r=e.getClassNames,a=e.Heading,o=e.headingProps,s=e.innerProps,l=e.label,c=e.theme,u=e.selectProps;return GE("div",AS({},w_(e,"group",{group:!0}),s),GE(a,AS({},o,{selectProps:u,theme:c,getStyles:i,getClassNames:r,cx:n}),l),GE("div",null,t))},GroupHeading:function(e){var t=b_(e);t.data;var n=pS(t,nT);return GE("div",AS({},w_(e,"groupHeading",{"group-heading":!0}),n))},IndicatorsContainer:function(e){var t=e.children,n=e.innerProps;return GE("div",AS({},w_(e,"indicatorsContainer",{indicators:!0}),n),t)},IndicatorSeparator:function(e){var t=e.innerProps;return GE("span",AS({},t,w_(e,"indicatorSeparator",{"indicator-separator":!0})))},Input:function(e){var t=e.cx,n=e.value,i=b_(e),r=i.innerRef,a=i.isDisabled,o=i.isHidden,s=i.inputClassName,l=pS(i,iT);return GE("div",AS({},w_(e,"input",{"input-container":!0}),{"data-value":n||""}),GE("input",AS({className:t({input:!0},s),ref:r,style:oT(o),disabled:a},l)))},LoadingIndicator:function(e){var t=e.innerProps,n=e.isRtl,i=e.size,r=void 0===i?4:i,a=pS(e,Q_);return GE("div",AS({},w_(cS(cS({},a),{},{innerProps:t,isRtl:n,size:r}),"loadingIndicator",{indicator:!0,"loading-indicator":!0}),t),GE(tT,{delay:0,offset:n}),GE(tT,{delay:160,offset:!0}),GE(tT,{delay:320,offset:!n}))},Menu:function(e){var t=e.children,n=e.innerRef,i=e.innerProps;return GE("div",AS({},w_(e,"menu",{menu:!0}),{ref:n},i),t)},MenuList:function(e){var t=e.children,n=e.innerProps,i=e.innerRef,r=e.isMulti;return GE("div",AS({},w_(e,"menuList",{"menu-list":!0,"menu-list--is-multi":r}),{ref:i},n),t)},MenuPortal:function(e){var n=e.appendTo,i=e.children,r=e.controlElement,a=e.innerProps,o=e.menuPlacement,s=e.menuPosition,l=(0,t.useRef)(null),c=(0,t.useRef)(null),u=dS((0,t.useState)(B_(o)),2),h=u[0],d=u[1],p=(0,t.useMemo)((function(){return{setPortalPlacement:d}}),[]),f=dS((0,t.useState)(null),2),A=f[0],m=f[1],g=(0,t.useCallback)((function(){if(r){var e=function(e){var t=e.getBoundingClientRect();return{bottom:t.bottom,height:t.height,left:t.left,right:t.right,top:t.top,width:t.width}}(r),t="fixed"===s?0:window.pageYOffset,n=e[h]+t;n===(null==A?void 0:A.offset)&&e.left===(null==A?void 0:A.rect.left)&&e.width===(null==A?void 0:A.rect.width)||m({offset:n,rect:e})}}),[r,s,h,null==A?void 0:A.offset,null==A?void 0:A.rect.left,null==A?void 0:A.rect.width]);f_((function(){g()}),[g]);var v=(0,t.useCallback)((function(){"function"==typeof c.current&&(c.current(),c.current=null),r&&l.current&&(c.current=function(e,t,n,i){void 0===i&&(i={});const{ancestorScroll:r=!0,ancestorResize:a=!0,elementResize:o="function"==typeof ResizeObserver,layoutShift:s="function"==typeof IntersectionObserver,animationFrame:l=!1}=i,c=c_(e),u=r||a?[...c?l_(c):[],...l_(t)]:[];u.forEach((e=>{r&&e.addEventListener("scroll",n,{passive:!0}),a&&e.addEventListener("resize",n)}));const h=c&&s?function(e,t){let n,i=null;const r=e_(e);function a(){clearTimeout(n),i&&i.disconnect(),i=null}return function o(s,l){void 0===s&&(s=!1),void 0===l&&(l=1),a();const{left:c,top:u,width:h,height:d}=e.getBoundingClientRect();if(s||t(),!h||!d)return;const p={rootMargin:-qE(u)+"px "+-qE(r.clientWidth-(c+h))+"px "+-qE(r.clientHeight-(u+d))+"px "+-qE(c)+"px",threshold:YE(0,XE(1,l))||1};let f=!0;function A(e){const t=e[0].intersectionRatio;if(t!==l){if(!f)return o();t?o(!1,t):n=setTimeout((()=>{o(!1,1e-7)}),100)}f=!1}try{i=new IntersectionObserver(A,{...p,root:r.ownerDocument})}catch(e){i=new IntersectionObserver(A,p)}i.observe(e)}(!0),a}(c,n):null;let d,p=-1,f=null;o&&(f=new ResizeObserver((e=>{let[i]=e;i&&i.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(p),p=requestAnimationFrame((()=>{f&&f.observe(t)}))),n()})),c&&!l&&f.observe(c),f.observe(t));let A=l?p_(e):null;return l&&function t(){const i=p_(e);!A||i.x===A.x&&i.y===A.y&&i.width===A.width&&i.height===A.height||n(),A=i,d=requestAnimationFrame(t)}(),n(),()=>{u.forEach((e=>{r&&e.removeEventListener("scroll",n),a&&e.removeEventListener("resize",n)})),h&&h(),f&&f.disconnect(),f=null,l&&cancelAnimationFrame(d)}}(r,l.current,g,{elementResize:"ResizeObserver"in window}))}),[r,g]);f_((function(){v()}),[v]);var y=(0,t.useCallback)((function(e){l.current=e,v()}),[v]);if(!n&&"fixed"!==s||!A)return null;var b=GE("div",AS({ref:y},w_(cS(cS({},e),{},{offset:A.offset,position:s,rect:A.rect}),"menuPortal",{"menu-portal":!0}),a),i);return GE(F_.Provider,{value:p},n?(0,FM.createPortal)(b,n):b)},LoadingMessage:function(e){var t=e.children,n=void 0===t?"Loading...":t,i=e.innerProps,r=pS(e,P_);return GE("div",AS({},w_(cS(cS({},r),{},{children:n,innerProps:i}),"loadingMessage",{"menu-notice":!0,"menu-notice--loading":!0}),i),n)},NoOptionsMessage:function(e){var t=e.children,n=void 0===t?"No options":t,i=e.innerProps,r=pS(e,O_);return GE("div",AS({},w_(cS(cS({},r),{},{children:n,innerProps:i}),"noOptionsMessage",{"menu-notice":!0,"menu-notice--no-options":!0}),i),n)},MultiValue:function(e){var t=e.children,n=e.components,i=e.data,r=e.innerProps,a=e.isDisabled,o=e.removeProps,s=e.selectProps,l=n.Container,c=n.Label,u=n.Remove;return GE(l,{data:i,innerProps:cS(cS({},w_(e,"multiValue",{"multi-value":!0,"multi-value--is-disabled":a})),r),selectProps:s},GE(c,{data:i,innerProps:cS({},w_(e,"multiValueLabel",{"multi-value__label":!0})),selectProps:s},t),GE(u,{data:i,innerProps:cS(cS({},w_(e,"multiValueRemove",{"multi-value__remove":!0})),{},{"aria-label":"Remove ".concat(t||"option")},o),selectProps:s}))},MultiValueContainer:sT,MultiValueLabel:sT,MultiValueRemove:function(e){var t=e.children,n=e.innerProps;return GE("div",AS({role:"button"},n),t||GE(Z_,{size:14}))},Option:function(e){var t=e.children,n=e.isDisabled,i=e.isFocused,r=e.isSelected,a=e.innerRef,o=e.innerProps;return GE("div",AS({},w_(e,"option",{option:!0,"option--is-disabled":n,"option--is-focused":i,"option--is-selected":r}),{ref:a,"aria-disabled":n},o),t)},Placeholder:function(e){var t=e.children,n=e.innerProps;return GE("div",AS({},w_(e,"placeholder",{placeholder:!0}),n),t)},SelectContainer:function(e){var t=e.children,n=e.innerProps,i=e.isDisabled,r=e.isRtl;return GE("div",AS({},w_(e,"container",{"--is-disabled":i,"--is-rtl":r}),n),t)},SingleValue:function(e){var t=e.children,n=e.isDisabled,i=e.innerProps;return GE("div",AS({},w_(e,"singleValue",{"single-value":!0,"single-value--is-disabled":n}),i),t)},ValueContainer:function(e){var t=e.children,n=e.innerProps,i=e.isMulti,r=e.hasValue;return GE("div",AS({},w_(e,"valueContainer",{"value-container":!0,"value-container--is-multi":i,"value-container--has-value":r}),n),t)}},cT=Number.isNaN||function(e){return"number"==typeof e&&e!=e};function uT(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(!((i=e[n])===(r=t[n])||cT(i)&&cT(r)))return!1;var i,r;return!0}for(var hT={name:"7pg0cj-a11yText",styles:"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap"},dT=function(e){return GE("span",AS({css:hT},e))},pT={guidance:function(e){var t=e.isSearchable,n=e.isMulti,i=e.tabSelectsValue,r=e.context,a=e.isInitialFocus;switch(r){case"menu":return"Use Up and Down to choose options, press Enter to select the currently focused option, press Escape to exit the menu".concat(i?", press Tab to select the option and exit the menu":"",".");case"input":return a?"".concat(e["aria-label"]||"Select"," is focused ").concat(t?",type to refine list":"",", press Down to open the menu, ").concat(n?" press left to focus selected values":""):"";case"value":return"Use left and right to toggle between focused values, press Backspace to remove the currently focused value";default:return""}},onChange:function(e){var t=e.action,n=e.label,i=void 0===n?"":n,r=e.labels,a=e.isDisabled;switch(t){case"deselect-option":case"pop-value":case"remove-value":return"option ".concat(i,", deselected.");case"clear":return"All selected options have been cleared.";case"initial-input-focus":return"option".concat(r.length>1?"s":""," ").concat(r.join(","),", selected.");case"select-option":return"option ".concat(i,a?" is disabled. Select another option.":", selected.");default:return""}},onFocus:function(e){var t=e.context,n=e.focused,i=e.options,r=e.label,a=void 0===r?"":r,o=e.selectValue,s=e.isDisabled,l=e.isSelected,c=e.isAppleDevice,u=function(e,t){return e&&e.length?"".concat(e.indexOf(t)+1," of ").concat(e.length):""};if("value"===t&&o)return"value ".concat(a," focused, ").concat(u(o,n),".");if("menu"===t&&c){var h=s?" disabled":"",d="".concat(l?" selected":"").concat(h);return"".concat(a).concat(d,", ").concat(u(i,n),".")}return""},onFilter:function(e){var t=e.inputValue,n=e.resultsMessage;return"".concat(n).concat(t?" for search term "+t:"",".")}},fT=function(e){var n=e.ariaSelection,i=e.focusedOption,r=e.focusedValue,a=e.focusableOptions,o=e.isFocused,s=e.selectValue,l=e.selectProps,c=e.id,u=e.isAppleDevice,h=l.ariaLiveMessages,d=l.getOptionLabel,p=l.inputValue,f=l.isMulti,A=l.isOptionDisabled,m=l.isSearchable,g=l.menuIsOpen,v=l.options,y=l.screenReaderStatus,b=l.tabSelectsValue,w=l.isLoading,x=l["aria-label"],M=l["aria-live"],S=(0,t.useMemo)((function(){return cS(cS({},pT),h||{})}),[h]),E=(0,t.useMemo)((function(){var e,t="";if(n&&S.onChange){var i=n.option,r=n.options,a=n.removedValue,o=n.removedValues,l=n.value,c=a||i||(e=l,Array.isArray(e)?null:e),u=c?d(c):"",h=r||o||void 0,p=h?h.map(d):[],f=cS({isDisabled:c&&A(c,s),label:u,labels:p},n);t=S.onChange(f)}return t}),[n,S,A,s,d]),_=(0,t.useMemo)((function(){var e="",t=i||r,n=!!(i&&s&&s.includes(i));if(t&&S.onFocus){var o={focused:t,label:d(t),isDisabled:A(t,s),isSelected:n,options:a,context:t===i?"menu":"value",selectValue:s,isAppleDevice:u};e=S.onFocus(o)}return e}),[i,r,d,A,S,a,s,u]),T=(0,t.useMemo)((function(){var e="";if(g&&v.length&&!w&&S.onFilter){var t=y({count:a.length});e=S.onFilter({inputValue:p,resultsMessage:t})}return e}),[a,p,g,S,v,y,w]),C="initial-input-focus"===(null==n?void 0:n.action),I=(0,t.useMemo)((function(){var e="";if(S.guidance){var t=r?"value":g?"menu":"input";e=S.guidance({"aria-label":x,context:t,isDisabled:i&&A(i,s),isMulti:f,isSearchable:m,tabSelectsValue:b,isInitialFocus:C})}return e}),[x,i,r,f,A,m,g,S,s,b,C]),D=GE(t.Fragment,null,GE("span",{id:"aria-selection"},E),GE("span",{id:"aria-focused"},_),GE("span",{id:"aria-results"},T),GE("span",{id:"aria-guidance"},I));return GE(t.Fragment,null,GE(dT,{id:c},C&&D),GE(dT,{"aria-live":M,"aria-atomic":"false","aria-relevant":"additions text",role:"log"},o&&!C&&D))},AT=[{base:"A",letters:"AⒶAÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ"},{base:"AA",letters:"Ꜳ"},{base:"AE",letters:"ÆǼǢ"},{base:"AO",letters:"Ꜵ"},{base:"AU",letters:"Ꜷ"},{base:"AV",letters:"ꜸꜺ"},{base:"AY",letters:"Ꜽ"},{base:"B",letters:"BⒷBḂḄḆɃƂƁ"},{base:"C",letters:"CⒸCĆĈĊČÇḈƇȻꜾ"},{base:"D",letters:"DⒹDḊĎḌḐḒḎĐƋƊƉꝹ"},{base:"DZ",letters:"DZDŽ"},{base:"Dz",letters:"DzDž"},{base:"E",letters:"EⒺEÈÉÊỀẾỄỂẼĒḔḖĔĖËẺĚȄȆẸỆȨḜĘḘḚƐƎ"},{base:"F",letters:"FⒻFḞƑꝻ"},{base:"G",letters:"GⒼGǴĜḠĞĠǦĢǤƓꞠꝽꝾ"},{base:"H",letters:"HⒽHĤḢḦȞḤḨḪĦⱧⱵꞍ"},{base:"I",letters:"IⒾIÌÍÎĨĪĬİÏḮỈǏȈȊỊĮḬƗ"},{base:"J",letters:"JⒿJĴɈ"},{base:"K",letters:"KⓀKḰǨḲĶḴƘⱩꝀꝂꝄꞢ"},{base:"L",letters:"LⓁLĿĹĽḶḸĻḼḺŁȽⱢⱠꝈꝆꞀ"},{base:"LJ",letters:"LJ"},{base:"Lj",letters:"Lj"},{base:"M",letters:"MⓂMḾṀṂⱮƜ"},{base:"N",letters:"NⓃNǸŃÑṄŇṆŅṊṈȠƝꞐꞤ"},{base:"NJ",letters:"NJ"},{base:"Nj",letters:"Nj"},{base:"O",letters:"OⓄOÒÓÔỒỐỖỔÕṌȬṎŌṐṒŎȮȰÖȪỎŐǑȌȎƠỜỚỠỞỢỌỘǪǬØǾƆƟꝊꝌ"},{base:"OI",letters:"Ƣ"},{base:"OO",letters:"Ꝏ"},{base:"OU",letters:"Ȣ"},{base:"P",letters:"PⓅPṔṖƤⱣꝐꝒꝔ"},{base:"Q",letters:"QⓆQꝖꝘɊ"},{base:"R",letters:"RⓇRŔṘŘȐȒṚṜŖṞɌⱤꝚꞦꞂ"},{base:"S",letters:"SⓈSẞŚṤŜṠŠṦṢṨȘŞⱾꞨꞄ"},{base:"T",letters:"TⓉTṪŤṬȚŢṰṮŦƬƮȾꞆ"},{base:"TZ",letters:"Ꜩ"},{base:"U",letters:"UⓊUÙÚÛŨṸŪṺŬÜǛǗǕǙỦŮŰǓȔȖƯỪỨỮỬỰỤṲŲṶṴɄ"},{base:"V",letters:"VⓋVṼṾƲꝞɅ"},{base:"VY",letters:"Ꝡ"},{base:"W",letters:"WⓌWẀẂŴẆẄẈⱲ"},{base:"X",letters:"XⓍXẊẌ"},{base:"Y",letters:"YⓎYỲÝŶỸȲẎŸỶỴƳɎỾ"},{base:"Z",letters:"ZⓏZŹẐŻŽẒẔƵȤⱿⱫꝢ"},{base:"a",letters:"aⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐ"},{base:"aa",letters:"ꜳ"},{base:"ae",letters:"æǽǣ"},{base:"ao",letters:"ꜵ"},{base:"au",letters:"ꜷ"},{base:"av",letters:"ꜹꜻ"},{base:"ay",letters:"ꜽ"},{base:"b",letters:"bⓑbḃḅḇƀƃɓ"},{base:"c",letters:"cⓒcćĉċčçḉƈȼꜿↄ"},{base:"d",letters:"dⓓdḋďḍḑḓḏđƌɖɗꝺ"},{base:"dz",letters:"dzdž"},{base:"e",letters:"eⓔeèéêềếễểẽēḕḗĕėëẻěȅȇẹệȩḝęḙḛɇɛǝ"},{base:"f",letters:"fⓕfḟƒꝼ"},{base:"g",letters:"gⓖgǵĝḡğġǧģǥɠꞡᵹꝿ"},{base:"h",letters:"hⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ"},{base:"hv",letters:"ƕ"},{base:"i",letters:"iⓘiìíîĩīĭïḯỉǐȉȋịįḭɨı"},{base:"j",letters:"jⓙjĵǰɉ"},{base:"k",letters:"kⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ"},{base:"l",letters:"lⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇ"},{base:"lj",letters:"lj"},{base:"m",letters:"mⓜmḿṁṃɱɯ"},{base:"n",letters:"nⓝnǹńñṅňṇņṋṉƞɲʼnꞑꞥ"},{base:"nj",letters:"nj"},{base:"o",letters:"oⓞoòóôồốỗổõṍȭṏōṑṓŏȯȱöȫỏőǒȍȏơờớỡởợọộǫǭøǿɔꝋꝍɵ"},{base:"oi",letters:"ƣ"},{base:"ou",letters:"ȣ"},{base:"oo",letters:"ꝏ"},{base:"p",letters:"pⓟpṕṗƥᵽꝑꝓꝕ"},{base:"q",letters:"qⓠqɋꝗꝙ"},{base:"r",letters:"rⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ"},{base:"s",letters:"sⓢsßśṥŝṡšṧṣṩșşȿꞩꞅẛ"},{base:"t",letters:"tⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ"},{base:"tz",letters:"ꜩ"},{base:"u",letters:"uⓤuùúûũṹūṻŭüǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ"},{base:"v",letters:"vⓥvṽṿʋꝟʌ"},{base:"vy",letters:"ꝡ"},{base:"w",letters:"wⓦwẁẃŵẇẅẘẉⱳ"},{base:"x",letters:"xⓧxẋẍ"},{base:"y",letters:"yⓨyỳýŷỹȳẏÿỷẙỵƴɏỿ"},{base:"z",letters:"zⓩzźẑżžẓẕƶȥɀⱬꝣ"}],mT=new RegExp("["+AT.map((function(e){return e.letters})).join("")+"]","g"),gT={},vT=0;vT<AT.length;vT++)for(var yT=AT[vT],bT=0;bT<yT.letters.length;bT++)gT[yT.letters[bT]]=yT.base;var wT=function(e){return e.replace(mT,(function(e){return gT[e]}))},xT=function(e,t){void 0===t&&(t=uT);var n=null;function i(){for(var i=[],r=0;r<arguments.length;r++)i[r]=arguments[r];if(n&&n.lastThis===this&&t(i,n.lastArgs))return n.lastResult;var a=e.apply(this,i);return n={lastResult:a,lastArgs:i,lastThis:this},a}return i.clear=function(){n=null},i}(wT),MT=function(e){return e.replace(/^\s+|\s+$/g,"")},ST=function(e){return"".concat(e.label," ").concat(e.value)},ET=["innerRef"];function _T(e){var t=e.innerRef,n=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];var r=Object.entries(e).filter((function(e){var t=dS(e,1)[0];return!n.includes(t)}));return r.reduce((function(e,t){var n=dS(t,2),i=n[0],r=n[1];return e[i]=r,e}),{})}(pS(e,ET),"onExited","in","enter","exit","appear");return GE("input",AS({ref:t},n,{css:QE({label:"dummyInput",background:0,border:0,caretColor:"transparent",fontSize:"inherit",gridArea:"1 / 1 / 2 / 3",outline:0,padding:0,width:1,color:"transparent",left:-100,opacity:0,position:"relative",transform:"scale(.01)"},"","")}))}var TT=["boxSizing","height","overflow","paddingRight","position"],CT={boxSizing:"border-box",overflow:"hidden",position:"relative",height:"100%"};function IT(e){e.preventDefault()}function DT(e){e.stopPropagation()}function NT(){var e=this.scrollTop,t=this.scrollHeight,n=e+this.offsetHeight;0===e?this.scrollTop=1:n===t&&(this.scrollTop=e-1)}function LT(){return"ontouchstart"in window||navigator.maxTouchPoints}var RT=!("undefined"==typeof window||!window.document||!window.document.createElement),OT=0,PT={capture:!1,passive:!1},zT=function(e){var t=e.target;return t.ownerDocument.activeElement&&t.ownerDocument.activeElement.blur()},kT={name:"1kfdb0e",styles:"position:fixed;left:0;bottom:0;right:0;top:0"};function UT(e){var n=e.children,i=e.lockEnabled,r=e.captureEnabled,a=function(e){var n=e.isEnabled,i=e.onBottomArrive,r=e.onBottomLeave,a=e.onTopArrive,o=e.onTopLeave,s=(0,t.useRef)(!1),l=(0,t.useRef)(!1),c=(0,t.useRef)(0),u=(0,t.useRef)(null),h=(0,t.useCallback)((function(e,t){if(null!==u.current){var n=u.current,c=n.scrollTop,h=n.scrollHeight,d=n.clientHeight,p=u.current,f=t>0,A=h-d-c,m=!1;A>t&&s.current&&(r&&r(e),s.current=!1),f&&l.current&&(o&&o(e),l.current=!1),f&&t>A?(i&&!s.current&&i(e),p.scrollTop=h,m=!0,s.current=!0):!f&&-t>c&&(a&&!l.current&&a(e),p.scrollTop=0,m=!0,l.current=!0),m&&function(e){e.cancelable&&e.preventDefault(),e.stopPropagation()}(e)}}),[i,r,a,o]),d=(0,t.useCallback)((function(e){h(e,e.deltaY)}),[h]),p=(0,t.useCallback)((function(e){c.current=e.changedTouches[0].clientY}),[]),f=(0,t.useCallback)((function(e){var t=c.current-e.changedTouches[0].clientY;h(e,t)}),[h]),A=(0,t.useCallback)((function(e){if(e){var t=!!N_&&{passive:!1};e.addEventListener("wheel",d,t),e.addEventListener("touchstart",p,t),e.addEventListener("touchmove",f,t)}}),[f,p,d]),m=(0,t.useCallback)((function(e){e&&(e.removeEventListener("wheel",d,!1),e.removeEventListener("touchstart",p,!1),e.removeEventListener("touchmove",f,!1))}),[f,p,d]);return(0,t.useEffect)((function(){if(n){var e=u.current;return A(e),function(){m(e)}}}),[n,A,m]),function(e){u.current=e}}({isEnabled:void 0===r||r,onBottomArrive:e.onBottomArrive,onBottomLeave:e.onBottomLeave,onTopArrive:e.onTopArrive,onTopLeave:e.onTopLeave}),o=function(e){var n=e.isEnabled,i=e.accountForScrollbars,r=void 0===i||i,a=(0,t.useRef)({}),o=(0,t.useRef)(null),s=(0,t.useCallback)((function(e){if(RT){var t=document.body,n=t&&t.style;if(r&&TT.forEach((function(e){var t=n&&n[e];a.current[e]=t})),r&&OT<1){var i=parseInt(a.current.paddingRight,10)||0,o=document.body?document.body.clientWidth:0,s=window.innerWidth-o+i||0;Object.keys(CT).forEach((function(e){var t=CT[e];n&&(n[e]=t)})),n&&(n.paddingRight="".concat(s,"px"))}t&&LT()&&(t.addEventListener("touchmove",IT,PT),e&&(e.addEventListener("touchstart",NT,PT),e.addEventListener("touchmove",DT,PT))),OT+=1}}),[r]),l=(0,t.useCallback)((function(e){if(RT){var t=document.body,n=t&&t.style;OT=Math.max(OT-1,0),r&&OT<1&&TT.forEach((function(e){var t=a.current[e];n&&(n[e]=t)})),t&&LT()&&(t.removeEventListener("touchmove",IT,PT),e&&(e.removeEventListener("touchstart",NT,PT),e.removeEventListener("touchmove",DT,PT)))}}),[r]);return(0,t.useEffect)((function(){if(n){var e=o.current;return s(e),function(){l(e)}}}),[n,s,l]),function(e){o.current=e}}({isEnabled:i});return GE(t.Fragment,null,i&&GE("div",{onClick:zT,css:kT}),n((function(e){a(e),o(e)})))}var BT={name:"1a0ro4n-requiredInput",styles:"label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%"},FT=function(e){var t=e.name,n=e.onFocus;return GE("input",{required:!0,name:t,tabIndex:-1,"aria-hidden":"true",onFocus:n,css:BT,value:"",onChange:function(){}})};function jT(e){var t;return"undefined"!=typeof window&&null!=window.navigator&&e.test((null===(t=window.navigator.userAgentData)||void 0===t?void 0:t.platform)||window.navigator.platform)}function HT(){return jT(/^Mac/i)}var VT={clearIndicator:$_,container:function(e){var t=e.isDisabled;return{label:"container",direction:e.isRtl?"rtl":void 0,pointerEvents:t?"none":void 0,position:"relative"}},control:function(e,t){var n=e.isDisabled,i=e.isFocused,r=e.theme,a=r.colors,o=r.borderRadius;return cS({label:"control",alignItems:"center",cursor:"default",display:"flex",flexWrap:"wrap",justifyContent:"space-between",minHeight:r.spacing.controlHeight,outline:"0 !important",position:"relative",transition:"all 100ms"},t?{}:{backgroundColor:n?a.neutral5:a.neutral0,borderColor:n?a.neutral10:i?a.primary:a.neutral20,borderRadius:o,borderStyle:"solid",borderWidth:1,boxShadow:i?"0 0 0 1px ".concat(a.primary):void 0,"&:hover":{borderColor:i?a.primary:a.neutral30}})},dropdownIndicator:J_,group:function(e,t){var n=e.theme.spacing;return t?{}:{paddingBottom:2*n.baseUnit,paddingTop:2*n.baseUnit}},groupHeading:function(e,t){var n=e.theme,i=n.colors,r=n.spacing;return cS({label:"group",cursor:"default",display:"block"},t?{}:{color:i.neutral40,fontSize:"75%",fontWeight:500,marginBottom:"0.25em",paddingLeft:3*r.baseUnit,paddingRight:3*r.baseUnit,textTransform:"uppercase"})},indicatorsContainer:function(){return{alignItems:"center",alignSelf:"stretch",display:"flex",flexShrink:0}},indicatorSeparator:function(e,t){var n=e.isDisabled,i=e.theme,r=i.spacing.baseUnit,a=i.colors;return cS({label:"indicatorSeparator",alignSelf:"stretch",width:1},t?{}:{backgroundColor:n?a.neutral10:a.neutral20,marginBottom:2*r,marginTop:2*r})},input:function(e,t){var n=e.isDisabled,i=e.value,r=e.theme,a=r.spacing,o=r.colors;return cS(cS({visibility:n?"hidden":"visible",transform:i?"translateZ(0)":""},aT),t?{}:{margin:a.baseUnit/2,paddingBottom:a.baseUnit/2,paddingTop:a.baseUnit/2,color:o.neutral80})},loadingIndicator:function(e,t){var n=e.isFocused,i=e.size,r=e.theme,a=r.colors,o=r.spacing.baseUnit;return cS({label:"loadingIndicator",display:"flex",transition:"color 150ms",alignSelf:"center",fontSize:i,lineHeight:1,marginRight:i,textAlign:"center",verticalAlign:"middle"},t?{}:{color:n?a.neutral60:a.neutral20,padding:2*o})},loadingMessage:W_,menu:function(e,t){var n,i=e.placement,r=e.theme,a=r.borderRadius,o=r.spacing,s=r.colors;return cS((sS(n={label:"menu"},function(e){return e?{bottom:"top",top:"bottom"}[e]:"bottom"}(i),"100%"),sS(n,"position","absolute"),sS(n,"width","100%"),sS(n,"zIndex",1),n),t?{}:{backgroundColor:s.neutral0,borderRadius:a,boxShadow:"0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)",marginBottom:o.menuGutter,marginTop:o.menuGutter})},menuList:function(e,t){var n=e.maxHeight,i=e.theme.spacing.baseUnit;return cS({maxHeight:n,overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},t?{}:{paddingBottom:i,paddingTop:i})},menuPortal:function(e){var t=e.rect,n=e.offset,i=e.position;return{left:t.left,position:i,top:n,width:t.width,zIndex:1}},multiValue:function(e,t){var n=e.theme,i=n.spacing,r=n.borderRadius,a=n.colors;return cS({label:"multiValue",display:"flex",minWidth:0},t?{}:{backgroundColor:a.neutral10,borderRadius:r/2,margin:i.baseUnit/2})},multiValueLabel:function(e,t){var n=e.theme,i=n.borderRadius,r=n.colors,a=e.cropWithEllipsis;return cS({overflow:"hidden",textOverflow:a||void 0===a?"ellipsis":void 0,whiteSpace:"nowrap"},t?{}:{borderRadius:i/2,color:r.neutral80,fontSize:"85%",padding:3,paddingLeft:6})},multiValueRemove:function(e,t){var n=e.theme,i=n.spacing,r=n.borderRadius,a=n.colors,o=e.isFocused;return cS({alignItems:"center",display:"flex"},t?{}:{borderRadius:r/2,backgroundColor:o?a.dangerLight:void 0,paddingLeft:i.baseUnit,paddingRight:i.baseUnit,":hover":{backgroundColor:a.dangerLight,color:a.danger}})},noOptionsMessage:V_,option:function(e,t){var n=e.isDisabled,i=e.isFocused,r=e.isSelected,a=e.theme,o=a.spacing,s=a.colors;return cS({label:"option",cursor:"default",display:"block",fontSize:"inherit",width:"100%",userSelect:"none",WebkitTapHighlightColor:"rgba(0, 0, 0, 0)"},t?{}:{backgroundColor:r?s.primary:i?s.primary25:"transparent",color:n?s.neutral20:r?s.neutral0:"inherit",padding:"".concat(2*o.baseUnit,"px ").concat(3*o.baseUnit,"px"),":active":{backgroundColor:n?void 0:r?s.primary:s.primary50}})},placeholder:function(e,t){var n=e.theme,i=n.spacing,r=n.colors;return cS({label:"placeholder",gridArea:"1 / 1 / 2 / 3"},t?{}:{color:r.neutral50,marginLeft:i.baseUnit/2,marginRight:i.baseUnit/2})},singleValue:function(e,t){var n=e.isDisabled,i=e.theme,r=i.spacing,a=i.colors;return cS({label:"singleValue",gridArea:"1 / 1 / 2 / 3",maxWidth:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},t?{}:{color:n?a.neutral40:a.neutral80,marginLeft:r.baseUnit/2,marginRight:r.baseUnit/2})},valueContainer:function(e,t){var n=e.theme.spacing,i=e.isMulti,r=e.hasValue,a=e.selectProps.controlShouldRenderValue;return cS({alignItems:"center",display:i&&r&&a?"flex":"grid",flex:1,flexWrap:"wrap",WebkitOverflowScrolling:"touch",position:"relative",overflow:"hidden"},t?{}:{padding:"".concat(n.baseUnit/2,"px ").concat(2*n.baseUnit,"px")})}},WT={borderRadius:4,colors:{primary:"#2684FF",primary75:"#4C9AFF",primary50:"#B2D4FF",primary25:"#DEEBFF",danger:"#DE350B",dangerLight:"#FFBDAD",neutral0:"hsl(0, 0%, 100%)",neutral5:"hsl(0, 0%, 95%)",neutral10:"hsl(0, 0%, 90%)",neutral20:"hsl(0, 0%, 80%)",neutral30:"hsl(0, 0%, 70%)",neutral40:"hsl(0, 0%, 60%)",neutral50:"hsl(0, 0%, 50%)",neutral60:"hsl(0, 0%, 40%)",neutral70:"hsl(0, 0%, 30%)",neutral80:"hsl(0, 0%, 20%)",neutral90:"hsl(0, 0%, 10%)"},spacing:{baseUnit:4,controlHeight:38,menuGutter:8}},GT={"aria-live":"polite",backspaceRemovesValue:!0,blurInputOnSelect:T_(),captureMenuScroll:!T_(),classNames:{},closeMenuOnSelect:!0,closeMenuOnScroll:!1,components:{},controlShouldRenderValue:!0,escapeClearsValue:!1,filterOption:function(e,t){if(e.data.__isNew__)return!0;var n=cS({ignoreCase:!0,ignoreAccents:!0,stringify:ST,trim:!0,matchFrom:"any"},undefined),i=n.ignoreCase,r=n.ignoreAccents,a=n.stringify,o=n.trim,s=n.matchFrom,l=o?MT(t):t,c=o?MT(a(e)):a(e);return i&&(l=l.toLowerCase(),c=c.toLowerCase()),r&&(l=xT(l),c=wT(c)),"start"===s?c.substr(0,l.length)===l:c.indexOf(l)>-1},formatGroupLabel:function(e){return e.label},getOptionLabel:function(e){return e.label},getOptionValue:function(e){return e.value},isDisabled:!1,isLoading:!1,isMulti:!1,isRtl:!1,isSearchable:!0,isOptionDisabled:function(e){return!!e.isDisabled},loadingMessage:function(){return"Loading..."},maxMenuHeight:300,minMenuHeight:140,menuIsOpen:!1,menuPlacement:"bottom",menuPosition:"absolute",menuShouldBlockScroll:!1,menuShouldScrollIntoView:!function(){try{return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}catch(e){return!1}}(),noOptionsMessage:function(){return"No options"},openMenuOnFocus:!1,openMenuOnClick:!0,options:[],pageSize:5,placeholder:"Select...",screenReaderStatus:function(e){var t=e.count;return"".concat(t," result").concat(1!==t?"s":""," available")},styles:{},tabIndex:0,tabSelectsValue:!0,unstyled:!1};function QT(e,t,n,i){return{type:"option",data:t,isDisabled:eC(e,t,n),isSelected:tC(e,t,n),label:JT(e,t),value:$T(e,t),index:i}}function XT(e,t){return e.options.map((function(n,i){if("options"in n){var r=n.options.map((function(n,i){return QT(e,n,t,i)})).filter((function(t){return qT(e,t)}));return r.length>0?{type:"group",data:n,options:r,index:i}:void 0}var a=QT(e,n,t,i);return qT(e,a)?a:void 0})).filter(L_)}function YT(e){return e.reduce((function(e,t){return"group"===t.type?e.push.apply(e,bS(t.options.map((function(e){return e.data})))):e.push(t.data),e}),[])}function ZT(e,t){return e.reduce((function(e,n){return"group"===n.type?e.push.apply(e,bS(n.options.map((function(e){return{data:e.data,id:"".concat(t,"-").concat(n.index,"-").concat(e.index)}})))):e.push({data:n.data,id:"".concat(t,"-").concat(n.index)}),e}),[])}function qT(e,t){var n=e.inputValue,i=void 0===n?"":n,r=t.data,a=t.isSelected,o=t.label,s=t.value;return(!iC(e)||!a)&&nC(e,{label:o,value:s,data:r},i)}var KT=function(e,t){var n;return(null===(n=e.find((function(e){return e.data===t})))||void 0===n?void 0:n.id)||null},JT=function(e,t){return e.getOptionLabel(t)},$T=function(e,t){return e.getOptionValue(t)};function eC(e,t,n){return"function"==typeof e.isOptionDisabled&&e.isOptionDisabled(t,n)}function tC(e,t,n){if(n.indexOf(t)>-1)return!0;if("function"==typeof e.isOptionSelected)return e.isOptionSelected(t,n);var i=$T(e,t);return n.some((function(t){return $T(e,t)===i}))}function nC(e,t,n){return!e.filterOption||e.filterOption(t,n)}var iC=function(e){var t=e.hideSelectedOptions,n=e.isMulti;return void 0===t?n:t},rC=1,aC=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&gS(e,t)}(o,e);var n,i,r,a=yS(o);function o(e){var t;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,o),(t=a.call(this,e)).state={ariaSelection:null,focusedOption:null,focusedOptionId:null,focusableOptionsWithIds:[],focusedValue:null,inputIsHidden:!1,isFocused:!1,selectValue:[],clearFocusValueOnUpdate:!1,prevWasFocused:!1,inputIsHiddenAfterUpdate:void 0,prevProps:void 0,instancePrefix:""},t.blockOptionHover=!1,t.isComposing=!1,t.commonProps=void 0,t.initialTouchX=0,t.initialTouchY=0,t.openAfterFocus=!1,t.scrollToFocusedOptionOnUpdate=!1,t.userIsDragging=void 0,t.isAppleDevice=HT()||jT(/^iPhone/i)||jT(/^iPad/i)||HT()&&navigator.maxTouchPoints>1,t.controlRef=null,t.getControlRef=function(e){t.controlRef=e},t.focusedOptionRef=null,t.getFocusedOptionRef=function(e){t.focusedOptionRef=e},t.menuListRef=null,t.getMenuListRef=function(e){t.menuListRef=e},t.inputRef=null,t.getInputRef=function(e){t.inputRef=e},t.focus=t.focusInput,t.blur=t.blurInput,t.onChange=function(e,n){var i=t.props,r=i.onChange,a=i.name;n.name=a,t.ariaOnChange(e,n),r(e,n)},t.setValue=function(e,n,i){var r=t.props,a=r.closeMenuOnSelect,o=r.isMulti,s=r.inputValue;t.onInputChange("",{action:"set-value",prevInputValue:s}),a&&(t.setState({inputIsHiddenAfterUpdate:!o}),t.onMenuClose()),t.setState({clearFocusValueOnUpdate:!0}),t.onChange(e,{action:n,option:i})},t.selectOption=function(e){var n=t.props,i=n.blurInputOnSelect,r=n.isMulti,a=n.name,o=t.state.selectValue,s=r&&t.isOptionSelected(e,o),l=t.isOptionDisabled(e,o);if(s){var c=t.getOptionValue(e);t.setValue(o.filter((function(e){return t.getOptionValue(e)!==c})),"deselect-option",e)}else{if(l)return void t.ariaOnChange(e,{action:"select-option",option:e,name:a});r?t.setValue([].concat(bS(o),[e]),"select-option",e):t.setValue(e,"select-option")}i&&t.blurInput()},t.removeValue=function(e){var n=t.props.isMulti,i=t.state.selectValue,r=t.getOptionValue(e),a=i.filter((function(e){return t.getOptionValue(e)!==r})),o=R_(n,a,a[0]||null);t.onChange(o,{action:"remove-value",removedValue:e}),t.focusInput()},t.clearValue=function(){var e=t.state.selectValue;t.onChange(R_(t.props.isMulti,[],null),{action:"clear",removedValues:e})},t.popValue=function(){var e=t.props.isMulti,n=t.state.selectValue,i=n[n.length-1],r=n.slice(0,n.length-1),a=R_(e,r,r[0]||null);t.onChange(a,{action:"pop-value",removedValue:i})},t.getFocusedOptionId=function(e){return KT(t.state.focusableOptionsWithIds,e)},t.getFocusableOptionsWithIds=function(){return ZT(XT(t.props,t.state.selectValue),t.getElementId("option"))},t.getValue=function(){return t.state.selectValue},t.cx=function(){for(var e=arguments.length,n=new Array(e),i=0;i<e;i++)n[i]=arguments[i];return v_.apply(void 0,[t.props.classNamePrefix].concat(n))},t.getOptionLabel=function(e){return JT(t.props,e)},t.getOptionValue=function(e){return $T(t.props,e)},t.getStyles=function(e,n){var i=t.props.unstyled,r=VT[e](n,i);r.boxSizing="border-box";var a=t.props.styles[e];return a?a(r,n):r},t.getClassNames=function(e,n){var i,r;return null===(i=(r=t.props.classNames)[e])||void 0===i?void 0:i.call(r,n)},t.getElementId=function(e){return"".concat(t.state.instancePrefix,"-").concat(e)},t.getComponents=function(){return e=t.props,cS(cS({},lT),e.components);var e},t.buildCategorizedOptions=function(){return XT(t.props,t.state.selectValue)},t.getCategorizedOptions=function(){return t.props.menuIsOpen?t.buildCategorizedOptions():[]},t.buildFocusableOptions=function(){return YT(t.buildCategorizedOptions())},t.getFocusableOptions=function(){return t.props.menuIsOpen?t.buildFocusableOptions():[]},t.ariaOnChange=function(e,n){t.setState({ariaSelection:cS({value:e},n)})},t.onMenuMouseDown=function(e){0===e.button&&(e.stopPropagation(),e.preventDefault(),t.focusInput())},t.onMenuMouseMove=function(e){t.blockOptionHover=!1},t.onControlMouseDown=function(e){if(!e.defaultPrevented){var n=t.props.openMenuOnClick;t.state.isFocused?t.props.menuIsOpen?"INPUT"!==e.target.tagName&&"TEXTAREA"!==e.target.tagName&&t.onMenuClose():n&&t.openMenu("first"):(n&&(t.openAfterFocus=!0),t.focusInput()),"INPUT"!==e.target.tagName&&"TEXTAREA"!==e.target.tagName&&e.preventDefault()}},t.onDropdownIndicatorMouseDown=function(e){if(!(e&&"mousedown"===e.type&&0!==e.button||t.props.isDisabled)){var n=t.props,i=n.isMulti,r=n.menuIsOpen;t.focusInput(),r?(t.setState({inputIsHiddenAfterUpdate:!i}),t.onMenuClose()):t.openMenu("first"),e.preventDefault()}},t.onClearIndicatorMouseDown=function(e){e&&"mousedown"===e.type&&0!==e.button||(t.clearValue(),e.preventDefault(),t.openAfterFocus=!1,"touchend"===e.type?t.focusInput():setTimeout((function(){return t.focusInput()})))},t.onScroll=function(e){"boolean"==typeof t.props.closeMenuOnScroll?e.target instanceof HTMLElement&&x_(e.target)&&t.props.onMenuClose():"function"==typeof t.props.closeMenuOnScroll&&t.props.closeMenuOnScroll(e)&&t.props.onMenuClose()},t.onCompositionStart=function(){t.isComposing=!0},t.onCompositionEnd=function(){t.isComposing=!1},t.onTouchStart=function(e){var n=e.touches,i=n&&n.item(0);i&&(t.initialTouchX=i.clientX,t.initialTouchY=i.clientY,t.userIsDragging=!1)},t.onTouchMove=function(e){var n=e.touches,i=n&&n.item(0);if(i){var r=Math.abs(i.clientX-t.initialTouchX),a=Math.abs(i.clientY-t.initialTouchY);t.userIsDragging=r>5||a>5}},t.onTouchEnd=function(e){t.userIsDragging||(t.controlRef&&!t.controlRef.contains(e.target)&&t.menuListRef&&!t.menuListRef.contains(e.target)&&t.blurInput(),t.initialTouchX=0,t.initialTouchY=0)},t.onControlTouchEnd=function(e){t.userIsDragging||t.onControlMouseDown(e)},t.onClearIndicatorTouchEnd=function(e){t.userIsDragging||t.onClearIndicatorMouseDown(e)},t.onDropdownIndicatorTouchEnd=function(e){t.userIsDragging||t.onDropdownIndicatorMouseDown(e)},t.handleInputChange=function(e){var n=t.props.inputValue,i=e.currentTarget.value;t.setState({inputIsHiddenAfterUpdate:!1}),t.onInputChange(i,{action:"input-change",prevInputValue:n}),t.props.menuIsOpen||t.onMenuOpen()},t.onInputFocus=function(e){t.props.onFocus&&t.props.onFocus(e),t.setState({inputIsHiddenAfterUpdate:!1,isFocused:!0}),(t.openAfterFocus||t.props.openMenuOnFocus)&&t.openMenu("first"),t.openAfterFocus=!1},t.onInputBlur=function(e){var n=t.props.inputValue;t.menuListRef&&t.menuListRef.contains(document.activeElement)?t.inputRef.focus():(t.props.onBlur&&t.props.onBlur(e),t.onInputChange("",{action:"input-blur",prevInputValue:n}),t.onMenuClose(),t.setState({focusedValue:null,isFocused:!1}))},t.onOptionHover=function(e){if(!t.blockOptionHover&&t.state.focusedOption!==e){var n=t.getFocusableOptions().indexOf(e);t.setState({focusedOption:e,focusedOptionId:n>-1?t.getFocusedOptionId(e):null})}},t.shouldHideSelectedOptions=function(){return iC(t.props)},t.onValueInputFocus=function(e){e.preventDefault(),e.stopPropagation(),t.focus()},t.onKeyDown=function(e){var n=t.props,i=n.isMulti,r=n.backspaceRemovesValue,a=n.escapeClearsValue,o=n.inputValue,s=n.isClearable,l=n.isDisabled,c=n.menuIsOpen,u=n.onKeyDown,h=n.tabSelectsValue,d=n.openMenuOnFocus,p=t.state,f=p.focusedOption,A=p.focusedValue,m=p.selectValue;if(!(l||"function"==typeof u&&(u(e),e.defaultPrevented))){switch(t.blockOptionHover=!0,e.key){case"ArrowLeft":if(!i||o)return;t.focusValue("previous");break;case"ArrowRight":if(!i||o)return;t.focusValue("next");break;case"Delete":case"Backspace":if(o)return;if(A)t.removeValue(A);else{if(!r)return;i?t.popValue():s&&t.clearValue()}break;case"Tab":if(t.isComposing)return;if(e.shiftKey||!c||!h||!f||d&&t.isOptionSelected(f,m))return;t.selectOption(f);break;case"Enter":if(229===e.keyCode)break;if(c){if(!f)return;if(t.isComposing)return;t.selectOption(f);break}return;case"Escape":c?(t.setState({inputIsHiddenAfterUpdate:!1}),t.onInputChange("",{action:"menu-close",prevInputValue:o}),t.onMenuClose()):s&&a&&t.clearValue();break;case" ":if(o)return;if(!c){t.openMenu("first");break}if(!f)return;t.selectOption(f);break;case"ArrowUp":c?t.focusOption("up"):t.openMenu("last");break;case"ArrowDown":c?t.focusOption("down"):t.openMenu("first");break;case"PageUp":if(!c)return;t.focusOption("pageup");break;case"PageDown":if(!c)return;t.focusOption("pagedown");break;case"Home":if(!c)return;t.focusOption("first");break;case"End":if(!c)return;t.focusOption("last");break;default:return}e.preventDefault()}},t.state.instancePrefix="react-select-"+(t.props.instanceId||++rC),t.state.selectValue=y_(e.value),e.menuIsOpen&&t.state.selectValue.length){var n=t.getFocusableOptionsWithIds(),i=t.buildFocusableOptions(),r=i.indexOf(t.state.selectValue[0]);t.state.focusableOptionsWithIds=n,t.state.focusedOption=i[r],t.state.focusedOptionId=KT(n,i[r])}return t}return n=o,i=[{key:"componentDidMount",value:function(){this.startListeningComposition(),this.startListeningToTouch(),this.props.closeMenuOnScroll&&document&&document.addEventListener&&document.addEventListener("scroll",this.onScroll,!0),this.props.autoFocus&&this.focusInput(),this.props.menuIsOpen&&this.state.focusedOption&&this.menuListRef&&this.focusedOptionRef&&__(this.menuListRef,this.focusedOptionRef)}},{key:"componentDidUpdate",value:function(e){var t=this.props,n=t.isDisabled,i=t.menuIsOpen,r=this.state.isFocused;(r&&!n&&e.isDisabled||r&&i&&!e.menuIsOpen)&&this.focusInput(),r&&n&&!e.isDisabled?this.setState({isFocused:!1},this.onMenuClose):r||n||!e.isDisabled||this.inputRef!==document.activeElement||this.setState({isFocused:!0}),this.menuListRef&&this.focusedOptionRef&&this.scrollToFocusedOptionOnUpdate&&(__(this.menuListRef,this.focusedOptionRef),this.scrollToFocusedOptionOnUpdate=!1)}},{key:"componentWillUnmount",value:function(){this.stopListeningComposition(),this.stopListeningToTouch(),document.removeEventListener("scroll",this.onScroll,!0)}},{key:"onMenuOpen",value:function(){this.props.onMenuOpen()}},{key:"onMenuClose",value:function(){this.onInputChange("",{action:"menu-close",prevInputValue:this.props.inputValue}),this.props.onMenuClose()}},{key:"onInputChange",value:function(e,t){this.props.onInputChange(e,t)}},{key:"focusInput",value:function(){this.inputRef&&this.inputRef.focus()}},{key:"blurInput",value:function(){this.inputRef&&this.inputRef.blur()}},{key:"openMenu",value:function(e){var t=this,n=this.state,i=n.selectValue,r=n.isFocused,a=this.buildFocusableOptions(),o="first"===e?0:a.length-1;if(!this.props.isMulti){var s=a.indexOf(i[0]);s>-1&&(o=s)}this.scrollToFocusedOptionOnUpdate=!(r&&this.menuListRef),this.setState({inputIsHiddenAfterUpdate:!1,focusedValue:null,focusedOption:a[o],focusedOptionId:this.getFocusedOptionId(a[o])},(function(){return t.onMenuOpen()}))}},{key:"focusValue",value:function(e){var t=this.state,n=t.selectValue,i=t.focusedValue;if(this.props.isMulti){this.setState({focusedOption:null});var r=n.indexOf(i);i||(r=-1);var a=n.length-1,o=-1;if(n.length){switch(e){case"previous":o=0===r?0:-1===r?a:r-1;break;case"next":r>-1&&r<a&&(o=r+1)}this.setState({inputIsHidden:-1!==o,focusedValue:n[o]})}}}},{key:"focusOption",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"first",t=this.props.pageSize,n=this.state.focusedOption,i=this.getFocusableOptions();if(i.length){var r=0,a=i.indexOf(n);n||(a=-1),"up"===e?r=a>0?a-1:i.length-1:"down"===e?r=(a+1)%i.length:"pageup"===e?(r=a-t)<0&&(r=0):"pagedown"===e?(r=a+t)>i.length-1&&(r=i.length-1):"last"===e&&(r=i.length-1),this.scrollToFocusedOptionOnUpdate=!0,this.setState({focusedOption:i[r],focusedValue:null,focusedOptionId:this.getFocusedOptionId(i[r])})}}},{key:"getTheme",value:function(){return this.props.theme?"function"==typeof this.props.theme?this.props.theme(WT):cS(cS({},WT),this.props.theme):WT}},{key:"getCommonProps",value:function(){var e=this.clearValue,t=this.cx,n=this.getStyles,i=this.getClassNames,r=this.getValue,a=this.selectOption,o=this.setValue,s=this.props,l=s.isMulti,c=s.isRtl,u=s.options;return{clearValue:e,cx:t,getStyles:n,getClassNames:i,getValue:r,hasValue:this.hasValue(),isMulti:l,isRtl:c,options:u,selectOption:a,selectProps:s,setValue:o,theme:this.getTheme()}}},{key:"hasValue",value:function(){return this.state.selectValue.length>0}},{key:"hasOptions",value:function(){return!!this.getFocusableOptions().length}},{key:"isClearable",value:function(){var e=this.props,t=e.isClearable,n=e.isMulti;return void 0===t?n:t}},{key:"isOptionDisabled",value:function(e,t){return eC(this.props,e,t)}},{key:"isOptionSelected",value:function(e,t){return tC(this.props,e,t)}},{key:"filterOption",value:function(e,t){return nC(this.props,e,t)}},{key:"formatOptionLabel",value:function(e,t){if("function"==typeof this.props.formatOptionLabel){var n=this.props.inputValue,i=this.state.selectValue;return this.props.formatOptionLabel(e,{context:t,inputValue:n,selectValue:i})}return this.getOptionLabel(e)}},{key:"formatGroupLabel",value:function(e){return this.props.formatGroupLabel(e)}},{key:"startListeningComposition",value:function(){document&&document.addEventListener&&(document.addEventListener("compositionstart",this.onCompositionStart,!1),document.addEventListener("compositionend",this.onCompositionEnd,!1))}},{key:"stopListeningComposition",value:function(){document&&document.removeEventListener&&(document.removeEventListener("compositionstart",this.onCompositionStart),document.removeEventListener("compositionend",this.onCompositionEnd))}},{key:"startListeningToTouch",value:function(){document&&document.addEventListener&&(document.addEventListener("touchstart",this.onTouchStart,!1),document.addEventListener("touchmove",this.onTouchMove,!1),document.addEventListener("touchend",this.onTouchEnd,!1))}},{key:"stopListeningToTouch",value:function(){document&&document.removeEventListener&&(document.removeEventListener("touchstart",this.onTouchStart),document.removeEventListener("touchmove",this.onTouchMove),document.removeEventListener("touchend",this.onTouchEnd))}},{key:"renderInput",value:function(){var e=this.props,n=e.isDisabled,i=e.isSearchable,r=e.inputId,a=e.inputValue,o=e.tabIndex,s=e.form,l=e.menuIsOpen,c=e.required,u=this.getComponents().Input,h=this.state,d=h.inputIsHidden,p=h.ariaSelection,f=this.commonProps,A=r||this.getElementId("input"),m=cS(cS(cS({"aria-autocomplete":"list","aria-expanded":l,"aria-haspopup":!0,"aria-errormessage":this.props["aria-errormessage"],"aria-invalid":this.props["aria-invalid"],"aria-label":this.props["aria-label"],"aria-labelledby":this.props["aria-labelledby"],"aria-required":c,role:"combobox","aria-activedescendant":this.isAppleDevice?void 0:this.state.focusedOptionId||""},l&&{"aria-controls":this.getElementId("listbox")}),!i&&{"aria-readonly":!0}),this.hasValue()?"initial-input-focus"===(null==p?void 0:p.action)&&{"aria-describedby":this.getElementId("live-region")}:{"aria-describedby":this.getElementId("placeholder")});return i?t.createElement(u,AS({},f,{autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",id:A,innerRef:this.getInputRef,isDisabled:n,isHidden:d,onBlur:this.onInputBlur,onChange:this.handleInputChange,onFocus:this.onInputFocus,spellCheck:"false",tabIndex:o,form:s,type:"text",value:a},m)):t.createElement(_T,AS({id:A,innerRef:this.getInputRef,onBlur:this.onInputBlur,onChange:m_,onFocus:this.onInputFocus,disabled:n,tabIndex:o,inputMode:"none",form:s,value:""},m))}},{key:"renderPlaceholderOrValue",value:function(){var e=this,n=this.getComponents(),i=n.MultiValue,r=n.MultiValueContainer,a=n.MultiValueLabel,o=n.MultiValueRemove,s=n.SingleValue,l=n.Placeholder,c=this.commonProps,u=this.props,h=u.controlShouldRenderValue,d=u.isDisabled,p=u.isMulti,f=u.inputValue,A=u.placeholder,m=this.state,g=m.selectValue,v=m.focusedValue,y=m.isFocused;if(!this.hasValue()||!h)return f?null:t.createElement(l,AS({},c,{key:"placeholder",isDisabled:d,isFocused:y,innerProps:{id:this.getElementId("placeholder")}}),A);if(p)return g.map((function(n,s){var l=n===v,u="".concat(e.getOptionLabel(n),"-").concat(e.getOptionValue(n));return t.createElement(i,AS({},c,{components:{Container:r,Label:a,Remove:o},isFocused:l,isDisabled:d,key:u,index:s,removeProps:{onClick:function(){return e.removeValue(n)},onTouchEnd:function(){return e.removeValue(n)},onMouseDown:function(e){e.preventDefault()}},data:n}),e.formatOptionLabel(n,"value"))}));if(f)return null;var b=g[0];return t.createElement(s,AS({},c,{data:b,isDisabled:d}),this.formatOptionLabel(b,"value"))}},{key:"renderClearIndicator",value:function(){var e=this.getComponents().ClearIndicator,n=this.commonProps,i=this.props,r=i.isDisabled,a=i.isLoading,o=this.state.isFocused;if(!this.isClearable()||!e||r||!this.hasValue()||a)return null;var s={onMouseDown:this.onClearIndicatorMouseDown,onTouchEnd:this.onClearIndicatorTouchEnd,"aria-hidden":"true"};return t.createElement(e,AS({},n,{innerProps:s,isFocused:o}))}},{key:"renderLoadingIndicator",value:function(){var e=this.getComponents().LoadingIndicator,n=this.commonProps,i=this.props,r=i.isDisabled,a=i.isLoading,o=this.state.isFocused;return e&&a?t.createElement(e,AS({},n,{innerProps:{"aria-hidden":"true"},isDisabled:r,isFocused:o})):null}},{key:"renderIndicatorSeparator",value:function(){var e=this.getComponents(),n=e.DropdownIndicator,i=e.IndicatorSeparator;if(!n||!i)return null;var r=this.commonProps,a=this.props.isDisabled,o=this.state.isFocused;return t.createElement(i,AS({},r,{isDisabled:a,isFocused:o}))}},{key:"renderDropdownIndicator",value:function(){var e=this.getComponents().DropdownIndicator;if(!e)return null;var n=this.commonProps,i=this.props.isDisabled,r=this.state.isFocused,a={onMouseDown:this.onDropdownIndicatorMouseDown,onTouchEnd:this.onDropdownIndicatorTouchEnd,"aria-hidden":"true"};return t.createElement(e,AS({},n,{innerProps:a,isDisabled:i,isFocused:r}))}},{key:"renderMenu",value:function(){var e=this,n=this.getComponents(),i=n.Group,r=n.GroupHeading,a=n.Menu,o=n.MenuList,s=n.MenuPortal,l=n.LoadingMessage,c=n.NoOptionsMessage,u=n.Option,h=this.commonProps,d=this.state.focusedOption,p=this.props,f=p.captureMenuScroll,A=p.inputValue,m=p.isLoading,g=p.loadingMessage,v=p.minMenuHeight,y=p.maxMenuHeight,b=p.menuIsOpen,w=p.menuPlacement,x=p.menuPosition,M=p.menuPortalTarget,S=p.menuShouldBlockScroll,E=p.menuShouldScrollIntoView,_=p.noOptionsMessage,T=p.onMenuScrollToTop,C=p.onMenuScrollToBottom;if(!b)return null;var I,D=function(n,i){var r=n.type,a=n.data,o=n.isDisabled,s=n.isSelected,l=n.label,c=n.value,p=d===a,f=o?void 0:function(){return e.onOptionHover(a)},A=o?void 0:function(){return e.selectOption(a)},m="".concat(e.getElementId("option"),"-").concat(i),g={id:m,onClick:A,onMouseMove:f,onMouseOver:f,tabIndex:-1,role:"option","aria-selected":e.isAppleDevice?void 0:s};return t.createElement(u,AS({},h,{innerProps:g,data:a,isDisabled:o,isSelected:s,key:m,label:l,type:r,value:c,isFocused:p,innerRef:p?e.getFocusedOptionRef:void 0}),e.formatOptionLabel(n.data,"menu"))};if(this.hasOptions())I=this.getCategorizedOptions().map((function(n){if("group"===n.type){var a=n.data,o=n.options,s=n.index,l="".concat(e.getElementId("group"),"-").concat(s),c="".concat(l,"-heading");return t.createElement(i,AS({},h,{key:l,data:a,options:o,Heading:r,headingProps:{id:c,data:n.data},label:e.formatGroupLabel(n.data)}),n.options.map((function(e){return D(e,"".concat(s,"-").concat(e.index))})))}if("option"===n.type)return D(n,"".concat(n.index))}));else if(m){var N=g({inputValue:A});if(null===N)return null;I=t.createElement(l,h,N)}else{var L=_({inputValue:A});if(null===L)return null;I=t.createElement(c,h,L)}var R={minMenuHeight:v,maxMenuHeight:y,menuPlacement:w,menuPosition:x,menuShouldScrollIntoView:E},O=t.createElement(j_,AS({},h,R),(function(n){var i=n.ref,r=n.placerProps,s=r.placement,l=r.maxHeight;return t.createElement(a,AS({},h,R,{innerRef:i,innerProps:{onMouseDown:e.onMenuMouseDown,onMouseMove:e.onMenuMouseMove},isLoading:m,placement:s}),t.createElement(UT,{captureEnabled:f,onTopArrive:T,onBottomArrive:C,lockEnabled:S},(function(n){return t.createElement(o,AS({},h,{innerRef:function(t){e.getMenuListRef(t),n(t)},innerProps:{role:"listbox","aria-multiselectable":h.isMulti,id:e.getElementId("listbox")},isLoading:m,maxHeight:l,focusedOption:d}),I)})))}));return M||"fixed"===x?t.createElement(s,AS({},h,{appendTo:M,controlElement:this.controlRef,menuPlacement:w,menuPosition:x}),O):O}},{key:"renderFormField",value:function(){var e=this,n=this.props,i=n.delimiter,r=n.isDisabled,a=n.isMulti,o=n.name,s=n.required,l=this.state.selectValue;if(s&&!this.hasValue()&&!r)return t.createElement(FT,{name:o,onFocus:this.onValueInputFocus});if(o&&!r){if(a){if(i){var c=l.map((function(t){return e.getOptionValue(t)})).join(i);return t.createElement("input",{name:o,type:"hidden",value:c})}var u=l.length>0?l.map((function(n,i){return t.createElement("input",{key:"i-".concat(i),name:o,type:"hidden",value:e.getOptionValue(n)})})):t.createElement("input",{name:o,type:"hidden",value:""});return t.createElement("div",null,u)}var h=l[0]?this.getOptionValue(l[0]):"";return t.createElement("input",{name:o,type:"hidden",value:h})}}},{key:"renderLiveRegion",value:function(){var e=this.commonProps,n=this.state,i=n.ariaSelection,r=n.focusedOption,a=n.focusedValue,o=n.isFocused,s=n.selectValue,l=this.getFocusableOptions();return t.createElement(fT,AS({},e,{id:this.getElementId("live-region"),ariaSelection:i,focusedOption:r,focusedValue:a,isFocused:o,selectValue:s,focusableOptions:l,isAppleDevice:this.isAppleDevice}))}},{key:"render",value:function(){var e=this.getComponents(),n=e.Control,i=e.IndicatorsContainer,r=e.SelectContainer,a=e.ValueContainer,o=this.props,s=o.className,l=o.id,c=o.isDisabled,u=o.menuIsOpen,h=this.state.isFocused,d=this.commonProps=this.getCommonProps();return t.createElement(r,AS({},d,{className:s,innerProps:{id:l,onKeyDown:this.onKeyDown},isDisabled:c,isFocused:h}),this.renderLiveRegion(),t.createElement(n,AS({},d,{innerRef:this.getControlRef,innerProps:{onMouseDown:this.onControlMouseDown,onTouchEnd:this.onControlTouchEnd},isDisabled:c,isFocused:h,menuIsOpen:u}),t.createElement(a,AS({},d,{isDisabled:c}),this.renderPlaceholderOrValue(),this.renderInput()),t.createElement(i,AS({},d,{isDisabled:c}),this.renderClearIndicator(),this.renderLoadingIndicator(),this.renderIndicatorSeparator(),this.renderDropdownIndicator())),this.renderMenu(),this.renderFormField())}}],r=[{key:"getDerivedStateFromProps",value:function(e,t){var n=t.prevProps,i=t.clearFocusValueOnUpdate,r=t.inputIsHiddenAfterUpdate,a=t.ariaSelection,o=t.isFocused,s=t.prevWasFocused,l=t.instancePrefix,c=e.options,u=e.value,h=e.menuIsOpen,d=e.inputValue,p=e.isMulti,f=y_(u),A={};if(n&&(u!==n.value||c!==n.options||h!==n.menuIsOpen||d!==n.inputValue)){var m=h?function(e,t){return YT(XT(e,t))}(e,f):[],g=h?ZT(XT(e,f),"".concat(l,"-option")):[],v=i?function(e,t){var n=e.focusedValue,i=e.selectValue.indexOf(n);if(i>-1){if(t.indexOf(n)>-1)return n;if(i<t.length)return t[i]}return null}(t,f):null,y=function(e,t){var n=e.focusedOption;return n&&t.indexOf(n)>-1?n:t[0]}(t,m);A={selectValue:f,focusedOption:y,focusedOptionId:KT(g,y),focusableOptionsWithIds:g,focusedValue:v,clearFocusValueOnUpdate:!1}}var b=null!=r&&e!==n?{inputIsHidden:r,inputIsHiddenAfterUpdate:void 0}:{},w=a,x=o&&s;return o&&!x&&(w={value:R_(p,f,f[0]||null),options:f,action:"initial-input-focus"},x=!s),"initial-input-focus"===(null==a?void 0:a.action)&&(w=null),cS(cS(cS({},A),b),{},{prevProps:e,ariaSelection:w,prevWasFocused:x})}}],i&&mS(n.prototype,i),r&&mS(n,r),Object.defineProperty(n,"prototype",{writable:!1}),o}(t.Component);aC.defaultProps=GT;var oC=(0,t.forwardRef)((function(e,n){var i=function(e){var n=e.defaultInputValue,i=void 0===n?"":n,r=e.defaultMenuIsOpen,a=void 0!==r&&r,o=e.defaultValue,s=void 0===o?null:o,l=e.inputValue,c=e.menuIsOpen,u=e.onChange,h=e.onInputChange,d=e.onMenuClose,p=e.onMenuOpen,f=e.value,A=pS(e,fS),m=dS((0,t.useState)(void 0!==l?l:i),2),g=m[0],v=m[1],y=dS((0,t.useState)(void 0!==c?c:a),2),b=y[0],w=y[1],x=dS((0,t.useState)(void 0!==f?f:s),2),M=x[0],S=x[1],E=(0,t.useCallback)((function(e,t){"function"==typeof u&&u(e,t),S(e)}),[u]),_=(0,t.useCallback)((function(e,t){var n;"function"==typeof h&&(n=h(e,t)),v(void 0!==n?n:e)}),[h]),T=(0,t.useCallback)((function(){"function"==typeof p&&p(),w(!0)}),[p]),C=(0,t.useCallback)((function(){"function"==typeof d&&d(),w(!1)}),[d]),I=void 0!==l?l:g,D=void 0!==c?c:b,N=void 0!==f?f:M;return cS(cS({},A),{},{inputValue:I,menuIsOpen:D,onChange:E,onInputChange:_,onMenuClose:C,onMenuOpen:T,value:N})}(e);return t.createElement(aC,AS({ref:n},i))})),sC=oC;const lC=eS((()=>{const e=Cr.getLocaleText("floor"),n=Dr.config.floors.map(((t,n)=>({label:"".concat(n+1," ").concat(e),value:n})));return t.createElement("div",{className:"floors-select ".concat(1===n.length?"":"floors-select--active")},t.createElement(sC,{classNamePrefix:"floors-select",options:n,styles:{option:(e,t)=>({...e,color:t.isSelected?"#ffffff":"#413E3E",backgroundColor:t.isSelected?"#FAC62D":"#ffffff"}),container:e=>({...e,maxHeight:"100%"})},placeholder:"".concat(Dr.currentFloorIndex+1," ").concat(e),components:{IndicatorSeparator:()=>null,IndicatorsContainer:()=>null},onChange:e=>{let{value:t}=e;return Dr.setCurrentFloorIndex(t)},isSearchable:!1,theme:e=>({...e,borderRadius:0,colors:{...e.colors,primary25:"#ffcc66",primary:"#ffcc66",primary50:"#ffcc66",primary75:"#000"}})}))})),cC=lC,uC=eS((()=>{const[e,n]=(0,t.useState)(!1);return t.createElement("button",{type:"button",className:"widget-tab-button",disabled:e,onClick:async()=>{n(!0),BM.enterVr().finally((()=>n(!1)))}},"VR")})),hC=e=>{let{active:n,text:i,onClick:r}=e;return t.createElement("button",{type:"button",className:"widget-tab-button ".concat(n?"widget-tab-button--active":""),onClick:r},i)},dC=e=>{let{href:n,text:i}=e;return t.createElement("a",{href:n,target:"_blank",rel:"noreferrer"},t.createElement("span",null,"made by")," ",i)};var pC=r(874),fC=r.n(pC);function AC(e,t,n){!function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.set(e,n)}function mC(e,t){return function(e,t){return t.get?t.get.call(e):t.value}(e,vC(e,t,"get"))}function gC(e,t,n){return function(e,t,n){if(t.set)t.set.call(e,n);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=n}}(e,vC(e,t,"set"),n),n}function vC(e,t,n){if(!t.has(e))throw new TypeError("attempted to "+n+" private field on non-instance");return t.get(e)}var yC=new WeakMap,bC=new WeakMap,wC=new WeakMap;const xC=class{constructor(e,t){AC(this,yC,{writable:!0,value:null}),AC(this,bC,{writable:!0,value:null}),AC(this,wC,{writable:!0,value:null}),gC(this,bC,t),gC(this,wC,{container:{mousedown:e=>{0===e.button&&gC(this,yC,e.pageX)},touchstart:e=>gC(this,yC,e.touches[0].clientX),touchend:()=>gC(this,yC,null)},prev:{mousedown:t=>{t.preventDefault(),e.play(!0)},mouseup:t=>{t.preventDefault(),e.stop()},touchstart:t=>{t.preventDefault(),e.prev()}},next:{mousedown:t=>{t.preventDefault(),e.play()},mouseup:t=>{t.preventDefault(),e.stop()},touchstart:t=>{t.preventDefault(),e.next()}},global:{mouseup:()=>gC(this,yC,null),mousemove:t=>{mC(this,yC)&&Math.abs(mC(this,yC)-t.pageX)>mC(this,bC).dragTolerance&&(e.stop(),mC(this,yC)>t.pageX?e.prev():e.next(),gC(this,yC,t.pageX))},touchmove:t=>{2!==t.touches.length&&(1===t.touches.length&&t.stopPropagation(),mC(this,yC)&&Math.abs(mC(this,yC)-t.touches[0].clientX)>mC(this,bC).swipeTolerance&&(e.stop(),mC(this,yC)>t.touches[0].clientX?e.prev():e.next(),gC(this,yC,t.touches[0].clientX)))},keydown:t=>{[37,39].includes(t.keyCode)&&e.play(37===t.keyCode)},keyup:t=>{[37,39].includes(t.keyCode)&&e.stop()}}}),this._initEvents()}destroy(){mC(this,bC).swipeTarget.removeEventListener("mousedown",mC(this,wC).container.mousedown),mC(this,bC).swipeTarget.removeEventListener("touchstart",mC(this,wC).container.touchstart),mC(this,bC).swipeTarget.removeEventListener("touchend",mC(this,wC).container.touchend),r.g.removeEventListener("mouseup",mC(this,wC).global.mouseup),r.g.removeEventListener("mousemove",mC(this,wC).global.mousemove),mC(this,bC).parentElement.removeEventListener("touchmove",mC(this,wC).global.touchmove),r.g.removeEventListener("keydown",mC(this,wC).global.keydown),r.g.removeEventListener("keyup",mC(this,wC).global.keyup),mC(this,bC).prev&&(mC(this,bC).prev.removeEventListener("mousedown",mC(this,wC).prev.mousedown),mC(this,bC).prev.removeEventListener("mouseup",mC(this,wC).prev.mouseup),mC(this,bC).prev.removeEventListener("touchstart",mC(this,wC).prev.touchstart)),mC(this,bC).next&&(mC(this,bC).next.removeEventListener("mousedown",mC(this,wC).next.mousedown),mC(this,bC).next.removeEventListener("mouseup",mC(this,wC).next.mouseup),mC(this,bC).next.removeEventListener("touchstart",mC(this,wC).next.touchstart))}_initEvents(){mC(this,bC).draggable&&(mC(this,bC).swipeTarget.addEventListener("mousedown",mC(this,wC).container.mousedown),r.g.addEventListener("mouseup",mC(this,wC).global.mouseup),r.g.addEventListener("mousemove",mC(this,wC).global.mousemove)),mC(this,bC).swipeable&&(mC(this,bC).swipeTarget.addEventListener("touchstart",mC(this,wC).container.touchstart),mC(this,bC).swipeTarget.addEventListener("touchend",mC(this,wC).container.touchend),mC(this,bC).parentElement.addEventListener("touchmove",mC(this,wC).global.touchmove)),mC(this,bC).keys&&(r.g.addEventListener("keydown",mC(this,wC).global.keydown),r.g.addEventListener("keyup",mC(this,wC).global.keyup)),mC(this,bC).prev&&(mC(this,bC).prev.addEventListener("mousedown",mC(this,wC).prev.mousedown),mC(this,bC).prev.addEventListener("mouseup",mC(this,wC).prev.mouseup),mC(this,bC).prev.addEventListener("touchstart",mC(this,wC).prev.touchstart)),mC(this,bC).next&&(mC(this,bC).next.addEventListener("mousedown",mC(this,wC).next.mousedown),mC(this,bC).next.addEventListener("mouseup",mC(this,wC).next.mouseup),mC(this,bC).next.addEventListener("touchstart",mC(this,wC).next.touchstart))}};function MC(e,t,n){!function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}(e,t),t.set(e,n)}function SC(e,t){return function(e,t){return t.get?t.get.call(e):t.value}(e,_C(e,t,"get"))}function EC(e,t,n){return function(e,t,n){if(t.set)t.set.call(e,n);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=n}}(e,_C(e,t,"set"),n),n}function _C(e,t,n){if(!t.has(e))throw new TypeError("attempted to "+n+" private field on non-instance");return t.get(e)}var TC=new WeakMap,CC=new WeakMap,IC=new WeakMap,DC=new WeakMap,NC=new WeakMap,LC=new WeakMap;const RC=class{constructor(e,t){MC(this,TC,{writable:!0,value:null}),MC(this,CC,{writable:!0,value:0}),MC(this,IC,{writable:!0,value:null}),MC(this,DC,{writable:!0,value:!1}),MC(this,NC,{writable:!0,value:null}),MC(this,LC,{writable:!0,value:!1}),this.container=e,EC(this,TC,Object.assign({width:300,height:300,aspectRatio:0,count:0,perRow:0,speed:100,dragTolerance:10,swipeTolerance:10,draggable:!0,swipeable:!0,keys:!0,inverted:!1},t)),SC(this,TC).swipeTarget=SC(this,TC).swipeTarget||this.container,EC(this,LC,!Array.isArray(SC(this,TC).image)),this.sprite||(SC(this,TC).count=SC(this,TC).image.length),Object.freeze(SC(this,TC)),EC(this,NC,new xC(this,SC(this,TC))),this._windowResizeListener=this._windowResizeListener.bind(this),this._initContainer()}get isResponsive(){return SC(this,TC).aspectRatio>0}get containerWidth(){return this.isResponsive?this.container.clientWidth:SC(this,TC).width}get containerHeight(){return this.isResponsive?this.container.clientWidth*SC(this,TC).aspectRatio:SC(this,TC).height}get index(){return SC(this,CC)}get looping(){return SC(this,DC)}get sprite(){return SC(this,LC)}next(){this.goto(SC(this,TC).inverted?SC(this,CC)-1:SC(this,CC)+1)}prev(){this.goto(SC(this,TC).inverted?SC(this,CC)+1:SC(this,CC)-1)}goto(e){EC(this,CC,(SC(this,TC).count+e)%SC(this,TC).count),this._update()}play(e){this.looping||(this._loop(e),EC(this,DC,!0))}stop(){this.looping&&(r.g.clearTimeout(SC(this,IC)),EC(this,DC,!1))}toggle(e){this.looping?this.stop():this.play(e)}destroy(){this.stop(),SC(this,NC).destroy(),this.container.style.width="",this.container.style.height="",this.container.style.backgroundImage="",this.container.style.backgroundPositionX="",this.container.style.backgroundPositionY="",this.container.style.backgroundSize="",this.isResponsive&&window.removeEventListener("resize",this._windowResizeListener)}_loop(e){e?this.prev():this.next(),EC(this,IC,r.g.setTimeout((()=>{this._loop(e)}),SC(this,TC).speed))}_update(){this.sprite?(this.container.style.backgroundPositionX=-SC(this,CC)%SC(this,TC).perRow*this.containerWidth+"px",this.container.style.backgroundPositionY=-Math.floor(SC(this,CC)/SC(this,TC).perRow)*this.containerHeight+"px"):this.container.style.backgroundImage='url("'.concat(SC(this,TC).image[SC(this,CC)],'")')}_windowResizeListener(){this.container.style.height=this.containerHeight+"px",this._update()}_initContainer(){if(this.isResponsive||(this.container.style.width=this.containerWidth+"px"),this.container.style.height=this.containerHeight+"px",this.sprite){this.container.style.backgroundImage='url("'.concat(SC(this,TC).image,'")');const e=SC(this,TC).perRow,t=Math.ceil(SC(this,TC).count/SC(this,TC).perRow);this.container.style.backgroundSize=100*e+"% "+100*t+"%"}this.isResponsive&&window.addEventListener("resize",this._windowResizeListener),this._update()}},OC=e=>{let{initialized:n,images:i,activeIndex:r}=e;return t.createElement(t.Fragment,null,t.createElement("div",{className:"widget-tab__threesixty ".concat(n?"widget-tab__threesixty--active":"")},t.createElement("div",{className:"widget-tab__threesixty-container",onTouchMove:e=>{e.touches.length>1||n||e.stopPropagation()}},i.map(((e,n)=>t.createElement("img",{className:r===n?"active":"",alt:"rotation-view-".concat(n),key:n,src:e}))))))},PC=e=>{let{steps:n=[],disabled:i=!1,onClick:r=(()=>{})}=e;const a=Cr.getLocaleText("instructions-hint-text");return t.createElement("div",{className:"widget-instructions",onClick:()=>{i||r()}},t.createElement("div",{className:"widget-instructions__content",onClick:e=>e.stopPropagation()},t.createElement("div",{className:"widget-instructions__steps"},n.map(((e,n)=>{let{text:i,icon:r}=e;return t.createElement("div",{className:"widget-instructions__step",key:n},t.createElement("img",{src:r,alt:"step-icon"}),t.createElement("p",null,i))}))),t.createElement("button",{disabled:i,onClick:r,type:"button"},Cr.getLocaleText("ok")),Boolean(a)&&t.createElement("div",{className:"widget-instructions__hint"},t.createElement("p",null,a))))},zC=e=>{let{topViewImage:n,activeIndex:i,currentStep:r,planImage:a,images:o,steps:s,setCurrentStep:l,setActiveIndex:c}=e;const u=()=>{const e=s.findIndex((e=>e===r));return s[e+1]||s[0]},h=()=>{const e=i+1;o[e]?c(e):c(0)},d=()=>{const e=i-1;o[e]?c(e):c(o.length-1)};let p={x:0,y:0};const f=()=>p={x:0,y:0};return t.createElement(t.Fragment,null,t.createElement("div",{className:"widget-tab__isometry"},t.createElement("div",{className:"widget-tab__isometry-container",onTouchStart:e=>{if(e.touches.length>1)return;const t=e.touches[0];p={x:t.screenX}},onTouchMove:e=>{if(e.touches.length>1)return;e.stopPropagation();const t=e.touches[0],n=p.x-t.screenX;"carousel"===r&&0!==p.x&&(n>=100?(h(),f()):n<=-100&&(d(),f()))},onTouchEnd:f},t.createElement("img",{className:"widget-tab__isometry--plan ".concat("plan"===r?"active":""),src:a,alt:"plan-view"}),t.createElement("img",{className:"widget-tab__isometry--top-view ".concat("topView"===r?"active":""),src:n,alt:"top-view"}),o.map(((e,n)=>t.createElement("img",{className:"carousel"===r&&i===n?"active":"",alt:"rotation-view-".concat(n),key:n,src:e}))))),"carousel"===r&&t.createElement("div",{className:"widget-tab__isometry-arrows"},t.createElement("button",{className:"widget-tab__isometry-arrow widget-tab__isometry-arrow--prev",onClick:d},t.createElement("img",{src:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI3IDE2SDUiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTE0IDdMNSAxNkwxNCAyNSIgc3Ryb2tlPSIjNDEzRTNFIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K",alt:"arrow-left"})),t.createElement("span",null,i+1,"/",o.length),t.createElement("button",{className:"widget-tab__isometry-arrow widget-tab__isometry-arrow--next",onClick:h},t.createElement("img",{src:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUgMTZIMjciIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTE4IDdMMjcgMTZMMTggMjUiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+Cg==",alt:"arrow-right"}))),t.createElement("div",{className:"widget-tab__isometry-buttons"},s.length>1&&t.createElement("button",{className:"widget-tab__isometry-button",onClick:()=>l(u())},t.createElement("img",{src:(()=>{switch(u()){case"carousel":return"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHZpZXdCb3g9IjAgMCA1MCA1MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTcuMTY5OTIgMzUuODU1N0wyNC44MzcgNDMuMTc3TDQxLjg0OTcgMzUuODU1NyIgc3Ryb2tlPSIjNDEzRTNFIiBzdHJva2Utd2lkdGg9IjMuMTUyNzEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMjYuMzMwMSA0My4xOTQ2TDguODMwMDggMzUuNjk0NkwyNS44MzAxIDI4LjE5NDZMNDIuODMwMSAzNS42OTQ2TDI2LjMzMDEgNDMuMTk0NloiIGZpbGw9IiNDNEM0QzQiLz4KPHBhdGggZD0iTTcuMTY5OTIgMzUuODE5NlYxMy44NTU3TDI0LjgzNyA2LjUzNDQyTDQxLjg0OTcgMTMuODU1N1YzNS44MTk2IiBzdHJva2U9IiM0MTNFM0UiIHN0cm9rZS13aWR0aD0iMy4xNTI3MSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yNC44MzU5IDYuNjk0NThWMjguMTU4NSIgc3Ryb2tlPSIjNDEzRTNFIiBzdHJva2Utd2lkdGg9IjMuMTUyNzEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNNy4xNjk5MiAzNi41MTU5TDI0LjgzNyAyOS4xOTQ2TDQxLjg0OTcgMzYuNTE1OUwyNC44MzcgNDMuODM3Mkw3LjE2OTkyIDM2LjUxNTlaIiBzdHJva2U9IiM0MTNFM0UiIHN0cm9rZS13aWR0aD0iMy4xNTI3MSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=";case"plan":return"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHZpZXdCb3g9IjAgMCA1MCA1MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTI1LjUxNDcgMzlMNy41IDMxLjVMMTYuMjUgMjcuNzVMMjAuNjI1IDI1Ljg3NUwyNSAyNy43NUwyOS4zNzUgMjUuODc1TDMzLjc1IDI3Ljc1TDQyLjUgMzEuNUwyNS41MTQ3IDM5WiIgZmlsbD0iI0M0QzRDNCIvPgo8cGF0aCBkPSJNMzAuMTUwOSAyNS4xMjVMMzQuOTM0IDI3LjI1TDQ0LjUgMzEuNUwyNS4zNjc5IDQwTDUuNSAzMS41TDE1LjQzNCAyNy4yNUwyMC40MDA5IDI1LjEyNSIgc3Ryb2tlPSIjNDEzRTNFIiBzdHJva2Utd2lkdGg9IjMuMTUyNzEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNNS41IDE4LjVMMjUuMzY3OSAxMEw0NC41IDE4LjVMMjUuMzY3OSAyN0w1LjUgMTguNVoiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIzLjE1MjcxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9zdmc+Cg==";default:return"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNDkiIHZpZXdCb3g9IjAgMCA1MCA0OSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM4Ljk5NzIgMzguODk5NEgxMS4wMDM2QzEwLjc4MjcgMzguODk5NCAxMC42MDM2IDM4LjcyMDMgMTAuNjAzNiAzOC40OTk0TDEwLjYwMzUgMTAuOTk4OUMxMC42MDM1IDEwLjc3OCAxMC43ODI2IDEwLjU5ODkgMTEuMDAzNSAxMC41OTg5SDM4Ljk5NzJDMzkuMjE4MSAxMC41OTg5IDM5LjM5NzIgMTAuNzc4IDM5LjM5NzIgMTAuOTk4OVYzOC40OTk0QzM5LjM5NzIgMzguNzIwMyAzOS4yMTgxIDM4Ljg5OTQgMzguOTk3MiAzOC44OTk0WiIgc3Ryb2tlPSIjNDEzRTNFIiBzdHJva2Utd2lkdGg9IjMuMTUyNzEiLz4KPHBhdGggZD0iTTEyLjE2OTkgMTkuMTk0NkgyNC4xMzQxQzI0LjM1NTEgMTkuMTk0NiAyNC41MzQxIDE5LjM3MzcgMjQuNTM0MSAxOS41OTQ2VjM3LjMyMTQiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIyIi8+CjxwYXRoIGQ9Ik0zNy44MjA2IDIwLjU5NDVIMzAuOTg0QzMwLjc2MzEgMjAuNTk0NSAzMC41ODQgMjAuNDE1NCAzMC41ODQgMjAuMTk0NVYxMi4xNjg3IiBzdHJva2U9IiM0MTNFM0UiIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4K"}})(),alt:"".concat(r,"-icon")}))))},kC="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTIiIGhlaWdodD0iODAiIHZpZXdCb3g9IjAgMCA1MiA4MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzg1NF84MjcyKSI+CjxwYXRoIGQ9Ik0zOC44OTIgNy43NDQ2M0w0NS41Nzk5IDE0LjQzMjVMMzguODkyIDIxLjEyMDQiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIzLjE1MjcxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTI5Ljk3NDggMTQuNDMyNUw0NS41Nzk5IDE0LjQzMjUiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIzLjE1MjcxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTguNjgxNjQgMjEuMTIwNEwxLjk5MzczIDE0LjQzMjVMOC42ODE2NCA3Ljc0NDYzIiBzdHJva2U9IiM0MTNFM0UiIHN0cm9rZS13aWR0aD0iMy4xNTI3MSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xNy41OTg5IDE0LjQzMjVMMS45OTM4MyAxNC40MzI1IiBzdHJva2U9IiM0MTNFM0UiIHN0cm9rZS13aWR0aD0iMy4xNTI3MSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0yOC42MDMzIDQzLjE5NzhWMjQuNzc0MkMyOC42MDMzIDIzLjMzNzEgMjguMDMyNCAyMS45NTg4IDI3LjAxNjIgMjAuOTQyNkMyNiAxOS45MjY0IDI0LjYyMTcgMTkuMzU1NSAyMy4xODQ1IDE5LjM1NTVDMjEuNzQ3NCAxOS4zNTU1IDIwLjM2OTEgMTkuOTI2NCAxOS4zNTI5IDIwLjk0MjZDMTguMzM2NyAyMS45NTg4IDE3Ljc2NTggMjMuMzM3MSAxNy43NjU4IDI0Ljc3NDJWNTcuNjI5NUwxMS44MjQ5IDQ3LjMzOTVDMTEuNDY5NCA0Ni43MjI2IDEwLjk5NTggNDYuMTgxOCAxMC40MzEzIDQ1Ljc0OEM5Ljg2NjY4IDQ1LjMxNDMgOS4yMjIxNiA0NC45OTYgOC41MzQ1MSA0NC44MTE0QzcuODQ2ODcgNDQuNjI2OSA3LjEyOTYgNDQuNTc5NiA2LjQyMzcgNDQuNjcyNEM1LjcxNzc5IDQ0Ljc2NTIgNS4wMzcwOSA0NC45OTYyIDQuNDIwNSA0NS4zNTIyQzMuODAzOTEgNDUuNzA4MiAzLjI2MzUyIDQ2LjE4MjIgMi44MzAyMSA0Ni43NDcxQzIuMzk2OSA0Ny4zMTIxIDIuMDc5MTggNDcuOTU2OSAxLjg5NTE5IDQ4LjY0NDdDMS43MTEyMSA0OS4zMzI1IDEuNjY0NTcgNTAuMDQ5OCAxLjc1Nzk0IDUwLjc1NTZDMS44NTEzMiA1MS40NjE0IDIuMDgyODcgNTIuMTQxOSAyLjQzOTM4IDUyLjc1ODJDMTEuMjYzNCA3MS4zNzUyIDE2LjYzMjYgNzcuODc3NiAyOC42MDMzIDc3Ljg3NzZDMzEuNDQ5NyA3Ny44Nzc2IDM0LjI2ODIgNzcuMzE3IDM2Ljg5NzkgNzYuMjI3N0MzOS41Mjc2IDc1LjEzODUgNDEuOTE3IDczLjU0MTkgNDMuOTI5NyA3MS41MjkyQzQ1Ljk0MjQgNjkuNTE2NSA0Ny41MzkgNjcuMTI3MSA0OC42MjgyIDY0LjQ5NzRDNDkuNzE3NSA2MS44Njc3IDUwLjI3ODEgNTkuMDQ5MSA1MC4yNzgxIDU2LjIwMjhWNDUuMzY1M0M1MC4yNzgxIDQzLjkyODIgNDkuNzA3MiA0Mi41NDk5IDQ4LjY5MSA0MS41MzM3QzQ3LjY3NDggNDAuNTE3NSA0Ni4yOTY2IDM5Ljk0NjYgNDQuODU5NCAzOS45NDY2QzQzLjQyMjMgMzkuOTQ2NiA0Mi4wNDQgNDAuNTE3NSA0MS4wMjc4IDQxLjUzMzdDNDAuMDExNiA0Mi41NDk5IDM5LjQ0MDcgNDMuOTI4MiAzOS40NDA3IDQ1LjM2NTMiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIzLjE1MjcxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTM5LjQ0MDcgNDUuMzY1M1Y0Mi4xMTQxQzM5LjQ0MDcgNDAuNjc3IDM4Ljg2OTggMzkuMjk4NyAzNy44NTM2IDM4LjI4MjVDMzYuODM3NCAzNy4yNjYzIDM1LjQ1OTEgMzYuNjk1NCAzNC4wMjIgMzYuNjk1NEMzMi41ODQ5IDM2LjY5NTQgMzEuMjA2NiAzNy4yNjYzIDMwLjE5MDQgMzguMjgyNUMyOS4xNzQyIDM5LjI5ODcgMjguNjAzMyA0MC42NzcgMjguNjAzMyA0Mi4xMTQxVjQzLjE5NzgiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIzLjE1MjcxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF84NTRfODI3MiI+CjxyZWN0IHdpZHRoPSI1MiIgaGVpZ2h0PSI4MCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K",UC=e=>{let{planImage:n,topViewImage:i,images:r,mode:a,disabled:o=!1}=e;const s=[{icon:kC,text:Cr.getLocaleText("rotate-plan")}],[l,c]=(0,t.useState)(!1),[u,h]=(0,t.useState)(null),[d,p]=(0,t.useState)(0),[f,A]=(0,t.useState)(null),[m]=(0,t.useState)((()=>{const e=[];return r&&r.length>0&&e.push("carousel"),n&&e.push("plan"),i&&e.push("topView"),e})()),[g,v]=(0,t.useState)(m[0]);function y(){p(this.index)}return(0,t.useEffect)((()=>{const e=document.querySelector(".widget-tab__threesixty-container"),t=document.querySelector(".widget-tab__isometry-container"),n=a===Ur.THREESIXTY?e:t,i=fC()(n,{beforeMouseDown:()=>!0,onTouch:()=>!1,zoomDoubleClickSpeed:1,minZoom:.5,maxZoom:3});h(i)}),[]),t.createElement("div",{className:"widget-tab__rotation",onContextMenu:gM},a===Ur.THREESIXTY&&t.createElement(OC,{initialized:l,activeIndex:d,images:r}),a===Ur.DEFAULT&&t.createElement(zC,{setActiveIndex:p,setCurrentStep:e=>{const{scale:t}=u.getTransform();u.pause(),u.zoomTo(0,0,1/t),u.moveTo(0,0),u.resume(),v(e)},topViewImage:i,activeIndex:d,currentStep:g,planImage:n,images:r,steps:m}),a===Ur.THREESIXTY&&!l&&t.createElement(PC,{onClick:()=>{c(!0);const e=document.querySelector(".widget-tab__threesixty-container"),t=document.querySelector(".widget-tab__rotation"),n=new RC(e,{image:[...r],parentElement:t,inverted:!0,speed:300});n._update=y,u.on("panstart",(()=>{n.stop(),n._update=()=>{}})),u.on("panend",(()=>{n.goto(n.index),n._update=y})),A(n)},steps:s,disabled:o}))},BC=eS((()=>t.createElement("button",{className:"widget-tab__panorama-controls-button widget-tab__panorama-controls-button--rotation",onClick:()=>BM.toggleAutoRotate()},t.createElement("img",{src:BM.currentAutoRotateIcon,alt:"rotation-icon"})))),FC=eS((e=>{let{onClick:n}=e;return t.createElement("button",{className:"widget-tab__panorama-controls-button widget-tab__panorama-controls-button--ruler",disabled:!BM.rulerButtonEnabled,onClick:n},t.createElement("img",{src:BM.currentRulerIcon,alt:"ruler-icon"}))})),jC=FC,HC=eS((()=>t.createElement("button",{className:"widget-tab__panorama-controls-button widget-tab__panorama-controls-button--scale",onClick:()=>BM.toggleFov()},t.createElement("img",{src:BM.currentFovIcon,alt:"scale-icon"})))),VC=e=>{let{absolute:n,size:i="lg"}=e;return t.createElement("div",{className:"widget-loader widget-loader--".concat(i," ").concat(n?"widget-loader--absolute":"")},t.createElement("div",null),t.createElement("div",null),t.createElement("div",null),t.createElement("div",null))},WC=eS((e=>{let{json:n,planImage:i,disabled:r}=e;const[a,o]=(0,t.useState)({width:"200px",height:"auto"}),[s,l]=(0,t.useState)(!0),[c,u]=(0,t.useState)({X:1,Y:1}),[h,d]=(0,t.useState)(!1),p=()=>{const e=document.querySelector(".widget-tab__panorama-map img"),t=e.naturalWidth/e.naturalHeight,i=Dr.config.height-200;let r=200,a=r/t;a>=i&&(a=i,r=a*t);const s=((e,t)=>{let{width:n,height:i}=e;if(!t)return{X:1,Y:1};const r=(e=>{var t,n,i,r,a;const o=e.Meta;if(!o)return{X:e.Scale.X,Y:e.Scale.X};const s=Dr.currentFloorIndex,l=null===(t=o.BackgroundsTransforms)||void 0===t?void 0:t[s],c=null===(n=o.WidgetInfo)||void 0===n||null===(n=n.PlanBounds)||void 0===n?void 0:n[s];if(null!=l&&l.Modified&&c)return{Width:c.Right,Height:c.Bottom};const u=null===(i=o.FloorsScales)||void 0===i?void 0:i[s];return{X:null!==(r=null==u?void 0:u.X)&&void 0!==r?r:e.Scale.X,Y:null!==(a=null==u?void 0:u.Y)&&void 0!==a?a:e.Scale.X}})(t);if(r.Width&&r.Height)return{X:n/r.Width,Y:i/r.Height};const a=i*(1024/n);return{X:n/1024/r.X,Y:i/a/r.Y}})({width:r,height:a},n);o({width:"".concat(r,"px"),height:"".concat(a,"px")}),u(s),BM.updateWindowSize(Dr.config.width,Dr.config.height),BM.vrControlPanel.map.updateSize(2*r,2*a),BM.vrControlPanel.map.updateScale(s)},f=()=>{Dr.showControls(),d(!1)};return(0,t.useEffect)(p,[Dr.config.width,Dr.config.height,Dr.currentFloorIndex]),t.createElement(t.Fragment,null,h&&t.createElement("div",{className:"widget-tab__panorama-close-map",onClick:f},t.createElement("img",{src:iS,alt:"close-map"})),t.createElement("div",{className:(()=>{let e="widget-tab__panorama-map";return s&&(e+=" widget-tab__panorama-map--hidden"),h&&(e+=" widget-tab__panorama-map--scaled"),e})()},t.createElement("img",{src:i,style:a,alt:"plan",onLoad:()=>{p(),l(!n||r),BM.vrControlPanel.map.setDisabledState(!n||r),BM.vrControlPanel.map.loadImage(i).then((()=>{BM.vrControlPanel.mapButtonAvailable=!0}))}}),!s&&t.createElement(t.Fragment,null,t.createElement("div",{className:"widget-tab__panorama-map__fov",style:(()=>{const e=BM.getPanoramaById(BM.currentPanoramaId);if(!e)return{display:"none"};const{left:t,top:n}=e.userData;return{"--x":"".concat(t*c.X,"px"),"--y":"".concat(n*c.Y,"px")}})()},t.createElement("div",{className:"widget-tab__panorama-map__fov-direction"}),t.createElement("div",{className:"widget-tab__panorama-map__fov-dot"})),t.createElement("svg",{style:{width:a.width},key:"X-".concat(c.X,"-Y-").concat(c.Y),onClick:e=>{if(BM.loading)return;if(Dr.config.width<=nS.tablet&&!h)return Dr.hideControls(),void d(!0);const t=document.querySelector(".widget-tab__panorama-map"),n=t.getBoundingClientRect().width/t.offsetWidth,i=document.querySelector(".widget-tab__panorama-map img").getBoundingClientRect(),{clientX:r,clientY:a}=e,o=(r-i.left)/n/c.X,s=(a-i.top)/n/c.Y,l=BM.panoramasGroup.children.filter((e=>{let{userData:t}=e;return MM([o,s],t.points)})),{panorama:u}=qw([o,s],l);f(),u&&BM.setCurrentPanoramaById(u.panoramaId)}},BM.panoramasGroup.children.map(((e,n)=>{let{userData:i}=e;return t.createElement("polygon",{key:n,points:(r=i.points,a=c,r.map((e=>{let[t,n]=e;return[t*a.X,n*a.Y]})).flat().filter((e=>!isNaN(e))).toString())});var r,a}))))))})),GC=WC,QC="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTIiIGhlaWdodD0iODAiIHZpZXdCb3g9IjAgMCA1MiA4MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzg1NF84MjMzKSI+CjxwYXRoIGQ9Ik0zMS4xMjk4IDIzLjIwODNDMzAuNTE0MiAyMy44MjM5IDMwLjUxNDIgMjQuODIyIDMxLjEyOTggMjUuNDM3NkMzMS43NDU0IDI2LjA1MzMgMzIuNzQzNSAyNi4wNTMzIDMzLjM1OTEgMjUuNDM3NkwzMS4xMjk4IDIzLjIwODNaTTM1LjA5MjUgMTAuMDA1M0wzNi41NDg4IDkuNDAyMDJWOS40MDIwMkwzNS4wOTI1IDEwLjAwNTNaTTMwLjI1MzYgNC4xMDkwOEwyOS4zNzc4IDUuNDE5NzdMMzAuMjUzNiA0LjEwOTA4Wk0xNS42NTU0IDQuMTA5MDhMMTQuNzc5NiAyLjc5ODM5VjIuNzk4MzlMMTUuNjU1NCA0LjEwOTA4Wk0xMC44MTY1IDEwLjAwNTNMOS4zNjAxMyA5LjQwMjAySDkuMzYwMTNMMTAuODE2NSAxMC4wMDUzWk0xMi41NDk4IDI1LjQzNzZDMTMuMTY1NCAyNi4wNTMyIDE0LjE2MzUgMjYuMDUzMiAxNC43NzkxIDI1LjQzNzZDMTUuMzk0NyAyNC44MjIgMTUuMzk0NyAyMy44MjM5IDE0Ljc3OTEgMjMuMjA4M0wxMi41NDk4IDI1LjQzNzZaTTMzLjM1OTEgMjUuNDM3NkMzNS40MTcgMjMuMzc5OCAzNi44MTg0IDIwLjc1NzkgMzcuMzg2MiAxNy45MDM2TDM0LjI5NCAxNy4yODg2QzMzLjg0NzkgMTkuNTMxMyAzMi43NDY4IDIxLjU5MTQgMzEuMTI5OCAyMy4yMDgzTDMzLjM1OTEgMjUuNDM3NlpNMzcuMzg2MiAxNy45MDM2QzM3Ljk1MzkgMTUuMDQ5MyAzNy42NjI1IDEyLjA5MDcgMzYuNTQ4OCA5LjQwMjAyTDMzLjYzNjEgMTAuNjA4NUMzNC41MTEyIDEyLjcyMTEgMzQuNzQwMSAxNS4wNDU4IDM0LjI5NCAxNy4yODg2TDM3LjM4NjIgMTcuOTAzNlpNMzYuNTQ4OCA5LjQwMjAyQzM1LjQzNTEgNi43MTMzMSAzMy41NDkxIDQuNDE1MjMgMzEuMTI5NCAyLjc5ODM5TDI5LjM3NzggNS40MTk3N0MzMS4yNzkxIDYuNjkwMTkgMzIuNzYxIDguNDk1ODggMzMuNjM2MSAxMC42MDg1TDM2LjU0ODggOS40MDIwMlpNMzEuMTI5NCAyLjc5ODM5QzI4LjcwOTYgMS4xODE1NSAyNS44NjQ3IDAuMzE4NTY1IDIyLjk1NDUgMC4zMTg1NjVWMy40NzEyN0MyNS4yNDEyIDMuNDcxMjcgMjcuNDc2NSA0LjE0OTM2IDI5LjM3NzggNS40MTk3N0wzMS4xMjk0IDIuNzk4MzlaTTIyLjk1NDUgMC4zMTg1NjVDMjAuMDQ0MiAwLjMxODU2NSAxNy4xOTk0IDEuMTgxNTUgMTQuNzc5NiAyLjc5ODM5TDE2LjUzMTEgNS40MTk3N0MxOC40MzI0IDQuMTQ5MzYgMjAuNjY3OCAzLjQ3MTI3IDIyLjk1NDUgMy40NzEyN1YwLjMxODU2NVpNMTQuNzc5NiAyLjc5ODM5QzEyLjM1OTggNC40MTUyMyAxMC40NzM4IDYuNzEzMzEgOS4zNjAxMyA5LjQwMjAyTDEyLjI3MjggMTAuNjA4NUMxMy4xNDc5IDguNDk1ODggMTQuNjI5OCA2LjY5MDE5IDE2LjUzMTEgNS40MTk3N0wxNC43Nzk2IDIuNzk4MzlaTTkuMzYwMTMgOS40MDIwMkM4LjI0NjQzIDEyLjA5MDcgNy45NTUwMyAxNS4wNDkzIDguNTIyNzkgMTcuOTAzNkwxMS42MTQ5IDE3LjI4ODZDMTEuMTY4OCAxNS4wNDU4IDExLjM5NzggMTIuNzIxMSAxMi4yNzI4IDEwLjYwODVMOS4zNjAxMyA5LjQwMjAyWk04LjUyMjc5IDE3LjkwMzZDOS4wOTA1NSAyMC43NTc5IDEwLjQ5MiAyMy4zNzk4IDEyLjU0OTggMjUuNDM3NkwxNC43NzkxIDIzLjIwODNDMTMuMTYyMiAyMS41OTE0IDEyLjA2MSAxOS41MzEzIDExLjYxNDkgMTcuMjg4Nkw4LjUyMjc5IDE3LjkwMzZaIiBmaWxsPSIjNDEzRTNFIi8+CjxwYXRoIGQ9Ik0yOC41OTM0IDQzLjE5NzNWMjQuNzczNkMyOC41OTM0IDIzLjMzNjUgMjguMDIyNSAyMS45NTgyIDI3LjAwNjMgMjAuOTQyQzI1Ljk5MDEgMTkuOTI1OCAyNC42MTE4IDE5LjM1NDkgMjMuMTc0NyAxOS4zNTQ5QzIxLjczNzYgMTkuMzU0OSAyMC4zNTkzIDE5LjkyNTggMTkuMzQzMSAyMC45NDJDMTguMzI2OSAyMS45NTgyIDE3Ljc1NiAyMy4zMzY1IDE3Ljc1NiAyNC43NzM2VjU3LjYyOUwxMS44MTUgNDcuMzM4OUMxMS40NTk2IDQ2LjcyMiAxMC45ODYgNDYuMTgxMyAxMC40MjE0IDQ1Ljc0NzVDOS44NTY4NCA0NS4zMTM3IDkuMjEyMzEgNDQuOTk1NCA4LjUyNDY3IDQ0LjgxMDlDNy44MzcwMyA0NC42MjYzIDcuMTE5NzYgNDQuNTc5MSA2LjQxMzg1IDQ0LjY3MTlDNS43MDc5NSA0NC43NjQ2IDUuMDI3MjQgNDQuOTk1NiA0LjQxMDY1IDQ1LjM1MTZDMy43OTQwNiA0NS43MDc2IDMuMjUzNjcgNDYuMTgxNiAyLjgyMDM2IDQ2Ljc0NjZDMi4zODcwNiA0Ny4zMTE1IDIuMDY5MzMgNDcuOTU2MyAxLjg4NTM1IDQ4LjY0NDFDMS43MDEzNiA0OS4zMzE5IDEuNjU0NzIgNTAuMDQ5MiAxLjc0ODEgNTAuNzU1QzEuODQxNDcgNTEuNDYwOCAyLjA3MzAzIDUyLjE0MTQgMi40Mjk1MyA1Mi43NTc2QzExLjI1MzUgNzEuMzc0NiAxNi42MjI3IDc3Ljg3NzEgMjguNTkzNCA3Ny44NzcxQzMxLjQzOTggNzcuODc3MSAzNC4yNTgzIDc3LjMxNjQgMzYuODg4IDc2LjIyNzJDMzkuNTE3OCA3NS4xMzc5IDQxLjkwNzIgNzMuNTQxMyA0My45MTk5IDcxLjUyODZDNDUuOTMyNiA2OS41MTU5IDQ3LjUyOTEgNjcuMTI2NSA0OC42MTg0IDY0LjQ5NjhDNDkuNzA3NyA2MS44NjcxIDUwLjI2ODMgNTkuMDQ4NiA1MC4yNjgzIDU2LjIwMjJWNDUuMzY0OEM1MC4yNjgzIDQzLjkyNzYgNDkuNjk3NCA0Mi41NDkzIDQ4LjY4MTIgNDEuNTMzMUM0Ny42NjUgNDAuNTE2OSA0Ni4yODY3IDM5Ljk0NiA0NC44NDk2IDM5Ljk0NkM0My40MTI0IDM5Ljk0NiA0Mi4wMzQyIDQwLjUxNjkgNDEuMDE4IDQxLjUzMzFDNDAuMDAxOCA0Mi41NDkzIDM5LjQzMDkgNDMuOTI3NiAzOS40MzA5IDQ1LjM2NDgiIHN0cm9rZT0iIzQxM0UzRSIgc3Ryb2tlLXdpZHRoPSIzLjE1MjcxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPHBhdGggZD0iTTM5LjQzMDggNDUuMzY0N1Y0Mi4xMTM1QzM5LjQzMDggNDAuNjc2NCAzOC44NTk5IDM5LjI5ODEgMzcuODQzNyAzOC4yODE5QzM2LjgyNzUgMzcuMjY1NyAzNS40NDkyIDM2LjY5NDggMzQuMDEyMSAzNi42OTQ4QzMyLjU3NSAzNi42OTQ4IDMxLjE5NjcgMzcuMjY1NyAzMC4xODA1IDM4LjI4MTlDMjkuMTY0MyAzOS4yOTgxIDI4LjU5MzQgNDAuNjc2NCAyOC41OTM0IDQyLjExMzVWNDMuMTk3MyIgc3Ryb2tlPSIjNDEzRTNFIiBzdHJva2Utd2lkdGg9IjMuMTUyNzEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzg1NF84MjMzIj4KPHJlY3Qgd2lkdGg9IjUyIiBoZWlnaHQ9IjgwIiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMC4wMDAzMzA0NDgpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==",XC=eS((e=>{let{json:n,planImage:i,items:r,type:a,disabled:o}=e;const s=[{icon:kC,text:Cr.getLocaleText("rotate-plan")},{icon:QC,text:Cr.getLocaleText("research-plan")}],l=[{icon:kC,text:Cr.getLocaleText("create-points")},{icon:QC,text:Cr.getLocaleText("delete-points")}],[c,u]=(0,t.useState)(!1),[h,d]=(0,t.useState)(!0),p=()=>BM.updateWindowSize(Dr.config.width,Dr.config.height);return(0,t.useEffect)((()=>{BM.enableRender();const e=document.querySelector(".widget-tab__panorama-overlay");return e.appendChild(BM.renderer.domElement),()=>{BM.setInitialCurrentPanorama(),BM.camera.deviceOrientationControls.disable(),BM.setCameraFov(BM.cameraFovValues.x1),BM.camera.controls.setDefaultPosition(),BM.setAutoRotateState(!1),BM.setRulerMode(!1),BM.disbleRender(),e.innerHTML=""}}),[]),(0,t.useEffect)((()=>{const e=BM.floorsGroup.children.some((e=>e.floorIndex===Dr.currentFloorIndex));return BM.initialized?e?(BM.setCurrentPanoramasGroup(Dr.currentFloorIndex),void BM.setInitialCurrentPanorama()):(BM.setLoadingState(!0),void BM.createPanoramasGroup(n,r,a,Dr.currentFloorIndex).finally((()=>BM.setLoadingState(!1)))):(BM.setLoadingState(!0),void BM.init(n,r,a,Dr.currentFloorIndex).finally((()=>BM.setLoadingState(!1))))}),[Dr.currentFloorIndex]),(0,t.useEffect)(p,[Dr.config.width,Dr.config.height]),t.createElement(t.Fragment,null,t.createElement("div",{className:"widget-tab__panorama"},BM.loading&&t.createElement(VC,{absolute:!0}),t.createElement("div",{className:"widget-tab__panorama-overlay",onContextMenu:gM}),BM.currentPanorama&&t.createElement(GC,{json:n,planImage:i,disabled:o}),BM.currentPanorama&&t.createElement("div",{className:"widget-tab__panorama-controls"},BM.currentPanorama.userData.images.scene_depth&&t.createElement(jC,{onClick:()=>{BM.toggleRulerMode(),BM.rulerInstructionShown||u(!0)}}),t.createElement(HC,null),t.createElement(BC,null))),h&&t.createElement(PC,{disabled:o,steps:s,onClick:async()=>{if(d(!1),p(),!Ax.isMobile&&!Ax.isTablet)return;if(BM.camera.deviceOrientationControls.connected)return BM.camera.deviceOrientationControls.enable();if(await Ax.requestDeviceOrientation()!==fx)return;const e=()=>{window.removeEventListener("deviceorientation",e),BM.camera.deviceOrientationControls.connect(),setTimeout((()=>BM.camera.deviceOrientationControls.enable()),250)};window.addEventListener("deviceorientation",e)}}),c&&t.createElement(PC,{steps:l,onClick:()=>{BM.setRulerInstructionShown(!0),u(!1)}}))})),YC=XC,ZC=eS((()=>{var e,n,i,r,a;const{config:o}=Dr,s={width:o.width,height:o.height,"--main-color":o.colors.main,"--main-text":o.colors.mainText},[l,c]=(0,t.useState)(o.tabs[0]),u={rotation:t.createElement(UC,{disabled:!o.rotationData||!o.rotationData.items.length,topViewImage:o.topViewImage,images:(null===(e=o.rotationData)||void 0===e?void 0:e.items)||[],type:(null===(n=o.rotationData)||void 0===n?void 0:n.type)||"top_down",planImage:o.planImage,mode:o.rotationMode}),panorama:t.createElement(YC,{disabled:!o.panoramaData||!o.panoramaData.items.length,items:(null===(i=o.panoramaData)||void 0===i?void 0:i.items)||[],type:(null===(r=o.panoramaData)||void 0===r?void 0:r.type)||"sphere",planImage:o.planImage,json:o.json})};return(0,t.useEffect)((()=>{kr.init()}),[]),(0,t.useEffect)((()=>{o.tabs.some((e=>e===l))||c(o.tabs[0])}),[o,l]),t.createElement("main",{className:(h=o.width,Object.keys(nS).filter((e=>h<=nS[e]))).reduce(((e,t)=>e+" widget-application--".concat(t)),"widget-application"),id:"widget-application",style:s},t.createElement("section",{className:"widget-tab widget-tab--".concat(l)},u[l]),o.logo&&t.createElement("a",{href:(null===(a=o.branding)||void 0===a?void 0:a.url)||o.logoUrl,className:"widget-logo",target:"_blank",rel:"noreferrer"},t.createElement("img",{src:o.logo,alt:"logo"})),Dr.controlsVisible&&t.createElement(rS,null),t.createElement("div",{className:"widget-tab-buttons"},[{tab:"rotation",text:"2D"},{tab:"panorama",text:"3D"}].map(((e,n)=>!Dr.isTabIncluded(e.tab)||o.tabs.length<2?null:Dr.controlsVisible?t.createElement(hC,{key:n,text:e.text,active:l===e.tab,onClick:()=>c(e.tab)}):null)),"panorama"===l&&BM.vrSessionSupported&&BM.currentPanorama&&t.createElement(uC,null)),t.createElement("div",{className:"widget-watermark-button"},t.createElement(dC,{href:o.branding?o.branding.url:(()=>{const e=Cr.getLocaleText("made-by-link");return"en"===Cr.currentLocale?e+"?utm_source=widget&utm_medium=widget":e})(),text:o.branding?o.branding.name:Cr.getLocaleText("made-by-text")})),t.createElement(cC,null));var h})),qC=ZC,KC=class{constructor(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i={...Fr,...n},r=document.querySelector(e);if(!r)throw new Error("Не удалось найти элемент: ".concat(e));r.addEventListener("wheel",(e=>e.preventDefault())),n.width||(i.width=r.offsetWidth),n.height||(i.height=r.offsetHeight),n.panoramaFov&&"number"==typeof n.panoramaFov||(i.panoramaFov=Fr.panoramaFov),i.containerElement=r,Dr.setConfig(i),kr.resize(i),i.resizable&&new ResizeObserver((()=>this.onResize())).observe(r),FM.render(t.createElement(qC,null),r)}get options(){return Dr.config}get panoramaStore(){return BM}updateSize(e){const t={...this.options,...e};Dr.setConfig(t),kr.resize(t)}onResize(){const{offsetWidth:e,offsetHeight:t}=this.options.containerElement;this.updateSize({width:e,height:t})}on(e,t){Dr.addEventListener(e,t)}}})(),module.exports=a})();