// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define(["exports","../../core/has","../../core/mathUtils","../Extent"],function(d,D,q,A){function r(a=y){return[a[0],a[1],a[2],a[3]]}function t(a,b){a!==b&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]);return a}function n(a){return null==a||a[0]>=a[2]?0:a[2]-a[0]}function p(a){return null==a||a[1]>=a[3]?0:a[3]-a[1]}function w(a,b,c){return b>=a[0]&&c>=a[1]&&b<=a[2]&&c<=a[3]}function u(a){return null!=a&&4===a.length}const x=[Infinity,Infinity,-Infinity,-Infinity],y=[0,0,0,0];d.allFinite=function(a){for(let b= 0;4>b;b++)if(!isFinite(a[b]))return!1;return!0};d.area=function(a){return n(a)*p(a)};d.center=function(a,b=[0,0]){b[0]=(a[0]+a[2])/2;b[1]=(a[1]+a[3])/2;return b};d.clone=function(a){return[a[0],a[1],a[2],a[3]]};d.contains=function(a,b){return b[0]>=a[0]&&b[2]<=a[2]&&b[1]>=a[1]&&b[3]<=a[3]};d.containsPoint=function(a,b){return w(a,b[0],b[1])};d.containsPointObject=function(a,b){return w(a,b.x,b.y)};d.containsPointWithMargin=function(a,b,c){return b[0]>=a[0]-c&&b[1]>=a[1]-c&&b[0]<=a[2]+c&&b[1]<=a[3]+ c};d.containsXY=w;d.containsXYWithMargin=function(a,b,c,e){return b>=a[0]-e&&c>=a[1]-e&&b<=a[2]+e&&c<=a[3]+e};d.copy=t;d.create=r;d.distance=function(a,b){const c=(a[1]+a[3])/2,e=Math.max(Math.abs(b[0]-(a[0]+a[2])/2)-n(a)/2,0);a=Math.max(Math.abs(b[1]-c)-p(a)/2,0);return Math.sqrt(e*e+a*a)};d.empty=function(a){return a?t(a,x):r(x)};d.equals=function(a,b){return u(a)&&u(b)?a[0]===b[0]&&a[1]===b[1]&&a[2]===b[2]&&a[3]===b[3]:a===b};d.expand=function(a,b,c){if(null==b)t(c,a);else if("length"in b)if(u(b))c[0]= Math.min(a[0],b[0]),c[1]=Math.min(a[1],b[1]),c[2]=Math.max(a[2],b[2]),c[3]=Math.max(a[3],b[3]);else{if(2===b.length||3===b.length)c[0]=Math.min(a[0],b[0]),c[1]=Math.min(a[1],b[1]),c[2]=Math.max(a[2],b[0]),c[3]=Math.max(a[3],b[1])}else switch(b.type){case "extent":c[0]=Math.min(a[0],b.xmin);c[1]=Math.min(a[1],b.ymin);c[2]=Math.max(a[2],b.xmax);c[3]=Math.max(a[3],b.ymax);break;case "point":c[0]=Math.min(a[0],b.x),c[1]=Math.min(a[1],b.y),c[2]=Math.max(a[2],b.x),c[3]=Math.max(a[3],b.y)}};d.expandPointInPlace= function(a,b){b[0]a[2]&&(a[2]=b[0]);b[1]a[3]&&(a[3]=b[1])};d.expandWithNestedArray=function(a,b,c=a){const e=b.length;let f=a[0],g=a[1],k=a[2];a=a[3];for(let l=0;l0>(v-l)*B+(k-h)*C+(h*l- k*v);b=m(e,a);c=m(g,a);const z=m(g,f);m=m(e,f);return b===c&&c===z&&z===m&&m===b||kg&&h>g||l>a&&v>a||lc+f)return!1;var g=.5*(a[3]-a[1]);a=Math.abs(b[1]-.5*(a[1]+a[3]));if(a>c+g)return!1;if(e