define(["./when-54c2dc71","./Check-6c0211bc","./Math-fc8cecf5","./Cartesian2-bddc1162","./Transforms-d07bb42c","./RuntimeError-2109023a","./WebGLConstants-76bb35d1","./ComponentDatatype-6d99a1ee","./GeometryAttribute-be1a3386","./EncodedCartesian3-4df2eabb","./IntersectionTests-8abf6dba","./Plane-c8971487","./WebMercatorProjection-df58d479","./arrayRemoveDuplicates-ebc732b0","./ArcType-dc1c5aee","./EllipsoidRhumbLine-c704bf4c","./EllipsoidGeodesic-30fae80b"],function(B,e,be,Oe,Pe,a,t,ke,Ae,Le,j,r,n,G,V,Y,M){"use strict";function i(e){e=B.defaultValue(e,B.defaultValue.EMPTY_OBJECT),this._ellipsoid=B.defaultValue(e.ellipsoid,Oe.Ellipsoid.WGS84),this._rectangle=B.defaultValue(e.rectangle,Oe.Rectangle.MAX_VALUE),this._projection=new Pe.GeographicProjection(this._ellipsoid),this._numberOfLevelZeroTilesX=B.defaultValue(e.numberOfLevelZeroTilesX,2),this._numberOfLevelZeroTilesY=B.defaultValue(e.numberOfLevelZeroTilesY,1)}Object.defineProperties(i.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}}),i.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<Ie?(F=Re(a,P,ee,V,ea),q=Re(a,k,G,Y,aa)):1===Me?(q=Re(a,k,G,Y,aa),F.x=0,F.y=be.CesiumMath.sign(P.longitude-Math.abs(k.longitude)),F.z=0):(F=Re(a,P,ee,V,ea),q.x=0,q.y=be.CesiumMath.sign(P.longitude-k.longitude),q.z=0));var ae=Oe.Cartesian3.distance($,j),te=Le.EncodedCartesian3.fromCartesian(K,la),ne=Oe.Cartesian3.subtract(B,K,ta),ie=Oe.Cartesian3.normalize(ne,ra),re=Oe.Cartesian3.subtract($,K,na);re=Oe.Cartesian3.normalize(re,re);var se=Oe.Cartesian3.cross(ie,re,ra);se=Oe.Cartesian3.normalize(se,se);var oe=Oe.Cartesian3.cross(re,ee,sa);oe=Oe.Cartesian3.normalize(oe,oe);var le=Oe.Cartesian3.subtract(j,B,ia);le=Oe.Cartesian3.normalize(le,le);var ue=Oe.Cartesian3.cross(G,le,oa);ue=Oe.Cartesian3.normalize(ue,ue);var ce=ae/x,Ce=Z/x,pe=0,de=0,he=0;for(s&&(pe=Oe.Cartesian3.distance(V,Y),X=Le.EncodedCartesian3.fromCartesian(V,ua),W=Oe.Cartesian3.subtract(Y,V,ca),Te=(U=Oe.Cartesian3.normalize(W,Ca)).x,U.x=U.y,U.y=-Te,de=pe/O,he=J/O),I=0;I<8;I++){var ge=z+4*I,fe=R+2*I,me=ge+3,we=I<4?1:-1,ye=2===I||3===I||6===I||7===I?1:-1;Oe.Cartesian3.pack(te.high,v,ge),v[me]=ne.x,Oe.Cartesian3.pack(te.low,M,ge),M[me]=ne.y,Oe.Cartesian3.pack(oe,T,ge),T[me]=ne.z,Oe.Cartesian3.pack(ue,E,ge),E[me]=ce*we,Oe.Cartesian3.pack(se,_,ge);var ve=Ce*ye;0===ve&&ye<0&&(ve=9),_[me]=ve,s&&(u[ge]=X.high.x,u[ge+1]=X.high.y,u[ge+2]=X.low.x,u[ge+3]=X.low.y,C[ge]=-F.y,C[ge+1]=F.x,C[ge+2]=q.y,C[ge+3]=-q.x,c[ge]=W.x,c[ge+1]=W.y,c[ge+2]=U.x,c[ge+3]=U.y,p[fe]=de*we,0===(ve=he*ye)&&ye<0&&(ve=9),p[fe+1]=ve)}var Me=Je,ie=Qe,re=Ue,ee=Ze,le=Oe.Rectangle.fromCartographicArray(Xe,We),Te=Se.getMinimumMaximumHeights(le,d),le=Te.minimumTerrainHeight,Te=Te.maximumTerrainHeight;Q+=le,Q+=Te,De(K,$,le,Te,Me,re),De(B,j,le,Te,ie,ee);Te=Oe.Cartesian3.multiplyByScalar(se,be.CesiumMath.EPSILON5,pa);Oe.Cartesian3.add(Me,Te,Me),Oe.Cartesian3.add(ie,Te,ie),Oe.Cartesian3.add(re,Te,re),Oe.Cartesian3.add(ee,Te,ee),ze(Me,ie),ze(re,ee),Oe.Cartesian3.pack(Me,y,D),Oe.Cartesian3.pack(ie,y,D+3),Oe.Cartesian3.pack(ee,y,D+6),Oe.Cartesian3.pack(re,y,D+9),Te=Oe.Cartesian3.multiplyByScalar(se,-2*be.CesiumMath.EPSILON5,pa),Oe.Cartesian3.add(Me,Te,Me),Oe.Cartesian3.add(ie,Te,ie),Oe.Cartesian3.add(re,Te,re),Oe.Cartesian3.add(ee,Te,ee),ze(Me,ie),ze(re,ee),Oe.Cartesian3.pack(Me,y,D+12),Oe.Cartesian3.pack(ie,y,D+15),Oe.Cartesian3.pack(ee,y,D+18),Oe.Cartesian3.pack(re,y,D+21),N+=2,l+=3,R+=16,D+=24,z+=32,Z+=ae,J+=pe}var Ee=l=0;for(o=0;obe.CesiumMath.PI_OVER_TWO&&(o=!0,s=Oe.Cartesian3.subtract(r,t,H),u=l.cartesianToCartographic(s,D)),u.height=0;u=e.project(u,i);return(i=Oe.Cartesian3.subtract(u,n,i)).z=0,i=Oe.Cartesian3.normalize(i,i),o&&Oe.Cartesian3.negate(i,i),i}var oe=new Oe.Cartesian3,le=new Oe.Cartesian3;function De(e,a,t,n,i,r){var s=Oe.Cartesian3.subtract(a,e,oe);Oe.Cartesian3.normalize(s,s);t-=q,t=Oe.Cartesian3.multiplyByScalar(s,t,le);Oe.Cartesian3.add(e,t,i);n-=X,t=Oe.Cartesian3.multiplyByScalar(s,n,le);Oe.Cartesian3.add(a,t,r)}var ue=new Oe.Cartesian3;function ze(e,a){var t=r.Plane.getPointDistance(Q,e),n=r.Plane.getPointDistance(Q,a),i=ue;be.CesiumMath.equalsEpsilon(t,0,be.CesiumMath.EPSILON2)?(i=xe(a,e,i),Oe.Cartesian3.multiplyByScalar(i,be.CesiumMath.EPSILON2,i),Oe.Cartesian3.add(e,i,e)):be.CesiumMath.equalsEpsilon(n,0,be.CesiumMath.EPSILON2)&&(i=xe(e,a,i),Oe.Cartesian3.multiplyByScalar(i,be.CesiumMath.EPSILON2,i),Oe.Cartesian3.add(a,i,a))}var He=new Oe.Cartographic,Be=new Oe.Cartographic,je=new Oe.Cartesian3,Ge=new Oe.Cartesian3,Ve=new Oe.Cartesian3,Ye=new Oe.Cartesian3,Fe=new Oe.Cartesian3,qe=new Oe.Cartesian3,Xe=[He,Be],We=new Oe.Rectangle,Ue=new Oe.Cartesian3,Ze=new Oe.Cartesian3,Je=new Oe.Cartesian3,Qe=new Oe.Cartesian3,Ke=new Oe.Cartesian3,$e=new Oe.Cartesian3,ea=new Oe.Cartesian3,aa=new Oe.Cartesian3,ta=new Oe.Cartesian3,na=new Oe.Cartesian3,ia=new Oe.Cartesian3,ra=new Oe.Cartesian3,sa=new Oe.Cartesian3,oa=new Oe.Cartesian3,la=new Le.EncodedCartesian3,ua=new Le.EncodedCartesian3,ca=new Oe.Cartesian3,Ca=new Oe.Cartesian3,pa=new Oe.Cartesian3,da=[new Pe.BoundingSphere,new Pe.BoundingSphere],ha=[0,2,1,0,3,2,0,7,3,0,4,7,0,5,4,0,1,5,5,7,4,5,6,7,5,2,6,5,1,2,3,6,2,3,7,6],ga=ha.length;function fa(e){return new Ae.GeometryAttribute({componentDatatype:ke.ComponentDatatype.FLOAT,componentsPerAttribute:4,normalize:!1,values:e})}return w._projectNormal=Re,function(e,a){return Se.initialize().then(function(){return B.defined(a)&&(e=w.unpack(e,a)),w.createGeometry(e)})}});