From d5a1cb0ef6df5aa29f7ea793819bd1abff637629 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Audun=20Mathias=20=C3=98ygard?= Date: Mon, 1 May 2017 23:16:55 +0200 Subject: [PATCH] fix wrong variable reference (ref issue #77) --- clmtrackr.js | 6 +++--- clmtrackr.min.js | 4 ++-- js/clm.js | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/clmtrackr.js b/clmtrackr.js index 1e8104b3..892fc199 100644 --- a/clmtrackr.js +++ b/clmtrackr.js @@ -1148,11 +1148,11 @@ var clm = { //this.draw(document.getElementById('overlay'), currentParameters); } else { - scaling = candidate.width/modelheight; + scaling = candidate.width/msmodelheight; //var ccc = document.getElementById('overlay').getContext('2d'); //ccc.strokeRect(candidate.x,candidate.y,candidate.width,candidate.height); - translateX = candidate.x-(xmin*scaling)+0.1*candidate.width; - translateY = candidate.y-(ymin*scaling)+0.25*candidate.height; + translateX = candidate.x-(msxmin*scaling)+0.1*candidate.width; + translateY = candidate.y-(msymin*scaling)+0.25*candidate.height; currentParameters[0] = scaling-1; currentParameters[2] = translateX; currentParameters[3] = translateY; diff --git a/clmtrackr.min.js b/clmtrackr.min.js index 6cf604a2..ec9725b3 100644 --- a/clmtrackr.min.js +++ b/clmtrackr.min.js @@ -1,5 +1,5 @@ -"use strict";function mosseFilter(a){var b,c,d,e,f,g,h,i,j,k;this.psr_prev=void 0,this.peak_prev=void 0;var l=!1;if(a||(a={}),void 0===a.drawResponse)a.drawResponse=!1;else if("CANVAS"!=a.drawResponse.tagName)a.drawResponse=!1;else var m=a.drawResponse.getContext("2d");void 0===a.psrThreshold&&(a.psrThreshold=10),void 0===a.eta&&(a.eta=.1),void 0===a.convertToGrayscale&&(a.convertToGrayscale=!0),this.load=function(a){f=a.width,g=a.height,i=f*g,b=[a.real,a.imag],a.top&&a.bottom&&(l=!0,c=[a.top.real,a.top.imag],d=[a.bottom.real,a.bottom.imag]),e=new FFT,e.init(a.width),"undefined"!=typeof Float64Array?(h=new Float64Array(i),k=new Float64Array(i)):(h=new Array(i),k=new Array(i));var m=document.createElement("canvas");m.setAttribute("width",f),m.setAttribute("height",g),j=m.getContext("2d")},this.init=function(a,k){f=a,g=k,i=f*g,b=[[],[]],c=[[],[]],d=[[],[]];for(var m=0;i>m;m++)b[0][m]=0,b[1][m]=0,c[0][m]=0,c[1][m]=0,d[0][m]=0,d[1][m]=0;l=!0,e=new FFT,e.init(a),h="undefined"!=typeof Float64Array?new Float64Array(i):new Array(i);var n=document.createElement("canvas");n.setAttribute("width",f),n.setAttribute("height",g),j=n.getContext("2d")},this.fft=function(a){for(var b=new Array(i),c=0;i>c;c++)b[c]=0;return e.fft2d(a,b),[a,b]},this.fft_inplace=function(a){for(var b=0;i>b;b++)h[b]=0;return e.fft2d(a,h),[a,h]},this.ifft=function(a,b){return e.ifft2d(a,b),a},this.psr=function(a){for(var b,c=0,d=0,e=[],h=0,i=0;f>i;i++)for(var j=0;g>j;j++)b=a[j*f+i],c+=b,h+=b*b,b>d&&(d=b,e=[i,j]);for(var i=-5;6>i;i++)for(var j=-5;6>j;j++)Math.sqrt(i*i+j*j)<5&&(b=a[(e[1]+j)*f+(e[0]+i)],h-=b*b,c-=b);var k=c/a.length,l=Math.sqrt(h/a.length-k*k),m=(d-k)/l;return m},this.getResponse=function(a){var c=n(a);c=o(c);var d=this.fft_inplace(c);q(d,b);var e=this.ifft(d[0],d[1]);return e},this.track=function(e,h,q,t,u,v,w,x){if(!b)return!1;if("VIDEO"==e.tagName||"IMG"==e.tagName){var y=Math.round(h/e.width*e.videoWidth),z=Math.round(q/e.height*e.videoHeight),A=Math.round(t/e.width*e.videoWidth),B=Math.round(u/e.height*e.videoHeight);j.drawImage(e,y,z,A,B,0,0,f,g)}else"CANVAS"==e.tagName&&j.drawImage(e,h,q,t,u,0,0,f,g);var C=j.getImageData(0,0,f,g),D=C.data;if(a.convertToGrayscale)for(var E=0;i>E;E++)k[E]=.3*D[4*E],k[E]+=.59*D[4*E+1],k[E]+=.11*D[4*E+2];else for(var E=0;i>E;E++)k[E]=D[4*E];var F=n(k);F=o(F);var G=this.fft_inplace(F),H=p(G,b),I=this.ifft(H[0],H[1]),J=0,K=0,L=[];if(w)for(var M,N,O,P=128,Q=0;f>Q;Q++)for(var R=0;g>R;R++)N=Q-f/2,O=R-g/2,M=Math.exp(-.5*(N*N+O*O)/P),I[R*f+Q]*M>J&&(J=I[R*f+Q]*M,L=[Q,R]),I[R*f+Q]Q;Q++)for(var R=0;g>R;R++)I[R*f+Q]>J&&(J=I[R*f+Q],L=[Q,R]),I[R*f+Q]X;X++){var Y=I[X];Y=Math.round((Y+Math.abs(K))*(255/S)),W[4*X]=Y,W[4*X+1]=Y,W[4*X+2]=Y,W[4*X+3]=255}U.putImageData(V,0,0),m.drawImage(T,h,q,t,t)}if(x&&(this.psr_prev=this.psr(I)),v)if(l){if(x)var Z=this.psr_prev;else var Z=this.psr(I);if(Z>a.psrThreshold){for(var $=[],_=L[0],aa=L[1],Q=0;f>Q;Q++)for(var R=0;g>R;R++)$[R*f+Q]=Math.exp(-((Q-_)*(Q-_)+(R-aa)*(R-aa))/4);$=this.fft($);for(var ba=r(G),ca=p($,ba),da=p(G,ba),ea=a.eta,E=0;i>E;E++)c[0][E]=ea*ca[0][E]+(1-ea)*c[0][E],c[1][E]=ea*ca[1][E]+(1-ea)*c[1][E],d[0][E]=ea*da[0][E]+(1-ea)*d[0][E],d[1][E]=ea*da[1][E]+(1-ea)*d[1][E];b=s(c,d)}}else;return L[0]=L[0]*(t/f),L[1]=L[1]*(t/g),0>J?!1:L},this.train=function(e,h,m,q,t){if(!l)return!1;if("VIDEO"==e.tagName||"IMG"==e.tagName){var u=Math.round(h/e.width*e.videoWidth),v=Math.round(m/e.height*e.videoHeight),w=Math.round(q/e.width*e.videoWidth),x=Math.round(t/e.height*e.videoHeight);j.drawImage(e,u,v,w,x,0,0,f,g)}else"CANVAS"==e.tagName&&j.drawImage(e,h,m,q,t,0,0,f,g);for(var y=j.getImageData(0,0,f,g),z=y.data,A=0;i>A;A++)k[A]=.3*z[4*A],k[A]+=.59*z[4*A+1],k[A]+=.11*z[4*A+2];var B=n(k);B=o(B);for(var C=[],D=f/2,E=g/2,F=0;f>F;F++)for(var G=0;g>G;G++)C[G*f+F]=Math.exp(-((F-D)*(F-D)+(G-E)*(G-E))/4);C=this.fft(C);for(var H=this.fft(B),I=r(H),J=p(C,I),K=p(H,I),L=a.eta,A=0;i>A;A++)c[0][A]=L*J[0][A]+(1-L)*c[0][A],c[1][A]=L*J[1][A]+(1-L)*c[1][A],d[0][A]=L*K[0][A]+(1-L)*d[0][A],d[1][A]=L*K[1][A]+(1-L)*d[1][A];return b=s(c,d),!0};var n=function(a){for(var b=0;i>b;b++)a[b]=Math.log(a[b]+1);for(var c=0,b=0;i>b;b++)c+=a[b];c/=i;for(var b=0;i>b;b++)a[b]-=c;for(var d=0,b=0;i>b;b++)d+=a[b]*a[b];d=Math.sqrt(d);for(var b=0;i>b;b++)a[b]/=d;return a},o=function(a){for(var b=0,c=0;f>c;c++)for(var d=0;g>d;d++){var e=Math.sin(Math.PI*c/(f-1)),h=Math.sin(Math.PI*d/(g-1));a[b]=Math.min(e,h)*a[b],b++}return a},p=function(a,b){for(var c=new Array(f),d=new Array(f),e=[c,d],g=0;i>g;g++)e[0][g]=a[0][g]*b[0][g]-a[1][g]*b[1][g],e[1][g]=a[0][g]*b[1][g]+a[1][g]*b[0][g];return e},q=function(a,b){for(var c,d,e=0;i>e;e++)c=a[0][e]*b[0][e]-a[1][e]*b[1][e],d=a[0][e]*b[1][e]+a[1][e]*b[0][e],a[0][e]=c,a[1][e]=d},r=function(a){for(var b=[[],[]],c=0;i>c;c++)b[0][c]=a[0][c],b[1][c]=-a[1][c];return b},s=function(a,b){for(var c=[[],[]],d=0;i>d;d++)c[0][d]=(a[0][d]*b[0][d]+a[1][d]*b[1][d])/(b[0][d]*b[0][d]+b[1][d]*b[1][d]),c[1][d]=(a[1][d]*b[0][d]-a[0][d]*b[1][d])/(b[0][d]*b[0][d]+b[1][d]*b[1][d]);return c}}function FFT(){function a(a,b,c){for(var d,e,f,j,k,l,m,n,o,p=g>>2,q=0;g>q;q++)j=h[q],j>q&&(k=a[q],a[q]=a[j],a[j]=k,k=b[q],b[q]=b[j],b[j]=k);for(var r=1;g>r;r<<=1){e=0,d=g/(r<<1);for(var s=0;r>s;s++){l=i[e+p],m=c*i[e];for(var t=s;g>t;t+=r<<1)f=t+r,n=l*a[f]+m*b[f],o=l*b[f]-m*a[f],a[f]=a[t]-n,a[t]+=n,b[f]=b[t]-o,b[t]+=o;e+=d}}}function b(){h="undefined"!=typeof Uint8Array?new Uint8Array(g):new Array(g),"undefined"!=typeof Float64Array?(i=new Float64Array(1.25*g),e=new Float64Array(g*g),f=new Float64Array(g*g)):(i=new Array(1.25*g),e=new Array(g*g),f=new Array(g*g))}function c(){var a=0,b=0,c=0;for(h[0]=0;++a>1;b>=c;)b-=c,c>>=1;b+=c,h[a]=b}}function d(){var a=g>>1,b=g>>2,c=g>>3,d=a+b,e=Math.sin(Math.PI/g),f=2*e*e,h=Math.sqrt(f*(2-f)),j=i[b]=1,k=i[0]=0;e=2*f;for(var l=1;c>l;l++)j-=f,f+=e*j,k+=h,h-=e*k,i[l]=k,i[b-l]=j;0!==c&&(i[c]=Math.sqrt(.5));for(var m=0;b>m;m++)i[a-m]=i[m];for(var n=0;d>n;n++)i[n+a]=-i[n]}var e,f,g=0,h=null,i=null;this.init=function(a){if(0===a||0!==(a&a-1))throw new Error("init: radix-2 required");g=a,b(),c(),d()},this.fft1d=function(b,c){a(b,c,1)},this.ifft1d=function(b,c){var d=1/g;a(b,c,-1);for(var e=0;g>e;e++)b[e]*=d,c[e]*=d},this.fft2d=function(a,b){for(var c=0,d=0;g>d;d++){c=d*g;for(var h=0;g>h;h++)e[h]=a[h+c],f[h]=b[h+c];this.fft1d(e,f);for(var i=0;g>i;i++)a[i+c]=e[i],b[i+c]=f[i]}for(var j=0;g>j;j++){for(var k=0;g>k;k++)c=j+k*g,e[k]=a[c],f[k]=b[c];this.fft1d(e,f);for(var l=0;g>l;l++)c=j+l*g,a[c]=e[l],b[c]=f[l]}},this.ifft2d=function(a,b){for(var c=0,d=0;g>d;d++){c=d*g;for(var h=0;g>h;h++)e[h]=a[h+c],f[h]=b[h+c];this.ifft1d(e,f);for(var i=0;g>i;i++)a[i+c]=e[i],b[i+c]=f[i]}for(var j=0;g>j;j++){for(var k=0;g>k;k++)c=j+k*g,e[k]=a[c],f[k]=b[c];this.ifft1d(e,f);for(var l=0;g>l;l++)c=j+l*g,a[c]=e[l],b[c]=f[l]}}}var clm={tracker:function(a){function b(a,b,c){var d,e,g,h,i;d=2*b,e=G[d/2][0],g=G[d/2][1];for(var j=0;f>j;j++)e+=q.shapeModel.eigenVectors[d][j]*c[j+4],g+=q.shapeModel.eigenVectors[d+1][j]*c[j+4];h=c[0]*e-c[1]*g+c[2],i=c[0]*g+c[1]*e+c[3],e+=h,g+=i,a.beginPath(),a.arc(e,g,1,0,2*Math.PI,!0),a.closePath(),a.fill()}function c(a,b){for(var c=[],d=[],e=0;ec;c++)for(var o=0;f>o;o++)i[c][o]=q.shapeModel.eigenVectors[c][o];for(var c=0;d>c;c++)G[c]=[q.shapeModel.meanShape[c][0],q.shapeModel.meanShape[c][1]];_=aa=0,Z=$=1e6;for(var c=0;d>c;c++)G[c][0]_&&(_=G[c][0]),G[c][1]>aa&&(aa=G[c][1]);ba=_-Z,ca=aa-$,q.scoring&&(da=new Float64Array(q.scoring.coef),ea=q.scoring.bias,na.width=q.scoring.size[0],na.height=q.scoring.size[1]),j=q.shapeModel.eigenValues,p=q.patchModel.weights,r=q.patchModel.bias,h=numeric.rep([f+4,f+4],0);for(var c=0;f>c;c++)q.shapeModel.nonRegularizedVectors.indexOf(c)>=0?h[c+4][c+4]=1e-7:h[c+4][c+4]=1/j[c];for(var c=0;f+4>c;c++)A[c]=0;if("SVM"==g){var B,C=document.createElement("canvas");if(window.WebGLRenderingContext&&(B=C.getContext("webgl")||C.getContext("experimental-webgl"),B&&B.getExtension("OES_texture_float")||(B=null)),B&&a.useWebGL&&"undefined"!=typeof webglFilter){V=new webglFilter;try{V.init(p,r,d,s+e-1,s+e-1,e,e),"lbp"in p&&(z=!0),"sobel"in p&&(y=!0)}catch(D){alert("There was a problem setting up webGL programs, falling back to slightly slower javascript version. :("),V=void 0,W=new svmFilter,W.init(p.raw,r.raw,d,e,s)}}else{if("undefined"==typeof svmFilter)throw"Could not initiate filters, please make sure that svmfilter.js or svmfilter_conv_js.js is loaded.";W=new svmFilter,W.init(p.raw,r.raw,d,e,s)}}else"MOSSE"==g&&(X=new mosseFilterResponses,X.init(p,d,e,e));if(S=T="SVM"==g?e+s-1:s,U=S*T,v=(s-1)/2,x=s*s,"undefined"!=typeof Float64Array){w=new Float64Array(x);for(var c=0;d>c;c++)E[c]=new Float64Array(U)}else{w=new Array(x);for(var c=0;d>c;c++)E[c]=new Array(U)}for(var c=0;d>c;c++)O[c]=1,P[c]=0;if(a.weightPoints){la=[];for(var c=0;d>c;c++)c in a.weightPoints?(la[2*c]=a.weightPoints[c],la[2*c+1]=a.weightPoints[c]):(la[2*c]=1,la[2*c+1]=1);la=numeric.diag(la)}},this.start=function(b,c){return"undefined"==typeof q?!1:("undefined"==typeof ja&&(ja=b,ka=c),Y=new jsfeat_face(b,a.faceDetection.workSize),void(ia=Ga(va)))},this.stop=function(){Ha(ia)},this.track=function(b,c){var e=document.createEvent("Event");e.initEvent("clmtrackrBeforeTrack",!0,!0),document.dispatchEvent(e);var n,o,p,q,r,t,u;if(M){var v=Ea(b,c);if(!v){var e=document.createEvent("Event");return e.initEvent("clmtrackrNotFound",!0,!0),document.dispatchEvent(e),!1}n=v[0],q=v[1],o=v[2],p=v[3],M=!1}else{if(ma+=1,a.constantVelocity&&C.length>=2)for(var x=0;xua&&(q-=Math.PI),n=A[1]/Math.sin(q),o=A[2],p=A[3]}k.save(),k.clearRect(0,0,l,m),k.scale(1/n,1/n),k.rotate(-q),k.translate(-o,-p),k.drawImage(b,0,0,b.width,b.height),k.restore();var y=za(A,!1);if(da&&ma%10==0&&!Da()){M=!0,pa=[];for(var x=0;xx;x++){t=y[x][0]-S/2,u=y[x][1]-T/2,r=k.getImageData(Math.round(t),Math.round(u),S,T),z=r.data,G=E[x];for(var I=0;U>I;I++)H=.3*z[4*I]+.59*z[4*I+1]+.11*z[4*I+2],G[I]=H}if("SVM"==g)if("undefined"!=typeof V)F=xa(E);else{if("undefined"==typeof W)throw"SVM-filters do not seem to be initiated properly.";F=W.getResponses(E)}else"MOSSE"==g&&(F=X.getResponses(E));if(a.sharpenResponse)for(var x=0;d>x;x++)for(var I=0;II;I++){Y=O[I][0]-(s-1)*n/2,Z=O[I][1]-(s-1)*n/2;var $=Ba(s,B[I],Q,w,F,Y,Z,I,K[x],n);Ca(s,R,Q,w,$,Y,Z,n),P[I]=[R[0]-B[I][0],R[1]-B[I][1]]}for(var _=numeric.rep([2*d,1],0),aa=0;d>aa;aa++)_[2*aa][0]=P[aa][0],_[2*aa+1][0]=P[aa][1];var ba=numeric.mul(h,K[x]);if(a.weightPoints)var ca=numeric.dot(numeric.transpose(J),numeric.dot(la,J));else var ca=numeric.dot(numeric.transpose(J),J);for(var ea=numeric.rep([f+4,1],0),fa=0;f+4>fa;fa++)ea[fa][0]=A[fa];var ga=numeric.dot(ba,ea);if(a.weightPoints)var ha=numeric.dot(numeric.transpose(J),numeric.dot(la,_));else var ha=numeric.dot(numeric.transpose(J),_);for(var ia=numeric.add(ba,ca),ja=numeric.sub(ga,ha),ka=numeric.dot(numeric.inv(ia),ja),na=B,aa=0;f+4>aa;aa++)A[aa]-=ka[aa];for(var oa,aa=0;f>aa;aa++)oa=Math.abs(3*Math.sqrt(j[aa])),Math.abs(A[aa+4])>oa&&(A[aa+4]>0?A[aa+4]=oa:A[aa+4]=-oa);B=za(A,!0);for(var qa,ra,sa=0,aa=0;aasa)break}a.constantVelocity&&(C.push(A.slice()),C.splice(0,3==C.length?1:0)),D.splice(0,10==D.length?1:0),D.push(B.slice(0));var e=document.createEvent("Event");if(e.initEvent("clmtrackrIteration",!0,!0),document.dispatchEvent(e),this.getConvergence()<.5&&pa.length>=5){a.stopOnConvergence&&this.stop();var e=document.createEvent("Event");e.initEvent("clmtrackrConverged",!0,!0),document.dispatchEvent(e)}return B},this.reset=function(){M=!0,pa=[];for(var a=0;af;f++)for(var g=0;d>g;g++)a+=D[f][g][0],b+=D[f][g][1];a/=5,b/=5;for(var f=5;10>f;f++)for(var g=0;d>g;g++)c+=D[f][g][0],e+=D[f][g][1];c/=5,e/=5;var h=c-a,i=e-b,j=h*h+i*i;return j/=D.length},this.setResponseMode=function(a,b){if("undefined"!=typeof q&&"undefined"!=typeof V&&!(["single","blend","cycle"].indexOf(a)<0)&&b instanceof Array){for(var c=0;c=I.length&&(J=0),b}for(var c=[],e=0;ee;e++){for(var b=Array(s*s),g=0;s*s>g;g++)b[g]=0;for(var h=0;hg;g++)b[g]+=c[h][e][g]/I.length;f[e]=b}return f},ya=function(a,b){for(var c,e,g=numeric.rep([2*d,f+4],0),h=0;d>h;h++){c=G[h][0],e=G[h][1];for(var i=0;f>i;i++)c+=a[i+4]*b[2*h][i],e+=a[i+4]*b[2*h+1][i];g[2*h][0]=c,g[2*h+1][0]=e,c=G[h][1],e=G[h][0];for(var i=0;f>i;i++)c+=a[i+4]*b[2*h+1][i],e+=a[i+4]*b[2*h][i];g[2*h][1]=-c,g[2*h+1][1]=e,g[2*h][2]=1,g[2*h+1][2]=0,g[2*h][3]=0,g[2*h+1][3]=1;for(var j=0;f>j;j++)c=a[0]*b[2*h][j]-a[1]*b[2*h+1][j]+b[2*h][j],e=a[0]*b[2*h+1][j]+a[1]*b[2*h][j]+b[2*h+1][j],g[2*h][j+4]=c,g[2*h+1][j+4]=e}return g},za=function(a,b){for(var c,e,f,g,h=a.length,i=[],j=0;d>j;j++){c=G[j][0],e=G[j][1];for(var k=0;h-4>k;k++)c+=q.shapeModel.eigenVectors[2*j][k]*a[k+4],e+=q.shapeModel.eigenVectors[2*j+1][k]*a[k+4];b&&(f=a[0]*c-a[1]*e+a[2],g=a[0]*e+a[1]*c+a[3],c+=f,e+=g),i[j]=[c,e]}return i},Aa=function(b){var c=Y.findFace(a.faceDetection);return c?o=c:!1},Ba=function(a,b,c,d,e,f,g,h,i,j){for(var k,l,m=0,n=0,o=0;a>o;o++){c[1]=g+o*j;for(var p=0;a>p;p++)c[0]=f+p*j,k=b[0]-c[0],l=b[1]-c[1],d[m]=e[h][m]*Math.exp(-.5*(k*k+l*l)/(i*j)),n+=d[m],m++}return n},Ca=function(a,b,c,d,e,f,g,h){var i=0,j=0;b[0]=0,b[1]=0;for(var k=0;a>k;k++){c[1]=g+k*h;for(var l=0;a>l;l++)c[0]=f+l*h,j=d[i]/e,b[0]+=j*c[0],b[1]+=j*c[1],i++}},Da=function(){oa.drawImage(n,Math.round(Z+ba/4.5),Math.round($-ca/12),Math.round(ba-2*ba/4.5),Math.round(ca-ca/12),0,0,20,22);for(var b=oa.getImageData(0,0,20,22),c=new Array(440),d=b.data,e=0,f=0;440>f;f++)c[f]=.3*d[4*f]+.59*d[4*f+1]+.11*d[4*f+2],c[f]=Math.log(c[f]+1),c[f]>e&&(e=c[f]);if(e>0){for(var g=0,f=0;440>f;f++)g+=c[f];g/=440;for(var h=0,f=0;440>f;f++)h+=(c[f]-g)*(c[f]-g);h/=439,h=Math.sqrt(h);for(var i=0,f=0;440>f;f++)c[f]=(c[f]-g)/h,i+=c[f]*da[f];if(i+=ea,i=1/(1+Math.exp(-i)),pa.splice(0,5==pa.length?1:0),pa.push(i),pa.length>4){qa=0;for(var f=0;5>f;f++)qa+=pa[f];if(qa/=5,qak;k++)e+=q.shapeModel.eigenVectors[d][k]*c[k+4],g+=q.shapeModel.eigenVectors[d+1][k]*c[k+4];h=c[0]*e-c[1]*g+c[2],i=c[0]*g+c[1]*e+c[3],e+=h,g+=i,0==d?a.moveTo(e,g):a.lineTo(e,g)}a.moveTo(0,0),a.closePath(),a.stroke()},Ga=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a,b){return window.setTimeout(a,1e3/60)}}(),Ha=function(){return window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||window.clearTimeout}();return!0}},webglFilter=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W=!1,X=!1,Y=!1,Z=["attribute vec2 a_texCoord;","attribute vec2 a_position;","","varying vec2 v_texCoord;","","void main() {"," // transform coordinates to regular coordinates"," gl_Position = vec4(a_position,0.0,1.0);"," "," // pass the texCoord to the fragment shader"," v_texCoord = a_texCoord;","}"].join("\n"),$=["attribute vec2 a_texCoord;","attribute vec2 a_position;","","varying vec2 v_texCoord;","","void main() {"," // transform coordinates to regular coordinates"," gl_Position = vec4(a_position,0.0,1.0);"," "," // pass the texCoord to the fragment shader"," v_texCoord = a_texCoord;","}"].join("\n"),_=["attribute vec2 a_texCoord_draw;","attribute vec2 a_position_draw;","attribute float a_patchChoice_draw;","","uniform vec2 u_resolutiondraw;","","varying vec2 v_texCoord;","varying float v_select;","","void main() {"," // convert the rectangle from pixels to 0.0 to 1.0"," vec2 zeroToOne = a_position_draw / u_resolutiondraw;",""," // convert from 0->1 to 0->2"," vec2 zeroToTwo = zeroToOne * 2.0;",""," // convert from 0->2 to -1->+1 (clipspace)"," vec2 clipSpace = zeroToTwo - 1.0;"," "," // transform coordinates to regular coordinates"," gl_Position = vec4(clipSpace * vec2(1.0, 1.0), 0, 1);",""," // pass the texCoord to the fragment shader"," v_texCoord = a_texCoord_draw;"," "," v_select = a_patchChoice_draw;","}"].join("\n"),aa=["precision mediump float;","","// our responses","uniform sampler2D u_responses;","","// the texCoords passed in from the vertex shader.","varying vec2 v_texCoord;","varying float v_select;","","const vec4 bit_shift = vec4(256.0*256.0*256.0, 256.0*256.0, 256.0, 1.0);","const vec4 bit_mask = vec4(0.0, 1.0/256.0, 1.0/256.0, 1.0/256.0);","","// packing code from here http://stackoverflow.com/questions/9882716/packing-float-into-vec4-how-does-this-code-work","void main() {"," vec4 colorSum = texture2D(u_responses, v_texCoord);"," float value = 0.0;"," if (v_select < 0.1) {"," value = colorSum[0];"," } else if (v_select > 0.9 && v_select < 1.1) {"," value = colorSum[1];"," } else if (v_select > 1.9 && v_select < 2.1) {"," value = colorSum[2];"," } else if (v_select > 2.9 && v_select < 3.1) {"," value = colorSum[3];"," } else {"," value = 1.0;"," }"," "," vec4 res = fract(value * bit_shift);"," res -= res.xxyz * bit_mask;"," "," //gl_FragColor = vec4(value, value, value, value);"," //gl_FragColor = vec4(1.0, value, 1.0, 1.0);"," gl_FragColor = res;","}"].join("\n");this.init=function(ba,da,ea,fa,ga,ha,ia){if(ha!=ia)return void alert("filter width and height must be same size!");if(ha%2==0||ia%2==0)return void alert("filters used in svm must be of odd dimensions!");G=da,c=ha,d=ia,e=fa,f=ga,g=ea,m=Math.floor(g/4)+Math.ceil(g%4/4),h=e,i=f*m,v=e-c+1,w=f-c+1,x=w*g,B=Math.floor(g/4)+Math.ceil(g%4/4),C=e,D=f*B,E=e*f,F=new Float32Array(E*B*4);var ja=[1/e,1/(f*m)];if(V=["precision mediump float;","","const vec2 u_onePixelPatches = vec2("+(1/e).toFixed(10)+","+(1/(f*m)).toFixed(10)+");","const vec2 u_onePixelFilters = vec2("+(1/c).toFixed(10)+","+(1/(d*m)).toFixed(10)+");","const float u_halffilterwidth = "+((c-1)/2).toFixed(1)+";","const float u_halffilterheight = "+((d-1)/2).toFixed(1)+";","","// our patches","uniform sampler2D u_patches;","// our filters","uniform sampler2D u_filters;","","// the texCoords passed in from the vertex shader.","varying vec2 v_texCoord;","varying vec2 v_texCoordFilters; // this should give us correct filter","","void main() {"," vec4 colorSum = vec4(0.0, 0.0, 0.0, 0.0);"," vec4 maxn = vec4(0.0, 0.0, 0.0, 0.0);"," vec4 minn = vec4(256.0, 256.0, 256.0, 256.0);"," vec4 scale = vec4(0.0, 0.0, 0.0, 0.0);"," vec4 patchValue = vec4(0.0, 0.0, 0.0, 0.0);"," vec4 filterValue = vec4(0.0, 0.0, 0.0, 0.0);"," vec4 filterTemp = vec4(0.0, 0.0, 0.0, 0.0);"," for (int w = 0;w < "+c+";w++) {"," for (int h = 0;h < "+d+";h++) {"," patchValue = texture2D(u_patches, v_texCoord + u_onePixelPatches * vec2(float(w)-u_halffilterwidth, float(h)-u_halffilterheight));"," filterValue = texture2D(u_filters, v_texCoordFilters + u_onePixelFilters * vec2(float(w)-u_halffilterwidth, float(h)-u_halffilterheight));"," maxn = max(patchValue, maxn);"," minn = min(patchValue, minn);"," colorSum += patchValue*filterValue;"," filterTemp += filterValue;"," } "," }"," scale = maxn-minn;"," colorSum = (colorSum-(minn*filterTemp))/scale;"," // logistic transformation"," colorSum = 1.0/(1.0 + exp(- (colorSum) ));"," gl_FragColor = colorSum;","}"].join("\n"),U=["attribute vec2 a_texCoord;","attribute vec2 a_position;","","const vec2 u_resolution = vec2("+h.toFixed(1)+","+i.toFixed(1)+");","const float u_patchHeight = "+(1/m).toFixed(10)+";","const float u_filterHeight = "+(1/m).toFixed(10)+";","const vec2 u_midpoint = vec2(0.5 ,"+(1/(2*m)).toFixed(10)+");","","varying vec2 v_texCoord;","varying vec2 v_texCoordFilters;","","void main() {"," // convert the rectangle from pixels to 0.0 to 1.0"," vec2 zeroToOne = a_position / u_resolution;",""," // convert from 0->1 to 0->2"," vec2 zeroToTwo = zeroToOne * 2.0;",""," // convert from 0->2 to -1->+1 (clipspace)"," vec2 clipSpace = zeroToTwo - 1.0;"," "," // transform coordinates to regular coordinates"," gl_Position = vec4(clipSpace * vec2(1.0, 1.0), 0, 1);"," "," // pass the texCoord to the fragment shader"," v_texCoord = a_texCoord;"," "," // set the filtertexture coordinate based on number filter to use"," v_texCoordFilters = u_midpoint + vec2(0.0, u_filterHeight * floor(a_texCoord[1]/u_patchHeight));","}"].join("\n"),"lbp"in ba&&(S=["precision mediump float;","","uniform vec2 u_onePixelPatches;","","// our patches","uniform sampler2D u_patches;","","// the texCoords passed in from the vertex shader.","varying vec2 v_texCoord;","","void main() {"," vec4 topLeft = texture2D(u_patches, v_texCoord + vec2(-"+ja[0].toFixed(5)+", -"+ja[1].toFixed(5)+"));"," vec4 topMid = texture2D(u_patches, v_texCoord + vec2(0.0, -"+ja[1].toFixed(5)+"));"," vec4 topRight = texture2D(u_patches, v_texCoord + vec2("+ja[0].toFixed(5)+", -"+ja[1].toFixed(5)+"));"," vec4 midLeft = texture2D(u_patches, v_texCoord + vec2(-"+ja[0].toFixed(5)+", 0.0));"," vec4 midMid = texture2D(u_patches, v_texCoord);"," vec4 midRight = texture2D(u_patches, v_texCoord + vec2("+ja[0].toFixed(5)+", 0.0));"," vec4 bottomLeft = texture2D(u_patches, v_texCoord + vec2(-"+ja[0].toFixed(5)+", "+ja[1].toFixed(5)+"));"," vec4 bottomMid = texture2D(u_patches, v_texCoord + vec2(0.0, "+ja[1].toFixed(5)+"));"," vec4 bottomRight = texture2D(u_patches, v_texCoord + vec2("+ja[0].toFixed(5)+", "+ja[1].toFixed(5)+"));"," vec4 lbp = step(midMid, midRight)*1.0 + step(midMid, topRight)*2.0 + step(midMid, topMid)*4.0;"," lbp = lbp + step(midMid, topLeft)*8.0 + step(midMid, midLeft)*16.0 + step(midMid, bottomLeft)*32.0;"," lbp = lbp + step(midMid, bottomMid)*64.0 + step(midMid, bottomRight)*128.0;"," gl_FragColor = lbp;","}"].join("\n")),"sobel"in ba&&(T=["precision mediump float;","","uniform vec2 u_onePixelPatches;","","// our patches","uniform sampler2D u_patches;","","// the texCoords passed in from the vertex shader.","varying vec2 v_texCoord;","","void main() {"," vec4 bottomLeft = texture2D(u_patches, v_texCoord + vec2(-"+ja[0].toFixed(5)+", "+ja[1].toFixed(5)+"));"," vec4 bottomRight = texture2D(u_patches, v_texCoord + vec2("+ja[0].toFixed(5)+", "+ja[1].toFixed(5)+"));"," vec4 topLeft = texture2D(u_patches, v_texCoord + vec2(-"+ja[0].toFixed(5)+", -"+ja[1].toFixed(5)+"));"," vec4 topRight = texture2D(u_patches, v_texCoord + vec2("+ja[0].toFixed(5)+", -"+ja[1].toFixed(5)+"));"," vec4 dx = ("," bottomLeft +"," (texture2D(u_patches, v_texCoord + vec2(-"+ja[0].toFixed(5)+", 0.0))*vec4(2.0,2.0,2.0,2.0)) +"," topLeft -"," bottomRight -"," (texture2D(u_patches, v_texCoord + vec2("+ja[0].toFixed(5)+", 0.0))*vec4(2.0,2.0,2.0,2.0)) -"," topRight)/4.0;"," vec4 dy = ("," bottomLeft +"," (texture2D(u_patches, v_texCoord + vec2(0.0, "+ja[1].toFixed(5)+"))*vec4(2.0,2.0,2.0,2.0)) +"," bottomRight -"," topLeft -"," (texture2D(u_patches, v_texCoord + vec2(0.0, -"+ja[1].toFixed(5)+"))*vec4(2.0,2.0,2.0,2.0)) -"," topRight)/4.0;"," vec4 gradient = sqrt((dx*dx) + (dy*dy));"," gl_FragColor = gradient;","}"].join("\n")),b=document.createElement("canvas"),b.setAttribute("width",e-c+1+"px"),b.setAttribute("height",(f-d+1)*g+"px"),b.setAttribute("id","renderCanvas"),b.setAttribute("style","display:none;"),document.body.appendChild(b),a=setupWebGL(b,{premultipliedAlpha:!1,preserveDrawingBuffer:!0,antialias:!1}),!a.getExtension("OES_texture_float"))return void alert("Your graphics card does not support floating point textures! :(");"raw"in ba&&(ca(ba.raw,a.TEXTURE0),Y=!0),"sobel"in ba&&(ca(ba.sobel,a.TEXTURE4),X=!0),"lbp"in ba&&(ca(ba.lbp,a.TEXTURE5),W=!0);for(var ka,la=[],ma=(c-1)/2,na=0;m>na;na++)ka=na*f,la=la.concat([ma,ka+ma,e-ma,ka+ma,ma,ka+f-ma]),la=la.concat([ma,ka+f-ma,e-ma,ka+ma,e-ma,ka+f-ma]);la=new Float32Array(la);for(var oa=[],na=0;nana;na++)ka=na*(2/m),ra=ra.concat([-1,pa-ka,1,pa-ka,-1,qa-ka]),ra=ra.concat([-1,qa-ka,1,pa-ka,1,qa-ka]);ra=new Float32Array(ra),pa=1-1/(f*m),qa=1-1/m+1/(f*m);for(var sa=[],na=0;m>na;na++)ka=na*(1/m),sa=sa.concat([0,pa-ka,1,pa-ka,0,qa-ka]),sa=sa.concat([0,qa-ka,1,pa-ka,1,qa-ka]);sa=new Float32Array(sa)}y=new Float32Array(12*g);for(var ka,ta,na=0;g>na;na++)ka=na*w,ta=12*na,y[ta]=0,y[ta+1]=ka,y[ta+2]=v,y[ta+3]=ka,y[ta+4]=0,y[ta+5]=ka+w,y[ta+6]=0,y[ta+7]=ka+w,y[ta+8]=v,y[ta+9]=ka,y[ta+10]=v,y[ta+11]=ka+w;z=new Float32Array(12*g);for(var ua=(c-1)/2/e,va=(c-1)/2/(f*B),wa=f/(f*B),na=0;g>na;na++)ka=Math.floor(na/4)*wa,ta=12*na,z[ta]=ua,z[ta+1]=ka+va,z[ta+2]=1-ua,z[ta+3]=ka+va,z[ta+4]=ua,z[ta+5]=ka+wa-va,z[ta+6]=ua,z[ta+7]=ka+wa-va,z[ta+8]=1-ua,z[ta+9]=ka+va,z[ta+10]=1-ua,z[ta+11]=ka+wa-va;A=new Float32Array(6*g);for(var xa,na=0;g>na;na++)xa=na%4,ta=6*na,A[ta]=xa,A[ta+1]=xa,A[ta+2]=xa,A[ta+3]=xa,A[ta+4]=xa,A[ta+5]=xa;if("sobel"in ba){var ya=loadShader(a,$,a.VERTEX_SHADER),za=loadShader(a,T,a.FRAGMENT_SHADER);M=createProgram(a,[ya,za]),a.useProgram(M),Q=a.getAttribLocation(M,"a_position"),R=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,R),a.bufferData(a.ARRAY_BUFFER,ra,a.STATIC_DRAW),a.enableVertexAttribArray(Q),a.vertexAttribPointer(Q,2,a.FLOAT,!1,0,0),O=a.getAttribLocation(M,"a_texCoord"),P=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,P),a.bufferData(a.ARRAY_BUFFER,sa,a.STATIC_DRAW),a.enableVertexAttribArray(O),a.vertexAttribPointer(O,2,a.FLOAT,!1,0,0),a.uniform1i(a.getUniformLocation(M,"u_patches"),1)}if("lbp"in ba){var Aa=loadShader(a,Z,a.VERTEX_SHADER),Ba=loadShader(a,S,a.FRAGMENT_SHADER);H=createProgram(a,[Aa,Ba]),a.useProgram(H),K=a.getAttribLocation(H,"a_position"),L=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,L),a.bufferData(a.ARRAY_BUFFER,ra,a.STATIC_DRAW),a.enableVertexAttribArray(K),a.vertexAttribPointer(K,2,a.FLOAT,!1,0,0),O=a.getAttribLocation(H,"a_texCoord"),J=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,J),a.bufferData(a.ARRAY_BUFFER,sa,a.STATIC_DRAW),a.enableVertexAttribArray(I),a.vertexAttribPointer(I,2,a.FLOAT,!1,0,0),a.uniform1i(a.getUniformLocation(H,"u_patches"),1)}var Ca=loadShader(a,_,a.VERTEX_SHADER),Da=loadShader(a,aa,a.FRAGMENT_SHADER);k=createProgram(a,[Ca,Da]),a.useProgram(k);var Ea=a.getUniformLocation(k,"u_resolutiondraw");a.uniform2f(Ea,v,x);var Fa=a.getUniformLocation(k,"u_responses");a.uniform1i(Fa,2);var Ga=loadShader(a,U,a.VERTEX_SHADER),Ha=loadShader(a,V,a.FRAGMENT_SHADER);j=createProgram(a,[Ga,Ha]),a.useProgram(j); -var Ia=a.getAttribLocation(j,"a_position");if(u=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,u),a.bufferData(a.ARRAY_BUFFER,la,a.STATIC_DRAW),a.enableVertexAttribArray(Ia),a.vertexAttribPointer(Ia,2,a.FLOAT,!1,0,0),t=a.getAttribLocation(j,"a_texCoord"),s=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,s),a.bufferData(a.ARRAY_BUFFER,oa,a.STATIC_DRAW),a.enableVertexAttribArray(t),a.vertexAttribPointer(t,2,a.FLOAT,!1,0,0),"lbp"in ba||"sobel"in ba){a.activeTexture(a.TEXTURE3);var Ja=a.createTexture();a.bindTexture(a.TEXTURE_2D,Ja),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,e,f*m,0,a.RGBA,a.FLOAT,null),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST),N=a.createFramebuffer(),a.bindFramebuffer(a.FRAMEBUFFER,N),a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,Ja,0)}a.activeTexture(a.TEXTURE2),r=a.createTexture(),a.bindTexture(a.TEXTURE_2D,r),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,e,f*m,0,a.RGBA,a.FLOAT,null),l=a.createFramebuffer(),a.bindFramebuffer(a.FRAMEBUFFER,l),a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,r,0),a.viewport(0,0,e,f*m),n=a.createTexture(),o=a.createBuffer(),q=a.createBuffer(),p=a.createBuffer()},this.getRawResponses=function(b){ba(b),a.useProgram(j),a.uniform1i(a.getUniformLocation(j,"u_patches"),1),a.uniform1i(a.getUniformLocation(j,"u_filters"),0);var c=a.getAttribLocation(j,"a_position");a.bindBuffer(a.ARRAY_BUFFER,u),a.enableVertexAttribArray(c),a.vertexAttribPointer(c,2,a.FLOAT,!1,0,0);var d=a.getAttribLocation(j,"a_texCoord");a.bindBuffer(a.ARRAY_BUFFER,s),a.enableVertexAttribArray(d),a.vertexAttribPointer(d,2,a.FLOAT,!1,0,0),a.bindFramebuffer(a.FRAMEBUFFER,l),a.viewport(0,0,e,f*m),a.clearColor(0,0,0,1),a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER),a.drawArrays(a.TRIANGLES,0,6*B);var g=da("raw");return g},this.getSobelResponses=function(b){if(X){ba(b),a.useProgram(M);var c=a.getAttribLocation(M,"a_position");a.bindBuffer(a.ARRAY_BUFFER,R),a.enableVertexAttribArray(c),a.vertexAttribPointer(c,2,a.FLOAT,!1,0,0);var d=a.getAttribLocation(M,"a_texCoord");a.bindBuffer(a.ARRAY_BUFFER,P),a.enableVertexAttribArray(d),a.vertexAttribPointer(d,2,a.FLOAT,!1,0,0),a.bindFramebuffer(a.FRAMEBUFFER,N),a.viewport(0,0,e,f*m),a.clearColor(0,0,0,1),a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER),a.drawArrays(a.TRIANGLES,0,6*B),a.useProgram(j),a.uniform1i(a.getUniformLocation(j,"u_filters"),4),a.uniform1i(a.getUniformLocation(j,"u_patches"),3);var g=a.getAttribLocation(j,"a_position");a.bindBuffer(a.ARRAY_BUFFER,u),a.enableVertexAttribArray(g),a.vertexAttribPointer(g,2,a.FLOAT,!1,0,0);var h=a.getAttribLocation(j,"a_texCoord");a.bindBuffer(a.ARRAY_BUFFER,s),a.enableVertexAttribArray(h),a.vertexAttribPointer(h,2,a.FLOAT,!1,0,0),a.bindFramebuffer(a.FRAMEBUFFER,l),a.viewport(0,0,e,f*m),a.clearColor(0,0,0,1),a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER),a.drawArrays(a.TRIANGLES,0,6*B);var i=da("sobel");return i}},this.getLBPResponses=function(b){if(W){ba(b),a.useProgram(H);var c=a.getAttribLocation(H,"a_position");a.bindBuffer(a.ARRAY_BUFFER,L),a.enableVertexAttribArray(c),a.vertexAttribPointer(c,2,a.FLOAT,!1,0,0);var d=a.getAttribLocation(H,"a_texCoord");a.bindBuffer(a.ARRAY_BUFFER,J),a.enableVertexAttribArray(d),a.vertexAttribPointer(d,2,a.FLOAT,!1,0,0),a.bindFramebuffer(a.FRAMEBUFFER,N),a.viewport(0,0,e,f*m),a.clearColor(0,0,0,1),a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER),a.drawArrays(a.TRIANGLES,0,6*B),a.useProgram(j),a.uniform1i(a.getUniformLocation(j,"u_filters"),5),a.uniform1i(a.getUniformLocation(j,"u_patches"),3);var g=a.getAttribLocation(j,"a_position");a.bindBuffer(a.ARRAY_BUFFER,u),a.enableVertexAttribArray(g),a.vertexAttribPointer(g,2,a.FLOAT,!1,0,0);var h=a.getAttribLocation(j,"a_texCoord");a.bindBuffer(a.ARRAY_BUFFER,s),a.enableVertexAttribArray(h),a.vertexAttribPointer(h,2,a.FLOAT,!1,0,0),a.bindFramebuffer(a.FRAMEBUFFER,l),a.viewport(0,0,e,f*m),a.clearColor(0,0,0,1),a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER),a.drawArrays(a.TRIANGLES,0,6*B);var i=da("lbp");return i}};var ba=function(b){for(var c=0,d=0,h=0,i=0;B>i;i++)for(var j=0;f>j;j++)for(var k=0;e>k;k++)d=4*i,h=j*e+k,c=4*(E*i+h),g>d?F[c]=b[d][h]:F[c]=0,g>d+1?F[c+1]=b[d+1][h]:F[c+1]=0,g>d+2?F[c+2]=b[d+2][h]:F[c+2]=0,g>d+3?F[c+3]=b[d+3][h]:F[c+3]=0;a.activeTexture(a.TEXTURE1),a.bindTexture(a.TEXTURE_2D,n),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,C,D,0,a.RGBA,a.FLOAT,F),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST)},ca=function(b,e){for(var f=c*d,g=new Float32Array(f*m*4),h=0;m>h;h++)for(var i=0;d>i;i++)for(var j=0;c>j;j++)4*hi;i++)f[i]=ia(f[i]);return f},ea=function(a,b){for(var c,d=0;dg;g++)g%e==0&&(0!=g&&c.push(f),f=[]),f.push(a[g]);return c.push(f),c},ga=function(){var c=new Uint8Array(4*b.width*b.height);a.readPixels(0,0,b.width,b.height,a.RGBA,a.UNSIGNED_BYTE,c);return c},ha=function(a){for(var b=[],c=a.length,d=0;c>d;d+=4)b[d/4>>0]=a[d]/4294967296+a[d+1]/16777216+a[d+2]/65536+a[d+3]/256;return b},ia=function(a){for(var b=a.length,c=0,d=1,e=0;b>e;e++)c=a[e]>c?a[e]:c,d=a[e]e;e++)a[e]=(a[e]-d)/f;return a}};!function(){var a=function(a){throw window.console&&(window.console.error?window.console.error(a):window.console.log&&window.console.log(a)),a},b=function(){return window!=window.top},c=function(a,b){if(!window.WebGLRenderingContext)return null;var c=d(a,b);return c?c:null},d=function(a,b){for(var c=["webgl","experimental-webgl"],d=null,e=0;e>2,q=0;g>q;q++)j=h[q],j>q&&(k=a[q],a[q]=a[j],a[j]=k,k=b[q],b[q]=b[j],b[j]=k);for(var r=1;g>r;r<<=1){e=0,d=g/(r<<1);for(var s=0;r>s;s++){l=i[e+p],m=c*i[e];for(var t=s;g>t;t+=r<<1)f=t+r,n=l*a[f]+m*b[f],o=l*b[f]-m*a[f],a[f]=a[t]-n,a[t]+=n,b[f]=b[t]-o,b[t]+=o;e+=d}}}function b(){h="undefined"!=typeof Uint8Array?new Uint8Array(g):new Array(g),"undefined"!=typeof Float64Array?(i=new Float64Array(1.25*g),e=new Float64Array(g),f=new Float64Array(g)):(i=new Array(1.25*g),e=new Array(g),f=new Array(g))}function c(){var a=0,b=0,c=0;for(h[0]=0;++a>1;b>=c;)b-=c,c>>=1;b+=c,h[a]=b}}function d(){var a=g>>1,b=g>>2,c=g>>3,d=a+b,e=Math.sin(Math.PI/g),f=2*e*e,h=Math.sqrt(f*(2-f)),j=i[b]=1,k=i[0]=0;e=2*f;for(var l=1;c>l;l++)j-=f,f+=e*j,k+=h,h-=e*k,i[l]=k,i[b-l]=j;0!==c&&(i[c]=Math.sqrt(.5));for(var m=0;b>m;m++)i[a-m]=i[m];for(var n=0;d>n;n++)i[n+a]=-i[n]}var e,f,g=0,h=null,i=null;this.init=function(a){if(0===a||0!==(a&a-1))throw new Error("init: radix-2 required");g=a,b(),c(),d()},this.fft1d=function(b,c){a(b,c,1)},this.ifft1d=function(b,c){var d=1/g;a(b,c,-1);for(var e=0;g>e;e++)b[e]*=d,c[e]*=d},this.fft2d=function(a,b){for(var c=0,d=0;g>d;d++){c=d*g;for(var h=0;g>h;h++)e[h]=a[h+c],f[h]=b[h+c];this.fft1d(e,f);for(var i=0;g>i;i++)a[i+c]=e[i],b[i+c]=f[i]}for(var j=0;g>j;j++){for(var k=0;g>k;k++)c=j+k*g,e[k]=a[c],f[k]=b[c];this.fft1d(e,f);for(var l=0;g>l;l++)c=j+l*g,a[c]=e[l],b[c]=f[l]}},this.ifft2d=function(a,b){for(var c=0,d=0;g>d;d++){c=d*g;for(var h=0;g>h;h++)e[h]=a[h+c],f[h]=b[h+c];this.ifft1d(e,f);for(var i=0;g>i;i++)a[i+c]=e[i],b[i+c]=f[i]}for(var j=0;g>j;j++){for(var k=0;g>k;k++)c=j+k*g,e[k]=a[c],f[k]=b[c];this.ifft1d(e,f);for(var l=0;g>l;l++)c=j+l*g,a[c]=e[l],b[c]=f[l]}},this.real_ifft2d=function(a,b){for(var c,d=0,h=0;g>h;h++){d=h*g;for(var i=0;g>i;i++)e[i]=a[i+d],f[i]=b[i+d];this.ifft1d(e,f);for(var j=0;g>j;j++)a[j+d]=e[j],b[j+d]=f[j]}for(var k=g/2,l=0,m=0;g>m;m+=2){d=m,c=m+1,e[0]=a[0+d],f[0]=a[0+c],e[g/2]=a[k*g+d],f[g/2]=a[k*g+c];for(var j=1;k>j;j++)l=j*g,e[j]=a[l+d]-b[l+c],e[g-j]=a[l+d]+b[l+c],f[j]=b[l+d]+a[l+c],f[g-j]=a[l+c]-b[l+d];this.ifft1d(e,f);for(var n=0;g>n;n++)d=m+n*g,c=m+1+n*g,a[d]=e[n],a[c]=f[n]}},this.real_fft2d=function(a,b){for(var c=0,d=0,h=0;g>h;h+=2){c=h*g,d=(h+1)*g;for(var i=0;g>i;i++)e[i]=a[i+c],f[i]=a[i+d];this.fft1d(e,f),a[0+c]=e[0],a[0+d]=f[0],b[0+c]=0,b[0+d]=0,a[g/2+c]=e[g/2],a[g/2+d]=f[g/2],b[g/2+c]=0,b[g/2+d]=0;for(var j=1;g/2>j;j++)a[j+c]=.5*(e[j]+e[g-j]),b[j+c]=.5*(f[j]-f[g-j]),a[j+d]=.5*(f[j]+f[g-j]),b[j+d]=-.5*(e[j]-e[g-j]),a[g-j+c]=a[j+c],b[g-j+c]=-b[j+c],a[g-j+d]=a[j+d],b[g-j+d]=-b[j+d]}for(var k=0;g>k;k++){for(var l=0;g>l;l++)c=k+l*g,e[l]=a[c],f[l]=b[c];this.fft1d(e,f);for(var m=0;g>m;m++)c=k+m*g,a[c]=e[m],b[c]=f[m]}}}var b,c,d,e,f,g,h,i,j,k,l;this.fft_inplace=function(a,c){"undefined"==typeof c&&(c=k);for(var d=0;g>d;d++)c[d]=0;return b.real_fft2d(a,c),[a,c]},this.ifft=function(a,c){return b.real_ifft2d(a,c),a};var m=function(a,b){for(var c,d,e=0;g>e;e++)c=a[0][e]*b[0][e]-a[1][e]*b[1][e],d=a[0][e]*b[1][e]+a[1][e]*b[0][e],a[0][e]=c,a[1][e]=d};this.init=function(m,n,o,q,r){f=p(q-1+r),g=f*f,b=new a,b.init(f),c=Array(o);for(var s,t=(q-1)/2,u=0;o>u;u++){for(var v,w,x=new Float64Array(g),y=new Float64Array(g),z=0;q>z;z++)for(var A=0;q>A;A++)v=t>A?f-t:-t,w=t>z?f-t:-t,x[A+v+(z+w)*f]=m[u][q-1-z+(q-1-A)*q];s=this.fft_inplace(x,y),c[u]=s}e=new Float64Array(o);for(var u=0;o>u;u++)e[u]=n[u];d=Array(o),k=Array(o);for(var u=0;o>u;u++)d[u]=new Float64Array(r*r),k[u]=new Float64Array(r*r);l=new Float64Array(g),j=o,h=q,i=r},this.getResponses=function(a){for(var b,g,k=h-1+i,p=0;j>p;p++){for(var r=0;f*f>r;r++)l[r]=0;a[p]=n(a[p]);for(var r=0;k>r;r++)for(var s=0;k>s;s++)l[r+f*s]=a[p][s+k*r];b=this.fft_inplace(l),m(b,c[p]),b=this.ifft(b[0],b[1]),g=(h-1)/2;for(var r=0;i>r;r++)for(var s=0;i>s;s++)d[p][r+s*i]=b[g+s+(r+g)*f];for(var r=0;i*i>r;r++)d[p][r]+=e[p];d[p]=o(d[p]),q(d[p])}return d};var n=function(a){for(var b,c=h-1+i,d=0,e=1e3,f=0;c>f;f++)for(var g=0;c>g;g++)b=a[g+c*f],e>b&&(e=b),b>d&&(d=b);for(var j=d-e,f=0;c>f;f++)for(var g=0;c>g;g++)a[g+c*f]=(a[g+c*f]-e)/j;return a},o=function(a){for(var b=0;i>b;b++)for(var c=0;i>c;c++)a[b+c*i]=1/(1+Math.exp(-(a[b+c*i]-1)));return a},p=function(a){return a--,a|=a>>1,a|=a>>2,a|=a>>4,a|=a>>8,a|=a>>16,a++,a},q=function(a){for(var b=a.length,c=0,d=1,e=0;b>e;e++)c=a[e]>c?a[e]:c,d=a[e]e;e++)a[e]=(a[e]-d)/f}},mosseFilterResponses=function(){var a=[],b=[],c=0;this.init=function(b,d,e,f){for(var g=0;d>g;g++){var h={};h.width=e,h.height=f;for(var i=e*f,j=new Float64Array(i),k=new Float64Array(i),l=0;i>l;l++)j[l]=b[g][0][l],k[l]=b[g][1][l];h.real=j,h.imag=k,a[g]=new mosseFilter,a[g].load(h)}c=d},this.getResponses=function(e){for(var f=0;c>f;f++)b[f]=a[f].getResponse(e[f]),b[f]=d(b[f]);return b};var d=function(a){for(var b=a.length,c=0,d=1,e=0;b>e;e++)c=a[e]>c?a[e]:c,d=a[e]e;e++)a[e]=(a[e]-d)/f;return a}},left_eye_filter={real:[1.5419219943717721,.40010880110578706,-.7904364126534296,-1.2685464969238938,.39878117336167285,-1.0673489992245377,-.07988083822940402,-.45374680224191505,-.04347409793890079,-.31125662385352687,.17092430376098702,-.29613086164846153,.5616469648110296,-1.559786848789493,.6451303799749266,-1.2899747976234162,1.1761667998175334,-1.289974797623355,.6451303799749047,-1.5597868487894897,.561646964811025,-.29613086164845964,.17092430376099094,-.3112566238535296,-.04347409793890079,-.4537468022419118,-.07988083822940466,-1.0673489992245357,.39878117336167307,-1.2685464969238942,-.7904364126534301,.40010880110578717,-1.3820969331049027,.06956047126920577,-1.9786339579213206,-1.9807415717551982,-.7866727441045088,-1.2217002325587256,-.19150029104902774,-.3513161729077324,-.17646388464205803,-.1667209502050344,-.09229861292456652,-.028899376452253527,-.1314555696102146,-.32892265898101813,-.40987148655061206,.11741827111366547,-.6725433018260514,-.46007833291519956,-.67215259521101,-.4487190743247301,-.03474931672918458,.005563928130243397,-.1767590236098159,-.2619620808503219,-.3630125430638704,-.33546767337818123,-.6458889740799838,-1.1981932989987978,.12372650763830917,-1.4996172161865935,-2.408429802301389,-2.050529127959172,-1.7249706159518585,-2.277646289702639,-3.125963174341959,-2.9656385065342015,-2.848083508696201,-1.426096450031019,-.6179259082917354,-.2611655301498782,-.38519889843539723,-.17511899827006483,-.32808050503227176,.007680087103746304,-.18710828510427668,.1976534820339281,-.5544445310046505,.1458356759032838,-.6984497111751529,-.9018857723352662,-.5350001638458337,-.0444207518616698,.014727914354086128,-.28084584584371913,-.2989040874868585,-.3943138014933655,-.39569215798819307,-.743519999882583,-.8250219837063175,-1.851491897104155,-.7430237866893424,.21156442062863762,-3.3061472495599986,-1.7990472945779568,-2.219376425173228,-2.343880246691925,-3.361597106712331,-3.538324908586371,-2.263967374508659,-2.027175780678075,-.7524258340587223,-.3014341101683938,-.3625272253546275,-.2548943100464769,-.1892849156146708,-.1179891518538482,.027920290231533224,-.03547210749814382,-.2900872185756226,-.3604588674139817,-.391561438074338,-.8222225740287656,-.4497991497169593,-.09813633035547625,.06562858246622937,-.3360730432730313,-.3216120132349778,-.41856090178723965,-.6402842542962905,-.7766428172010218,-1.3946448661671447,-2.2603422126144683,-.38769722219534525,-.9534159393947865,-1.412952994959813,-2.360233685802043,-1.275639243727802,-2.0983496132652038,-2.568245461005427,-2.879105394693038,-2.1809972632688095,-.8428129384777686,-.759989367937187,-.18584599820380068,-.3010574835530826,-.16098142942852958,-.1379212574041719,-.08979002287112871,-.12321821342876504,-.1128661923016878,-.3924098378001975,-.5780902167586397,-.48685989567066695,-.5356535944329623,-.05103668985052638,-.006854703392511769,-.1896340515783942,-.22514761090777807,-.3555582346088891,-.4667060397658552,-.5617954148525789,-.7495095888115163,-1.477207542226035,-1.5836466114968029,-2.3846549454186694,-1.4884613952536236,-1.8237453905245253,-1.6712324532934877,-1.5169157844507295,-1.6930052820597281,-2.1023566589276004,-2.2062031109308458,-1.7945281756942255,-.2645739883891265,.22038139379151148,-.43479836723775234,-.19830827357221226,-.18018565146479498,-.09706087918479574,-.10088329756370379,-.06306970995727253,-.17970932516041177,-.1943040732581543,-.3797056039227762,-.4730230160625181,-.3036696794805218,-.0647323910189154,-.08902516330269715,-.08200020008302734,-.22965854401457736,-.32035624605031326,-.3183678319655244,-.4013205823631112,-.6560174703347086,-.5904048375141748,-1.8503084663080034,-1.8694842425148914,-1.9326778896298584,-1.630157842292352,-1.43320067851183,-1.305707665299106,-1.364200787821644,-1.5357935460809622,-1.616199233695124,-.7400351866837052,-.2942382417321069,.025934598230976654,-.043349004411304674,-.2540802180302247,-.0669656864849775,-.07571749869863525,.007057189465364498,-.04217135665833811,-.03693831566176801,-.3422156158175605,-.20400167508805764,-.3741711609707977,-.25039909487805356,-.07087453139452493,-.0569972852039487,-.06723820695040318,-.17397285212300442,-.20428337307808273,-.23651154356493315,-.3335649893327657,-.07339749754226077,-.703679598066816,-.8240368002159505,-1.6058616381755235,-1.6192427030685497,-1.5705638815427956,-1.4659201063980019,-.9550417954995102,-.9723752616273987,-1.0460191987834688,-.9146566894126572,-.6054823236139852,.01898438364933451,-.19419044456729498,-.03962785112430722,.0012357796666701798,-.07811082244532508,.004862636492025052,-.04044908966237959,-.0035054269587873454,-.1338754472473073,-.10031131456276647,-.2596867467568419,-.20555329767005767,-.26509289948725284,-.038788452621647145,-.07699989187225126,-.0716614330389765,-.14182240789719938,-.1654673053291095,-.19859450279267193,-.05338232636581037,-.2156585383674445,-.0450973572847935,-.6244981857994951,-.9262490674491722,-1.0411254782363617,-1.122035196738675,-1.0607692164246043,-.5772381177353403,-.6318773589638808,-.5481331120442192,-.5532025210173874,-.301972995874824,-.04721324975783839,.08280893046738329,-.06771513448322243,-.01022881748368659,.04203831125895655,-.06337176739998067,.029161890169972702,-.09139631658683613,-.003460073507075481,-.12424052925006424,-.244329964180121,-.265216641753595,-.22745980283820413,-.14361316535317664,-.0007590420310057794,-.02093616845786214,-.14205665196423617,-.19024248288823023,-.0796861223622452,-.15016133237735926,.049598910651295514,-.11760486834511712,-.1837522251545049,-.3859420549411461,-.5354251643699984,-.5734099173080799,-.5275362142401814,-.23151163972118355,-.2229509691994926,-.33704349161770436,-.26165852514054583,-.13898866968588663,.034596483191139484,-.012631210076789067,.04737131007634562,-.03865183933075155,-.001997076145443002,.0630488452583755,-.1124891762554399,.08556992539656616,-.210436590518682,-.19223333969456,-.3908299483003586,-.1929436800716272,-.4102559543993857,-.17178084419175166,-.010933041190555012,-.0895129361520745,-.21569610281495066,-.09144756671688016,-.19525258909505316,-.029753598134641936,-.021307245660079924,.02908712794055101,.03751129065309784,-.2060099012070584,-.26967580750352926,-.21000923681194664,-.2820901885828563,-.11925518789339556,-.24869348141289982,-.21025892926356746,-.15567029136726124,-.04054672910839591,-.00502661531005471,.030710887069787196,-.006110434024585828,.0369376092260571,-.05486266136790032,.013297880203253048,.19659447375886394,-.2499491329142558,-.06295969900286576,-.5305502909595601,-.38784811281629444,-.5389128507596239,-.41886712861154285,-.09923009726032588,-.16474199810952628,-.28693665642627014,-.00956679808502211,-.3261995499345093,-.08627491478166284,-.07325316175571477,.01563417403869033,.08244053654753179,.025411878261881942,-.11318909242737961,-.1270560226842935,-.21657212936164139,-.1399387354961119,-.3751027523762283,-.2647292311107622,-.24460131567533192,-.14127652303494026,-.05042868659104518,.04134784037419077,-.006178044515300064,.007399034521025015,-.01406273903701438,.14348925152561878,-.015321787554403667,.0017746672356015968,.2516513542736105,-.626463828190993,-.4816713433080564,-1.045863293770664,-.6951259178849319,-.44532127384388254,-.2847972402536839,-.3947095508731798,.2022722834472047,-.5390991207348895,-.12025629051789474,-.1899243750597305,-.04847480672159513,.06076477135322776,.09064815178251616,.09160820891269728,.0036582478916540977,-.2249253000526313,-.27295314658024766,-.3555973802525736,-.6290292501441295,-.57166411974881,-.3725889517312918,-.22157638610464933,.022494427132080854,.014769425415166171,.003526808789406817,-.011346909674078769,.05092117084834829,.09030854179921963,.37260817254533324,-.2590987139215991,-.42379280974334355,-.09538064780856813,-1.190608374889352,-.7859991441489247,-.9527791435273028,-.6365977835942234,-.9802601500895275,.481731982859161,-.6009200901805519,-.10265418316164113,-.39913639006279306,-.17310908908773887,-.0194191171632387,.05404796528917988,.1388529643463832,.15661099050146,-.10898263774416243,-.332912314567376,-.5956902786588871,-.6935308158494897,-1.0999707493347484,-.7439208475373669,-.4907478121415816,-.06519055673385296,.012289768389229717,.024577513704595676,.004030280469609632,.036047756292976456,.058236765637246286,.1389384625679062,.03694467603693463,.41686279554239464,-.8523228638818582,-1.298831512762498,-.4735277967730517,-.8176363254154679,-.7738445780362183,-1.425624000451928,.5258899353236068,-.8982172402290268,.1591911967653899,-.5504659677234687,-.3098001604127102,-.16709614007114884,-.046029700131955266,.04479326815042398,.1689242242845459,.14412365934528507,-.008825007131336736,-.3677854512466631,-.793938445177321,-1.1610479066529615,-.7652321000885066,-.630098580320484,-.13947023057344932,-.017173105577524262,.039030007688455846,.0144912730838054,.03979254294383725,.054072846696920814,.11729310469925348,.053609281522667675,.008154949871808708,-.3091081345284555,.25944224899607843,-1.3584842180322938,-1.5885570490138659,-.6575958279461822,-1.139869490652734,.7092826408059469,-1.9674198903133462,.37712664425406606,-.8433603839057895,-.47788074719428036,-.1834200008666372,-.18811394573901796,-.05505002764598565,.045043056834335606,.1148630355985436,.22023958716404868,.14735402009444676,-.27894427087198,-.7308053695312964,-.7679430569329723,-.37355919765840223,.12353986794322802,.09050534837631184,.14069908672094206,.08737321438027885,.023353946735568523,.03140055992039659,.07955023044620224,.08492716138218544,.04077715825534942,-.16274954314482293,-.41184413435479567,-.7187128882257487,.5530290745634285,-1.5309493464500674,-2.9026104205694736,.4204330359950835,-1.713810626479367,.295138882491271,-1.2517216433630918,-.6676994217651684,-.28576739334390183,-.24127777006787937,-.10778095858902549,-.03609242500919886,.021519213385077923,.13414694961717147,.16917378957839613,.17307922682581758,.07624675882901567,-.04790483513427262,-.27544262702406924,.6182624956656319,.269874231236934,.2085883517320696,.2607342621072197,.12070625812911842,.06294558209330968,.08364957391650543,.04968809534578587,.01956435760784307,-.04603581747659695,-.13409074070830324,-.4902720181429455,-.4775645732142016,-.7440367513542755,-.3080068432033089,-.04371243884270504,-4.735594317158907,-.043712438842706695,-.3080068432033096,-.7440367513542757,-.47756457321420304,-.49027201814294813,-.13409074070830412,-.046035817476598156,.01956435760784307,.049688095345786006,.08364957391650606,.06294558209331085,.12070625812911921,.2607342621072207,.2085883517320702,.269874231236934,-.3735591976583676,-.2754426270240343,-.04790483513427313,.07624675882901252,.17307922682581853,.169173789578395,.13414694961716844,.02151921338507657,-.03609242500919986,-.1077809585890261,-.24127777006787943,-.2857673933439015,-.667699421765169,-1.2517216433630949,.2951388824912743,-1.7138106264793713,.4204330359950768,-2.902610420569474,-1.5309493464500692,.5530290745634223,-.7187128882257502,-.41184413435479833,-.16274954314482265,.04077715825534866,.08492716138218645,.07955023044620314,.03140055992039842,.023353946735571576,.08737321438028138,.14069908672095732,.09050534837633403,.1235398679432393,-.7652321000884781,-.7679430569329614,-.730805369531285,-.27894427087197604,.1473540200944477,.22023958716404682,.11486303559854165,.04504305683433383,-.05505002764598645,-.18811394573901843,-.18342000086663854,-.4778807471942804,-.8433603839057915,.37712664425406617,-1.9674198903133469,.709282640805937,-1.1398694906527307,-.657595827946194,-1.588557049013867,-1.3584842180322987,.2594422489960773,-.3091081345284578,.008154949871808691,.05360928152266728,.11729310469925426,.0540728466969212,.03979254294383871,.01449127308380731,.039030007688458185,-.017173105577517028,-.13947023057343994,-.6300985803204511,-1.0999707493347308,-1.1610479066529467,-.793938445177313,-.3677854512466584,-.00882500713133401,.1441236593452856,.168924224284544,.04479326815042012,-.04602970013195615,-.16709614007115095,-.30980016041271097,-.5504659677234705,.15919119676539073,-.8982172402290286,.5258899353236033,-1.4256240004519327,-.7738445780362169,-.8176363254154656,-.4735277967730568,-1.2988315127625027,-.8523228638818583,.41686279554239525,.036944676036935756,.13893846256790574,.058236765637246675,.036047756292977066,.004030280469611113,.02457751370459911,.012289768389232913,-.06519055673384466,-.49074781214156804,-.7439208475373563,-.629029250144129,-.6935308158494856,-.595690278658883,-.3329123145673749,-.10898263774416028,.15661099050145985,.13885296434638142,.054047965289177706,-.019419117163239467,-.17310908908773912,-.39913639006279433,-.10265418316163986,-.6009200901805531,.48173198285915786,-.9802601500895259,-.6365977835942213,-.9527791435273002,-.7859991441489246,-1.190608374889349,-.09538064780857,-.4237928097433449,-.25909871392159683,.37260817254533357,.09030854179921953,.05092117084834837,-.011346909674079158,.003526808789408155,.014769425415168456,.022494427132082863,-.22157638610464575,-.37258895173129003,-.5716641197488066,-.37510275237622537,-.3555973802525706,-.2729531465802467,-.22492530005262792,.0036582478916564426,.09160820891269639,.09064815178251497,.06076477135322488,-.04847480672159565,-.18992437505973167,-.12025629051789351,-.5390991207348887,.20227228344720258,-.394709550873178,-.28479724025368247,-.4453212738438783,-.6951259178849327,-1.04586329377066,-.4816713433080586,-.6264638281909916,.2516513542736103,.0017746672356018336,-.0153217875544032,.14348925152561842,-.01406273903701487,.007399034521024359,-.00617804451529856,.04134784037419488,-.050428686591041855,-.1412765230349349,-.2446013156753272,-.26472923111076024,-.11925518789339257,-.13993873549610955,-.2165721293616384,-.1270560226842922,-.11318909242737903,.025411878261882927,.08244053654753017,.015634174038688685,-.0732531617557155,-.08627491478166197,-.326199549934509,-.00956679808502389,-.28693665642627003,-.16474199810952764,-.09923009726032403,-.4188671286115432,-.5389128507596231,-.3878481128162946,-.5305502909595622,-.06295969900286663,-.24994913291425488,.1965944737588636,.013297880203252755,-.054862661367901897,.03693760922605668,-.0061104340245862225,.030710887069788338,-.005026615310052167,-.040546729108393256,-.15567029136725916,-.21025892926356554,-.2486934814128962,-.2315116397211769,-.2820901885828492,-.21000923681193823,-.26967580750352416,-.20600990120705304,.03751129065309909,.029087127940549885,-.02130724566008323,-.0297535981346421,-.19525258909505444,-.09144756671688208,-.2156961028149504,-.08951293615207585,-.010933041190555782,-.17178084419175305,-.41025595439938806,-.19294368007162768,-.39082994830036216,-.19223333969456258,-.2104365905186827,.08556992539656708,-.11248917625543933,.06304884525837423,-.001997076145445627,-.0386518393307522,.04737131007634562,-.012631210076786959,.0345964831911426,-.13898866968588444,-.26165852514053983,-.33704349161769737,-.22295096919948695,-.5772381177353403,-.5275362142401814,-.5734099173080794,-.5354251643699987,-.38594205494114614,-.1837522251545064,-.11760486834511884,.04959891065129376,-.15016133237735926,-.07968612236224891,-.1902424828882312,-.1420566519642383,-.02093616845786258,-.0007590420310084487,-.14361316535317845,-.2274598028382093,-.265216641753595,-.2443299641801253,-.12424052925006639,-.003460073507076083,-.09139631658683596,.029161890169972428,-.06337176739998052,.042038311258955005,-.01022881748368659,-.06771513448322196,.08280893046738375,-.047213249757837236,-.3019729958748239,-.5532025210173874,-.548133112044219,-.6318773589638805,-.9550417954995029,-1.060769216424599,-1.1220351967386673,-1.0411254782363524,-.9262490674491646,-.6244981857994925,-.045097357284792555,-.21565853836744897,-.05338232636581171,-.19859450279267432,-.16546730532911214,-.14182240789720132,-.07166143303897729,-.07699989187225306,-.038788452621649434,-.2650928994872585,-.20555329767005678,-.2596867467568408,-.10031131456276626,-.13387544724730568,-.0035054269587865765,-.04044908966237997,.004862636492024128,-.07811082244532547,.0012357796666695618,-.0396278511243066,-.19419044456729473,.018984383649339364,-.6054823236139799,-.9146566894126499,-1.046019198783463,-.9723752616273926,-1.3057076652991049,-1.4659201063979992,-1.5705638815427927,-1.6192427030685486,-1.6058616381755215,-.8240368002159525,-.7036795980668187,-.07339749754226939,-.3335649893327653,-.23651154356493967,-.2042833730780847,-.17397285212300875,-.06723820695040342,-.056997285203952995,-.07087453139452611,-.25039909487805306,-.3741711609707976,-.2040016750880539,-.3422156158175576,-.03693831566176366,-.042171356658337315,.00705718946536539,-.07571749869863496,-.0669656864849772,-.25408021803022474,-.04334900441130162,.025934598230977574,-.2942382417321012,-.7400351866837027,-1.6161992336951192,-1.5357935460809593,-1.3642007878216427,-1.5169157844507262,-1.4332006785118279,-1.630157842292349,-1.932677889629856,-1.8694842425148879,-1.8503084663080056,-.5904048375141792,-.6560174703347134,-.40132058236311047,-.31836783196552787,-.32035624605031593,-.22965854401457814,-.08200020008302822,-.08902516330269802,-.06473239101891355,-.3036696794805129,-.4730230160625184,-.3797056039227587,-.19430407325814622,-.1797093251603995,-.06306970995727144,-.10088329756370083,-.09706087918479443,-.18018565146479387,-.19830827357221226,-.43479836723774673,.22038139379151372,-.2645739883891143,-1.79452817569422,-2.206203110930839,-2.102356658927595,-1.6930052820597257,-1.2756392437278008,-1.6712324532934884,-1.8237453905245253,-1.4884613952536252,-2.384654945418673,-1.5836466114968115,-1.4772075422260404,-.749509588811526,-.561795414852579,-.46670603976586306,-.3555582346088905,-.22514761090777982,-.18963405157839525,-.006854703392512414,-.05103668985052919,-.5356535944329562,-.48685989567066656,-.5780902167586235,-.3924098378001862,-.11286619230167973,-.12321821342876334,-.08979002287112711,-.13792125740417074,-.16098142942852883,-.301057483553083,-.18584599820379807,-.7599893679371835,-.8428129384777584,-2.1809972632688073,-2.879105394693035,-2.5682454610054237,-2.0983496132652038,-2.219376425173226,-2.3602336858020396,-1.4129529949598048,-.9534159393947887,-.38769722219534936,-2.260342212614477,-1.394644866167148,-.7766428172010335,-.6402842542962903,-.41856090178724664,-.3216120132349809,-.3360730432730346,.06562858246623078,-.09813633035547877,-.44979914971695495,-.822222574028781,-.391561438074338,-.3604588674139763,-.2900872185756239,-.03547210749813554,.027920290231535812,-.117989151853845,-.1892849156146684,-.25489431004647656,-.3625272253546275,-.30143411016838906,-.7524258340587202,-2.027175780678063,-2.263967374508654,-3.538324908586366,-3.361597106712324,-2.343880246691923,-1.7249706159518579,-1.7990472945779559,-3.3061472495599995,.21156442062862166,-.743023786689344,-1.8514918971041745,-.8250219837063265,-.7435199998826033,-.3956921579881928,-.3943138014933833,-.29890408748686254,-.28084584584372846,.01472791435408881,-.04442075186168376,-.5350001638458372,-.9018857723352869,-.6984497111751535,.14583567590324595,-.5544445310046473,.1976534820339324,-.18710828510427244,.007680087103749638,-.3280805050322698,-.17511899827005836,-.38519889843539723,-.2611655301498714,-.6179259082917326,-1.4260964500310052,-2.8480835086962,-2.9656385065341997,-3.1259631743419583,-2.2776462897026373,-1.3820969331049018,-2.0505291279591713,-2.408429802301388,-1.4996172161865962,.12372650763830863,-1.1981932989988076,-.6458889740799882,-.33546767337818667,-.36301254306387043,-.2619620808503318,-.176759023609821,.005563928130235761,-.034749316729180774,-.44871907432473696,-.6721525952110092,-.4600783329152383,-.6725433018260518,.11741827111366224,-.409871486550618,-.32892265898101625,-.1314555696102148,-.028899376452251727,-.09229861292456465,-.1667209502050334,-.17646388464205828,-.3513161729077252,-.1915002910490266,-1.22170023255872,-.7866727441045076,-1.980741571755196,-1.978633957921319,.06956047126920993], +"use strict";function mosseFilter(a){var b,c,d,e,f,g,h,i,j,k;this.psr_prev=void 0,this.peak_prev=void 0;var l=!1;if(a||(a={}),void 0===a.drawResponse)a.drawResponse=!1;else if("CANVAS"!=a.drawResponse.tagName)a.drawResponse=!1;else var m=a.drawResponse.getContext("2d");void 0===a.psrThreshold&&(a.psrThreshold=10),void 0===a.eta&&(a.eta=.1),void 0===a.convertToGrayscale&&(a.convertToGrayscale=!0),this.load=function(a){f=a.width,g=a.height,i=f*g,b=[a.real,a.imag],a.top&&a.bottom&&(l=!0,c=[a.top.real,a.top.imag],d=[a.bottom.real,a.bottom.imag]),e=new FFT,e.init(a.width),"undefined"!=typeof Float64Array?(h=new Float64Array(i),k=new Float64Array(i)):(h=new Array(i),k=new Array(i));var m=document.createElement("canvas");m.setAttribute("width",f),m.setAttribute("height",g),j=m.getContext("2d")},this.init=function(a,k){f=a,g=k,i=f*g,b=[[],[]],c=[[],[]],d=[[],[]];for(var m=0;i>m;m++)b[0][m]=0,b[1][m]=0,c[0][m]=0,c[1][m]=0,d[0][m]=0,d[1][m]=0;l=!0,e=new FFT,e.init(a),h="undefined"!=typeof Float64Array?new Float64Array(i):new Array(i);var n=document.createElement("canvas");n.setAttribute("width",f),n.setAttribute("height",g),j=n.getContext("2d")},this.fft=function(a){for(var b=new Array(i),c=0;i>c;c++)b[c]=0;return e.fft2d(a,b),[a,b]},this.fft_inplace=function(a){for(var b=0;i>b;b++)h[b]=0;return e.fft2d(a,h),[a,h]},this.ifft=function(a,b){return e.ifft2d(a,b),a},this.psr=function(a){for(var b,c=0,d=0,e=[],h=0,i=0;f>i;i++)for(var j=0;g>j;j++)b=a[j*f+i],c+=b,h+=b*b,b>d&&(d=b,e=[i,j]);for(var i=-5;6>i;i++)for(var j=-5;6>j;j++)Math.sqrt(i*i+j*j)<5&&(b=a[(e[1]+j)*f+(e[0]+i)],h-=b*b,c-=b);var k=c/a.length,l=Math.sqrt(h/a.length-k*k),m=(d-k)/l;return m},this.getResponse=function(a){var c=n(a);c=o(c);var d=this.fft_inplace(c);q(d,b);var e=this.ifft(d[0],d[1]);return e},this.track=function(e,h,q,t,u,v,w,x){if(!b)return!1;if("VIDEO"==e.tagName||"IMG"==e.tagName){var y=Math.round(h/e.width*e.videoWidth),z=Math.round(q/e.height*e.videoHeight),A=Math.round(t/e.width*e.videoWidth),B=Math.round(u/e.height*e.videoHeight);j.drawImage(e,y,z,A,B,0,0,f,g)}else"CANVAS"==e.tagName&&j.drawImage(e,h,q,t,u,0,0,f,g);var C=j.getImageData(0,0,f,g),D=C.data;if(a.convertToGrayscale)for(var E=0;i>E;E++)k[E]=.3*D[4*E],k[E]+=.59*D[4*E+1],k[E]+=.11*D[4*E+2];else for(var E=0;i>E;E++)k[E]=D[4*E];var F=n(k);F=o(F);var G=this.fft_inplace(F),H=p(G,b),I=this.ifft(H[0],H[1]),J=0,K=0,L=[];if(w)for(var M,N,O,P=128,Q=0;f>Q;Q++)for(var R=0;g>R;R++)N=Q-f/2,O=R-g/2,M=Math.exp(-.5*(N*N+O*O)/P),I[R*f+Q]*M>J&&(J=I[R*f+Q]*M,L=[Q,R]),I[R*f+Q]Q;Q++)for(var R=0;g>R;R++)I[R*f+Q]>J&&(J=I[R*f+Q],L=[Q,R]),I[R*f+Q]X;X++){var Y=I[X];Y=Math.round((Y+Math.abs(K))*(255/S)),W[4*X]=Y,W[4*X+1]=Y,W[4*X+2]=Y,W[4*X+3]=255}U.putImageData(V,0,0),m.drawImage(T,h,q,t,t)}if(x&&(this.psr_prev=this.psr(I)),v)if(l){if(x)var Z=this.psr_prev;else var Z=this.psr(I);if(Z>a.psrThreshold){for(var $=[],_=L[0],aa=L[1],Q=0;f>Q;Q++)for(var R=0;g>R;R++)$[R*f+Q]=Math.exp(-((Q-_)*(Q-_)+(R-aa)*(R-aa))/4);$=this.fft($);for(var ba=r(G),ca=p($,ba),da=p(G,ba),ea=a.eta,E=0;i>E;E++)c[0][E]=ea*ca[0][E]+(1-ea)*c[0][E],c[1][E]=ea*ca[1][E]+(1-ea)*c[1][E],d[0][E]=ea*da[0][E]+(1-ea)*d[0][E],d[1][E]=ea*da[1][E]+(1-ea)*d[1][E];b=s(c,d)}}else;return L[0]=L[0]*(t/f),L[1]=L[1]*(t/g),0>J?!1:L},this.train=function(e,h,m,q,t){if(!l)return!1;if("VIDEO"==e.tagName||"IMG"==e.tagName){var u=Math.round(h/e.width*e.videoWidth),v=Math.round(m/e.height*e.videoHeight),w=Math.round(q/e.width*e.videoWidth),x=Math.round(t/e.height*e.videoHeight);j.drawImage(e,u,v,w,x,0,0,f,g)}else"CANVAS"==e.tagName&&j.drawImage(e,h,m,q,t,0,0,f,g);for(var y=j.getImageData(0,0,f,g),z=y.data,A=0;i>A;A++)k[A]=.3*z[4*A],k[A]+=.59*z[4*A+1],k[A]+=.11*z[4*A+2];var B=n(k);B=o(B);for(var C=[],D=f/2,E=g/2,F=0;f>F;F++)for(var G=0;g>G;G++)C[G*f+F]=Math.exp(-((F-D)*(F-D)+(G-E)*(G-E))/4);C=this.fft(C);for(var H=this.fft(B),I=r(H),J=p(C,I),K=p(H,I),L=a.eta,A=0;i>A;A++)c[0][A]=L*J[0][A]+(1-L)*c[0][A],c[1][A]=L*J[1][A]+(1-L)*c[1][A],d[0][A]=L*K[0][A]+(1-L)*d[0][A],d[1][A]=L*K[1][A]+(1-L)*d[1][A];return b=s(c,d),!0};var n=function(a){for(var b=0;i>b;b++)a[b]=Math.log(a[b]+1);for(var c=0,b=0;i>b;b++)c+=a[b];c/=i;for(var b=0;i>b;b++)a[b]-=c;for(var d=0,b=0;i>b;b++)d+=a[b]*a[b];d=Math.sqrt(d);for(var b=0;i>b;b++)a[b]/=d;return a},o=function(a){for(var b=0,c=0;f>c;c++)for(var d=0;g>d;d++){var e=Math.sin(Math.PI*c/(f-1)),h=Math.sin(Math.PI*d/(g-1));a[b]=Math.min(e,h)*a[b],b++}return a},p=function(a,b){for(var c=new Array(f),d=new Array(f),e=[c,d],g=0;i>g;g++)e[0][g]=a[0][g]*b[0][g]-a[1][g]*b[1][g],e[1][g]=a[0][g]*b[1][g]+a[1][g]*b[0][g];return e},q=function(a,b){for(var c,d,e=0;i>e;e++)c=a[0][e]*b[0][e]-a[1][e]*b[1][e],d=a[0][e]*b[1][e]+a[1][e]*b[0][e],a[0][e]=c,a[1][e]=d},r=function(a){for(var b=[[],[]],c=0;i>c;c++)b[0][c]=a[0][c],b[1][c]=-a[1][c];return b},s=function(a,b){for(var c=[[],[]],d=0;i>d;d++)c[0][d]=(a[0][d]*b[0][d]+a[1][d]*b[1][d])/(b[0][d]*b[0][d]+b[1][d]*b[1][d]),c[1][d]=(a[1][d]*b[0][d]-a[0][d]*b[1][d])/(b[0][d]*b[0][d]+b[1][d]*b[1][d]);return c}}function FFT(){function a(a,b,c){for(var d,e,f,j,k,l,m,n,o,p=g>>2,q=0;g>q;q++)j=h[q],j>q&&(k=a[q],a[q]=a[j],a[j]=k,k=b[q],b[q]=b[j],b[j]=k);for(var r=1;g>r;r<<=1){e=0,d=g/(r<<1);for(var s=0;r>s;s++){l=i[e+p],m=c*i[e];for(var t=s;g>t;t+=r<<1)f=t+r,n=l*a[f]+m*b[f],o=l*b[f]-m*a[f],a[f]=a[t]-n,a[t]+=n,b[f]=b[t]-o,b[t]+=o;e+=d}}}function b(){h="undefined"!=typeof Uint8Array?new Uint8Array(g):new Array(g),"undefined"!=typeof Float64Array?(i=new Float64Array(1.25*g),e=new Float64Array(g*g),f=new Float64Array(g*g)):(i=new Array(1.25*g),e=new Array(g*g),f=new Array(g*g))}function c(){var a=0,b=0,c=0;for(h[0]=0;++a>1;b>=c;)b-=c,c>>=1;b+=c,h[a]=b}}function d(){var a=g>>1,b=g>>2,c=g>>3,d=a+b,e=Math.sin(Math.PI/g),f=2*e*e,h=Math.sqrt(f*(2-f)),j=i[b]=1,k=i[0]=0;e=2*f;for(var l=1;c>l;l++)j-=f,f+=e*j,k+=h,h-=e*k,i[l]=k,i[b-l]=j;0!==c&&(i[c]=Math.sqrt(.5));for(var m=0;b>m;m++)i[a-m]=i[m];for(var n=0;d>n;n++)i[n+a]=-i[n]}var e,f,g=0,h=null,i=null;this.init=function(a){if(0===a||0!==(a&a-1))throw new Error("init: radix-2 required");g=a,b(),c(),d()},this.fft1d=function(b,c){a(b,c,1)},this.ifft1d=function(b,c){var d=1/g;a(b,c,-1);for(var e=0;g>e;e++)b[e]*=d,c[e]*=d},this.fft2d=function(a,b){for(var c=0,d=0;g>d;d++){c=d*g;for(var h=0;g>h;h++)e[h]=a[h+c],f[h]=b[h+c];this.fft1d(e,f);for(var i=0;g>i;i++)a[i+c]=e[i],b[i+c]=f[i]}for(var j=0;g>j;j++){for(var k=0;g>k;k++)c=j+k*g,e[k]=a[c],f[k]=b[c];this.fft1d(e,f);for(var l=0;g>l;l++)c=j+l*g,a[c]=e[l],b[c]=f[l]}},this.ifft2d=function(a,b){for(var c=0,d=0;g>d;d++){c=d*g;for(var h=0;g>h;h++)e[h]=a[h+c],f[h]=b[h+c];this.ifft1d(e,f);for(var i=0;g>i;i++)a[i+c]=e[i],b[i+c]=f[i]}for(var j=0;g>j;j++){for(var k=0;g>k;k++)c=j+k*g,e[k]=a[c],f[k]=b[c];this.ifft1d(e,f);for(var l=0;g>l;l++)c=j+l*g,a[c]=e[l],b[c]=f[l]}}}var clm={tracker:function(a){function b(a,b,c){var d,e,g,h,i;d=2*b,e=G[d/2][0],g=G[d/2][1];for(var j=0;f>j;j++)e+=q.shapeModel.eigenVectors[d][j]*c[j+4],g+=q.shapeModel.eigenVectors[d+1][j]*c[j+4];h=c[0]*e-c[1]*g+c[2],i=c[0]*g+c[1]*e+c[3],e+=h,g+=i,a.beginPath(),a.arc(e,g,1,0,2*Math.PI,!0),a.closePath(),a.fill()}function c(a,b){for(var c=[],d=[],e=0;ec;c++)for(var o=0;f>o;o++)i[c][o]=q.shapeModel.eigenVectors[c][o];for(var c=0;d>c;c++)G[c]=[q.shapeModel.meanShape[c][0],q.shapeModel.meanShape[c][1]];_=aa=0,Z=$=1e6;for(var c=0;d>c;c++)G[c][0]_&&(_=G[c][0]),G[c][1]>aa&&(aa=G[c][1]);ba=_-Z,ca=aa-$,q.scoring&&(da=new Float64Array(q.scoring.coef),ea=q.scoring.bias,na.width=q.scoring.size[0],na.height=q.scoring.size[1]),j=q.shapeModel.eigenValues,p=q.patchModel.weights,r=q.patchModel.bias,h=numeric.rep([f+4,f+4],0);for(var c=0;f>c;c++)q.shapeModel.nonRegularizedVectors.indexOf(c)>=0?h[c+4][c+4]=1e-7:h[c+4][c+4]=1/j[c];for(var c=0;f+4>c;c++)A[c]=0;if("SVM"==g){var B,C=document.createElement("canvas");if(window.WebGLRenderingContext&&(B=C.getContext("webgl")||C.getContext("experimental-webgl"),B&&B.getExtension("OES_texture_float")||(B=null)),B&&a.useWebGL&&"undefined"!=typeof webglFilter){V=new webglFilter;try{V.init(p,r,d,s+e-1,s+e-1,e,e),"lbp"in p&&(z=!0),"sobel"in p&&(y=!0)}catch(D){alert("There was a problem setting up webGL programs, falling back to slightly slower javascript version. :("),V=void 0,W=new svmFilter,W.init(p.raw,r.raw,d,e,s)}}else{if("undefined"==typeof svmFilter)throw"Could not initiate filters, please make sure that svmfilter.js or svmfilter_conv_js.js is loaded.";W=new svmFilter,W.init(p.raw,r.raw,d,e,s)}}else"MOSSE"==g&&(X=new mosseFilterResponses,X.init(p,d,e,e));if(S=T="SVM"==g?e+s-1:s,U=S*T,v=(s-1)/2,x=s*s,"undefined"!=typeof Float64Array){w=new Float64Array(x);for(var c=0;d>c;c++)E[c]=new Float64Array(U)}else{w=new Array(x);for(var c=0;d>c;c++)E[c]=new Array(U)}for(var c=0;d>c;c++)O[c]=1,P[c]=0;if(a.weightPoints){la=[];for(var c=0;d>c;c++)c in a.weightPoints?(la[2*c]=a.weightPoints[c],la[2*c+1]=a.weightPoints[c]):(la[2*c]=1,la[2*c+1]=1);la=numeric.diag(la)}},this.start=function(b,c){return"undefined"==typeof q?!1:("undefined"==typeof ja&&(ja=b,ka=c),Y=new jsfeat_face(b,a.faceDetection.workSize),void(ia=Ga(va)))},this.stop=function(){Ha(ia)},this.track=function(b,c){var e=document.createEvent("Event");e.initEvent("clmtrackrBeforeTrack",!0,!0),document.dispatchEvent(e);var n,o,p,q,r,t,u;if(M){var v=Ea(b,c);if(!v){var e=document.createEvent("Event");return e.initEvent("clmtrackrNotFound",!0,!0),document.dispatchEvent(e),!1}n=v[0],q=v[1],o=v[2],p=v[3],M=!1}else{if(ma+=1,a.constantVelocity&&C.length>=2)for(var x=0;xua&&(q-=Math.PI),n=A[1]/Math.sin(q),o=A[2],p=A[3]}k.save(),k.clearRect(0,0,l,m),k.scale(1/n,1/n),k.rotate(-q),k.translate(-o,-p),k.drawImage(b,0,0,b.width,b.height),k.restore();var y=za(A,!1);if(da&&ma%10==0&&!Da()){M=!0,pa=[];for(var x=0;xx;x++){t=y[x][0]-S/2,u=y[x][1]-T/2,r=k.getImageData(Math.round(t),Math.round(u),S,T),z=r.data,G=E[x];for(var I=0;U>I;I++)H=.3*z[4*I]+.59*z[4*I+1]+.11*z[4*I+2],G[I]=H}if("SVM"==g)if("undefined"!=typeof V)F=xa(E);else{if("undefined"==typeof W)throw"SVM-filters do not seem to be initiated properly.";F=W.getResponses(E)}else"MOSSE"==g&&(F=X.getResponses(E));if(a.sharpenResponse)for(var x=0;d>x;x++)for(var I=0;II;I++){Y=O[I][0]-(s-1)*n/2,Z=O[I][1]-(s-1)*n/2;var $=Ba(s,B[I],Q,w,F,Y,Z,I,K[x],n);Ca(s,R,Q,w,$,Y,Z,n),P[I]=[R[0]-B[I][0],R[1]-B[I][1]]}for(var _=numeric.rep([2*d,1],0),aa=0;d>aa;aa++)_[2*aa][0]=P[aa][0],_[2*aa+1][0]=P[aa][1];var ba=numeric.mul(h,K[x]);if(a.weightPoints)var ca=numeric.dot(numeric.transpose(J),numeric.dot(la,J));else var ca=numeric.dot(numeric.transpose(J),J);for(var ea=numeric.rep([f+4,1],0),fa=0;f+4>fa;fa++)ea[fa][0]=A[fa];var ga=numeric.dot(ba,ea);if(a.weightPoints)var ha=numeric.dot(numeric.transpose(J),numeric.dot(la,_));else var ha=numeric.dot(numeric.transpose(J),_);for(var ia=numeric.add(ba,ca),ja=numeric.sub(ga,ha),ka=numeric.dot(numeric.inv(ia),ja),na=B,aa=0;f+4>aa;aa++)A[aa]-=ka[aa];for(var oa,aa=0;f>aa;aa++)oa=Math.abs(3*Math.sqrt(j[aa])),Math.abs(A[aa+4])>oa&&(A[aa+4]>0?A[aa+4]=oa:A[aa+4]=-oa);B=za(A,!0);for(var qa,ra,sa=0,aa=0;aasa)break}a.constantVelocity&&(C.push(A.slice()),C.splice(0,3==C.length?1:0)),D.splice(0,10==D.length?1:0),D.push(B.slice(0));var e=document.createEvent("Event");if(e.initEvent("clmtrackrIteration",!0,!0),document.dispatchEvent(e),this.getConvergence()<.5&&pa.length>=5){a.stopOnConvergence&&this.stop();var e=document.createEvent("Event");e.initEvent("clmtrackrConverged",!0,!0),document.dispatchEvent(e)}return B},this.reset=function(){M=!0,pa=[];for(var a=0;af;f++)for(var g=0;d>g;g++)a+=D[f][g][0],b+=D[f][g][1];a/=5,b/=5;for(var f=5;10>f;f++)for(var g=0;d>g;g++)c+=D[f][g][0],e+=D[f][g][1];c/=5,e/=5;var h=c-a,i=e-b,j=h*h+i*i;return j/=D.length},this.setResponseMode=function(a,b){if("undefined"!=typeof q&&"undefined"!=typeof V&&!(["single","blend","cycle"].indexOf(a)<0)&&b instanceof Array){for(var c=0;c=I.length&&(J=0),b}for(var c=[],e=0;ee;e++){for(var b=Array(s*s),g=0;s*s>g;g++)b[g]=0;for(var h=0;hg;g++)b[g]+=c[h][e][g]/I.length;f[e]=b}return f},ya=function(a,b){for(var c,e,g=numeric.rep([2*d,f+4],0),h=0;d>h;h++){c=G[h][0],e=G[h][1];for(var i=0;f>i;i++)c+=a[i+4]*b[2*h][i],e+=a[i+4]*b[2*h+1][i];g[2*h][0]=c,g[2*h+1][0]=e,c=G[h][1],e=G[h][0];for(var i=0;f>i;i++)c+=a[i+4]*b[2*h+1][i],e+=a[i+4]*b[2*h][i];g[2*h][1]=-c,g[2*h+1][1]=e,g[2*h][2]=1,g[2*h+1][2]=0,g[2*h][3]=0,g[2*h+1][3]=1;for(var j=0;f>j;j++)c=a[0]*b[2*h][j]-a[1]*b[2*h+1][j]+b[2*h][j],e=a[0]*b[2*h+1][j]+a[1]*b[2*h][j]+b[2*h+1][j],g[2*h][j+4]=c,g[2*h+1][j+4]=e}return g},za=function(a,b){for(var c,e,f,g,h=a.length,i=[],j=0;d>j;j++){c=G[j][0],e=G[j][1];for(var k=0;h-4>k;k++)c+=q.shapeModel.eigenVectors[2*j][k]*a[k+4],e+=q.shapeModel.eigenVectors[2*j+1][k]*a[k+4];b&&(f=a[0]*c-a[1]*e+a[2],g=a[0]*e+a[1]*c+a[3],c+=f,e+=g),i[j]=[c,e]}return i},Aa=function(b){var c=Y.findFace(a.faceDetection);return c?o=c:!1},Ba=function(a,b,c,d,e,f,g,h,i,j){for(var k,l,m=0,n=0,o=0;a>o;o++){c[1]=g+o*j;for(var p=0;a>p;p++)c[0]=f+p*j,k=b[0]-c[0],l=b[1]-c[1],d[m]=e[h][m]*Math.exp(-.5*(k*k+l*l)/(i*j)),n+=d[m],m++}return n},Ca=function(a,b,c,d,e,f,g,h){var i=0,j=0;b[0]=0,b[1]=0;for(var k=0;a>k;k++){c[1]=g+k*h;for(var l=0;a>l;l++)c[0]=f+l*h,j=d[i]/e,b[0]+=j*c[0],b[1]+=j*c[1],i++}},Da=function(){oa.drawImage(n,Math.round(Z+ba/4.5),Math.round($-ca/12),Math.round(ba-2*ba/4.5),Math.round(ca-ca/12),0,0,20,22);for(var b=oa.getImageData(0,0,20,22),c=new Array(440),d=b.data,e=0,f=0;440>f;f++)c[f]=.3*d[4*f]+.59*d[4*f+1]+.11*d[4*f+2],c[f]=Math.log(c[f]+1),c[f]>e&&(e=c[f]);if(e>0){for(var g=0,f=0;440>f;f++)g+=c[f];g/=440;for(var h=0,f=0;440>f;f++)h+=(c[f]-g)*(c[f]-g);h/=439,h=Math.sqrt(h);for(var i=0,f=0;440>f;f++)c[f]=(c[f]-g)/h,i+=c[f]*da[f];if(i+=ea,i=1/(1+Math.exp(-i)),pa.splice(0,5==pa.length?1:0),pa.push(i),pa.length>4){qa=0;for(var f=0;5>f;f++)qa+=pa[f];if(qa/=5,qak;k++)e+=q.shapeModel.eigenVectors[d][k]*c[k+4],g+=q.shapeModel.eigenVectors[d+1][k]*c[k+4];h=c[0]*e-c[1]*g+c[2],i=c[0]*g+c[1]*e+c[3],e+=h,g+=i,0==d?a.moveTo(e,g):a.lineTo(e,g)}a.moveTo(0,0),a.closePath(),a.stroke()},Ga=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a,b){return window.setTimeout(a,1e3/60)}}(),Ha=function(){return window.cancelAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame||window.oCancelRequestAnimationFrame||window.msCancelRequestAnimationFrame||window.clearTimeout}();return!0}},webglFilter=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W=!1,X=!1,Y=!1,Z=["attribute vec2 a_texCoord;","attribute vec2 a_position;","","varying vec2 v_texCoord;","","void main() {"," // transform coordinates to regular coordinates"," gl_Position = vec4(a_position,0.0,1.0);"," "," // pass the texCoord to the fragment shader"," v_texCoord = a_texCoord;","}"].join("\n"),$=["attribute vec2 a_texCoord;","attribute vec2 a_position;","","varying vec2 v_texCoord;","","void main() {"," // transform coordinates to regular coordinates"," gl_Position = vec4(a_position,0.0,1.0);"," "," // pass the texCoord to the fragment shader"," v_texCoord = a_texCoord;","}"].join("\n"),_=["attribute vec2 a_texCoord_draw;","attribute vec2 a_position_draw;","attribute float a_patchChoice_draw;","","uniform vec2 u_resolutiondraw;","","varying vec2 v_texCoord;","varying float v_select;","","void main() {"," // convert the rectangle from pixels to 0.0 to 1.0"," vec2 zeroToOne = a_position_draw / u_resolutiondraw;",""," // convert from 0->1 to 0->2"," vec2 zeroToTwo = zeroToOne * 2.0;",""," // convert from 0->2 to -1->+1 (clipspace)"," vec2 clipSpace = zeroToTwo - 1.0;"," "," // transform coordinates to regular coordinates"," gl_Position = vec4(clipSpace * vec2(1.0, 1.0), 0, 1);",""," // pass the texCoord to the fragment shader"," v_texCoord = a_texCoord_draw;"," "," v_select = a_patchChoice_draw;","}"].join("\n"),aa=["precision mediump float;","","// our responses","uniform sampler2D u_responses;","","// the texCoords passed in from the vertex shader.","varying vec2 v_texCoord;","varying float v_select;","","const vec4 bit_shift = vec4(256.0*256.0*256.0, 256.0*256.0, 256.0, 1.0);","const vec4 bit_mask = vec4(0.0, 1.0/256.0, 1.0/256.0, 1.0/256.0);","","// packing code from here http://stackoverflow.com/questions/9882716/packing-float-into-vec4-how-does-this-code-work","void main() {"," vec4 colorSum = texture2D(u_responses, v_texCoord);"," float value = 0.0;"," if (v_select < 0.1) {"," value = colorSum[0];"," } else if (v_select > 0.9 && v_select < 1.1) {"," value = colorSum[1];"," } else if (v_select > 1.9 && v_select < 2.1) {"," value = colorSum[2];"," } else if (v_select > 2.9 && v_select < 3.1) {"," value = colorSum[3];"," } else {"," value = 1.0;"," }"," "," vec4 res = fract(value * bit_shift);"," res -= res.xxyz * bit_mask;"," "," //gl_FragColor = vec4(value, value, value, value);"," //gl_FragColor = vec4(1.0, value, 1.0, 1.0);"," gl_FragColor = res;","}"].join("\n");this.init=function(ba,da,ea,fa,ga,ha,ia){if(ha!=ia)return void alert("filter width and height must be same size!");if(ha%2==0||ia%2==0)return void alert("filters used in svm must be of odd dimensions!");G=da,c=ha,d=ia,e=fa,f=ga,g=ea,m=Math.floor(g/4)+Math.ceil(g%4/4),h=e,i=f*m,v=e-c+1,w=f-c+1,x=w*g,B=Math.floor(g/4)+Math.ceil(g%4/4),C=e,D=f*B,E=e*f,F=new Float32Array(E*B*4);var ja=[1/e,1/(f*m)];if(V=["precision mediump float;","","const vec2 u_onePixelPatches = vec2("+(1/e).toFixed(10)+","+(1/(f*m)).toFixed(10)+");","const vec2 u_onePixelFilters = vec2("+(1/c).toFixed(10)+","+(1/(d*m)).toFixed(10)+");","const float u_halffilterwidth = "+((c-1)/2).toFixed(1)+";","const float u_halffilterheight = "+((d-1)/2).toFixed(1)+";","","// our patches","uniform sampler2D u_patches;","// our filters","uniform sampler2D u_filters;","","// the texCoords passed in from the vertex shader.","varying vec2 v_texCoord;","varying vec2 v_texCoordFilters; // this should give us correct filter","","void main() {"," vec4 colorSum = vec4(0.0, 0.0, 0.0, 0.0);"," vec4 maxn = vec4(0.0, 0.0, 0.0, 0.0);"," vec4 minn = vec4(256.0, 256.0, 256.0, 256.0);"," vec4 scale = vec4(0.0, 0.0, 0.0, 0.0);"," vec4 patchValue = vec4(0.0, 0.0, 0.0, 0.0);"," vec4 filterValue = vec4(0.0, 0.0, 0.0, 0.0);"," vec4 filterTemp = vec4(0.0, 0.0, 0.0, 0.0);"," for (int w = 0;w < "+c+";w++) {"," for (int h = 0;h < "+d+";h++) {"," patchValue = texture2D(u_patches, v_texCoord + u_onePixelPatches * vec2(float(w)-u_halffilterwidth, float(h)-u_halffilterheight));"," filterValue = texture2D(u_filters, v_texCoordFilters + u_onePixelFilters * vec2(float(w)-u_halffilterwidth, float(h)-u_halffilterheight));"," maxn = max(patchValue, maxn);"," minn = min(patchValue, minn);"," colorSum += patchValue*filterValue;"," filterTemp += filterValue;"," } "," }"," scale = maxn-minn;"," colorSum = (colorSum-(minn*filterTemp))/scale;"," // logistic transformation"," colorSum = 1.0/(1.0 + exp(- (colorSum) ));"," gl_FragColor = colorSum;","}"].join("\n"),U=["attribute vec2 a_texCoord;","attribute vec2 a_position;","","const vec2 u_resolution = vec2("+h.toFixed(1)+","+i.toFixed(1)+");","const float u_patchHeight = "+(1/m).toFixed(10)+";","const float u_filterHeight = "+(1/m).toFixed(10)+";","const vec2 u_midpoint = vec2(0.5 ,"+(1/(2*m)).toFixed(10)+");","","varying vec2 v_texCoord;","varying vec2 v_texCoordFilters;","","void main() {"," // convert the rectangle from pixels to 0.0 to 1.0"," vec2 zeroToOne = a_position / u_resolution;",""," // convert from 0->1 to 0->2"," vec2 zeroToTwo = zeroToOne * 2.0;",""," // convert from 0->2 to -1->+1 (clipspace)"," vec2 clipSpace = zeroToTwo - 1.0;"," "," // transform coordinates to regular coordinates"," gl_Position = vec4(clipSpace * vec2(1.0, 1.0), 0, 1);"," "," // pass the texCoord to the fragment shader"," v_texCoord = a_texCoord;"," "," // set the filtertexture coordinate based on number filter to use"," v_texCoordFilters = u_midpoint + vec2(0.0, u_filterHeight * floor(a_texCoord[1]/u_patchHeight));","}"].join("\n"),"lbp"in ba&&(S=["precision mediump float;","","uniform vec2 u_onePixelPatches;","","// our patches","uniform sampler2D u_patches;","","// the texCoords passed in from the vertex shader.","varying vec2 v_texCoord;","","void main() {"," vec4 topLeft = texture2D(u_patches, v_texCoord + vec2(-"+ja[0].toFixed(5)+", -"+ja[1].toFixed(5)+"));"," vec4 topMid = texture2D(u_patches, v_texCoord + vec2(0.0, -"+ja[1].toFixed(5)+"));"," vec4 topRight = texture2D(u_patches, v_texCoord + vec2("+ja[0].toFixed(5)+", -"+ja[1].toFixed(5)+"));"," vec4 midLeft = texture2D(u_patches, v_texCoord + vec2(-"+ja[0].toFixed(5)+", 0.0));"," vec4 midMid = texture2D(u_patches, v_texCoord);"," vec4 midRight = texture2D(u_patches, v_texCoord + vec2("+ja[0].toFixed(5)+", 0.0));"," vec4 bottomLeft = texture2D(u_patches, v_texCoord + vec2(-"+ja[0].toFixed(5)+", "+ja[1].toFixed(5)+"));"," vec4 bottomMid = texture2D(u_patches, v_texCoord + vec2(0.0, "+ja[1].toFixed(5)+"));"," vec4 bottomRight = texture2D(u_patches, v_texCoord + vec2("+ja[0].toFixed(5)+", "+ja[1].toFixed(5)+"));"," vec4 lbp = step(midMid, midRight)*1.0 + step(midMid, topRight)*2.0 + step(midMid, topMid)*4.0;"," lbp = lbp + step(midMid, topLeft)*8.0 + step(midMid, midLeft)*16.0 + step(midMid, bottomLeft)*32.0;"," lbp = lbp + step(midMid, bottomMid)*64.0 + step(midMid, bottomRight)*128.0;"," gl_FragColor = lbp;","}"].join("\n")),"sobel"in ba&&(T=["precision mediump float;","","uniform vec2 u_onePixelPatches;","","// our patches","uniform sampler2D u_patches;","","// the texCoords passed in from the vertex shader.","varying vec2 v_texCoord;","","void main() {"," vec4 bottomLeft = texture2D(u_patches, v_texCoord + vec2(-"+ja[0].toFixed(5)+", "+ja[1].toFixed(5)+"));"," vec4 bottomRight = texture2D(u_patches, v_texCoord + vec2("+ja[0].toFixed(5)+", "+ja[1].toFixed(5)+"));"," vec4 topLeft = texture2D(u_patches, v_texCoord + vec2(-"+ja[0].toFixed(5)+", -"+ja[1].toFixed(5)+"));"," vec4 topRight = texture2D(u_patches, v_texCoord + vec2("+ja[0].toFixed(5)+", -"+ja[1].toFixed(5)+"));"," vec4 dx = ("," bottomLeft +"," (texture2D(u_patches, v_texCoord + vec2(-"+ja[0].toFixed(5)+", 0.0))*vec4(2.0,2.0,2.0,2.0)) +"," topLeft -"," bottomRight -"," (texture2D(u_patches, v_texCoord + vec2("+ja[0].toFixed(5)+", 0.0))*vec4(2.0,2.0,2.0,2.0)) -"," topRight)/4.0;"," vec4 dy = ("," bottomLeft +"," (texture2D(u_patches, v_texCoord + vec2(0.0, "+ja[1].toFixed(5)+"))*vec4(2.0,2.0,2.0,2.0)) +"," bottomRight -"," topLeft -"," (texture2D(u_patches, v_texCoord + vec2(0.0, -"+ja[1].toFixed(5)+"))*vec4(2.0,2.0,2.0,2.0)) -"," topRight)/4.0;"," vec4 gradient = sqrt((dx*dx) + (dy*dy));"," gl_FragColor = gradient;","}"].join("\n")),b=document.createElement("canvas"),b.setAttribute("width",e-c+1+"px"),b.setAttribute("height",(f-d+1)*g+"px"),b.setAttribute("id","renderCanvas"),b.setAttribute("style","display:none;"),document.body.appendChild(b),a=setupWebGL(b,{premultipliedAlpha:!1,preserveDrawingBuffer:!0,antialias:!1}),!a.getExtension("OES_texture_float"))return void alert("Your graphics card does not support floating point textures! :(");"raw"in ba&&(ca(ba.raw,a.TEXTURE0),Y=!0),"sobel"in ba&&(ca(ba.sobel,a.TEXTURE4),X=!0),"lbp"in ba&&(ca(ba.lbp,a.TEXTURE5),W=!0);for(var ka,la=[],ma=(c-1)/2,na=0;m>na;na++)ka=na*f,la=la.concat([ma,ka+ma,e-ma,ka+ma,ma,ka+f-ma]),la=la.concat([ma,ka+f-ma,e-ma,ka+ma,e-ma,ka+f-ma]);la=new Float32Array(la);for(var oa=[],na=0;nana;na++)ka=na*(2/m),ra=ra.concat([-1,pa-ka,1,pa-ka,-1,qa-ka]),ra=ra.concat([-1,qa-ka,1,pa-ka,1,qa-ka]);ra=new Float32Array(ra),pa=1-1/(f*m),qa=1-1/m+1/(f*m);for(var sa=[],na=0;m>na;na++)ka=na*(1/m),sa=sa.concat([0,pa-ka,1,pa-ka,0,qa-ka]),sa=sa.concat([0,qa-ka,1,pa-ka,1,qa-ka]);sa=new Float32Array(sa)}y=new Float32Array(12*g);for(var ka,ta,na=0;g>na;na++)ka=na*w,ta=12*na,y[ta]=0,y[ta+1]=ka,y[ta+2]=v,y[ta+3]=ka,y[ta+4]=0,y[ta+5]=ka+w,y[ta+6]=0,y[ta+7]=ka+w,y[ta+8]=v,y[ta+9]=ka,y[ta+10]=v,y[ta+11]=ka+w;z=new Float32Array(12*g);for(var ua=(c-1)/2/e,va=(c-1)/2/(f*B),wa=f/(f*B),na=0;g>na;na++)ka=Math.floor(na/4)*wa,ta=12*na,z[ta]=ua,z[ta+1]=ka+va,z[ta+2]=1-ua,z[ta+3]=ka+va,z[ta+4]=ua,z[ta+5]=ka+wa-va,z[ta+6]=ua,z[ta+7]=ka+wa-va,z[ta+8]=1-ua,z[ta+9]=ka+va,z[ta+10]=1-ua,z[ta+11]=ka+wa-va;A=new Float32Array(6*g);for(var xa,na=0;g>na;na++)xa=na%4,ta=6*na,A[ta]=xa,A[ta+1]=xa,A[ta+2]=xa,A[ta+3]=xa,A[ta+4]=xa,A[ta+5]=xa;if("sobel"in ba){var ya=loadShader(a,$,a.VERTEX_SHADER),za=loadShader(a,T,a.FRAGMENT_SHADER);M=createProgram(a,[ya,za]),a.useProgram(M),Q=a.getAttribLocation(M,"a_position"),R=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,R),a.bufferData(a.ARRAY_BUFFER,ra,a.STATIC_DRAW),a.enableVertexAttribArray(Q),a.vertexAttribPointer(Q,2,a.FLOAT,!1,0,0),O=a.getAttribLocation(M,"a_texCoord"),P=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,P),a.bufferData(a.ARRAY_BUFFER,sa,a.STATIC_DRAW),a.enableVertexAttribArray(O),a.vertexAttribPointer(O,2,a.FLOAT,!1,0,0),a.uniform1i(a.getUniformLocation(M,"u_patches"),1)}if("lbp"in ba){var Aa=loadShader(a,Z,a.VERTEX_SHADER),Ba=loadShader(a,S,a.FRAGMENT_SHADER);H=createProgram(a,[Aa,Ba]),a.useProgram(H),K=a.getAttribLocation(H,"a_position"),L=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,L),a.bufferData(a.ARRAY_BUFFER,ra,a.STATIC_DRAW),a.enableVertexAttribArray(K),a.vertexAttribPointer(K,2,a.FLOAT,!1,0,0),O=a.getAttribLocation(H,"a_texCoord"),J=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,J),a.bufferData(a.ARRAY_BUFFER,sa,a.STATIC_DRAW),a.enableVertexAttribArray(I),a.vertexAttribPointer(I,2,a.FLOAT,!1,0,0),a.uniform1i(a.getUniformLocation(H,"u_patches"),1)}var Ca=loadShader(a,_,a.VERTEX_SHADER),Da=loadShader(a,aa,a.FRAGMENT_SHADER);k=createProgram(a,[Ca,Da]),a.useProgram(k);var Ea=a.getUniformLocation(k,"u_resolutiondraw");a.uniform2f(Ea,v,x);var Fa=a.getUniformLocation(k,"u_responses");a.uniform1i(Fa,2);var Ga=loadShader(a,U,a.VERTEX_SHADER),Ha=loadShader(a,V,a.FRAGMENT_SHADER);j=createProgram(a,[Ga,Ha]),a.useProgram(j);var Ia=a.getAttribLocation(j,"a_position"); +if(u=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,u),a.bufferData(a.ARRAY_BUFFER,la,a.STATIC_DRAW),a.enableVertexAttribArray(Ia),a.vertexAttribPointer(Ia,2,a.FLOAT,!1,0,0),t=a.getAttribLocation(j,"a_texCoord"),s=a.createBuffer(),a.bindBuffer(a.ARRAY_BUFFER,s),a.bufferData(a.ARRAY_BUFFER,oa,a.STATIC_DRAW),a.enableVertexAttribArray(t),a.vertexAttribPointer(t,2,a.FLOAT,!1,0,0),"lbp"in ba||"sobel"in ba){a.activeTexture(a.TEXTURE3);var Ja=a.createTexture();a.bindTexture(a.TEXTURE_2D,Ja),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,e,f*m,0,a.RGBA,a.FLOAT,null),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST),N=a.createFramebuffer(),a.bindFramebuffer(a.FRAMEBUFFER,N),a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,Ja,0)}a.activeTexture(a.TEXTURE2),r=a.createTexture(),a.bindTexture(a.TEXTURE_2D,r),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,e,f*m,0,a.RGBA,a.FLOAT,null),l=a.createFramebuffer(),a.bindFramebuffer(a.FRAMEBUFFER,l),a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,r,0),a.viewport(0,0,e,f*m),n=a.createTexture(),o=a.createBuffer(),q=a.createBuffer(),p=a.createBuffer()},this.getRawResponses=function(b){ba(b),a.useProgram(j),a.uniform1i(a.getUniformLocation(j,"u_patches"),1),a.uniform1i(a.getUniformLocation(j,"u_filters"),0);var c=a.getAttribLocation(j,"a_position");a.bindBuffer(a.ARRAY_BUFFER,u),a.enableVertexAttribArray(c),a.vertexAttribPointer(c,2,a.FLOAT,!1,0,0);var d=a.getAttribLocation(j,"a_texCoord");a.bindBuffer(a.ARRAY_BUFFER,s),a.enableVertexAttribArray(d),a.vertexAttribPointer(d,2,a.FLOAT,!1,0,0),a.bindFramebuffer(a.FRAMEBUFFER,l),a.viewport(0,0,e,f*m),a.clearColor(0,0,0,1),a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER),a.drawArrays(a.TRIANGLES,0,6*B);var g=da("raw");return g},this.getSobelResponses=function(b){if(X){ba(b),a.useProgram(M);var c=a.getAttribLocation(M,"a_position");a.bindBuffer(a.ARRAY_BUFFER,R),a.enableVertexAttribArray(c),a.vertexAttribPointer(c,2,a.FLOAT,!1,0,0);var d=a.getAttribLocation(M,"a_texCoord");a.bindBuffer(a.ARRAY_BUFFER,P),a.enableVertexAttribArray(d),a.vertexAttribPointer(d,2,a.FLOAT,!1,0,0),a.bindFramebuffer(a.FRAMEBUFFER,N),a.viewport(0,0,e,f*m),a.clearColor(0,0,0,1),a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER),a.drawArrays(a.TRIANGLES,0,6*B),a.useProgram(j),a.uniform1i(a.getUniformLocation(j,"u_filters"),4),a.uniform1i(a.getUniformLocation(j,"u_patches"),3);var g=a.getAttribLocation(j,"a_position");a.bindBuffer(a.ARRAY_BUFFER,u),a.enableVertexAttribArray(g),a.vertexAttribPointer(g,2,a.FLOAT,!1,0,0);var h=a.getAttribLocation(j,"a_texCoord");a.bindBuffer(a.ARRAY_BUFFER,s),a.enableVertexAttribArray(h),a.vertexAttribPointer(h,2,a.FLOAT,!1,0,0),a.bindFramebuffer(a.FRAMEBUFFER,l),a.viewport(0,0,e,f*m),a.clearColor(0,0,0,1),a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER),a.drawArrays(a.TRIANGLES,0,6*B);var i=da("sobel");return i}},this.getLBPResponses=function(b){if(W){ba(b),a.useProgram(H);var c=a.getAttribLocation(H,"a_position");a.bindBuffer(a.ARRAY_BUFFER,L),a.enableVertexAttribArray(c),a.vertexAttribPointer(c,2,a.FLOAT,!1,0,0);var d=a.getAttribLocation(H,"a_texCoord");a.bindBuffer(a.ARRAY_BUFFER,J),a.enableVertexAttribArray(d),a.vertexAttribPointer(d,2,a.FLOAT,!1,0,0),a.bindFramebuffer(a.FRAMEBUFFER,N),a.viewport(0,0,e,f*m),a.clearColor(0,0,0,1),a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER),a.drawArrays(a.TRIANGLES,0,6*B),a.useProgram(j),a.uniform1i(a.getUniformLocation(j,"u_filters"),5),a.uniform1i(a.getUniformLocation(j,"u_patches"),3);var g=a.getAttribLocation(j,"a_position");a.bindBuffer(a.ARRAY_BUFFER,u),a.enableVertexAttribArray(g),a.vertexAttribPointer(g,2,a.FLOAT,!1,0,0);var h=a.getAttribLocation(j,"a_texCoord");a.bindBuffer(a.ARRAY_BUFFER,s),a.enableVertexAttribArray(h),a.vertexAttribPointer(h,2,a.FLOAT,!1,0,0),a.bindFramebuffer(a.FRAMEBUFFER,l),a.viewport(0,0,e,f*m),a.clearColor(0,0,0,1),a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER),a.drawArrays(a.TRIANGLES,0,6*B);var i=da("lbp");return i}};var ba=function(b){for(var c=0,d=0,h=0,i=0;B>i;i++)for(var j=0;f>j;j++)for(var k=0;e>k;k++)d=4*i,h=j*e+k,c=4*(E*i+h),g>d?F[c]=b[d][h]:F[c]=0,g>d+1?F[c+1]=b[d+1][h]:F[c+1]=0,g>d+2?F[c+2]=b[d+2][h]:F[c+2]=0,g>d+3?F[c+3]=b[d+3][h]:F[c+3]=0;a.activeTexture(a.TEXTURE1),a.bindTexture(a.TEXTURE_2D,n),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,C,D,0,a.RGBA,a.FLOAT,F),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.NEAREST),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.NEAREST)},ca=function(b,e){for(var f=c*d,g=new Float32Array(f*m*4),h=0;m>h;h++)for(var i=0;d>i;i++)for(var j=0;c>j;j++)4*hi;i++)f[i]=ia(f[i]);return f},ea=function(a,b){for(var c,d=0;dg;g++)g%e==0&&(0!=g&&c.push(f),f=[]),f.push(a[g]);return c.push(f),c},ga=function(){var c=new Uint8Array(4*b.width*b.height);a.readPixels(0,0,b.width,b.height,a.RGBA,a.UNSIGNED_BYTE,c);return c},ha=function(a){for(var b=[],c=a.length,d=0;c>d;d+=4)b[d/4>>0]=a[d]/4294967296+a[d+1]/16777216+a[d+2]/65536+a[d+3]/256;return b},ia=function(a){for(var b=a.length,c=0,d=1,e=0;b>e;e++)c=a[e]>c?a[e]:c,d=a[e]e;e++)a[e]=(a[e]-d)/f;return a}};!function(){var a=function(a){throw window.console&&(window.console.error?window.console.error(a):window.console.log&&window.console.log(a)),a},b=function(){return window!=window.top},c=function(a,b){if(!window.WebGLRenderingContext)return null;var c=d(a,b);return c?c:null},d=function(a,b){for(var c=["webgl","experimental-webgl"],d=null,e=0;e>2,q=0;g>q;q++)j=h[q],j>q&&(k=a[q],a[q]=a[j],a[j]=k,k=b[q],b[q]=b[j],b[j]=k);for(var r=1;g>r;r<<=1){e=0,d=g/(r<<1);for(var s=0;r>s;s++){l=i[e+p],m=c*i[e];for(var t=s;g>t;t+=r<<1)f=t+r,n=l*a[f]+m*b[f],o=l*b[f]-m*a[f],a[f]=a[t]-n,a[t]+=n,b[f]=b[t]-o,b[t]+=o;e+=d}}}function b(){h="undefined"!=typeof Uint8Array?new Uint8Array(g):new Array(g),"undefined"!=typeof Float64Array?(i=new Float64Array(1.25*g),e=new Float64Array(g),f=new Float64Array(g)):(i=new Array(1.25*g),e=new Array(g),f=new Array(g))}function c(){var a=0,b=0,c=0;for(h[0]=0;++a>1;b>=c;)b-=c,c>>=1;b+=c,h[a]=b}}function d(){var a=g>>1,b=g>>2,c=g>>3,d=a+b,e=Math.sin(Math.PI/g),f=2*e*e,h=Math.sqrt(f*(2-f)),j=i[b]=1,k=i[0]=0;e=2*f;for(var l=1;c>l;l++)j-=f,f+=e*j,k+=h,h-=e*k,i[l]=k,i[b-l]=j;0!==c&&(i[c]=Math.sqrt(.5));for(var m=0;b>m;m++)i[a-m]=i[m];for(var n=0;d>n;n++)i[n+a]=-i[n]}var e,f,g=0,h=null,i=null;this.init=function(a){if(0===a||0!==(a&a-1))throw new Error("init: radix-2 required");g=a,b(),c(),d()},this.fft1d=function(b,c){a(b,c,1)},this.ifft1d=function(b,c){var d=1/g;a(b,c,-1);for(var e=0;g>e;e++)b[e]*=d,c[e]*=d},this.fft2d=function(a,b){for(var c=0,d=0;g>d;d++){c=d*g;for(var h=0;g>h;h++)e[h]=a[h+c],f[h]=b[h+c];this.fft1d(e,f);for(var i=0;g>i;i++)a[i+c]=e[i],b[i+c]=f[i]}for(var j=0;g>j;j++){for(var k=0;g>k;k++)c=j+k*g,e[k]=a[c],f[k]=b[c];this.fft1d(e,f);for(var l=0;g>l;l++)c=j+l*g,a[c]=e[l],b[c]=f[l]}},this.ifft2d=function(a,b){for(var c=0,d=0;g>d;d++){c=d*g;for(var h=0;g>h;h++)e[h]=a[h+c],f[h]=b[h+c];this.ifft1d(e,f);for(var i=0;g>i;i++)a[i+c]=e[i],b[i+c]=f[i]}for(var j=0;g>j;j++){for(var k=0;g>k;k++)c=j+k*g,e[k]=a[c],f[k]=b[c];this.ifft1d(e,f);for(var l=0;g>l;l++)c=j+l*g,a[c]=e[l],b[c]=f[l]}},this.real_ifft2d=function(a,b){for(var c,d=0,h=0;g>h;h++){d=h*g;for(var i=0;g>i;i++)e[i]=a[i+d],f[i]=b[i+d];this.ifft1d(e,f);for(var j=0;g>j;j++)a[j+d]=e[j],b[j+d]=f[j]}for(var k=g/2,l=0,m=0;g>m;m+=2){d=m,c=m+1,e[0]=a[0+d],f[0]=a[0+c],e[g/2]=a[k*g+d],f[g/2]=a[k*g+c];for(var j=1;k>j;j++)l=j*g,e[j]=a[l+d]-b[l+c],e[g-j]=a[l+d]+b[l+c],f[j]=b[l+d]+a[l+c],f[g-j]=a[l+c]-b[l+d];this.ifft1d(e,f);for(var n=0;g>n;n++)d=m+n*g,c=m+1+n*g,a[d]=e[n],a[c]=f[n]}},this.real_fft2d=function(a,b){for(var c=0,d=0,h=0;g>h;h+=2){c=h*g,d=(h+1)*g;for(var i=0;g>i;i++)e[i]=a[i+c],f[i]=a[i+d];this.fft1d(e,f),a[0+c]=e[0],a[0+d]=f[0],b[0+c]=0,b[0+d]=0,a[g/2+c]=e[g/2],a[g/2+d]=f[g/2],b[g/2+c]=0,b[g/2+d]=0;for(var j=1;g/2>j;j++)a[j+c]=.5*(e[j]+e[g-j]),b[j+c]=.5*(f[j]-f[g-j]),a[j+d]=.5*(f[j]+f[g-j]),b[j+d]=-.5*(e[j]-e[g-j]),a[g-j+c]=a[j+c],b[g-j+c]=-b[j+c],a[g-j+d]=a[j+d],b[g-j+d]=-b[j+d]}for(var k=0;g>k;k++){for(var l=0;g>l;l++)c=k+l*g,e[l]=a[c],f[l]=b[c];this.fft1d(e,f);for(var m=0;g>m;m++)c=k+m*g,a[c]=e[m],b[c]=f[m]}}}var b,c,d,e,f,g,h,i,j,k,l;this.fft_inplace=function(a,c){"undefined"==typeof c&&(c=k);for(var d=0;g>d;d++)c[d]=0;return b.real_fft2d(a,c),[a,c]},this.ifft=function(a,c){return b.real_ifft2d(a,c),a};var m=function(a,b){for(var c,d,e=0;g>e;e++)c=a[0][e]*b[0][e]-a[1][e]*b[1][e],d=a[0][e]*b[1][e]+a[1][e]*b[0][e],a[0][e]=c,a[1][e]=d};this.init=function(m,n,o,q,r){f=p(q-1+r),g=f*f,b=new a,b.init(f),c=Array(o);for(var s,t=(q-1)/2,u=0;o>u;u++){for(var v,w,x=new Float64Array(g),y=new Float64Array(g),z=0;q>z;z++)for(var A=0;q>A;A++)v=t>A?f-t:-t,w=t>z?f-t:-t,x[A+v+(z+w)*f]=m[u][q-1-z+(q-1-A)*q];s=this.fft_inplace(x,y),c[u]=s}e=new Float64Array(o);for(var u=0;o>u;u++)e[u]=n[u];d=Array(o),k=Array(o);for(var u=0;o>u;u++)d[u]=new Float64Array(r*r),k[u]=new Float64Array(r*r);l=new Float64Array(g),j=o,h=q,i=r},this.getResponses=function(a){for(var b,g,k=h-1+i,p=0;j>p;p++){for(var r=0;f*f>r;r++)l[r]=0;a[p]=n(a[p]);for(var r=0;k>r;r++)for(var s=0;k>s;s++)l[r+f*s]=a[p][s+k*r];b=this.fft_inplace(l),m(b,c[p]),b=this.ifft(b[0],b[1]),g=(h-1)/2;for(var r=0;i>r;r++)for(var s=0;i>s;s++)d[p][r+s*i]=b[g+s+(r+g)*f];for(var r=0;i*i>r;r++)d[p][r]+=e[p];d[p]=o(d[p]),q(d[p])}return d};var n=function(a){for(var b,c=h-1+i,d=0,e=1e3,f=0;c>f;f++)for(var g=0;c>g;g++)b=a[g+c*f],e>b&&(e=b),b>d&&(d=b);for(var j=d-e,f=0;c>f;f++)for(var g=0;c>g;g++)a[g+c*f]=(a[g+c*f]-e)/j;return a},o=function(a){for(var b=0;i>b;b++)for(var c=0;i>c;c++)a[b+c*i]=1/(1+Math.exp(-(a[b+c*i]-1)));return a},p=function(a){return a--,a|=a>>1,a|=a>>2,a|=a>>4,a|=a>>8,a|=a>>16,a++,a},q=function(a){for(var b=a.length,c=0,d=1,e=0;b>e;e++)c=a[e]>c?a[e]:c,d=a[e]e;e++)a[e]=(a[e]-d)/f}},mosseFilterResponses=function(){var a=[],b=[],c=0;this.init=function(b,d,e,f){for(var g=0;d>g;g++){var h={};h.width=e,h.height=f;for(var i=e*f,j=new Float64Array(i),k=new Float64Array(i),l=0;i>l;l++)j[l]=b[g][0][l],k[l]=b[g][1][l];h.real=j,h.imag=k,a[g]=new mosseFilter,a[g].load(h)}c=d},this.getResponses=function(e){for(var f=0;c>f;f++)b[f]=a[f].getResponse(e[f]),b[f]=d(b[f]);return b};var d=function(a){for(var b=a.length,c=0,d=1,e=0;b>e;e++)c=a[e]>c?a[e]:c,d=a[e]e;e++)a[e]=(a[e]-d)/f;return a}},left_eye_filter={real:[1.5419219943717721,.40010880110578706,-.7904364126534296,-1.2685464969238938,.39878117336167285,-1.0673489992245377,-.07988083822940402,-.45374680224191505,-.04347409793890079,-.31125662385352687,.17092430376098702,-.29613086164846153,.5616469648110296,-1.559786848789493,.6451303799749266,-1.2899747976234162,1.1761667998175334,-1.289974797623355,.6451303799749047,-1.5597868487894897,.561646964811025,-.29613086164845964,.17092430376099094,-.3112566238535296,-.04347409793890079,-.4537468022419118,-.07988083822940466,-1.0673489992245357,.39878117336167307,-1.2685464969238942,-.7904364126534301,.40010880110578717,-1.3820969331049027,.06956047126920577,-1.9786339579213206,-1.9807415717551982,-.7866727441045088,-1.2217002325587256,-.19150029104902774,-.3513161729077324,-.17646388464205803,-.1667209502050344,-.09229861292456652,-.028899376452253527,-.1314555696102146,-.32892265898101813,-.40987148655061206,.11741827111366547,-.6725433018260514,-.46007833291519956,-.67215259521101,-.4487190743247301,-.03474931672918458,.005563928130243397,-.1767590236098159,-.2619620808503219,-.3630125430638704,-.33546767337818123,-.6458889740799838,-1.1981932989987978,.12372650763830917,-1.4996172161865935,-2.408429802301389,-2.050529127959172,-1.7249706159518585,-2.277646289702639,-3.125963174341959,-2.9656385065342015,-2.848083508696201,-1.426096450031019,-.6179259082917354,-.2611655301498782,-.38519889843539723,-.17511899827006483,-.32808050503227176,.007680087103746304,-.18710828510427668,.1976534820339281,-.5544445310046505,.1458356759032838,-.6984497111751529,-.9018857723352662,-.5350001638458337,-.0444207518616698,.014727914354086128,-.28084584584371913,-.2989040874868585,-.3943138014933655,-.39569215798819307,-.743519999882583,-.8250219837063175,-1.851491897104155,-.7430237866893424,.21156442062863762,-3.3061472495599986,-1.7990472945779568,-2.219376425173228,-2.343880246691925,-3.361597106712331,-3.538324908586371,-2.263967374508659,-2.027175780678075,-.7524258340587223,-.3014341101683938,-.3625272253546275,-.2548943100464769,-.1892849156146708,-.1179891518538482,.027920290231533224,-.03547210749814382,-.2900872185756226,-.3604588674139817,-.391561438074338,-.8222225740287656,-.4497991497169593,-.09813633035547625,.06562858246622937,-.3360730432730313,-.3216120132349778,-.41856090178723965,-.6402842542962905,-.7766428172010218,-1.3946448661671447,-2.2603422126144683,-.38769722219534525,-.9534159393947865,-1.412952994959813,-2.360233685802043,-1.275639243727802,-2.0983496132652038,-2.568245461005427,-2.879105394693038,-2.1809972632688095,-.8428129384777686,-.759989367937187,-.18584599820380068,-.3010574835530826,-.16098142942852958,-.1379212574041719,-.08979002287112871,-.12321821342876504,-.1128661923016878,-.3924098378001975,-.5780902167586397,-.48685989567066695,-.5356535944329623,-.05103668985052638,-.006854703392511769,-.1896340515783942,-.22514761090777807,-.3555582346088891,-.4667060397658552,-.5617954148525789,-.7495095888115163,-1.477207542226035,-1.5836466114968029,-2.3846549454186694,-1.4884613952536236,-1.8237453905245253,-1.6712324532934877,-1.5169157844507295,-1.6930052820597281,-2.1023566589276004,-2.2062031109308458,-1.7945281756942255,-.2645739883891265,.22038139379151148,-.43479836723775234,-.19830827357221226,-.18018565146479498,-.09706087918479574,-.10088329756370379,-.06306970995727253,-.17970932516041177,-.1943040732581543,-.3797056039227762,-.4730230160625181,-.3036696794805218,-.0647323910189154,-.08902516330269715,-.08200020008302734,-.22965854401457736,-.32035624605031326,-.3183678319655244,-.4013205823631112,-.6560174703347086,-.5904048375141748,-1.8503084663080034,-1.8694842425148914,-1.9326778896298584,-1.630157842292352,-1.43320067851183,-1.305707665299106,-1.364200787821644,-1.5357935460809622,-1.616199233695124,-.7400351866837052,-.2942382417321069,.025934598230976654,-.043349004411304674,-.2540802180302247,-.0669656864849775,-.07571749869863525,.007057189465364498,-.04217135665833811,-.03693831566176801,-.3422156158175605,-.20400167508805764,-.3741711609707977,-.25039909487805356,-.07087453139452493,-.0569972852039487,-.06723820695040318,-.17397285212300442,-.20428337307808273,-.23651154356493315,-.3335649893327657,-.07339749754226077,-.703679598066816,-.8240368002159505,-1.6058616381755235,-1.6192427030685497,-1.5705638815427956,-1.4659201063980019,-.9550417954995102,-.9723752616273987,-1.0460191987834688,-.9146566894126572,-.6054823236139852,.01898438364933451,-.19419044456729498,-.03962785112430722,.0012357796666701798,-.07811082244532508,.004862636492025052,-.04044908966237959,-.0035054269587873454,-.1338754472473073,-.10031131456276647,-.2596867467568419,-.20555329767005767,-.26509289948725284,-.038788452621647145,-.07699989187225126,-.0716614330389765,-.14182240789719938,-.1654673053291095,-.19859450279267193,-.05338232636581037,-.2156585383674445,-.0450973572847935,-.6244981857994951,-.9262490674491722,-1.0411254782363617,-1.122035196738675,-1.0607692164246043,-.5772381177353403,-.6318773589638808,-.5481331120442192,-.5532025210173874,-.301972995874824,-.04721324975783839,.08280893046738329,-.06771513448322243,-.01022881748368659,.04203831125895655,-.06337176739998067,.029161890169972702,-.09139631658683613,-.003460073507075481,-.12424052925006424,-.244329964180121,-.265216641753595,-.22745980283820413,-.14361316535317664,-.0007590420310057794,-.02093616845786214,-.14205665196423617,-.19024248288823023,-.0796861223622452,-.15016133237735926,.049598910651295514,-.11760486834511712,-.1837522251545049,-.3859420549411461,-.5354251643699984,-.5734099173080799,-.5275362142401814,-.23151163972118355,-.2229509691994926,-.33704349161770436,-.26165852514054583,-.13898866968588663,.034596483191139484,-.012631210076789067,.04737131007634562,-.03865183933075155,-.001997076145443002,.0630488452583755,-.1124891762554399,.08556992539656616,-.210436590518682,-.19223333969456,-.3908299483003586,-.1929436800716272,-.4102559543993857,-.17178084419175166,-.010933041190555012,-.0895129361520745,-.21569610281495066,-.09144756671688016,-.19525258909505316,-.029753598134641936,-.021307245660079924,.02908712794055101,.03751129065309784,-.2060099012070584,-.26967580750352926,-.21000923681194664,-.2820901885828563,-.11925518789339556,-.24869348141289982,-.21025892926356746,-.15567029136726124,-.04054672910839591,-.00502661531005471,.030710887069787196,-.006110434024585828,.0369376092260571,-.05486266136790032,.013297880203253048,.19659447375886394,-.2499491329142558,-.06295969900286576,-.5305502909595601,-.38784811281629444,-.5389128507596239,-.41886712861154285,-.09923009726032588,-.16474199810952628,-.28693665642627014,-.00956679808502211,-.3261995499345093,-.08627491478166284,-.07325316175571477,.01563417403869033,.08244053654753179,.025411878261881942,-.11318909242737961,-.1270560226842935,-.21657212936164139,-.1399387354961119,-.3751027523762283,-.2647292311107622,-.24460131567533192,-.14127652303494026,-.05042868659104518,.04134784037419077,-.006178044515300064,.007399034521025015,-.01406273903701438,.14348925152561878,-.015321787554403667,.0017746672356015968,.2516513542736105,-.626463828190993,-.4816713433080564,-1.045863293770664,-.6951259178849319,-.44532127384388254,-.2847972402536839,-.3947095508731798,.2022722834472047,-.5390991207348895,-.12025629051789474,-.1899243750597305,-.04847480672159513,.06076477135322776,.09064815178251616,.09160820891269728,.0036582478916540977,-.2249253000526313,-.27295314658024766,-.3555973802525736,-.6290292501441295,-.57166411974881,-.3725889517312918,-.22157638610464933,.022494427132080854,.014769425415166171,.003526808789406817,-.011346909674078769,.05092117084834829,.09030854179921963,.37260817254533324,-.2590987139215991,-.42379280974334355,-.09538064780856813,-1.190608374889352,-.7859991441489247,-.9527791435273028,-.6365977835942234,-.9802601500895275,.481731982859161,-.6009200901805519,-.10265418316164113,-.39913639006279306,-.17310908908773887,-.0194191171632387,.05404796528917988,.1388529643463832,.15661099050146,-.10898263774416243,-.332912314567376,-.5956902786588871,-.6935308158494897,-1.0999707493347484,-.7439208475373669,-.4907478121415816,-.06519055673385296,.012289768389229717,.024577513704595676,.004030280469609632,.036047756292976456,.058236765637246286,.1389384625679062,.03694467603693463,.41686279554239464,-.8523228638818582,-1.298831512762498,-.4735277967730517,-.8176363254154679,-.7738445780362183,-1.425624000451928,.5258899353236068,-.8982172402290268,.1591911967653899,-.5504659677234687,-.3098001604127102,-.16709614007114884,-.046029700131955266,.04479326815042398,.1689242242845459,.14412365934528507,-.008825007131336736,-.3677854512466631,-.793938445177321,-1.1610479066529615,-.7652321000885066,-.630098580320484,-.13947023057344932,-.017173105577524262,.039030007688455846,.0144912730838054,.03979254294383725,.054072846696920814,.11729310469925348,.053609281522667675,.008154949871808708,-.3091081345284555,.25944224899607843,-1.3584842180322938,-1.5885570490138659,-.6575958279461822,-1.139869490652734,.7092826408059469,-1.9674198903133462,.37712664425406606,-.8433603839057895,-.47788074719428036,-.1834200008666372,-.18811394573901796,-.05505002764598565,.045043056834335606,.1148630355985436,.22023958716404868,.14735402009444676,-.27894427087198,-.7308053695312964,-.7679430569329723,-.37355919765840223,.12353986794322802,.09050534837631184,.14069908672094206,.08737321438027885,.023353946735568523,.03140055992039659,.07955023044620224,.08492716138218544,.04077715825534942,-.16274954314482293,-.41184413435479567,-.7187128882257487,.5530290745634285,-1.5309493464500674,-2.9026104205694736,.4204330359950835,-1.713810626479367,.295138882491271,-1.2517216433630918,-.6676994217651684,-.28576739334390183,-.24127777006787937,-.10778095858902549,-.03609242500919886,.021519213385077923,.13414694961717147,.16917378957839613,.17307922682581758,.07624675882901567,-.04790483513427262,-.27544262702406924,.6182624956656319,.269874231236934,.2085883517320696,.2607342621072197,.12070625812911842,.06294558209330968,.08364957391650543,.04968809534578587,.01956435760784307,-.04603581747659695,-.13409074070830324,-.4902720181429455,-.4775645732142016,-.7440367513542755,-.3080068432033089,-.04371243884270504,-4.735594317158907,-.043712438842706695,-.3080068432033096,-.7440367513542757,-.47756457321420304,-.49027201814294813,-.13409074070830412,-.046035817476598156,.01956435760784307,.049688095345786006,.08364957391650606,.06294558209331085,.12070625812911921,.2607342621072207,.2085883517320702,.269874231236934,-.3735591976583676,-.2754426270240343,-.04790483513427313,.07624675882901252,.17307922682581853,.169173789578395,.13414694961716844,.02151921338507657,-.03609242500919986,-.1077809585890261,-.24127777006787943,-.2857673933439015,-.667699421765169,-1.2517216433630949,.2951388824912743,-1.7138106264793713,.4204330359950768,-2.902610420569474,-1.5309493464500692,.5530290745634223,-.7187128882257502,-.41184413435479833,-.16274954314482265,.04077715825534866,.08492716138218645,.07955023044620314,.03140055992039842,.023353946735571576,.08737321438028138,.14069908672095732,.09050534837633403,.1235398679432393,-.7652321000884781,-.7679430569329614,-.730805369531285,-.27894427087197604,.1473540200944477,.22023958716404682,.11486303559854165,.04504305683433383,-.05505002764598645,-.18811394573901843,-.18342000086663854,-.4778807471942804,-.8433603839057915,.37712664425406617,-1.9674198903133469,.709282640805937,-1.1398694906527307,-.657595827946194,-1.588557049013867,-1.3584842180322987,.2594422489960773,-.3091081345284578,.008154949871808691,.05360928152266728,.11729310469925426,.0540728466969212,.03979254294383871,.01449127308380731,.039030007688458185,-.017173105577517028,-.13947023057343994,-.6300985803204511,-1.0999707493347308,-1.1610479066529467,-.793938445177313,-.3677854512466584,-.00882500713133401,.1441236593452856,.168924224284544,.04479326815042012,-.04602970013195615,-.16709614007115095,-.30980016041271097,-.5504659677234705,.15919119676539073,-.8982172402290286,.5258899353236033,-1.4256240004519327,-.7738445780362169,-.8176363254154656,-.4735277967730568,-1.2988315127625027,-.8523228638818583,.41686279554239525,.036944676036935756,.13893846256790574,.058236765637246675,.036047756292977066,.004030280469611113,.02457751370459911,.012289768389232913,-.06519055673384466,-.49074781214156804,-.7439208475373563,-.629029250144129,-.6935308158494856,-.595690278658883,-.3329123145673749,-.10898263774416028,.15661099050145985,.13885296434638142,.054047965289177706,-.019419117163239467,-.17310908908773912,-.39913639006279433,-.10265418316163986,-.6009200901805531,.48173198285915786,-.9802601500895259,-.6365977835942213,-.9527791435273002,-.7859991441489246,-1.190608374889349,-.09538064780857,-.4237928097433449,-.25909871392159683,.37260817254533357,.09030854179921953,.05092117084834837,-.011346909674079158,.003526808789408155,.014769425415168456,.022494427132082863,-.22157638610464575,-.37258895173129003,-.5716641197488066,-.37510275237622537,-.3555973802525706,-.2729531465802467,-.22492530005262792,.0036582478916564426,.09160820891269639,.09064815178251497,.06076477135322488,-.04847480672159565,-.18992437505973167,-.12025629051789351,-.5390991207348887,.20227228344720258,-.394709550873178,-.28479724025368247,-.4453212738438783,-.6951259178849327,-1.04586329377066,-.4816713433080586,-.6264638281909916,.2516513542736103,.0017746672356018336,-.0153217875544032,.14348925152561842,-.01406273903701487,.007399034521024359,-.00617804451529856,.04134784037419488,-.050428686591041855,-.1412765230349349,-.2446013156753272,-.26472923111076024,-.11925518789339257,-.13993873549610955,-.2165721293616384,-.1270560226842922,-.11318909242737903,.025411878261882927,.08244053654753017,.015634174038688685,-.0732531617557155,-.08627491478166197,-.326199549934509,-.00956679808502389,-.28693665642627003,-.16474199810952764,-.09923009726032403,-.4188671286115432,-.5389128507596231,-.3878481128162946,-.5305502909595622,-.06295969900286663,-.24994913291425488,.1965944737588636,.013297880203252755,-.054862661367901897,.03693760922605668,-.0061104340245862225,.030710887069788338,-.005026615310052167,-.040546729108393256,-.15567029136725916,-.21025892926356554,-.2486934814128962,-.2315116397211769,-.2820901885828492,-.21000923681193823,-.26967580750352416,-.20600990120705304,.03751129065309909,.029087127940549885,-.02130724566008323,-.0297535981346421,-.19525258909505444,-.09144756671688208,-.2156961028149504,-.08951293615207585,-.010933041190555782,-.17178084419175305,-.41025595439938806,-.19294368007162768,-.39082994830036216,-.19223333969456258,-.2104365905186827,.08556992539656708,-.11248917625543933,.06304884525837423,-.001997076145445627,-.0386518393307522,.04737131007634562,-.012631210076786959,.0345964831911426,-.13898866968588444,-.26165852514053983,-.33704349161769737,-.22295096919948695,-.5772381177353403,-.5275362142401814,-.5734099173080794,-.5354251643699987,-.38594205494114614,-.1837522251545064,-.11760486834511884,.04959891065129376,-.15016133237735926,-.07968612236224891,-.1902424828882312,-.1420566519642383,-.02093616845786258,-.0007590420310084487,-.14361316535317845,-.2274598028382093,-.265216641753595,-.2443299641801253,-.12424052925006639,-.003460073507076083,-.09139631658683596,.029161890169972428,-.06337176739998052,.042038311258955005,-.01022881748368659,-.06771513448322196,.08280893046738375,-.047213249757837236,-.3019729958748239,-.5532025210173874,-.548133112044219,-.6318773589638805,-.9550417954995029,-1.060769216424599,-1.1220351967386673,-1.0411254782363524,-.9262490674491646,-.6244981857994925,-.045097357284792555,-.21565853836744897,-.05338232636581171,-.19859450279267432,-.16546730532911214,-.14182240789720132,-.07166143303897729,-.07699989187225306,-.038788452621649434,-.2650928994872585,-.20555329767005678,-.2596867467568408,-.10031131456276626,-.13387544724730568,-.0035054269587865765,-.04044908966237997,.004862636492024128,-.07811082244532547,.0012357796666695618,-.0396278511243066,-.19419044456729473,.018984383649339364,-.6054823236139799,-.9146566894126499,-1.046019198783463,-.9723752616273926,-1.3057076652991049,-1.4659201063979992,-1.5705638815427927,-1.6192427030685486,-1.6058616381755215,-.8240368002159525,-.7036795980668187,-.07339749754226939,-.3335649893327653,-.23651154356493967,-.2042833730780847,-.17397285212300875,-.06723820695040342,-.056997285203952995,-.07087453139452611,-.25039909487805306,-.3741711609707976,-.2040016750880539,-.3422156158175576,-.03693831566176366,-.042171356658337315,.00705718946536539,-.07571749869863496,-.0669656864849772,-.25408021803022474,-.04334900441130162,.025934598230977574,-.2942382417321012,-.7400351866837027,-1.6161992336951192,-1.5357935460809593,-1.3642007878216427,-1.5169157844507262,-1.4332006785118279,-1.630157842292349,-1.932677889629856,-1.8694842425148879,-1.8503084663080056,-.5904048375141792,-.6560174703347134,-.40132058236311047,-.31836783196552787,-.32035624605031593,-.22965854401457814,-.08200020008302822,-.08902516330269802,-.06473239101891355,-.3036696794805129,-.4730230160625184,-.3797056039227587,-.19430407325814622,-.1797093251603995,-.06306970995727144,-.10088329756370083,-.09706087918479443,-.18018565146479387,-.19830827357221226,-.43479836723774673,.22038139379151372,-.2645739883891143,-1.79452817569422,-2.206203110930839,-2.102356658927595,-1.6930052820597257,-1.2756392437278008,-1.6712324532934884,-1.8237453905245253,-1.4884613952536252,-2.384654945418673,-1.5836466114968115,-1.4772075422260404,-.749509588811526,-.561795414852579,-.46670603976586306,-.3555582346088905,-.22514761090777982,-.18963405157839525,-.006854703392512414,-.05103668985052919,-.5356535944329562,-.48685989567066656,-.5780902167586235,-.3924098378001862,-.11286619230167973,-.12321821342876334,-.08979002287112711,-.13792125740417074,-.16098142942852883,-.301057483553083,-.18584599820379807,-.7599893679371835,-.8428129384777584,-2.1809972632688073,-2.879105394693035,-2.5682454610054237,-2.0983496132652038,-2.219376425173226,-2.3602336858020396,-1.4129529949598048,-.9534159393947887,-.38769722219534936,-2.260342212614477,-1.394644866167148,-.7766428172010335,-.6402842542962903,-.41856090178724664,-.3216120132349809,-.3360730432730346,.06562858246623078,-.09813633035547877,-.44979914971695495,-.822222574028781,-.391561438074338,-.3604588674139763,-.2900872185756239,-.03547210749813554,.027920290231535812,-.117989151853845,-.1892849156146684,-.25489431004647656,-.3625272253546275,-.30143411016838906,-.7524258340587202,-2.027175780678063,-2.263967374508654,-3.538324908586366,-3.361597106712324,-2.343880246691923,-1.7249706159518579,-1.7990472945779559,-3.3061472495599995,.21156442062862166,-.743023786689344,-1.8514918971041745,-.8250219837063265,-.7435199998826033,-.3956921579881928,-.3943138014933833,-.29890408748686254,-.28084584584372846,.01472791435408881,-.04442075186168376,-.5350001638458372,-.9018857723352869,-.6984497111751535,.14583567590324595,-.5544445310046473,.1976534820339324,-.18710828510427244,.007680087103749638,-.3280805050322698,-.17511899827005836,-.38519889843539723,-.2611655301498714,-.6179259082917326,-1.4260964500310052,-2.8480835086962,-2.9656385065341997,-3.1259631743419583,-2.2776462897026373,-1.3820969331049018,-2.0505291279591713,-2.408429802301388,-1.4996172161865962,.12372650763830863,-1.1981932989988076,-.6458889740799882,-.33546767337818667,-.36301254306387043,-.2619620808503318,-.176759023609821,.005563928130235761,-.034749316729180774,-.44871907432473696,-.6721525952110092,-.4600783329152383,-.6725433018260518,.11741827111366224,-.409871486550618,-.32892265898101625,-.1314555696102148,-.028899376452251727,-.09229861292456465,-.1667209502050334,-.17646388464205828,-.3513161729077252,-.1915002910490266,-1.22170023255872,-.7866727441045076,-1.980741571755196,-1.978633957921319,.06956047126920993], bottom:{real:[4103.3252596935745,31959.928439656338,10854.93487005055,5174.7646941682715,2670.3793024702013,1512.8812431609856,751.7211981350827,487.34157279751093,286.27976884850017,202.21445228809756,139.363320073941,96.32667662587427,67.41651339270402,55.03603936156373,42.61745504949191,37.32784123540667,35.19880020906027,37.32784123540659,42.6174550494918,55.036039361563766,67.41651339270402,96.32667662587428,139.36332007394108,202.21445228809804,286.27976884850017,487.34157279751093,751.7211981350829,1512.8812431609856,2670.3793024702018,5174.764694168275,10854.93487005055,31959.928439656363,12454.694619943468,7821.583390276555,5473.1790170642225,2925.2286142376206,1403.2127508507554,917.0553055607355,556.7335087890582,335.5815491134937,222.7562369115075,161.71079893305554,119.4497628246793,75.60900751432125,55.49608708093657,43.99882948912511,34.72502996512234,29.983374804996487,29.18733660878197,30.714909872552553,33.13572852856229,38.78004056055656,50.11926248444739,62.42660929674013,93.91676536356728,123.96413175241418,177.16967383039952,250.50030243800805,399.94920918463373,596.1485322845399,914.2463340693114,1871.621027127744,4518.422312124804,13565.815861293135,16084.742683461694,10028.519769850123,2736.2851033168113,1377.4551350842332,614.0817483175045,382.39730464420114,237.0105878631189,156.24359018004319,129.95938769710136,95.53783206710068,72.00409286489193,47.80430165384308,38.41781199466849,32.4520486224145,26.753427300507923,23.7729362481657,23.138404805980134,23.598476471031617,24.755859033283485,28.71332398916273,33.39553720167712,40.85058654989144,58.64988180671874,74.87296871197377,93.46512922636781,123.19419955144703,174.7570612705884,262.71291650117263,321.82068054258934,657.052536352664,2163.593226520231,10212.960963472207,3792.0213246064613,2759.3366542985627,1627.1011647050395,788.4497720201678,362.8509317865861,253.90720770691448,163.04342130809295,117.95146004773997,90.7661067039026,66.20774509684053,48.204553381452804,35.4292065515689,28.049881805648454,23.25027473117818,20.7789366420614,19.004228801577,17.585642163629327,17.6981813264345,18.806836162280465,20.329571180523736,23.456998427374465,27.472702254518477,37.19312003574272,49.11725258408396,59.57482901261523,73.59994664128709,112.97176733843995,181.91972084309376,284.0343016488693,486.2964820369405,857.0528785536101,2037.977143592303,2057.7285052573056,2152.595270625315,1395.1090523951752,736.2529768000007,343.98700964912916,189.68478304615005,127.37774106216496,91.12789293157843,73.66725513376396,55.964360327653644,39.48256704253295,28.14219415335706,21.278934963706885,18.193385040510105,16.473354788100497,15.086583853495943,14.403945056404867,14.533202056236952,15.306988390608382,16.092687824041843,18.097466979870337,20.289280537832838,26.201109009342694,34.023571220637564,41.620492531599325,50.685682074964014,82.56070198163133,127.19888958323958,237.89761616945128,410.06312322518994,1062.2303232610248,1612.0404058137353,2295.1409914972487,1787.3905923922546,1192.2295048012345,614.2488252588063,260.82616895243024,126.23242010647614,84.15107628881098,67.70941499278271,60.1225715594723,42.830591238304876,28.733103940874788,20.365121706656215,16.211112474155353,14.072758594539286,13.483685068827034,12.859628868618824,11.868475605254234,11.903201306554562,12.816996745648828,13.065794209061782,14.312459824747068,16.296926608708432,20.657711991677495,27.65339007023543,33.59311041396786,40.672720076575544,55.85662461850217,103.16047843117397,179.23484372919035,453.7513605151255,902.2628504825688,1683.7179352249004,1784.083505146898,1577.4265763170067,936.6630912289419,441.2089233758718,176.43359667751182,98.09397174153568,65.99594469503664,53.24029570749545,45.85166507919449,32.40748535978308,22.496202298890402,16.9656137144178,13.731573445856062,12.28236966845588,11.747735381447885,11.213125876643861,10.807806034266576,10.840341477375139,11.066245600125107,11.119452781179984,12.424913044930788,14.61002755646222,16.887227742677396,22.29462391228396,27.97815738132312,31.99125039297179,44.05265888187653,76.10956832779837,159.13944268405785,318.3920712827857,686.0032317807187,1336.6568589814267,1043.0649603599104,984.7874618280729,618.0395600950327,289.32426118556657,132.98214831862998,71.52004843088118,52.57629039600819,41.525598741467476,33.63391272281399,27.03125566244968,19.489513580793098,14.812681614273632,12.21137274400836,10.893625186679536,10.482989068673637,10.105487112246305,9.711689924381735,9.948806980482882,10.161347795217756,10.513274350469635,11.294150924355744,12.914730156139361,14.478861048855546,19.021661277112585,23.907610167423496,27.23573455134931,38.74297641398302,62.86922312590263,111.92503010834605,213.21062569137553,433.61330953226366,726.7026984582077,562.2186141052522,539.290746631297,362.9446461846826,211.46669660189423,107.79772661917396,60.67666837556757,41.743276533116536,34.42369696468284,31.26708433258414,25.313030406949355,18.452791878453507,13.956644256748325,11.043046695375654,10.111101652499672,9.455036044447306,9.242959346939653,8.952191122239926,9.232112416401021,9.190804166916982,9.566282735322787,10.506864865879585,11.825879962774797,13.52813582962821,15.999059082232355,19.794027285196304,22.4788452877151,32.16327238486775,47.951984523863096,81.30924286665513,150.93744536633105,263.8463052599166,439.2795103319926,309.78719189559973,306.63257299287005,244.19689848939953,151.98869039704036,91.33048200427616,57.35275332201335,38.70916070606743,33.08708644900138,29.826655436967027,23.987725148031473,16.89184234468231,13.041947079601194,10.535809562752126,9.535947162168391,8.937448349685543,8.567264312291233,8.457273589565943,8.46028044009711,8.55434575263303,9.382376333669994,10.37723041770863,11.799673812944503,12.361176855966248,14.786798351390814,16.739331260686697,20.5901480313592,25.753571174908508,38.3828930678668,63.23013835373618,105.62437218489313,175.68359833526657,256.05708017959813,224.80770864957879,228.96753655549054,172.54966320095522,116.2654682194649,80.46990226978717,53.84433487661021,37.483534347728245,31.075867215997253,26.284110672635684,20.645029038002825,15.025930043703783,11.738276392873866,10.201438772469425,8.820344522727998,8.494550985699536,8.19687284093449,8.179077730441959,7.908377156922052,8.678547729507404,9.647371515689038,10.339435934253908,10.728035799158873,11.983620383388951,13.687783504221503,16.433795900162693,18.309125668572698,22.485075799802843,31.76468437638305,49.270779583367755,77.72985195627992,123.50059845139852,179.77043479461938,159.57955623939222,154.5332986938033,127.96891349444883,91.96783661678981,66.92174464641701,48.818287955893446,36.59106165352678,27.834277069623926,23.04190215218159,18.3587138942453,13.567338391039883,11.281789781943191,9.60382954556472,8.733327756377252,8.338123667351045,7.899208806186968,7.710432242677591,7.998386998564103,8.543643849090227,9.443215884480004,9.787034441091842,10.423788563863184,11.253535869282553,13.327727562718719,15.178485067808285,17.337135682195893,21.668177060872456,29.324826866357235,41.49275321863635,60.042185621507166,90.31813491621534,130.8805255687621,104.24612656823803,108.8028525877362,89.55574556015725,69.78566957523967,56.746590174428,44.171218069814536,32.39838941697333,25.18225275923646,21.610810960419155,16.972539478480535,13.238333358456819,10.614964653675054,9.380692794630786,8.749281483242108,8.135298996501481,7.634398163782139,7.485286988947929,7.8316993609624435,8.385395741527464,9.231574230561463,9.838944162951421,10.386606043801919,11.354519695989614,13.10793814373473,15.240615596988986,17.58979203150065,21.461767190818147,26.661531554562984,36.12333702897858,50.32073186927438,69.0656097199978,87.4422608573542,76.67764327657595,72.68914763671407,65.50785565022079,58.29765840635796,49.55859874114894,39.192968104211104,29.954333787314212,23.9458863540046,19.99476230299754,16.735792774046942,12.901585018586687,10.289994503175569,9.397776582267992,8.670419628780323,7.8828328381527575,7.534147883901947,7.43129292000411,7.798515976625768,8.186906091241408,9.142118635191288,9.830770779287306,10.340589147553608,11.281171263863113,12.984935438318947,15.107976469419242,18.19770629294057,20.668346478928893,25.76149613251493,32.2514242661345,39.95295492008993,51.36943807862585,65.56929956266247,55.46884946872952,55.86542097352833,55.10113878297366,50.53184836867472,43.70147053696678,35.86638144085743,28.439396618258566,22.42863349391925,18.94503035808276,15.596977301337661,12.206893729284205,10.050508612628137,9.547393948232287,8.646327628083018,7.910774588392556,7.275551408966156,7.5482842032534565,7.544387941964139,7.96361878033256,8.992201544757735,9.635199784998907,10.0402383165895,11.706284711344862,13.336194440398188,15.639893484781382,17.791763978880017,20.83131115781941,25.6818621728188,31.387128642704546,37.14316604955522,44.038766386780296,52.90450693740585,48.059389050535145,50.072432061388255,49.11501031551525,44.16042346883115,38.44095318130842,32.35840674752788,26.251111011761232,21.08192257046498,17.515101530242855,14.10261621013594,11.438986216849498,10.422223192105227,9.76207732514108,8.774631916934416,7.5939451837729885,7.260594980680288,7.476691949602524,7.419064545103371,8.018735722916306,8.926634451217284,9.69756437118481,10.35689464395745,11.451859179394017,13.10319606057651,15.460942026724263,18.825021564083144,22.773162722002358,26.906890973713775,31.803276985208164,37.82902190094245,42.388788349798304,44.62010567979956,48.85927778095382,46.13611029220518,41.908361785717766,39.52102274454999,35.05229493371635,29.18134316630342,23.802472557875006,19.95574653975907,16.22743816874862,13.086681034223906,11.226909204888067,10.616041272149978,9.83854928426482,8.656300584619567,7.8952678290472065,7.276214992565685,7.309404620848296,7.276214992565686,7.895267829047208,8.656300584619574,9.838549284264822,10.61604127214999,11.226909204888063,13.086681034223904,16.22743816874862,19.955746539759044,23.80247255787499,29.181343166303414,35.05229493371636,39.52102274454999,41.908361785717766,46.13611029220517,48.05938905053505,44.620105679799494,42.388788349798226,37.82902190094255,31.803276985208186,26.906890973713825,22.77316272200237,18.825021564083173,15.460942026724263,13.103196060576508,11.451859179394024,10.35689464395744,9.69756437118482,8.926634451217275,8.0187357229163,7.419064545103367,7.476691949602523,7.260594980680292,7.593945183772996,8.774631916934418,9.762077325141082,10.42222319210523,11.438986216849505,14.102616210135931,17.51510153024284,21.08192257046497,26.251111011761218,32.358406747527845,38.44095318130838,44.16042346883106,49.115010315515164,50.07243206138801,55.46884946872923,52.90450693740565,44.03876638678024,37.143166049555234,31.387128642704567,25.681862172818796,20.831311157819414,17.79176397888002,15.639893484781378,13.336194440398192,11.706284711344864,10.040238316589498,9.635199784998912,8.99220154475773,7.963618780332553,7.544387941964129,7.548284203253456,7.275551408966155,7.910774588392558,8.646327628083021,9.547393948232287,10.05050861262814,12.206893729284213,15.596977301337661,18.94503035808276,22.42863349391924,28.439396618258566,35.86638144085739,43.70147053696676,50.531848368674645,55.10113878297363,55.86542097352813,76.67764327657582,65.56929956266234,51.369438078625784,39.95295492009,32.251424266134514,25.76149613251495,20.668346478928903,18.19770629294057,15.107976469419244,12.98493543831895,11.28117126386311,10.340589147553612,9.830770779287295,9.142118635191292,8.18690609124141,7.79851597662576,7.431292920004107,7.5341478839019365,7.882832838152761,8.670419628780317,9.397776582267994,10.289994503175565,12.9015850185867,16.735792774046928,19.99476230299755,23.945886354004585,29.95433378731421,39.19296810421109,49.55859874114887,58.297658406357826,65.50785565022066,72.68914763671383,104.24612656823788,87.44226085735421,69.06560971999775,50.32073186927437,36.123337028978554,26.661531554563005,21.461767190818144,17.589792031500657,15.24061559698899,13.107938143734735,11.354519695989618,10.386606043801917,9.838944162951416,9.231574230561453,8.38539574152746,7.831699360962437,7.48528698894793,7.634398163782137,8.135298996501476,8.749281483242111,9.380692794630788,10.614964653675061,13.238333358456819,16.97253947848054,21.610810960419155,25.182252759236462,32.39838941697333,44.171218069814465,56.74659017442797,69.78566957523961,89.55574556015718,108.80285258773613,159.5795562393919,130.8805255687619,90.31813491621534,60.0421856215072,41.49275321863639,29.32482686635726,21.668177060872456,17.3371356821959,15.178485067808294,13.327727562718726,11.253535869282553,10.423788563863175,9.787034441091842,9.443215884480002,8.543643849090223,7.998386998564096,7.710432242677589,7.89920880618696,8.338123667351045,8.733327756377253,9.603829545564714,11.28178978194319,13.567338391039879,18.358713894245295,23.041902152181613,27.834277069623926,36.59106165352677,48.81828795589338,66.92174464641698,91.96783661678955,127.96891349444861,154.53329869380323,224.80770864957842,179.77043479461912,123.50059845139837,77.72985195627996,49.27077958336772,31.764684376383045,22.485075799802868,18.309125668572733,16.433795900162703,13.6877835042215,11.983620383388955,10.72803579915886,10.339435934253904,9.647371515689025,8.678547729507397,7.908377156922045,8.179077730441955,8.19687284093449,8.494550985699535,8.820344522727986,10.201438772469423,11.73827639287387,15.02593004370379,20.645029038002832,26.28411067263568,31.075867215997253,37.483534347728245,53.84433487661013,80.46990226978717,116.26546821946468,172.54966320095502,228.96753655548974,309.78719189559854,256.05708017959756,175.68359833526623,105.62437218489312,63.23013835373606,38.382893067866796,25.7535711749085,20.590148031359234,16.739331260686704,14.786798351390802,12.36117685596625,11.799673812944498,10.377230417708628,9.382376333669995,8.55434575263302,8.4602804400971,8.457273589565942,8.567264312291222,8.93744834968554,9.535947162168387,10.53580956275212,13.041947079601202,16.89184234468233,23.987725148031487,29.826655436966995,33.087086449001376,38.7091607060674,57.35275332201325,91.33048200427605,151.98869039704,244.1968984893988,306.63257299286875,562.2186141052522,439.2795103319928,263.8463052599166,150.93744536633125,81.30924286665515,47.95198452386317,32.16327238486775,22.47884528771512,19.794027285196304,15.999059082232373,13.52813582962822,11.82587996277479,10.50686486587958,9.566282735322787,9.190804166916978,9.232112416401021,8.952191122239926,9.242959346939646,9.455036044447304,10.111101652499666,11.043046695375656,13.956644256748326,18.452791878453535,25.31303040694941,31.26708433258414,34.42369696468283,41.74327653311653,60.67666837556751,107.79772661917396,211.46669660189391,362.9446461846827,539.2907466312969,1043.064960359907,726.7026984582062,433.6133095322625,213.2106256913756,111.92503010834588,62.869223125902685,38.742976413983,27.235734551349324,23.9076101674235,19.021661277112635,14.478861048855546,12.91473015613936,11.29415092435573,10.513274350469626,10.161347795217747,9.948806980482875,9.71168992438174,10.105487112246305,10.48298906867363,10.893625186679529,12.211372744008356,14.812681614273641,19.489513580793123,27.031255662449723,33.63391272281395,41.52559874146754,52.57629039600815,71.52004843088102,132.98214831862995,289.32426118556515,618.0395600950308,984.7874618280689,1784.083505146894,1336.6568589814267,686.003231780718,318.39207128278593,159.1394426840578,76.10956832779843,44.05265888187656,31.991250392971853,27.978157381323108,22.294623912284028,16.8872277426774,14.610027556462216,12.424913044930783,11.119452781179971,11.066245600125109,10.840341477375128,10.807806034266576,11.213125876643852,11.747735381447885,12.282369668455885,13.73157344585606,16.96561371441783,22.496202298890438,32.407485359783124,45.85166507919449,53.24029570749542,65.99594469503667,98.09397174153547,176.43359667751176,441.208923375871,936.6630912289413,1577.4265763170022,2295.1409914972464,1683.7179352249,902.2628504825688,453.7513605151263,179.23484372919026,103.16047843117398,55.856624618502074,40.67272007657553,33.59311041396785,27.65339007023547,20.65771199167747,16.296926608708404,14.312459824747059,13.065794209061782,12.816996745648842,11.903201306554557,11.868475605254236,12.859628868618808,13.483685068827036,14.072758594539282,16.21111247415536,20.36512170665626,28.733103940874788,42.830591238304876,60.12257155947228,67.70941499278264,84.15107628881094,126.23242010647601,260.82616895243,614.2488252588045,1192.2295048012338,1787.3905923922525,2057.728505257306,1612.0404058137367,1062.2303232610243,410.0631232251907,237.8976161694511,127.19888958323968,82.56070198163133,50.68568207496404,41.620492531599325,34.0235712206376,26.201109009342684,20.289280537832823,18.09746697987034,16.092687824041846,15.306988390608383,14.533202056236956,14.40394505640487,15.08658385349593,16.47335478810048,18.1933850405101,21.278934963706888,28.14219415335708,39.482567042533006,55.964360327653644,73.66725513376396,91.12789293157849,127.37774106216477,189.68478304614982,343.98700964912905,736.2529767999998,1395.109052395176,2152.5952706253147,3792.021324606458,2037.977143592301,857.0528785536089,486.29648203694126,284.03430164886925,181.91972084309373,112.97176733844,73.59994664128712,59.574829012615204,49.11725258408404,37.19312003574272,27.472702254518456,23.45699842737447,20.329571180523697,18.806836162280476,17.698181326434526,17.585642163629327,19.004228801577025,20.77893664206141,23.250274731178163,28.04988180564844,35.429206551568925,48.20455338145283,66.20774509684051,90.7661067039026,117.95146004774013,163.04342130809306,253.9072077069139,362.850931786586,788.4497720201659,1627.1011647050398,2759.3366542985605,16084.74268346169,10212.960963472211,2163.5932265202296,657.0525363526643,321.82068054258923,262.71291650117286,174.75706127058845,123.19419955144714,93.46512922636784,74.87296871197394,58.64988180671873,40.850586549891496,33.39553720167711,28.713323989162756,24.75585903328349,23.59847647103166,23.138404805980127,23.77293624816566,26.753427300507926,32.45204862241451,38.4178119946685,47.80430165384316,72.004092864892,95.53783206710088,129.95938769710136,156.24359018004333,237.01058786311899,382.3973046442005,614.0817483175048,1377.4551350842296,2736.2851033168104,10028.51976985012,12454.694619943462,13565.815861293133,4518.422312124801,1871.6210271277425,914.2463340693118,596.14853228454,399.9492091846334,250.50030243800833,177.16967383039946,123.96413175241405,93.91676536356745,62.42660929674012,50.119262484447404,38.78004056055657,33.13572852856233,30.714909872552628,29.187336608781973,29.983374804996448,34.725029965122346,43.998829489125086,55.49608708093662,75.60900751432128,119.44976282467937,161.7107989330556,222.75623691150756,335.5815491134934,556.7335087890583,917.0553055607353,1403.2127508507556,2925.2286142376206,5473.1790170642225,7821.583390276545],imag:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]},imag:[0,1.2364045139795619,-1.417097645517349,-.563991130501104,.4461220475293454,-.22857396866743723,-.12233724123958876,-.2217506337025343,-.08184765447899214,-.0821445284202198,-.016319194688300422,-.2278226981680879,-.31553723757062957,-.3462773758278895,1.228987349434353,.2371473197924402,0,-.2371473197924659,-1.2289873494343397,.34627737582788415,.31553723757063035,.2278226981680877,.01631919468830003,.08214452842021792,.08184765447899214,.22175063370252604,.12233724123959235,.22857396866743548,-.4461220475293452,.5639911305011042,1.4170976455173483,-1.2364045139795607,1.3606412475160685,1.4411916754234004,-.3363973770718067,-.400592898897314,.07786945045374206,.11933000679564014,-.37020072416606636,-.12600631152419078,-.2929172313060311,-.05068339188231875,-.2123566898458312,-.16517843825664788,-.3743892093980239,.24863698196016526,.3956337373323095,.6330846638456997,-.4264395724952261,-.28749903579454716,-.4230156803297583,.2797162376269552,.37808744252168813,.15296582393741,.10558339349178479,.08813592215903832,.16705843369252343,.44192642538865684,.2991522518142107,-.047649837051313024,-.9104604552681237,2.0668504460046964,1.0236217631956717,.09577502733112331,.7432738853191639,-.03456213195457008,.8636112375382173,.14688086473050152,-.480409603699644,.725531558693561,-.8786532261255596,-.4386512882244577,-.4857318707028599,-.32017932907631874,-.2830749986604581,-.26990648117356825,.02650526715020339,.07048596936827395,.5437098167860802,-.06793846381419581,.03776680164210118,-.5672727000472354,.7031723596162832,-.02113335643666033,.3877841945469715,-.021237638325898506,.22272564345822293,-.028529610958430065,.3838911656921847,.5401519230094508,.6089048453513496,-.5885198019984432,-.4425799571579083,-.3105478087846587,.29452233058397137,1.420373052298152,.5504297333386854,1.0635980503754177,-.3322328231573132,.34444399750770754,1.481298784591465,.2820348699677993,-.5064081488092492,-.6315271726552403,-.629560147993244,-.381439099170168,-.2602400449478186,-.19111004712688462,-.0074049384249937926,.04814578185161191,.1775395908501845,-.010766872600667563,-.3055754310904166,-.1279044678178969,.26497067484017217,.49718432792560446,.10847923107858634,.1836279844437401,.07579332872568043,.06091583791907436,.19352569039908019,.7248413105946724,.4476986361937191,.6572778182386981,-2.7705947112358387,-1.8545676439466314,1.253480431944275,-.3320127176659218,-.8817924518615257,-.49191197464707653,.25061306335904526,.36434278784189494,1.1059306596340364,.5161851914994362,-.5625934272912334,-.7981852522367001,-.5061427531741151,-.3345019295861077,-.24220392956380443,-.2936321736893144,-.008975674876931768,.015702042401798396,.004328761309678161,.11769772351691517,.14847974776257877,-.07040420542590121,.15992872157624444,.12352253662711207,.22950814490677918,.17507285276321555,.13747467644410705,-.011397583876153142,.1103654239578318,.24404333943616102,1.1434123865171273,-.6056618650285197,-1.3365493166122577,-1.133825005706898,-1.8155993788135394,-1.0591766157447149,-.6901024725301684,-.4661262670583974,-.20353239335470796,.5166385012265062,.2659701357580968,-.10657803670351902,-.6973013864661958,-.6010674473512339,-.335428005062553,-.3056428917979951,-.2667283201489782,-.19552146385155383,-.07081825322981734,.24716165183995586,.2487100107308503,.08790627274965952,-.06639276489870762,.11463822183417864,-.0973871145489355,.203187369929616,.14292038700683402,.20736891492564988,.013685307258532538,-.024371827339033106,-.07233585420108031,.49291782026044645,.048917424863979306,.2263553910474094,.10839909954530379,-1.1957108711898896,-1.074771579950879,-1.1175823884839045,-.23901621577757862,-.12877260884038383,.23623861798820722,.17111767858219226,.4620869054676118,-.23679486634226876,-.5317886241837987,-.34021620386249335,-.23658495591681358,-.22275756609764855,-.20572232603908905,-.1449473312771276,.04256966078595399,.07773307076521871,.20558191361174552,.03171963561705125,-.031869312918226284,.00924466716916557,.05690796487103113,.006811401556527948,.20608602740074444,.023033890597355222,.06494462602113064,-.08971160087534784,.051877409795188095,-.22207073062343796,.2424827691685977,.8293224240232046,-.0013771249391571728,-.05913901763736715,-.220679259578907,-.040068334939789486,.3067700518158289,.3449025548727411,.2222188244136875,.30818729583490434,.04165627319971488,.04389672863559383,-.30032839778423015,-.2424624650890286,-.178099692406481,-.14126159805998126,-.15553553242798068,-.11510723629505018,.024565620333015844,.09932497386133324,.11314958231531824,.10920785431914558,-.002747867764731495,-.002197448124614016,-.0699406561715515,.1465617772621658,.07877018936108643,.10241250352514093,-.021646587213105684,.019211160710794505,-.26281055993233693,-.05514681914050946,.35375643597531126,.22411418130009836,.3875457037899096,.25423051056794166,.30581901500051717,.08591146266209009,.39107302489471046,.24699055160378858,.29387297238508514,.15373347718831995,-.002984582508486469,-.01726020797163449,.0728272552276582,-.06208913525822485,-.11929552297831249,-.14454547803177953,-.09526826450768199,-.10089614648569632,.048761457544342565,.09609679137720413,.10529567915508571,.012037966893712556,.07634310058801329,-.20546035926376272,.13459193297647368,.025732944443593878,.15693288111736364,.04376164797318158,.08347929962968435,-.15251693996845875,-.10657849804550705,.03864181635108452,-.10231188547257405,.21957600785318707,.264774413728534,.35686545376814865,.2942848550600693,.4993413545698925,.1828568991437829,.23675610338446562,.10353827744151976,.06310794909144525,.03846587209017991,.136617176259979,.09812275535485428,-.003990620093458214,-.09009439550122221,-.16647262366552176,-.19237746196753996,.02664719406199056,.04850938386374907,.1654716680991411,-.03591479523938604,.09927373929001723,-.11264804489487676,.14792025966567318,-.09379152614028652,.10021979561886898,.008044972903133957,.2539938219386156,-.10951630791791984,-.03354812223332894,-.024275040060575473,-.15565555640319179,-.035231426543991154,.06348517358735144,.22814734409189322,.10684932807789806,.2355554633425988,.10407564589066262,.015525256999673128,-.011913601076877599,-.003929592004374066,.04470159355949418,.16547295203389104,.15907957720488838,.07466463078185209,-.04243906497357175,-.11246394245376416,-.1697242715154008,-.2153029085609272,-.1519575050165171,.40553391670472716,-.05507255324487554,.18488826926783164,-.03502892748503212,.3700138711951932,-.15325722566754377,.2716892969482076,-.05970121628039784,.48380889084850937,-.13017614472815323,.04767342132995452,.07130558425889642,-.15733503034508964,-.07959356603951166,-.07548582078045694,.06620598245919887,-.0012785498169557718,.06382739270218783,-.0024400785561267094,.050942947866382475,-.16777938781510365,-.09287604949663145,-.010378011540593757,.1594331602275639,.19523869399925237,.18464942262011227,.06328512198243717,-.07722165855118322,-.1491589460269398,-.17912928670535297,-.11490318286815507,-.11189726101521234,-.20487634390276235,.7649837592101456,-.23800865420158882,.7408363358679637,-.08384674801899719,.46372256496136105,-.1683495959766098,.8086039606875512,-.25555617026146216,.19463913189037535,.3009779498087988,-.16302064990391507,-.10690976611351247,-.13497815095121923,-.04977220128469868,-.07945189422396105,.04040760416145534,-.09194915079908203,-.14731166465811507,-.2649992211995451,-.15560186997026057,-.06949686732786686,.16530147427910571,.22324548858793775,.26718136730575287,.1916641951249017,.06093692301766854,-.08862623473412004,-.14658150061325853,-.1598833096185107,-.18630425886720847,.20226767939927157,-.0861423758749425,-.7776631130885305,1.4090153420038987,-.3038886842868152,1.2888777036518135,-.07447075817772283,1.2482190395029773,-.80123249840126,.47055407026248136,.7557719984574562,-.11037652666672627,-.05445836926306743,-.1991810754488677,-.10899116252888987,-.15332031366957818,.04365448634854576,-.022154991408309264,-.1523944889888934,-.19372066727324463,-.023769000914279543,.24457812931884867,.5172290601462988,.4305115414461968,.4535547011943914,.3493581281435395,.2107669845089832,.06395623914002005,-.043266091906771414,-.12307402164456596,-.17588597679362872,-.05716033563257766,-.0784239564694168,.14377922602722487,-.28610637890062873,-1.3867297053543113,2.707602155025657,-.12637740826622818,2.0046873376560574,-1.442367549533677,.4151690191416874,1.1637625900709285,.02187980097289477,.2119473473283329,-.11885489129254229,-.1159981397382039,-.1889926920183694,-.058557612447368006,-.043992442353640485,-.026879139952720663,-.0192982065162415,.11425895652801879,-.10204731321609413,1.0976378910336273,.7808329817202355,.7892686156410853,.6558593420029429,.41963945036689065,.2149537780289469,.10907743849349204,-.015003791740152183,-.0981083523247832,-.09998346191476838,-.14074054993981988,-.04922222307913471,-.6022563234411543,.1482255131870283,-.20779420774376042,-2.0348285284263787,4.025186119425146,-2.7420491756647705,.8073118378409511,1.5256751899261984,-.015777910213839702,.5648106146365885,.09474509067016074,.03230544111585742,-.15496296066268442,-.07089892296474551,-.15185446167165811,-.09901337883732231,-.03383919809283262,.20170996830425536,.31395340400286426,.9180493845319551,.9083748013224733,1.1212514777242175,.8111537128593137,.6546125277251835,.4481201828101785,.2933813386224918,.08094250654372658,-.004887613580663216,-.04204543783114793,-.048279129686226115,-.13748504879992385,-.22867414001479172,-.6520602138291955,-1.4414816884582773,.3490015618927237,1.2663064061664397,-4.451906943808227,2.3981175155339263,2.0366543361516527,-.11574419894478603,.9938253915317542,.4025305949854213,.2978752123577735,-.04812880127462812,.001834095689180732,-.06357806485663896,-.1491109787327997,-.17638384543546787,-.15061392115741762,-.13638564133647435,.3292785127452974,.4564601274895542,0,-.09838020244848457,.2889284460821786,.3998138477400701,.45036129401449043,.22152969012775114,.11073273247786891,.024117745722163984,-.005028012954253469,-.08710696057267951,-.08365344819547284,-.5152142695871454,-.8612426220912759,-.7893985113030451,-.7442322593539389,-1.1208061672534484,0,1.1208061672534437,.7442322593539381,.7893985113030426,.8612426220912766,.5152142695871439,.08365344819547249,.08710696057267933,.005028012954253469,-.02411774572216354,-.11073273247786865,-.22152969012775126,-.45036129401449054,-.39981384774006945,-.2889284460821784,.09838020244848424,-.9083748013224145,-.4564601274895271,-.32927851274525655,.13638564133649642,.15061392115742586,.17638384543547556,.14911097873280194,.0635780648566394,-.0018340956891807838,.04812880127462774,-.2978752123577729,-.40253059498541977,-.993825391531751,.11574419894478773,-2.0366543361516536,-2.39811751553392,4.451906943808238,-1.2663064061664346,-.34900156189272086,1.441481688458285,.6520602138291958,.22867414001479336,.13748504879992438,.04827912968622815,.042045437831148495,.004887613580664909,-.08094250654372509,-.2933813386224868,-.44812018281017507,-.6546125277251672,-.8111537128592801,-1.1212514777241573,-1.0976378910335893,-.9180493845319213,-.31395340400284805,-.2017099683042456,.033839198092839695,.09901337883732686,.1518544616716597,.07089892296474593,.15496296066268506,-.032305441115858605,-.09474509067015939,-.5648106146365897,.01577791021384034,-1.5256751899262007,-.8073118378409491,2.742049175664779,-4.02518611942514,2.03482852842639,.20779420774376556,-.14822551318702654,.6022563234411564,.04922222307913573,.14074054993982205,.09998346191477035,.09810835232478354,.015003791740153814,-.10907743849349157,-.21495377802894516,-.4196394503668887,-.6558593420029402,-.789268615641069,-.7808329817202074,-.24457812931883488,.10204731321609872,-.11425895652800651,.019298206516249916,.026879139952725083,.04399244235364598,.058557612447370934,.18899269201837068,.11599813973820411,.11885489129254237,-.21194734732833254,-.02187980097289353,-1.1637625900709312,-.4151690191416833,1.4423675495336772,-2.0046873376560503,.12637740826623128,-2.7076021550256497,1.3867297053543175,.2861063789006335,-.143779226027226,.07842395646942202,.05716033563257912,.1758859767936318,.12307402164456618,.04326609190677271,-.06395623914001951,-.21076698450897985,-.3493581281435364,-.4535547011943848,-.4305115414461896,-.5172290601462894,.15560186997025938,.02376900091427863,.1937206672732435,.15239448898889424,.022154991408310377,-.043654486348542874,.15332031366958024,.10899116252889095,.1991810754488677,.054458369263066984,.11037652666672665,-.7557719984574531,-.4705540702624809,.8012324984012641,-1.2482190395029769,.07447075817773094,-1.2888777036518133,.3038886842868241,-1.4090153420038936,.7776631130885349,.08614237587494372,-.2022676793992712,.1863042588672104,.15988330961851227,.14658150061325848,.08862623473412022,-.060936923017667906,-.19166419512490052,-.26718136730575015,-.22324548858793625,-.16530147427910316,.06949686732786675,.16777938781510615,.2649992211995447,.14731166465811715,.0919491507990829,-.04040760416145386,.07945189422396387,.049772201284700876,.13497815095122018,.10690976611351256,.16302064990391416,-.3009779498087981,-.19463913189037552,.2555561702614637,-.8086039606875491,.16834959597661264,-.46372256496135666,.08384674801899664,-.7408363358679616,.23800865420159104,-.7649837592101448,.20487634390276502,.11189726101521356,.11490318286815554,.1791292867053549,.14915894602693922,.0772216585511834,-.06328512198243683,-.18464942262010964,-.19523869399925042,-.15943316022756263,.01037801154059478,.09287604949663382,-.015525256999667727,-.050942947866376924,.0024400785561280833,-.06382739270218761,.0012785498169549515,-.06620598245919762,.07548582078045817,.079593566039512,.1573350303450895,-.07130558425889703,-.0476734213299555,.13017614472815361,-.48380889084851014,.05970121628039872,-.27168929694820493,.1532572256675474,-.37001387119519286,.03502892748503371,-.18488826926782947,.05507255324487735,-.4055339167047277,.15195750501651886,.2153029085609278,.1697242715154005,.11246394245376394,.04243906497357169,-.07466463078185144,-.159079577204887,-.16547295203388937,-.04470159355949411,.003929592004374638,.011913601076878649,-.1828568991437799,-.10407564589066134,-.23555546334259525,-.10684932807789757,-.22814734409189458,-.06348517358734926,.035231426543992535,.15565555640319106,.02427504006057549,.03354812223332628,.10951630791791925,-.2539938219386176,-.008044972903134084,-.10021979561886678,.09379152614028896,-.14792025966567243,.11264804489487593,-.09927373929001457,.03591479523938799,-.1654716680991405,-.04850938386374761,-.02664719406199113,.192377461967541,.16647262366552154,.09009439550122157,.003990620093459625,-.09812275535485344,-.1366171762599761,-.03846587209018027,-.0631079490914464,-.10353827744152141,-.2367561033844639,-.39107302489471046,-.4993413545698927,-.2942848550600695,-.35686545376814893,-.2647744137285342,-.21957600785318782,.10231188547257429,-.038641816351083894,.10657849804550705,.15251693996845886,-.08347929962968535,-.043761647973181945,-.1569328811173635,-.02573294444359092,-.13459193297646968,.2054603592637699,-.07634310058801329,-.012037966893705314,-.10529567915508307,-.09609679137720112,-.048761457544342024,.10089614648569795,.0952682645076824,.14454547803178003,.11929552297831249,.062089135258225896,-.07282725522765716,.017260207971635976,.0029845825084865137,-.15373347718831978,-.29387297238508514,-.24699055160378858,-.3067700518158321,-.08591146266209564,-.3058190150005192,-.25423051056794305,-.3875457037899132,-.22411418130009808,-.3537564359753084,.055146819140510416,.2628105599323362,-.019211160710796572,.021646587213104713,-.10241250352514171,-.07877018936108618,-.14656177726216213,.06994065617155748,.002197448124624663,.002747867764730379,-.10920785431913549,-.11314958231531393,-.0993249738613295,-.024565620333014605,.11510723629505158,.15553553242798132,.1412615980599799,.1780996924064803,.24246246508902825,.300328397784228,-.04389672863558922,-.04165627319971637,-.30818729583490695,-.22221882441369153,-.3449025548727439,.23901621577757753,.04006833493978915,.22067925957890494,.05913901763736636,.0013771249391555669,-.8293224240232032,-.2424827691685955,.2220707306234446,-.05187740979518813,.08971160087534878,-.06494462602113076,-.023033890597353883,-.20608602740074317,-.006811401556518173,-.05690796487102039,-.009244667169144016,.03186931291822486,-.03171963561703066,-.2055819136117401,-.07773307076521087,-.042569660785952056,.14494733127713064,.20572232603908944,.2227575660976475,.23658495591681294,.3402162038624952,.5317886241837994,.2367948663422716,-.4620869054676115,-.17111767858219507,-.23623861798820922,.12877260884038208,.690102472530167,1.1175823884838996,1.0747715799508781,1.1957108711898863,-.10839909954530788,-.2263553910474054,-.04891742486397395,-.49291782026044056,.07233585420108059,.024371827339035017,-.013685307258532536,-.2073689149256469,-.1429203870068314,-.20318736992960118,.09738711454895084,-.11463822183415182,.06639276489870634,-.08790627274963889,-.24871001073084317,-.24716165183994784,.07081825322981992,.19552146385155544,.2667283201489779,.3056428917979906,.3354280050625516,.6010674473512297,.6973013864661962,.10657803670352221,-.26597013575809814,-.5166385012265116,.20353239335470413,.46612626705839527,.8817924518615256,1.0591766157447142,1.81559937881354,1.1338250057069015,1.336549316612259,.6056618650285254,-1.143412386517127,-.24404333943615408,-.11036542395783162,.0113975838761526,-.1374746764441064,-.17507285276321236,-.229508144906775,-.1235225366270939,-.15992872157622667,.07040420542593133,-.14847974776257952,-.11769772351689584,-.0043287613096706385,-.01570204240179094,.008975674876936093,.2936321736893157,.24220392956380496,.33450192958610414,.5061427531741152,.7981852522366981,.5625934272912321,-.5161851914994344,-1.105930659634037,-.36434278784189805,-.2506130633590454,.49191197464707476,-.5504297333386833,.33201271766592266,-1.2534804319442674,1.8545676439466376,2.7705947112358396,-.6572778182386966,-.4476986361937145,-.724841310594671,-.19352569039907921,-.06091583791907576,-.07579332872568335,-.18362798444373865,-.10847923107858076,-.4971843279255892,-.26497067484015147,.1279044678179279,.3055754310904159,.010766872600696822,-.17753959085018053,-.04814578185160058,.007404938424997059,.1911100471268881,.260240044947818,.38143909917016594,.6295601479932434,.6315271726552409,.5064081488092473,-.28203486996779953,-1.481298784591466,-.34444399750770943,.33223282315731145,-1.0635980503754157,-.7432738853191642,-1.4203730522981521,-.29452233058397176,.3105478087846589,.4425799571579111,.5885198019984471,-.608904845351347,-.5401519230094439,-.3838911656921845,.02852961095842791,-.22272564345822352,.021237638325899852,-.387784194546968,.021133356436687064,-.703172359616261,.5672727000473203,-.037766801642101375,.06793846381428098,-.5437098167860644,-.0704859693682512,-.02650526715020184,.26990648117357596,.2830749986604576,.3201793290763222,.48573187070286,.4386512882244713,.8786532261255616,-.7255315586935562,.48040960369964236,-.14688086473049994,-.8636112375382178,.034562131954569586,-1.3606412475160699,-.0957750273311256,-1.0236217631956728,-2.0668504460046977,.9104604552681247,.04764983705131218,-.29915225181420874,-.4419264253886607,-.16705843369252318,-.08813592215903708,-.1055833934917848,-.1529658239374068,-.37808744252168625,-.2797162376269429,.42301568032977793,.28749903579456393,.42643957249522774,-.6330846638456163,-.39563373733228846,-.2486369819601503,.3743892093980236,.1651784382566546,.21235668984583117,.05068339188231969,.2929172313060312,.12600631152419559,.3702007241660689,-.11933000679563836,-.07786945045374266,.4005928988973134,.33639737707180556,-1.4411916754233998], height:32,width:32,top:{real:[6327.007467982786,12787.448651417644,-8580.13577826938,-6564.429625192605,1064.8969915597925,-1614.7722808334524,-60.04811942184231,-221.12968025641604,-12.445754708845573,-62.94058771358334,23.82057845345795,-28.525301748952867,37.86428012515434,-85.844490405628,27.49381496964307,-48.15197444336273,41.39966019930714,-48.151974443360345,27.493814969642067,-85.84449040562787,37.86428012515403,-28.52530174895269,23.82057845345851,-62.94058771358404,-12.445754708845573,-221.12968025641445,-60.048119421842806,-1614.7722808334493,1064.8969915597932,-6564.429625192613,-8580.135778269385,12787.448651417659,-17213.595236981997,544.0730266990294,-10829.417860945707,-5794.121923108305,-1103.8692252742003,-1120.3666800727638,-106.61462896985108,-117.89522553300084,-39.30843089365121,-26.96057805653429,-11.02504742288635,-2.1850531713376355,-7.295269738362588,-14.472211987615461,-14.23279965231924,3.5205960317557246,-19.62974773437861,-14.131264529804582,-22.272265924680642,-17.401343902608428,-1.7416101263052008,.34733716754184635,-16.60063574625633,-32.47390190466588,-64.31481385096977,-84.0347536394093,-258.3227844043639,-714.3011765913042,113.1165060355228,-2806.7151144576005,-10882.302955904926,-27817.100568112113,-27745.70849411807,-22841.4208450087,-8553.526467468835,-4085.033989629072,-1748.9561003744159,-545.3354386545253,-146.45498278007594,-40.80544006189128,-50.06021298226216,-16.73048944848435,-23.62313915150434,.36714120063527833,-7.188290919780933,6.414260409354566,-14.833291452397129,3.4669422259569203,-16.161012153790594,-21.28313017801196,-13.244388638951026,-1.2754674400463286,.4918466117149978,-11.472717532816317,-17.53068940264937,-29.523444921912187,-36.98341868022681,-91.5973512360268,-144.17841735614732,-486.41083616652156,-239.1204206916959,139.0089391760282,-7153.157795026505,-18373.599790964956,-8415.922731585739,-6467.554677983386,-5469.658567600724,-2789.7914675082047,-821.4826713748977,-514.7145420030545,-122.6780822655295,-35.554593402553344,-32.90518481960786,-16.87597750619218,-9.124394819051188,-4.180262031874417,.783160840973908,-.8247362446257293,-6.027703935454679,-6.850242789892616,-6.885859335051412,-14.551844205848809,-8.459298914659914,-1.9950695133570466,1.5394495557011576,-9.232834653609892,-11.961754213185406,-20.558561534905806,-38.14482496917136,-57.16086990533409,-157.5554953403844,-411.2008243286849,-110.1193097574614,-463.64281724562954,-1210.9754315912523,-4810.1023052011815,-2624.9192342435695,-4516.897453633137,-3582.982491421491,-2119.74991736369,-750.2347266447723,-159.86878938364373,-96.80572891910141,-16.935754226078267,-22.178078450833883,-9.009222722598976,-5.445485292050662,-2.526888256673675,-2.621952349894846,-2.0534180946008638,-6.464306480423622,-8.721406530014862,-7.012703187407293,-7.7847619200438425,-.7812180190370879,-.11031060182209244,-3.431895986699017,-4.568083040130742,-9.316020064156948,-15.87900618307528,-23.382201868158507,-37.98940473063752,-121.95929165874175,-201.43809047465336,-567.3037269017944,-610.3631285378248,-1937.2376557226703,-2694.0942422163184,-3481.535597542074,-3026.0617140239533,-2506.491638388831,-1355.157669171596,-468.0599091435185,-33.397814851582154,18.54533148158398,-29.439943085485314,-11.922803368680741,-7.717457984896304,-2.788860330209426,-2.054500633053642,-1.0224301618297007,-2.5290059501700397,-2.6199349314032494,-4.882873145781677,-5.6140621268617785,-3.6146413255535528,-.829674845027506,-1.1631844631411599,-1.17362456930955,-3.7427284368684024,-6.617827065642342,-8.803949843157813,-13.481606634721874,-26.682014936266803,-32.97802138197703,-190.87870662958537,-335.07671606134033,-876.9552218570499,-1470.8308615232113,-2413.1056871868645,-2329.4915082040015,-2151.926578142459,-1438.5211303616525,-713.0815238595347,-130.56706965452,-28.862997769748436,1.7115783105395304,-2.3079138134833856,-11.650001060370576,-2.170189504369732,-1.7033561682904694,.11972955037883275,-.5790790812653609,-.45369004788794814,-4.0202584980239315,-2.2874964618085922,-4.043969331388718,-2.714411694103757,-.7843149712055903,-.6337786214807561,-.8354288746558204,-2.5417481635934216,-3.449779845211915,-5.2729359146939485,-9.332533768451485,-2.348077722091996,-30.998957295773433,-62.717085150656224,-255.55592612696097,-515.5540381395323,-1077.4118984564277,-1959.4321649356718,-996.1706325647543,-957.5829658424543,-646.4812454670936,-264.6323709027533,-80.5183401631437,1.357764038030833,-10.209813205700032,-1.6455702447745924,.04156410545341299,-2.111433611523795,.09477041994978236,-.5991594867560358,-.04280607522064791,-1.4583889440112543,-1.0515624140257636,-2.624261072572436,-1.9962698899057387,-2.637358088895228,-.39414295752688255,-.8095209882094745,-.8093550401978136,-1.831598128086258,-2.395778121988731,-3.7775973636187947,-1.2762438485839673,-5.873618704707699,-1.7472058496177199,-39.26171578474986,-103.67045476207605,-221.97901463800724,-486.52939506954147,-770.8638520171584,-324.5340145618874,-340.76561269504333,-198.9419784129981,-116.98390967138687,-32.55200245568722,-2.8647426984892057,3.4567160839115996,-2.331005269373194,-.31982529888503974,1.0641170511547686,-1.1693860348016079,.407002126956675,-1.0092937918537679,-.03498515495516123,-1.1746986822405672,-2.25833192615608,-2.3742700657768196,-2.0999344700147127,-1.3199204785521135,-.00726121067659493,-.21997349279604808,-1.6799449140427334,-2.573626149077699,-1.274902979707558,-2.9722975102588807,1.1149262389696764,-3.782557414370513,-8.811283856834226,-31.380656277665604,-80.81570649485545,-151.2920880811312,-231.73584987382,-71.71934076037124,-68.36402933689453,-82.30497530908133,-39.76913656733262,-12.693902195545155,1.984203566270604,-.4889435407745263,1.5673786316984977,-1.1528550937233366,-.047905313676576855,1.0650111541187497,-1.4670778837513785,.9015484382771278,-2.0067122081730173,-1.7180755446076856,-3.3483434682482898,-1.6317774897434336,-3.470880426438495,-1.4694727348954268,-.10257790692130256,-.9288963638157178,-2.5451436559397584,-1.1303995452351283,-2.8871606625355204,-.49805533537312113,-.4387193422815815,.7490974196906504,1.439791857975526,-13.026034555561825,-28.484337861014367,-36.89517840676591,-72.2311900358384,-26.809485534889244,-56.94273379652035,-36.28010742942203,-18.09907931367515,-3.2627913287121535,-.2706547580504817,1.1511525903295716,-.1898870363801409,.9708722088802537,-1.132641237042418,.1998130176636337,2.307680270293133,-2.549840775656603,-.5553262362525304,-4.506786497033707,-3.1791416623515807,-4.407810096297031,-3.312559231697057,-.8611731352773999,-1.5893272599995412,-2.966763176308445,-.10263295233944174,-3.9090515756474873,-1.1809123553765606,-1.20382750933502,.286248057198718,1.853681713247669,.8072002923997494,-5.576914824230862,-9.876045833403877,-26.746787584056406,-25.156847324745275,-59.858730768373135,-40.90948134422029,-31.301364606284917,-12.99289618826553,-3.374775686900119,2.018530777741562,-.2260612077575776,.20594677690592242,-.3240322568825497,2.6342781156582364,-.20787587650621794,.020021422684959465,2.4168167113542753,-5.471113939106749,-4.016235227521675,-8.261492540220937,-5.359721289980835,-3.561851886896915,-2.433206189931258,-3.72732750056158,1.9796458045760836,-5.619455249505039,-1.3533084788499918,-2.5312603283156982,-.7357741299886245,1.05348708564852,1.9641802030644013,2.686394865901931,.1517907769810002,-13.505006616733285,-24.652619118640313,-46.54077201833177,-65.57386282564879,-62.198686950727755,-33.36748135977328,-15.462856466374785,1.276482037672726,.652383510779166,.11426292455840634,-.28574074744887695,1.1004477970868616,1.5327652909312646,4.932711200240519,-2.7503236900904393,-3.9754701567757182,-.834512135731142,-9.685955117463603,-6.000630422824884,-7.13182532638587,-4.985642454964987,-8.219869288149797,4.4471445589999075,-5.912419213682183,-1.066228559248251,-4.532002002354178,-2.2691032318803455,-.2959592999178123,.95069246916244,2.9800299945570488,4.175488865046039,-3.9368165535394617,-16.75239131732446,-41.14171229985143,-60.64390251212476,-84.34316473215777,-54.07497231667312,-32.1478368384324,-3.8004568077904586,.609063700223492,.9632657107050296,.12072436644318041,.8631954755084683,1.1644302862121145,2.3252453178811563,.4766448788746544,4.289515874709642,-8.009939850720517,-11.261414242734404,-3.732740466180737,-6.1601929909303115,-5.750665733944118,-11.117751544185502,4.305411514823387,-8.211608570347876,1.5649721654809707,-5.692142411938895,-3.494908667188049,-2.1697325908161673,-.6954156264880039,.8151347377023449,3.491384396197289,3.712841092827461,-.2846190491444036,-14.694115553922865,-40.78417179777688,-76.1290979979302,-42.44654416844914,-35.20072244442639,-7.684968530920968,-.867788767062698,1.7056687310546401,.5197495279873948,1.131675911228874,1.212780060538119,2.222121429321137,.8361427470500683,.09954660645280876,-3.106693968311659,2.4769973579809332,-11.745899626687375,-12.566716735550758,-4.784372252544112,-8.604058870064595,5.351103402740868,-15.66778198729919,3.3911987930307137,-8.125945789685659,-4.798036588740434,-2.1471667518999764,-2.508724157326058,-.860976568717486,.8013954360837776,2.3927476350849495,5.65616272254561,4.625019584724071,-10.360873371570062,-32.18376694299341,-40.627648783043085,-17.95302681367091,6.185941644460162,4.4451711191118575,6.213331251274599,3.3587096432927233,.7556965076296271,.8242995843017912,1.6770717987294814,1.487507854284298,.5750646130151693,-1.8616897808321822,-4.292331488605052,-7.016130789435238,4.852626568656962,-11.625945416074895,-21.07467865045702,3.143448295571389,-12.714871655934468,2.366640700254353,-11.17366154497929,-6.475058123170597,-2.9596627855411386,-2.763079045935563,-1.4122750319888788,-.5580228906711165,.4050996560161985,3.054950312292098,4.5519407117959005,5.504486591127148,2.884340309618711,-2.0306279174386637,-12.290279126535582,30.20785901727286,12.45094729737127,8.741596108674122,10.304484703022888,4.231031360287155,1.8368366318675937,1.9910666876255574,.991563036763885,.31747940339256003,-.6024560594659747,-1.5054245711483085,-5.204747979185773,-4.698542589986817,-6.440605765726458,-2.431796520269472,-.318061102868901,-34.61437498430425,-.3180611028689131,-2.431796520269478,-6.440605765726465,-4.6985425899868325,-5.2047479791858065,-1.505424571148318,-.6024560594659905,.31747940339256003,.9915630367638866,1.9910666876255707,1.836836631867627,4.231031360287185,10.30448470302293,8.741596108674146,12.450947297371268,-17.95302681366921,-12.290279126534008,-2.0306279174386814,2.8843403096185996,5.504486591127181,4.5519407117958774,3.0549503122920303,.40509965601617365,-.558022890671132,-1.4122750319888866,-2.763079045935566,-2.9596627855411324,-6.4750581231706095,-11.173661544979305,2.3666407002543774,-12.714871655934495,3.1434482955713383,-21.074678650457034,-11.625945416074918,4.852626568656909,-7.016130789435253,-4.292331488605082,-1.8616897808321802,.5750646130151582,1.4875078542843145,1.6770717987294999,.8242995843018388,.7556965076297252,3.3587096432928165,6.21333125127526,4.445171119112939,6.185941644460696,-42.44654416844733,-40.62764878304236,-32.18376694299287,-10.36087337156992,4.625019584724104,5.656162722545562,2.392747635084909,.8013954360837462,-.8609765687174984,-2.5087241573260646,-2.1471667518999924,-4.798036588740434,-8.125945789685682,3.391198793030713,-15.66778198729918,5.351103402740785,-8.604058870064568,-4.7843722525441965,-12.56671673555077,-11.745899626687423,2.4769973579809226,-3.1066939683116837,.09954660645280862,.8361427470500621,2.2221214293211515,1.2127800605381271,1.1316759112289154,.5197495279874628,1.7056687310547414,-.8677887670623313,-7.684968530920446,-35.20072244442443,-84.3431647321563,-76.12909799792908,-40.784171797776416,-14.694115553922703,-.28461904914431585,3.712841092827477,3.4913843961972515,.8151347377022745,-.6954156264880174,-2.169732590816195,-3.494908667188057,-5.692142411938915,1.5649721654809774,-8.211608570347895,4.3054115148233585,-11.117751544185527,-5.750665733944103,-6.160192990930285,-3.732740466180779,-11.261414242734437,-8.009939850720519,4.289515874709647,.47664487887466933,2.3252453178811465,1.164430286212123,.8631954755084824,.12072436644322472,.9632657107051639,.6090637002236494,-3.800456807789966,-32.147836838431445,-54.074972316672174,-65.57386282564865,-60.643902512124406,-41.14171229985112,-16.752391317324395,-3.936816553539381,4.175488865046039,2.98002999455701,.9506924691624021,-.295959299917824,-2.26910323188035,-4.532002002354194,-1.0662285592482377,-5.912419213682192,4.447144558999873,-8.21986928814978,-4.9856424549649665,-7.1318253263858535,-6.000630422824882,-9.685955117463573,-.8345121357311588,-3.9754701567757316,-2.7503236900904167,4.932711200240523,1.5327652909312637,1.1004477970868634,-.2857407474488868,.11426292455844969,.6523835107792659,1.2764820376728394,-15.462856466374522,-33.367481359773095,-62.19868695072734,-59.85873076837255,-46.54077201833131,-24.652619118640224,-13.50500661673309,.15179077698109764,2.686394865901908,1.9641802030643754,1.0534870856484704,-.7357741299886327,-2.5312603283157147,-1.353308478849978,-5.619455249505026,1.979645804576063,-3.7273275005615623,-2.4332061899312447,-3.561851886896878,-5.35972128998084,-8.261492540220898,-4.016235227521694,-5.471113939106738,2.416816711354272,.020021422684962133,-.20787587650621156,2.6342781156582284,-.3240322568825613,.20594677690590416,-.22606120775752253,2.01853077774176,-3.3747756868998953,-12.992896188264998,-31.301364606284267,-40.909481344219984,-26.809485534888527,-25.156847324744817,-26.74678758405601,-9.876045833403781,-5.576914824230828,.8072002923997806,1.8536817132476344,.28624805719868845,-1.2038275093350328,-1.1809123553765482,-3.9090515756474855,-.10263295233946072,-2.9667631763084428,-1.589327259999552,-.8611731352773833,-3.3125592316970565,-4.407810096297022,-3.179141662351582,-4.5067864970337235,-.5553262362525373,-2.549840775656593,2.30768027029313,.19981301766362944,-1.1326412370424508,.9708722088802425,-.18988703638015317,1.1511525903296145,-.27065475805034434,-3.2627913287119403,-18.099079313674878,-36.28010742942166,-56.94273379651932,-71.7193407603689,-72.2311900358364,-36.895178406764366,-28.484337861013827,-13.026034555561461,1.4397918579755735,.7490974196906212,-.4387193422816503,-.49805533537312413,-2.8871606625355364,-1.130399545235152,-2.5451436559397544,-.9288963638157319,-.10257790692130979,-1.4694727348954375,-3.47088042643851,-1.6317774897434372,-3.3483434682483164,-1.7180755446077083,-2.006712208173023,.9015484382771369,-1.4670778837513718,1.0650111541187297,-.047905313676639846,-1.1528550937233546,1.5673786316984972,-.48894354077444435,1.9842035662707793,-12.693902195544938,-39.769136567331614,-82.30497530907938,-68.36402933689251,-324.5340145618874,-231.73584987382011,-151.29208808113108,-80.8157064948556,-31.380656277665615,-8.811283856834311,-3.7825574143705687,1.114926238969638,-2.9722975102588807,-1.2749029797076188,-2.573626149077714,-1.679944914042758,-.21997349279605258,-.007261210676620465,-1.3199204785521295,-2.09993447001476,-2.3742700657768196,-2.2583319261561177,-1.1746986822405874,-.0349851549551673,-1.009293791853766,.40700212695667115,-1.169386034801607,1.0641170511547318,-.31982529888503974,-2.3310052693731778,3.456716083911618,-2.864742698489133,-32.55200245568721,-116.98390967138671,-198.9419784129981,-340.7656126950431,-996.1706325647434,-770.863852017153,-486.52939506953675,-221.97901463800537,-103.67045476207502,-39.261715784749725,-1.7472058496176825,-5.873618704707824,-1.2762438485839995,-3.7775973636188502,-2.3957781219887693,-1.831598128086283,-.8093550401978216,-.8095209882094927,-.3941429575269055,-2.637358088895282,-1.9962698899057312,-2.6242610725724247,-1.0515624140257607,-1.4583889440112356,-.042806075220638506,-.5991594867560418,.09477041994976447,-2.111433611523809,.04156410545339216,-1.645570244774569,-10.20981320570001,1.357764038031177,-80.51834016314297,-264.63237090274987,-646.481245467088,-957.5829658424444,-2329.4915082039943,-1959.4321649356684,-1077.4118984564245,-515.5540381395323,-255.55592612696057,-62.717085150656416,-30.998957295773568,-2.348077722092276,-9.332533768451471,-5.272935914694109,-3.4497798452119492,-2.5417481635934838,-.8354288746558232,-.6337786214808031,-.7843149712056035,-2.714411694103749,-4.043969331388717,-2.2874964618085487,-4.020258498023898,-.4536900478878949,-.5790790812653498,.1197295503788481,-1.7033561682904654,-2.170189504369725,-11.650001060370577,-2.3079138134832218,1.7115783105395919,-28.86299776974782,-130.5670696545195,-713.0815238595312,-1438.5211303616488,-2151.926578142451,-3481.535597542063,-2413.1056871868605,-1470.8308615232086,-876.9552218570503,-335.07671606133954,-190.87870662958562,-32.978021381977214,-26.682014936266988,-13.48160663472185,-8.803949843157923,-6.6178270656423885,-3.7427284368684086,-1.1736245693095617,-1.1631844631411714,-.8296748450274833,-3.6146413255534444,-5.614062126861783,-4.8828731457814465,-2.619934931403141,-2.5290059501698665,-1.0224301618296836,-2.0545006330535864,-2.788860330209389,-7.717457984896257,-11.922803368680738,-29.439943085484902,18.545331481584157,-33.39781485158058,-468.0599091435166,-1355.1576691715877,-2506.491638388823,-3026.0617140239456,-2624.9192342435676,-2694.0942422163216,-1937.2376557226696,-610.3631285378265,-567.3037269017948,-201.4380904746546,-121.9592916587422,-37.98940473063803,-23.38220186815851,-15.879006183075566,-9.31602006415698,-4.568083040130774,-3.431895986699037,-.11031060182210287,-.7812180190371311,-7.784761920043757,-7.012703187407289,-8.721406530014612,-6.46430648042343,-2.0534180946007163,-2.62195234989481,-2.526888256673632,-5.445485292050623,-9.009222722598933,-22.17807845083391,-16.93575422607804,-96.80572891910084,-159.86878938364163,-750.2347266447713,-2119.7499173636857,-3582.9824914214882,-4516.897453633135,-8415.922731585722,-4810.102305201169,-1210.9754315912437,-463.6428172456313,-110.11930975746253,-411.2008243286865,-157.55549534038482,-57.16086990533496,-38.144824969171324,-20.558561534906186,-11.961754213185522,-9.232834653609975,1.5394495557011911,-1.995069513357094,-8.459298914659838,-14.5518442058491,-6.885859335051412,-6.850242789892523,-6.027703935454709,-.8247362446255362,.7831608409739802,-4.180262031874306,-9.124394819051078,-16.875977506192154,-32.90518481960786,-35.55459340255284,-122.67808226552924,-514.7145420030503,-821.4826713748957,-2789.7914675081947,-5469.658567600714,-6467.554677983375,-27745.70849411805,-18373.599790964956,-7153.157795026502,139.0089391760178,-239.12042069169632,-486.41083616652713,-144.17841735614894,-91.5973512360294,-36.9834186802268,-29.52344492191359,-17.530689402649603,-11.472717532816715,.49184661171508715,-1.2754674400467305,-13.244388638951113,-21.283130178012485,-16.161012153790605,3.4669422259560148,-14.833291452397047,6.414260409354707,-7.18829091978077,.3671412006354383,-23.623139151504223,-16.730489448483766,-50.06021298226216,-40.80544006189026,-146.45498278007528,-545.3354386545192,-1748.9561003744159,-4085.033989629059,-8553.52646746883,-22841.42084500867,-17213.59523698198,-27817.100568112102,-10882.302955904914,-2806.7151144576032,113.11650603552238,-714.3011765913102,-258.32278440436545,-84.03475363941075,-64.31481385096976,-32.473901904667066,-16.600635746256838,.34733716754136956,-1.7416101263050108,-17.401343902608698,-22.27226592468065,-14.131264529805808,-19.62974773437863,3.5205960317556224,-14.232799652319452,-14.47221198761537,-7.295269738362605,-2.1850531713375,-11.025047422886134,-26.960578056534132,-39.30843089365128,-117.89522553299832,-106.61462896985047,-1120.3666800727583,-1103.8692252741987,-5794.121923108299,-10829.417860945698,544.0730266990613],imag:[0,39515.399789254865,-15382.502646592808,-2918.5213899411633,1191.3150820979915,-345.8052698718326,-91.96349756116432,-108.0683025974378,-23.43132760503778,-16.61081082295881,-2.2742971526945692,-21.94540337447156,-21.27242040257718,-19.057735286082725,52.37631312091274,8.852197502614422,0,-8.852197502615361,-52.376313120912044,19.05773528608244,21.27242040257723,21.945403374471546,2.2742971526945164,16.61081082295847,23.43132760503778,108.06830259743377,91.96349756116703,345.8052698718299,-1191.315082097991,2918.521389941166,15382.502646592799,-39515.399789254865,16946.371225111547,11272.40087069651,-1841.163065584854,-1171.8258105148211,109.267405778432,109.43221584454041,-206.10314812122442,-42.28539321936541,-65.24914017226911,-8.196051793926907,-25.36595623631852,-12.488977779350739,-20.777136166915728,10.939736173955986,13.738393384077787,18.982014759380824,-12.446635345723246,-8.830506972875275,-14.016932746731957,10.847407040619599,18.949463773817904,9.549137726694633,9.916050792857149,10.925693066643545,29.5976882079218,110.70270321520633,119.64570653889598,-28.406380421737747,-832.3851335439583,3868.3607546707453,4625.155413999855,1299.266384884336,11955.36918869557,-346.60702359457474,2363.08656433282,202.32180136864196,-295.0107693483969,277.4413124787238,-208.25011765184485,-68.53645210929017,-63.125416501511275,-30.589238972650307,-20.382558491276782,-12.902690844348575,1.0182743702449766,2.287414105137245,14.546101055958879,-1.6150967690531892,.8738635446220925,-13.38677146472326,17.407635810762027,-.6068089103442856,12.950261495215786,-.8675699825474084,13.062832664150156,-2.136096668655318,35.88043741028102,66.54358379132412,106.41042136702396,-154.61175360170367,-142.4313830070681,-204.04622542072212,637.2265195104327,14506.214536688893,2087.241286517743,2934.8250858413794,-540.5764135125077,271.5767913086672,537.4906442433505,71.61068630950663,-82.56651716015784,-74.48955207450676,-57.14272356927949,-25.254222647826957,-12.544755138678799,-6.770877333738462,-.2077076475991805,1.1194026551973495,3.6890839097334878,-.20461611038051675,-5.373740185152839,-2.2636764639022453,4.983260069528009,10.10754418440443,2.544597152813191,5.044756942220222,2.818990373202739,2.9920185974422946,11.529259915073515,53.34828178316849,50.5773061658137,119.57179721034167,-786.9439339579221,-901.8697209507841,1074.2990124084633,-676.634329985113,-1814.4894639161919,-1058.8873901892568,349.63255334068964,268.2484621242063,380.4257804868011,97.91247606120596,-71.66187990477866,-72.73694020539094,-37.286147332183255,-18.72018651765236,-9.562832886967836,-8.263453641636948,-.1909928019616089,.2856733033383343,.0713092208473309,1.775656575203522,2.1386941287610384,-1.0231985430634363,2.4480270844924137,1.987809621173889,4.1535160740617325,3.5521022242715827,3.6019889835361654,-.38778650675348675,4.593463303583732,12.369503115173785,94.4009292853464,-77.03951669454163,-317.9618963149653,-464.9398230309893,-1928.5847150696218,-1707.435501473529,-1583.8824730375936,-833.1497046070991,-242.65732454029356,317.3445924618518,69.37197156554217,-13.453603503282046,-58.67866216881051,-40.69792523135727,-20.16679423742438,-13.090865763493372,-7.663932546815518,-3.9818184076004774,-1.1480426683317846,3.4782462601712654,3.3535274581593777,1.130442042784202,-.7879809105656911,1.364561831917687,-1.248210330241836,2.654804361380871,2.0455422971726147,3.3794759874708187,.2827071358643787,-.6739636481307105,-2.4299863370655714,20.048308524208917,2.7323622379310764,23.350930435926227,19.428895667387472,-542.5554345851384,-969.7264693441342,-1881.693511581832,-426.42488803140975,-203.1293354864958,221.2759941924873,75.49864673782753,81.52765470923214,-23.22814892751923,-35.0958926310836,-18.113211298120703,-10.84781416147373,-7.219012562090457,-4.627971063973636,-2.4591204313834965,.5845484236475059,.9547463106026568,2.4151219203224654,.35567626693527166,-.3444373524655358,.10021534895843374,.6297575158661224,.07573905798146836,2.560600970229473,.33652577635989583,1.0967346902818458,-2.0000864020848046,1.451434335785166,-7.104320348324592,10.682010714917043,63.119371696969466,-.21915489532378957,-18.829394319190524,-151.38668525810633,-53.557614725234764,319.9810919368852,339.6557115911443,137.34002448547074,89.16606167421133,5.539540701045855,3.139496157974919,-15.790153056071546,-10.068399035154068,-5.990189510359599,-3.818478372445559,-3.031311871551015,-1.7050468427375405,.29997994657424726,1.0820090369221063,1.186145834536469,1.1035985643781976,-.026686439684276222,-.021861987241408937,-.7106913323848779,1.5408441736495715,.8896424069841912,1.3226298476418663,-.3134179284404904,.3654281917809065,-6.283172414744601,-1.5019641274621849,13.705577255286178,14.08988446983488,43.37606456504579,54.20464622802869,132.60719521227122,62.432091745032416,219.8685340702529,133.19971898528303,106.65962198554573,32.50951057813668,-.3217312093221928,-1.0472919151881939,3.040048254115993,-2.137337576928337,-3.730023177462626,-3.658884080605465,-1.7579654575817145,-1.4081716233776314,.5384750525967524,.9716444260939648,.9955744417358943,.11126643861839057,.6834380273282822,-1.8968331338371984,1.2370080984335854,.24616862215977253,1.6488725749132858,.5175199959040523,1.1293193043526017,-2.440127533596657,-2.1096176983280075,.8686234113923286,-3.2906850406637935,10.529105330387669,21.528607110729595,53.86435993126087,77.64597170154937,219.35042572397626,56.6467253044894,72.59713315254464,25.283726226154087,9.591694536051858,3.513106638710965,7.835371209588592,3.7982495059531924,-.1320379920173739,-2.687214491416787,-3.993299541160216,-3.249609758225802,.3475312947763441,.5110856303949012,1.5779290838292743,-.32098662744154494,.8505043637670686,-.9526953350056799,1.2514468795435802,-.8023251432711297,.9402998385797201,.0834845375200434,2.9970442493787712,-1.3537504507858638,-.49606931853204594,-.4063479369404129,-3.2049709482453,-.9073350510942371,2.436744629198272,14.425788131967863,11.285893196605656,41.38323140755873,26.64930600456886,3.49019745229235,-2.7278278900775033,-.6780497768719117,5.197251705350807,13.315592278460391,8.56553402704958,2.798694252472001,-1.3188307478897958,-2.9560147101356677,-3.503962513889325,-3.235126442242444,-1.7837191938553947,4.13702942142299,-.485758893366084,1.5705428299533406,-.2871276643491235,3.026372213847224,-1.2120159426024513,2.35786853116133,-.5759598133955007,5.0023110313506045,-1.3965343408401143,.5713001835955326,.9760153999777991,-2.585611776637107,-1.4572886030272592,-1.697304402058907,2.103012136644805,-.06299514621758302,4.961293785496401,-.301351161950073,9.158035887659205,-26.77416025365113,-14.352442298363405,-1.328062861082634,14.662722831107068,13.065714024917916,9.014268684358106,2.3156698002103213,-2.1494090398895276,-3.4369058394752816,-3.2885833247038136,-1.5589303641797962,-1.2624013759488528,-1.9675974847606275,6.6808538974877765,-1.9845455926326385,5.852020908231505,-.6464946693693394,3.7090325345277484,-1.4383189901623872,7.635821765818129,-2.5011370399824613,2.0288771570791524,3.387066154036441,-2.1726948090167277,-1.6227282885568253,-2.3401345171732064,-1.0784728701462345,-2.329913042321786,1.6766227476276099,-5.520827980018438,-13.304914803323909,-34.683237345909106,-16.2208922311743,-7.561457411183358,14.803696771258469,15.579335900760762,15.161631552742872,8.466040959037517,1.9742581617985508,-2.2318082441740326,-3.1677451000476946,-2.7136257844502993,-2.4663578849843404,2.147064267404146,-.8080751646824499,-6.8039934755458935,11.462761097859508,-2.320007213313432,9.647619505490004,-.5832325892308606,10.466810618341768,-7.39663728492945,4.629755222962074,7.84990600691447,-1.2532724460122664,-.7138369357089525,-3.035642205111053,-1.9171318821546592,-3.2905248775997,1.1638954652799918,-.8003122215164804,-7.6686022187651925,-13.379436000591463,-2.0784151782651223,18.75367455316294,37.59693951497317,28.201887912811504,26.441177038828386,17.31369928962457,8.260583701281336,1.91576653498145,-1.0360449197814665,-2.460835808457071,-2.9435912594789997,-.7374589298546507,-.806982080987579,1.3512050433752707,-2.4806623635392717,-10.931358459008862,20.399475046734903,-.9391475392972903,15.633586230850142,-11.808527677086202,3.795524426649309,11.440683264496995,.22625003249094855,2.3910143241324033,-1.5433230899620785,-1.7524971656611896,-3.4392335008624597,-1.2102890230410412,-1.1333111335531953,-.8668905465240005,-.7710203749819823,5.869418392294464,-6.691170849830921,60.884710948918006,43.6215632338163,43.48959952748494,33.141784821271486,18.338861076357606,7.709614194939609,3.102096535420124,-.33651454595896624,-1.858665713174497,-1.559439785993801,-1.7180049365163976,-.49470837698954684,-5.749978377706704,1.2816063498557866,-1.6438131382345036,-14.80449956699707,30.38324880041191,-20.687082737158004,6.429123713414993,13.719178799652914,-.15202331710012035,5.670833174690743,1.1091130063870853,.43083164420390874,-2.423604198850752,-1.2614169037455483,-3.163327541785472,-2.542847948565205,-1.0621152637056996,7.492146846575477,13.826120615216594,48.56895003285198,43.655937980459306,56.143788442077074,39.839822974553684,28.907966432346075,17.226166967005444,9.493352687280801,2.124830724849576,-.10304029106189502,-.73643011249607,-.6808620369242278,-1.5726895782452095,-2.38329292549688,-6.365462228048634,-12.648471231222512,2.6502987300645,9.194137936615347,-33.28553680715055,17.791788634489134,16.331392880531652,-1.0332061538290742,9.637685708097134,4.168966963233515,3.4112249849533103,-.6306411192619769,.02835684712188818,-1.1968584419289052,-3.3957285823190806,-4.745940898656516,-4.790016252397657,-5.15933541309157,13.957717184896774,20.367299127198688,0,-4.5388798707327584,12.10851784859719,15.801052170121357,15.786196904526062,6.464533909142766,2.6357128260629894,.48128762074186304,-.08159176932681525,-1.1399410088753745,-.939169667566381,-5.469535949937741,-8.47337798315448,-6.833270794890364,-5.875913014616271,-8.155226637929625,0,8.15522663792959,5.875913014616266,6.833270794890349,8.473377983154487,5.469535949937732,.9391696675663769,1.139941008875372,.08159176932681525,-.48128762074185355,-2.635712826062981,-6.464533909142767,-15.786196904526072,-15.80105217012133,-12.108517848597181,4.538879870732742,-43.65593798045641,-20.367299127197448,-13.957717184895019,5.1593354130924185,4.790016252397922,4.745940898656731,3.395728582319133,1.1968584419289152,-.028356847121888983,.6306411192619719,-3.411224984953306,-4.168966963233496,-9.637685708097113,1.0332061538290882,-16.33139288053165,-17.79178863448908,33.28553680715062,-9.194137936615315,-2.6502987300644807,12.648471231222583,6.365462228048637,2.383292925496898,1.5726895782452166,.680862036924256,.7364301124960793,.10304029106193066,-2.124830724849536,-9.493352687280627,-17.22616696700529,-28.907966432345297,-39.839822974551964,-56.14378844207378,-60.88471094891558,-48.56895003285002,-13.82612061521586,-7.492146846575117,1.0621152637059226,2.542847948565322,3.163327541785505,1.261416903745556,2.4236041988507613,-.43083164420392467,-1.1091130063870698,-5.6708331746907525,.1520233171001266,-13.719178799652925,-6.429123713414971,20.687082737158036,-30.38324880041186,14.804499566997148,1.6438131382345447,-1.2816063498557717,5.749978377706724,.49470837698955733,1.7180049365164254,1.5594397859938318,1.8586657131745035,.33651454595900265,-3.102096535420111,-7.709614194939538,-18.33886107635751,-33.1417848212713,-43.48959952748401,-43.621563233814584,-18.75367455316185,6.691170849831209,-5.8694183922938254,.77102037498232,.8668905465241434,1.133311133553338,1.2102890230411023,3.4392335008624833,1.7524971656611932,1.5433230899620796,-2.3910143241323984,-.22625003249093578,-11.44068326449701,-3.795524426649273,11.808527677086207,-15.633586230850069,.9391475392973129,-20.39947504673482,10.931358459008916,2.4806623635393117,-1.3512050433752816,.8069820809876324,.7374589298546702,2.943591259479049,2.4608358084570767,1.036044919781497,-1.9157665349814337,-8.2605837012812,-17.313699289624388,-26.441177038827938,-28.201887912810978,-37.59693951497237,16.22089223117415,2.078415178265043,13.379436000591378,7.6686022187652325,.8003122215165199,-1.1638954652799158,3.290524877599744,1.917131882154679,3.035642205111054,.713836935708947,1.253272446012271,-7.849906006914436,-4.629755222962067,7.396637284929479,-10.46681061834176,.5832325892309236,-9.647619505490004,2.3200072133134997,-11.462761097859458,6.803993475545934,.8080751646824615,-2.147064267404143,2.4663578849843657,2.7136257844503273,3.1677451000476933,2.2318082441740374,-1.9742581617985304,-8.466040959037452,-15.161631552742712,-15.579335900760643,-14.803696771258227,7.561457411183342,26.774160253651477,34.683237345909006,13.304914803324097,5.520827980018494,-1.6766227476275497,2.3299130423218712,1.078472870146282,2.3401345171732237,1.6227282885568277,2.172694809016716,-3.3870661540364337,-2.0288771570791524,2.5011370399824764,-7.635821765818108,1.4383189901624107,-3.7090325345277098,.646494669369335,-5.852020908231483,1.984545592632657,-6.680853897487771,1.9675974847606519,1.2624013759488664,1.5589303641798025,3.2885833247038483,3.436905839475272,2.1494090398895325,-2.3156698002103084,-9.014268684357965,-13.06571402491778,-14.662722831106908,1.328062861082763,14.352442298363767,-3.49019745229113,-9.158035887658194,.30135116195024236,-4.9612937854963866,.06299514621754256,-2.103012136644765,1.6973044020589363,1.457288603027268,2.5856117766371063,-.9760153999778071,-.5713001835955446,1.396534340840117,-5.002311031350611,.5759598133955085,-2.357868531161305,1.2120159426024788,-3.02637221384722,.28712766434913656,-1.5705428299533217,.4857588933660993,-4.137029421422994,1.783719193855416,3.235126442242455,3.5039625138893205,2.956014710135662,1.3188307478897938,-2.7986942524719765,-8.56553402704949,-13.315592278460258,-5.19725170535079,.6780497768720096,2.7278278900777337,-56.64672530448825,-26.649306004568476,-41.383231407558036,-11.285893196605604,-14.42578813196792,-2.4367446291981882,.9073350510942723,3.2049709482452906,.4063479369404134,.4960693185320061,1.3537504507858567,-2.9970442493787934,-.0834845375200447,-.9402998385796996,.8023251432711498,-1.2514468795435723,.9526953350056726,-.8505043637670447,.3209866274415623,-1.577929083829268,-.5110856303948855,-.3475312947763517,3.2496097582258234,3.9932995411602126,2.687214491416765,.13203799201742056,-3.798249505953158,-7.8353712095884145,-3.513106638710994,-9.591694536052009,-25.283726226154414,-72.5971331525438,-219.8685340702529,-219.35042572397646,-77.64597170154943,-53.86435993126099,-21.52860711072962,-10.52910533038772,3.290685040663801,-.8686234113923152,2.1096176983280075,2.4401275335966615,-1.1293193043526162,-.5175199959040564,-1.6488725749132833,-.24616862215974425,-1.2370080984335483,1.8968331338372646,-.6834380273282822,-.11126643861832354,-.9955744417358692,-.9716444260939339,-.5384750525967466,1.408171623377654,1.757965457581725,3.6588840806054854,3.730023177462626,2.1373375769283727,-3.0400482541159497,1.047291915188283,.3217312093221976,-32.5095105781366,-106.65962198554575,-133.199718985283,-319.98109193688754,-62.432091745036324,-132.60719521227176,-54.20464622802902,-43.37606456504613,-14.089884469834875,-13.705577255286062,1.5019641274622118,6.283172414744585,-.3654281917809468,.31341792844047633,-1.322629847641876,-.8896424069841873,-1.5408441736495315,.7106913323849381,.021861987241514846,.0266864396842654,-1.1035985643780957,-1.186145834536423,-1.082009036922065,-.29997994657423205,1.7050468427375622,3.031311871551031,3.818478372445528,5.99018951035957,10.06839903515407,15.790153056071421,-3.1394961579745826,-5.539540701046052,-89.16606167421166,-137.3400244854728,-339.65571159114575,426.42488803140685,53.55761472523432,151.38668525810476,18.829394319190286,.2191548953235339,-63.1193716969694,-10.682010714916952,7.104320348324818,-1.4514343357851665,2.0000864020848317,-1.0967346902818478,-.3365257763598761,-2.5606009702294568,-.07573905798135958,-.6297575158660037,-.1002153489582,.34443735246552043,-.35567626693504045,-2.415121920322402,-.9547463106025608,-.5845484236474793,2.4591204313835524,4.627971063973652,7.219012562090432,10.8478141614737,18.11321129812079,35.095892631083665,23.22814892751946,-81.52765470923207,-75.49864673782862,-221.27599419248904,203.12933548649244,1583.8824730375886,1881.6935115818235,969.7264693441334,542.5554345851378,-19.428895667388197,-23.350930435925818,-2.7323622379307726,-20.048308524208668,2.4299863370655803,.6739636481307644,-.2827071358643783,-3.3794759874707645,-2.045542297172576,-2.6548043613806773,1.248210330242034,-1.3645618319173671,.787980910565676,-1.130442042783935,-3.353527458159282,-3.4782462601711517,1.1480426683318268,3.981818407600519,7.663932546815509,13.09086576349318,20.166794237424288,40.69792523135695,58.67866216881051,13.453603503282435,-69.37197156554245,-317.3445924618542,242.65732454028887,833.1497046070945,1814.4894639161919,1707.4355014735293,1928.5847150696216,464.93982303099165,317.9618963149654,77.03951669454241,-94.40092928534638,-12.369503115173439,-4.593463303583724,.3877865067534687,-3.6019889835361467,-3.5521022242715157,-4.153516074061658,-1.987809621173597,-2.4480270844921423,1.0231985430638744,-2.1386941287610495,-1.775656575203229,-.07130922084720692,-.28567330333819857,.19099280196170093,8.26345364163699,9.562832886967872,18.72018651765216,37.28614733218326,72.7369402053908,71.66187990477839,-97.91247606120552,-380.4257804868011,-268.24846212420823,-349.6325533406899,1058.8873901892528,-2087.2412865177334,676.6343299851142,-1074.2990124084556,901.8697209507884,786.9439339579222,-119.57179721034137,-50.57730616581321,-53.34828178316841,-11.529259915073451,-2.9920185974423683,-2.818990373202848,-5.044756942220179,-2.5445971528130604,-10.107544184404102,-4.9832600695276215,2.2636764639027978,5.373740185152825,.20461611038107308,-3.6890839097334074,-1.119402655197085,.20770764759927202,6.770877333738589,12.544755138678777,25.25422264782682,57.14272356927944,74.48955207450695,82.56651716015759,-71.61068630950653,-537.4906442433507,-271.57679130866813,540.5764135125049,-2934.825085841371,-11955.36918869557,-14506.214536688902,-637.2265195104331,204.04622542072232,142.43138300706894,154.61175360170483,-106.41042136702355,-66.54358379132336,-35.88043741028101,2.1360966686551617,-13.062832664150186,.8675699825474646,-12.950261495215663,.6068089103450538,-17.40763581076148,13.386771464725289,-.8738635446220966,1.6150967690552112,-14.54610105595846,-2.2874141051365076,-1.018274370244917,12.902690844348964,20.382558491276768,30.589238972650698,63.12541650151129,68.53645210929236,208.25011765184536,-277.4413124787215,295.01076934839597,-202.32180136863923,-2363.0865643328207,346.6070235945696,-16946.371225111554,-1299.266384884367,-4625.155413999856,-3868.3607546707453,832.3851335439597,28.40638042173725,-119.64570653889508,-110.70270321520742,-29.59768820792175,-10.925693066643381,-9.916050792857169,-9.54913772669443,-18.949463773817815,-10.847407040619126,14.016932746732627,8.830506972875813,12.446635345723296,-18.9820147593783,-13.73839338407706,-10.939736173955323,20.777136166915735,12.48897777935125,25.36595623631853,8.196051793927062,65.24914017226915,42.28539321936699,206.10314812122587,-109.43221584453876,-109.26740577843286,1171.8258105148195,1841.1630655848473,-11272.40087069649] }},right_eye_filter={real:[1.8229079259010603,.09781049864858246,-.5584009213724859,-.9997046284235658,.18757876559092043,-.8161769486311446,-.17457078018685562,.1382218261307309,-.13830885288846723,.14088352498892928,-.11242245121823281,.6419014453075046,-.18081689212517704,.8475744542340304,-2.0367692338977426,2.3450651085370726,-3.222777163962479,2.3450651085369945,-2.03676923389771,.8475744542340385,-.18081689212518082,.6419014453075054,-.11242245121823641,.1408835249889417,-.13830885288846723,.13822182613073003,-.17457078018684977,-.8161769486311367,.18757876559091927,-.9997046284235627,-.5584009213724851,.09781049864858132,-1.0960340088024074,-1.91191994525123,-2.409570266538848,-.5516235280495324,-.5050532801402159,-1.3068505835636635,-.4943718744397559,.23127204626685588,.0433507943550392,-.07178740615443681,.07085444983720594,.17221102955705567,.44602122877614064,.0741482055919004,-.015611524439393865,-.7989672475729291,-.6715596106043705,-.49375784053273253,.028167647498424205,-.3191891366103583,.5358217017440822,.20183473326047152,.12710467168208503,-.0714002635141921,.07456060444801779,-.12451483496807111,.051358135035693774,-.7728239811338444,-.42160647485916963,-1.1311602269894514,-1.4625324828122208,.3337871926813808,-1.77011609742092,-1.4302518240108344,-3.0428213499062116,-.6063122548783355,-.13683987631719793,-2.369242408538352,-.34105804260324346,-.2596965785205799,.2361043379661986,-.2768516857968317,.16986402710259335,.073612585805397,.5770491101708912,-.059867579479423505,.5168021952817504,-1.0666730319382505,-.005655209467068683,-.7580993906074581,-.06470132025004456,-.19832318162238824,.37732986906226257,.20777584924550152,.15451076629740465,-.013991851319401968,.13841341497021592,-.08688394903692853,.2526142361971455,-1.199138513843388,-1.9867837341406693,-2.275962773839737,-3.1079150257531585,-2.3995834975192567,-2.293769234372572,-2.1872173045799017,-1.3988308931230504,-2.207395781381544,-1.9667941627002865,-1.6748432066635108,-.9265077203256434,-.0541972372500527,-.18026213329416008,-.15232124758200827,-.016555865669302033,.31289505893870784,.4280654296827472,.23124350286854853,-.08736638276460744,-.12552132795947232,-.12547908619418155,-.38089709050886683,-.2844407665876804,-.11944152964360766,.12056136689031131,.21189843131890268,.1658159847015422,.13376820638890077,.22205496825803592,.15120100371874812,.12380717441381156,-1.235259678432226,-2.222275911684921,-3.378285680998969,-3.415076124219421,-2.7282977589825297,-1.5576789730825455,-1.6478932560447972,-2.067907968457094,-2.004290735457912,-2.6427456963680775,-1.930947467983862,-.16864865516592528,-.22642518078963322,-.13321306237600422,-.20692971953006373,-.068344938706069,.14493915164047724,.4650583247482101,.32789481378377733,.1852927254910838,-.1356638873386786,-.03585192275390197,-.17203834043005656,-.15954900238018477,-.05958171313143122,-.017228379259871054,.12402459410135006,.1524538089963059,.1627194606370896,.24817234249560427,.26053579199245763,-.04769125558408293,-.8145999303179203,-2.074066074419681,-3.154489159895426,-2.9212825837849565,-2.40774190894317,-1.6411629435379833,-1.576697627349694,-1.8007661961299257,-2.0001525985045707,-1.5107274159689619,-1.2839600483166405,-.631967111188135,.3107157406422172,-.21370915949408273,-.16393119308951343,-.0974817040158397,.13767875532837173,.23695911940697742,.3615877419673283,-.0006696253821662316,-.1026502520704758,-.18176695609293456,-.059120611570986824,-.13702193484548986,-.00735380131579763,.020281061259494877,.1503250145998206,.16876214929227357,.18780650312631536,.16308782299108887,.18583847563977354,.4490729609236465,-.020800703185301726,-1.4297091333258476,-2.4259185480628145,-2.4053777736536626,-1.982130703567588,-1.3372642957080885,-1.2989780551182537,-1.3731553217305845,-1.2269479805895975,-1.2032897772528626,-.22206046284030648,-.1841554828910981,-.23415549346578352,.07793632568988745,-.21633114300736572,-.05944972221175794,.013318329293146938,.2877543730088398,.21963323601338633,.16649953505637383,-.18974789333555656,-.1737958013223644,-.23416130311702454,-.13478379984035538,-.13112027137758978,.033522350558872455,.13259733500476653,.171380750952115,.15737574769334917,.09247716245660553,.13448891283084696,.4116145942481744,.35609170613712005,-.5531644985020381,-1.540851379466907,-1.8005308506197801,-1.5719273509294158,-.9404057795331605,-.8389941648002093,-.7733641692859126,-.6656241101650995,-.4002640865408188,-.3675097145491356,.2414435659750552,-.0656771881779108,-.21341675767851534,-.041369287190265204,-.08740484292179958,.04460147122538273,.19583406251777175,.1830038441344799,.012219595757112435,-.034593273427629516,-.14926486203867156,-.036665364495836496,-.1306231554860259,-.08638162405193898,.0020423415177502173,.11239290885891448,.12781279786870536,.10954302373131516,.14996801038078228,.12965098836907352,.14324588543961356,.0567484033157079,-.07934259271000402,-.7714589827483544,-1.1705860882999304,-1.0754357146023004,-.5463269466436349,-.37732231762995055,-.29185933229148303,-.18245346577017127,-.15252816280103537,.00992307413149221,-.05334501261419268,.10643359538216246,-.06963530217299803,-.20853401810086858,.03871878333386132,.024793140061197767,.2221501854940542,.1909069391112047,.13458393481660855,-.1226120784542075,-.06040684690366743,-.08306038338398455,-.0169256864349541,-.03335293819594764,.0564744224029561,.04873056181166667,.09209822163153716,.13542751998114597,.15540921558269635,.10094403852684107,.050489672984821425,.08984099886151299,.018445471788018183,-.4428032483123847,-.6455947552354269,-.6412340959287646,-.2557177936173176,-.15489773108593363,-.10375533557574061,-.07401894727409025,-.07402176527738832,-.034956034554291714,.06533170031918539,-.07929977184739372,.03572542409731947,-.10252861876832269,-.22107962950770202,.20755848067860572,.23157078159613848,.34013467279608883,.23914223921471078,.04359196404412921,-.20186945117744784,.04172561648658725,-.038784831650455286,.07624815101935192,-.060276976551200255,-.0031358189183758184,.13054366560393055,.16122088670834137,.12129220423951546,.06462405927184613,.06315363352353807,.0368689547736123,.025599835220982206,-.17872521900892777,-.3757789408279771,-.33418602947194676,-.19087946198724595,-.09243055938719592,-.15843188266072916,-.1178716916883143,-.07983285707762743,-.0384556097211695,.015668866487966955,.005265676601997658,-.12562510603385343,-.024970842739258457,-.030574039563531708,-.21969881405226874,.5919138706078211,.39965780946904006,.2262476397429311,.07714378169383113,.07854251680850119,-.0038697706067326258,.21858339549378,.08387013381984681,-.1914992924369444,.05367331518054547,.22201073984886688,.16922848807595664,.12511007660405662,.09511163485538424,.0841953956240581,.010195208908487656,-.01658912331368151,-.07692269919160621,-.17023093289451025,-.26998035777525775,-.28189859430096476,-.32749231042729776,-.240474927671948,-.27714150491609907,-.16857870511456344,-.056310601502134704,.026291702225850644,-.028508101274427284,-.06630706179098649,-.27187198211633473,.06621925794626239,.32825613521942065,-.2130375838630078,1.1917438602108388,.2807025357241521,.23447144426975483,.1651152909709915,.40113579910945835,.017152293761210982,-.1450564820739392,.13833755803781553,.2361453534315919,.16033553043559276,.17442784770871,.17988585089228476,.143828955260344,.07132752932041192,.016244981011210025,-.013577696292888701,-.024045478766089354,-.11184718959298219,-.1466657480521107,.008087681789972736,-.16842937423863127,-.4354348937994489,-.2997528685170986,-.22753898297998879,-.06903603291657966,.014977564920406507,-.02042087790603848,-.13524198281736244,-.1573938044754166,-.3340126093430992,.46815371603113554,.9302172976832263,-.26733338229185055,1.4166629302294091,.6066447960893963,.3603810860087503,.4605515924213614,-.32071019427276837,.15916183580862947,.5514216292911032,.20419289205444074,.051921880744650394,.24679565757292954,.2706202610478356,.15590400545853877,.08185944105119965,-.04098023110727716,.019596242113331462,.09436442791977376,.06527851980277598,-.029838116901178446,.15435464918439099,-.03938665594416125,-.07779640601620462,-.28158476919608044,-.03311012802272485,.018548614200940845,.06704610765103773,-.0442452017815352,-.1525534131110006,-.22929077462390082,-.08530271071238826,-.04930239368333223,.8574436846312782,1.8448220136861364,-.6874455683197501,1.810880881855317,.6623703970370957,-.31567909429421087,.8323221790747578,.9786336592299799,.30994126117364096,-.041163173314528664,.17633262873947353,.23161854928102976,.2508770436670255,.19868696729956423,.09356988769444988,.03236232444292232,-.002750766613633768,.21821986304703905,.37880734420129814,.40096920495374666,.9356115419306689,.6132603995532996,.1638528799494483,.1009541629695858,.05660159184623324,.15561323638878471,.07300029281297159,-.005544245314691569,-.13817032242271102,-.11770539535407684,-.09624545727844742,.4644289412509608,.45587938373772585,1.3432089992982477,2.5059762271849535,-.9382969763987489,.6492144586928863,.7978253203448007,1.3025551528258366,.9417497410073223,.0999214696597348,.2871278626692066,.1585368007924338,.130717335778855,.17042917695126153,.1998644332453962,.13725228360851915,.029723534135295476,.09814363533870286,.19047751491127032,.4933533797343521,.7808930441209985,.2968658742882804,.38131881367791126,.4064367365251492,.19053499830856688,.20033550195294633,.13287714582076576,.10533560171090586,.0008548789781538824,-.04943529640626747,-.08130941155497949,.05794771671040313,.48207744089263116,1.2538880645112733,1.2204758332556214,.8779386387662574,1.8796293205435075,-.45285576127696725,2.2308682152547137,1.2382711063757557,-.03520793699594507,.8817567227830668,.5591603196165794,.18718127547628777,.01176467325227445,.06874700659527258,.13522321325294812,.17151312046437606,.10315365060575944,-.0011239413451798732,.14993420590829387,.3895911022808224,.3884586226441047,.6971673018273219,.5180206439350141,.2883776700148891,.10583936790249669,.0710166156702107,.16001776032454934,.10715662619027419,.05618871675953212,-.03582584015504452,.006146991796811139,.08949387784356472,.68387295014826,1.1016519558168656,1.3182383587355595,.6663538204015352,.5486367363209722,4.054777023104894,.5486367363209715,.6663538204015342,1.3182383587355562,1.101651955816866,.6838729501482614,.08949387784356506,.006146991796810629,-.03582584015504452,.05618871675953043,.10715662619027334,.16001776032454856,.07101661567021002,.10583936790249539,.2883776700148883,.5180206439350135,.2968658742883096,.388458622644122,.38959110228084654,.14993420590831108,-.001123941345177488,.10315365060576374,.17151312046437922,.13522321325295103,.06874700659527355,.011764673252275867,.18718127547628682,.5591603196165779,.881756722783062,-.035207936995944634,1.2382711063757532,2.2308682152547106,-.45285576127696175,1.8796293205435037,.8779386387662579,1.2204758332556218,1.2538880645112747,.4820774408926327,.05794771671040518,-.08130941155497955,-.04943529640626837,.0008548789781495917,.10533560171090255,.132877145820761,.20033550195294705,.19053499830855697,.40643673652513423,.38131881367792647,.9356115419306881,.7808930441210271,.49335337973436416,.1904775149112758,.0981436353387047,.029723534135297252,.13725228360851988,.19986443324539666,.17042917695126267,.13071733577885625,.15853680079243432,.28712786266920415,.09992146965973223,.9417497410073171,1.3025551528258328,.7978253203448017,.6492144586928862,-.9382969763987445,2.505976227184955,1.3432089992982421,.45587938373772335,.46442894125096235,-.09624545727844717,-.11770539535407766,-.13817032242271216,-.005544245314694519,.07300029281296944,.1556132363887834,.05660159184623321,.10095416296958591,.16385287994945555,.613260399553306,.15435464918440814,.40096920495376004,.37880734420131523,.218219863047049,-.0027507666136306606,.03236232444292454,.09356988769444934,.19868696729956342,.2508770436670255,.2316185492810306,.17633262873947425,-.041163173314526666,.30994126117363635,.9786336592299767,.8323221790747578,-.3156790942942159,.662370397037097,1.810880881855315,-.6874455683197483,1.8448220136861369,.8574436846312773,-.0493023936833296,-.08530271071238829,-.2292907746239018,-.15255341311100187,-.04424520178153933,.0670461076510356,.018548614200940294,-.03311012802272051,-.2815847691960758,-.07779640601620005,-.039386655944146774,.008087681789976134,-.02983811690117316,.0652785198027806,.09436442791977824,.019596242113334855,-.04098023110727665,.08185944105119855,.15590400545853553,.2706202610478356,.24679565757292907,.05192188074465168,.20419289205443947,.5514216292910992,.15916183580862936,-.3207101942727711,.46055159242136157,.36038108600874996,.606644796089398,1.416662930229405,-.2673333822918505,.9302172976832263,.4681537160311345,-.3340126093430979,-.1573938044754171,-.13524198281736302,-.02042087790604074,.014977564920405115,-.06903603291657855,-.2275389829799863,-.29975286851709465,-.4354348937994427,-.16842937423862725,-.28189859430095965,-.1466657480521052,-.1118471895929717,-.024045478766081197,-.01357769629288397,.01624498101121273,.07132752932040962,.14382895526034015,.1798858508922834,.17442784770871067,.16033553043559218,.23614535343159299,.13833755803781575,-.14505648207394348,.01715229376121234,.40113579910946,.16511529097099317,.23447144426975502,.2807025357241538,1.1917438602108381,-.21303758386300692,.3282561352194251,.06621925794626213,-.2718719821163353,-.06630706179098739,-.028508101274429792,.026291702225849072,-.056310601502134,-.1685787051145608,-.27714150491609657,-.24047492767194564,-.3274923104272947,-.19087946198724157,-.2699803577752515,-.17023093289450597,-.07692269919160243,-.016589123313677224,.01019520890848913,.08419539562405712,.09511163485538146,.12511007660405613,.1692284880759545,.22201073984886613,.053673315180547035,-.19149929243694658,.08387013381984704,.21858339549377928,-.0038697706067313737,.0785425168085006,.07714378169383322,.2262476397429297,.3996578094690411,.5919138706078217,-.21969881405226852,-.0305740395635305,-.024970842739259945,-.1256251060338537,.005265676601996701,.015668866487966397,-.038455609721168606,-.07983285707762636,-.11787169168831266,-.15843188266072725,-.09243055938719412,-.25571779361731145,-.33418602947193976,-.3757789408279684,-.17872521900892277,.025599835220983438,.0368689547736149,.0631536335235363,.06462405927184454,.12129220423951372,.1612208867083402,.1305436656039314,-.003135818918377517,-.060276976551199596,.07624815101935135,-.03878483165045592,.04172561648658526,-.20186945117744698,.043591964044126186,.23914223921470992,.3401346727960877,.23157078159613964,.20755848067860685,-.22107962950770196,-.1025286187683216,.03572542409731814,-.07929977184739355,.06533170031918509,-.034956034554288036,-.07402176527738524,-.07401894727408691,-.10375533557573537,-.15489773108592672,-.5463269466436349,-.641234095928764,-.6455947552354269,-.44280324831238616,.018445471788017767,.08984099886151031,.05048967298482026,.10094403852683856,.15540921558269635,.13542751998114574,.09209822163153619,.04873056181166658,.056474422402955825,-.03335293819594981,-.01692568643495722,-.08306038338399054,-.06040684690366743,-.1226120784542102,.13458393481660744,.19090693911120402,.22215018549405383,.02479314006119874,.038718783333861403,-.20853401810086775,-.06963530217299803,.1064335953821621,-.05334501261419192,.00992307413149367,-.15252816280103507,-.1824534657701707,-.291859332291483,-.3773223176299495,-.9404057795331534,-1.0754357146022915,-1.1705860882999222,-.7714589827483473,-.07934259271000449,.05674840331570382,.14324588543960787,.12965098836906794,.14996801038078103,.10954302373131049,.12781279786870486,.11239290885891398,.002042341517751725,-.08638162405194173,-.13062315548602732,-.03666536449584196,-.149264862038672,-.03459327342763485,.012219595757109143,.18300384413447635,.1958340625177715,.0446014712253844,-.08740484292179726,-.04136928719026287,-.21341675767851565,-.0656771881779069,.24144356597505726,-.36750971454912684,-.40026408654081164,-.6656241101650917,-.7733641692859056,-.8389941648002021,-1.3372642957080858,-1.5719273509294132,-1.8005308506197781,-1.5408513794669076,-.5531644985020383,.3560917061371113,.4116145942481696,.1344889128308404,.09247716245660478,.1573757476933456,.17138075095211283,.1325973350047658,.03352235055887238,-.13112027137759125,-.13478379984035713,-.23416130311702804,-.1737958013223642,-.18974789333555622,.16649953505637016,.21963323601338522,.28775437300883855,.013318329293152468,-.05944972221175441,-.21633114300735917,.07793632568988698,-.2341554934657765,-.18415548289109335,-.2220604628402971,-1.203289777252857,-1.2269479805895944,-1.3731553217305832,-1.2989780551182524,-1.64116294353798,-1.9821307035675826,-2.4053777736536572,-2.4259185480628087,-1.4297091333258454,-.020800703185307738,.44907296092364196,.1858384756397643,.16308782299108818,.18780650312631128,.1687621492922723,.15032501459981898,.020281061259495404,-.007353801315796421,-.13702193484548603,-.059120611570979247,-.18176695609293375,-.10265025207047287,-.0006696253821684415,.3615877419673271,.2369591194069768,.13767875532837892,-.09748170401583293,-.1639311930895031,-.2137091594940832,.3107157406422304,-.6319671111881267,-1.283960048316625,-1.5107274159689543,-2.0001525985045667,-1.800766196129921,-1.5766976273496909,-1.557678973082544,-2.4077419089431698,-2.921282583784955,-3.1544891598954266,-2.074066074419682,-.8145999303179303,-.04769125558408684,.26053579199245114,.24817234249560396,.16271946063708537,.1524538089963024,.12402459410134949,-.017228379259870755,-.05958171313142866,-.15954900238017725,-.17203834043004781,-.03585192275390215,-.13566388733867182,.1852927254910774,.32789481378377766,.4650583247482103,.14493915164048596,-.06834493870606016,-.20692971953005135,-.13321306237600447,-.22642518078961474,-.16864865516591712,-1.9309474679838514,-2.6427456963680735,-2.0042907354579094,-2.067907968457093,-1.6478932560447959,-2.2937692343725686,-2.7282977589825266,-3.4150761242194196,-3.378285680998969,-2.222275911684919,-1.2352596784322352,.12380717441380877,.15120100371873849,.22205496825803597,.13376820638889372,.16581598470153905,.21189843131890046,.1205613668903118,-.11944152964360859,-.2844407665876833,-.3808970905088692,-.1254790861941803,-.12552132795948226,-.08736638276460633,.2312435028685467,.42806542968274885,.31289505893871633,-.016555865669298363,-.15232124758199445,-.18026213329416074,-.054197237250036744,-.9265077203256314,-1.6748432066634964,-1.966794162700286,-2.2073957813815404,-1.3988308931230464,-2.187217304579897,-1.7701160974209202,-2.3995834975192563,-3.1079150257531603,-2.2759627738397428,-1.9867837341406698,-1.1991385138433992,.25261423619714135,-.08688394903694385,.13841341497021575,-.013991851319408978,.15451076629740176,.20777584924549833,.37732986906226257,-.1983231816223982,-.06470132025005006,-.7580993906075129,-.005655209467068792,-1.0666730319382445,.5168021952817432,-.05986757947942188,.5770491101708914,.07361258580540825,.16986402710259826,-.27685168579682035,.23610433796619823,-.25969657852055217,-.3410580426032341,-2.3692424085383355,-.13683987631719494,-.6063122548783239,-3.0428213499062093,-1.4302518240108333,-1.0960340088024054,.33378719268138207,-1.462532482812221,-1.1311602269894572,-.42160647485916913,-.7728239811338516,.051358135035689895,-.12451483496808054,.07456060444801794,-.0714002635141984,.12710467168208478,.20183473326046905,.5358217017440833,-.3191891366103783,.028167647498415164,-.4937578405327754,-.671559610604369,-.7989672475729755,-.01561152443937639,.07414820559189893,.44602122877613765,.17221102955705844,.07085444983721219,-.07178740615442418,.04335079435503895,.23127204626685866,-.49437187443974595,-1.3068505835636535,-.5050532801402167,-.5516235280495194,-2.409570266538846,-1.9119199452512292],bottom:{real:[4046.4241509904555,28839.973879370627,10191.512031448321,4381.745580729326,2071.954841391502,1107.282586745483,528.3455155315031,308.973302997304,185.81061014820492,130.08108126519062,87.65365496956511,59.09553675383809,43.5062694558484,34.57522231168169,30.79809745290528,25.523061346781674,25.951646714603154,25.52306134678159,30.79809745290521,34.575222311681706,43.50626945584836,59.09553675383802,87.65365496956517,130.08108126519082,185.81061014820492,308.9733029973038,528.3455155315033,1107.2825867454833,2071.954841391503,4381.745580729332,10191.512031448323,28839.973879370646,13493.224333003216,16392.51995145616,4871.835388507577,1571.3337493887716,567.6409664515353,373.6703632325283,244.24660034041102,142.79597933554817,106.13580676907658,75.85834762271053,58.06132256419008,39.85453847302155,30.569538051408923,25.094853941398878,22.929757321982656,20.808198660555963,22.04888812794956,23.622937534136554,29.13868315116802,38.08298107447914,54.39934218587819,77.82662149201184,121.61239162949131,177.63416429867098,254.30481783551838,430.47940336338183,664.6352580903059,1219.8477670929726,1935.5749815900854,3358.0980991141623,6069.217591691605,8660.703929170162,15384.540019848313,11175.737303494303,2216.879483433469,674.5985908630485,308.5763093759745,222.13525013253278,144.62539946693838,89.35178904734964,66.20028378403181,53.5880480094322,38.10483512466045,27.11271894406526,23.0333116325101,19.85886354561889,19.408029208714364,19.38215160767772,20.87171121755368,24.726583224259915,29.429525390428484,39.688247321389746,54.02667736866649,71.50918951653236,109.7023701375058,145.30501493896827,183.8476594317636,237.38092500065588,353.51632607639505,531.2703272946572,719.1706536370991,1367.9024800373177,2857.732229334478,8625.014975132006,3926.861100346452,2444.3527388912776,1028.8359899085383,585.5616655429562,332.57137935864864,180.13762334769046,105.17011934648103,61.496465220623485,45.504823244138095,37.90846017249317,30.846794326525625,21.222093075405745,18.718288087401802,17.679602313216872,17.409839934721365,17.794391783727544,18.55926931620083,21.34840958130715,24.39997962145603,30.767061622228063,38.103008129659166,44.81251118779231,61.577721983396955,87.29148588450872,106.99539363556599,134.18057082099898,169.37440787587974,269.99443977661724,364.5624879914471,674.5083954608231,1521.022929703357,2634.7343778883865,2024.849011267275,1926.8239401023498,1491.9478410044117,611.8362791883309,316.43682665588744,155.99683828976544,89.67337986475002,50.013293885425135,37.52800970717606,32.4518569290627,24.96614670350918,19.130394004010906,15.343856356149828,14.843145659919786,14.861292517540363,15.036681247518919,15.312687438440403,17.138709070816013,19.446116741695533,22.850207518010233,27.457440287528367,32.58150530830809,40.985078317877736,54.412823137373685,75.7624376442659,94.73305934658734,128.1467358253355,182.29010502256293,275.9549807303486,527.3269557849401,1132.5867520786235,1866.4077869841046,2266.7457843108455,2107.849516989544,1234.6592459623437,673.7095428348114,266.6693703142779,139.47307538222793,66.73073111331448,41.917980917088734,31.2590211502941,26.786032891522527,20.35627716260823,16.038244917569745,14.499148814332527,13.459360575928033,13.144389071570192,12.567429683418663,12.230328765246885,13.466217665828195,15.328301760046475,17.144679989146308,19.68756841312236,24.07413404470534,32.72703461228699,43.026808431859955,59.19377390623037,78.82051256303095,92.99417854470647,120.42091176843755,201.9182636225097,436.44287859172925,877.8862778005057,1439.6385876846614,1649.991139346905,1699.4038415062987,1039.2560892520887,495.5166152968933,235.81544665938515,113.58561083280532,60.921551746622946,35.725757089786256,25.024628727892466,22.490208420088727,17.75982379192019,13.543616943986416,12.938917306264663,11.956364952724385,11.421939705679733,11.372903592178258,11.032765269291394,11.408229662647633,12.481114469594095,13.60275540468532,14.91952183557448,17.807798659576154,23.277252196336814,31.950664619854233,47.416694920263616,56.268912844615144,64.959626427587,85.07080953900385,130.82046704446515,257.6757193526242,627.4672126329166,1194.1693767483914,1080.1900960853154,902.674413704009,600.0405579473822,333.23520458042,166.5653831933532,88.94630554757107,50.71739323274513,31.897215329939996,23.060146944216118,18.57978056254417,15.572760511446054,13.273777678692191,12.224913053368416,11.68638594982613,10.392044527527784,10.422646713468026,10.113778554702394,10.225072497047023,10.776357928238541,11.471833692521193,12.585855785544721,15.131216045563061,18.856673404562432,24.858220592568422,32.65728080220338,43.03798769624031,51.536289299313914,59.08796022590117,89.41884663641925,168.4478105078281,382.14409608709747,745.2779764237599,544.9352379585605,546.6325594355021,362.69938393816085,222.4530875664997,124.7835476428534,69.15551045543614,41.705006957506896,26.952419331651356,19.77855541151112,17.743475715717917,14.471795156401063,12.765457059373892,11.899864411981882,10.85818004844373,10.325708895539952,9.569271974525638,9.211348082086339,9.068032997029013,9.773443256037565,10.488284402310196,11.32319714067481,13.23504887223821,16.674941080314653,20.771526297093455,27.56941781857049,33.10306848160457,37.13160941522371,47.9647604307364,66.57881750760357,119.94841754808802,237.18123750436465,409.50889944188236,307.01018353832677,288.6676029163843,236.16368190120858,154.32114106589464,92.30377324569548,55.468009578938926,35.843010431224045,24.692475316947775,18.31794202383119,15.815283825259236,13.970653175227845,12.321358605090134,11.166914874614415,10.532076178141539,9.973858270077274,9.439553232293433,8.852477993151703,8.596032516390286,8.723315099425728,9.460546505870271,10.702831587760128,11.695932356823622,14.406509159208545,18.893042693096525,25.031728162044864,28.237283751764654,32.11015444012318,38.78178298956029,56.41249717617234,92.1569459348398,157.10935603874077,244.2492508143064,218.20881258539546,216.90433976724358,169.13695858014356,112.62100758585845,68.70530790516959,45.982361360241526,32.725373555898344,22.221572369125827,17.135020014783734,14.281960328360523,12.699315839076576,11.637118060780567,11.004832210877884,10.393382355075936,9.625960216653379,8.765201384599987,8.56501202823621,8.585447651774187,8.185151868753188,9.127087262857684,9.83839770401408,11.693775785132257,13.287947209975439,16.544820171465705,21.672488061489553,27.762087103200397,29.796933806391767,35.44318849026896,51.826480475596476,76.69213661877438,114.45554660359461,172.81330831382385,150.57608076172548,151.07347077509746,119.80060075739978,84.30708089677061,55.59442395215062,38.954469932130465,27.855857296119165,21.147383956632677,16.095362427853317,14.114901096214023,12.272097096384341,11.279235865220194,10.45557624282722,10.21340372397941,9.435254000412767,9.059591562681522,8.428576772270588,8.218967691673965,8.248320783896837,8.727213385180734,9.38534177467142,10.436988631508529,11.737372360714012,14.160123000210135,18.9595792421897,24.173697545434358,27.627516713161423,33.591531685669004,45.29743998493664,65.89753949730466,88.61094452128638,122.51594786973793,102.9717174324289,99.77114417163114,80.2546364501959,61.009511746666256,44.78691291380718,34.27102450032318,25.65851527359349,19.184194785168692,15.369946764821139,13.384363033613122,12.174478369218367,10.905903566261369,10.181651684644681,9.640875595253302,9.574230453297359,8.97633087224121,8.549303268806982,8.064448476431524,8.427686598834292,8.72909633979811,9.121092688430965,10.045472592156113,11.11042960636143,12.723025686618605,15.905816263070196,20.70949104573221,24.791931496783274,30.865414152401307,41.83571418562319,55.039237230593706,69.94725096238655,86.30565695416685,70.24607741665449,70.16319096773124,60.94158545735483,46.98868155158853,37.426824229947464,31.10511465478153,24.71795750943227,18.191253220796238,14.40571246916225,12.794837539520243,11.45286867499644,10.555233980671725,10.138595490186225,9.761793932644013,9.29451140670217,9.19785195708974,8.526970468266507,8.369498694773359,8.390085060120985,8.901978011001628,9.499322405169718,10.189344774081897,11.038776504531349,12.139382952337165,14.296273465828305,18.325479810549485,23.245126565071455,28.658675517780157,38.227879918404916,50.026933715114076,59.913478880080035,67.14288472835021,60.67320096274469,56.006191670589025,48.95238380733793,41.87728990082497,35.56375265114289,29.381802508508265,23.323351055229473,18.385352146785323,14.386074460433269,11.971768024825069,10.813949701229296,10.104265892334448,9.787383736052597,9.787645018242003,9.37365706088819,9.106783751430337,8.878274256847538,8.410860465515668,8.514529191196903,9.144463863378933,9.590368756917496,10.050972673200409,10.599176866339214,12.029252308933458,13.885440808202775,16.9338405396521,20.94976745380013,27.39267044577291,35.24694581160402,44.844494652773115,53.52792012053346,59.51190645761453,53.048047546158344,49.66790259120493,45.161821768091436,39.040569237963304,34.15349837076654,28.812200326236947,21.915204963295363,16.82529154292102,14.19448100676546,11.707465544074312,10.438485210613589,9.815124564873926,9.283134914271356,9.082142057825001,9.047050535951438,9.09240899822194,8.846694431391352,8.473593906264338,8.498070251525021,9.011344572210785,9.28987103872928,9.957567886683233,10.426127211956205,11.223822839806607,13.77325124182781,16.688691177663944,20.746301629724744,26.320191080313084,33.9798684365786,42.0788988747152,48.313306819757166,52.481937610238305,49.070609767594966,49.766679020971374,46.54427285231858,40.229040805773415,32.55983963778149,26.180018982316895,21.083604085221012,16.97356072267355,13.301411970448795,11.264067238060504,10.255581922596939,9.653621368211203,9.215377406296422,8.746811076118282,8.435654271837505,8.73238467436222,8.845859907838124,8.73238467436222,8.435654271837503,8.74681107611829,9.215377406296428,9.653621368211212,10.255581922596944,11.264067238060512,13.301411970448795,16.973560722673543,21.08360408522101,26.18001898231688,32.559839637781494,40.22904080577338,46.54427285231857,49.76667902097133,53.048047546158344,52.4819376102382,48.31330681975705,42.0788988747152,33.97986843657858,26.320191080313087,20.746301629724748,16.68869117766396,13.773251241827822,11.22382283980661,10.426127211956201,9.957567886683226,9.289871038729279,9.011344572210792,8.498070251525027,8.473593906264336,8.84669443139135,9.092408998221947,9.04705053595144,9.082142057825006,9.283134914271354,9.815124564873928,10.438485210613582,11.707465544074319,14.19448100676546,16.825291542921,21.915204963295366,28.81220032623694,34.15349837076655,39.04056923796328,45.16182176809137,49.667902591205,60.67320096274468,59.51190645761457,53.5279201205334,44.84449465277307,35.24694581160401,27.392670445772925,20.949767453800135,16.933840539652095,13.88544080820277,12.029252308933453,10.599176866339214,10.0509726732004,9.590368756917488,9.144463863378933,8.51452919119691,8.410860465515672,8.878274256847535,9.106783751430338,9.373657060888185,9.787645018242001,9.787383736052602,10.10426589233446,10.813949701229305,11.971768024825074,14.386074460433273,18.385352146785333,23.323351055229466,29.38180250850825,35.56375265114288,41.87728990082496,48.952383807337874,56.00619167058891,70.24607741665429,67.14288472835011,59.913478880079964,50.02693371511406,38.22787991840492,28.65867551778019,23.24512656507147,18.325479810549478,14.296273465828305,12.139382952337156,11.038776504531354,10.189344774081897,9.499322405169723,8.901978011001633,8.390085060120985,8.369498694773357,8.526970468266507,9.197851957089739,9.294511406702163,9.761793932644014,10.138595490186225,10.555233980671725,11.452868674996441,12.794837539520238,14.405712469162248,18.19125322079625,24.717957509432264,31.105114654781534,37.42682422994745,46.98868155158849,60.941585457354776,70.16319096773115,102.97171743242879,86.3056569541668,69.94725096238649,55.039237230593784,41.83571418562317,30.865414152401325,24.791931496783278,20.709491045732214,15.905816263070196,12.723025686618604,11.110429606361421,10.045472592156107,9.121092688430974,8.729096339798112,8.427686598834294,8.064448476431526,8.549303268806982,8.976330872241213,9.574230453297362,9.640875595253306,10.181651684644681,10.905903566261369,12.174478369218367,13.384363033613125,15.369946764821144,19.18419478516869,25.658515273593498,34.27102450032314,44.78691291380715,61.00951174666618,80.25463645019579,99.77114417163101,150.57608076172505,122.51594786973776,88.61094452128623,65.89753949730463,45.297439984936574,33.591531685669025,27.627516713161402,24.173697545434354,18.9595792421897,14.160123000210131,11.737372360714007,10.436988631508525,9.385341774671417,8.727213385180733,8.248320783896826,8.218967691673969,8.42857677227059,9.05959156268152,9.435254000412765,10.213403723979411,10.455576242827226,11.27923586522019,12.272097096384336,14.114901096214016,16.09536242785333,21.1473839566327,27.85585729611916,38.95446993213041,55.594423952150585,84.30708089677043,119.80060075739968,151.0734707750972,218.20881258539524,172.81330831382382,114.45554660359451,76.69213661877443,51.82648047559643,35.44318849026896,29.796933806391745,27.762087103200372,21.67248806148955,16.544820171465698,13.287947209975444,11.693775785132251,9.838397704014087,9.127087262857684,8.18515186875319,8.58544765177418,8.565012028236207,8.765201384599994,9.625960216653379,10.393382355075921,11.004832210877884,11.637118060780562,12.699315839076572,14.281960328360505,17.13502001478374,22.221572369125806,32.72537355589832,45.98236136024148,68.70530790516956,112.62100758585837,169.13695858014344,216.90433976724287,307.01018353832563,244.24925081430612,157.1093560387404,92.15694593483975,56.412497176172316,38.7817829895603,32.11015444012317,28.237283751764654,25.031728162044857,18.893042693096504,14.406509159208543,11.695932356823613,10.702831587760132,9.460546505870267,8.72331509942572,8.596032516390284,8.852477993151705,9.439553232293427,9.973858270077281,10.53207617814155,11.166914874614413,12.321358605090143,13.970653175227838,15.815283825259229,18.317942023831186,24.692475316947778,35.84301043122402,55.46800957893881,92.30377324569537,154.32114106589427,236.1636819012079,288.66760291638354,544.9352379585605,409.5088994418828,237.18123750436465,119.9484175480882,66.57881750760357,47.964760430736455,37.13160941522369,33.10306848160456,27.56941781857049,20.771526297093434,16.674941080314646,13.235048872238199,11.323197140674804,10.488284402310184,9.773443256037565,9.068032997029011,9.211348082086339,9.569271974525646,10.325708895539957,10.85818004844373,11.899864411981884,12.765457059373892,14.471795156401072,17.743475715717903,19.77855541151112,26.952419331651342,41.70500695750688,69.15551045543599,124.7835476428534,222.45308756649936,362.6993839381608,546.6325594355021,1080.190096085312,745.2779764237579,382.1440960870959,168.44781050782805,89.41884663641922,59.087960225901135,51.53628929931389,43.03798769624031,32.657280802203374,24.858220592568383,18.8566734045624,15.131216045563052,12.585855785544725,11.471833692521184,10.776357928238532,10.22507249704702,10.113778554702403,10.422646713468026,10.39204452752778,11.686385949826136,12.224913053368411,13.273777678692191,15.572760511446033,18.57978056254414,23.06014694421612,31.897215329939918,50.717393232745025,88.94630554757079,166.56538319335294,333.23520458041884,600.0405579473809,902.6744137040065,1649.9911393469013,1194.1693767483896,627.4672126329157,257.67571935262464,130.82046704446515,85.0708095390039,64.95962642758694,56.2689128446152,47.416694920263595,31.950664619854226,23.277252196336782,17.807798659576147,14.919521835574468,13.60275540468532,12.48111446959408,11.408229662647638,11.032765269291394,11.37290359217827,11.42193970567975,11.956364952724407,12.938917306264656,13.543616943986398,17.75982379192014,22.490208420088635,25.024628727892473,35.72575708978623,60.92155174662291,113.58561083280503,235.81544665938503,495.516615296892,1039.2560892520876,1699.403841506296,2266.7457843108423,1439.6385876846614,877.8862778005042,436.4428785917297,201.91826362250967,120.42091176843758,92.99417854470644,78.82051256303102,59.19377390623031,43.02680843185989,32.72703461228695,24.074134044705318,19.68756841312234,17.1446799891463,15.32830176004647,13.466217665828177,12.230328765246888,12.567429683418707,13.144389071570203,13.459360575928054,14.499148814332536,16.03824491756973,20.356277162608194,26.786032891522385,31.259021150294068,41.91798091708869,66.7307311133144,139.47307538222745,266.6693703142776,673.7095428348102,1234.659245962343,2107.8495169895405,2024.849011267276,1866.4077869841062,1132.5867520786235,527.3269557849405,275.9549807303485,182.29010502256293,128.14673582533564,94.7330593465875,75.76243764426589,54.41282313737368,40.98507831787773,32.58150530830807,27.457440287528364,22.85020751801021,19.446116741695526,17.13870907081601,15.312687438440404,15.036681247518965,14.861292517540395,14.843145659919811,15.343856356149836,19.130394004010878,24.966146703509185,32.45185692906261,37.528009707176075,50.013293885425036,89.67337986474986,155.9968382897651,316.4368266558874,611.8362791883301,1491.9478410044112,1926.8239401023493,3926.8611003464503,2634.734377888386,1521.0229297033557,674.508395460824,364.56248799144686,269.9944397766174,169.37440787587963,134.18057082099915,106.99539363556599,87.2914858845087,61.577721983396906,44.81251118779232,38.103008129659166,30.767061622228066,24.399979621456033,21.348409581307155,18.55926931620083,17.794391783727576,17.409839934721397,17.67960231321689,18.71828808740179,21.222093075405763,30.846794326525586,37.90846017249308,45.504823244138095,61.496465220623335,105.17011934648093,180.13762334768973,332.5713793586485,585.5616655429553,1028.835989908537,2444.352738891274,15384.54001984831,8625.01497513201,2857.732229334476,1367.90248003732,719.1706536370989,531.2703272946578,353.516326076395,237.38092500065625,183.84765943176362,145.3050149389683,109.70237013750581,71.50918951653222,54.02667736866647,39.68824732138969,29.429525390428473,24.726583224260004,20.871711217553678,19.38215160767773,19.408029208714364,19.85886354561895,23.033311632510113,27.11271894406525,38.10483512466044,53.58804800943198,66.20028378403181,89.35178904734937,144.6253994669383,222.13525013253218,308.5763093759745,674.5985908630483,2216.8794834334685,11175.737303494294,13493.224333003214,8660.703929170164,6069.217591691604,3358.098099114159,1935.5749815900851,1219.8477670929722,664.635258090306,430.47940336338263,254.30481783551838,177.63416429867087,121.61239162949126,77.82662149201184,54.399342185878204,38.082981074479164,29.138683151168006,23.622937534136597,22.04888812794956,20.80819866055599,22.92975732198266,25.094853941398917,30.56953805140891,39.85453847302151,58.06132256419004,75.85834762271038,106.13580676907651,142.795979335548,244.246600340411,373.6703632325282,567.6409664515357,1571.3337493887695,4871.835388507573,16392.519951456165], diff --git a/js/clm.js b/js/clm.js index 0e2c6741..67677856 100644 --- a/js/clm.js +++ b/js/clm.js @@ -1136,11 +1136,11 @@ var clm = { //this.draw(document.getElementById('overlay'), currentParameters); } else { - scaling = candidate.width/modelheight; + scaling = candidate.width/msmodelheight; //var ccc = document.getElementById('overlay').getContext('2d'); //ccc.strokeRect(candidate.x,candidate.y,candidate.width,candidate.height); - translateX = candidate.x-(xmin*scaling)+0.1*candidate.width; - translateY = candidate.y-(ymin*scaling)+0.25*candidate.height; + translateX = candidate.x-(msxmin*scaling)+0.1*candidate.width; + translateY = candidate.y-(msymin*scaling)+0.25*candidate.height; currentParameters[0] = scaling-1; currentParameters[2] = translateX; currentParameters[3] = translateY;