@krazyphish/earth 1.0.1
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.
- package/HISTORY.md +275 -0
- package/LICENSE +21 -0
- package/README.md +32 -0
- package/dist/cesium.extend.d.ts +380 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.d.ts +8961 -0
- package/dist/index.es.js +1 -0
- package/dist/style.css +2 -0
- package/package.json +75 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const e=require("cesium");function __decorate(e,t,i,o){var r,n=arguments.length,s=n<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,i):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,i,o);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(s=(n<3?r(s):n>3?r(t,i,s):r(t,i))||s);return n>3&&s&&Object.defineProperty(t,i,s),s}function __param(e,t){return function(i,o){t(i,o,e)}}function __awaiter(e,t,i,o){return new(i||(i=Promise))(function(r,n){function fulfilled(e){try{step(o.next(e))}catch(e){n(e)}}function rejected(e){try{step(o.throw(e))}catch(e){n(e)}}function step(e){e.done?r(e.value):function adopt(e){return e instanceof i?e:new i(function(t){t(e)})}(e.value).then(fulfilled,rejected)}step((o=o.apply(e,t||[])).next())})}function __classPrivateFieldGet(e,t,i,o){if("a"===i&&!o)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?o:"a"===i?o.call(e):o?o.value:t.get(e)}function __classPrivateFieldSet(e,t,i,o,r){if("m"===o)throw new TypeError("Private method is not writable");if("a"===o&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===o?r.call(e,i):r?r.value=i:t.set(e,i),i}"function"==typeof SuppressedError&&SuppressedError;const constant=e=>(t,i)=>{Object.defineProperty(t,i,{enumerable:!0,configurable:!1,writable:!1,value:Object.freeze(e)})},log=(e,t,i)=>{console.warn(`'${e}' is deprecated and will be removed at ${t}${i}.`)},deprecate=(e,t)=>{const i=new WeakMap;return(...t)=>{var o,r;const n=e?`, use '${e}' instead`:"",s="next minor version",[a,l,c]=t;if(l&&c){const e=null!==(o=a.name)&&void 0!==o?o:a.constructor.name,t="string"==typeof l?l:l.toString(),i=c.value;c.value=function(...o){return log(`${e}.${t}`,s,n),i.apply(this,o)}}else{if(!l)return new Proxy(a,{construct:(e,t)=>(log(`${e.name}`,s,n),Reflect.construct(e,t)),get:(e,t,i)=>(e===i&&log(`${e.name}`,s,n),Reflect.get(e,t,i))});{const e=null!==(r=a.name)&&void 0!==r?r:a.constructor.name,t="string"==typeof l?l:l.toString();Object.defineProperty(a,l,{configurable:!1,enumerable:!0,get(){return log(`${e}.${t}`,s,n),i.get(this)},set(o){log(`${e}.${t}`,s,n),i.set(this,o)}})}}}},enumerable=e=>(...t)=>{const[i,o,r]=t;if(r)return r.enumerable=e,r.configurable=!1,r;Object.defineProperty(i,o,{configurable:!1,enumerable:e,writable:!0})},freeze=e=>Object.freeze(e),generate=e=>(t,i)=>{const o="string"==typeof i?i:i.toString(),r=`_${o}`;Object.defineProperty(t,r,{configurable:!1,enumerable:!1,writable:!0,value:e}),Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get(){return"string"==typeof i?this[`_${i}`]:this[r]},set(){throw Error(`Cannot assign to '${o}', because it is a read-only property.`)}})},singleton=e=>t=>{const i=new Map;return new Proxy(t,{construct:(t,o)=>{let r;return i.has(o[0].id)&&(console.warn(null!=e?e:`Instance of '${t.name}' can only be constructed once for each earth, unless the previous has been destroyed.`),r=i.get(o[0].id)),r&&!r._isDestroyed||(r=Reflect.construct(t,o),i.set(o[0].id,r)),r}})},t=new WeakMap,useValidatorMaker=(e,i,o)=>(r,n,s)=>{var a,l;const c=null!=n?n:"constructor",d={index:s,attr:o,key:c,rule:e,failed:i(s,c,o)};if(t.has(r)&&(null===(a=t.get(r))||void 0===a?void 0:a.has(c))){const e=null===(l=t.get(r))||void 0===l?void 0:l.get(c);null==e||e.push(d)}else t.set(r,new Map([[c,[d]]]))},validate=(...e)=>{var i,o;const[r,n,s]=e;if(!n||!s){const e="constructor",i=null===(o=t.get(r))||void 0===o?void 0:o.get(e);return new Proxy(r,{construct:(t,o)=>{if(i&&i.length)for(const{rule:r,index:n,attr:s,failed:a}of i){if(n>=o.length)continue;const i=s?o[n][s]:o[n];if(null==i){if(t.length-1<n)continue;const i=s?`the '${"string"==typeof s?s:s.toString()}'`:"it";throw new Error(`Invalid parameter of '${e}' at index ${n}, ${i} is undefined or null.`)}if(!r(i))throw new Error(a)}return Reflect.construct(t,o)}})}{const e=null===(i=t.get(r))||void 0===i?void 0:i.get(n),o=s.value;s.value=function(...t){if(t.length&&e&&e.length)for(const{rule:i,key:r,index:n,attr:s,failed:a}of e){if(n>=t.length)continue;const e=s?t[n][s]:t[n];if(null==e){if(o.length-1<n)continue;const e="string"==typeof r?r:r.toString(),t=s?`the '${"string"==typeof s?s:s.toString()}'`:"it";throw new Error(`Invalid parameter of '${e}' at index ${n}, ${t} is undefined or null.`)}if(!i(e))throw new Error(a)}return o.apply(this,t)}}},except=(e,t=!1,i)=>{const o=Array.isArray(e)?e:[e];return useValidatorMaker(e=>!o.some(i=>t?e===i:e.includes(i)),(e,i,r)=>`Invalid parameter string of '${"string"==typeof i?i:i.toString()}' at index ${e}, ${r?`the '${"string"==typeof r?r:r.toString()}'`:"it"} cannot ${t?"include":"be"} '${o.join("', '")}'.`,i)},useTypeCheck=(e,t)=>{if(e===Number)return"number"==typeof t&&!Number.isNaN(t);if(e===String)return"string"==typeof t;if(e===Boolean)return"boolean"==typeof t;if(e===Object)return"object"==typeof t&&null!==t;if(e===Function){const i=!!e.prototype;return"function"==typeof t&&i}return t instanceof e},is=(e,t)=>useValidatorMaker(t=>useTypeCheck(e,t),(t,i,o)=>`Invalid parameter type of '${"string"==typeof i?i:i.toString()}' at index ${t}, ${o?`the '${"string"==typeof o?o:o.toString()}'`:"it"} should be '${e.name}'.`,t),lessThan=(e,t=!0,i)=>useValidatorMaker(i=>t&&i<=e||!t&&i<e,(i,o,r)=>`Invalid parameter of '${"string"==typeof o?o:o.toString()}' at index ${i}, ${r?`the '${"string"==typeof r?r:r.toString()}'`:"it"} should be ${t?"equal or less":"less"} than ${e}.`,i),moreThan=(e,t=!0,i)=>useValidatorMaker(i=>t&&i>=e||!t&&i>e,(i,o,r)=>`Invalid parameter of '${"string"==typeof o?o:o.toString()}' at index ${i}, ${r?`the '${"string"==typeof r?r:r.toString()}'`:"it"} should be ${t?"equal or more":"more"} than ${e}.`,i),multipleOf=(e,t)=>useValidatorMaker(t=>!(t.length%e),(t,i,o)=>`Invalid array length of '${"string"==typeof i?i:i.toString()}' at index ${t}, ${o?`the '${"string"==typeof o?o:o.toString()}'′s`:"its"} length must be multiple of ${e}.`,t),or=(e,t)=>useValidatorMaker(t=>e.some(e=>useTypeCheck(e,t)),(t,i,o)=>`Invalid parameter type of '${"string"==typeof i?i:i.toString()}' at index ${t}, ${o?`the '${"string"==typeof o?o:o.toString()}'`:"it"} should be '${e.map(e=>e.name).join("', '")}'.`,t),positive=(e=!0,t)=>useValidatorMaker(t=>e?t>=0:t>0,(e,t,i)=>`Invalid parameter of '${"string"==typeof t?t:t.toString()}' at index ${e}, ${i?`the '${"string"==typeof i?i:i.toString()}'`:"it"} should be positive.`,t);var i;const o=[0,0,10123e3,7123e3,6321e3,5522e3,3436e3,539e3,305e3,18e4,133e3,1e5,76500,58200,23500,9600,4e3,2e3,1700,1500,1e3];exports.CameraTool=i=class CameraTool{static getLevelMaxHeight(e){return e<2?o[2]:e>20?o[20]:o[e]}static getLevelByHeight(e){let t=2;for(let o=2;o<20;o++){const r=i.getLevelMaxHeight(o);if(r>e)t=o;else if(r<=e)return t}return t}static lockCameraInRectangle(t,i,o){if(!i)return;const r=t.positionCartographic;let{longitude:n,latitude:s,height:a}=r,l=!1;if(r.longitude<i.west&&(n=i.west,l=!0),r.longitude>i.east&&(n=i.east,l=!0),r.latitude<i.south&&(s=i.south,l=!0),r.latitude>i.north&&(s=i.north,l=!0),o&&a>o&&(a=o,l=!0),l){const{heading:i,pitch:r,roll:a}=t;t.flyTo({destination:e.Cartesian3.fromRadians(n,s,o),orientation:{heading:i,pitch:r,roll:a},duration:0})}}static pickPointOnEllipsoid(t,i,o){const r=i.pick(t);if(r&&r.primitive instanceof e.Cesium3DTileset)return i.pickPosition(t);if("EllipsoidTerrainProvider"===i.terrainProvider.constructor.name)return o.pickEllipsoid(t,i.globe.ellipsoid);const n=o.getPickRay(t);return n?i.globe.pick(n,i):void 0}static viewRectangleToLonLatRange(t){const i={lon:{min:0,max:0},lat:{min:0,max:0}};if(t){const o=e.Math.mod(t.west,e.Math.TWO_PI),r=e.Math.mod(t.east,e.Math.TWO_PI),n=t.width;let s,a;n>e.Math.THREE_PI_OVER_TWO?(s=0,a=e.Math.TWO_PI):r-o<n?(s=o,a=o+n):(s=o,a=r),i.lon={min:e.Math.toDegrees(s),max:e.Math.toDegrees(a)};const l=t.south,c=t.north,d=t.height,h=d>e.Math.PI/12?d/2:0;let p=e.Math.clampToLatitudeRange(l-h),u=e.Math.clampToLatitudeRange(c+h);p<-e.Math.PI_OVER_THREE&&(p=-e.Math.PI_OVER_TWO),u>e.Math.PI_OVER_THREE&&(u=e.Math.PI_OVER_TWO),i.lat={min:e.Math.toDegrees(p),max:e.Math.toDegrees(u)}}return i}},__decorate([validate,__param(0,positive()),__param(0,is(Number))],exports.CameraTool,"getLevelMaxHeight",null),__decorate([validate,__param(0,is(Number))],exports.CameraTool,"getLevelByHeight",null),__decorate([validate,__param(0,is(e.Camera)),__param(1,is(e.Rectangle))],exports.CameraTool,"lockCameraInRectangle",null),__decorate([validate,__param(0,is(e.Cartesian2)),__param(1,is(e.Scene)),__param(2,is(e.Camera))],exports.CameraTool,"pickPointOnEllipsoid",null),exports.CameraTool=i=__decorate([freeze],exports.CameraTool);var r=6371008.8,n={centimeters:637100880,centimetres:637100880,degrees:360/(2*Math.PI),feet:20902260.511392,inches:39.37*r,kilometers:6371.0088,kilometres:6371.0088,meters:r,metres:r,miles:3958.761333810546,millimeters:6371008800,millimetres:6371008800,nauticalmiles:r/1852,radians:1,yards:6967335.223679999};function feature(e,t,i={}){const o={type:"Feature"};return(0===i.id||i.id)&&(o.id=i.id),i.bbox&&(o.bbox=i.bbox),o.properties=t||{},o.geometry=e,o}function point(e,t,i={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!isNumber(e[0])||!isNumber(e[1]))throw new Error("coordinates must contain numbers");return feature({type:"Point",coordinates:e},t,i)}function polygon(e,t,i={}){for(const t of e){if(t.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(t[t.length-1].length!==t[0].length)throw new Error("First and last Position are not equivalent.");for(let e=0;e<t[t.length-1].length;e++)if(t[t.length-1][e]!==t[0][e])throw new Error("First and last Position are not equivalent.")}return feature({type:"Polygon",coordinates:e},t,i)}function featureCollection(e,t={}){const i={type:"FeatureCollection"};return t.id&&(i.id=t.id),t.bbox&&(i.bbox=t.bbox),i.features=e,i}function radiansToLength(e,t="kilometers"){const i=n[t];if(!i)throw new Error(t+" units is invalid");return e*i}function lengthToRadians(e,t="kilometers"){const i=n[t];if(!i)throw new Error(t+" units is invalid");return e/i}function radiansToDegrees(e){return 180*(e%(2*Math.PI))/Math.PI}function degreesToRadians(e){return e%360*Math.PI/180}function isNumber(e){return!isNaN(e)&&null!==e&&!Array.isArray(e)}function getCoord(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if("Feature"===e.type&&null!==e.geometry&&"Point"===e.geometry.type)return[...e.geometry.coordinates];if("Point"===e.type)return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}function bearing(e,t,i={}){if(!0===i.final)return function calculateFinalBearing(e,t){let i=bearing(t,e);return i=(i+180)%360,i}(e,t);const o=getCoord(e),r=getCoord(t),n=degreesToRadians(o[0]),s=degreesToRadians(r[0]),a=degreesToRadians(o[1]),l=degreesToRadians(r[1]),c=Math.sin(s-n)*Math.cos(l),d=Math.cos(a)*Math.sin(l)-Math.sin(a)*Math.cos(l)*Math.cos(s-n);return radiansToDegrees(Math.atan2(c,d))}function distance(e,t,i={}){var o=getCoord(e),r=getCoord(t),n=degreesToRadians(r[1]-o[1]),s=degreesToRadians(r[0]-o[0]),a=degreesToRadians(o[1]),l=degreesToRadians(r[1]),c=Math.pow(Math.sin(n/2),2)+Math.pow(Math.sin(s/2),2)*Math.cos(a)*Math.cos(l);return radiansToLength(2*Math.atan2(Math.sqrt(c),Math.sqrt(1-c)),i.units)}function calculateRhumbBearing(e,t){const i=degreesToRadians(e[1]),o=degreesToRadians(t[1]);let r=degreesToRadians(t[0]-e[0]);r>Math.PI&&(r-=2*Math.PI),r<-Math.PI&&(r+=2*Math.PI);const n=Math.log(Math.tan(o/2+Math.PI/4)/Math.tan(i/2+Math.PI/4));return(radiansToDegrees(Math.atan2(r,n))+360)%360}function coordEach(e,t,i){if(null!==e)for(var o,r,n,s,a,l,c,d,h=0,p=0,u=e.type,m="FeatureCollection"===u,g="Feature"===u,v=m?e.features.length:1,f=0;f<v;f++){a=(d=!!(c=m?e.features[f].geometry:g?e.geometry:e)&&"GeometryCollection"===c.type)?c.geometries.length:1;for(var C=0;C<a;C++){var y=0,A=0;if(null!==(s=d?c.geometries[C]:c)){l=s.coordinates;var E=s.type;switch(h=!i||"Polygon"!==E&&"MultiPolygon"!==E?0:1,E){case null:break;case"Point":if(!1===t(l,p,f,y,A))return!1;p++,y++;break;case"LineString":case"MultiPoint":for(o=0;o<l.length;o++){if(!1===t(l[o],p,f,y,A))return!1;p++,"MultiPoint"===E&&y++}"LineString"===E&&y++;break;case"Polygon":case"MultiLineString":for(o=0;o<l.length;o++){for(r=0;r<l[o].length-h;r++){if(!1===t(l[o][r],p,f,y,A))return!1;p++}"MultiLineString"===E&&y++,"Polygon"===E&&A++}"Polygon"===E&&y++;break;case"MultiPolygon":for(o=0;o<l.length;o++){for(A=0,r=0;r<l[o].length;r++){for(n=0;n<l[o][r].length-h;n++){if(!1===t(l[o][r][n],p,f,y,A))return!1;p++}A++}y++}break;case"GeometryCollection":for(o=0;o<s.geometries.length;o++)if(!1===coordEach(s.geometries[o],t,i))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function featureEach(e,t){if("Feature"===e.type)t(e,0);else if("FeatureCollection"===e.type)for(var i=0;i<e.features.length&&!1!==t(e.features[i],i);i++);}function geomEach(e,t){var i,o,r,n,s,a,l,c,d,h,p=0,u="FeatureCollection"===e.type,m="Feature"===e.type,g=u?e.features.length:1;for(i=0;i<g;i++){for(a=u?e.features[i].geometry:m?e.geometry:e,c=u?e.features[i].properties:m?e.properties:{},d=u?e.features[i].bbox:m?e.bbox:void 0,h=u?e.features[i].id:m?e.id:void 0,s=(l=!!a&&"GeometryCollection"===a.type)?a.geometries.length:1,r=0;r<s;r++)if(null!==(n=l?a.geometries[r]:a))switch(n.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===t(n,p,c,d,h))return!1;break;case"GeometryCollection":for(o=0;o<n.geometries.length;o++)if(!1===t(n.geometries[o],p,c,d,h))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===t(null,p,c,d,h))return!1;p++}}function area(e){return function geomReduce(e,t,i){var o=i;return geomEach(e,function(e,r,n,s,a){o=0===r&&void 0===i?e:t(o,e,r,n,s,a)}),o}(e,(e,t)=>e+function calculateArea(e){let t,i=0;switch(e.type){case"Polygon":return polygonArea(e.coordinates);case"MultiPolygon":for(t=0;t<e.coordinates.length;t++)i+=polygonArea(e.coordinates[t]);return i;case"Point":case"MultiPoint":case"LineString":case"MultiLineString":return 0}return 0}(t),0)}function polygonArea(e){let t=0;if(e&&e.length>0){t+=Math.abs(ringArea(e[0]));for(let i=1;i<e.length;i++)t-=Math.abs(ringArea(e[i]))}return t}var s=20294876564838.72,a=Math.PI/180;function ringArea(e){const t=e.length-1;if(t<=2)return 0;let i=0,o=0;for(;o<t;){const r=e[o],n=e[o+1===t?0:o+1],s=e[o+2>=t?(o+2)%t:o+2],l=r[0]*a,c=n[1]*a;i+=(s[0]*a-l)*Math.sin(c),o++}return i*s}const l=11102230246251565e-32,c=134217729,d=(3+8*l)*l;function sum(e,t,i,o,r){let n,s,a,l,c=t[0],d=o[0],h=0,p=0;d>c==d>-c?(n=c,c=t[++h]):(n=d,d=o[++p]);let u=0;if(h<e&&p<i)for(d>c==d>-c?(s=c+n,a=n-(s-c),c=t[++h]):(s=d+n,a=n-(s-d),d=o[++p]),n=s,0!==a&&(r[u++]=a);h<e&&p<i;)d>c==d>-c?(s=n+c,l=s-n,a=n-(s-l)+(c-l),c=t[++h]):(s=n+d,l=s-n,a=n-(s-l)+(d-l),d=o[++p]),n=s,0!==a&&(r[u++]=a);for(;h<e;)s=n+c,l=s-n,a=n-(s-l)+(c-l),c=t[++h],n=s,0!==a&&(r[u++]=a);for(;p<i;)s=n+d,l=s-n,a=n-(s-l)+(d-l),d=o[++p],n=s,0!==a&&(r[u++]=a);return 0===n&&0!==u||(r[u++]=n),u}function vec(e){return new Float64Array(e)}const h=vec(4),p=vec(8),u=vec(12),m=vec(16),g=vec(4);function orient2d(e,t,i,o,r,n){const s=(t-n)*(i-r),a=(e-r)*(o-n),l=s-a,v=Math.abs(s+a);return Math.abs(l)>=33306690738754716e-32*v?l:-function orient2dadapt(e,t,i,o,r,n,s){let a,l,v,f,C,y,A,E,x,w,P,S,I,b,R,_,T,D;const F=e-r,M=i-r,L=t-n,G=o-n;b=F*G,y=c*F,A=y-(y-F),E=F-A,y=c*G,x=y-(y-G),w=G-x,R=E*w-(b-A*x-E*x-A*w),_=L*M,y=c*L,A=y-(y-L),E=L-A,y=c*M,x=y-(y-M),w=M-x,T=E*w-(_-A*x-E*x-A*w),P=R-T,C=R-P,h[0]=R-(P+C)+(C-T),S=b+P,C=S-b,I=b-(S-C)+(P-C),P=I-_,C=I-P,h[1]=I-(P+C)+(C-_),D=S+P,C=D-S,h[2]=S-(D-C)+(P-C),h[3]=D;let B=function estimate(e,t){let i=t[0];for(let o=1;o<e;o++)i+=t[o];return i}(4,h),O=22204460492503146e-32*s;if(B>=O||-B>=O)return B;if(C=e-F,a=e-(F+C)+(C-r),C=i-M,v=i-(M+C)+(C-r),C=t-L,l=t-(L+C)+(C-n),C=o-G,f=o-(G+C)+(C-n),0===a&&0===l&&0===v&&0===f)return B;if(O=11093356479670487e-47*s+d*Math.abs(B),B+=F*f+G*a-(L*v+M*l),B>=O||-B>=O)return B;b=a*G,y=c*a,A=y-(y-a),E=a-A,y=c*G,x=y-(y-G),w=G-x,R=E*w-(b-A*x-E*x-A*w),_=l*M,y=c*l,A=y-(y-l),E=l-A,y=c*M,x=y-(y-M),w=M-x,T=E*w-(_-A*x-E*x-A*w),P=R-T,C=R-P,g[0]=R-(P+C)+(C-T),S=b+P,C=S-b,I=b-(S-C)+(P-C),P=I-_,C=I-P,g[1]=I-(P+C)+(C-_),D=S+P,C=D-S,g[2]=S-(D-C)+(P-C),g[3]=D;const k=sum(4,h,4,g,p);b=F*f,y=c*F,A=y-(y-F),E=F-A,y=c*f,x=y-(y-f),w=f-x,R=E*w-(b-A*x-E*x-A*w),_=L*v,y=c*L,A=y-(y-L),E=L-A,y=c*v,x=y-(y-v),w=v-x,T=E*w-(_-A*x-E*x-A*w),P=R-T,C=R-P,g[0]=R-(P+C)+(C-T),S=b+P,C=S-b,I=b-(S-C)+(P-C),P=I-_,C=I-P,g[1]=I-(P+C)+(C-_),D=S+P,C=D-S,g[2]=S-(D-C)+(P-C),g[3]=D;const N=sum(k,p,4,g,u);b=a*f,y=c*a,A=y-(y-a),E=a-A,y=c*f,x=y-(y-f),w=f-x,R=E*w-(b-A*x-E*x-A*w),_=l*v,y=c*l,A=y-(y-l),E=l-A,y=c*v,x=y-(y-v),w=v-x,T=E*w-(_-A*x-E*x-A*w),P=R-T,C=R-P,g[0]=R-(P+C)+(C-T),S=b+P,C=S-b,I=b-(S-C)+(P-C),P=I-_,C=I-P,g[1]=I-(P+C)+(C-_),D=S+P,C=D-S,g[2]=S-(D-C)+(P-C),g[3]=D;const H=sum(N,u,4,g,m);return m[H-1]}(e,t,i,o,r,n,v)}function pointInPolygon(e,t){var i,o,r,n,s,a,l,c,d,h=0,p=e[0],u=e[1],m=t.length;for(i=0;i<m;i++){o=0;var g=t[i],v=g.length-1;if((c=g[0])[0]!==g[v][0]&&c[1]!==g[v][1])throw new Error("First and last coordinates in a ring must be the same");for(n=c[0]-p,s=c[1]-u;o<v;o++){if(a=(d=g[o+1])[0]-p,l=d[1]-u,0===s&&0===l){if(a<=0&&n>=0||n<=0&&a>=0)return 0}else if(l>=0&&s<=0||l<=0&&s>=0){if(0===(r=orient2d(n,a,s,l,0,0)))return 0;(r>0&&l>0&&s<=0||r<0&&l<=0&&s>0)&&h++}c=d,s=l,n=a}}return h%2!=0}function booleanPointInPolygon(e,t,i={}){if(!e)throw new Error("point is required");if(!t)throw new Error("polygon is required");const o=getCoord(e),r=function getGeom(e){return"Feature"===e.type?e.geometry:e}(t),n=r.type,s=t.bbox;let a=r.coordinates;if(s&&!1===function inBBox(e,t){return t[0]<=e[0]&&t[1]<=e[1]&&t[2]>=e[0]&&t[3]>=e[1]}(o,s))return!1;"Polygon"===n&&(a=[a]);let l=!1;for(var c=0;c<a.length;++c){const e=pointInPolygon(o,a[c]);if(0===e)return!i.ignoreBoundary;e&&(l=!0)}return l}function center(e,t={}){const i=function bbox(e,t={}){if(null!=e.bbox&&!0!==t.recompute)return e.bbox;const i=[1/0,1/0,-1/0,-1/0];return coordEach(e,e=>{i[0]>e[0]&&(i[0]=e[0]),i[1]>e[1]&&(i[1]=e[1]),i[2]<e[0]&&(i[2]=e[0]),i[3]<e[1]&&(i[3]=e[1])}),i}(e);return point([(i[0]+i[2])/2,(i[1]+i[3])/2],t.properties,t)}function clone$1(e){if(!e)throw new Error("geojson is required");switch(e.type){case"Feature":return cloneFeature(e);case"FeatureCollection":return function cloneFeatureCollection(e){const t={type:"FeatureCollection"};return Object.keys(e).forEach(i=>{switch(i){case"type":case"features":return;default:t[i]=e[i]}}),t.features=e.features.map(e=>cloneFeature(e)),t}(e);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return cloneGeometry(e);default:throw new Error("unknown GeoJSON type")}}function cloneFeature(e){const t={type:"Feature"};return Object.keys(e).forEach(i=>{switch(i){case"type":case"properties":case"geometry":return;default:t[i]=e[i]}}),t.properties=cloneProperties(e.properties),null==e.geometry?t.geometry=null:t.geometry=cloneGeometry(e.geometry),t}function cloneProperties(e){const t={};return e?(Object.keys(e).forEach(i=>{const o=e[i];"object"==typeof o?null===o?t[i]=null:Array.isArray(o)?t[i]=o.map(e=>e):t[i]=cloneProperties(o):t[i]=o}),t):t}function cloneGeometry(e){const t={type:e.type};return e.bbox&&(t.bbox=e.bbox),"GeometryCollection"===e.type?(t.geometries=e.geometries.map(e=>cloneGeometry(e)),t):(t.coordinates=deepSlice(e.coordinates),t)}function deepSlice(e){const t=e;return"object"!=typeof t[0]?t.slice():t.map(e=>deepSlice(e))}const v=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class KDBush{static from(e){if(!(e instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");const[t,i]=new Uint8Array(e,0,2);if(219!==t)throw new Error("Data does not appear to be in a KDBush format.");const o=i>>4;if(1!==o)throw new Error(`Got v${o} data when expected v1.`);const r=v[15&i];if(!r)throw new Error("Unrecognized array type.");const[n]=new Uint16Array(e,2,1),[s]=new Uint32Array(e,4,1);return new KDBush(s,n,r,e)}constructor(e,t=64,i=Float64Array,o){if(isNaN(e)||e<0)throw new Error(`Unpexpected numItems value: ${e}.`);this.numItems=+e,this.nodeSize=Math.min(Math.max(+t,2),65535),this.ArrayType=i,this.IndexArrayType=e<65536?Uint16Array:Uint32Array;const r=v.indexOf(this.ArrayType),n=2*e*this.ArrayType.BYTES_PER_ELEMENT,s=e*this.IndexArrayType.BYTES_PER_ELEMENT,a=(8-s%8)%8;if(r<0)throw new Error(`Unexpected typed array class: ${i}.`);o&&o instanceof ArrayBuffer?(this.data=o,this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+s+a,2*e),this._pos=2*e,this._finished=!0):(this.data=new ArrayBuffer(8+n+s+a),this.ids=new this.IndexArrayType(this.data,8,e),this.coords=new this.ArrayType(this.data,8+s+a,2*e),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+r]),new Uint16Array(this.data,2,1)[0]=t,new Uint32Array(this.data,4,1)[0]=e)}add(e,t){const i=this._pos>>1;return this.ids[i]=i,this.coords[this._pos++]=e,this.coords[this._pos++]=t,i}finish(){const e=this._pos>>1;if(e!==this.numItems)throw new Error(`Added ${e} items when expected ${this.numItems}.`);return sort(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(e,t,i,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:r,coords:n,nodeSize:s}=this,a=[0,r.length-1,0],l=[];for(;a.length;){const c=a.pop()||0,d=a.pop()||0,h=a.pop()||0;if(d-h<=s){for(let s=h;s<=d;s++){const a=n[2*s],c=n[2*s+1];a>=e&&a<=i&&c>=t&&c<=o&&l.push(r[s])}continue}const p=h+d>>1,u=n[2*p],m=n[2*p+1];u>=e&&u<=i&&m>=t&&m<=o&&l.push(r[p]),(0===c?e<=u:t<=m)&&(a.push(h),a.push(p-1),a.push(1-c)),(0===c?i>=u:o>=m)&&(a.push(p+1),a.push(d),a.push(1-c))}return l}within(e,t,i){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:o,coords:r,nodeSize:n}=this,s=[0,o.length-1,0],a=[],l=i*i;for(;s.length;){const c=s.pop()||0,d=s.pop()||0,h=s.pop()||0;if(d-h<=n){for(let i=h;i<=d;i++)sqDist(r[2*i],r[2*i+1],e,t)<=l&&a.push(o[i]);continue}const p=h+d>>1,u=r[2*p],m=r[2*p+1];sqDist(u,m,e,t)<=l&&a.push(o[p]),(0===c?e-i<=u:t-i<=m)&&(s.push(h),s.push(p-1),s.push(1-c)),(0===c?e+i>=u:t+i>=m)&&(s.push(p+1),s.push(d),s.push(1-c))}return a}}function sort(e,t,i,o,r,n){if(r-o<=i)return;const s=o+r>>1;select(e,t,s,o,r,n),sort(e,t,i,o,s-1,1-n),sort(e,t,i,s+1,r,1-n)}function select(e,t,i,o,r,n){for(;r>o;){if(r-o>600){const s=r-o+1,a=i-o+1,l=Math.log(s),c=.5*Math.exp(2*l/3),d=.5*Math.sqrt(l*c*(s-c)/s)*(a-s/2<0?-1:1);select(e,t,i,Math.max(o,Math.floor(i-a*c/s+d)),Math.min(r,Math.floor(i+(s-a)*c/s+d)),n)}const s=t[2*i+n];let a=o,l=r;for(swapItem(e,t,o,i),t[2*r+n]>s&&swapItem(e,t,o,r);a<l;){for(swapItem(e,t,a,l),a++,l--;t[2*a+n]<s;)a++;for(;t[2*l+n]>s;)l--}t[2*o+n]===s?swapItem(e,t,o,l):(l++,swapItem(e,t,l,r)),l<=i&&(o=l+1),i<=l&&(r=l-1)}}function swapItem(e,t,i,o){swap(e,i,o),swap(t,2*i,2*o),swap(t,2*i+1,2*o+1)}function swap(e,t,i){const o=e[t];e[t]=e[i],e[i]=o}function sqDist(e,t,i,o){const r=e-i,n=t-o;return r*r+n*n}var f=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,C=Math.ceil,y=Math.floor,A="[BigNumber Error] ",E=A+"Number primitive has more than 15 significant digits: ",x=1e14,w=14,P=9007199254740991,S=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],I=1e7,b=1e9;function bitFloor(e){var t=0|e;return e>0||e===t?t:t-1}function coeffToString(e){for(var t,i,o=1,r=e.length,n=e[0]+"";o<r;){for(t=e[o++]+"",i=w-t.length;i--;t="0"+t);n+=t}for(r=n.length;48===n.charCodeAt(--r););return n.slice(0,r+1||1)}function compare(e,t){var i,o,r=e.c,n=t.c,s=e.s,a=t.s,l=e.e,c=t.e;if(!s||!a)return null;if(i=r&&!r[0],o=n&&!n[0],i||o)return i?o?0:-a:s;if(s!=a)return s;if(i=s<0,o=l==c,!r||!n)return o?0:!r^i?1:-1;if(!o)return l>c^i?1:-1;for(a=(l=r.length)<(c=n.length)?l:c,s=0;s<a;s++)if(r[s]!=n[s])return r[s]>n[s]^i?1:-1;return l==c?0:l>c^i?1:-1}function intCheck(e,t,i,o){if(e<t||e>i||e!==y(e))throw Error(A+(o||"Argument")+("number"==typeof e?e<t||e>i?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function isOdd(e){var t=e.c.length-1;return bitFloor(e.e/w)==t&&e.c[t]%2!=0}function toExponential(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function toFixedPoint(e,t,i){var o,r;if(t<0){for(r=i+".";++t;r+=i);e=r+e}else if(++t>(o=e.length)){for(r=i,t-=o;--t;r+=i);e+=r}else t<o&&(e=e.slice(0,t)+"."+e.slice(t));return e}var R=function clone(e){var t,i,o,r,n,s,a,l,c,d,h=BigNumber.prototype={constructor:BigNumber,toString:null,valueOf:null},p=new BigNumber(1),u=20,m=4,g=-7,v=21,R=-1e7,_=1e7,T=!1,D=1,F=0,M={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:" ",suffix:""},L="0123456789abcdefghijklmnopqrstuvwxyz",G=!0;function BigNumber(e,t){var r,n,s,a,l,c,d,h,p=this;if(!(p instanceof BigNumber))return new BigNumber(e,t);if(null==t){if(e&&!0===e._isBigNumber)return p.s=e.s,void(!e.c||e.e>_?p.c=p.e=null:e.e<R?p.c=[p.e=0]:(p.e=e.e,p.c=e.c.slice()));if((c="number"==typeof e)&&0*e==0){if(p.s=1/e<0?(e=-e,-1):1,e===~~e){for(a=0,l=e;l>=10;l/=10,a++);return void(a>_?p.c=p.e=null:(p.e=a,p.c=[e]))}h=String(e)}else{if(!f.test(h=String(e)))return o(p,h,c);p.s=45==h.charCodeAt(0)?(h=h.slice(1),-1):1}(a=h.indexOf("."))>-1&&(h=h.replace(".","")),(l=h.search(/e/i))>0?(a<0&&(a=l),a+=+h.slice(l+1),h=h.substring(0,l)):a<0&&(a=h.length)}else{if(intCheck(t,2,L.length,"Base"),10==t&&G)return round(p=new BigNumber(e),u+p.e+1,m);if(h=String(e),c="number"==typeof e){if(0*e!=0)return o(p,h,c,t);if(p.s=1/e<0?(h=h.slice(1),-1):1,BigNumber.DEBUG&&h.replace(/^0\.0*|\./,"").length>15)throw Error(E+e)}else p.s=45===h.charCodeAt(0)?(h=h.slice(1),-1):1;for(r=L.slice(0,t),a=l=0,d=h.length;l<d;l++)if(r.indexOf(n=h.charAt(l))<0){if("."==n){if(l>a){a=d;continue}}else if(!s&&(h==h.toUpperCase()&&(h=h.toLowerCase())||h==h.toLowerCase()&&(h=h.toUpperCase()))){s=!0,l=-1,a=0;continue}return o(p,String(e),c,t)}c=!1,(a=(h=i(h,t,10,p.s)).indexOf("."))>-1?h=h.replace(".",""):a=h.length}for(l=0;48===h.charCodeAt(l);l++);for(d=h.length;48===h.charCodeAt(--d););if(h=h.slice(l,++d)){if(d-=l,c&&BigNumber.DEBUG&&d>15&&(e>P||e!==y(e)))throw Error(E+p.s*e);if((a=a-l-1)>_)p.c=p.e=null;else if(a<R)p.c=[p.e=0];else{if(p.e=a,p.c=[],l=(a+1)%w,a<0&&(l+=w),l<d){for(l&&p.c.push(+h.slice(0,l)),d-=w;l<d;)p.c.push(+h.slice(l,l+=w));l=w-(h=h.slice(l)).length}else l-=d;for(;l--;h+="0");p.c.push(+h)}}else p.c=[p.e=0]}function format(e,t,i,o){var r,n,s,a,l;if(null==i?i=m:intCheck(i,0,8),!e.c)return e.toString();if(r=e.c[0],s=e.e,null==t)l=coeffToString(e.c),l=1==o||2==o&&(s<=g||s>=v)?toExponential(l,s):toFixedPoint(l,s,"0");else if(n=(e=round(new BigNumber(e),t,i)).e,a=(l=coeffToString(e.c)).length,1==o||2==o&&(t<=n||n<=g)){for(;a<t;l+="0",a++);l=toExponential(l,n)}else if(t-=s+(2===o&&n>s),l=toFixedPoint(l,n,"0"),n+1>a){if(--t>0)for(l+=".";t--;l+="0");}else if((t+=n-a)>0)for(n+1==a&&(l+=".");t--;l+="0");return e.s<0&&r?"-"+l:l}function maxOrMin(e,t){for(var i,o,r=1,n=new BigNumber(e[0]);r<e.length;r++)(!(o=new BigNumber(e[r])).s||(i=compare(n,o))===t||0===i&&n.s===t)&&(n=o);return n}function normalise(e,t,i){for(var o=1,r=t.length;!t[--r];t.pop());for(r=t[0];r>=10;r/=10,o++);return(i=o+i*w-1)>_?e.c=e.e=null:i<R?e.c=[e.e=0]:(e.e=i,e.c=t),e}function round(e,t,i,o){var r,n,s,a,l,c,d,h=e.c,p=S;if(h){e:{for(r=1,a=h[0];a>=10;a/=10,r++);if((n=t-r)<0)n+=w,s=t,l=h[c=0],d=y(l/p[r-s-1]%10);else if((c=C((n+1)/w))>=h.length){if(!o)break e;for(;h.length<=c;h.push(0));l=d=0,r=1,s=(n%=w)-w+1}else{for(l=a=h[c],r=1;a>=10;a/=10,r++);d=(s=(n%=w)-w+r)<0?0:y(l/p[r-s-1]%10)}if(o=o||t<0||null!=h[c+1]||(s<0?l:l%p[r-s-1]),o=i<4?(d||o)&&(0==i||i==(e.s<0?3:2)):d>5||5==d&&(4==i||o||6==i&&(n>0?s>0?l/p[r-s]:0:h[c-1])%10&1||i==(e.s<0?8:7)),t<1||!h[0])return h.length=0,o?(t-=e.e+1,h[0]=p[(w-t%w)%w],e.e=-t||0):h[0]=e.e=0,e;if(0==n?(h.length=c,a=1,c--):(h.length=c+1,a=p[w-n],h[c]=s>0?y(l/p[r-s]%p[s])*a:0),o)for(;;){if(0==c){for(n=1,s=h[0];s>=10;s/=10,n++);for(s=h[0]+=a,a=1;s>=10;s/=10,a++);n!=a&&(e.e++,h[0]==x&&(h[0]=1));break}if(h[c]+=a,h[c]!=x)break;h[c--]=0,a=1}for(n=h.length;0===h[--n];h.pop());}e.e>_?e.c=e.e=null:e.e<R&&(e.c=[e.e=0])}return e}function valueOf(e){var t,i=e.e;return null===i?e.toString():(t=coeffToString(e.c),t=i<=g||i>=v?toExponential(t,i):toFixedPoint(t,i,"0"),e.s<0?"-"+t:t)}return BigNumber.clone=clone,BigNumber.ROUND_UP=0,BigNumber.ROUND_DOWN=1,BigNumber.ROUND_CEIL=2,BigNumber.ROUND_FLOOR=3,BigNumber.ROUND_HALF_UP=4,BigNumber.ROUND_HALF_DOWN=5,BigNumber.ROUND_HALF_EVEN=6,BigNumber.ROUND_HALF_CEIL=7,BigNumber.ROUND_HALF_FLOOR=8,BigNumber.EUCLID=9,BigNumber.config=BigNumber.set=function(e){var t,i;if(null!=e){if("object"!=typeof e)throw Error(A+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(intCheck(i=e[t],0,b,t),u=i),e.hasOwnProperty(t="ROUNDING_MODE")&&(intCheck(i=e[t],0,8,t),m=i),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((i=e[t])&&i.pop?(intCheck(i[0],-b,0,t),intCheck(i[1],0,b,t),g=i[0],v=i[1]):(intCheck(i,-b,b,t),g=-(v=i<0?-i:i))),e.hasOwnProperty(t="RANGE"))if((i=e[t])&&i.pop)intCheck(i[0],-b,-1,t),intCheck(i[1],1,b,t),R=i[0],_=i[1];else{if(intCheck(i,-b,b,t),!i)throw Error(A+t+" cannot be zero: "+i);R=-(_=i<0?-i:i)}if(e.hasOwnProperty(t="CRYPTO")){if((i=e[t])!==!!i)throw Error(A+t+" not true or false: "+i);if(i){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw T=!i,Error(A+"crypto unavailable");T=i}else T=i}if(e.hasOwnProperty(t="MODULO_MODE")&&(intCheck(i=e[t],0,9,t),D=i),e.hasOwnProperty(t="POW_PRECISION")&&(intCheck(i=e[t],0,b,t),F=i),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(i=e[t]))throw Error(A+t+" not an object: "+i);M=i}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(i=e[t])||/^.?$|[+\-.\s]|(.).*\1/.test(i))throw Error(A+t+" invalid: "+i);G="0123456789"==i.slice(0,10),L=i}}return{DECIMAL_PLACES:u,ROUNDING_MODE:m,EXPONENTIAL_AT:[g,v],RANGE:[R,_],CRYPTO:T,MODULO_MODE:D,POW_PRECISION:F,FORMAT:M,ALPHABET:L}},BigNumber.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!BigNumber.DEBUG)return!0;var t,i,o=e.c,r=e.e,n=e.s;e:if("[object Array]"=={}.toString.call(o)){if((1===n||-1===n)&&r>=-b&&r<=b&&r===y(r)){if(0===o[0]){if(0===r&&1===o.length)return!0;break e}if((t=(r+1)%w)<1&&(t+=w),String(o[0]).length==t){for(t=0;t<o.length;t++)if((i=o[t])<0||i>=x||i!==y(i))break e;if(0!==i)return!0}}}else if(null===o&&null===r&&(null===n||1===n||-1===n))return!0;throw Error(A+"Invalid BigNumber: "+e)},BigNumber.maximum=BigNumber.max=function(){return maxOrMin(arguments,-1)},BigNumber.minimum=BigNumber.min=function(){return maxOrMin(arguments,1)},BigNumber.random=(r=9007199254740992,n=Math.random()*r&2097151?function(){return y(Math.random()*r)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,i,o,r,s,a=0,l=[],c=new BigNumber(p);if(null==e?e=u:intCheck(e,0,b),r=C(e/w),T)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(r*=2));a<r;)(s=131072*t[a]+(t[a+1]>>>11))>=9e15?(i=crypto.getRandomValues(new Uint32Array(2)),t[a]=i[0],t[a+1]=i[1]):(l.push(s%1e14),a+=2);a=r/2}else{if(!crypto.randomBytes)throw T=!1,Error(A+"crypto unavailable");for(t=crypto.randomBytes(r*=7);a<r;)(s=281474976710656*(31&t[a])+1099511627776*t[a+1]+4294967296*t[a+2]+16777216*t[a+3]+(t[a+4]<<16)+(t[a+5]<<8)+t[a+6])>=9e15?crypto.randomBytes(7).copy(t,a):(l.push(s%1e14),a+=7);a=r/7}if(!T)for(;a<r;)(s=n())<9e15&&(l[a++]=s%1e14);for(r=l[--a],e%=w,r&&e&&(s=S[w-e],l[a]=y(r/s)*s);0===l[a];l.pop(),a--);if(a<0)l=[o=0];else{for(o=-1;0===l[0];l.splice(0,1),o-=w);for(a=1,s=l[0];s>=10;s/=10,a++);a<w&&(o-=w-a)}return c.e=o,c.c=l,c}),BigNumber.sum=function(){for(var e=1,t=arguments,i=new BigNumber(t[0]);e<t.length;)i=i.plus(t[e++]);return i},i=function(){var e="0123456789";function toBaseOut(e,t,i,o){for(var r,n,s=[0],a=0,l=e.length;a<l;){for(n=s.length;n--;s[n]*=t);for(s[0]+=o.indexOf(e.charAt(a++)),r=0;r<s.length;r++)s[r]>i-1&&(null==s[r+1]&&(s[r+1]=0),s[r+1]+=s[r]/i|0,s[r]%=i)}return s.reverse()}return function(i,o,r,n,s){var a,l,c,d,h,p,g,v,f=i.indexOf("."),C=u,y=m;for(f>=0&&(d=F,F=0,i=i.replace(".",""),p=(v=new BigNumber(o)).pow(i.length-f),F=d,v.c=toBaseOut(toFixedPoint(coeffToString(p.c),p.e,"0"),10,r,e),v.e=v.c.length),c=d=(g=toBaseOut(i,o,r,s?(a=L,e):(a=e,L))).length;0==g[--d];g.pop());if(!g[0])return a.charAt(0);if(f<0?--c:(p.c=g,p.e=c,p.s=n,g=(p=t(p,v,C,y,r)).c,h=p.r,c=p.e),f=g[l=c+C+1],d=r/2,h=h||l<0||null!=g[l+1],h=y<4?(null!=f||h)&&(0==y||y==(p.s<0?3:2)):f>d||f==d&&(4==y||h||6==y&&1&g[l-1]||y==(p.s<0?8:7)),l<1||!g[0])i=h?toFixedPoint(a.charAt(1),-C,a.charAt(0)):a.charAt(0);else{if(g.length=l,h)for(--r;++g[--l]>r;)g[l]=0,l||(++c,g=[1].concat(g));for(d=g.length;!g[--d];);for(f=0,i="";f<=d;i+=a.charAt(g[f++]));i=toFixedPoint(i,c,a.charAt(0))}return i}}(),t=function(){function multiply(e,t,i){var o,r,n,s,a=0,l=e.length,c=t%I,d=t/I|0;for(e=e.slice();l--;)a=((r=c*(n=e[l]%I)+(o=d*n+(s=e[l]/I|0)*c)%I*I+a)/i|0)+(o/I|0)+d*s,e[l]=r%i;return a&&(e=[a].concat(e)),e}function compare(e,t,i,o){var r,n;if(i!=o)n=i>o?1:-1;else for(r=n=0;r<i;r++)if(e[r]!=t[r]){n=e[r]>t[r]?1:-1;break}return n}function subtract(e,t,i,o){for(var r=0;i--;)e[i]-=r,r=e[i]<t[i]?1:0,e[i]=r*o+e[i]-t[i];for(;!e[0]&&e.length>1;e.splice(0,1));}return function(e,t,i,o,r){var n,s,a,l,c,d,h,p,u,m,g,v,f,C,A,E,P,S=e.s==t.s?1:-1,I=e.c,b=t.c;if(!(I&&I[0]&&b&&b[0]))return new BigNumber(e.s&&t.s&&(I?!b||I[0]!=b[0]:b)?I&&0==I[0]||!b?0*S:S/0:NaN);for(u=(p=new BigNumber(S)).c=[],S=i+(s=e.e-t.e)+1,r||(r=x,s=bitFloor(e.e/w)-bitFloor(t.e/w),S=S/w|0),a=0;b[a]==(I[a]||0);a++);if(b[a]>(I[a]||0)&&s--,S<0)u.push(1),l=!0;else{for(C=I.length,E=b.length,a=0,S+=2,(c=y(r/(b[0]+1)))>1&&(b=multiply(b,c,r),I=multiply(I,c,r),E=b.length,C=I.length),f=E,g=(m=I.slice(0,E)).length;g<E;m[g++]=0);P=b.slice(),P=[0].concat(P),A=b[0],b[1]>=r/2&&A++;do{if(c=0,(n=compare(b,m,E,g))<0){if(v=m[0],E!=g&&(v=v*r+(m[1]||0)),(c=y(v/A))>1)for(c>=r&&(c=r-1),h=(d=multiply(b,c,r)).length,g=m.length;1==compare(d,m,h,g);)c--,subtract(d,E<h?P:b,h,r),h=d.length,n=1;else 0==c&&(n=c=1),h=(d=b.slice()).length;if(h<g&&(d=[0].concat(d)),subtract(m,d,g,r),g=m.length,-1==n)for(;compare(b,m,E,g)<1;)c++,subtract(m,E<g?P:b,g,r),g=m.length}else 0===n&&(c++,m=[0]);u[a++]=c,m[0]?m[g++]=I[f]||0:(m=[I[f]],g=1)}while((f++<C||null!=m[0])&&S--);l=null!=m[0],u[0]||u.splice(0,1)}if(r==x){for(a=1,S=u[0];S>=10;S/=10,a++);round(p,i+(p.e=a+s*w-1)+1,o,l)}else p.e=s,p.r=+l;return p}}(),s=/^(-?)0([xbo])(?=\w[\w.]*$)/i,a=/^([^.]+)\.$/,l=/^\.([^.]+)$/,c=/^-?(Infinity|NaN)$/,d=/^\s*\+(?=[\w.])|^\s+|\s+$/g,o=function(e,t,i,o){var r,n=i?t:t.replace(d,"");if(c.test(n))e.s=isNaN(n)?null:n<0?-1:1;else{if(!i&&(n=n.replace(s,function(e,t,i){return r="x"==(i=i.toLowerCase())?16:"b"==i?2:8,o&&o!=r?e:t}),o&&(r=o,n=n.replace(a,"$1").replace(l,"0.$1")),t!=n))return new BigNumber(n,r);if(BigNumber.DEBUG)throw Error(A+"Not a"+(o?" base "+o:"")+" number: "+t);e.s=null}e.c=e.e=null},h.absoluteValue=h.abs=function(){var e=new BigNumber(this);return e.s<0&&(e.s=1),e},h.comparedTo=function(e,t){return compare(this,new BigNumber(e,t))},h.decimalPlaces=h.dp=function(e,t){var i,o,r,n=this;if(null!=e)return intCheck(e,0,b),null==t?t=m:intCheck(t,0,8),round(new BigNumber(n),e+n.e+1,t);if(!(i=n.c))return null;if(o=((r=i.length-1)-bitFloor(this.e/w))*w,r=i[r])for(;r%10==0;r/=10,o--);return o<0&&(o=0),o},h.dividedBy=h.div=function(e,i){return t(this,new BigNumber(e,i),u,m)},h.dividedToIntegerBy=h.idiv=function(e,i){return t(this,new BigNumber(e,i),0,1)},h.exponentiatedBy=h.pow=function(e,t){var i,o,r,n,s,a,l,c,d=this;if((e=new BigNumber(e)).c&&!e.isInteger())throw Error(A+"Exponent not an integer: "+valueOf(e));if(null!=t&&(t=new BigNumber(t)),s=e.e>14,!d.c||!d.c[0]||1==d.c[0]&&!d.e&&1==d.c.length||!e.c||!e.c[0])return c=new BigNumber(Math.pow(+valueOf(d),s?e.s*(2-isOdd(e)):+valueOf(e))),t?c.mod(t):c;if(a=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new BigNumber(NaN);(o=!a&&d.isInteger()&&t.isInteger())&&(d=d.mod(t))}else{if(e.e>9&&(d.e>0||d.e<-1||(0==d.e?d.c[0]>1||s&&d.c[1]>=24e7:d.c[0]<8e13||s&&d.c[0]<=9999975e7)))return n=d.s<0&&isOdd(e)?-0:0,d.e>-1&&(n=1/n),new BigNumber(a?1/n:n);F&&(n=C(F/w+2))}for(s?(i=new BigNumber(.5),a&&(e.s=1),l=isOdd(e)):l=(r=Math.abs(+valueOf(e)))%2,c=new BigNumber(p);;){if(l){if(!(c=c.times(d)).c)break;n?c.c.length>n&&(c.c.length=n):o&&(c=c.mod(t))}if(r){if(0===(r=y(r/2)))break;l=r%2}else if(round(e=e.times(i),e.e+1,1),e.e>14)l=isOdd(e);else{if(0===(r=+valueOf(e)))break;l=r%2}d=d.times(d),n?d.c&&d.c.length>n&&(d.c.length=n):o&&(d=d.mod(t))}return o?c:(a&&(c=p.div(c)),t?c.mod(t):n?round(c,F,m,void 0):c)},h.integerValue=function(e){var t=new BigNumber(this);return null==e?e=m:intCheck(e,0,8),round(t,t.e+1,e)},h.isEqualTo=h.eq=function(e,t){return 0===compare(this,new BigNumber(e,t))},h.isFinite=function(){return!!this.c},h.isGreaterThan=h.gt=function(e,t){return compare(this,new BigNumber(e,t))>0},h.isGreaterThanOrEqualTo=h.gte=function(e,t){return 1===(t=compare(this,new BigNumber(e,t)))||0===t},h.isInteger=function(){return!!this.c&&bitFloor(this.e/w)>this.c.length-2},h.isLessThan=h.lt=function(e,t){return compare(this,new BigNumber(e,t))<0},h.isLessThanOrEqualTo=h.lte=function(e,t){return-1===(t=compare(this,new BigNumber(e,t)))||0===t},h.isNaN=function(){return!this.s},h.isNegative=function(){return this.s<0},h.isPositive=function(){return this.s>0},h.isZero=function(){return!!this.c&&0==this.c[0]},h.minus=function(e,t){var i,o,r,n,s=this,a=s.s;if(t=(e=new BigNumber(e,t)).s,!a||!t)return new BigNumber(NaN);if(a!=t)return e.s=-t,s.plus(e);var l=s.e/w,c=e.e/w,d=s.c,h=e.c;if(!l||!c){if(!d||!h)return d?(e.s=-t,e):new BigNumber(h?s:NaN);if(!d[0]||!h[0])return h[0]?(e.s=-t,e):new BigNumber(d[0]?s:3==m?-0:0)}if(l=bitFloor(l),c=bitFloor(c),d=d.slice(),a=l-c){for((n=a<0)?(a=-a,r=d):(c=l,r=h),r.reverse(),t=a;t--;r.push(0));r.reverse()}else for(o=(n=(a=d.length)<(t=h.length))?a:t,a=t=0;t<o;t++)if(d[t]!=h[t]){n=d[t]<h[t];break}if(n&&(r=d,d=h,h=r,e.s=-e.s),(t=(o=h.length)-(i=d.length))>0)for(;t--;d[i++]=0);for(t=x-1;o>a;){if(d[--o]<h[o]){for(i=o;i&&!d[--i];d[i]=t);--d[i],d[o]+=x}d[o]-=h[o]}for(;0==d[0];d.splice(0,1),--c);return d[0]?normalise(e,d,c):(e.s=3==m?-1:1,e.c=[e.e=0],e)},h.modulo=h.mod=function(e,i){var o,r,n=this;return e=new BigNumber(e,i),!n.c||!e.s||e.c&&!e.c[0]?new BigNumber(NaN):!e.c||n.c&&!n.c[0]?new BigNumber(n):(9==D?(r=e.s,e.s=1,o=t(n,e,0,3),e.s=r,o.s*=r):o=t(n,e,0,D),(e=n.minus(o.times(e))).c[0]||1!=D||(e.s=n.s),e)},h.multipliedBy=h.times=function(e,t){var i,o,r,n,s,a,l,c,d,h,p,u,m,g,v,f=this,C=f.c,y=(e=new BigNumber(e,t)).c;if(!(C&&y&&C[0]&&y[0]))return!f.s||!e.s||C&&!C[0]&&!y||y&&!y[0]&&!C?e.c=e.e=e.s=null:(e.s*=f.s,C&&y?(e.c=[0],e.e=0):e.c=e.e=null),e;for(o=bitFloor(f.e/w)+bitFloor(e.e/w),e.s*=f.s,(l=C.length)<(h=y.length)&&(m=C,C=y,y=m,r=l,l=h,h=r),r=l+h,m=[];r--;m.push(0));for(g=x,v=I,r=h;--r>=0;){for(i=0,p=y[r]%v,u=y[r]/v|0,n=r+(s=l);n>r;)i=((c=p*(c=C[--s]%v)+(a=u*c+(d=C[s]/v|0)*p)%v*v+m[n]+i)/g|0)+(a/v|0)+u*d,m[n--]=c%g;m[n]=i}return i?++o:m.splice(0,1),normalise(e,m,o)},h.negated=function(){var e=new BigNumber(this);return e.s=-e.s||null,e},h.plus=function(e,t){var i,o=this,r=o.s;if(t=(e=new BigNumber(e,t)).s,!r||!t)return new BigNumber(NaN);if(r!=t)return e.s=-t,o.minus(e);var n=o.e/w,s=e.e/w,a=o.c,l=e.c;if(!n||!s){if(!a||!l)return new BigNumber(r/0);if(!a[0]||!l[0])return l[0]?e:new BigNumber(a[0]?o:0*r)}if(n=bitFloor(n),s=bitFloor(s),a=a.slice(),r=n-s){for(r>0?(s=n,i=l):(r=-r,i=a),i.reverse();r--;i.push(0));i.reverse()}for((r=a.length)-(t=l.length)<0&&(i=l,l=a,a=i,t=r),r=0;t;)r=(a[--t]=a[t]+l[t]+r)/x|0,a[t]=x===a[t]?0:a[t]%x;return r&&(a=[r].concat(a),++s),normalise(e,a,s)},h.precision=h.sd=function(e,t){var i,o,r,n=this;if(null!=e&&e!==!!e)return intCheck(e,1,b),null==t?t=m:intCheck(t,0,8),round(new BigNumber(n),e,t);if(!(i=n.c))return null;if(o=(r=i.length-1)*w+1,r=i[r]){for(;r%10==0;r/=10,o--);for(r=i[0];r>=10;r/=10,o++);}return e&&n.e+1>o&&(o=n.e+1),o},h.shiftedBy=function(e){return intCheck(e,-9007199254740991,P),this.times("1e"+e)},h.squareRoot=h.sqrt=function(){var e,i,o,r,n,s=this,a=s.c,l=s.s,c=s.e,d=u+4,h=new BigNumber("0.5");if(1!==l||!a||!a[0])return new BigNumber(!l||l<0&&(!a||a[0])?NaN:a?s:1/0);if(0==(l=Math.sqrt(+valueOf(s)))||l==1/0?(((i=coeffToString(a)).length+c)%2==0&&(i+="0"),l=Math.sqrt(+i),c=bitFloor((c+1)/2)-(c<0||c%2),o=new BigNumber(i=l==1/0?"5e"+c:(i=l.toExponential()).slice(0,i.indexOf("e")+1)+c)):o=new BigNumber(l+""),o.c[0])for((l=(c=o.e)+d)<3&&(l=0);;)if(n=o,o=h.times(n.plus(t(s,n,d,1))),coeffToString(n.c).slice(0,l)===(i=coeffToString(o.c)).slice(0,l)){if(o.e<c&&--l,"9999"!=(i=i.slice(l-3,l+1))&&(r||"4999"!=i)){+i&&(+i.slice(1)||"5"!=i.charAt(0))||(round(o,o.e+u+2,1),e=!o.times(o).eq(s));break}if(!r&&(round(n,n.e+u+2,0),n.times(n).eq(s))){o=n;break}d+=4,l+=4,r=1}return round(o,o.e+u+1,m,e)},h.toExponential=function(e,t){return null!=e&&(intCheck(e,0,b),e++),format(this,e,t,1)},h.toFixed=function(e,t){return null!=e&&(intCheck(e,0,b),e=e+this.e+1),format(this,e,t)},h.toFormat=function(e,t,i){var o,r=this;if(null==i)null!=e&&t&&"object"==typeof t?(i=t,t=null):e&&"object"==typeof e?(i=e,e=t=null):i=M;else if("object"!=typeof i)throw Error(A+"Argument not an object: "+i);if(o=r.toFixed(e,t),r.c){var n,s=o.split("."),a=+i.groupSize,l=+i.secondaryGroupSize,c=i.groupSeparator||"",d=s[0],h=s[1],p=r.s<0,u=p?d.slice(1):d,m=u.length;if(l&&(n=a,a=l,l=n,m-=n),a>0&&m>0){for(n=m%a||a,d=u.substr(0,n);n<m;n+=a)d+=c+u.substr(n,a);l>0&&(d+=c+u.slice(n)),p&&(d="-"+d)}o=h?d+(i.decimalSeparator||"")+((l=+i.fractionGroupSize)?h.replace(new RegExp("\\d{"+l+"}\\B","g"),"$&"+(i.fractionGroupSeparator||"")):h):d}return(i.prefix||"")+o+(i.suffix||"")},h.toFraction=function(e){var i,o,r,n,s,a,l,c,d,h,u,g,v=this,f=v.c;if(null!=e&&(!(l=new BigNumber(e)).isInteger()&&(l.c||1!==l.s)||l.lt(p)))throw Error(A+"Argument "+(l.isInteger()?"out of range: ":"not an integer: ")+valueOf(l));if(!f)return new BigNumber(v);for(i=new BigNumber(p),d=o=new BigNumber(p),r=c=new BigNumber(p),g=coeffToString(f),s=i.e=g.length-v.e-1,i.c[0]=S[(a=s%w)<0?w+a:a],e=!e||l.comparedTo(i)>0?s>0?i:d:l,a=_,_=1/0,l=new BigNumber(g),c.c[0]=0;h=t(l,i,0,1),1!=(n=o.plus(h.times(r))).comparedTo(e);)o=r,r=n,d=c.plus(h.times(n=d)),c=n,i=l.minus(h.times(n=i)),l=n;return n=t(e.minus(o),r,0,1),c=c.plus(n.times(d)),o=o.plus(n.times(r)),c.s=d.s=v.s,u=t(d,r,s*=2,m).minus(v).abs().comparedTo(t(c,o,s,m).minus(v).abs())<1?[d,r]:[c,o],_=a,u},h.toNumber=function(){return+valueOf(this)},h.toPrecision=function(e,t){return null!=e&&intCheck(e,1,b),format(this,e,t,2)},h.toString=function(e){var t,o=this,r=o.s,n=o.e;return null===n?r?(t="Infinity",r<0&&(t="-"+t)):t="NaN":(null==e?t=n<=g||n>=v?toExponential(coeffToString(o.c),n):toFixedPoint(coeffToString(o.c),n,"0"):10===e&&G?t=toFixedPoint(coeffToString((o=round(new BigNumber(o),u+n+1,m)).c),o.e,"0"):(intCheck(e,2,L.length,"Base"),t=i(toFixedPoint(coeffToString(o.c),n,"0"),10,e,r,!0)),r<0&&o.c[0]&&(t="-"+t)),t},h.valueOf=h.toJSON=function(){return valueOf(this)},h._isBigNumber=!0,h[Symbol.toStringTag]="BigNumber",h[Symbol.for("nodejs.util.inspect.custom")]=h.valueOf,null!=e&&BigNumber.set(e),BigNumber}(),_=class{key;left=null;right=null;constructor(e){this.key=e}},T=class extends _{constructor(e){super(e)}},D=class{size=0;modificationCount=0;splayCount=0;splay(e){const t=this.root;if(null==t)return this.compare(e,e),-1;let i=null,o=null,r=null,n=null,s=t;const a=this.compare;let l;for(;;)if(l=a(s.key,e),l>0){let t=s.left;if(null==t)break;if(l=a(t.key,e),l>0&&(s.left=t.right,t.right=s,s=t,t=s.left,null==t))break;null==i?o=s:i.left=s,i=s,s=t}else{if(!(l<0))break;{let t=s.right;if(null==t)break;if(l=a(t.key,e),l<0&&(s.right=t.left,t.left=s,s=t,t=s.right,null==t))break;null==r?n=s:r.right=s,r=s,s=t}}return null!=r&&(r.right=s.left,s.left=n),null!=i&&(i.left=s.right,s.right=o),this.root!==s&&(this.root=s,this.splayCount++),l}splayMin(e){let t=e,i=t.left;for(;null!=i;){const e=i;t.left=e.right,e.right=t,t=e,i=t.left}return t}splayMax(e){let t=e,i=t.right;for(;null!=i;){const e=i;t.right=e.left,e.left=t,t=e,i=t.right}return t}_delete(e){if(null==this.root)return null;if(0!=this.splay(e))return null;let t=this.root;const i=t,o=t.left;if(this.size--,null==o)this.root=t.right;else{const e=t.right;t=this.splayMax(o),t.right=e,this.root=t}return this.modificationCount++,i}addNewRoot(e,t){this.size++,this.modificationCount++;const i=this.root;null!=i?(t<0?(e.left=i,e.right=i.right,i.right=null):(e.right=i,e.left=i.left,i.left=null),this.root=e):this.root=e}_first(){const e=this.root;return null==e?null:(this.root=this.splayMin(e),this.root)}_last(){const e=this.root;return null==e?null:(this.root=this.splayMax(e),this.root)}clear(){this.root=null,this.size=0,this.modificationCount++}has(e){return this.validKey(e)&&0==this.splay(e)}defaultCompare(){return(e,t)=>e<t?-1:e>t?1:0}wrap(){return{getRoot:()=>this.root,setRoot:e=>{this.root=e},getSize:()=>this.size,getModificationCount:()=>this.modificationCount,getSplayCount:()=>this.splayCount,setSplayCount:e=>{this.splayCount=e},splay:e=>this.splay(e),has:e=>this.has(e)}}},F=class _SplayTreeSet extends D{root=null;compare;validKey;constructor(e,t){super(),this.compare=e??this.defaultCompare(),this.validKey=t??(e=>null!=e&&null!=e)}delete(e){return!!this.validKey(e)&&null!=this._delete(e)}deleteAll(e){for(const t of e)this.delete(t)}forEach(e){const t=this[Symbol.iterator]();let i;for(;i=t.next(),!i.done;)e(i.value,i.value,this)}add(e){const t=this.splay(e);return 0!=t&&this.addNewRoot(new T(e),t),this}addAndReturn(e){const t=this.splay(e);return 0!=t&&this.addNewRoot(new T(e),t),this.root.key}addAll(e){for(const t of e)this.add(t)}isEmpty(){return null==this.root}isNotEmpty(){return null!=this.root}single(){if(0==this.size)throw"Bad state: No element";if(this.size>1)throw"Bad state: Too many element";return this.root.key}first(){if(0==this.size)throw"Bad state: No element";return this._first().key}last(){if(0==this.size)throw"Bad state: No element";return this._last().key}lastBefore(e){if(null==e)throw"Invalid arguments(s)";if(null==this.root)return null;if(this.splay(e)<0)return this.root.key;let t=this.root.left;if(null==t)return null;let i=t.right;for(;null!=i;)t=i,i=t.right;return t.key}firstAfter(e){if(null==e)throw"Invalid arguments(s)";if(null==this.root)return null;if(this.splay(e)>0)return this.root.key;let t=this.root.right;if(null==t)return null;let i=t.left;for(;null!=i;)t=i,i=t.left;return t.key}retainAll(e){const t=new _SplayTreeSet(this.compare,this.validKey),i=this.modificationCount;for(const o of e){if(i!=this.modificationCount)throw"Concurrent modification during iteration.";this.validKey(o)&&0==this.splay(o)&&t.add(this.root.key)}t.size!=this.size&&(this.root=t.root,this.size=t.size,this.modificationCount++)}lookup(e){if(!this.validKey(e))return null;return 0!=this.splay(e)?null:this.root.key}intersection(e){const t=new _SplayTreeSet(this.compare,this.validKey);for(const i of this)e.has(i)&&t.add(i);return t}difference(e){const t=new _SplayTreeSet(this.compare,this.validKey);for(const i of this)e.has(i)||t.add(i);return t}union(e){const t=this.clone();return t.addAll(e),t}clone(){const e=new _SplayTreeSet(this.compare,this.validKey);return e.size=this.size,e.root=this.copyNode(this.root),e}copyNode(e){if(null==e)return null;const t=new T(e.key);return function copyChildren(e,t){let i,o;do{if(i=e.left,o=e.right,null!=i){const e=new T(i.key);t.left=e,copyChildren(i,e)}if(null!=o){const i=new T(o.key);t.right=i,e=o,t=i}}while(null!=o)}(e,t),t}toSet(){return this.clone()}entries(){return new G(this.wrap())}keys(){return this[Symbol.iterator]()}values(){return this[Symbol.iterator]()}[Symbol.iterator](){return new L(this.wrap())}[Symbol.toStringTag]="[object Set]"},M=class{tree;path=new Array;modificationCount=null;splayCount;constructor(e){this.tree=e,this.splayCount=e.getSplayCount()}[Symbol.iterator](){return this}next(){return this.moveNext()?{done:!1,value:this.current()}:{done:!0,value:null}}current(){if(!this.path.length)return null;const e=this.path[this.path.length-1];return this.getValue(e)}rebuildPath(e){this.path.splice(0,this.path.length),this.tree.splay(e),this.path.push(this.tree.getRoot()),this.splayCount=this.tree.getSplayCount()}findLeftMostDescendent(e){for(;null!=e;)this.path.push(e),e=e.left}moveNext(){if(this.modificationCount!=this.tree.getModificationCount()){if(null==this.modificationCount){this.modificationCount=this.tree.getModificationCount();let e=this.tree.getRoot();for(;null!=e;)this.path.push(e),e=e.left;return this.path.length>0}throw"Concurrent modification during iteration."}if(!this.path.length)return!1;this.splayCount!=this.tree.getSplayCount()&&this.rebuildPath(this.path[this.path.length-1].key);let e=this.path[this.path.length-1],t=e.right;if(null!=t){for(;null!=t;)this.path.push(t),t=t.left;return!0}for(this.path.pop();this.path.length&&this.path[this.path.length-1].right===e;)e=this.path.pop();return this.path.length>0}},L=class extends M{getValue(e){return e.key}},G=class extends M{getValue(e){return[e.key,e.key]}},constant_default=e=>()=>e,compare_default=e=>{const t=e?(t,i)=>i.minus(t).abs().isLessThanOrEqualTo(e):constant_default(!1);return(e,i)=>t(e,i)?0:e.comparedTo(i)};function orient_default(e){const t=e?(t,i,o,r,n)=>t.exponentiatedBy(2).isLessThanOrEqualTo(r.minus(i).exponentiatedBy(2).plus(n.minus(o).exponentiatedBy(2)).times(e)):constant_default(!1);return(e,i,o)=>{const r=e.x,n=e.y,s=o.x,a=o.y,l=n.minus(a).times(i.x.minus(s)).minus(r.minus(s).times(i.y.minus(a)));return t(l,r,n,s,a)?0:l.comparedTo(0)}}var identity_default=e=>e,snap_default=e=>{if(e){const t=new F(compare_default(e)),i=new F(compare_default(e)),snapCoord=(e,t)=>t.addAndReturn(e),snap=e=>({x:snapCoord(e.x,t),y:snapCoord(e.y,i)});return snap({x:new R(0),y:new R(0)}),snap}return identity_default},set=e=>({set:e=>{B=set(e)},reset:()=>set(e),compare:compare_default(e),snap:snap_default(e),orient:orient_default(e)}),B=set(),isInBbox=(e,t)=>e.ll.x.isLessThanOrEqualTo(t.x)&&t.x.isLessThanOrEqualTo(e.ur.x)&&e.ll.y.isLessThanOrEqualTo(t.y)&&t.y.isLessThanOrEqualTo(e.ur.y),getBboxOverlap=(e,t)=>{if(t.ur.x.isLessThan(e.ll.x)||e.ur.x.isLessThan(t.ll.x)||t.ur.y.isLessThan(e.ll.y)||e.ur.y.isLessThan(t.ll.y))return null;const i=e.ll.x.isLessThan(t.ll.x)?t.ll.x:e.ll.x,o=e.ur.x.isLessThan(t.ur.x)?e.ur.x:t.ur.x;return{ll:{x:i,y:e.ll.y.isLessThan(t.ll.y)?t.ll.y:e.ll.y},ur:{x:o,y:e.ur.y.isLessThan(t.ur.y)?e.ur.y:t.ur.y}}},crossProduct=(e,t)=>e.x.times(t.y).minus(e.y.times(t.x)),dotProduct=(e,t)=>e.x.times(t.x).plus(e.y.times(t.y)),length=e=>dotProduct(e,e).sqrt(),sineOfAngle=(e,t,i)=>{const o={x:t.x.minus(e.x),y:t.y.minus(e.y)},r={x:i.x.minus(e.x),y:i.y.minus(e.y)};return crossProduct(r,o).div(length(r)).div(length(o))},cosineOfAngle=(e,t,i)=>{const o={x:t.x.minus(e.x),y:t.y.minus(e.y)},r={x:i.x.minus(e.x),y:i.y.minus(e.y)};return dotProduct(r,o).div(length(r)).div(length(o))},horizontalIntersection=(e,t,i)=>t.y.isZero()?null:{x:e.x.plus(t.x.div(t.y).times(i.minus(e.y))),y:i},verticalIntersection=(e,t,i)=>t.x.isZero()?null:{x:i,y:e.y.plus(t.y.div(t.x).times(i.minus(e.x)))},O=class _SweepEvent{point;isLeft;segment;otherSE;consumedBy;static compare(e,t){const i=_SweepEvent.comparePoints(e.point,t.point);return 0!==i?i:(e.point!==t.point&&e.link(t),e.isLeft!==t.isLeft?e.isLeft?1:-1:Y.compare(e.segment,t.segment))}static comparePoints(e,t){return e.x.isLessThan(t.x)?-1:e.x.isGreaterThan(t.x)?1:e.y.isLessThan(t.y)?-1:e.y.isGreaterThan(t.y)?1:0}constructor(e,t){void 0===e.events?e.events=[this]:e.events.push(this),this.point=e,this.isLeft=t}link(e){if(e.point===this.point)throw new Error("Tried to link already linked events");const t=e.point.events;for(let e=0,i=t.length;e<i;e++){const i=t[e];this.point.events.push(i),i.point=this.point}this.checkForConsuming()}checkForConsuming(){const e=this.point.events.length;for(let t=0;t<e;t++){const i=this.point.events[t];if(void 0===i.segment.consumedBy)for(let o=t+1;o<e;o++){const e=this.point.events[o];void 0===e.consumedBy&&(i.otherSE.point.events===e.otherSE.point.events&&i.segment.consume(e.segment))}}}getAvailableLinkedEvents(){const e=[];for(let t=0,i=this.point.events.length;t<i;t++){const i=this.point.events[t];i!==this&&!i.segment.ringOut&&i.segment.isInResult()&&e.push(i)}return e}getLeftmostComparator(e){const t=new Map,fillCache=i=>{const o=i.otherSE;t.set(i,{sine:sineOfAngle(this.point,e.point,o.point),cosine:cosineOfAngle(this.point,e.point,o.point)})};return(e,i)=>{t.has(e)||fillCache(e),t.has(i)||fillCache(i);const{sine:o,cosine:r}=t.get(e),{sine:n,cosine:s}=t.get(i);return o.isGreaterThanOrEqualTo(0)&&n.isGreaterThanOrEqualTo(0)?r.isLessThan(s)?1:r.isGreaterThan(s)?-1:0:o.isLessThan(0)&&n.isLessThan(0)?r.isLessThan(s)?-1:r.isGreaterThan(s)?1:0:n.isLessThan(o)?-1:n.isGreaterThan(o)?1:0}}},k=class _RingOut{events;poly;_isExteriorRing;_enclosingRing;static factory(e){const t=[];for(let i=0,o=e.length;i<o;i++){const o=e[i];if(!o.isInResult()||o.ringOut)continue;let r=null,n=o.leftSE,s=o.rightSE;const a=[n],l=n.point,c=[];for(;r=n,n=s,a.push(n),n.point!==l;)for(;;){const e=n.getAvailableLinkedEvents();if(0===e.length){const e=a[0].point,t=a[a.length-1].point;throw new Error(`Unable to complete output ring starting at [${e.x}, ${e.y}]. Last matching segment found ends at [${t.x}, ${t.y}].`)}if(1===e.length){s=e[0].otherSE;break}let i=null;for(let e=0,t=c.length;e<t;e++)if(c[e].point===n.point){i=e;break}if(null!==i){const e=c.splice(i)[0],o=a.splice(e.index);o.unshift(o[0].otherSE),t.push(new _RingOut(o.reverse()));continue}c.push({index:a.length,point:n.point});const o=n.getLeftmostComparator(r);s=e.sort(o)[0].otherSE;break}t.push(new _RingOut(a))}return t}constructor(e){this.events=e;for(let t=0,i=e.length;t<i;t++)e[t].segment.ringOut=this;this.poly=null}getGeom(){let e=this.events[0].point;const t=[e];for(let i=1,o=this.events.length-1;i<o;i++){const o=this.events[i].point,r=this.events[i+1].point;0!==B.orient(o,e,r)&&(t.push(o),e=o)}if(1===t.length)return null;const i=t[0],o=t[1];0===B.orient(i,e,o)&&t.shift(),t.push(t[0]);const r=this.isExteriorRing()?1:-1,n=this.isExteriorRing()?0:t.length-1,s=this.isExteriorRing()?t.length:-1,a=[];for(let e=n;e!=s;e+=r)a.push([t[e].x.toNumber(),t[e].y.toNumber()]);return a}isExteriorRing(){if(void 0===this._isExteriorRing){const e=this.enclosingRing();this._isExteriorRing=!e||!e.isExteriorRing()}return this._isExteriorRing}enclosingRing(){return void 0===this._enclosingRing&&(this._enclosingRing=this._calcEnclosingRing()),this._enclosingRing}_calcEnclosingRing(){let e=this.events[0];for(let t=1,i=this.events.length;t<i;t++){const i=this.events[t];O.compare(e,i)>0&&(e=i)}let t=e.segment.prevInResult(),i=t?t.prevInResult():null;for(;;){if(!t)return null;if(!i)return t.ringOut;if(i.ringOut!==t.ringOut)return i.ringOut?.enclosingRing()!==t.ringOut?t.ringOut:t.ringOut?.enclosingRing();t=i.prevInResult(),i=t?t.prevInResult():null}}},N=class{exteriorRing;interiorRings;constructor(e){this.exteriorRing=e,e.poly=this,this.interiorRings=[]}addInterior(e){this.interiorRings.push(e),e.poly=this}getGeom(){const e=this.exteriorRing.getGeom();if(null===e)return null;const t=[e];for(let e=0,i=this.interiorRings.length;e<i;e++){const i=this.interiorRings[e].getGeom();null!==i&&t.push(i)}return t}},H=class{rings;polys;constructor(e){this.rings=e,this.polys=this._composePolys(e)}getGeom(){const e=[];for(let t=0,i=this.polys.length;t<i;t++){const i=this.polys[t].getGeom();null!==i&&e.push(i)}return e}_composePolys(e){const t=[];for(let i=0,o=e.length;i<o;i++){const o=e[i];if(!o.poly)if(o.isExteriorRing())t.push(new N(o));else{const e=o.enclosingRing();e?.poly||t.push(new N(e)),e?.poly?.addInterior(o)}}return t}},W=class{queue;tree;segments;constructor(e,t=Y.compare){this.queue=e,this.tree=new F(t),this.segments=[]}process(e){const t=e.segment,i=[];if(e.consumedBy)return e.isLeft?this.queue.delete(e.otherSE):this.tree.delete(t),i;e.isLeft&&this.tree.add(t);let o=t,r=t;do{o=this.tree.lastBefore(o)}while(null!=o&&null!=o.consumedBy);do{r=this.tree.firstAfter(r)}while(null!=r&&null!=r.consumedBy);if(e.isLeft){let n=null;if(o){const e=o.getIntersection(t);if(null!==e&&(t.isAnEndpoint(e)||(n=e),!o.isAnEndpoint(e))){const t=this._splitSafely(o,e);for(let e=0,o=t.length;e<o;e++)i.push(t[e])}}let s=null;if(r){const e=r.getIntersection(t);if(null!==e&&(t.isAnEndpoint(e)||(s=e),!r.isAnEndpoint(e))){const t=this._splitSafely(r,e);for(let e=0,o=t.length;e<o;e++)i.push(t[e])}}if(null!==n||null!==s){let e=null;if(null===n)e=s;else if(null===s)e=n;else{e=O.comparePoints(n,s)<=0?n:s}this.queue.delete(t.rightSE),i.push(t.rightSE);const o=t.split(e);for(let e=0,t=o.length;e<t;e++)i.push(o[e])}i.length>0?(this.tree.delete(t),i.push(e)):(this.segments.push(t),t.prev=o)}else{if(o&&r){const e=o.getIntersection(r);if(null!==e){if(!o.isAnEndpoint(e)){const t=this._splitSafely(o,e);for(let e=0,o=t.length;e<o;e++)i.push(t[e])}if(!r.isAnEndpoint(e)){const t=this._splitSafely(r,e);for(let e=0,o=t.length;e<o;e++)i.push(t[e])}}}this.tree.delete(t)}return i}_splitSafely(e,t){this.tree.delete(e);const i=e.rightSE;this.queue.delete(i);const o=e.split(t);return o.push(i),void 0===e.consumedBy&&this.tree.add(e),o}},U=new class{type;numMultiPolys;run(e,t,i){U.type=e;const o=[new K(t,!0)];for(let e=0,t=i.length;e<t;e++)o.push(new K(i[e],!1));if(U.numMultiPolys=o.length,"difference"===U.type){const e=o[0];let t=1;for(;t<o.length;)null!==getBboxOverlap(o[t].bbox,e.bbox)?t++:o.splice(t,1)}if("intersection"===U.type)for(let e=0,t=o.length;e<t;e++){const t=o[e];for(let i=e+1,r=o.length;i<r;i++)if(null===getBboxOverlap(t.bbox,o[i].bbox))return[]}const r=new F(O.compare);for(let e=0,t=o.length;e<t;e++){const t=o[e].getSweepEvents();for(let e=0,i=t.length;e<i;e++)r.add(t[e])}const n=new W(r);let s=null;for(0!=r.size&&(s=r.first(),r.delete(s));s;){const e=n.process(s);for(let t=0,i=e.length;t<i;t++){const i=e[t];void 0===i.consumedBy&&r.add(i)}0!=r.size?(s=r.first(),r.delete(s)):s=null}B.reset();const a=k.factory(n.segments);return new H(a).getGeom()}},Q=U,z=0,Y=class _Segment{id;leftSE;rightSE;rings;windings;ringOut;consumedBy;prev;_prevInResult;_beforeState;_afterState;_isInResult;static compare(e,t){const i=e.leftSE.point.x,o=t.leftSE.point.x,r=e.rightSE.point.x,n=t.rightSE.point.x;if(n.isLessThan(i))return 1;if(r.isLessThan(o))return-1;const s=e.leftSE.point.y,a=t.leftSE.point.y,l=e.rightSE.point.y,c=t.rightSE.point.y;if(i.isLessThan(o)){if(a.isLessThan(s)&&a.isLessThan(l))return 1;if(a.isGreaterThan(s)&&a.isGreaterThan(l))return-1;const i=e.comparePoint(t.leftSE.point);if(i<0)return 1;if(i>0)return-1;const o=t.comparePoint(e.rightSE.point);return 0!==o?o:-1}if(i.isGreaterThan(o)){if(s.isLessThan(a)&&s.isLessThan(c))return-1;if(s.isGreaterThan(a)&&s.isGreaterThan(c))return 1;const i=t.comparePoint(e.leftSE.point);if(0!==i)return i;const o=e.comparePoint(t.rightSE.point);return o<0?1:o>0?-1:1}if(s.isLessThan(a))return-1;if(s.isGreaterThan(a))return 1;if(r.isLessThan(n)){const i=t.comparePoint(e.rightSE.point);if(0!==i)return i}if(r.isGreaterThan(n)){const i=e.comparePoint(t.rightSE.point);if(i<0)return 1;if(i>0)return-1}if(!r.eq(n)){const e=l.minus(s),t=r.minus(i),d=c.minus(a),h=n.minus(o);if(e.isGreaterThan(t)&&d.isLessThan(h))return 1;if(e.isLessThan(t)&&d.isGreaterThan(h))return-1}return r.isGreaterThan(n)?1:r.isLessThan(n)||l.isLessThan(c)?-1:l.isGreaterThan(c)?1:e.id<t.id?-1:e.id>t.id?1:0}constructor(e,t,i,o){this.id=++z,this.leftSE=e,e.segment=this,e.otherSE=t,this.rightSE=t,t.segment=this,t.otherSE=e,this.rings=i,this.windings=o}static fromRing(e,t,i){let o,r,n;const s=O.comparePoints(e,t);if(s<0)o=e,r=t,n=1;else{if(!(s>0))throw new Error(`Tried to create degenerate segment at [${e.x}, ${e.y}]`);o=t,r=e,n=-1}const a=new O(o,!0),l=new O(r,!1);return new _Segment(a,l,[i],[n])}replaceRightSE(e){this.rightSE=e,this.rightSE.segment=this,this.rightSE.otherSE=this.leftSE,this.leftSE.otherSE=this.rightSE}bbox(){const e=this.leftSE.point.y,t=this.rightSE.point.y;return{ll:{x:this.leftSE.point.x,y:e.isLessThan(t)?e:t},ur:{x:this.rightSE.point.x,y:e.isGreaterThan(t)?e:t}}}vector(){return{x:this.rightSE.point.x.minus(this.leftSE.point.x),y:this.rightSE.point.y.minus(this.leftSE.point.y)}}isAnEndpoint(e){return e.x.eq(this.leftSE.point.x)&&e.y.eq(this.leftSE.point.y)||e.x.eq(this.rightSE.point.x)&&e.y.eq(this.rightSE.point.y)}comparePoint(e){return B.orient(this.leftSE.point,e,this.rightSE.point)}getIntersection(e){const t=this.bbox(),i=e.bbox(),o=getBboxOverlap(t,i);if(null===o)return null;const r=this.leftSE.point,n=this.rightSE.point,s=e.leftSE.point,a=e.rightSE.point,l=isInBbox(t,s)&&0===this.comparePoint(s),c=isInBbox(i,r)&&0===e.comparePoint(r),d=isInBbox(t,a)&&0===this.comparePoint(a),h=isInBbox(i,n)&&0===e.comparePoint(n);if(c&&l)return h&&!d?n:!h&&d?a:null;if(c)return d&&r.x.eq(a.x)&&r.y.eq(a.y)?null:r;if(l)return h&&n.x.eq(s.x)&&n.y.eq(s.y)?null:s;if(h&&d)return null;if(h)return n;if(d)return a;const p=((e,t,i,o)=>{if(t.x.isZero())return verticalIntersection(i,o,e.x);if(o.x.isZero())return verticalIntersection(e,t,i.x);if(t.y.isZero())return horizontalIntersection(i,o,e.y);if(o.y.isZero())return horizontalIntersection(e,t,i.y);const r=crossProduct(t,o);if(r.isZero())return null;const n={x:i.x.minus(e.x),y:i.y.minus(e.y)},s=crossProduct(n,t).div(r),a=crossProduct(n,o).div(r),l=e.x.plus(a.times(t.x)),c=i.x.plus(s.times(o.x)),d=e.y.plus(a.times(t.y)),h=i.y.plus(s.times(o.y));return{x:l.plus(c).div(2),y:d.plus(h).div(2)}})(r,this.vector(),s,e.vector());return null===p?null:isInBbox(o,p)?B.snap(p):null}split(e){const t=[],i=void 0!==e.events,o=new O(e,!0),r=new O(e,!1),n=this.rightSE;this.replaceRightSE(r),t.push(r),t.push(o);const s=new _Segment(o,n,this.rings.slice(),this.windings.slice());return O.comparePoints(s.leftSE.point,s.rightSE.point)>0&&s.swapEvents(),O.comparePoints(this.leftSE.point,this.rightSE.point)>0&&this.swapEvents(),i&&(o.checkForConsuming(),r.checkForConsuming()),t}swapEvents(){const e=this.rightSE;this.rightSE=this.leftSE,this.leftSE=e,this.leftSE.isLeft=!0,this.rightSE.isLeft=!1;for(let e=0,t=this.windings.length;e<t;e++)this.windings[e]*=-1}consume(e){let t=this,i=e;for(;t.consumedBy;)t=t.consumedBy;for(;i.consumedBy;)i=i.consumedBy;const o=_Segment.compare(t,i);if(0!==o){if(o>0){const e=t;t=i,i=e}if(t.prev===i){const e=t;t=i,i=e}for(let e=0,o=i.rings.length;e<o;e++){const o=i.rings[e],r=i.windings[e],n=t.rings.indexOf(o);-1===n?(t.rings.push(o),t.windings.push(r)):t.windings[n]+=r}i.rings=null,i.windings=null,i.consumedBy=t,i.leftSE.consumedBy=t.leftSE,i.rightSE.consumedBy=t.rightSE}}prevInResult(){return void 0!==this._prevInResult||(this.prev?this.prev.isInResult()?this._prevInResult=this.prev:this._prevInResult=this.prev.prevInResult():this._prevInResult=null),this._prevInResult}beforeState(){if(void 0!==this._beforeState)return this._beforeState;if(this.prev){const e=this.prev.consumedBy||this.prev;this._beforeState=e.afterState()}else this._beforeState={rings:[],windings:[],multiPolys:[]};return this._beforeState}afterState(){if(void 0!==this._afterState)return this._afterState;const e=this.beforeState();this._afterState={rings:e.rings.slice(0),windings:e.windings.slice(0),multiPolys:[]};const t=this._afterState.rings,i=this._afterState.windings,o=this._afterState.multiPolys;for(let e=0,o=this.rings.length;e<o;e++){const o=this.rings[e],r=this.windings[e],n=t.indexOf(o);-1===n?(t.push(o),i.push(r)):i[n]+=r}const r=[],n=[];for(let e=0,o=t.length;e<o;e++){if(0===i[e])continue;const o=t[e],s=o.poly;if(-1===n.indexOf(s))if(o.isExterior)r.push(s);else{-1===n.indexOf(s)&&n.push(s);const e=r.indexOf(o.poly);-1!==e&&r.splice(e,1)}}for(let e=0,t=r.length;e<t;e++){const t=r[e].multiPoly;-1===o.indexOf(t)&&o.push(t)}return this._afterState}isInResult(){if(this.consumedBy)return!1;if(void 0!==this._isInResult)return this._isInResult;const e=this.beforeState().multiPolys,t=this.afterState().multiPolys;switch(Q.type){case"union":{const i=0===e.length,o=0===t.length;this._isInResult=i!==o;break}case"intersection":{let i,o;e.length<t.length?(i=e.length,o=t.length):(i=t.length,o=e.length),this._isInResult=o===Q.numMultiPolys&&i<o;break}case"xor":{const i=Math.abs(e.length-t.length);this._isInResult=i%2==1;break}case"difference":{const isJustSubject=e=>1===e.length&&e[0].isSubject;this._isInResult=isJustSubject(e)!==isJustSubject(t);break}}return this._isInResult}},j=class{poly;isExterior;segments;bbox;constructor(e,t,i){if(!Array.isArray(e)||0===e.length)throw new Error("Input geometry is not a valid Polygon or MultiPolygon");if(this.poly=t,this.isExterior=i,this.segments=[],"number"!=typeof e[0][0]||"number"!=typeof e[0][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");const o=B.snap({x:new R(e[0][0]),y:new R(e[0][1])});this.bbox={ll:{x:o.x,y:o.y},ur:{x:o.x,y:o.y}};let r=o;for(let t=1,i=e.length;t<i;t++){if("number"!=typeof e[t][0]||"number"!=typeof e[t][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");const i=B.snap({x:new R(e[t][0]),y:new R(e[t][1])});i.x.eq(r.x)&&i.y.eq(r.y)||(this.segments.push(Y.fromRing(r,i,this)),i.x.isLessThan(this.bbox.ll.x)&&(this.bbox.ll.x=i.x),i.y.isLessThan(this.bbox.ll.y)&&(this.bbox.ll.y=i.y),i.x.isGreaterThan(this.bbox.ur.x)&&(this.bbox.ur.x=i.x),i.y.isGreaterThan(this.bbox.ur.y)&&(this.bbox.ur.y=i.y),r=i)}o.x.eq(r.x)&&o.y.eq(r.y)||this.segments.push(Y.fromRing(r,o,this))}getSweepEvents(){const e=[];for(let t=0,i=this.segments.length;t<i;t++){const i=this.segments[t];e.push(i.leftSE),e.push(i.rightSE)}return e}},J=class{multiPoly;exteriorRing;interiorRings;bbox;constructor(e,t){if(!Array.isArray(e))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");this.exteriorRing=new j(e[0],this,!0),this.bbox={ll:{x:this.exteriorRing.bbox.ll.x,y:this.exteriorRing.bbox.ll.y},ur:{x:this.exteriorRing.bbox.ur.x,y:this.exteriorRing.bbox.ur.y}},this.interiorRings=[];for(let t=1,i=e.length;t<i;t++){const i=new j(e[t],this,!1);i.bbox.ll.x.isLessThan(this.bbox.ll.x)&&(this.bbox.ll.x=i.bbox.ll.x),i.bbox.ll.y.isLessThan(this.bbox.ll.y)&&(this.bbox.ll.y=i.bbox.ll.y),i.bbox.ur.x.isGreaterThan(this.bbox.ur.x)&&(this.bbox.ur.x=i.bbox.ur.x),i.bbox.ur.y.isGreaterThan(this.bbox.ur.y)&&(this.bbox.ur.y=i.bbox.ur.y),this.interiorRings.push(i)}this.multiPoly=t}getSweepEvents(){const e=this.exteriorRing.getSweepEvents();for(let t=0,i=this.interiorRings.length;t<i;t++){const i=this.interiorRings[t].getSweepEvents();for(let t=0,o=i.length;t<o;t++)e.push(i[t])}return e}},K=class{isSubject;polys;bbox;constructor(e,t){if(!Array.isArray(e))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");try{"number"==typeof e[0][0][0]&&(e=[e])}catch(e){}this.polys=[],this.bbox={ll:{x:new R(Number.POSITIVE_INFINITY),y:new R(Number.POSITIVE_INFINITY)},ur:{x:new R(Number.NEGATIVE_INFINITY),y:new R(Number.NEGATIVE_INFINITY)}};for(let t=0,i=e.length;t<i;t++){const i=new J(e[t],this);i.bbox.ll.x.isLessThan(this.bbox.ll.x)&&(this.bbox.ll.x=i.bbox.ll.x),i.bbox.ll.y.isLessThan(this.bbox.ll.y)&&(this.bbox.ll.y=i.bbox.ll.y),i.bbox.ur.x.isGreaterThan(this.bbox.ur.x)&&(this.bbox.ur.x=i.bbox.ur.x),i.bbox.ur.y.isGreaterThan(this.bbox.ur.y)&&(this.bbox.ur.y=i.bbox.ur.y),this.polys.push(i)}this.isSubject=t}getSweepEvents(){const e=[];for(let t=0,i=this.polys.length;t<i;t++){const i=this.polys[t].getSweepEvents();for(let t=0,o=i.length;t<o;t++)e.push(i[t])}return e}};function rhumbDistance(e,t,i={}){const o=getCoord(e),n=getCoord(t);n[0]+=n[0]-o[0]>180?-360:o[0]-n[0]>180?360:0;const s=function calculateRhumbDistance(e,t,i){const o=i=void 0===i?r:Number(i),n=e[1]*Math.PI/180,s=t[1]*Math.PI/180,a=s-n;let l=Math.abs(t[0]-e[0])*Math.PI/180;l>Math.PI&&(l-=2*Math.PI);const c=Math.log(Math.tan(s/2+Math.PI/4)/Math.tan(n/2+Math.PI/4)),d=Math.abs(c)>1e-11?a/c:Math.cos(n),h=Math.sqrt(a*a+d*d*l*l);return h*o}(o,n),a=function convertLength(e,t="kilometers",i="kilometers"){if(!(e>=0))throw new Error("length must be a positive number");return radiansToLength(lengthToRadians(e,t),i)}(s,"meters",i.units);return a}function explode(e){const t=[];return"FeatureCollection"===e.type?featureEach(e,function(e){coordEach(e,function(i){t.push(point(i,e.properties))})}):"Feature"===e.type?coordEach(e,function(i){t.push(point(i,e.properties))}):coordEach(e,function(e){t.push(point(e))}),featureCollection(t)}function midpoint(e,t){return function destination(e,t,i,o={}){const r=getCoord(e),n=degreesToRadians(r[0]),s=degreesToRadians(r[1]),a=degreesToRadians(i),l=lengthToRadians(t,o.units),c=Math.asin(Math.sin(s)*Math.cos(l)+Math.cos(s)*Math.sin(l)*Math.cos(a)),d=radiansToDegrees(n+Math.atan2(Math.sin(a)*Math.sin(l)*Math.cos(s),Math.cos(l)-Math.sin(s)*Math.sin(c))),h=radiansToDegrees(c);return void 0!==r[2]?point([d,h,r[2]],o.properties):point([d,h],o.properties)}(e,distance(e,t)/2,bearing(e,t))}B.set;var V,Z,X,q,$,ee,te,ie,oe,re,ne,se,ae,le,ce,de,he,pe,ue,me,ge,ve,fe,Ce,ye=Object.defineProperty,Ae=Object.defineProperties,Ee=Object.getOwnPropertyDescriptors,xe=Object.getOwnPropertySymbols,we=Object.prototype.hasOwnProperty,Pe=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,i)=>t in e?ye(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,__spreadValues=(e,t)=>{for(var i in t||(t={}))we.call(t,i)&&__defNormalProp(e,i,t[i]);if(xe)for(var i of xe(t))Pe.call(t,i)&&__defNormalProp(e,i,t[i]);return e},__spreadProps=(e,t)=>Ae(e,Ee(t));function pointOnFeature(e){const t=function normalize(e){if("FeatureCollection"!==e.type)return"Feature"!==e.type?featureCollection([feature(e)]):featureCollection([e]);return e}(e),i=center(t);let o=!1,r=0;for(;!o&&r<t.features.length;){const e=t.features[r].geometry;let n,s,a,l,c,d,h=!1;if("Point"===e.type)i.geometry.coordinates[0]===e.coordinates[0]&&i.geometry.coordinates[1]===e.coordinates[1]&&(o=!0);else if("MultiPoint"===e.type){let t=!1,r=0;for(;!t&&r<e.coordinates.length;)i.geometry.coordinates[0]===e.coordinates[r][0]&&i.geometry.coordinates[1]===e.coordinates[r][1]&&(o=!0,t=!0),r++}else if("LineString"===e.type){let t=0;for(;!h&&t<e.coordinates.length-1;)n=i.geometry.coordinates[0],s=i.geometry.coordinates[1],a=e.coordinates[t][0],l=e.coordinates[t][1],c=e.coordinates[t+1][0],d=e.coordinates[t+1][1],pointOnSegment(n,s,a,l,c,d)&&(h=!0,o=!0),t++}else if("MultiLineString"===e.type){let t=0;for(;t<e.coordinates.length;){h=!1;let r=0;const p=e.coordinates[t];for(;!h&&r<p.length-1;)n=i.geometry.coordinates[0],s=i.geometry.coordinates[1],a=p[r][0],l=p[r][1],c=p[r+1][0],d=p[r+1][1],pointOnSegment(n,s,a,l,c,d)&&(h=!0,o=!0),r++;t++}}else"Polygon"!==e.type&&"MultiPolygon"!==e.type||booleanPointInPolygon(i,e)&&(o=!0);r++}if(o)return i;{const e=featureCollection([]);for(let i=0;i<t.features.length;i++)e.features=e.features.concat(explode(t.features[i]).features);return point(function nearestPoint(e,t,i={}){if(!e)throw new Error("targetPoint is required");if(!t)throw new Error("points is required");let o=1/0,r=0;featureEach(t,(t,n)=>{const s=distance(e,t,i);s<o&&(r=n,o=s)});const n=clone$1(t.features[r]);return __spreadProps(__spreadValues({},n),{properties:__spreadProps(__spreadValues({},n.properties),{featureIndex:r,distanceToPoint:o})})}(i,e).geometry.coordinates)}}function pointOnSegment(e,t,i,o,r,n){return Math.sqrt((r-i)*(r-i)+(n-o)*(n-o))===Math.sqrt((e-i)*(e-i)+(t-o)*(t-o))+Math.sqrt((r-e)*(r-e)+(n-t)*(n-t))}function union2(e,t={}){const i=[];if(geomEach(e,e=>{i.push(e.coordinates)}),i.length<2)throw new Error("Must have at least 2 geometries");const o=((e,...t)=>Q.run("union",e,t))(i[0],...i.slice(1));return 0===o.length?null:1===o.length?polygon(o[0],t.properties):function multiPolygon(e,t,i={}){return feature({type:"MultiPolygon",coordinates:e},t,i)}(o,t.properties)}exports.DefaultContextMenuItem=void 0,(V=exports.DefaultContextMenuItem||(exports.DefaultContextMenuItem={})).Home="Home",V.Scene2D="2D",V.Scene3D="3D",V.FullScreen="FullScreen",V.ExitFullScreen="ExitFullScreen",V.DisableDepth="DisableDepth",V.EnableDepth="EnableDepth",exports.MenuEventType=void 0,(Z=exports.MenuEventType||(exports.MenuEventType={})).RightClick="RightClick",Z.ItemClick="ItemClick",exports.ScreenCapture=void 0,(X=exports.ScreenCapture||(exports.ScreenCapture={})).SCENE="scene",X.TERRAIN="terrain",X.ELLIPSOID="ellipsoid",exports.GlobalEventType=void 0,(q=exports.GlobalEventType||(exports.GlobalEventType={}))[q.LEFT_DOWN=0]="LEFT_DOWN",q[q.LEFT_UP=1]="LEFT_UP",q[q.LEFT_CLICK=2]="LEFT_CLICK",q[q.LEFT_DOUBLE_CLICK=3]="LEFT_DOUBLE_CLICK",q[q.RIGHT_DOWN=5]="RIGHT_DOWN",q[q.RIGHT_UP=6]="RIGHT_UP",q[q.RIGHT_CLICK=7]="RIGHT_CLICK",q[q.MIDDLE_DOWN=10]="MIDDLE_DOWN",q[q.MIDDLE_UP=11]="MIDDLE_UP",q[q.MIDDLE_CLICK=12]="MIDDLE_CLICK",q[q.HOVER=15]="HOVER",exports.DrawType=void 0,($=exports.DrawType||(exports.DrawType={}))[$.BILLBOARD=0]="BILLBOARD",$[$.CIRCLE=1]="CIRCLE",$[$.MODEL=2]="MODEL",$[$.POINT=3]="POINT",$[$.POLYLINE=4]="POLYLINE",$[$.POLYGON=5]="POLYGON",$[$.RECTANGLE=6]="RECTANGLE",$[$.WALL=7]="WALL",$[$.ATTACK_ARROW=8]="ATTACK_ARROW",$[$.STRAIGHT_ARROW=9]="STRAIGHT_ARROW",$[$.PINCER_ARROW=10]="PINCER_ARROW",$[$.STROKE=11]="STROKE",$[$.LABEL=12]="LABEL",exports.DefaultModuleName=void 0,(ee=exports.DefaultModuleName||(exports.DefaultModuleName={})).BILLBOARD="D_billboard",ee.CIRCLE="D_circle",ee.MODEL="D_model",ee.POINT="D_point",ee.POLYLINE="D_polyline",ee.POLYGON="D_polygon",ee.RECTANGLE="D_rectangle",ee.WALL="D_wall",ee.ATTACK_ARROW="D_attack_arrow",ee.STRAIGHT_ARROW="D_straight_arrow",ee.PINCER_ARROW="D_pincer_arrow",ee.STROKE="D_stroke",ee.LABEL="D_label",exports.EditableType=void 0,(te=exports.EditableType||(exports.EditableType={}))[te.ATTACK_ARROW=0]="ATTACK_ARROW",te[te.BILLBOARD=1]="BILLBOARD",te[te.CIRCLE=2]="CIRCLE",te[te.LABEL=3]="LABEL",te[te.MODEL=4]="MODEL",te[te.PINCER_ARROW=5]="PINCER_ARROW",te[te.POINT=6]="POINT",te[te.POLYGON=7]="POLYGON",te[te.POLYLINE=8]="POLYLINE",te[te.RECTANGLE=9]="RECTANGLE",te[te.STRAIGHT_ARROW=10]="STRAIGHT_ARROW",te[te.WALL=11]="WALL",exports.SubEventType=void 0,(ie=exports.SubEventType||(exports.SubEventType={})).DRAW_MOVE="Draw_Move",ie.DRAW_CERTAIN="Draw_Certain",ie.DRAW_FINISH="Draw_Finish",ie.EDIT_MOVE="Edit_Move",ie.EDIT_CERTAIN="Edit_Certain",ie.EDIT_FINISH="Edit_Finish",exports.MeasureType=void 0,(oe=exports.MeasureType||(exports.MeasureType={}))[oe.SPACE_DISTANCE=0]="SPACE_DISTANCE",oe[oe.GROUND_DISTANCE=1]="GROUND_DISTANCE",oe[oe.SPACE_AREA=2]="SPACE_AREA",oe[oe.HEIGHT=3]="HEIGHT",oe[oe.TRIANGLE=4]="TRIANGLE",oe[oe.POSITION=5]="POSITION",oe[oe.AZIMUTH=6]="AZIMUTH",oe[oe.SECTION=7]="SECTION",exports.ViewAngle=void 0,(re=exports.ViewAngle||(exports.ViewAngle={}))[re.FIRST=0]="FIRST",re[re.THIRD=1]="THIRD",exports.ConicMode=void 0,(ne=exports.ConicMode||(exports.ConicMode={}))[ne.MATH=0]="MATH",ne[ne.GEODESIC=1]="GEODESIC",exports.ScanMode=void 0,(se=exports.ScanMode||(exports.ScanMode={}))[se.HORIZONTAL=0]="HORIZONTAL",se[se.VERTICAL=1]="VERTICAL",exports.EarthRadius=void 0,(ae=exports.EarthRadius||(exports.EarthRadius={}))[ae.AVERAGE=6371393]="AVERAGE",ae[ae.EQUATOR=6378137]="EQUATOR",ae[ae.POLE=6356725]="POLE",exports.CoorFormat=void 0,(le=exports.CoorFormat||(exports.CoorFormat={})).DMS="DMS",le.DMSS="DMSS",exports.ArcType=void 0,(ce=exports.ArcType||(exports.ArcType={}))[ce.NONE=0]="NONE",ce[ce.GEODESIC=1]="GEODESIC",ce[ce.RHUMB=2]="RHUMB",exports.ClockRange=void 0,(de=exports.ClockRange||(exports.ClockRange={}))[de.UNBOUNDED=0]="UNBOUNDED",de[de.CLAMPED=1]="CLAMPED",de[de.LOOP_STOP=2]="LOOP_STOP",exports.ClassificationType=void 0,(he=exports.ClassificationType||(exports.ClassificationType={}))[he.TERRAIN=0]="TERRAIN",he[he.TILES=1]="TILES",he[he.BOTH=2]="BOTH",exports.HeightReference=void 0,(pe=exports.HeightReference||(exports.HeightReference={}))[pe.NONE=0]="NONE",pe[pe.CLAMP_TO_GROUND=1]="CLAMP_TO_GROUND",pe[pe.RELATIVE_TO_GROUND=2]="RELATIVE_TO_GROUND",pe[pe.CLAMP_TO_TERRAIN=3]="CLAMP_TO_TERRAIN",pe[pe.RELATIVE_TO_TERRAIN=4]="RELATIVE_TO_TERRAIN",pe[pe.CLAMP_TO_3D_TILE=5]="CLAMP_TO_3D_TILE",pe[pe.RELATIVE_TO_3D_TILE=6]="RELATIVE_TO_3D_TILE",exports.HorizontalOrigin=void 0,(ue=exports.HorizontalOrigin||(exports.HorizontalOrigin={}))[ue.RIGHT=-1]="RIGHT",ue[ue.CENTER=0]="CENTER",ue[ue.LEFT=1]="LEFT",exports.VerticalOrigin=void 0,(me=exports.VerticalOrigin||(exports.VerticalOrigin={}))[me.TOP=-1]="TOP",me[me.CENTER=0]="CENTER",me[me.BOTTOM=1]="BOTTOM",me[me.BASELINE=2]="BASELINE",exports.LabelStyle=void 0,(ge=exports.LabelStyle||(exports.LabelStyle={}))[ge.FILL=0]="FILL",ge[ge.OUTLINE=1]="OUTLINE",ge[ge.FILL_AND_OUTLINE=2]="FILL_AND_OUTLINE",exports.MapMode2D=void 0,(ve=exports.MapMode2D||(exports.MapMode2D={}))[ve.ROTATE=0]="ROTATE",ve[ve.INFINITE_SCROLL=1]="INFINITE_SCROLL",exports.SceneMode=void 0,(fe=exports.SceneMode||(exports.SceneMode={}))[fe.MORPHING=0]="MORPHING",fe[fe.COLUMBUS_VIEW=1]="COLUMBUS_VIEW",fe[fe.SCENE2D=2]="SCENE2D",fe[fe.SCENE3D=3]="SCENE3D";const{abs:Se}=Math;var Ie,be,Re;exports.Geographic=Ce=class Geographic{constructor(e=0,t=0,i=0){this.longitude=e,this.latitude=t,this.height=i}toCartesian(t=e.Ellipsoid.WGS84,i){return e.Cartesian3.fromDegrees(this.longitude,this.latitude,this.height,t,i)}toCartographic(t=new e.Cartographic){return e.Cartographic.fromDegrees(this.longitude,this.latitude,this.height,t)}toArray(){return[this.longitude,this.latitude]}toArrayHeight(){return[this.longitude,this.latitude,this.height]}clone(e=new Ce(0,0)){return e.latitude=this.latitude,e.longitude=this.longitude,e.height=this.height,e}format(e=exports.CoorFormat.DMS){return{longitude:exports.Utils.formatGeoLongitude(this.longitude,e),latitude:exports.Utils.formatGeoLatitude(this.latitude,e)}}toString(e="(%x, %y)",t){var i,o,r;return e.replace(/%x/g,null!==(i=null==t?void 0:t(this.longitude,"longitude"))&&void 0!==i?i:this.longitude.toString()).replace(/%y/g,null!==(o=null==t?void 0:t(this.latitude,"latitude"))&&void 0!==o?o:this.latitude.toString()).replace(/%z/g,null!==(r=null==t?void 0:t(this.height,"height"))&&void 0!==r?r:this.height.toString())}static clone(e,t=new Ce(0,0)){return e.clone(t)}static equals(e,t,i=0){if(e===t)return!0;const o=Se(e.longitude-t.longitude)<=i,r=Se(e.latitude-t.latitude)<=i,n=Se(e.height-t.height)<=i;return o&&r&&n}static fromRadians(t,i,o=0,r){const n=e.Math.toDegrees(t),s=e.Math.toDegrees(i);return r?(r.longitude=n,r.latitude=s,r.height=o,r):new Ce(n,s,o)}static fromCartesian(t,i=e.Ellipsoid.WGS84,o){const r=e.Cartographic.fromCartesian(t,i),n=e.Math.toDegrees(r.longitude),s=e.Math.toDegrees(r.latitude);return o?(o.longitude=n,o.latitude=s,o.height=r.height,o):new Ce(n,s,r.height)}static fromCartographic(t,i=new Ce(0,0)){const o=e.Math.toDegrees(t.longitude),r=e.Math.toDegrees(t.latitude);return i.longitude=o,i.latitude=r,i.height=t.height,i}static fromDegreesArray(e){const t=[];for(let i=0;i<e.length;i+=2){const o=e[i],r=e[i+1];t.push(new Ce(o,r))}return t}static fromRadiansArray(t){const i=[];for(let o=0;o<t.length;o+=2){const r=t[o],n=t[o+1];i.push(new Ce(e.Math.toDegrees(r),e.Math.toDegrees(n)))}return i}static fromDegreesArrayHeights(e){const t=[];for(let i=0;i<e.length;i+=3){const o=e[i],r=e[i+1];t.push(new Ce(o,r,e[i+2]))}return t}static fromRadiansArrayHeights(t){const i=[];for(let o=0;o<t.length;o+=3){const r=t[o],n=t[o+1];i.push(new Ce(e.Math.toDegrees(r),e.Math.toDegrees(n),t[o+2]))}return i}},__decorate([validate,__param(0,is(e.Ellipsoid)),__param(1,is(e.Cartesian3))],exports.Geographic.prototype,"toCartesian",null),__decorate([validate,__param(0,is(e.Cartographic))],exports.Geographic.prototype,"toCartographic",null),__decorate([validate,__param(0,is(exports.Geographic))],exports.Geographic.prototype,"clone",null),__decorate([validate,__param(0,is(String)),__param(1,is(Function))],exports.Geographic.prototype,"toString",null),__decorate([constant(new exports.Geographic(0,90))],exports.Geographic,"NORTH_POLE",void 0),__decorate([constant(new exports.Geographic(0,-90))],exports.Geographic,"SOUTH_POLE",void 0),__decorate([validate,__param(0,is(exports.Geographic)),__param(1,is(exports.Geographic))],exports.Geographic,"clone",null),__decorate([validate,__param(0,is(exports.Geographic)),__param(1,is(exports.Geographic)),__param(2,positive()),__param(2,is(Number))],exports.Geographic,"equals",null),__decorate([validate,__param(0,moreThan(-e.Math.PI)),__param(0,lessThan(e.Math.PI)),__param(0,is(Number)),__param(1,moreThan(-e.Math.PI_OVER_TWO)),__param(1,lessThan(e.Math.PI_OVER_TWO)),__param(1,is(Number)),__param(2,is(Number)),__param(3,is(exports.Geographic))],exports.Geographic,"fromRadians",null),__decorate([validate,__param(0,is(e.Cartesian3)),__param(1,is(e.Ellipsoid)),__param(2,is(exports.Geographic))],exports.Geographic,"fromCartesian",null),__decorate([validate,__param(0,is(e.Cartographic)),__param(1,is(exports.Geographic))],exports.Geographic,"fromCartographic",null),__decorate([validate,__param(0,multipleOf(2)),__param(0,is(Array))],exports.Geographic,"fromDegreesArray",null),__decorate([validate,__param(0,multipleOf(2)),__param(0,is(Array))],exports.Geographic,"fromRadiansArray",null),__decorate([validate,__param(0,multipleOf(3)),__param(0,is(Array))],exports.Geographic,"fromDegreesArrayHeights",null),__decorate([validate,__param(0,multipleOf(3)),__param(0,is(Array))],exports.Geographic,"fromRadiansArrayHeights",null),exports.Geographic=Ce=__decorate([validate,__param(0,moreThan(-180)),__param(0,lessThan(180)),__param(0,is(Number)),__param(1,moreThan(-90)),__param(1,lessThan(90)),__param(1,is(Number)),__param(2,is(Number))],exports.Geographic),exports.Coordinate=class Coordinate{constructor(e){Ie.set(this,void 0),be.set(this,void 0),Re.set(this,void 0),__classPrivateFieldSet(this,Ie,e.scene,"f"),__classPrivateFieldSet(this,be,e.camera,"f"),__classPrivateFieldSet(this,Re,e.scene.globe.ellipsoid,"f")}screenToCartesian(e,t=exports.ScreenCapture.ELLIPSOID){let i;const o=__classPrivateFieldGet(this,be,"f").getPickRay(e);switch(t){case exports.ScreenCapture.SCENE:i=__classPrivateFieldGet(this,Ie,"f").pickPosition(e);break;case exports.ScreenCapture.TERRAIN:o&&(i=__classPrivateFieldGet(this,Ie,"f").globe.pick(o,__classPrivateFieldGet(this,Ie,"f")));break;case exports.ScreenCapture.ELLIPSOID:i=__classPrivateFieldGet(this,be,"f").pickEllipsoid(e,__classPrivateFieldGet(this,Re,"f"))}return i}cartesianToScreen(t){return e.SceneTransforms.worldToWindowCoordinates(__classPrivateFieldGet(this,Ie,"f"),t)}cartographicToCartesian(e){return __classPrivateFieldGet(this,Re,"f").cartographicToCartesian(e)}cartographicArrayToCartesianArray(e){return __classPrivateFieldGet(this,Re,"f").cartographicArrayToCartesianArray(e)}cartesianToCartographic(e){return __classPrivateFieldGet(this,Re,"f").cartesianToCartographic(e)}cartesianArrayToCartographicArray(e){return __classPrivateFieldGet(this,Re,"f").cartesianArrayToCartographicArray(e)}screenToGeographic(t){const i=this.screenToCartesian(t);if(!i)return;const o=e.Cartographic.fromCartesian(i),r=e.Math.toDegrees(o.longitude),n=e.Math.toDegrees(o.latitude),s=__classPrivateFieldGet(this,Ie,"f").globe.getHeight(o);return new exports.Geographic(r,n,s)}screenToCartographic(t){const i=this.screenToCartesian(t);if(i)return e.Cartographic.fromCartesian(i)}positionSurfaceHeight(t){if(t instanceof e.Cartographic)return __classPrivateFieldGet(this,Ie,"f").globe.getHeight(t);if(t instanceof exports.Geographic){const e=t.toCartographic();return __classPrivateFieldGet(this,Ie,"f").globe.getHeight(e)}}},Ie=new WeakMap,be=new WeakMap,Re=new WeakMap,__decorate([validate,__param(0,is(e.Cartesian2))],exports.Coordinate.prototype,"screenToCartesian",null),__decorate([validate,__param(0,is(e.Cartesian3))],exports.Coordinate.prototype,"cartesianToScreen",null),__decorate([validate,__param(0,is(e.Cartographic))],exports.Coordinate.prototype,"cartographicToCartesian",null),__decorate([validate,__param(0,is(Array))],exports.Coordinate.prototype,"cartographicArrayToCartesianArray",null),__decorate([validate,__param(0,is(e.Cartesian3))],exports.Coordinate.prototype,"cartesianToCartographic",null),__decorate([validate,__param(0,is(Array))],exports.Coordinate.prototype,"cartesianArrayToCartographicArray",null),__decorate([validate,__param(0,is(e.Cartesian2))],exports.Coordinate.prototype,"screenToGeographic",null),__decorate([validate,__param(0,is(e.Cartesian2))],exports.Coordinate.prototype,"screenToCartographic",null),__decorate([validate,__param(0,or([e.Cartographic,exports.Geographic]))],exports.Coordinate.prototype,"positionSurfaceHeight",null),exports.Coordinate=__decorate([singleton("Not necessary to create 'Coordinate', 'earth.coordinate' is available.")],exports.Coordinate);const{abs:_e,asin:Te,pow:De,sqrt:Fe,sin:Me,cos:Le,PI:Ge}=Math;var Be;exports.Figure=class Figure{static crossProduct(e,t,i){const[o,r]=e,[n,s]=t,[a,l]=i;return o*l+n*r+a*s-o*s-n*l-a*r}static CrossProduct(e,t,i){return this.crossProduct(e,t,i)}static calcDistance(e,t,i="meters"){return distance(point(e.toArray()),point(t.toArray()),{units:i})}static CalcDistance(e,t,i="meters"){return this.calcDistance(e,t,i)}static calcRhumbDistance(e,t,i="meters"){return rhumbDistance(point(e.toArray()),point(t.toArray()),{units:i})}static CalcRhumbDistance(e,t,i="meters"){return this.calcRhumbDistance(e,t,i)}static calcGroundDistance(t,i,o,r){return __awaiter(this,void 0,void 0,function*(){let n=1e-5;const s=o.globe.ellipsoid,a=t.toCartesian(),l=i.toCartesian(),c=e.Cartesian3.distance(a,l);if(!r.availability)return console.warn("Lack of terrain data, or load terrain failed. Ground measuring makes no significance."),c;n*=c>1e4?10:c>5e4?100:c>1e5?5e3:1e4;const d=e.PolylinePipeline.generateArc({positions:[a,l],granularity:n});if(!d)return console.warn("Lack of terrain data, or load terrain failed. Ground measuring makes no significance."),c;const h=[],p=e.Cartographic.fromCartesian(a).height;for(let t=0;t<d.length;t+=3){const i=e.Cartesian3.unpack(d,t);h.push(s.cartesianToCartographic(i))}const u=yield e.sampleTerrainMostDetailed(r,h);let m=0;for(let e=0;e<u.length;e++){const t=u[e];t.height?t.height+=10:t.height=p}const g=s.cartographicArrayToCartesianArray(u);for(let t=0;t<g.length-1;t++)m+=e.Cartesian3.distance(g[t],g[t+1]);return m})}static CalcGroundDistance(e,t,i,o){return __awaiter(this,void 0,void 0,function*(){return yield this.calcGroundDistance(e,t,i,o)})}static calcPointByPointDistanceAngle(e,t,i,o){const r=exports.EarthRadius.EQUATOR,n=exports.EarthRadius.POLE,s=i*Me(o*Ge/180),a=i*Le(o*Ge/180),l=n+(r-n)*(90-t)/90;return[180*(s/(l*Le(t*Ge/180))+e*Ge/180)/Ge,180*(a/l+t*Ge/180)/Ge]}static CalcPointByPointDistanceAngle(e,t,i,o){return this.calcPointByPointDistanceAngle(e,t,i,o)}static pointInRectangle(t,i){return e.Rectangle.contains(i,t.toCartographic())}static PointInRectangle(e,t){return this.pointInRectangle(e,t)}static pointInCircle(e,t,i,o="meters"){return i>this.calcDistance(e,t,o)}static PointInCircle(e,t,i,o="meters"){return this.pointInCircle(e,t,i,o)}static pointInPolygon(e,t){return booleanPointInPolygon(point([e.longitude,e.latitude]),polygon([t.reduce((e,t)=>(e.push(t.toArray()),e),[])]))}static PointInPolygon(e,t){return this.pointInPolygon(e,t)}static polylineIntersectPolyline(e,t){const i=e[0].toArray(),o=e[1].toArray(),r=t[0].toArray(),n=t[1].toArray();return!(this.crossProduct(i,o,r)*this.crossProduct(i,o,n)>0)&&!(this.crossProduct(r,n,i)*this.crossProduct(r,n,o)>0)}static PolylineIntersectPolyline(e,t){return this.polylineIntersectPolyline(e,t)}static polylineIntersectRectangle(t,i){let o=!1;const{east:r,north:n,south:s,west:a}=i,l=[new exports.Geographic(e.Math.toDegrees(a),e.Math.toDegrees(n)),new exports.Geographic(e.Math.toDegrees(r),e.Math.toDegrees(n)),new exports.Geographic(e.Math.toDegrees(r),e.Math.toDegrees(s)),new exports.Geographic(e.Math.toDegrees(a),e.Math.toDegrees(s))],c=[[l[0],l[1]],[l[1],l[2]],[l[2],l[3]],[l[3],l[0]]];for(let e=0;e<t.length-1&&!o;e++)o=c.some(i=>e!==t.length-1&&this.polylineIntersectPolyline([t[e],t[e+1]],i));return o}static PolylineIntersectRectangle(e,t){return this.polylineIntersectRectangle(e,t)}static calcBearing(e,t){return bearing(point(e.toArray()),point(t.toArray()))}static CalcBearing(e,t){return this.calcBearing(e,t)}static calcRhumbBearing(e,t){return function rhumbBearing(e,t,i={}){let o;return o=i.final?calculateRhumbBearing(getCoord(t),getCoord(e)):calculateRhumbBearing(getCoord(e),getCoord(t)),o>180?-(360-o):o}(point(e.toArray()),point(t.toArray()))}static CalcRhumbBearing(e,t){return this.calcRhumbBearing(e,t)}static calcAngle(e,t,i){const o=this.calcBearing(e,t)-this.calcBearing(e,i);return o<0?o+360:o}static CalcAngle(e,t,i){return this.calcAngle(e,t,i)}static calcMidPoint(e,t){const i=point(e.toArray()),o=point(t.toArray()),[r,n]=midpoint(i,o).geometry.coordinates,s=(e.height+t.height)/2;return new exports.Geographic(r,n,s)}static CalcMidPoint(e,t){return this.calcMidPoint(e,t)}static calcMassCenter(e,t=!1){const i=polygon([e.map(e=>e.toArray())]),[o,r]=function centroid(e,t={}){let i=0,o=0,r=0;return coordEach(e,function(e){i+=e[0],o+=e[1],r++},!0),point([i/r,o/r],t.properties)}(i).geometry.coordinates,n=t?parseFloat((e.reduce((e,t)=>e+t.height,0)/e.length).toFixed(2)):0;return new exports.Geographic(o,r,n)}static CalcMassCenter(e,t=!1){return this.calcMassCenter(e,t)}static calcPointOnPolygon(e){const t=polygon([e.reduce((e,t)=>(e.push(t.toArray()),e),[])]),[i,o]=pointOnFeature(t).geometry.coordinates;return new exports.Geographic(i,o)}static CalcPointOnPolygon(e){return this.calcPointOnPolygon(e)}static calcPolygonArea(e){return area(polygon([e.reduce((e,t)=>(e.push(t.toArray()),e),[])]))}static CalcPolygonArea(e){return this.calcPolygonArea(e)}static calcEnvelope(t,i,o,r,n){const s=[],a=2*Ge*exports.EarthRadius.AVERAGE,l=360*o/a,c=360*r/a;for(let o=0;o<360;o++){const r=e.Math.toRadians(o),a=t+l*Le(r),d=i+c*Me(r),h=(a-t)*Le(-n)-(d-i)*Me(-n)+t,p=(a-t)*Me(-n)+(d-i)*Le(-n)+i;s.push([h,p])}return s.push([...s[0]]),s}static CalcEnvelope(e,t,i,o,r){return this.calcEnvelope(e,t,i,o,r)}static calcConic(e,t){return{radius:exports.EarthRadius.AVERAGE*Me(t/exports.EarthRadius.AVERAGE),height:e+exports.EarthRadius.AVERAGE*(1-Le(t/exports.EarthRadius.AVERAGE))}}static CalcConic(e,t){return this.calcConic(e,t)}static calcMathDistance(e){return e.reduce((e,t,i,o)=>{if(0===i)return e;return e+Fe(De(t[0]-o[i-1][0],2)+De(t[1]-o[i-1][1],2))},0)}static CalcMathDistance(e){return this.calcMathDistance(e)}static calcThirdPoint(e,t,i,o,r=!1){const n=this.calcAzimuth(e,t),s=r?n+i:n-i,a=o*Le(s),l=o*Me(s);return[t[0]+a,t[1]+l]}static CalcThirdPoint(e,t,i,o,r=!1){return this.calcThirdPoint(e,t,i,o,r)}static calcAzimuth(e,t){const i=this.calcMathDistance([e,t]),o=0===i?0:Te(_e(t[1]-e[1])/i);let r;return r=t[1]>=e[1]&&t[0]>=e[0]?o+Ge:t[1]>=e[1]&&t[0]<e[0]?2*Ge-o:t[1]<e[1]&&t[0]<e[0]?o:t[1]<e[1]&&t[0]>=e[0]?Ge-o:0,r%Ge}static CalcAzimuth(e,t){return this.calcAzimuth(e,t)}static calcMathAngle(e,t,i){const o=this.calcAzimuth(t,e)-this.calcAzimuth(t,i);return(o<0?o+2*Ge:o)%Ge}static CalcMathAngle(e,t,i){return this.calcMathAngle(e,t,i)}},__decorate([validate,__param(0,moreThan(2,!0,"length")),__param(0,is(Array)),__param(1,moreThan(2,!0,"length")),__param(1,is(Array)),__param(2,moreThan(2,!0,"length")),__param(2,is(Array))],exports.Figure,"crossProduct",null),__decorate([deprecate("Figure.crossProduct")],exports.Figure,"CrossProduct",null),__decorate([validate,__param(0,is(exports.Geographic)),__param(1,is(exports.Geographic))],exports.Figure,"calcDistance",null),__decorate([deprecate("Figure.calcDistance")],exports.Figure,"CalcDistance",null),__decorate([validate,__param(0,is(exports.Geographic)),__param(1,is(exports.Geographic))],exports.Figure,"calcRhumbDistance",null),__decorate([deprecate("Figure.calcRhumbDistance")],exports.Figure,"CalcRhumbDistance",null),__decorate([validate,__param(0,is(exports.Geographic)),__param(1,is(exports.Geographic)),__param(2,is(e.Scene)),__param(3,is(e.TerrainProvider))],exports.Figure,"calcGroundDistance",null),__decorate([deprecate("Figure.calcGroundDistance")],exports.Figure,"CalcGroundDistance",null),__decorate([validate,__param(0,moreThan(-180)),__param(0,lessThan(180)),__param(0,is(Number)),__param(1,moreThan(-90)),__param(1,lessThan(90)),__param(1,is(Number)),__param(2,is(Number)),__param(3,is(Number))],exports.Figure,"calcPointByPointDistanceAngle",null),__decorate([deprecate("Figure.calcPointByPointDistanceAngle")],exports.Figure,"CalcPointByPointDistanceAngle",null),__decorate([validate,__param(0,is(exports.Geographic)),__param(1,is(e.Rectangle))],exports.Figure,"pointInRectangle",null),__decorate([deprecate("Figure.pointInRectangle")],exports.Figure,"PointInRectangle",null),__decorate([validate,__param(0,is(exports.Geographic)),__param(1,is(exports.Geographic)),__param(2,positive()),__param(2,is(Number))],exports.Figure,"pointInCircle",null),__decorate([deprecate("Figure.pointInCircle")],exports.Figure,"PointInCircle",null),__decorate([validate,__param(0,is(exports.Geographic)),__param(1,moreThan(4,!0,"length")),__param(1,is(Array))],exports.Figure,"pointInPolygon",null),__decorate([deprecate("Figure.pointInPolygon")],exports.Figure,"PointInPolygon",null),__decorate([validate,__param(0,moreThan(2,!0,"length")),__param(0,is(Array)),__param(1,moreThan(2,!0,"length")),__param(1,is(Array))],exports.Figure,"polylineIntersectPolyline",null),__decorate([deprecate("Figure.polylineIntersectPolyline")],exports.Figure,"PolylineIntersectPolyline",null),__decorate([validate,__param(0,moreThan(2,!0,"length")),__param(0,is(Array)),__param(1,is(e.Rectangle))],exports.Figure,"polylineIntersectRectangle",null),__decorate([deprecate("Figure.polylineIntersectRectangle")],exports.Figure,"PolylineIntersectRectangle",null),__decorate([validate,__param(0,is(exports.Geographic)),__param(1,is(exports.Geographic))],exports.Figure,"calcBearing",null),__decorate([deprecate("Figure.calcBearing")],exports.Figure,"CalcBearing",null),__decorate([validate,__param(0,is(exports.Geographic)),__param(1,is(exports.Geographic))],exports.Figure,"calcRhumbBearing",null),__decorate([deprecate("Figure.calcRhumbBearing")],exports.Figure,"CalcRhumbBearing",null),__decorate([validate,__param(0,is(exports.Geographic)),__param(1,is(exports.Geographic)),__param(2,is(exports.Geographic))],exports.Figure,"calcAngle",null),__decorate([deprecate("Figure.calcAngle")],exports.Figure,"CalcAngle",null),__decorate([validate,__param(0,is(exports.Geographic)),__param(1,is(exports.Geographic))],exports.Figure,"calcMidPoint",null),__decorate([deprecate("Figure.calcMidPoint")],exports.Figure,"CalcMidPoint",null),__decorate([validate,__param(0,moreThan(4,!0,"length")),__param(0,is(Array)),__param(1,is(Boolean))],exports.Figure,"calcMassCenter",null),__decorate([deprecate("Figure.calcMassCenter")],exports.Figure,"CalcMassCenter",null),__decorate([validate,__param(0,moreThan(4,!0,"length")),__param(0,is(Array))],exports.Figure,"calcPointOnPolygon",null),__decorate([deprecate("Figure.calcPointOnPolygon")],exports.Figure,"CalcPointOnPolygon",null),__decorate([validate,__param(0,moreThan(4,!0,"length")),__param(0,is(Array))],exports.Figure,"calcPolygonArea",null),__decorate([deprecate("Figure.calcPolygonArea")],exports.Figure,"CalcPolygonArea",null),__decorate([validate,__param(0,moreThan(-180)),__param(0,lessThan(180)),__param(0,is(Number)),__param(1,moreThan(-90)),__param(1,lessThan(90)),__param(1,is(Number)),__param(2,positive()),__param(2,is(Number)),__param(3,positive()),__param(3,is(Number)),__param(4,is(Number))],exports.Figure,"calcEnvelope",null),__decorate([deprecate("Figure.calcEnvelope")],exports.Figure,"CalcEnvelope",null),__decorate([validate,__param(0,is(Number)),__param(1,is(Number))],exports.Figure,"calcConic",null),__decorate([deprecate("Figure.calcConic")],exports.Figure,"CalcConic",null),__decorate([validate,__param(0,moreThan(2,!0,"length")),__param(0,is(Array))],exports.Figure,"calcMathDistance",null),__decorate([deprecate("Figure.calcMathDistance")],exports.Figure,"CalcMathDistance",null),__decorate([validate,__param(0,moreThan(2,!0,"length")),__param(0,is(Array)),__param(1,moreThan(2,!0,"length")),__param(1,is(Array)),__param(2,is(Number)),__param(3,is(Number)),__param(4,is(Boolean))],exports.Figure,"calcThirdPoint",null),__decorate([deprecate("Figure.calcThirdPoint")],exports.Figure,"CalcThirdPoint",null),__decorate([validate,__param(0,moreThan(2,!0,"length")),__param(0,is(Array)),__param(1,moreThan(2,!0,"length")),__param(1,is(Array))],exports.Figure,"calcAzimuth",null),__decorate([deprecate("Figure.calcAzimuth")],exports.Figure,"CalcAzimuth",null),__decorate([validate,__param(0,moreThan(2,!0,"length")),__param(0,is(Array)),__param(1,moreThan(2,!0,"length")),__param(1,is(Array)),__param(2,moreThan(2,!0,"length")),__param(2,is(Array))],exports.Figure,"calcMathAngle",null),__decorate([deprecate("Figure.calcMathAngle")],exports.Figure,"CalcMathAngle",null),exports.Figure=__decorate([freeze],exports.Figure);class Queue{constructor(e){Be.set(this,void 0),__classPrivateFieldSet(this,Be,e?[...e]:[],"f")}get length(){return __classPrivateFieldGet(this,Be,"f").length}get elements(){return[...__classPrivateFieldGet(this,Be,"f")]}clear(){__classPrivateFieldSet(this,Be,[],"f")}clone(){return new Queue(__classPrivateFieldGet(this,Be,"f"))}contains(e){return __classPrivateFieldGet(this,Be,"f").some(t=>t===e)}delete(e){const t=__classPrivateFieldGet(this,Be,"f").findIndex(t=>e===t);-1!==t&&__classPrivateFieldGet(this,Be,"f").splice(t,1)}enqueue(...e){return __classPrivateFieldGet(this,Be,"f").push(...e)}dequeue(){return __classPrivateFieldGet(this,Be,"f").shift()}front(){return __classPrivateFieldGet(this,Be,"f")[0]}sort(e){__classPrivateFieldGet(this,Be,"f").sort(e)}static fromArray(e){return new Queue(e)}static fromStack(e){return new Queue(e.elements)}}Be=new WeakMap,__decorate([enumerable(!0)],Queue.prototype,"length",null),__decorate([enumerable(!0)],Queue.prototype,"elements",null);const Oe="Ω",{abs:ke,floor:Ne,random:He}=Math;var We,Ue,Qe,ze,Ye,je,Je,Ke,Ve,Ze,Xe,qe,$e;exports.Utils=class Utils{static uuid(e="-"){return`xxxxxxxx${e}xxxx${e}4xxx${e}yxxx${e}xxxxxxxxxxxx`.replace(/[xy]/g,e=>{const t=16*He()|0;return("x"===e?t:3&t|8).toString(16)})}static encode(e,t){return t?`${encodeURIComponent(e)}${Oe}${encodeURIComponent(t)}`:e}static decode(e){const t={id:""},i=e.split(Oe);return i.length>1?(t.id=decodeURIComponent(i[0]),t.module=decodeURIComponent(i[1])):t.id=e,t}static formatGeoLongitude(e,t=exports.CoorFormat.DMS){if(!/^-?\d{1,3}(.\d+)?$/g.test(e.toString()))return e.toString();const i=ke(e),o=Ne(i),r=Ne(60*(i-o)),n=Ne(3600*(i-o)-60*r);let s="";return t===exports.CoorFormat.DMS?s=`${ke(o)}°${r}′${n}″${e>=0?"E":"W"}`:t===exports.CoorFormat.DMSS&&(s=`${ke(o)}${(r<10?"0":"")+r}${(n<10?"0":"")+n}${e>=0?"E":"W"}`),s}static formatGeoLatitude(e,t=exports.CoorFormat.DMS){if(!/^-?\d{1,2}(.\d+)?$/g.test(e.toString()))return e.toString();const i=ke(e),o=Ne(i),r=Ne(60*(i-o)),n=Ne(3600*(i-o)-60*r);let s="";return t===exports.CoorFormat.DMS?s=`${ke(o)}°${r}′${n}″${e>=0?"N":"S"}`:t===exports.CoorFormat.DMSS&&(s=`${ke(o)}${(r<10?"0":"")+r}${(n<10?"0":"")+n}${e>=0?"N":"S"}`),s}static convertSvg2Canvas(e){return __awaiter(this,arguments,void 0,function*(e,t=48,i=48){const o=document.createElement("canvas");o.width=t,o.height=i;const r=o.getContext("2d"),n=new Blob([e],{type:"image/svg+xml;charset-utf-8"}),s=URL.createObjectURL(n),a=yield(e=>new Promise(t=>{const i=new Image;i.onload=()=>t(i),i.src=e}))(s);return r.drawImage(a,0,0),o})}static convertPic2Canvas(e){return __awaiter(this,arguments,void 0,function*(e,t=48,i=48){const o=document.createElement("canvas");o.width=t,o.height=i;const r=o.getContext("2d");r.fillStyle="#ffffff01",r.fillRect(0,0,o.width,o.height);const n=yield(s=e,new Promise(e=>{const t=new Image;t.onload=()=>e(t),t.src=s}));var s;return r.drawImage(n,0,0),o})}static debounce(e,t=300){let i;return function(...o){i&&clearTimeout(i),i=setTimeout(()=>{e.apply(this,o)},t)}}static throttle(e,t=300){let i;return function(...o){i||(e.apply(this,o),i=!0,setTimeout(()=>{i=!1},t))}}static singleton(e){let t;return new Proxy(e,{construct:(e,i)=>t||(t=Reflect.construct(e,i),t)})}},__decorate([validate,__param(0,except([Oe,"x"])),__param(0,is(String))],exports.Utils,"uuid",null),__decorate([validate,__param(0,except(Oe)),__param(0,is(String))],exports.Utils,"encode",null),__decorate([validate,__param(0,is(String))],exports.Utils,"decode",null),__decorate([validate,__param(0,moreThan(-180)),__param(0,lessThan(180)),__param(0,is(Number))],exports.Utils,"formatGeoLongitude",null),__decorate([validate,__param(0,moreThan(-90)),__param(0,lessThan(90)),__param(0,is(Number))],exports.Utils,"formatGeoLatitude",null),__decorate([__param(0,is(String)),__param(1,is(Number)),__param(2,is(Number))],exports.Utils,"convertSvg2Canvas",null),__decorate([validate,__param(1,is(Number)),__param(2,is(Number))],exports.Utils,"convertPic2Canvas",null),__decorate([validate,__param(0,is(Function)),__param(1,is(Number))],exports.Utils,"debounce",null),__decorate([validate,__param(0,is(Function)),__param(1,is(Number))],exports.Utils,"throttle",null),exports.Utils=__decorate([freeze],exports.Utils);class Runner{get threads(){return __classPrivateFieldGet(this,Qe,"f")}set threads(e){__classPrivateFieldSet(this,Qe,e<1?1:e,"f")}get inProcessing(){return __classPrivateFieldGet(this,ze,"f")}get length(){return __classPrivateFieldGet(this,Ue,"f").length}get isPaused(){return __classPrivateFieldGet(this,Ye,"f")}constructor(e=3){We.add(this),Ue.set(this,void 0),Qe.set(this,void 0),ze.set(this,0),Ye.set(this,!1),__classPrivateFieldSet(this,Qe,e,"f"),__classPrivateFieldSet(this,Ue,new Queue,"f")}add(e){const t=exports.Utils.uuid();return new Promise((i,o)=>{__classPrivateFieldGet(this,Ue,"f").enqueue({resolve:i,reject:o,task:e,id:t}),__classPrivateFieldGet(this,We,"m",je).call(this)}),t}addSync(e){return this.add(Runner.toAsync(e))}cancel(e){const t=__classPrivateFieldGet(this,Ue,"f").elements.find(t=>t.id===e);t&&__classPrivateFieldGet(this,Ue,"f").delete(t)}clear(){__classPrivateFieldGet(this,Ue,"f").clear()}pause(){__classPrivateFieldSet(this,Ye,!0,"f")}resume(){__classPrivateFieldGet(this,Ye,"f")&&(__classPrivateFieldSet(this,Ye,!1,"f"),__classPrivateFieldGet(this,We,"m",je).call(this))}static toAsync(e){return(...t)=>new Promise((i,o)=>{try{i(e(...t))}catch(e){o(e)}})}}Ue=new WeakMap,Qe=new WeakMap,ze=new WeakMap,Ye=new WeakMap,We=new WeakSet,je=function _Runner_run(){var e;if(__classPrivateFieldGet(this,ze,"f")<__classPrivateFieldGet(this,Qe,"f")&&__classPrivateFieldGet(this,Ue,"f").length>0&&!__classPrivateFieldGet(this,Ye,"f")){const{resolve:t,reject:i,task:o}=__classPrivateFieldGet(this,Ue,"f").dequeue();o().then(t,i).finally(()=>{var e;__classPrivateFieldSet(this,ze,(e=__classPrivateFieldGet(this,ze,"f"),--e),"f"),__classPrivateFieldGet(this,We,"m",_Runner_run).call(this)}),__classPrivateFieldSet(this,ze,(e=__classPrivateFieldGet(this,ze,"f"),++e),"f")}},__decorate([enumerable(!0)],Runner.prototype,"threads",null),__decorate([enumerable(!0)],Runner.prototype,"inProcessing",null),__decorate([enumerable(!0)],Runner.prototype,"length",null),__decorate([enumerable(!0)],Runner.prototype,"isPaused",null);class Stack{constructor(e){Je.set(this,void 0),__classPrivateFieldSet(this,Je,e?[...e]:[],"f")}get length(){return __classPrivateFieldGet(this,Je,"f").length}get elements(){return[...__classPrivateFieldGet(this,Je,"f")]}clear(){__classPrivateFieldSet(this,Je,[],"f")}clone(){return new Stack(__classPrivateFieldGet(this,Je,"f"))}contains(e){return __classPrivateFieldGet(this,Je,"f").some(t=>t===e)}delete(e){const t=__classPrivateFieldGet(this,Je,"f").findIndex(t=>e===t);-1!==t&&__classPrivateFieldGet(this,Je,"f").splice(t,1)}push(...e){return __classPrivateFieldGet(this,Je,"f").push(...e)}pop(){return __classPrivateFieldGet(this,Je,"f").pop()}bottom(){return __classPrivateFieldGet(this,Je,"f")[0]}sort(e){__classPrivateFieldGet(this,Je,"f").sort(e)}static fromArray(e){return new Stack(e)}static fromQueue(e){return new Stack(e.elements)}}Je=new WeakMap,__decorate([enumerable(!0)],Stack.prototype,"length",null),__decorate([enumerable(!0)],Stack.prototype,"elements",null);class State{static start(){__classPrivateFieldSet(this,Ke,!0,"f",Ve)}static end(){__classPrivateFieldSet(this,Ke,!1,"f",Ve)}static isOperate(){return __classPrivateFieldGet(this,Ke,"f",Ve)}}Ke=State,Ve={value:!1},exports.Animation=class Animation{constructor({id:t=exports.Utils.uuid(),module:i,billboard:o,model:r,path:n,positionSamples:s,timeZoneSamples:a}){this._id=exports.Utils.encode(t,i);const l=new e.SampledPositionProperty,c=new e.VelocityOrientationProperty(l);this._instance=new e.Entity({id:this._id,position:l,billboard:o,model:r,path:n,orientation:c}),this.addPositionSamples(s),this.addTimeZoneSamples(null!=a?a:[])}addPositionSamples(t){const i=[],o=[];for(const{latitude:r,longitude:n,height:s,time:a}of t)i.push(e.JulianDate.fromDate(a)),o.push(e.Cartesian3.fromDegrees(n,r,s));this._instance.position.addSamples(i,o)}addTimeZoneSamples(t){var i;if(!t||t.length<2)return;const o=e.JulianDate.fromDate(t[0]),r=e.JulianDate.fromDate(t[1]),n=new e.TimeInterval({start:o,stop:r});this._instance.availability?null===(i=this._instance.availability)||void 0===i||i.addInterval(n):this._instance.availability=new e.TimeIntervalCollection([n])}removeTimeZoneSamples(t){var i;if(t.length<=2)return;const o=e.JulianDate.fromDate(t[0]),r=e.JulianDate.fromDate(t[1]),n=new e.TimeInterval({start:o,stop:r});null===(i=this._instance.availability)||void 0===i||i.removeInterval(n)}removePositionSamples(t){if(t.length<=2)return;const i=e.JulianDate.fromDate(t[0]),o=e.JulianDate.fromDate(t[1]),r=new e.TimeInterval({start:i,stop:o});this._instance.position.removeSamples(r)}removePositionSample(t){const i=e.JulianDate.fromDate(t);return this._instance.position.removeSample(i)}},__decorate([generate(!1)],exports.Animation.prototype,"isDestroyed",void 0),__decorate([generate()],exports.Animation.prototype,"id",void 0),__decorate([generate()],exports.Animation.prototype,"instance",void 0),__decorate([validate,__param(0,is(Array))],exports.Animation.prototype,"addPositionSamples",null),__decorate([validate,__param(0,is(Array))],exports.Animation.prototype,"addTimeZoneSamples",null),__decorate([validate,__param(0,is(Array))],exports.Animation.prototype,"removeTimeZoneSamples",null),__decorate([validate,__param(0,is(Array))],exports.Animation.prototype,"removePositionSamples",null),__decorate([validate,__param(0,is(Date))],exports.Animation.prototype,"removePositionSample",null),exports.Animation=__decorate([validate,__param(0,is(Array,"positionSamples"))],exports.Animation);class EventBus{constructor(){Ze.set(this,void 0),__classPrivateFieldSet(this,Ze,function mitt(e){return{all:e=e||new Map,on:function(t,i){var o=e.get(t);o?o.push(i):e.set(t,[i])},off:function(t,i){var o=e.get(t);o&&(i?o.splice(o.indexOf(i)>>>0,1):e.set(t,[]))},emit:function(t,i){var o=e.get(t);o&&o.slice().map(function(e){e(i)}),(o=e.get("*"))&&o.slice().map(function(e){e(t,i)})}}}(),"f")}on(e,t){__classPrivateFieldGet(this,Ze,"f").on(e,t)}off(e,t){__classPrivateFieldGet(this,Ze,"f").off(e,t)}emit(e,t){__classPrivateFieldGet(this,Ze,"f").emit(e,t)}}Ze=new WeakMap;const et=[0,1,2,3,5,6,7,10,11,12,15];var tt,it,ot,rt,nt,st,at,lt,ct,dt,ht,pt,ut,mt,gt,vt,ft,Ct,yt,At,Et,xt,wt,Pt,St;exports.GlobalEvent=class GlobalEvent{constructor(t,i=300){Xe.add(this),qe.set(this,void 0),this._bus=new EventBus,__classPrivateFieldSet(this,qe,new e.ScreenSpaceEventHandler(t.viewer.canvas),"f");for(const e of et)15===e?__classPrivateFieldGet(this,qe,"f").setInputAction(exports.Utils.throttle(({endPosition:i})=>{__classPrivateFieldGet(this,Xe,"m",$e).call(this,t,i,e)},i),e):__classPrivateFieldGet(this,qe,"f").setInputAction(exports.Utils.throttle(({position:i})=>{__classPrivateFieldGet(this,Xe,"m",$e).call(this,t,i,e)},i),e)}subscribe(e,t,i){this._bus.on(`${i}_${t}`,e)}unsubscribe(e,t,i){this._bus.off(`${i}_${t}`,e)}destroy(){this._isDestroyed||(this._isDestroyed=!0,__classPrivateFieldGet(this,qe,"f").destroy(),this._bus=void 0,__classPrivateFieldSet(this,qe,void 0,"f"))}},qe=new WeakMap,Xe=new WeakSet,$e=function _GlobalEvent_onEvent(t,i,o){const r=t.viewer.canvas.getBoundingClientRect(),n=r.width/t.viewer.canvas.width,s=r.height/t.viewer.canvas.height,a=new e.Cartesian2(i.x/n,i.y/s),l=t.scene.pick(a,5,5);if(l){let t;if("string"==typeof l.id?t=l.id:l.id instanceof e.Entity&&(t=l.id.id),t){const e=exports.Utils.decode(t);e&&this._bus.emit(`*_${o}`,Object.assign(Object.assign({},e),{target:l})),e&&e.module&&this._bus.emit(`${e.module}_${o}`,Object.assign(Object.assign({},e),{target:l}))}}else this._bus.emit(`undefined_${o}`,{position:i})},__decorate([enumerable(!1)],exports.GlobalEvent.prototype,"_bus",void 0),__decorate([generate(!1)],exports.GlobalEvent.prototype,"isDestroyed",void 0),exports.GlobalEvent=__decorate([singleton()],exports.GlobalEvent);class Dynamic{constructor(t,i){tt.set(this,void 0),it.set(this,void 0),ot.set(this,void 0),__classPrivateFieldSet(this,tt,t,"f"),this._viewer=t.viewer,this._scene=t.viewer.scene,__classPrivateFieldSet(this,it,t.camera,"f"),this._layer=i,__classPrivateFieldSet(this,ot,new e.ScreenSpaceEventHandler(t.viewer.canvas),"f"),this._eventBus=new EventBus}_startEvent(){return State.start(),__classPrivateFieldGet(this,tt,"f").container.style.cursor="crosshair",new e.ScreenSpaceEventHandler(this._viewer.canvas)}_endEvent(e){__classPrivateFieldGet(this,tt,"f").container.style.cursor="default",State.end(),e.destroy(),this._setViewControl(!0)}_getPointOnEllipsoid(e){return exports.CameraTool.pickPointOnEllipsoid(e,this._scene,__classPrivateFieldGet(this,it,"f"))}_setViewControl(e){this._scene.screenSpaceCameraController.enableRotate=e,this._scene.screenSpaceCameraController.enableTilt=e,this._scene.screenSpaceCameraController.enableTranslate=e,this._scene.screenSpaceCameraController.enableInputs=e}subscribe(e,t){this._eventBus.on(e,t)}unsubscribe(e,t){this._eventBus.off(e,t)}getEntity(e){return this.layer.getEntity(e)}interrupt(){var e;null===(e=this._cacheHandler)||void 0===e||e.destroy(),this._cacheEntity&&this._viewer.entities.remove(this._cacheEntity),this._cacheHandler=void 0,this._cacheEntity=void 0,this._setViewControl(!0),State.end()}remove(e){e?this._layer.remove(e):this._layer.remove()}destroy(){this._isDestroyed||(this._isDestroyed=!0,this.interrupt(),this.remove(),this._layer.destroy(),__classPrivateFieldGet(this,ot,"f").destroy())}}tt=new WeakMap,it=new WeakMap,ot=new WeakMap,__decorate([generate()],Dynamic.prototype,"layer",void 0),__decorate([generate(!1)],Dynamic.prototype,"isDestroyed",void 0),__decorate([enumerable(!1)],Dynamic.prototype,"_viewer",void 0),__decorate([enumerable(!1)],Dynamic.prototype,"_scene",void 0),__decorate([enumerable(!1)],Dynamic.prototype,"_eventBus",void 0),__decorate([enumerable(!1)],Dynamic.prototype,"_cacheHandler",void 0),__decorate([enumerable(!1)],Dynamic.prototype,"_cacheEntity",void 0);class Layer{constructor(e,t){rt.set(this,void 0),this._cache=new Map,this._collection=e.scene.primitives.add(t),__classPrivateFieldSet(this,rt,e.scene,"f")}setAllowDestroy(e){this._allowDestroy=e}_save(e,t,i=!0){let o=t.primitive;return i&&(o=this._collection.add(o)),this._cache.set(e,{primitive:o,data:t.data}),o}getEntity(e){return this._cache.get(e)}getData(e){var t;return null===(t=this.getEntity(e))||void 0===t?void 0:t.data}getPrimitive(e){var t;return null===(t=this._cache.get(e))||void 0===t?void 0:t.primitive}has(e){return this._cache.has(e)}exist(e){return void 0!==this.getEntity(e)}show(e){if(e){const t=this.getEntity(e);t&&(t.primitive.show=!0)}else this._collection.show=!0}hide(e){if(e){const t=this.getEntity(e);t&&(t.primitive.show=!1)}else this._collection.show=!1}shown(e){if(e){const t=this.getEntity(e);return t?t.primitive.show:(console.warn(`The primitive '${e}' is inexistent.`),!1)}return this._collection.show}remove(e){if(e){const t=this._cache.get(e);t&&(this._collection.remove(t.primitive),this._cache.delete(e))}else this._collection.removeAll(),this._cache.clear()}destroy(){return this._isDestroyed?(console.warn("Current entity layer has already been destroyed."),!0):this._allowDestroy?(__classPrivateFieldGet(this,rt,"f").primitives.remove(this._collection),this._cache.clear(),this._collection=void 0,this._cache=void 0,this._isDestroyed=!0,!0):(console.warn("Current entity layer is not allowed to destroy."),!1)}}rt=new WeakMap,__decorate([generate(!0)],Layer.prototype,"allowDestroy",void 0),__decorate([generate(!1)],Layer.prototype,"isDestroyed",void 0),__decorate([generate()],Layer.prototype,"collection",void 0),__decorate([generate()],Layer.prototype,"cache",void 0),exports.AnimationManager=class AnimationManager{constructor(e){this._cache=new Map,this._viewer=e.viewer}add(e){if(e instanceof exports.Animation)this._viewer.entities.add(e.instance),this._cache.set(e.id,e);else{const t=new exports.Animation(e);this._viewer.entities.add(t.instance),this._cache.set(t.id,t)}}show(e){if(e){const t=this._cache.get(e);t&&(t.instance.show=!0)}else this._cache.forEach(e=>{e.instance.show=!0})}hide(e){if(e){const t=this._cache.get(e);t&&(t.instance.show=!1)}else this._cache.forEach(e=>{e.instance.show=!1})}remove(e){if(e){const t=this._cache.get(e);t&&this._viewer.entities.remove(t.instance)}else this._cache.forEach(e=>{this._viewer.entities.remove(e.instance)})}destroy(){this._isDestroyed||(this._isDestroyed=!0,this.remove(),this._cache.clear())}},__decorate([enumerable(!1)],exports.AnimationManager.prototype,"_cache",void 0),__decorate([enumerable(!1)],exports.AnimationManager.prototype,"_viewer",void 0),__decorate([generate(!1)],exports.AnimationManager.prototype,"isDestroyed",void 0),__decorate([validate,__param(0,or([exports.Animation,Object]))],exports.AnimationManager.prototype,"add",null),exports.AnimationManager=__decorate([singleton()],exports.AnimationManager);class PrimitiveCluster{get billboardCollection(){return this._billboardCollection}get labelCollection(){return this._labelCollection}get pointCollection(){return this._pointCollection}get clusterBillboardCollection(){return this._clusterBillboardCollection}get clusterLabelCollection(){return this._clusterLabelCollection}get clusterPointCollection(){return this._clusterPointCollection}get enabled(){return this._enabled}set enabled(e){this._enabledDirty=e!==this._enabled,this._enabled=e}get pixelRange(){return this._pixelRange}set pixelRange(e){this._clusterDirty=this._clusterDirty||e!==this._pixelRange,this._pixelRange=e}get minimumClusterSize(){return this._minimumClusterSize}set minimumClusterSize(e){this._clusterDirty=this._clusterDirty||e!==this._minimumClusterSize,this._minimumClusterSize=e}get clusterEvent(){return this._clusterEvent}get clusterBillboards(){return this._clusterBillboards}set clusterBillboards(e){this._clusterDirty=this._clusterDirty||e!==this._clusterBillboards,this._clusterBillboards=e}get clusterLabels(){return this._clusterLabels}set clusterLabels(e){this._clusterDirty=this._clusterDirty||e!==this._clusterLabels,this._clusterLabels=e}get clusterPoints(){return this._clusterPoints}set clusterPoints(e){this._clusterDirty=this._clusterDirty||e!==this._clusterPoints,this._clusterPoints=e}constructor(t){var i,o,r,n,s,a,l;this._labelCollection=new e.LabelCollection,this._billboardCollection=new e.BillboardCollection,this._pointCollection=new e.PointPrimitiveCollection,this._collectionIndicesByEntity={},this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._enabledDirty=!1,this._clusterDirty=!1,this._clusterEvent=new e.Event,this.labelBoundingBoxScratch=new e.BoundingRectangle,this.pointBoundingRectangleScratch=new e.BoundingRectangle,this.totalBoundingRectangleScratch=new e.BoundingRectangle,this.neighborBoundingRectangleScratch=new e.BoundingRectangle,t=null!=t?t:e.Frozen.EMPTY_OBJECT,this._enabled=null!==(i=null==t?void 0:t.enabled)&&void 0!==i&&i,this._pixelRange=null!==(o=null==t?void 0:t.pixelRange)&&void 0!==o?o:80,this._minimumClusterSize=null!==(r=null==t?void 0:t.minimumClusterSize)&&void 0!==r?r:2,this._clusterBillboards=null===(n=null==t?void 0:t.clusterBillboards)||void 0===n||n,this._clusterLabels=null===(s=null==t?void 0:t.clusterLabels)||void 0===s||s,this._clusterPoints=null===(a=null==t?void 0:t.clusterPoints)||void 0===a||a,this.show=null===(l=null==t?void 0:t.show)||void 0===l||l}getX(e){return e.coord.x}getY(e){return e.coord.y}expandBoundingBox(e,t){e.x-=t,e.y-=t,e.width+=2*t,e.height+=2*t}getBoundingBox(t,i,o,r,n){if(e.defined(t._labelCollection)&&r._clusterLabels?n=e.Label.getScreenSpaceBoundingBox(t,i,n):e.defined(t._billboardCollection)&&r._clusterBillboards?n=e.Billboard.getScreenSpaceBoundingBox(t,i,n):e.defined(t._pointPrimitiveCollection)&&r._clusterPoints&&(n=e.PointPrimitive.getScreenSpaceBoundingBox(t,i,n)),this.expandBoundingBox(n,o),r._clusterLabels&&!e.defined(t._labelCollection)&&e.defined(t.id)&&this.hasLabelIndex(r,t.id.id)&&e.defined(t.id._label)){const s=r._collectionIndicesByEntity[t.id.id].labelIndex,a=r._labelCollection.get(s),l=e.Label.getScreenSpaceBoundingBox(a,i,this.labelBoundingBoxScratch);this.expandBoundingBox(l,o),n=e.BoundingRectangle.union(n,l,n)}return n}addNonClusteredItem(t,i){if(t.clusterShow=!0,!e.defined(t._labelCollection)&&e.defined(t.id)&&this.hasLabelIndex(i,t.id.id)&&e.defined(t.id._label)){const e=i._collectionIndicesByEntity[t.id.id].labelIndex;i._labelCollection.get(e).clusterShow=!0}}addCluster(e,t,i,o){const r={billboard:o._clusterBillboardCollection.add(),label:o._clusterLabelCollection.add(),point:o._clusterPointCollection.add()};r.billboard.show=!1,r.point.show=!1,r.label.show=!0,r.label.text=t.toLocaleString(),r.label.id=i,r.billboard.position=e,r.label.position=e,r.point.position=e,o._clusterEvent.raiseEvent(i,r)}hasLabelIndex(t,i){return e.defined(t)&&e.defined(t._collectionIndicesByEntity[i])&&e.defined(t._collectionIndicesByEntity[i].labelIndex)}getScreenSpacePositions(t,i,o,r,n){if(!e.defined(t))return;const s=t.length;for(let a=0;a<s;++a){const s=t.get(a);if(s.clusterShow=!1,!s.show||n._scene.mode===e.SceneMode.SCENE3D&&!r.isPointVisible(s.position))continue;const l=n._clusterLabels&&e.defined(s._labelCollection),c=n._clusterBillboards&&e.defined(s._billboardCollection),d=n._clusterPoints&&e.defined(s._pointCollection);if(l&&(d||c))continue;const h=s.computeScreenSpacePosition(o);e.defined(h)&&i.push({index:a,collection:t,clustered:!1,coord:h})}}createDeclutterCallback(t){return i=>{if(e.defined(i)&&i<.05||!t.enabled)return;const o=t._scene,r=t._labelCollection,n=t._billboardCollection,s=t._pointCollection;if(!e.defined(r)&&!e.defined(n)&&!e.defined(s)||!t._clusterBillboards&&!t._clusterLabels&&!t._clusterPoints)return;let a=t._clusterLabelCollection,l=t._clusterBillboardCollection,c=t._clusterPointCollection;e.defined(a)?a.removeAll():a=t._clusterLabelCollection=new e.LabelCollection({scene:o}),e.defined(l)?l.removeAll():l=t._clusterBillboardCollection=new e.BillboardCollection({scene:o}),e.defined(c)?c.removeAll():c=t._clusterPointCollection=new e.PointPrimitiveCollection;const d=t._pixelRange,h=t._minimumClusterSize,p=t._previousClusters,u=[],m=t._previousHeight,g=o.camera.positionCartographic.height,v=o.mapProjection.ellipsoid,f=o.camera.positionWC,C=new e.EllipsoidalOccluder(v,f),y=[];let A,E,x,w,P,S,I,b,R,_,T,D;t._clusterLabels&&this.getScreenSpacePositions(r,y,o,C,t),t._clusterBillboards&&this.getScreenSpacePositions(n,y,o,C,t),t._clusterPoints&&this.getScreenSpacePositions(s,y,o,C,t);const F=new KDBush(y.length,64,Uint32Array);for(let e=0;e<y.length;++e)F.add(this.getX(y[e]),this.getY(y[e]));if(F.finish(),g<m)for(x=p.length,A=0;A<x;++A){const i=p[A];if(!C.isPointVisible(i.position))continue;const r=e.Billboard._computeScreenSpacePosition(e.Matrix4.IDENTITY,i.position,e.Cartesian3.ZERO,e.Cartesian2.ZERO,o);if(!e.defined(r))continue;const n=1-g/m;let s=i.width=i.width*n,a=i.height=i.height*n;s=Math.max(s,i.minimumWidth),a=Math.max(a,i.minimumHeight);const l=r.x-.5*s,c=r.y-.5*a,d=r.x+s,v=r.y+a;for(P=F.range(l,c,d,v),S=P.length,_=0,R=[],E=0;E<S;++E)I=P[E],b=y[I],b.clustered||(++_,T=b.collection,D=b.index,R.push(T.get(D).id));if(_>=h)for(this.addCluster(i.position,_,R,t),u.push(i),E=0;E<S;++E)y[P[E]].clustered=!0}for(x=y.length,A=0;A<x;++A){const i=y[A];if(i.clustered)continue;i.clustered=!0,T=i.collection,D=i.index;const o=T.get(D);w=this.getBoundingBox(o,i.coord,d,t,this.pointBoundingRectangleScratch);const r=e.BoundingRectangle.clone(w,this.totalBoundingRectangleScratch);P=F.range(w.x,w.y,w.x+w.width,w.y+w.height),S=P.length;const n=e.Cartesian3.clone(o.position);for(_=1,R=[o.id],E=0;E<S;++E)if(I=P[E],b=y[I],!b.clustered){const i=b.collection.get(b.index),o=this.getBoundingBox(i,b.coord,d,t,this.neighborBoundingRectangleScratch);e.Cartesian3.add(i.position,n,n),e.BoundingRectangle.union(r,o,r),++_,R.push(i.id)}if(_>=h){const i=e.Cartesian3.multiplyByScalar(n,1/_,n);for(this.addCluster(i,_,R,t),u.push({position:i,width:r.width,height:r.height,minimumWidth:w.width,minimumHeight:w.height}),E=0;E<S;++E)y[P[E]].clustered=!0}else this.addNonClusteredItem(o,t)}0===a.length&&(a.destroy(),t._clusterLabelCollection=void 0),0===l.length&&(l.destroy(),t._clusterBillboardCollection=void 0),0===c.length&&(c.destroy(),t._clusterPointCollection=void 0),t._previousClusters=u,t._previousHeight=g}}createGetEntity(t,i,o,r){return n=>{let s=this[t];e.defined(this._collectionIndicesByEntity)||(this._collectionIndicesByEntity={});let a,l,c=this._collectionIndicesByEntity[n.id];if(e.defined(c)||(c=this._collectionIndicesByEntity[n.id]={billboardIndex:void 0,labelIndex:void 0,pointIndex:void 0}),e.defined(s)&&e.defined(c[r]))return s.get(c[r]);e.defined(s)||(s=this[t]=new i({scene:this._scene}));const d=this[o];return d.length>0?(a=d.pop(),l=s.get(a)):(l=s.add(),a=s.length-1),c[r]=a,Promise.resolve().then(()=>{this._clusterDirty=!0}),l}}removeEntityIndicesIfUnused(t,i){const o=t._collectionIndicesByEntity[i];e.defined(o.billboardIndex)||e.defined(o.labelIndex)||e.defined(o.pointIndex)||delete t._collectionIndicesByEntity[i]}disableCollectionClustering(t){if(!e.defined(t))return;const i=t.length;for(let e=0;e<i;++e)t.get(e).clusterShow=!0}updateEnable(t){t.enabled||(e.defined(t._clusterLabelCollection)&&t._clusterLabelCollection.destroy(),e.defined(t._clusterBillboardCollection)&&t._clusterBillboardCollection.destroy(),e.defined(t._clusterPointCollection)&&t._clusterPointCollection.destroy(),t._clusterLabelCollection=void 0,t._clusterBillboardCollection=void 0,t._clusterPointCollection=void 0,this.disableCollectionClustering(t._labelCollection),this.disableCollectionClustering(t._billboardCollection),this.disableCollectionClustering(t._pointCollection))}getLabel(){this.createGetEntity("_labelCollection",e.LabelCollection,"_unusedLabelIndices","labelIndex")}removeLabel(t){const i=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[t.id];if(!e.defined(this._labelCollection)||!e.defined(i)||!e.defined(i.labelIndex))return;const o=i.labelIndex;i.labelIndex=void 0,this.removeEntityIndicesIfUnused(this,t.id);const r=this._labelCollection.get(o);r.show=!1,r.text="",r.id=void 0,this._unusedLabelIndices.push(o),this._clusterDirty=!0}getBillboard(){this.createGetEntity("_billboardCollection",e.BillboardCollection,"_unusedBillboardIndices","billboardIndex")}removeBillboard(t){const i=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[t.id];if(!e.defined(this._billboardCollection)||!e.defined(i)||!e.defined(i.billboardIndex))return;const o=i.billboardIndex;i.billboardIndex=void 0,this.removeEntityIndicesIfUnused(this,t.id);const r=this._billboardCollection.get(o);r.id=void 0,r.show=!1,r.image=void 0,this._unusedBillboardIndices.push(o),this._clusterDirty=!0}getPoint(){this.createGetEntity("_pointCollection",e.PointPrimitiveCollection,"_unusedPointIndices","pointIndex")}removePoint(t){const i=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[t.id];if(!e.defined(this._pointCollection)||!e.defined(i)||!e.defined(i.pointIndex))return;const o=i.pointIndex;i.pointIndex=void 0,this.removeEntityIndicesIfUnused(this,t.id);const r=this._pointCollection.get(o);r.show=!1,r.id=void 0,this._unusedPointIndices.push(o),this._clusterDirty=!0}update(t){var i;if(!this.show)return;let o;e.defined(this._labelCollection)&&this._labelCollection.length>0&&0===this._labelCollection.get(0)._glyphs.length&&(o=t.commandList,t.commandList=[],this._labelCollection.update(t),t.commandList=o),e.defined(this._billboardCollection)&&this._billboardCollection.length>0&&!e.defined(this._billboardCollection.get(0).width)&&(o=t.commandList,t.commandList=[],this._billboardCollection.update(t),t.commandList=o),this._enabledDirty&&(this._enabledDirty=!1,this.updateEnable(this),this._clusterDirty=!0),this._clusterDirty&&(this._clusterDirty=!1,null===(i=this._cluster)||void 0===i||i.call(this)),e.defined(this._clusterLabelCollection)&&this._clusterLabelCollection.update(t),e.defined(this._clusterBillboardCollection)&&this._clusterBillboardCollection.update(t),e.defined(this._clusterPointCollection)&&this._clusterPointCollection.update(t),e.defined(this._labelCollection)&&this._labelCollection.update(t),e.defined(this._billboardCollection)&&this._billboardCollection.update(t),e.defined(this._pointCollection)&&this._pointCollection.update(t)}initialize(e){this._scene=e,this._cluster=this.createDeclutterCallback(this),this._removeEventListener=e.camera.changed.addEventListener(this._cluster)}destroy(){var t;this._clusterLabelCollection&&this._clusterLabelCollection.destroy(),this._clusterLabelCollection=void 0,this._clusterBillboardCollection&&this._clusterBillboardCollection.destroy(),this._clusterBillboardCollection=void 0,this._clusterPointCollection&&this._clusterPointCollection.destroy(),this._clusterPointCollection=void 0,e.defined(this._removeEventListener)&&(null===(t=this._removeEventListener)||void 0===t||t.call(this),this._removeEventListener=void 0),this._labelCollection.removeAll(),this._billboardCollection.removeAll(),this._pointCollection.removeAll(),this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity=void 0,this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1}}class Cluster{constructor(t,i={pixelRange:60,minimumClusterSize:3}){var o,r,n,s,a,l,c;nt.set(this,void 0),st.set(this,void 0),at.set(this,new e.PinBuilder),this._singlePins=new Array(8),this.enable=e=>{__classPrivateFieldGet(this,st,"f").enabled=e},__classPrivateFieldSet(this,nt,t,"f"),__classPrivateFieldSet(this,st,new PrimitiveCluster({enabled:!0,pixelRange:i.pixelRange,minimumClusterSize:i.minimumClusterSize}),"f"),this._collection=new e.PrimitiveCollection,this._collection.add(__classPrivateFieldGet(this,st,"f")),__classPrivateFieldGet(this,nt,"f").scene.primitives.add(this._collection),__classPrivateFieldGet(this,st,"f").initialize(__classPrivateFieldGet(this,nt,"f").scene),this._pin999=__classPrivateFieldGet(this,at,"f").fromText("999+",(null===(o=i.style)||void 0===o?void 0:o.pin999)||e.Color.RED,48).toDataURL(),this._pin500=__classPrivateFieldGet(this,at,"f").fromText("500+",(null===(r=i.style)||void 0===r?void 0:r.pin500)||e.Color.ORANGERED,48).toDataURL(),this._pin200=__classPrivateFieldGet(this,at,"f").fromText("200+",(null===(n=i.style)||void 0===n?void 0:n.pin200)||e.Color.ORANGE,48).toDataURL(),this._pin100=__classPrivateFieldGet(this,at,"f").fromText("100+",(null===(s=i.style)||void 0===s?void 0:s.pin100)||e.Color.YELLOW,48).toDataURL(),this._pin50=__classPrivateFieldGet(this,at,"f").fromText("50+",(null===(a=i.style)||void 0===a?void 0:a.pin50)||e.Color.GREEN,48).toDataURL(),this._pin10=__classPrivateFieldGet(this,at,"f").fromText("10+",(null===(l=i.style)||void 0===l?void 0:l.pin10)||e.Color.BLUE,48).toDataURL();for(let t=0;t<this._singlePins.length;t++)this._singlePins[t]=__classPrivateFieldGet(this,at,"f").fromText(`${t+2}`,(null===(c=i.style)||void 0===c?void 0:c.single)||e.Color.VIOLET,48).toDataURL();this.setStyle(i.customStyle)}setStyle(t){var i;null===(i=this._removeListener)||void 0===i||i.call(this),this._removeListener=t?__classPrivateFieldGet(this,st,"f").clusterEvent.addEventListener(t):__classPrivateFieldGet(this,st,"f").clusterEvent.addEventListener((t,i)=>{i.label.show=!1,i.billboard.show=!0,i.billboard.id=i.label.id,i.billboard.verticalOrigin=e.VerticalOrigin.BOTTOM,t.length>=999?i.billboard.image=this._pin999:t.length>=500?i.billboard.image=this._pin500:t.length>=200?i.billboard.image=this._pin200:t.length>=100?i.billboard.image=this._pin100:t.length>=50?i.billboard.image=this._pin50:t.length>=10?i.billboard.image=this._pin10:i.billboard.image=this._singlePins[t.length-2]})}load(e){for(let t=0;t<e.length-1;t++){const i=e[t];i.billboard&&__classPrivateFieldGet(this,st,"f").billboardCollection.add(i.billboard),i.label&&__classPrivateFieldGet(this,st,"f").labelCollection.add(i.label),i.point&&__classPrivateFieldGet(this,st,"f").pointCollection.add(i.point)}}clear(){__classPrivateFieldGet(this,st,"f").billboardCollection.removeAll(),__classPrivateFieldGet(this,st,"f").labelCollection.removeAll(),__classPrivateFieldGet(this,st,"f").pointCollection.removeAll()}destroy(){var e;this._isDestroyed||(this._isDestroyed=!0,null===(e=this._removeListener)||void 0===e||e.call(this),__classPrivateFieldGet(this,nt,"f").scene.primitives.remove(this._collection))}}nt=new WeakMap,st=new WeakMap,at=new WeakMap,__decorate([generate(!1)],Cluster.prototype,"isDestroyed",void 0),__decorate([generate()],Cluster.prototype,"collection",void 0),__decorate([enumerable(!1)],Cluster.prototype,"_pin999",void 0),__decorate([enumerable(!1)],Cluster.prototype,"_pin500",void 0),__decorate([enumerable(!1)],Cluster.prototype,"_pin200",void 0),__decorate([enumerable(!1)],Cluster.prototype,"_pin100",void 0),__decorate([enumerable(!1)],Cluster.prototype,"_pin50",void 0),__decorate([enumerable(!1)],Cluster.prototype,"_pin10",void 0),__decorate([enumerable(!1)],Cluster.prototype,"_singlePins",void 0),__decorate([enumerable(!1)],Cluster.prototype,"_removeListener",void 0),__decorate([validate,__param(0,is(Array))],Cluster.prototype,"load",null);class Covering{constructor(e){lt.add(this),ct.set(this,void 0),dt.set(this,void 0),ht.set(this,void 0),pt.set(this,!1),this._cache=new Map,__classPrivateFieldSet(this,ct,e.viewer,"f"),__classPrivateFieldSet(this,dt,e.scene,"f"),__classPrivateFieldSet(this,ht,e.camera,"f")}setDraggable(e){__classPrivateFieldSet(this,pt,e,"f")}add({id:t=exports.Utils.uuid(),customize:i=!1,className:o=[],title:r="",content:n="",anchorPosition:s="TOP_LEFT",closeable:a=!0,follow:l=!0,reference:c,offset:d=e.Cartesian2.ZERO,connectionLine:h,position:p,data:u,distanceDisplayCallback:m}){let g;if(i){if(!c)throw new e.DeveloperError("Reference element is required when customizing.");if("string"==typeof c){const e=(new DOMParser).parseFromString(c,"text/html");g=e.body.firstElementChild}else g=c}else{o.push("covering-container"),g=document.createElement("div");const e=document.createElement("div"),t=document.createElement("div");g.classList.add(...o),e.classList.add("covering-title"),t.classList.add("covering-content"),e.innerHTML=r,t.innerHTML=n,g.appendChild(e),g.appendChild(t)}if(a){const e=document.createElement("div");g.appendChild(e),e.classList.add("covering-btn"),e.innerHTML="X",e.addEventListener("click",()=>{this.remove(t)})}const v=document.createElementNS("http://www.w3.org/2000/svg","svg");__classPrivateFieldGet(this,ct,"f").container.appendChild(g),__classPrivateFieldGet(this,ct,"f").container.appendChild(v),g.style.position="absolute",g.draggable=!1;const f={x:0,y:0};g.addEventListener("mousedown",e=>{if(!__classPrivateFieldGet(this,pt,"f"))return;let t=e.clientX,i=e.clientY;const onReferenceMove=e=>{const o=e.clientX,r=e.clientY,n=o-t,s=r-i;t=o,i=r;const a=parseFloat(g.style.getPropertyValue("left").slice(0,-2)),l=parseFloat(g.style.getPropertyValue("top").slice(0,-2));a+n<=0||l+s<=0||a+n+g.clientWidth>=__classPrivateFieldGet(this,dt,"f").canvas.width||l+s+g.clientHeight>=__classPrivateFieldGet(this,dt,"f").canvas.height||(f.x=a+g.clientWidth/2,f.y=l+g.clientHeight/2,g.style.left=`${a+n}px`,g.style.top=`${l+s}px`)};document.addEventListener("mousemove",onReferenceMove),document.addEventListener("mouseup",()=>{document.removeEventListener("mousemove",onReferenceMove)})});const C=Object.assign({enabled:!0,color:new e.Color(43,44,47,.8),width:1},h),y=__classPrivateFieldGet(this,lt,"m",mt).call(this,{id:t,reference:g,tail:v,tailLast:f,position:p,anchorPosition:s,connectionLine:C,offset:d,follow:l,distanceDisplayCallback:m});__classPrivateFieldGet(this,dt,"f").preRender.addEventListener(y),this._cache.set(t,{title:r,content:n,position:p,reference:g,tail:v,data:u,callback:y})}set(e,{position:t,title:i,content:o,data:r}){const n=this._cache.get(e);n&&(t&&(n.position=t),i&&(n.title=i),o&&(n.content=o),r&&(n.data instanceof Object?Object.assign(n.data,r):n.data=r))}has(e){return this._cache.has(e)}getData(e){var t;return null===(t=this._cache.get(e))||void 0===t?void 0:t.data}remove(e){if(e){const t=this._cache.get(e);t&&(__classPrivateFieldGet(this,ct,"f").container.removeChild(t.tail),__classPrivateFieldGet(this,ct,"f").container.removeChild(t.reference),__classPrivateFieldGet(this,dt,"f").preRender.removeEventListener(t.callback),this._cache.delete(e))}else this._cache.forEach(e=>{__classPrivateFieldGet(this,ct,"f").container.removeChild(e.tail),__classPrivateFieldGet(this,ct,"f").container.removeChild(e.reference),__classPrivateFieldGet(this,dt,"f").preRender.removeEventListener(e.callback)}),this._cache.clear()}destroy(){this._isDestroyed||(this._isDestroyed=!0,this.remove(),this._cache.clear())}}ct=new WeakMap,dt=new WeakMap,ht=new WeakMap,pt=new WeakMap,lt=new WeakSet,ut=function _Covering_createConnectionLine(t){const{color:i,dashed:o,enabled:r,width:n}=t.connectionLine,s=i?i.toCssColorString():new e.Color(43,44,47,.8).toCssColorString(),a=r?1:0;return`\n <line \n id="line"\n x1="${t.x1}"\n y1="${t.y1}"\n x2="${t.x2}"\n y2="${t.y2}"\n opacity="${__classPrivateFieldGet(this,pt,"f")?a:0}"\n stroke="${s}"\n stroke-width="${n}"\n ${o?'stroke-dasharray="'+o.join(",")+'"':""}\n />`},mt=function _Covering_createCallback({id:t,reference:i,tail:o,tailLast:r,position:n,anchorPosition:s,connectionLine:a,offset:l,follow:c,distanceDisplayCallback:d}){const computeTail=(e,t,o)=>{"TOP_LEFT"===a.pinned?(r.x=t,r.y=e):"TOP_RIGHT"===a.pinned?(r.x=t+i.clientWidth,r.y=e):"BOTTOM_LEFT"===a.pinned?(r.x=t,r.y=e+i.clientHeight):"BOTTOM_RIGHT"===a.pinned?(r.x=t+i.clientWidth,r.y=e+i.clientHeight):"TOP"===a.pinned?(r.x=t+i.clientWidth/2,r.y=e):"BOTTOM"===a.pinned?(r.x=t+i.clientWidth/2,r.y=e+i.clientHeight):"LEFT"===a.pinned?(r.x=t,r.y=e+i.clientHeight/2):"RIGHT"===a.pinned?(r.x=t+i.clientWidth,r.y=e+i.clientHeight/2):(o.x>t+i.clientWidth?r.x=t+i.clientWidth:o.x>=t?r.x=t+i.clientWidth/2:r.x=t,o.y>e+i.clientHeight?r.y=e+i.clientHeight:o.y>=e?r.y=e+i.clientHeight/2:r.y=e)};let h=0,p=0;"BOTTOM_LEFT"===s?(h=0,p=-i.clientHeight):"BOTTOM_RIGHT"===s?(h=-i.clientWidth,p=-i.clientHeight):"TOP_LEFT"===s?(h=0,p=0):"TOP_RIGHT"===s&&(h=-i.clientWidth,p=0);const u=__classPrivateFieldGet(this,dt,"f").cartesianToCanvasCoordinates(n),m=u.x+h+l.x,g=u.y+p+l.y;o.style.width=`${__classPrivateFieldGet(this,dt,"f").canvas.width}px`,o.style.height=`${__classPrivateFieldGet(this,dt,"f").canvas.height}px`,o.style.position="absolute",o.style.pointerEvents="none",o.style.left="0px",o.style.top="0px",computeTail(g,m,u),o.innerHTML=__classPrivateFieldGet(this,lt,"m",ut).call(this,{x1:u.x,y1:u.y,x2:isNaN(r.x)?u.x:r.x,y2:isNaN(r.y)?u.y:r.y,connectionLine:a});let v=!0;const f={x:u.x,y:u.y};return()=>{let s;if(v)s=n;else{s=this._cache.get(t).position}const u=__classPrivateFieldGet(this,dt,"f").cartesianToCanvasCoordinates(s);if(!u)return;const C=u.x-f.x,y=u.y-f.y;if(f.x=u.x,f.y=u.y,__classPrivateFieldGet(this,pt,"f")){if(c){let e=parseFloat(i.style.getPropertyValue("left").slice(0,-2))+C,t=parseFloat(i.style.getPropertyValue("top").slice(0,-2))+y;e<0?e=0:e>__classPrivateFieldGet(this,dt,"f").canvas.width-i.clientWidth&&(e=__classPrivateFieldGet(this,dt,"f").canvas.width-i.clientWidth),t<0?t=0:t>__classPrivateFieldGet(this,dt,"f").canvas.height-i.clientHeight&&(t=__classPrivateFieldGet(this,dt,"f").canvas.height-i.clientHeight),computeTail(t,e,u),i.style.left=`${e}px`,i.style.top=`${t}px`}}else{const e=u.x+h+l.x,t=u.y+p+l.y;computeTail(t,e,u),i.style.left=`${e}px`,i.style.top=`${t}px`}v&&(i.style.left=`${m}px`,i.style.top=`${g}px`,v=!1),o.innerHTML=__classPrivateFieldGet(this,lt,"m",ut).call(this,{x1:u.x,y1:u.y,x2:isNaN(r.x)?u.x:r.x,y2:isNaN(r.y)?u.y:r.y,connectionLine:a});const A=new e.EllipsoidalOccluder(e.Ellipsoid.WGS84,__classPrivateFieldGet(this,ht,"f").position);u.x<0||u.y<0||u.x>__classPrivateFieldGet(this,dt,"f").canvas.clientWidth||u.y>__classPrivateFieldGet(this,dt,"f").canvas.clientHeight||__classPrivateFieldGet(this,dt,"f").mode===e.SceneMode.SCENE3D&&!A.isPointVisible(s)||(null==d?void 0:d(s,__classPrivateFieldGet(this,ht,"f").positionCartographic.height))?(i.style.display="none",o.style.opacity="0"):(i.style.display="flex",o.style.opacity=a?"1":"0")}},__decorate([enumerable(!1)],Covering.prototype,"_cache",void 0),__decorate([generate(!1)],Covering.prototype,"isDestroyed",void 0),__decorate([validate,__param(0,is(e.Cartesian3,"position"))],Covering.prototype,"add",null);class LabelLayer extends Layer{constructor(t){super(t,new e.LabelCollection)}add(t){var i;const o=null!==(i=t.id)&&void 0!==i?i:exports.Utils.uuid(),r=Object.assign(Object.assign({font:"14px Helvetica",fillColor:e.Color.RED,outlineColor:e.Color.RED,outlineWidth:1,style:e.LabelStyle.FILL_AND_OUTLINE,horizontalOrigin:e.HorizontalOrigin.CENTER,verticalOrigin:e.VerticalOrigin.CENTER},t),{id:exports.Utils.encode(o,t.module)}),n=this._collection.add(r);super._save(o,{primitive:n,data:{module:t.module,data:t.data}},!1)}set(e,t){var i;const o=null===(i=this.getEntity(e))||void 0===i?void 0:i.primitive;o&&t&&Object.assign(o,t)}}__decorate([validate,__param(0,is(e.Cartesian3,"position"))],LabelLayer.prototype,"add",null);class BillboardLayer extends Layer{constructor(t){super(t,new e.BillboardCollection),this._labelLayer=new LabelLayer(t)}add(t){var i;const o=Object.assign({},t),r=o.label;delete o.label;const n=null!==(i=t.id)&&void 0!==i?i:exports.Utils.uuid(),s=Object.assign(Object.assign({horizontalOrigin:e.HorizontalOrigin.CENTER,verticalOrigin:e.VerticalOrigin.BOTTOM},o),{id:exports.Utils.encode(n,t.module)});r&&this._labelLayer.add(Object.assign({id:n,module:t.module,position:s.position},r));const a=this._collection.add(s);super._save(n,{primitive:a,data:{module:t.module,data:t.data}},!1)}set(e,t){var i;const o=null===(i=this.getEntity(e))||void 0===i?void 0:i.primitive;o&&(t.color&&(o.color=t.color),t.scale&&(o.scale=t.scale),t.image&&(o.image=t.image),t.position&&(o.position=t.position),t.rotation&&(o.rotation=t.rotation)),t.label&&this._labelLayer.set(e,t.label)}hide(e){e?(super.hide(e),this._labelLayer.hide(e)):(super.hide(),this._labelLayer.hide())}show(e){e?(super.show(e),this._labelLayer.show(e)):(super.show(),this._labelLayer.show())}remove(e){e?(super.remove(e),this._labelLayer.remove(e)):(super.remove(),this._labelLayer.remove())}destroy(){return!!super.destroy()&&(this._labelLayer.destroy(),!0)}}__decorate([generate()],BillboardLayer.prototype,"labelLayer",void 0),__decorate([validate,__param(0,is(e.Cartesian3,"position"))],BillboardLayer.prototype,"add",null);class CloudLayer extends Layer{constructor(t,i){var o,r;const n=new e.CloudCollection({show:!0,noiseDetail:null!==(o=null==i?void 0:i.noiseDetail)&&void 0!==o?o:16,noiseOffset:0});n.noiseOffset=null!==(r=null==i?void 0:i.noiseOffset)&&void 0!==r?r:e.Cartesian3.ZERO,super(t,n)}add({id:e=exports.Utils.uuid(),data:t,position:i,brightness:o=0,scale:r,maximumSize:n,slice:s=.5}){const a={position:i,brightness:o,scale:r,maximumSize:n,slice:s};super._save(e,{primitive:a,data:{data:t}})}set(e,t){var i;const o=null===(i=super.getEntity(e))||void 0===i?void 0:i.primitive;o&&(t.brightness&&(o.brightness=t.brightness),t.color&&(o.color=t.color),t.maximumSize&&(o.maximumSize=t.maximumSize),t.position&&(o.position=t.position),t.scale&&(o.scale=t.scale),t.slice&&(o.slice=t.slice),t.show&&(o.show=t.show))}}__decorate([validate,__param(0,is(e.Cartesian3,"position"))],CloudLayer.prototype,"add",null);class DiffusePointLayer{constructor(e){gt.set(this,void 0),vt.set(this,void 0),ft.set(this,void 0),this._cache=new Map,__classPrivateFieldSet(this,gt,e.viewer,"f"),__classPrivateFieldSet(this,vt,e.scene,"f"),__classPrivateFieldSet(this,ft,e.camera,"f")}setAllowDestroy(e){this._allowDestroy=e}add({id:t=exports.Utils.uuid(),position:i,className:o=[],pixelSize:r=10,color:n=e.Color.RED,strokeColor:s=e.Color.RED,data:a}){o.push("diffuse-point");const l=document.createElementNS("http://www.w3.org/2000/svg","svg");l.style.width="100%",l.style.height="100%",l.style.position="absolute",l.style.pointerEvents="none",l.style.left="0px",l.style.top="0px",__classPrivateFieldGet(this,gt,"f").container.appendChild(l);const c=o.join(" "),d=s.toCssColorString(),h=n.toCssColorString(),p=__classPrivateFieldGet(this,vt,"f").cartesianToCanvasCoordinates(i),u=p.x,m=p.y;l.innerHTML=`<circle class="${c}" cx="${u}" cy="${m}" r="${r/2}" stroke="${d}" fill="${h}" />`;const callback=()=>{var o;const r=this._cache.get(t),n=null!==(o=null==r?void 0:r.position)&&void 0!==o?o:i,s=__classPrivateFieldGet(this,vt,"f").cartesianToCanvasCoordinates(n),a=s.x,c=s.y;l.children[0].setAttribute("cx",a.toString()),l.children[0].setAttribute("cy",c.toString());const d=new e.EllipsoidalOccluder(e.Ellipsoid.WGS84,__classPrivateFieldGet(this,ft,"f").position);s.x<0||s.y<0||s.x>__classPrivateFieldGet(this,vt,"f").canvas.clientWidth||s.y>__classPrivateFieldGet(this,vt,"f").canvas.clientHeight||!d.isPointVisible(n)?l.style.display="none":l.style.display="flex"};__classPrivateFieldGet(this,vt,"f").preRender.addEventListener(callback),this._cache.set(t,{pointSVG:l,position:i,data:a,callback:callback})}set(e,{position:t,data:i}){const o=this._cache.get(e);o&&(t&&(o.position=t),i&&o.data?Object.assign(o.data,i):o.data=i)}getData(e){var t;return null===(t=this._cache.get(e))||void 0===t?void 0:t.data}show(e){if(e){const t=this._cache.get(e);t&&(t.pointSVG.style.display="flex")}else this._cache.forEach(e=>{e.pointSVG.style.display="flex"})}hide(e){if(e){const t=this._cache.get(e);t&&(t.pointSVG.style.display="none")}else this._cache.forEach(e=>{e.pointSVG.style.display="none"})}remove(e){if(e){const t=this._cache.get(e);t&&(__classPrivateFieldGet(this,gt,"f").container.removeChild(t.pointSVG),__classPrivateFieldGet(this,vt,"f").preRender.removeEventListener(t.callback))}else this._cache.forEach(e=>{__classPrivateFieldGet(this,gt,"f").container.removeChild(e.pointSVG),__classPrivateFieldGet(this,vt,"f").preRender.removeEventListener(e.callback)})}destroy(){return!!this._isDestroyed||(this._allowDestroy?(this._isDestroyed=!0,this.remove(),this._cache.clear(),!0):(console.warn("Current entity layer is not allowed to destroy."),!1))}}gt=new WeakMap,vt=new WeakMap,ft=new WeakMap,__decorate([generate(!1)],DiffusePointLayer.prototype,"isDestroyed",void 0),__decorate([generate(!0)],DiffusePointLayer.prototype,"allowDestroy",void 0),__decorate([generate()],DiffusePointLayer.prototype,"cache",void 0),__decorate([validate,__param(0,is(e.Cartesian3,"position"))],DiffusePointLayer.prototype,"add",null);class EllipseLayer extends Layer{constructor(t){super(t,new e.PrimitiveCollection),Ct.add(this),this._labelLayer=new LabelLayer(t)}add(t){const{ellipse:i,label:o}=__classPrivateFieldGet(this,Ct,"m",yt).call(this,t),r=new e.GeometryInstance({id:exports.Utils.encode(i.id,t.module),geometry:new e.EllipseGeometry({center:i.center,semiMajorAxis:i.majorAxis,semiMinorAxis:i.minorAxis,rotation:i.rotation,height:i.height,vertexFormat:e.PerInstanceColorAppearance.VERTEX_FORMAT}),attributes:{color:e.ColorGeometryInstanceAttribute.fromColor(i.color)}}),n=i.ground?new e.GroundPrimitive({geometryInstances:r,appearance:new e.PerInstanceColorAppearance,classificationType:e.ClassificationType.TERRAIN}):new e.Primitive({geometryInstances:r,appearance:new e.PerInstanceColorAppearance});if(o){const{longitude:r,latitude:n}=exports.Geographic.fromCartesian(i.center);this._labelLayer.add(Object.assign({id:i.id,module:t.module,position:e.Cartesian3.fromDegrees(r,n,i.height)},o))}super._save(i.id,{primitive:n,data:{module:t.module,data:t.data}})}hide(e){e?(super.hide(e),this._labelLayer.hide(e)):(super.hide(),this._labelLayer.hide())}show(e){e?(super.show(e),this._labelLayer.show(e)):(super.show(),this._labelLayer.show())}remove(e){e?(super.remove(e),this._labelLayer.remove(e)):(super.remove(),this._labelLayer.remove())}destroy(){return!!super.destroy()&&(this._labelLayer.destroy(),!0)}}Ct=new WeakSet,yt=function _EllipseLayer_getDefaultOption(t){var i,o,r,n,s;return{ellipse:{id:null!==(i=t.id)&&void 0!==i?i:exports.Utils.uuid(),show:t.show,center:t.center,majorAxis:t.majorAxis,minorAxis:t.minorAxis,rotation:null!==(o=t.rotation)&&void 0!==o?o:0,color:null!==(r=t.color)&&void 0!==r?r:e.Color.RED.withAlpha(.4),ground:null!==(n=t.ground)&&void 0!==n&&n,height:null!==(s=t.height)&&void 0!==s?s:exports.Geographic.fromCartesian(t.center).height},label:t.label?Object.assign({font:"16px Helvetica",horizontalOrigin:e.HorizontalOrigin.CENTER,verticalOrigin:e.VerticalOrigin.CENTER,fillColor:e.Color.RED,outlineColor:e.Color.WHITE,outlineWidth:1,style:e.LabelStyle.FILL_AND_OUTLINE},t.label):void 0}},__decorate([generate()],EllipseLayer.prototype,"labelLayer",void 0),__decorate([validate,__param(0,is(e.Cartesian3,"center"))],EllipseLayer.prototype,"add",null);class EllipsoidLayer extends Layer{constructor(t){super(t,new e.PrimitiveCollection),At.add(this),this._labelLayer=new LabelLayer(t)}calcEnvProjection(){this._border&&this.collection.remove(this._border);const t=[],i=[];this.cache.forEach(e=>{const{center:i,hpr:o,radii:r}=e.data;t.push({center:i,hpr:o,radii:r})}),t.forEach(e=>{const{longitude:t,latitude:o}=exports.Geographic.fromCartesian(e.center),r=exports.Figure.calcEnvelope(t,o,e.radii.x,e.radii.y,e.hpr.heading);i.push(polygon([r]))});let o=null;if(i.length<1)return;if(1===i.length)o=i[0];else{o=i[i.length-1];for(let e=0;e<i.length-1;e++){o=union2(featureCollection([o,i[e]]))}}if(!o||!o.geometry)return;const r=[],n=o.geometry.coordinates;"MultiPolygon"===o.geometry.type?n.forEach(t=>{t.forEach(t=>{const i=t.flat(),o=new e.GeometryInstance({geometry:new e.GroundPolylineGeometry({positions:e.Cartesian3.fromDegreesArray(i),width:2.5}),attributes:{color:e.ColorGeometryInstanceAttribute.fromColor(e.Color.RED)}});r.push(o)})}):"Polygon"===o.geometry.type&&n.forEach(t=>{const i=t.flat(2),o=new e.GeometryInstance({geometry:new e.GroundPolylineGeometry({positions:e.Cartesian3.fromDegreesArray(i),width:2.5}),attributes:{color:e.ColorGeometryInstanceAttribute.fromColor(e.Color.RED)}});r.push(o)});const s=new e.GroundPolylinePrimitive({asynchronous:!1,geometryInstances:r,appearance:new e.PolylineColorAppearance({translucent:!1})});this._border=this.collection.add(s)}add(t){const{center:i,radii:o,hpr:r,data:n,module:s}=t,{ellipsoid:a,label:l}=__classPrivateFieldGet(this,At,"m",Et).call(this,t),c=new e.GeometryInstance({id:exports.Utils.encode(a.id+"_outline",s),geometry:new e.EllipsoidOutlineGeometry({radii:a.radii,stackPartitions:a.stackPartitions,slicePartitions:a.slicePartitions}),attributes:{color:e.ColorGeometryInstanceAttribute.fromColor(a.outlineColor)}}),d=new e.GeometryInstance({id:exports.Utils.encode(a.id,s),geometry:new e.EllipsoidGeometry({radii:a.radii,vertexFormat:e.EllipsoidSurfaceAppearance.VERTEX_FORMAT})}),h=new e.Primitive({asynchronous:!1,modelMatrix:a.modelMatrix,geometryInstances:d,appearance:new e.EllipsoidSurfaceAppearance({aboveGround:!1,material:a.material})}),p=new e.Primitive({asynchronous:!1,modelMatrix:a.modelMatrix,geometryInstances:c,appearance:new e.PerInstanceColorAppearance({flat:!0,renderState:{lineWidth:a.outlineWidth}})});l&&this._labelLayer.add(Object.assign({id:a.id,position:a.center},l)),super._save(a.id,{primitive:h,data:{module:s,center:i,radii:o,hpr:null!=r?r:a.hpr,data:n}}),super._save(a.id+"_outline",{primitive:p,data:{module:s,center:i,radii:o,hpr:null!=r?r:a.hpr,data:n}})}set(t,i){const{center:o,hpr:r,label:n}=i;if(n&&this._labelLayer.set(t,n),!o&&!r)return;const s=super.getEntity(t),a=super.getEntity(t+"_outline");if(!(s&&s.primitive&&a&&a.primitive))return;const{center:l,hpr:c}=s.data,d=null!=o?o:l,h=null!=r?r:c,p=e.Transforms.headingPitchRollToFixedFrame(d,h);s.primitive.modelMatrix=p,a.primitive.modelMatrix=p,Object.assign(s.data,{center:d,hpr:h}),Object.assign(a.data,{center:d,hpr:h})}hide(e){e?(super.hide(e),super.hide(e+"_outline"),this._labelLayer.hide(e)):(super.hide(),this._labelLayer.hide())}show(e){e?(super.show(e),super.show(e+"_outline"),this._labelLayer.show(e)):(super.show(),this._labelLayer.show())}remove(e){e?(super.remove(e),super.remove(e+"_outline"),this._labelLayer.remove(e)):(super.remove(),this._labelLayer.remove())}destroy(){return!!super.destroy()&&(this._labelLayer.destroy(),!0)}}At=new WeakSet,Et=function _EllipsoidLayer_getDefaultOption({id:t=exports.Utils.uuid(),center:i,radii:o,material:r=e.Material.fromType("Color",{color:e.Color.AQUAMARINE.withAlpha(.25)}),outlineColor:n=e.Color.AQUAMARINE.withAlpha(.5),outlineWidth:s=1,stackPartitions:a=16,slicePartitions:l=8,hpr:c=e.HeadingPitchRoll.fromDegrees(0,0,0),label:d,show:h=!0}){return{ellipsoid:{id:t,show:h,center:i,radii:o,material:r,hpr:c,outlineColor:n,outlineWidth:s,stackPartitions:a,slicePartitions:l,modelMatrix:e.Transforms.headingPitchRollToFixedFrame(i,c)},label:d?Object.assign({font:"16px Helvetica",horizontalOrigin:e.HorizontalOrigin.CENTER,verticalOrigin:e.VerticalOrigin.CENTER,fillColor:e.Color.RED,outlineColor:e.Color.WHITE,outlineWidth:1,style:e.LabelStyle.FILL_AND_OUTLINE},d):void 0}},__decorate([generate()],EllipsoidLayer.prototype,"labelLayer",void 0),__decorate([enumerable(!1)],EllipsoidLayer.prototype,"_border",void 0),__decorate([validate,__param(0,is(e.Cartesian3,"center")),__param(0,is(e.Cartesian3,"radii"))],EllipsoidLayer.prototype,"add",null);class GraphicsLayer{constructor(e){this._billboard=new BillboardLayer(e),this._ellipse=new EllipseLayer(e),this._point=new PointLayer(e),this._polygon=new PolygonLayer(e),this._polyline=new PolylineLayer(e),this._rectangle=new RectangleLayer(e)}reset(){this._billboard.remove(),this._ellipse.remove(),this._point.remove(),this._polygon.remove(),this._polyline.remove(),this._rectangle.remove(),this._billboard.show(),this._ellipse.show(),this._point.show(),this._polygon.show(),this._polyline.show(),this._rectangle.show()}destroy(){this._isDestroyed||(this._isDestroyed=!0,this._billboard.destroy(),this._ellipse.destroy(),this._point.destroy(),this._polygon.destroy(),this._polyline.destroy(),this._rectangle.destroy())}}__decorate([generate(!1)],GraphicsLayer.prototype,"isDestroyed",void 0),__decorate([generate()],GraphicsLayer.prototype,"billboard",void 0),__decorate([generate()],GraphicsLayer.prototype,"ellipse",void 0),__decorate([generate()],GraphicsLayer.prototype,"point",void 0),__decorate([generate()],GraphicsLayer.prototype,"polygon",void 0),__decorate([generate()],GraphicsLayer.prototype,"polyline",void 0),__decorate([generate()],GraphicsLayer.prototype,"rectangle",void 0);const{sqrt:It,floor:bt}=Math;class ModelLayer extends Layer{constructor(t){super(t,new e.PrimitiveCollection),xt.add(this),wt.set(this,void 0),Pt.set(this,void 0),this._labelLayer=new LabelLayer(t),this._envelope=new EllipsoidLayer(t),__classPrivateFieldSet(this,Pt,t.camera,"f"),__classPrivateFieldSet(this,wt,t.scene,"f")}calcEnvProjection(){this._envelope.calcEnvProjection()}add(t){const i=Object.create(null,{_save:{get:()=>super._save}});return __awaiter(this,void 0,void 0,function*(){const{data:o,position:r,hpr:n=e.HeadingPitchRoll.fromDegrees(0,0,0),animationLoop:s=e.ModelAnimationLoop.REPEAT}=t,{model:a,label:l,envelope:c}=__classPrivateFieldGet(this,xt,"m",St).call(this,t),d=yield e.Model.fromGltfAsync(a);d.readyEvent.addEventListener(()=>{d.activeAnimations.addAll({loop:s})}),i._save.call(this,exports.Utils.decode(d.id).id,{primitive:d,data:{position:r,hpr:n,data:o,module:t.module}}),l&&this._labelLayer.add(Object.assign({id:a.id,position:r,pixelOffset:new e.Cartesian2(0,-55)},l)),c&&this._envelope.add(Object.assign({id:a.id},c))})}set(t,i){const o=this.getEntity(t);if(!o||!o.primitive)return;const{position:r,hpr:n,color:s,silhouetteColor:a,distanceDisplayCondition:l,label:c,envelope:d}=i;if(r||n){const{position:i,hpr:s}=o.data,a=null!=r?r:i,l=null!=n?n:s,c=e.Transforms.headingPitchRollToFixedFrame(a,l);o.primitive.modelMatrix=c,Object.assign(o.data,{position:a,hpr:l}),this._envelope.set(t,{center:a,hpr:l})}s&&(o.primitive.color=s),a&&(o.primitive.silhouetteColor=a),l&&(o.primitive.distanceDisplayCondition=l),c&&this._labelLayer.set(t,c),d&&this._envelope.set(t,d)}useAction({id:t,path:i,split:o=5,frequency:r=40,loop:n=!1,onActionEnd:s}){if(!i||i.length<2)throw new Error("Positions are required at least two in 'path'.");let a=1,l=0,c=0,d=i[c],h=i[c+1];const p=e.Cartesian3.distanceSquared(d,h),u=o*o;if(p>u){const e=bt(It(p/u));a=e<1?1:e}const m=setInterval(()=>{if(l++,l>a)if(c++,c>=i.length-1){if(!n)return clearInterval(m),void(null==s||s(h));l=0,c=0,d=i[c],h=i[c+1]}else l=0,c++,d=i[c],h=i[c+1];const o=e.Cartesian3.lerp(d,h,l/a,new e.Cartesian3);this.set(t,{position:o})},r);return()=>clearInterval(m)}usePersonView(e,t){switch(null==t?void 0:t.view){case exports.ViewAngle.FIRST:return this._useFirstPersonView(e,null==t?void 0:t.sensitivity);case exports.ViewAngle.THIRD:default:return this._useThirdPersonView(e,null==t?void 0:t.offset,null==t?void 0:t.sensitivity)}}_useThirdPersonView(t,i=new e.Cartesian3(50,0,20),o=.1){const r=e.Math.PI,n=this.getData(t);if(!n)return()=>{};const s=new e.HeadingPitchRoll(n.hpr.heading,0,0),a=__classPrivateFieldGet(this,wt,"f").preUpdate.addEventListener(()=>{const t=e.Matrix3.fromRotationZ(r),o=e.Matrix4.fromRotationTranslation(t),a=e.Transforms.headingPitchRollToFixedFrame(n.position,s);e.Matrix4.multiply(a,o,a),__classPrivateFieldGet(this,Pt,"f").lookAtTransform(a,i)});let l;const c=new e.ScreenSpaceEventHandler(__classPrivateFieldGet(this,wt,"f").canvas);c.setInputAction(({position:e})=>{l={x:e.x,y:e.y}},e.ScreenSpaceEventType.LEFT_DOWN),c.setInputAction(({startPosition:t,endPosition:i})=>{if(!l)return;const r=t.x-i.x,n=t.y-i.y;s.heading=(s.heading-e.Math.toRadians(r*o))%e.Math.TWO_PI,s.pitch=(s.pitch+e.Math.toRadians(n*o))%e.Math.TWO_PI},e.ScreenSpaceEventType.MOUSE_MOVE),c.setInputAction(()=>{l=void 0},e.ScreenSpaceEventType.LEFT_UP),c.setInputAction(e=>{let t=i.x;e<0?t*=1.2:t/=1.2,t<=0&&(t=0),i.x=t},e.ScreenSpaceEventType.WHEEL);return()=>{a(),__classPrivateFieldGet(this,Pt,"f").lookAtTransform(e.Matrix4.IDENTITY),c.destroy()}}_useFirstPersonView(t,i=.1){const o=e.Math.PI,r=new e.Cartesian3(20,0,0),n=this.getEntity(t);if(!n)return()=>{};n.primitive.show=!1;const s=n.data,a=s.hpr.clone(),l=__classPrivateFieldGet(this,wt,"f").preUpdate.addEventListener(()=>{const t=e.Matrix3.fromRotationZ(o),i=e.Matrix4.fromRotationTranslation(t),n=e.Transforms.headingPitchRollToFixedFrame(s.position,a);e.Matrix4.multiply(n,i,n),__classPrivateFieldGet(this,Pt,"f").lookAtTransform(n,r)});let c;const d=new e.ScreenSpaceEventHandler(__classPrivateFieldGet(this,wt,"f").canvas);d.setInputAction(({position:e})=>{c={x:e.x,y:e.y}},e.ScreenSpaceEventType.LEFT_DOWN),d.setInputAction(({startPosition:t,endPosition:o})=>{if(!c)return;const r=t.x-o.x,n=t.y-o.y;a.heading=(a.heading+e.Math.toRadians(r*i))%e.Math.TWO_PI,a.pitch=(a.pitch-e.Math.toRadians(n*i))%e.Math.TWO_PI},e.ScreenSpaceEventType.MOUSE_MOVE),d.setInputAction(()=>{c=void 0},e.ScreenSpaceEventType.LEFT_UP),d.setInputAction(e=>{let t=r.x;e<0?t*=1.2:t/=1.2,t<=0&&(t=0),r.x=t},e.ScreenSpaceEventType.WHEEL);return()=>{n.primitive.show=!0,l(),__classPrivateFieldGet(this,Pt,"f").lookAtTransform(e.Matrix4.IDENTITY),d.destroy()}}hide(e){e?(super.hide(e),this._labelLayer.hide(e),this._envelope.hide(e)):(super.hide(),this._labelLayer.hide(),this._envelope.hide())}show(e){e?(super.show(e),this._labelLayer.show(e),this._envelope.show(e)):(super.show(),this._labelLayer.show(),this._envelope.show())}remove(e){e?(super.remove(e),this._labelLayer.remove(e),this._envelope.remove(e)):(super.remove(),this._labelLayer.remove(),this._envelope.remove())}destroy(){return!!super.destroy()&&(this._labelLayer.destroy(),this._envelope.destroy(),!0)}}wt=new WeakMap,Pt=new WeakMap,xt=new WeakSet,St=function _ModelLayer_getDefaultOption({id:t=exports.Utils.uuid(),module:i,url:o,position:r,show:n=!0,scale:s=1,minimumPixelSize:a=24,asynchronous:l=!0,hpr:c=e.HeadingPitchRoll.fromDegrees(0,0,0),color:d,colorBlendMode:h=e.ColorBlendMode.MIX,colorBlendAmount:p=.5,silhouetteColor:u=e.Color.LIGHTYELLOW,silhouetteSize:m=1,hightReference:g,distanceDisplayCondition:v,label:f,envelope:C}){const y=e.Transforms.headingPitchRollToFixedFrame(r,c);return{model:{id:exports.Utils.encode(t,i),url:o,show:n,scale:s,minimumPixelSize:a,asynchronous:l,color:d,colorBlendAmount:p,colorBlendMode:h,silhouetteColor:u,silhouetteSize:m,hightReference:g,distanceDisplayCondition:v,modelMatrix:y},envelope:C?Object.assign({center:r,hpr:c},C):void 0,label:f?Object.assign({font:"16px Helvetica",horizontalOrigin:e.HorizontalOrigin.CENTER,verticalOrigin:e.VerticalOrigin.CENTER,fillColor:e.Color.RED,outlineColor:e.Color.WHITE,outlineWidth:1,style:e.LabelStyle.FILL_AND_OUTLINE},f):void 0}},__decorate([generate()],ModelLayer.prototype,"labelLayer",void 0),__decorate([generate()],ModelLayer.prototype,"envelope",void 0),__decorate([validate,__param(0,is(e.Cartesian3,"position"))],ModelLayer.prototype,"add",null);const Rt="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwgAADsIBFShKgAAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xOdTWsmQAAANMSURBVFhH7dc9j41BGMbx3bVrNwQJEq+dlwpB+AB0FEoaJQU+goSOEC3fAAndNgpaGq0CBRWV0ImIOK7fyT2bk33snuMUu4qd5J9M5r7ua56ZuWfO7sRa++9br9drTIapMB1mwmyYK/SNidHQ9vPGbs2gzNaF9WFD2BK2hR1hV6FvTIyGVs54H9KSgtVYGdOtYXfYFw6F4+FkoW9MjIZWjlweo39EE1eilWwKO8OBcCKcDufChXCx0DcmRkMrRy6P0T+ihG1yW7onHA6nwvlwNVwPt8K9Qt+YGA2tHLk8Fj5i2UYQnJut8/UMjoYz4VK4Ee6HR2E+PCv0jYnR0MqRy4MXz35NLNkEg+JxfrbQKhhdCXfCw/A8vA5vwttC35gYDa0cuTx48eRds/2lJegLbZcico620moYPgkvw7vwKXwJ3wp9Y2I0tHLk8uDFk/dkTddtCTonX6qSFZPztKVWxfhD+Bq+h5/hV6FvTIyGVo5cHrx48p6q6botQQ+JonGdVLSicq621upM8COY9PcijInR0MqRy4MXT97TNV23JahQPCjutGulshWX87XFVjk4eWuDH0FDK0cuD148ec/UdN2WoCfVq+ZhcbddLxWuyJyzrV48eWttnIZWjlwevHjynq3pui1B77qn1evmgXHHXTOVrtja6pdqYjS0cuTy4MWT91xN122CJVq1D1j1I1CE28NgET4OCupzGLUIaeXIHSxC3ssWYbuG+4Orcy08CC/C+zDqNaSVI5cHL55Dr2F7iLzfHg9bdzO4Tq/Cx2ACq7TVJoW+MTEaWjlyefDiOfQhGnyKDwZffjncDU8DY6uzxc5ZsUHfmBgNrRy5PHiN9BTDD8bG4AfkSDgbvGYMrcrWOl9FptKhb0yMhlaOXB68eA79MWq7oBg3h73hWGBkNbbUuSouFe6aQd+YGA2tHLk8eA3/OdYIglpwJRUNA6uwlc5TUans28Edh74xMRpaOXJ58Br+B4lGVLSP8PW20DkqJuaulYk8MNA3JkZDK0fuwuQYqTVxJdo656eIVLLr5E57WLxu0DcmRkMrR+6/Td5aSwrOTfGoYNfIlnpQvGqeVugbE6OhldM/c4zdmkGZWc3K/GOy1lamTUz8Af7rUXt1Ah4SAAAAAElFTkSuQmCC",_t="data:image/png;base64,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";var Tt,Dt,Ft,Mt,Lt,Gt;class ParticleLayer extends Layer{constructor(t){super(t,new e.PrimitiveCollection),Tt.add(this)}add(t){var i;const o=null!==(i=t.id)&&void 0!==i?i:exports.Utils.uuid(),r=Object.assign(Object.assign({modelMatrix:e.Transforms.eastNorthUpToFixedFrame(t.position)},t),{id:exports.Utils.encode(o,t.module)}),n=__classPrivateFieldGet(this,Tt,"m",Gt).call(this,r);super._save(o,{primitive:n,data:{module:t.module,data:r.data}}),r.lifetime&&r.lifetime!==Number.MAX_VALUE&&setTimeout(()=>{this.remove(r.id)},1e3*r.lifetime)}set(t,{position:i,hpr:o,translation:r,emissionRate:n,startScale:s,endScale:a,maximumImageSize:l,minimumImageSize:c,maximumMass:d,minimumMass:h,maximumParticleLife:p,minimumParticleLife:u,maximumSpeed:m,minimumSpeed:g}){var v;const f=null===(v=super.getEntity(t))||void 0===v?void 0:v.primitive;if(f&&(n&&(f.emissionRate=n),s&&(f.startScale=s),a&&(f.endScale=a),d&&(f.maximumMass=d),h&&(f.minimumMass=h),p&&(f.maximumParticleLife=p),u&&(f.minimumParticleLife=u),m&&(f.maximumSpeed=m),g&&(f.minimumSpeed=g),l&&(f.maximumImageSize.x=l,f.maximumImageSize.y=l),c&&(f.minimumImageSize.x=c,f.minimumImageSize.y=c),i&&(f.modelMatrix=e.Transforms.eastNorthUpToFixedFrame(i)),o)){const t=new e.TranslationRotationScale(r);t.rotation=e.Quaternion.fromHeadingPitchRoll(o,new e.Quaternion);const i=e.Matrix4.fromTranslationRotationScale(t,new e.Matrix4);f.emitterModelMatrix=i}}addFire(e){const t=__classPrivateFieldGet(this,Tt,"m",Dt).call(this,e),i=__classPrivateFieldGet(this,Tt,"m",Gt).call(this,t);super._save(t.id,{primitive:i,data:{}}),setTimeout(()=>{(void 0===e.smoke||e.smoke)&&this.addSmoke(Object.assign(Object.assign({},e),{id:e.id+"-smoke"}))},1e3),t.lifetime&&t.lifetime!==Number.MAX_VALUE&&setTimeout(()=>{this.remove(t.id)},1e3*t.lifetime)}addSmoke(e){const t=__classPrivateFieldGet(this,Tt,"m",Ft).call(this,e),i=__classPrivateFieldGet(this,Tt,"m",Gt).call(this,t);super._save(t.id,{primitive:i,data:{}}),t.lifetime&&t.lifetime!==Number.MAX_VALUE&&setTimeout(()=>{this.remove(t.id)},1e3*t.lifetime)}addBlast(e){const t=__classPrivateFieldGet(this,Tt,"m",Mt).call(this,e),i=__classPrivateFieldGet(this,Tt,"m",Gt).call(this,t);super._save(t.id,{primitive:i,data:{}}),setTimeout(()=>{(void 0===e.fire||e.fire)&&this.addFire(Object.assign(Object.assign({},e),{id:e.id+"-fire"}))},2e3),setTimeout(()=>{this.remove(t.id)},1e3*t.lifetime)}addFlame(e){const t=__classPrivateFieldGet(this,Tt,"m",Lt).call(this,e),i=__classPrivateFieldGet(this,Tt,"m",Gt).call(this,t);super._save(t.id,{primitive:i,data:{}})}remove(e){if(e){[e,e+"-fire",e+"-smoke"].forEach(e=>{const t=super.getEntity(e);t&&(this.collection.remove(t.primitive),this.cache.delete(e))})}else super.remove()}}Tt=new WeakSet,Dt=function _ParticleLayer_getFireDefaultOption(t){var i,o,r,n,s,a,l,c,d,h;const p={};void 0===t.size?Object.assign(p,{startScale:null!==(i=t.startScale)&&void 0!==i?i:.2,endScale:null!==(o=t.endScale)&&void 0!==o?o:.8,maximumSpeed:null!==(r=t.maximumSpeed)&&void 0!==r?r:3}):"small"===t.size?Object.assign(p,{startScale:.1,endScale:.4,maximumSpeed:2}):"normal"===t.size?Object.assign(p,{startScale:.2,endScale:.8,maximumSpeed:3}):"large"===t.size&&Object.assign(p,{startScale:.4,endScale:1.6,maximumSpeed:5});const u=null!==(n=t.hpr)&&void 0!==n?n:new e.HeadingPitchRoll(0,0,0),m=new e.TranslationRotationScale;m.translation=null!==(s=t.translation)&&void 0!==s?s:e.Cartesian3.fromElements(0,0,0),m.rotation=e.Quaternion.fromHeadingPitchRoll(u,new e.Quaternion);const g=e.Matrix4.fromTranslationRotationScale(m,new e.Matrix4);return Object.assign({id:null!==(a=t.id)&&void 0!==a?a:exports.Utils.uuid(),image:"data:image/png;base64,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",startColor:null!==(l=t.startColor)&&void 0!==l?l:e.Color.RED.withAlpha(.1),endColor:null!==(c=t.endColor)&&void 0!==c?c:e.Color.YELLOW.withAlpha(.5),minimumSpeed:null!==(d=t.minimumSpeed)&&void 0!==d?d:2,imageSize:new e.Cartesian2(20,20),emissionRate:5,lifetime:null!==(h=t.lifetime)&&void 0!==h?h:Number.MAX_VALUE,loop:!t.lifetime,sizeInMeters:!0,emitter:new e.CircleEmitter(2),emitterModelMatrix:g,modelMatrix:e.Transforms.eastNorthUpToFixedFrame(t.position)},p)},Ft=function _ParticleLayer_getSmokeDefaultOption(t){var i,o,r,n,s,a,l,c,d,h,p;const u={fast:8,normal:16,enduring:Number.MAX_VALUE},m={};void 0===t.size?Object.assign(m,{startScale:null!==(i=t.startScale)&&void 0!==i?i:.3,endScale:null!==(o=t.endScale)&&void 0!==o?o:.9,maximumSpeed:null!==(r=t.maximumSpeed)&&void 0!==r?r:6}):"small"===t.size?Object.assign(m,{startScale:.1,endScale:.4,maximumSpeed:6}):"normal"===t.size?Object.assign(m,{startScale:.3,endScale:.9,maximumSpeed:6}):"large"===t.size&&Object.assign(m,{startScale:.4,endScale:1.7,maximumSpeed:20});const g=null!==(n=t.hpr)&&void 0!==n?n:new e.HeadingPitchRoll(0,0,0),v=new e.TranslationRotationScale;v.translation=null!==(s=t.translation)&&void 0!==s?s:e.Cartesian3.fromElements(0,0,0),v.rotation=e.Quaternion.fromHeadingPitchRoll(g,new e.Quaternion);const f=e.Matrix4.fromTranslationRotationScale(v,new e.Matrix4);return Object.assign({id:null!==(a=t.id)&&void 0!==a?a:exports.Utils.uuid(),image:_t,startColor:null!==(l=t.startColor)&&void 0!==l?l:e.Color.fromCssColorString("#303333").withAlpha(.1),endColor:null!==(c=t.endColor)&&void 0!==c?c:e.Color.fromCssColorString("#888888").withAlpha(.5),minimumParticleLife:1,maximumParticleLife:3,minimumSpeed:null!==(d=t.minimumSpeed)&&void 0!==d?d:6,imageSize:new e.Cartesian2(20,20),emissionRate:5,lifetime:null!==(h=t.lifetime)&&void 0!==h?h:u[null!==(p=t.duration)&&void 0!==p?p:"enduring"],loop:!t.lifetime,sizeInMeters:!0,emitter:new e.CircleEmitter(.1),emitterModelMatrix:f,modelMatrix:e.Transforms.eastNorthUpToFixedFrame(t.position)},m)},Mt=function _ParticleLayer_getBlastDefaultOption(t){var i,o,r,n,s,a,l;const c={};void 0===t.size?Object.assign(c,{endScale:null!==(i=t.endScale)&&void 0!==i?i:.5,maximumSpeed:null!==(o=t.maximumSpeed)&&void 0!==o?o:1}):"small"===t.size?Object.assign(c,{endScale:.5,maximumSpeed:1}):"normal"===t.size?Object.assign(c,{endScale:1,maximumSpeed:2}):"large"===t.size&&Object.assign(c,{endScale:2,maximumSpeed:5});const d=null!==(r=t.hpr)&&void 0!==r?r:new e.HeadingPitchRoll(0,0,0),h=new e.TranslationRotationScale;h.translation=null!==(n=t.translation)&&void 0!==n?n:e.Cartesian3.fromElements(0,0,0),h.rotation=e.Quaternion.fromHeadingPitchRoll(d,new e.Quaternion);const p=e.Matrix4.fromTranslationRotationScale(h,new e.Matrix4);return Object.assign({id:null!==(s=t.id)&&void 0!==s?s:exports.Utils.uuid(),image:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABzCAYAAADdVU0oAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkRGQjQ3Qjg2NUQ4MTExRUNBMzE5QTdBMDU2MkVFRTAxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkRGQjQ3Qjg3NUQ4MTExRUNBMzE5QTdBMDU2MkVFRTAxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6REZCNDdCODQ1RDgxMTFFQ0EzMTlBN0EwNTYyRUVFMDEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6REZCNDdCODU1RDgxMTFFQ0EzMTlBN0EwNTYyRUVFMDEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz68+NukAAC2P0lEQVR42uS9V4xm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",startColor:null!==(a=t.startColor)&&void 0!==a?a:e.Color.fromCssColorString("#303333").withAlpha(.1),endColor:null!==(l=t.endColor)&&void 0!==l?l:e.Color.fromCssColorString("#888888").withAlpha(.5),startScale:0,minimumSpeed:1,minimumMass:1,maximumMass:2,minimumParticleLife:.5,maximumParticleLife:1.5,imageSize:new e.Cartesian2(20,20),emissionRate:5,lifetime:2,loop:!1,sizeInMeters:!0,emitter:new e.ConeEmitter(e.Math.toRadians(60)),emitterModelMatrix:p,modelMatrix:e.Transforms.eastNorthUpToFixedFrame(t.position)},c)},Lt=function _ParticleLayer_getFlameDefaultOption(t){var i,o,r,n,s,a,l,c,d;const h={};void 0===t.size?Object.assign(h,{startScale:null!==(i=t.startScale)&&void 0!==i?i:2,endScale:null!==(o=t.endScale)&&void 0!==o?o:.2,speed:null!==(r=t.speed)&&void 0!==r?r:20}):"small"===t.size?Object.assign(h,{startScale:.5,endScale:2,speed:10}):"normal"===t.size?Object.assign(h,{startScale:1,endScale:4,speed:20}):"large"===t.size&&Object.assign(h,{startScale:2.5,endScale:10,speed:50});const p=null!==(n=t.hpr)&&void 0!==n?n:new e.HeadingPitchRoll(0,0,e.Math.toRadians(90)),u=new e.TranslationRotationScale;u.translation=null!==(s=t.translation)&&void 0!==s?s:e.Cartesian3.fromElements(0,0,0),u.rotation=e.Quaternion.fromHeadingPitchRoll(p,new e.Quaternion);const m=e.Matrix4.fromTranslationRotationScale(u,new e.Matrix4);return Object.assign({id:null!==(a=t.id)&&void 0!==a?a:exports.Utils.uuid(),image:_t,startColor:null!==(l=t.startColor)&&void 0!==l?l:e.Color.ORANGERED.withAlpha(.1),endColor:null!==(c=t.endColor)&&void 0!==c?c:e.Color.LIGHTGOLDENRODYELLOW.withAlpha(.7),particleLife:1,imageSize:new e.Cartesian2(1,1),emissionRate:60,lifetime:null!==(d=t.lifetime)&&void 0!==d?d:Number.MAX_VALUE,loop:!t.lifetime,sizeInMeters:!0,emitter:new e.CircleEmitter(.1),emitterModelMatrix:m,modelMatrix:e.Transforms.eastNorthUpToFixedFrame(t.position)},h)},Gt=function _ParticleLayer_createParticleSystem(t){return new e.ParticleSystem(t)},__decorate([validate,__param(0,is(e.Cartesian3,"position"))],ParticleLayer.prototype,"add",null);class PointLayer extends Layer{constructor(t){super(t,new e.PointPrimitiveCollection),this._labelLayer=new LabelLayer(t)}add({id:t=exports.Utils.uuid(),module:i,position:o,show:r=!0,pixelSize:n=5,color:s=e.Color.RED,outlineWidth:a=1,outlineColor:l,scaleByDistance:c,disableDepthTestDistance:d=Number.POSITIVE_INFINITY,distanceDisplayCondition:h,data:p,label:u}){const m={id:exports.Utils.encode(t,i),show:r,color:s,position:o,outlineColor:null!=l?l:s,outlineWidth:a,pixelSize:n,scaleByDistance:c,disableDepthTestDistance:d,distanceDisplayCondition:h};u&&this._labelLayer.add(Object.assign({id:t,module:i,position:o},u)),super._save(t,{primitive:m,data:{data:p,module:i}})}set(e,t){var i;const o=Object.assign({},t);delete o.label;const r=null===(i=this.getEntity(e))||void 0===i?void 0:i.primitive;r&&Object.assign(r,o),t.label&&this._labelLayer.set(e,t.label)}hide(e){e?(super.hide(e),this._labelLayer.hide(e)):(super.hide(),this._labelLayer.hide())}show(e){e?(super.show(e),this._labelLayer.show(e)):(super.show(),this._labelLayer.show())}remove(e){e?(super.remove(e),this._labelLayer.remove(e)):(super.remove(),this._labelLayer.remove())}destroy(){return!!super.destroy()&&(this._labelLayer.destroy(),!0)}}__decorate([generate()],PointLayer.prototype,"labelLayer",void 0),__decorate([validate,__param(0,is(e.Cartesian3,"position"))],PointLayer.prototype,"add",null);const Bt=`\nin float v_polylineAngle;\n\nmat2 rotate(float rad) {\n float c = cos(rad);\n float s = sin(rad);\n return mat2(\n c, s,\n -s, c\n );\n}\n\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\n czm_material material = czm_getDefaultMaterial(materialInput);\n\n vec4 fragColor = color;\n vec2 pos = rotate(v_polylineAngle) * gl_FragCoord.xy; \n fragColor.a = sin(fract(pos.x / (length * czm_pixelRatio) - czm_frameNumber / 60.0 * direction * speed) * ${Math.PI});\n\n material.diffuse = fragColor.rgb;\n material.alpha = fragColor.a;\n return material;\n}`,Ot="\nuniform vec4 u_intersectionColor;\nuniform float u_intersectionWidth;\nuniform vec4 u_lineColor;\nuniform vec4 u_colors[5];\nuniform float u_steps[3];\n\nbool inSensorShadow(vec3 coneVertexWC, vec3 pointWC) {\n // Diagonal matrix from the unscaled ellipsoid space to the scaled space. \n vec3 D = czm_ellipsoidInverseRadii;\n\n // Sensor vertex in the scaled ellipsoid space\n vec3 q = D * coneVertexWC;\n float qMagnitudeSquared = dot(q, q);\n float test = qMagnitudeSquared - 1.0;\n\n // Sensor vertex to fragment vector in the ellipsoid's scaled space\n vec3 temp = D * pointWC - q;\n float d = dot(temp, q);\n\n // Behind silhouette plane and inside silhouette cone\n return (d < -test) && (d / length(temp) < -sqrt(test));\n}\n\nvec4 getLineColor() {\n return u_lineColor;\n}\n\nvec4 getIntersectionColor() {\n return u_intersectionColor;\n}\n\nfloat getIntersectionWidth() {\n return u_intersectionWidth;\n}\n\nvec2 sensor2dTextureCoordinates(float sensorRadius, vec3 pointMC) {\n // (s, t) both in the range [0, 1]\n float t = pointMC.z / sensorRadius;\n float s = 1.0 + (atan(pointMC.y, pointMC.x) / czm_twoPi);\n s = s - floor(s);\n\n return vec2(s, t);\n}\n\nvec4 getGradientColor(float radii) {\n vec4 c0 = u_colors[0];\n vec4 c1 = u_colors[1];\n vec4 c2 = u_colors[2];\n vec4 c3 = u_colors[3];\n vec4 c4 = u_colors[4];\n\n float s0 = 0.0;\n float s1 = u_steps[0];\n float s2 = u_steps[1];\n float s3 = u_steps[2];\n float s4 = 1.0;\n\n float p0 = 1.0 - step(s1, radii);\n float p1 = 1.0 - step(s2, radii) - p0;\n float p2 = 1.0 - step(s3, radii) - p1 - p0;\n float p3 = 1.0 - p2 - p1 - p0;\n\n vec4 m0 = mix(c0, c1, smoothstep(s0, s1, radii));\n vec4 m1 = mix(c1, c2, smoothstep(s1, s2, radii));\n vec4 m2 = mix(c2, c3, smoothstep(s2, s3, radii));\n vec4 m3 = mix(c3, c4, smoothstep(s3, s4, radii));\n\n return p0 * m0 + p1 * m1 + p2 * m2 + p3 * m3;\n}",kt='\nuniform bool u_showIntersection;\nuniform bool u_showThroughEllipsoid;\nuniform bool u_showWaves;\nuniform bool u_showGradient;\n\nuniform float u_radius;\nuniform float u_xHalfAngle;\nuniform float u_yHalfAngle;\nuniform float u_normalDirection;\nuniform float u_type;\n\nin vec3 v_position;\nin vec3 v_positionWC;\nin vec3 v_positionEC;\nin vec3 v_normalEC;\n\nvec4 getColor(float sensorRadius, vec3 pointEC) {\n czm_materialInput materialInput;\n\n vec3 pointMC = (czm_inverseModelView * vec4(pointEC, 1.0)).xyz;\n materialInput.st = sensor2dTextureCoordinates(sensorRadius, pointMC);\n materialInput.str = pointMC / sensorRadius;\n\n vec3 positionToEyeEC = -v_positionEC;\n materialInput.positionToEyeEC = positionToEyeEC;\n\n vec3 normalEC = normalize(v_normalEC);\n materialInput.normalEC = u_normalDirection * normalEC;\n\n czm_material material = czm_getMaterial(materialInput);\n\n return mix(czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC), vec4(material.diffuse, material.alpha), 0.4);\n}\n\nbool isOnBoundary(float value, float epsilon) {\n float width = getIntersectionWidth();\n float tolerance = width * epsilon;\n\n float delta = max(abs(dFdx(value)), abs(dFdy(value)));\n float pixels = width * delta;\n float temp = abs(value);\n // There are a couple things going on here.\n // First we test the value at the current fragment to see if it is within the tolerance.\n // We also want to check if the value of an adjacent pixel is within the tolerance,\n // but we don\'t want to admit points that are obviously not on the surface.\n // For example, if we are looking for "value" to be close to 0, but value is 1 and the adjacent value is 2,\n // then the delta would be 1 and "temp - delta" would be "1 - 1" which is zero even though neither of\n // the points is close to zero.\n return temp < tolerance && temp < pixels || (delta < 10.0 * tolerance && temp - delta < tolerance && temp < pixels);\n}\n\nvec4 shade(bool isOnBoundary) {\n if(u_showIntersection && isOnBoundary) {\n return getIntersectionColor();\n }\n if(u_type == 1.0) {\n return getLineColor();\n }\n return getColor(u_radius, v_positionEC);\n}\n\nfloat ellipsoidSurfaceFunction(vec3 point) {\n vec3 scaled = czm_ellipsoidInverseRadii * point;\n return dot(scaled, scaled) - 1.0;\n}\n\nvoid main() {\n vec3 sensorVertexWC = czm_model[3].xyz; // (0.0, 0.0, 0.0) in model coordinates\n vec3 sensorVertexEC = czm_modelView[3].xyz; // (0.0, 0.0, 0.0) in model coordinates\n\n //vec3 pixDir = normalize(v_position);\n float positionX = v_position.x;\n float positionY = v_position.y;\n float positionZ = v_position.z;\n\n vec3 zDir = vec3(0.0, 0.0, 1.0);\n vec3 lineX = vec3(positionX, 0, positionZ);\n vec3 lineY = vec3(0, positionY, positionZ);\n float resX = dot(normalize(lineX), zDir);\n if(resX < cos(u_xHalfAngle) - 0.00001) {\n discard;\n }\n float resY = dot(normalize(lineY), zDir);\n if(resY < cos(u_yHalfAngle) - 0.00001) {\n discard;\n }\n\n float ellipsoidValue = ellipsoidSurfaceFunction(v_positionWC);\n\n // Occluded by the ellipsoid?\n if(!u_showThroughEllipsoid) {\n // Discard if in the ellipsoid\n // PERFORMANCE_IDEA: A coarse check for ellipsoid intersection could be done on the CPU first.\n if(ellipsoidValue < 0.0) {\n discard;\n }\n\n // Discard if in the sensor\'s shadow\n if(inSensorShadow(sensorVertexWC, v_positionWC)) {\n discard;\n }\n }\n\n // Notes: Each surface functions should have an associated tolerance based on the floating point error.\n bool isOnEllipsoid = isOnBoundary(ellipsoidValue, czm_epsilon3);\n //isOnEllipsoid = false;\n //if((resX >= 0.8 && resX <= 0.81)||(resY >= 0.8 && resY <= 0.81)){\n /*if(false){\n out_FragColor = vec4(1.0,0.0,0.0,1.0);\n }else{\n out_FragColor = shade(isOnEllipsoid);\n }\n */\n out_FragColor = shade(isOnEllipsoid);\n\n float pi = 3.1415926535897;\n float radii = sqrt(positionX * positionX + positionY * positionY + positionZ * positionZ);\n\n // vec4 red = vec4(1.0, 0.0, 0.0, 0.3);\n // vec4 green = vec4(0.0, 1.0, 0.0, 0.3);\n // vec4 blue = vec4(0.0, 0.0, 1.0, 0.3);\n\n // vec4 c0 = red;\n // vec4 c1 = vec4(red.rgb + green.rgb, 0.3);\n // vec4 c2 = green;\n // vec4 c3 = vec4(green.rgb + blue.rgb, 0.3);\n // vec4 c4 = blue;\n\n // float s0 = 0.0;\n // float s1 = 0.25;\n // float s2 = 0.5;\n // float s3 = 0.75;\n // float s4 = 1.0;\n\n // float p0 = 1.0 - step(s1, radii);\n // float p1 = 1.0 - step(s2, radii) - p0;\n // float p2 = 1.0 - step(s3, radii) - p1 - p0;\n // float p3 = 1.0 - p2 - p1 - p0;\n\n // vec4 m0 = mix(c0, c1, smoothstep(s0, s1, radii));\n // vec4 m1 = mix(c1, c2, smoothstep(s1, s2, radii));\n // vec4 m2 = mix(c2, c3, smoothstep(s2, s3, radii));\n // vec4 m3 = mix(c3, c4, smoothstep(s3, s4, radii));\n\n // out_FragColor = p0 * m0 + p1 * m1 + p2 * m2 + p3 * m3;\n\n if(u_showGradient) {\n out_FragColor = getGradientColor(radii);\n }\n\n if(u_showWaves) {\n float time = fract(czm_frameNumber / 360.0);\n float waves = (sin(12.0 * pi * (radii - time)) + 1.0) / 2.0;\n out_FragColor += out_FragColor * waves;\n }\n}',Nt="\nin vec4 position;\nin vec3 normal;\n\nout vec3 v_position;\nout vec3 v_positionWC;\nout vec3 v_positionEC;\nout vec3 v_normalEC;\n\nvoid main() {\n gl_Position = czm_modelViewProjection * position;\n v_position = vec3(position);\n v_positionWC = (czm_model * position).xyz;\n v_positionEC = (czm_modelView * position).xyz;\n v_normalEC = czm_normal * normal;\n}",Ht="\nin vec3 position;\nin vec2 st;\n\nout vec2 textureCoordinate;\n\nvoid main() {\n textureCoordinate = st;\n gl_Position = vec4(position, 1.0);\n}";class PolylineFlowingDashMaterial extends e.Material{constructor(t){var i,o;super({strict:null==t?void 0:t.strict,fabric:{type:null!==(i=null==t?void 0:t.fabric.type)&&void 0!==i?i:"PolylineFlowingDash",uniforms:Object.assign({color:e.Color.RED,gapColor:e.Color.TRANSPARENT,pattern:255,length:16,direction:1,speed:2},null==t?void 0:t.fabric.uniforms),source:"\nuniform vec4 color;\nuniform vec4 gapColor;\nuniform float length;\nuniform float pattern;\nin float v_polylineAngle;\n\nconst float maskLength = 16.0;\n\nmat2 rotate(float rad) {\n float c = cos(rad);\n float s = sin(rad);\n return mat2(\n c, s,\n -s, c\n );\n}\n\nczm_material czm_getMaterial(czm_materialInput materialInput)\n{\n czm_material material = czm_getDefaultMaterial(materialInput);\n\n vec2 pos = rotate(v_polylineAngle) * gl_FragCoord.xy;\n\n // Get the relative position within the dash from 0 to 1\n float dashPosition = fract(pos.x / (length * czm_pixelRatio) - czm_frameNumber / 60.0 * direction * speed);\n // Figure out the mask index.\n float maskIndex = floor(dashPosition * maskLength);\n // Test the bit mask.\n float maskTest = floor(pattern / pow(2.0, maskIndex));\n vec4 fragColor = (mod(maskTest, 2.0) < 1.0) ? gapColor : color;\n if (fragColor.a < 0.005) { // matches 0/255 and 1/255\n discard;\n }\n\n fragColor = czm_gammaCorrect(fragColor);\n material.emission = fragColor.rgb;\n material.alpha = fragColor.a;\n return material;\n}"},translucent:null!==(o=null==t?void 0:t.translucent)&&void 0!==o?o:e=>e.uniforms.color.alpha<1,magnificationFilter:null==t?void 0:t.magnificationFilter,minificationFilter:null==t?void 0:t.minificationFilter})}}class PolylineFlowingWaveMaterial extends e.Material{constructor(t){var i;super({strict:null==t?void 0:t.strict,fabric:{type:null!==(i=null==t?void 0:t.fabric.type)&&void 0!==i?i:"PolylineFlowingWave",uniforms:Object.assign({color:e.Color.RED,direction:1,length:48,speed:2},null==t?void 0:t.fabric.uniforms),source:Bt},translucent:null==t?void 0:t.translucent,magnificationFilter:null==t?void 0:t.magnificationFilter,minificationFilter:null==t?void 0:t.minificationFilter})}}class PolylineTrailingMaterial extends e.Material{constructor(t){var i,o;super({strict:null==t?void 0:t.strict,fabric:{type:null!==(i=null==t?void 0:t.fabric.type)&&void 0!==i?i:"PolylineTrailing",uniforms:Object.assign(Object.assign({color:e.Color.RED.withAlpha(.5),speed:10,direction:1},null==t?void 0:t.fabric.uniforms),{image:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAAgCAYAAABkS8DlAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAADSSURBVHja7NYxEoUgDEDBYM39z2qHtZViwMFxt1FJnF/98ZXWWkRE7LWWOOt5Lsm9q/vsbu9Zdtazs/J19O5bs1XPZrwze/6V31zxbOZs1n905Wt2p3f25GzE7ohv6q3nLQCA3xEAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAAABAAAIAABAAAAAAgAAEAAAgAAAAAQAACAAAEAAAAACAAAQAACAAAAABAAAIAAAAAEAAAgAAEAAAAACAAAQAACAAAAA8g4AAAD//wMA4WEFTJOT5UIAAAAASUVORK5CYII="}),source:"\nczm_material czm_getMaterial(czm_materialInput materialInput) {\n czm_material material = czm_getDefaultMaterial(materialInput);\n vec2 st = materialInput.st;\n vec4 colorImage = texture(image, vec2(fract((st.s * direction - speed * czm_frameNumber * 0.001)), st.t));\n material.alpha = colorImage.a * color.a;\n material.diffuse = color.rgb;\n return material;\n}"},translucent:null===(o=null==t?void 0:t.translucent)||void 0===o||o,magnificationFilter:null==t?void 0:t.magnificationFilter,minificationFilter:null==t?void 0:t.minificationFilter})}}var Wt;let Ut=Wt=class CustomMaterial{static getMaterialByType(e){return Wt.materialMap.get(e)}};Ut.materialMap=new Map([["PolylineFlowingDash",PolylineFlowingDashMaterial],["PolylineFlowingWave",PolylineFlowingWaveMaterial],["PolylineTrailing",PolylineTrailingMaterial]]),__decorate([validate,__param(0,is(String))],Ut,"getMaterialByType",null),Ut=Wt=__decorate([freeze],Ut);class PolylineLayer extends Layer{constructor(t){super(t,new e.PrimitiveCollection)}add({id:t=exports.Utils.uuid(),lines:i,asynchronous:o=!0,width:r=2,arcType:n=e.ArcType.GEODESIC,ground:s=!1,loop:a=!1,materialType:l="Color",materialUniforms:c={color:e.Color.RED},perLineVertexColors:d,show:h=!0,data:p,module:u}){var m;if((null==d?void 0:d.length)&&d.length!==i.length)throw new Error("perLineVertexColors.length must fit the length of 'lines'.");const g=[];for(const o in i){let l;const c=i[o],h=a?[...c,c[0].clone()]:c,p=d?d[o]:void 0;p&&Array.isArray(p)?l=p:p&&(l=new Array(h.length).fill(p));const m=s?new e.GroundPolylineGeometry({loop:a,positions:c,width:r}):new e.PolylineGeometry({arcType:n,colors:l,positions:h,width:r,vertexFormat:e.PolylineMaterialAppearance.VERTEX_FORMAT});g.push(new e.GeometryInstance({id:exports.Utils.encode(t,u),geometry:m}))}const v=null!==(m=Ut.getMaterialByType(l))&&void 0!==m?m:e.Material,f={show:h,asynchronous:o,geometryInstances:g,appearance:!s&&d?new e.PolylineColorAppearance:new e.PolylineMaterialAppearance({material:new v({fabric:{type:l,uniforms:Object.assign({},c)}})})},C=s?new e.GroundPolylinePrimitive(f):new e.Primitive(f);super._save(t,{primitive:C,data:{data:p,module:u}})}static isGroundSupported(t){return e.GroundPolylinePrimitive.isSupported(t.scene)}}var Qt,zt,Yt,jt,Jt,Kt,Vt,Zt,Xt,qt,$t,ei;__decorate([validate,__param(0,is(Array,"lines"))],PolylineLayer.prototype,"add",null);class PolygonLayer extends Layer{constructor(t){super(t,new e.PrimitiveCollection),Qt.add(this),this._labelLayer=new LabelLayer(t),this._outlineLayer=new PolylineLayer(t)}add(t){const{polygon:i,outline:o,label:r}=__classPrivateFieldGet(this,Qt,"m",zt).call(this,t),n=i.ground?e.PolygonGeometry.fromPositions({arcType:i.arcType,positions:i.positions,vertexFormat:e.PerInstanceColorAppearance.VERTEX_FORMAT}):e.PolygonGeometry.fromPositions({arcType:i.arcType,positions:i.positions,height:i.height,vertexFormat:e.PerInstanceColorAppearance.VERTEX_FORMAT,perPositionHeight:i.usePointHeight}),s=new e.GeometryInstance({id:exports.Utils.encode(i.id,t.module),geometry:n,attributes:{color:e.ColorGeometryInstanceAttribute.fromColor(i.color)}}),a=i.ground?new e.GroundPrimitive({geometryInstances:s,appearance:new e.PerInstanceColorAppearance,classificationType:e.ClassificationType.TERRAIN}):new e.Primitive({geometryInstances:s,appearance:new e.PerInstanceColorAppearance});if(o){const{materialType:e,materialUniforms:r,width:n}=o,s=i.positions.map(e=>{var t;const o=exports.Geographic.fromCartesian(e);return o.height=i.usePointHeight?o.height:null!==(t=i.height)&&void 0!==t?t:0,o.toCartesian()});this._outlineLayer.add({id:i.id,module:t.module,data:t.data,arcType:t.arcType,lines:[s],loop:!0,ground:i.ground,materialType:e,materialUniforms:r,width:n})}if(r){const t=i.positions.map(e=>exports.Geographic.fromCartesian(e)),{longitude:o,latitude:n}=exports.Figure.calcMassCenter(t.concat(t[0].clone()));this._labelLayer.add(Object.assign({id:i.id,position:e.Cartesian3.fromDegrees(o,n,i.height)},r))}super._save(i.id,{primitive:a,data:{module:t.module,data:t.data}})}getOutlineEntity(e){return this._outlineLayer.getEntity(e)}hide(e){e?(super.hide(e),this._outlineLayer.hide(e),this._labelLayer.hide(e)):(super.hide(),this._outlineLayer.hide(),this._labelLayer.hide())}show(e){e?(super.show(e),this._outlineLayer.show(e),this._labelLayer.show(e)):(super.show(),this._outlineLayer.show(),this._labelLayer.show())}remove(e){e?(super.remove(e),this._outlineLayer.remove(e),this._labelLayer.remove(e)):(super.remove(),this._outlineLayer.remove(),this._labelLayer.remove())}destroy(){return!!super.destroy()&&(this._labelLayer.destroy(),this._outlineLayer.destroy(),!0)}}Qt=new WeakSet,zt=function _PolygonLayer_getDefaultOption(t){var i,o,r,n,s,a,l,c,d,h,p,u;return{polygon:{id:null!==(i=t.id)&&void 0!==i?i:exports.Utils.uuid(),positions:t.positions,height:t.usePointHeight?void 0:t.height,color:null!==(o=t.color)&&void 0!==o?o:e.Color.PURPLE.withAlpha(.4),usePointHeight:null!==(r=t.usePointHeight)&&void 0!==r&&r,ground:null!==(n=t.ground)&&void 0!==n&&n,show:null===(s=t.show)||void 0===s||s,arcType:null!==(a=t.arcType)&&void 0!==a?a:e.ArcType.GEODESIC},outline:t.outline?{width:null!==(c=null===(l=t.outline)||void 0===l?void 0:l.width)&&void 0!==c?c:2,materialType:null!==(h=null===(d=t.outline)||void 0===d?void 0:d.materialType)&&void 0!==h?h:"Color",materialUniforms:null!==(u=null===(p=t.outline)||void 0===p?void 0:p.materialUniforms)&&void 0!==u?u:{color:e.Color.PURPLE}}:void 0,label:t.label?Object.assign({font:"16px Helvetica",horizontalOrigin:e.HorizontalOrigin.CENTER,verticalOrigin:e.VerticalOrigin.CENTER,fillColor:e.Color.RED,outlineColor:e.Color.WHITE,outlineWidth:1,style:e.LabelStyle.FILL_AND_OUTLINE},t.label):void 0}},__decorate([generate()],PolygonLayer.prototype,"labelLayer",void 0),__decorate([generate()],PolygonLayer.prototype,"outlineLayer",void 0),__decorate([validate,__param(0,is(Array,"positions"))],PolygonLayer.prototype,"add",null);class RectangleLayer extends Layer{constructor(t){super(t,new e.PrimitiveCollection),Yt.add(this),this._labelLayer=new LabelLayer(t),this._outlineLayer=new PolylineLayer(t)}add(t){const{rectangle:i,outline:o,label:r}=__classPrivateFieldGet(this,Yt,"m",jt).call(this,t),n=i.ground?new e.RectangleGeometry({rectangle:i.rectangle,vertexFormat:e.PerInstanceColorAppearance.VERTEX_FORMAT}):new e.RectangleGeometry({rectangle:i.rectangle,height:i.height,vertexFormat:e.PerInstanceColorAppearance.VERTEX_FORMAT}),s=new e.GeometryInstance({id:exports.Utils.encode(i.id,t.module),geometry:n,attributes:{color:e.ColorGeometryInstanceAttribute.fromColor(i.color)}}),a=i.ground?new e.GroundPrimitive({show:i.show,geometryInstances:s,appearance:new e.PerInstanceColorAppearance,classificationType:e.ClassificationType.TERRAIN}):new e.Primitive({show:i.show,geometryInstances:s,appearance:new e.PerInstanceColorAppearance});if(o){const{materialType:r,materialUniforms:n,width:s}=o,{east:a,west:l,north:c,south:d}=i.rectangle,h=e.Cartesian3.fromRadiansArrayHeights([l,c,i.height,a,c,i.height,a,d,i.height,l,d,i.height]);this._outlineLayer.add({id:i.id,module:t.module,data:t.data,arcType:e.ArcType.GEODESIC,lines:[h],loop:!0,ground:i.ground,materialType:r,materialUniforms:n,width:s})}if(r){const{west:t,east:o,north:n,south:s}=i.rectangle,a=(t+o)/2,l=(n+s)/2;this._labelLayer.add(Object.assign({id:i.id,position:e.Cartesian3.fromRadians(a,l,i.height)},r))}super._save(i.id,{primitive:a,data:{module:t.module,data:t.data}})}getOutlineEntity(e){return this._outlineLayer.getEntity(e)}hide(e){e?(super.hide(e),this._outlineLayer.hide(e),this._labelLayer.hide(e)):(super.hide(),this._outlineLayer.hide(),this._labelLayer.hide())}show(e){e?(super.show(e),this._outlineLayer.show(e),this._labelLayer.show(e)):(super.show(),this._outlineLayer.show(),this._labelLayer.show())}remove(e){e?(super.remove(e),this._outlineLayer.remove(e),this._labelLayer.remove(e)):(super.remove(),this._outlineLayer.remove(),this._labelLayer.remove())}destroy(){return!!super.destroy()&&(this._labelLayer.destroy(),this._outlineLayer.destroy(),!0)}}Yt=new WeakSet,jt=function _RectangleLayer_getDefaultOption(t){var i,o,r,n,s,a,l,c,d,h,p;return{rectangle:{id:null!==(i=t.id)&&void 0!==i?i:exports.Utils.uuid(),rectangle:t.rectangle,color:null!==(o=t.color)&&void 0!==o?o:e.Color.BLUE.withAlpha(.4),height:null!==(r=t.height)&&void 0!==r?r:0,show:null===(n=t.show)||void 0===n||n,ground:null!==(s=t.ground)&&void 0!==s&&s},outline:t.outline?{width:null!==(l=null===(a=t.outline)||void 0===a?void 0:a.width)&&void 0!==l?l:2,materialType:null!==(d=null===(c=t.outline)||void 0===c?void 0:c.materialType)&&void 0!==d?d:"Color",materialUniforms:null!==(p=null===(h=t.outline)||void 0===h?void 0:h.materialUniforms)&&void 0!==p?p:{color:e.Color.BLUE}}:void 0,label:t.label?Object.assign({font:"16px Helvetica",horizontalOrigin:e.HorizontalOrigin.CENTER,verticalOrigin:e.VerticalOrigin.CENTER,fillColor:e.Color.RED,outlineColor:e.Color.WHITE,outlineWidth:1,style:e.LabelStyle.FILL_AND_OUTLINE},t.label):void 0}},__decorate([generate()],RectangleLayer.prototype,"labelLayer",void 0),__decorate([generate()],RectangleLayer.prototype,"outlineLayer",void 0),__decorate([validate,__param(0,is(e.Rectangle,"rectangle"))],RectangleLayer.prototype,"add",null);class WallLayer extends Layer{constructor(t){super(t,new e.PrimitiveCollection),Jt.add(this)}add(t){const{data:i,module:o}=t,{id:r,color:n,outline:s,outlineColor:a,outlineWidth:l,positions:c,maximumHeights:d,minimumHeights:h,show:p}=__classPrivateFieldGet(this,Jt,"m",Kt).call(this,t),u=new e.GeometryInstance({id:exports.Utils.encode(r,o),geometry:new e.WallGeometry({positions:c,maximumHeights:d,minimumHeights:h,vertexFormat:e.PerInstanceColorAppearance.VERTEX_FORMAT}),attributes:{color:e.ColorGeometryInstanceAttribute.fromColor(n)}}),m=new e.Primitive({show:p,geometryInstances:u,appearance:new e.PerInstanceColorAppearance});if(super._save(r,{primitive:m,data:{data:i,module:o}}),s){const t=new e.GeometryInstance({geometry:new e.WallOutlineGeometry({positions:c,maximumHeights:d,minimumHeights:h}),attributes:{color:e.ColorGeometryInstanceAttribute.fromColor(a)}}),n=new e.Primitive({show:p,geometryInstances:t,appearance:new e.PerInstanceColorAppearance({flat:!0,renderState:{lineWidth:l}})});super._save(r+"_outline",{primitive:n,data:{data:i,module:o}})}}hide(e){e?(super.hide(e),super.hide(e+"_outline")):super.hide()}show(e){e?(super.show(e),super.show(e+"_outline")):super.show()}remove(e){e?(super.remove(e),super.remove(e+"_outline")):super.remove()}}Jt=new WeakSet,Kt=function _WallLayer_getDefaultOption({id:t=exports.Utils.uuid(),color:i=e.Color.LAWNGREEN.withAlpha(.5),outline:o=!0,outlineColor:r=e.Color.WHITESMOKE.withAlpha(.8),outlineWidth:n=1,show:s=!0,positions:a,maximumHeights:l,minimumHeights:c}){const d=a.length;return{id:t,color:i,positions:a,outline:o,outlineColor:r,outlineWidth:n,show:s,maximumHeights:null!=l?l:new Array(d).fill(5e3),minimumHeights:null!=c?c:new Array(d).fill(0)}},__decorate([validate,__param(0,is(Array,"positions"))],WallLayer.prototype,"add",null);const{pow:ti,sin:ii,PI:oi}=Math;class AttackArrowDynamic extends Dynamic{constructor(e){super(e,new PolygonLayer(e)),Vt.add(this),this.type="Attack_Arrow"}add(e){this.layer.add(e)}draw({id:t=exports.Utils.uuid(),module:i=exports.DefaultModuleName.ATTACK_ARROW,headHeightFactor:o=.18,headWidthFactor:r=.3,neckHeightFactor:n=.85,neckWidthFactor:s=.15,tailWidthFactor:a=.1,headTailFactor:l=.8,swallowTailFactor:c=1,color:d=e.Color.YELLOW.withAlpha(.5),outlineColor:h=e.Color.YELLOW,outlineWidth:p=1,keep:u=!0,ground:m=!1,onEvery:g,onFinish:v}){if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});let f,C;const y={headHeightFactor:o,headWidthFactor:r,neckHeightFactor:n,neckWidthFactor:s,tailWidthFactor:a,headTailFactor:l,swallowTailFactor:c},A=[],E=super._startEvent();return this._cacheHandler=E,E.setInputAction(({position:e})=>{const i=super._getPointOnEllipsoid(e);i&&(A.push(i),null==g||g(i,A.length-1),this._eventBus.emit(exports.SubEventType.DRAW_CERTAIN,{type:this.type,event:exports.SubEventType.DRAW_CERTAIN,data:{id:t,index:A.length-1,position:i}}))},e.ScreenSpaceEventType.LEFT_CLICK),E.setInputAction(({endPosition:i})=>{const o=super._getPointOnEllipsoid(i);!o||A.length<2||(C=o,A.length>2&&A.pop(),A.push(o),f||(this._cacheEntity=f=this._viewer.entities.add({polygon:{hierarchy:new e.CallbackProperty(()=>new e.PolygonHierarchy(__classPrivateFieldGet(this,Vt,"m",ei).call(this,A,y).shape),!1),material:d,outline:!0,outlineColor:h,outlineWidth:p,heightReference:m?e.HeightReference.CLAMP_TO_GROUND:e.HeightReference.NONE}})),this._eventBus.emit(exports.SubEventType.DRAW_MOVE,{type:this.type,event:exports.SubEventType.DRAW_MOVE,data:{id:t,position:o}}))},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise((o,r)=>{E.setInputAction(({position:e})=>{var n;const s=null!==(n=super._getPointOnEllipsoid(e))&&void 0!==n?n:C;if(A.pop(),A.push(s),A.length<=2)return r("Attack arrow needs at least three points."),super._endEvent(E),void this._viewer.entities.remove(f);const{shape:a,control:l}=__classPrivateFieldGet(this,Vt,"m",ei).call(this,A,y);u&&this.layer.add({id:t,module:i,color:d,ground:m,outline:{width:p,materialType:"Color",materialUniforms:{color:h}},usePointHeight:!m,positions:a,data:{type:exports.DrawType.ATTACK_ARROW,positions:l,attr:Object.assign({module:i,color:d,ground:m,outlineColor:h,outlineWidth:p},y)}}),super._endEvent(E),this._viewer.entities.remove(f),null==v||v(A),this._eventBus.emit(exports.SubEventType.DRAW_FINISH,{type:this.type,event:exports.SubEventType.DRAW_FINISH,data:{id:t,positions:A}}),o({id:t,positions:A})},e.ScreenSpaceEventType.RIGHT_CLICK)})}edit(t){var i;const o=null===(i=this.layer.getEntity(t))||void 0===i?void 0:i.data.data;if(!o)return new Promise((e,i)=>i(`Object ${t} does not exist.`));if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const r=super._startEvent(),n=[],s=[...o.positions],a={headHeightFactor:o.attr.headHeightFactor,neckHeightFactor:o.attr.neckHeightFactor,headTailFactor:o.attr.headTailFactor,swallowTailFactor:o.attr.swallowTailFactor,tailWidthFactor:o.attr.tailWidthFactor,neckWidthFactor:o.attr.neckWidthFactor,headWidthFactor:o.attr.headWidthFactor};let l,c,d;o.positions.forEach((t,i)=>{n.push(this._viewer.entities.add({id:`ModifyPoint_${i}`,position:t,point:{pixelSize:10,color:e.Color.LIGHTBLUE,heightReference:e.HeightReference.CLAMP_TO_GROUND,disableDepthTestDistance:Number.POSITIVE_INFINITY}}))});const h=this._viewer.entities.add({polygon:{hierarchy:new e.CallbackProperty(()=>{const t=__classPrivateFieldGet(this,Vt,"m",ei).call(this,s,a).shape;return new e.PolygonHierarchy(t)},!1),material:o.attr.color,outline:!0,outlineColor:o.attr.outlineColor,outlineWidth:o.attr.outlineWidth,heightReference:o.attr.ground?e.HeightReference.CLAMP_TO_GROUND:e.HeightReference.NONE}});return this.layer.remove(t),r.setInputAction(({position:e})=>{var i;if(!l)return;const o=null!==(i=super._getPointOnEllipsoid(e))&&void 0!==i?i:d;l.position.setValue(o),s.splice(c,1,o),l=void 0,this._eventBus.emit(exports.SubEventType.EDIT_CERTAIN,{type:this.type,event:exports.SubEventType.EDIT_CERTAIN,data:{id:t,index:c,position:o}})},e.ScreenSpaceEventType.LEFT_UP),r.setInputAction(({endPosition:e})=>{const i=super._getPointOnEllipsoid(e);i&&l&&(l.position.setValue(i),s.splice(c,1,i),d=i,this._eventBus.emit(exports.SubEventType.EDIT_MOVE,{type:this.type,event:exports.SubEventType.EDIT_MOVE,data:{id:t,index:c,position:i}}))},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise(i=>{r.setInputAction(({position:e})=>{const d=super._getPointOnEllipsoid(e),p=this._scene.pick(e);if(d)if(p&&n.some(e=>e.id===p.id.id))super._setViewControl(!1),c=p.id.id.split("_")[1],l=n[c];else{super._endEvent(r);const{control:e,shape:l}=__classPrivateFieldGet(this,Vt,"m",ei).call(this,s,a);this.layer.add({id:t,positions:l,color:o.attr.color,module:o.attr.module,ground:o.attr.ground,usePointHeight:!o.attr.ground,outline:{width:o.attr.outlineWidth,materialType:"Color",materialUniforms:{color:o.attr.outlineColor}},data:{type:o.type,positions:e,attr:o.attr}}),h&&this._viewer.entities.remove(h),n.forEach(e=>this._viewer.entities.remove(e)),this._eventBus.emit(exports.SubEventType.EDIT_FINISH,{type:this.type,event:exports.SubEventType.EDIT_FINISH,data:{id:t,positions:s}}),i({id:t,positions:s})}},e.ScreenSpaceEventType.LEFT_DOWN)})}}Vt=new WeakSet,Zt=function _AttackArrowDynamic_computeHeadPoints(e,t,i,o){const{headHeightFactor:r,headTailFactor:n,headWidthFactor:s,neckWidthFactor:a,neckHeightFactor:l}=o;let c=ti(exports.Figure.calcMathDistance(e),.99),d=c*r;const h=e[e.length-1];c=exports.Figure.calcMathDistance([h,e[e.length-2]]);const p=exports.Figure.calcMathDistance([t,i]);d>p*n&&(d=p*n);const u=d*s,m=d*a;d=d>c?c:d;const g=d*l,v=exports.Figure.calcThirdPoint(e[e.length-2],h,0,d,!0),f=exports.Figure.calcThirdPoint(e[e.length-2],h,0,g,!0),C=exports.Figure.calcThirdPoint(h,v,oi/2,u,!1),y=exports.Figure.calcThirdPoint(h,v,oi/2,u,!0);return[exports.Figure.calcThirdPoint(h,f,oi/2,m,!1),C,h,y,exports.Figure.calcThirdPoint(h,f,oi/2,m,!0)]},Xt=function _AttackArrowDynamic_computeBodyPoints(e,t,i,o){let r=0;const n=[],s=[],a=exports.Figure.calcMathDistance(e),l=ti(exports.Figure.calcMathDistance(e),.99)*o,c=(l-exports.Figure.calcMathDistance([t,i]))/2;for(let t=1;t<e.length-1;t++){const i=exports.Figure.calcMathAngle(e[t-1],e[t],e[t+1])/2;r+=exports.Figure.calcMathDistance([e[t-1],e[t]]);const o=(l/2-r/a*c)/ii(i),d=exports.Figure.calcThirdPoint(e[t-1],e[t],oi-i,o,!0),h=exports.Figure.calcThirdPoint(e[t-1],e[t],i,o,!1);n.push(d),s.push(h)}return n.concat(s)},qt=function _AttackArrowDynamic_computeQBPoints(e){if(e.length<=2)return e;const t=[],i=e.length-2-1;t.push(e[0]);for(let o=0;i>=o;o++)for(let i=0;1>=i;i+=.05){let r=0,n=0;for(let t=0;2>=t;t++){const s=__classPrivateFieldGet(this,Vt,"m",$t).call(this,t,i);r+=s*e[o+t][0],n+=s*e[o+t][1]}t.push([r,n])}return t.push(e[e.length-1]),t},$t=function _AttackArrowDynamic_getQuadricBSplineFactor(e,t){return 0===e?ti(t-1,2)/2:1===e?(-2*ti(t,2)+2*t+1)/2:2===e?ti(t,2)/2:0},ei=function _AttackArrowDynamic_computeArrow(t,i){const{tailWidthFactor:o,swallowTailFactor:r}=i,n=t.map(e=>exports.Geographic.fromCartesian(e).toArray());let[s,a]=n;exports.Figure.crossProduct(n[0],n[1],n[2])<0&&([a,s]=n);const l=[[(s[0]+a[0])/2,(s[1]+a[1])/2]].concat(n.slice(2)),c=__classPrivateFieldGet(this,Vt,"m",Zt).call(this,l,s,a,i),d=c[0],h=c[4],p=exports.Figure.calcMathDistance([s,a]),u=ti(exports.Figure.calcMathDistance(l),.99),m=u*o*r,g=exports.Figure.calcThirdPoint(l[1],l[0],0,m,!0),v=p/u,f=__classPrivateFieldGet(this,Vt,"m",Xt).call(this,l,d,h,v),C=f.length,y=[s].concat(f.slice(0,C/2));y.push(d);const A=[a].concat(f.slice(C/2,C));A.push(h);const E=__classPrivateFieldGet(this,Vt,"m",qt).call(this,y),x=__classPrivateFieldGet(this,Vt,"m",qt).call(this,A),w=E.concat(c,x.reverse(),[g,E[0]]).flat();return{control:t,shape:e.Cartesian3.fromDegreesArray(w)}};class BillboardDynamic extends Dynamic{constructor(e){super(e,new BillboardLayer(e)),this.type="Billboard"}add(e){this.layer.add(e)}draw({id:t=exports.Utils.uuid(),module:i=exports.DefaultModuleName.BILLBOARD,image:o,width:r=48,height:n=48,pixelOffset:s=new e.Cartesian2(0,0),horizontalOrigin:a=e.HorizontalOrigin.CENTER,verticalOrigin:l=e.VerticalOrigin.BOTTOM,keep:c=!0,limit:d=1,onEvery:h,onFinish:p}){if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const u=[];return new Promise(m=>{let g=-1;const v=super._startEvent();this._cacheHandler=v;const finish=()=>{super._endEvent(v),c||u.forEach(({id:e})=>{this.layer.remove(e)}),null==p||p(u.map(e=>e.position)),this._eventBus.emit(exports.SubEventType.DRAW_FINISH,{type:this.type,event:exports.SubEventType.DRAW_FINISH,data:{billboards:u}}),m(u)};v.setInputAction(({position:e})=>{g++;const c=super._getPointOnEllipsoid(e);if(!c)return;const p=`${t}_${g}`,m={id:p,position:c};u.push(m),this.layer.add({id:p,module:i,position:c,image:o,width:r,height:n,horizontalOrigin:a,verticalOrigin:l,pixelOffset:s,data:{type:exports.DrawType.BILLBOARD,positions:[c],attr:{module:i,horizontalOrigin:a,verticalOrigin:l,image:o,width:r,height:n,pixelOffset:s}}}),null==h||h(c,g),this._eventBus.emit(exports.SubEventType.DRAW_CERTAIN,{type:this.type,event:exports.SubEventType.DRAW_CERTAIN,data:Object.assign({},m)}),0!==d&&g>=d-1&&finish()},e.ScreenSpaceEventType.LEFT_CLICK),v.setInputAction(finish,e.ScreenSpaceEventType.RIGHT_CLICK)})}edit(t){var i;const o=null===(i=this.layer.getEntity(t))||void 0===i?void 0:i.data.data;if(!o)return new Promise((e,i)=>i(`Object ${t} does not exist.`));if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const r=super._startEvent(),n=o.positions[0];let s,a=n.clone();const l=this._viewer.entities.add({position:n,billboard:Object.assign({},o.attr),point:{color:e.Color.RED,pixelSize:10,disableDepthTestDistance:Number.POSITIVE_INFINITY}});return this.layer.remove(t),r.setInputAction(({endPosition:e})=>{if(!s)return;const i=super._getPointOnEllipsoid(e);i&&(l.position.setValue(i),a=i),this._eventBus.emit(exports.SubEventType.EDIT_MOVE,{type:this.type,event:exports.SubEventType.EDIT_MOVE,data:{id:t,position:a}})},e.ScreenSpaceEventType.MOUSE_MOVE),r.setInputAction(()=>{s=void 0},e.ScreenSpaceEventType.LEFT_UP),new Promise(i=>{r.setInputAction(({position:e})=>{const n=this._scene.pick(e);n&&n.id.id===l.id?(super._setViewControl(!1),s=l,this._eventBus.emit(exports.SubEventType.EDIT_CERTAIN,{type:this.type,event:exports.SubEventType.EDIT_CERTAIN,data:{id:t,position:a}})):(super._endEvent(r),this.layer.add(Object.assign(Object.assign({id:t,position:a},o.attr),{data:{type:o.type,positions:[a],attr:o.attr}})),l&&this._viewer.entities.remove(l),this._eventBus.emit(exports.SubEventType.EDIT_FINISH,{type:this.type,event:exports.SubEventType.EDIT_FINISH,data:{id:t,position:a}}),i({id:t,position:a}))},e.ScreenSpaceEventType.LEFT_DOWN)})}}class CircleDynamic extends Dynamic{constructor(e){super(e,new EllipseLayer(e)),this.type="Circle"}add(e){this.layer.add(e)}draw({id:t=exports.Utils.uuid(),module:i=exports.DefaultModuleName.CIRCLE,color:o=e.Color.RED.withAlpha(.4),keep:r=!0,ground:n=!1,onFinish:s}){if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});let a,l,c;const d=super._startEvent();return this._cacheHandler=d,d.setInputAction(({endPosition:e})=>{if(!l)return;const i=super._getPointOnEllipsoid(e);i&&(a=i),this._eventBus.emit(exports.SubEventType.DRAW_MOVE,{type:this.type,event:exports.SubEventType.DRAW_MOVE,data:{id:t,center:l,edge:a}})},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise((h,p)=>{d.setInputAction(({position:i})=>{super._setViewControl(!1);const r=super._getPointOnEllipsoid(i);if(r){l=r;const cbp=()=>{if(!a)return 1;const e=exports.Geographic.fromCartesian(l),t=exports.Geographic.fromCartesian(a);return exports.Figure.calcRhumbDistance(e,t,"meters")};this._cacheEntity=c=this._viewer.entities.add({position:l,ellipse:{semiMajorAxis:new e.CallbackProperty(cbp,!1),semiMinorAxis:new e.CallbackProperty(cbp,!1),outline:!1,material:o,heightReference:n?e.HeightReference.CLAMP_TO_GROUND:e.HeightReference.NONE}}),this._eventBus.emit(exports.SubEventType.DRAW_CERTAIN,{type:this.type,event:exports.SubEventType.DRAW_CERTAIN,data:{id:t,center:l}})}else super._endEvent(d),p("Please choose a center from Earth.")},e.ScreenSpaceEventType.LEFT_DOWN),d.setInputAction(({position:e})=>{var p;const u=null!==(p=super._getPointOnEllipsoid(e))&&void 0!==p?p:a,m=exports.Geographic.fromCartesian(l),g=exports.Geographic.fromCartesian(u),v=exports.Figure.calcRhumbDistance(m,g,"meters"),f={id:t,center:l,radius:v};r&&this.layer.add({id:t,module:i,center:l,color:o,ground:n,majorAxis:v,minorAxis:v,data:{type:exports.DrawType.CIRCLE,positions:[l,u],attr:{module:i,color:o,radius:v,ground:n}}}),this._viewer.entities.remove(c),super._endEvent(d),null==s||s(l,v),this._eventBus.emit(exports.SubEventType.DRAW_FINISH,{type:this.type,event:exports.SubEventType.DRAW_FINISH,data:Object.assign({},f)}),h(f)},e.ScreenSpaceEventType.LEFT_UP)})}edit(t){var i;const o=null===(i=this.layer.getEntity(t))||void 0===i?void 0:i.data.data;if(!o)return new Promise((e,i)=>i(`Object ${t} does not exist.`));if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const r=super._startEvent();this.layer.remove(t);let n,s,a,l=o.attr.radius,c=o.positions[0].clone(),d=o.positions[1].clone();const h=this._viewer.entities.add({id:"ModifyPoint_center",position:o.positions[0],point:{pixelSize:10,color:e.Color.LIGHTBLUE,heightReference:e.HeightReference.CLAMP_TO_GROUND,disableDepthTestDistance:Number.POSITIVE_INFINITY}}),p=this._viewer.entities.add({id:"ModifyPoint_edge",position:o.positions[1],point:{pixelSize:10,color:e.Color.LIGHTBLUE,heightReference:e.HeightReference.CLAMP_TO_GROUND,disableDepthTestDistance:Number.POSITIVE_INFINITY}}),u=this._viewer.entities.add({position:c.clone(),ellipse:{semiMajorAxis:new e.CallbackProperty(()=>l,!1),semiMinorAxis:new e.CallbackProperty(()=>l,!1),material:o.attr.color,outline:!1,heightReference:o.attr.ground?e.HeightReference.CLAMP_TO_GROUND:e.HeightReference.NONE}});return r.setInputAction(({position:e})=>{var i;if(!s)return;const o=null!==(i=super._getPointOnEllipsoid(e))&&void 0!==i?i:n;s.position.setValue(o),s=void 0,this._eventBus.emit(exports.SubEventType.EDIT_CERTAIN,{type:this.type,event:exports.SubEventType.EDIT_CERTAIN,data:{id:t,position:o}})},e.ScreenSpaceEventType.LEFT_UP),r.setInputAction(({endPosition:e})=>{const i=super._getPointOnEllipsoid(e);if(!i||!s||!a)return;s.position.setValue(i),"center"===a?(c=i,u.position.setValue(i.clone())):"edge"===a&&(d=i);const o=exports.Geographic.fromCartesian(c),r=exports.Geographic.fromCartesian(d);l=exports.Figure.calcDistance(o,r),n=i,this._eventBus.emit(exports.SubEventType.EDIT_MOVE,{type:this.type,event:exports.SubEventType.EDIT_MOVE,data:{id:t,position:i}})},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise(i=>{r.setInputAction(({position:e})=>{const n=super._getPointOnEllipsoid(e),m=this._scene.pick(e);n&&(!m||m.id.id!==h.id&&m.id.id!==p.id?(super._endEvent(r),this.layer.add({id:t,center:c,module:o.attr.module,color:o.attr.color,ground:o.attr.ground,majorAxis:l,minorAxis:l,data:{type:exports.DrawType.CIRCLE,positions:[c,d],attr:{module:o.attr.module,color:o.attr.color,radius:l,ground:o.attr.ground}}}),u&&this._viewer.entities.remove(u),this._viewer.entities.remove(h),this._viewer.entities.remove(p),this._eventBus.emit(exports.SubEventType.EDIT_FINISH,{type:this.type,event:exports.SubEventType.EDIT_FINISH,data:{id:t,positions:[c,d]}}),i({id:t,center:c,radius:l})):(super._setViewControl(!1),m.id.id===h.id?(s=h,a="center"):m.id.id===p.id&&(s=p,a="edge")))},e.ScreenSpaceEventType.LEFT_DOWN)})}}class ModelDynamic extends Dynamic{constructor(e){super(e,new ModelLayer(e)),this.type="Model"}add(e){this.layer.add(e)}draw({id:t=exports.Utils.uuid(),module:i=exports.DefaultModuleName.MODEL,url:o,scale:r=1,silhouetteColor:n=e.Color.LIGHTYELLOW,silhouetteSize:s=1,minimumPixelSize:a=24,limit:l=1,keep:c=!0,onEvery:d,onFinish:h}){if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const p=[];return new Promise(u=>{let m=-1;const g=super._startEvent();this._cacheHandler=g;const finish=()=>{super._endEvent(g),c||p.forEach(({id:e})=>{this.layer.remove(e)}),null==h||h(p.map(e=>e.position)),this._eventBus.emit(exports.SubEventType.DRAW_FINISH,{type:this.type,event:exports.SubEventType.DRAW_FINISH,data:{models:p}}),u(p)};g.setInputAction(({position:c})=>{m++;const h=super._getPointOnEllipsoid(c);if(!h)return;const u=`${t}_${m}`,g={id:u,position:h};p.push(g),this.layer.add({id:u,module:i,url:o,scale:r,silhouetteColor:n,silhouetteSize:s,minimumPixelSize:a,hightReference:e.HeightReference.CLAMP_TO_GROUND,position:h,data:{type:exports.DrawType.MODEL,positions:[h],attr:{module:i,url:o,scale:r,silhouetteColor:n,silhouetteSize:s,minimumPixelSize:a}}}),null==d||d(h,m),this._eventBus.emit(exports.SubEventType.DRAW_CERTAIN,{type:this.type,event:exports.SubEventType.DRAW_CERTAIN,data:Object.assign({},g)}),0!==l&&m>=l-1&&finish()},e.ScreenSpaceEventType.LEFT_CLICK),g.setInputAction(finish,e.ScreenSpaceEventType.RIGHT_CLICK)})}edit(t){var i;const o=null===(i=this.layer.getEntity(t))||void 0===i?void 0:i.data.data;if(!o)return new Promise((e,i)=>i(`Object ${t} does not exist.`));if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const r=super._startEvent(),n=o.positions[0];let s,a=n.clone();const l=this._viewer.entities.add({position:n,point:{color:e.Color.RED,pixelSize:10,disableDepthTestDistance:Number.POSITIVE_INFINITY}});return this.layer.remove(t),r.setInputAction(({endPosition:e})=>{if(!s)return;const i=super._getPointOnEllipsoid(e);i&&(l.position.setValue(i),a=i,this._eventBus.emit(exports.SubEventType.EDIT_MOVE,{type:this.type,event:exports.SubEventType.EDIT_MOVE,data:{id:t,position:i}}))},e.ScreenSpaceEventType.MOUSE_MOVE),r.setInputAction(()=>{s=void 0},e.ScreenSpaceEventType.LEFT_UP),new Promise(i=>{r.setInputAction(({position:e})=>{const n=this._scene.pick(e);n&&n.id.id===l.id?(super._setViewControl(!1),s=l,this._eventBus.emit(exports.SubEventType.EDIT_CERTAIN,{type:this.type,event:exports.SubEventType.EDIT_CERTAIN,data:{id:t,position:a}})):(super._endEvent(r),this.layer.add(Object.assign(Object.assign({id:t,position:a},o.attr),{data:{type:o.type,positions:[a],attr:o.attr}})),l&&this._viewer.entities.remove(l),this._eventBus.emit(exports.SubEventType.EDIT_FINISH,{type:this.type,event:exports.SubEventType.EDIT_FINISH,data:{id:t,position:a}}),i({id:t,position:a}))},e.ScreenSpaceEventType.LEFT_DOWN)})}}var ri,ni,si,ai,li,ci,di,hi;const{pow:pi,sin:ui,cos:mi,PI:gi}=Math;class PincerArrowDynamic extends Dynamic{constructor(e){super(e,new PolygonLayer(e)),ri.add(this),this.type="Pincer_Arrow"}add(e){this.layer.add(e)}draw({id:t=exports.Utils.uuid(),module:i=exports.DefaultModuleName.PINCER_ARROW,neckWidthFactor:o=.15,headWidthFactor:r=.3,headHeightFactor:n=.25,neckHeightFactor:s=.85,color:a=e.Color.YELLOW.withAlpha(.5),outlineColor:l=e.Color.YELLOW,outlineWidth:c=1,keep:d=!0,ground:h=!1,onEvery:p,onFinish:u}){if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});let m,g,v=!1;const f={neckWidthFactor:o,headWidthFactor:r,headHeightFactor:n,neckHeightFactor:s},C=[],y=super._startEvent();return this._cacheHandler=y,y.setInputAction(({endPosition:i})=>{const o=super._getPointOnEllipsoid(i);!o||C.length<2||(g=o,C.length>2&&C.pop(),C.push(o),m||(this._cacheEntity=m=this._viewer.entities.add({polygon:{hierarchy:new e.CallbackProperty(()=>new e.PolygonHierarchy(__classPrivateFieldGet(this,ri,"m",hi).call(this,C,f).shape),!1),material:a,outline:!0,outlineColor:l,outlineWidth:c,heightReference:h?e.HeightReference.CLAMP_TO_GROUND:e.HeightReference.NONE}})),this._eventBus.emit(exports.SubEventType.DRAW_MOVE,{type:this.type,event:exports.SubEventType.DRAW_MOVE,data:{id:t,position:o}}))},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise(o=>{y.setInputAction(({position:e})=>{var r;const n=null!==(r=super._getPointOnEllipsoid(e))&&void 0!==r?r:g;if(n&&(5===C.length&&(v=!0,C.pop()),C.push(n),null==p||p(n,C.length-1),this._eventBus.emit(exports.SubEventType.DRAW_CERTAIN,{type:this.type,event:exports.SubEventType.DRAW_CERTAIN,data:{id:t,index:C.length-1,position:n}}),v)){if(d){const{control:e,shape:o}=__classPrivateFieldGet(this,ri,"m",hi).call(this,C,f);this.layer.add({id:t,module:i,color:a,ground:h,outline:{width:c,materialType:"Color",materialUniforms:{color:l}},usePointHeight:!h,positions:o,data:{type:exports.DrawType.PINCER_ARROW,positions:e,attr:Object.assign({module:i,color:a,ground:h,outlineColor:l,outlineWidth:c},f)}})}super._endEvent(y),this._viewer.entities.remove(m),null==u||u(C),this._eventBus.emit(exports.SubEventType.DRAW_FINISH,{type:this.type,event:exports.SubEventType.DRAW_FINISH,data:{id:t,positions:C}}),o({id:t,positions:C})}},e.ScreenSpaceEventType.LEFT_CLICK)})}edit(t){var i;const o=null===(i=this.layer.getEntity(t))||void 0===i?void 0:i.data.data;if(!o)return new Promise((e,i)=>i(`Object ${t} does not exist.`));if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const r=super._startEvent(),n=[],s=[...o.positions],a={headHeightFactor:o.attr.headHeightFactor,neckHeightFactor:o.attr.neckHeightFactor,neckWidthFactor:o.attr.neckWidthFactor,headWidthFactor:o.attr.headWidthFactor};let l,c,d;o.positions.forEach((t,i)=>{n.push(this._viewer.entities.add({id:`ModifyPoint_${i}`,position:t,point:{pixelSize:10,color:e.Color.LIGHTBLUE,heightReference:e.HeightReference.CLAMP_TO_GROUND,disableDepthTestDistance:Number.POSITIVE_INFINITY}}))});const h=this._viewer.entities.add({polygon:{hierarchy:new e.CallbackProperty(()=>{const t=__classPrivateFieldGet(this,ri,"m",hi).call(this,s,a).shape;return new e.PolygonHierarchy(t)},!1),material:o.attr.color,outline:!0,outlineColor:o.attr.outlineColor,outlineWidth:o.attr.outlineWidth,heightReference:o.attr.ground?e.HeightReference.CLAMP_TO_GROUND:e.HeightReference.NONE}});return this.layer.remove(t),r.setInputAction(({position:e})=>{var i;if(!l)return;const o=null!==(i=super._getPointOnEllipsoid(e))&&void 0!==i?i:d;l.position.setValue(o),s.splice(c,1,o),l=void 0,this._eventBus.emit(exports.SubEventType.EDIT_CERTAIN,{type:this.type,event:exports.SubEventType.EDIT_CERTAIN,data:{id:t,index:c,position:o}})},e.ScreenSpaceEventType.LEFT_UP),r.setInputAction(({endPosition:e})=>{const i=super._getPointOnEllipsoid(e);i&&l&&(l.position.setValue(i),s.splice(c,1,i),d=i,this._eventBus.emit(exports.SubEventType.EDIT_MOVE,{type:this.type,event:exports.SubEventType.EDIT_MOVE,data:{id:t,index:c,position:i}}))},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise(i=>{r.setInputAction(({position:e})=>{const d=super._getPointOnEllipsoid(e),p=this._scene.pick(e);if(d)if(p&&n.some(e=>e.id===p.id.id))super._setViewControl(!1),c=p.id.id.split("_")[1],l=n[c];else{super._endEvent(r);const{control:e,shape:l}=__classPrivateFieldGet(this,ri,"m",hi).call(this,s,a);this.layer.add({id:t,positions:l,color:o.attr.color,module:o.attr.module,ground:o.attr.ground,usePointHeight:!o.attr.ground,outline:{width:o.attr.outlineWidth,materialType:"Color",materialUniforms:{color:o.attr.outlineColor}},data:{type:o.type,positions:e,attr:o.attr}}),h&&this._viewer.entities.remove(h),n.forEach(e=>this._viewer.entities.remove(e)),this._eventBus.emit(exports.SubEventType.EDIT_FINISH,{type:this.type,event:exports.SubEventType.EDIT_FINISH,data:{id:t,positions:s}}),i({id:t,positions:s})}},e.ScreenSpaceEventType.LEFT_DOWN)})}}ri=new WeakSet,ni=function _PincerArrowDynamic_getBinomialFactor(e,t){const factor=t=>{if(t<=1)return 1;if(2===t)return 2;if(3===t)return 6;if(4===t)return 24;if(5===t)return 120;let i=1;for(let t=1;t<=e;t++)i*=t;return i};return factor(e)/(factor(t)*factor(e-t))},si=function _PincerArrowDynamic_getTempPoint(e,t,i){let o,r,n,s;const a=[(e[0]+t[0])/2,(e[1]+t[1])/2],l=exports.Figure.calcMathDistance([a,i]),c=exports.Figure.calcMathAngle(e,a,i);return c<gi/2?(o=l*ui(c),r=l*mi(c),n=exports.Figure.calcThirdPoint(e,a,gi/2,o,!1),s=exports.Figure.calcThirdPoint(a,n,gi/2,r,!0)):c<gi?(o=l*ui(gi-c),r=l*mi(gi-c),n=exports.Figure.calcThirdPoint(e,a,gi/2,o,!1),s=exports.Figure.calcThirdPoint(a,n,gi/2,r,!1)):c<1.5*gi?(o=l*ui(c-gi),r=l*mi(c-gi),n=exports.Figure.calcThirdPoint(e,a,gi/2,o,!0),s=exports.Figure.calcThirdPoint(a,n,gi/2,r,!0)):(o=l*ui(2*gi-c),r=l*mi(2*gi-c),n=exports.Figure.calcThirdPoint(e,a,gi/2,o,!0),s=exports.Figure.calcThirdPoint(a,n,gi/2,r,!1)),s},ai=function _PincerArrowDynamic_getBezierPoints(e){const t=e.length-1,i=[];for(let o=0;o<=1;o+=.01){let r=0,n=0;for(let i=0;i<=t;i++){const s=__classPrivateFieldGet(this,ri,"m",ni).call(this,t,i),a=pi(o,i),l=pi(1-o,t-i);r+=s*a*l*e[i][0],n+=s*a*l*e[i][1]}i.push([r,n])}return i.push(e[t]),i},li=function _PincerArrowDynamic_computeHeadPoints(e,t){const{neckWidthFactor:i,headWidthFactor:o,headHeightFactor:r,neckHeightFactor:n}=t,s=e[e.length-1],a=pi(exports.Figure.calcMathDistance(e),.99)*r,l=a*o,c=a*i,d=a*n,h=exports.Figure.calcThirdPoint(e[e.length-2],s,0,a,!0),p=exports.Figure.calcThirdPoint(e[e.length-2],s,0,d,!0),u=exports.Figure.calcThirdPoint(s,h,gi/2,l,!1),m=exports.Figure.calcThirdPoint(s,h,gi/2,l,!0);return[exports.Figure.calcThirdPoint(s,p,gi/2,c,!1),u,s,m,exports.Figure.calcThirdPoint(s,p,gi/2,c,!0)]},ci=function _PincerArrowDynamic_computeBodyPoints(e,t,i,o){let r=0;const n=[],s=[],a=exports.Figure.calcMathDistance(e),l=pi(a,2)*o,c=(l-exports.Figure.calcMathDistance([t,i]))/2;for(let t=1;t<e.length-1;t++){r+=exports.Figure.calcMathDistance([e[t-1],e[t]]);const i=exports.Figure.calcMathAngle(e[t-1],e[t],e[t+1])/2,o=(l/2-r/a*c)/ui(i),d=exports.Figure.calcThirdPoint(e[t-1],e[t],gi-i,o,!0),h=exports.Figure.calcThirdPoint(e[t-1],e[t],i,o,!1);n.push(d),s.push(h)}return n.concat(s)},di=function _PincerArrowDynamic_computePoints(e,t,i,o,r){const n=[(e[0]+t[0])/2,(e[1]+t[1])/2],s=exports.Figure.calcMathDistance([n,i]),a=exports.Figure.calcThirdPoint(i,n,0,.3*s,!0),l=exports.Figure.calcThirdPoint(i,n,0,.5*s,!0),c=[n,exports.Figure.calcThirdPoint(n,a,gi/2,s/5,o),exports.Figure.calcThirdPoint(n,l,gi/2,s/4,o),i],d=__classPrivateFieldGet(this,ri,"m",li).call(this,c,r),h=exports.Figure.calcMathDistance([e,t])/pi(exports.Figure.calcMathDistance(c),2)/2,p=__classPrivateFieldGet(this,ri,"m",ci).call(this,c,d[0],d[4],h),u=p.slice(0,p.length/2),m=p.slice(p.length/2,p.length);return u.push(d[0]),m.push(d[4]),u.unshift(t),m.unshift(e),u.concat(d,m.reverse())},hi=function _PincerArrowDynamic_computeArrow(t,i){const o=t.map(e=>exports.Geographic.fromCartesian(e).toArray());let r,n;const s=t.length,[a,l,c]=o,d=3===s?__classPrivateFieldGet(this,ri,"m",si).call(this,a,l,c):o[3],h=3===s||4===s?[(a[0]+l[0])/2,(a[1]+l[1])/2]:o[4];exports.Figure.crossProduct(a,l,c)<0?(r=__classPrivateFieldGet(this,ri,"m",di).call(this,a,h,d,!1,i),n=__classPrivateFieldGet(this,ri,"m",di).call(this,h,l,c,!0,i)):(r=__classPrivateFieldGet(this,ri,"m",di).call(this,l,h,c,!1,i),n=__classPrivateFieldGet(this,ri,"m",di).call(this,h,a,d,!0,i));const p=(r.length-5)/2,u=r.slice(0,p),m=r.slice(p,p+5),g=r.slice(p+5,r.length),v=n.slice(0,p),f=n.slice(p,p+5),C=n.slice(p+5,r.length),y=__classPrivateFieldGet(this,ri,"m",ai).call(this,v),A=__classPrivateFieldGet(this,ri,"m",ai).call(this,g),E=__classPrivateFieldGet(this,ri,"m",ai).call(this,C.concat(u.slice(1))),x=y.concat(f,E,m,A),w=[a,l,c,d,h];return{control:e.Cartesian3.fromDegreesArray(w.flat()),shape:e.Cartesian3.fromDegreesArray(x.flat())}};class PointDynamic extends Dynamic{constructor(e){super(e,new PointLayer(e)),this.type="Point"}add(e){this.layer.add(e)}draw({id:t=exports.Utils.uuid(),module:i=exports.DefaultModuleName.POINT,color:o=e.Color.RED,pixelSize:r=5,limit:n=0,keep:s=!0,onEvery:a,onFinish:l}){if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const c=[];let d=-1;const h=super._startEvent();return this._cacheHandler=h,new Promise(p=>{const finish=()=>{super._endEvent(h),s||c.forEach(({id:e})=>{this.layer.remove(e)}),null==l||l(c.map(e=>e.position)),this._eventBus.emit(exports.SubEventType.DRAW_FINISH,{type:this.type,event:exports.SubEventType.DRAW_FINISH,data:{points:c}}),p(c)};h.setInputAction(({position:e})=>{d++;const s=super._getPointOnEllipsoid(e);if(!s)return;const l=`${t}_${d}`,h={id:l,position:s};c.push(h),this.layer.add({id:l,module:i,position:s,pixelSize:r,color:o,data:{type:exports.DrawType.POINT,positions:[s],attr:{color:o,pixelSize:r,module:i}}}),null==a||a(s,d),this._eventBus.emit(exports.SubEventType.DRAW_CERTAIN,{type:this.type,event:exports.SubEventType.DRAW_CERTAIN,data:Object.assign({},h)}),0!==n&&d>=n-1&&finish()},e.ScreenSpaceEventType.LEFT_CLICK),h.setInputAction(finish,e.ScreenSpaceEventType.RIGHT_CLICK)})}edit(t){var i;const o=null===(i=this.layer.getEntity(t))||void 0===i?void 0:i.data.data;if(!o)return new Promise((e,i)=>i(`Object ${t} does not exist.`));if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const r=super._startEvent(),n=o.positions[0];let s,a=n.clone();const l=this._viewer.entities.add({position:n,point:{color:o.attr.color,pixelSize:o.attr.pixelSize,outlineColor:e.Color.WHITESMOKE,outlineWidth:1,disableDepthTestDistance:Number.POSITIVE_INFINITY}});return this.layer.remove(t),r.setInputAction(({endPosition:e})=>{if(!s)return;const i=super._getPointOnEllipsoid(e);i&&(l.position.setValue(i),a=i,this._eventBus.emit(exports.SubEventType.EDIT_MOVE,{type:this.type,event:exports.SubEventType.EDIT_MOVE,data:{id:t,position:i}}))},e.ScreenSpaceEventType.MOUSE_MOVE),r.setInputAction(()=>{s=void 0},e.ScreenSpaceEventType.LEFT_UP),new Promise(i=>{r.setInputAction(({position:e})=>{const n=this._scene.pick(e);n&&n.id.id===l.id?(super._setViewControl(!1),s=l,this._eventBus.emit(exports.SubEventType.EDIT_CERTAIN,{type:this.type,event:exports.SubEventType.EDIT_CERTAIN,data:{id:t,position:a}})):(super._endEvent(r),this.layer.add(Object.assign(Object.assign({id:t,position:a},o.attr),{data:{type:o.type,positions:[a],attr:o.attr}})),l&&this._viewer.entities.remove(l),this._eventBus.emit(exports.SubEventType.EDIT_FINISH,{type:this.type,event:exports.SubEventType.EDIT_FINISH,data:{id:t,position:a}}),i({id:t,position:a}))},e.ScreenSpaceEventType.LEFT_DOWN)})}}class PolygonDynamic extends Dynamic{constructor(e){super(e,new PolygonLayer(e)),this.type="Polygon"}add(e){this.layer.add(e)}draw({id:t=exports.Utils.uuid(),module:i=exports.DefaultModuleName.POLYGON,color:o=e.Color.RED.withAlpha(.4),outlineColor:r=e.Color.RED.withAlpha(.4),outlineWidth:n=1,keep:s=!0,ground:a=!1,onMove:l,onEvery:c,onFinish:d}){if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const h=[];let p,u,m=-1;const g=new e.PolygonHierarchy(h),v=super._startEvent();return this._cacheHandler=v,v.setInputAction(({endPosition:i})=>{const o=new e.Cartesian2(i.x+1e-6,i.y+1e-6),r=super._getPointOnEllipsoid(o);r&&(h.pop(),h.push(r),null==l||l(r,m),this._eventBus.emit(exports.SubEventType.DRAW_MOVE,{type:this.type,event:exports.SubEventType.DRAW_MOVE,data:{id:t,index:m,position:r}}))},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise((l,f)=>{v.setInputAction(({position:i})=>{const s=super._getPointOnEllipsoid(i);s?(m++,h.push(s),null==c||c(s,m),this._eventBus.emit(exports.SubEventType.DRAW_CERTAIN,{type:this.type,event:exports.SubEventType.DRAW_CERTAIN,data:{id:t,index:m,position:s}})):(super._endEvent(v),f("Please choose a point from earth.")),p||2!==h.length||(p=this._viewer.entities.add({polyline:{positions:new e.CallbackProperty(()=>h,!1),material:r,width:n,clampToGround:a}})),!u&&h.length>2&&(this._viewer.entities.remove(p),this._cacheEntity=u=this._viewer.entities.add({polygon:{hierarchy:new e.CallbackProperty(()=>g,!1),material:o,outline:!0,outlineColor:r,outlineWidth:n,perPositionHeight:!a||void 0,heightReference:a?e.HeightReference.CLAMP_TO_GROUND:e.HeightReference.NONE}}))},e.ScreenSpaceEventType.LEFT_CLICK),v.setInputAction(()=>{if(h.pop(),h.length<3)p&&this._viewer.entities.remove(p),u&&this._viewer.entities.remove(u),super._endEvent(v),f("Polygon needs at least three vertexes.");else{const e={id:t,positions:h};s&&this.layer.add({id:t,module:i,positions:h,color:o,ground:a,outline:{width:n,materialType:"Color",materialUniforms:{color:r}},usePointHeight:!a,data:{type:exports.DrawType.POLYGON,positions:h,attr:{color:o,outlineColor:r,outlineWidth:n,ground:a,module:i}}}),p&&this._viewer.entities.remove(p),u&&this._viewer.entities.remove(u),super._endEvent(v),null==d||d(h),this._eventBus.emit(exports.SubEventType.DRAW_FINISH,{type:this.type,event:exports.SubEventType.DRAW_FINISH,data:Object.assign({},e)}),l(e)}},e.ScreenSpaceEventType.RIGHT_CLICK)})}edit(t){var i;const o=null===(i=this.layer.getEntity(t))||void 0===i?void 0:i.data.data;if(!o)return new Promise((e,i)=>i(`Object ${t} does not exist.`));if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const r=super._startEvent(),n=[],s=[...o.positions];let a,l,c;const d=new e.PolygonHierarchy(s);o.positions.forEach((t,i)=>{n.push(this._viewer.entities.add({id:`ModifyPoint_${i}`,position:t,point:{pixelSize:10,color:e.Color.LIGHTBLUE,heightReference:e.HeightReference.CLAMP_TO_GROUND,disableDepthTestDistance:Number.POSITIVE_INFINITY}}))});const h=this._viewer.entities.add({polygon:{hierarchy:new e.CallbackProperty(()=>d,!1),material:o.attr.color,outline:!0,outlineColor:o.attr.outlineColor,outlineWidth:o.attr.outlineWidth,heightReference:o.attr.ground?e.HeightReference.CLAMP_TO_GROUND:e.HeightReference.NONE}});return this.layer.remove(t),r.setInputAction(({position:e})=>{var i;if(!a)return;const o=null!==(i=super._getPointOnEllipsoid(e))&&void 0!==i?i:c;a.position.setValue(o),s.splice(l,1,o),a=void 0,this._eventBus.emit(exports.SubEventType.EDIT_CERTAIN,{type:this.type,event:exports.SubEventType.EDIT_CERTAIN,data:{id:t,index:l,position:o}})},e.ScreenSpaceEventType.LEFT_UP),r.setInputAction(({endPosition:e})=>{const i=super._getPointOnEllipsoid(e);i&&a&&(a.position.setValue(i),s.splice(l,1,i),c=i,this._eventBus.emit(exports.SubEventType.EDIT_MOVE,{type:this.type,event:exports.SubEventType.EDIT_MOVE,data:{id:t,position:i}}))},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise(i=>{r.setInputAction(({position:e})=>{const c=super._getPointOnEllipsoid(e),d=this._scene.pick(e);c&&(d&&n.some(e=>e.id===d.id.id)?(super._setViewControl(!1),l=d.id.id.split("_")[1],a=n[l]):(super._endEvent(r),this.layer.add({id:t,positions:s,color:o.attr.color,module:o.attr.module,ground:o.attr.ground,usePointHeight:!o.attr.ground,outline:{width:o.attr.outlineWidth,materialType:"Color",materialUniforms:{color:o.attr.outlineColor}},data:{type:o.type,positions:s,attr:o.attr}}),h&&this._viewer.entities.remove(h),n.forEach(e=>this._viewer.entities.remove(e)),this._eventBus.emit(exports.SubEventType.EDIT_FINISH,{type:this.type,event:exports.SubEventType.EDIT_FINISH,data:{id:t,positions:s}}),i({id:t,positions:s})))},e.ScreenSpaceEventType.LEFT_DOWN)})}}var vi,fi;class PolylineDynamic extends Dynamic{constructor(e){super(e,new PolylineLayer(e)),vi.add(this),this.type="Polyline"}add(e){this.layer.add(e)}draw({id:t=exports.Utils.uuid(),module:i=exports.DefaultModuleName.POLYLINE,width:o=2,ground:r=!1,loop:n=!1,keep:s=!0,materialType:a="Color",materialUniforms:l={color:e.Color.RED},onMove:c,onEvery:d,onFinish:h}){if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const p=[];let u,m=-1;const g=super._startEvent();return this._cacheHandler=g,g.setInputAction(({endPosition:e})=>{const i=super._getPointOnEllipsoid(e);i&&(p.pop(),p.push(i),null==c||c(i,m),this._eventBus.emit(exports.SubEventType.DRAW_MOVE,{type:this.type,event:exports.SubEventType.DRAW_MOVE,data:{id:t,index:m,position:i}}))},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise((c,v)=>{g.setInputAction(({position:i})=>{const s=super._getPointOnEllipsoid(i);s?(m++,p.push(s),null==d||d(s,m),this._eventBus.emit(exports.SubEventType.DRAW_CERTAIN,{type:this.type,event:exports.SubEventType.DRAW_CERTAIN,data:{id:t,index:m,position:s}})):(super._endEvent(g),v("Please choose a point from earth.")),!u&&p.length>=2&&(this._cacheEntity=u=this._viewer.entities.add({polyline:{positions:new e.CallbackProperty(()=>n?[...p,p[0]]:p,!1),material:__classPrivateFieldGet(this,vi,"m",fi).call(this,a,l),width:o,clampToGround:r,arcType:e.ArcType.GEODESIC}}))},e.ScreenSpaceEventType.LEFT_CLICK),g.setInputAction(()=>{if(p.pop(),p.length<2)u&&this._viewer.entities.remove(u),super._endEvent(g),v("Polyline needs at least two vertexes.");else{const e={id:t,positions:p};s&&this.layer.add({id:t,module:i,materialType:a,materialUniforms:l,loop:n,ground:r,width:o,lines:[p],data:{type:exports.DrawType.POLYLINE,positions:p,attr:{width:o,ground:r,loop:n,module:i,materialType:a,materialUniforms:l}}}),u&&this._viewer.entities.remove(u),super._endEvent(g),null==h||h(p),this._eventBus.emit(exports.SubEventType.DRAW_FINISH,{type:this.type,event:exports.SubEventType.DRAW_FINISH,data:Object.assign({},e)}),c(e)}},e.ScreenSpaceEventType.RIGHT_CLICK)})}edit(t){var i;const o=null===(i=this.layer.getEntity(t))||void 0===i?void 0:i.data.data;if(!o)return new Promise((e,i)=>i(`Object ${t} does not exist.`));if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const r=super._startEvent(),n=[],s=[...o.positions];let a,l,c;o.positions.forEach((t,i)=>{n.push(this._viewer.entities.add({id:`ModifyPoint_${i}`,position:t,point:{pixelSize:10,color:e.Color.LIGHTBLUE,heightReference:e.HeightReference.CLAMP_TO_GROUND,disableDepthTestDistance:Number.POSITIVE_INFINITY}}))});const d=this._viewer.entities.add({polyline:{positions:new e.CallbackProperty(()=>o.attr.loop?[...s,s[0]]:s,!1),material:__classPrivateFieldGet(this,vi,"m",fi).call(this,o.attr.materialType,o.attr.materialUniforms),width:o.attr.width,clampToGround:o.attr.ground}});return this.layer.remove(t),r.setInputAction(({position:e})=>{var i;if(!a)return;const o=null!==(i=super._getPointOnEllipsoid(e))&&void 0!==i?i:c;a.position.setValue(o),s.splice(l,1,o),a=void 0,this._eventBus.emit(exports.SubEventType.EDIT_CERTAIN,{type:this.type,event:exports.SubEventType.EDIT_CERTAIN,data:{id:t,index:l,position:o}})},e.ScreenSpaceEventType.LEFT_UP),r.setInputAction(({endPosition:e})=>{const i=super._getPointOnEllipsoid(e);i&&a&&(a.position.setValue(i),s.splice(l,1,i),c=i,this._eventBus.emit(exports.SubEventType.EDIT_MOVE,{type:this.type,event:exports.SubEventType.EDIT_MOVE,data:{id:t,position:i}}))},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise(i=>{r.setInputAction(({position:e})=>{const c=super._getPointOnEllipsoid(e),h=this._scene.pick(e);c&&(h&&n.some(e=>e.id===h.id.id)?(super._setViewControl(!1),l=Number(h.id.id.split("_")[1]),a=n[l]):(super._endEvent(r),this.layer.add(Object.assign(Object.assign({id:t,lines:[s]},o.attr),{data:{type:o.type,positions:s,attr:o.attr}})),d&&this._viewer.entities.remove(d),n.forEach(e=>this._viewer.entities.remove(e)),this._eventBus.emit(exports.SubEventType.EDIT_FINISH,{type:this.type,event:exports.SubEventType.EDIT_FINISH,data:{id:t,positions:s}}),i({id:t,positions:s})))},e.ScreenSpaceEventType.LEFT_DOWN)})}}vi=new WeakSet,fi=function _PolylineDynamic_getMaterial(t,i){var o,r;switch(t){case"Color":return null!==(o=null==i?void 0:i.color)&&void 0!==o?o:e.Color.RED;case"PolylineArrow":return new e.PolylineArrowMaterialProperty(null!==(r=null==i?void 0:i.color)&&void 0!==r?r:e.Color.RED);case"PolylineDash":return new e.PolylineDashMaterialProperty(Object.assign({gapColor:e.Color.TRANSPARENT,dashLength:8},i));case"PolylineGlow":return new e.PolylineGlowMaterialProperty(Object.assign({},i));case"PolylineOutline":return new e.PolylineOutlineMaterialProperty(Object.assign({outlineColor:e.Color.WHITE,outlineWidth:1},i));default:throw new e.DeveloperError("A certain material type is required.")}};const{min:Ci,max:yi}=Math;class RectangleDynamic extends Dynamic{constructor(e){super(e,new RectangleLayer(e)),this.type="Rectangle"}add(e){this.layer.add(e)}draw({id:t=exports.Utils.uuid(),module:i=exports.DefaultModuleName.RECTANGLE,color:o=e.Color.RED.withAlpha(.4),keep:r=!0,ground:n=!1,onFinish:s}){if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});let a,l,c;const d=new e.Rectangle,h=super._startEvent();return this._cacheHandler=h,h.setInputAction(({endPosition:e})=>{const t=super._getPointOnEllipsoid(e);t&&a&&(l=t)},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise((p,u)=>{h.setInputAction(({position:i})=>{super._setViewControl(!1);const r=super._getPointOnEllipsoid(i);r?(a=r,l=r.clone(),this._cacheEntity=c=this._viewer.entities.add({rectangle:{coordinates:new e.CallbackProperty(()=>{const{longitude:t,latitude:i}=e.Cartographic.fromCartesian(a),{longitude:o,latitude:r}=e.Cartographic.fromCartesian(l);return d.north=yi(i,r),d.south=Ci(i,r),d.west=Ci(t,o),d.east=yi(t,o),d},!1),material:o,heightReference:n?e.HeightReference.CLAMP_TO_GROUND:e.HeightReference.NONE}}),this._eventBus.emit(exports.SubEventType.DRAW_CERTAIN,{type:this.type,event:exports.SubEventType.DRAW_CERTAIN,data:{id:t,position:r}})):(super._endEvent(h),u("Please choose a point from earth."))},e.ScreenSpaceEventType.LEFT_DOWN),h.setInputAction(({position:u})=>{var m;l=null!==(m=super._getPointOnEllipsoid(u))&&void 0!==m?m:l;const{longitude:g,latitude:v}=e.Cartographic.fromCartesian(a),{longitude:f,latitude:C}=e.Cartographic.fromCartesian(l);d.north=yi(v,C),d.south=Ci(v,C),d.west=Ci(g,f),d.east=yi(g,f);const y={id:t,rectangle:d};r&&this.layer.add({id:t,module:i,rectangle:d,height:0,color:o,ground:n,data:{type:exports.DrawType.RECTANGLE,positions:[e.Cartesian3.fromRadians(d.west,d.north),e.Cartesian3.fromRadians(d.west,d.south),e.Cartesian3.fromRadians(d.east,d.south),e.Cartesian3.fromRadians(d.east,d.north)],attr:{color:o,ground:n,module:i}}}),this._viewer.entities.remove(c),super._endEvent(h),null==s||s(d),this._eventBus.emit(exports.SubEventType.DRAW_FINISH,{type:this.type,event:exports.SubEventType.DRAW_FINISH,data:Object.assign({},y)}),p(y)},e.ScreenSpaceEventType.LEFT_UP)})}edit(t){var i;const o=null===(i=this.layer.getEntity(t))||void 0===i?void 0:i.data.data;if(!o)return new Promise((e,i)=>i(`Object ${t} does not exist.`));if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const r=super._startEvent(),n=[];let s,a,l,{longitude:c,latitude:d}=e.Cartographic.fromCartesian(o.positions[0]),{longitude:h,latitude:p}=e.Cartographic.fromCartesian(o.positions[2]);const u=[{opposite:2,sameLon:1,sameLat:3,longitude:c,latitude:d},{opposite:3,sameLon:0,sameLat:2,longitude:c,latitude:p},{opposite:0,sameLon:3,sameLat:1,longitude:h,latitude:p},{opposite:1,sameLon:2,sameLat:0,longitude:h,latitude:d}],m=new e.Rectangle(c,p,h,d);o.positions.forEach((t,i)=>{n.push(this._viewer.entities.add({id:`ModifyPoint_${i}`,position:t,point:{pixelSize:10,color:e.Color.LIGHTBLUE,heightReference:e.HeightReference.CLAMP_TO_GROUND,disableDepthTestDistance:Number.POSITIVE_INFINITY}}))});const g=this._viewer.entities.add({rectangle:{coordinates:new e.CallbackProperty(()=>(m.north=d,m.south=p,m.west=c,m.east=h,m),!1),material:o.attr.color,heightReference:o.attr.ground?e.HeightReference.CLAMP_TO_GROUND:e.HeightReference.NONE}});return this.layer.remove(t),r.setInputAction(({position:t})=>{var i;if(!s)return;const o=null!==(i=super._getPointOnEllipsoid(t))&&void 0!==i?i:l,r=u[a].sameLat,m=u[a].sameLon,{longitude:g,latitude:v}=e.Cartographic.fromCartesian(o),{longitude:f,latitude:C}=u[u[a].opposite];u[a].latitude=v,u[a].longitude=g,u[r].latitude=v,u[m].longitude=g,d=yi(v,C),p=Ci(v,C),c=Ci(g,f),h=yi(g,f),n[r].position.setValue(e.Cartesian3.fromRadians(u[r].longitude,u[r].latitude)),n[m].position.setValue(e.Cartesian3.fromRadians(u[m].longitude,u[m].latitude)),s.position.setValue(o),s=void 0},e.ScreenSpaceEventType.LEFT_UP),r.setInputAction(({endPosition:t})=>{const i=super._getPointOnEllipsoid(t);if(!i||!s)return;const o=u[a].sameLat,r=u[a].sameLon,{longitude:m,latitude:g}=e.Cartographic.fromCartesian(i),{longitude:v,latitude:f}=u[u[a].opposite];u[a].latitude=g,u[a].longitude=m,u[o].latitude=g,u[r].longitude=m,d=yi(g,f),p=Ci(g,f),c=Ci(m,v),h=yi(m,v),n[o].position.setValue(e.Cartesian3.fromRadians(u[o].longitude,u[o].latitude)),n[r].position.setValue(e.Cartesian3.fromRadians(u[r].longitude,u[r].latitude)),s.position.setValue(i),l=i},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise(i=>{r.setInputAction(({position:u})=>{const v=super._getPointOnEllipsoid(u),f=this._scene.pick(u);v&&(f&&n.some(e=>e.id===f.id.id)?(super._setViewControl(!1),a=f.id.id.split("_")[1],s=n[a],this._eventBus.emit(exports.SubEventType.EDIT_CERTAIN,{type:this.type,event:exports.SubEventType.EDIT_CERTAIN,data:{id:t,position:l}})):(super._endEvent(r),this.layer.add(Object.assign(Object.assign({id:t,rectangle:m},o.attr),{data:{type:o.type,positions:[e.Cartesian3.fromRadians(c,d),e.Cartesian3.fromRadians(c,p),e.Cartesian3.fromRadians(h,p),e.Cartesian3.fromRadians(h,d)],attr:o.attr}})),g&&this._viewer.entities.remove(g),n.forEach(e=>this._viewer.entities.remove(e)),this._eventBus.emit(exports.SubEventType.EDIT_FINISH,{type:this.type,event:exports.SubEventType.EDIT_FINISH,data:{id:t,rectangle:m}}),i({id:t,rectangle:m})))},e.ScreenSpaceEventType.LEFT_DOWN)})}}var Ai,Ei;const{pow:xi,PI:wi}=Math;class StraightArrowDynamic extends Dynamic{constructor(e){super(e,new PolygonLayer(e)),Ai.add(this),this.type="Straight_Arrow"}add(e){this.layer.add(e)}draw({id:t=exports.Utils.uuid(),module:i=exports.DefaultModuleName.STRAIGHT_ARROW,headAngle:o=wi/8.5,neckAngle:r=wi/13,tailWidthFactor:n=.1,neckWidthFactor:s=.2,headWidthFactor:a=.25,color:l=e.Color.YELLOW.withAlpha(.5),outlineColor:c=e.Color.YELLOW,outlineWidth:d=1,keep:h=!0,ground:p=!1,onFinish:u}){if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});let m,g,v,f;const C={headAngle:o,neckAngle:r,tailWidthFactor:n,neckWidthFactor:s,headWidthFactor:a},y=super._startEvent();return this._cacheHandler=y,y.setInputAction(({endPosition:i})=>{const o=super._getPointOnEllipsoid(i);o&&g&&(f=o,!m&&f&&(this._cacheEntity=m=this._viewer.entities.add({polygon:{hierarchy:new e.CallbackProperty(()=>{const t=exports.Geographic.fromCartesian(g).toArray(),i=exports.Geographic.fromCartesian(f).toArray();return new e.PolygonHierarchy(__classPrivateFieldGet(this,Ai,"m",Ei).call(this,t,i,C))},!1),material:l,outline:!0,outlineColor:c,outlineWidth:d,heightReference:p?e.HeightReference.CLAMP_TO_GROUND:e.HeightReference.NONE}})),this._eventBus.emit(exports.SubEventType.DRAW_MOVE,{type:this.type,event:exports.SubEventType.DRAW_MOVE,data:{id:t,position:o}}))},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise(f=>{y.setInputAction(({position:e})=>{const A=super._getPointOnEllipsoid(e);if(A&&(g&&!v&&(v=A),g||(g=A),g&&v)){const e=exports.Geographic.fromCartesian(g).toArray(),A=exports.Geographic.fromCartesian(v).toArray(),E=__classPrivateFieldGet(this,Ai,"m",Ei).call(this,e,A,C);h&&this.layer.add({id:t,module:i,color:l,ground:p,outline:{width:d,materialType:"Color",materialUniforms:{color:c}},usePointHeight:!p,positions:E,data:{type:exports.DrawType.STRAIGHT_ARROW,positions:[g,v],attr:{module:i,outlineColor:c,outlineWidth:d,headAngle:o,neckAngle:r,tailWidthFactor:n,neckWidthFactor:s,headWidthFactor:a,color:l,ground:p}}}),super._endEvent(y),this._viewer.entities.remove(m),null==u||u(E),this._eventBus.emit(exports.SubEventType.DRAW_FINISH,{type:this.type,event:exports.SubEventType.DRAW_FINISH,data:{id:t,start:g,end:v}}),f({id:t,start:g,end:v})}},e.ScreenSpaceEventType.LEFT_CLICK)})}edit(t){var i;const o=null===(i=this.layer.getEntity(t))||void 0===i?void 0:i.data.data;if(!o)return new Promise((e,i)=>i(`Object ${t} does not exist.`));if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const r=super._startEvent(),n=[],s=[...o.positions],a={headAngle:o.attr.headAngle,neckAngle:o.attr.neckAngle,tailWidthFactor:o.attr.tailWidthFactor,neckWidthFactor:o.attr.neckWidthFactor,headWidthFactor:o.attr.headWidthFactor};let l,c,d;o.positions.forEach((t,i)=>{n.push(this._viewer.entities.add({id:`ModifyPoint_${i}`,position:t,point:{pixelSize:10,color:e.Color.LIGHTBLUE,heightReference:e.HeightReference.CLAMP_TO_GROUND,disableDepthTestDistance:Number.POSITIVE_INFINITY}}))});const h=this._viewer.entities.add({polygon:{hierarchy:new e.CallbackProperty(()=>{const t=exports.Geographic.fromCartesian(s[0]).toArray(),i=exports.Geographic.fromCartesian(s[1]).toArray(),o=__classPrivateFieldGet(this,Ai,"m",Ei).call(this,t,i,a);return new e.PolygonHierarchy(o)},!1),material:o.attr.color,outline:!0,outlineColor:o.attr.outlineColor,outlineWidth:o.attr.outlineWidth,heightReference:o.attr.ground?e.HeightReference.CLAMP_TO_GROUND:e.HeightReference.NONE}});return this.layer.remove(t),r.setInputAction(({position:e})=>{var i;if(!l)return;const o=null!==(i=super._getPointOnEllipsoid(e))&&void 0!==i?i:d;l.position.setValue(o),s.splice(c,1,o),l=void 0,this._eventBus.emit(exports.SubEventType.EDIT_CERTAIN,{type:this.type,event:exports.SubEventType.EDIT_CERTAIN,data:{id:t,index:c,position:o}})},e.ScreenSpaceEventType.LEFT_UP),r.setInputAction(({endPosition:e})=>{const i=super._getPointOnEllipsoid(e);i&&l&&(l.position.setValue(i),s.splice(c,1,i),d=i,this._eventBus.emit(exports.SubEventType.EDIT_MOVE,{type:this.type,event:exports.SubEventType.EDIT_MOVE,data:{id:t,index:c,position:i}}))},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise(i=>{r.setInputAction(({position:e})=>{const d=super._getPointOnEllipsoid(e),p=this._scene.pick(e);if(d)if(p&&n.some(e=>e.id===p.id.id))super._setViewControl(!1),c=p.id.id.split("_")[1],l=n[c];else{super._endEvent(r);const e=exports.Geographic.fromCartesian(s[0]).toArray(),l=exports.Geographic.fromCartesian(s[1]).toArray(),c=__classPrivateFieldGet(this,Ai,"m",Ei).call(this,e,l,a);this.layer.add({id:t,positions:c,color:o.attr.color,module:o.attr.module,ground:o.attr.ground,usePointHeight:!o.attr.ground,outline:{width:o.attr.outlineWidth,materialType:"Color",materialUniforms:{color:o.attr.outlineColor}},data:{type:o.type,positions:s,attr:o.attr}}),h&&this._viewer.entities.remove(h),n.forEach(e=>this._viewer.entities.remove(e)),this._eventBus.emit(exports.SubEventType.EDIT_FINISH,{type:this.type,event:exports.SubEventType.EDIT_FINISH,data:{id:t,start:s[0],end:s[1]}}),i({id:t,start:s[0],end:s[1]})}},e.ScreenSpaceEventType.LEFT_DOWN)})}}Ai=new WeakSet,Ei=function _StraightArrowDynamic_computeArrow(t,i,o){const{headAngle:r,neckAngle:n,tailWidthFactor:s,neckWidthFactor:a,headWidthFactor:l}=o,c=xi(exports.Figure.calcMathDistance([t,i]),.99),d=c*s,h=c*a,p=c*l,u=exports.Figure.calcThirdPoint(i,t,wi/2,d,!0),m=exports.Figure.calcThirdPoint(i,t,wi/2,d,!1),g=exports.Figure.calcThirdPoint(t,i,r,p,!1),v=exports.Figure.calcThirdPoint(t,i,r,p,!0),f=exports.Figure.calcThirdPoint(t,i,n,h,!1),C=exports.Figure.calcThirdPoint(t,i,n,h,!0),y=[...u,...f,...g,...i,...v,...C,...m,...t];return e.Cartesian3.fromDegreesArray(y)};class StrokeDynamic extends Dynamic{constructor(e){super(e,new PolylineLayer(e)),this.type="Stroke"}add(e){console.warn("Stroke used for displaying, editing is nonsupport, run method <add> only add a feature."),this.layer.add(e)}draw({id:t=exports.Utils.uuid(),module:i=exports.DefaultModuleName.STROKE,width:o=2,color:r=e.Color.RED,ground:n=!1,keep:s=!0,onFinish:a}){if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const l=[];let c,d=!1;const h=super._startEvent();return this._cacheHandler=h,h.setInputAction(({endPosition:i})=>{if(!d)return;const s=super._getPointOnEllipsoid(i);s&&(l.push(s),!c&&l.length>=2&&(this._cacheEntity=c=this._viewer.entities.add({polyline:{positions:new e.CallbackProperty(()=>l,!1),material:r,width:o,clampToGround:n,arcType:n?e.ArcType.GEODESIC:e.ArcType.RHUMB}})),this._eventBus.emit(exports.SubEventType.DRAW_MOVE,{type:this.type,event:exports.SubEventType.DRAW_MOVE,data:{id:t,position:s}}))},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise((p,u)=>{h.setInputAction(({position:e})=>{d=!0,super._setViewControl(!1);const t=super._getPointOnEllipsoid(e);t?l.push(t):(super._endEvent(h),u("Please choose a point from earth."))},e.ScreenSpaceEventType.LEFT_DOWN),h.setInputAction(()=>{if(l.pop(),l.length<2)c&&this._viewer.entities.remove(c),super._endEvent(h),u("Stroke needs at least two vertexes.");else{const e={id:t,positions:l};s&&this.layer.add({id:t,module:i,ground:n,width:o,materialType:"Color",materialUniforms:{color:r},lines:[l]}),c&&this._viewer.entities.remove(c),super._endEvent(h),null==a||a(l),this._eventBus.emit(exports.SubEventType.DRAW_FINISH,{type:this.type,event:exports.SubEventType.DRAW_FINISH,data:Object.assign({},e)}),p(e)}},e.ScreenSpaceEventType.LEFT_UP)})}edit(e){return new Promise((t,i)=>{i(`Stroke ${e} used for displaying, editing is nonsupport.`)})}}class WallDynamic extends Dynamic{constructor(e){super(e,new WallLayer(e)),this.type="Wall"}add(e){this.layer.add(e)}draw({id:t=exports.Utils.uuid(),module:i=exports.DefaultModuleName.WALL,color:o=e.Color.ORANGE.withAlpha(.7),height:r=2e3,outlineColor:n=e.Color.ORANGE,outlineWidth:s=1,closed:a=!0,keep:l=!0,onMove:c,onEvery:d,onFinish:h}){if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const p=[];let u,m=-1;const g=super._startEvent();return this._cacheHandler=g,g.setInputAction(({endPosition:e})=>{const i=super._getPointOnEllipsoid(e);i&&(p.pop(),p.push(i),null==c||c(i,m),this._eventBus.emit(exports.SubEventType.DRAW_MOVE,{type:this.type,event:exports.SubEventType.DRAW_MOVE,data:{id:t,index:m,position:i}}))},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise((c,v)=>{g.setInputAction(({position:i})=>{const a=super._getPointOnEllipsoid(i);a?(m++,p.push(a),null==d||d(a,m),this._eventBus.emit(exports.SubEventType.DRAW_CERTAIN,{type:this.type,event:exports.SubEventType.DRAW_CERTAIN,data:{id:t,index:m,position:a}})):(super._endEvent(g),v("Please choose a point from earth.")),!u&&p.length>=2&&(this._cacheEntity=u=this._viewer.entities.add({wall:{positions:new e.CallbackProperty(()=>p,!1),material:o,minimumHeights:new e.CallbackProperty(()=>new Array(p.length).fill(0),!1),maximumHeights:new e.CallbackProperty(()=>new Array(p.length).fill(r),!1),outline:!0,outlineColor:n,outlineWidth:s}}))},e.ScreenSpaceEventType.LEFT_CLICK),g.setInputAction(()=>{if(p.pop(),p.length<2)u&&this._viewer.entities.remove(u),super._endEvent(g),v("Polyline needs at least two vertexes.");else{const e={id:t,positions:p};l&&(a&&p.push(p[0].clone()),this.layer.add({id:t,module:i,positions:p,color:o,outline:!0,outlineColor:n,outlineWidth:s,minimumHeights:new Array(p.length).fill(0),maximumHeights:new Array(p.length).fill(r),data:{type:exports.DrawType.WALL,positions:a?p.slice(0,-1):p,attr:{color:o,outlineColor:n,outlineWidth:s,height:r,closed:a,module:i}}})),u&&this._viewer.entities.remove(u),super._endEvent(g),null==h||h(p),this._eventBus.emit(exports.SubEventType.DRAW_FINISH,{type:this.type,event:exports.SubEventType.DRAW_FINISH,data:Object.assign({},e)}),c(e)}},e.ScreenSpaceEventType.RIGHT_CLICK)})}edit(t){var i;const o=null===(i=this.layer.getEntity(t))||void 0===i?void 0:i.data.data;if(!o)return new Promise((e,i)=>i(`Object ${t} does not exist.`));if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const r=super._startEvent(),n=[],s=[...o.positions];let a,l,c;o.attr.closed&&s.push(s[0].clone()),o.positions.forEach((t,i)=>{n.push(this._viewer.entities.add({id:`ModifyPoint_${i}`,position:t,point:{pixelSize:10,color:e.Color.LIGHTBLUE,disableDepthTestDistance:Number.POSITIVE_INFINITY}}))});const d=this._viewer.entities.add({wall:{positions:new e.CallbackProperty(()=>s,!1),minimumHeights:new Array(s.length).fill(0),maximumHeights:new Array(s.length).fill(o.attr.height),outline:!0,material:o.attr.color,outlineColor:o.attr.outlineColor,outlineWidth:o.attr.outlineWidth}});return this.layer.remove(t),r.setInputAction(({position:e})=>{var t;if(!a)return;const i=null!==(t=super._getPointOnEllipsoid(e))&&void 0!==t?t:c;a.position.setValue(i),s.splice(l,1,i),0===l&&o.attr.closed&&(s[s.length-1]=i.clone()),a=void 0},e.ScreenSpaceEventType.LEFT_UP),r.setInputAction(({endPosition:e})=>{const t=super._getPointOnEllipsoid(e);t&&a&&(a.position.setValue(t),s.splice(l,1,t),0===l&&o.attr.closed&&(s[s.length-1]=t.clone()),c=t)},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise(i=>{r.setInputAction(({position:e})=>{const c=super._getPointOnEllipsoid(e),h=this._scene.pick(e);c&&(h&&n.some(e=>e.id===h.id.id)?(super._setViewControl(!1),l=Number(h.id.id.split("_")[1]),a=n[l]):(super._endEvent(r),this.layer.add(Object.assign(Object.assign({id:t,positions:s},o.attr),{minimumHeights:new Array(s.length).fill(0),maximumHeights:new Array(s.length).fill(o.attr.height),data:{type:o.type,positions:o.attr.closed?s.slice(0,-1):s,attr:o.attr}})),d&&this._viewer.entities.remove(d),n.forEach(e=>this._viewer.entities.remove(e)),i({id:t,positions:s})))},e.ScreenSpaceEventType.LEFT_DOWN)})}}class LabelDynamic extends Dynamic{constructor(e){super(e,new LabelLayer(e)),this.type="Label"}add(e){this.layer.add(e)}draw({id:t=exports.Utils.uuid(),module:i=exports.DefaultModuleName.LABEL,text:o="新建文本",font:r="14px sans-serif",scale:n=1,fillColor:s=e.Color.BLACK,outlineColor:a=e.Color.WHITE,outlineWidth:l=1,showBackground:c=!0,backgroundColor:d=e.Color.LIGHTGREY,backgroundPadding:h=new e.Cartesian2(0,0),style:p=e.LabelStyle.FILL_AND_OUTLINE,pixelOffset:u=new e.Cartesian2(0,0),limit:m=0,keep:g=!0,onEvery:v,onFinish:f}){if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const C=[];let y=-1;const A=super._startEvent();return this._cacheHandler=A,new Promise(E=>{const finish=()=>{super._endEvent(A),g||C.forEach(({id:e})=>{this.layer.remove(e)}),null==f||f(C.map(e=>e.position)),this._eventBus.emit(exports.SubEventType.DRAW_FINISH,{type:this.type,event:exports.SubEventType.DRAW_FINISH,data:{labels:C}}),E(C)};A.setInputAction(({position:g})=>{y++;const f=super._getPointOnEllipsoid(g);if(!f)return;const A=`${t}_${y}`,E={id:A,position:f};C.push(E),this.layer.add({id:A,module:i,position:f,text:o,font:r,scale:n,fillColor:s,outlineColor:a,outlineWidth:l,showBackground:c,backgroundColor:d,backgroundPadding:h,style:p,pixelOffset:u,horizontalOrigin:e.HorizontalOrigin.CENTER,verticalOrigin:e.VerticalOrigin.BOTTOM,data:{type:exports.DrawType.LABEL,positions:[f],attr:{module:i,text:o,font:r,scale:n,fillColor:s,outlineColor:a,outlineWidth:l,showBackground:c,backgroundColor:d,backgroundPadding:h,style:p,pixelOffset:u}}}),null==v||v(f,y),this._eventBus.emit(exports.SubEventType.DRAW_CERTAIN,{type:this.type,event:exports.SubEventType.DRAW_CERTAIN,data:Object.assign({},E)}),0!==m&&y>=m-1&&finish()},e.ScreenSpaceEventType.LEFT_CLICK),A.setInputAction(finish,e.ScreenSpaceEventType.RIGHT_CLICK)})}edit(t){var i;const o=null===(i=this.layer.getEntity(t))||void 0===i?void 0:i.data.data;if(!o)return new Promise((e,i)=>i(`Object ${t} does not exist.`));if(State.isOperate())return new Promise((e,t)=>{t("Another drawing or editing is in progress, end it first.")});const r=super._startEvent(),n=o.positions[0];let s,a=n.clone();const l=this._viewer.entities.add({position:n,point:{color:e.Color.RED,pixelSize:10,outlineColor:e.Color.WHITESMOKE,outlineWidth:1,disableDepthTestDistance:Number.POSITIVE_INFINITY}});return r.setInputAction(({endPosition:e})=>{if(!s)return;const i=super._getPointOnEllipsoid(e);if(i){l.position.setValue(i),this.layer.set(t,{position:i});this.layer.getData(t).data.positions[0]=i,a=i,this._eventBus.emit(exports.SubEventType.EDIT_MOVE,{type:this.type,event:exports.SubEventType.EDIT_MOVE,data:{id:t,position:i}})}},e.ScreenSpaceEventType.MOUSE_MOVE),r.setInputAction(()=>{s=void 0},e.ScreenSpaceEventType.LEFT_UP),new Promise(i=>{r.setInputAction(({position:e})=>{const o=this._scene.pick(e);o&&o.id.id===l.id?(super._setViewControl(!1),s=l,this._eventBus.emit(exports.SubEventType.EDIT_CERTAIN,{type:this.type,event:exports.SubEventType.EDIT_CERTAIN,data:{id:t,position:a}})):(super._endEvent(r),l&&this._viewer.entities.remove(l),this._eventBus.emit(exports.SubEventType.EDIT_FINISH,{type:this.type,event:exports.SubEventType.EDIT_FINISH,data:{id:t,position:a}}),i({id:t,position:a}))},e.ScreenSpaceEventType.LEFT_DOWN)})}}var Pi,Si;class ProtoDraw{constructor(t){Pi.set(this,void 0),Si.set(this,void 0),__classPrivateFieldSet(this,Pi,t.scene,"f"),this._point=new PointDynamic(t),this._billboard=new BillboardDynamic(t),this._circle=new CircleDynamic(t),this._model=new ModelDynamic(t),this._rectangle=new RectangleDynamic(t),this._polygon=new PolygonDynamic(t),this._polyline=new PolylineDynamic(t),this._straightArrow=new StraightArrowDynamic(t),this._attackArrow=new AttackArrowDynamic(t),this._pincerArrow=new PincerArrowDynamic(t),this._wall=new WallDynamic(t),this._stroke=new StrokeDynamic(t),this._label=new LabelDynamic(t),__classPrivateFieldSet(this,Si,new e.ScreenSpaceEventHandler(t.viewer.canvas),"f")}getEntity(e){const t=this._billboard.getEntity(e),i=this._point.getEntity(e),o=this._polygon.getEntity(e),r=this._polyline.getEntity(e),n=this._rectangle.getEntity(e),s=this._circle.getEntity(e),a=this._model.getEntity(e),l=this._attackArrow.getEntity(e),c=this._straightArrow.getEntity(e),d=this._pincerArrow.getEntity(e),h=this._wall.getEntity(e),p=this._stroke.getEntity(e),u=this._label.getEntity(e);return t||i||o||r||n||s||a||l||c||d||h||p||u}subscribe(e,t,i){switch(e){case exports.DrawType.POINT:this._point.subscribe(t,i);break;case exports.DrawType.BILLBOARD:this._billboard.subscribe(t,i);break;case exports.DrawType.CIRCLE:this._circle.subscribe(t,i);break;case exports.DrawType.MODEL:this._model.subscribe(t,i);break;case exports.DrawType.POLYGON:this._polygon.subscribe(t,i);break;case exports.DrawType.POLYLINE:this._polyline.subscribe(t,i);break;case exports.DrawType.RECTANGLE:this._rectangle.subscribe(t,i);break;case exports.DrawType.STRAIGHT_ARROW:this._straightArrow.subscribe(t,i);break;case exports.DrawType.ATTACK_ARROW:this._attackArrow.subscribe(t,i);break;case exports.DrawType.PINCER_ARROW:this._pincerArrow.subscribe(t,i);break;case exports.DrawType.WALL:this._wall.subscribe(t,i);break;case exports.DrawType.STROKE:this._stroke.subscribe(t,i);break;case exports.DrawType.LABEL:this._label.subscribe(t,i)}}unsubscribe(e,t,i){switch(e){case exports.DrawType.POINT:this._point.unsubscribe(t,i);break;case exports.DrawType.BILLBOARD:this._billboard.unsubscribe(t,i);break;case exports.DrawType.CIRCLE:this._circle.unsubscribe(t,i);break;case exports.DrawType.MODEL:this._model.unsubscribe(t,i);break;case exports.DrawType.POLYGON:this._polygon.unsubscribe(t,i);break;case exports.DrawType.POLYLINE:this._polyline.unsubscribe(t,i);break;case exports.DrawType.RECTANGLE:this._rectangle.unsubscribe(t,i);break;case exports.DrawType.STRAIGHT_ARROW:this._straightArrow.unsubscribe(t,i);break;case exports.DrawType.ATTACK_ARROW:this._attackArrow.unsubscribe(t,i);break;case exports.DrawType.PINCER_ARROW:this._pincerArrow.unsubscribe(t,i);break;case exports.DrawType.WALL:this._wall.unsubscribe(t,i);break;case exports.DrawType.STROKE:this._stroke.unsubscribe(t,i);break;case exports.DrawType.LABEL:this._label.unsubscribe(t,i)}}setEditable(t){t?__classPrivateFieldGet(this,Si,"f").setInputAction(e=>{if(State.isOperate())return;const t=__classPrivateFieldGet(this,Pi,"f").pick(e.position);if(t){const e=exports.Utils.decode(t.id).id,i=this.getEntity(e);if(!i.data.data)return;switch(i.data.data.type){case exports.DrawType.POINT:this._point.edit(e);break;case exports.DrawType.BILLBOARD:this._billboard.edit(e);break;case exports.DrawType.CIRCLE:this._circle.edit(e);break;case exports.DrawType.MODEL:this._model.edit(e);break;case exports.DrawType.POLYLINE:this._polyline.edit(e);break;case exports.DrawType.POLYGON:this._polygon.edit(e);break;case exports.DrawType.RECTANGLE:this._rectangle.edit(e);break;case exports.DrawType.ATTACK_ARROW:this._attackArrow.edit(e);break;case exports.DrawType.PINCER_ARROW:this._pincerArrow.edit(e);break;case exports.DrawType.STRAIGHT_ARROW:this._straightArrow.edit(e);break;case exports.DrawType.WALL:this._wall.edit(e);break;case exports.DrawType.LABEL:this._label.edit(e)}}},e.ScreenSpaceEventType.LEFT_CLICK):__classPrivateFieldGet(this,Si,"f").removeInputAction(e.ScreenSpaceEventType.LEFT_CLICK)}addFeature(e,t){switch(e){case exports.EditableType.ATTACK_ARROW:this._attackArrow.add(t);break;case exports.EditableType.BILLBOARD:this._billboard.add(t);break;case exports.EditableType.CIRCLE:this._circle.add(t);break;case exports.EditableType.LABEL:this._label.add(t);break;case exports.EditableType.MODEL:this._model.add(t);break;case exports.EditableType.PINCER_ARROW:this._pincerArrow.add(t);break;case exports.EditableType.POINT:this._point.add(t);break;case exports.EditableType.POLYGON:this._polygon.add(t);break;case exports.EditableType.POLYLINE:this._polyline.add(t);break;case exports.EditableType.RECTANGLE:this._rectangle.add(t);break;case exports.EditableType.STRAIGHT_ARROW:this._straightArrow.add(t);break;case exports.EditableType.WALL:this._wall.add(t)}}draw(e,t){switch(e){case exports.DrawType.ATTACK_ARROW:return this._attackArrow.draw(t);case exports.DrawType.BILLBOARD:return this._billboard.draw(t);case exports.DrawType.CIRCLE:return this._circle.draw(t);case exports.DrawType.MODEL:return this._model.draw(t);case exports.DrawType.WALL:return this._wall.draw(t);case exports.DrawType.PINCER_ARROW:return this._pincerArrow.draw(t);case exports.DrawType.POINT:return this._point.draw(t);case exports.DrawType.POLYGON:return this._polygon.draw(t);case exports.DrawType.POLYLINE:return this._polyline.draw(t);case exports.DrawType.RECTANGLE:return this._rectangle.draw(t);case exports.DrawType.STRAIGHT_ARROW:return this._straightArrow.draw(t);case exports.DrawType.STROKE:return this._stroke.draw(t);case exports.DrawType.LABEL:return this._label.draw(t)}}remove(e){e?"string"==typeof e?(this._billboard.remove(e),this._circle.remove(e),this._model.remove(e),this._wall.remove(e),this._point.remove(e),this._polygon.remove(e),this._polyline.remove(e),this._rectangle.remove(e),this._straightArrow.remove(e),this._attackArrow.remove(e),this._pincerArrow.remove(e),this._stroke.remove(e),this._label.remove(e)):(e.billboard&&this._billboard.remove(),e.circle&&this._circle.remove(),e.model&&this._model.remove(),e.wall&&this._wall.remove(),e.point&&this._point.remove(),e.polygon&&this._polygon.remove(),e.polyline&&this._polyline.remove(),e.rectangle&&this._rectangle.remove(),e.straightArrow&&this._straightArrow.remove(),e.attackArrow&&this._attackArrow.remove(),e.pincerArrow&&this._pincerArrow.remove(),e.stroke&&this._stroke.remove(),e.label&&this._label.remove()):(this._billboard.remove(),this._circle.remove(),this._model.remove(),this._wall.remove(),this._point.remove(),this._polygon.remove(),this._polyline.remove(),this._rectangle.remove(),this._straightArrow.remove(),this._attackArrow.remove(),this._pincerArrow.remove(),this._stroke.remove(),this._label.remove())}destroy(){this._isDestroyed||(this._isDestroyed=!0,__classPrivateFieldGet(this,Si,"f").destroy(),this._attackArrow.destroy(),this._billboard.destroy(),this._circle.destroy(),this._pincerArrow.destroy(),this._point.destroy(),this._polygon.destroy(),this._polyline.destroy(),this._rectangle.destroy(),this._straightArrow.destroy(),this._label.destroy(),this._model.destroy(),this._wall.destroy(),this._stroke.destroy())}}Pi=new WeakMap,Si=new WeakMap,__decorate([generate(!1)],ProtoDraw.prototype,"isDestroyed",void 0),__decorate([enumerable(!1)],ProtoDraw.prototype,"_point",void 0),__decorate([enumerable(!1)],ProtoDraw.prototype,"_billboard",void 0),__decorate([enumerable(!1)],ProtoDraw.prototype,"_circle",void 0),__decorate([enumerable(!1)],ProtoDraw.prototype,"_model",void 0),__decorate([enumerable(!1)],ProtoDraw.prototype,"_rectangle",void 0),__decorate([enumerable(!1)],ProtoDraw.prototype,"_polygon",void 0),__decorate([enumerable(!1)],ProtoDraw.prototype,"_polyline",void 0),__decorate([enumerable(!1)],ProtoDraw.prototype,"_straightArrow",void 0),__decorate([enumerable(!1)],ProtoDraw.prototype,"_attackArrow",void 0),__decorate([enumerable(!1)],ProtoDraw.prototype,"_pincerArrow",void 0),__decorate([enumerable(!1)],ProtoDraw.prototype,"_wall",void 0),__decorate([enumerable(!1)],ProtoDraw.prototype,"_stroke",void 0),__decorate([enumerable(!1)],ProtoDraw.prototype,"_label",void 0),exports.Draw=class Draw extends ProtoDraw{},exports.Draw=__decorate([singleton()],exports.Draw);const Ii="http://www.w3.org/2000/svg",bi="http://www.w3.org/1999/xlink";let Ri;const _i=e.Color.fromCssColorString("rgba(247,250,255,0.384)"),Ti=e.Color.fromCssColorString("rgba(143,191,255,0.216)"),Di=e.Color.fromCssColorString("rgba(153,197,255,0.098)"),Fi=e.Color.fromCssColorString("rgba(255,255,255,0.086)"),Mi=e.Color.fromCssColorString("rgba(255,255,255,0.267)"),Li=e.Color.fromCssColorString("rgba(255,255,255,0)"),Gi=e.Color.fromCssColorString("rgba(66,67,68,0.3)"),Bi=e.Color.fromCssColorString("rgba(0,0,0,0.5)"),getElementColor=t=>e.Color.fromCssColorString(window.getComputedStyle(t).getPropertyValue("color")),Oi={animation_pathReset:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.316,5.318,9.833,13.682,9.833,5.5,5.5,5.5,5.5,25.5,9.833,25.5,9.833,17.318,24.316,25.682z"},animation_pathPause:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M13,5.5,7.5,5.5,7.5,25.5,13,25.5zM24.5,5.5,19,5.5,19,25.5,24.5,25.5z"},animation_pathPlay:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathPlayReverse:{tagName:"path",transform:"translate(16,16) scale(-0.85,0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathLoop:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.249,15.499c-0.009,4.832-3.918,8.741-8.75,8.75c-2.515,0-4.768-1.064-6.365-2.763l2.068-1.442l-7.901-3.703l0.744,8.694l2.193-1.529c2.244,2.594,5.562,4.242,9.26,4.242c6.767,0,12.249-5.482,12.249-12.249H24.249zM15.499,6.75c2.516,0,4.769,1.065,6.367,2.764l-2.068,1.443l7.901,3.701l-0.746-8.693l-2.192,1.529c-2.245-2.594-5.562-4.245-9.262-4.245C8.734,3.25,3.25,8.734,3.249,15.499H6.75C6.758,10.668,10.668,6.758,15.499,6.75z"},animation_pathClock:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-15.5)",d:"M15.5,2.374C8.251,2.375,2.376,8.251,2.374,15.5C2.376,22.748,8.251,28.623,15.5,28.627c7.249-0.004,13.124-5.879,13.125-13.127C28.624,8.251,22.749,2.375,15.5,2.374zM15.5,25.623C9.909,25.615,5.385,21.09,5.375,15.5C5.385,9.909,9.909,5.384,15.5,5.374c5.59,0.01,10.115,4.535,10.124,10.125C25.615,21.09,21.091,25.615,15.5,25.623zM8.625,15.5c-0.001-0.552-0.448-0.999-1.001-1c-0.553,0-1,0.448-1,1c0,0.553,0.449,1,1,1C8.176,16.5,8.624,16.053,8.625,15.5zM8.179,18.572c-0.478,0.277-0.642,0.889-0.365,1.367c0.275,0.479,0.889,0.641,1.365,0.365c0.479-0.275,0.643-0.887,0.367-1.367C9.27,18.461,8.658,18.297,8.179,18.572zM9.18,10.696c-0.479-0.276-1.09-0.112-1.366,0.366s-0.111,1.09,0.365,1.366c0.479,0.276,1.09,0.113,1.367-0.366C9.821,11.584,9.657,10.973,9.18,10.696zM22.822,12.428c0.478-0.275,0.643-0.888,0.366-1.366c-0.275-0.478-0.89-0.642-1.366-0.366c-0.479,0.278-0.642,0.89-0.366,1.367C21.732,12.54,22.344,12.705,22.822,12.428zM12.062,21.455c-0.478-0.275-1.089-0.111-1.366,0.367c-0.275,0.479-0.111,1.09,0.366,1.365c0.478,0.277,1.091,0.111,1.365-0.365C12.704,22.344,12.54,21.732,12.062,21.455zM12.062,9.545c0.479-0.276,0.642-0.888,0.366-1.366c-0.276-0.478-0.888-0.642-1.366-0.366s-0.642,0.888-0.366,1.366C10.973,9.658,11.584,9.822,12.062,9.545zM22.823,18.572c-0.48-0.275-1.092-0.111-1.367,0.365c-0.275,0.479-0.112,1.092,0.367,1.367c0.477,0.275,1.089,0.113,1.365-0.365C23.464,19.461,23.3,18.848,22.823,18.572zM19.938,7.813c-0.477-0.276-1.091-0.111-1.365,0.366c-0.275,0.48-0.111,1.091,0.366,1.367s1.089,0.112,1.366-0.366C20.581,8.702,20.418,8.089,19.938,7.813zM23.378,14.5c-0.554,0.002-1.001,0.45-1.001,1c0.001,0.552,0.448,1,1.001,1c0.551,0,1-0.447,1-1C24.378,14.949,23.929,14.5,23.378,14.5zM15.501,6.624c-0.552,0-1,0.448-1,1l-0.466,7.343l-3.004,1.96c-0.478,0.277-0.642,0.889-0.365,1.365c0.275,0.479,0.889,0.643,1.365,0.367l3.305-1.676C15.39,16.99,15.444,17,15.501,17c0.828,0,1.5-0.671,1.5-1.5l-0.5-7.876C16.501,7.072,16.053,6.624,15.501,6.624zM15.501,22.377c-0.552,0-1,0.447-1,1s0.448,1,1,1s1-0.447,1-1S16.053,22.377,15.501,22.377zM18.939,21.455c-0.479,0.277-0.643,0.889-0.366,1.367c0.275,0.477,0.888,0.643,1.366,0.365c0.478-0.275,0.642-0.889,0.366-1.365C20.028,21.344,19.417,21.18,18.939,21.455z"},animation_pathWingButton:{tagName:"path",d:"m 4.5,0.5 c -2.216,0 -4,1.784 -4,4 l 0,24 c 0,2.216 1.784,4 4,4 l 13.71875,0 C 22.478584,27.272785 27.273681,22.511272 32.5,18.25 l 0,-13.75 c 0,-2.216 -1.784,-4 -4,-4 l -24,0 z"},animation_pathPointer:{tagName:"path",d:"M-15,-65,-15,-55,15,-55,15,-65,0,-95z"},animation_pathSwooshFX:{tagName:"path",d:"m 85,0 c 0,16.617 -4.813944,35.356 -13.131081,48.4508 h 6.099803 c 8.317138,-13.0948 13.13322,-28.5955 13.13322,-45.2124 0,-46.94483 -38.402714,-85.00262 -85.7743869,-85.00262 -1.0218522,0 -2.0373001,0.0241 -3.0506131,0.0589 45.958443,1.59437 82.723058,35.77285 82.723058,81.70532 z"}},svgFromObject=e=>{const t=document.createElementNS(Ii,e.tagName);for(const i in e)if(e.hasOwnProperty(i)&&"tagName"!==i)if("children"===i){const i=e.children.length;for(let o=0;o<i;++o)t.appendChild(svgFromObject(e.children[o]))}else 0===i.indexOf("xlink:")?t.setAttributeNS(bi,i.substring(6),e[i]):"textContent"===i?t.textContent=e[i]:t.setAttribute(i,e[i]);return t},svgText=(e,t,i)=>{const o=document.createElementNS(Ii,"text");o.setAttribute("x",e),o.setAttribute("y",t),o.setAttribute("class","cesium-animation-svgText");const r=document.createElementNS(Ii,"tspan");return r.textContent=i,o.appendChild(r),o},ki=new e.Color,makeColorString=(e,t)=>{const i=t.alpha,o=1-i;return ki.red=e.red*o+t.red*i,ki.green=e.green*o+t.green*i,ki.blue=e.blue*o+t.blue*i,ki.toCssColorString()},rectButton=(e,t,i)=>{const o=Oi[i],r={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{tagName:"rect",class:"cesium-animation-buttonGlow",width:32,height:32,rx:2,ry:2},{tagName:"rect",class:"cesium-animation-buttonMain",width:32,height:32,rx:4,ry:4},{class:"cesium-animation-buttonPath",id:i,tagName:o.tagName,transform:o.transform,d:o.d},{tagName:"title",textContent:""}]};return svgFromObject(r)};class SvgButton{constructor(t,i){this._viewModel=i,this.svgElement=t,this._clickFunction=()=>{const e=this._viewModel.command;e.canExecute&&e()},t.addEventListener("click",this._clickFunction,!0),this._subscriptions=[e.subscribeAndEvaluate(i,"toggled",this.setToggled,this),e.subscribeAndEvaluate(i,"tooltip",this.setTooltip,this),e.subscribeAndEvaluate(i.command,"canExecute",this.setEnabled,this)]}destroy(){this.svgElement.removeEventListener("click",this._clickFunction,!0);const t=this._subscriptions;for(let e=0,i=t.length;e<i;e++)t[e].dispose();e.destroyObject(this)}isDestroyed(){return!1}setEnabled(e){if(this._enabled!==e){if(this._enabled=e,!e)return void this.svgElement.setAttribute("class","cesium-animation-buttonDisabled");if(this._toggled)return void this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled");this.svgElement.setAttribute("class","cesium-animation-rectButton")}}setToggled(e){this._toggled!==e&&(this._toggled=e,this._enabled&&(e?this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled"):this.svgElement.setAttribute("class","cesium-animation-rectButton")))}setTooltip(e){this.svgElement.getElementsByTagName("title")[0].textContent=e}}class ImprovedAnimation{get container(){return this._container}get viewModel(){return this._viewModel}constructor(t,i,o){if(this._centerX=0,this._centerY=0,!e.defined(t))throw new e.DeveloperError("container is required.");if(!e.defined(i))throw new e.DeveloperError("viewModel is required.");if(!e.defined(o))throw new e.DeveloperError("scene is required.");t=e.getElement(t),this._scene=o,this._viewModel=i,this._container=t;const r=t.ownerDocument,n=document.createElement("style");n.textContent=".cesium-animation-rectButton .cesium-animation-buttonGlow { filter: url(#animation_blurred); }.cesium-animation-rectButton .cesium-animation-buttonMain { fill: url(#animation_buttonNormal); }.cesium-animation-buttonToggled .cesium-animation-buttonMain { fill: url(#animation_buttonToggled); }.cesium-animation-rectButton:hover .cesium-animation-buttonMain { fill: url(#animation_buttonHovered); }.cesium-animation-buttonDisabled .cesium-animation-buttonMain { fill: url(#animation_buttonDisabled); }.cesium-animation-shuttleRingG .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshGradient); }.cesium-animation-shuttleRingG:hover .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshHovered); }.cesium-animation-shuttleRingPointer { fill: url(#animation_shuttleRingPointerGradient); }.cesium-animation-shuttleRingPausePointer { fill: url(#animation_shuttleRingPointerPaused); }.cesium-animation-knobOuter { fill: url(#animation_knobOuter); }.cesium-animation-knobInner { fill: url(#animation_knobInner); }",r.head.insertBefore(n,r.head.childNodes[0]);const s=document.createElement("div");s.className="cesium-animation-theme",s.innerHTML='<div class="cesium-animation-themeNormal"></div><div class="cesium-animation-themeHover"></div><div class="cesium-animation-themeSelect"></div><div class="cesium-animation-themeDisabled"></div><div class="cesium-animation-themeKnob"></div><div class="cesium-animation-themePointer"></div><div class="cesium-animation-themeSwoosh"></div><div class="cesium-animation-themeSwooshHover"></div>',this._theme=s,this._themeNormal=s.childNodes[0],this._themeHover=s.childNodes[1],this._themeSelect=s.childNodes[2],this._themeDisabled=s.childNodes[3],this._themeKnob=s.childNodes[4],this._themePointer=s.childNodes[5],this._themeSwoosh=s.childNodes[6],this._themeSwooshHover=s.childNodes[7];const a=document.createElementNS(Ii,"svg:svg");this._svgNode=a,a.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",bi);const l=document.createElementNS(Ii,"g");this._topG=l,this._realtimeSVG=new SvgButton(((e,t,i)=>{const o=Oi[i],r=Oi.animation_pathWingButton,n={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{class:"cesium-animation-buttonGlow",id:"animation_pathWingButton",tagName:r.tagName,d:r.d},{class:"cesium-animation-buttonMain",id:"animation_pathWingButton",tagName:r.tagName,d:r.d},{class:"cesium-animation-buttonPath",id:i,tagName:o.tagName,transform:o.transform,d:o.d},{tagName:"title",textContent:""}]};return svgFromObject(n)})(3,4,"animation_pathClock"),i.playRealtimeViewModel),this._playReverseSVG=new SvgButton(rectButton(44,99,"animation_pathPlayReverse"),i.playReverseViewModel),this._playForwardSVG=new SvgButton(rectButton(124,99,"animation_pathPlay"),i.playForwardViewModel),this._pauseSVG=new SvgButton(rectButton(84,99,"animation_pathPause"),i.pauseViewModel);const c=document.createElementNS(Ii,"g");c.appendChild(this._realtimeSVG.svgElement),c.appendChild(this._playReverseSVG.svgElement),c.appendChild(this._playForwardSVG.svgElement),c.appendChild(this._pauseSVG.svgElement);const d=svgFromObject({tagName:"circle",class:"cesium-animation-shuttleRingBack",cx:100,cy:100,r:99});this._shuttleRingBackPanel=d;const h=Oi.animation_pathSwooshFX,p=Oi.animation_pathPointer,u=svgFromObject({tagName:"g",class:"cesium-animation-shuttleRingSwoosh",children:[{tagName:h.tagName,transform:"translate(100,97) scale(-1,1)",id:"animation_pathSwooshFX",d:h.d},{tagName:h.tagName,transform:"translate(100,97)",id:"animation_pathSwooshFX",d:h.d},{tagName:"line",x1:100,y1:8,x2:100,y2:22}]});this._shuttleRingSwooshG=u,this._shuttleRingPointer=svgFromObject({class:"cesium-animation-shuttleRingPointer",id:"animation_pathPointer",tagName:p.tagName,d:p.d});const m=svgFromObject({tagName:"g",transform:"translate(100,100)"});this._knobOuter=svgFromObject({tagName:"circle",class:"cesium-animation-knobOuter",cx:0,cy:0,r:71});const g=svgFromObject({tagName:"circle",class:"cesium-animation-knobInner",cx:0,cy:0,r:61});this._knobDate=svgText(0,-24,""),this._knobTime=svgText(0,-7,""),this._knobStatus=svgText(0,-41,"");const v=svgFromObject({tagName:"circle",class:"cesium-animation-blank",cx:0,cy:0,r:61}),f=document.createElementNS(Ii,"g");f.setAttribute("class","cesium-animation-shuttleRingG"),t.appendChild(s),l.appendChild(f),l.appendChild(m),l.appendChild(c),f.appendChild(d),f.appendChild(u),f.appendChild(this._shuttleRingPointer),m.appendChild(this._knobOuter),m.appendChild(g),m.appendChild(this._knobDate),m.appendChild(this._knobTime),m.appendChild(this._knobStatus),m.appendChild(v),a.appendChild(l),t.appendChild(a);const mouseCallback=e=>{((e,t)=>{const i=e._viewModel,o=i.shuttleRingDragging;if(!o||Ri===e)if("mousedown"===t.type||o&&"mousemove"===t.type||"touchstart"===t.type&&1===t.touches.length||o&&"touchmove"===t.type&&1===t.touches.length){const r=e._centerX,n=e._centerY,s=e._svgNode.getBoundingClientRect();let a,l;if("touchstart"===t.type||"touchmove"===t.type?(a=t.touches[0].clientX,l=t.touches[0].clientY):(a=t.clientX,l=t.clientY),!o&&(a>s.right||a<s.left||l<s.top||l>s.bottom))return;const c=e._scene.canvas.getBoundingClientRect(),d=c.width/e._scene.canvas.width,h=c.height/e._scene.canvas.height,p=e._shuttleRingPointer.getBoundingClientRect(),u=(a-s.left)/d-r,m=(l-s.top)/h-n;let g=180*Math.atan2(m,u)/Math.PI+90;g>180&&(g-=360);const v=i.shuttleRingAngle;o||a<p.right&&a>p.left&&l>p.top&&l<p.bottom?(Ri=e,i.shuttleRingDragging=!0,i.shuttleRingAngle=g):g<v?i.slower():g>v&&i.faster(),t.preventDefault()}else e===Ri&&(Ri=void 0),i.shuttleRingDragging=!1})(this,e)};this._mouseCallback=mouseCallback,d.addEventListener("mousedown",mouseCallback,!0),d.addEventListener("touchstart",mouseCallback,!0),u.addEventListener("mousedown",mouseCallback,!0),u.addEventListener("touchstart",mouseCallback,!0),r.addEventListener("mousemove",mouseCallback,!0),r.addEventListener("touchmove",mouseCallback,!0),r.addEventListener("mouseup",mouseCallback,!0),r.addEventListener("touchend",mouseCallback,!0),r.addEventListener("touchcancel",mouseCallback,!0),this._shuttleRingPointer.addEventListener("mousedown",mouseCallback,!0),this._shuttleRingPointer.addEventListener("touchstart",mouseCallback,!0),this._knobOuter.addEventListener("mousedown",mouseCallback,!0),this._knobOuter.addEventListener("touchstart",mouseCallback,!0);const C=this._knobTime.childNodes[0],y=this._knobDate.childNodes[0],A=this._knobStatus.childNodes[0];let E;this._subscriptions=[e.subscribeAndEvaluate(i.pauseViewModel,"toggled",e=>{E!==e&&(E=e,E?this._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPausePointer"):this._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPointer"))}),e.subscribeAndEvaluate(i,"shuttleRingAngle",e=>{var t,i,o;t=this._shuttleRingPointer,i=this._knobOuter,o=e,t.setAttribute("transform",`translate(100,100) rotate(${o})`),i.setAttribute("transform",`rotate(${o})`)}),e.subscribeAndEvaluate(i,"dateLabel",e=>{y.textContent!==e&&(y.textContent=e)}),e.subscribeAndEvaluate(i,"timeLabel",e=>{C.textContent!==e&&(C.textContent=e)}),e.subscribeAndEvaluate(i,"multiplierLabel",e=>{A.textContent!==e&&(A.textContent=e)})],this.applyThemeChanges(),this.resize()}isDestroyed(){return!1}destroy(){e.defined(this._observer)&&(this._observer.disconnect(),this._observer=void 0);const t=this._container.ownerDocument,i=this._mouseCallback;this._shuttleRingBackPanel.removeEventListener("mousedown",i,!0),this._shuttleRingBackPanel.removeEventListener("touchstart",i,!0),this._shuttleRingSwooshG.removeEventListener("mousedown",i,!0),this._shuttleRingSwooshG.removeEventListener("touchstart",i,!0),t.removeEventListener("mousemove",i,!0),t.removeEventListener("touchmove",i,!0),t.removeEventListener("mouseup",i,!0),t.removeEventListener("touchend",i,!0),t.removeEventListener("touchcancel",i,!0),this._shuttleRingPointer.removeEventListener("mousedown",i,!0),this._shuttleRingPointer.removeEventListener("touchstart",i,!0),this._knobOuter.removeEventListener("mousedown",i,!0),this._knobOuter.removeEventListener("touchstart",i,!0),this._container.removeChild(this._svgNode),this._container.removeChild(this._theme),this._realtimeSVG.destroy(),this._playReverseSVG.destroy(),this._playForwardSVG.destroy(),this._pauseSVG.destroy();const o=this._subscriptions;for(let e=0,t=o.length;e<t;e++)o[e].dispose();return e.destroyObject(this)}resize(){const e=this._container.clientWidth,t=this._container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;const i=this._svgNode,o=200,r=132;let n=e,s=t;0===e&&0===t?(n=o,s=r):0===e?(s=t,n=o*(t/r)):0===t&&(n=e,s=r*(e/o));const a=n/o,l=s/r;i.style.cssText=`width: ${n}px; height: ${s}px; position: absolute; bottom: 0; left: 0; overflow: hidden;`,i.setAttribute("width",n),i.setAttribute("height",s),i.setAttribute("viewBox",`0 0 ${n} ${s}`),this._topG.setAttribute("transform",`scale(${a},${l})`),this._centerX=Math.max(1,100*a),this._centerY=Math.max(1,100*l),this._lastHeight=e,this._lastWidth=t}applyThemeChanges(){const t=this._container.ownerDocument;if(!t.body.contains(this._container)){if(e.defined(this._observer))return;return this._observer=new MutationObserver(()=>{t.body.contains(this._container)&&(this._observer.disconnect(),this._observer=void 0,this.applyThemeChanges())}),void this._observer.observe(t,{childList:!0,subtree:!0})}const i=getElementColor(this._themeNormal),o=getElementColor(this._themeHover),r=getElementColor(this._themeSelect),n=getElementColor(this._themeDisabled),s=getElementColor(this._themeKnob),a=getElementColor(this._themePointer),l=getElementColor(this._themeSwoosh),c=getElementColor(this._themeSwooshHover),d=svgFromObject({tagName:"defs",children:[{id:"animation_buttonNormal",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":makeColorString(i,_i)},{tagName:"stop",offset:"12%","stop-color":makeColorString(i,Ti)},{tagName:"stop",offset:"46%","stop-color":makeColorString(i,Di)},{tagName:"stop",offset:"81%","stop-color":makeColorString(i,Fi)}]},{id:"animation_buttonHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":makeColorString(o,_i)},{tagName:"stop",offset:"12%","stop-color":makeColorString(o,Ti)},{tagName:"stop",offset:"46%","stop-color":makeColorString(o,Di)},{tagName:"stop",offset:"81%","stop-color":makeColorString(o,Fi)}]},{id:"animation_buttonToggled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":makeColorString(r,_i)},{tagName:"stop",offset:"12%","stop-color":makeColorString(r,Ti)},{tagName:"stop",offset:"46%","stop-color":makeColorString(r,Di)},{tagName:"stop",offset:"81%","stop-color":makeColorString(r,Fi)}]},{id:"animation_buttonDisabled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":makeColorString(n,Mi)},{tagName:"stop",offset:"75%","stop-color":makeColorString(n,Li)}]},{id:"animation_blurred",tagName:"filter",width:"200%",height:"200%",x:"-50%",y:"-50%",children:[{tagName:"feGaussianBlur",stdDeviation:4,in:"SourceGraphic"}]},{id:"animation_shuttleRingSwooshGradient",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":l.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":l.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":l.toCssColorString()}]},{id:"animation_shuttleRingSwooshHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":c.toCssColorString()}]},{id:"animation_shuttleRingPointerGradient",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":a.toCssColorString()},{tagName:"stop",offset:"40%","stop-color":a.toCssColorString()},{tagName:"stop",offset:"60%","stop-color":makeColorString(a,Bi)},{tagName:"stop",offset:"100%","stop-color":makeColorString(a,Bi)}]},{id:"animation_shuttleRingPointerPaused",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":"#CCC"},{tagName:"stop",offset:"40%","stop-color":"#CCC"},{tagName:"stop",offset:"60%","stop-color":"#555"},{tagName:"stop",offset:"100%","stop-color":"#555"}]},{id:"animation_knobOuter",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":makeColorString(s,_i)},{tagName:"stop",offset:"60%","stop-color":makeColorString(s,Gi)},{tagName:"stop",offset:"85%","stop-color":makeColorString(s,Ti)}]},{id:"animation_knobInner",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":makeColorString(s,Gi)},{tagName:"stop",offset:"60%","stop-color":makeColorString(s,_i)},{tagName:"stop",offset:"85%","stop-color":makeColorString(s,Fi)}]}]});e.defined(this._defsElement)?this._svgNode.replaceChild(d,this._defsElement):this._svgNode.appendChild(d),this._defsElement=d}}class ImprovedScreenSpaceCameraController{constructor(t){if(this.enableInputs=!0,this.enableTranslate=!0,this.enableZoom=!0,this.enableRotate=!0,this.enableTilt=!0,this.enableLook=!0,this.inertiaSpin=.9,this.inertiaTranslate=.9,this.inertiaZoom=.8,this.maximumMovementRatio=.1,this.bounceAnimationTime=3,this.minimumZoomDistance=1,this.maximumZoomDistance=Number.POSITIVE_INFINITY,this.translateEventTypes=e.CameraEventType.LEFT_DRAG,this.zoomEventTypes=[e.CameraEventType.RIGHT_DRAG,e.CameraEventType.WHEEL,e.CameraEventType.PINCH],this.rotateEventTypes=e.CameraEventType.LEFT_DRAG,this.tiltEventTypes=[e.CameraEventType.MIDDLE_DRAG,e.CameraEventType.PINCH,{eventType:e.CameraEventType.LEFT_DRAG,modifier:e.KeyboardEventModifier.CTRL},{eventType:e.CameraEventType.RIGHT_DRAG,modifier:e.KeyboardEventModifier.CTRL}],this.lookEventTypes={eventType:e.CameraEventType.LEFT_DRAG,modifier:e.KeyboardEventModifier.SHIFT},this.minimumPickingTerrainHeight=15e4,this._minimumPickingTerrainHeight=15e4,this.minimumPickingTerrainDistanceWithInertia=4e3,this.minimumCollisionTerrainHeight=15e3,this._minimumCollisionTerrainHeight=15e3,this.minimumTrackBallHeight=75e5,this._minimumTrackBallHeight=75e5,this.enableCollisionDetection=!0,this._lastGlobeHeight=0,this._inertiaDisablers={_lastInertiaZoomMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement","_lastInertiaTiltMovement"],_lastInertiaTiltMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement"]},this._tweens=new e.TweenCollection,this._tiltCenterMousePosition=new e.Cartesian2(-1,-1),this._tiltCenter=new e.Cartesian3,this._rotateMousePosition=new e.Cartesian2(-1,-1),this._rotateStartPosition=new e.Cartesian3,this._strafeStartPosition=new e.Cartesian3,this._strafeMousePosition=new e.Cartesian2,this._strafeEndMousePosition=new e.Cartesian2,this._zoomMouseStart=new e.Cartesian2(-1,-1),this._zoomWorldPosition=new e.Cartesian3,this._useZoomWorldPosition=!1,this._panLastMousePosition=new e.Cartesian2,this._panLastWorldPosition=new e.Cartesian3,this._tiltCVOffMap=!1,this._looking=!1,this._rotating=!1,this._strafing=!1,this._zoomingOnVector=!1,this._zoomingUnderground=!1,this._rotatingZoom=!1,this._adjustedHeightForTerrain=!1,this._cameraUnderground=!1,this._zoomFactor=5,this._maximumRotateRate=1.77,this._minimumRotateRate=2e-4,this._minimumZoomRate=20,this._maximumZoomRate=5906376272e3,this._minimumUndergroundPickDistance=2e3,this._maximumUndergroundPickDistance=1e4,!e.defined(t))throw new e.DeveloperError("scene is required.");this._scene=t,this._aggregator=new e.CameraEventAggregator(t.canvas),this._maxCoord=t.mapProjection.project(new e.Cartographic(Math.PI,e.Math.PI_OVER_TWO))}onMap(){const t=this._scene,i=t.mode,o=t.camera;return i!==e.SceneMode.COLUMBUS_VIEW||Math.abs(o.position.x)-this._maxCoord.x<0&&Math.abs(o.position.y)-this._maxCoord.y<0}update(){const t=this._scene,{camera:i,globe:o,mode:r}=t;e.Matrix4.equals(i.transform,e.Matrix4.IDENTITY)?(this._globe=o,this._ellipsoid=e.defined(this._globe)?this._globe.ellipsoid:t.mapProjection.ellipsoid):(this._globe=void 0,this._ellipsoid=e.Ellipsoid.UNIT_SPHERE);const{verticalExaggeration:n,verticalExaggerationRelativeHeight:s}=t;this._minimumCollisionTerrainHeight=e.VerticalExaggeration.getHeight(this.minimumCollisionTerrainHeight,n,s),this._minimumPickingTerrainHeight=e.VerticalExaggeration.getHeight(this.minimumPickingTerrainHeight,n,s),this._minimumTrackBallHeight=e.VerticalExaggeration.getHeight(this.minimumTrackBallHeight,n,s),this._cameraUnderground=t.cameraUnderground&&e.defined(this._globe);const a=this._ellipsoid.maximumRadius;this._rotateFactor=1/a,this._rotateRateRangeAdjustment=a,this._adjustedHeightForTerrain=!1;const l=e.Cartesian3.clone(i.positionWC,new e.Cartesian3),c=e.Cartesian3.clone(i.directionWC,new e.Cartesian3);if(r===e.SceneMode.SCENE2D?update2D(this):r===e.SceneMode.COLUMBUS_VIEW?(this._horizontalRotationAxis=e.Cartesian3.UNIT_Z,updateCV(this)):r===e.SceneMode.SCENE3D&&(this._horizontalRotationAxis=void 0,update3D(this)),this.enableCollisionDetection&&!this._adjustedHeightForTerrain){const t=!e.Cartesian3.equals(l,i.positionWC)||!e.Cartesian3.equals(c,i.directionWC);adjustHeightForTerrain(this,t)}this._aggregator.reset()}isDestroyed(){return!1}destroy(){return this._tweens.removeAll(),this._aggregator=this._aggregator&&this._aggregator.destroy(),e.destroyObject(this)}}const maintainInertia=(t,i,o,r,n,s,a)=>{let l=s[a];e.defined(l)||(l=s[a]={startPosition:new e.Cartesian2,endPosition:new e.Cartesian2,motion:new e.Cartesian2,inertiaEnabled:!0});const c=t.getButtonPressTime(i,o),d=t.getButtonReleaseTime(i,o),h=c&&d&&(d.getTime()-c.getTime())/1e3,p=new Date,u=d&&(p.getTime()-d.getTime())/1e3;if(c&&d&&h<.4){const a=((e,t)=>{if(e<0)return 0;const i=25*(1-t);return Math.exp(-i*e)})(u,r),c=t.getLastMovement(i,o);if(!e.defined(c)||(m=c,e.Cartesian2.equalsEpsilon(m.startPosition,m.endPosition,e.Math.EPSILON14))||!l.inertiaEnabled)return;if(l.motion.x=.5*(c.endPosition.x-c.startPosition.x),l.motion.y=.5*(c.endPosition.y-c.startPosition.y),l.startPosition=e.Cartesian2.clone(c.startPosition,l.startPosition),l.endPosition=e.Cartesian2.multiplyByScalar(l.motion,a,l.endPosition),l.endPosition=e.Cartesian2.add(l.startPosition,l.endPosition,l.endPosition),isNaN(l.endPosition.x)||isNaN(l.endPosition.y)||e.Cartesian2.distance(l.startPosition,l.endPosition)<.5)return;if(!t.isButtonDown(i,o)){n(s,t.getStartMousePosition(i,o),l)}}var m},activateInertia=(t,i)=>{if(e.defined(i)){let o=t[i];e.defined(o)&&(o.inertiaEnabled=!0);const r=t._inertiaDisablers[i];if(e.defined(r)){const i=r.length;for(let n=0;n<i;++n)o=t[r[n]],e.defined(o)&&(o.inertiaEnabled=!1)}}},Ni=[],reactToInput=(t,i,o,r,n,s)=>{if(!e.defined(o))return;const a=t._aggregator;Array.isArray(o)||(Ni[0]=o,o=Ni);const l=o.length;for(let c=0;c<l;++c){const l=o[c],d=e.defined(l.eventType)?l.eventType:l,h=l.modifier,p=a.isMoving(d,h)&&a.getMovement(d,h),u=a.getStartMousePosition(d,h);t.enableInputs&&i&&(p?(r(t,u,p),activateInertia(t,s)):n<1&&maintainInertia(a,d,h,n,r,t,s))}},Hi=new e.Ray,Wi=new e.Cartesian3,Ui=new e.Cartesian2,Qi=new e.Cartesian3,zi=new e.Cartesian2,Yi=new e.Cartesian3,ji=new e.Cartesian3,Ji=new e.Cartesian3,Ki=new e.Cartesian3,Vi=new e.Cartesian3,Zi=new e.Cartesian3,Xi=new e.Cartesian3,qi=new e.Cartesian3,$i=new e.Cartesian3,eo=new e.Cartesian3,to=new e.Cartesian3,io=new e.Cartesian3,oo=new e.Cartesian3,ro=new e.Cartesian3,no=new e.Cartesian3,so=new e.Cartesian3,ao=new e.Cartesian3,lo=new e.Cartesian3,co={orientation:new e.HeadingPitchRoll},handleZoom=(t,i,o,r,n,s)=>{var a;const l=t._scene.canvas.getBoundingClientRect(),c=l.width/t._scene.canvas.width,d=l.height/t._scene.canvas.height;i=new e.Cartesian2(i.x/c,i.y/d);let h=1;e.defined(s)&&(h=e.Math.clamp(Math.abs(s),.25,1));const p=o.endPosition.y-o.startPosition.y,u=p>0?t.minimumZoomDistance*h:0,m=t.maximumZoomDistance;let g=r*(n-u);g=e.Math.clamp(g,t._minimumZoomRate,t._maximumZoomRate);let v=p/t._scene.canvas.clientHeight;v=Math.min(v,t.maximumMovementRatio);let f=g*v;if(t.enableCollisionDetection||0===t.minimumZoomDistance||!e.defined(t._globe)){if(f>0&&Math.abs(n-u)<1)return;if(f<0&&Math.abs(n-m)<1)return;n-f<u?f=n-u-1:n-f>m&&(f=n-m)}const C=t._scene,y=C.camera,A=C.mode,E=co.orientation;if(E.heading=y.heading,E.pitch=y.pitch,E.roll=y.roll,y.frustum instanceof e.OrthographicFrustum)return void(Math.abs(f)>0&&(y.zoomIn(f),y._adjustOrthographicFrustum(!0)));const x=null!==(a=o.inertiaEnabled)&&void 0!==a?a:e.Cartesian2.equals(i,t._zoomMouseStart);let w,P=t._zoomingOnVector,S=t._rotatingZoom;if(x||(t._zoomMouseStart=e.Cartesian2.clone(i,t._zoomMouseStart),e.defined(t._globe)&&A===e.SceneMode.SCENE2D?(w=y.getPickRay(i,Hi).origin,w=e.Cartesian3.fromElements(w.y,w.z,w.x)):e.defined(t._globe)&&(w=pickPosition(t,i,Wi)),e.defined(w)?(t._useZoomWorldPosition=!0,t._zoomWorldPosition=e.Cartesian3.clone(w,t._zoomWorldPosition)):t._useZoomWorldPosition=!1,P=t._zoomingOnVector=!1,S=t._rotatingZoom=!1,t._zoomingUnderground=t._cameraUnderground),!t._useZoomWorldPosition)return void y.zoomIn(f);let I=A===e.SceneMode.COLUMBUS_VIEW;if(y.positionCartographic.height<2e6&&(S=!0),!x||S){if(A===e.SceneMode.SCENE2D){const o=t._zoomWorldPosition,r=y.position;if(!e.Cartesian3.equals(o,r)&&y.positionCartographic.height<2*t._maxCoord.x){const n=y.position.x,s=e.Cartesian3.subtract(o,r,Qi);e.Cartesian3.normalize(s,s);const a=e.Cartesian3.distance(o,r)*f/(.5*y.getMagnitude());y.move(s,.5*a),(y.position.x<0&&n>0||y.position.x>0&&n<0)&&(w=y.getPickRay(i,Hi).origin,w=e.Cartesian3.fromElements(w.y,w.z,w.x),t._zoomWorldPosition=e.Cartesian3.clone(w,t._zoomWorldPosition))}}else if(A===e.SceneMode.SCENE3D){const i=e.Cartesian3.normalize(y.position,Vi);if(t._cameraUnderground||t._zoomingUnderground||y.positionCartographic.height<3e3&&Math.abs(e.Cartesian3.dot(y.direction,i))<.6)I=!0;else{const o=C.canvas,r=zi;r.x=o.clientWidth/2,r.y=o.clientHeight/2;const n=pickPosition(t,r,Yi);if(e.defined(n))if(y.positionCartographic.height<1e6){if(!(e.Cartesian3.dot(y.direction,i)>=-.5)){const o=Xi;e.Cartesian3.clone(y.position,o);const r=t._zoomWorldPosition;let n=Zi;if(n=e.Cartesian3.normalize(r,n),e.Cartesian3.dot(n,i)<0)return;const s=no,a=eo;e.Cartesian3.clone(y.direction,a),e.Cartesian3.add(o,e.Cartesian3.multiplyByScalar(a,1e3,so),s);const l=to,c=io;e.Cartesian3.subtract(r,o,l),e.Cartesian3.normalize(l,c);const d=e.Cartesian3.dot(i,c);if(d>=0)return void(t._zoomMouseStart.x=-1);const h=Math.acos(-d),p=e.Cartesian3.magnitude(o),u=e.Cartesian3.magnitude(r),m=p-f,g=e.Cartesian3.magnitude(l),v=Math.asin(e.Math.clamp(g/u*Math.sin(h),-1,1))-Math.asin(e.Math.clamp(m/u*Math.sin(h),-1,1))+h,C=qi;e.Cartesian3.normalize(o,C);let A=$i;A=e.Cartesian3.cross(c,C,A),A=e.Cartesian3.normalize(A,A),e.Cartesian3.normalize(e.Cartesian3.cross(C,A,so),a),e.Cartesian3.multiplyByScalar(e.Cartesian3.normalize(s,so),e.Cartesian3.magnitude(s)-f,s),e.Cartesian3.normalize(o,o),e.Cartesian3.multiplyByScalar(o,m,o);const E=oo;e.Cartesian3.multiplyByScalar(e.Cartesian3.add(e.Cartesian3.multiplyByScalar(C,Math.cos(v)-1,ao),e.Cartesian3.multiplyByScalar(a,Math.sin(v),lo),so),m,E),e.Cartesian3.add(o,E,o),e.Cartesian3.normalize(s,C),e.Cartesian3.normalize(e.Cartesian3.cross(C,A,so),a);const x=ro;return e.Cartesian3.multiplyByScalar(e.Cartesian3.add(e.Cartesian3.multiplyByScalar(C,Math.cos(v)-1,ao),e.Cartesian3.multiplyByScalar(a,Math.sin(v),lo),so),e.Cartesian3.magnitude(s),x),e.Cartesian3.add(s,x,s),e.Cartesian3.clone(o,y.position),e.Cartesian3.normalize(e.Cartesian3.subtract(s,o,so),y.direction),e.Cartesian3.clone(y.direction,y.direction),e.Cartesian3.cross(y.direction,y.up,y.right),e.Cartesian3.cross(y.right,y.direction,y.up),void y.setView(co)}I=!0}else{const i=e.Cartesian3.normalize(n,ji),o=e.Cartesian3.normalize(t._zoomWorldPosition,Ji),r=e.Cartesian3.dot(o,i);if(r>0&&r<1){const t=e.Math.acosClamped(r),n=e.Cartesian3.cross(o,i,Ki),s=f/(Math.abs(t)>e.Math.toRadians(20)?.75*y.positionCartographic.height:y.positionCartographic.height-f);y.rotate(n,t*s)}}else I=!0}}t._rotatingZoom=!I}if(!x&&I||P){let o;const r=e.SceneTransforms.worldToWindowCoordinates(C,t._zoomWorldPosition,Ui);o=A!==e.SceneMode.COLUMBUS_VIEW&&e.Cartesian2.equals(i,t._zoomMouseStart)&&e.defined(r)?y.getPickRay(r,Hi):y.getPickRay(i,Hi);const n=o.direction;A!==e.SceneMode.COLUMBUS_VIEW&&A!==e.SceneMode.SCENE2D||e.Cartesian3.fromElements(n.y,n.z,n.x,n),y.move(n,f),t._zoomingOnVector=!0}else y.zoomIn(f);t._cameraUnderground||y.setView(co)},ho=new e.Ray,po=new e.Ray,uo=new e.Cartesian3,translate2D=(t,i,o)=>{const r=t._scene.camera;let n=r.getPickRay(o.startPosition,ho).origin,s=r.getPickRay(o.endPosition,po).origin;n=e.Cartesian3.fromElements(n.y,n.z,n.x,n),s=e.Cartesian3.fromElements(s.y,s.z,s.x,s);const a=e.Cartesian3.subtract(n,s,uo),l=e.Cartesian3.magnitude(a);l>0&&(e.Cartesian3.normalize(a,a),r.move(a,l))},zoom2D=(t,i,o)=>{e.defined(o.distance)&&(o=o.distance);const r=t._scene.camera;handleZoom(t,i,o,t._zoomFactor,r.getMagnitude())},mo=new e.Cartesian2,go=new e.Cartesian2,twist2D=(t,i,o)=>{if(e.defined(o.angleAndHeight))return void singleAxisTwist2D(t,i,o.angleAndHeight);const r=t._scene,n=r.camera,s=r.canvas,a=s.clientWidth,l=s.clientHeight;let c=mo;c.x=2/a*o.startPosition.x-1,c.y=2/l*(l-o.startPosition.y)-1,c=e.Cartesian2.normalize(c,c);let d=go;d.x=2/a*o.endPosition.x-1,d.y=2/l*(l-o.endPosition.y)-1,d=e.Cartesian2.normalize(d,d);let h=e.Math.acosClamped(c.x);c.y<0&&(h=e.Math.TWO_PI-h);let p=e.Math.acosClamped(d.x);d.y<0&&(p=e.Math.TWO_PI-p);const u=p-h;n.twistRight(u)},singleAxisTwist2D=(e,t,i)=>{let o=e._rotateFactor*e._rotateRateRangeAdjustment;o>e._maximumRotateRate&&(o=e._maximumRotateRate),o<e._minimumRotateRate&&(o=e._minimumRotateRate);const r=e._scene,n=r.camera,s=r.canvas;let a=(i.endPosition.x-i.startPosition.x)/s.clientWidth;a=Math.min(a,e.maximumMovementRatio);const l=o*a*Math.PI*4;n.twistRight(l)},update2D=t=>{const i=t._scene.mapMode2D===e.MapMode2D.ROTATE;e.Matrix4.equals(e.Matrix4.IDENTITY,t._scene.camera.transform)?(reactToInput(t,t.enableTranslate,t.translateEventTypes,translate2D,t.inertiaTranslate,"_lastInertiaTranslateMovement"),reactToInput(t,t.enableZoom,t.zoomEventTypes,zoom2D,t.inertiaZoom,"_lastInertiaZoomMovement"),i&&reactToInput(t,t.enableRotate,t.tiltEventTypes,twist2D,t.inertiaSpin,"_lastInertiaTiltMovement")):(reactToInput(t,t.enableZoom,t.zoomEventTypes,zoom2D,t.inertiaZoom,"_lastInertiaZoomMovement"),i&&reactToInput(t,t.enableRotate,t.translateEventTypes,twist2D,t.inertiaSpin,"_lastInertiaSpinMovement"))},vo=new e.Ray,fo=new e.Cartesian3,Co=new e.Cartesian3,pickPosition=(t,i,o)=>{const r=t._scene,n=t._globe,s=r.camera;let a;if(r.pickPositionSupported&&(a=r.pickPositionWorldCoordinates(i,fo)),!e.defined(n))return e.Cartesian3.clone(a,o);const l=!t._cameraUnderground,c=s.getPickRay(i,vo),d=n.pickWorldCoordinates(c,r,l,Co);return(e.defined(a)?e.Cartesian3.distance(a,s.positionWC):Number.POSITIVE_INFINITY)<(e.defined(d)?e.Cartesian3.distance(d,s.positionWC):Number.POSITIVE_INFINITY)?e.Cartesian3.clone(a,o):e.Cartesian3.clone(d,o)},yo=new e.Cartographic,getDistanceFromSurface=t=>{var i;const o=t._ellipsoid,r=t._scene,n=r.camera;let s=0;if(r.mode===e.SceneMode.SCENE3D){const t=o.cartesianToCartographic(n.position,yo);e.defined(t)&&(s=t.height)}else s=n.position.z;const a=null!==(i=t._scene.globeHeight)&&void 0!==i?i:0;return Math.abs(a-s)},Ao=new e.Cartesian3,getZoomDistanceUnderground=(t,i)=>{const o=i.origin,r=i.direction,n=getDistanceFromSurface(t),s=e.Cartesian3.normalize(o,Ao);let a=Math.abs(e.Cartesian3.dot(s,r));return a=2*Math.max(a,.5),n*a},getTiltCenterUnderground=(t,i,o,r)=>{let n=e.Cartesian3.distance(i.origin,o);const s=getDistanceFromSurface(t);return n>e.Math.clamp(5*s,t._minimumUndergroundPickDistance,t._maximumUndergroundPickDistance)&&(n=Math.min(n,s/5),n=Math.max(n,100)),e.Ray.getPoint(i,n,r)},getStrafeStartPositionUnderground=(t,i,o,r)=>{let n;return e.defined(o)?(n=e.Cartesian3.distance(i.origin,o),n>t._maximumUndergroundPickDistance&&(n=getDistanceFromSurface(t))):n=getDistanceFromSurface(t),e.Ray.getPoint(i,n,r)},Eo=new e.Cartesian2,continueStrafing=(t,i)=>{const o=i.endPosition,r=e.Cartesian2.subtract(i.endPosition,i.startPosition,Eo),n=t._strafeEndMousePosition;e.Cartesian2.add(n,r,n),i.endPosition=n,strafe(t,i,t._strafeStartPosition),i.endPosition=o},xo=new e.Ray,wo=new e.Ray,Po=new e.Cartesian3,So=new e.Cartesian3,Io=new e.Cartesian3,bo=new e.Cartesian3,Ro=new e.Plane(e.Cartesian3.UNIT_X,0),_o=new e.Cartesian2,To=new e.Cartesian2,translateCV=(t,i,o)=>{if(e.Cartesian3.equals(i,t._translateMousePosition)||(t._looking=!1),e.Cartesian3.equals(i,t._strafeMousePosition)||(t._strafing=!1),t._looking)return void look3D(t,i,o);if(t._strafing)return void continueStrafing(t,o);const r=t._scene.camera,n=t._cameraUnderground,s=e.Cartesian2.clone(o.startPosition,_o),a=e.Cartesian2.clone(o.endPosition,To);let l=r.getPickRay(s,xo);const c=e.Cartesian3.clone(e.Cartesian3.ZERO,bo),d=e.Cartesian3.UNIT_X;let h;if(r.position.z<t._minimumPickingTerrainHeight&&(h=pickPosition(t,s,Po),e.defined(h)&&(c.x=h.x)),n||c.x>r.position.z&&e.defined(h)){let r=h;return n&&(r=getStrafeStartPositionUnderground(t,l,h,Po)),e.Cartesian2.clone(i,t._strafeMousePosition),e.Cartesian2.clone(i,t._strafeEndMousePosition),e.Cartesian3.clone(r,t._strafeStartPosition),t._strafing=!0,void strafe(t,o,t._strafeStartPosition)}const p=e.Plane.fromPointNormal(c,d,Ro);l=r.getPickRay(s,xo);const u=e.IntersectionTests.rayPlane(l,p,Po),m=r.getPickRay(a,wo),g=e.IntersectionTests.rayPlane(m,p,So);if(!e.defined(u)||!e.defined(g))return t._looking=!0,look3D(t,i,o),void e.Cartesian2.clone(i,t._translateMousePosition);const v=e.Cartesian3.subtract(u,g,Io),f=v.x;v.x=v.y,v.y=v.z,v.z=f;const C=e.Cartesian3.magnitude(v);C>e.Math.EPSILON6&&(e.Cartesian3.normalize(v,v),r.move(v,C))},Do=new e.Cartesian2,Fo=new e.Ray,Mo=new e.Cartesian3,Lo=new e.Cartesian3,Go=new e.Matrix4,Bo=new e.Matrix4,Oo=new e.Cartesian3,ko=new e.Plane(e.Cartesian3.UNIT_X,0),No=new e.Cartesian3,Ho=new e.Cartographic,Wo=new e.Matrix4,Uo=new e.Quaternion,Qo=new e.Matrix3,zo=new e.Cartesian3,rotateCV=(t,i,o)=>{if(e.defined(o.angleAndHeight)&&(o=o.angleAndHeight),e.Cartesian2.equals(i,t._tiltCenterMousePosition)||(t._tiltCVOffMap=!1,t._looking=!1),t._looking)return void look3D(t,i,o);const r=t._scene.camera;t._tiltCVOffMap||!t.onMap()||Math.abs(r.position.z)>t._minimumPickingTerrainHeight?(t._tiltCVOffMap=!0,rotateCVOnPlane(t,i,o)):rotateCVOnTerrain(t,i,o)},rotateCVOnPlane=(t,i,o)=>{const r=t._scene,n=r.camera,s=r.canvas,a=Do;a.x=s.clientWidth/2,a.y=s.clientHeight/2;const l=n.getPickRay(a,Fo),c=e.Cartesian3.UNIT_X,d=l.origin,h=l.direction;let p;const u=e.Cartesian3.dot(c,h);if(Math.abs(u)>e.Math.EPSILON6&&(p=-e.Cartesian3.dot(c,d)/u),!e.defined(p)||p<=0)return t._looking=!0,look3D(t,i,o),void e.Cartesian2.clone(i,t._tiltCenterMousePosition);const m=e.Cartesian3.multiplyByScalar(h,p,Mo);e.Cartesian3.add(d,m,m);const g=r.mapProjection,v=g.ellipsoid;e.Cartesian3.fromElements(m.y,m.z,m.x,m);const f=g.unproject(m,Ho);v.cartographicToCartesian(f,m);const C=e.Transforms.eastNorthUpToFixedFrame(m,v,Go),y=t._globe,A=t._ellipsoid;t._globe=void 0,t._ellipsoid=e.Ellipsoid.UNIT_SPHERE,t._rotateFactor=1,t._rotateRateRangeAdjustment=1;const E=e.Matrix4.clone(n.transform,Wo);n._setTransform(C),rotate3D(t,i,o,e.Cartesian3.UNIT_Z),n._setTransform(E),t._globe=y,t._ellipsoid=A;const x=A.maximumRadius;t._rotateFactor=1/x,t._rotateRateRangeAdjustment=x},rotateCVOnTerrain=(t,i,o)=>{const r=t._scene,n=r.camera,s=t._cameraUnderground;let a,l;const c=e.Cartesian3.UNIT_X;if(e.Cartesian2.equals(i,t._tiltCenterMousePosition))a=e.Cartesian3.clone(t._tiltCenter,Mo);else{if(n.position.z<t._minimumPickingTerrainHeight&&(a=pickPosition(t,i,Mo)),!e.defined(a)){l=n.getPickRay(i,Fo);const r=l.origin,s=l.direction;let d;const h=e.Cartesian3.dot(c,s);if(Math.abs(h)>e.Math.EPSILON6&&(d=-e.Cartesian3.dot(c,r)/h),!e.defined(d)||d<=0)return t._looking=!0,look3D(t,i,o),void e.Cartesian2.clone(i,t._tiltCenterMousePosition);a=e.Cartesian3.multiplyByScalar(s,d,Mo),e.Cartesian3.add(r,a,a)}s&&(e.defined(l)||(l=n.getPickRay(i,Fo)),getTiltCenterUnderground(t,l,a,a)),e.Cartesian2.clone(i,t._tiltCenterMousePosition),e.Cartesian3.clone(a,t._tiltCenter)}const d=r.canvas,h=Do;h.x=d.clientWidth/2,h.y=t._tiltCenterMousePosition.y,l=n.getPickRay(h,Fo);const p=e.Cartesian3.clone(e.Cartesian3.ZERO,Oo);p.x=a.x;const u=e.Plane.fromPointNormal(p,c,ko),m=e.IntersectionTests.rayPlane(l,u,Lo),g=n._projection,v=g.ellipsoid;e.Cartesian3.fromElements(a.y,a.z,a.x,a);let f=g.unproject(a,Ho);v.cartographicToCartesian(f,a);const C=e.Transforms.eastNorthUpToFixedFrame(a,v,Go);let y;e.defined(m)?(e.Cartesian3.fromElements(m.y,m.z,m.x,m),f=g.unproject(m,Ho),v.cartographicToCartesian(f,m),y=e.Transforms.eastNorthUpToFixedFrame(m,v,Bo)):y=C;const A=t._globe,E=t._ellipsoid;t._globe=void 0,t._ellipsoid=e.Ellipsoid.UNIT_SPHERE,t._rotateFactor=1,t._rotateRateRangeAdjustment=1;let x=e.Cartesian3.UNIT_Z;const w=e.Matrix4.clone(n.transform,Wo);n._setTransform(C);const P=e.Cartesian3.cross(e.Cartesian3.UNIT_Z,e.Cartesian3.normalize(n.position,No),No),S=e.Cartesian3.dot(n.right,P);if(rotate3D(t,i,o,x,!1,!0),n._setTransform(y),S<0){const e=o.startPosition.y-o.endPosition.y;(s&&e<0||!s&&e>0)&&(x=void 0);const r=n.constrainedAxis;n.constrainedAxis=void 0,rotate3D(t,i,o,x,!0,!1),n.constrainedAxis=r}else rotate3D(t,i,o,x,!0,!1);if(e.defined(n.constrainedAxis)){const t=e.Cartesian3.cross(n.direction,n.constrainedAxis,zo);e.Cartesian3.equalsEpsilon(t,e.Cartesian3.ZERO,e.Math.EPSILON6)||(e.Cartesian3.dot(t,n.right)<0&&e.Cartesian3.negate(t,t),e.Cartesian3.cross(t,n.direction,n.up),e.Cartesian3.cross(n.direction,n.up,n.right),e.Cartesian3.normalize(n.up,n.up),e.Cartesian3.normalize(n.right,n.right))}n._setTransform(w),t._globe=A,t._ellipsoid=E;const I=E.maximumRadius;t._rotateFactor=1/I,t._rotateRateRangeAdjustment=I;const b=e.Cartesian3.clone(n.positionWC,No);if(t.enableCollisionDetection&&adjustHeightForTerrain(t,!0),!e.Cartesian3.equals(n.positionWC,b)){n._setTransform(y),n.worldToCameraCoordinatesPoint(b,b);const t=e.Cartesian3.magnitudeSquared(b);e.Cartesian3.magnitudeSquared(n.position)>t&&(e.Cartesian3.normalize(n.position,n.position),e.Cartesian3.multiplyByScalar(n.position,Math.sqrt(t),n.position));const i=e.Cartesian3.angleBetween(b,n.position),o=e.Cartesian3.cross(b,n.position,b);e.Cartesian3.normalize(o,o);const r=e.Quaternion.fromAxisAngle(o,i,Uo),s=e.Matrix3.fromQuaternion(r,Qo);e.Matrix3.multiplyByVector(s,n.direction,n.direction),e.Matrix3.multiplyByVector(s,n.up,n.up),e.Cartesian3.cross(n.direction,n.up,n.right),e.Cartesian3.cross(n.right,n.direction,n.up),n._setTransform(w)}},Yo=new e.Cartesian2,jo=new e.Ray,Jo=new e.Cartesian3,zoomCV=(t,i,o)=>{e.defined(o.distance)&&(o=o.distance);const r=t._scene,n=r.camera,s=r.canvas,a=t._cameraUnderground;let l;a?l=i:(l=Yo,l.x=s.clientWidth/2,l.y=s.clientHeight/2);const c=n.getPickRay(l,jo),d=c.origin,h=c.direction;let p,u;if(n.position.z<t._minimumPickingTerrainHeight&&(p=pickPosition(t,l,Jo)),e.defined(p)&&(u=e.Cartesian3.distance(d,p)),a){const i=getZoomDistanceUnderground(t,c);u=e.defined(u)?Math.min(u,i):i}if(!e.defined(u)){const t=e.Cartesian3.UNIT_X;u=-e.Cartesian3.dot(t,d)/e.Cartesian3.dot(t,h)}handleZoom(t,i,o,t._zoomFactor,u)},updateCV=t=>{const i=t._scene.camera;if(e.Matrix4.equals(e.Matrix4.IDENTITY,i.transform)){const o=t._tweens;if(t._aggregator.anyButtonDown&&o.removeAll(),reactToInput(t,t.enableTilt,t.tiltEventTypes,rotateCV,t.inertiaSpin,"_lastInertiaTiltMovement"),reactToInput(t,t.enableTranslate,t.translateEventTypes,translateCV,t.inertiaTranslate,"_lastInertiaTranslateMovement"),reactToInput(t,t.enableZoom,t.zoomEventTypes,zoomCV,t.inertiaZoom,"_lastInertiaZoomMovement"),reactToInput(t,t.enableLook,t.lookEventTypes,look3D),!t._aggregator.anyButtonDown&&!o.contains(t._tween)){const r=i.createCorrectPositionTween(t.bounceAnimationTime);e.defined(r)&&(t._tween=o.add(r))}o.update()}else reactToInput(t,t.enableRotate,t.rotateEventTypes,rotate3D,t.inertiaSpin,"_lastInertiaSpinMovement"),reactToInput(t,t.enableZoom,t.zoomEventTypes,zoom3D,t.inertiaZoom,"_lastInertiaZoomMovement")},Ko=new e.Ray,Vo=new e.Plane(e.Cartesian3.UNIT_X,0),Zo=new e.Cartesian3,Xo=new e.Cartesian3,strafe=(t,i,o)=>{const r=t._scene,n=r.camera,s=n.getPickRay(i.endPosition,Ko);let a=e.Cartesian3.clone(n.direction,Xo);r.mode===e.SceneMode.COLUMBUS_VIEW&&e.Cartesian3.fromElements(a.z,a.x,a.y,a);const l=e.Plane.fromPointNormal(o,a,Vo),c=e.IntersectionTests.rayPlane(s,l,Zo);e.defined(c)&&(a=e.Cartesian3.subtract(o,c,a),r.mode===e.SceneMode.COLUMBUS_VIEW&&e.Cartesian3.fromElements(a.y,a.z,a.x,a),e.Cartesian3.add(n.position,a,n.position))},qo=new e.Cartesian3,$o=new e.Cartographic,er=new e.Cartesian3,tr=new e.Ellipsoid,ir=new e.Cartesian3,rr=new e.Cartesian3,nr=new e.Cartesian3,spin3D=(t,i,o)=>{const r=t._scene.camera,n=t._cameraUnderground;let s,a,l=t._ellipsoid;if(!e.Matrix4.equals(r.transform,e.Matrix4.IDENTITY))return void rotate3D(t,i,o);const c=l.geodeticSurfaceNormal(r.position,ir);if(e.Cartesian2.equals(i,t._rotateMousePosition)){if(t._looking)look3D(t,i,o,c);else if(t._rotating)rotate3D(t,i,o);else if(t._strafing)continueStrafing(t,o);else{if(e.Cartesian3.magnitude(r.position)<e.Cartesian3.magnitude(t._rotateStartPosition))return;s=e.Cartesian3.magnitude(t._rotateStartPosition),a=er,a.x=a.y=a.z=s,l=e.Ellipsoid.fromCartesian3(a,tr),pan3D(t,i,o,l)}return}t._looking=!1,t._rotating=!1,t._strafing=!1;const d=l.cartesianToCartographic(r.positionWC,$o).height,h=t._globe;if(e.defined(h)&&d<t._minimumPickingTerrainHeight){const d=pickPosition(t,o.startPosition,nr);if(e.defined(d)){let c=!1;const h=r.getPickRay(o.startPosition,vo);if(n)c=!0,getStrafeStartPositionUnderground(t,h,d,d);else{const t=l.geodeticSurfaceNormal(d,rr);c=!!(Math.abs(e.Cartesian3.dot(h.direction,t))<.05)||e.Cartesian3.magnitude(r.position)<e.Cartesian3.magnitude(d)}c?(e.Cartesian2.clone(i,t._strafeEndMousePosition),e.Cartesian3.clone(d,t._strafeStartPosition),t._strafing=!0,strafe(t,o,t._strafeStartPosition)):(s=e.Cartesian3.magnitude(d),a=er,a.x=a.y=a.z=s,l=e.Ellipsoid.fromCartesian3(a,tr),pan3D(t,i,o,l),e.Cartesian3.clone(d,t._rotateStartPosition))}else t._looking=!0,look3D(t,i,o,c)}else e.defined(r.pickEllipsoid(o.startPosition,t._ellipsoid,qo))?(pan3D(t,i,o,t._ellipsoid),e.Cartesian3.clone(qo,t._rotateStartPosition)):d>t._minimumTrackBallHeight?(t._rotating=!0,rotate3D(t,i,o)):(t._looking=!0,look3D(t,i,o,c));e.Cartesian2.clone(i,t._rotateMousePosition)},rotate3D=(t,i,o,r,n,s)=>{n=null!=n&&n,s=null!=s&&s;const a=t._scene,l=a.camera,c=a.canvas,d=l.constrainedAxis;e.defined(r)&&(l.constrainedAxis=r);const h=e.Cartesian3.magnitude(l.position);let p=t._rotateFactor*(h-t._rotateRateRangeAdjustment);p>t._maximumRotateRate&&(p=t._maximumRotateRate),p<t._minimumRotateRate&&(p=t._minimumRotateRate);let u=(o.startPosition.x-o.endPosition.x)/c.clientWidth,m=(o.startPosition.y-o.endPosition.y)/c.clientHeight;u=Math.min(u,t.maximumMovementRatio),m=Math.min(m,t.maximumMovementRatio);const g=p*u*Math.PI*2,v=p*m*Math.PI;n||l.rotateRight(g),s||l.rotateUp(v),l.constrainedAxis=d},sr=e.Cartesian4.clone(e.Cartesian4.UNIT_W),ar=e.Cartesian4.clone(e.Cartesian4.UNIT_W),lr=new e.Cartesian3,cr=new e.Cartesian3,dr=new e.Cartesian3,hr=new e.Cartesian3,pr=new e.Cartesian2,ur=new e.Cartesian2,mr=new e.Cartesian2,gr=new e.Cartesian2,vr=new e.Ray,pan3D=(t,i,o,r)=>{const n=t._scene,s=n.camera,a=e.Cartesian2.clone(o.startPosition,pr),l=e.Cartesian2.clone(o.endPosition,ur),c=r.cartesianToCartographic(s.positionWC,$o).height;let d,h;if(!o.inertiaEnabled&&c<t._minimumPickingTerrainHeight&&(d=e.Cartesian3.clone(t._panLastWorldPosition,sr),e.defined(t._globe)||e.Cartesian2.equalsEpsilon(a,t._panLastMousePosition)||(d=pickPosition(t,a,sr)),!e.defined(t._globe)&&e.defined(d))){const i=e.Cartesian3.subtract(d,s.positionWC,cr),o=e.Cartesian3.multiplyByScalar(s.directionWC,e.Cartesian3.dot(s.directionWC,i),cr),r=e.Cartesian3.magnitude(o),c=s.frustum.getPixelDimensions(n.drawingBufferWidth,n.drawingBufferHeight,r,n.pixelRatio,gr),p=e.Cartesian2.subtract(l,a,mr),u=e.Cartesian3.multiplyByScalar(s.rightWC,p.x*c.x,cr),m=e.Cartesian3.normalize(s.positionWC,Vi),g=s.getPickRay(l,vr).direction,v=e.Cartesian3.subtract(g,e.Cartesian3.projectVector(g,s.rightWC,dr),dr),f=e.Cartesian3.angleBetween(v,s.directionWC);let C=1;e.defined(s.frustum.fov)&&(C=Math.max(Math.tan(f),.1));let y=Math.abs(e.Cartesian3.dot(s.directionWC,m));const A=-p.y*c.y*2/Math.sqrt(C)*(1-y),E=e.Cartesian3.multiplyByScalar(g,A,dr);y=Math.abs(e.Cartesian3.dot(s.upWC,m));const x=e.Cartesian3.multiplyByScalar(s.upWC,-p.y*(1-y)*c.y,hr);h=e.Cartesian3.add(d,u,ar),h=e.Cartesian3.add(h,E,h),h=e.Cartesian3.add(h,x,h),e.Cartesian3.clone(h,t._panLastWorldPosition),e.Cartesian2.clone(l,t._panLastMousePosition)}if(e.defined(d)&&e.defined(h)||(d=s.pickEllipsoid(a,r,sr),h=s.pickEllipsoid(l,r,ar)),!e.defined(d)||!e.defined(h))return t._rotating=!0,void rotate3D(t,i,o);if(d=s.worldToCameraCoordinates(d,d),h=s.worldToCameraCoordinates(h,h),e.defined(s.constrainedAxis)){const t=s.constrainedAxis,i=e.Cartesian3.mostOrthogonalAxis(t,lr);e.Cartesian3.cross(i,t,i),e.Cartesian3.normalize(i,i);const o=e.Cartesian3.cross(t,i,cr),r=e.Cartesian3.magnitude(d),n=e.Cartesian3.dot(t,d),a=Math.acos(n/r),l=e.Cartesian3.multiplyByScalar(t,n,dr);e.Cartesian3.subtract(d,l,l),e.Cartesian3.normalize(l,l);const c=e.Cartesian3.magnitude(h),p=e.Cartesian3.dot(t,h),u=Math.acos(p/c),m=e.Cartesian3.multiplyByScalar(t,p,hr);e.Cartesian3.subtract(h,m,m),e.Cartesian3.normalize(m,m);let g=Math.acos(e.Cartesian3.dot(l,i));e.Cartesian3.dot(l,o)<0&&(g=e.Math.TWO_PI-g);let v=Math.acos(e.Cartesian3.dot(m,i));e.Cartesian3.dot(m,o)<0&&(v=e.Math.TWO_PI-v);const f=g-v;let C;C=e.Cartesian3.equalsEpsilon(t,s.position,e.Math.EPSILON2)?s.right:e.Cartesian3.cross(t,s.position,lr);const y=e.Cartesian3.cross(t,C,lr),A=e.Cartesian3.dot(y,e.Cartesian3.subtract(d,t,cr)),E=e.Cartesian3.dot(y,e.Cartesian3.subtract(h,t,cr));let x;x=A>0&&E>0?u-a:A>0&&E<=0?e.Cartesian3.dot(s.position,t)>0?-a-u:a+u:a-u,s.rotateRight(f),s.rotateUp(x)}else{e.Cartesian3.normalize(d,d),e.Cartesian3.normalize(h,h);const t=e.Cartesian3.dot(d,h),i=e.Cartesian3.cross(d,h,lr);if(t<1&&!e.Cartesian3.equalsEpsilon(i,e.Cartesian3.ZERO,e.Math.EPSILON14)){const e=Math.acos(t);s.rotate(i,e)}}},fr=new e.Cartesian3,Cr=new e.Cartographic;let yr=0;const zoom3D=(t,i,o)=>{e.defined(o.distance)&&(o=o.distance);const r=o.inertiaEnabled,n=t._ellipsoid,s=t._scene,a=s.camera,l=s.canvas,c=t._cameraUnderground;let d;c?d=i:(d=Yo,d.x=l.clientWidth/2,d.y=l.clientHeight/2);const h=a.getPickRay(d,jo);let p;const u=n.cartesianToCartographic(a.position,Cr).height,m=Math.abs(yr)<t.minimumPickingTerrainDistanceWithInertia;let g;if((r?m:u<t._minimumPickingTerrainHeight)&&(p=pickPosition(t,d,Jo)),e.defined(p)&&(g=e.Cartesian3.distance(h.origin,p),yr=g),c){const i=getZoomDistanceUnderground(t,h);g=e.defined(g)?Math.min(g,i):i}e.defined(g)||(g=u);const v=e.Cartesian3.normalize(a.position,fr);handleZoom(t,i,o,t._zoomFactor,g,e.Cartesian3.dot(v,a.direction))},Ar=new e.Cartesian2,Er=new e.Ray,xr=new e.Cartesian3,wr=new e.Cartesian3,Pr=new e.Matrix4,Sr=new e.Matrix4,Ir=new e.Matrix4,br=new e.Quaternion,Rr=new e.Matrix3,_r=new e.Cartographic,Tr=new e.Cartesian3,tilt3D=(t,i,o)=>{const r=t._scene.camera;if(!e.Matrix4.equals(r.transform,e.Matrix4.IDENTITY))return;if(e.defined(o.angleAndHeight)&&(o=o.angleAndHeight),e.Cartesian2.equals(i,t._tiltCenterMousePosition)||(t._tiltOnEllipsoid=!1,t._looking=!1),t._looking){const e=t._ellipsoid.geodeticSurfaceNormal(r.position,Tr);return void look3D(t,i,o,e)}const n=t._ellipsoid.cartesianToCartographic(r.position,_r);t._tiltOnEllipsoid||n.height>t._minimumCollisionTerrainHeight?(t._tiltOnEllipsoid=!0,tilt3DOnEllipsoid(t,i,o)):tilt3DOnTerrain(t,i,o)},Dr=new e.Cartographic,tilt3DOnEllipsoid=(t,i,o)=>{const r=t._ellipsoid,n=t._scene,s=n.camera,a=.25*t.minimumZoomDistance,l=r.cartesianToCartographic(s.positionWC,Dr).height;if(l-a-1<e.Math.EPSILON3&&o.endPosition.y-o.startPosition.y<0)return;const c=n.canvas,d=Ar;d.x=c.clientWidth/2,d.y=c.clientHeight/2;const h=s.getPickRay(d,Er);let p;const u=e.IntersectionTests.rayEllipsoid(h,r);if(e.defined(u))p=e.Ray.getPoint(h,u.start,xr);else{if(!(l>t._minimumTrackBallHeight)){t._looking=!0;const r=t._ellipsoid.geodeticSurfaceNormal(s.position,Tr);return look3D(t,i,o,r),void e.Cartesian2.clone(i,t._tiltCenterMousePosition)}{const t=e.IntersectionTests.grazingAltitudeLocation(h,r);if(!e.defined(t))return;const i=r.cartesianToCartographic(t,_r);i.height=0,p=r.cartographicToCartesian(i,xr)}}const m=e.Transforms.eastNorthUpToFixedFrame(p,r,Pr),g=t._globe,v=t._ellipsoid;t._globe=void 0,t._ellipsoid=e.Ellipsoid.UNIT_SPHERE,t._rotateFactor=1,t._rotateRateRangeAdjustment=1;const f=e.Matrix4.clone(s.transform,Ir);s._setTransform(m),rotate3D(t,i,o,e.Cartesian3.UNIT_Z),s._setTransform(f),t._globe=g,t._ellipsoid=v;const C=v.maximumRadius;t._rotateFactor=1/C,t._rotateRateRangeAdjustment=C},tilt3DOnTerrain=(t,i,o)=>{const r=t._ellipsoid,n=t._scene,s=n.camera,a=t._cameraUnderground;let l,c,d;if(e.Cartesian2.equals(i,t._tiltCenterMousePosition))l=e.Cartesian3.clone(t._tiltCenter,xr);else{if(l=pickPosition(t,i,xr),!e.defined(l)){if(c=s.getPickRay(i,Er),d=e.IntersectionTests.rayEllipsoid(c,r),!e.defined(d)){if(r.cartesianToCartographic(s.position,_r).height<=t._minimumTrackBallHeight){t._looking=!0;const r=t._ellipsoid.geodeticSurfaceNormal(s.position,Tr);look3D(t,i,o,r),e.Cartesian2.clone(i,t._tiltCenterMousePosition)}return}l=e.Ray.getPoint(c,d.start,xr)}a&&(e.defined(c)||(c=s.getPickRay(i,Er)),getTiltCenterUnderground(t,c,l,l)),e.Cartesian2.clone(i,t._tiltCenterMousePosition),e.Cartesian3.clone(l,t._tiltCenter)}const h=n.canvas,p=Ar;p.x=h.clientWidth/2,p.y=t._tiltCenterMousePosition.y,c=s.getPickRay(p,Er);const u=e.Cartesian3.magnitude(l),m=e.Cartesian3.fromElements(u,u,u,er),g=e.Ellipsoid.fromCartesian3(m,tr);if(d=e.IntersectionTests.rayEllipsoid(c,g),!e.defined(d))return;const v=e.Cartesian3.magnitude(c.origin)>u?d.start:d.stop,f=e.Ray.getPoint(c,v,wr),C=e.Transforms.eastNorthUpToFixedFrame(l,r,Pr),y=e.Transforms.eastNorthUpToFixedFrame(f,g,Sr),A=t._globe,E=t._ellipsoid;t._globe=void 0,t._ellipsoid=e.Ellipsoid.UNIT_SPHERE,t._rotateFactor=1,t._rotateRateRangeAdjustment=1;let x=e.Cartesian3.UNIT_Z;const w=e.Matrix4.clone(s.transform,Ir);s._setTransform(y);const P=e.Cartesian3.cross(f,s.positionWC,zo);if(e.Cartesian3.dot(s.rightWC,P)<0){const e=o.startPosition.y-o.endPosition.y;(a&&e<0||!a&&e>0)&&(x=void 0);const r=s.constrainedAxis;s.constrainedAxis=void 0,rotate3D(t,i,o,x,!0,!1),s.constrainedAxis=r}else rotate3D(t,i,o,x,!0,!1);if(s._setTransform(C),rotate3D(t,i,o,x,!1,!0),e.defined(s.constrainedAxis)){const t=e.Cartesian3.cross(s.direction,s.constrainedAxis,zo);e.Cartesian3.equalsEpsilon(t,e.Cartesian3.ZERO,e.Math.EPSILON6)||(e.Cartesian3.dot(t,s.right)<0&&e.Cartesian3.negate(t,t),e.Cartesian3.cross(t,s.direction,s.up),e.Cartesian3.cross(s.direction,s.up,s.right),e.Cartesian3.normalize(s.up,s.up),e.Cartesian3.normalize(s.right,s.right))}s._setTransform(w),t._globe=A,t._ellipsoid=E;const S=E.maximumRadius;t._rotateFactor=1/S,t._rotateRateRangeAdjustment=S;const I=e.Cartesian3.clone(s.positionWC,zo);if(t.enableCollisionDetection&&adjustHeightForTerrain(t,!0),!e.Cartesian3.equals(s.positionWC,I)){s._setTransform(y),s.worldToCameraCoordinatesPoint(I,I);const t=e.Cartesian3.magnitudeSquared(I);e.Cartesian3.magnitudeSquared(s.position)>t&&(e.Cartesian3.normalize(s.position,s.position),e.Cartesian3.multiplyByScalar(s.position,Math.sqrt(t),s.position));const i=e.Cartesian3.angleBetween(I,s.position),o=e.Cartesian3.cross(I,s.position,I);e.Cartesian3.normalize(o,o);const r=e.Quaternion.fromAxisAngle(o,i,br),n=e.Matrix3.fromQuaternion(r,Rr);e.Matrix3.multiplyByVector(n,s.direction,s.direction),e.Matrix3.multiplyByVector(n,s.up,s.up),e.Cartesian3.cross(s.direction,s.up,s.right),e.Cartesian3.cross(s.right,s.direction,s.up),s._setTransform(w)}},Fr=new e.Cartesian2,Mr=new e.Cartesian2,Lr=new e.Ray,Gr=new e.Ray,Br=new e.Cartesian3,Or=new e.Cartesian3,look3D=(t,i,o,r)=>{const n=t._scene.camera,s=Fr;s.x=o.startPosition.x,s.y=0;const a=Mr;a.x=o.endPosition.x,a.y=0;let l,c,d=n.getPickRay(s,Lr),h=n.getPickRay(a,Gr),p=0;n.frustum instanceof e.OrthographicFrustum?(l=d.origin,c=h.origin,e.Cartesian3.add(n.direction,l,l),e.Cartesian3.add(n.direction,c,c),e.Cartesian3.subtract(l,n.position,l),e.Cartesian3.subtract(c,n.position,c),e.Cartesian3.normalize(l,l),e.Cartesian3.normalize(c,c)):(l=d.direction,c=h.direction);let u=e.Cartesian3.dot(l,c);u<1&&(p=Math.acos(u)),p=o.startPosition.x>o.endPosition.x?-p:p;const m=t._horizontalRotationAxis;if(e.defined(r)?n.look(r,-p):e.defined(m)?n.look(m,-p):n.lookLeft(p),s.x=0,s.y=o.startPosition.y,a.x=0,a.y=o.endPosition.y,d=n.getPickRay(s,Lr),h=n.getPickRay(a,Gr),p=0,n.frustum instanceof e.OrthographicFrustum?(l=d.origin,c=h.origin,e.Cartesian3.add(n.direction,l,l),e.Cartesian3.add(n.direction,c,c),e.Cartesian3.subtract(l,n.position,l),e.Cartesian3.subtract(c,n.position,c),e.Cartesian3.normalize(l,l),e.Cartesian3.normalize(c,c)):(l=d.direction,c=h.direction),u=e.Cartesian3.dot(l,c),u<1&&(p=Math.acos(u)),p=o.startPosition.y>o.endPosition.y?-p:p,r=null!=r?r:m,e.defined(r)){const t=n.direction,i=e.Cartesian3.negate(r,Br),o=e.Cartesian3.equalsEpsilon(t,r,e.Math.EPSILON2),s=e.Cartesian3.equalsEpsilon(t,i,e.Math.EPSILON2);if(o||s)(o&&p<0||s&&p>0)&&n.look(n.right,-p);else{u=e.Cartesian3.dot(t,r);let o=e.Math.acosClamped(u);p>0&&p>o&&(p=o-e.Math.EPSILON4),u=e.Cartesian3.dot(t,i),o=e.Math.acosClamped(u),p<0&&-p>o&&(p=-o+e.Math.EPSILON4);const s=e.Cartesian3.cross(r,t,Or);n.look(s,p)}}else n.lookUp(p)},update3D=e=>{reactToInput(e,e.enableRotate,e.rotateEventTypes,spin3D,e.inertiaSpin,"_lastInertiaSpinMovement"),reactToInput(e,e.enableZoom,e.zoomEventTypes,zoom3D,e.inertiaZoom,"_lastInertiaZoomMovement"),reactToInput(e,e.enableTilt,e.tiltEventTypes,tilt3D,e.inertiaSpin,"_lastInertiaTiltMovement"),reactToInput(e,e.enableLook,e.lookEventTypes,look3D)},kr=new e.Matrix4,Nr=new e.Cartographic,adjustHeightForTerrain=(t,i)=>{var o;t._adjustedHeightForTerrain=!0;const r=t._scene,n=r.mode,s=r.globe;if(n===e.SceneMode.SCENE2D||n===e.SceneMode.MORPHING)return;const a=r.camera,l=null!==(o=null==s?void 0:s.ellipsoid)&&void 0!==o?o:e.Ellipsoid.WGS84,c=r.mapProjection;let d,h;e.Matrix4.equals(a.transform,e.Matrix4.IDENTITY)||(d=e.Matrix4.clone(a.transform,kr),h=e.Cartesian3.magnitude(a.position),a._setTransform(e.Matrix4.IDENTITY));const p=Nr;n===e.SceneMode.SCENE3D?l.cartesianToCartographic(a.position,p):c.unproject(a.position,p);let u=!1;if(p.height<t._minimumCollisionTerrainHeight){const o=t._scene.globeHeight;if(e.defined(o)){const r=o+t.minimumZoomDistance,s=o-t._lastGlobeHeight,d=s/t._lastGlobeHeight;p.height<r&&(i||Math.abs(d)<=.1)&&(p.height=r,n===e.SceneMode.SCENE3D?l.cartographicToCartesian(p,a.position):c.project(p,a.position),u=!0),i||Math.abs(d)<=.1?t._lastGlobeHeight=o:t._lastGlobeHeight+=.1*s}}e.defined(d)&&(a._setTransform(d),u&&(e.Cartesian3.normalize(a.position,a.position),e.Cartesian3.negate(a.position,a.direction),e.Cartesian3.multiplyByScalar(a.position,Math.max(h,t.minimumZoomDistance),a.position),e.Cartesian3.normalize(a.direction,a.direction),e.Cartesian3.cross(a.direction,a.up,a.right),e.Cartesian3.cross(a.right,a.direction,a.up)))};let Hr=1e12;const Wr=0,Ur=1,Qr=2,zr=3,Yr=4,jr=0,Jr=1,Kr=2,Vr=3,Zr=4,Xr=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800,1296e3,2592e3,5184e3,7776e3,15552e3,31536e3,63072e3,126144e3,15768e4,31536e4,63072e4,126144e4,15768e5,31536e5,63072e5,126144e5,15768e6,31536e6],qr=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];class ImprovedTimeline{constructor(t,i,o){if(this.smallestTicInPixels=7,this._mainTicSpan=-1,this._mouseMode=Wr,this._touchMode=jr,this._touchState={centerX:0,spanX:0},this._mouseX=0,this._timelineDrag=0,this._trackList=[],this._highlightRanges=[],!e.defined(t))throw new e.DeveloperError("container is required.");if(!e.defined(i))throw new e.DeveloperError("clock is required.");if(!e.defined(o))throw new e.DeveloperError("scene is required.");const r=(t=e.getElement(t)).ownerDocument;this._scene=o,this.container=t;const n=r.createElement("div");n.className="cesium-timeline-main",t.appendChild(n),this._topDiv=n,this._clock=i,this._scrubJulian=i.currentTime,this._topDiv.innerHTML='<div class="cesium-timeline-bar"></div><div class="cesium-timeline-trackContainer"><canvas class="cesium-timeline-tracks" width="10" height="1"></canvas></div><div class="cesium-timeline-needle"></div><span class="cesium-timeline-ruler"></span>',this._timeBarEle=this._topDiv.childNodes[0],this._trackContainer=this._topDiv.childNodes[1],this._trackListEle=this._topDiv.childNodes[1].childNodes[0],this._needleEle=this._topDiv.childNodes[2],this._rulerEle=this._topDiv.childNodes[3],this._context=this._trackListEle.getContext("2d"),this.zoomTo(i.startTime,i.stopTime),this._onMouseDown=createMouseDownCallback(this),this._onMouseUp=createMouseUpCallback(this),this._onMouseMove=createMouseMoveCallback(this),this._onMouseWheel=createMouseWheelCallback(this),this._onTouchStart=createTouchStartCallback(this),this._onTouchMove=createTouchMoveCallback(this),this._onTouchEnd=createTouchEndCallback(this);const s=this._timeBarEle;r.addEventListener("mouseup",this._onMouseUp,!1),r.addEventListener("mousemove",this._onMouseMove,!1),s.addEventListener("mousedown",this._onMouseDown,!1),s.addEventListener("DOMMouseScroll",this._onMouseWheel,!1),s.addEventListener("mousewheel",this._onMouseWheel,!1),s.addEventListener("touchstart",this._onTouchStart,!1),s.addEventListener("touchmove",this._onTouchMove,!1),s.addEventListener("touchend",this._onTouchEnd,!1),s.addEventListener("touchcancel",this._onTouchEnd,!1),this._topDiv.oncontextmenu=()=>!1,i.onTick.addEventListener(this.updateFromClock,this),this.updateFromClock()}addEventListener(e,t,i){this._topDiv.addEventListener(e,t,i)}removeEventListener(e,t,i){this._topDiv.removeEventListener(e,t,i)}isDestroyed(){return!1}destroy(){this._clock.onTick.removeEventListener(this.updateFromClock,this);const t=this.container.ownerDocument;t.removeEventListener("mouseup",this._onMouseUp,!1),t.removeEventListener("mousemove",this._onMouseMove,!1);const i=this._timeBarEle;i.removeEventListener("mousedown",this._onMouseDown,!1),i.removeEventListener("DOMMouseScroll",this._onMouseWheel,!1),i.removeEventListener("mousewheel",this._onMouseWheel,!1),i.removeEventListener("touchstart",this._onTouchStart,!1),i.removeEventListener("touchmove",this._onTouchMove,!1),i.removeEventListener("touchend",this._onTouchEnd,!1),i.removeEventListener("touchcancel",this._onTouchEnd,!1),this.container.removeChild(this._topDiv),e.destroyObject(this)}addHighlightRange(t,i,o){const r=new e.TimelineHighlightRange(t,i,o);return this._highlightRanges.push(r),this.resize(),r}addTrack(t,i,o,r){const n=new e.TimelineTrack(t,i,o,r);return this._trackList.push(n),this._lastHeight=void 0,this.resize(),n}zoomTo(t,i){if(!e.defined(t))throw new e.DeveloperError("startTime is required.");if(!e.defined(i))throw new e.DeveloperError("stopTime is required");if(e.JulianDate.lessThanOrEquals(i,t))throw new e.DeveloperError("Start time must come before end time.");if(this._startJulian=t,this._endJulian=i,this._timeBarSecondsSpan=e.JulianDate.secondsDifference(i,t),this._clock&&this._clock.clockRange!==e.ClockRange.UNBOUNDED){const t=this._clock.startTime,i=this._clock.stopTime,o=e.JulianDate.secondsDifference(i,t),r=e.JulianDate.secondsDifference(t,this._startJulian),n=e.JulianDate.secondsDifference(i,this._endJulian);this._timeBarSecondsSpan>=o?(this._timeBarSecondsSpan=o,this._startJulian=this._clock.startTime,this._endJulian=this._clock.stopTime):r>0?(this._endJulian=e.JulianDate.addSeconds(this._endJulian,r,new e.JulianDate),this._startJulian=t,this._timeBarSecondsSpan=e.JulianDate.secondsDifference(this._endJulian,this._startJulian)):n<0&&(this._startJulian=e.JulianDate.addSeconds(this._startJulian,n,new e.JulianDate),this._endJulian=i,this._timeBarSecondsSpan=e.JulianDate.secondsDifference(this._endJulian,this._startJulian))}this._makeTics();const o=document.createEvent("Event");o.initEvent("setzoom",!0,!0),o.startJulian=this._startJulian,o.endJulian=this._endJulian,o.epochJulian=this._epochJulian,o.totalSpan=this._timeBarSecondsSpan,o.mainTicSpan=this._mainTicSpan,this._topDiv.dispatchEvent(o)}zoomFrom(t){let i=e.JulianDate.secondsDifference(this._scrubJulian,this._startJulian);t>1||i<0||i>this._timeBarSecondsSpan?i=.5*this._timeBarSecondsSpan:i+=i-.5*this._timeBarSecondsSpan;const o=this._timeBarSecondsSpan-i;this.zoomTo(e.JulianDate.addSeconds(this._startJulian,i-i*t,new e.JulianDate),e.JulianDate.addSeconds(this._endJulian,o*t-o,new e.JulianDate))}makeLabel(t){const i=e.JulianDate.toGregorianDate(t),o=i.millisecond;let r=" UTC";if(o>0&&this._timeBarSecondsSpan<3600){for(r=Math.floor(o).toString();r.length<3;)r=`0${r}`;r=`.${r}`}return`${qr[i.month-1]} ${i.day} ${i.year} ${twoDigits(i.hour)}:${twoDigits(i.minute)}:${twoDigits(i.second)}${r}`}_makeTics(){const t=this._timeBarEle,i=e.JulianDate.secondsDifference(this._scrubJulian,this._startJulian),o=Math.round(i*this._topDiv.clientWidth/this._timeBarSecondsSpan),r=o-8;let n;const s=this;this._needleEle.style.left=`${o.toString()}px`;let a="";const l=.01,c=31536e6,d=1e-10;let h=0,p=this._timeBarSecondsSpan;p<l?(p=l,this._timeBarSecondsSpan=l,this._endJulian=e.JulianDate.addSeconds(this._startJulian,l,new e.JulianDate)):p>c&&(p=c,this._timeBarSecondsSpan=c,this._endJulian=e.JulianDate.addSeconds(this._startJulian,c,new e.JulianDate));let u=this._timeBarEle.clientWidth;u<10&&(u=10);const m=this._startJulian,g=Math.min(p/u*1e-5,.4);let v;const f=e.JulianDate.toGregorianDate(m);v=p>31536e4?e.JulianDate.fromDate(new Date(Date.UTC(100*Math.floor(f.year/100),0))):p>31536e3?e.JulianDate.fromDate(new Date(Date.UTC(10*Math.floor(f.year/10),0))):p>86400?e.JulianDate.fromDate(new Date(Date.UTC(f.year,0))):e.JulianDate.fromDate(new Date(Date.UTC(f.year,f.month,f.day)));const C=e.JulianDate.secondsDifference(this._startJulian,e.JulianDate.addSeconds(v,g,new e.JulianDate));let y=C+p;this._epochJulian=v;const getStartTic=e=>Math.floor(C/e)*e,getNextTic=(e,t)=>Math.ceil(e/t+.5)*t,getAlpha=e=>(e-C)/p,remainder=(e,t)=>e-t*Math.round(e/t);this._rulerEle.innerHTML=this.makeLabel(e.JulianDate.addSeconds(this._endJulian,-.01,new e.JulianDate));let A=this._rulerEle.offsetWidth+20;A<30&&(A=180);const E=h;h-=d;const x={y:void 0,startTime:C,startJulian:m,epochJulian:v,duration:p,timeBarWidth:u,getAlpha:getAlpha};this._highlightRanges.forEach(e=>{a+=e.render(x)});let w=0,P=0,S=0,I=A/u;I>1&&(I=1),I*=this._timeBarSecondsSpan;let b=-1,R=-1;const _=Xr.length;let T;for(T=0;T<_;++T){const e=Xr[T];if(++b,w=e,e>I&&e>h)break;R<0&&u*(e/this._timeBarSecondsSpan)>=this.smallestTicInPixels&&(R=b)}if(b>0){for(;b>0;)if(--b,Math.abs(remainder(w,Xr[b]))<1e-5){Xr[b]>=h&&(P=Xr[b]);break}if(R>=0)for(;R<b;){if(Math.abs(remainder(P,Xr[R]))<1e-5&&Xr[R]>=h){S=Xr[R];break}++R}}h=E,h>d&&S<1e-5&&Math.abs(h-w)>d&&(S=h,h<=w+d&&(P=0));let D,F=-999999;if(u*(S/this._timeBarSecondsSpan)>=3)for(n=getStartTic(S);n<=y;n=getNextTic(n,S))a+=`<span class="cesium-timeline-ticTiny" style="left: ${Math.round(u*getAlpha(n)).toString()}px;"></span>`;if(u*(P/this._timeBarSecondsSpan)>=3)for(n=getStartTic(P);n<=y;n=getNextTic(n,P))a+=`<span class="cesium-timeline-ticSub" style="left: ${Math.round(u*getAlpha(n)).toString()}px;"></span>`;if(u*(w/this._timeBarSecondsSpan)>=2){this._mainTicSpan=w,y+=w,n=getStartTic(w);const t=e.JulianDate.computeTaiMinusUtc(v);for(;n<=y;){let i=e.JulianDate.addSeconds(m,n-C,new e.JulianDate);if(w>2.1){const o=e.JulianDate.computeTaiMinusUtc(i);Math.abs(o-t)>.1&&(n+=o-t,i=e.JulianDate.addSeconds(m,n-C,new e.JulianDate))}const o=Math.round(u*getAlpha(n)),r=this.makeLabel(i);this._rulerEle.innerHTML=r,D=this._rulerEle.offsetWidth,D<10&&(D=A);const s=o-(D/2-1);s>F?(F=s+D+5,a+=`<span class="cesium-timeline-ticMain" style="left: ${o.toString()}px;"></span><span class="cesium-timeline-ticLabel" style="left: ${s.toString()}px;">${r}</span>`):a+=`<span class="cesium-timeline-ticSub" style="left: ${o.toString()}px;"></span>`,n=getNextTic(n,w)}}else this._mainTicSpan=-1;a+=`<span class="cesium-timeline-icon16" style="left:${r}px;bottom:0;background-position: 0 0;"></span>`,t.innerHTML=a,this._scrubElement=t.lastChild,this._context.clearRect(0,0,this._trackListEle.width,this._trackListEle.height),x.y=0,this._trackList.forEach(e=>{e.render(s._context,x),x.y+=e.height})}updateFromClock(){this._scrubJulian=this._clock.currentTime;const t=this._scrubElement;if(e.defined(this._scrubElement)){const i=e.JulianDate.secondsDifference(this._scrubJulian,this._startJulian),o=Math.round(i*this._topDiv.clientWidth/this._timeBarSecondsSpan);this._lastXPos!==o&&(this._lastXPos=o,t.style.left=o-8+"px",this._needleEle.style.left=`${o}px`)}e.defined(this._timelineDragLocation)&&(this._setTimeBarTime(this._timelineDragLocation,this._timelineDragLocation*this._timeBarSecondsSpan/this._topDiv.clientWidth),this.zoomTo(e.JulianDate.addSeconds(this._startJulian,this._timelineDrag,new e.JulianDate),e.JulianDate.addSeconds(this._endJulian,this._timelineDrag,new e.JulianDate)))}_setTimeBarTime(t,i){if(t=Math.round(t),this._scrubJulian=e.JulianDate.addSeconds(this._startJulian,i,new e.JulianDate),this._scrubElement){const e=t-8;this._scrubElement.style.left=`${e.toString()}px`,this._needleEle.style.left=`${t.toString()}px`}const o=document.createEvent("Event");o.initEvent("settime",!0,!0),o.clientX=t,o.timeSeconds=i,o.timeJulian=this._scrubJulian,o.clock=this._clock,this._topDiv.dispatchEvent(o)}resize(){const e=this.container.clientWidth,t=this.container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;this._trackContainer.style.height=`${t}px`;let i=1;this._trackList.forEach(e=>{i+=e.height}),this._trackListEle.style.height=`${i.toString()}px`,this._trackListEle.width=this._trackListEle.clientWidth,this._trackListEle.height=i,this._makeTics(),this._lastXPos=void 0,this._lastWidth=e,this._lastHeight=t}}const twoDigits=e=>e<10?`0${e.toString()}`:e.toString(),createMouseDownCallback=e=>t=>{e._mouseMode!==Yr&&(0===t.button?(e._mouseMode=Ur,e._scrubElement&&(e._scrubElement.style.backgroundPosition="-16px 0"),e._onMouseMove(t)):(e._mouseX=t.clientX,2===t.button?e._mouseMode=zr:e._mouseMode=Qr)),t.preventDefault()},createMouseUpCallback=e=>()=>{e._mouseMode=Wr,e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0"),e._timelineDrag=0,e._timelineDragLocation=void 0},createMouseMoveCallback=t=>i=>{let o;const r=t._scene.canvas.getBoundingClientRect().width/t._scene.canvas.width;if(t._mouseMode===Ur){i.preventDefault();const e=(i.clientX-t._topDiv.getBoundingClientRect().left)/r;e<0?(t._timelineDragLocation=0,t._timelineDrag=-.01*t._timeBarSecondsSpan):e>t._topDiv.clientWidth?(t._timelineDragLocation=t._topDiv.clientWidth,t._timelineDrag=.01*t._timeBarSecondsSpan):(t._timelineDragLocation=void 0,t._setTimeBarTime(e,e*t._timeBarSecondsSpan/t._topDiv.clientWidth))}else if(t._mouseMode===Qr){if(o=t._mouseX-i.clientX,t._mouseX=i.clientX,0!==o){const i=o*t._timeBarSecondsSpan/t._topDiv.clientWidth;t.zoomTo(e.JulianDate.addSeconds(t._startJulian,i,new e.JulianDate),e.JulianDate.addSeconds(t._endJulian,i,new e.JulianDate))}}else t._mouseMode===zr&&(o=t._mouseX-i.clientX,t._mouseX=i.clientX,0!==o&&t.zoomFrom(Math.pow(1.01,o)))},createMouseWheelCallback=e=>t=>{let i=t.wheelDeltaY||t.wheelDelta||-t.detail;Hr=Math.max(Math.min(Math.abs(i),Hr),1),i/=Hr,e.zoomFrom(Math.pow(1.05,-i))},createTouchStartCallback=t=>i=>{const o=i.touches.length;let r,n;const s=t._topDiv.getBoundingClientRect().left;i.preventDefault(),t._mouseMode=Yr,1===o?(r=e.JulianDate.secondsDifference(t._scrubJulian,t._startJulian),n=Math.round(r*t._topDiv.clientWidth/t._timeBarSecondsSpan+s),Math.abs(i.touches[0].clientX-n)<50?(t._touchMode=Jr,t._scrubElement&&(t._scrubElement.style.backgroundPosition=1===o?"-16px 0":"0 0")):(t._touchMode=Vr,t._touchState.centerX=i.touches[0].clientX-s)):2===o?(t._touchMode=Kr,t._touchState.centerX=.5*(i.touches[0].clientX+i.touches[1].clientX)-s,t._touchState.spanX=Math.abs(i.touches[0].clientX-i.touches[1].clientX)):t._touchMode=Zr},createTouchEndCallback=e=>t=>{const i=t.touches.length,o=e._topDiv.getBoundingClientRect().left;e._touchMode===Vr?(e._touchMode=Jr,e._onTouchMove(t)):e._touchMode===Jr&&e._onTouchMove(t),e._mouseMode=Yr,1!==i?e._touchMode=i>0?Zr:jr:e._touchMode===Kr&&(e._touchState.centerX=t.touches[0].clientX-o),e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0")},createTouchMoveCallback=t=>i=>{let o,r,n,s,a,l,c=1;const d=t._topDiv.getBoundingClientRect().left;t._touchMode===Vr&&(t._touchMode=Kr),t._mouseMode=Yr,t._touchMode===Jr?(i.preventDefault(),1===i.changedTouches.length&&(r=i.changedTouches[0].clientX-d,r>=0&&r<=t._topDiv.clientWidth&&t._setTimeBarTime(r,r*t._timeBarSecondsSpan/t._topDiv.clientWidth))):t._touchMode===Kr&&(n=i.touches.length,2===n?(s=.5*(i.touches[0].clientX+i.touches[1].clientX)-d,a=Math.abs(i.touches[0].clientX-i.touches[1].clientX)):1===n&&(s=i.touches[0].clientX-d,a=0),e.defined(s)&&(a>0&&t._touchState.spanX>0?(c=t._touchState.spanX/a,l=e.JulianDate.addSeconds(t._startJulian,(t._touchState.centerX*t._timeBarSecondsSpan-s*t._timeBarSecondsSpan*c)/t._topDiv.clientWidth,new e.JulianDate)):(o=t._touchState.centerX-s,l=e.JulianDate.addSeconds(t._startJulian,o*t._timeBarSecondsSpan/t._topDiv.clientWidth,new e.JulianDate)),t.zoomTo(l,e.JulianDate.addSeconds(l,t._timeBarSecondsSpan*c,new e.JulianDate)),t._touchState.centerX=s,t._touchState.spanX=a))};var $r,en,tn,on,rn,nn,sn,an,ln,cn,dn,hn,pn,un,mn,gn,vn,fn,Cn,yn,An,En,xn,wn,Pn,Sn,In,bn,Rn,_n,Tn,Dn,Fn,Mn,Ln,Gn,Bn,On,kn,Nn,Hn,Wn,Un,Qn;exports.Earth=class Earth{constructor(t,i,o){if($r.add(this),en.set(this,void 0),tn.set(this,void 0),on.set(this,void 0),this._id=exports.Utils.uuid(),e.Camera.DEFAULT_VIEW_RECTANGLE=(null==o?void 0:o.defaultViewRectangle)||e.Rectangle.fromDegrees(72,.83,137.83,55.83),__classPrivateFieldSet(this,en,{},"f"),__classPrivateFieldSet(this,tn,{},"f"),__classPrivateFieldGet(this,$r,"m",nn).call(this,i,o),t instanceof e.Viewer?this._viewer=t:this._viewer=new e.Viewer(t,__classPrivateFieldGet(this,en,"f")),this._scene=this._viewer.scene,this._camera=this._viewer.camera,this._clock=this._viewer.clock,this._container=this._viewer.container,this._animation=this._viewer.animation.container,this._timeline=this._viewer.timeline.container,__classPrivateFieldGet(this,$r,"m",sn).call(this),this._coordinate=new exports.Coordinate(this),this._layers=new GraphicsLayer(this),__classPrivateFieldGet(this,tn,"f").adaptiveCameraController&&(this._scene._screenSpaceCameraController=new ImprovedScreenSpaceCameraController(this._scene)),__classPrivateFieldGet(this,tn,"f").adaptiveAnimation&&(this._viewer._animation.destroy(),this.viewer._animation=new ImprovedAnimation(this.animation,new e.AnimationViewModel(new e.ClockViewModel(this._clock)),this._scene)),__classPrivateFieldGet(this,tn,"f").adaptiveTimeline){this._viewer._timeline.destroy();const e=new ImprovedTimeline(this._timeline,this._clock,this._scene);e.addEventListener("settime",e=>{const t=e.clock;t.currentTime=e.timeJulian,t.shouldAnimate=!1},!1),e.zoomTo(this._clock.startTime,this._clock.stopTime),this._viewer._timeline=e}this.lockCamera(),__classPrivateFieldGet(this,$r,"m",rn).call(this)}setFormatters(e){const{animationDateFormatter:t,animationTimeFormatter:i,timelineFormatter:o}=e;t&&(this._viewer.animation.viewModel.dateFormatter=t),i&&(this._viewer.animation.viewModel.timeFormatter=i),o&&(this._viewer.timeline.makeLabel=o)}lockCamera(e){const t=e||__classPrivateFieldGet(this,tn,"f").lockCamera;t&&(__classPrivateFieldGet(this,tn,"f").lockCamera||(__classPrivateFieldGet(this,tn,"f").lockCamera={}),void 0!==t.enable&&(__classPrivateFieldGet(this,tn,"f").lockCamera.enable=t.enable,__classPrivateFieldGet(this,$r,"m",rn).call(this)),void 0!==t.height&&(__classPrivateFieldGet(this,tn,"f").lockCamera.height=t.height),t.rectangle&&(__classPrivateFieldGet(this,tn,"f").lockCamera.rectangle=t.rectangle))}addImageryProvider(e){return this._viewer.imageryLayers.addImageryProvider(e)}removeImageryProvider(e){e?this._viewer.imageryLayers.remove(e):this._viewer.imageryLayers.removeAll()}setTerrain(e){this._viewer.terrainProvider=e}setDepthTestAgainstTerrain(e){this._scene.globe.depthTestAgainstTerrain=e}flyHome(t=2){this._camera.lookAtTransform(e.Matrix4.IDENTITY),this._camera.flyHome(t)}flyTo({position:t,rectangle:i,duration:o=2,orientation:r}){let n;n=t?t.clone():i?i.clone():e.Camera.DEFAULT_VIEW_RECTANGLE.clone(),this._camera.flyTo({destination:n,duration:o,orientation:r})}morphTo(t,i=2){const o=new e.Cartesian2(Math.floor(this._viewer.canvas.clientWidth/2),Math.floor(this._viewer.canvas.clientHeight/2)),r=this._coordinate.screenToGeographic(o);let n;switch(t){case exports.DefaultContextMenuItem.Scene2D:n=e.Cartesian3.distance(this._camera.pickEllipsoid(o),this._camera.positionWC),this._scene.morphTo2D(i);break;case exports.DefaultContextMenuItem.Scene3D:n=this._camera.positionCartographic.height,this._scene.morphTo3D(i)}setTimeout(()=>{this._scene.completeMorph(),this._camera.flyTo({destination:e.Cartesian3.fromDegrees(r.longitude,r.latitude,n),duration:2})},1e3*i)}destroy(){this._isDestroyed||(this._isDestroyed=!0,this._layers.destroy(),this._viewer.destroy())}},en=new WeakMap,tn=new WeakMap,on=new WeakMap,$r=new WeakSet,rn=function _Earth_addCameraLockRenderListener(){var e;!__classPrivateFieldGet(this,on,"f")&&(null===(e=__classPrivateFieldGet(this,tn,"f").lockCamera)||void 0===e?void 0:e.enable)&&__classPrivateFieldSet(this,on,this._scene.preRender.addEventListener(()=>{var e;(null===(e=__classPrivateFieldGet(this,tn,"f").lockCamera)||void 0===e?void 0:e.enable)&&__classPrivateFieldGet(this,tn,"f").lockCamera.rectangle&&exports.CameraTool.lockCameraInRectangle(this._camera,__classPrivateFieldGet(this,tn,"f").lockCamera.rectangle,__classPrivateFieldGet(this,tn,"f").lockCamera.height)}),"f")},nn=function _Earth_defaultOptions(e,t){Object.assign(__classPrivateFieldGet(this,tn,"f"),{adaptiveAnimation:!0,adaptiveCameraController:!0,adaptiveTimeline:!0,showAnimation:!1,showTimeline:!1},t),Object.assign(__classPrivateFieldGet(this,en,"f"),e)},sn=function _Earth_defaultSettings(){!1===__classPrivateFieldGet(this,tn,"f").showAnimation&&this._animation&&(this._animation.style.visibility="hidden"),!1===__classPrivateFieldGet(this,tn,"f").showTimeline&&this._timeline&&(this._timeline.style.visibility="hidden"),this._viewer.canvas.ondragover=e=>{e.preventDefault()},this._viewer.canvas.ondragenter=e=>{e.preventDefault()}},__decorate([generate(!1)],exports.Earth.prototype,"isDestroyed",void 0),__decorate([generate()],exports.Earth.prototype,"id",void 0),__decorate([generate()],exports.Earth.prototype,"container",void 0),__decorate([generate()],exports.Earth.prototype,"viewer",void 0),__decorate([generate()],exports.Earth.prototype,"scene",void 0),__decorate([generate()],exports.Earth.prototype,"camera",void 0),__decorate([generate()],exports.Earth.prototype,"clock",void 0),__decorate([generate()],exports.Earth.prototype,"animation",void 0),__decorate([generate()],exports.Earth.prototype,"timeline",void 0),__decorate([generate()],exports.Earth.prototype,"coordinate",void 0),__decorate([generate()],exports.Earth.prototype,"layers",void 0),exports.Earth=__decorate([((e,t)=>i=>{console.groupCollapsed("%c %c Welcome to use.",`\n padding: 5px 5px;\n background: url(${t}) no-repeat;\n background-size: contain;\n width: 20px;\n height: 20px;\n `,"\n font-size: 14px;\n padding-left: 5px;\n align-items: center;\n ");const o=`\n Package: ${e.name}\n Author: ${e.author}\n Version: ${e.version}\n Time: ${(new Date).toLocaleString()}\n `;console.log(o),console.groupEnd();const r=[["author",e.author],["version",e.version]].reduce((e,t)=>{const[i,o]=t;return e[i]={configurable:!1,get:()=>o},e},{});return Object.defineProperties(i.prototype,r),i})({name:"@krazyphish/earth",author:"KrazyPhish",version:"2.6.0"},"data:image/png;base64,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")],exports.Earth);class Coordinator{constructor(){this.cStore={}}on(e,t,i){const o=this.cStore;o[e]||(o[e]=[]),o[e].push(e=>t.call(i,e))}emit(e,t){const i=this.cStore;if(i[e]){const o=i[e].length;for(let r=0;r<o;r++){(0,i[e][r])(t)}}}}class Canvas2dRenderer{constructor(e){this._blur=0,this._opacity=0,this._maxOpacity=0,this._minOpacity=0,this._useGradientOpacity=!1;const t=e.container,i=this.shadowCanvas=document.createElement("canvas"),o=this.canvas=e.canvas||document.createElement("canvas");this._renderBoundaries=[1e4,1e4,0,0];const r=getComputedStyle(e.container)||{};o.className="heatmap-canvas",this._width=o.width=i.width=e.width||+r.width.replace(/px/,""),this._height=o.height=i.height=e.height||+r.height.replace(/px/,""),this.shadowCtx=i.getContext("2d"),this.ctx=o.getContext("2d"),o.style.cssText=i.style.cssText="position:absolute;left:0;top:0;",t.style.position="relative",t.appendChild(o),this._palette=Canvas2dRenderer._getColorPalette(e),this._templates={},this._setStyles(e)}static _getColorPalette(e){const t=e.gradient,i=document.createElement("canvas"),o=i.getContext("2d");i.width=256,i.height=1;const r=o.createLinearGradient(0,0,256,1);for(const e in t)r.addColorStop(parseFloat(e),t[e]);return o.fillStyle=r,o.fillRect(0,0,256,1),o.getImageData(0,0,256,1).data}static _getPointTemplate(e,t){const i=document.createElement("canvas"),o=i.getContext("2d"),r=e,n=e;if(i.width=i.height=2*e,1===t)o.beginPath(),o.arc(r,n,e,0,2*Math.PI,!1),o.fillStyle="rgba(0,0,0,1)",o.fill();else{const i=o.createRadialGradient(r,n,e*t,r,n,e);i.addColorStop(0,"rgba(0,0,0,1)"),i.addColorStop(1,"rgba(0,0,0,0)"),o.fillStyle=i,o.fillRect(0,0,2*e,2*e)}return i}static _prepareData(e){const t=[],i=e.min,o=e.max,r=e.radi;e=e.data;const n=Object.keys(e);let s=n.length;for(;s--;){const i=n[s],o=Object.keys(e[i]);let a=o.length;for(;a--;){const n=o[a],s=e[i][n],l=r[i][n];t.push({x:i,y:n,value:s,radius:l})}}return{min:i,max:o,data:t}}_setStyles(e){this._blur=0===e.blur?0:e.blur,e.backgroundColor&&(this.canvas.style.backgroundColor=e.backgroundColor),this._width=this.canvas.width=this.shadowCanvas.width=e.width||this._width,this._height=this.canvas.height=this.shadowCanvas.height=e.height||this._height,this._opacity=255*(e.opacity||0),this._maxOpacity=255*e.maxOpacity,this._minOpacity=255*e.minOpacity,this._useGradientOpacity=!!e.useGradientOpacity}_drawAlpha(e){const t=this._min=e.min,i=this._max=e.max;let o=(e=e.data||[]).length;const r=1-this._blur;for(;o--;){const n=e[o],s=n.x,a=n.y,l=n.radius,c=Math.min(n.value,i),d=s-l,h=a-l,p=this.shadowCtx;let u;this._templates[l]?u=this._templates[l]:this._templates[l]=u=Canvas2dRenderer._getPointTemplate(l,r);const m=(c-t)/(i-t);p.globalAlpha=m<.01?.01:m,p.drawImage(u,d,h),d<this._renderBoundaries[0]&&(this._renderBoundaries[0]=d),h<this._renderBoundaries[1]&&(this._renderBoundaries[1]=h),d+2*l>this._renderBoundaries[2]&&(this._renderBoundaries[2]=d+2*l),h+2*l>this._renderBoundaries[3]&&(this._renderBoundaries[3]=h+2*l)}}_colorize(){let e=this._renderBoundaries[0],t=this._renderBoundaries[1],i=this._renderBoundaries[2]-e,o=this._renderBoundaries[3]-t;const r=this._width,n=this._height,s=this._opacity,a=this._maxOpacity,l=this._minOpacity,c=this._useGradientOpacity;e<0&&(e=0),t<0&&(t=0),e+i>r&&(i=r-e),t+o>n&&(o=n-t);const d=this.shadowCtx.getImageData(e,t,i,o),h=d.data,p=h.length,u=this._palette;for(let e=3;e<p;e+=4){const t=h[e],i=4*t;if(!i)continue;let o;o=s>0?s:t<a?t<l?l:t:a,h[e-3]=u[i],h[e-2]=u[i+1],h[e-1]=u[i+2],h[e]=c?u[i+3]:o}this.ctx.putImageData(d,e,t),this._renderBoundaries=[1e3,1e3,0,0]}_clear(){this.shadowCtx.clearRect(0,0,this._width,this._height),this.ctx.clearRect(0,0,this._width,this._height)}renderPartial(e){e.data.length>0&&(this._drawAlpha(e),this._colorize())}renderAll(e){this._clear(),e.data.length>0&&(this._drawAlpha(Canvas2dRenderer._prepareData(e)),this._colorize())}getDataURL(){return this.canvas.toDataURL()}}class Store{constructor(e){this._coordinator={},this._data=[],this._radi=[],this._min=10,this._max=1,this._xField=e.xField,this._yField=e.yField,this._valueField=e.valueField,this._cfgRadius=e.radius}_organizeData(e,t){const i=e[this._xField],o=e[this._yField],r=this._radi,n=this._data,s=this._max,a=this._min,l=e[this._valueField]||1,c=e.radius||this._cfgRadius;n[i]||(n[i]=[],r[i]=[]),n[i][o]?n[i][o]+=l:(n[i][o]=l,r[i][o]=c);const d=n[i][o];return d>s?(t?this.setDataMax(d):this._max=d,!1):d<a?(t?this.setDataMin(d):this._min=d,!1):{x:i,y:o,value:l,radius:c,min:a,max:s}}_onExtremaChange(){this._coordinator.emit("extremaChange",{min:this._min,max:this._max})}_getInternalData(){return{max:this._max,min:this._min,data:this._data,radi:this._radi}}setCoordinator(e){this._coordinator=e}setData(e){const t=e.data,i=t.length;this._data=[],this._radi=[];for(let e=0;e<i;e++)this._organizeData(t[e],!1);return this._max=e.max,this._min=e.min||0,this._onExtremaChange(),this._coordinator.emit("renderAll",this._getInternalData()),this}setDataMax(e){return this._max=e,this._onExtremaChange(),this._coordinator.emit("renderAll",this._getInternalData()),this}setDataMin(e){return this._min=e,this._onExtremaChange(),this._coordinator.emit("renderAll",this._getInternalData()),this}}class H337{constructor(e){if(this.defaults={radius:40,renderer:"canvas2d",gradient:{.25:"rgb(0,0,255)",.55:"rgb(0,255,0)",.85:"yellow",1:"rgb(255,0,0)"},maxOpacity:1,minOpacity:0,blur:.85,xField:"x",yField:"y",valueField:"value",plugins:{}},this._config={},this._coordinator=new Coordinator,Object.assign(this._config,this.defaults,e),this._config.plugin){const e=this._config.plugin;if(!this._config.plugins[e])throw new Error(`Plugin '${e}' not found. Maybe it was not registered.`);{const t=this._config.plugins[e];this._renderer=new t.renderer(this._config),this._store=new t.store(this._config)}}else this._renderer=new Canvas2dRenderer(this._config),this._store=new Store(this._config);this._connect()}_connect(){const e=this._renderer,t=this._coordinator,i=this._store;t.on("renderPartial",e.renderPartial,e),t.on("renderAll",e.renderAll,e),t.on("extremaChange",e=>{this._config.onExtremaChange&&this._config.onExtremaChange({min:e.min,max:e.max,gradient:this._config.gradient})},self),i.setCoordinator(t)}getDataURL(){return this._renderer.getDataURL()}setData(e){return this._store.setData(e),this}}const{PI:zn,abs:Yn,floor:jn,max:Jn,round:Kn}=Math;var Vn,Zn,Xn,qn,$n,es,ts;exports.Heatmap=class Heatmap{constructor(t,i){an.add(this),ln.set(this,void 0),cn.set(this,void 0),dn.set(this,{minCanvasSize:700,maxCanvasSize:2e3,radius:60,spacingFactor:1.5,maxOpacity:.8,minOpacity:.1,blur:.85,gradient:{"0.30":"rgb(0,0,255)","0.50":"rgb(0,255,0)","0.70":"rgb(255,255,0)",.95:"rgb(255,0,0)"},minScaleDenominator:4e4,maxScaleDenominator:4e6}),hn.set(this,void 0),pn.set(this,0),un.set(this,0),mn.set(this,1),gn.set(this,0),vn.set(this,0),fn.set(this,0),Cn.set(this,{north:0,east:0,south:0,west:0}),yn.set(this,{north:0,east:0,south:0,west:0}),An.set(this,50),En.set(this,20),xn.set(this,0),wn.set(this,0),Pn.set(this,void 0),Sn.set(this,0),this._id=exports.Utils.uuid(),__classPrivateFieldSet(this,ln,t,"f"),__classPrivateFieldSet(this,cn,null!=i?i:{},"f"),this._rawData={min:0,max:0,data:[]},this._dom=document.createElement("div"),document.body.appendChild(this._dom),__classPrivateFieldSet(this,hn,new e.WebMercatorProjection,"f"),__classPrivateFieldGet(this,an,"m",Un).call(this)}setWGS84Data({data:e,rect:t}){__classPrivateFieldGet(this,an,"m",Gn).call(this,t);const i=[];for(let t=0;t<e.data.length;t++){const o=e.data[t],r=__classPrivateFieldGet(this,an,"m",Ln).call(this,o);(o.value||0===o.value)&&(r.value=o.value),i.push(r)}return __classPrivateFieldGet(this,an,"m",On).call(this,{data:{min:e.min,max:e.max,data:i}})}render(t){if(this._rawData=t,!t.data)return;const i=__classPrivateFieldGet(this,an,"m",Qn).call(this,t.data);this.setWGS84Data({data:t,rect:new e.Rectangle(e.Math.toDegrees(i.west),e.Math.toDegrees(i.south),e.Math.toDegrees(i.east),e.Math.toDegrees(i.north))}),__classPrivateFieldGet(this,an,"m",Wn).call(this)}show(){this._layer&&(this._layer.show=!0)}hide(){this._layer&&(this._layer.show=!1)}remove(){__classPrivateFieldGet(this,Pn,"f")&&__classPrivateFieldGet(this,ln,"f").camera.moveEnd.removeEventListener(__classPrivateFieldGet(this,Pn,"f")),this._layer&&this._layer instanceof e.ImageryLayer&&__classPrivateFieldGet(this,ln,"f").scene.imageryLayers.remove(this._layer)}destroy(){this._isDestroyed||(this._isDestroyed=!0,this.remove(),this._dom.remove())}},ln=new WeakMap,cn=new WeakMap,dn=new WeakMap,hn=new WeakMap,pn=new WeakMap,un=new WeakMap,mn=new WeakMap,gn=new WeakMap,vn=new WeakMap,fn=new WeakMap,Cn=new WeakMap,yn=new WeakMap,An=new WeakMap,En=new WeakMap,xn=new WeakMap,wn=new WeakMap,Pn=new WeakMap,Sn=new WeakMap,an=new WeakSet,In=function _Heatmap_wgs84ToMercatorBB(t){const i=__classPrivateFieldGet(this,hn,"f").project(e.Cartographic.fromDegrees(t.west,t.south)),o=__classPrivateFieldGet(this,hn,"f").project(e.Cartographic.fromDegrees(t.east,t.north));return{north:o.y,east:o.x,south:i.y,west:i.x}},bn=function _Heatmap_rad2deg(e){return e/(zn/180)},Rn=function _Heatmap_mercatorToWgs84BB(t){const i=__classPrivateFieldGet(this,hn,"f").unproject(new e.Cartesian3(t.west,t.south)),o=__classPrivateFieldGet(this,hn,"f").unproject(new e.Cartesian3(t.east,t.north));return{north:__classPrivateFieldGet(this,an,"m",bn).call(this,o.latitude),east:__classPrivateFieldGet(this,an,"m",bn).call(this,o.longitude),south:__classPrivateFieldGet(this,an,"m",bn).call(this,i.latitude),west:__classPrivateFieldGet(this,an,"m",bn).call(this,i.longitude)}},_n=function _Heatmap_setWidthAndHeight(e){__classPrivateFieldSet(this,pn,e.east>0&&e.west<0?e.east+Yn(e.west):Yn(e.east-e.west),"f"),__classPrivateFieldSet(this,un,e.north>0&&e.south<0?e.north+Yn(e.south):Yn(e.north-e.south),"f"),__classPrivateFieldSet(this,mn,1,"f"),__classPrivateFieldGet(this,pn,"f")>__classPrivateFieldGet(this,un,"f")&&__classPrivateFieldGet(this,pn,"f")>__classPrivateFieldGet(this,dn,"f").maxCanvasSize?(__classPrivateFieldSet(this,mn,__classPrivateFieldGet(this,pn,"f")/__classPrivateFieldGet(this,dn,"f").maxCanvasSize,"f"),__classPrivateFieldGet(this,un,"f")/__classPrivateFieldGet(this,mn,"f")<__classPrivateFieldGet(this,dn,"f").minCanvasSize&&__classPrivateFieldSet(this,mn,__classPrivateFieldGet(this,un,"f")/__classPrivateFieldGet(this,dn,"f").minCanvasSize,"f")):__classPrivateFieldGet(this,un,"f")>__classPrivateFieldGet(this,pn,"f")&&__classPrivateFieldGet(this,un,"f")>__classPrivateFieldGet(this,dn,"f").maxCanvasSize?(__classPrivateFieldSet(this,mn,__classPrivateFieldGet(this,un,"f")/__classPrivateFieldGet(this,dn,"f").maxCanvasSize,"f"),__classPrivateFieldGet(this,pn,"f")/__classPrivateFieldGet(this,mn,"f")<__classPrivateFieldGet(this,dn,"f").minCanvasSize&&__classPrivateFieldSet(this,mn,__classPrivateFieldGet(this,pn,"f")/__classPrivateFieldGet(this,dn,"f").minCanvasSize,"f")):__classPrivateFieldGet(this,pn,"f")<__classPrivateFieldGet(this,un,"f")&&__classPrivateFieldGet(this,pn,"f")<__classPrivateFieldGet(this,dn,"f").minCanvasSize?(__classPrivateFieldSet(this,mn,__classPrivateFieldGet(this,pn,"f")/__classPrivateFieldGet(this,dn,"f").minCanvasSize,"f"),__classPrivateFieldGet(this,un,"f")/__classPrivateFieldGet(this,mn,"f")>__classPrivateFieldGet(this,dn,"f").maxCanvasSize&&__classPrivateFieldSet(this,mn,__classPrivateFieldGet(this,un,"f")/__classPrivateFieldGet(this,dn,"f").maxCanvasSize,"f")):__classPrivateFieldGet(this,un,"f")<__classPrivateFieldGet(this,pn,"f")&&__classPrivateFieldGet(this,un,"f")<__classPrivateFieldGet(this,dn,"f").minCanvasSize&&(__classPrivateFieldSet(this,mn,__classPrivateFieldGet(this,un,"f")/__classPrivateFieldGet(this,dn,"f").minCanvasSize,"f"),__classPrivateFieldGet(this,pn,"f")/__classPrivateFieldGet(this,mn,"f")>__classPrivateFieldGet(this,dn,"f").maxCanvasSize&&__classPrivateFieldSet(this,mn,__classPrivateFieldGet(this,pn,"f")/__classPrivateFieldGet(this,dn,"f").maxCanvasSize,"f")),__classPrivateFieldSet(this,pn,__classPrivateFieldGet(this,pn,"f")/__classPrivateFieldGet(this,mn,"f"),"f"),__classPrivateFieldSet(this,un,__classPrivateFieldGet(this,un,"f")/__classPrivateFieldGet(this,mn,"f"),"f")},Tn=function _Heatmap_getContainer(e,t,i){return this._dom.childNodes.forEach(e=>e.remove()),i&&this._dom.setAttribute("id",i),this._dom.setAttribute("style",`width: ${e}px; height: ${t}px; margin: 0px; display: none;`),this._dom},Dn=function _Heatmap_getImageryProvider(){if(!this._heatmap)return;const t=this._heatmap.getDataURL(),i=new e.SingleTileImageryProvider({url:t,tileWidth:__classPrivateFieldGet(this,pn,"f"),tileHeight:__classPrivateFieldGet(this,un,"f"),rectangle:this._rectangle});return i._tilingScheme=new e.WebMercatorTilingScheme({rectangleSouthwestInMeters:new e.Cartesian2(__classPrivateFieldGet(this,yn,"f").west,__classPrivateFieldGet(this,yn,"f").south),rectangleNortheastInMeters:new e.Cartesian2(__classPrivateFieldGet(this,yn,"f").east,__classPrivateFieldGet(this,yn,"f").north)}),new e.ImageryLayer(i,{})},Fn=function _Heatmap_mercatorPointToHeatmapPoint(e){const t={x:0,y:0,value:0};return t.x=Kn((e.x-__classPrivateFieldGet(this,vn,"f"))/__classPrivateFieldGet(this,mn,"f")+__classPrivateFieldGet(this,gn,"f")),t.y=Kn((e.y-__classPrivateFieldGet(this,fn,"f"))/__classPrivateFieldGet(this,mn,"f")+__classPrivateFieldGet(this,gn,"f")),t.y=__classPrivateFieldGet(this,un,"f")-t.y,t},Mn=function _Heatmap_wgs84ToMercator(t){return __classPrivateFieldGet(this,hn,"f").project(e.Cartographic.fromDegrees(t.x,t.y))},Ln=function _Heatmap_wgs84PointToHeatmapPoint(e){return __classPrivateFieldGet(this,an,"m",Fn).call(this,__classPrivateFieldGet(this,an,"m",Mn).call(this,e))},Gn=function _Heatmap_calcBoundingBox(t){let i;__classPrivateFieldSet(this,yn,__classPrivateFieldGet(this,an,"m",In).call(this,t),"f"),__classPrivateFieldGet(this,cn,"f").gradient=__classPrivateFieldGet(this,cn,"f").gradient?__classPrivateFieldGet(this,cn,"f").gradient:__classPrivateFieldGet(this,dn,"f").gradient,__classPrivateFieldGet(this,cn,"f").maxOpacity=void 0!==__classPrivateFieldGet(this,cn,"f").maxOpacity?__classPrivateFieldGet(this,cn,"f").maxOpacity:__classPrivateFieldGet(this,dn,"f").maxOpacity,__classPrivateFieldGet(this,cn,"f").minOpacity=void 0!==__classPrivateFieldGet(this,cn,"f").minOpacity?__classPrivateFieldGet(this,cn,"f").minOpacity:__classPrivateFieldGet(this,dn,"f").minOpacity,__classPrivateFieldGet(this,cn,"f").blur=void 0!==__classPrivateFieldGet(this,cn,"f").blur?__classPrivateFieldGet(this,cn,"f").blur:__classPrivateFieldGet(this,dn,"f").blur,__classPrivateFieldGet(this,an,"m",_n).call(this,__classPrivateFieldGet(this,yn,"f")),i=__classPrivateFieldGet(this,cn,"f").radius?__classPrivateFieldGet(this,cn,"f").radius:__classPrivateFieldGet(this,pn,"f")>__classPrivateFieldGet(this,un,"f")?__classPrivateFieldGet(this,pn,"f")/__classPrivateFieldGet(this,dn,"f").radius:__classPrivateFieldGet(this,un,"f")/__classPrivateFieldGet(this,dn,"f").radius,__classPrivateFieldGet(this,cn,"f").radius=Kn(i),__classPrivateFieldSet(this,gn,__classPrivateFieldGet(this,cn,"f").radius*__classPrivateFieldGet(this,dn,"f").spacingFactor,"f"),__classPrivateFieldSet(this,vn,__classPrivateFieldGet(this,yn,"f").west,"f"),__classPrivateFieldSet(this,fn,__classPrivateFieldGet(this,yn,"f").south,"f"),__classPrivateFieldSet(this,pn,Kn(__classPrivateFieldGet(this,pn,"f")+2*__classPrivateFieldGet(this,gn,"f")),"f"),__classPrivateFieldSet(this,un,Kn(__classPrivateFieldGet(this,un,"f")+2*__classPrivateFieldGet(this,gn,"f")),"f"),__classPrivateFieldGet(this,yn,"f").west-=__classPrivateFieldGet(this,gn,"f")*__classPrivateFieldGet(this,mn,"f"),__classPrivateFieldGet(this,yn,"f").east+=__classPrivateFieldGet(this,gn,"f")*__classPrivateFieldGet(this,mn,"f"),__classPrivateFieldGet(this,yn,"f").south-=__classPrivateFieldGet(this,gn,"f")*__classPrivateFieldGet(this,mn,"f"),__classPrivateFieldGet(this,yn,"f").north+=__classPrivateFieldGet(this,gn,"f")*__classPrivateFieldGet(this,mn,"f"),__classPrivateFieldSet(this,Cn,__classPrivateFieldGet(this,an,"m",Rn).call(this,__classPrivateFieldGet(this,yn,"f")),"f"),this._rectangle=e.Rectangle.fromDegrees(__classPrivateFieldGet(this,Cn,"f").west,__classPrivateFieldGet(this,Cn,"f").south,__classPrivateFieldGet(this,Cn,"f").east,__classPrivateFieldGet(this,Cn,"f").north),this._container=__classPrivateFieldGet(this,an,"m",Tn).call(this,__classPrivateFieldGet(this,pn,"f"),__classPrivateFieldGet(this,un,"f"),this._id);const o={container:this._container,gradient:__classPrivateFieldGet(this,cn,"f").gradient,maxOpacity:__classPrivateFieldGet(this,cn,"f").maxOpacity,minOpacity:__classPrivateFieldGet(this,cn,"f").minOpacity,blur:__classPrivateFieldGet(this,cn,"f").blur};this._heatmap=new H337(o),this._container.children[0].setAttribute("id",this._id+"-hm")},Bn=function _Heatmap_updateLayer(){if(!this._heatmap)return;this._layer instanceof e.ImageryLayer&&__classPrivateFieldGet(this,ln,"f").scene.imageryLayers.remove(this._layer);const t=__classPrivateFieldGet(this,an,"m",Dn).call(this);t&&(__classPrivateFieldGet(this,ln,"f").scene.imageryLayers.add(t),this._layer=t)},On=function _Heatmap_setData({data:e}){return!(!this._heatmap||!e)&&(this._data=e,__classPrivateFieldGet(this,an,"m",Nn).call(this),__classPrivateFieldGet(this,an,"m",Hn).call(this),__classPrivateFieldGet(this,an,"m",Bn).call(this),!0)},kn=function _Heatmap_getRadius(){return Jn(__classPrivateFieldGet(this,xn,"f")/3e4*.5,40)},Nn=function _Heatmap_calcRadius(){const e=__classPrivateFieldGet(this,an,"m",kn).call(this);this._data&&this._heatmap&&this._data.data.forEach((t,i)=>{t.radius=this._rawData.data[i].radius||e})},Hn=function _Heatmap_refresh(){this._heatmap&&this._heatmap.setData(this._data)},Wn=function _Heatmap_moveEnd(){var t;if(!(null===(t=this._layer)||void 0===t?void 0:t.show))return;let i=!1,o=__classPrivateFieldGet(this,ln,"f").camera.positionCartographic.height;if(Yn(__classPrivateFieldGet(this,wn,"f")-o)+__classPrivateFieldGet(this,Sn,"f")>__classPrivateFieldGet(this,An,"f")?(i=!0,__classPrivateFieldSet(this,Sn,0,"f")):__classPrivateFieldSet(this,Sn,__classPrivateFieldGet(this,Sn,"f")+Yn(__classPrivateFieldGet(this,wn,"f")-o),"f"),__classPrivateFieldSet(this,wn,o,"f"),__classPrivateFieldGet(this,ln,"f").camera.positionCartographic.height<__classPrivateFieldGet(this,dn,"f").minScaleDenominator&&(o=__classPrivateFieldGet(this,dn,"f").minScaleDenominator),__classPrivateFieldGet(this,ln,"f").camera.positionCartographic.height>__classPrivateFieldGet(this,dn,"f").maxScaleDenominator&&(o=__classPrivateFieldGet(this,dn,"f").maxScaleDenominator),__classPrivateFieldSet(this,xn,o,"f"),i){const t=__classPrivateFieldGet(this,ln,"f").camera.computeViewRectangle(),i=[];for(let o=0;o<this._rawData.data.length;o++){const r=this._rawData.data[o];e.Rectangle.contains(t,e.Cartographic.fromDegrees(r.x,r.y))&&i.push(r)}if(i.length>0){const t=__classPrivateFieldGet(this,an,"m",Qn).call(this,i),o={min:this._rawData.min,max:this._rawData.max,data:i};this.setWGS84Data({data:o,rect:new e.Rectangle(e.Math.toDegrees(t.west),e.Math.toDegrees(t.south),e.Math.toDegrees(t.east),e.Math.toDegrees(t.north))})}}},Un=function _Heatmap_watchEvent(){__classPrivateFieldSet(this,Pn,__classPrivateFieldGet(this,ln,"f").camera.moveEnd.addEventListener(()=>{__classPrivateFieldGet(this,an,"m",Wn).call(this)}),"f")},Qn=function _Heatmap_getBBRect(t){if(!t.length)return new e.Rectangle(0,0,0,0);const i=[];let[o,r,n,s]=[0,0,0,0];if(1===t.length?[o,n,r,s]=[t[0].x,t[0].x,t[0].y,t[0].y]:(t.sort((e,t)=>e.x-t.x),[o,n]=[t[t.length-1].x,t[0].x],t.sort((e,t)=>e.y-t.y),[r,s]=[t[t.length-1].y,t[0].y]),(o-n<__classPrivateFieldGet(this,En,"f")||r-s<__classPrivateFieldGet(this,En,"f"))&&__classPrivateFieldGet(this,xn,"f")>1e5){const e=o-n<__classPrivateFieldGet(this,En,"f")?__classPrivateFieldGet(this,En,"f")-jn(o-n):2,t=r-s<__classPrivateFieldGet(this,En,"f")?__classPrivateFieldGet(this,En,"f")-jn(r-s):2;[o,n,r,s]=[o+e/2,n-e/2,r+t/2,s-t/2]}else[o,n,r,s]=[++o,--n,++r,--s];return i.push(e.Cartographic.fromDegrees(o,r),e.Cartographic.fromDegrees(n,s)),e.Rectangle.fromCartographicArray(i)},__decorate([generate()],exports.Heatmap.prototype,"isDestroyed",void 0),__decorate([generate()],exports.Heatmap.prototype,"id",void 0),__decorate([enumerable(!1)],exports.Heatmap.prototype,"_layer",void 0),__decorate([enumerable(!1)],exports.Heatmap.prototype,"_dom",void 0),__decorate([enumerable(!1)],exports.Heatmap.prototype,"_heatmap",void 0),__decorate([enumerable(!1)],exports.Heatmap.prototype,"_container",void 0),__decorate([generate()],exports.Heatmap.prototype,"data",void 0),__decorate([generate()],exports.Heatmap.prototype,"rawData",void 0),__decorate([enumerable(!1)],exports.Heatmap.prototype,"_rectangle",void 0),exports.Heatmap=__decorate([singleton()],exports.Heatmap);const{max:os}=Math;var rs,ns,ss,as,ls,cs,ds,hs,ps,us,ms,gs,vs,fs,Cs,ys,As,Es,xs,ws,Ps,Ss,Is;exports.Measure=class Measure{constructor(e){Vn.add(this),Zn.set(this,void 0),Xn.set(this,void 0),qn.set(this,void 0),$n.set(this,void 0),es.set(this,new Map),__classPrivateFieldSet(this,Zn,e,"f"),__classPrivateFieldSet(this,Xn,e.viewer,"f"),__classPrivateFieldSet(this,qn,e.viewer.camera,"f"),__classPrivateFieldSet(this,$n,e.viewer.scene,"f"),this._label=new LabelLayer(e),this._drawTool=new ProtoDraw(e),this._polygon=new PolygonLayer(e),this._polyline=new PolylineLayer(e)}_getSectionData(t,i){return __awaiter(this,void 0,void 0,function*(){let o,r,n;const s=t.map(e=>exports.Geographic.fromCartesian(e)),a=s.length,l=[];for(let t=0;t<i;t++)o=t/(i-1),r=e.Math.lerp(s[a-2].longitude,s[a-1].longitude,o),n=e.Math.lerp(s[a-2].latitude,s[a-1].latitude,o),l.push([r,n]);const c=l.map(t=>e.Cartographic.fromDegrees(t[0],t[1]));if(__classPrivateFieldGet(this,Xn,"f").terrainProvider){return(yield e.sampleTerrainMostDetailed(__classPrivateFieldGet(this,Xn,"f").terrainProvider,c)).map(e=>exports.Geographic.fromCartographic(e))}throw new e.DeveloperError("Lack of terrain data, or load terrain failed.")})}calcTriangle({id:t=exports.Utils.uuid(),color:i=e.Color.ORANGE,width:o=1,labelFillColor:r=e.Color.RED,labelOutlineColor:n=e.Color.RED,labelOutlineWidth:s=1,labelStyle:a=e.LabelStyle.FILL_AND_OUTLINE,module:l,labelText:c}){let d,h,p,u,m,g,v,f;__classPrivateFieldGet(this,Xn,"f").terrainProvider.availability||console.warn("Lack of terrain data, or load terrain failed. Triangle measuring makes no significance.");const C=new e.ScreenSpaceEventHandler(__classPrivateFieldGet(this,Xn,"f").canvas),computeThird=(e,t)=>{const i=exports.Geographic.fromCartesian(e),o=exports.Geographic.fromCartesian(t);let r;return i.height>o.height?(r=o.clone(),r.height=i.height):(r=i.clone(),r.height=o.height),r.toCartesian()},formatText=({spaceDistance:e,rhumbDistance:t,heightDifference:i})=>`空间距离: ${e.toFixed(2)}m\n水平距离: ${t.toFixed(2)}m\n高度差: ${i.toFixed(2)}m\n`;return State.start(),__classPrivateFieldGet(this,Zn,"f").container.style.cursor="crosshair",C.setInputAction(({endPosition:u})=>{const C=__classPrivateFieldGet(this,Vn,"m",ts).call(this,u);if(!C||!h)return;p=C,m=computeThird(h,p);const y=exports.Geographic.fromCartesian(h),A=exports.Geographic.fromCartesian(p);g=e.Cartesian3.distance(h,p),v=exports.Figure.calcRhumbDistance(y,A),f=y.height-A.height;const E={spaceDistance:g,rhumbDistance:v,heightDifference:f},x=exports.Figure.calcMidPoint(y,A);x.height=os(y.height,A.height);const w=x.toCartesian();this._label.has(t)?this._label.set(t,{position:w,text:c?c(E):formatText(E)}):this._label.add({id:t,module:l,position:w,text:c?c(E):formatText(E),fillColor:r,outlineColor:n,outlineWidth:s,style:a}),!d&&h&&(d=__classPrivateFieldGet(this,Xn,"f").entities.add({polyline:{positions:new e.CallbackProperty(()=>h.equals(m)?[h,p]:[h,p,m,h.clone()],!1),material:new e.PolylineDashMaterialProperty({color:i,gapColor:e.Color.TRANSPARENT}),width:o}}))},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise(r=>{C.setInputAction(({position:n})=>{const s=__classPrivateFieldGet(this,Vn,"m",ts).call(this,n);if(s&&(h&&!u&&(u=s),h||(h=s),h&&u)){m=computeThird(h,u),State.end(),C.destroy(),__classPrivateFieldGet(this,Zn,"f").container.style.cursor="default";const n=m.clone();n.z+=1,this._polygon.add({id:t,module:l,positions:[h,u,n],usePointHeight:!0,color:e.Color.TRANSPARENT,outline:{width:o,materialType:"PolylineDash",materialUniforms:{color:i,gapColor:e.Color.TRANSPARENT}}}),__classPrivateFieldGet(this,Xn,"f").entities.remove(d),r({id:t,startPosition:h,endPosition:u,spaceDistance:g,rhumbDistance:v,heightDifference:f})}},e.ScreenSpaceEventType.LEFT_CLICK)})}calcBearing(){return __awaiter(this,arguments,void 0,function*({id:t=exports.Utils.uuid(),split:i=!0,width:o=2,labelFillColor:r=e.Color.RED,labelOutlineColor:n=e.Color.RED,labelOutlineWidth:s=1,labelStyle:a=e.LabelStyle.FILL_AND_OUTLINE,materialType:l="PolylineDash",materialUniforms:c={color:e.Color.ORANGE},headLabelText:d="Reference",nodeLabelText:h,module:p}={}){let u;const m=[],g=new Set;__classPrivateFieldGet(this,es,"f").set(t,g);const onFinish=e=>{const i=`${e.length}_${t}`;this._label.remove(i),g.delete(i)},onEvery=(i,o)=>{0===o&&(u=i,this._label.add({id:t,text:"string"==typeof d?d:d(exports.Geographic.fromCartesian(u)),position:i,verticalOrigin:e.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,fillColor:r,outlineColor:n,outlineWidth:s,style:a})),m.push(i)},onMove=(o,l)=>{if(-1===l)return;const c=`${l+1}_${t}`;g.add(c);const d=i?exports.Geographic.fromCartesian(m[l]):exports.Geographic.fromCartesian(u),p=exports.Geographic.fromCartesian(o),v=exports.Figure.calcBearing(d,p);this._label.has(c)?this._label.set(c,{text:h?h(v):`${v.toFixed(2)}°`,position:o}):this._label.add({id:c,text:h?h(0):"0°",position:o,verticalOrigin:e.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,fillColor:r,outlineColor:n,outlineWidth:s,style:a})};try{return yield this._drawTool.draw(exports.DrawType.POLYLINE,{id:t,module:p,width:o,materialType:l,materialUniforms:c,ground:!1,keep:!0,onMove:onMove,onEvery:onEvery,onFinish:onFinish})}catch(e){throw this.remove(t),e}})}calcCoordinate(){return __awaiter(this,arguments,void 0,function*({id:t=exports.Utils.uuid(),color:i=e.Color.YELLOW,pointPixelSize:o=10,labelFillColor:r=e.Color.RED,labelOutlineColor:n=e.Color.RED,labelOutlineWidth:s=1,labelStyle:a=e.LabelStyle.FILL_AND_OUTLINE,module:l,labelText:c}={}){const formatText=({latitude:e,longitude:t,height:i=0})=>{const o=e.toFixed(6);return`经度: ${t.toFixed(6)}°\n纬度: ${o}°\n高度: ${i.toFixed(2)}m\n`},onFinish=i=>{const o=i[0],l=exports.Geographic.fromCartesian(o);this._label.add({id:t,text:c?c(l):formatText(l),position:i[0],verticalOrigin:e.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,fillColor:r,outlineColor:n,outlineWidth:s,style:a})};try{return yield this._drawTool.draw(exports.DrawType.POINT,{id:t,module:l,color:i,pixelSize:o,limit:1,keep:!0,onFinish:onFinish})}catch(e){throw this.remove(t),e}})}groundDistance(){return __awaiter(this,arguments,void 0,function*({id:t=exports.Utils.uuid(),split:i=!0,width:o=2,labelFillColor:r=e.Color.RED,labelOutlineColor:n=e.Color.RED,labelOutlineWidth:s=1,labelStyle:a=e.LabelStyle.FILL_AND_OUTLINE,materialType:l="PolylineDash",materialUniforms:c={color:e.Color.ORANGE},headLabelText:d,nodeLabelText:h,module:p}={}){let u,m=0;const g=[],v=new Set;__classPrivateFieldGet(this,es,"f").set(t,v);const formatText=e=>`${e.toFixed(2)}m`,formatHead=e=>{const t=null!=d?d:formatText;return"string"==typeof t?t:`Total: ${t(e)}`},onFinish=e=>{const i=`${e.length}_${t}`;this._label.remove(i),v.delete(i)},onEvery=(o,l)=>__awaiter(this,void 0,void 0,function*(){if(0===l)u=o,this._label.add({id:t,text:formatHead(m),position:o,verticalOrigin:e.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,fillColor:r,outlineColor:n,outlineWidth:s,style:a});else{const c=`${l}_${t}`;v.add(c);const d=i?g[l-1]:u,p=yield exports.Figure.calcGroundDistance(exports.Geographic.fromCartesian(d),exports.Geographic.fromCartesian(o),__classPrivateFieldGet(this,$n,"f"),__classPrivateFieldGet(this,Xn,"f").terrainProvider);this._label.add({id:c,text:h?h(p):formatText(p),position:o,verticalOrigin:e.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,fillColor:r,outlineColor:n,outlineWidth:s,style:a}),m+=(yield exports.Figure.calcGroundDistance(exports.Geographic.fromCartesian(g[l-1]),exports.Geographic.fromCartesian(o),__classPrivateFieldGet(this,$n,"f"),__classPrivateFieldGet(this,Xn,"f").terrainProvider))}g.push(o),this._label.set(t,{text:formatHead(m)})});try{return yield this._drawTool.draw(exports.DrawType.POLYLINE,{id:t,module:p,width:o,materialType:l,materialUniforms:c,ground:!0,keep:!0,onEvery:onEvery,onFinish:onFinish})}catch(e){throw this.remove(t),e}})}spaceDistance(){return __awaiter(this,arguments,void 0,function*({id:t=exports.Utils.uuid(),split:i=!0,width:o=2,labelFillColor:r=e.Color.RED,labelOutlineColor:n=e.Color.RED,labelOutlineWidth:s=1,labelStyle:a=e.LabelStyle.FILL_AND_OUTLINE,materialType:l="PolylineDash",materialUniforms:c={color:e.Color.ORANGE},headLabelText:d,nodeLabelText:h,module:p}={}){let u,m=0;const g=[],v=new Set;__classPrivateFieldGet(this,es,"f").set(t,v);const formatText=e=>`${e.toFixed(2)}m`,formatHead=e=>{const t=null!=d?d:formatText;return"string"==typeof t?t:`Total: ${t(e)}`},onFinish=i=>{const o=`${i.length}_${t}`;this._label.remove(o),v.delete(o),m=i.reduce((t,i,o,r)=>t+(0!==o?e.Cartesian3.distance(r[o-1],i):0),0),this._label.set(t,{text:formatHead(m)})},onEvery=(i,o)=>{0===o&&(u=i,this._label.add({id:t,text:formatHead(m),position:i,verticalOrigin:e.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,fillColor:r,outlineColor:n,outlineWidth:s,style:a})),g.push(i)},onMove=(o,l)=>{if(-1===l)return;const c=`${l+1}_${t}`;v.add(c);const d=i?g[l]:u,p=e.Cartesian3.distance(o,d);this._label.has(c)?this._label.set(c,{text:h?h(p):formatText(p),position:o}):this._label.add({id:c,text:h?h(p):formatText(p),position:o,verticalOrigin:e.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,fillColor:r,outlineColor:n,outlineWidth:s,style:a}),g.push(o),m=g.reduce((t,i,o,r)=>t+(0!==o?e.Cartesian3.distance(r[o-1],i):0),0),this._label.set(t,{text:formatHead(m)}),g.pop()};try{return yield this._drawTool.draw(exports.DrawType.POLYLINE,{id:t,module:p,width:o,materialType:l,materialUniforms:c,ground:!1,keep:!0,onMove:onMove,onEvery:onEvery,onFinish:onFinish})}catch(e){throw this.remove(t),e}})}heightDifference(){return __awaiter(this,arguments,void 0,function*({id:t=exports.Utils.uuid(),width:i=2,labelFillColor:o=e.Color.RED,labelOutlineColor:r=e.Color.RED,labelOutlineWidth:n=1,labelStyle:s=e.LabelStyle.FILL_AND_OUTLINE,materialType:a="PolylineDash",materialUniforms:l={color:e.Color.ORANGE},headLabelText:c="Reference",nodeLabelText:d,module:h}={}){let p;const u=new Set;__classPrivateFieldGet(this,es,"f").set(t,u);const onFinish=e=>{const i=`${e.length}_${t}`;this._label.remove(i),u.delete(i)},onEvery=(i,a)=>{0===a&&(p=i,this._label.add({id:t,text:"string"==typeof c?c:c(exports.Geographic.fromCartesian(p)),position:i,verticalOrigin:e.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,fillColor:o,outlineColor:r,outlineWidth:n,style:s}))},onMove=(i,a)=>{if(-1===a)return;const l=`${a+1}_${t}`;u.add(l);const c=exports.Geographic.fromCartesian(p).height,h=exports.Geographic.fromCartesian(i).height-c;this._label.has(l)?this._label.set(l,{text:d?d(h):`${h.toFixed(2)}m`,position:i}):this._label.add({id:l,text:d?d(0):"0m",position:i,verticalOrigin:e.VerticalOrigin.BOTTOM,disableDepthTestDistance:Number.POSITIVE_INFINITY,fillColor:o,outlineColor:r,outlineWidth:n,style:s})};try{return yield this._drawTool.draw(exports.DrawType.POLYLINE,{id:t,module:h,width:i,materialType:a,materialUniforms:l,ground:!1,keep:!0,onMove:onMove,onEvery:onEvery,onFinish:onFinish})}catch(e){throw this.remove(t),e}})}spaceArea(){return __awaiter(this,arguments,void 0,function*({id:t=exports.Utils.uuid(),color:i=e.Color.YELLOW.withAlpha(.25),outlineColor:o=e.Color.YELLOW,outlineWidth:r=1,labelText:n,module:s}={}){const a=[],formatText=e=>n?n(e):`Total Area: ${e.toFixed(2)}m²`,onMove=e=>{if(a.length<2)return;a.push(e);const i=a.map(e=>exports.Geographic.fromCartesian(e));i.push(i[0].clone());const o=exports.Figure.calcPolygonArea(i),r=exports.Figure.calcMassCenter(i,!0).toCartesian();this._label.has(t)?this._label.set(t,{text:formatText(o),position:r}):this._label.add({id:t,text:formatText(o),position:r,disableDepthTestDistance:Number.POSITIVE_INFINITY}),a.pop()},onEvery=e=>{if(a.push(e),a.length<3)return;const i=a.map(e=>exports.Geographic.fromCartesian(e));i.push(i[0].clone());const o=exports.Figure.calcPolygonArea(i),r=exports.Figure.calcMassCenter(i,!0).toCartesian();this._label.set(t,{text:formatText(o),position:r})},onFinish=()=>{if(a.length<3)return;const e=a.map(e=>exports.Geographic.fromCartesian(e));e.push(e[0].clone());const i=exports.Figure.calcPolygonArea(e),o=exports.Figure.calcMassCenter(e,!0).toCartesian();this._label.set(t,{text:formatText(i),position:o})};try{return yield this._drawTool.draw(exports.DrawType.POLYGON,{id:t,module:s,color:i,outlineColor:o,outlineWidth:r,keep:!0,ground:!0,onMove:onMove,onEvery:onEvery,onFinish:onFinish})}catch(e){throw this.remove(t),e}})}sectionAnalyze({id:t=exports.Utils.uuid(),splits:i=50,width:o=2,materialType:r="PolylineDash",materialUniforms:n={color:e.Color.ORANGE}}={}){const getMaterial=(t,i)=>{var o,r;switch(t){case"Color":return null!==(o=null==i?void 0:i.color)&&void 0!==o?o:e.Color.ORANGE;case"PolylineArrow":return new e.PolylineArrowMaterialProperty(null!==(r=null==i?void 0:i.color)&&void 0!==r?r:e.Color.ORANGE);case"PolylineDash":return new e.PolylineDashMaterialProperty(Object.assign({gapColor:e.Color.TRANSPARENT,dashLength:8},i));case"PolylineGlow":return new e.PolylineGlowMaterialProperty(Object.assign({},i));case"PolylineOutline":return new e.PolylineOutlineMaterialProperty(Object.assign({outlineColor:e.Color.WHITE,outlineWidth:1},i));default:throw new e.DeveloperError("A certain material type is required.")}};let s,a,l,c;const d=new e.ScreenSpaceEventHandler(__classPrivateFieldGet(this,Xn,"f").canvas);return State.start(),__classPrivateFieldGet(this,Zn,"f").container.style.cursor="crosshair",d.setInputAction(({endPosition:t})=>{const i=__classPrivateFieldGet(this,Vn,"m",ts).call(this,t);i&&a&&(l=i,!s&&a&&(s=__classPrivateFieldGet(this,Xn,"f").entities.add({polyline:{positions:new e.CallbackProperty(()=>[a,l],!1),width:o,material:getMaterial(r,n),clampToGround:!0}})))},e.ScreenSpaceEventType.MOUSE_MOVE),new Promise(l=>{d.setInputAction(e=>__awaiter(this,[e],void 0,function*({position:e}){var h;const p=__classPrivateFieldGet(this,Vn,"m",ts).call(this,e);if(p&&(a&&!c&&(c=p),a||(a=p),a&&c)){State.end(),__classPrivateFieldGet(this,Zn,"f").container.style.cursor="default",d.destroy(),this._polyline.add({id:t,width:o,materialType:r,materialUniforms:n,ground:!0,lines:[[a,c]]}),__classPrivateFieldGet(this,Xn,"f").entities.remove(s);const e=null!==(h=yield this._getSectionData([a,c],i))&&void 0!==h?h:[];l({id:t,positions:e})}}),e.ScreenSpaceEventType.LEFT_CLICK)})}remove(e){if(e){this._drawTool.remove(e),this._label.remove(e),this._polygon.remove(e),this._polyline.remove(e);const t=__classPrivateFieldGet(this,es,"f").get(e);t&&(t.forEach(e=>{this._label.remove(e)}),__classPrivateFieldGet(this,es,"f").delete(e))}else this._drawTool.remove(),this._label.remove(),this._polygon.remove(),this._polyline.remove(),__classPrivateFieldGet(this,es,"f").clear()}destroy(){this._isDestroyed||(this._isDestroyed=!0,this.remove(),this._label.destroy(),this._polygon.destroy(),this._polyline.destroy(),this._drawTool.destroy())}},Zn=new WeakMap,Xn=new WeakMap,qn=new WeakMap,$n=new WeakMap,es=new WeakMap,Vn=new WeakSet,ts=function _Measure_getPointOnEllipsoid(e){return exports.CameraTool.pickPointOnEllipsoid(e,__classPrivateFieldGet(this,$n,"f"),__classPrivateFieldGet(this,qn,"f"))},__decorate([generate(!1)],exports.Measure.prototype,"isDestroyed",void 0),__decorate([enumerable(!1)],exports.Measure.prototype,"_drawTool",void 0),__decorate([enumerable(!1)],exports.Measure.prototype,"_label",void 0),__decorate([enumerable(!1)],exports.Measure.prototype,"_polygon",void 0),__decorate([enumerable(!1)],exports.Measure.prototype,"_polyline",void 0),exports.Measure=__decorate([singleton()],exports.Measure),exports.ContextMenu=class ContextMenu{constructor(t){rs.add(this),this.animationClassName="show",ns.set(this,void 0),ss.set(this,void 0),as.set(this,new Map),ls.set(this,new Map),cs.set(this,void 0),__classPrivateFieldSet(this,ns,t,"f"),this._container=t.container,this._classList=new Set(["context-menu"]),this._hideKeys=new Set,this._cache=new Map,__classPrivateFieldSet(this,ss,new e.ScreenSpaceEventHandler(t.viewer.canvas),"f"),__classPrivateFieldGet(this,rs,"m",us).call(this),__classPrivateFieldGet(this,rs,"m",ds).call(this)}setDefaultMenu(e,t){this._cache.set("__default__",{menus:e,callback:t}),__classPrivateFieldGet(this,rs,"m",gs).call(this,"__default__",e)}add(e,t,i){const o=this._cache.has(e);this._cache.set(e,{menus:t,callback:i}),__classPrivateFieldGet(this,rs,"m",gs).call(this,e,t),o&&console.warn(`Menus of '${e}' are existent, 'add' option would replace the previous.`)}toggleMenuStatus({module:e,belong:t,key:i,id:o,status:r}){var n;const s=`${e}_${t}`,a=__classPrivateFieldGet(this,as,"f").get(s),l=o||(null===(n=__classPrivateFieldGet(this,cs,"f"))||void 0===n?void 0:n.id)||"none";if(a)if(void 0!==r)r?a.add(l):a.delete(l);else{const t=this._cache.get(e);if(!t)return;const check=e=>{let t=!1;for(const o of e)if(o.key===i?(a.has(l)?a.delete(l):a.add(l),t=!0):o.children&&(t=check(o.children)),t)break;return t};check(t.menus)}}hide(e){e.forEach(e=>this._hideKeys.add(e))}unhide(e){e.forEach(e=>this._hideKeys.delete(e))}destroy(){this._isDestroyed||(this._isDestroyed=!0,__classPrivateFieldGet(this,ss,"f").destroy(),this._cache.clear(),__classPrivateFieldGet(this,ls,"f").clear(),__classPrivateFieldGet(this,as,"f").clear(),this._hideKeys.clear(),__classPrivateFieldSet(this,cs,void 0,"f"))}},ns=new WeakMap,ss=new WeakMap,as=new WeakMap,ls=new WeakMap,cs=new WeakMap,rs=new WeakSet,ds=function _ContextMenu_disableBrowserDefault(){window.oncontextmenu=e=>{e.preventDefault()}},hs=function _ContextMenu_checkToggleRendered(e,t,i){var o,r;const n=`${e}_${t}`,s=__classPrivateFieldGet(this,as,"f").get(n);return!!s&&(s.has(null!==(r=null===(o=__classPrivateFieldGet(this,cs,"f"))||void 0===o?void 0:o.id)&&void 0!==r?r:"none")?i===__classPrivateFieldGet(this,ls,"f").get(n):i!==__classPrivateFieldGet(this,ls,"f").get(n))},ps=function _ContextMenu_renderContextMenu(e,t,i,o){const renderItems=(t,i)=>{const appendClasses=(e,t=[])=>{"string"==typeof t?e.classList.add(t):t.forEach(t=>{e.classList.add(t)})},o=document.createElement("ul");o.classList.add("context-menu-ul"),o.classList.add(...i);for(const r of t){if(r.key){if(this._hideKeys.has(r.key))continue;if(r.toggle&&r.toggle.belong&&!__classPrivateFieldGet(this,rs,"m",hs).call(this,e,r.toggle.belong,r.key))continue}const t=document.createElement("li");if(t.classList.add("li-item"),r.separator?t.classList.add("separator"):t.dataset.key=r.key,r.icon&&"string"==typeof r.icon){const e=document.createElement("img");e.src=r.icon,e.dataset.key=r.key,t.append(e),appendClasses(e,r.iconClass)}else if(r.icon&&"function"==typeof r.icon){const e=r.icon();e.dataset.key=r.key,t.append(e),appendClasses(e,r.iconClass)}const n=document.createElement("a");n.innerText=r.label,n.dataset.key=r.key,t.append(n),r.children&&r.children.length&&t.append(renderItems(r.children,i)),o.append(t)}return o},getMenuItemData=(e,t)=>{let i;for(const o of e){if(o.key===t){i=o;break}if(o.children&&(i=getMenuItemData(o.children,t),i))break}return i},getDepth=e=>{if(!e||0===e.length)return 0;return Math.max(...e.map(e=>getDepth(e.children)+1))},getCounts=e=>{if(!e||0===e.length)return 0;return Math.max(...e.map(e=>getCounts(e.children)),e.length)};for(const e of Array.from(this._container.children))e.classList.contains("context-menu")&&e.remove();const r=document.createElement("div");this._classList.forEach(e=>{r.classList.add(e)});const n=getDepth(o),s=getCounts(o),{classNameX:a,classNameY:l,transOrigin:c,translate:d}=((e,o)=>{const r=t.x/i.x,n=35.56*e*(t.y/i.y),s=112*o*r,{width:a,height:l}=this._container.getBoundingClientRect();let c="left",d="top",h=0,p=0,u="right",m="top";return t.x<=s?(c="left",h=0):a-t.x<=s&&(c="right",h=-100,u="left"),t.y<=n?(d="top",p=0):l-t.y<=n&&(d="bottom",p=-100,m="bottom"),{translate:`${h}% ${p}%`,transOrigin:`${d} ${c}`,classNameX:u,classNameY:m}})(s,n);r.style.top=`${i.y}px`,r.style.left=`${i.x}px`,r.style.position="absolute",r.style.transformOrigin=c,r.style.translate=d,r.append(renderItems(o,[a,l])),r.addEventListener("click",t=>{const i=t.target.getAttribute("data-key");if(i){const t=getMenuItemData(o,i);t&&t.key&&(__classPrivateFieldGet(this,rs,"m",ms).call(this,e,t),t.toggle&&this.toggleMenuStatus({module:e,belong:t.toggle.belong,key:t.key}))}this._container.removeChild(r)}),this._container.append(r),setTimeout(()=>{r.classList.add(this.animationClassName)})},us=function _ContextMenu_initContextMenu(){__classPrivateFieldGet(this,ss,"f").setInputAction(()=>{const e=document.querySelector(".context-menu");e&&this._container.removeChild(e)},e.ScreenSpaceEventType.LEFT_DOWN),__classPrivateFieldGet(this,ss,"f").setInputAction(({position:t})=>{var i,o,r;if(State.isOperate())return;let n="",s=[];const a=this._container.getBoundingClientRect(),l=a.width/this._container.clientWidth,c=a.height/this._container.clientHeight,d=new e.Cartesian2(t.x/l,t.y/c),h=__classPrivateFieldGet(this,ns,"f").viewer.scene.pick(d);if(__classPrivateFieldSet(this,cs,void 0,"f"),h){let t="";if("string"==typeof h.id?t=h.id:h.id instanceof e.Entity&&(t=h.id.id),t&&(__classPrivateFieldSet(this,cs,exports.Utils.decode(t),"f"),__classPrivateFieldGet(this,cs,"f")&&__classPrivateFieldGet(this,cs,"f").module)){const e=this._cache.get(__classPrivateFieldGet(this,cs,"f").module);e&&(s=e.menus)}}if(0===s.length){n="__default__";const e=this._cache.get(n);e&&(s=e.menus)}else __classPrivateFieldGet(this,cs,"f")&&__classPrivateFieldGet(this,cs,"f").module&&(n=__classPrivateFieldGet(this,cs,"f").module);s.length>0&&__classPrivateFieldGet(this,rs,"m",ps).call(this,n,t,d,s),this._cache.has(n)&&(null===(o=(i=this._cache.get(n)).callback)||void 0===o||o.call(i,{id:null===(r=__classPrivateFieldGet(this,cs,"f"))||void 0===r?void 0:r.id,module:n,type:exports.MenuEventType.RightClick}))},e.ScreenSpaceEventType.RIGHT_CLICK)},ms=function _ContextMenu_onMenuClick(e,t){var i,o;if(t.key)switch(t.key){case exports.DefaultContextMenuItem.Scene2D:case exports.DefaultContextMenuItem.Scene3D:__classPrivateFieldGet(this,ns,"f").morphTo(t.key);break;case exports.DefaultContextMenuItem.EnableDepth:__classPrivateFieldGet(this,ns,"f").setDepthTestAgainstTerrain(!0);break;case exports.DefaultContextMenuItem.DisableDepth:__classPrivateFieldGet(this,ns,"f").setDepthTestAgainstTerrain(!1);break;case exports.DefaultContextMenuItem.FullScreen:this._container.requestFullscreen();break;case exports.DefaultContextMenuItem.ExitFullScreen:document.exitFullscreen();break;case exports.DefaultContextMenuItem.Home:__classPrivateFieldGet(this,ns,"f").flyHome();break;default:__classPrivateFieldGet(this,cs,"f")&&__classPrivateFieldGet(this,cs,"f").module?null===(i=t.callback)||void 0===i||i.call(t,{id:__classPrivateFieldGet(this,cs,"f").id,module:__classPrivateFieldGet(this,cs,"f").module,key:t.key,type:exports.MenuEventType.ItemClick}):null===(o=t.callback)||void 0===o||o.call(t,{module:e,key:t.key,type:exports.MenuEventType.ItemClick})}},gs=function _ContextMenu_setToggle(e,t){t.forEach(t=>{t.key&&t.toggle&&t.toggle.belong&&t.toggle.default&&(__classPrivateFieldGet(this,ls,"f").set(`${e}_${t.toggle.belong}`,t.key),__classPrivateFieldGet(this,as,"f").set(`${e}_${t.toggle.belong}`,new Set)),t.children&&__classPrivateFieldGet(this,rs,"m",_ContextMenu_setToggle).call(this,e,t.children)})},__decorate([generate(!1)],exports.ContextMenu.prototype,"isDestroyed",void 0),__decorate([generate()],exports.ContextMenu.prototype,"classList",void 0),__decorate([generate()],exports.ContextMenu.prototype,"hideKeys",void 0),__decorate([generate()],exports.ContextMenu.prototype,"cache",void 0),__decorate([enumerable(!1)],exports.ContextMenu.prototype,"_container",void 0),__decorate([validate,__param(0,is(Array))],exports.ContextMenu.prototype,"setDefaultMenu",null),__decorate([validate,__param(0,except("__default__")),__param(1,is(Array))],exports.ContextMenu.prototype,"add",null),__decorate([validate,__param(0,is(Array))],exports.ContextMenu.prototype,"hide",null),__decorate([validate,__param(0,is(Array))],exports.ContextMenu.prototype,"unhide",null),exports.ContextMenu=__decorate([singleton()],exports.ContextMenu);const{abs:bs,cos:Rs,round:_s,sin:Ts,PI:Ds}=Math;class Radar{constructor(t){vs.add(this),fs.set(this,new Map),Cs.set(this,void 0),ys.set(this,void 0),As.set(this,new e.CustomDataSource("_radar_")),Es.set(this,__classPrivateFieldGet(this,As,"f").entities),__classPrivateFieldSet(this,Cs,t,"f"),t.viewer.dataSources.add(__classPrivateFieldGet(this,As,"f")),__classPrivateFieldSet(this,ys,t.scene,"f")}addScan({id:t=exports.Utils.uuid(),center:i,radius:o,duration:r=1500,color:n=e.Color.LAWNGREEN,border:s=0,width:a=3,data:l}){const{longitude:c,latitude:d,height:h}=exports.Geographic.fromCartesian(i),p=i,u=new e.Cartesian4(p.x,p.y,p.z,1),m=e.Cartesian3.fromDegrees(c,d,h?h+500:500),g=new e.Cartesian4(m.x,m.y,m.z,1),v=e.Cartesian3.fromDegrees(c+.001,d,h),f=new e.Cartesian4(v.x,v.y,v.z,1),C=__classPrivateFieldGet(this,Cs,"f").viewer.camera.viewMatrix,y=(new Date).getTime(),A=new e.Quaternion,E=new e.Matrix3,x=new e.Cartesian4,w=new e.Cartesian4,P=new e.Cartesian4,S=new e.Cartesian3,I=new e.Cartesian3,b=new e.PostProcessStage({name:t,fragmentShader:"\nuniform sampler2D colorTexture;\nuniform sampler2D depthTexture;\nin vec2 v_textureCoordinates;\nuniform vec4 u_scanCenterEC;\nuniform vec3 u_scanPlaneNormalEC;\nuniform vec3 u_scanLineNormalEC;\nout vec4 myOutputColor;\nuniform float u_radius;\nuniform float u_border;\nuniform float u_width;\nuniform vec4 u_scanColor;\n\nvec4 toEye(in vec2 uv, in float depth){\n vec2 xy = vec2((uv.x * 2.0 - 1.0),(uv.y * 2.0 - 1.0));\n vec4 posInCamera =czm_inverseProjection * vec4(xy, depth, 1.0);\n posInCamera =posInCamera / posInCamera.w;\n return posInCamera;\n}\n\nbool isPointOnLineRight(in vec3 ptOnLine, in vec3 lineNormal, in vec3 testPt){\n vec3 v01 = testPt - ptOnLine;\n normalize(v01);\n vec3 temp = cross(v01, lineNormal);\n float d = dot(temp, u_scanPlaneNormalEC);\n return d > 0.5;\n}\n\nvec3 pointProjectOnPlane(in vec3 planeNormal, in vec3 planeOrigin, in vec3 point){\n vec3 v01 = point -planeOrigin;\n float d = dot(planeNormal, v01) ;\n return (point - planeNormal * d);\n}\n\nfloat distancePointToLine(in vec3 ptOnLine, in vec3 lineNormal, in vec3 testPt){\n vec3 tempPt = pointProjectOnPlane(lineNormal, ptOnLine, testPt);\n return length(tempPt - ptOnLine);\n}\n\nfloat getDepth(in vec4 depth){\n float z_window = czm_unpackDepth(depth);\n z_window = czm_reverseLogDepth(z_window);\n float n_range = czm_depthRange.near;\n float f_range = czm_depthRange.far;\n return (2.0 * z_window - n_range - f_range) / (f_range - n_range);\n}\n\nvoid main(){\n myOutputColor = texture(colorTexture, v_textureCoordinates);\n float depth = getDepth( texture(depthTexture, v_textureCoordinates));\n vec4 viewPos = toEye(v_textureCoordinates, depth);\n vec3 prjOnPlane = pointProjectOnPlane(u_scanPlaneNormalEC.xyz, u_scanCenterEC.xyz, viewPos.xyz);\n float dis = length(prjOnPlane.xyz - u_scanCenterEC.xyz);\n float two_radius = u_radius * 2.0;\n if(dis < u_radius){\n float f0 = 1.0 -abs(u_radius - dis) / u_radius;\n f0 = pow(f0, 64.0);\n vec3 lineEndPt = vec3(u_scanCenterEC.xyz) + u_scanLineNormalEC * u_radius;\n float f = 0.0;\n if(isPointOnLineRight(u_scanCenterEC.xyz, u_scanLineNormalEC.xyz, prjOnPlane.xyz)){\n float dis1= length(prjOnPlane.xyz - lineEndPt);\n f = abs(two_radius -dis1) / two_radius;\n f = pow(f, float(u_width));\n }\n if(float(u_border) > 0.0){\n myOutputColor = mix(myOutputColor, u_scanColor, f + f0);\n } else {\n myOutputColor = mix(myOutputColor, u_scanColor, f);\n }\n }\n}",uniforms:{u_border:s,u_width:a,u_radius:o,u_scanColor:n,u_scanCenterEC:()=>e.Matrix4.multiplyByVector(C,u,x),u_scanPlaneNormalEC:()=>{const t=e.Matrix4.multiplyByVector(C,u,x),i=e.Matrix4.multiplyByVector(C,g,w);return S.x=i.x-t.x,S.y=i.y-t.y,S.z=i.z-t.z,e.Cartesian3.normalize(S,S),S},u_scanLineNormalEC:()=>{const t=e.Matrix4.multiplyByVector(C,u,x),i=e.Matrix4.multiplyByVector(C,g,w),o=e.Matrix4.multiplyByVector(C,f,P);S.x=i.x-t.x,S.y=i.y-t.y,S.z=i.z-t.z,e.Cartesian3.normalize(S,S),I.x=o.x-t.x,I.y=o.y-t.y,I.z=o.z-t.z;const n=((new Date).getTime()-y)%r/r;return e.Quaternion.fromAxisAngle(S,n*Ds*2,A),e.Matrix3.fromQuaternion(A,E),e.Matrix3.multiplyByVector(E,I,I),e.Cartesian3.normalize(I,I),I}}});__classPrivateFieldGet(this,ys,"f").postProcessStages.add(b),__classPrivateFieldGet(this,fs,"f").set(t,{effect:b,data:l})}addDiffuse({id:t=exports.Utils.uuid(),center:i,radius:o,duration:r=1500,color:n=e.Color.LAWNGREEN,border:s=4,data:a}){const{longitude:l,latitude:c,height:d}=exports.Geographic.fromCartesian(i),h=i,p=new e.Cartesian4(h.x,h.y,h.z,1),u=e.Cartesian3.fromDegrees(l,c,d?d+500:500),m=new e.Cartesian4(u.x,u.y,u.z,1),g=__classPrivateFieldGet(this,Cs,"f").viewer.camera.viewMatrix,v=(new Date).getTime(),f=new e.PostProcessStage({name:t,fragmentShader:"\nuniform sampler2D colorTexture;\nuniform sampler2D depthTexture;\nin vec2 v_textureCoordinates;\nuniform vec4 u_scanCenterEC;\nuniform vec3 u_scanPlaneNormalEC;\nuniform float u_radius;\nuniform float u_border;\nout vec4 myOutputColor;\nuniform vec4 u_scanColor;\n\nvec4 toEye(in vec2 uv, in float depth){\n vec2 xy = vec2((uv.x * 2.0 - 1.0),(uv.y * 2.0 - 1.0));\n vec4 posInCamera = czm_inverseProjection * vec4(xy, depth, 1.0);\n posInCamera =posInCamera / posInCamera.w;\n return posInCamera;\n}\n\nvec3 pointProjectOnPlane(in vec3 planeNormal, in vec3 planeOrigin, in vec3 point){\n vec3 v01 = point - planeOrigin;\n float d = dot(planeNormal, v01) ;\n return (point - planeNormal * d);\n}\n\nfloat getDepth(in vec4 depth){\n float z_window = czm_unpackDepth(depth);\n z_window = czm_reverseLogDepth(z_window);\n float n_range = czm_depthRange.near;\n float f_range = czm_depthRange.far;\n return (2.0 * z_window - n_range - f_range) / (f_range - n_range);\n}\n\nvoid main(){\n myOutputColor = texture(colorTexture, v_textureCoordinates);\n float depth = getDepth(texture(depthTexture, v_textureCoordinates));\n vec4 viewPos = toEye(v_textureCoordinates, depth);\n vec3 prjOnPlane = pointProjectOnPlane(u_scanPlaneNormalEC.xyz, u_scanCenterEC.xyz, viewPos.xyz);\n float dis = length(prjOnPlane.xyz - u_scanCenterEC.xyz);\n if(dis < u_radius){\n float f = 1.0 - abs(u_radius - dis) / u_radius;\n f = pow(f, float(u_border));\n myOutputColor = mix(myOutputColor, u_scanColor, f);\n }\n}",uniforms:{u_border:s,u_scanColor:n,u_radius:()=>((new Date).getTime()-v)%r*o/r,u_scanCenterEC:()=>e.Matrix4.multiplyByVector(g,p,new e.Cartesian4),u_scanPlaneNormalEC:()=>{const t=e.Matrix4.multiplyByVector(g,p,new e.Cartesian4),i=e.Matrix4.multiplyByVector(g,m,new e.Cartesian4),o=new e.Cartesian3;return o.x=i.x-t.x,o.y=i.y-t.y,o.z=i.z-t.z,e.Cartesian3.normalize(o,o),o}}});__classPrivateFieldGet(this,ys,"f").postProcessStages.add(f),__classPrivateFieldGet(this,fs,"f").set(t,{effect:f,data:a})}addFanShaped({id:t=exports.Utils.uuid(),center:i,radius:o,duration:r=1500,color:n=e.Color.LAWNGREEN.withAlpha(.3),shadeColor:s=e.Color.LAWNGREEN.withAlpha(.1),data:a}){const l=__classPrivateFieldGet(this,Es,"f").add({position:i,ellipsoid:{radii:new e.Cartesian3(o,o,o),material:s,outline:!0,outlineColor:new e.Color(1,1,0,1),outlineWidth:1}}),{longitude:c,latitude:d}=exports.Geographic.fromCartesian(i);let h=[c,d,0],p=0;__classPrivateFieldGet(this,Cs,"f").clock.onTick.addEventListener(()=>{p+=2*e.Math.PI*o/(r/1e3*60)/90,h=__classPrivateFieldGet(this,vs,"m",ws).call(this,c,d,o,p)});const u=__classPrivateFieldGet(this,Es,"f").add({wall:{positions:new e.CallbackProperty(()=>e.Cartesian3.fromDegreesArrayHeights(h),!1),material:n}});__classPrivateFieldGet(this,fs,"f").set(t,{ellipsoid:l,fan:u,data:a})}addConic({id:t=exports.Utils.uuid(),radius:i,center:o,path:r,color:n=e.Color.LAWNGREEN.withAlpha(.3),duration:s=100,split:a=30,data:l}){const c=exports.Geographic.fromCartesian(o),d=__classPrivateFieldGet(this,vs,"m",Ps).call(this,c,i,a),h=__classPrivateFieldGet(this,vs,"m",Ss).call(this,d,c,n);for(let e=0;e<h.length;e++){const t=e===h.length-1?0:e+1;__classPrivateFieldGet(this,vs,"m",Is).call(this,{path:r,duration:s,cover:h[e],center:c,vertex:[d[e],d[t]]})}__classPrivateFieldGet(this,fs,"f").set(t,{cone:h,data:l})}getData(e){var t;return null===(t=__classPrivateFieldGet(this,fs,"f").get(e))||void 0===t?void 0:t.data}remove(e){if(e){const t=__classPrivateFieldGet(this,fs,"f").get(e);t&&(t.effect&&__classPrivateFieldGet(this,ys,"f").postProcessStages.remove(t.effect),t.ellipsoid&&__classPrivateFieldGet(this,Es,"f").remove(t.ellipsoid),t.fan&&__classPrivateFieldGet(this,Es,"f").remove(t.fan),t.cone&&t.cone.forEach(e=>__classPrivateFieldGet(this,Es,"f").remove(e)),__classPrivateFieldGet(this,fs,"f").delete(e))}else __classPrivateFieldGet(this,ys,"f").postProcessStages.removeAll(),__classPrivateFieldGet(this,Es,"f").removeAll(),__classPrivateFieldGet(this,fs,"f").clear()}destroy(){this._isDestroyed||(this._isDestroyed=!0,__classPrivateFieldGet(this,Es,"f").removeAll(),__classPrivateFieldGet(this,Cs,"f").viewer.dataSources.remove(__classPrivateFieldGet(this,As,"f")),__classPrivateFieldGet(this,fs,"f").clear())}}fs=new WeakMap,Cs=new WeakMap,ys=new WeakMap,As=new WeakMap,Es=new WeakMap,vs=new WeakSet,xs=function _Radar_calcSector(e,t,i,o,r){const n=[e,t,0];for(let s=0;s<=90;s++){const a=r*Ts(s*Ds/180),l=Rs(s*Ds/180),c=(i-e)*l+e,d=(o-t)*l+t;n.push(c,d,a)}return n},ws=function _Radar_calcPane(t,i,o,r){const n=e.Transforms.eastNorthUpToFixedFrame(e.Cartesian3.fromDegrees(t,i)),s=o*Rs(r*Ds/180),a=o*Ts(r*Ds/180),l=e.Cartesian3.fromElements(s,a,0),c=e.Matrix4.multiplyByPoint(n,l,new e.Cartesian3),{longitude:d,latitude:h}=exports.Geographic.fromCartesian(c);return __classPrivateFieldGet(this,vs,"m",xs).call(this,t,i,d,h,o)},Ps=function _Radar_splitCircle(e,t,i){const o=[],{longitude:r,latitude:n}=e,s=Ds/180*_s(360/i);for(let e=0;e<i;e++){const i=r+t*Ts(s*e),a=n+t*Rs(s*e);o.push({longitude:i,latitude:a})}return o},Ss=function _Radar_createCone(t,i,o){const{longitude:r,latitude:n,height:s}=i,a=[];for(let i=0;i<t.length;i++){const l=i===t.length-1?0:i+1,c=new e.PolygonHierarchy(e.Cartesian3.fromDegreesArrayHeights([r,n,s,t[i].longitude,t[i].latitude,0,t[l].longitude,t[l].latitude,0])),d=__classPrivateFieldGet(this,Es,"f").add({polygon:{hierarchy:c,outline:!1,perPositionHeight:!0,material:o}});a.push(d)}return a},Is=function _Radar_setCover({center:t,path:i,duration:o,cover:r,vertex:n}){let s,a,l,c,d,h,p=n[0].longitude,u=n[0].latitude,m=n[1].longitude,g=n[1].latitude,v=0,f=0;const assignment=e=>{const[t,r]=exports.Geographic.fromCartesian(i[e]).toArray(),[n,d]=exports.Geographic.fromCartesian(i[e+1===i.length?0:e+1]).toArray();s=n-t,a=d-r,l=1*s/o,c=1*a/o,f=0};assignment(v),r.polygon.hierarchy=new e.CallbackProperty(()=>{bs(d)>=bs(s)&&bs(h)>=bs(a)&&(v++,v===i.length&&(v=0),n[0].longitude=p+s,n[0].latitude=u+a,n[1].longitude=m+s,n[1].latitude=g+a,p=n[0].longitude,u=n[0].latitude,m=n[1].longitude,g=n[1].latitude,assignment(v)),d=f*l,h=f*c,f++;const{longitude:o,latitude:r,height:C}=t;return new e.PolygonHierarchy(e.Cartesian3.fromDegreesArrayHeights([o,r,C,p+d,u+h,0,m+d,g+h,0]))},!1)},__decorate([generate(!1)],Radar.prototype,"isDestroyed",void 0),__decorate([validate,__param(0,is(e.Cartesian3,"center"))],Radar.prototype,"addScan",null),__decorate([validate,__param(0,is(e.Cartesian3,"center"))],Radar.prototype,"addDiffuse",null),__decorate([validate,__param(0,is(e.Cartesian3,"center"))],Radar.prototype,"addFanShaped",null),__decorate([validate,__param(0,is(e.Cartesian3,"center")),__param(0,is(Array,"path"))],Radar.prototype,"addConic",null);const{sin:Fs,cos:Ms,tan:Ls,atan:Gs,max:Bs,random:Os,floor:ks}=Math,Ns=new e.Matrix3,Hs=new e.Cartesian3,Ws={position:0,normal:1};class PhasedSensorPrimitive{constructor(t){var i,o,r,n,s,a,l,c,d,h,p,u,m,g,v,f,C,y,A,E,x,w,P,S,I,b,R,_,T,D;null==t&&(t=e.Frozen.EMPTY_OBJECT),this.id=null==t?void 0:t.id,this.show=null===(i=null==t?void 0:t.show)||void 0===i||i,this.slice=null!==(o=null==t?void 0:t.slice)&&void 0!==o?o:32,this.modelMatrix=e.Matrix4.clone(null!==(r=null==t?void 0:t.modelMatrix)&&void 0!==r?r:e.Matrix4.IDENTITY,new e.Matrix4),this._modelMatrix=new e.Matrix4,this._computedModelMatrix=new e.Matrix4,this._computedScanPlaneModelMatrix=new e.Matrix4,this.radius=null!==(n=null==t?void 0:t.radius)&&void 0!==n?n:Number.POSITIVE_INFINITY,this._radius=0,this.xHalfAngle=null!==(s=null==t?void 0:t.xHalfAngle)&&void 0!==s?s:0,this._xHalfAngle=0,this.yHalfAngle=null!==(a=null==t?void 0:t.yHalfAngle)&&void 0!==a?a:0,this._yHalfAngle=0,this.lineColor=null!==(l=null==t?void 0:t.lineColor)&&void 0!==l?l:e.Color.WHITE,this.showSectorLines=null===(c=null==t?void 0:t.showSectorLines)||void 0===c||c,this.showSectorSegmentLines=null===(d=null==t?void 0:t.showSectorSegmentLines)||void 0===d||d,this.showLateralSurfaces=null===(h=null==t?void 0:t.showLateralSurfaces)||void 0===h||h,this.material=null!==(p=null==t?void 0:t.material)&&void 0!==p?p:e.Material.fromType(e.Material.ColorType),this._material=void 0,this._translucent=void 0,this.lateralSurfaceMaterial=null!==(u=null==t?void 0:t.lateralSurfaceMaterial)&&void 0!==u?u:e.Material.fromType(e.Material.ColorType),this._lateralSurfaceMaterial=void 0,this._lateralSurfaceTranslucent=void 0,this.showDomeSurfaces=null===(m=null==t?void 0:t.showDomeSurfaces)||void 0===m||m,this.domeSurfaceMaterial=null!==(g=null==t?void 0:t.domeSurfaceMaterial)&&void 0!==g?g:e.Material.fromType(e.Material.ColorType),this._domeSurfaceMaterial=void 0,this.showDomeLines=null===(v=null==t?void 0:t.showDomeLines)||void 0===v||v,this.showIntersection=null===(f=null==t?void 0:t.showIntersection)||void 0===f||f,this.intersectionColor=null!==(C=null==t?void 0:t.intersectionColor)&&void 0!==C?C:e.Color.WHITE,this.intersectionWidth=null!==(y=null==t?void 0:t.intersectionWidth)&&void 0!==y?y:5,this.showThroughEllipsoid=null!==(A=null==t?void 0:t.showThroughEllipsoid)&&void 0!==A&&A,this._showThroughEllipsoid=void 0,this.showWaves=null!==(E=null==t?void 0:t.showWaves)&&void 0!==E&&E,this.showScanPlane=null===(x=null==t?void 0:t.showScanPlane)||void 0===x||x,this.scanPlaneColor=null!==(w=null==t?void 0:t.scanPlaneColor)&&void 0!==w?w:e.Color.WHITE,this.scanPlaneMode=null!==(P=null==t?void 0:t.scanPlaneMode)&&void 0!==P?P:exports.ScanMode.HORIZONTAL,this.scanPlaneRate=null!==(S=null==t?void 0:t.scanPlaneRate)&&void 0!==S?S:10;let F=null==t?void 0:t.distanceDisplayCondition;if(F){if(F.far<=F.near)throw new e.DeveloperError("distanceDisplayCondition.far must be greater than distanceDisplayCondition.near.");F=e.DistanceDisplayCondition.clone(F)}this._distanceDisplayCondition=F,this.showGradient=null!==(I=null==t?void 0:t.showGradient)&&void 0!==I&&I,this.gradientColors=null!==(b=null==t?void 0:t.gradientColors)&&void 0!==b?b:[e.Color.fromRandom(),e.Color.fromRandom(),e.Color.fromRandom(),e.Color.fromRandom(),e.Color.fromRandom()],this.gradientSteps=null!==(R=null==t?void 0:t.gradientSteps)&&void 0!==R?R:[Os(),Os(),Os()],this.showGradientScan=null!==(_=null==t?void 0:t.showGradientScan)&&void 0!==_&&_,this.gradientColorsScan=null!==(T=null==t?void 0:t.gradientColorsScan)&&void 0!==T?T:[e.Color.fromRandom(),e.Color.fromRandom(),e.Color.fromRandom(),e.Color.fromRandom(),e.Color.fromRandom()],this.gradientStepsScan=null!==(D=null==t?void 0:t.gradientStepsScan)&&void 0!==D?D:[Os(),Os(),Os()],this._scenePlaneXHalfAngle=0,this._scenePlaneYHalfAngle=0,this._time=e.JulianDate.now(),this._boundingSphere=new e.BoundingSphere,this._boundingSphereWC=new e.BoundingSphere,this._sectorFrontCommand=new e.DrawCommand({owner:this,boundingVolume:this._boundingSphereWC}),this._sectorBackCommand=new e.DrawCommand({owner:this,boundingVolume:this._boundingSphereWC}),this._sectorVA=void 0,this._sectorLineCommand=new e.DrawCommand({owner:this,primitiveType:e.PrimitiveType.LINES,boundingVolume:this._boundingSphereWC}),this._sectorLineVA=void 0,this._sectorSegmentLineCommand=new e.DrawCommand({owner:this,primitiveType:e.PrimitiveType.LINES,boundingVolume:this._boundingSphereWC}),this._sectorSegmentLineVA=void 0,this._domeFrontCommand=new e.DrawCommand({owner:this,boundingVolume:this._boundingSphereWC}),this._domeBackCommand=new e.DrawCommand({owner:this,boundingVolume:this._boundingSphereWC}),this._domeVA=void 0,this._domeLineCommand=new e.DrawCommand({owner:this,primitiveType:e.PrimitiveType.LINES,boundingVolume:this._boundingSphereWC}),this._domeLineVA=void 0,this._scanPlaneFrontCommand=new e.DrawCommand({owner:this,boundingVolume:this._boundingSphereWC}),this._scanPlaneBackCommand=new e.DrawCommand({owner:this,boundingVolume:this._boundingSphereWC}),this._scanRadialCommand=void 0,this._colorCommands=[],this._frontFaceRS=void 0,this._backFaceRS=void 0,this._sp=void 0,this._uniforms={u_type:()=>0,u_xHalfAngle:()=>this.xHalfAngle,u_yHalfAngle:()=>this.yHalfAngle,u_radius:()=>this.radius,u_showThroughEllipsoid:()=>this.showThroughEllipsoid,u_showIntersection:()=>this.showIntersection,u_intersectionColor:()=>this.intersectionColor,u_intersectionWidth:()=>this.intersectionWidth,u_normalDirection:()=>1,u_lineColor:()=>this.lineColor,u_showWaves:()=>this.showWaves,u_showGradient:()=>this.showGradient,u_colors:()=>this.gradientColors,u_steps:()=>this.gradientSteps},this._scanUniforms={u_xHalfAngle:()=>this._scenePlaneXHalfAngle,u_yHalfAngle:()=>this._scenePlaneYHalfAngle,u_radius:()=>this.radius,u_color:()=>this.scanPlaneColor,u_showThroughEllipsoid:()=>this.showThroughEllipsoid,u_showIntersection:()=>this.showIntersection,u_intersectionColor:()=>this.intersectionColor,u_intersectionWidth:()=>this.intersectionWidth,u_normalDirection:()=>1,u_lineColor:()=>this.lineColor,u_showGradient:()=>this.showGradientScan,u_colors:()=>this.gradientColorsScan,u_steps:()=>this.gradientStepsScan}}update(t){if(!this.show||t.mode!==e.SceneMode.SCENE3D)return;let i=!1,o=!1,r=!1;const n=this.xHalfAngle||0,s=this.yHalfAngle||0;if(n<0||s<0)throw new e.DeveloperError("halfAngle must be greater than or equal to zero.");if(0===n||0===s)return;this._xHalfAngle===n&&this._yHalfAngle===s||(this._xHalfAngle=n,this._yHalfAngle=s,i=!0);const a=this.radius;if(a<0)throw new e.DeveloperError("this.radius must be greater than or equal to zero.");let l=!1;this._radius!==a&&(l=!0,this._radius=a,this._boundingSphere=new e.BoundingSphere(e.Cartesian3.ZERO,this.radius));(!e.Matrix4.equals(this.modelMatrix,this._modelMatrix)||l)&&(e.Matrix4.clone(this.modelMatrix,this._modelMatrix),e.Matrix4.multiplyByUniformScale(this.modelMatrix,this.radius,this._computedModelMatrix),e.BoundingSphere.transform(this._boundingSphere,this._computedModelMatrix,this._boundingSphereWC));const c=this.showThroughEllipsoid;this._showThroughEllipsoid!==this.showThroughEllipsoid&&(this._showThroughEllipsoid=c,o=!0);const d=this.material;this._material!==d&&(this._material=d,o=!0,r=!0);const h=d.isTranslucent();if(this._translucent!==h&&(this._translucent=h,o=!0),this.showScanPlane){const i=t.time,o=e.JulianDate.secondsDifference(i,this._time);o<0&&(this._time=e.JulianDate.clone(i,this._time));const r=Bs(o%this.scanPlaneRate/this.scanPlaneRate,0),a=ks(o/this.scanPlaneRate)%2||-1;let l;if(this.scanPlaneMode===exports.ScanMode.HORIZONTAL){l=2*s*r-s;const t=Ms(l),i=Ls(n),o=Gs(t*i);this._scenePlaneXHalfAngle=o,this._scenePlaneYHalfAngle=l,90===e.Math.toDegrees(this._xHalfAngle)&&90===e.Math.toDegrees(this._yHalfAngle)?e.Matrix3.fromRotationZ(this._scenePlaneYHalfAngle,Ns):e.Matrix3.fromRotationX(this._scenePlaneYHalfAngle*a,Ns)}else{l=2*n*r-n;const t=Ls(s),i=Ms(l),o=Gs(i*t);this._scenePlaneXHalfAngle=l,this._scenePlaneYHalfAngle=o,90===e.Math.toDegrees(this._xHalfAngle)&&90===e.Math.toDegrees(this._yHalfAngle)?e.Matrix3.fromRotationZ(this._scenePlaneXHalfAngle,Ns):e.Matrix3.fromRotationY(this._scenePlaneXHalfAngle*a,Ns)}e.Matrix4.multiplyByMatrix3(this.modelMatrix,Ns,this._computedScanPlaneModelMatrix),e.Matrix4.multiplyByUniformScale(this._computedScanPlaneModelMatrix,this.radius,this._computedScanPlaneModelMatrix)}i&&createVertexArray(this,t),o&&createRenderState(this,c,h),r&&createShaderProgram(this,t,d),(o||r)&&createCommands(this,h);const p=t.commandList,u=t.passes,m=this._colorCommands;if(u.render)for(let e=0,t=m.length;e<t;e++){const t=m[e];p.push(t)}}isDestroyed(){return!1}destroy(){return this._sp=this._sp&&this._sp.destroy(),this._pickSP=this._pickSP&&this._pickSP.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),e.destroyObject(this)}}const computeUnitPosition=(t,i,o)=>{const r=t.slice,n=Ms(o),s=Ls(o),a=Ms(i),l=Ls(i),c=Gs(a*s),d=Gs(n*l),h=[];for(let t=0;t<r;t++){const i=2*d*t/(r-1)-d;h.push(new e.Cartesian3(Fs(i),0,Ms(i)))}const p=[];for(let t=0;t<r;t++){const i=2*c*t/(r-1)-c;p.push(new e.Cartesian3(0,Fs(i),Ms(i)))}return{zox:h,zoy:p}},createScanPlaneVertexArray=(t,i)=>{const o=i.length-1,r=new Float32Array(9*o);let n=0;for(let e=0;e<o;e++)r[n++]=0,r[n++]=0,r[n++]=0,r[n++]=i[e].x,r[n++]=i[e].y,r[n++]=i[e].z,r[n++]=i[e+1].x,r[n++]=i[e+1].y,r[n++]=i[e+1].z;const s=e.Buffer.createVertexBuffer({context:t,typedArray:r,usage:e.BufferUsage.STATIC_DRAW}),a=3*Float32Array.BYTES_PER_ELEMENT,l=[{index:Ws.position,vertexBuffer:s,componentsPerAttribute:3,componentDatatype:e.ComponentDatatype.FLOAT,offsetInBytes:0,strideInBytes:a}];return new e.VertexArray({context:t,attributes:l})},createVertexArray=(t,i)=>{const o=i.context,r=((t,i)=>{const o=t.xHalfAngle,r=t.yHalfAngle,n=i.zoy,s=i.zox,a=[],l=e.Matrix3.fromRotationX(r,Ns);a.push(s.map(t=>e.Matrix3.multiplyByVector(l,t,new e.Cartesian3)));const c=e.Matrix3.fromRotationY(o,Ns);a.push(n.map(t=>e.Matrix3.multiplyByVector(c,t,new e.Cartesian3)));const d=e.Matrix3.fromRotationX(-r,Ns);a.push(s.map(t=>e.Matrix3.multiplyByVector(d,t,new e.Cartesian3)).reverse());const h=e.Matrix3.fromRotationY(-o,Ns);return a.push(n.map(t=>e.Matrix3.multiplyByVector(h,t,new e.Cartesian3)).reverse()),a})(t,computeUnitPosition(t,t.xHalfAngle,t.yHalfAngle));if(t.showLateralSurfaces&&(t._sectorVA=((t,i)=>{let o=Array.prototype.concat.apply([],i).length-i.length;const r=new Float32Array(18*o);let n=0;for(let t=0,s=i.length;t<s;t++){const s=i[t],a=e.Cartesian3.normalize(e.Cartesian3.cross(s[0],s[s.length-1],Hs),Hs);o=s.length-1;for(let e=0;e<o;e++)r[n++]=0,r[n++]=0,r[n++]=0,r[n++]=-a.x,r[n++]=-a.y,r[n++]=-a.z,r[n++]=s[e].x,r[n++]=s[e].y,r[n++]=s[e].z,r[n++]=-a.x,r[n++]=-a.y,r[n++]=-a.z,r[n++]=s[e+1].x,r[n++]=s[e+1].y,r[n++]=s[e+1].z,r[n++]=-a.x,r[n++]=-a.y,r[n++]=-a.z}const s=e.Buffer.createVertexBuffer({context:t,typedArray:r,usage:e.BufferUsage.STATIC_DRAW}),a=6*Float32Array.BYTES_PER_ELEMENT,l=[{index:Ws.position,vertexBuffer:s,componentsPerAttribute:3,componentDatatype:e.ComponentDatatype.FLOAT,offsetInBytes:0,strideInBytes:a},{index:Ws.normal,vertexBuffer:s,componentsPerAttribute:3,componentDatatype:e.ComponentDatatype.FLOAT,offsetInBytes:3*Float32Array.BYTES_PER_ELEMENT,strideInBytes:a}];return new e.VertexArray({context:t,attributes:l})})(o,r)),t.showSectorLines&&(t._sectorLineVA=((t,i)=>{const o=i.length,r=new Float32Array(9*o);let n=0;for(let e=0,t=i.length;e<t;e++){const t=i[e];r[n++]=0,r[n++]=0,r[n++]=0,r[n++]=t[0].x,r[n++]=t[0].y,r[n++]=t[0].z}const s=e.Buffer.createVertexBuffer({context:t,typedArray:r,usage:e.BufferUsage.STATIC_DRAW}),a=3*Float32Array.BYTES_PER_ELEMENT,l=[{index:Ws.position,vertexBuffer:s,componentsPerAttribute:3,componentDatatype:e.ComponentDatatype.FLOAT,offsetInBytes:0,strideInBytes:a}];return new e.VertexArray({context:t,attributes:l})})(o,r)),t.showSectorSegmentLines&&(t._sectorSegmentLineVA=((t,i)=>{let o=Array.prototype.concat.apply([],i).length-i.length;const r=new Float32Array(9*o);let n=0;for(let e=0,t=i.length;e<t;e++){const t=i[e];o=t.length-1;for(let e=0;e<o;e++)r[n++]=t[e].x,r[n++]=t[e].y,r[n++]=t[e].z,r[n++]=t[e+1].x,r[n++]=t[e+1].y,r[n++]=t[e+1].z}const s=e.Buffer.createVertexBuffer({context:t,typedArray:r,usage:e.BufferUsage.STATIC_DRAW}),a=3*Float32Array.BYTES_PER_ELEMENT,l=[{index:Ws.position,vertexBuffer:s,componentsPerAttribute:3,componentDatatype:e.ComponentDatatype.FLOAT,offsetInBytes:0,strideInBytes:a}];return new e.VertexArray({context:t,attributes:l})})(o,r)),t.showDomeSurfaces&&(t._domeVA=(t=>{const i=e.EllipsoidGeometry.createGeometry(new e.EllipsoidGeometry({vertexFormat:e.VertexFormat.POSITION_ONLY,stackPartitions:32,slicePartitions:32}));return e.VertexArray.fromGeometry({context:t,geometry:i,attributeLocations:Ws,bufferUsage:e.BufferUsage.STATIC_DRAW,interleave:!1})})(o)),t.showDomeLines&&(t._domeLineVA=(t=>{const i=e.EllipsoidOutlineGeometry.createGeometry(new e.EllipsoidOutlineGeometry({stackPartitions:32,slicePartitions:32}));return e.VertexArray.fromGeometry({context:t,geometry:i,attributeLocations:Ws,bufferUsage:e.BufferUsage.STATIC_DRAW,interleave:!1})})(o)),t.showScanPlane)if(t.scanPlaneMode===exports.ScanMode.HORIZONTAL){const i=computeUnitPosition(t,e.Math.PI_OVER_TWO,0);t._scanPlaneVA=createScanPlaneVertexArray(o,i.zox)}else{const i=computeUnitPosition(t,0,e.Math.PI_OVER_TWO);t._scanPlaneVA=createScanPlaneVertexArray(o,i.zoy)}},createShaderProgram=(t,i,o)=>{((t,i,o)=>{const r=i.context,n=Nt,s=new e.ShaderSource({sources:[Ot,o.shaderSource,kt]});t._sp=e.ShaderProgram.replaceCache({context:r,shaderProgram:t._sp,vertexShaderSource:n,fragmentShaderSource:s,attributeLocations:Ws});const a=new e.ShaderSource({sources:[Ot,o.shaderSource,kt],pickColorQualifier:"uniform"});t._pickSP=e.ShaderProgram.replaceCache({context:r,shaderProgram:t._pickSP,vertexShaderSource:n,fragmentShaderSource:a,attributeLocations:Ws})})(t,i,o),t.showScanPlane&&((t,i,o)=>{const r=i.context,n=Nt,s=new e.ShaderSource({sources:[Ot,o.shaderSource,'\nuniform bool u_showIntersection;\nuniform bool u_showThroughEllipsoid;\nuniform bool u_showGradient;\n\nuniform float u_radius;\nuniform float u_xHalfAngle;\nuniform float u_yHalfAngle;\nuniform float u_normalDirection;\nuniform vec4 u_color;\n\nin vec3 v_position;\nin vec3 v_positionWC;\nin vec3 v_positionEC;\nin vec3 v_normalEC;\n\nvec4 getColor(float sensorRadius, vec3 pointEC) {\n czm_materialInput materialInput;\n\n vec3 pointMC = (czm_inverseModelView * vec4(pointEC, 1.0)).xyz;\n materialInput.st = sensor2dTextureCoordinates(sensorRadius, pointMC);\n materialInput.str = pointMC / sensorRadius;\n\n vec3 positionToEyeEC = -v_positionEC;\n materialInput.positionToEyeEC = positionToEyeEC;\n\n vec3 normalEC = normalize(v_normalEC);\n materialInput.normalEC = u_normalDirection * normalEC;\n\n czm_material material = czm_getMaterial(materialInput);\n\n material.diffuse = u_color.rgb;\n material.alpha = u_color.a;\n\n return mix(czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC), vec4(material.diffuse, material.alpha), 0.4);\n}\n\nbool isOnBoundary(float value, float epsilon) {\n float width = getIntersectionWidth();\n float tolerance = width * epsilon;\n\n float delta = max(abs(dFdx(value)), abs(dFdy(value)));\n float pixels = width * delta;\n float temp = abs(value);\n // There are a couple things going on here.\n // First we test the value at the current fragment to see if it is within the tolerance.\n // We also want to check if the value of an adjacent pixel is within the tolerance,\n // but we don\'t want to admit points that are obviously not on the surface.\n // For example, if we are looking for "value" to be close to 0, but value is 1 and the adjacent value is 2,\n // then the delta would be 1 and "temp - delta" would be "1 - 1" which is zero even though neither of\n // the points is close to zero.\n return temp < tolerance && temp < pixels || (delta < 10.0 * tolerance && temp - delta < tolerance && temp < pixels);\n}\n\nvec4 shade(bool isOnBoundary) {\n if(u_showIntersection && isOnBoundary) {\n return getIntersectionColor();\n }\n return getColor(u_radius, v_positionEC);\n}\n\nfloat ellipsoidSurfaceFunction(vec3 point) {\n vec3 scaled = czm_ellipsoidInverseRadii * point;\n return dot(scaled, scaled) - 1.0;\n}\n\nvoid main() {\n vec3 sensorVertexWC = czm_model[3].xyz; // (0.0, 0.0, 0.0) in model coordinates\n vec3 sensorVertexEC = czm_modelView[3].xyz; // (0.0, 0.0, 0.0) in model coordinates\n\n //vec3 pixDir = normalize(v_position);\n float positionX = v_position.x;\n float positionY = v_position.y;\n float positionZ = v_position.z;\n\n vec3 zDir = vec3(0.0, 0.0, 1.0);\n vec3 lineX = vec3(positionX, 0, positionZ);\n vec3 lineY = vec3(0, positionY, positionZ);\n float resX = dot(normalize(lineX), zDir);\n if(resX < cos(u_xHalfAngle) - 0.0001) {\n discard;\n }\n float resY = dot(normalize(lineY), zDir);\n if(resY < cos(u_yHalfAngle) - 0.0001) {\n discard;\n }\n\n float ellipsoidValue = ellipsoidSurfaceFunction(v_positionWC);\n\n // Occluded by the ellipsoid?\n if(!u_showThroughEllipsoid) {\n // Discard if in the ellipsoid\n // PERFORMANCE_IDEA: A coarse check for ellipsoid intersection could be done on the CPU first.\n if(ellipsoidValue < 0.0) {\n discard;\n }\n\n // Discard if in the sensor\'s shadow\n if(inSensorShadow(sensorVertexWC, v_positionWC)) {\n discard;\n }\n }\n\n // Notes: Each surface functions should have an associated tolerance based on the floating point error.\n bool isOnEllipsoid = isOnBoundary(ellipsoidValue, czm_epsilon3);\n out_FragColor = shade(isOnEllipsoid);\n\n if(u_showGradient) {\n float radii = sqrt(positionX * positionX + positionY * positionY + positionZ * positionZ);\n out_FragColor = getGradientColor(radii);\n }\n}']});t._scanPlaneSP=e.ShaderProgram.replaceCache({context:r,shaderProgram:t._scanPlaneSP,vertexShaderSource:n,fragmentShaderSource:s,attributeLocations:Ws})})(t,i,o)},createRenderState=(t,i,o)=>{o?(t._frontFaceRS=e.RenderState.fromCache({depthTest:{enabled:!i},depthMask:!1,blending:e.BlendingState.ALPHA_BLEND,cull:{enabled:!0,face:e.CullFace.BACK}}),t._backFaceRS=e.RenderState.fromCache({depthTest:{enabled:!i},depthMask:!1,blending:e.BlendingState.ALPHA_BLEND,cull:{enabled:!0,face:e.CullFace.FRONT}}),t._pickRS=e.RenderState.fromCache({depthTest:{enabled:!i},depthMask:!1,blending:e.BlendingState.ALPHA_BLEND})):(t._frontFaceRS=e.RenderState.fromCache({depthTest:{enabled:!i},depthMask:!0}),t._pickRS=e.RenderState.fromCache({depthTest:{enabled:!0},depthMask:!0}))},createCommand=(t,i,o,r,n,s,a,l,c,d,h,p)=>{var u,m;d&&o&&(o.vertexArray=a,o.renderState=n,o.shaderProgram=s,o.uniformMap=e.combine(l,null===(u=t._material)||void 0===u?void 0:u._uniforms),o.uniformMap.u_normalDirection=()=>-1,o.pass=h,o.modelMatrix=c,t._colorCommands.push(o)),i.vertexArray=a,i.renderState=r,i.shaderProgram=s,i.uniformMap=e.combine(l,null===(m=t._material)||void 0===m?void 0:m._uniforms),p&&(i.uniformMap.u_type=()=>1),i.pass=h,i.modelMatrix=c,t._colorCommands.push(i)},createCommands=(t,i)=>{t._colorCommands.length=0;const o=i?e.Pass.TRANSLUCENT:e.Pass.OPAQUE;t.showLateralSurfaces&&createCommand(t,t._sectorFrontCommand,t._sectorBackCommand,t._frontFaceRS,t._backFaceRS,t._sp,t._sectorVA,t._uniforms,t._computedModelMatrix,i,o),t.showSectorLines&&createCommand(t,t._sectorLineCommand,void 0,t._frontFaceRS,t._backFaceRS,t._sp,t._sectorLineVA,t._uniforms,t._computedModelMatrix,i,o,!0),t.showSectorSegmentLines&&createCommand(t,t._sectorSegmentLineCommand,void 0,t._frontFaceRS,t._backFaceRS,t._sp,t._sectorSegmentLineVA,t._uniforms,t._computedModelMatrix,i,o,!0),t.showDomeSurfaces&&createCommand(t,t._domeFrontCommand,t._domeBackCommand,t._frontFaceRS,t._backFaceRS,t._sp,t._domeVA,t._uniforms,t._computedModelMatrix,i,o),t.showDomeLines&&createCommand(t,t._domeLineCommand,void 0,t._frontFaceRS,t._backFaceRS,t._sp,t._domeLineVA,t._uniforms,t._computedModelMatrix,i,o,!0),t.showScanPlane&&createCommand(t,t._scanPlaneFrontCommand,t._scanPlaneBackCommand,t._frontFaceRS,t._backFaceRS,t._scanPlaneSP,t._scanPlaneVA,t._scanUniforms,t._computedScanPlaneModelMatrix,i,o)};var Us,Qs,zs,Ys,js,Js,Ks,Vs,Zs,Xs,qs,$s,ea,ta,ia,oa,ra,na,sa,aa,la,ca,da,ha,pa,ua,ma;class Sensor{constructor(t){Us.set(this,new Map),Qs.set(this,void 0),__classPrivateFieldSet(this,Qs,t.scene,"f"),this._collection=__classPrivateFieldGet(this,Qs,"f").primitives.add(new e.PrimitiveCollection)}_save(e,t){this._collection.add(t.primitive),__classPrivateFieldGet(this,Us,"f").set(e,t)}addPhased({id:t=exports.Utils.uuid(),data:i,module:o,position:r,radius:n,hpr:s=new e.HeadingPitchRoll(0,0,0),xHalfAngle:a=e.Math.toRadians(30),yHalfAngle:l=e.Math.toRadians(30),color:c=e.Color.LAWNGREEN.withAlpha(.05),lineColor:d=e.Color.LAWNGREEN.withAlpha(.1),scanPlane:h=!0,scanPlaneColor:p=e.Color.LAWNGREEN.withAlpha(.3),scanPlaneRate:u=1,scanMode:m=exports.ScanMode.HORIZONTAL,gradientScan:g=!0,gradientScanColors:v=[e.Color.WHITESMOKE.withAlpha(.3),e.Color.LIGHTYELLOW.withAlpha(.3),e.Color.YELLOW.withAlpha(.3),e.Color.ORANGE.withAlpha(.3),e.Color.RED.withAlpha(0)],gradientScanSteps:f=[.2,.45,.65],intersection:C=!0,intersectionColor:y=e.Color.LAWNGREEN.withAlpha(.5),intersectionWidth:A=1,radarWave:E=!0}){const x=e.Transforms.headingPitchRollToFixedFrame(r,s),w=new PhasedSensorPrimitive({id:exports.Utils.encode(t,o),modelMatrix:x,radius:n,xHalfAngle:a,yHalfAngle:l,lineColor:d,intersectionColor:y,intersectionWidth:A,scanPlaneColor:p,scanPlaneRate:u,showWaves:E,showScanPlane:h,scanPlaneMode:m,showIntersection:C,showGradientScan:g,gradientStepsScan:f,gradientColorsScan:v,material:e.Material.fromType("Color",{color:c})});this._save(t,{primitive:w,data:{position:r,hpr:s,data:i}})}addRadar({id:t=exports.Utils.uuid(),data:i,module:o,position:r,radius:n,height:s,slices:a=120,speed:l=50,thin:c=.25,hpr:d=new e.HeadingPitchRoll(0,0,0),color:h=e.Color.LAWNGREEN.withAlpha(.3),mode:p=exports.ConicMode.MATH}){let u,m;if(p===exports.ConicMode.MATH)u=n,m=s;else{const e=exports.Figure.calcConic(s,n);u=e.radius,m=e.height}const g=e.Matrix4.multiplyByTranslation(e.Transforms.headingPitchRollToFixedFrame(r,d),new e.Cartesian3(0,0,m/2),new e.Matrix4),v=new e.GeometryInstance({id:exports.Utils.encode(t,o),geometry:new e.CylinderGeometry({slices:a,length:m,topRadius:u,bottomRadius:0,vertexFormat:e.MaterialAppearance.MaterialSupport.TEXTURED.vertexFormat})}),f=new e.Primitive({modelMatrix:g,geometryInstances:v,appearance:new e.MaterialAppearance({closed:!0,faceForward:!0,material:new e.Material({translucent:!0,fabric:{type:"Shader",uniforms:{color:h,speed:l,thin:c,offset:0},source:"\nuniform vec4 color; \nuniform float speed; \nuniform float offset; \nuniform float thin;\n\nczm_material czm_getMaterial(czm_materialInput materialInput){\n czm_material material = czm_getDefaultMaterial(materialInput);\n float sp = 1.0/speed;\n vec2 st = materialInput.st;\n float dis = distance(st, vec2(0.5));\n float m = mod(dis + offset, sp);\n float a = step(sp*(1.0-thin), m);\n\n material.diffuse = color.rgb;\n material.alpha = a * color.a;\n return material;\n}"}})})}),callback=()=>{let e=f.appearance.material.uniforms.offset;e-=.001,e<=0&&(e=1),f.appearance.material.uniforms.offset=e};this._save(t,{primitive:f,data:{position:r,hpr:d,data:i,callback:callback}}),__classPrivateFieldGet(this,Qs,"f").preUpdate.addEventListener(callback)}getEntity(e){var t;return null===(t=__classPrivateFieldGet(this,Us,"f").get(e))||void 0===t?void 0:t.primitive}getData(e){var t;return null===(t=__classPrivateFieldGet(this,Us,"f").get(e))||void 0===t?void 0:t.data}remove(e){if(e){const t=__classPrivateFieldGet(this,Us,"f").get(e);t&&(this._collection.remove(t.primitive),t.data.callback&&__classPrivateFieldGet(this,Qs,"f").preUpdate.removeEventListener(t.data.callback),__classPrivateFieldGet(this,Us,"f").delete(e))}else this._collection.removeAll(),__classPrivateFieldGet(this,Us,"f").forEach(e=>{const t=e.data.callback;t&&__classPrivateFieldGet(this,Qs,"f").preUpdate.removeEventListener(t)}),__classPrivateFieldGet(this,Us,"f").clear()}destroy(){this._isDestroyed||(this._isDestroyed=!0,this._collection.removeAll(),__classPrivateFieldGet(this,Us,"f").forEach(e=>{const t=e.data.callback;t&&__classPrivateFieldGet(this,Qs,"f").preUpdate.removeEventListener(t)}),__classPrivateFieldGet(this,Qs,"f").primitives.remove(this._collection),__classPrivateFieldGet(this,Us,"f").clear())}}Us=new WeakMap,Qs=new WeakMap,__decorate([generate(!1)],Sensor.prototype,"isDestroyed",void 0),__decorate([enumerable(!1)],Sensor.prototype,"_collection",void 0),__decorate([validate,__param(0,is(e.Cartesian3,"position"))],Sensor.prototype,"addPhased",null),__decorate([validate,__param(0,is(e.Cartesian3,"position"))],Sensor.prototype,"addRadar",null),exports.Weather=class Weather{constructor(e){zs.add(this),Ys.set(this,void 0),e.clock.shouldAnimate=!0,this._scene=e.scene,this._particleLayer=new ParticleLayer(e)}get fadeInDistance(){return this._scene.globe.lightingFadeInDistance}set fadeInDistance(e){this._scene.globe.lightingFadeInDistance=e}get fadeOutDistance(){return this._scene.globe.lightingFadeOutDistance}set fadeOutDistance(e){this._scene.globe.lightingFadeOutDistance=e}useNaturalLight(e){this._scene.globe.enableLighting=e}enableAtmosphere(e){this._scene.globe.showGroundAtmosphere=e}add(e){switch(e.type){case"fog":__classPrivateFieldGet(this,zs,"m",Ks).call(this,e);break;case"rain":__classPrivateFieldGet(this,zs,"m",js).call(this,e);break;case"snow":__classPrivateFieldGet(this,zs,"m",Js).call(this,e)}}useDark(){if(!__classPrivateFieldGet(this,Ys,"f"))return __classPrivateFieldSet(this,Ys,new e.PostProcessStage({name:"dark",fragmentShader:"\nuniform sampler2D colorTexture;\nin vec2 v_textureCoordinates;\nuniform float scale;\nuniform vec3 offset;\n\nvoid main() {\n vec4 color = texture(colorTexture, v_textureCoordinates);\n out_FragColor = vec4(color.r*0.2,color.g * 0.4,color.b*0.6, 1.0);\n}",uniforms:{scale:1,offset:()=>new e.Cartesian3(.1,.2,.3)}}),"f"),this._scene.postProcessStages.add(__classPrivateFieldGet(this,Ys,"f")),this.useLight}useLight(){__classPrivateFieldGet(this,Ys,"f")&&(this._scene.postProcessStages.remove(__classPrivateFieldGet(this,Ys,"f")),__classPrivateFieldSet(this,Ys,void 0,"f"))}getData(e){return this._particleLayer.getData(e)}remove(e){e?this._particleLayer.remove(e):this._particleLayer.remove()}destroy(){this._isDestroyed||(this._isDestroyed=!0,this.useLight(),this.remove(),this._particleLayer.destroy())}},Ys=new WeakMap,zs=new WeakSet,js=function _Weather_addRain({id:t=exports.Utils.uuid(),position:i,effectRadius:o=1e5,particleSize:r=6,data:n}){const s=new e.Cartesian2(.5*r,4*r),a=new e.Cartesian3;this._particleLayer.add({id:t,position:i,data:n,modelMatrix:e.Matrix4.fromTranslation(i),imageSize:s,minimumSpeed:-2,maximumSpeed:0,startScale:.5,endScale:1,startColor:e.Color.AZURE.withAlpha(0),endColor:e.Color.AZURE.withAlpha(.95),image:Rt,lifetime:Number.MAX_VALUE,emissionRate:5e3,emitter:new e.SphereEmitter(o),updateCallback:t=>{e.Cartesian3.normalize(t.position,a),e.Cartesian3.multiplyByScalar(a,-1200,a),e.Cartesian3.add(t.position,a,t.position);const i=e.Cartesian3.distance(this._scene.camera.position,t.position);t.endColor.alpha=i>o?0:1/(i/o+.1)}})},Js=function _Weather_addSnow({id:t=exports.Utils.uuid(),position:i,effectRadius:o=1e5,particleSize:r=10,data:n}){const s=new e.Cartesian2(r,r),a=new e.Cartesian2(2*r,2*r);this._particleLayer.add({id:t,position:i,data:n,modelMatrix:e.Matrix4.fromTranslation(i),minimumImageSize:s,maximumImageSize:a,minimumSpeed:-1,maximumSpeed:0,startScale:.5,endScale:1,startColor:e.Color.WHITE.withAlpha(0),endColor:e.Color.WHITE.withAlpha(1),image:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAgNJREFUWEftVltuwjAQzOYWTn7CSQonAU5SOAncpPQkzU/iW2TbibzRYsWOY1CRqiIhkQfe8czsrKl48YdeXL/4B/AQA9baBhIaY9pcKR8C0HXdhYiaqqp2vwYAu5Yd933/gcIAkMvGagZc0YaZr0S0BQBmvhHRqSiK21o2kgBYa7fDMLzVdX3GTodh2LuCE/PMfMJz3LDWHpw3rkvSJAFwWm+rqtrIggDCzJCgIaKdMeYmz/q+/wIrdV0fswEI1UR0dDu+A4CFtQd0IQFQluXZgYRPJvD63SADXde9K5rHNvMXiQFwRdCmLRGdjTGzckQlcHoDCDRtYTzRWRhg5lZT7QMP7VxYCAJwGl9+nA2ngwF8x9+QBZrDG1gIAGBUZsY1di1+wL0rpAiFVUwChMy4gHY3M+8BBK53xYABoHA90a265RAzZJSBEGq0mQBxVAZ11sE11xG5ADTdwkDQaLFWXCvBVFgkwCxQSXjHhBjSyTibCVEGVOKlmHAKJmdYbHw0pDPt7MRc04bI/Clu54LIj+mlDsAaMQZgtLHNxGi5QeTnR1ISPjGKL35YJQHQLy0Mo0KC6anDSAPQ4zUyjqfEg/vLsvzUEzLUiknj2Jt04whWBxL5PSbhUvb7QFYDePmRzGcjZrClw0i0DVP+nHsQXd0FKWBy31ntgdxCT+uCPwfgG1ZvujCT10x1AAAAAElFTkSuQmCC",lifetime:Number.MAX_VALUE,emissionRate:2e3,emitter:new e.SphereEmitter(o),updateCallback:t=>{const i=new e.Cartesian3;e.Cartesian3.normalize(t.position,i),e.Cartesian3.multiplyByScalar(i,e.Math.randomBetween(-20,0),i),e.Cartesian3.add(t.velocity,i,t.velocity);const r=e.Cartesian3.distance(this._scene.camera.position,t.position);t.endColor.alpha=r>o?0:1/(r/o+.1)}})},Ks=function _Weather_addFog({id:t=exports.Utils.uuid(),position:i,effectRadius:o=1e5,particleSize:r=80,data:n}){const s=new e.Cartesian2(r,r),a=new e.Cartesian2(2*r,2*r);this._particleLayer.add({id:t,position:i,data:n,modelMatrix:e.Matrix4.fromTranslation(i),minimumImageSize:s,maximumImageSize:a,minimumSpeed:-1,maximumSpeed:0,startScale:.5,endScale:1,startColor:e.Color.LIGHTGRAY.withAlpha(0),endColor:e.Color.LIGHTGRAY.withAlpha(1e-6),particleLife:2,image:Rt,lifetime:Number.MAX_VALUE,emissionRate:5e3,emitter:new e.SphereEmitter(o),updateCallback:t=>{const i=new e.Cartesian3;e.Cartesian3.normalize(t.position,i),e.Cartesian3.multiplyByScalar(i,e.Math.randomBetween(-5,5),i),e.Cartesian3.add(t.velocity,i,t.velocity);const r=e.Cartesian3.distance(this._scene.camera.position,t.position);t.endColor.alpha=r>o?0:1/(r/o+.1)}})},__decorate([generate(!1)],exports.Weather.prototype,"isDestroyed",void 0),__decorate([enumerable(!1)],exports.Weather.prototype,"_scene",void 0),__decorate([enumerable(!1)],exports.Weather.prototype,"_particleLayer",void 0),__decorate([enumerable(!0)],exports.Weather.prototype,"fadeInDistance",null),__decorate([enumerable(!0)],exports.Weather.prototype,"fadeOutDistance",null),__decorate([validate,__param(0,is(e.Cartesian3,"position"))],exports.Weather.prototype,"add",null),exports.Weather=__decorate([singleton()],exports.Weather);class CustomPrimitive{constructor(t){var i;t.commandType&&(this.commandType=t.commandType),t.geometry&&(this.geometry=t.geometry),t.attributeLocations&&(this.attributeLocations=t.attributeLocations),t.primitiveType&&(this.primitiveType=t.primitiveType),t.uniformMap&&(this.uniformMap=t.uniformMap),t.vertexShaderSource&&(this.vertexShaderSource=t.vertexShaderSource),t.fragmentShaderSource&&(this.fragmentShaderSource=t.fragmentShaderSource),t.framebuffer&&(this.framebuffer=t.framebuffer),t.preExecute&&(this.preExecute=t.preExecute),this.rawRenderState=t.rawRenderState,this.outputTexture=t.outputTexture,this.autoClear=null!==(i=t.autoClear)&&void 0!==i&&i,this.show=!0,this.commandToExecute=void 0,this.clearCommand=void 0,this.autoClear&&(this.clearCommand=new e.ClearCommand({color:new e.Color(0,0,0,0),depth:1,framebuffer:this.framebuffer,pass:e.Pass.OPAQUE}))}createCommand(t){switch(this.commandType){case"Draw":{const i=e.VertexArray.fromGeometry({context:t,geometry:this.geometry,attributeLocations:this.attributeLocations,bufferUsage:e.BufferUsage.STATIC_DRAW}),o=e.ShaderProgram.fromCache({context:t,attributeLocations:this.attributeLocations,vertexShaderSource:this.vertexShaderSource,fragmentShaderSource:this.fragmentShaderSource}),r=e.RenderState.fromCache(this.rawRenderState);return new e.DrawCommand({owner:this,vertexArray:i,primitiveType:this.primitiveType,uniformMap:this.uniformMap,modelMatrix:e.Matrix4.IDENTITY,shaderProgram:o,framebuffer:this.framebuffer,renderState:r,pass:e.Pass.OPAQUE})}case"Compute":return new e.ComputeCommand({owner:this,fragmentShaderSource:this.fragmentShaderSource,uniformMap:this.uniformMap,outputTexture:this.outputTexture,persists:!0})}}setGeometry(t,i){this.geometry=i;const o=e.VertexArray.fromGeometry({context:t,geometry:this.geometry,attributeLocations:this.attributeLocations,bufferUsage:e.BufferUsage.STATIC_DRAW});this.commandToExecute.vertexArray=o}update(t){this.show&&(e.defined(this.commandToExecute)||(this.commandToExecute=this.createCommand(t.context)),e.defined(this.preExecute)&&this.preExecute&&this.preExecute(),e.defined(this.clearCommand)&&t.commandList.push(this.clearCommand),t.commandList.push(this.commandToExecute))}isDestroyed(){return!1}destroy(){return e.defined(this.commandToExecute)&&(this.commandToExecute.shaderProgram=this.commandToExecute.shaderProgram&&this.commandToExecute.shaderProgram.destroy()),e.destroyObject(this)}}class PrivateUtils{static createTexture(t,i){if(e.defined(i)){const e={arrayBufferView:void 0};e.arrayBufferView=i,t.source=e}return new e.Texture(t)}static randomizeParticles(t,i,o,r){const n=new Float32Array(4*t);for(let s=0;s<t;s++)n[4*s]=e.Math.randomBetween(i.lonRange.x,i.lonRange.y),n[4*s+1]=e.Math.randomBetween(i.latRange.x,i.latRange.y),n[4*s+2]=e.Math.randomBetween(o,r),n[4*s+3]=0;return n}static createFramebuffer(t,i,o){return new e.Framebuffer({context:t,colorTextures:[i],depthTexture:o})}static createRawRenderState(t){const i={viewport:t.viewport,depthTest:t.depthTest,depthMask:t.depthMask,blending:t.blending};return e.Appearance.getDefaultRenderState(!0,!1,i)}static getFullscreenQuad(){const t=new e.GeometryAttributes;t.position=new e.GeometryAttribute({componentDatatype:e.ComponentDatatype.FLOAT,componentsPerAttribute:3,values:new Float32Array([-1,-1,0,1,-1,0,1,1,0,-1,1,0])}),t.st=new e.GeometryAttribute({componentDatatype:e.ComponentDatatype.FLOAT,componentsPerAttribute:2,values:new Float32Array([0,0,1,0,1,1,0,1])});return new e.Geometry({attributes:t,indices:new Uint32Array([3,2,0,0,2,1])})}}class ParticlesComputing{constructor(e,t,i,o){this.data=t,this.createWindTextures(e,t),this.createParticlesTextures(e,i,o),this.createComputingPrimitives(t,i,o)}createWindTextures(t,i){const o={context:t,width:i.dimensions.lon,height:i.dimensions.lat*i.dimensions.lev,pixelFormat:e.PixelFormat.RED,pixelDatatype:e.PixelDatatype.FLOAT,flipY:!1,sampler:new e.Sampler({minificationFilter:e.TextureMinificationFilter.NEAREST,magnificationFilter:e.TextureMagnificationFilter.NEAREST})},r=i.U.array,n=i.V.array;this.windTextures={U:PrivateUtils.createTexture(o,r),V:PrivateUtils.createTexture(o,n)}}createParticlesTextures(t,i,o){const r={context:t,width:i.particlesTextureSize,height:i.particlesTextureSize,pixelFormat:e.PixelFormat.RGBA,pixelDatatype:e.PixelDatatype.FLOAT,flipY:!1,sampler:new e.Sampler({minificationFilter:e.TextureMinificationFilter.NEAREST,magnificationFilter:e.TextureMagnificationFilter.NEAREST})},n=PrivateUtils.randomizeParticles(i.maxParticles,o,this.data.lev.min,this.data.lev.max);if(i.maxParticles){const e=new Float32Array(4*i.maxParticles).fill(0);this.particlesTextures={previousParticlesPosition:PrivateUtils.createTexture(r,n),currentParticlesPosition:PrivateUtils.createTexture(r,n),nextParticlesPosition:PrivateUtils.createTexture(r,n),postProcessingPosition:PrivateUtils.createTexture(r,n),particlesSpeed:PrivateUtils.createTexture(r,e)}}}destroyParticlesTextures(){this.particlesTextures&&Object.keys(this.particlesTextures).forEach(e=>{var t;null===(t=this.particlesTextures)||void 0===t||t[e].destroy()})}createComputingPrimitives(t,i,o){var r,n,s;const a=new e.Cartesian3(t.dimensions.lon,t.dimensions.lat,t.dimensions.lev),l=new e.Cartesian3(t.lon.min,t.lat.min,t.lev.min),c=new e.Cartesian3(t.lon.max,t.lat.max,t.lev.max),d=new e.Cartesian3((c.x-l.x)/(a.x-1),(c.y-l.y)/(a.y-1),a.z>1?(c.z-l.z)/(a.z-1):1),h=new e.Cartesian2(t.U.min,t.U.max),p=new e.Cartesian2(t.V.min,t.V.max);this.primitives={calculateSpeed:new CustomPrimitive({commandType:"Compute",uniformMap:{U:()=>{var e;return null===(e=this.windTextures)||void 0===e?void 0:e.U},V:()=>{var e;return null===(e=this.windTextures)||void 0===e?void 0:e.V},currentParticlesPosition:()=>{var e;return null===(e=this.particlesTextures)||void 0===e?void 0:e.currentParticlesPosition},dimension:()=>a,minimum:()=>l,maximum:()=>c,interval:()=>d,uSpeedRange:()=>h,vSpeedRange:()=>p,pixelSize:()=>o.pixelSize,speedFactor:()=>i.speedFactor},fragmentShaderSource:new e.ShaderSource({sources:["\n// the size of UV textures: width = lon, height = lat*lev\nuniform sampler2D U; // eastward wind \nuniform sampler2D V; // northward wind\nuniform sampler2D currentParticlesPosition; // (lon, lat, lev)\n\nuniform vec3 dimension; // (lon, lat, lev)\nuniform vec3 minimum; // minimum of each dimension\nuniform vec3 maximum; // maximum of each dimension\nuniform vec3 interval; // interval of each dimension\n\n// used to calculate the wind norm\nuniform vec2 uSpeedRange; // (min, max);\nuniform vec2 vSpeedRange;\nuniform float pixelSize;\nuniform float speedFactor;\n\nin vec2 v_textureCoordinates;\n\nvec2 mapPositionToNormalizedIndex2D(vec3 lonLatLev) {\n // ensure the range of longitude and latitude\n lonLatLev.x = mod(lonLatLev.x, 360.0);\n lonLatLev.y = clamp(lonLatLev.y, -90.0, 90.0);\n\n vec3 index3D = vec3(0.0);\n index3D.x = (lonLatLev.x - minimum.x) / interval.x;\n index3D.y = (lonLatLev.y - minimum.y) / interval.y;\n index3D.z = (lonLatLev.z - minimum.z) / interval.z;\n\n // the st texture coordinate corresponding to (col, row) index\n // example\n // data array is [0, 1, 2, 3, 4, 5], width = 3, height = 2\n // the content of texture will be\n // t 1.0\n // | 3 4 5\n // |\n // | 0 1 2\n // 0.0------1.0 s\n\n vec2 index2D = vec2(index3D.x, index3D.z * dimension.y + index3D.y);\n vec2 normalizedIndex2D = vec2(index2D.x / dimension.x, index2D.y / (dimension.y * dimension.z));\n return normalizedIndex2D;\n}\n\nfloat getWindComponent(sampler2D componentTexture, vec3 lonLatLev) {\n vec2 normalizedIndex2D = mapPositionToNormalizedIndex2D(lonLatLev);\n float result = texture(componentTexture, normalizedIndex2D).r;\n return result;\n}\n\nfloat interpolateTexture(sampler2D componentTexture, vec3 lonLatLev) {\n float lon = lonLatLev.x;\n float lat = lonLatLev.y;\n float lev = lonLatLev.z;\n\n float lon0 = floor(lon / interval.x) * interval.x;\n float lon1 = lon0 + 1.0 * interval.x;\n float lat0 = floor(lat / interval.y) * interval.y;\n float lat1 = lat0 + 1.0 * interval.y;\n\n float lon0_lat0 = getWindComponent(componentTexture, vec3(lon0, lat0, lev));\n float lon1_lat0 = getWindComponent(componentTexture, vec3(lon1, lat0, lev));\n float lon0_lat1 = getWindComponent(componentTexture, vec3(lon0, lat1, lev));\n float lon1_lat1 = getWindComponent(componentTexture, vec3(lon1, lat1, lev));\n\n float lon_lat0 = mix(lon0_lat0, lon1_lat0, lon - lon0);\n float lon_lat1 = mix(lon0_lat1, lon1_lat1, lon - lon0);\n float lon_lat = mix(lon_lat0, lon_lat1, lat - lat0);\n return lon_lat;\n}\n\nvec3 linearInterpolation(vec3 lonLatLev) {\n // https://en.wikipedia.org/wiki/Bilinear_interpolation\n float u = interpolateTexture(U, lonLatLev);\n float v = interpolateTexture(V, lonLatLev);\n float w = 0.0;\n return vec3(u, v, w);\n}\n\nvec2 lengthOfLonLat(vec3 lonLatLev) {\n // unit conversion: meters -> longitude latitude degrees\n // see https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree for detail\n\n // Calculate the length of a degree of latitude and longitude in meters\n float latitude = radians(lonLatLev.y);\n\n float term1 = 111132.92;\n float term2 = 559.82 * cos(2.0 * latitude);\n float term3 = 1.175 * cos(4.0 * latitude);\n float term4 = 0.0023 * cos(6.0 * latitude);\n float latLength = term1 - term2 + term3 - term4;\n\n float term5 = 111412.84 * cos(latitude);\n float term6 = 93.5 * cos(3.0 * latitude);\n float term7 = 0.118 * cos(5.0 * latitude);\n float longLength = term5 - term6 + term7;\n\n return vec2(longLength, latLength);\n}\n\nvec3 convertSpeedUnitToLonLat(vec3 lonLatLev, vec3 speed) {\n vec2 lonLatLength = lengthOfLonLat(lonLatLev);\n float u = speed.x / lonLatLength.x;\n float v = speed.y / lonLatLength.y;\n float w = 0.0;\n vec3 windVectorInLonLatLev = vec3(u, v, w);\n\n return windVectorInLonLatLev;\n}\n\nvec3 calculateSpeedByRangeKutta2(vec3 lonLatLev) {\n // see https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods#Second-order_methods_with_two_stages for detail\n const float h = 0.5;\n float speedScaleFactor = speedFactor * pixelSize;\n\n vec3 y_n = lonLatLev;\n vec3 f_n = linearInterpolation(lonLatLev);\n vec3 midpoint = y_n + 0.5 * h * convertSpeedUnitToLonLat(y_n, f_n) * speedScaleFactor;\n vec3 speed = h * linearInterpolation(midpoint) * speedScaleFactor;\n\n return speed;\n}\n\nfloat calculateWindNorm(vec3 speed) {\n vec3 percent = vec3(0.0);\n percent.x = (speed.x - uSpeedRange.x) / (uSpeedRange.y - uSpeedRange.x);\n percent.y = (speed.y - vSpeedRange.x) / (vSpeedRange.y - vSpeedRange.x);\n float norm = length(percent);\n\n return norm;\n}\n\nvoid main() {\n // texture coordinate must be normalized\n vec3 lonLatLev = texture(currentParticlesPosition, v_textureCoordinates).rgb;\n vec3 speed = calculateSpeedByRangeKutta2(lonLatLev);\n vec3 speedInLonLat = convertSpeedUnitToLonLat(lonLatLev, speed);\n float speedScaleFactor = speedFactor * pixelSize;\n\n vec4 particleSpeed = vec4(speedInLonLat, calculateWindNorm(speed / speedScaleFactor));\n out_FragColor = particleSpeed;\n}"]}),outputTexture:null===(r=this.particlesTextures)||void 0===r?void 0:r.particlesSpeed,preExecute:()=>{var e,t,i,o,r,n,s;let a;(null===(e=this.particlesTextures)||void 0===e?void 0:e.previousParticlesPosition)&&(a=null===(t=this.particlesTextures)||void 0===t?void 0:t.previousParticlesPosition),(null===(i=this.particlesTextures)||void 0===i?void 0:i.currentParticlesPosition)&&(this.particlesTextures.previousParticlesPosition=null===(o=this.particlesTextures)||void 0===o?void 0:o.currentParticlesPosition),(null===(r=this.particlesTextures)||void 0===r?void 0:r.postProcessingPosition)&&(this.particlesTextures.currentParticlesPosition=null===(n=this.particlesTextures)||void 0===n?void 0:n.postProcessingPosition),a&&(this.particlesTextures.postProcessingPosition=a),this.primitives&&(this.primitives.calculateSpeed.commandToExecute.outputTexture=null===(s=this.particlesTextures)||void 0===s?void 0:s.particlesSpeed)}}),updatePosition:new CustomPrimitive({commandType:"Compute",uniformMap:{currentParticlesPosition:()=>{var e;return null===(e=this.particlesTextures)||void 0===e?void 0:e.currentParticlesPosition},particlesSpeed:()=>{var e;return null===(e=this.particlesTextures)||void 0===e?void 0:e.particlesSpeed}},fragmentShaderSource:new e.ShaderSource({sources:["\nuniform sampler2D currentParticlesPosition; // (lon, lat, lev)\nuniform sampler2D particlesSpeed; // (u, v, w, norm) Unit converted to degrees of longitude and latitude \n\nin vec2 v_textureCoordinates;\n\nvoid main() {\n // texture coordinate must be normalized\n vec3 lonLatLev = texture(currentParticlesPosition, v_textureCoordinates).rgb;\n vec3 speed = texture(particlesSpeed, v_textureCoordinates).rgb;\n vec3 nextParticle = lonLatLev + speed;\n\n out_FragColor = vec4(nextParticle, 0.0);\n}"]}),outputTexture:null===(n=this.particlesTextures)||void 0===n?void 0:n.nextParticlesPosition,preExecute:()=>{var e;this.primitives&&(this.primitives.updatePosition.commandToExecute.outputTexture=null===(e=this.particlesTextures)||void 0===e?void 0:e.nextParticlesPosition)}}),postProcessingPosition:new CustomPrimitive({commandType:"Compute",uniformMap:{nextParticlesPosition:()=>{var e;return null===(e=this.particlesTextures)||void 0===e?void 0:e.nextParticlesPosition},particlesSpeed:()=>{var e;return null===(e=this.particlesTextures)||void 0===e?void 0:e.particlesSpeed},lonRange:()=>o.lonRange,latRange:()=>o.latRange,randomCoefficient:()=>Math.random(),dropRate:()=>i.dropRate,dropRateBump:()=>i.dropRateBump},fragmentShaderSource:new e.ShaderSource({sources:["\nuniform sampler2D nextParticlesPosition;\nuniform sampler2D particlesSpeed; // (u, v, w, norm)\n\n// range (min, max)\nuniform vec2 lonRange;\nuniform vec2 latRange;\n\nuniform float randomCoefficient; // use to improve the pseudo-random generator\nuniform float dropRate; // drop rate is a chance a particle will restart at random position to avoid degeneration\nuniform float dropRateBump;\n\nin vec2 v_textureCoordinates;\n\n// pseudo-random generator\nconst vec3 randomConstants = vec3(12.9898, 78.233, 4375.85453);\nconst vec2 normalRange = vec2(0.0, 1.0);\nfloat rand(vec2 seed, vec2 range) {\n vec2 randomSeed = randomCoefficient * seed;\n float temp = dot(randomConstants.xy, randomSeed);\n temp = fract(sin(temp) * (randomConstants.z + temp));\n return temp * (range.y - range.x) + range.x;\n}\n\nvec3 generateRandomParticle(vec2 seed, float lev) {\n // ensure the longitude is in [0, 360]\n float randomLon = mod(rand(seed, lonRange), 360.0);\n float randomLat = rand(-seed, latRange);\n\n return vec3(randomLon, randomLat, lev);\n}\n\nbool particleOutbound(vec3 particle) {\n return particle.y < -90.0 || particle.y > 90.0;\n}\n\nvoid main() {\n vec3 nextParticle = texture(nextParticlesPosition, v_textureCoordinates).rgb;\n vec4 nextSpeed = texture(particlesSpeed, v_textureCoordinates);\n float speedNorm = nextSpeed.a;\n float particleDropRate = dropRate + dropRateBump * speedNorm;\n\n vec2 seed1 = nextParticle.xy + v_textureCoordinates;\n vec2 seed2 = nextSpeed.xy + v_textureCoordinates;\n vec3 randomParticle = generateRandomParticle(seed1, nextParticle.z);\n float randomNumber = rand(seed2, normalRange);\n\n if (randomNumber < particleDropRate || particleOutbound(nextParticle)) {\n out_FragColor = vec4(randomParticle, 1.0); // 1.0 means this is a random particle\n } else {\n out_FragColor = vec4(nextParticle, 0.0);\n }\n}"]}),outputTexture:null===(s=this.particlesTextures)||void 0===s?void 0:s.postProcessingPosition,preExecute:()=>{var e;this.primitives&&(this.primitives.postProcessingPosition.commandToExecute.outputTexture=null===(e=this.particlesTextures)||void 0===e?void 0:e.postProcessingPosition)}})}}}class ParticlesRendering{constructor(e,t,i,o,r){this.createRenderingTextures(e,t),this.createRenderingFrameBuffers(e),this.createRenderingPrimitives(e,i,o,r)}createRenderingTextures(t,i){const o={context:t,width:t.drawingBufferWidth,height:t.drawingBufferHeight,pixelFormat:e.PixelFormat.RGBA,pixelDatatype:e.PixelDatatype.UNSIGNED_BYTE},r={context:t,width:t.drawingBufferWidth,height:t.drawingBufferHeight,pixelFormat:e.PixelFormat.DEPTH_COMPONENT,pixelDatatype:e.PixelDatatype.UNSIGNED_INT};this.textures={segmentsColor:PrivateUtils.createTexture(o),segmentsDepth:PrivateUtils.createTexture(r),currentTrailsColor:PrivateUtils.createTexture(o),currentTrailsDepth:PrivateUtils.createTexture(r),nextTrailsColor:PrivateUtils.createTexture(o),nextTrailsDepth:PrivateUtils.createTexture(r)}}createRenderingFrameBuffers(e){var t,i,o,r,n,s;this.frameBuffers={segments:PrivateUtils.createFramebuffer(e,null===(t=this.textures)||void 0===t?void 0:t.segmentsColor,null===(i=this.textures)||void 0===i?void 0:i.segmentsDepth),currentTrails:PrivateUtils.createFramebuffer(e,null===(o=this.textures)||void 0===o?void 0:o.currentTrailsColor,null===(r=this.textures)||void 0===r?void 0:r.currentTrailsDepth),nextTrails:PrivateUtils.createFramebuffer(e,null===(n=this.textures)||void 0===n?void 0:n.nextTrailsColor,null===(s=this.textures)||void 0===s?void 0:s.nextTrailsDepth)}}createSegmentsGeometry(t){const i=[],o=t.particlesTextureSize;for(let e=0;e<o;e++)for(let t=0;t<o;t++)for(let r=0;r<6;r++)i.push(e/o),i.push(t/o);const r=new Float32Array(i),n=[],s=[-1,0,1],a=[-1,1],l=t.maxParticles;for(let e=0;e<l;e++)for(let e=0;e<s.length;e++)for(let t=0;t<a.length;t++)n.push(s[e]),n.push(a[t]),n.push(0);const c=new Float32Array(n),d=new Uint32Array(12*l);for(let e=0,t=0,i=0;e<l;e++)d[t++]=i+0,d[t++]=i+1,d[t++]=i+2,d[t++]=i+2,d[t++]=i+1,d[t++]=i+3,d[t++]=i+2,d[t++]=i+4,d[t++]=i+3,d[t++]=i+4,d[t++]=i+3,d[t++]=i+5,i+=6;const h=new e.GeometryAttributes;h.st=new e.GeometryAttribute({componentDatatype:e.ComponentDatatype.FLOAT,componentsPerAttribute:2,values:r}),h.normal=new e.GeometryAttribute({componentDatatype:e.ComponentDatatype.FLOAT,componentsPerAttribute:3,values:c});return new e.Geometry({attributes:h,indices:d})}createRenderingPrimitives(t,i,o,r){var n,s;this.primitives={segments:new CustomPrimitive({commandType:"Draw",attributeLocations:{st:0,normal:1},geometry:this.createSegmentsGeometry(i),primitiveType:e.PrimitiveType.TRIANGLES,uniformMap:{previousParticlesPosition:()=>{var e;return null===(e=r.particlesTextures)||void 0===e?void 0:e.previousParticlesPosition},currentParticlesPosition:()=>{var e;return null===(e=r.particlesTextures)||void 0===e?void 0:e.currentParticlesPosition},postProcessingPosition:()=>{var e;return null===(e=r.particlesTextures)||void 0===e?void 0:e.postProcessingPosition},aspect:()=>t.drawingBufferWidth/t.drawingBufferHeight,pixelSize:()=>o.pixelSize,lineWidth:()=>i.lineWidth,particleHeight:()=>i.particleHeight},vertexShaderSource:new e.ShaderSource({sources:["\nin vec2 st;\n// it is not normal itself, but used to control lines drawing\nin vec3 normal; // (point to use, offset sign, not used component)\n\nuniform sampler2D previousParticlesPosition;\nuniform sampler2D currentParticlesPosition;\nuniform sampler2D postProcessingPosition;\n\nuniform float particleHeight;\n\nuniform float aspect;\nuniform float pixelSize;\nuniform float lineWidth;\n\nstruct adjacentPoints {\n vec4 previous;\n vec4 current;\n vec4 next;\n};\n\nvec3 convertCoordinate(vec3 lonLatLev) {\n // WGS84 (lon, lat, lev) -> ECEF (x, y, z)\n // read https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates for detail\n\n // WGS 84 geometric constants \n float a = 6378137.0; // Semi-major axis \n float b = 6356752.3142; // Semi-minor axis \n float e2 = 6.69437999014e-3; // First eccentricity squared\n\n float latitude = radians(lonLatLev.y);\n float longitude = radians(lonLatLev.x);\n\n float cosLat = cos(latitude);\n float sinLat = sin(latitude);\n float cosLon = cos(longitude);\n float sinLon = sin(longitude);\n\n float N_Phi = a / sqrt(1.0 - e2 * sinLat * sinLat);\n float h = particleHeight; // it should be high enough otherwise the particle may not pass the terrain depth test\n\n vec3 cartesian = vec3(0.0);\n cartesian.x = (N_Phi + h) * cosLat * cosLon;\n cartesian.y = (N_Phi + h) * cosLat * sinLon;\n cartesian.z = ((b * b) / (a * a) * N_Phi + h) * sinLat;\n return cartesian;\n}\n\nvec4 calculateProjectedCoordinate(vec3 lonLatLev) {\n // the range of longitude in Cesium is [-180, 180] but the range of longitude in the NetCDF file is [0, 360]\n // [0, 180] is corresponding to [0, 180] and [180, 360] is corresponding to [-180, 0]\n lonLatLev.x = mod(lonLatLev.x + 180.0, 360.0) - 180.0;\n vec3 particlePosition = convertCoordinate(lonLatLev);\n vec4 projectedCoordinate = czm_modelViewProjection * vec4(particlePosition, 1.0);\n return projectedCoordinate;\n}\n\nvec4 calculateOffsetOnNormalDirection(vec4 pointA, vec4 pointB, float offsetSign) {\n vec2 aspectVec2 = vec2(aspect, 1.0);\n vec2 pointA_XY = (pointA.xy / pointA.w) * aspectVec2;\n vec2 pointB_XY = (pointB.xy / pointB.w) * aspectVec2;\n\n float offsetLength = lineWidth / 2.0;\n vec2 direction = normalize(pointB_XY - pointA_XY);\n vec2 normalVector = vec2(-direction.y, direction.x);\n normalVector.x = normalVector.x / aspect;\n normalVector = offsetLength * normalVector;\n\n vec4 offset = vec4(offsetSign * normalVector, 0.0, 0.0);\n return offset;\n}\n\nvec4 calculateOffsetOnMiterDirection(adjacentPoints projectedCoordinates, float offsetSign) {\n vec2 aspectVec2 = vec2(aspect, 1.0);\n\n vec4 PointA = projectedCoordinates.previous;\n vec4 PointB = projectedCoordinates.current;\n vec4 PointC = projectedCoordinates.next;\n\n vec2 pointA_XY = (PointA.xy / PointA.w) * aspectVec2;\n vec2 pointB_XY = (PointB.xy / PointB.w) * aspectVec2;\n vec2 pointC_XY = (PointC.xy / PointC.w) * aspectVec2;\n\n vec2 AB = normalize(pointB_XY - pointA_XY);\n vec2 BC = normalize(pointC_XY - pointB_XY);\n\n vec2 normalA = vec2(-AB.y, AB.x);\n vec2 tangent = normalize(AB + BC);\n vec2 miter = vec2(-tangent.y, tangent.x);\n\n float offsetLength = lineWidth / 2.0;\n float projection = dot(miter, normalA);\n vec4 offset = vec4(0.0);\n // avoid to use values that are too small\n if (projection > 0.1) {\n float miterLength = offsetLength / projection;\n offset = vec4(offsetSign * miter * miterLength, 0.0, 0.0);\n offset.x = offset.x / aspect;\n } else {\n offset = calculateOffsetOnNormalDirection(PointB, PointC, offsetSign);\n }\n\n return offset;\n}\n\nvoid main() {\n vec2 particleIndex = st;\n\n vec3 previousPosition = texture(previousParticlesPosition, particleIndex).rgb;\n vec3 currentPosition = texture(currentParticlesPosition, particleIndex).rgb;\n vec3 nextPosition = texture(postProcessingPosition, particleIndex).rgb;\n\n float isAnyRandomPointUsed = texture(postProcessingPosition, particleIndex).a +\n texture(currentParticlesPosition, particleIndex).a +\n texture(previousParticlesPosition, particleIndex).a;\n\n adjacentPoints projectedCoordinates;\n if (isAnyRandomPointUsed > 0.0) {\n projectedCoordinates.previous = calculateProjectedCoordinate(previousPosition);\n projectedCoordinates.current = projectedCoordinates.previous;\n projectedCoordinates.next = projectedCoordinates.previous;\n } else {\n projectedCoordinates.previous = calculateProjectedCoordinate(previousPosition);\n projectedCoordinates.current = calculateProjectedCoordinate(currentPosition);\n projectedCoordinates.next = calculateProjectedCoordinate(nextPosition);\n }\n\n int pointToUse = int(normal.x);\n float offsetSign = normal.y;\n vec4 offset = vec4(0.0);\n // render lines with triangles and miter joint\n // read https://blog.scottlogic.com/2019/11/18/drawing-lines-with-webgl.html for detail\n if (pointToUse == -1) {\n offset = pixelSize * calculateOffsetOnNormalDirection(projectedCoordinates.previous, projectedCoordinates.current, offsetSign);\n gl_Position = projectedCoordinates.previous + offset;\n } else {\n if (pointToUse == 0) {\n offset = pixelSize * calculateOffsetOnMiterDirection(projectedCoordinates, offsetSign);\n gl_Position = projectedCoordinates.current + offset;\n } else {\n if (pointToUse == 1) {\n offset = pixelSize * calculateOffsetOnNormalDirection(projectedCoordinates.current, projectedCoordinates.next, offsetSign);\n gl_Position = projectedCoordinates.next + offset;\n } else {\n\n }\n }\n }\n}"]}),fragmentShaderSource:new e.ShaderSource({sources:["\nvoid main() {\n const vec4 white = vec4(1.0);\n out_FragColor = white;\n}"]}),rawRenderState:PrivateUtils.createRawRenderState({viewport:void 0,depthTest:{enabled:!0},depthMask:!0}),framebuffer:null===(n=this.frameBuffers)||void 0===n?void 0:n.segments,autoClear:!0}),trails:new CustomPrimitive({commandType:"Draw",attributeLocations:{position:0,st:1},geometry:PrivateUtils.getFullscreenQuad(),primitiveType:e.PrimitiveType.TRIANGLES,uniformMap:{segmentsColorTexture:()=>{var e;return null===(e=this.textures)||void 0===e?void 0:e.segmentsColor},segmentsDepthTexture:()=>{var e;return null===(e=this.textures)||void 0===e?void 0:e.segmentsDepth},currentTrailsColor:()=>{var e;return null===(e=this.frameBuffers)||void 0===e?void 0:e.currentTrails.getColorTexture(0)},trailsDepthTexture:()=>{var e;return null===(e=this.frameBuffers)||void 0===e?void 0:e.currentTrails.depthTexture},fadeOpacity:()=>i.fadeOpacity},vertexShaderSource:new e.ShaderSource({defines:["DISABLE_GL_POSITION_LOG_DEPTH"],sources:[Ht]}),fragmentShaderSource:new e.ShaderSource({defines:["DISABLE_LOG_DEPTH_FRAGMENT_WRITE"],sources:["\nuniform sampler2D segmentsColorTexture;\nuniform sampler2D segmentsDepthTexture;\n\nuniform sampler2D currentTrailsColor;\nuniform sampler2D trailsDepthTexture;\n\nuniform float fadeOpacity;\n\nin vec2 textureCoordinate;\n\nvoid main() {\n vec4 pointsColor = texture(segmentsColorTexture, textureCoordinate);\n vec4 trailsColor = texture(currentTrailsColor, textureCoordinate);\n\n trailsColor = floor(fadeOpacity * 255.0 * trailsColor) / 255.0; // make sure the trailsColor will be strictly decreased\n\n float pointsDepth = texture(segmentsDepthTexture, textureCoordinate).r;\n float trailsDepth = texture(trailsDepthTexture, textureCoordinate).r;\n float globeDepth = czm_unpackDepth(texture(czm_globeDepthTexture, textureCoordinate));\n\n out_FragColor = vec4(0.0);\n if (pointsDepth < globeDepth) {\n out_FragColor = out_FragColor + pointsColor;\n }\n if (trailsDepth < globeDepth) {\n out_FragColor = out_FragColor + trailsColor;\n }\n gl_FragDepth = min(pointsDepth, trailsDepth);\n}"]}),rawRenderState:PrivateUtils.createRawRenderState({viewport:void 0,depthTest:{enabled:!0,func:e.DepthFunction.ALWAYS},depthMask:!0}),framebuffer:null===(s=this.frameBuffers)||void 0===s?void 0:s.nextTrails,autoClear:!0,preExecute:()=>{var e,t,i,o,r,n;const s=null===(e=this.frameBuffers)||void 0===e?void 0:e.currentTrails;(null===(t=this.frameBuffers)||void 0===t?void 0:t.currentTrails)&&(this.frameBuffers.currentTrails=null===(i=this.frameBuffers)||void 0===i?void 0:i.nextTrails),(null===(o=this.frameBuffers)||void 0===o?void 0:o.nextTrails)&&s&&(this.frameBuffers.nextTrails=s),this.primitives&&(this.primitives.trails.commandToExecute.framebuffer=null===(r=this.frameBuffers)||void 0===r?void 0:r.nextTrails,this.primitives.trails.clearCommand.framebuffer=null===(n=this.frameBuffers)||void 0===n?void 0:n.nextTrails)}}),screen:new CustomPrimitive({commandType:"Draw",attributeLocations:{position:0,st:1},geometry:PrivateUtils.getFullscreenQuad(),primitiveType:e.PrimitiveType.TRIANGLES,uniformMap:{trailsColorTexture:()=>{var e;return null===(e=this.frameBuffers)||void 0===e?void 0:e.nextTrails.getColorTexture(0)},trailsDepthTexture:()=>{var e;return null===(e=this.frameBuffers)||void 0===e?void 0:e.nextTrails.depthTexture}},vertexShaderSource:new e.ShaderSource({defines:["DISABLE_GL_POSITION_LOG_DEPTH"],sources:[Ht]}),fragmentShaderSource:new e.ShaderSource({defines:["DISABLE_LOG_DEPTH_FRAGMENT_WRITE"],sources:["\nuniform sampler2D trailsColorTexture;\nuniform sampler2D trailsDepthTexture;\n\nin vec2 textureCoordinate;\n\nvoid main() {\n vec4 trailsColor = texture(trailsColorTexture, textureCoordinate);\n float trailsDepth = texture(trailsDepthTexture, textureCoordinate).r;\n float globeDepth = czm_unpackDepth(texture(czm_globeDepthTexture, textureCoordinate));\n\n if (trailsDepth < globeDepth) {\n out_FragColor = trailsColor;\n } else {\n out_FragColor = vec4(0.0);\n }\n}"]}),rawRenderState:PrivateUtils.createRawRenderState({viewport:void 0,depthTest:{enabled:!1},depthMask:!0,blending:{enabled:!0}}),framebuffer:void 0})}}}class WindParticleSystem{constructor(e,t,i,o){this.context=e,this.data=t,this.params=i,this.viewerParameters=o,this.particlesComputing=new ParticlesComputing(e,t,i,o),this.particlesRendering=new ParticlesRendering(e,t,i,o,this.particlesComputing)}canvasResize(e){this.particlesComputing.destroyParticlesTextures(),this.particlesComputing.windTextures&&Object.keys(this.particlesComputing.windTextures).forEach(e=>{var t;null===(t=this.particlesComputing.windTextures)||void 0===t||t[e].destroy()}),this.particlesRendering.frameBuffers&&Object.keys(this.particlesRendering.frameBuffers).forEach(e=>{var t;null===(t=this.particlesRendering.frameBuffers)||void 0===t||t[e].destroy()}),this.context=e,this.particlesComputing=new ParticlesComputing(this.context,this.data,this.params,this.viewerParameters),this.particlesRendering=new ParticlesRendering(this.context,this.data,this.params,this.viewerParameters,this.particlesComputing)}clearFrameBuffers(){const t=new e.ClearCommand({color:new e.Color(0,0,0,0),depth:1,framebuffer:void 0,pass:e.Pass.OPAQUE});this.particlesRendering.frameBuffers&&Object.keys(this.particlesRendering.frameBuffers).forEach(e=>{var i;t.framebuffer=null===(i=this.particlesRendering.frameBuffers)||void 0===i?void 0:i[e],t.execute(this.context)})}refreshParticles(t){if(this.clearFrameBuffers(),this.particlesComputing.destroyParticlesTextures(),this.particlesComputing.createParticlesTextures(this.context,this.params,this.viewerParameters),t){const t=this.particlesRendering.createSegmentsGeometry(this.params);if(this.particlesRendering.primitives){this.particlesRendering.primitives.segments.geometry=t;const i=e.VertexArray.fromGeometry({context:this.context,geometry:t,attributeLocations:this.particlesRendering.primitives.segments.attributeLocations,bufferUsage:e.BufferUsage.STATIC_DRAW});this.particlesRendering.primitives.segments.commandToExecute.vertexArray=i}}}applyUserInput(e){let t=!1;this.params.maxParticles!==e.maxParticles&&(t=!0),Object.keys(e).forEach(t=>{this.params[t]=e[t]}),this.refreshParticles(t)}applyViewerParameters(e){Object.keys(e).forEach(t=>{this.viewerParameters[t]=e[t]}),this.refreshParticles(!1)}}const{ceil:ga,sqrt:va}=Math;exports.WindField=class WindField{constructor(t,{data:i,params:o}){Vs.add(this),Zs.set(this,void 0),Xs.set(this,void 0),qs.set(this,void 0),$s.set(this,void 0),ea.set(this,{maxParticles:4096,particleHeight:100,fadeOpacity:.9,dropRate:.003,dropRateBump:.01,speedFactor:.4,lineWidth:2,particlesTextureSize:64}),ta.set(this,void 0),ia.set(this,!1),oa.set(this,void 0),ra.set(this,void 0),na.set(this,void 0),sa.set(this,void 0),aa.set(this,void 0),la.set(this,!0),__classPrivateFieldSet(this,Zs,t.viewer.scene,"f"),__classPrivateFieldSet(this,Xs,t.viewer.camera,"f"),__classPrivateFieldSet(this,qs,{lonRange:new e.Cartesian2,latRange:new e.Cartesian2,pixelSize:0},"f"),__classPrivateFieldSet(this,ea,Object.assign(__classPrivateFieldGet(this,ea,"f"),o),"f"),__classPrivateFieldGet(this,ea,"f").maxParticles&&(__classPrivateFieldGet(this,ea,"f").particlesTextureSize=ga(va(__classPrivateFieldGet(this,ea,"f").maxParticles)),__classPrivateFieldGet(this,ea,"f").maxParticles=__classPrivateFieldGet(this,ea,"f").particlesTextureSize*__classPrivateFieldGet(this,ea,"f").particlesTextureSize),__classPrivateFieldSet(this,$s,new e.BoundingSphere(e.Cartesian3.ZERO,.99*exports.EarthRadius.EQUATOR),"f"),__classPrivateFieldGet(this,Vs,"m",ca).call(this),__classPrivateFieldGet(this,Vs,"m",da).call(this,i),__classPrivateFieldGet(this,Vs,"m",ha).call(this)}update(e){var t;__classPrivateFieldSet(this,ea,Object.assign(__classPrivateFieldGet(this,ea,"f"),e),"f"),__classPrivateFieldGet(this,ea,"f").maxParticles&&(__classPrivateFieldGet(this,ea,"f").particlesTextureSize=ga(va(__classPrivateFieldGet(this,ea,"f").maxParticles)),__classPrivateFieldGet(this,ea,"f").maxParticles=__classPrivateFieldGet(this,ea,"f").particlesTextureSize*__classPrivateFieldGet(this,ea,"f").particlesTextureSize),null===(t=__classPrivateFieldGet(this,ta,"f"))||void 0===t||t.applyUserInput(__classPrivateFieldGet(this,ea,"f"))}hide(){__classPrivateFieldSet(this,la,!1,"f");const e=__classPrivateFieldGet(this,Zs,"f").primitives,t=e.length;for(let i=0;i<t;++i){const t=e.get(i),o=t.commandType;!o||"Compute"!==o&&"Draw"!==o||(t.show=!1)}}show(){__classPrivateFieldSet(this,la,!0,"f");const e=__classPrivateFieldGet(this,Zs,"f").primitives,t=e.length;for(let i=0;i<t;++i){const t=e.get(i),o=t.commandType;!o||"Compute"!==o&&"Draw"!==o||(t.show=!0)}}destroy(){this._isDestroyed||(this._isDestroyed=!0,__classPrivateFieldGet(this,oa,"f")&&__classPrivateFieldGet(this,Zs,"f").morphStart.removeEventListener(__classPrivateFieldGet(this,oa,"f")),__classPrivateFieldGet(this,ra,"f")&&__classPrivateFieldGet(this,Zs,"f").morphComplete.removeEventListener(__classPrivateFieldGet(this,ra,"f")),__classPrivateFieldGet(this,na,"f")&&__classPrivateFieldGet(this,Xs,"f").moveStart.removeEventListener(__classPrivateFieldGet(this,na,"f")),__classPrivateFieldGet(this,sa,"f")&&__classPrivateFieldGet(this,Xs,"f").moveEnd.removeEventListener(__classPrivateFieldGet(this,sa,"f")),__classPrivateFieldGet(this,aa,"f")&&__classPrivateFieldGet(this,Zs,"f").preRender.removeEventListener(__classPrivateFieldGet(this,aa,"f")),window.removeEventListener("resize",__classPrivateFieldGet(this,Vs,"m",pa)),__classPrivateFieldGet(this,Vs,"m",ma).call(this))}},Zs=new WeakMap,Xs=new WeakMap,qs=new WeakMap,$s=new WeakMap,ea=new WeakMap,ta=new WeakMap,ia=new WeakMap,oa=new WeakMap,ra=new WeakMap,na=new WeakMap,sa=new WeakMap,aa=new WeakMap,la=new WeakMap,Vs=new WeakSet,ca=function _WindField_updateViewerParameters(){const e=__classPrivateFieldGet(this,Xs,"f").computeViewRectangle(__classPrivateFieldGet(this,Zs,"f").globe.ellipsoid),t=exports.CameraTool.viewRectangleToLonLatRange(e);__classPrivateFieldGet(this,qs,"f").lonRange.x=t.lon.min,__classPrivateFieldGet(this,qs,"f").lonRange.y=t.lon.max,__classPrivateFieldGet(this,qs,"f").latRange.x=t.lat.min,__classPrivateFieldGet(this,qs,"f").latRange.y=t.lat.max;const i=__classPrivateFieldGet(this,Xs,"f").getPixelSize(__classPrivateFieldGet(this,$s,"f"),__classPrivateFieldGet(this,Zs,"f").drawingBufferWidth,__classPrivateFieldGet(this,Zs,"f").drawingBufferHeight);i>0&&(__classPrivateFieldGet(this,qs,"f").pixelSize=i)},da=function _WindField_setData(e){e.U.array instanceof Array&&(e.U.array=new Float32Array(e.U.array)),e.V.array instanceof Array&&(e.V.array=new Float32Array(e.V.array)),e.lon.array instanceof Array&&(e.lon.array=new Float32Array(e.lon.array)),e.lat.array instanceof Array&&(e.lat.array=new Float32Array(e.lat.array)),e.lev.array instanceof Array&&(e.lev.array=new Float32Array(e.lev.array)),__classPrivateFieldSet(this,ta,new WindParticleSystem(__classPrivateFieldGet(this,Zs,"f").context,e,__classPrivateFieldGet(this,ea,"f"),__classPrivateFieldGet(this,qs,"f")),"f"),__classPrivateFieldGet(this,Vs,"m",ua).call(this)},ha=function _WindField_setupEventListeners(){__classPrivateFieldSet(this,oa,()=>{__classPrivateFieldGet(this,Vs,"m",ma).call(this)},"f"),__classPrivateFieldGet(this,Zs,"f").morphStart.addEventListener(__classPrivateFieldGet(this,oa,"f")),__classPrivateFieldSet(this,ra,()=>{var t;__classPrivateFieldGet(this,Zs,"f").mode===e.SceneMode.SCENE3D&&__classPrivateFieldGet(this,la,"f")&&(null===(t=__classPrivateFieldGet(this,ta,"f"))||void 0===t||t.canvasResize(__classPrivateFieldGet(this,Zs,"f").context),__classPrivateFieldGet(this,Vs,"m",ua).call(this))},"f"),__classPrivateFieldGet(this,Zs,"f").morphComplete.addEventListener(__classPrivateFieldGet(this,ra,"f")),__classPrivateFieldSet(this,na,()=>{__classPrivateFieldGet(this,la,"f")&&__classPrivateFieldGet(this,Vs,"m",ca).call(this)},"f"),__classPrivateFieldGet(this,Xs,"f").moveStart.addEventListener(__classPrivateFieldGet(this,na,"f")),__classPrivateFieldSet(this,sa,()=>{__classPrivateFieldGet(this,la,"f")&&__classPrivateFieldGet(this,Vs,"m",ca).call(this)},"f"),__classPrivateFieldGet(this,Xs,"f").moveEnd.addEventListener(__classPrivateFieldGet(this,sa,"f")),__classPrivateFieldSet(this,aa,()=>{var e;__classPrivateFieldGet(this,ia,"f")&&__classPrivateFieldGet(this,la,"f")&&(null===(e=__classPrivateFieldGet(this,ta,"f"))||void 0===e||e.canvasResize(__classPrivateFieldGet(this,Zs,"f").context),__classPrivateFieldSet(this,ia,!1,"f"),__classPrivateFieldGet(this,Vs,"m",ua).call(this))},"f"),__classPrivateFieldGet(this,Zs,"f").preRender.addEventListener(__classPrivateFieldGet(this,aa,"f")),window.addEventListener("resize",__classPrivateFieldGet(this,Vs,"m",pa).bind(this))},pa=function _WindField_resizeEvent(){__classPrivateFieldGet(this,la,"f")&&(__classPrivateFieldSet(this,ia,!0,"f"),__classPrivateFieldGet(this,Vs,"m",ma).call(this))},ua=function _WindField_addPrimitives(){var e,t;const i=__classPrivateFieldGet(this,Zs,"f").primitives;(null===(e=__classPrivateFieldGet(this,ta,"f"))||void 0===e?void 0:e.particlesComputing.primitives)&&(i.add(__classPrivateFieldGet(this,ta,"f").particlesComputing.primitives.calculateSpeed),i.add(__classPrivateFieldGet(this,ta,"f").particlesComputing.primitives.updatePosition),i.add(__classPrivateFieldGet(this,ta,"f").particlesComputing.primitives.postProcessingPosition)),(null===(t=__classPrivateFieldGet(this,ta,"f"))||void 0===t?void 0:t.particlesRendering.primitives)&&(i.add(__classPrivateFieldGet(this,ta,"f").particlesRendering.primitives.segments),i.add(__classPrivateFieldGet(this,ta,"f").particlesRendering.primitives.trails),i.add(__classPrivateFieldGet(this,ta,"f").particlesRendering.primitives.screen))},ma=function _WindField_removePrimitives(){var e,t;const i=__classPrivateFieldGet(this,Zs,"f").primitives;i&&((null===(e=__classPrivateFieldGet(this,ta,"f"))||void 0===e?void 0:e.particlesComputing.primitives)&&(i.remove(__classPrivateFieldGet(this,ta,"f").particlesComputing.primitives.calculateSpeed),i.remove(__classPrivateFieldGet(this,ta,"f").particlesComputing.primitives.updatePosition),i.remove(__classPrivateFieldGet(this,ta,"f").particlesComputing.primitives.postProcessingPosition)),(null===(t=__classPrivateFieldGet(this,ta,"f"))||void 0===t?void 0:t.particlesRendering.primitives)&&(i.remove(__classPrivateFieldGet(this,ta,"f").particlesRendering.primitives.segments),i.remove(__classPrivateFieldGet(this,ta,"f").particlesRendering.primitives.trails),i.remove(__classPrivateFieldGet(this,ta,"f").particlesRendering.primitives.screen)))},__decorate([generate(!1)],exports.WindField.prototype,"isDestroyed",void 0),exports.WindField=__decorate([singleton()],exports.WindField);const fa=new Map;var Ca=e.knockout,loadView=function(t,i,o){i=e.getElement(i);var r,n=function(e){var t=document.createElement("div");t.innerHTML=e;for(var i=document.createDocumentFragment();t.firstChild;)i.appendChild(t.firstChild);return i}(t),s=[];for(r=0;r<n.childNodes.length;++r)s.push(n.childNodes[r]);for(i.appendChild(n),r=0;r<s.length;++r){var a=s[r];1!==a.nodeType&&8!==a.nodeType||Ca.applyBindings(o,a)}return s},ya=e.knockout,DistanceLegendViewModel=function(t){if(!e.defined(t)||!e.defined(t.terria))throw new e.DeveloperError("options.terria is required.");this.terria=t.terria,this._removeSubscription=void 0,this._lastLegendUpdate=void 0,this.eventHelper=new e.EventHelper,this.distanceLabel=void 0,this.barWidth=void 0,this.enableDistanceLegend=!e.defined(t.enableDistanceLegend)||t.enableDistanceLegend,ya.track(this,["distanceLabel","barWidth"]),this.eventHelper.add(this.terria.afterWidgetChanged,function(){e.defined(this._removeSubscription)&&(this._removeSubscription(),this._removeSubscription=void 0)},this);var i=this;function addUpdateSubscription(){if(e.defined(i.terria)){var t=i.terria.scene;i._removeSubscription=t.postRender.addEventListener(function(){!function updateDistanceLegendCesium(t,i){if(!t.enableDistanceLegend)return t.barWidth=void 0,void(t.distanceLabel=void 0);var o=e.getTimestamp();if(o<t._lastLegendUpdate+250)return;t._lastLegendUpdate=o;var r=i.canvas.clientWidth,n=i.canvas.clientHeight,s=i.camera.getPickRay(new e.Cartesian2(r/2|0,n-1)),a=i.camera.getPickRay(new e.Cartesian2(1+r/2|0,n-1)),l=i.globe,c=l.pick(s,i),d=l.pick(a,i);if(!e.defined(c)||!e.defined(d))return t.barWidth=void 0,void(t.distanceLabel=void 0);var h=l.ellipsoid.cartesianToCartographic(c),p=l.ellipsoid.cartesianToCartographic(d);Aa.setEndPoints(h,p);for(var u,m=Aa.surfaceDistance,g=100,v=Ea.length-1;!e.defined(u)&&v>=0;--v)Ea[v]/m<g&&(u=Ea[v]);if(e.defined(u)){var f;f=u>=1e3?(u/1e3).toString()+" km":u.toString()+" m",t.barWidth=u/m|0,t.distanceLabel=f}else t.barWidth=void 0,t.distanceLabel=void 0}(this,t)},i)}}addUpdateSubscription(),this.eventHelper.add(this.terria.afterWidgetChanged,function(){addUpdateSubscription()},this)};DistanceLegendViewModel.prototype.destroy=function(){this.eventHelper.removeAll()},DistanceLegendViewModel.prototype.show=function(e){var t;t=this.enableDistanceLegend?'<div class="distance-legend" data-bind="visible: distanceLabel && barWidth"><div class="distance-legend-label" data-bind="text: distanceLabel"></div><div class="distance-legend-scale-bar" data-bind="style: { width: barWidth + \'px\', left: (5 + (125 - barWidth) / 2) + \'px\' }"></div></div>':'<div class="distance-legend" style="display: none;" data-bind="visible: distanceLabel && barWidth"><div class="distance-legend-label" data-bind="text: distanceLabel"></div><div class="distance-legend-scale-bar" data-bind="style: { width: barWidth + \'px\', left: (5 + (125 - barWidth) / 2) + \'px\' }"></div></div>',loadView(t,e,this)},DistanceLegendViewModel.create=function(e){var t=new DistanceLegendViewModel(e);return t.show(e.container),t};var Aa=new e.EllipsoidGeodesic,Ea=[1,2,3,5,10,20,30,50,100,200,300,500,1e3,2e3,3e3,5e3,1e4,2e4,3e4,5e4,1e5,2e5,3e5,5e5,1e6,2e6,3e6,5e6,1e7,2e7,3e7,5e7];var xa=e.knockout,UserInterfaceControl=function(t){if(!e.defined(t))throw new e.DeveloperError("terria is required");this._terria=t,this.name="Unnamed Control",this.text=void 0,this.svgIcon=void 0,this.svgHeight=void 0,this.svgWidth=void 0,this.cssClass=void 0,this.isActive=!1,xa.track(this,["name","svgIcon","svgHeight","svgWidth","cssClass","isActive"])};Object.defineProperties(UserInterfaceControl.prototype,{terria:{get:function(){return this._terria}},hasText:{get:function(){return e.defined(this.text)&&"string"==typeof this.text}}}),UserInterfaceControl.prototype.activate=function(){throw new e.DeveloperError("activate must be implemented in the derived class.")};var NavigationControl=function(e){UserInterfaceControl.apply(this,arguments)};NavigationControl.prototype=Object.create(UserInterfaceControl.prototype);var ResetViewNavigationControl=function(e){NavigationControl.apply(this,arguments),this.name=e.options.resetTooltip?e.options.resetTooltip:"重置视图",this.navigationLocked=!1,this.svgIcon=e.options.resetSvg?"":"M 7.5,0 C 3.375,0 0,3.375 0,7.5 0,11.625 3.375,15 7.5,15 c 3.46875,0 6.375,-2.4375 7.21875,-5.625 l -1.96875,0 C 12,11.53125 9.9375,13.125 7.5,13.125 4.40625,13.125 1.875,10.59375 1.875,7.5 1.875,4.40625 4.40625,1.875 7.5,1.875 c 1.59375,0 2.90625,0.65625 3.9375,1.6875 l -3,3 6.5625,0 L 15,0 12.75,2.25 C 11.4375,0.84375 9.5625,0 7.5,0 z",this.resetSvg=e.options.resetSvg,this.resetSuccess=e.options.resetSuccess,this.svgHeight=15,this.svgWidth=15,this.cssClass="navigation-control-icon-reset"};(ResetViewNavigationControl.prototype=Object.create(NavigationControl.prototype)).setNavigationLocked=function(e){this.navigationLocked=e},ResetViewNavigationControl.prototype.resetView=function(){if(!this.navigationLocked){var t=this.terria.scene;if(t.screenSpaceCameraController.enableInputs){this.isActive=!0;var i=t.camera;if(e.defined(this.terria.trackedEntity)){var o=this.terria.trackedEntity;this.terria.trackedEntity=void 0,this.terria.trackedEntity=o}else{const o=this.terria.options.duration?this.terria.options.duration:3;if(this.terria.options.defaultResetView){const r=this.terria.options.orientation?this.terria.options.orientation:{heading:e.Math.toRadians(5.729578)};if(this.terria.options.defaultResetView&&this.terria.options.defaultResetView instanceof e.Cartographic)i.flyTo({destination:t.globe.ellipsoid.cartographicToCartesian(this.terria.options.defaultResetView),orientation:r,duration:o});else if(this.terria.options.defaultResetView&&this.terria.options.defaultResetView instanceof e.Rectangle)try{e.Rectangle.validate(this.terria.options.defaultResetView),i.flyTo({destination:this.terria.options.defaultResetView,orientation:r,duration:o,complete:this.resetSuccess})}catch(e){console.log("Cesium-navigation/ResetViewNavigationControl: options.defaultResetView Cesium rectangle is invalid!")}}else"function"==typeof i.flyHome?i.flyHome(1):i.flyTo({destination:e.Camera.DEFAULT_VIEW_RECTANGLE,duration:o})}this.isActive=!1}}},ResetViewNavigationControl.prototype.activate=function(){this.resetView()};var wa={},Pa=new e.Cartographic,Sa=new e.Ray;wa.getCameraFocus=function(t,i,o){var r=t.scene,n=r.camera;if(r.mode!==e.SceneMode.MORPHING&&(e.defined(o)||(o=new e.Cartesian3),e.defined(t.trackedEntity)?o=t.trackedEntity.position.getValue(t.clock.currentTime,o):(Sa.origin=n.positionWC,Sa.direction=n.directionWC,o=r.globe.pick(Sa,r,o)),e.defined(o)))return r.mode===e.SceneMode.SCENE2D||r.mode===e.SceneMode.COLUMBUS_VIEW?(o=n.worldToCameraCoordinatesPoint(o,o),i&&(o=r.globe.ellipsoid.cartographicToCartesian(r.mapProjection.unproject(o,Pa),o))):i||(o=n.worldToCameraCoordinatesPoint(o,o)),o};var ZoomNavigationControl=function(e,t){NavigationControl.apply(this,arguments),this.name=t?e.options.zoomInTooltip?e.options.zoomInTooltip:"放大":e.options.zoomOutTooltip?e.options.zoomOutTooltip:"缩小",t?e.options.zoomInSvg?this.zoomInSvg=e.options.zoomInSvg:this.text="+":e.options.zoomOutSvg?this.zoomOutSvg=e.options.zoomOutSvg:this.text="-",this.cssClass="navigation-control-icon-zoom-"+(t?"in":"out"),this.relativeAmount=2,t&&(this.relativeAmount=1/this.relativeAmount)};ZoomNavigationControl.prototype.relativeAmount=1,(ZoomNavigationControl.prototype=Object.create(NavigationControl.prototype)).activate=function(){this.zoom(this.relativeAmount)};var Ia=new e.Cartesian3;ZoomNavigationControl.prototype.zoom=function(t){if(this.isActive=!0,e.defined(this.terria)){var i=this.terria.scene,o=i.screenSpaceCameraController;if(!o.enableInputs||!o.enableZoom)return;var r,n=i.camera;switch(i.mode){case e.SceneMode.MORPHING:break;case e.SceneMode.SCENE2D:n.zoomIn(n.positionCartographic.height*(1-this.relativeAmount));break;default:var s;if(s=e.defined(this.terria.trackedEntity)?new e.Cartesian3:wa.getCameraFocus(this.terria,!1),e.defined(s))r={direction:n.direction,up:n.up};else{var a=new e.Ray(n.worldToCameraCoordinatesPoint(i.globe.ellipsoid.cartographicToCartesian(n.positionCartographic)),n.directionWC);s=e.IntersectionTests.grazingAltitudeLocation(a,i.globe.ellipsoid),r={heading:n.heading,pitch:n.pitch,roll:n.roll}}if(n.position.z>=406944828719368.56)return;var l=e.Cartesian3.subtract(n.position,s,Ia),c=e.Cartesian3.multiplyByScalar(l,t,l),d=e.Cartesian3.add(s,c,s);e.defined(this.terria.trackedEntity)||i.mode===e.SceneMode.COLUMBUS_VIEW?n.position=d:n.flyTo({destination:d,orientation:r,duration:.5,convert:!1})}}this.isActive=!1};var ba=e.knockout,NavigationViewModel=function(t){this.terria=t.terria,this.eventHelper=new e.EventHelper,this.enableZoomControls=!e.defined(t.enableZoomControls)||t.enableZoomControls,this.enableCompass=!e.defined(t.enableCompass)||t.enableCompass,this.navigationLocked=!1,this.controls=t.controls,e.defined(this.controls)||(this.controls=[new ZoomNavigationControl(this.terria,!0),new ResetViewNavigationControl(this.terria),new ZoomNavigationControl(this.terria,!1)]),this.svgCompassOuterRing="m 66.5625,0 0,15.15625 3.71875,0 0,-10.40625 5.5,10.40625 4.375,0 0,-15.15625 -3.71875,0 0,10.40625 L 70.9375,0 66.5625,0 z M 72.5,20.21875 c -28.867432,0 -52.28125,23.407738 -52.28125,52.28125 0,28.87351 23.413818,52.3125 52.28125,52.3125 28.86743,0 52.28125,-23.43899 52.28125,-52.3125 0,-28.873512 -23.41382,-52.28125 -52.28125,-52.28125 z m 0,1.75 c 13.842515,0 26.368948,5.558092 35.5,14.5625 l -11.03125,11 0.625,0.625 11.03125,-11 c 8.9199,9.108762 14.4375,21.579143 14.4375,35.34375 0,13.764606 -5.5176,26.22729 -14.4375,35.34375 l -11.03125,-11 -0.625,0.625 11.03125,11 c -9.130866,9.01087 -21.658601,14.59375 -35.5,14.59375 -13.801622,0 -26.321058,-5.53481 -35.4375,-14.5 l 11.125,-11.09375 c 6.277989,6.12179 14.857796,9.90625 24.3125,9.90625 19.241896,0 34.875,-15.629154 34.875,-34.875 0,-19.245847 -15.633104,-34.84375 -34.875,-34.84375 -9.454704,0 -18.034511,3.760884 -24.3125,9.875 L 37.0625,36.4375 C 46.179178,27.478444 58.696991,21.96875 72.5,21.96875 z m -0.875,0.84375 0,13.9375 1.75,0 0,-13.9375 -1.75,0 z M 36.46875,37.0625 47.5625,48.15625 C 41.429794,54.436565 37.65625,63.027539 37.65625,72.5 c 0,9.472461 3.773544,18.055746 9.90625,24.34375 L 36.46875,107.9375 c -8.96721,-9.1247 -14.5,-21.624886 -14.5,-35.4375 0,-13.812615 5.53279,-26.320526 14.5,-35.4375 z M 72.5,39.40625 c 18.297686,0 33.125,14.791695 33.125,33.09375 0,18.302054 -14.827314,33.125 -33.125,33.125 -18.297687,0 -33.09375,-14.822946 -33.09375,-33.125 0,-18.302056 14.796063,-33.09375 33.09375,-33.09375 z M 22.84375,71.625 l 0,1.75 13.96875,0 0,-1.75 -13.96875,0 z m 85.5625,0 0,1.75 14,0 0,-1.75 -14,0 z M 71.75,108.25 l 0,13.9375 1.71875,0 0,-13.9375 -1.71875,0 z",this.svgCompassGyro="m 72.71875,54.375 c -0.476702,0 -0.908208,0.245402 -1.21875,0.5625 -0.310542,0.317098 -0.551189,0.701933 -0.78125,1.1875 -0.172018,0.363062 -0.319101,0.791709 -0.46875,1.25 -6.91615,1.075544 -12.313231,6.656514 -13,13.625 -0.327516,0.117495 -0.661877,0.244642 -0.9375,0.375 -0.485434,0.22959 -0.901634,0.471239 -1.21875,0.78125 -0.317116,0.310011 -0.5625,0.742111 -0.5625,1.21875 l 0.03125,0 c 0,0.476639 0.245384,0.877489 0.5625,1.1875 0.317116,0.310011 0.702066,0.58291 1.1875,0.8125 0.35554,0.168155 0.771616,0.32165 1.21875,0.46875 1.370803,6.10004 6.420817,10.834127 12.71875,11.8125 0.146999,0.447079 0.30025,0.863113 0.46875,1.21875 0.230061,0.485567 0.470708,0.870402 0.78125,1.1875 0.310542,0.317098 0.742048,0.5625 1.21875,0.5625 0.476702,0 0.876958,-0.245402 1.1875,-0.5625 0.310542,-0.317098 0.582439,-0.701933 0.8125,-1.1875 0.172018,-0.363062 0.319101,-0.791709 0.46875,-1.25 6.249045,-1.017063 11.256351,-5.7184 12.625,-11.78125 0.447134,-0.1471 0.86321,-0.300595 1.21875,-0.46875 0.485434,-0.22959 0.901633,-0.502489 1.21875,-0.8125 0.317117,-0.310011 0.5625,-0.710861 0.5625,-1.1875 l -0.03125,0 c 0,-0.476639 -0.245383,-0.908739 -0.5625,-1.21875 C 89.901633,71.846239 89.516684,71.60459 89.03125,71.375 88.755626,71.244642 88.456123,71.117495 88.125,71 87.439949,64.078341 82.072807,58.503735 75.21875,57.375 c -0.15044,-0.461669 -0.326927,-0.884711 -0.5,-1.25 -0.230061,-0.485567 -0.501958,-0.870402 -0.8125,-1.1875 -0.310542,-0.317098 -0.710798,-0.5625 -1.1875,-0.5625 z m -0.0625,1.40625 c 0.03595,-0.01283 0.05968,0 0.0625,0 0.0056,0 0.04321,-0.02233 0.1875,0.125 0.144288,0.147334 0.34336,0.447188 0.53125,0.84375 0.06385,0.134761 0.123901,0.309578 0.1875,0.46875 -0.320353,-0.01957 -0.643524,-0.0625 -0.96875,-0.0625 -0.289073,0 -0.558569,0.04702 -0.84375,0.0625 C 71.8761,57.059578 71.936151,56.884761 72,56.75 c 0.18789,-0.396562 0.355712,-0.696416 0.5,-0.84375 0.07214,-0.07367 0.120304,-0.112167 0.15625,-0.125 z m 0,2.40625 c 0.448007,0 0.906196,0.05436 1.34375,0.09375 0.177011,0.592256 0.347655,1.271044 0.5,2.03125 0.475097,2.370753 0.807525,5.463852 0.9375,8.9375 -0.906869,-0.02852 -1.834463,-0.0625 -2.78125,-0.0625 -0.92298,0 -1.802327,0.03537 -2.6875,0.0625 0.138529,-3.473648 0.493653,-6.566747 0.96875,-8.9375 0.154684,-0.771878 0.320019,-1.463985 0.5,-2.0625 0.405568,-0.03377 0.804291,-0.0625 1.21875,-0.0625 z m -2.71875,0.28125 c -0.129732,0.498888 -0.259782,0.987558 -0.375,1.5625 -0.498513,2.487595 -0.838088,5.693299 -0.96875,9.25 -3.21363,0.15162 -6.119596,0.480068 -8.40625,0.9375 -0.682394,0.136509 -1.275579,0.279657 -1.84375,0.4375 0.799068,-6.135482 5.504716,-11.036454 11.59375,-12.1875 z M 75.5,58.5 c 6.043169,1.18408 10.705093,6.052712 11.5,12.15625 -0.569435,-0.155806 -1.200273,-0.302525 -1.875,-0.4375 -2.262525,-0.452605 -5.108535,-0.783809 -8.28125,-0.9375 -0.130662,-3.556701 -0.470237,-6.762405 -0.96875,-9.25 C 75.761959,59.467174 75.626981,58.990925 75.5,58.5 z m -2.84375,12.09375 c 0.959338,0 1.895843,0.03282 2.8125,0.0625 C 75.48165,71.267751 75.5,71.871028 75.5,72.5 c 0,1.228616 -0.01449,2.438313 -0.0625,3.59375 -0.897358,0.0284 -1.811972,0.0625 -2.75,0.0625 -0.927373,0 -1.831062,-0.03473 -2.71875,-0.0625 -0.05109,-1.155437 -0.0625,-2.365134 -0.0625,-3.59375 0,-0.628972 0.01741,-1.232249 0.03125,-1.84375 0.895269,-0.02827 1.783025,-0.0625 2.71875,-0.0625 z M 68.5625,70.6875 c -0.01243,0.60601 -0.03125,1.189946 -0.03125,1.8125 0,1.22431 0.01541,2.407837 0.0625,3.5625 -3.125243,-0.150329 -5.92077,-0.471558 -8.09375,-0.90625 -0.784983,-0.157031 -1.511491,-0.316471 -2.125,-0.5 -0.107878,-0.704096 -0.1875,-1.422089 -0.1875,-2.15625 0,-0.115714 0.02849,-0.228688 0.03125,-0.34375 0.643106,-0.20284 1.389577,-0.390377 2.25,-0.5625 2.166953,-0.433487 4.97905,-0.75541 8.09375,-0.90625 z m 8.3125,0.03125 c 3.075121,0.15271 5.824455,0.446046 7.96875,0.875 0.857478,0.171534 1.630962,0.360416 2.28125,0.5625 0.0027,0.114659 0,0.228443 0,0.34375 0,0.735827 -0.07914,1.450633 -0.1875,2.15625 -0.598568,0.180148 -1.29077,0.34562 -2.0625,0.5 -2.158064,0.431708 -4.932088,0.754666 -8.03125,0.90625 0.04709,-1.154663 0.0625,-2.33819 0.0625,-3.5625 0,-0.611824 -0.01924,-1.185379 -0.03125,-1.78125 z M 57.15625,72.5625 c 0.0023,0.572772 0.06082,1.131112 0.125,1.6875 -0.125327,-0.05123 -0.266577,-0.10497 -0.375,-0.15625 -0.396499,-0.187528 -0.665288,-0.387337 -0.8125,-0.53125 -0.147212,-0.143913 -0.15625,-0.182756 -0.15625,-0.1875 0,-0.0047 -0.02221,-0.07484 0.125,-0.21875 0.147212,-0.143913 0.447251,-0.312472 0.84375,-0.5 0.07123,-0.03369 0.171867,-0.06006 0.25,-0.09375 z m 31.03125,0 c 0.08201,0.03503 0.175941,0.05872 0.25,0.09375 0.396499,0.187528 0.665288,0.356087 0.8125,0.5 0.14725,0.14391 0.15625,0.21405 0.15625,0.21875 0,0.0047 -0.009,0.04359 -0.15625,0.1875 -0.147212,0.143913 -0.416001,0.343722 -0.8125,0.53125 -0.09755,0.04613 -0.233314,0.07889 -0.34375,0.125 0.06214,-0.546289 0.09144,-1.094215 0.09375,-1.65625 z m -29.5,3.625 c 0.479308,0.123125 0.983064,0.234089 1.53125,0.34375 2.301781,0.460458 5.229421,0.787224 8.46875,0.9375 0.167006,2.84339 0.46081,5.433176 0.875,7.5 0.115218,0.574942 0.245268,1.063612 0.375,1.5625 -5.463677,-1.028179 -9.833074,-5.091831 -11.25,-10.34375 z m 27.96875,0 C 85.247546,81.408945 80.919274,85.442932 75.5,86.5 c 0.126981,-0.490925 0.261959,-0.967174 0.375,-1.53125 0.41419,-2.066824 0.707994,-4.65661 0.875,-7.5 3.204493,-0.15162 6.088346,-0.480068 8.375,-0.9375 0.548186,-0.109661 1.051942,-0.220625 1.53125,-0.34375 z M 70.0625,77.53125 c 0.865391,0.02589 1.723666,0.03125 2.625,0.03125 0.912062,0 1.782843,-0.0048 2.65625,-0.03125 -0.165173,2.736408 -0.453252,5.207651 -0.84375,7.15625 -0.152345,0.760206 -0.322989,1.438994 -0.5,2.03125 -0.437447,0.03919 -0.895856,0.0625 -1.34375,0.0625 -0.414943,0 -0.812719,-0.02881 -1.21875,-0.0625 -0.177011,-0.592256 -0.347655,-1.271044 -0.5,-2.03125 -0.390498,-1.948599 -0.700644,-4.419842 -0.875,-7.15625 z m 1.75,10.28125 c 0.284911,0.01545 0.554954,0.03125 0.84375,0.03125 0.325029,0 0.648588,-0.01171 0.96875,-0.03125 -0.05999,0.148763 -0.127309,0.31046 -0.1875,0.4375 -0.18789,0.396562 -0.386962,0.696416 -0.53125,0.84375 -0.144288,0.147334 -0.181857,0.125 -0.1875,0.125 -0.0056,0 -0.07446,0.02233 -0.21875,-0.125 C 72.355712,88.946416 72.18789,88.646562 72,88.25 71.939809,88.12296 71.872486,87.961263 71.8125,87.8125 z",this.svgCompassRotationMarker="M 72.46875,22.03125 C 59.505873,22.050338 46.521615,27.004287 36.6875,36.875 L 47.84375,47.96875 C 61.521556,34.240041 83.442603,34.227389 97.125,47.90625 l 11.125,-11.125 C 98.401629,26.935424 85.431627,22.012162 72.46875,22.03125 z",this.showCompass=e.defined(this.terria)&&this.enableCompass,this.heading=this.showCompass?this.terria.scene.camera.heading:0,this.isOrbiting=!1,this.orbitCursorAngle=0,this.orbitCursorOpacity=0,this.orbitLastTimestamp=0,this.orbitFrame=void 0,this.orbitIsLook=!1,this.orbitMouseMoveFunction=void 0,this.orbitMouseUpFunction=void 0,this.isRotating=!1,this.rotateInitialCursorAngle=void 0,this.rotateFrame=void 0,this.rotateIsLook=!1,this.rotateMouseMoveFunction=void 0,this.rotateMouseUpFunction=void 0,this._unsubcribeFromPostRender=void 0,ba.track(this,["controls","showCompass","heading","isOrbiting","orbitCursorAngle","isRotating"]);var i=this;function widgetChange(){e.defined(i.terria)?(i._unsubcribeFromPostRender&&(i._unsubcribeFromPostRender(),i._unsubcribeFromPostRender=void 0),i.showCompass=i.enableCompass,i._unsubcribeFromPostRender=i.terria.scene.postRender.addEventListener(function(){i.heading=i.terria.scene.camera.heading})):(i._unsubcribeFromPostRender&&(i._unsubcribeFromPostRender(),i._unsubcribeFromPostRender=void 0),i.showCompass=!1)}NavigationViewModel.prototype.setNavigationLocked=function(e){this.navigationLocked=e,this.controls&&this.controls.length>1&&this.controls[1].setNavigationLocked(this.navigationLocked)},this.eventHelper.add(this.terria.afterWidgetChanged,widgetChange,this),widgetChange()};NavigationViewModel.prototype.destroy=function(){this.eventHelper.removeAll()},NavigationViewModel.prototype.show=function(e){const t="</div>",i=">",o=' style="display: none;"',r='<div class="compass"',n=void 0===this.terria.options.enableCompassOuterRing||this.terria.options.enableCompassOuterRing?'title="" data-bind="visible: showCompass, event: { mousedown: handleMouseDown,touchstart:handleMouseDown, dblclick: handleDoubleClick }">':'title="" data-bind="visible: showCompass">',s=" <div class=\"compass-rotation-marker\" data-bind=\"visible: isOrbiting, style: { transform: 'rotate(-' + orbitCursorAngle + 'rad)', '-webkit-transform': 'rotate(-' + orbitCursorAngle + 'rad)', opacity: orbitCursorOpacity }",a=s+', cesiumSvgPath: { path: svgCompassRotationMarker, width: 145, height: 145 }"'+i,l=s+'"'+i+this.terria.options.compassRotationMarkerSvg,c=(this.terria.options.compassRotationMarkerSvg?l:a)+t,d=" <div class=\"compass-outer-ring\" title=\"\" data-bind=\"style: { transform: 'rotate(-' + heading + 'rad)', '-webkit-transform': 'rotate(-' + heading + 'rad)' }",h=d+', cesiumSvgPath: { path: svgCompassOuterRing, width: 145, height: 145 }"'+i,p=d+'"'+i+this.terria.options.compassOuterRingSvg,u=(this.terria.options.compassOuterRingSvg?p:h)+t,m=' <div class="compass-gyro" data-bind="css: { \'compass-gyro-active\': isOrbiting }',g=m+',cesiumSvgPath: { path: svgCompassGyro, width: 145, height: 145 } "'+i,v=m+'"'+i+this.terria.options.compassGyroSvg,f=n+'<div class="compass-outer-ring-background"></div>'+c+u+' <div class="compass-gyro-background"></div>'+((this.terria.options.compassGyroSvg?v:g)+t)+t,C=r+f,y=r+o+f,A='<div class="navigation-controls"',E=this.terria.options.resetSvg,x=this.terria.options.zoomInSvg,w=this.terria.options.zoomOutSvg,P='>\x3c!-- ko foreach: controls --\x3e<div data-bind="click: activate, attr: { title: $data.name }, css: $root.isLastControl($data) ? \'navigation-control-last\' : \'navigation-control\' "> \x3c!-- ko if: $data.hasText --\x3e <div data-bind="text: $data.text, css: $data.isActive ? \'navigation-control-icon-active \' + $data.cssClass : $data.cssClass"></div> \x3c!-- /ko --\x3e \x3c!-- ko ifnot: $data.hasText --\x3e \x3c!-- ko if: $data.svgIcon --\x3e <div data-bind="cesiumSvgPath: { path: $data.svgIcon, width: $data.svgWidth, height: $data.svgHeight }, css: $data.isActive ? \'navigation-control-icon-active \' + $data.cssClass : $data.cssClass"></div> \x3c!-- /ko --\x3e \x3c!-- ko ifnot: $data.svgIcon --\x3e \x3c!-- ko if: $data.resetSvg --\x3e <div class="navigation-control-icon-svg reset" onclick="'+this.terria.options.reset+'">'+E+'</div> \x3c!-- /ko --\x3e \x3c!-- ko ifnot: $data.resetSvg --\x3e \x3c!-- ko if: $data.zoomInSvg --\x3e <div class="navigation-control-icon-svg" zoomin>'+x+'</div> \x3c!-- /ko --\x3e \x3c!-- ko ifnot: $data.zoomInSvg --\x3e \x3c!-- ko if: $data.zoomOutSvg --\x3e <div class="navigation-control-icon-svg zoomout">'+w+"</div> \x3c!-- /ko --\x3e \x3c!-- /ko --\x3e \x3c!-- /ko --\x3e \x3c!-- /ko --\x3e \x3c!-- /ko --\x3e </div> \x3c!-- /ko --\x3e"+t,S=A+P,I=A+o+i+P,b=(this.enableCompass?C:y)+(this.enableZoomControls?S:I);loadView(b,e,this)},NavigationViewModel.prototype.add=function(e){this.controls.push(e)},NavigationViewModel.prototype.remove=function(e){this.controls.remove(e)},NavigationViewModel.prototype.isLastControl=function(e){return e===this.controls[this.controls.length-1]};var Ra=new e.Cartesian2;const getClientXY=e=>{let t;t=e.touches?e.touches[0]:e;const{clientX:i,clientY:o}=t;return{clientX:i,clientY:o}};NavigationViewModel.prototype.handleMouseDown=function(t,i){const{clientX:o,clientY:r}=getClientXY(i);if(this.terria.scene.mode===e.SceneMode.MORPHING)return!0;if(t.navigationLocked)return!0;var n=i.currentTarget,s=i.currentTarget.getBoundingClientRect(),a=s.width/2,l=new e.Cartesian2((s.right-s.left)/2,(s.bottom-s.top)/2),c=new e.Cartesian2(o-s.left,r-s.top),d=e.Cartesian2.subtract(c,l,Ra),h=e.Cartesian2.magnitude(d)/a;if(h<50/145)!function orbit(t,i,o){var r=t.terria.scene,n=r.screenSpaceCameraController;if(r.mode===e.SceneMode.MORPHING||!n.enableInputs)return;if(t.navigationLocked)return!0;switch(r.mode){case e.SceneMode.COLUMBUS_VIEW:if(n.enableLook)break;if(!n.enableTranslate||!n.enableTilt)return;break;case e.SceneMode.SCENE3D:if(n.enableLook)break;if(!n.enableTilt||!n.enableRotate)return;break;case e.SceneMode.SCENE2D:if(!n.enableTranslate)return}removeOrbitEventListener(t),e.defined(t.orbitTickFunction)&&t.terria.clock.onTick.removeEventListener(t.orbitTickFunction);t.orbitMouseMoveFunction=void 0,t.orbitMouseUpFunction=void 0,t.orbitTickFunction=void 0,t.isOrbiting=!0,t.orbitLastTimestamp=e.getTimestamp();var s=r.camera;if(e.defined(t.terria.trackedEntity))t.orbitFrame=void 0,t.orbitIsLook=!1;else{var a=wa.getCameraFocus(t.terria,!0,Da);e.defined(a)?(t.orbitFrame=e.Transforms.eastNorthUpToFixedFrame(a,r.globe.ellipsoid,Ta),t.orbitIsLook=!1):(t.orbitFrame=e.Transforms.eastNorthUpToFixedFrame(s.positionWC,r.globe.ellipsoid,Ta),t.orbitIsLook=!0)}function updateAngleAndOpacity(i,o){var r=Math.atan2(-i.y,i.x);t.orbitCursorAngle=e.Math.zeroToTwoPi(r-e.Math.PI_OVER_TWO);var n=e.Cartesian2.magnitude(i),s=o/2,a=Math.min(n/s,1),l=.5*a*a+.5;t.orbitCursorOpacity=l}t.orbitTickFunction=function(i){var o,n=e.getTimestamp(),a=(n-t.orbitLastTimestamp)*(2.5*(t.orbitCursorOpacity-.5)/1e3),l=t.orbitCursorAngle+e.Math.PI_OVER_TWO,c=Math.cos(l)*a,d=Math.sin(l)*a;if(t.navigationLocked)return!0;e.defined(t.orbitFrame)&&(o=e.Matrix4.clone(s.transform,_a),s.lookAtTransform(t.orbitFrame)),r.mode===e.SceneMode.SCENE2D?s.move(new e.Cartesian3(c,d,0),Math.max(r.canvas.clientWidth,r.canvas.clientHeight)/100*s.positionCartographic.height*a):t.orbitIsLook?(s.look(e.Cartesian3.UNIT_Z,-c),s.look(s.right,-d)):(s.rotateLeft(c),s.rotateUp(d)),e.defined(t.orbitFrame)&&s.lookAtTransform(o),t.orbitLastTimestamp=n},t.orbitMouseMoveFunction=function(t){const{clientX:o,clientY:r}=getClientXY(t);var n=i.getBoundingClientRect(),s=new e.Cartesian2((n.right-n.left)/2,(n.bottom-n.top)/2),a=new e.Cartesian2(o-n.left,r-n.top);updateAngleAndOpacity(e.Cartesian2.subtract(a,s,Ra),n.width)},t.orbitMouseUpFunction=function(i){t.isOrbiting=!1,removeOrbitEventListener(t),e.defined(t.orbitTickFunction)&&t.terria.clock.onTick.removeEventListener(t.orbitTickFunction),t.orbitMouseMoveFunction=void 0,t.orbitMouseUpFunction=void 0,t.orbitTickFunction=void 0},addOrbitEventListener(t),t.terria.clock.onTick.addEventListener(t.orbitTickFunction),updateAngleAndOpacity(o,i.getBoundingClientRect().width)}(this,n,d);else{if(!(h<1))return!0;!function rotate(t,i,o){var r,n=t.terria.scene,s=n.camera,a=n.screenSpaceCameraController;if(n.mode===e.SceneMode.MORPHING||n.mode===e.SceneMode.SCENE2D||!a.enableInputs)return;if(t.navigationLocked)return!0;if(!a.enableLook&&(n.mode===e.SceneMode.COLUMBUS_VIEW||n.mode===e.SceneMode.SCENE3D&&!a.enableRotate))return;if(removeRotateEventListener(t),t.rotateMouseMoveFunction=void 0,t.rotateMouseUpFunction=void 0,t.isRotating=!0,t.rotateInitialCursorAngle=Math.atan2(-o.y,o.x),e.defined(t.terria.trackedEntity))t.rotateFrame=void 0,t.rotateIsLook=!1;else{var l=wa.getCameraFocus(t.terria,!0,Da);e.defined(l)&&(n.mode!==e.SceneMode.COLUMBUS_VIEW||a.enableLook||a.enableTranslate)?(t.rotateFrame=e.Transforms.eastNorthUpToFixedFrame(l,n.globe.ellipsoid,Ta),t.rotateIsLook=!1):(t.rotateFrame=e.Transforms.eastNorthUpToFixedFrame(s.positionWC,n.globe.ellipsoid,Ta),t.rotateIsLook=!0)}e.defined(t.rotateFrame)&&(r=e.Matrix4.clone(s.transform,_a),s.lookAtTransform(t.rotateFrame));t.rotateInitialCameraAngle=-s.heading,e.defined(t.rotateFrame)&&s.lookAtTransform(r);t.rotateMouseMoveFunction=function(o){const{clientX:r,clientY:n}=getClientXY(o);var s,a=i.getBoundingClientRect(),l=new e.Cartesian2((a.right-a.left)/2,(a.bottom-a.top)/2),c=new e.Cartesian2(r-a.left,n-a.top),d=e.Cartesian2.subtract(c,l,Ra),h=Math.atan2(-d.y,d.x)-t.rotateInitialCursorAngle,p=e.Math.zeroToTwoPi(t.rotateInitialCameraAngle-h),u=t.terria.scene.camera;e.defined(t.rotateFrame)&&(s=e.Matrix4.clone(u.transform,_a),u.lookAtTransform(t.rotateFrame));var m=-u.heading;u.rotateRight(p-m),e.defined(t.rotateFrame)&&u.lookAtTransform(s)},t.rotateMouseUpFunction=function(e){t.isRotating=!1,removeRotateEventListener(t),t.rotateMouseMoveFunction=void 0,t.rotateMouseUpFunction=void 0},addRotateEventListener(t)}(this,n,d)}};var _a=new e.Matrix4,Ta=new e.Matrix4,Da=new e.Cartesian3;NavigationViewModel.prototype.handleDoubleClick=function(t,i){var o=t.terria.scene,r=o.camera,n=o.screenSpaceCameraController;if(o.mode===e.SceneMode.MORPHING||!n.enableInputs)return!0;if(t.navigationLocked)return!0;if(o.mode!==e.SceneMode.COLUMBUS_VIEW||n.enableTranslate){if(o.mode===e.SceneMode.SCENE3D||o.mode===e.SceneMode.COLUMBUS_VIEW){if(!n.enableLook)return;if(o.mode===e.SceneMode.SCENE3D&&!n.enableRotate)return}var s=wa.getCameraFocus(t.terria,!0,Da);if(e.defined(s)){var a=o.globe.ellipsoid.cartographicToCartesian(r.positionCartographic,new e.Cartesian3),l=o.globe.ellipsoid.geodeticSurfaceNormal(s),c=new e.BoundingSphere(s,0);r.flyToBoundingSphere(c,{offset:new e.HeadingPitchRange(0,e.Math.PI_OVER_TWO-e.Cartesian3.angleBetween(l,r.directionWC),e.Cartesian3.distance(a,s)),duration:1.5})}else this.controls[1].resetView()}},NavigationViewModel.create=function(e){var t=new NavigationViewModel(e);return t.show(e.container),t};const addOrbitEventListener=e=>{document.addEventListener("mousemove",e.orbitMouseMoveFunction,!1),document.addEventListener("touchmove",e.orbitMouseMoveFunction,!1),document.addEventListener("mouseup",e.orbitMouseUpFunction,!1),document.addEventListener("touchend",e.orbitMouseUpFunction,!1)},addRotateEventListener=e=>{document.addEventListener("mousemove",e.rotateMouseMoveFunction,!1),document.addEventListener("touchmove",e.rotateMouseMoveFunction,!1),document.addEventListener("mouseup",e.rotateMouseUpFunction,!1),document.addEventListener("touchend",e.rotateMouseUpFunction,!1)},removeOrbitEventListener=e=>{document.removeEventListener("mousemove",e.orbitMouseMoveFunction,!1),document.removeEventListener("touchmove",e.orbitMouseMoveFunction,!1),document.removeEventListener("mouseup",e.orbitMouseUpFunction,!1),document.removeEventListener("touchend",e.orbitMouseUpFunction,!1)},removeRotateEventListener=e=>{document.removeEventListener("mousemove",e.rotateMouseMoveFunction,!1),document.removeEventListener("touchmove",e.rotateMouseMoveFunction,!1),document.removeEventListener("mouseup",e.rotateMouseUpFunction,!1),document.removeEventListener("touchend",e.rotateMouseUpFunction,!1)};var Fa=e.Event,CesiumNavigation=function(e){initialize.apply(this,arguments),this._onDestroyListeners=[]};function initialize(t,i){if(!e.defined(t))throw new e.DeveloperError("CesiumWidget or Viewer is required.");var o=e.defined(t.cesiumWidget)?t.cesiumWidget:t,r=document.createElement("div");r.className="cesium-widget-cesiumNavigationContainer",o.container.appendChild(r),this.terria=t,this.terria.options=e.defined(i)?i:{},this.terria.afterWidgetChanged=new Fa,this.terria.beforeWidgetChanged=new Fa,this.container=r,e.defined(this.terria.options.enableDistanceLegend)&&!this.terria.options.enableDistanceLegend||(this.distanceLegendDiv=document.createElement("div"),r.appendChild(this.distanceLegendDiv),this.distanceLegendDiv.setAttribute("id","distanceLegendDiv"),this.distanceLegendViewModel=DistanceLegendViewModel.create({container:this.distanceLegendDiv,terria:this.terria,mapElement:r,enableDistanceLegend:!0})),e.defined(this.terria.options.enableZoomControls)&&!this.terria.options.enableZoomControls||e.defined(this.terria.options.enableCompass)&&!this.terria.options.enableCompass?!e.defined(this.terria.options.enableZoomControls)||this.terria.options.enableZoomControls||e.defined(this.terria.options.enableCompass)&&!this.terria.options.enableCompass?e.defined(this.terria.options.enableZoomControls)&&!this.terria.options.enableZoomControls||!e.defined(this.terria.options.enableCompass)||this.terria.options.enableCompass?e.defined(this.terria.options.enableZoomControls)&&!this.terria.options.enableZoomControls&&e.defined(this.terria.options.enableCompass)&&this.terria.options.enableCompass:(this.navigationDiv=document.createElement("div"),this.navigationDiv.setAttribute("id","navigationDiv"),r.appendChild(this.navigationDiv),this.navigationViewModel=NavigationViewModel.create({container:this.navigationDiv,terria:this.terria,enableZoomControls:!0,enableCompass:!1})):(this.navigationDiv=document.createElement("div"),this.navigationDiv.setAttribute("id","navigationDiv"),r.appendChild(this.navigationDiv),this.navigationViewModel=NavigationViewModel.create({container:this.navigationDiv,terria:this.terria,enableZoomControls:!1,enableCompass:!0})):(this.navigationDiv=document.createElement("div"),this.navigationDiv.setAttribute("id","navigationDiv"),r.appendChild(this.navigationDiv),this.navigationViewModel=NavigationViewModel.create({container:this.navigationDiv,terria:this.terria,enableZoomControls:!0,enableCompass:!0}))}CesiumNavigation.prototype.distanceLegendViewModel=void 0,CesiumNavigation.prototype.navigationViewModel=void 0,CesiumNavigation.prototype.navigationDiv=void 0,CesiumNavigation.prototype.distanceLegendDiv=void 0,CesiumNavigation.prototype.terria=void 0,CesiumNavigation.prototype.container=void 0,CesiumNavigation.prototype._onDestroyListeners=void 0,CesiumNavigation.prototype._navigationLocked=!1,CesiumNavigation.prototype.setNavigationLocked=function(e){this._navigationLocked=e,this.navigationViewModel.setNavigationLocked(this._navigationLocked)},CesiumNavigation.prototype.getNavigationLocked=function(){return this._navigationLocked},CesiumNavigation.prototype.destroy=function(){e.defined(this.navigationViewModel)&&this.navigationViewModel.destroy(),e.defined(this.distanceLegendViewModel)&&this.distanceLegendViewModel.destroy(),e.defined(this.navigationDiv)&&this.navigationDiv.parentNode.removeChild(this.navigationDiv),delete this.navigationDiv,e.defined(this.distanceLegendDiv)&&this.distanceLegendDiv.parentNode.removeChild(this.distanceLegendDiv),delete this.distanceLegendDiv,e.defined(this.container)&&this.container.parentNode.removeChild(this.container),delete this.container;for(var t=0;t<this._onDestroyListeners.length;t++)this._onDestroyListeners[t]()},CesiumNavigation.prototype.addOnDestroyListener=function(e){"function"==typeof e&&this._onDestroyListeners.push(e)},!e.Rectangle.validate&&e.Rectangle._validate&&(e.Rectangle.validate=e.Rectangle._validate);var Ma;const{abs:La,round:Ga}=Math,Ba=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,Oa=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,ka=/^rgba?\s*\(\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i,Na=/^hsla?\s*\(\s*([0-9.]+)\s*[,\s]+\s*([0-9.]+%)\s*[,\s]+\s*([0-9.]+%)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i;var Ha;exports.Color=Ma=class Color{constructor(e=0,t=0,i=0,o=255){this.red=e,this.green=t,this.blue=i,this.alpha=o}clone(e=new Ma){return e.alpha=this.alpha,e.red=this.red,e.green=this.green,e.blue=this.blue,e}toHex(){const e=new ArrayBuffer(4),t=new Uint32Array(e),i=new Uint8Array(e);return i[0]=this.red,i[1]=this.green,i[2]=this.blue,i[3]=this.alpha,t[0]}toCzmColor(){return e.Color.fromBytes(this.red,this.green,this.blue,this.alpha)}toCssColorString(){return 255===this.alpha?`rgb(${this.red}, ${this.green}, ${this.blue})`:`rgba(${this.red}, ${this.green}, ${this.blue}, ${this.alpha/256})`}toHexColorString(){const e=this.red.toString(16).padStart(2,"0"),t=this.green.toString(16).padStart(2,"0"),i=this.blue.toString(16).padStart(2,"0"),o=this.alpha.toString(16).padStart(2,"0");return"ff"===o?`#${e}${t}${i}`:`#${e}${t}${i}${o}`}toString(e="(%r, %g, %b, %a)",t){var i,o,r,n;return e.replace(/%r/g,null!==(i=null==t?void 0:t(this.red,"red"))&&void 0!==i?i:this.red.toString()).replace(/%g/g,null!==(o=null==t?void 0:t(this.green,"green"))&&void 0!==o?o:this.green.toString()).replace(/%b/g,null!==(r=null==t?void 0:t(this.blue,"blue"))&&void 0!==r?r:this.blue.toString()).replace(/%a/g,null!==(n=null==t?void 0:t(this.alpha,"alpha"))&&void 0!==n?n:this.alpha.toString())}withAlpha(e){const t=Ga(255*e),i=this.clone();return i.alpha=t,i}static equals(e,t,i=0){if(e===t)return!0;const o=La(e.red-t.red)<=i,r=La(e.green-t.green)<=i,n=La(e.blue-t.blue)<=i;return La(e.alpha-t.alpha)<=i&&n&&r&&o}static fromHex(e,t=new Ma){const i=new ArrayBuffer(4),o=new Uint32Array(i),r=new Uint8Array(i);return o[0]=e,t.red=r[3],t.green=r[2],t.blue=r[1],t.alpha=r[0],t}static fromHsl(e=0,t=0,i=0,o=1,r=new Ma){let n,s,a;const l=e%360,c=t,d=i,h=(1-La(2*d-1))*c,p=h*(1-La(l/60%2-1)),u=d-h/2;[n,s,a]=l<60?[h,p,0]:l<120?[p,h,0]:l<180?[0,h,p]:l<240?[0,p,h]:l<300?[p,0,h]:[h,0,p];const to255=e=>Ga(255*(e+u));return r.red=to255(n),r.green=to255(s),r.blue=to255(a),r.alpha=Ga(255*o),r}static fromPercentage(e=0,t=0,i=0,o=1,r=new Ma){const n=1===e?255:256*e,s=1===t?255:256*t,a=1===i?255:256*i,l=1===o?255:256*o;return r.red=n,r.green=s,r.blue=a,r.alpha=l,r}static fromCssColorString(e,t=new Ma){var i,o,r,n;const s=Ma[e.toUpperCase()];if(s)return s.clone(t);let a;const l=e.trim();if(a=Ba.exec(l),null!==a)return t.red=17*parseInt(a[1],16),t.green=17*parseInt(a[2],16),t.blue=17*parseInt(a[3],16),t.alpha=17*parseInt(null!==(i=a[4])&&void 0!==i?i:"f",16),t;if(a=Oa.exec(l),null!==a)return t.red=parseInt(a[1],16),t.green=parseInt(a[2],16),t.blue=parseInt(a[3],16),t.alpha=parseInt(null!==(o=a[4])&&void 0!==o?o:"ff",16),t;if(a=ka.exec(l),null!==a)return t.red=parseFloat(a[1])*("%"===a[1].slice(-1)?2.55:1),t.green=parseFloat(a[2])*("%"===a[1].slice(-1)?2.55:1),t.blue=parseFloat(a[3])*("%"===a[1].slice(-1)?2.55:1),t.alpha=255*parseFloat(null!==(r=a[4])&&void 0!==r?r:"1.0"),t;if(a=Na.exec(l),null!==a){const[e,i,o,r]=[parseFloat(a[1]),parseFloat(a[2])/100,parseFloat(a[3])/100,parseFloat(null!==(n=a[4])&&void 0!==n?n:"1")];return Ma.fromHsl(e,i,o,r,t)}}static fromCzmColor(e,t=new Ma){return Ma.fromPercentage(e.red,e.green,e.blue,e.alpha,t)}static lerp(t,i,o,r=new Ma){return r.red=e.Math.lerp(t.red,i.red,o),r.green=e.Math.lerp(t.green,i.green,o),r.blue=e.Math.lerp(t.blue,i.blue,o),r.alpha=e.Math.lerp(t.alpha,i.alpha,o),r}},__decorate([validate,__param(0,is(exports.Color))],exports.Color.prototype,"clone",null),__decorate([validate,__param(0,is(String)),__param(1,is(Function))],exports.Color.prototype,"toString",null),__decorate([validate,__param(0,positive()),__param(0,lessThan(1)),__param(0,is(Number))],exports.Color.prototype,"withAlpha",null),__decorate([constant(exports.Color.fromCssColorString("#f0f8ff"))],exports.Color,"ALICEBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#faebd7"))],exports.Color,"ANTIQUEWHITE",void 0),__decorate([constant(exports.Color.fromCssColorString("#00ffff"))],exports.Color,"AQUA",void 0),__decorate([constant(exports.Color.fromCssColorString("#7fffd4"))],exports.Color,"AQUAMARINE",void 0),__decorate([constant(exports.Color.fromCssColorString("#f0ffff"))],exports.Color,"AZURE",void 0),__decorate([constant(exports.Color.fromCssColorString("#f5f5dc"))],exports.Color,"BEIGE",void 0),__decorate([constant(exports.Color.fromCssColorString("#ffe4c4"))],exports.Color,"BISQUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#000000"))],exports.Color,"BLACK",void 0),__decorate([constant(exports.Color.fromCssColorString("#ffebcd"))],exports.Color,"BLANCHEDALMOND",void 0),__decorate([constant(exports.Color.fromCssColorString("#0000ff"))],exports.Color,"BLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#8a2be2"))],exports.Color,"BLUEVIOLET",void 0),__decorate([constant(exports.Color.fromCssColorString("#a52a2a"))],exports.Color,"BROWN",void 0),__decorate([constant(exports.Color.fromCssColorString("#deb887"))],exports.Color,"BURLYWOOD",void 0),__decorate([constant(exports.Color.fromCssColorString("#5f9ea0"))],exports.Color,"CADETBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#7fff00"))],exports.Color,"CHARTREUSE",void 0),__decorate([constant(exports.Color.fromCssColorString("#d2691e"))],exports.Color,"CHOCOLATE",void 0),__decorate([constant(exports.Color.fromCssColorString("#ff7f50"))],exports.Color,"CORAL",void 0),__decorate([constant(exports.Color.fromCssColorString("#6495ed"))],exports.Color,"CORNFLOWERBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#fff8dc"))],exports.Color,"CORNSILK",void 0),__decorate([constant(exports.Color.fromCssColorString("#dc143c"))],exports.Color,"CRIMSON",void 0),__decorate([constant(exports.Color.fromCssColorString("#00ffff"))],exports.Color,"CYAN",void 0),__decorate([constant(exports.Color.fromCssColorString("#00008b"))],exports.Color,"DARKBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#008b8b"))],exports.Color,"DARKCYAN",void 0),__decorate([constant(exports.Color.fromCssColorString("#b8860b"))],exports.Color,"DARKGOLDENROD",void 0),__decorate([constant(exports.Color.fromCssColorString("#a9a9a9"))],exports.Color,"DARKGRAY",void 0),__decorate([constant(exports.Color.fromCssColorString("#006400"))],exports.Color,"DARKGREEN",void 0),__decorate([constant(exports.Color.fromCssColorString("#a9a9a9"))],exports.Color,"DARKGREY",void 0),__decorate([constant(exports.Color.fromCssColorString("#bdb76b"))],exports.Color,"DARKKHAKI",void 0),__decorate([constant(exports.Color.fromCssColorString("#8b008b"))],exports.Color,"DARKMAGENTA",void 0),__decorate([constant(exports.Color.fromCssColorString("#556b2f"))],exports.Color,"DARKOLIVEGREEN",void 0),__decorate([constant(exports.Color.fromCssColorString("#ff8c00"))],exports.Color,"DARKORANGE",void 0),__decorate([constant(exports.Color.fromCssColorString("#9932cc"))],exports.Color,"DARKORCHID",void 0),__decorate([constant(exports.Color.fromCssColorString("#8b0000"))],exports.Color,"DARKRED",void 0),__decorate([constant(exports.Color.fromCssColorString("#e9967a"))],exports.Color,"DARKSALMON",void 0),__decorate([constant(exports.Color.fromCssColorString("#8fbc8f"))],exports.Color,"DARKSEAGREEN",void 0),__decorate([constant(exports.Color.fromCssColorString("#483d8b"))],exports.Color,"DARKSLATEBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#2f4f4f"))],exports.Color,"DARKSLATEGRAY",void 0),__decorate([constant(exports.Color.fromCssColorString("#2f4f4f"))],exports.Color,"DARKSLATEGREY",void 0),__decorate([constant(exports.Color.fromCssColorString("#00ced1"))],exports.Color,"DARKTURQUOISE",void 0),__decorate([constant(exports.Color.fromCssColorString("#9400d3"))],exports.Color,"DARKVIOLET",void 0),__decorate([constant(exports.Color.fromCssColorString("#ff1493"))],exports.Color,"DEEPPINK",void 0),__decorate([constant(exports.Color.fromCssColorString("#00bfff"))],exports.Color,"DEEPSKYBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#696969"))],exports.Color,"DIMGRAY",void 0),__decorate([constant(exports.Color.fromCssColorString("#696969"))],exports.Color,"DIMGREY",void 0),__decorate([constant(exports.Color.fromCssColorString("#1e90ff"))],exports.Color,"DODGERBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#b22222"))],exports.Color,"FIREBRICK",void 0),__decorate([constant(exports.Color.fromCssColorString("#fffaf0"))],exports.Color,"FLORALWHITE",void 0),__decorate([constant(exports.Color.fromCssColorString("#228b22"))],exports.Color,"FORESTGREEN",void 0),__decorate([constant(exports.Color.fromCssColorString("#ff00ff"))],exports.Color,"FUCHSIA",void 0),__decorate([constant(exports.Color.fromCssColorString("#dcdcdc"))],exports.Color,"GAINSBORO",void 0),__decorate([constant(exports.Color.fromCssColorString("#f8f8ff"))],exports.Color,"GHOSTWHITE",void 0),__decorate([constant(exports.Color.fromCssColorString("#ffd700"))],exports.Color,"GOLD",void 0),__decorate([constant(exports.Color.fromCssColorString("#daa520"))],exports.Color,"GOLDENROD",void 0),__decorate([constant(exports.Color.fromCssColorString("#808080"))],exports.Color,"GRAY",void 0),__decorate([constant(exports.Color.fromCssColorString("#008000"))],exports.Color,"GREEN",void 0),__decorate([constant(exports.Color.fromCssColorString("#adff2f"))],exports.Color,"GREENYELLOW",void 0),__decorate([constant(exports.Color.fromCssColorString("#808080"))],exports.Color,"GREY",void 0),__decorate([constant(exports.Color.fromCssColorString("#f0fff0"))],exports.Color,"HONEYDEW",void 0),__decorate([constant(exports.Color.fromCssColorString("#ff69b4"))],exports.Color,"HOTPINK",void 0),__decorate([constant(exports.Color.fromCssColorString("#cd5c5c"))],exports.Color,"INDIANRED",void 0),__decorate([constant(exports.Color.fromCssColorString("#4b0082"))],exports.Color,"INDIGO",void 0),__decorate([constant(exports.Color.fromCssColorString("#fffff0"))],exports.Color,"IVORY",void 0),__decorate([constant(exports.Color.fromCssColorString("#f0e68c"))],exports.Color,"KHAKI",void 0),__decorate([constant(exports.Color.fromCssColorString("#e6e6fa"))],exports.Color,"LAVENDER",void 0),__decorate([constant(exports.Color.fromCssColorString("#fff0f5"))],exports.Color,"LAVENDAR_BLUSH",void 0),__decorate([constant(exports.Color.fromCssColorString("#7cfc00"))],exports.Color,"LAWNGREEN",void 0),__decorate([constant(exports.Color.fromCssColorString("#fffacd"))],exports.Color,"LEMONCHIFFON",void 0),__decorate([constant(exports.Color.fromCssColorString("#add8e6"))],exports.Color,"LIGHTBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#f08080"))],exports.Color,"LIGHTCORAL",void 0),__decorate([constant(exports.Color.fromCssColorString("#e0ffff"))],exports.Color,"LIGHTCYAN",void 0),__decorate([constant(exports.Color.fromCssColorString("#fafad2"))],exports.Color,"LIGHTGOLDENRODYELLOW",void 0),__decorate([constant(exports.Color.fromCssColorString("#d3d3d3"))],exports.Color,"LIGHTGRAY",void 0),__decorate([constant(exports.Color.fromCssColorString("#90ee90"))],exports.Color,"LIGHTGREEN",void 0),__decorate([constant(exports.Color.fromCssColorString("#d3d3d3"))],exports.Color,"LIGHTGREY",void 0),__decorate([constant(exports.Color.fromCssColorString("#ffb6c1"))],exports.Color,"LIGHTPINK",void 0),__decorate([constant(exports.Color.fromCssColorString("#20b2aa"))],exports.Color,"LIGHTSEAGREEN",void 0),__decorate([constant(exports.Color.fromCssColorString("#87cefa"))],exports.Color,"LIGHTSKYBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#778899"))],exports.Color,"LIGHTSLATEGRAY",void 0),__decorate([constant(exports.Color.fromCssColorString("#778899"))],exports.Color,"LIGHTSLATEGREY",void 0),__decorate([constant(exports.Color.fromCssColorString("#b0c4de"))],exports.Color,"LIGHTSTEELBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#ffffe0"))],exports.Color,"LIGHTYELLOW",void 0),__decorate([constant(exports.Color.fromCssColorString("#00ff00"))],exports.Color,"LIME",void 0),__decorate([constant(exports.Color.fromCssColorString("#32cd32"))],exports.Color,"LIMEGREEN",void 0),__decorate([constant(exports.Color.fromCssColorString("#faf0e6"))],exports.Color,"LINEN",void 0),__decorate([constant(exports.Color.fromCssColorString("#ff00ff"))],exports.Color,"MAGENTA",void 0),__decorate([constant(exports.Color.fromCssColorString("#800000"))],exports.Color,"MAROON",void 0),__decorate([constant(exports.Color.fromCssColorString("#66cdaa"))],exports.Color,"MEDIUMAQUAMARINE",void 0),__decorate([constant(exports.Color.fromCssColorString("#0000cd"))],exports.Color,"MEDIUMBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#ba55d3"))],exports.Color,"MEDIUMORCHID",void 0),__decorate([constant(exports.Color.fromCssColorString("#9370db"))],exports.Color,"MEDIUMPURPLE",void 0),__decorate([constant(exports.Color.fromCssColorString("#3cb371"))],exports.Color,"MEDIUMSEAGREEN",void 0),__decorate([constant(exports.Color.fromCssColorString("#7b68ee"))],exports.Color,"MEDIUMSLATEBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#00fa9a"))],exports.Color,"MEDIUMSPRINGGREEN",void 0),__decorate([constant(exports.Color.fromCssColorString("#48d1cc"))],exports.Color,"MEDIUMTURQUOISE",void 0),__decorate([constant(exports.Color.fromCssColorString("#c71585"))],exports.Color,"MEDIUMVIOLETRED",void 0),__decorate([constant(exports.Color.fromCssColorString("#191970"))],exports.Color,"MIDNIGHTBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#f5fffa"))],exports.Color,"MINTCREAM",void 0),__decorate([constant(exports.Color.fromCssColorString("#ffe4e1"))],exports.Color,"MISTYROSE",void 0),__decorate([constant(exports.Color.fromCssColorString("#ffe4b5"))],exports.Color,"MOCCASIN",void 0),__decorate([constant(exports.Color.fromCssColorString("#ffdead"))],exports.Color,"NAVAJOWHITE",void 0),__decorate([constant(exports.Color.fromCssColorString("#000080"))],exports.Color,"NAVY",void 0),__decorate([constant(exports.Color.fromCssColorString("#fdf5e6"))],exports.Color,"OLDLACE",void 0),__decorate([constant(exports.Color.fromCssColorString("#808000"))],exports.Color,"OLIVE",void 0),__decorate([constant(exports.Color.fromCssColorString("#6b8e23"))],exports.Color,"OLIVEDRAB",void 0),__decorate([constant(exports.Color.fromCssColorString("#ffa500"))],exports.Color,"ORANGE",void 0),__decorate([constant(exports.Color.fromCssColorString("#ff4500"))],exports.Color,"ORANGERED",void 0),__decorate([constant(exports.Color.fromCssColorString("#da70d6"))],exports.Color,"ORCHID",void 0),__decorate([constant(exports.Color.fromCssColorString("#eee8aa"))],exports.Color,"PALEGOLDENROD",void 0),__decorate([constant(exports.Color.fromCssColorString("#98fb98"))],exports.Color,"PALEGREEN",void 0),__decorate([constant(exports.Color.fromCssColorString("#afeeee"))],exports.Color,"PALETURQUOISE",void 0),__decorate([constant(exports.Color.fromCssColorString("#db7093"))],exports.Color,"PALEVIOLETRED",void 0),__decorate([constant(exports.Color.fromCssColorString("#ffefd5"))],exports.Color,"PAPAYAWHIP",void 0),__decorate([constant(exports.Color.fromCssColorString("#ffdab9"))],exports.Color,"PEACHPUFF",void 0),__decorate([constant(exports.Color.fromCssColorString("#cd853f"))],exports.Color,"PERU",void 0),__decorate([constant(exports.Color.fromCssColorString("#ffc0cb"))],exports.Color,"PINK",void 0),__decorate([constant(exports.Color.fromCssColorString("#dda0dd"))],exports.Color,"PLUM",void 0),__decorate([constant(exports.Color.fromCssColorString("#b0e0e6"))],exports.Color,"POWDERBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#800080"))],exports.Color,"PURPLE",void 0),__decorate([constant(exports.Color.fromCssColorString("#ff0000"))],exports.Color,"RED",void 0),__decorate([constant(exports.Color.fromCssColorString("#bc8f8f"))],exports.Color,"ROSYBROWN",void 0),__decorate([constant(exports.Color.fromCssColorString("#4169e1"))],exports.Color,"ROYALBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#8b4513"))],exports.Color,"SADDLEBROWN",void 0),__decorate([constant(exports.Color.fromCssColorString("#fa8072"))],exports.Color,"SALMON",void 0),__decorate([constant(exports.Color.fromCssColorString("#f4a460"))],exports.Color,"SANDYBROWN",void 0),__decorate([constant(exports.Color.fromCssColorString("#2e8b57"))],exports.Color,"SEAGREEN",void 0),__decorate([constant(exports.Color.fromCssColorString("#fff5ee"))],exports.Color,"SEASHELL",void 0),__decorate([constant(exports.Color.fromCssColorString("#a0522d"))],exports.Color,"SIENNA",void 0),__decorate([constant(exports.Color.fromCssColorString("#c0c0c0"))],exports.Color,"SILVER",void 0),__decorate([constant(exports.Color.fromCssColorString("#87ceeb"))],exports.Color,"SKYBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#6a5acd"))],exports.Color,"SLATEBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#708090"))],exports.Color,"SLATEGRAY",void 0),__decorate([constant(exports.Color.fromCssColorString("#708090"))],exports.Color,"SLATEGREY",void 0),__decorate([constant(exports.Color.fromCssColorString("#fffafa"))],exports.Color,"SNOW",void 0),__decorate([constant(exports.Color.fromCssColorString("#00ff7f"))],exports.Color,"SPRINGGREEN",void 0),__decorate([constant(exports.Color.fromCssColorString("#4682b4"))],exports.Color,"STEELBLUE",void 0),__decorate([constant(exports.Color.fromCssColorString("#d2b48c"))],exports.Color,"TAN",void 0),__decorate([constant(exports.Color.fromCssColorString("#008080"))],exports.Color,"TEAL",void 0),__decorate([constant(exports.Color.fromCssColorString("#d8bfd8"))],exports.Color,"THISTLE",void 0),__decorate([constant(exports.Color.fromCssColorString("#ff6347"))],exports.Color,"TOMATO",void 0),__decorate([constant(exports.Color.fromCssColorString("#40e0d0"))],exports.Color,"TURQUOISE",void 0),__decorate([constant(exports.Color.fromCssColorString("#ee82ee"))],exports.Color,"VIOLET",void 0),__decorate([constant(exports.Color.fromCssColorString("#f5deb3"))],exports.Color,"WHEAT",void 0),__decorate([constant(exports.Color.fromCssColorString("#ffffff"))],exports.Color,"WHITE",void 0),__decorate([constant(exports.Color.fromCssColorString("#f5f5f5"))],exports.Color,"WHITESMOKE",void 0),__decorate([constant(exports.Color.fromCssColorString("#ffff00"))],exports.Color,"YELLOW",void 0),__decorate([constant(exports.Color.fromCssColorString("#9acd32"))],exports.Color,"YELLOWGREEN",void 0),__decorate([constant(new exports.Color(0,0,0,0))],exports.Color,"TRANSPARENT",void 0),__decorate([validate,__param(0,is(exports.Color)),__param(1,is(exports.Color)),__param(2,positive()),__param(2,is(Number))],exports.Color,"equals",null),__decorate([validate,__param(0,positive()),__param(0,is(Number))],exports.Color,"fromHex",null),__decorate([validate,__param(0,positive()),__param(0,lessThan(360)),__param(0,is(Number)),__param(1,positive()),__param(1,lessThan(100)),__param(1,is(Number)),__param(2,positive()),__param(2,lessThan(100)),__param(2,is(Number)),__param(3,positive()),__param(3,lessThan(1)),__param(3,is(Number)),__param(4,is(exports.Color))],exports.Color,"fromHsl",null),__decorate([validate,__param(0,positive()),__param(0,lessThan(1)),__param(0,is(Number)),__param(1,positive()),__param(1,lessThan(1)),__param(1,is(Number)),__param(2,positive()),__param(2,lessThan(1)),__param(2,is(Number)),__param(3,positive()),__param(3,lessThan(1)),__param(3,is(Number)),__param(4,is(exports.Color))],exports.Color,"fromPercentage",null),__decorate([validate,__param(0,is(String)),__param(1,is(exports.Color))],exports.Color,"fromCssColorString",null),__decorate([validate,__param(0,is(e.Color)),__param(1,is(exports.Color))],exports.Color,"fromCzmColor",null),__decorate([validate,__param(0,is(exports.Color)),__param(1,is(exports.Color)),__param(2,positive()),__param(2,is(Number)),__param(3,is(exports.Color))],exports.Color,"lerp",null),exports.Color=Ma=__decorate([validate,__param(0,positive()),__param(0,lessThan(255)),__param(0,is(Number)),__param(1,positive()),__param(1,lessThan(255)),__param(1,is(Number)),__param(2,positive()),__param(2,lessThan(255)),__param(2,is(Number)),__param(3,positive()),__param(3,lessThan(255)),__param(3,is(Number))],exports.Color);const{abs:Wa}=Math;var Ua;exports.Dimension=Ha=class Dimension{constructor(e=0,t=0,i=0,o=0){this.x=e,this.y=t,this.z=i,this.w=o}clone(e=new Ha){return e.x=this.x,e.y=this.y,e.z=this.z,e.w=this.w,e}toArray(e=2){switch(e){case 2:return[this.x,this.y];case 3:return[this.x,this.y,this.z];case 4:return[this.x,this.y,this.z,this.w]}}toCartesian2(){return new e.Cartesian2(this.x,this.y)}toCartesian3(){return new e.Cartesian3(this.x,this.y,this.z)}toCartesian4(){return new e.Cartesian4(this.x,this.y,this.z,this.w)}toString(e="(%x, %y, %z, %w)"){return e.replace(/%x/g,this.x.toString()).replace(/%y/g,this.y.toString()).replace(/%z/g,this.z.toString()).replace(/%w/g,this.w.toString())}static equals(e,t,i=0){if(e===t)return!0;const o=Wa(e.x-t.x)<=i,r=Wa(e.y-t.y)<=i,n=Wa(e.z-t.z)<=i,s=Wa(e.w-t.w)<=i;return o&&r&&n&&s}static fromArray(e){var t,i;return new Ha(e[0],e[1],null!==(t=e[2])&&void 0!==t?t:0,null!==(i=e[3])&&void 0!==i?i:0)}static fromCartesian2(e,t=new Ha){return t.x=e.x,t.y=e.y,t}static fromCartesian3(e,t=new Ha){return t.x=e.x,t.y=e.y,t.z=e.z,t}static fromCartesian4(e,t=new Ha){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t}},__decorate([validate,__param(0,is(exports.Dimension))],exports.Dimension.prototype,"clone",null),__decorate([validate,__param(0,is(String))],exports.Dimension.prototype,"toString",null),__decorate([constant(new exports.Dimension(0,0,0,0))],exports.Dimension,"ZERO",void 0),__decorate([constant(new exports.Dimension(1,1,1,1))],exports.Dimension,"ONE",void 0),__decorate([validate,__param(0,is(exports.Dimension)),__param(1,is(exports.Dimension)),__param(2,positive()),__param(2,is(Number))],exports.Dimension,"equals",null),__decorate([validate,__param(0,moreThan(2,!0,"length")),__param(0,is(Array))],exports.Dimension,"fromArray",null),__decorate([validate,__param(0,is(e.Cartesian2)),__param(1,is(exports.Dimension))],exports.Dimension,"fromCartesian2",null),__decorate([validate,__param(0,is(e.Cartesian3)),__param(1,is(exports.Dimension))],exports.Dimension,"fromCartesian3",null),__decorate([validate,__param(0,is(e.Cartesian4)),__param(1,is(exports.Dimension))],exports.Dimension,"fromCartesian4",null),exports.Dimension=Ha=__decorate([validate,__param(0,is(Number)),__param(1,is(Number)),__param(2,is(Number)),__param(3,is(Number))],exports.Dimension);const{abs:Qa,PI:za}=Math;exports.Hpr=Ua=class Hpr{constructor(e=0,t=0,i=0){this.heading=e%360,this.pitch=t%360,this.roll=i%360}clone(e=new Ua){return e.heading=this.heading,e.pitch=this.pitch,e.roll=this.roll,e}toHeadingPitchRoll(){const t=e.Math.toRadians(this.heading),i=e.Math.toRadians(this.pitch),o=e.Math.toRadians(this.roll);return new e.HeadingPitchRoll(t,i,o)}static equals(e,t,i=0){if(e===t)return!0;const o=Qa(e.heading-t.heading)<=i,r=Qa(e.pitch-t.pitch)<=i,n=Qa(e.roll-t.roll)<=i;return o&&r&&n}static fromHeadingPitchRoll(e,t=new Ua){const i=e.heading*za/360,o=e.pitch*za/360,r=e.roll*za/360;return t.heading=i,t.pitch=o,t.roll=r,t}},__decorate([validate,__param(0,is(exports.Hpr))],exports.Hpr.prototype,"clone",null),__decorate([validate,__param(0,is(exports.Hpr)),__param(1,is(exports.Hpr)),__param(2,positive()),__param(2,is(Number))],exports.Hpr,"equals",null),__decorate([validate,__param(0,is(e.HeadingPitchRoll)),__param(1,is(exports.Hpr))],exports.Hpr,"fromHeadingPitchRoll",null),exports.Hpr=Ua=__decorate([validate,__param(0,is(Number)),__param(1,is(Number)),__param(2,is(Number))],exports.Hpr),exports.AttackArrowDynamic=AttackArrowDynamic,exports.BillboardDynamic=BillboardDynamic,exports.BillboardLayer=BillboardLayer,exports.CircleDynamic=CircleDynamic,exports.CloudLayer=CloudLayer,exports.Cluster=Cluster,exports.Covering=Covering,exports.DiffusePointLayer=DiffusePointLayer,exports.EllipseLayer=EllipseLayer,exports.EllipsoidLayer=EllipsoidLayer,exports.EventBus=EventBus,exports.GraphicsLayer=GraphicsLayer,exports.H337=H337,exports.ImprovedAnimation=ImprovedAnimation,exports.ImprovedScreenSpaceCameraController=ImprovedScreenSpaceCameraController,exports.ImprovedTimeline=ImprovedTimeline,exports.LabelLayer=LabelLayer,exports.ModelDynamic=ModelDynamic,exports.ModelLayer=ModelLayer,exports.ParticleLayer=ParticleLayer,exports.PhasedSensorPrimitive=PhasedSensorPrimitive,exports.PincerArrowDynamic=PincerArrowDynamic,exports.PointDynamic=PointDynamic,exports.PointLayer=PointLayer,exports.PolygonDynamic=PolygonDynamic,exports.PolygonLayer=PolygonLayer,exports.PolylineDynamic=PolylineDynamic,exports.PolylineLayer=PolylineLayer,exports.ProtoDraw=ProtoDraw,exports.Queue=Queue,exports.Radar=Radar,exports.RectangleDynamic=RectangleDynamic,exports.RectangleLayer=RectangleLayer,exports.Runner=Runner,exports.Sensor=Sensor,exports.Stack=Stack,exports.State=State,exports.StraightArrowDynamic=StraightArrowDynamic,exports.StrokeDynamic=StrokeDynamic,exports.WallDynamic=WallDynamic,exports.WallLayer=WallLayer,exports.createEarth=(t,i,o,r)=>{const n=null!=t?t:"GisContainer";if(fa.has(n)){const e=fa.get(n);if(!e._isDestroyed)return e;fa.delete(n)}const s=new exports.Earth(null!=i?i:n,Object.assign({animation:!0,timeline:!0,shouldAnimate:!0,fullscreenButton:!1,geocoder:!1,homeButton:!1,sceneModePicker:!1,scene3DOnly:!1,sceneMode:null==o?void 0:o.sceneMode,selectionIndicator:!1,infoBox:!1,baseLayerPicker:!1,navigationHelpButton:!1,vrButton:!1,shadows:!1,mapMode2D:e.MapMode2D.INFINITE_SCROLL,mapProjection:new e.WebMercatorProjection(e.Ellipsoid.WGS84),baseLayer:e.ImageryLayer.fromProviderAsync(e.TileMapServiceImageryProvider.fromUrl(e.buildModuleUrl("Assets/Textures/NaturalEarthII")),{})},o),r);return fa.set(n,s),s},exports.createNavigation=(t,i)=>new CesiumNavigation(t.viewer,Object.assign({defaultResetView:e.Camera.DEFAULT_VIEW_RECTANGLE,enableCompass:!0,enableZoomControls:!0,enableDistanceLegend:!0,enableCompassOuterRing:!0},i)),exports.recycleEarth=e=>{const t=null!=e?e:"GisContainer",i=fa.get(t);i&&(i.destroy(),fa.delete(t))};
|