1!function(){try{var t="u">typeof window?window:"u">typeof global?global:"u">typeof globalThis?globalThis:"u">typeof self?self:{};t._sentryModuleMetadata=t._sentryModuleMetadata||{},t._sentryModuleMetadata[(new t.Error).stack]=function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];if(null!=i)for(var s in i)i.hasOwnProperty(s)&&(t[s]=i[s])}return t}({},t._sentryModuleMetadata[(new t.Error).stack],{"_sentryBundlerPluginAppKey:takumi-application":!0});var e=(new t.Error).stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="aa49770a-0718-4f30-9889-996dfccdcbc0",t._sentryDebugIdIdentifier="sentry-dbid-aa49770a-0718-4f30-9889-996dfccdcbc0")}catch(t){}}();"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7993],{17993:(t,e,i)=>{i.d(e,{DesktopHandler:()=>y});var s=i(17502),o=i(40858),n=i(93858),r=class{static intersect(t,e){let i=Math.max(t.left,e.left),s=Math.min(t.right,e.right),o=Math.max(t.top,e.top),n=Math.min(t.bottom,e.bottom),r=Math.max(0,s-i),c=Math.max(0,n-o);return new DOMRect(i,o,r,c)}static clip(t,e){let i={...t.toJSON(),top:t.top+e.top,left:t.left+e.left,bottom:t.bottom-e.bottom,right:t.right-e.right};return i.width=i.right-i.left,i.height=i.bottom-i.top,new DOMRect(i.left,i.top,i.width,i.height)}static clipOffsets(t,e){return{top:e.top-t.top,left:e.left-t.left,bottom:t.bottom-e.bottom,right:t.right-e.right}}static equals(t,e){return null==t||null==e?t===e:t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height}static sizeEqual(t,e){return Math.round(t.width)===Math.round(e.width)&&Math.round(t.height)===Math.round(e.height)}},c=[...Array.from({length:1e3},(t,e)=>e/1e3),1],h=class{constructor(t,e,i){this.#t=e,this.#e=i,this.#i=i.clientRect,this.#s(t)}#t;#o=void 0;#e;#i;#n=void 0;get visibleRect(){let t=this.#e.clip;return t?r.clip(this.#i,t):this.#i}get isIntersecting(){let{width:t,height:e}=this.visibleRect;return t>0&&e>0}#s(t){let e,i,s,o,n,r,{root:h,rootBounds:l}=this.#e,{visibleRect:a}=this;this.#o?.disconnect(),this.#o=new IntersectionObserver(this.#r,{root:h,rootMargin:(e=Math.max(a.width,3),i=Math.max(a.height,3),s=a.top-l.top- -1,o=a.left-l.left- -1,n=l.right-a.left-e- -1,r=l.bottom-a.top-i- -1,`${-Math.round(s)}px ${-Math.round(n)}px ${-Math.round(r)}px ${-Math.round(o)}px`),threshold:c}),this.#o.observe(t)}#r=t=>{if(!this.#o)return;let e=t[t.length-1];if(e){let{intersectionRatio:t,boundingClientRect:i}=e,s=this.#i;this.#i=i;let o=this.#n,n=!r.equals(i,s);if(t!==this.#n||n){let s=this.#e.rootBounds,c=r.intersect(i,s),h=c.width>0&&c.height>0;if(!h)return;this.#n=t,(null!=o||n)&&(this.#t(new l(e.target,i,e.intersectionRect,h,s),this),this.#s(e.target))}}};disconnect(){this.#o?.disconnect()}},l=class{constructor(t,e,i,s,o){this.target=t,this.boundingClientRect=e,this.intersectionRect=i,this.isIntersecting=s,this.rootBounds=o}},a=class{constructor(t,e){const i=function(t){return t&&t.nodeType!==Node.DOCUMENT_NODE?t:t?.defaultView??window}(t);if(function(t){return u(t)&&t.nodeType===Node.ELEMENT_NODE}(i)){const t=i.ownerDocument??document;this.rootBounds=i.getBoundingClientRect(),this.#c=new ResizeObserver(t=>{for(let i of t){let[{inlineSize:t,blockSize:s}]=i.borderBoxSize;if(r.sizeEqual(this.rootBounds,{width:t,height:s}))continue;let o=i.target.getBoundingClientRect();this.rootBounds=o,e(o,this)}}),this.#c.observe(i),t.addEventListener("scroll",t=>{t.target&&t.target!==i&&u(t.target)&&t.target.contains(i)&&(this.rootBounds=i.getBoundingClientRect(),e(this.rootBounds,this))},{capture:!0,passive:!0,signal:this.#h.signal})}else{const t=i.visualViewport??i;this.rootBounds=d(i);const s=()=>{let t=d(i);r.equals(this.rootBounds,t)||(this.rootBounds=t,e(t,this))};t.addEventListener("resize",s,{signal:this.#h.signal})}}#c;#h=new AbortController;rootBounds;disconnect(){this.#c?.disconnect(),this.#h.abort()}};function d(t){return new DOMRect(0,0,t.visualViewport?.width??t.innerWidth,t.visualViewport?.height??t.innerHeight)}function u(t){return"nodeType"in t}var b=class{constructor(t,e){this.#e=e,this.#t=e=>{let i=[];for(let t of e){let e=this.intersections.get(t.target);
1this.intersections.set(t.target,t),e?.isIntersecting===t.isIntersecting&&r.equals(e?.intersectionRect,t.intersectionRect)||i.push(t)}i.length>0&&t(i,this)}}#t;#l=new Map;#e;intersections=new WeakMap;observe(t){let e=t.ownerDocument;if(!e)return;let i=this.#l.get(e);i||(i=new IntersectionObserver(this.#t,{...this.#e,threshold:c}),this.#l.set(e,i)),i.observe(t)}unobserve(t){let e=t.ownerDocument;if(!e)return;let i=this.#l.get(e);i&&(i.unobserve(t),this.intersections.delete(t))}disconnect(){for(let t of this.#l.values())t.disconnect();this.#l.clear()}},g=class{constructor(t,e){this.#t=t,this.#e=e,this.#a=new a(e?.root,this.#d),this.#u=new b(this.#b,e),this.#c=new ResizeObserver(this.#g)}#t;#e;#p=new Map;#c;#f=new WeakMap;#a;#u;observe(t){this.#u.observe(t)}unobserve(t){t?(this.#p.get(t)?.disconnect(),this.#u.unobserve(t),this.#f.delete(t)):this.disconnect()}disconnect(){for(let t of this.#p.values())t.disconnect();this.#p.clear(),this.#c.disconnect(),this.#a.disconnect(),this.#u.disconnect()}#v(t){let e=[];for(let o of t){var i,s;let{target:t}=o;i=o,null!=(s=this.#f.get(t))&&i.target===s.target&&i.isIntersecting===s.isIntersecting&&r.equals(i.boundingClientRect,s.boundingClientRect)&&r.equals(i.intersectionRect,s.intersectionRect)||(this.#f.set(t,o),e.push(o))}e.length>0&&this.#t(e)}#d=t=>{let e=[];for(let[i]of this.#p){let s=i.getBoundingClientRect(),o=this.#y(i,s);e.push(new p(i,s,o.visibleRect,o.isIntersecting,t))}this.#v(e)};#y(t,e){let i=this.#u;this.#p.get(t)?.disconnect();let s=new h(t,this.#P,{clientRect:e,root:this.#e?.root,rootBounds:this.#a.rootBounds,get clip(){let e=i.intersections.get(t);if(!e)return;let{intersectionRect:s,boundingClientRect:o}=e;return r.clipOffsets(o,s)}});return this.#p.set(t,s),s}#b=t=>{let e=[];for(let i of t){let{target:t,isIntersecting:s,boundingClientRect:o}=i;s?(this.#y(t,o),this.#c.observe(t)):(this.#p.get(t)?.disconnect(),this.#p.delete(t),this.#c.unobserve(t));let n=this.#p.get(t);e.push(new p(t,o,n?.visibleRect??i.intersectionRect,s,this.#a.rootBounds))}this.#v(e)};#P=(t,e)=>{this.#v([new p(t.target,t.boundingClientRect,e.visibleRect,t.isIntersecting,this.#a.rootBounds)])};#g=t=>{let e=[];for(let i of t){let{target:t,borderBoxSize:s}=i,o=this.#f.get(t);if(o){let[{inlineSize:t,blockSize:e}]=s;if(r.sizeEqual(o.boundingClientRect,{width:t,height:e}))continue}let n=t.getBoundingClientRect(),c=this.#y(t,n);e.push(new p(t,n,c.visibleRect,this.#u.intersections.get(t)?.isIntersecting??!1,this.#a.rootBounds))}this.#v(e)}},p=class{constructor(t,e,i,s,o){this.target=t,this.boundingClientRect=e,this.intersectionRect=i,this.isIntersecting=s,this.rootBounds=o}},f=class extends n.a{constructor(t){super(t.dependencies),this.moduleName="MousePredictor",this.trajectoryPositions=t.trajectoryPositions}updatePointerState(t){let e=this.trajectoryPositions.currentPoint;e.x=t.clientX,e.y=t.clientY,this.settings.enableMousePrediction?function(t,e,i,s){let o=performance.now();e.add({point:{x:t.x,y:t.y},time:o});let{x:n,y:r}=t;if(e.length<2){s.x=n,s.y=r;return}let[c,h]=e.getFirstLast();if(!c||!h){s.x=n,s.y=r;return}let l=(h.time-c.time)*.001;if(0===l){s.x=n,s.y=r;return}let a=h.point.x-c.point.x,d=h.point.y-c.point.y,u=.001*i;s.x=n+a/l*u,s.y=r+d/l*u}(e,this.trajectoryPositions.positions,this.settings.trajectoryPredictionTime,this.trajectoryPositions.predictedPoint):(this.trajectoryPositions.predictedPoint.x=e.x,this.trajectoryPositions.predictedPoint.y=e.y)}processMouseMovement(t){this.updatePointerState(t);let e=this.settings.enableMousePrediction,i=this.trajectoryPositions.currentPoint;for(let t of this.elements.values()){if(!t.isIntersectingWithViewport||!t.callbackInfo.isCallbackActive||t.callbackInfo.isRunningCallback)continue;let n=t.elementBounds.expandedRect;if(e)(0,o.a)(i,this.trajectoryPositions.predictedPoint,n)&&this.callCallback(t,{kind:"mouse",subType:"trajectory"});else if((0,s.e)(i,n))return void this.callCallback(t,{kind:"mouse",subType:"hover"})}this.hasListeners("mouseTrajectoryUpdate")&&this.emit({type:"mouseTrajectoryUpdate",predictionEnabled:e,trajectoryPositions:this.trajectoryPositions})}onDisconnect(){}onConnect(){}},v=class{constructor(t){if(this.head=0,this.count=0,t<=0)throw Error("CircularBuffer capacity must be greater than 0");this.capacity=t,this.buffer=Array(t)}
1add(t){this.buffer[this.head]=t,this.head=(this.head+1)%this.capacity,this.count<this.capacity&&this.count++}getFirst(){if(0!==this.count)return this.count<this.capacity?this.buffer[0]:this.buffer[this.head]}getLast(){if(0!==this.count){if(this.count<this.capacity)return this.buffer[this.count-1];{let t=(this.head-1+this.capacity)%this.capacity;return this.buffer[t]}}}getFirstLast(){if(0===this.count)return[void 0,void 0];if(1===this.count){let t=this.count<this.capacity?this.buffer[0]:this.buffer[this.head];return[t,t]}return[this.getFirst(),this.getLast()]}resize(t){if(t<=0)throw Error("CircularBuffer capacity must be greater than 0");if(t===this.capacity)return;let e=this.getAllItems();if(this.capacity=t,this.buffer=Array(t),this.head=0,this.count=0,e.length>t)for(let i of e.slice(-t))this.add(i);else for(let t of e)this.add(t)}getAllItems(){if(0===this.count)return[];let t=Array(this.count);if(this.count<this.capacity)for(let e=0;e<this.count;e++)t[e]=this.buffer[e];else{let e=this.head;for(let i=0;i<this.capacity;i++){let s=(e+i)%this.capacity;t[i]=this.buffer[s]}}return t}clear(){this.head=0,this.count=0}get length(){return this.count}get size(){return this.capacity}get isFull(){return this.count===this.capacity}get isEmpty(){return 0===this.count}},y=class extends n.a{constructor(t){super(t),this.moduleName="DesktopHandler",this.tabPredictor=null,this.scrollPredictor=null,this.positionObserver=null,this.trajectoryPositions={positions:new v(8),currentPoint:{x:0,y:0},predictedPoint:{x:0,y:0}},this.handlePositionChange=t=>{let e=this.settings.enableScrollPrediction;for(let i of t){let t=this.elements.get(i.target);t&&(e?this.scrollPredictor?.handleScrollPrefetch(t,i.boundingClientRect):this.checkForMouseHover(t),this.handlePositionChangeDataUpdates(t,i))}e&&this.scrollPredictor?.resetScrollProps()},this.checkForMouseHover=t=>{(0,s.e)(this.trajectoryPositions.currentPoint,t.elementBounds.expandedRect)&&this.callCallback(t,{kind:"mouse",subType:"hover"})},this.handlePositionChangeDataUpdates=(t,e)=>{let i=[],o=e.isIntersecting;t.isIntersectingWithViewport!==o&&(i.push("visibility"),t.isIntersectingWithViewport=o),o&&!(0,s.d)(e.boundingClientRect,t.elementBounds.originalRect)&&(i.push("bounds"),t.elementBounds={hitSlop:t.elementBounds.hitSlop,originalRect:e.boundingClientRect,expandedRect:(0,s.c)(e.boundingClientRect,t.elementBounds.hitSlop)}),i.length&&this.hasListeners("elementDataUpdated")&&this.emit({type:"elementDataUpdated",elementData:t,updatedProps:i})},this.processMouseMovement=t=>this.mousePredictor.processMouseMovement(t),this.invalidateTabCache=()=>
1this.tabPredictor?.invalidateCache(),this.observeElement=t=>this.positionObserver?.observe(t),this.unobserveElement=t=>this.positionObserver?.unobserve(t),this.connectTabPredictor=async()=>{if(!this.tabPredictor){let{TabPredictor:t}=await i.e(2789).then(i.bind(i,32789));this.tabPredictor=new t(this.storedDependencies),this.devLog("TabPredictor lazy loaded")}this.tabPredictor.connect()},this.connectScrollPredictor=async()=>{if(!this.scrollPredictor){let{ScrollPredictor:t}=await i.e(294).then(i.bind(i,80294));this.scrollPredictor=new t({dependencies:this.storedDependencies,trajectoryPositions:this.trajectoryPositions}),this.devLog("ScrollPredictor lazy loaded")}this.scrollPredictor.connect()},this.connectMousePredictor=()=>this.mousePredictor.connect(),this.disconnectTabPredictor=()=>this.tabPredictor?.disconnect(),this.disconnectScrollPredictor=()=>this.scrollPredictor?.disconnect(),this.disconnectMousePredictor=()=>this.mousePredictor.disconnect(),this.storedDependencies=t,this.mousePredictor=new f({dependencies:t,trajectoryPositions:this.trajectoryPositions})}onConnect(){this.settings.enableTabPrediction&&this.connectTabPredictor(),this.settings.enableScrollPrediction&&this.connectScrollPredictor(),this.connectMousePredictor(),this.positionObserver=new g(this.handlePositionChange);let t=["mouse"];for(let e of(this.settings.enableTabPrediction&&t.push("tab (loading...)"),this.settings.enableScrollPrediction&&t.push("scroll (loading...)"),this.devLog(`Connected predictors: [${t.join(", ")}] and PositionObserver`),this.elements.keys()))this.positionObserver.observe(e)}onDisconnect(){this.disconnectMousePredictor(),this.disconnectTabPredictor(),this.disconnectScrollPredictor(),this.positionObserver?.disconnect(),this.positionObserver=null}get loadedPredictors(){return{mouse:null!==this.mousePredictor,tab:null!==this.tabPredictor,scroll:null!==this.scrollPredictor}}}},40858:(t,e,i)=>{i.d(e,{a:()=>s});function s(t,e,i){let s=0,o=1,n=e.x-t.x,r=e.y-t.y,c=(t,e)=>{if(0===t){if(e<0)return!1}else{let i=e/t;if(t<0){if(i>o)return!1;i>s&&(s=i)}else{if(i<s)return!1;i<o&&(o=i)}}return!0};return!!c(-n,t.x-i.left)&&!!c(n,i.right-t.x)&&!!c(-r,t.y-i.top)&&!!c(r,i.bottom-t.y)&&s<=o}},93858:(t,e,i)=>{i.d(e,{a:()=>s});var s=class{constructor(t){this._isConnected=!1,this._cachedLogStyle=null,this.elements=t.elements,this.callCallback=t.callCallback,this.emit=t.emit,this.hasListeners=t.hasListeners,this.settings=t.settings}get isConnected(){return this._isConnected}disconnect(){this.isConnected&&(this.devLog(`Disconnecting ${this.moduleName}...`),this.abortController?.abort(`${this.moduleName} module disconnected`),this.onDisconnect(),this._isConnected=!1)}connect(){this.devLog(`Connecting ${this.moduleName}...`),this.onConnect(),this._isConnected=!0}devLog(t){if(this.settings.enableManagerLogging){if(null===this._cachedLogStyle){let t=this.moduleName.includes("Predictor")?"#ea580c":"#2563eb";this._cachedLogStyle=`color: ${t}; font-weight: bold;`}console.log(`%c${this.moduleName}: ${t}`,this._cachedLogStyle)}}createAbortController(){this.abortController&&!this.abortController.signal.aborted||(this.abortController=new AbortController,this.devLog(`Created new AbortController for ${this.moduleName}`))}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.