/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/flatbush@4.5.1/flatbush.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
!function(t,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s():"function"==typeof define&&define.amd?define([],s):(t="undefined"!=typeof globalThis?globalThis:t||self).Flatbush=s()}(this,(function(){var t=class{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(t,s){let i=this.length++;for(;i>0;){const t=i-1>>1,e=this.values[t];if(s>=e)break;this.ids[i]=this.ids[t],this.values[i]=e,i=t}this.ids[i]=t,this.values[i]=s}pop(){if(0===this.length)return;const t=this.ids,s=this.values,i=t[0],e=--this.length;if(e>0){const i=t[e],n=s[e];let h=0;const o=e>>1;for(;h<o;){const i=1+(h<<1),o=i+1,r=i+(+(o<e)&+(s[o]<s[i]));if(s[r]>=n)break;t[h]=t[r],s[h]=s[r],h=r}t[h]=i,s[h]=n}return i}peek(){return this.length>0?this.ids[0]:void 0}peekValue(){return this.length>0?this.values[0]:void 0}shrink(){this.ids.length=this.values.length=this.length}};const s=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];function i(t,s){let i=0,e=s.length-1;for(;i<e;){const n=i+e>>1;s[n]>t?e=n:i=n+1}return s[i]}function e(t,s,i,e,n){const h=t[e];t[e]=t[n],t[n]=h;const o=4*e,r=4*n,a=s[o],l=s[o+1],d=s[o+2],f=s[o+3];s[o]=s[r],s[o+1]=s[r+1],s[o+2]=s[r+2],s[o+3]=s[r+3],s[r]=a,s[r+1]=l,s[r+2]=d,s[r+3]=f;const u=i[e];i[e]=i[n],i[n]=u}function n(t,s){let i=t^s,e=65535^i,n=65535^(t|s),h=t&(65535^s),o=i|e>>1,r=i>>1^i,a=n>>1^e&h>>1^n,l=i&n>>1^h>>1^h;i=o,e=r,n=a,h=l,o=i&i>>2^e&e>>2,r=i&e>>2^e&(i^e)>>2,a^=i&n>>2^e&h>>2,l^=e&n>>2^(i^e)&h>>2,i=o,e=r,n=a,h=l,o=i&i>>4^e&e>>4,r=i&e>>4^e&(i^e)>>4,a^=i&n>>4^e&h>>4,l^=e&n>>4^(i^e)&h>>4,i=o,e=r,n=a,h=l,a^=i&n>>8^e&h>>8,l^=e&n>>8^(i^e)&h>>8,i=a^a>>1,e=l^l>>1;let d=t^s,f=e|65535^(d|i);return d=16711935&(d|d<<8),d=252645135&(d|d<<4),d=858993459&(d|d<<2),d=1431655765&(d|d<<1),f=16711935&(f|f<<8),f=252645135&(f|f<<4),f=858993459&(f|f<<2),f=1431655765&(f|f<<1),(f<<1|d)>>>0}return class h{static from(t,i=0){if(i%8!=0)throw new Error("byteOffset must be 8-byte aligned.");if(!t||void 0===t.byteLength||t.buffer)throw new Error("Data must be an instance of ArrayBuffer or SharedArrayBuffer.");const[e,n]=new Uint8Array(t,i+0,2);if(251!==e)throw new Error("Data does not appear to be in a Flatbush format.");const o=n>>4;if(3!==o)throw new Error(`Got v${o} data when expected v3.`);const r=s[15&n];if(!r)throw new Error("Unrecognized array type.");const[a]=new Uint16Array(t,i+2,1),[l]=new Uint32Array(t,i+4,1);return new h(l,a,r,void 0,t,i)}constructor(i,e=16,n=Float64Array,h=ArrayBuffer,o,r=0){if(void 0===i)throw new Error("Missing required argument: numItems.");if(isNaN(i)||i<=0)throw new Error(`Unexpected numItems value: ${i}.`);this.numItems=+i,this.nodeSize=Math.min(Math.max(+e,2),65535),this.byteOffset=r;let a=i,l=a;this._levelBounds=[4*a];do{a=Math.ceil(a/this.nodeSize),l+=a,this._levelBounds.push(4*l)}while(1!==a);this.ArrayType=n,this.IndexArrayType=l<16384?Uint16Array:Uint32Array;const d=s.indexOf(n),f=4*l*n.BYTES_PER_ELEMENT;if(d<0)throw new Error(`Unexpected typed array class: ${n}.`);if(o)this.data=o,this._boxes=new n(o,r+8,4*l),this._indices=new this.IndexArrayType(o,r+8+f,l),this._pos=4*l,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1];else{const t=this.data=new h(8+f+l*this.IndexArrayType.BYTES_PER_ELEMENT);this._boxes=new n(t,8,4*l),this._indices=new this.IndexArrayType(t,8+f,l),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(t,0,2).set([251,48+d]),new Uint16Array(t,2,1)[0]=e,new Uint32Array(t,4,1)[0]=i}this._queue=new t}add(t,s,i=t,e=s){const n=this._pos>>2,h=this._boxes;return this._indices[n]=n,h[this._pos++]=t,h[this._pos++]=s,h[this._pos++]=i,h[this._pos++]=e,t<this.minX&&(this.minX=t),s<this.minY&&(this.minY=s),i>this.maxX&&(this.maxX=i),e>this.maxY&&(this.maxY=e),n}finish(){if(this._pos>>2!==this.numItems)throw new Error(`Added ${this._pos>>2} items when expected ${this.numItems}.`);const t=this._boxes;if(this.numItems<=this.nodeSize)return t[this._pos++]=this.minX,t[this._pos++]=this.minY,t[this._pos++]=this.maxX,void(t[this._pos++]=this.maxY);const s=this.maxX-this.minX||1,i=this.maxY-this.minY||1,h=new Uint32Array(this.numItems);for(let e=0,o=0;e<this.numItems;e++){const r=t[o++],a=t[o++],l=t[o++],d=t[o++];h[e]=n(Math.floor(65535*((r+l)/2-this.minX)/s),Math.floor(65535*((a+d)/2-this.minY)/i))}!function(t,s,i,n,h,o){const r=[n,h];for(;r.length;){const n=r.pop()||0,h=r.pop()||0;if(n-h<=o&&Math.floor(h/o)>=Math.floor(n/o))continue;const a=t[h],l=t[h+n>>1],d=t[n],f=a>l!=a>d?a:l<a!=l<d?l:d;let u=h-1,c=n+1;for(;;){do{u++}while(t[u]<f);do{c--}while(t[c]>f);if(u>=c)break;e(t,s,i,u,c)}r.push(h,c,c+1,n)}}(h,t,this._indices,0,this.numItems-1,this.nodeSize);for(let s=0,i=0;s<this._levelBounds.length-1;s++){const e=this._levelBounds[s];for(;i<e;){const s=i;let n=t[i++],h=t[i++],o=t[i++],r=t[i++];for(let s=1;s<this.nodeSize&&i<e;s++)n=Math.min(n,t[i++]),h=Math.min(h,t[i++]),o=Math.max(o,t[i++]),r=Math.max(r,t[i++]);this._indices[this._pos>>2]=s,t[this._pos++]=n,t[this._pos++]=h,t[this._pos++]=o,t[this._pos++]=r}}}search(t,s,e,n,h){if(this._pos!==this._boxes.length)throw new Error("Data not yet indexed - call index.finish().");let o=this._boxes.length-4;const r=[],a=[];for(;void 0!==o;){const l=Math.min(o+4*this.nodeSize,i(o,this._levelBounds));for(let i=o;i<l;i+=4){const l=this._boxes[i];if(e<l)continue;const d=this._boxes[i+1];if(n<d)continue;const f=this._boxes[i+2];if(t>f)continue;const u=this._boxes[i+3];if(s>u)continue;const c=0|this._indices[i>>2];o>=4*this.numItems?r.push(c):(void 0===h||h(c,l,d,f,u))&&a.push(c)}o=r.pop()}return a}neighbors(t,s,e=1/0,n=1/0,h){if(this._pos!==this._boxes.length)throw new Error("Data not yet indexed - call index.finish().");let o=this._boxes.length-4;const r=this._queue,a=[],l=n*n;t:for(;void 0!==o;){const n=Math.min(o+4*this.nodeSize,i(o,this._levelBounds));for(let i=o;i<n;i+=4){const e=0|this._indices[i>>2],n=this._boxes[i],a=this._boxes[i+1],d=this._boxes[i+2],f=this._boxes[i+3],u=t<n?n-t:t>d?t-d:0,c=s<a?a-s:s>f?s-f:0,p=u*u+c*c;p>l||(o>=4*this.numItems?r.push(e<<1,p):(void 0===h||h(e))&&r.push(1+(e<<1),p))}for(;r.length&&1&r.peek();){if(r.peekValue()>l)break t;if(a.push(r.pop()>>1),a.length===e)break t}o=r.length?r.pop()>>1:void 0}return r.clear(),a}}}));
//# sourceMappingURL=/sm/3059a9660d6f3d8b4fc881a758e64c4b044b6e548d110d7f571f4d4a7d9419e2.map