UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

3 lines (2 loc) • 49.7 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{constructFromFlatGeometry as e}from"../../../chunks/FlatGeometry.js";import{d as t,a as n,g as r,r as i,q as s,G as a,t as o}from"../../../chunks/Geometry.js";import{ar as u,i as m,d as l,b as c,as as d,P as _,m as h}from"../../../chunks/Point2D.js";import{aI as f,aE as p,aJ as k,aK as b,aL as y,a5 as N,aM as T,aN as g,aO as v}from"../../../chunks/SpatialReference.js";import{G as x,K as A,P as S,E as w,D as C,F as D,L as F,M as j,v as O}from"../../../chunks/Envelope.js";import{P as z,a as I,S as E,M as P,y as B,z as V,A as R,B as M,F as U,H as W}from"../../../chunks/MultiPathImpl.js";import{convertGeometryxToFlat as G,convertFlatToGeometryJSON as L,convertGeometryToFlat as X}from"../../FlatGeometry.js";import Y from"../../SpatialReference.js";import"./initNoPeFactory.js";import{isPoint as K,isMultipoint as q,isPolyline as J,isPolygon as Q}from"../../support/jsonTypeUtils.js";function Z(){if(-1===this.m_i)return this.m_i=0,{value:{m_token:1,m_value:null},done:!1};if(this.m_i<this.m_keys.length){const e=this.m_bReturnKey,t=Math.trunc(this.m_i);return this.m_bReturnKey=!this.m_bReturnKey,this.m_i+=.5,e?{value:{m_token:5,m_value:this.m_keys[t]},done:!1}:{value:{m_token:6,m_value:this.m_o[this.m_keys[t]]},done:!1}}return{value:{m_token:3,m_value:null},done:!0}}function H(){if(-1===this.m_i)return this.m_i=0,{value:{m_token:2,m_value:null},done:!1};if(this.m_i<this.m_a.length){const e={value:{m_token:6,m_value:this.m_a[this.m_i++]},done:!1};return this.m_strict||void 0===e.value.m_value&&(e.value.m_value=Number.NaN),e}return{value:{m_token:4,m_value:null},done:!0}}class ${createJSONObjectIterator(e){return{m_iteratorType:"object",m_o:e,m_keys:this.m_options.strict?Object.keys(e):Object.keys(e).filter(t=>void 0!==e[t]),m_i:-1,m_bReturnKey:!0,next:Z}}createJSONArrayIterator(e){return{m_iteratorType:"array",m_strict:this.m_options.strict,m_i:-1,m_a:e,next:H}}constructor(e,t){this.m_currentToken=0,this.m_options=t?{...t}:{strict:!0};const n=e;this.m_iteratorStack=[n instanceof Array?this.createJSONArrayIterator(n):this.createJSONObjectIterator(n)],this.m_nextFlatToken={m_value:null,m_token:0}}nextToken(){if(0===this.m_iteratorStack.length)return this.m_currentToken=0;switch(this.m_nextFlatToken=this.m_iteratorStack.at(-1).next().value,this.m_currentValue=void 0,this.m_nextFlatToken.m_token){case 1:return this.m_currentToken=1;case 3:return this.m_iteratorStack.pop(),this.m_currentToken=3;case 2:return this.m_currentToken=2;case 4:return this.m_iteratorStack.pop(),this.m_currentToken=4;case 5:return this.m_currentValue=this.m_nextFlatToken.m_value,this.m_currentToken=5;case 6:if(this.m_nextFlatToken.m_value instanceof Array)return this.m_iteratorStack.push(this.createJSONArrayIterator(this.m_nextFlatToken.m_value)),this.nextToken();if(this.m_nextFlatToken.m_value instanceof Object)return this.m_iteratorStack.push(this.createJSONObjectIterator(this.m_nextFlatToken.m_value)),this.nextToken();if("number"==typeof this.m_nextFlatToken.m_value)return this.m_currentValue=this.m_nextFlatToken.m_value,Number.isSafeInteger(this.m_currentValue)&&this.m_currentValue>=u()&&this.m_currentValue<=m()?this.m_currentToken=8:this.m_currentToken=7;if("string"==typeof this.m_nextFlatToken.m_value)return this.m_currentValue=this.m_nextFlatToken.m_value,this.m_currentToken=6;if("boolean"==typeof this.m_nextFlatToken.m_value)return this.m_currentValue=this.m_nextFlatToken.m_value,this.m_currentToken=this.m_nextFlatToken.m_value?11:12;if("object"==typeof this.m_nextFlatToken.m_value)return this.m_currentValue=null,this.m_currentToken=10;t("unrecognized json element type")}t("unrecognized json element type")}currentToken(){return this.m_currentToken}skipChildren(){if(0!==this.m_iteratorStack.length)switch(this.m_currentValue=void 0,this.m_nextFlatToken.m_token){case 1:return this.m_iteratorStack.pop(),this.m_nextFlatToken.m_token=3,void(this.m_currentToken=3);case 2:return this.m_iteratorStack.pop(),this.m_nextFlatToken.m_token=4,void(this.m_currentToken=4)}}currentString(){return 6!==this.m_currentToken&&5!==this.m_currentToken&&n("invalid token"),this.m_currentValue}currentDoubleValue(){return 7!==this.m_currentToken&&8!==this.m_currentToken&&n("invalid token"),this.m_currentValue}currentInt32Value(){return 8!==this.m_currentToken&&n("invalid token"),this.m_currentValue}currentInt64Value(){return r(0),0n}currentBoolValue(){return 12!==this.m_currentToken&&11!==this.m_currentToken&&n("invalid token"),this.m_currentValue}isError(){return 0}}class ee{constructor(){this.m_pendingKey=null,this.m_acceptedObject=null,this.m_currentObject=[]}reset(){this.m_pendingKey=null,this.m_acceptedObject=null,this.m_currentObject.length=0}startObject(){const e={};this.m_pendingKey?(this.m_currentObject.at(-1)[this.m_pendingKey]=e,this.m_pendingKey=null):Array.isArray(this.m_currentObject.at(-1))&&this.m_currentObject.at(-1).push(e),this.m_currentObject.push(e)}startArray(){const e=[];this.m_pendingKey?(this.m_currentObject.at(-1)[this.m_pendingKey]=e,this.m_pendingKey=null):Array.isArray(this.m_currentObject.at(-1))&&this.m_currentObject.at(-1).push(e),this.m_currentObject.push(e)}endObject(){this.m_acceptedObject=this.m_currentObject.at(-1),this.m_currentObject.pop()}endArray(){this.m_currentObject.pop()}addFieldName(e){this.m_pendingKey=e}addValue_(e){this.m_pendingKey?(this.m_currentObject.at(-1)[this.m_pendingKey]=e,this.m_pendingKey=null):this.m_currentObject.at(-1).push(e)}addString(e){this.addValue_(e)}addDouble(e,t){this.addValue_(e)}addInt64(e){r(0)}addInt32(e){this.addValue_(e)}addBool(e){this.addValue_(e)}addNull(){this.addValue_(null)}getObject(){return this.m_acceptedObject}}class te{constructor(e){return this.m_buffer=null,this.m_view=null,this.m_sz=0,this.m_offset=0,this.m_bOwnsBuffer=!0,this.m_bLittleEndian=!0,this.m_element=new ArrayBuffer(8),this.m_elementBytes=new Uint8Array(this.m_element),this.m_elementView=new DataView(this.m_element),this.m_elementDouble=new Float64Array(this.m_element),this.m_elementFloat=new Float32Array(this.m_element),this.m_elementInt64=new BigInt64Array(this.m_element),this.m_elementInt32=new Int32Array(this.m_element),this.m_elementInt16=new Int16Array(this.m_element),void 0!==e.sz?(this.m_sz=e.sz,e.buffer?(this.m_sz<0&&i("size out of range"),this.m_buffer=e.buffer,this.m_offset=void 0!==e.offset?e.offset:0,this.m_view=void 0!==e.offset?new DataView(e.buffer,e.offset,e.sz):new DataView(this.m_buffer),this.m_bOwnsBuffer=!1,void(this.m_bLittleEndian=!0)):(this.m_sz<0&&i("size out of range"),void(this.m_sz>0&&(this.m_buffer=new ArrayBuffer(this.m_sz),this.m_view=new DataView(this.m_buffer))))):e.move?(this.m_sz=e.move.m_sz,this.m_buffer=e.move.m_buffer,this.m_view=e.move.m_view,this.m_bOwnsBuffer=e.move.m_bOwnsBuffer,this.m_bLittleEndian=e.move.m_bLittleEndian,e.move.m_buffer=null,e.move.m_view=null,e.move.m_sz=0,void(e.move.m_bOwnsBuffer=!0)):void t("unrecognized constructor options")}swapBytesDouble(){this.doSwap()&&(this.m_elementDouble[0]=this.m_elementBytes[0]<<56|this.m_elementBytes[1]<<48|this.m_elementBytes[2]<<40|this.m_elementBytes[3]<<32|this.m_elementBytes[4]<<24|this.m_elementBytes[5]<<16|this.m_elementBytes[6]<<8|this.m_elementBytes[7])}swapBytesInt32(){this.doSwap()&&(this.m_elementInt32[0]=this.m_elementBytes[0]<<24|this.m_elementBytes[1]<<16|this.m_elementBytes[2]<<8|this.m_elementBytes[3])}getOffset(){return this.m_offset}assignMove(e){return this===e||(this.clear(),this.m_sz=e.m_sz,this.m_buffer=e.m_buffer,this.m_view=e.m_view,this.m_bOwnsBuffer=e.m_bOwnsBuffer,this.m_bLittleEndian=e.m_bLittleEndian,e.m_buffer=null,e.m_sz=0,e.m_bOwnsBuffer=!0),this}doSwap(){return this.m_bLittleEndian!==(1===te.getNativeByteOrder())}setNativeByteOrder(){this.m_bLittleEndian=1===te.getNativeByteOrder()}setOrder(e){this.m_bLittleEndian=1===e}getOrder(){return this.m_bLittleEndian?1:0}getView(){return this.m_view||s("buffer not defined"),this.m_view}static getNativeByteOrder(){return 1}clear(){this.m_buffer=null,this.m_sz=0,this.m_bOwnsBuffer=!0}size(){return this.m_sz}readDouble(e){return this.doSwap()?(this.m_elementDouble[0]=this.m_view.getFloat64(e,this.m_bLittleEndian),this.swapBytesDouble(),this.m_elementDouble[0]):this.m_view.getFloat64(e,this.m_bLittleEndian)}writeDouble(e,t){this.m_elementDouble[0]=t,this.swapBytesDouble(),this.m_view.setFloat64(e,this.m_elementDouble[0],this.m_bLittleEndian)}readInt32(e){return this.doSwap()?(this.m_elementInt32[0]=this.m_view.getInt32(e,this.m_bLittleEndian),this.swapBytesInt32(),this.m_elementInt32[0]):this.m_view.getInt32(e,this.m_bLittleEndian)}writeInt32(e,t){this.m_elementInt32[0]=t,this.swapBytesInt32(),this.m_view.setInt32(e,this.m_elementInt32[0],this.m_bLittleEndian)}getPtr(){return this.m_buffer}setSizeNoRealloc(e){r(e>=0&&e<=this.m_sz),this.m_sz=e}}function ne(e,t,i,s,o,u){let m=!1,l=!1,c=!1,d=!1,_=!1,h=!1,f=!1,p=!1,k=!1,b=!1,y=!1,N=!1,T=!1,g=!1,v=!1,C=!1,D=!1,F=!1,j=!1,O=!1,z=!1,I=!1,E=!1,P=!1,B=Number.NaN,V=Number.NaN,R=Number.NaN,M=Number.NaN,U=0,W=Number.NaN,G=Number.NaN,L=Number.NaN,X=Number.NaN,Y=Number.NaN,K=Number.NaN,q=Number.NaN,J=Number.NaN,Q=0,Z=0,H=!1,$=!1,ee=null,te=null,ne=null,re=null,ce=null;for(;3!==i.nextToken();){const u=i.currentString();if(i.nextToken(),"spatialReference"===u){if(o&&!m){m=!0,1===i.currentToken()?re=ie(i):10!==i.currentToken()&&n("failed to parse spatial reference: object or null is expected");continue}}else if(s)if("hasZ"===u){if(!l){l=!0,H=11===i.currentToken();continue}}else if("hasM"===u){if(!c){c=!0,$=11===i.currentToken();continue}}else if("rings"===u){if(!(_||h||e!==a.enumUnknown&&e!==a.enumPolygon)){_=!0,({geometry:ce,as:ee,bs:te}=se(!0,!1,t,i));continue}}else if("curveRings"===u){if(!h&&(e===a.enumUnknown||e===a.enumPolygon)){h=!0,({geometry:ce,as:ee,bs:te}=se(!0,!0,t,i));continue}}else if("paths"===u){if(!(f||p||e!==a.enumUnknown&&e!==a.enumPolyline)){f=!0,({geometry:ce,as:ee,bs:te}=se(!1,!1,t,i));continue}}else if("curvePaths"===u){if(!p&&(e===a.enumUnknown||e===a.enumPolyline)){p=!0,({geometry:ce,as:ee,bs:te}=se(!1,!0,t,i));continue}}else if("points"===u){if(!k&&(e===a.enumUnknown||e===a.enumMultiPoint)){k=!0,({geometry:ce,as:ee,bs:te}=ae(t,i));continue}}else if("ids"===u){if(!d){d=!0,ne=oe(t,i);continue}}else if("x"===u){if(!b&&(e===a.enumUnknown||e===a.enumPoint)){b=!0,B=ue(i);continue}}else if("y"===u){if(!y&&(e===a.enumUnknown||e===a.enumPoint)){y=!0,V=ue(i);continue}}else if("z"===u){if(!N&&(e===a.enumUnknown||e===a.enumPoint)){N=!0,R=ue(i);continue}}else if("m"===u){if(!T&&(e===a.enumUnknown||e===a.enumPoint)){T=!0,M=ue(i);continue}}else if("id"===u){if(!g&&(e===a.enumUnknown||e===a.enumPoint)){g=!0,U=me(i);continue}}else if("xmin"===u){if(!v&&(e===a.enumUnknown||e===a.enumEnvelope)){v=!0,W=ue(i);continue}}else if("ymin"===u){if(!C&&(e===a.enumUnknown||e===a.enumEnvelope)){C=!0,G=ue(i);continue}}else if("mmin"===u){if(!z&&(e===a.enumUnknown||e===a.enumEnvelope)){z=!0,q=ue(i);continue}}else if("zmin"===u){if(!j&&(e===a.enumUnknown||e===a.enumEnvelope)){j=!0,Y=ue(i);continue}}else if("idmin"===u){if(!E&&(e===a.enumUnknown||e===a.enumEnvelope)){E=!0,Q=me(i);continue}}else if("xmax"===u){if(!D&&(e===a.enumUnknown||e===a.enumEnvelope)){D=!0,L=ue(i);continue}}else if("ymax"===u){if(!F&&(e===a.enumUnknown||e===a.enumEnvelope)){F=!0,X=ue(i);continue}}else if("mmax"===u){if(!I&&(e===a.enumUnknown||e===a.enumEnvelope)){I=!0,J=ue(i);continue}}else if("zmax"===u){if(!O&&(e===a.enumUnknown||e===a.enumEnvelope)){O=!0,K=ue(i);continue}}else if("idmax"===u){if(!P&&(e===a.enumUnknown||e===a.enumEnvelope)){P=!0,Z=me(i);continue}}else"materials"===u&&r(0);i.skipChildren()}if(_||h||f||p||k){let e=null,t=null;const n=ce;H&&(ce.addAttribute(1),e=ee,e||(e=x(n.getPointCount(),Number.NaN))),$&&(ce.addAttribute(2),t=H?te:ee),null!=ne&&ce.addAttribute(3),H&&null!=e&&n.setAttributeStreamRef(1,e),$&&null!=t&&n.setAttributeStreamRef(2,t),null!=ne&&le(n,ne)}else if(b||y||T||N||g){A(B,V)||n("failed to parse point: x and y must be finite or nan"),(Number.isNaN(V)||Number.isNaN(B))&&(B=Number.NaN,V=Number.NaN);const e=new S({x:B,y:V});N&&e.setZ(R),T&&e.setM(M),g&&e.setID(U),ce=e}else if(v||C||D||F||j||O||z||I||E||P){(Number.isNaN(G)||Number.isNaN(L)||Number.isNaN(X))&&(W=Number.NaN);const e=new w({xmin:W,ymin:G,xmax:L,ymax:X});j&&O&&e.setInterval(1,0,Y,K),z&&I&&e.setInterval(2,0,q,J),E&&P&&e.setInterval(3,0,Q,Z),ce=e}return{...ce?{geom:ce}:{},...re?{sr:re}:{}}}function re(e){let t=!1;for(;3!==e.nextToken();){const n=e.currentString();e.nextToken(),"uwkid"===n?t||(t=!0,8===e.currentToken()&&e.currentInt32Value()):e.skipChildren()}return null}function ie(e){let t=!1,n=!1,r=!1,i=!1,s=!1,a=!1,o=!1,u=!1,m=!1,l=!1,c=!1,d=!1,_=!1,h=!1,v=!1,x=!1,A=!1,S=-1,w=-1,C=-1,D=-1,F=0,j=0,O=0,z=0,I=0,E=0,P=0,B=0,V=0,R=0,M="",U="",W=null;for(;3!==e.nextToken();){const f=e.currentString();e.nextToken(),"wkid"===f?t||(t=!0,8===e.currentToken()&&(S=e.currentInt32Value())):"latestWkid"===f?n||(n=!0,8===e.currentToken()&&(w=e.currentInt32Value())):"wkt"===f?s||(s=!0,6===e.currentToken()&&(M=e.currentString())):"wkt2"===f?s||6===e.currentToken()&&(U=e.currentString()):"vcsWkid"===f?r||(r=!0,8===e.currentToken()&&(C=e.currentInt32Value())):"latestVcsWkid"===f?i||(i=!0,8===e.currentToken()&&(D=e.currentInt32Value())):"xyTolerance"===f?o||(o=!0,a=!0,F=e.currentDoubleValue()):"zTolerance"===f?u||(u=!0,a=!0,j=e.currentDoubleValue()):"mTolerance"===f?m||(m=!0,a=!0,O=e.currentDoubleValue()):"falseX"===f?l||(l=!0,a=!0,P=e.currentDoubleValue()):"falseY"===f?c||(c=!0,a=!0,B=e.currentDoubleValue()):"falseZ"===f?d||(d=!0,a=!0,V=e.currentDoubleValue()):"falseM"===f?_||(_=!0,a=!0,R=e.currentDoubleValue()):"xyUnits"===f?h||(h=!0,a=!0,z=e.currentDoubleValue()):"zUnits"===f?v||(v=!0,a=!0,I=e.currentDoubleValue()):"mUnits"===f?x||(x=!0,a=!0,E=e.currentDoubleValue()):"unit"===f?A||(A=!0,W=re(e)):e.skipChildren()}D<=0&&C>0&&(D=C),C<=0&&D>0&&(C=D);let G=null,L=!0;if(0!==M.length&&(L=!1,f(M)&&(G=p(M))),G||0===U.length||(L=!1,f(U)&&(G=p(U))),!G&&w>0&&(L=!1,k(w)&&(D<=0||b())&&(G=y(w,D))),!G&&S>0&&(L=!1,k(S)&&(C<=0||b())&&(G=y(S,C))),L&&(G=N(W)),a&&G){const e=new T;G.queryPrecisionDescriptorWithoutFalseXY(e),o&&e.setTolerance(0,F),u&&e.setTolerance(1,j),m&&e.setTolerance(2,O),h&&l&&c&&e.setGridParams(P,B,z),v&&d&&e.setZParams(V,I),x&&_&&e.setMParams(R,E),G=g(G,e)}return G}function se(e,t,r,i){2!==i.currentToken()&&n("failed to parse multipath: array of array of vertices is expected");const s=e?new z:new I,a=s,o=C(0),u=x(2,0),m=D(0);let h=null,f=null,p=null,k=null,b=null,y=0,N=0,T=0;const g=new E,v=_.getNAN();let A=0,S=0;const w=e?1:0;for(;4!==i.nextToken();){2!==i.currentToken()&&n("failed to parse multipath: ring/path array is expected");let r=2,s=0,j=!0;const O=4;let z=0,I=0;const E=_.getNAN(),P=l(O,Number.NaN),B=l(O,Number.NaN);let V=!1;for(i.nextToken();4!==i.currentToken();){if(t&&1===i.currentToken())j&&n("failed to parse multipath: starting vertex array is expected"),p||(p=D(A-1,1),k=C(A-1,-1),b=x(0)),V=!0,r=1,({segFlag:T,toPointSz:z}=ke(g,P,v,i));else{for(V=!1,2!==i.currentToken()&&n("failed to parse multipath: array is expected, rings/paths vertices consist of arrays of coordinates"),z=0;4!==i.nextToken();)z===O&&n("failed to parse multipath: each vertex array has to have at most 4 elements"),P[z++]=ue(i);z<2&&n("failed to parse multipath: each vertex array has to have at least 2 elements"),F(P[0],P[1])||n("failed to parse multipath: x and y must be finite")}i.nextToken();do{if(u.size()===2*A&&u.resize(ce(A)),u.writePoint2D(2*A,E.setCoords(P[0],P[1])),h&&h.size()===A&&h.resize(de(A)),z>2?(h||(h=x(A+1,Number.NaN)),h.write(A,P[2])):h&&h.write(A,Number.NaN),f&&f.size()===A&&f.resize(de(A)),z>3?(f||(f=x(A+1,Number.NaN)),f.write(A,P[3])):f&&f.write(A,Number.NaN),j)S++,o.add(A),m.add(w),j=!1,I=z,c(B,P,0,0,I);else if(null!==p)if(V){const e=W(T),t=b.size();b.resize(t+e),p.add(T),k.add(y),g.get().writeInBufferStream(b,y),y+=e,a.incCurveType(T,1),N++}else p.add(1),k.add(-1);A++,s++,v.setCoords(P[0],P[1])}while(s<r&&4===i.currentToken())}0!==s&&(e&&s>r&&z===I&&0===d(P,B,z)?(A--,s--):null!==p&&(p.add(1),k.add(-1)))}return A&&(o.resize(S),m.resize(S),A>0&&(o.add(A),m.add(0)),a.setAttributeStreamRef(0,u),a.setPathFlagsStreamRef(m),a.setPathStreamRef(o),null!==p&&(a.updateCurveCounter(N),a.setSegmentData(k,b,p,y)),a.notifyModifiedFlags(65535)),{geometry:s,as:h,bs:f}}function ae(e,t){2!==t.currentToken()&&n("failed to parse multipoint: array of vertices is expected");let r=0;const i=new P,s=x(2,0);let a=0;const o=4,u=l(o,Number.NaN),m=new _;let c=null,d=null;for(;4!==t.nextToken();){for(2!==t.currentToken()&&n("failed to parse multipoint: array is expected, multipoint vertices consist of arrays of cooridinates"),a=0;4!==t.nextToken();)a===o&&n("failed to parse multipoint: each vertex array has to have at most 4 elements"),u[a++]=ue(t);a<2&&n("failed to parse multipoint: each vertex array has to have at least 2 elements"),F(u[0],u[1])||n("failed to parse multipoint: x and y must be finite"),s.size()===2*r&&s.resize(ce(r)),s.writePoint2D(2*r,m.setCoords(u[0],u[1])),c&&c.size()===r&&c.resize(de(r)),a>2?(c||(c=x(r+1,Number.NaN)),c.write(r,u[2])):c&&c.write(r,Number.NaN),d&&d.size()===r&&d.resize(de(r)),a>3?(d||(d=x(r+1,Number.NaN)),d.write(r,u[3])):d&&d.write(r,Number.NaN),r++}if(r){const e=i.getImpl();e.setAttributeStreamRef(0,s),e.resizeNoInit(r),e.notifyModifiedFlags(65535)}return{geometry:i,as:c,bs:d}}function oe(e,t){2!==t.currentToken()&&n("failed to parse array of IDs: array of array of integers is expected");const r=j(2,0);let i=0,s=-1;for(;4!==t.nextToken();){const e=i;r.size()===i&&r.resize(de(i)),i++;let a=0;for(-1===s?s=2===t.currentToken()?1:0:1===s&&2!==t.currentToken()&&n("failed to parse array of IDs: array of array of integers is expected"),0===s&&(r.size()===i&&r.resize(de(i)),r.write(i,me(t)),a++,i++);4!==t.nextToken();)r.size()===i&&r.resize(de(i)),r.write(i,me(t)),a++,i++;if(r.write(e,a),0===s)break}return r.resize(i),r}function ue(e){const t=e.currentToken();if(10===t||6===t&&"NaN"===e.currentString())return Number.NaN;{const t=e.currentDoubleValue();return Number.isNaN(t)?Number.NaN:t}}function me(e){return e.currentInt32Value()}function le(e,n){if(e.isEmpty())return;const r=j(2,0),i=e.getGeometryType();let s=0;i===P.type?s=1:i===I.type||i===z.type?s=e.getPathCount():t("not implemented"),r.resize(e.getPointCount(),0);let a=0;for(let o=0;o<s;++o){const s=n.read(a);a++;const u=a+s;let m=0,l=0;i===P.type?m=e.getPointCount():i===I.type||i===z.type?(m=e.getPathSize(o),l=e.getPathStart(o)):t("not implemented");for(let e=0,t=Math.min(s,m);e<t;++e)r.write(l,n.read(a)),a++,l++;a=u}e.getImpl().setAttributeStreamRef(3,r)}function ce(e){let t=2*Math.trunc(3*(e+1)/2);return t<8?t=8:t<32&&(t=32),t}function de(e){let t=Math.trunc(3*(e+1)/2);return t<4?t=4:t<16&&(t=16),t}function _e(e,t,n,r,s){s>=r.size()&&i("Byte_buffer out of range access"),e.m_bits=0,e.m_rotation=0,e.m_cosr=1,e.m_sinr=0,e.setStartXY(t),e.setEndXY(n);const a=_.getNAN();a.x=r.readDouble(s),a.y=r.readDouble(s+8);const o=r.readInt32(s+16);if(!!(1&o))return e.m_semiMajorAxis=0,e.m_minorMajorRatio=1,e.m_interior.assign(a),e.m_center.setNAN(),e.m_sweepAngle=0,e.m_startAngle=0,R(e),!1;let u=!!(64&o);const m=!!(128&o);let l=!!(32&o);const c=!!(8&o),d=!!(16&o),h=t.equals(n);return u&&!h&&(u=!1,l=!0),l&&h&&(u=!0,l=!1,a.setCoords(0,0)),u||(m?l?(e.m_semiMajorAxis=1,e.m_minorMajorRatio=0,e.m_interior.assign(a),e.m_center.setNAN(),e.m_sweepAngle=0,e.m_startAngle=0):(e.constructCircularArcThreePoint(t,n,a),h&&c===e.isClockwise()&&e.reverse()):l?(e.m_semiMajorAxis=1,e.m_minorMajorRatio=0,e.m_center.setNAN(),e.m_sweepAngle=0,e.m_startAngle=0,R(e),e.queryCoord2D(.5,e.m_interior)):M(e,t,n,a,c,d)),u&&(e.m_center.assign(t),e.m_startAngle=a.x,e.m_sweepAngle=a.y,U(e,Number.NaN,c,d),e.m_semiMajorAxis=0,e.m_minorMajorRatio=1,e.m_interior.setCoordsPoint2D(t)),e.setProjectionBehavior(0),R(e),!0}function he(e,t,n,r,i){e.m_bits=0,e.m_center.x=r.readDouble(i),e.m_center.y=r.readDouble(i+8),e.m_rotation=r.readDouble(i+16),e.m_semiMajorAxis=r.readDouble(i+24),e.m_minorMajorRatio=r.readDouble(i+32),e.m_XStart=t.x,e.m_YStart=t.y,e.m_XEnd=n.x,e.m_YEnd=n.y;const s=r.readInt32(i+40);if(1&s)return!1;let a=!!(64&s),o=!!(128&s);const u=!!(2048&s),m=!!(4096&s);return!!!(512&s)&&!!!(1024&s)||o||(a=!0),o&&!t.equals(n)?(o=!1,a=!0):a&&t.equals(n)&&(o=!0,a=!1),o?(e.m_center.assign(t),e.m_startAngle=e.m_center.x,e.m_sweepAngle=e.m_center.y,U(e,Number.NaN,u,m),e.m_semiMajorAxis=0,e.m_interior.setCoordsPoint2D(t)):a?(e.m_center.setNAN(),e.m_semiMajorAxis=1,e.m_minorMajorRatio=0,e.m_center.setNAN(),e.m_sweepAngle=0,e.m_startAngle=0,R(e),e.queryCoord2D(.5,e.m_interior)):e.constructEllipticArcEndPointsCenter(t,n,e.m_semiMajorAxis,e.m_minorMajorRatio,e.m_rotation,!m,u,e.m_center),e.setProjectionBehavior(1),R(e),!0}function fe(e,t,n,i,s){return r(s+32<=i.size()),e.m_cp=h(_,2),e.m_cp[0].x=i.readDouble(s),e.m_cp[0].y=i.readDouble(s+8),e.m_cp[1].x=i.readDouble(s+16),e.m_cp[1].y=i.readDouble(s+24),e.m_XStart=t.x,e.m_YStart=t.y,e.m_XEnd=n.x,e.m_YEnd=n.y,!0}function pe(e,t,n,r,i){return e.m_cp.x=r.readDouble(i),e.m_cp.y=r.readDouble(i+8),e.m_weights[0]=r.readDouble(i+16),e.m_weights[1]=r.readDouble(i+24),e.m_weights[2]=r.readDouble(i+32),e.m_XStart=t.x,e.m_YStart=t.y,e.m_XEnd=n.x,e.m_YEnd=n.y,!0}function ke(e,t,r,i,s){const a={segFlag:0,toPointSz:0};let o=i.currentToken();o=i.nextToken();const u=i.currentString(),m=u[0];for((1!==u.length||"a"!==m&&"b"!==m&&"c"!==m&&"n"!==m&&"q"!==m)&&n('failed to parse curve: expecting "a", "b", "n", "q", or "c"'),o=i.nextToken(),2!==o&&n("failed to parse curve: start array is expected for curve parameters"),o=i.nextToken(),2!==o&&n("failed to parse curve: start array is expected for to point"),a.toPointSz=0;4!==i.nextToken();)4===a.toPointSz&&n("failed to parse curve: vertex array cannot have more than 4 elements"),t[a.toPointSz++]=ue(i);a.toPointSz<2&&n("failed to parse curve: vertex array must have at least 2 elements");const l=_.construct(t[0],t[1]),c=_.getNAN();let d=-1,h=-1,f=!1,p=Number.NaN,k=Number.NaN,b=Number.NaN;const y=[_.getNAN(),_.getNAN(),_.getNAN()],N=_.getNAN();if("a"===m){o=i.nextToken(),2!==o&&n("failed to parse curve: start array is expected for center point"),o=i.nextToken();const e=ue(i);o=i.nextToken();const t=ue(i);o=i.nextToken(),4!==o&&n("failed to parse curve: end array is expected for center point"),c.setCoords(e,t),o=i.nextToken(),d=i.currentInt32Value(),o=i.nextToken(),h=i.currentInt32Value(),o=i.nextToken(),4!==o?(f=!1,p=ue(i),o=i.nextToken(),k=ue(i),o=i.nextToken(),b=ue(i),o=i.nextToken(),4!==o&&n("failed to parse curve: end array is expected for curve parameters")):f=!0,a.segFlag=4}else if("b"===m){for(let e=0;e<2;e++){o=i.nextToken(),2!==o&&n("failed to parse curve: start array is expected for control point"),o=i.nextToken();const t=ue(i);o=i.nextToken();const r=ue(i);o=i.nextToken(),4!==o&&n("failed to parse curve: end array is expected for control point"),y[e].setCoords(t,r)}o=i.nextToken(),4!==o&&n("failed to parse curve: end array is expected for curve parameters"),a.segFlag=2}else if("n"===m){{o=i.nextToken(),2!==o&&n("failed to parse curve: start array is expected for control point"),o=i.nextToken();const e=ue(i);o=i.nextToken();const t=ue(i);o=i.nextToken(),4!==o&&n("failed to parse curve: end array is expected for control point"),y[0].setCoords(e,t)}o=i.nextToken();const e=ue(i);o=i.nextToken();const t=ue(i);o=i.nextToken();const r=ue(i);y[1].setCoords(e,t),y[2].setCoords(r,r),o=i.nextToken(),4!==o&&n("failed to parse curve: end array is expected for curve parameters"),a.segFlag=8}else if("q"===m){for(let e=0;e<1;e++){o=i.nextToken(),2!==o&&n("failed to parse curve: start array is expected for control point"),o=i.nextToken();const t=ue(i);o=i.nextToken();const r=ue(i);o=i.nextToken(),4!==o&&n("failed to parse curve: end array is expected for control point"),y[e].setCoords(t,r)}o=i.nextToken(),4!==o&&n("failed to parse curve: end array is expected for curve parameters"),a.segFlag=16}else{o=i.nextToken(),2!==o&&n("failed to parse curve: start array is expected for interior point"),o=i.nextToken();const e=ue(i);o=i.nextToken();const t=ue(i);o=i.nextToken(),4!==o&&n("failed to parse curve: end array is expected for interior point"),N.setCoords(e,t),o=i.nextToken(),4!==o&&n("failed to parse curve: end array is expected for curve parameters"),a.segFlag=4}if(o=i.nextToken(),3!==o&&n("failed to parse curve: end object is expected for curve"),"a"===m)if(e.createEllipticArc(),f){const t=!0;be(e.get(),r,l,c,t,d,h)}else ye(e.get(),r,l,c,d,h,p,k,b);else if("b"===m)e.createCubicBezier(),Ne(e.get(),r,l,y);else if("n"===m)e.createQuadraticRationalBezier(),Te(e.get(),r,l,y[0],y[1].x,y[1].y,y[2].x);else if("q"===m)e.createQuadraticBezier(),e.get().construct(r,y[0],l);else{e.createEllipticArc();const t=!1;be(e.get(),r,l,N,t,-1,-1)}return a}function be(e,t,n,r,i,s,a){e.dropAllAttributes();const o=20,u=new ArrayBuffer(o),m=new te({sz:o,buffer:u});let l=0;m.writeDouble(l,r.x),l+=8,m.writeDouble(l,r.y),l+=8;let c=0;i?(a||(c|=8),s&&(c|=16)):c|=128,m.writeInt32(l,c),l+=4,_e(e,t,n,m,0)}function ye(e,t,n,r,i,s,a,o,u){e.dropAllAttributes();const m=44,l=new ArrayBuffer(m),c=new te({sz:m,buffer:l});let d=0;c.writeDouble(d,r.x),d+=8,c.writeDouble(d,r.y),d+=8,c.writeDouble(d,a),d+=8,c.writeDouble(d,o),d+=8,c.writeDouble(d,u),d+=8;let _=0;s||(_|=2048),i&&(_|=4096),c.writeInt32(d,_),d+=4,he(e,t,n,c,0)}function Ne(e,t,n,r){e.dropAllAttributes();const i=32,s=new ArrayBuffer(i),a=new te({sz:i,buffer:s});let o=0;a.writeDouble(o,r[0].x),o+=8,a.writeDouble(o,r[0].y),o+=8,a.writeDouble(o,r[1].x),o+=8,a.writeDouble(o,r[1].y),o+=8,fe(e,t,n,a,0)}function Te(e,t,n,r,i,s,a){e.dropAllAttributes();const o=40,u=new ArrayBuffer(o),m=new te({sz:o,buffer:u});let l=0;m.writeDouble(l,r.x),l+=8,m.writeDouble(l,r.y),l+=8,m.writeDouble(l,i),l+=8,m.writeDouble(l,s),l+=8,m.writeDouble(l,a),l+=8,pe(e,t,n,m,0)}function ge(e,t,n,r,i){const s=e.getGeometryType();if(s===a.enumEllipticArc)return ve(e,t,n,r,i);if(s===a.enumBezier)return xe(e,t,n,r,i);if(s===a.enumRationalBezier2)return Ae(e,t,n,r,i);if(s===a.enumBezier2){const s=new B;return s.constructFromQuadraticSegment(e),xe(s,t,n,r,i)}o("")}function ve(e,t,n,i,s){r(!V(e));const a=e.getEndXY(),o=e.hasAttribute(1)&&!t,u=e.hasAttribute(2)&&!n;let m=Number.NaN,l=Number.NaN;if(o&&(m=e.getEndAttributeAsDbl(1,0)),u&&(l=e.getEndAttributeAsDbl(2,0)),e.isDegenerateToLine()||e.isDegenerate(0))return Se(o,u,a.x,a.y,m,l,i,s),!0;const c=0===e.projectionBehavior(),d=!!c&&e.isClosed();if(c&&!d)s.startObject(),s.addFieldName("c"),s.startArray(),Se(o,u,a.x,a.y,m,l,i,s),we(e.m_interior.x,e.m_interior.y,17,s),s.endArray(),s.endObject();else if(c){s.startObject(),s.addFieldName("a"),s.startArray(),Se(o,u,a.x,a.y,m,l,i,s);const t=0,n=0;we(e.m_center.x+t,e.m_center.y+n,17,s);const r=!e.isMajor();s.addInt32(r?1:0);const c=e.isClockwise();s.addInt32(c?1:0),s.endArray(),s.endObject()}else{s.startObject(),s.addFieldName("a"),s.startArray(),Se(o,u,a.x,a.y,m,l,i,s);const t=e;we(t.m_center.x,t.m_center.y,17,s);const n=!t.isMajor();s.addInt32(n?1:0);const r=t.isClockwise();s.addInt32(r?1:0),s.addDouble(t.m_rotation,17),s.addDouble(t.m_semiMajorAxis,17),s.addDouble(t.m_minorMajorRatio,17),s.endArray(),s.endObject()}return!1}function xe(e,t,n,r,i){const s=e.getEndXY(),a=e.hasAttribute(1)&&!t,o=e.hasAttribute(2)&&!n;let u=Number.NaN,m=Number.NaN;return a&&(u=e.getEndAttributeAsDbl(1,0)),o&&(m=e.getEndAttributeAsDbl(2,0)),i.startObject(),i.addFieldName("b"),i.startArray(),Se(a,o,s.x,s.y,u,m,r,i),we(e.m_cp[0].x,e.m_cp[0].y,r,i),we(e.m_cp[1].x,e.m_cp[1].y,r,i),i.endArray(),i.endObject(),!1}function Ae(e,t,n,r,i){const s=e.getEndXY(),a=e.hasAttribute(1)&&!t,o=e.hasAttribute(2)&&!n;let u=Number.NaN,m=Number.NaN;a&&(u=e.getEndAttributeAsDbl(1,0)),o&&(m=e.getEndAttributeAsDbl(2,0)),i.startObject(),i.addFieldName("n"),i.startArray(),Se(a,o,s.x,s.y,u,m,r,i),we(e.m_cp.x,e.m_cp.y,r,i);const l=r;return i.addDouble(e.m_weights[0],l),i.addDouble(e.m_weights[1],l),i.addDouble(e.m_weights[2],l),i.endArray(),i.endObject(),!1}function Se(e,t,n,r,i,s,a,o){o.startArray(),o.addDouble(n,a),o.addDouble(r,a),e&&o.addDouble(i,a),t&&o.addDouble(s,a),o.endArray()}function we(e,t,n,r){r.startArray(),r.addDouble(e,n),r.addDouble(t,n),r.endArray()}class Ce{getOperatorType(){return 10405}accelerateGeometry(e,t,n){return!1}canAccelerateGeometry(e){return!1}supportsCurves(){return!0}execute(e,t,n,r,i,s){De(e,t,n,r)}exportSpatialReference(e,t,n,i){r(0)}exportProjectionTransformation(e,t,n,i){r(0)}exportDatumTransformation(e,t,n,i){r(0)}static geometryTypeToString(e){return r(0),""}}function De(e,n,i,s,o){if(n||i){if(s.startObject(),null!==n){switch(n.getGeometryType()){case a.enumPolygon:Fe(!0,e,n,s);break;case a.enumPolyline:Fe(!1,e,n,s);break;case a.enumMultiPoint:je(e,n,s);break;case a.enumPoint:Oe(e,n,s);break;case a.enumEnvelope:ze(e,n,s);break;case a.enumMultipatch:r(0);break;default:t("exportToJSON")}}null!==i&&(s.addFieldName("spatialReference"),Ee(e,i,s)),s.endObject()}}function Fe(e,t,n,i){const s=n.getImpl(),a=!!(2&t),u=!!(4&t),m=!!(8&t),l=s.hasAttribute(1)&&!a,c=s.hasAttribute(2)&&!u,d=s.hasAttribute(3)&&!m,_=s.hasNonLinearSegments();l&&(i.addFieldName("hasZ"),i.addBool(!0)),c&&(i.addFieldName("hasM"),i.addBool(!0)),e?_?i.addFieldName("curveRings"):i.addFieldName("rings"):_?i.addFieldName("curvePaths"):i.addFieldName("paths");let h=null;const f=[];if(n.isEmpty())i.startArray(),i.endArray();else{const e=17-(31&t>>13);i.startArray();const r=n.getPathCount();let m=0;const p=s.getAttributeStreamRef(0);let k=null,b=null,y=null;const N=new E;let T=null,g=null,v=null;_&&(T=s.getSegmentFlagsStreamRef(),g=s.getSegmentIndexStreamRef(),v=s.getSegmentDataStreamRef()),l&&(k=s.getAttributeStreamRef(1)),c&&(b=s.getAttributeStreamRef(2)),d&&(y=s.getAttributeStreamRef(3),h=O(3,0));for(let t=0;t<r;t++){i.startArray(),d&&f.push(0);const r=n.getPathEnd(t);if(m===r){i.endArray();continue}const s=n.isClosedPath(t);let _=p.read(2*m),x=p.read(2*m+1),A=l?k.read(m):Number.NaN,S=c?b.read(m):Number.NaN,w=d?y.read(m):0;Pe(l,c,_,x,A,S,e,i);let C=1;d&&(h.add(w),f[f.length-1]++);const D=_,F=x,j=A,O=S,z=w;let I=!1,E=0,P=Number.NaN,B=Number.NaN,V=0;for(let t=m+1,n=m,R=s?r+1:r;t<R;t++,n++){const s=null!==T?31&T.read(n):1;let m,R;if(t<r?(m=p.read(2*t),R=p.read(2*t+1),l&&(P=k.read(t)),c&&(B=b.read(t)),d&&(V=y.read(t))):(m=D,R=F,P=j,B=O,V=z),1!==s){I=!0,4===s?N.createEllipticArc():2===s?N.createCubicBezier():16===s?N.createQuadraticBezier():8===s?N.createQuadraticRationalBezier():o("JSON export.unsupported curve");const t=N.get(),r=g.read(n);t.setStartXYCoords(_,x),t.setEndXYCoords(m,R),l&&(t.setStartAttribute(1,0,A),t.setEndAttribute(1,0,P)),c&&(t.setStartAttribute(2,0,S),t.setEndAttribute(2,0,B)),t.readFromBufferStream(v,r);ge(N.get(),a,u,e,i)&&E++}else Pe(l,c,m,R,P,B,e,i);d&&(h.add(V),f[f.length-1]++),C++,_=m,x=R,A=P,S=B,w=V}I&&0===E||(C<2&&E<1&&(Pe(l,c,_,x,A,S,e,i),C++,d&&(h.add(w),f[f.length-1]++)),s&&C<3&&E<2&&(Pe(l,c,D,F,j,O,e,i),C++,_=D,x=F,A=j,S=O,w=z,d&&(h.add(z),f[f.length-1]++))),i.endArray(),m=r}i.endArray()}if(d){i.addFieldName("ids"),i.startArray();let e=0;for(let t=0,n=f.length;t<n;++t){const n=f[t];r(0===n||null!==h&&e+n<=h.size()),i.startArray();for(let t=0;t<n;++t)i.addInt32(h.read(e)),e++;i.endArray()}i.endArray()}}function je(e,t,n){const i=t.getImpl(),s=i.hasAttribute(1)&&!(2&e),a=i.hasAttribute(2)&&!(4&e),o=i.hasAttribute(3)&&!(8&e);s&&(n.addFieldName("hasZ"),n.addBool(!0)),a&&(n.addFieldName("hasM"),n.addBool(!0)),n.addFieldName("points");const u=t.getPointCount();if(t.isEmpty())n.startArray(),n.endArray();else{const t=17-(31&e>>13);n.startArray();const r=i.getAttributeStreamRef(0);let o=null,m=null;s&&(o=i.getAttributeStreamRef(1)),a&&(m=i.getAttributeStreamRef(2));for(let e=0;e<u;e++){const i=r.read(2*e),u=r.read(2*e+1);let l=Number.NaN,c=Number.NaN;s&&(l=o.read(e)),a&&(c=m.read(e)),Pe(s,a,i,u,l,c,t,n)}n.endArray()}if(o){let e=null;i.isEmpty()||(e=i.getAttributeStreamRef(3)),r(0===u||null!==e&&e.size()>=u),n.addFieldName("ids"),n.startArray();for(let t=0;t<u;t++)n.addInt32(e.read(t));n.endArray()}}function Oe(e,t,n){const r=t.hasAttribute(1)&&!(2&e),i=t.hasAttribute(2)&&!(4&e),s=t.hasAttribute(3)&&!(8&e);if(t.isEmpty())return n.addFieldName("x"),n.addNull(),n.addFieldName("y"),n.addNull(),r&&(n.addFieldName("z"),n.addNull()),i&&(n.addFieldName("m"),n.addNull()),void(s&&(n.addFieldName("id"),n.addInt32(0)));const a=17-(31&e>>13);n.addFieldName("x"),n.addDouble(t.getX(),a),n.addFieldName("y"),n.addDouble(t.getY(),a),r&&(n.addFieldName("z"),n.addDouble(t.getZ(),a)),i&&(n.addFieldName("m"),n.addDouble(t.getM(),a)),s&&(n.addFieldName("id"),n.addInt32(t.getID()))}function ze(e,t,n){const r=t.hasAttribute(1)&&!(2&e),i=t.hasAttribute(2)&&!(4&e),s=t.hasAttribute(3)&&!(8&e);if(t.isEmpty())return n.addFieldName("xmin"),n.addNull(),n.addFieldName("ymin"),n.addNull(),n.addFieldName("xmax"),n.addNull(),n.addFieldName("ymax"),n.addNull(),r&&(n.addFieldName("zmin"),n.addNull(),n.addFieldName("zmax"),n.addNull()),i&&(n.addFieldName("mmin"),n.addNull(),n.addFieldName("mmax"),n.addNull()),void(s&&(n.addFieldName("idmin"),n.addInt32(0),n.addFieldName("idmax"),n.addInt32(0)));const a=17-(31&e>>13);if(n.addFieldName("xmin"),n.addDouble(t.getXMin(),a),n.addFieldName("ymin"),n.addDouble(t.getYMin(),a),n.addFieldName("xmax"),n.addDouble(t.getXMax(),a),n.addFieldName("ymax"),n.addDouble(t.getYMax(),a),r){const e=t.queryInterval(1,0);n.addFieldName("zmin"),n.addDouble(e.vmin,a),n.addFieldName("zmax"),n.addDouble(e.vmax,a)}if(i){const e=t.queryInterval(2,0);n.addFieldName("mmin"),n.addDouble(e.vmin,a),n.addFieldName("mmax"),n.addDouble(e.vmax,a)}if(s){const e=t.queryInterval(3,0);n.addFieldName("idmin"),n.addInt32(e.vmin),n.addFieldName("idmax"),n.addInt32(e.vmax)}}function Ie(e,t,r){r.startObject();const i=t.getID();i<=0&&n("cannot export unit that has no valid WKID"),r.addFieldName("uwkid"),r.addInt32(i),r.endObject()}function Ee(e,t,n){n.startObject();let r=0;t.isCustomWkid()||(r=t.getOldID());let i=0;const s=t.getVCS();if(null!==s&&(s.isCustomWkid()||(i=s.getOldID()),i<=0&&(r=0)),r>0){n.addFieldName("wkid"),n.addInt32(r);const e=t.getLatestID();if(e>0&&e!==r&&(n.addFieldName("latestWkid"),n.addInt32(e)),i>0){n.addFieldName("vcsWkid"),n.addInt32(i);const e=t.getLatestVerticalID();e!==i&&(n.addFieldName("latestVcsWkid"),n.addInt32(e))}}if(0===t.getCoordinateSystemType())n.addFieldName("wkid"),n.addNull(),null!==t.getUnit()&&(n.addFieldName("unit"),Ie(e,t.getUnit(),n));else if(r<=0||1&e){let r="";64&e&&(r=t.getText2(),n.addFieldName("wkt2"),n.addString(r));const i=t.getText();i!==r&&(n.addFieldName("wkt"),n.addString(i))}if(16&e){const e=new T;t.queryPrecisionDescriptor(e),n.addFieldName("xyTolerance"),n.addDouble(e.getTolerance(0)),n.addFieldName("zTolerance"),n.addDouble(e.getTolerance(1)),n.addFieldName("mTolerance"),n.addDouble(e.getTolerance(2)),n.addFieldName("falseX"),n.addDouble(e.getFalseX()),n.addFieldName("falseY"),n.addDouble(e.getFalseY()),n.addFieldName("xyUnits"),n.addDouble(e.getGridUnitsXY()),n.addFieldName("falseZ"),n.addDouble(e.getFalseZ()),n.addFieldName("zUnits"),n.addDouble(e.getGridUnitsZ()),n.addFieldName("falseM"),n.addDouble(e.getFalseM()),n.addFieldName("mUnits"),n.addDouble(e.getGridUnitsM())}n.endObject()}function Pe(e,t,n,r,i,s,a,o){o.startArray(),o.addDouble(n,a),o.addDouble(r,a),e&&o.addDouble(i,a),t&&o.addDouble(s,a),o.endArray()}const Be={s_a:"a".charCodeAt(0),s_A:"A".charCodeAt(0),s_asterisk:"*".charCodeAt(0),s_b:"b".charCodeAt(0),s_backslash:"\\".charCodeAt(0),s_beginArray:"[".charCodeAt(0),s_beginObject:"{".charCodeAt(0),s_colon:":".charCodeAt(0),s_period:".".charCodeAt(0),s_comma:",".charCodeAt(0),s_doubleQuote:'"'.charCodeAt(0),s_endArray:"]".charCodeAt(0),s_endObject:"}".charCodeAt(0),s_e:"e".charCodeAt(0),s_E:"E".charCodeAt(0),s_f:"f".charCodeAt(0),s_F:"F".charCodeAt(0),s_forwardslash:"/".charCodeAt(0),s_minus:"-".charCodeAt(0),s_plus:"+".charCodeAt(0),s_n:"n".charCodeAt(0),s_N:"N".charCodeAt(0),s_r:"r".charCodeAt(0),s_t:"t".charCodeAt(0),s_u:"u".charCodeAt(0),s_zero:"0".charCodeAt(0),s_nine:"9".charCodeAt(0)};class Ve{constructor(e){this.m_functionStack=[],this.m_pushPositions=[],this.m_utf8Decoder=new TextDecoder("utf-8",{fatal:!0}),void 0===e?(this.m_startToken=Number.MAX_SAFE_INTEGER,this.m_endToken=0,this.m_currentTokenType=0,this.m_functionStack.push(()=>this.accept_()),this.m_jsonString=null,this.m_bHasEscapes=!1):e.jsonString?this.resetParserFromString(e.jsonString):e.jsonStream?o("streaming json parsing not yet impl"):t("invalid constructor parameter")}prepSubstrString_(){}getCurrentSubstrString_(){return this.m_jsonString.slice(this.m_startToken,this.m_endToken)}stepOverCharString_(){this.m_endToken++}peekCharString_(){return this.m_jsonString.charCodeAt(this.m_endToken)}getString_(e){const t=this.m_jsonString?.slice(this.m_startToken,this.m_startToken+e-1);this.m_endToken+=e-1;return{s:t,bDone:this.m_endToken>=this.m_jsonString.length}}incrementString_(){this.m_endToken++}eofString_(){return this.m_endToken>=this.m_jsonString.length}setStringFunctions_(){this.m_prepSubstr=this.prepSubstrString_,this.m_getCurrentSubstr=this.getCurrentSubstrString_,this.m_stepOverChar=this.stepOverCharString_,this.m_peekChar=this.peekCharString_,this.m_get=this.getString_,this.m_increment=this.incrementString_,this.m_eof=this.eofString_}setStreamFunctions_(){o("streaming json parsing not yet impl")}reset_(){this.m_jsonString=null,this.m_endToken=0,this.m_startToken=Number.MAX_SAFE_INTEGER,this.m_currentTokenType=0,this.m_bHasEscapes=!1,this.m_functionStack.length=0,this.m_functionStack.push(()=>this.start_()),this.m_pushPositions.length=0}resetParserFromString(e){this.reset_(),this.setStringFunctions_(),this.m_jsonString=e}resetParserFromStream(e){o("streaming json parsing not yet impl")}resetToPosition(e){return!!this.m_jsonString&&(this.m_endToken=e,this.m_startToken=Number.MAX_VALUE,this.m_currentTokenType=0,this.m_functionStack.length=0,e>=this.m_jsonString.length?(this.m_functionStack.push(()=>this.accept_()),!1):(this.m_functionStack.push(()=>this.start_()),!0))}nextToken(){return this.m_functionStack.at(-1)(),this.m_currentTokenType}currentToken(){return this.m_currentTokenType}currentTokenStartIndex(){return this.m_startToken}currentTokenEndIndex(){return this.m_endToken}currentText(){return r(0),""}childrenAsString(){return r(0),""}skipChildren(){this.skipChildren_()}skipChildren_(){if(1===this.m_currentTokenType){let e=1;do{this.m_currentTokenType=this.nextToken(),1===this.m_currentTokenType?e++:3===this.m_currentTokenType&&e--}while(3!==this.m_currentTokenType||0!==e);return}if(2===this.m_currentTokenType){let e=1;do{this.m_currentTokenType=this.nextToken(),2===this.m_currentTokenType?e++:4===this.m_currentTokenType&&e--}while(4!==this.m_currentTokenType||0!==e);return}}currentTerminalAsString_(){switch(this.m_currentTokenType){case 7:case 8:case 9:return this.m_getCurrentSubstr().slice(0,this.m_endToken-this.m_startToken);case 10:return"null";case 11:return"true";case 12:return"false"}n("invalid token")}toUTF8_(e,t){let n=0,r=e;for(;t.charCodeAt(r)===Be.s_backslash&&t.charCodeAt(r+1)===Be.s_u;)n++,r+=6;r=e;const i=new Uint8Array(n);let s=0;for(;t.charCodeAt(r)===Be.s_backslash&&t.charCodeAt(r+1)===Be.s_u;)i[s++]=Number.parseInt(t.slice(r+2,r+6),16),r+=6;return{u8s:this.m_utf8Decoder.decode(i),end:r}}unquoteCurrentString_(){let e="",t=1;const n=this.m_endToken-this.m_startToken-1;let r=0;const i=this.m_getCurrentSubstr();for(let s=t;s<n;s++)if(i.charCodeAt(s)!==Be.s_backslash)r++;else{switch(r>0&&(e+=i.slice(t,t+r)),i.charCodeAt(++s)){case Be.s_doubleQuote:e+='"';break;case Be.s_u:{const{u8s:t,end:n}=this.toUTF8_(s-1,i);s=n-1,e+=t;break}case Be.s_backslash:e+="\\";break;case Be.s_forwardslash:e+="/";break;case Be.s_b:e+="\b";break;case Be.s_f:e+="\f";break;case Be.s_n:e+="\n";break;case Be.s_r:e+="\r";break;case Be.s_t:e+="\t"}t=s+1,r=0}return r>0&&(e+=i.slice(t,t+r)),e}currentString(){if(5!==this.m_currentTokenType&&6!==this.m_currentTokenType)return this.currentTerminalAsString_();if(this.m_bHasEscapes)return this.unquoteCurrentString_();return this.m_getCurrentSubstr().slice(1,this.m_endToken-this.m_startToken-2+1)}currentDoubleValue(){if(7!==this.m_currentTokenType&&8!==this.m_currentTokenType&&9!==this.m_currentTokenType&&6!==this.m_currentTokenType&&10!==this.m_currentTokenType&&n("invalid token"),10===this.m_currentTokenType)return Number.NaN;let e=this.m_getCurrentSubstr(),t=this.m_endToken-this.m_startToken;if(6===this.m_currentTokenType){if("NaN"===this.currentString())return Number.NaN;e=e.slice(1),t-=2,0===t&&n("invalid token")}const r=Number.parseFloat(e);if(6===this.m_currentTokenType)Number.isNaN(r)&&n("invalid token");else if(Number.isNaN(r))return Number.NaN;return r}currentInt32Value(){8!==this.m_currentTokenType&&6!==this.m_currentTokenType&&n("invalid token");let e=this.m_getCurrentSubstr(),t=this.m_endToken-this.m_startToken;6===this.m_currentTokenType&&(e=e.slice(1),t-=2,0===t&&n("invalid token"));const r=parseInt(e);return Number.isNaN(r)&&n("invalid token"),r}currentInt64Value(){return r(0),0n}currentBoolValue(){return r(0),!1}isError(){return 0}JSONString(){return r(0),""}pushPosition(){return r(0),!1}popPosition(){return r(0),!1}skipCStyleComments_(){r(0)}skipCppStyleComments_(){r(0)}skipComments_(){this.m_prepSubstr();let e=this.m_peekChar();this.m_stepOverChar(),this.m_eof()&&n("invalid token"),e=this.m_peekChar(),e===Be.s_asterisk?this.skipCStyleComments_():e===Be.s_forwardslash?this.skipCppStyleComments_():n("invalid token")}skipWhiteSpace_(){let e;do{this.m_eof()&&n("invalid token");let t=this.m_peekChar();for(;t>=9&&t<=13||32===t;)this.m_increment(),this.m_eof()&&n("invalid token"),t=this.m_peekChar();t===Be.s_forwardslash?(this.m_startToken=this.m_endToken,e=!0,this.skipComments_()):e=!1}while(e)}rightBracket_(){return this.m_peekChar()===Be.s_endArray&&(this.m_startToken=this.m_endToken,this.m_increment(),this.m_currentTokenType=4,!0)}rightBrace_(){return this.m_peekChar()===Be.s_endObject&&(this.m_startToken=this.m_endToken,this.m_increment(),this.m_currentTokenType=3,!0)}string_(){this.m_prepSubstr(),this.m_bHasEscapes=!1,this.m_stepOverChar(),this.m_eof()&&n("invalid token");let e=this.m_peekChar();for(;e!==Be.s_doubleQuote;){const t=e===Be.s_backslash;if(this.m_stepOverChar(),this.m_eof()&&n("invalid token"),e=this.m_peekChar(),t)if(this.m_bHasEscapes=!0,e===Be.s_doubleQuote||e===Be.s_backslash||e===Be.s_forwardslash||e===Be.s_b||e===Be.s_f||e===Be.s_n||e===Be.s_r||e===Be.s_t)this.m_stepOverChar(),this.m_eof()&&n("invalid token"),e=this.m_peekChar();else if(e===Be.s_u)for(let r=0;r<4;r++)this.m_stepOverChar(),this.m_eof()&&n("invalid token"),e=this.m_peekChar(),e>=Be.s_zero&&e<=Be.s_nine||e>=Be.s_a&&e<=Be.s_f||e>=Be.s_A&&e<=Be.s_F||n("invalid token");else n("invalid token")}this.m_stepOverChar()}comma_(){return this.m_peekChar()===Be.s_comma&&(this.m_increment(),!0)}colon_(){return this.m_peekChar()===Be.s_colon&&(this.m_increment(),!0)}fieldNameEnd_(){this.skipWhiteSpace_(),this.m_functionStack.pop(),this.colon_()?(this.skipWhiteSpace_(),this.value_()):n("invalid token")}fieldNameStart_(){this.m_startToken=this.m_endToken;this.m_peekChar()!==Be.s_doubleQuote&&n("invalid token"),this.string_(),this.m_currentTokenType=5,this.m_functionStack.push(()=>this.fieldNameEnd_())}pairEnd_(){this.skipWhiteSpace_(),this.comma_()?(this.skipWhiteSpace_(),this.fieldNameStart_()):this.rightBrace_()?this.m_functionStack.pop():n("invalid token")}arrayStart_(){this.skipWhiteSpace_(),this.m_functionStack.pop(),this.rightBracket_()||(this.m_functionStack.push(()=>this.elementEnd_()),this.value_())}elementEnd_(){this.skipWhiteSpace_(),this.comma_()?(this.skipWhiteSpace_(),this.value_()):this.rightBracket_()?this.m_functionStack.pop():n("invalid token")}objectStart_(){this.skipWhiteSpace_(),this.m_functionStack.pop(),this.rightBrace_()||(this.m_functionStack.push(()=>this.pairEnd_()),this.fieldNameStart_())}valueStartObject_(){this.m_increment(),this.m_currentTokenType=1,this.m_functionStack.push(()=>this.objectStart_())}valueStartArray_(){this.m_increment(),this.m_currentTokenType=2,this.m_functionStack.push(()=>this.arrayStart_())}valueString_(){this.string_(),this.m_currentTokenType=6}int_(){this.m_peekChar()!==Be.s_zero?this.digits_():this.m_stepOverChar()}digits_(){let e=this.m_peekChar();do{this.m_stepOverChar(),this.m_eof()&&n("invalid token"),e=this.m_peekChar()}while(e>=Be.s_zero&&e<=Be.s_nine)}frac_(){let e=this.m_peekChar();this.m_stepOverChar(),this.m_eof()&&n("invalid token"),e=this.m_peekChar(),e>=Be.s_zero&&e<=Be.s_nine||n("invalid token"),this.digits_()}exp_(){let e=this.m_peekChar();this.m_stepOverChar(),this.m_eof()&&n("invalid token"),e=this.m_peekChar(),e!==Be.s_plus&&e!==Be.s_minus||(this.m_stepOverChar(),this.m_eof()&&n("invalid token"),e=this.m_peekChar()),e>=Be.s_zero&&e<=Be.s_nine||n("invalid token"),this.digits_()}valueNumber_(){this.m_prepSubstr();let e=!1,t=this.m_peekChar();if(t===Be.s_minus?(this.m_stepOverChar(),this.m_eof()&&n("invalid token"),t=this.m_peekChar(),e=!0,t>=Be.s_zero&&t<=Be.s_nine||n("invalid token"),this.int_()):this.int_(),t=this.m_peekChar(),t===Be.s_period)this.m_currentTokenType=7,this.frac_(),t=this.m_peekChar(),t!==Be.s_e&&t!==Be.s_E||this.exp_();else if(t===Be.s_e||t===Be.s_E)this.m_currentTokenType=7,this.exp_();else{let t=0;e&&t++;const n=this.m_endToken-this.m_startToken-t;if(n<10)this.m_currentTokenType=8;else if(10===n){const n=this.m_getCurrentSubstr();e?n.slice(t)<="2147483648"?this.m_currentTokenType=8:this.m_currentTokenType=9:n.slice(t)<="2147483647"?this.m_currentTokenType=8:this.m_currentTokenType=9}else if(n<19)this.m_currentTokenType=9;else if(19===n){const n=this.m_getCurrentSubstr();e?n.slice(t)<="9223372036854775808"?this.m_currentTokenType=9:this.m_currentTokenType=7:n.slice(t)<="9223372036854775807"?this.m_currentTokenType=9:this.m_currentTokenType=7}else this.m_currentTokenType=7}}valueNull_(){const{s:e,bDone:t}=this.m_get(5);t&&n("invalid token"),"null"!==e&&n("invalid token"),this.m_currentTokenType=10}valueTrue_(){const{s:e,bDone:t}=this.m_get(5);t&&n("invalid token"),"true"!==e&&n("invalid token"),this.m_currentTokenType=11}valueFalse_(){const{s:e,bDone:t}=this.m_get(6);t&&n("invalid token"),"false"!==e&&n("invalid token"),this.m_currentTokenType=12}valueNan_(){const{s:e,bDone:t}=this.m_get(4);t&&n("invalid token"),"NaN"!==e&&n("invalid token"),this.m_currentTokenType=7}value_(){this.m_startToken=this.m_endToken;const e=this.m_peekChar();e===Be.s_beginObject?this.valueStartObject_():e===Be.s_beginArray?this.valueStartArray_():e===Be.s_doubleQuote?this.valueString_():e===Be.s_minus||e>=Be.s_zero&&e<=Be.s_zero+9?this.valueNumber_():e===Be.s_n?this.valueNull_():e===Be.s_t?this.valueTrue_():e===Be.s_f?this.valueFalse_():e===Be.s_N?this.valueNan_():n("invalid token")}start_(){this.skipWhiteSpace_(),this.m_functionStack.pop(),this.m_functionStack.push(()=>this.accept_());const e=this.m_peekChar();e!==Be.s_beginObject&&e!==Be.s_beginArray&&n("invalid token"),this.value_()}accept_(){this.m_startToken=this.m_endToken,this.m_currentTokenType=0}}class Re{getOperatorType(){return 10404}accelerateGeometry(e,t,n){return!1}canAccelerateGeometry(e){return!1}supportsCurves(){return!0}execute(e,t,r,i,s,a,o){let u;"string"==typeof r?(u=new Ve({jsonString:r}),u.nextToken()):u=r,1!==u.currentToken()&&n("failed to import map geometry: start of object is expected");const m=ne(t,e,u,i,s);return new v(m)}importSpatialReference(e){const n=ie(e);return null===n&&t("failed to import spatial reference"),n}importProjectionTransformation(e,t){return r(0),{}}importDatumTransformation(e,t){return r(0),{}}static stringToGeometryType(e){return(e=e.toLowerCase()).startsWith("esrigeometry")||n("string_to_geometry_type"),e.endsWith("point")?a.enumPoint:e.endsWith("envelope")?a.enumEnvelope:e.endsWith("multipoint")?a.enumMultiPoint:e.endsWith("polyline")?a.enumPolyline:e.endsWith("polygon")?a.enumPolygon:void n("string_to_geometry_type")}}const Me=new ee,Ue=new Ce,We=new Re;function Ge(e){return Array.isArray(e)?e[0].spatialReference:e.spatialReference}function Le(t,n=!1){if(!n&&(K(t)||q(t)||J(t)||Q(t))){const n=new v;return n.setGeometry(e(X(t))),n}const r=new $(t,{strict:!1});return r.nextToken(),We.execute(0,a.enumUnknown,r,!0,!1)}function Xe(e){let t=null;return[e.map(e=>{if(null==t){const n=Ye(e);return t=n.getSpatialReference(),n.getGeometry()}return Ke(e)}),t]}function Ye(e){const t=Le(e),n=Je(e.spatialReference);return n&&t.setSpatialReference(n),t}function Ke(e){return Le(e).getGeometry()}function qe(e){return Le(e,!0).getGeometry()}function Je(e){if(null==e)return null;let t=!1;if(e instanceof Y){const{wkt2:n}=e;e=e.toJSON(),e.wkt2??=n,t=!0}(e.latestVcsWkid||e.vcsWkid)&&(t||(e={...e}),delete e?.latestVcsWkid,delete e?.vcsWkid);const n=new $(e,{strict:!1});n.nextToken();const r=We.importSpatialReference(n);return 0===r.getCoordinateSystemType()?null:r}function Qe(e,t){if(e instanceof v&&(t=e.getSpatialReference(),e=e.getGeometry()),null==e||e.isEmpty())return null;let n;switch(e.getGeometryType()){case a.enumPoint:case a.enumMultiPoint:case a.enumPolyline:case a.enumPolygon:n=G(e)}if(n){const e=L(n);return e.spatialReference=Ze(t),null==e.spatialReference&&delete e.spatialReference,e}return Me.reset(),Ue.execute(0,e,t??null,Me),Me.getObject()}function Ze(e){return null==e||0===e.getCoordinateSystemType()?null:(Me.reset(),Ue.execute(0,null,e,Me),Me.getObject().spatialReference)}export{Xe as fromGeometries,Ye as fromGeometry,Ke as fromGeometryToGXGeometry,qe as fromGeometryToGXGeometryUsingImportOperator,Je as fromSpatialReference,Ge as getSpatialReference,Qe as toGeometry,Ze as toSpatialReference};