forked from kig/JSARToolKit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJSARToolKit.min.js
More file actions
1 lines (1 loc) · 157 KB
/
JSARToolKit.min.js
File metadata and controls
1 lines (1 loc) · 157 KB
1
if(!window.console){console={log:function(){}}}ASVector=function(a){a=a||0;if(a.length){this.length=a.length;for(var b=0;b<a.length;b++){this[b]=a[b]}}else{this.length=a;for(var b=0;b<a;b++){this[b]=0}}};ASVector.prototype={};ASVector.prototype.set=function(a,b){if(a.length){ASVector.call(this,a)}else{this[a]=b}};if(typeof Float32Array=="undefined"){FloatVector=ASVector;IntVector=ASVector;UintVector=ASVector}else{FloatVector=Float32Array;IntVector=Int32Array;UintVector=Uint32Array}toInt=Math.floor;Object.extend=function(d,c){for(var a in c){try{d[a]=c[a]}catch(b){}}return d};toArray=function(d){var b=new Array(d.length);for(var c=0;c<d.length;c++){b[c]=d[c]}return b};Klass=(function(){var e=function(){if(this.initialize){this.initialize.apply(this,arguments)}};e.ancestors=toArray(arguments);e.prototype={};for(var d=0;d<arguments.length;d++){var b=arguments[d];if(b.prototype){Object.extend(e.prototype,b.prototype)}else{Object.extend(e.prototype,b)}}Object.extend(e,e.prototype);return e});Object.asCopy=function(d){if(typeof d!="object"){return d}else{if(d instanceof FloatVector){var a=new FloatVector(d.length);for(var b=0;b<a.length;b++){a[b]=d[b]}return a}else{if(d instanceof IntVector){var a=new IntVector(d.length);for(var b=0;b<a.length;b++){a[b]=d[b]}return a}else{if(d instanceof UintVector){var a=new UintVector(d.length);for(var b=0;b<a.length;b++){a[b]=d[b]}return a}else{if(d instanceof Array){return d.map(Object.asCopy)}else{var c={};for(var b in d){var a=d[b];if(typeof a=="object"){a=Object.asCopy(a)}c[b]=a}return c}}}}}};ASKlass=(function(e){var g=function(){var c=this.__copyObjects__;for(var a=0;a<c.length;a++){this[c[a]]=Object.asCopy(this[c[a]])}if(this.initialize){this.initialize.apply(this,arguments)}};g.ancestors=toArray(arguments).slice(1);g.prototype={};for(var f=1;f<arguments.length;f++){var b=arguments[f];if(b.prototype){Object.extend(g.prototype,b.prototype)}else{Object.extend(g.prototype,b)}}g.prototype.className=e;g.prototype.initialize=g.prototype[e];g.prototype.__copyObjects__=[];for(var f in g.prototype){var d=g.prototype[f];if(f!="__copyObjects__"){if(typeof d=="object"){g.prototype.__copyObjects__.push(f)}}}Object.extend(g,g.prototype);return g});BitmapData=Klass({initialize:function(e,d,c,b){this.width=e;this.height=d;this.transparent=(c==null?true:c);this.fill=(b==null?4294967295:b);this.data=new UintVector(e*d);for(var a=0;a<this.data.length;a++){this.data[a]=b}this.rect=new Rectangle(0,0,this.width,this.height)},fillRect:function(g,m){var c=this.width;var i=Math.clamp(g.y,0,this.height)*c,f=Math.clamp(g.y+g.height,0,this.height)*c,l=Math.clamp(g.x,0,this.width),a=Math.clamp(g.x+g.width,0,this.width);var e=this.data;for(var k=i;k<f;k+=c){for(var b=l;b<a;b++){e[k+b]=m}}},getPixel32:function(a,b){return this.data[b*this.width+a]},setPixel32:function(a,c,b){return this.data[c*this.width+a]=b},getPixel:function(a,b){return this.data[b*this.width+a]&16777215},setPixel:function(a,c,b){return this.data[c*this.width+a]=b|(this.data[c*this.width+a]&4278190080)},getWidth:function(){return this.width},getHeight:function(){return this.height},copyPixels:function(r,a,e){var k=this.width;var q=r.width;var p=r.data;var i=this.data;var s=Math.clamp(e.y,0,this.height)*k,f=Math.clamp(e.y+a.height,0,this.height)*k,t=Math.clamp(e.x,0,this.width),u=Math.clamp(e.x+a.width,0,this.width);var l=Math.clamp(a.y,0,r.height)*q,b=Math.clamp(a.y+a.height,0,r.height)*q,m=Math.clamp(a.x,0,r.width),n=Math.clamp(a.x+a.width,0,r.width);for(var c=l,g=s;c<b&&g<f;c+=q,g+=k){for(var o=m,v=t;o<n&&v<u;o++,v++){i[g+v]=p[c+o]}}},getColorBoundsRect:function(a,c,b){if(b){return this.getColorBoundsRect_true(a,c)}else{return this.getColorBoundsRect_false(a,c)}},getColorBoundsRect_true:function(p,i){var g=this.width,f=this.height,b=0,a=0;var o=this.width;h=this.height;var k=this.data;var e=0,c=0;minYfor:for(var l=0;l<h;l++){c=l*o-1;for(var n=0;n<o;n++){e=(k[++c]&p)-i;if(!e){g=b=n;f=a=l;break minYfor}}}maxYfor:for(var l=h-1;l>f;l--){c=l*o-1;for(var n=0;n<o;n++){e=(k[++c]&p)-i;if(!e){if(n<g){g=n}if(n>b){b=n}a=l;break maxYfor}}}for(var l=f;l<=a;l++){c=l*o-1;for(var n=0;n<g;n++){e=(k[++c]&p)-i;if(!e){g=n;break}}c=l*o+o;for(var n=o-1;n>b;n--){e=(k[--c]&p)-i;if(!e){b=n;break}}}return new Rectangle(g,f,Math.max(0,b-g),Math.max(0,a-f))},getColorBoundsRect_false:function(o,g){var f=this.width,e=this.height,b=0,a=0;var n=this.width;h=this.height;var i=this.data;minYfor:for(var k=0;k<h;k++){for(var l=0;l<n;l++){var c=(i[k*n+l]&o)-g;if(c){f=b=l;e=a=k;break minYfor}}}maxYfor:for(var k=h-1;k>e;k--){for(var l=0;l<n;l++){var c=(i[k*n+l]&o)-g;if(c){if(l<f){f=l}if(l>b){b=l}a=k;break maxYfor}}}for(var k=e;k<=a;k++){for(var l=0;l<f;l++){var c=(i[k*n+l]&o)-g;if(c){f=l;break}}for(var l=h-1;l>b;l--){var c=(i[k*n+l]&o)-g;if(c){b=l;break}}}return new Rectangle(f,e,Math.max(0,b-f),Math.max(0,a-e))},putImageData:function(k,o,m,p,f){p=Math.clamp(p,0,k.width),f=Math.clamp(f,0,k.height);var g=this.width;var i=this.data;var c=k.data;var m=Math.clamp(m,0,this.height)*g,l=Math.clamp(m+f,0,this.height)*g,o=Math.clamp(o,0,this.width),a=Math.clamp(o+p,0,this.width);for(var n=m,q=0;n<l;n+=g,q+=k.width*4){for(var b=o,e=0;b<a;b++,e+=4){i[n+b]=((c[q+e]<<16)|(c[q+e+1]<<8)|(c[q+e+2])|(c[q+e+3]<<24))}}},drawCanvas:function(c,a,e,b,d){this.putImageData(c.getContext("2d").getImageData(0,0,b,d),a,e,b,d)},drawOnCanvas:function(g){var o=g.getContext("2d");var b=o.getImageData(0,0,this.width,this.height);var i=this.width;var f=this.height*i;var k=this.data;var e=b.data;for(var m=0;m<f;m+=i){for(var n=0;n<i;n++){var a=4*(m+n);var l=k[m+n];e[a]=(l>>16)&255;e[++a]=(l>>8)&255;e[++a]=(l)&255;e[++a]=(l>>24)&255}}o.putImageData(b,0,0)},floodFill:function(p,n,i){var e=0,c=0,b=0,r=0;var d=0;var m=[];var q=this.width,g=this.height;var k=this.width;var f=this.data;d=f[n*k+p];if(d==i||p<0||p>=q||n<0||n>=g){return}m.push([n,p,p,1]);m.push([n+1,p,p,-1]);while(m.length>0){var o=m.pop();n=o[0]+o[3],c=o[1],b=o[2],r=o[3];for(p=c;p>=0&&f[n*k+p]==d;p--){f[n*k+p]=i}if(p<c){e=p+1;if(e<c){m.push([n,e,c-1,-r])}p=c+1;for(;p<q&&f[n*k+p]==d;p++){f[n*k+p]=i}m.push([n,e,p-1,r]);if(p>b+1){m.push([n,b+1,p-1,-r])}}for(p++;p<=b&&f[n*k+p]!=d;p++){null}e=p;while(p<=b){for(;p<q&&f[n*k+p]==d;p++){f[n*k+p]=i}m.push([n,e,p-1,r]);if(p>b+1){m.push([n,b+1,p-1,-r])}for(p++;p<=b&&f[n*k+p]!=d;p++){null}e=p}}}});Rectangle=Klass({initialize:function(a,d,b,c){this.x=a;this.y=d;this.top=d;this.left=a;this.bottom=d+c;this.right=a+b;this.width=b;this.height=c;this.updateCalc()},updateCalc:function(){this.top=this.y;this.left=this.x;this.bottom=this.y+this.height;this.right=this.x+this.width},clone:function(){return new Rectangle(this.x,this.y,this.width,this.height)},inflate:function(b,a){this.x-=b;this.y-=a;this.width+=2*b;this.height+=2*a;this.updateCalc()},isEmpty:function(){return(this.width<=0&&this.height<=0)}});NyARException=Klass(Error,{initialize:function(a){Error.call(this,a)},trap:function(a){throw new NyARException("trap:"+a)},notImplement:function(){throw new NyARException("Not Implement!")}});NyAS3Const_Inherited=Klass({});NyAS3Utils=Klass({assert:function(a,b){if(!a){throw new Error("NyAS3Utils.assert:"+b!=null?b:"")}}});NyARVec=Klass({clm:null,v:null,initialize:function(a){this.v=new FloatVector(a);this.clm=a},getClm:function(){return this.clm},getArray:function(){return this.v}});NyARMat=Klass({m:null,__matrixSelfInv_nos:null,clm:null,row:null,initialize:function(b,a){this.m=new Array(b);for(var d=0;d<b;d++){this.m[d]=new FloatVector(a);for(var c=0;c<a;c++){this.m[d][c]=0}}this.__matrixSelfInv_nos=new FloatVector(b);this.clm=a;this.row=b;return},getClm:function(){return this.clm},getRow:function(){return this.row},getArray:function(){return this.m},matrixSelfInv:function(){var k=this.m;var r=this.row;var f=r-1;var d,o,m;var g,q,c;var e=this.__matrixSelfInv_nos;var a,t,s;switch(r){case 0:throw new NyARException();case 1:k[0][0]=1/k[0][0];return true}var b;for(b=0;b<r;b++){e[b]=b}q=0;for(b=0;b<r;b++){d=k[b];a=0;for(var l=b;l<r;l++){if(a<(t=Math.abs(k[l][0]))){a=t;q=l}}if(a==0){return false}c=e[q];e[q]=e[b];e[b]=c;o=k[q];for(g=0;g<r;g++){s=o[g];o[g]=d[g];d[g]=s}s=d[0];for(g=0;g<f;g++){d[g]=d[g+1]/s}d[g]=1/s;for(l=0;l<r;l++){if(l!=b){m=k[l];s=m[0];for(g=0;g<f;g++){m[g]=m[g+1]-s*d[g]}m[g]=-s*d[g]}}}for(b=0;b<r;b++){for(g=b;g<r;g++){if(e[g]==b){break}}e[g]=e[b];for(l=0;l<r;l++){m=k[l];s=m[g];m[g]=m[b];m[b]=s}}return true}});ArrayUtils=ASKlass("ArrayUtils",{create2dInt:function(d,b){var c=new Array(d);for(var a=0;a<d;a++){c[a]=new IntVector(b)}return c},create2dNumber:function(d,b){var c=new Array(d);for(var a=0;a<d;a++){c[a]=new FloatVector(b)}return c},copyInt:function(f,b,d,c,a){for(var e=0;e<a;e++){d[c+e]=f[b+e]}}});ArrayUtil=ASKlass("ArrayUtil",{createJaggedArray:function(b){var a=new Array(b);var c=toArray(arguments).slice(1);while(b--){a[b]=c.length?this.createJaggedArray.apply(null,c):0}return a},create2d:function(b,a){return this.createJaggedArray(b,a)},create3d:function(c,b,a){return this.createJaggedArray(c,b,a)},copy:function(f,b,d,c,a){for(var e=0;e<a;e++){d[c+e]=f[b+e]}}});FLARException=ASKlass("FLARException",NyARException,{FLARException:function(a){NyARException.initialize.call(this,a||"")},trap:function(a){throw new FLARException("trap:"+a)},notImplement:function(){throw new FLARException("Not Implement!")}});FLARMat=NyARMat;FLARRgbPixelReader_BitmapData=ASKlass("FLARRgbPixelReader_BitmapData",{_ref_bitmap:null,FLARRgbPixelReader_BitmapData:function(a){this._ref_bitmap=a},getPixel:function(b,a,e){var d=this._ref_bitmap.getPixel(b,a);e[0]=(d>>16)&255;e[1]=(d>>8)&255;e[2]=d&255;return},getPixelSet:function(b,a,e,k){var g=this._ref_bitmap;var f;var d;for(d=0;d<e;d++){f=g.getPixel(b[d],a[d]);k[d*3+0]=(f>>16)&255;k[d*3+1]=(f>>8)&255;k[d*3+2]=f&255}},setPixel:function(b,a,c){NyARException.notImplement()},setPixels:function(b,a,d,c){NyARException.notImplement()},switchBuffer:function(a){NyARException.notImplement()}});FLARGrayPixelReader_BitmapData=ASKlass("FLARGrayPixelReader_BitmapData",{_ref_bitmap:null,FLARGrayPixelReader_BitmapData:function(a){this._ref_bitmap=a},getPixel:function(c,a,e,f){NyARException.notImplement();var b=this._ref_bitmap.getWidth();var g=this._ref_bitmap.getBuffer();f[0]=f[1]=f[2]=~g(c+b*a)&255},getPixelSet:function(c,a,f,g){var b=this._ref_bitmap.getWidth();var k=this._ref_bitmap.data;for(var e=0;e<f;e++){g[e]=~k[c[e]+b*a[e]]&255}},setPixel:function(b,a,c){NyARException.notImplement()},setPixels:function(b,a,d,c){NyARException.notImplement()},switchBuffer:function(a){NyARException.notImplement()}});INyARHistogramAnalyzer_Threshold=ASKlass("INyARHistogramAnalyzer_Threshold",{getThreshold:function(a){}});NyARHistogramAnalyzer_SlidePTile=ASKlass("NyARHistogramAnalyzer_SlidePTile",INyARHistogramAnalyzer_Threshold,{_persentage:0,NyARHistogramAnalyzer_SlidePTile:function(a){NyAS3Utils.assert(0<=a&&a<=50);this._persentage=a},getThreshold:function(c){var i=c.length;var f=c.total_of_data;var d=c.data;var a=f*this._persentage/100;var b;var g,e;b=a;for(e=0;e<i-2;e++){b-=d[e];if(b<=0){break}}b=a;for(g=i-1;g>1;g--){b-=d[g];if(b<=0){break}}return(g+e)/2}});INyARPca2d=ASKlass("INyARPca2d",{pca:function(e,c,a,f,d,b){}});NyARPca2d_MatrixPCA_O2=ASKlass("NyARPca2d_MatrixPCA_O2",INyARPca2d,{PCA_EPS:0.000001,PCA_MAX_ITER:100,PCA_VZERO:1e-16,PCA_QRM:function(g,a){var q,r,u,p,n,l;var o;var f,d;var k,i,e,b;f=g.m00;o=g.m01;d=g.m11;k=b=1;i=e=0;var m=0;do{m++;if(m>this.PCA_MAX_ITER){break}q=(f-d)/2;r=o*o;u=Math.sqrt(q*q+r);if(q<0){u=-u}p=f-d+r/(q+u);n=o;if(Math.abs(p)>=Math.abs(n)){if(Math.abs(p)>this.PCA_VZERO){r=-n/p;l=1/Math.sqrt(r*r+1);u=r*l}else{l=1;u=0}}else{r=-p/n;u=1/Math.sqrt(r*r+1);l=r*u}q=f-d;r=(q*u+2*l*o)*u;f-=r;d+=r;o+=u*(l*q-2*u*o);p=k;n=e;k=l*p-u*n;e=u*p+l*n;p=i;n=b;i=l*p-u*n;b=u*p+l*n}while(Math.abs(o)>this.PCA_EPS*(Math.abs(f)+Math.abs(d)));r=f;if(d>r){r=d;d=f;f=r;g.m00=e;g.m01=b;g.m10=k;g.m11=i}else{g.m00=k;g.m01=i;g.m10=e;g.m11=b}a[0]=f;a[1]=d;return},PCA_PCA:function(c,a,d,e,g,q){var f;var p=0;var n=0;for(f=0;f<d;f++){p+=c[f];n+=a[f]}p=p/d;n=n/d;var r=Math.sqrt((d));var b,k,m;b=k=m=0;for(f=0;f<d;f++){var o=(c[f]-p)/r;var l=(a[f]-n)/r;b+=(o*o);m+=(o*l);k+=(l*l)}e.m00=b;e.m01=e.m10=m;e.m11=k;this.PCA_QRM(e,g);if(g[0]<this.PCA_VZERO){g[0]=0;e.m00=0;e.m01=0}if(g[1]<this.PCA_VZERO){g[1]=0;e.m10=0;e.m11=0}q[0]=p;q[1]=n;return},pca:function(f,d,a,g,e,c){this.PCA_PCA(f,d,a,g,e,c);var b=e[0]+e[1];e[0]/=b;e[1]/=b;return}});INyARRgbPixelReader=ASKlass("INyARRgbPixelReader",{getPixel:function(b,a,c){},getPixelSet:function(b,a,c,d){},setPixel:function(b,a,c){},setPixels:function(b,a,d,c){},switchBuffer:function(a){}});NyARRgbPixelReader_INT1D_X8R8G8B8_32=ASKlass("NyARRgbPixelReader_INT1D_X8R8G8B8_32",INyARRgbPixelReader,{_ref_buf:null,_size:null,NyARRgbPixelReader_INT1D_X8R8G8B8_32:function(a,b){this._ref_buf=a;this._size=b},getPixel:function(b,a,d){var c=this._ref_buf[b+a*this._size.w];d[0]=(c>>16)&255;d[1]=(c>>8)&255;d[2]=c&255;return},getPixelSet:function(b,a,g,k){var f=this._size.w;var d=this._ref_buf;for(var e=g-1;e>=0;e--){var c=d[b[e]+a[e]*f];k[e*3+0]=(c>>16)&255;k[e*3+1]=(c>>8)&255;k[e*3+2]=c&255}return},setPixel:function(b,a,c){this._ref_buf[b+a*this._size.w]=((c[0]<<16)&255)|((c[1]<<8)&255)|((c[2])&255)},setPixels:function(b,a,d,c){throw new NyARException()},switchBuffer:function(a){NyAS3Utils.assert(a.length>=this._size.w*this._size.h);this._ref_buf=(a)}});NyARRgbPixelReader_Canvas2D=ASKlass("NyARRgbPixelReader_Canvas2D",INyARRgbPixelReader,{_ref_canvas:null,_data:null,NyARRgbPixelReader_Canvas2D:function(a){this._ref_canvas=a},getData:function(){if(this._ref_canvas.changed||!this._data){var b=this._ref_canvas;var a=b.getContext("2d");this._data=a.getImageData(0,0,b.width,b.height);this._ref_canvas.changed=false}return this._data},getPixel:function(c,a,i){var g=this.getData();var b=g.width;var e=g.height;var f=g.data;i[0]=f[a*b+c];i[1]=f[a*b+c+1];i[2]=f[a*b+c+2];return},getPixelSet:function(g,f,k,a){var b=this.getData();var n=b.width;var e=b.height;var l=b.data;for(var c=0;c<k;c++){var m=f[c]*n*4+g[c]*4;a[c*3+0]=l[m+0];a[c*3+1]=l[m+1];a[c*3+2]=l[m+2]}},setPixel:function(b,a,c){NyARException.notImplement()},setPixels:function(b,a,d,c){NyARException.notImplement()},switchBuffer:function(a){NyARException.notImplement()}});INyARDoubleMatrix=Klass({setValue:function(a){},getValue:function(a){}});NyARDoubleMatrix22=Klass(INyARDoubleMatrix,{m00:0,m01:0,m10:0,m11:0,setValue:function(a){this.m00=a[0];this.m01=a[1];this.m10=a[3];this.m11=a[4];return},getValue:function(a){a[0]=this.m00;a[1]=this.m01;a[3]=this.m10;a[4]=this.m11;return},inverse:function(d){var b,a,e,c;b=d.m00;a=d.m01;e=d.m10;c=d.m11;var f=b*c-a*e;if(f==0){return false}f=1/f;this.m00=c*f;this.m01=-a*f;this.m10=-e*f;this.m11=b*f;return true}});NyARDoubleMatrix33=Klass(INyARDoubleMatrix,{m00:0,m01:0,m02:0,m10:0,m11:0,m12:0,m20:0,m21:0,m22:0,createArray:function(c){var a=new Array(c);for(var b=0;b<c;b++){a[b]=new NyARDoubleMatrix33()}return a},setValue:function(a){this.m00=a[0];this.m01=a[1];this.m02=a[2];this.m10=a[3];this.m11=a[4];this.m12=a[5];this.m20=a[6];this.m21=a[7];this.m22=a[8];return},setValue_NyARDoubleMatrix33:function(a){this.m00=a.m00;this.m01=a.m01;this.m02=a.m02;this.m10=a.m10;this.m11=a.m11;this.m12=a.m12;this.m20=a.m20;this.m21=a.m21;this.m22=a.m22;return},getValue:function(a){a[0]=this.m00;a[1]=this.m01;a[2]=this.m02;a[3]=this.m10;a[4]=this.m11;a[5]=this.m12;a[6]=this.m20;a[7]=this.m21;a[8]=this.m22;return},inverse:function(e){var i,g,f,p,o,n,v,u,t;var s,r,q,c,b,a,m,l,k;i=e.m00;g=e.m01;f=e.m02;p=e.m10;o=e.m11;n=e.m12;v=e.m20;u=e.m21;t=e.m22;s=o*t-n*u;r=u*f-t*g;q=g*n-f*o;c=n*v-p*t;b=t*i-v*f;a=f*p-i*n;m=p*u-o*v;l=v*g-u*i;k=i*o-g*p;var d=i*s+p*r+v*q;if(d==0){return false}d=1/d;this.m00=s*d;this.m01=r*d;this.m02=q*d;this.m10=c*d;this.m11=b*d;this.m12=a*d;this.m20=m*d;this.m21=l*d;this.m22=k*d;return true},getZXYAngle:function(b){var a=this.m21;if(a>=1){b.x=Math.PI/2;b.y=0;b.z=Math.atan2(-this.m10,this.m00)}else{if(a<=-1){b.x=-Math.PI/2;b.y=0;b.z=Math.atan2(-this.m10,this.m00)}else{b.x=Math.asin(a);b.z=Math.atan2(-this.m01,this.m11);b.y=Math.atan2(-this.m20,this.m22)}}},setZXYAngle_NyARDoublePoint3d:function(a){this.setZXYAngle_Number(a.x,a.y,a.z);return},setZXYAngle_Number:function(i,g,f){var e=Math.sin(i);var b=Math.cos(i);var d=Math.sin(g);var a=Math.cos(g);var c=Math.sin(f);var k=Math.cos(f);this.m00=k*a-c*e*d;this.m01=-c*b;this.m02=k*d+c*e*a;this.m10=c*a+k*e*d;this.m11=k*b;this.m12=c*d-k*e*a;this.m20=-b*d;this.m21=e;this.m22=a*b;return},transformVertex_NyARDoublePoint3d:function(a,b){transformVertex_double(a.x,a.y,a.z,b);return},transformVertex_double:function(b,a,d,c){c.x=this.m00*b+this.m01*a+this.m02*d;c.y=this.m10*b+this.m11*a+this.m12*d;c.z=this.m20*b+this.m21*a+this.m22*d;return}});NyARDoubleMatrix34=Klass(INyARDoubleMatrix,{m00:0,m01:0,m02:0,m03:0,m10:0,m11:0,m12:0,m13:0,m20:0,m21:0,m22:0,m23:0,setValue:function(a){this.m00=a[0];this.m01=a[1];this.m02=a[2];this.m03=a[3];this.m10=a[4];this.m11=a[5];this.m12=a[6];this.m13=a[7];this.m20=a[8];this.m21=a[9];this.m22=a[10];this.m23=a[11];return},setValue_NyARDoubleMatrix34:function(a){this.m00=a.m00;this.m01=a.m01;this.m02=a.m02;this.m03=a.m03;this.m10=a.m10;this.m11=a.m11;this.m12=a.m12;this.m13=a.m13;this.m20=a.m20;this.m21=a.m21;this.m22=a.m22;this.m23=a.m23;return},getValue:function(a){a[0]=this.m00;a[1]=this.m01;a[2]=this.m02;a[3]=this.m03;a[4]=this.m10;a[5]=this.m11;a[6]=this.m12;a[7]=this.m13;a[8]=this.m20;a[9]=this.m21;a[10]=this.m22;a[11]=this.m23;return}});NyARDoubleMatrix44=Klass(INyARDoubleMatrix,{m00:0,m01:0,m02:0,m03:0,m10:0,m11:0,m12:0,m13:0,m20:0,m21:0,m22:0,m23:0,m30:0,m31:0,m32:0,m33:0,createArray:function(c){var a=new Array(c);for(var b=0;b<c;b++){a[b]=new NyARDoubleMatrix44()}return a},setValue:function(a){this.m00=a[0];this.m01=a[1];this.m02=a[2];this.m03=a[3];this.m10=a[4];this.m11=a[5];this.m12=a[6];this.m13=a[7];this.m20=a[8];this.m21=a[9];this.m22=a[10];this.m23=a[11];this.m30=a[12];this.m31=a[13];this.m32=a[14];this.m33=a[15];return},getValue:function(a){a[0]=this.m00;a[1]=this.m01;a[2]=this.m02;a[3]=this.m03;a[4]=this.m10;a[5]=this.m11;a[6]=this.m12;a[7]=this.m13;a[8]=this.m20;a[9]=this.m21;a[10]=this.m22;a[11]=this.m23;a[12]=this.m30;a[13]=this.m31;a[14]=this.m32;a[15]=this.m33;return},inverse:function(H){var q,o,m,l,P,O,N,M,E,C,A,y,s,r,p,n;var g,d,b,a,L,K,J,I,w,v,u,t,k,i,f,c;var G,F,D,B,z,x;q=H.m00;o=H.m01;m=H.m02;l=H.m03;P=H.m10;O=H.m11;N=H.m12;M=H.m13;E=H.m20;C=H.m21;A=H.m22;y=H.m23;s=H.m30;r=H.m31;p=H.m32;n=H.m33;G=A*n-y*p;F=y*r-C*n;D=C*p-A*r;B=y*s-E*n;z=E*p-A*s;x=E*r-C*s;g=O*G+N*F+M*D;L=-(N*B+M*z+P*G);w=M*x-P*F+O*B;k=-(P*D-O*z+N*x);G=p*l-n*m;F=n*o-r*l;D=r*m-p*o;B=n*q-s*l;z=s*m-p*q;x=s*o-r*q;d=-(C*G+A*F+y*D);K=A*B+y*z+E*G;v=-(y*x-E*F+C*B);i=E*D-C*z+A*x;G=m*M-l*N;F=l*O-o*M;D=o*N-m*O;B=l*P-q*M;z=q*N-m*P;x=q*O-o*P;b=r*G+p*F+n*D;J=-(p*B+n*z+s*G);u=n*x-s*F+r*B;f=-(s*D-r*z+p*x);G=N*y-M*A;F=M*C-O*y;D=O*A-N*C;B=M*E-P*y;z=P*A-N*E;x=P*C-O*E;a=-(o*G+m*F+l*D);I=m*B+l*z+q*G;t=-(l*x-q*F+o*B);c=q*D-o*z+m*x;var e=(q*g+P*d+E*b+s*a);if(e==0){return false}e=1/e;this.m00=g*e;this.m01=d*e;this.m02=b*e;this.m03=a*e;this.m10=L*e;this.m11=K*e;this.m12=J*e;this.m13=I*e;this.m20=w*e;this.m21=v*e;this.m22=u*e;this.m23=t*e;this.m30=k*e;this.m31=i*e;this.m32=f*e;this.m33=c*e;return true}});NyARObjectStack=Klass({_items:null,_length:0,initialize:function(a){a=toInt(a);this._items=this.createArray(a);this._length=0;return},createArray:function(a){throw new NyARException()},prePush:function(){if(this._length>=this._items.length){return null}var a=this._items[this._length];this._length++;return a},init:function(a){if(a>=this._items.length){throw new NyARException()}this._length=a},pop:function(){NyAS3Utils.assert(this._length>=1);this._length--;return this._items[this._length]},pops:function(a){NyAS3Utils.assert(this._length>=a);this._length-=a;return},getArray:function(){return this._items},getItem:function(a){return this._items[a]},getLength:function(){return this._length},clear:function(){this._length=0}});NyARIntPointStack=Klass(NyARObjectStack,{initialize:function(a){NyARObjectStack.initialize.call(this,a)},createArray:function(c){var a=new Array(c);for(var b=0;b<c;b++){a[b]=new NyARIntPoint2d()}return a}});NyARIntRectStack=Klass({_items:null,_length:null,initialize:function(a){this._items=this.createArray(a);this._length=0;return},createArray:function(c){var a=new Array(c);for(var b=0;b<c;b++){a[b]=new NyARIntRect()}return a},prePush:function(){if(this._length>=this._items.length){return null}var a=this._items[this._length];this._length++;return a},init:function(a){if(a>=this._items.length){throw new NyARException()}this._length=a},pop:function(){NyAS3Utils.assert(this._length>=1);this._length--;return this._items[this._length]},pops:function(a){NyAS3Utils.assert(this._length>=a);this._length-=a;return},getArray:function(){return this._items},getItem:function(a){return this._items[a]},getLength:function(){return this._length},clear:function(){this._length=0}});NyARBufferType=Klass((function(){var f=65536;var a=131072;var b=196608;var e=262144;var d=1048576;var c=16711680;return({NULL_ALLZERO:1,USER_DEFINE:c,BYTE1D_R8G8B8_24:f|1,BYTE1D_B8G8R8_24:f|2,BYTE1D_B8G8R8X8_32:f|257,BYTE1D_X8R8G8B8_32:f|258,BYTE1D_R5G6B5_16LE:f|513,BYTE1D_R5G6B5_16BE:f|514,WORD1D_R5G6B5_16LE:b|513,WORD1D_R5G6B5_16BE:b|514,INT2D:a|0,INT2D_GRAY_8:a|1,INT2D_BIN_8:a|2,INT1D:e|0,INT1D_GRAY_8:e|1,INT1D_BIN_8:e|2,INT1D_X8R8G8B8_32:e|258,INT1D_X7H9S8V8_32:e|259,OBJECT_Java:d|256,OBJECT_CS:d|512,OBJECT_AS3:d|768,OBJECT_JS:d|1024,OBJECT_Java_BufferedImage:d|256|1,OBJECT_AS3_BitmapData:d|768|1,OBJECT_JS_Canvas:d|1024|1})})());NyARDoublePoint2d=Klass({x:0,y:0,createArray:function(c){var a=new Array(c);for(var b=0;b<c;b++){a[b]=new NyARDoublePoint2d()}return a},initialize:function(){switch(arguments.length){case 0:this.x=0;this.y=0;return;case 1:this.x=args[0].x;this.y=args[0].y;return;break;case 2:this.x=Number(args[0]);this.y=Number(args[1]);return;default:break}throw new NyARException()},setValue_NyARDoublePoint2d:function(a){this.x=a.x;this.y=a.y;return},setValue_NyARIntPoint2d:function(a){this.x=(a.x);this.y=(a.y);return},dist:function(){return Math.sqrt(this.x*this.x+this.y+this.y)},sqNorm:function(){return this.x*this.x+this.y+this.y}});NyARDoublePoint3d=Klass({x:0,y:0,z:0,createArray:function(c){var a=new Array(c);for(var b=0;b<c;b++){a[b]=new NyARDoublePoint3d()}return a},setValue:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return},dist:function(b){var a,d,c;a=this.x-b.x;d=this.y-b.y;c=this.z-b.z;return Math.sqrt(a*a+d*d+c*c)}});NyARHistogram=Klass({data:null,length:0,total_of_data:0,initialize:function(a){this.data=new FloatVector(a);this.length=a;this.total_of_data=0},getTotal:function(b,a){NyAS3Utils.assert(b<a&&a<this.length);var e=0;var d=this.data;for(var c=b;c<=a;c++){e+=d[c]}return e},lowCut:function(a){var c=0;for(var b=0;b<a;b++){c+=this.data[b];this.data[b]=0}this.total_of_data-=c},highCut:function(a){var c=0;for(var b=this.length-1;b>=a;b--){c+=this.data[b];this.data[b]=0}this.total_of_data-=c},getMinSample:function(){var d=this.data;var a=this.length-1;var c=d[a];for(var b=this.length-2;b>=0;b--){if(d[b]<c){c=d[b];a=b}}return a},getMinData:function(){return this.data[this.getMinSample()]},getAverage:function(){var b=0;for(var a=this.length-1;a>=0;a--){b+=this.data[a]*a}return toInt(b/this.total_of_data)}});NyARIntPoint2d=Klass({x:0,y:0,createArray:function(c){var a=new Array(c);for(var b=0;b<c;b++){a[b]=new NyARIntPoint2d()}return a},copyArray:function(a,c){for(var b=a.length-1;b>=0;b--){c[b].x=a[b].x;c[b].y=a[b].y}return}});NyARIntRect=Klass({x:0,y:0,w:0,h:0});NyARIntSize=Klass({h:0,w:0,initialize:function(){switch(arguments.length){case 0:this.w=0;this.h=0;return;case 1:this.w=arguments[0].w;this.h=arguments[0].h;return;break;case 2:this.w=toInt(arguments[0]);this.h=toInt(arguments[1]);return;break;default:break}throw new NyARException()},isEqualSize_int:function(b,a){if(b==this.w&&a==this.h){return true}return false},isEqualSize_NyARIntSize:function(a){if(a.w==this.w&&a.h==this.h){return true}return false}});NyARLinear=Klass({dx:0,dy:0,c:0,createArray:function(c){var a=new Array(c);for(var b=0;b<c;b++){a[b]=new NyARLinear()}return a},copyFrom:function(a){this.dx=a.dx;this.dy=a.dy;this.c=a.c;return},crossPos:function(c,b,d){var a=b.dy*c.dx-c.dy*b.dx;if(a==0){return false}d.x=(b.dx*c.c-c.dx*b.c)/a;d.y=(c.dy*b.c-b.dy*c.c)/a;return true}});IFLdoThFilterImpl=ASKlass("IFLdoThFilterImpl",{doThFilter:function(b,a,d,c){}});FLARRasterFilter_Threshold=ASKlass("FLARRasterFilter_Threshold",{_threshold:0,_do_threshold_impl:null,FLARRasterFilter_Threshold:function(a){},setThreshold:function(a){this._threshold=a},doFilter:function(p,a){NyAS3Utils.assert(p._width==a._width&&p._height==a._height);var e=(a.getBuffer());var b=p.getRgbPixelReader();var k=b.getData().data;var m=e.data;var o=this._threshold*10000;for(var g=0,f=0;g<k.length;g+=4,++f){var l=k[g]*2989+k[g+1]*5866+k[g+2]*1145;var q=(l<=o)?4294967295:4278190080;m[f]=q}if(window.DEBUG){var n=document.getElementById("debugCanvas");e.drawOnCanvas(n)}return}});Point=function(a,b){this.x=a||0;this.y=b||0};doThFilterImpl_BUFFERFORMAT_OBJECT_AS_BitmapData={doThFilter:function(o,a,q){var b=(a.getBuffer());var n=(o.getBuffer());var k=n.data;var m=b.data;for(var e=0;e<k.length;e++){var p=k[e];var l=((p>>16)&255)*0.2989+((p>>8)&255)*0.5866+(p&255)*0.1145;var g=(l<=q);var r=g*4294967295+(1-g)*4278190080;m[j]=r}}};FLARDoublePoint2d=NyARDoublePoint2d;FLARDoublePoint3d=NyARDoublePoint3d;FLARIntSize=NyARIntSize;NyARLabelInfo=ASKlass("NyARLabelInfo",{area:0,clip_r:0,clip_l:0,clip_b:0,clip_t:0,pos_x:0,pos_y:0,NyARLabelInfo:function(){}});NyARLabelInfoStack=ASKlass("NyARLabelInfoStack",{_items:null,_length:0,NyARLabelInfoStack:function(a){this._items=this.createArray(a);this._length=0;return},createArray:function(c){var a=new Array(c);for(var b=0;b<c;b++){a[b]=new NyARLabelInfo()}return(a)},sortByArea:function(){var a=this._length;if(a<1){return}var d=Math.floor(a*13/10);var e=this._items;for(;;){var f=0;for(var c=0;c+d<a;c++){if(e[c+d].area>e[c].area){var b=e[c+d];e[c+d]=e[c];e[c]=b;f++}}if(d==1){if(f==0){break}}else{d=Math.floor(d*10/13)}}},prePush:function(){if(this._length>=this._items.length){return null}var a=this._items[this._length];this._length++;return a},init:function(a){if(a>=this._items.length){throw new NyARException()}this._length=a},pop:function(){NyAS3Utils.assert(this._length>=1);this._length--;return this._items[this._length]},pops:function(a){NyAS3Utils.assert(this._length>=a);this._length-=a;return},getArray:function(){return this._items},getItem:function(a){return this._items[a]},getLength:function(){return this._length},clear:function(){this._length=0}});NyARLabelOverlapChecker=ASKlass("NyARLabelOverlapChecker",{_labels:null,_length:0,NyARLabelOverlapChecker:function(a){this._labels=this.createArray(a)},createArray:function(a){return new Array(a)},push:function(a){this._labels[this._length]=a;this._length++},check:function(k){var a=this._labels;var e=toInt(k.pos_x);var g=toInt(k.pos_y);for(var b=this._length-1;b>=0;b--){var c=toInt(a[b].pos_x);var f=toInt(a[b].pos_y);var l=(e-c)*(e-c)+(g-f)*(g-f);if(l<a[b].area/4){return false}}return true},setMaxLabels:function(a){if(a>this._labels.length){this._labels=this.createArray(a)}this._length=0}});NyARLabeling_Rle=ASKlass("NyARLabeling_Rle",{AR_AREA_MAX:100000,AR_AREA_MIN:70,_rlestack:null,_rle1:null,_rle2:null,_max_area:0,_min_area:0,NyARLabeling_Rle:function(b,a){this._rlestack=new RleInfoStack(b*a*2048/(320*240)+32);this._rle1=RleElement.createArray(b/2+1);this._rle2=RleElement.createArray(b/2+1);this.setAreaRange(this.AR_AREA_MAX,this.AR_AREA_MIN);return},setAreaRange:function(a,b){this._max_area=a;this._min_area=b;return},toRLE:function(i,e,l,g,f){var k=0;var m=0,b=1,d=2,c=3;var a=-1;var n=e;var o=e+l-1;while(n<o){if(i[n]!=4294967295){n++;continue}a=(n-e);g[k+m]=a;a++;n++;while(n<o){if(i[n]!=4294967295){g[k+b]=a;k+=c;n++;a=-1;break}else{a++;n++}}}if(i[n]!=4294967295){if(a>=0){g[k+b]=a;k+=c}}else{if(a>=0){g[k+b]=(a+1)}else{g[k+m]=(l-1);g[k+b]=(l)}k+=c}return k/c},addFragment:function(e,o,p,g,k){var m=0,b=1,d=2,c=3;var f=e[o+m];var a=e[o+b];var i=a-f;e[o+d]=p;var n=k.prePush();n.entry_x=f;n.area=i;n.clip_l=f;n.clip_r=a-1;n.clip_t=g;n.clip_b=g;n.pos_x=(i*(2*f+(i-1)))/2;n.pos_y=g*i;return},labeling_NyARBinRaster:function(b,a,d,c){NyAS3Utils.assert(b.isEqualBufferType(NyARBufferType.INT1D_BIN_8));return this.imple_labeling(b,0,a,d,c)},labeling_NyARGrayscaleRaster:function(e,b,a,d,c){NyAS3Utils.assert(e.isEqualBufferType(NyARBufferType.INT1D_GRAY_8));return this.imple_labeling(e,b,a,d,c)},labeling:function(a,b){return this.imple_labeling(a,0,0,a.getHeight(),b)},imple_labeling:function(p,f,t,z,k){var J=this._rlestack;J.clear();var P=this._rle1;var N=this._rle2;var b=0;var d=0;var a=p.getWidth();var x=(p.getBuffer().data);var E=0;var c=0;var o=0,H=1,L=2,I=3;b=this.toRLE(x,t,a,P,f);var Q;for(Q=0;Q<b;Q++){this.addFragment(P,Q*I,E,t,J);E++;c++}var A=(J.getArray());for(var G=t+1;G<z;G++){d=this.toRLE(x,G*a,a,N,f);var n=0;SCAN_CUR:for(Q=0;Q<d;Q++){var F=-1;SCAN_PREV:while(n<b){if(N[Q*I+o]-P[n*I+H]>0){n++;continue}else{if(P[n*I+o]-N[Q*I+H]>0){this.addFragment(N,Q*I,E,G,J);E++;c++;continue SCAN_CUR}}F=P[n*I+L];var g=A[F];N[Q*I+L]=F;var O=N[Q*I+o];var K=N[Q*I+H];var s=K-O;g.area+=s;g.clip_l=O<g.clip_l?O:g.clip_l;g.clip_r=K>g.clip_r?K-1:g.clip_r;g.clip_b=G;g.pos_x+=(s*(2*O+(s-1)))/2;g.pos_y+=G*s;n++;while(n<b){if(N[Q*I+o]-P[n*I+H]>0){break SCAN_PREV}else{if(P[n*I+o]-N[Q*I+H]>0){n--;continue SCAN_CUR}}var q=P[n*I+L];var e=A[q];if(F!=q){c--;var m;for(m=n;m<b;m++){if(P[m*I+L]==q){P[m*I+L]=F}}for(m=0;m<Q;m++){if(N[m*I+L]==q){N[m*I+L]=F}}g.area+=e.area;g.pos_x+=e.pos_x;g.pos_y+=e.pos_y;if(g.clip_t>e.clip_t){g.clip_t=e.clip_t;g.entry_x=e.entry_x}else{if(g.clip_t<e.clip_t){}else{if(g.entry_x>e.entry_x){g.entry_x=e.entry_x}else{}}}if(g.clip_l>e.clip_l){g.clip_l=e.clip_l}else{}if(g.clip_r<e.clip_r){g.clip_r=e.clip_r}else{}e.area=0}n++}n--;break}if(F<0){this.addFragment(N,Q*I,E,G,J);E++;c++}}var M=P;P=N;b=d;N=M}k.init(c);var u=(k.getArray());var v=this._max_area;var R=this._min_area;var w=0;for(Q=E-1;Q>=0;Q--){var C=A[Q].area;if(C<R||C>v){continue}var D=A[Q];var B=u[w];B.area=C;B.clip_b=D.clip_b;B.clip_r=D.clip_r;B.clip_t=D.clip_t;B.clip_l=D.clip_l;B.entry_x=D.entry_x;B.pos_x=D.pos_x/D.area;B.pos_y=D.pos_y/D.area;w++}k.pops(c-w);return w}});RleInfo=ASKlass("RleInfo",{entry_x:0,area:0,clip_r:0,clip_l:0,clip_b:0,clip_t:0,pos_x:0,pos_y:0});RleInfoStack=ASKlass("RleInfoStack",NyARObjectStack,{RleInfoStack:function(a){NyARObjectStack.initialize.call(this,a);return},createArray:function(c){var a=new Array(toInt(c));for(var b=0;b<c;b++){a[b]=new RleInfo()}return a}});RleElement=ASKlass("RleElement",{l:0,r:0,fid:0,createArray:function(c){return new IntVector(toInt(c)*3);var a=new Array(toInt(c));for(var b=0;b<c;b++){a[b]=new RleElement()}return a}});NyARRleLabelFragmentInfo=ASKlass("NyARRleLabelFragmentInfo",NyARLabelInfo,{entry_x:0});NyARRleLabelFragmentInfoStack=ASKlass("NyARRleLabelFragmentInfoStack",NyARLabelInfoStack,{NyARRleLabelFragmentInfoStack:function(a){NyARLabelInfoStack.initialize.call(this,a);return},createArray:function(c){var a=new Array(toInt(c));for(var b=0;b<c;b++){a[b]=new NyARRleLabelFragmentInfo()}return(a)}});FLARLabeling=ASKlass("FLARLabeling",{AR_AREA_MAX:100000,AR_AREA_MIN:70,ZERO_POINT:new Point(),ONE_POINT:new Point(1,1),hSearch:null,hLineRect:null,_tmp_bmp:null,areaMax:0,areaMin:0,FLARLabeling:function(b,a){this._tmp_bmp=new BitmapData(b,a,false,0);this.hSearch=new BitmapData(b,1,false,0);this.hLineRect=new Rectangle(0,0,1,1);this.setAreaRange(this.AR_AREA_MAX,this.AR_AREA_MIN);return},setAreaRange:function(a,b){this.areaMax=a;this.areaMin=b},labeling:function(e,g){var a=this._tmp_bmp;a.fillRect(a.rect,0);var m=a.rect.clone();m.inflate(-1,-1);a.copyPixels(e.getBuffer(),m,this.ONE_POINT);var i=a.getColorBoundsRect(16777215,16777215,true);var c=this.hLineRect;c.y=0;c.width=a.width;var l=this.hSearch;var d;var k;var f=0;var n;g.clear();while(!i.isEmpty()){c.y=i.top;l.copyPixels(a,c,this.ZERO_POINT);d=l.getColorBoundsRect(16777215,16777215,true);a.floodFill(d.x,c.y,++f);k=a.getColorBoundsRect(16777215,f,true);n=g.prePush();var b=k.width*k.height;if(b<=this.areaMax&&b>=this.areaMin){n.area=b;n.clip_l=k.left;n.clip_r=k.right-1;n.clip_t=k.top;n.clip_b=k.bottom-1;n.pos_x=(k.left+k.right-1)*0.5;n.pos_y=(k.top+k.bottom-1)*0.5;n.entry_x=this.getTopClipTangentX(a,f,n);if(n.entry_x==-1){return -1}}else{g.pop()}i=a.getColorBoundsRect(16777215,16777215,true)}return g.getLength()},getTopClipTangentX:function(c,f,e){var a;var b=e.clip_r;var d;for(d=e.clip_l;d<=b;d++){a=c.getPixel(d,e.clip_t);if(a>0&&a==f){return d}}return -1}});INyARCameraDistortionFactor=ASKlass("INyARCameraDistortionFactor",{ideal2Observ:function(a,b){},ideal2ObservBatch:function(b,c,a){},observ2Ideal:function(b,a,c){},observ2IdealBatch:function(b,f,d,e,a,c){}});NyARCameraDistortionFactor=ASKlass("NyARCameraDistortionFactor",INyARCameraDistortionFactor,{PD_LOOP:3,_f0:0,_f1:0,_f2:0,_f3:0,copyFrom:function(a){this._f0=a._f0;this._f1=a._f1;this._f2=a._f2;this._f3=a._f3;return},setValue:function(a){this._f0=a[0];this._f1=a[1];this._f2=a[2];this._f3=a[3];return},getValue:function(a){a[0]=this._f0;a[1]=this._f1;a[2]=this._f2;a[3]=this._f3;return},changeScale:function(a){this._f0=this._f0*a;this._f1=this._f1*a;this._f2=this._f2/(a*a);return},ideal2Observ:function(c,f){var a=(c.x-this._f0)*this._f3;var e=(c.y-this._f1)*this._f3;if(a==0&&e==0){f.x=this._f0;f.y=this._f1}else{var b=1-this._f2/100000000*(a*a+e*e);f.x=a*b+this._f0;f.y=e*b+this._f1}return},ideal2ObservBatch:function(m,n,l){var k,g;var b=this._f0;var a=this._f1;var o=this._f3;var e=this._f2/100000000;for(var c=0;c<l;c++){k=(m[c].x-b)*o;g=(m[c].y-a)*o;if(k==0&&g==0){n[c].x=b;n[c].y=a}else{var f=1-e*(k*k+g*g);n[c].x=k*f+b;n[c].y=g*f+a}}return},observ2Ideal:function(f,e,k){var m,l,d,b,n,s,r,o;var c=this._f0;var a=this._f1;s=f-c;r=e-a;d=this._f2/100000000;m=s*s+r*r;b=l=Math.sqrt(m);for(var g=1;;g++){if(l!=0){o=d*m;n=l-((1-o)*l-b)/(1-3*o);s=s*n/l;r=r*n/l}else{s=0;r=0;break}if(g==this.PD_LOOP){break}m=s*s+r*r;l=Math.sqrt(m)}k.x=s/this._f3+c;k.y=r/this._f3+a;return},observ2IdealBatch:function(b,v,g,c,u,t){var s,e,m,d,l,k,f;var a=this._f0;var x=this._f1;var w=this._f3;var n=this._f2/100000000;for(var o=0;o<c;o++){l=b[g+o]-a;k=v[g+o]-x;s=l*l+k*k;m=e=Math.sqrt(s);for(var r=1;;r++){if(e!=0){f=n*s;d=e-((1-f)*e-m)/(1-3*f);l=l*d/e;k=k*d/e}else{l=0;k=0;break}if(r==PD_LOOP){break}s=l*l+k*k;e=Math.sqrt(s)}u[o]=l/w+a;t[o]=k/w+x}return}});NyARObserv2IdealMap=ASKlass("NyARObserv2IdealMap",{_stride:0,_mapx:null,_mapy:null,NyARObserv2IdealMap:function(d,f){var c=new NyARDoublePoint2d();this._mapx=new FloatVector(f.w*f.h);this._mapy=new FloatVector(f.w*f.h);this._stride=f.w;var e=f.h*f.w-1;for(var a=f.h-1;a>=0;a--){for(var b=f.w-1;b>=0;b--){d.observ2Ideal(b,a,c);this._mapx[e]=c.x;this._mapy[e]=c.y;e--}}return},observ2Ideal:function(c,b,d){var a=c+b*this._stride;d.x=this._mapx[a];d.y=this._mapy[a];return},observ2IdealBatch:function(k,o,c,i,m,b,d){var n;var a=d;var g=this._mapx;var f=this._mapy;var l=this._stride;for(var e=0;e<i;e++){n=k[c+e]+o[c+e]*l;m[a]=g[n];b[a]=f[n];a++}return}});NyARPerspectiveProjectionMatrix=ASKlass("NyARPerspectiveProjectionMatrix",NyARDoubleMatrix34,{dot:function(c,a,f,e,d,b){return(c*e+a*d+f*b)},norm:function(e,d,f){return Math.sqrt(e*e+d*d+f*f)},decompMat:function(y,x){var n,v;var w,u,t;var e,d,b,a,m,l,k,i,s,q,p,o;if(this.m23>=0){e=this.m00;d=this.m01;b=this.m02;a=this.m03;m=this.m10;l=this.m11;k=this.m12;i=this.m13;s=this.m20;q=this.m21;p=this.m22;o=this.m23}else{e=-this.m00;d=-this.m01;b=-this.m02;a=-this.m03;m=-this.m10;l=-this.m11;k=-this.m12;i=-this.m13;s=-this.m20;q=-this.m21;p=-this.m22;o=-this.m23}var f=y.getArray();var g=x.getArray();for(n=0;n<3;n++){for(v=0;v<4;v++){f[n][v]=0}}f[2][2]=this.norm(s,q,p);g[2][0]=s/f[2][2];g[2][1]=q/f[2][2];g[2][2]=p/f[2][2];g[2][3]=o/f[2][2];f[1][2]=this.dot(g[2][0],g[2][1],g[2][2],m,l,k);w=m-f[1][2]*g[2][0];u=l-f[1][2]*g[2][1];t=k-f[1][2]*g[2][2];f[1][1]=this.norm(w,u,t);g[1][0]=w/f[1][1];g[1][1]=u/f[1][1];g[1][2]=t/f[1][1];f[0][2]=this.dot(g[2][0],g[2][1],g[2][2],e,d,b);f[0][1]=this.dot(g[1][0],g[1][1],g[1][2],e,d,b);w=e-f[0][1]*g[1][0]-f[0][2]*g[2][0];u=d-f[0][1]*g[1][1]-f[0][2]*g[2][1];t=b-f[0][1]*g[1][2]-f[0][2]*g[2][2];f[0][0]=this.norm(w,u,t);g[0][0]=w/f[0][0];g[0][1]=u/f[0][0];g[0][2]=t/f[0][0];g[1][3]=(i-f[1][2]*g[2][3])/f[1][1];g[0][3]=(a-f[0][1]*g[1][3]-f[0][2]*g[2][3])/f[0][0];for(n=0;n<3;n++){for(v=0;v<3;v++){f[n][v]/=f[2][2]}}return},changeScale:function(a){this.m00=this.m00*a;this.m10=this.m10*a;this.m01=this.m01*a;this.m11=this.m11*a;this.m02=this.m02*a;this.m12=this.m12*a;this.m03=this.m03*a;this.m13=this.m13*a;return},projectionConvert_NyARDoublePoint3d:function(c,b){var a=c.z*this.m22;b.x=(c.x*this.m00+c.y*this.m01+c.z*this.m02)/a;b.y=(c.y*this.m11+c.z*this.m12)/a;return},projectionConvert_Number:function(d,a,e,c){var b=e*this.m22;c.x=(d*this.m00+a*this.m01+e*this.m02)/b;c.y=(a*this.m11+e*this.m12)/b;return}});NyARParam=ASKlass("NyARParam",{_screen_size:new NyARIntSize(),SIZE_OF_PARAM_SET:4+4+(3*4*8)+(4*8),_dist:new NyARCameraDistortionFactor(),_projection_matrix:new NyARPerspectiveProjectionMatrix(),getScreenSize:function(){return this._screen_size},getPerspectiveProjectionMatrix:function(){return this._projection_matrix},getDistortionFactor:function(){return this._dist},copyCameraMatrix:function(e,n,m){var f=new FLARMat(3,4);var l=new FLARMat(3,4);var d=ArrayUtil.createJaggedArray(3,3);var a=ArrayUtil.createJaggedArray(4,4);var k=0;var g=0;var s=this.getScreenSize();var c=s.w;var o=s.h;this.getPerspectiveProjectionMatrix().decompMat(l,f);var b=l.getArray();var r=f.getArray();for(k=0;k<4;k++){b[1][k]=(o-1)*(b[2][k])-b[1][k]}for(k=0;k<3;k++){for(g=0;g<3;g++){d[k][g]=b[k][g]/b[2][2]}}a[0][0]=(2*d[0][0]/(c-1));a[0][1]=(2*d[0][1]/(c-1));a[0][2]=-((2*d[0][2]/(c-1))-1);a[0][3]=0;a[1][0]=0;a[1][1]=-(2*d[1][1]/(o-1));a[1][2]=-((2*d[1][2]/(o-1))-1);a[1][3]=0;a[2][0]=0;a[2][1]=0;a[2][2]=-(m+n)/(n-m);a[2][3]=2*m*n/(n-m);a[3][0]=0;a[3][1]=0;a[3][2]=1;a[3][3]=0;for(k=0;k<4;k++){for(g=0;g<3;g++){e[g*4+k]=a[k][0]*r[0][g]+a[k][1]*r[1][g]+a[k][2]*r[2][g]}e[k+4*3]=a[k][0]*r[0][3]+a[k][1]*r[1][3]+a[k][2]*r[2][3]+a[k][3]}},setValue:function(a,b){this._dist.setValue(a);this._projection_matrix.setValue(b);return},changeScreenSize:function(a,c){var b=a/this._screen_size.w;this._dist.changeScale(b);this._projection_matrix.changeScale(b);this._screen_size.w=a;this._screen_size.h=c;return},loadARParam:function(c){var b=new FloatVector(12);c.endian=Endian.BIG_ENDIAN;this._screen_size.w=c.readInt();this._screen_size.h=c.readInt();var a;for(a=0;a<12;a++){b[a]=c.readDouble()}this._projection_matrix.setValue(b);for(a=0;a<4;a++){b[a]=c.readDouble()}this._dist.setValue(b);return}});FLARParam=ASKlass("FLARParam",NyARParam,{FLARParam:function(a,b){a=a||640;b=b||480;this._screen_size.w=a;this._screen_size.h=b;var d=(a/b)/(4/3);var e=new FloatVector([a/2,1.1*b/2,26.2,1.0127565206658486]);var c=new FloatVector([d*700.9514702992245,0,a/2-0.5,0,0,726.0941816535367,b/2-0.5,0,0,0,1,0]);this.setValue(e,c)}});INyARRaster=ASKlass("INyARRaster",{getWidth:function(){},getHeight:function(){},getSize:function(){},getBuffer:function(){},getBufferType:function(){},isEqualBufferType:function(a){},hasBuffer:function(){},wrapBuffer:function(a){}});NyARRaster_BasicClass=ASKlass("NyARRaster_BasicClass",INyARRaster,{_size:null,_buffer_type:0,NyARRaster_BasicClass:function(){switch(arguments.length){case 1:if(arguments[0]==NyAS3Const_Inherited){}break;case 3:this.overload_NyARRaster_BasicClass(toInt(arguments[0]),toInt(arguments[1]),toInt(arguments[2]));break;default:throw new NyARException()}},overload_NyARRaster_BasicClass:function(c,b,a){this._size=new NyARIntSize(c,b);this._buffer_type=a},getWidth:function(){return this._size.w},getHeight:function(){return this._size.h},getSize:function(){return this._size},getBufferType:function(){return this._buffer_type},isEqualBufferType:function(a){return this._buffer_type==a},getBuffer:function(){throw new NyARException()},hasBuffer:function(){throw new NyARException()},wrapBuffer:function(a){throw new NyARException()}});NyARBinRaster=ASKlass("NyARBinRaster",NyARRaster_BasicClass,{_buf:null,_is_attached_buffer:null,NyARBinRaster:function(){NyARRaster_BasicClass.initialize.call(this,NyAS3Const_Inherited);switch(arguments.length){case 1:if(arguments[0]==NyAS3Const_Inherited){}break;case 2:this.override_NyARBinRaster2(toInt(arguments[0]),toInt(arguments[1]));break;case 3:this.override_NyARBinRaster3(toInt(arguments[0]),toInt(arguments[1]),Boolean(arguments[2]));break;case 4:this.override_NyARBinRaster4(toInt(arguments[0]),toInt(arguments[1]),toInt(arguments[2]),Boolean(arguments[3]));break;default:throw new NyARException()}},override_NyARBinRaster4:function(d,c,a,b){NyARRaster_BasicClass.overload_NyARRaster_BasicClass.call(this,d,c,a);if(!this.initInstance(this._size,a,b)){throw new NyARException()}},override_NyARBinRaster3:function(c,b,a){NyARRaster_BasicClass.overload_NyARRaster_BasicClass.call(this,c,b,NyARBufferType.INT1D_BIN_8);if(!this.initInstance(this._size,NyARBufferType.INT1D_BIN_8,a)){throw new NyARException()}},override_NyARBinRaster2:function(b,a){NyARRaster_BasicClass.overload_NyARRaster_BasicClass.call(this,b,a,NyARBufferType.INT1D_BIN_8);if(!this.initInstance(this._size,NyARBufferType.INT1D_BIN_8,true)){throw new NyARException()}},initInstance:function(b,c,a){switch(c){case NyARBufferType.INT1D_BIN_8:this._buf=a?new IntVector(b.w*b.h):null;break;default:return false}this._is_attached_buffer=a;return true},getBuffer:function(){return this._buf},hasBuffer:function(){return this._buf!=null},wrapBuffer:function(a){NyAS3Utils.assert(!this._is_attached_buffer);this._buf=a}});NyARGrayscaleRaster=ASKlass("NyARGrayscaleRaster",NyARRaster_BasicClass,{_buf:null,_is_attached_buffer:null,NyARGrayscaleRaster:function(){NyARRaster_BasicClass.initialize.call(this,NyAS3Const_Inherited);switch(arguments.length){case 1:if(arguments[0]==NyAS3Const_Inherited){}break;case 2:this.overload_NyARGrayscaleRaster2(toInt(arguments[0]),toInt(arguments[1]));break;case 3:this.overload_NyARGrayscaleRaster3(toInt(arguments[0]),toInt(arguments[1]),Boolean(arguments[2]));break;case 4:this.overload_NyARGrayscaleRaster4(toInt(arguments[0]),toInt(arguments[1]),toInt(arguments[2]),Boolean(arguments[3]));break;default:throw new NyARException()}},overload_NyARGrayscaleRaster2:function(b,a){NyARRaster_BasicClass.overload_NyARRaster_BasicClass.call(this,b,a,NyARBufferType.INT1D_GRAY_8);if(!this.initInstance(this._size,NyARBufferType.INT1D_GRAY_8,true)){throw new NyARException()}},overload_NyARGrayscaleRaster3:function(c,b,a){NyARRaster_BasicClass.overload_NyARRaster_BasicClass.call(this,c,b,NyARBufferType.INT1D_GRAY_8);if(!this.initInstance(this._size,NyARBufferType.INT1D_GRAY_8,a)){throw new NyARException()}},overload_NyARGrayscaleRaster4:function(d,c,a,b){NyARRaster_BasicClass.overload_NyARRaster_BasicClass.call(this,d,c,a);if(!this.initInstance(this._size,a,b)){throw new NyARException()}},initInstance:function(b,c,a){switch(c){case NyARBufferType.INT1D_GRAY_8:this._buf=a?new IntVector(b.w*b.h):null;break;default:return false}this._is_attached_buffer=a;return true},getBuffer:function(){return this._buf},hasBuffer:function(){return this._buf!=null},wrapBuffer:function(a){NyAS3Utils.assert(!this._is_attached_buffer);this._buf=a}});NyARRaster=ASKlass("NyARRaster",NyARRaster_BasicClass,{_buf:null,_buf_type:0,_is_attached_buffer:null,NyARRaster:function(){NyARRaster_BasicClass.initialize.call(this,NyAS3Const_Inherited);switch(arguments.length){case 1:if(arguments[0]==NyAS3Const_Inherited){}break;case 3:this.overload_NyARRaster3(toInt(arguments[0]),toInt(arguments[1]),toInt(arguments[2]));break;case 4:this.overload_NyARRaster4(toInt(arguments[0]),toInt(arguments[1]),toInt(arguments[2]),Boolean(arguments[3]));break;default:throw new NyARException()}},overload_NyARRaster4:function(d,c,a,b){NyARRaster_BasicClass.overload_NyARRaster_BasicClass.call(this,d,c,a);if(!this.initInstance(this._size,a,b)){throw new NyARException()}return},overload_NyARRaster3:function(c,b,a){NyARRaster_BasicClass.overload_NyARRaster_BasicClass.call(this,c,b,a);if(!this.initInstance(this._size,a,true)){throw new NyARException()}return},initInstance:function(b,c,a){switch(c){case NyARBufferType.INT1D_X8R8G8B8_32:this._buf=a?new IntVector(b.w*b.h):null;break;default:return false}this._is_attached_buffer=a;return true},getBuffer:function(){return this._buf},hasBuffer:function(){return this._buf!=null},wrapBuffer:function(a){NyAS3Utils.assert(!this._is_attached_buffer);this._buf=a}});INyARRgbRaster=ASKlass("INyARRgbRaster",INyARRaster,{getRgbPixelReader:function(){}});NyARRgbRaster_BasicClass=ASKlass("NyARRgbRaster_BasicClass",INyARRgbRaster,{_size:null,_buffer_type:0,NyARRgbRaster_BasicClass:function(){switch(arguments.length){case 1:if(arguments[0]==NyAS3Const_Inherited){}break;case 3:this.overload_NyARRgbRaster_BasicClass(toInt(arguments[0]),toInt(arguments[1]),toInt(arguments[2]));break;default:throw new NyARException()}},overload_NyARRgbRaster_BasicClass:function(c,b,a){this._size=new NyARIntSize(c,b);this._buffer_type=a},getWidth:function(){return this._size.w},getHeight:function(){return this._size.h},getSize:function(){return this._size},getBufferType:function(){return this._buffer_type},isEqualBufferType:function(a){return this._buffer_type==a},getRgbPixelReader:function(){throw new NyARException()},getBuffer:function(){throw new NyARException()},hasBuffer:function(){throw new NyARException()},wrapBuffer:function(a){throw new NyARException()}});NyARRgbRaster=ASKlass("NyARRgbRaster",NyARRgbRaster_BasicClass,{_buf:null,_reader:null,_is_attached_buffer:null,NyARRgbRaster:function(){NyARRgbRaster_BasicClass.initialize.call(this,NyAS3Const_Inherited);switch(arguments.length){case 1:if(arguments[0]==NyAS3Const_Inherited){}break;case 3:this.overload_NyARRgbRaster3(toInt(arguments[0]),toInt(arguments[1]),toInt(arguments[2]));break;case 4:this.overload_NyARRgbRaster4(toInt(arguments[0]),toInt(arguments[1]),toInt(arguments[2]),Boolean(arguments[3]));break;default:throw new NyARException()}},overload_NyARRgbRaster4:function(d,c,a,b){NyARRgbRaster_BasicClass.overload_NyARRgbRaster_BasicClass.call(this,d,c,a);if(!this.initInstance(this._size,a,b)){throw new NyARException()}},overload_NyARRgbRaster3:function(c,b,a){NyARRgbRaster_BasicClass.overload_NyARRgbRaster_BasicClass.call(this,c,b,a);if(!this.initInstance(this._size,a,true)){throw new NyARException()}},initInstance:function(c,a,b){switch(a){case NyARBufferType.INT1D_X8R8G8B8_32:this._buf=b?new IntVector(c.w*c.h):null;this._reader=new NyARRgbPixelReader_INT1D_X8R8G8B8_32(this._buf||new IntVector(1),c);break;case NyARBufferType.BYTE1D_B8G8R8X8_32:case NyARBufferType.BYTE1D_R8G8B8_24:default:return false}this._is_attached_buffer=b;return true},getRgbPixelReader:function(){return this._reader},getBuffer:function(){return this._buf},hasBuffer:function(){return this._buf!=null},wrapBuffer:function(a){NyAS3Utils.assert(!this._is_attached_buffer);this._buf=a;this._reader.switchBuffer(a)}});NyARRgbRaster_Canvas2D=ASKlass("NyARRgbRaster_Canvas2D",NyARRgbRaster_BasicClass,{_canvas:null,_rgb_reader:null,NyARRgbRaster_Canvas2D:function(a){NyARRgbRaster_BasicClass.initialize.call(this,a.width,a.height,NyARBufferType.OBJECT_JS_Canvas);this._canvas=a;this._rgb_reader=new NyARRgbPixelReader_Canvas2D(this._canvas)},getRgbPixelReader:function(){return this._rgb_reader},getBuffer:function(){return this._canvas},hasBuffer:function(){return this._bitmapData!=null}});FLARCanvas=function(a,b){var d=document.createElement("canvas");d.width=a;d.height=b;return d};FLARBinRaster=ASKlass("FLARBinRaster",NyARBinRaster,{FLARBinRaster:function(b,a){NyARBinRaster.initialize.call(this,b,a,NyARBufferType.OBJECT_AS3_BitmapData,true);this._gray_reader=new FLARGrayPixelReader_BitmapData(this._buf)},initInstance:function(b,c,a){this._buf=a?new BitmapData(b.w,b.h,0):null;return true},getGrayPixelReader:function(){return this._gray_reader}});FLARRgbRaster_BitmapData=ASKlass("FLARRgbRaster_BitmapData",NyARRgbRaster_BasicClass,{_bitmapData:null,_rgb_reader:null,FLARRgbRaster_BitmapData:function(a){NyARRgbRaster_BasicClass.initialize.call(this,a.width,a.height,NyARBufferType.OBJECT_AS3_BitmapData);this._bitmapData=a;this._rgb_reader=new FLARRgbPixelReader_BitmapData(this._bitmapData)},getRgbPixelReader:function(){return this._rgb_reader},getBuffer:function(){return this._bitmapData},hasBuffer:function(){return this._bitmapData!=null}});NyARMatchPattDeviationBlackWhiteData=ASKlass("NyARMatchPattDeviationBlackWhiteData",{_data:null,_pow:0,_number_of_pixels:0,refData:function(){return this._data},getPow:function(){return this._pow},NyARMatchPattDeviationBlackWhiteData:function(b,a){this._number_of_pixels=a*b;this._data=new IntVector(this._number_of_pixels);return},setRaster:function(f){var e;var k;var l;var m=this._data;var c=(f.getBuffer());var b=this._number_of_pixels;k=0;for(e=b-1;e>=0;e--){l=c[e];k+=((l>>16)&255)+((l>>8)&255)+(l&255)}k=(b*255*3-k)/(3*b);var g=0,d;for(e=b-1;e>=0;e--){l=c[e];d=((255*3-(l&255)-((l>>8)&255)-((l>>16)&255))/3)-k;m[e]=d;g+=d*d}var a=Math.sqrt(g);this._pow=a!=0?a:1e-7;return}});NyARMatchPattDeviationColorData=ASKlass("NyARMatchPattDeviationColorData",{_data:null,_pow:0,_number_of_pixels:0,_optimize_for_mod:0,refData:function(){return this._data},getPow:function(){return this._pow},NyARMatchPattDeviationColorData:function(b,a){this._number_of_pixels=a*b;this._data=new IntVector(this._number_of_pixels*3);this._optimize_for_mod=this._number_of_pixels-(this._number_of_pixels%8);return},setRaster:function(k){NyAS3Utils.assert(k.isEqualBufferType(NyARBufferType.INT1D_X8R8G8B8_32));NyAS3Utils.assert(k.getSize().isEqualSize_NyARIntSize(k.getSize()));var c=(k.getBuffer());var g;var m;var n;var o=this._data;var b=this._number_of_pixels;var d=this._optimize_for_mod;m=0;for(g=b-1;g>=d;g--){n=c[g];m+=((n>>16)&255)+((n>>8)&255)+(n&255)}for(;g>=0;){n=c[g];m+=((n>>16)&255)+((n>>8)&255)+(n&255);g--;n=c[g];m+=((n>>16)&255)+((n>>8)&255)+(n&255);g--;n=c[g];m+=((n>>16)&255)+((n>>8)&255)+(n&255);g--;n=c[g];m+=((n>>16)&255)+((n>>8)&255)+(n&255);g--;n=c[g];m+=((n>>16)&255)+((n>>8)&255)+(n&255);g--;n=c[g];m+=((n>>16)&255)+((n>>8)&255)+(n&255);g--;n=c[g];m+=((n>>16)&255)+((n>>8)&255)+(n&255);g--;n=c[g];m+=((n>>16)&255)+((n>>8)&255)+(n&255);g--}m=b*255*3-m;m=255-(m/(b*3));var l=0,f;var e=b*3-1;for(g=b-1;g>=d;g--){n=c[g];f=(m-(n&255));o[e--]=f;l+=f*f;f=(m-((n>>8)&255));o[e--]=f;l+=f*f;f=(m-((n>>16)&255));o[e--]=f;l+=f*f}for(;g>=0;){n=c[g];g--;f=(m-(n&255));o[e--]=f;l+=f*f;f=(m-((n>>8)&255));o[e--]=f;l+=f*f;f=(m-((n>>16)&255));o[e--]=f;l+=f*f;n=c[g];g--;f=(m-(n&255));o[e--]=f;l+=f*f;f=(m-((n>>8)&255));o[e--]=f;l+=f*f;f=(m-((n>>16)&255));o[e--]=f;l+=f*f;n=c[g];g--;f=(m-(n&255));o[e--]=f;l+=f*f;f=(m-((n>>8)&255));o[e--]=f;l+=f*f;f=(m-((n>>16)&255));o[e--]=f;l+=f*f;n=c[g];g--;f=(m-(n&255));o[e--]=f;l+=f*f;f=(m-((n>>8)&255));o[e--]=f;l+=f*f;f=(m-((n>>16)&255));o[e--]=f;l+=f*f;n=c[g];g--;f=(m-(n&255));o[e--]=f;l+=f*f;f=(m-((n>>8)&255));o[e--]=f;l+=f*f;f=(m-((n>>16)&255));o[e--]=f;l+=f*f;n=c[g];g--;f=(m-(n&255));o[e--]=f;l+=f*f;f=(m-((n>>8)&255));o[e--]=f;l+=f*f;f=(m-((n>>16)&255));o[e--]=f;l+=f*f;n=c[g];g--;f=(m-(n&255));o[e--]=f;l+=f*f;f=(m-((n>>8)&255));o[e--]=f;l+=f*f;f=(m-((n>>16)&255));o[e--]=f;l+=f*f;n=c[g];g--;f=(m-(n&255));o[e--]=f;l+=f*f;f=(m-((n>>8)&255));o[e--]=f;l+=f*f;f=(m-((n>>16)&255));o[e--]=f;l+=f*f}var a=Math.sqrt(l);this._pow=a!=0?a:1e-7;return}});NyARMatchPattResult=ASKlass("NyARMatchPattResult",{DIRECTION_UNKNOWN:-1,confidence:0,direction:0});NyARCode=ASKlass("NyARCode",{_color_pat:new Array(4),_bw_pat:new Array(4),_width:0,_height:0,NyARCode:function(c,b){this._width=c;this._height=b;for(var a=0;a<4;a++){this._color_pat[a]=new NyARMatchPattDeviationColorData(c,b);this._bw_pat[a]=new NyARMatchPattDeviationBlackWhiteData(c,b)}return},getColorData:function(a){return this._color_pat[a]},getBlackWhiteData:function(a){return this._bw_pat[a]},getWidth:function(){return this._width},getHeight:function(){return this._height},loadARPattFromFile:function(a){NyARCodeFileReader.loadFromARToolKitFormFile(a,this);return},setRaster:function(a){NyAS3Utils.assert(a.length!=4);for(var b=0;b<4;b++){this._color_pat[b].setRaster(a[b])}return}});NyARCodeFileReader=ASKlass("NyARCodeFileReader",{loadFromARToolKitFormFile:function(i,b){var f=b.getWidth();var g=b.getHeight();var a=new NyARRaster(f,g,NyARBufferType.INT1D_X8R8G8B8_32);var d=i.match(/\d+/g);var c=(a.getBuffer());for(var e=0;e<4;e++){this.readBlock(d,f,g,c);b.getColorData(e).setRaster(a);b.getBlackWhiteData(e).setRaster(a)}a=null;return},readBlock:function(a,i,g,f){var d=i*g;var b;for(b=0;b<3;b++){for(var c=0;c<d;c++){var e=parseInt(a.shift());if(isNaN(e)){throw new NyARException("syntax error in pattern file.")}f[c]=(f[c]<<8)|((255&toInt(e)))}}for(b=0;b<d;b++){f[b]=((f[b]<<16)&16711680)|(f[b]&65280)|((f[b]>>16)&255)}return}});FLARCode=ASKlass("FLARCode",NyARCode,{markerPercentWidth:50,markerPercentHeight:50,FLARCode:function(d,c,b,a){NyARCode.initialize.call(this,d,c);this.markerPercentWidth=b==null?50:b;this.markerPercentHeight=a==null?50:a},loadARPatt:function(a){NyARCode.loadARPattFromFile.call(this,a);return}});INyARMatchPatt=ASKlass("INyARMatchPatt",{setARCode:function(a){}});NyARMatchPatt_Color_WITHOUT_PCA=ASKlass("NyARMatchPatt_Color_WITHOUT_PCA",INyARMatchPatt,{_code_patt:null,_optimize_for_mod:0,_rgbpixels:0,NyARMatchPatt_Color_WITHOUT_PCA:function(){switch(arguments.length){case 1:var e=arguments[0];var a=e.getWidth();var b=e.getHeight();this._rgbpixels=a*b*3;this._optimize_for_mod=this._rgbpixels-(this._rgbpixels%16);this.setARCode(e);return;break;case 2:var d=toInt(arguments[0]),c=toInt(arguments[1]);this._rgbpixels=c*d*3;this._optimize_for_mod=this._rgbpixels-(this._rgbpixels%16);return;break;default:break}throw new NyARException()},setARCode:function(a){this._code_patt=a;return},evaluate:function(a,k){NyAS3Utils.assert(this._code_patt!=null);var o=a.refData();var l;var n=Number.MIN_VALUE;var m=NyARMatchPattResult.DIRECTION_UNKNOWN;var c=this._optimize_for_mod;for(var e=0;e<4;e++){l=0;var d=this._code_patt.getColorData(e);var g=d.refData();var f;for(f=this._rgbpixels-1;f>=c;f--){l+=o[f]*g[f]}for(;f>=0;){l+=o[f]*g[f];f--;l+=o[f]*g[f];f--;l+=o[f]*g[f];f--;l+=o[f]*g[f];f--;l+=o[f]*g[f];f--;l+=o[f]*g[f];f--;l+=o[f]*g[f];f--;l+=o[f]*g[f];f--;l+=o[f]*g[f];f--;l+=o[f]*g[f];f--;l+=o[f]*g[f];f--;l+=o[f]*g[f];f--;l+=o[f]*g[f];f--;l+=o[f]*g[f];f--;l+=o[f]*g[f];f--;l+=o[f]*g[f];f--}var b=l/d.getPow();if(b>n){n=b;m=e}}k.direction=m;k.confidence=n/a.getPow();return true}});NyARRasterAnalyzer_Histogram=ASKlass("NyARRasterAnalyzer_Histogram",{_histImpl:null,_vertical_skip:0,NyARRasterAnalyzer_Histogram:function(b,a){if(!this.initInstance(b,a)){throw new NyARException()}},initInstance:function(b,a){switch(b){case NyARBufferType.INT1D_GRAY_8:this._histImpl=new NyARRasterThresholdAnalyzer_Histogram_INT1D_GRAY_8();break;case NyARBufferType.INT1D_X8R8G8B8_32:this._histImpl=new NyARRasterThresholdAnalyzer_Histogram_INT1D_X8R8G8B8_32();break;default:return false}this._vertical_skip=a;return true},setVerticalInterval:function(a){this._vertical_skip=a;return},analyzeRaster:function(d,e){var b=d.getSize();NyAS3Utils.assert(b.w*b.h<1073741824);NyAS3Utils.assert(e.length==256);var c=e.data;for(var a=e.length-1;a>=0;a--){c[a]=0}e.total_of_data=b.w*b.h/this._vertical_skip;return this._histImpl.createHistogram(d,b,c,this._vertical_skip)}});ICreateHistogramImpl=ASKlass("ICreateHistogramImpl",{createHistogram:function(d,c,b,a){}});NyARRasterThresholdAnalyzer_Histogram_INT1D_GRAY_8=ASKlass("NyARRasterThresholdAnalyzer_Histogram_INT1D_GRAY_8",ICreateHistogramImpl,{createHistogram:function(i,f,e,c){NyAS3Utils.assert(i.isEqualBufferType(NyARBufferType.INT1D_GRAY_8));var b=(IntVector)(i.getBuffer());for(var g=f.h-1;g>=0;g-=c){var d=g*f.w;for(var a=f.w-1;a>=0;a--){e[b[d]]++;d++}}return f.w*f.h}});NyARRasterThresholdAnalyzer_Histogram_INT1D_X8R8G8B8_32=ASKlass("NyARRasterThresholdAnalyzer_Histogram_INT1D_X8R8G8B8_32",ICreateHistogramImpl,{createHistogram:function(c,g,a,i){NyAS3Utils.assert(c.isEqualBufferType(NyARBufferType.INT1D_X8R8G8B8_32));var f=(c.getBuffer());for(var d=g.h-1;d>=0;d-=i){var k=d*g.w;for(var e=g.w-1;e>=0;e--){var b=f[k];a[((b&255)+(b&255)+(b&255))/3]++;k++}}return g.w*g.h}});INyARRasterThresholdAnalyzer=ASKlass("INyARRasterThresholdAnalyzer",{analyzeRaster:function(a){}});NyARRasterThresholdAnalyzer_SlidePTile=ASKlass("NyARRasterThresholdAnalyzer_SlidePTile",INyARRasterThresholdAnalyzer,{_raster_analyzer:null,_sptile:null,_histgram:null,NyARRasterThresholdAnalyzer_SlidePTile:function(a,c,b){NyAS3Utils.assert(0<=a&&a<=50);if(!this.initInstance(c,b)){throw new NyARException()}this._sptile=new NyARHistogramAnalyzer_SlidePTile(a);this._histgram=new NyARHistogram(256)},initInstance:function(b,a){this._raster_analyzer=new NyARRasterAnalyzer_Histogram(b,a);return true},setVerticalInterval:function(a){this._raster_analyzer.setVerticalInterval(a);return},analyzeRaster:function(a){this._raster_analyzer.analyzeRaster(a,this._histgram);return this._sptile.getThreshold(this._histgram)}});FLARRasterAnalyzer_Histogram=ASKlass("FLARRasterAnalyzer_Histogram",NyARRasterAnalyzer_Histogram,{FLARRasterAnalyzer_Histogram:function(a){NyARRasterAnalyzer_Histogram.initialize.call(this,NyARBufferType.OBJECT_AS3_BitmapData,a)},initInstance:function(b,a){if(b!=NyARBufferType.OBJECT_AS3_BitmapData){return false}else{this._vertical_skip=a}return true},analyzeRaster:function(d,e){var b=d.getSize();NyAS3Utils.assert(b.w*b.h<1073741824);NyAS3Utils.assert(e.length==256);var c=e.data;for(var a=e.length-1;a>=0;a--){c[a]=0}e.total_of_data=b.w*b.h/this._vertical_skip;return this.createHistgram_AS3_BitmapData(d,b,c,this._vertical_skip)},createHistgram_AS3_BitmapData:function(c,g,a,i){NyAS3Utils.assert(c.isEqualBufferType(NyARBufferType.OBJECT_AS3_BitmapData));var f=(c.getBuffer());for(var d=g.h-1;d>=0;d-=i){var k=d*g.w;for(var e=g.w-1;e>=0;e--){var b=f.getPixel(e,d);a[toInt((((b>>8)&255)+((b>>16)&255)+(b&255))/3)]++;k++}}return g.w*g.h}});FLARRasterThresholdAnalyzer_SlidePTile=ASKlass("FLARRasterThresholdAnalyzer_SlidePTile",NyARRasterThresholdAnalyzer_SlidePTile,{FLARRasterThresholdAnalyzer_SlidePTile:function(a,b){NyARRasterThresholdAnalyzer_SlidePTile.initialize.call(this,a,NyARBufferType.OBJECT_AS3_BitmapData,b)},initInstance:function(b,a){if(b!=NyARBufferType.OBJECT_AS3_BitmapData){return false}this._raster_analyzer=new FLARRasterAnalyzer_Histogram(a);return true}});INyARRasterFilter=ASKlass("INyARRasterFilter",{doFilter:function(b,a){}});INyARRasterFilter_Gs2Bin=ASKlass("INyARRasterFilter_Gs2Bin",{doFilter:function(b,a){}});INyARRasterFilter_Rgb2Gs=ASKlass("INyARRasterFilter_Rgb2Gs",{doFilter:function(b,a){}});INyARRasterFilter_Rgb2Bin=ASKlass("INyARRasterFilter_Rgb2Bin",{doFilter:function(b,a){}});NyARRasterFilter_ARToolkitThreshold=ASKlass("NyARRasterFilter_ARToolkitThreshold",INyARRasterFilter_Rgb2Bin,{_threshold:0,_do_threshold_impl:null,NyARRasterFilter_ARToolkitThreshold:function(b,a){this._threshold=b;switch(a){case NyARBufferType.INT1D_X8R8G8B8_32:this._do_threshold_impl=new doThFilterImpl_BUFFERFORMAT_INT1D_X8R8G8B8_32();break;default:throw new NyARException()}},setThreshold:function(a){this._threshold=a},doFilter:function(b,a){NyAS3Utils.assert(a.isEqualBufferType(NyARBufferType.INT1D_BIN_8));NyAS3Utils.assert(b.getSize().isEqualSize_NyARIntSize(a.getSize())==true);this._do_threshold_impl.doThFilter(b,a,a.getSize(),this._threshold);return}});IdoThFilterImpl=ASKlass("IdoThFilterImpl",{doThFilter:function(b,a,d,c){},});doThFilterImpl_BUFFERFORMAT_INT1D_X8R8G8B8_32=ASKlass("doThFilterImpl_BUFFERFORMAT_INT1D_X8R8G8B8_32",IdoThFilterImpl,{doThFilter:function(k,a,g,l){NyAS3Utils.assert(a.isEqualBufferType(NyARBufferType.INT1D_BIN_8));var c=(IntVector)(a.getBuffer());var f=(IntVector)(k.getBuffer());var b=l*3;var i;var m;var d=g.h*g.w;var e=d-(d%8);for(m=d-1;m>=e;m--){i=f[m];c[m]=(((i>>16)&255)+((i>>8)&255)+(i&255))<=b?0:1}for(;m>=0;){i=f[m];c[m]=(((i>>16)&255)+((i>>8)&255)+(i&255))<=b?0:1;m--;i=f[m];c[m]=(((i>>16)&255)+((i>>8)&255)+(i&255))<=b?0:1;m--;i=f[m];c[m]=(((i>>16)&255)+((i>>8)&255)+(i&255))<=b?0:1;m--;i=f[m];c[m]=(((i>>16)&255)+((i>>8)&255)+(i&255))<=b?0:1;m--;i=f[m];c[m]=(((i>>16)&255)+((i>>8)&255)+(i&255))<=b?0:1;m--;i=f[m];c[m]=(((i>>16)&255)+((i>>8)&255)+(i&255))<=b?0:1;m--;i=f[m];c[m]=(((i>>16)&255)+((i>>8)&255)+(i&255))<=b?0:1;m--;i=f[m];c[m]=(((i>>16)&255)+((i>>8)&255)+(i&255))<=b?0:1;m--}}});NyARContourPickup=ASKlass("NyARContourPickup",{_getContour_xdir:new IntVector([0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1]),_getContour_ydir:new IntVector([-1,-1,0,1,1,1,0,-1,-1,-1,0,1,1,1,0]),getContour_NyARBinRaster:function(b,f,a,c,e,d){return this.impl_getContour(b,0,f,a,c,e,d)},getContour_NyARGrayscaleRaster:function(b,c,g,a,d,f,e){return this.impl_getContour(b,c,g,a,d,f,e)},impl_getContour:function(g,m,e,f,d,b,a){var n=this._getContour_xdir;var t=this._getContour_ydir;var v=g.getBuffer();var s=g.getWidth();var z=g.getHeight();var p=1;b[0]=e;a[0]=f;var q=5;var w=e;var o=f;for(;;){q=(q+5)%8;if(w>=1&&w<s-1&&o>=1&&o<z-1){for(;;){if(v[(o+t[q])*s+(w+n[q])]<=m){break}q++;if(v[(o+t[q])*s+(w+n[q])]<=m){break}q++;if(v[(o+t[q])*s+(w+n[q])]<=m){break}q++;if(v[(o+t[q])*s+(w+n[q])]<=m){break}q++;if(v[(o+t[q])*s+(w+n[q])]<=m){break}q++;if(v[(o+t[q])*s+(w+n[q])]<=m){break}q++;if(v[(o+t[q])*s+(w+n[q])]<=m){break}q++;if(v[(o+t[q])*s+(w+n[q])]<=m){break}throw new NyARException()}}else{var u;for(u=0;u<8;u++){var l=w+n[q];var k=o+t[q];if(l>=0&&l<s&&k>=0&&k<z){if(v[(k)*s+(l)]<=m){break}}q++}if(u==8){throw new NyARException()}}q=q%8;w=w+n[q];o=o+t[q];b[p]=w;a[p]=o;if(w==e&&o==f){p++;break}p++;if(p==d){return p}}return p}});NyARCoord2Linear=ASKlass("NyARCoord2Linear",{_xpos:null,_ypos:null,_pca:null,__getSquareLine_evec:new NyARDoubleMatrix22(),__getSquareLine_mean:new FloatVector(2),__getSquareLine_ev:new FloatVector(2),_dist_factor:null,NyARCoord2Linear:function(b,a){this._dist_factor=new NyARObserv2IdealMap(a,b);this._pca=new NyARPca2d_MatrixPCA_O2();this._xpos=new FloatVector(b.w+b.h);this._ypos=new FloatVector(b.w+b.h);return},coord2Line:function(b,g,a,e,i,m){var c,l,f;var d;if(g>=b){d=(g-b+1)*0.05+0.5;l=Math.floor(b+d);f=Math.floor(g-d)}else{d=((g+i-b+1)%i)*0.05+0.5;l=(Math.floor(b+d))%i;f=(Math.floor(g+i-d))%i}if(l<=f){c=f-l+1;this._dist_factor.observ2IdealBatch(a,e,l,c,this._xpos,this._ypos,0)}else{c=f+1+i-l;this._dist_factor.observ2IdealBatch(a,e,l,i-l,this._xpos,this._ypos,0);this._dist_factor.observ2IdealBatch(a,e,0,f+1,this._xpos,this._ypos,i-l)}if(c<2){return false}var k=this.__getSquareLine_evec;var o=this.__getSquareLine_mean;this._pca.pca(this._xpos,this._ypos,c,k,this.__getSquareLine_ev,o);m.dy=k.m01;m.dx=-k.m00;m.c=-(m.dy*o[0]+m.dx*o[1]);return true}});NyARVertexCounter=ASKlass("NyARVertexCounter",{vertex:new IntVector(10),number_of_vertex:0,thresh:0,x_coord:null,y_coord:null,getVertex:function(b,f,e,c,a,d){this.number_of_vertex=0;this.thresh=d;this.x_coord=b;this.y_coord=f;return this.get_vertex(c,a,e)},get_vertex:function(s,k,e){var g;var m;var r=0;var f=this.x_coord;var q=this.y_coord;var p=q[k]-q[s];var o=f[s]-f[k];var n=f[k]*q[s]-q[k]*f[s];var l=0;if(s<k){for(g=s+1;g<k;g++){m=p*f[g]+o*q[g]+n;if(m*m>l){l=m*m;r=g}}}else{for(g=s+1;g<e;g++){m=p*f[g]+o*q[g]+n;if(m*m>l){l=m*m;r=g}}for(g=0;g<k;g++){m=p*f[g]+o*q[g]+n;if(m*m>l){l=m*m;r=g}}}if(l/(p*p+o*o)>this.thresh){if(!this.get_vertex(s,r,e)){return false}if(this.number_of_vertex>5){return false}this.vertex[this.number_of_vertex]=r;this.number_of_vertex++;if(!this.get_vertex(r,k,e)){return false}}return true}});NyARCoord2SquareVertexIndexes=ASKlass("NyARCoord2SquareVertexIndexes",{VERTEX_FACTOR:1,__getSquareVertex_wv1:new NyARVertexCounter(),__getSquareVertex_wv2:new NyARVertexCounter(),NyARCoord2SquareVertexIndexes:function(){return},getVertexIndexes:function(e,m,b,g,a){var i=this.__getSquareVertex_wv1;var f=this.__getSquareVertex_wv2;var n=this.getFarPoint(e,m,b,0);var c=(n+b)%b;var l=this.getFarPoint(e,m,b,n);var d=(g/0.75)*0.01*this.VERTEX_FACTOR;a[0]=n;if(!i.getVertex(e,m,b,n,l,d)){return false}if(!f.getVertex(e,m,b,l,c,d)){return false}var k;if(i.number_of_vertex==1&&f.number_of_vertex==1){a[1]=i.vertex[0];a[2]=l;a[3]=f.vertex[0]}else{if(i.number_of_vertex>1&&f.number_of_vertex==0){if(l>=n){k=(l-n)/2+n}else{k=((l+b-n)/2+n)%b}if(!i.getVertex(e,m,b,n,k,d)){return false}if(!f.getVertex(e,m,b,k,l,d)){return false}if(i.number_of_vertex==1&&f.number_of_vertex==1){a[1]=i.vertex[0];a[2]=f.vertex[0];a[3]=l}else{return false}}else{if(i.number_of_vertex==0&&f.number_of_vertex>1){if(l<=c){k=(l+c)/2}else{k=((l+b+c)/2)%b}if(!i.getVertex(e,m,b,l,k,d)){return false}if(!f.getVertex(e,m,b,k,c,d)){return false}if(i.number_of_vertex==1&&f.number_of_vertex==1){a[1]=l;a[2]=i.vertex[0];a[3]=f.vertex[0]}else{return false}}else{return false}}}return true},getFarPoint:function(c,e,a,p){var n=c[p];var l=e[p];var g=0;var o,m,k;var f=0;var b;for(b=p+1;b<a;b++){m=c[b]-n;k=e[b]-l;o=m*m+k*k;if(o>g){g=o;f=b}}for(b=0;b<p;b++){m=c[b]-n;k=e[b]-l;o=m*m+k*k;if(o>g){g=o;f=b}}return f}});NyARSquare=ASKlass("NyARSquare",{line:NyARLinear.createArray(4),sqvertex:NyARDoublePoint2d.createArray(4),getCenter2d:function(a){a.x=(this.sqvertex[0].x+this.sqvertex[1].x+this.sqvertex[2].x+this.sqvertex[3].x)/4;a.y=(this.sqvertex[0].y+this.sqvertex[1].y+this.sqvertex[2].y+this.sqvertex[3].y)/4;return}});NyARSquareContourDetector=ASKlass("NyARSquareContourDetector",{detectMarkerCB:function(a,b){NyARException.trap("getRgbPixelReader not implemented.")}});NyARSquareContourDetector_IDetectMarkerCallback=ASKlass("NyARSquareContourDetector_IDetectMarkerCallback",{onSquareDetect:function(a,c,d,b,e){}});RleLabelOverlapChecker=ASKlass("RleLabelOverlapChecker",NyARLabelOverlapChecker,{RleLabelOverlapChecker:function(a){NyARLabelOverlapChecker.initialize.call(this,a)},createArray:function(a){return new Array(a)}});NyARSquareContourDetector_Rle=ASKlass("NyARSquareContourDetector_Rle",NyARSquareContourDetector,{AR_AREA_MAX:100000,AR_AREA_MIN:70,_width:0,_height:0,_labeling:null,_overlap_checker:new RleLabelOverlapChecker(32),_cpickup:new NyARContourPickup(),_stack:null,_coord2vertex:new NyARCoord2SquareVertexIndexes(),_max_coord:0,_xcoord:null,_ycoord:null,NyARSquareContourDetector_Rle:function(b){this._width=b.w;this._height=b.h;this._labeling=new NyARLabeling_Rle(this._width,this._height);this._labeling.setAreaRange(this.AR_AREA_MAX,this.AR_AREA_MIN);this._stack=new NyARRleLabelFragmentInfoStack(b.w*b.h*2048/(320*240)+32);var a=(this._width+this._height)*2;this._max_coord=a;this._xcoord=new IntVector(a);this._ycoord=new IntVector(a);return},__detectMarker_mkvertex:new IntVector(4),detectMarkerCB:function(o,k){var f=this._stack;var s=this._overlap_checker;var a=this._labeling.labeling_NyARBinRaster(o,0,o.getHeight(),f);if(a<1){return}f.sortByArea();var g=(f.getArray());var q=this._width;var p=this._height;var l=this._xcoord;var c=this._ycoord;var n=this._max_coord;var b=this.__detectMarker_mkvertex;s.setMaxLabels(a);for(var m=0;m<a;m++){var r=g[m];var d=r.area;if(r.clip_l==0||r.clip_r==q-1){continue}if(r.clip_t==0||r.clip_b==p-1){continue}if(!s.check(r)){continue}var e=_cpickup.getContour_NyARBinRaster(o,r.entry_x,r.clip_t,n,l,c);if(e==n){continue}if(!this._coord2vertex.getVertexIndexes(l,c,e,d,b)){continue}k.onSquareDetect(this,l,c,e,b);s.push(r)}return}});NyARSquareStack=ASKlass("NyARSquareStack",NyARObjectStack,{NyARSquareStack:function(a){NyARObjectStack.initialize.call(this,a)},createArray:function(c){var a=new Array(c);for(var b=0;b<c;b++){a[b]=new NyARSquare()}return(a)}});FLARSquare=NyARSquare;Cxdir=new IntVector([0,1,1,1,0,-1,-1,-1]);Cydir=new IntVector([-1,-1,0,1,1,1,0,-1]);FLContourPickup=ASKlass("FLContourPickup",NyARContourPickup,{FLContourPickup:function(){},getContour_FLARBinRaster:function(g,e,f,d,b,a){var m=this._getContour_xdir;var s=this._getContour_ydir;var u=g.getBuffer();var q=g.getWidth();var w=g.getHeight();var o=1;b[0]=e;a[0]=f;var p=5;var v=e;var n=f;for(;;){p=(p+5)%8;if(v>=1&&v<q-1&&n>=1&&n<w-1){for(;;){if(u.getPixel(v+m[p],n+s[p])>0){break}p++;if(u.getPixel(v+m[p],n+s[p])>0){break}p++;if(u.getPixel(v+m[p],n+s[p])>0){break}p++;if(u.getPixel(v+m[p],n+s[p])>0){break}p++;if(u.getPixel(v+m[p],n+s[p])>0){break}p++;if(u.getPixel(v+m[p],n+s[p])>0){break}p++;if(u.getPixel(v+m[p],n+s[p])>0){break}p++;if(u.getPixel(v+m[p],n+s[p])>0){break}return -1}}else{var t;for(t=0;t<8;t++){var l=v+m[p];var k=n+s[p];if(l>=0&&l<q&&k>=0&&k<w){if(u.getPixel(k,l)>0){break}}p++}if(t==8){return -1}}p=p%8;v=v+m[p];n=n+s[p];b[o]=v;a[o]=n;if(v==e&&n==f){o++;break}o++;if(o==d){return o}}return o}});FLARSquareContourDetector=ASKlass("FLARSquareContourDetector",NyARSquareContourDetector,{AR_AREA_MAX:100000,AR_AREA_MIN:70,_width:0,_height:0,_labeling:null,_overlap_checker:new NyARLabelOverlapChecker(32),_cpickup:new FLContourPickup(),_stack:null,_coord2vertex:new NyARCoord2SquareVertexIndexes(),_max_coord:0,_xcoord:null,_ycoord:null,FLARSquareContourDetector:function(b){this._width=b.w;this._height=b.h;this._labeling=new NyARLabeling_Rle(this._width,this._height);this._stack=new NyARRleLabelFragmentInfoStack(b.w*b.h*2048/(320*240)+32);var a=(this._width+this._height)*2;this._max_coord=a;this._xcoord=new IntVector(a);this._ycoord=new IntVector(a);return},setAreaRange:function(a,b){this._labeling.setAreaRange(a,b)},__detectMarker_mkvertex:new IntVector(4),detectMarkerCB:function(g,r){var t=this._stack;var m=this._overlap_checker;var l=this._labeling.labeling(g,t);if(l<1){return}t.sortByArea();var p=t.getArray();var o=this._width;var d=this._height;var a=this._xcoord;var s=this._ycoord;var u=this._max_coord;var e=this.__detectMarker_mkvertex;m.setMaxLabels(l);for(var q=0;q<l;q++){var f=p[q];var b=f.area;if(f.clip_l==0||f.clip_r==o-1){continue}if(f.clip_t==0||f.clip_b==d-1){continue}if(!m.check(f)){continue}if(window.DEBUG){var c=document.getElementById("debugCanvas").getContext("2d");c.strokeStyle="red";c.strokeRect(f.clip_l,f.clip_t,f.clip_r-f.clip_l,f.clip_b-f.clip_t);c.fillStyle="red";c.fillRect(f.entry_x-1,f.clip_t-1,3,3);c.fillStyle="cyan";c.fillRect(f.pos_x-1,f.pos_y-1,3,3)}var n=this._cpickup.getContour_FLARBinRaster(g,f.entry_x,f.clip_t,u,a,s);if(n==-1){return -1}if(n==u){continue}var k=this._coord2vertex.getVertexIndexes(a,s,n,b,e);if(!k){continue}r.onSquareDetect(this,a,s,n,e);m.push(f)}return}});INyARTransMat=Klass({transMat:function(b,c,a){},transMatContinue:function(a,b,c){}});NyARRectOffset=ASKlass("NyARRectOffset",{vertex:NyARDoublePoint3d.createArray(4),createArray:function(c){var a=new Array(c);for(var b=0;b<c;b++){a[b]=new NyARRectOffset()}return a},setSquare:function(c){var b=c/2;var a;a=this.vertex[0];a.x=-b;a.y=b;a.z=0;a=this.vertex[1];a.x=b;a.y=b;a.z=0;a=this.vertex[2];a.x=b;a.y=-b;a.z=0;a=this.vertex[3];a.x=-b;a.y=-b;a.z=0;return}});NyARTransMat=ASKlass("NyARTransMat",INyARTransMat,{_projection_mat_ref:null,_rotmatrix:null,_transsolver:null,_mat_optimize:null,_ref_dist_factor:null,NyARTransMat:function(a){var c=a.getDistortionFactor();var b=a.getPerspectiveProjectionMatrix();this._transsolver=new NyARTransportVectorSolver(b,4);this._rotmatrix=new NyARRotMatrix(b);this._mat_optimize=new NyARPartialDifferentiationOptimize(b);this._ref_dist_factor=c;this._projection_mat_ref=b;this.__transMat_vertex_2d=NyARDoublePoint2d.createArray(4);this.__transMat_vertex_3d=NyARDoublePoint3d.createArray(4);this.__transMat_trans=new NyARDoublePoint3d();this.__rot=new NyARDoubleMatrix33()},makeErrThreshold:function(g){var f,d,e,c;f=g[0].x-g[2].x;d=g[0].y-g[2].y;e=f*f+d*d;f=g[1].x-g[3].x;d=g[1].y-g[3].y;c=f*f+d*d;return(Math.sqrt(e>c?e:c))/200},transMat:function(e,g,c){var b=this.__transMat_trans;var a=this.makeErrThreshold(e.sqvertex);var f=this.__transMat_vertex_2d;var d=this.__transMat_vertex_3d;this._ref_dist_factor.ideal2ObservBatch(e.sqvertex,f,4);this._transsolver.set2dVertex(f,4);this._rotmatrix.initRotBySquare(e.line,e.sqvertex);this._rotmatrix.getPoint3dBatch(g.vertex,d,4);this._transsolver.solveTransportVector(d,b);c.error=this.optimize(this._rotmatrix,b,this._transsolver,g.vertex,f,a);this.updateMatrixValue(this._rotmatrix,b,c);return},transMatContinue:function(l,b,g){var n=this.__transMat_trans;if(!g.has_value){this.transMat(l,b,g);return}var c=this.makeErrThreshold(l.sqvertex);var k=this.__transMat_vertex_2d;var m=this.__transMat_vertex_3d;this._ref_dist_factor.ideal2ObservBatch(l.sqvertex,k,4);this._transsolver.set2dVertex(k,4);this._rotmatrix.initRotByPrevResult(g);this._rotmatrix.getPoint3dBatch(b.vertex,m,4);this._transsolver.solveTransportVector(m,n);var e=this.errRate(this._rotmatrix,n,b.vertex,k,4,m);var a=this.__rot;if(e<g.error+c){a.setValue_NyARDoubleMatrix33(this._rotmatrix);for(var f=0;f<5;f++){this._mat_optimize.modifyMatrix(a,n,b.vertex,k,4);var d=this.errRate(a,n,b.vertex,k,4,m);if(e-d<c/2){break}this._transsolver.solveTransportVector(m,n);this._rotmatrix.setValue_NyARDoubleMatrix33(a);e=d}this.updateMatrixValue(this._rotmatrix,n,g)}else{this._rotmatrix.initRotBySquare(l.line,l.sqvertex);this._rotmatrix.getPoint3dBatch(b.vertex,m,4);this._transsolver.solveTransportVector(m,n);e=this.optimize(this._rotmatrix,n,this._transsolver,b.vertex,k,c);this.updateMatrixValue(this._rotmatrix,n,g)}g.error=e;return},optimize:function(n,k,l,e,d,g){var m=this.__transMat_vertex_3d;var c=this.errRate(n,k,e,d,4,m);var a=this.__rot;a.setValue_NyARDoubleMatrix33(n);for(var f=0;f<5;f++){this._mat_optimize.modifyMatrix(a,k,e,d,4);var b=this.errRate(a,k,e,d,4,m);if(c-b<g){break}l.solveTransportVector(m,k);n.setValue_NyARDoubleMatrix33(a);c=b}return c},errRate:function(s,q,u,c,o,a){var k=this._projection_mat_ref;var b=k.m00;var y=k.m01;var x=k.m02;var l=k.m11;var g=k.m12;var e=0;for(var v=0;v<o;v++){var r,d,t;a[v].x=r=s.m00*u[v].x+s.m01*u[v].y+s.m02*u[v].z;a[v].y=d=s.m10*u[v].x+s.m11*u[v].y+s.m12*u[v].z;a[v].z=t=s.m20*u[v].x+s.m21*u[v].y+s.m22*u[v].z;r+=q.x;d+=q.y;t+=q.z;var f=r*b+d*y+t*x;var w=d*l+t*g;var n=t;var p=c[v].x-f/n;var m=c[v].y-w/n;e+=p*p+m*m}return e/o},updateMatrixValue:function(a,c,b){b.m00=a.m00;b.m01=a.m01;b.m02=a.m02;b.m03=c.x;b.m10=a.m10;b.m11=a.m11;b.m12=a.m12;b.m13=c.y;b.m20=a.m20;b.m21=a.m21;b.m22=a.m22;b.m23=c.z;b.has_value=true;return}});NyARTransMatResult=ASKlass("NyARTransMatResult",NyARDoubleMatrix34,{error:0,has_value:false,getZXYAngle:function(b){var a=this.m21;if(a>=1){b.x=Math.PI/2;b.y=0;b.z=Math.atan2(-this.m10,this.m00)}else{if(a<=-1){b.x=-Math.PI/2;b.y=0;b.z=Math.atan2(-this.m10,this.m00)}else{b.x=Math.asin(a);b.z=Math.atan2(-this.m01,this.m11);b.y=Math.atan2(-this.m20,this.m22)}}},transformVertex_Number:function(b,a,d,c){c.x=this.m00*b+this.m01*a+this.m02*d+this.m03;c.y=this.m10*b+this.m11*a+this.m12*d+this.m13;c.z=this.m20*b+this.m21*a+this.m22*d+this.m23;return},transformVertex_NyARDoublePoint3d:function(a,b){this.transformVertex_Number(a.x,a.y,a.z,b)}});NyARPartialDifferentiationOptimize=ASKlass("NyARPartialDifferentiationOptimize",{_projection_mat_ref:null,NyARPartialDifferentiationOptimize:function(a){this._projection_mat_ref=a;this.__angles_in=TSinCosValue.createArray(3);this.__ang=new NyARDoublePoint3d();this.__sin_table=new FloatVector(4);return},sincos2Rotation_ZXY:function(g,d){var f=g[0].sin_val;var i=g[0].cos_val;var c=g[1].sin_val;var e=g[1].cos_val;var a=g[2].sin_val;var b=g[2].cos_val;d.m00=b*e-a*f*c;d.m01=-a*i;d.m02=b*c+a*f*e;d.m10=a*e+b*f*c;d.m11=b*i;d.m12=a*c-b*f*e;d.m20=-i*c;d.m21=f;d.m22=e*i},rotation2Sincos_ZXY:function(b,g,f){var a,e,d;var c=b.m21;if(c>=1){a=Math.PI/2;e=0;d=Math.atan2(-b.m10,b.m00)}else{if(c<=-1){a=-Math.PI/2;e=0;d=Math.atan2(-b.m10,b.m00)}else{a=Math.asin(c);e=Math.atan2(-b.m20,b.m22);d=Math.atan2(-b.m01,b.m11)}}f.x=a;f.y=e;f.z=d;g[0].sin_val=Math.sin(a);g[0].cos_val=Math.cos(a);g[1].sin_val=Math.sin(e);g[1].cos_val=Math.cos(e);g[2].sin_val=Math.sin(d);g[2].cos_val=Math.cos(d);return},optimizeParamX:function(A,z,ag,x,V,r,y){var Q=this._projection_mat_ref;var l=A.sin_val;var w=A.cos_val;var k=z.sin_val;var u=z.cos_val;var s,v,t,q,p,n;s=v=t=q=p=n=0;for(var U=0;U<r;U++){var G,F,D;G=x[U].x;F=x[U].y;D=x[U].z;var P=Q.m00;var I=Q.m01;var H=Q.m02;var o=Q.m11;var m=Q.m12;var T=(P*(-k*l*G+k*w*D)+I*(u*l*G-u*w*D)+H*(F));var S=(P*(-k*F)+I*((u*F))+H*(-l*G+w*D));var R=(P*(ag.x+u*w*G+u*l*D)+I*((ag.y+k*w*G+k*l*D))+H*(ag.z));var E=(o*(u*l*G-u*w*D)+m*(F));var C=(o*((u*F))+m*(-l*G+w*D));var B=(o*((ag.y+k*w*G+k*l*D))+m*(ag.z));var af=(F);var ad=(-l*G+w*D);var ac=ag.z;var g=V[U].x;var ae=V[U].y;var ab,aa,Z,Y,X,W;ab=(g*af-T);aa=(g*ad-S);Z=(g*ac-R);Y=(ae*af-E);X=(ae*ad-C);W=(ae*ac-B);s+=Y*X+ab*aa;p+=Y*Y+ab*ab;v+=Y*W+ab*Z;q+=X*X+aa*aa;t+=X*W+aa*Z;n+=W*W+Z*Z}s*=2;v*=2;t*=2;return this.getMinimumErrorAngleFromParam(s,v,t,q,p,n,y)},optimizeParamY:function(A,z,ag,x,V,r,y){var Q=this._projection_mat_ref;var l=A.sin_val;var w=A.cos_val;var k=z.sin_val;var u=z.cos_val;var s,v,t,q,p,n;s=v=t=q=p=n=0;for(var U=0;U<r;U++){var G,F,D;G=x[U].x;F=x[U].y;D=x[U].z;var P=Q.m00;var I=Q.m01;var H=Q.m02;var o=Q.m11;var m=Q.m12;var T=(P*(-k*l*G+u*D)+I*(u*l*G+k*D)+H*(-w*G));var S=(I*(k*G-u*l*D)+P*(u*G+k*l*D)+H*(w*D));var R=(P*(ag.x+(-k*w)*F)+I*(ag.y+(u*w)*F)+H*(ag.z+(l)*F));var E=(o*(u*l*G+k*D)+m*(-w*G));var C=(o*(k*G-u*l*D)+m*(w*D));var B=(o*(ag.y+(u*w)*F)+m*(ag.z+(l)*F));var af=(-w*G);var ad=(w*D);var ac=ag.z+(l)*F;var g=V[U].x;var ae=V[U].y;var ab,aa,Z,Y,X,W;ab=(g*af-T);aa=(g*ad-S);Z=(g*ac-R);Y=(ae*af-E);X=(ae*ad-C);W=(ae*ac-B);s+=Y*X+ab*aa;p+=Y*Y+ab*ab;v+=Y*W+ab*Z;q+=X*X+aa*aa;t+=X*W+aa*Z;n+=W*W+Z*Z}s*=2;v*=2;t*=2;return this.getMinimumErrorAngleFromParam(s,v,t,q,p,n,y)},optimizeParamZ:function(A,z,ag,x,V,r,y){var Q=this._projection_mat_ref;var l=A.sin_val;var w=A.cos_val;var k=z.sin_val;var v=z.cos_val;var s,u,t,q,p,n;s=u=t=q=p=n=0;for(var U=0;U<r;U++){var G,F,D;G=x[U].x;F=x[U].y;D=x[U].z;var P=Q.m00;var I=Q.m01;var H=Q.m02;var o=Q.m11;var m=Q.m12;var T=(P*(-l*k*G-w*F+l*v*D)+I*(G*v+k*D));var S=(I*(l*G*k+w*F-l*D*v)+P*(v*G+k*D));var R=P*ag.x+I*(ag.y)+H*(-w*k)*G+H*(l)*F+H*((v*w)*D+ag.z);var E=o*(G*v+k*D);var C=o*(l*G*k+w*F-l*D*v);var B=(o*ag.y+m*(-w*k)*G+m*((l)*F+(v*w)*D+ag.z));var af=0;var ad=0;var ac=((-w*k)*G+(l)*F+(v*w)*D+ag.z);var g=V[U].x;var ae=V[U].y;var ab,aa,Z,Y,X,W;ab=(g*af-T);aa=(g*ad-S);Z=(g*ac-R);Y=(ae*af-E);X=(ae*ad-C);W=(ae*ac-B);s+=Y*X+ab*aa;p+=Y*Y+ab*ab;u+=Y*W+ab*Z;q+=X*X+aa*aa;t+=X*W+aa*Z;n+=W*W+Z*Z}s*=2;u*=2;t*=2;return this.getMinimumErrorAngleFromParam(s,u,t,q,p,n,y)},modifyMatrix:function(c,g,f,a,e){var d=this.__angles_in;var b=this.__ang;this.rotation2Sincos_ZXY(c,d,b);b.x+=this.optimizeParamX(d[1],d[2],g,f,a,e,b.x);b.y+=this.optimizeParamY(d[0],d[2],g,f,a,e,b.y);b.z+=this.optimizeParamZ(d[0],d[1],g,f,a,e,b.z);c.setZXYAngle_Number(b.x,b.y,b.z);return},getMinimumErrorAngleFromParam:function(d,f,e,c,b,a,w){var t=this.__sin_table;var p=(b-c)/d;var r=f/d;var q=-e/d;var v=NyAREquationSolver.solve4Equation(-4*p*p-4,4*q-4*r*p,4*p*p-(q*q-4)-r*r,4*r*p-2*q,r*r-1,t);var o=Number.MAX_VALUE;var m=Number.MAX_VALUE;var u=Number.MAX_VALUE;var s=Number.MAX_VALUE;for(var x=0;x<v;x++){var n=t[x];var A=Math.sqrt(1-(n*n));var B=2*A*n*p+n*(q-n)+A*(A+r);var z=2*(-A)*n*p+n*(q-n)+(-A)*((-A)+r);B=B<0?-B:B;z=z<0?-z:z;A=(B<z)?A:-A;var y=Math.atan2(n,A);var k=b*n*n+(d*A+f)*n+c*A*A+e*A+a;if(u>k){s=u;m=o;u=k;o=y}else{if(s>k){s=k;m=y}}}var l;l=o-w;if(l>Math.PI){l=(o-Math.PI*2)-w}else{if(l<-Math.PI){l=(o+Math.PI*2)-w}}var g;g=m-w;if(g>Math.PI){g=(m-Math.PI*2)-w}else{if(g<-Math.PI){g=(m+Math.PI*2)-w}}return Math.abs(g)<Math.abs(l)?g:l}});TSinCosValue=ASKlass("TSinCosValue",{cos_val:0,sin_val:0,createArray:function(c){var b=new Array(c);for(var a=0;a<c;a++){b[a]=new TSinCosValue()}return b}});NyARRotMatrix=ASKlass("NyARRotMatrix",NyARDoubleMatrix33,{NyARRotMatrix:function(a){this.__initRot_vec1=new NyARRotVector(a);this.__initRot_vec2=new NyARRotVector(a);return},__initRot_vec1:null,__initRot_vec2:null,initRotByPrevResult:function(a){this.m00=a.m00;this.m01=a.m01;this.m02=a.m02;this.m10=a.m10;this.m11=a.m11;this.m12=a.m12;this.m20=a.m20;this.m21=a.m21;this.m22=a.m22;return},initRotBySquare:function(i,f){var e=this.__initRot_vec1;var d=this.__initRot_vec2;e.exteriorProductFromLinear(i[0],i[2]);e.checkVectorByVertex(f[0],f[1]);d.exteriorProductFromLinear(i[1],i[3]);d.checkVectorByVertex(f[3],f[0]);NyARRotVector.checkRotation(e,d);this.m00=e.v1;this.m10=e.v2;this.m20=e.v3;this.m01=d.v1;this.m11=d.v2;this.m21=d.v3;var g=e.v2*d.v3-e.v3*d.v2;var a=e.v3*d.v1-e.v1*d.v3;var c=e.v1*d.v2-e.v2*d.v1;var b=Math.sqrt(g*g+a*a+c*c);this.m02=g/b;this.m12=a/b;this.m22=c/b;return},getPoint3d:function(b,c){var a=b.x;var e=b.y;var d=b.z;c.x=this.m00*a+this.m01*e+this.m02*d;c.y=this.m10*a+this.m11*e+this.m12*d;c.z=this.m20*a+this.m21*e+this.m22*d;return},getPoint3dBatch:function(a,d,l){for(var c=l-1;c>=0;c--){var b=d[c];var k=a[c];var g=k.x;var f=k.y;var e=k.z;b.x=this.m00*g+this.m01*f+this.m02*e;b.y=this.m10*g+this.m11*f+this.m12*e;b.z=this.m20*g+this.m21*f+this.m22*e}return}});NyARRotVector=ASKlass("NyARRotVector",{v1:0,v2:0,v3:0,_projection_mat_ref:null,_inv_cpara_array_ref:null,NyARRotVector:function(c){var a=new NyARMat(3,3);var b=a.getArray();b[0][0]=c.m00;b[0][1]=c.m01;b[0][2]=c.m02;b[1][0]=c.m10;b[1][1]=c.m11;b[1][2]=c.m12;b[2][0]=c.m20;b[2][1]=c.m21;b[2][2]=c.m22;a.matrixSelfInv();this._projection_mat_ref=c;this._inv_cpara_array_ref=a.getArray()},exteriorProductFromLinear:function(f,d){var a=this._projection_mat_ref;var e=f.dy*d.dx-d.dy*f.dx;var c=f.dx*d.c-d.dx*f.c;var b=f.c*d.dy-d.c*f.dy;var l=e*(a.m01*a.m12-a.m02*a.m11)+c*a.m11-b*a.m01;var k=-e*a.m00*a.m12+b*a.m00;var i=e*a.m00*a.m11;var g=Math.sqrt(l*l+k*k+i*i);this.v1=l/g;this.v2=k/g;this.v3=i/g;return},checkVectorByVertex:function(q,k){var l;var d=this._inv_cpara_array_ref;var a=d[0][0]*q.x*10+d[0][1]*q.y*10+d[0][2]*10;var c=d[1][0]*q.x*10+d[1][1]*q.y*10+d[1][2]*10;var e=d[2][0]*q.x*10+d[2][1]*q.y*10+d[2][2]*10;var f=a+this.v1;var g=c+this.v2;var i=e+this.v3;var b=this._projection_mat_ref;l=b.m20*a+b.m21*c+b.m22*e;if(l==0){throw new NyARException()}var p=(b.m00*a+b.m01*c+b.m02*e)/l;var o=(b.m10*a+b.m11*c+b.m12*e)/l;l=b.m20*f+b.m21*g+b.m22*i;if(l==0){throw new NyARException()}var n=(b.m00*f+b.m01*g+b.m02*i)/l;var m=(b.m10*f+b.m11*g+b.m12*i)/l;var r=(k.x-q.x)*(n-p)+(k.y-q.y)*(m-o);if(r<0){this.v1=-this.v1;this.v2=-this.v2;this.v3=-this.v3}},checkRotation:function(p,o){var I;var P;var i=p.v1;var g=p.v2;var e=p.v3;var L=o.v1;var K=o.v2;var J=o.v3;var A=g*J-e*K;var y=e*L-i*J;var v=i*K-g*L;I=Math.sqrt(A*A+y*y+v*v);if(I==0){throw new NyARException()}A/=I;y/=I;v/=I;var G=i*L+g*K+e*J;if(G<0){G=-G}var H=(Math.sqrt(G+1)+Math.sqrt(1-G))*0.5;if(y*i-g*A!=0){P=0}else{if(v*i-e*A!=0){I=g;g=e;e=I;I=y;y=v;v=I;P=1}else{I=i;i=e;e=I;I=A;A=v;v=I;P=2}}if(y*i-g*A==0){throw new NyARException()}var B,z,x,u;var U,T,S,R;var Q,F,n;var O,E,m;var N,D,l;var M,C,k;B=(g*v-y*e)/(y*i-g*A);z=(y*H)/(y*i-g*A);x=(i*v-A*e)/(A*g-i*y);u=(A*H)/(A*g-i*y);U=B*B+x*x+1;T=B*z+x*u;S=z*z+u*u-1;R=T*T-U*S;if(R<0){throw new NyARException()}n=(-T+Math.sqrt(R))/U;Q=B*n+z;F=x*n+u;m=(-T-Math.sqrt(R))/U;O=B*m+z;E=x*m+u;if(P==1){I=F;F=n;n=I;I=E;E=m;m=I;I=g;g=e;e=I;I=y;y=v;v=I;P=0}if(P==2){I=Q;Q=n;n=I;I=O;O=m;m=I;I=i;i=e;e=I;I=A;A=v;v=I;P=0}if(y*L-K*A!=0){P=0}else{if(v*L-J*A!=0){I=K;K=J;J=I;I=y;y=v;v=I;P=1}else{I=L;L=J;J=I;I=A;A=v;v=I;P=2}}if(y*L-K*A==0){throw new NyARException()}B=(K*v-y*J)/(y*L-K*A);z=(y*H)/(y*L-K*A);x=(L*v-A*J)/(A*K-L*y);u=(A*H)/(A*K-L*y);U=B*B+x*x+1;T=B*z+x*u;S=z*z+u*u-1;R=T*T-U*S;if(R<0){throw new NyARException()}l=(-T+Math.sqrt(R))/U;N=B*l+z;D=x*l+u;k=(-T-Math.sqrt(R))/U;M=B*k+z;C=x*k+u;if(P==1){I=D;D=l;l=I;I=C;C=k;k=I;I=K;K=J;J=I;I=y;y=v;v=I;P=0}if(P==2){I=N;N=l;l=I;I=M;M=k;k=I;I=L;L=J;J=I;I=A;A=v;v=I;P=0}var t=Q*N+F*D+n*l;if(t<0){t=-t}var s=Q*M+F*C+n*k;if(s<0){s=-s}var r=O*N+E*D+m*l;if(r<0){r=-r}var q=O*M+E*C+m*k;if(q<0){q=-q}if(t<s){if(t<r){if(t<q){p.v1=Q;p.v2=F;p.v3=n;o.v1=N;o.v2=D;o.v3=l}else{p.v1=O;p.v2=E;p.v3=m;o.v1=M;o.v2=C;o.v3=k}}else{if(r<q){p.v1=O;p.v2=E;p.v3=m;o.v1=N;o.v2=D;o.v3=l}else{p.v1=O;p.v2=E;p.v3=m;o.v1=M;o.v2=C;o.v3=k}}}else{if(s<r){if(s<q){p.v1=Q;p.v2=F;p.v3=n;o.v1=M;o.v2=C;o.v3=k}else{p.v1=O;p.v2=E;p.v3=m;o.v1=M;o.v2=C;o.v3=k}}else{if(r<q){p.v1=O;p.v2=E;p.v3=m;o.v1=N;o.v2=D;o.v3=l}else{p.v1=O;p.v2=E;p.v3=m;o.v1=M;o.v2=C;o.v3=k}}}return}});INyARTransportVectorSolver=ASKlass("INyARTransportVectorSolver",{set2dVertex:function(b,a){},solveTransportVector:function(b,a){}});NyARTransportVectorSolver=ASKlass("NyARTransportVectorSolver",INyARTransportVectorSolver,{_cx:null,_cy:null,_projection_mat:null,_nmber_of_vertex:0,NyARTransportVectorSolver:function(a,b){this._projection_mat=a;this._cx=new FloatVector(b);this._cy=new FloatVector(b);return},_a00:0,_a01_10:0,_a02_20:0,_a11:0,_a12_21:0,_a22:0,set2dVertex:function(d,r){var g=this._cx;var e=this._cy;var b;var q=this._projection_mat.m00;var p=this._projection_mat.m01;var c=this._projection_mat.m11;var a=this._projection_mat.m12;var o=this._projection_mat.m02;var n,m,k,f;this._a00=r*q*q;this._a01_10=r*q*p;this._a11=r*(p*p+c*c);b=0;n=m=0;for(var l=0;l<r;l++){k=o-(g[l]=d[l].x);f=a-(e[l]=d[l].y);n+=k;m+=f;b+=k*k+f*f}this._a02_20=n*q;this._a12_21=p*n+c*m;this._a22=b;this._nmber_of_vertex=r;return},solveTransportVector:function(z,B){var C=this._nmber_of_vertex;var g=this._projection_mat.m00;var e=this._projection_mat.m01;var d=this._projection_mat.m02;var x=this._projection_mat.m11;var w=this._projection_mat.m12;var b=this._cx;var a=this._cy;var n,m,k;n=m=k=0;for(var A=0;A<C;A++){var v=z[A].z*b[A]-g*z[A].x-e*z[A].y-d*z[A].z;var u=z[A].z*a[A]-x*z[A].y-w*z[A].z;n+=v;m+=u;k+=b[A]*v+a[A]*u}k=d*n+w*m-k;m=e*n+x*m;n=g*n;var F=this._a00;var E=this._a01_10;var D=this._a02_20;var l=this._a11;var f=this._a12_21;var y=this._a22;var t=y*m-f*k;var s=f*m-l*k;var r=E*k-D*m;var q=f*f-l*y;var p=D*f-E*y;var o=D*l-E*f;var c=F*q-E*p+D*o;B.x=(E*t-D*s+n*q)/c;B.y=-(F*t+D*r+n*p)/c;B.z=(F*s+E*r+n*o)/c;return}});FLARTransMatResult=NyARTransMatResult;NyARMath=Klass({sqNorm_NyARDoublePoint2d:function(c,b){var a,d;a=b.x-c.x;d=b.y-c.y;return a*a+d*d},sqNorm_Number:function(c,b,e,d){var a,f;a=e-c;f=d-b;return a*a+f*f},sqNorm_NyARDoublePoint3d:function(c,b){var a,e,d;a=b.x-c.x;e=b.y-c.y;d=b.z-c.z;return a*a+e*e+d*d},cubeRoot:function(b){var a=Math.pow(Math.abs(b),1/3);return(b>=0)?a:-a}});NyAREquationSolver=Klass({solve2Equation_3:function(c,b,a,d){NyAS3Utils.assert(c!=0);return this.solve2Equation_2b(b/c,a/c,d,0)},solve2Equation_2a:function(b,a,c){return this.solve2Equation_2b(b,a,c,0)},solve2Equation_2b:function(b,a,e,d){var c=b*b-4*a;if(c<0){return 0}if(c==0){e[d+0]=-b/(2);return 1}c=Math.sqrt(c);e[d+0]=(-b+c)/(2);e[d+1]=(-b-c)/(2);return 2},solve3Equation_4:function(c,b,a,e,d){NyAS3Utils.assert(c!=0);return this.solve3Equation_3(b/c,a/c,e/c,d)},solve3Equation_3:function(i,g,f,k){var e,m,d,c;m=i/(3);d=m*m-g/3;c=(m*(g-2*m*m)-f)/2;if((e=c*c-d*d*d)==0){c=NyARMath.cubeRoot(c);k[0]=2*c-m;k[1]=-c-m;return 2}else{if(e>0){var a=NyARMath.cubeRoot(c+((c>0)?1:-1)*Math.sqrt(e));var l=d/a;k[0]=a+l-m;return 1}else{e=2*Math.sqrt(d);var n=Math.acos(c/(d*e/2));k[0]=e*Math.cos(n/3)-m;k[1]=e*Math.cos((n+2*Math.PI)/3)-m;k[2]=e*Math.cos((n+4*Math.PI)/3)-m;return 3}}},solve4Equation:function(s,o,m,k,i,B){NyAS3Utils.assert(s!=0);var a,b,c,d,t;a=o/s;b=m/s;c=k/s;d=i/s;t=a/4;var z,y,x;var n=t*t;z=b-6*n;y=c+t*(-2*b+8*n);x=d+t*(-c+b*t)-3*n*n;if(y==0){var e,g;var C=this.solve2Equation_2b(z,x,B,0);switch(C){case 0:return 0;case 1:e=B[0];if(e<0){return 0}if(e==0){B[0]=0-t;return 1}e=Math.sqrt(e);B[0]=e-t;B[1]=-e-t;return 2;case 2:e=B[0];g=B[1];var f=0;if(e>0){e=Math.sqrt(e);B[0]=e-t;B[1]=-e-t;f+=2}if(g>0){g=Math.sqrt(g);B[f+0]=g-t;B[f+1]=-g-t;f+=2}return f;default:throw new NyARException()}}else{var w=this.solve3Equation_1((2*z),(-4*x)+(z*z),-y*y);if(w<0){return 0}var l=Math.sqrt(w);var A,v;A=this.solve2Equation_2b(-l,(z+w)/2+l*y/(2*w),B,0);switch(A){case 0:break;case 1:B[0]=B[0]-t;break;case 2:B[0]=B[0]-t;B[1]=B[1]-t;break;default:throw new NyARException()}v=this.solve2Equation_2b(l,(z+w)/2-l*y/(2*w),B,A);switch(v){case 0:break;case 1:B[A+0]=B[A+0]-t;break;case 2:B[A+0]=B[A+0]-t;B[A+1]=B[A+1]-t;break;default:throw new NyARException()}return A+v}},solve3Equation_1:function(i,g,f){var e,l,d,c;l=i/(3);d=l*l-g/3;c=(l*(g-2*l*l)-f)/2;if((e=c*c-d*d*d)==0){c=NyARMath.cubeRoot(c);return 2*c-l}else{if(e>0){var a=NyARMath.cubeRoot(c+((c>0)?1:-1)*Math.sqrt(e));var k=d/a;return a+k-l}else{e=2*Math.sqrt(d);var m=Math.acos(c/(d*e/2));return e*Math.cos(m/3)-l}}}});NyARPerspectiveParamGenerator_O1=Klass({_local_x:0,_local_y:0,_width:0,_height:0,initialize:function(b,a,d,c){this._height=c;this._width=d;this._local_x=b;this._local_y=a;return},getParam:function(X,w){var s=this._local_x;var r=this._local_y;var B=s+this._width;var z=r+this._height;var e;var m,l,ad,ab,K,H,p,n;var g,d,b,a,V,U,T,S,x,v,u,t,k,i,f,c;var R,Q,O,M,J,G;var ak,aj,ai,ah;var ag,af,ae,ac,aa,Z,Y,W;var P,N,L,I,E,D,A,y;ak=X[0].x;aj=X[1].x;ai=X[2].x;ah=X[3].x;m=-s*ak;l=-r*ak;ad=-B*aj;ab=-r*aj;K=-B*ai;H=-z*ai;p=-s*ah;n=-z*ah;R=K*n-H*p;M=H*s-B*n;J=B*p-K*s;Q=z*(H-n);O=z*(p-K);G=z*(B-s);V=-ad*M-ab*J-B*R;g=(ad*Q+ab*O)+r*R;x=(ab*G-B*Q)+r*M;k=(-B*O-ad*G)+r*J;R=p*l-n*m;Q=n*r-z*l;O=z*m-p*r;M=s*(n-l);J=s*(m-p);G=s*(r-z);d=-z*R-K*Q-H*O;U=(K*M+H*J)+B*R;v=(-H*G-z*M)+B*Q;i=(-z*J+K*G)+B*O;R=m*ab-l*ad;M=l*B-s*ab;J=s*ad-m*B;Q=r*(l-ab);O=r*(ad-m);G=r*(s-B);T=-p*M-n*J-s*R;b=(p*Q+n*O)+z*R;u=(n*G-s*Q)+z*M;f=(-s*O-p*G)+z*J;R=ad*H-ab*K;Q=ab*z-r*H;O=r*K-ad*z;M=B*(ab-H);J=B*(K-ad);G=B*(z-r);a=-r*R-m*Q-l*O;S=m*M+l*J+s*R;t=-l*G-r*M+s*Q;c=-r*J+m*G+s*O;e=(s*(g+a)+B*(d+b));if(e==0){e=0.0001}e=1/e;ag=(g*ak+d*aj+b*ai+a*ah)*e;af=(g+d+b+a)*e;ae=(V*ak+U*aj+T*ai+S*ah)*e;ac=(V+U+T+S)*e;aa=(x*ak+v*aj+u*ai+t*ah)*e;Z=(x+v+u+t)*e;Y=(k*ak+i*aj+f*ai+c*ah)*e;W=(k+i+f+c)*e;ak=X[0].y;aj=X[1].y;ai=X[2].y;ah=X[3].y;m=-s*ak;l=-r*ak;ad=-B*aj;ab=-r*aj;K=-B*ai;H=-z*ai;p=-s*ah;n=-z*ah;R=K*n-H*p;M=H*s-B*n;J=B*p-K*s;Q=z*(H-n);O=z*(p-K);G=z*(B-s);V=-ad*M-ab*J-B*R;g=(ad*Q+ab*O)+r*R;x=(ab*G-B*Q)+r*M;k=(-B*O-ad*G)+r*J;R=p*l-n*m;Q=n*r-z*l;O=z*m-p*r;M=s*(n-l);J=s*(m-p);G=s*(r-z);d=-z*R-K*Q-H*O;U=(K*M+H*J)+B*R;v=(-H*G-z*M)+B*Q;i=(-z*J+K*G)+B*O;R=m*ab-l*ad;M=l*B-s*ab;J=s*ad-m*B;Q=r*(l-ab);O=r*(ad-m);G=r*(s-B);T=-p*M-n*J-s*R;b=(p*Q+n*O)+z*R;u=(n*G-s*Q)+z*M;f=(-s*O-p*G)+z*J;R=ad*H-ab*K;Q=ab*z-r*H;O=r*K-ad*z;M=B*(ab-H);J=B*(K-ad);G=B*(z-r);a=-r*R-m*Q-l*O;S=m*M+l*J+s*R;t=-l*G-r*M+s*Q;c=-r*J+m*G+s*O;e=(s*(g+a)+B*(d+b));if(e==0){e=0.0001}e=1/e;P=(g*ak+d*aj+b*ai+a*ah)*e;N=(g+d+b+a)*e;L=(V*ak+U*aj+T*ai+S*ah)*e;I=(V+U+T+S)*e;E=(x*ak+v*aj+u*ai+t*ah)*e;D=(x+v+u+t)*e;A=(k*ak+i*aj+f*ai+c*ah)*e;y=(k+i+f+c)*e;e=Z*(-y)-(-D)*W;if(e==0){e=0.0001}e=1/e;var q,o;w[2]=q=(-y*e)*(aa-E)+(D*e)*(Y-A);w[5]=o=(-W*e)*(aa-E)+(Z*e)*(Y-A);w[6]=aa-q*Z;w[7]=Y-q*W;w[0]=ag-q*af;w[1]=ae-q*ac;w[3]=P-o*N;w[4]=L-o*I;return true}});NyIdMarkerParam=ASKlass("NyIdMarkerParam",{direction:0,threshold:0});NyIdMarkerPattern=ASKlass("NyIdMarkerPattern",{model:0,ctrl_domain:0,ctrl_mask:0,check:0,data:new IntVector(32)});TThreshold=ASKlass("TThreshold",{th_h:0,th_l:0,th:0,lt_x:0,lt_y:0,rb_x:0,rb_y:0});THighAndLow=ASKlass("THighAndLow",{h:0,l:0});_bit_table_3=new IntVector([25,26,27,28,29,30,31,48,9,10,11,12,13,32,47,24,1,2,3,14,33,46,23,8,0,4,15,34,45,22,7,6,5,16,35,44,21,20,19,18,17,36,43,42,41,40,39,38,37]);_bit_table_2=new IntVector([9,10,11,12,13,24,1,2,3,14,23,8,0,4,15,22,7,6,5,16,21,20,19,18,17]);MarkerPattEncoder=ASKlass("MarkerPattEncoder",{_bit_table_2:_bit_table_2,_bit_table_3:_bit_table_3,_bit_tables:[_bit_table_2,_bit_table_3,null,null,null,null,null],_bit_table:null,_bits:new IntVector(16),_work:new IntVector(16),_model:0,setBitByBitIndex:function(c,a){NyAS3Utils.assert(a==0||a==1);var d=this._bit_table[c];if(d==0){this._bits[0]=a}else{var b=toInt((d-1)/8)+1;var e=(d-1)%8;this._bits[b]=(this._bits[b]&(~(1<<e)))|(a<<e)}return},setBit:function(d,a){NyAS3Utils.assert(a==0||a==1);if(d==0){this._bits[0]=a}else{var b=toInt((d-1)/8)+1;var c=(d-1)%8;this._bits[b]=(this._bits[b]&(~(1<<c)))|(a<<c)}return},getBit:function(c){if(c==0){return this._bits[0]}else{var a=toInt((c-1)/8)+1;var b=(c-1)%8;return(this._bits[a]>>(b))&(1)}},getModel:function(){return this._model},getControlValue:function(c,b){var a;switch(c){case 2:a=(b[2]&14)>>1;return a>=5?a-1:a;case 3:a=(b[4]&62)>>1;return a>=21?a-1:a;case 4:case 5:case 6:case 7:default:break}return -1},getCheckValue:function(c,b){var a;switch(c){case 2:a=(b[2]&224)>>5;return a>5?a-1:a;case 3:a=((b[4]&128)>>7)|((b[5]&15)<<1);return a>21?a-1:a;case 4:case 5:case 6:case 7:default:break}return -1},initEncoder:function(a){if(a>3||a<2){return false}this._bit_table=this._bit_tables[a-2];this._model=a;return true},getDirection:function(){var d,e,f,a;var c;switch(this._model){case 2:e=this._bits[2]&31;f=((this._bits[2]&240)>>4)|((this._bits[3]&1)<<4);a=this._bits[3]&31;d=((this._bits[3]&240)>>4)|((this._bits[2]&1)<<4);c=10;break;case 3:e=this._bits[4]&127;f=((this._bits[4]&192)>>6)|((this._bits[5]&31)<<2);a=((this._bits[5]&240)>>4)|((this._bits[6]&7)<<4);d=((this._bits[6]&252)>>2)|((this._bits[4]&1)<<6);c=42;break;default:return -3}if(e==c){if(f==c){return(a!=c&&d!=c)?2:-2}else{if(d==c){return(a!=c&&f!=c)?3:-2}}}else{if(a==c){if(f==c){return(e!=c&&d!=c)?1:-2}else{if(d==c){return(e!=c&&f!=c)?0:-2}}}}return -1},encode:function(e){var c=this.getDirection();if(c<0){return -1}this.getRotatedBits(c,e.data);var a=this._model;e.model=a;var b=this.getControlValue(a,e.data);e.check=this.getCheckValue(a,e.data);e.ctrl_mask=b%5;e.ctrl_domain=toInt(b/5);if(e.ctrl_domain!=0||e.ctrl_mask!=0){return -1}return c},getRotatedBits:function(d,e){var a=d*2;var c=8-a;var b;e[0]=this._bits[0];b=this._bits[1];e[1]=((b<<a)|(b>>c))&255;a=d*4;c=16-a;b=this._bits[2]|(this._bits[3]<<8);b=(b<<a)|(b>>c);e[2]=b&255;e[3]=(b>>8)&255;if(this._model<2){return}a=d*6;c=24-a;b=this._bits[4]|(this._bits[5]<<8)|(this._bits[6]<<16);b=(b<<a)|(b>>c);e[4]=b&255;e[5]=(b>>8)&255;e[6]=(b>>16)&255;if(this._model<3){return}return},shiftLeft:function(g,e,d,k){var c;var a=this._work;var f=k%8;for(c=d-1;c>=1;c--){a[c]=(g[c+e]<<f)|(255&(g[c+e-1]>>(8-f)))}a[0]=(g[e]<<f)|(255&(g[e+d-1]>>(8-f)));var b=toInt(k/8)%d;for(c=d-1;c>=0;c--){g[(b+c)%d+e]=255&a[c]}return}});INyIdMarkerData=ASKlass("INyIdMarkerData",{isEqual:function(a){},copyFrom:function(a){}});NyIdMarkerPickup=ASKlass("NyIdMarkerPickup",{_perspective_reader:null,__pickFromRaster_th:new TThreshold(),__pickFromRaster_encoder:new MarkerPattEncoder(),NyIdMarkerPickup:function(){this._perspective_reader=new PerspectivePixelReader();return},init:function(){this._perspective_reader.newFrame()},pickFromRaster:function(f,g,k,b){if(!this._perspective_reader.setSourceSquare(g)){if(window.DEBUG){console.log("NyIdMarkerPickup.pickFromRaster: could not setSourceSquare")}return false}var e=f.getGrayPixelReader();var i=f.getSize();var c=this.__pickFromRaster_th;var a=this.__pickFromRaster_encoder;this._perspective_reader.detectThresholdValue(e,i,c);if(!this._perspective_reader.readDataBits(e,i,c,a)){if(window.DEBUG){console.log("NyIdMarkerPickup.pickFromRaster: could not readDataBits")}return false}var l=a.encode(k);if(l<0){if(window.DEBUG){console.log("NyIdMarkerPickup.pickFromRaster: could not encode")}return false}b.direction=l;b.threshold=c.th;return true}});PerspectivePixelReader=ASKlass("PerspectivePixelReader",{_param_gen:new NyARPerspectiveParamGenerator_O1(1,1,100,100),_cparam:new FloatVector(8),PerspectivePixelReader:function(){return},maxPreviousFrameAge:1,newFrame:function(){for(var b in this.previousFrames){var a=this.previousFrames[b];a.age++;if(a.age>this.maxPreviousFrameAge){delete this.previousFrames[b]}}},setSourceSquare:function(e){var a=0,f=0;for(var b=0;b<4;b++){a+=e[b].x;f+=e[b].y}a/=4;f/=4;var d=toInt(a/10);var c=toInt(f/10);this.centerPoint[0]=d;this.centerPoint[1]=c;return this._param_gen.getParam(e,this._cparam)},rectPixels:function(l,c,a,b,F,D,L,e,s,K){var f=this._cparam;var t=this._ref_x;var p=this._ref_y;var g=this._pixcel_temp;var u=c.w;var A=c.h;var C=s;var o=f[6];var z=f[0];var r=f[3];for(var E=0;E<e;E++){var J=1+E*D+b;var H=f[1]*J+f[2];var G=f[4]*J+f[5];var v=f[7]*J+1;var w=0;var B;for(B=0;B<L;B++){var q=1+B*F+a;var I=o*q+v;var n=toInt((z*q+H)/I);var m=toInt((r*q+G)/I);if(n<0||m<0||n>=u||m>=A){return false}t[w]=n;p[w]=m;w++}l.getPixelSet(t,p,L,g);for(B=0;B<L;B++){var k=B;K[C]=g[k];C++}}return true},checkFreqWidth:function(d,k){var g=d[1]-d[0];var e=k*2-1;for(var b=1;b<e;b++){var f=d[b+1]-d[b];var a=f*100/g;if(a>150||a<50){return false}g=f}return true},getMaxFreq:function(g,f,d){var c=-1;var a=0;var e;for(e=0;e<this.MAX_FREQ;e++){if(a<g[e]){c=e;a=g[e]}}if(c==-1){return -1}var b=(c-1)*c;for(e=0;e<c*2;e++){d[e]=f[b+e]*this.FRQ_STEP/a}return c},FRQ_EDGE:10,FRQ_STEP:2,FRQ_POINTS:(100-(5*2))/2,MIN_FREQ:3,MAX_FREQ:10,FREQ_SAMPLE_NUM:4,MAX_DATA_BITS:10+10-1,_ref_x:new IntVector(108),_ref_y:new IntVector(108),_pixcel_temp:new IntVector(108),_freq_count_table:new IntVector(10),_freq_table:new IntVector((10*2-1)*10*2/2),getRowFrequency:function(m,a,n,c,g,z){var F;var K=this._freq_count_table;var b=this._freq_table;var e=this._cparam;var t=this._ref_x;var r=this._ref_y;var k=this._pixcel_temp;for(F=0;F<10;F++){K[F]=0}for(F=0;F<110;F++){b[F]=0}var v=a.w;var B=a.h;var C=e[0];var u=e[3];var q=e[6];var f;if(window.DEBUG){f=document.getElementById("debugCanvas").getContext("2d");f.fillStyle="orange"}for(F=0;F<this.FREQ_SAMPLE_NUM;F++){var D;var J=1+n+F;var H=e[1]*J+e[2];var G=e[4]*J+e[5];var w=e[7]*J+1;var A=0;for(D=0;D<this.FRQ_POINTS;D++){var s=1+D*this.FRQ_STEP+this.FRQ_EDGE;var I=(q*s)+w;var p=toInt((C*s+H)/I);var o=toInt((u*s+G)/I);if(p<0||o<0||p>=v||o>=B){return -1}t[A]=p;r[A]=o;A++}m.getPixelSet(t,r,this.FRQ_POINTS,k);if(window.DEBUG){for(var E=0;E<this.FRQ_POINTS;E++){f.fillRect(t[E],r[E],1,1)}}var l=this.getFreqInfo(k,c,g,z);if(l<this.MIN_FREQ||l>this.MAX_FREQ){continue}if(!this.checkFreqWidth(z,l)){continue}K[l]++;var L=(l-1)*l;for(D=0;D<l*2;D++){b[L+D]+=z[D]}}return this.getMaxFreq(K,b,z)},getColFrequency:function(n,a,K,e,k,v){var C;var f=this._cparam;var s=this._ref_x;var q=this._ref_y;var l=this._pixcel_temp;var I=this._freq_count_table;for(C=0;C<10;C++){I[C]=0}var c=this._freq_table;for(C=0;C<110;C++){c[C]=0}var t=a.w;var z=a.h;var L=f[7];var F=f[4];var E=f[1];var g;if(window.DEBUG){g=document.getElementById("debugCanvas").getContext("2d");g.fillStyle="green"}for(C=0;C<this.FREQ_SAMPLE_NUM;C++){var A;var r=1+C+K;var H=f[6]*r;var u=f[0]*r+f[2];var G=f[3]*r+f[5];var w=0;for(A=0;A<this.FRQ_POINTS;A++){var b=1+A*this.FRQ_STEP+this.FRQ_EDGE;var D=H+L*b+1;var p=toInt((u+E*b)/D);var o=toInt((G+F*b)/D);if(p<0||o<0||p>=t||o>=z){return -1}s[w]=p;q[w]=o;w++}n.getPixelSet(s,q,this.FRQ_POINTS,l);if(window.DEBUG){for(var B=0;B<this.FRQ_POINTS;B++){g.fillRect(s[B],q[B],1,1)}}var m=this.getFreqInfo(l,e,k,v);if(m<this.MIN_FREQ||m>this.MAX_FREQ){continue}if(!this.checkFreqWidth(v,m)){continue}I[m]++;var J=(m-1)*m;for(A=0;A<m*2;A++){c[J+A]+=v[A]}}return this.getMaxFreq(I,c,v)},getFreqInfo:function(d,l,a,b){var c=0;var e=0;var g=0;var f,k;while(c<this.FRQ_POINTS){while(c<this.FRQ_POINTS){f=c;k=d[f];if(k>l){b[e+g]=c;e++;break}c++}c++;while(c<this.FRQ_POINTS){f=c;k=d[f];if(k<=a){b[e+g]=c;g++;break}c++}c++}return e==g?e:-1},THRESHOLD_EDGE:10,THRESHOLD_STEP:2,THRESHOLD_WIDTH:10,THRESHOLD_PIXEL:10/2,THRESHOLD_SAMPLE:5*5,THRESHOLD_SAMPLE_LT:10,THRESHOLD_SAMPLE_RB:100-10-10,getPtailHighAndLow:function(f,g){var l,m,n,o,a,b,c,d;l=m=n=o=a=b=c=d=f[0];for(var e=f.length-1;e>=1;e--){var k=f[e];if(o<k){if(n<k){if(m<k){if(l<k){o=n;n=m;m=l;l=k}else{o=n;n=m;m=k}}else{o=n;n=k}}else{o=k}}if(d>k){if(c>k){if(b>k){if(a>k){d=c;c=b;b=a;a=k}else{d=c;c=b;b=k}}else{d=c;c=k}}else{d=k}}}g.l=(d+c+b+a)/4;g.h=(o+n+m+l)/4;return},__detectThresholdValue_hl:new THighAndLow(),__detectThresholdValue_tpt:new NyARIntPoint2d(),_th_pixels:new IntVector(5*5*4),detectThresholdValue:function(i,n,l){var k=this._th_pixels;this.rectPixels(i,n,this.THRESHOLD_SAMPLE_LT,this.THRESHOLD_SAMPLE_LT,this.THRESHOLD_STEP,this.THRESHOLD_STEP,this.THRESHOLD_PIXEL,this.THRESHOLD_PIXEL,0,k);this.rectPixels(i,n,this.THRESHOLD_SAMPLE_LT,this.THRESHOLD_SAMPLE_RB,this.THRESHOLD_STEP,this.THRESHOLD_STEP,this.THRESHOLD_PIXEL,this.THRESHOLD_PIXEL,this.THRESHOLD_SAMPLE,k);this.rectPixels(i,n,this.THRESHOLD_SAMPLE_RB,this.THRESHOLD_SAMPLE_LT,this.THRESHOLD_STEP,this.THRESHOLD_STEP,this.THRESHOLD_PIXEL,this.THRESHOLD_PIXEL,this.THRESHOLD_SAMPLE*2,k);this.rectPixels(i,n,this.THRESHOLD_SAMPLE_RB,this.THRESHOLD_SAMPLE_RB,this.THRESHOLD_STEP,this.THRESHOLD_STEP,this.THRESHOLD_PIXEL,this.THRESHOLD_PIXEL,this.THRESHOLD_SAMPLE*3,k);var a=this.__detectThresholdValue_hl;this.getPtailHighAndLow(k,a);var b=(a.h+a.l)/2;var r=(a.h-a.l)/5;l.th=b;l.th_h=b+r;l.th_l=b-r;var o,m,q,p,e,c,g,f;var d=this.__detectThresholdValue_tpt;if(this.getHighPixelCenter(0,k,this.THRESHOLD_PIXEL,this.THRESHOLD_PIXEL,b,d)){o=d.x*this.THRESHOLD_STEP;m=d.y*this.THRESHOLD_STEP}else{o=11;m=11}if(this.getHighPixelCenter(this.THRESHOLD_SAMPLE*1,k,this.THRESHOLD_PIXEL,this.THRESHOLD_PIXEL,b,d)){q=d.x*this.THRESHOLD_STEP;p=d.y*this.THRESHOLD_STEP}else{q=11;p=-1}if(this.getHighPixelCenter(this.THRESHOLD_SAMPLE*2,k,this.THRESHOLD_PIXEL,this.THRESHOLD_PIXEL,b,d)){e=d.x*this.THRESHOLD_STEP;c=d.y*this.THRESHOLD_STEP}else{e=-1;c=11}if(this.getHighPixelCenter(this.THRESHOLD_SAMPLE*3,k,this.THRESHOLD_PIXEL,this.THRESHOLD_PIXEL,b,d)){g=d.x*this.THRESHOLD_STEP;f=d.y*this.THRESHOLD_STEP}else{g=-1;f=-1}l.lt_x=(o+q)/2+this.THRESHOLD_SAMPLE_LT-1;l.rb_x=(e+g)/2+this.THRESHOLD_SAMPLE_RB+1;l.lt_y=(m+c)/2+this.THRESHOLD_SAMPLE_LT-1;l.rb_y=(p+f)/2+this.THRESHOLD_SAMPLE_RB+1;return},getHighPixelCenter:function(d,b,c,e,g,m){var l=d;var a=0;var o=0;var n=0;for(var k=0;k<e;k++){for(var f=0;f<c;f++){if(b[l++]>g){a+=f;o+=k;n++}}}if(n>0){a/=n;o/=n}else{return false}m.x=a;m.y=o;return true},__detectDataBitsIndex_freq_index1:new IntVector((100-(5*2))/2),__detectDataBitsIndex_freq_index2:new IntVector((100-(5*2))/2),detectDataBitsIndex:function(g,c,r,s,n){var v;var b=this.__detectDataBitsIndex_freq_index1;var d=this.__detectDataBitsIndex_freq_index2;var e=r.rb_y-r.lt_y;var f=this.getRowFrequency(g,c,r.lt_y,r.th_h,r.th_l,b);var t=this.getRowFrequency(g,c,r.rb_y,r.th_h,r.th_l,d);if((f<0&&t<0)||f==t){if(window.DEBUG){console.log("bad row frq",f,t)}return -1}var a,m;var k;if(f>t){a=f;k=b}else{a=t;k=d}for(v=0;v<a+a-1;v++){s[v*2]=((k[v+1]-k[v])*2/5+k[v])+this.FRQ_EDGE;s[v*2+1]=((k[v+1]-k[v])*3/5+k[v])+this.FRQ_EDGE}var u=r.rb_x-r.lt_x;var q=this.getColFrequency(g,c,r.lt_x,r.th_h,r.th_l,b);var l=this.getColFrequency(g,c,r.rb_x,r.th_h,r.th_l,d);if((q<0&&l<0)||q==l){if(window.DEBUG){console.log("bad col frq",q,l)}return -1}if(q>l){m=q;k=b}else{m=l;k=d}if(m!=a){if(window.DEBUG){console.log("freq mismatch",m,a)}return -1}for(v=0;v<m+m-1;v++){var p=k[v];var o=k[v+1]-p;n[v*2]=((o)*2/5+p)+this.FRQ_EDGE;n[v*2+1]=((o)*3/5+p)+this.FRQ_EDGE}if(m>this.MAX_FREQ){if(window.DEBUG){console.log("too high freq",m)}return -1}return m},__readDataBits_index_bit_x:new FloatVector(19*2),__readDataBits_index_bit_y:new FloatVector(19*2),previousFrames:{},centerPoint:new IntVector(2),getPreviousFrameSize:function(e,d){var b=this.centerPoint[0],f=this.centerPoint[1];var c=this.previousFrames;var a=(c[b+":"+f]||c[(b-1)+":"+f]||c[(b+1)+":"+f]||c[b+":"+(f-1)]||c[(b-1)+":"+(f-1)]||c[(b+1)+":"+(f-1)]||c[b+":"+(f+1)]||c[(b-1)+":"+(f+1)]||c[(b+1)+":"+(f+1)]);if(!a){return -1}e.set(a.index_x);d.set(a.index_y);return a.size},setPreviousFrameSize:function(b,d,c){var a=this.previousFrames[this.centerPoint[0]+":"+this.centerPoint[1]];if(!a){a={age:0,size:b,index_x:new FloatVector(d),index_y:new FloatVector(c)};this.previousFrames[this.centerPoint[0]+":"+this.centerPoint[1]]=a;return}a.age=0;a.size=b;a.index_x.set(d);a.index_y.set(c)},readDataBits:function(I,N,k,O){var R=this.__readDataBits_index_bit_x;var P=this.__readDataBits_index_bit_y;var m=this.detectDataBitsIndex(I,N,k,R,P);if(m<0){m=this.getPreviousFrameSize(R,P)}var n=m+m-1;if(m<0){if(window.DEBUG){console.log("readDataBits: size < 0")}return false}if(!O.initEncoder(m-1)){if(window.DEBUG){console.log("readDataBits: initEncoder")}return false}var v=this._cparam;var o=this._ref_x;var l=this._ref_y;var q=this._pixcel_temp;var E=v[0];var D=v[1];var z=v[3];var x=v[6];var a=k.th;var J=0;for(var M=0;M<n;M++){var r;var C=1+P[M*2+0];var A=1+P[M*2+1];var f=D*C+v[2];var e=v[4]*C+v[5];var S=v[7]*C+1;var B=D*A+v[2];var y=v[4]*A+v[5];var b=v[7]*A+1;var s=0;for(r=0;r<n;r++){var Q;var L=1+R[r*2+0];var K=1+R[r*2+1];var g=x*L;var t=E*L;var G=z*L;var c=x*K;var u=E*K;var H=z*K;Q=g+S;o[s]=toInt((t+f)/Q);l[s]=toInt((G+e)/Q);s++;Q=g+b;o[s]=toInt((t+B)/Q);l[s]=toInt((G+y)/Q);s++;Q=c+S;o[s]=toInt((u+f)/Q);l[s]=toInt((H+e)/Q);s++;Q=c+b;o[s]=toInt((u+B)/Q);l[s]=toInt((H+y)/Q);s++}I.getPixelSet(o,l,n*4,q);for(r=0;r<n;r++){var F=r*4;var w=(q[F+0]+q[F+1]+q[F+2]+q[F+3])/(4);O.setBitByBitIndex(J,w>a?0:1);J++}}this.setPreviousFrameSize(m,R,P);return true},setSquare:function(a){if(!this._param_gen.getParam(a,this._cparam)){return false}return true}});MarkerPattDecoder=ASKlass("MarkerPattDecoder",{decode:function(c,a,b){}});INyIdMarkerDataEncoder=ASKlass("INyIdMarkerDataEncoder",{encode:function(b,a){},createDataInstance:function(){}});NyIdMarkerDataEncoder_RawBit=ASKlass("NyIdMarkerDataEncoder_RawBit",INyIdMarkerDataEncoder,{_DOMAIN_ID:0,_mod_data:new IntVector([7,31,127,511,2047,4095]),encode:function(g,e){var b=(e);if(g.ctrl_domain!=this._DOMAIN_ID){return false}var f=(g.model*2-1);var a=(((f*f))/8)+1;var d=0;for(var c=0;c<a;c++){b.packet[c]=g.data[c];d+=g.data[c]}d=d%this._mod_data[g.model-2];if(g.check!=d){return false}b.length=a;return true},createDataInstance:function(){return new NyIdMarkerData_RawBit()}});NyIdMarkerData_RawBit=ASKlass("NyIdMarkerData_RawBit",INyIdMarkerData,{packet:new IntVector(22),length:0,isEqual:function(c){var b=(c);if(b.length!=this.length){return false}for(var a=b.length-1;a>=0;a--){if(b.packet[a]!=this.packet[a]){return false}}return true},copyFrom:function(b){var a=(b);ArrayUtils.copyInt(a.packet,0,this.packet,0,a.length);this.length=a.length;return}});INyARColorPatt=ASKlass("INyARColorPatt",INyARRgbRaster,{pickFromRaster:function(b,a){}});NyARColorPatt_Perspective=ASKlass("NyARColorPatt_Perspective",INyARColorPatt,{_patdata:null,_pickup_lt:new NyARIntPoint2d(),_resolution:0,_size:null,_perspective_gen:null,_pixelreader:null,LOCAL_LT:1,BUFFER_FORMAT:NyARBufferType.INT1D_X8R8G8B8_32,initializeInstance:function(c,b,a){NyAS3Utils.assert(c>2&&b>2);this._resolution=a;this._size=new NyARIntSize(c,b);this._patdata=new IntVector(b*c);this._pixelreader=new NyARRgbPixelReader_INT1D_X8R8G8B8_32(this._patdata,this._size);return},NyARColorPatt_Perspective:function(d,c,a,b){if(b==null){b=-1}if(b==-1){this.initializeInstance(d,c,a);this.setEdgeSize(0,0,a)}else{this.initializeInstance(d,c,a);this.setEdgeSizeByPercent(b,b,a)}return},setEdgeSize:function(c,b,a){NyAS3Utils.assert(c>=0);NyAS3Utils.assert(b>=0);this._perspective_gen=new NyARPerspectiveParamGenerator_O1(this.LOCAL_LT,this.LOCAL_LT,(c*2+this._size.w)*a,(b*2+this._size.h)*a);this._pickup_lt.x=c*a+this.LOCAL_LT;this._pickup_lt.y=b*a+this.LOCAL_LT;return},setEdgeSizeByPercent:function(c,b,a){NyAS3Utils.assert(c>=0);NyAS3Utils.assert(b>=0);this.setEdgeSize(this._size.w*c/50,this._size.h*b/50,a);return},getWidth:function(){return this._size.w},getHeight:function(){return this._size.h},getSize:function(){return this._size},getRgbPixelReader:function(){return this._pixelreader},getBuffer:function(){return this._patdata},hasBuffer:function(){return this._patdata!=null},wrapBuffer:function(a){NyARException.notImplement()},getBufferType:function(){return BUFFER_FORMAT},isEqualBufferType:function(a){return BUFFER_FORMAT==a},__pickFromRaster_rgb_tmp:new IntVector(3),__pickFromRaster_cpara:new FloatVector(8),pickFromRaster:function(u,a){var i=this.__pickFromRaster_cpara;if(!this._perspective_gen.getParam(a,i)){return false}var C=this._resolution;var A=u.getWidth();var z=u.getHeight();var w=C*C;var l=this.__pickFromRaster_rgb_tmp;var o=u.getRgbPixelReader();var v=0;for(var f=0;f<this._size.h*C;f+=C){for(var k=0;k<this._size.w*C;k+=C){var t,B,E;t=B=E=0;for(var q=f;q<f+C;q++){var c=this._pickup_lt.y+q;for(var s=k;s<k+C;s++){var e=this._pickup_lt.x+s;var D=i[6]*e+i[7]*c+1;var n=toInt((i[0]*e+i[1]*c+i[2])/D);var m=toInt((i[3]*e+i[4]*c+i[5])/D);if(n<0){n=0}if(n>=A){n=A-1}if(m<0){m=0}if(m>=z){m=z-1}o.getPixel(n,m,l);t+=l[0];B+=l[1];E+=l[2]}}t/=w;B/=w;E/=w;this._patdata[v]=((t&255)<<16)|((B&255)<<8)|((E&255));v++}}return true}});NyARColorPatt_Perspective_O2=ASKlass("NyARColorPatt_Perspective_O2",NyARColorPatt_Perspective,{_pickup:null,NyARColorPatt_Perspective_O2:function(d,c,a,b){NyARColorPatt_Perspective.initialize.call(this,d,c,a,b);switch(a){case 1:this._pickup=new NyARPickFromRaster_1(this._pickup_lt,this._size);break;case 2:this._pickup=new NyARPickFromRaster_2x(this._pickup_lt,this._size);break;case 4:this._pickup=new NyARPickFromRaster_4x(this._pickup_lt,this._size);break;default:this._pickup=new NyARPickFromRaster_N(this._pickup_lt,a,this._size)}return},pickFromRaster:function(c,b){var a=this.__pickFromRaster_cpara;if(!this._perspective_gen.getParam(b,a)){return false}this._pickup.pickFromRaster(a,c,this._patdata);return true}});IpickFromRaster_Impl=ASKlass("IpickFromRaster_Impl",{pickFromRaster:function(b,c,a){}});NyARPickFromRaster_1=ASKlass("NyARPickFromRaster_1",IpickFromRaster_Impl,{_size_ref:null,_lt_ref:null,NyARPickFromRaster_1:function(b,a){this._lt_ref=b;this._size_ref=a;this._rgb_temp=new IntVector(a.w*3);this._rgb_px=new IntVector(a.w);this._rgb_py=new IntVector(a.w);return},_rgb_temp:null,_rgb_px:null,_rgb_py:null,pickFromRaster:function(s,v,J){var b,c;var r,q;var F=v.getWidth();var D=v.getHeight();var A=this._size_ref.w;var g=this._rgb_temp;var i=this._rgb_px;var l=this._rgb_py;var I=s[0];var G=s[3];var C=s[6];var H=s[1];var E=s[4];var B=s[7];var m=this._lt_ref.y;var k=this._lt_ref.x;var t=v.getRgbPixelReader();var z=0;var w,e;var o=H*m+s[2]+I*k;var n=E*m+s[5]+G*k;var a=B*m+1+C*k;for(var d=this._size_ref.h-1;d>=0;d--){c=1/(a);b=-C/(a*(a+C));w=o;e=n;var f;for(f=A-1;f>=0;f--){r=i[f]=toInt(w*c);q=l[f]=toInt(e*c);if(r<0||r>=F||q<0||q>=D){if(r<0){i[f]=0}else{if(r>=F){i[f]=F-1}}if(q<0){l[f]=0}else{if(q>=D){l[f]=D-1}}}w+=I;e+=G;c+=b}o+=H;n+=E;a+=B;t.getPixelSet(i,l,A,g);for(f=A-1;f>=0;f--){var u=f*3;J[z]=(g[u]<<16)|(g[u+1]<<8)|((g[u+2]&255));z++}}return}});NyARPickFromRaster_2x=ASKlass("NyARPickFromRaster_2x",IpickFromRaster_Impl,{_size_ref:null,_lt_ref:null,NyARPickFromRaster_2x:function(b,a){this._lt_ref=b;this._size_ref=a;this._rgb_temp=new IntVector(a.w*4*3);this._rgb_px=new IntVector(a.w*4);this._rgb_py=new IntVector(a.w*4);return},_rgb_temp:null,_rgb_px:null,_rgb_py:null,pickFromRaster:function(F,e,a){var Q,W,P,T;var I,H;var N=e.getWidth();var L=e.getHeight();var J=this._size_ref.w;var s=this._rgb_temp;var R=this._rgb_px;var V=this._rgb_py;var C=F[0];var u=F[3];var q=F[6];var A=F[1];var t=F[4];var o=F[7];var X=this._lt_ref.y;var U=this._lt_ref.x;var D=e.getRgbPixelReader();var M=0;var Z,E;var l=A*X+F[2]+C*U;var c=t*X+F[5]+u*U;var z=o*X+1+q*U;var aa,G;var m=l+A;var d=c+t;var B=z+o;var k=A+A;var f=o+o;var i=t+t;for(var v=this._size_ref.h-1;v>=0;v--){Z=l;E=c;aa=m;G=d;W=1/(z);Q=-q/(z*(z+q));T=1/(B);P=-q/(B*(B+q));var O=J*2*2-1;var w;for(w=J*2-1;w>=0;w--){I=R[O]=toInt(Z*W);H=V[O]=toInt(E*W);if(I<0||I>=N||H<0||H>=L){if(I<0){R[O]=0}else{if(I>=N){R[O]=N-1}}if(H<0){V[O]=0}else{if(H>=L){V[O]=L-1}}}Z+=C;E+=u;W+=Q;O--;I=R[O]=toInt(aa*T);H=V[O]=toInt(G*T);if(I<0||I>=N||H<0||H>=L){if(I<0){R[O]=0}else{if(I>=N){R[O]=N-1}}if(H<0){V[O]=0}else{if(H>=L){V[O]=L-1}}}aa+=C;G+=u;T+=P;O--}z+=f;B+=f;l+=k;c+=i;m+=k;d+=i;D.getPixelSet(R,V,J*4,s);for(w=J-1;w>=0;w--){var Y=w*12;var K=(s[Y+0]+s[Y+3]+s[Y+6]+s[Y+9])/4;var S=(s[Y+1]+s[Y+4]+s[Y+7]+s[Y+10])/4;var ab=(s[Y+2]+s[Y+5]+s[Y+8]+s[Y+11])/4;a[M]=(K<<16)|(S<<8)|((ab&255));M++}}return}});NyARPickFromRaster_4x=ASKlass("NyARPickFromRaster_4x",IpickFromRaster_Impl,{_size_ref:null,_lt_ref:null,NyARPickFromRaster_4x:function(b,a){this._lt_ref=b;this._size_ref=a;this._rgb_temp=new IntVector(4*4*3);this._rgb_px=new IntVector(4*4);this._rgb_py=new IntVector(4*4);return},_rgb_temp:null,_rgb_px:null,_rgb_py:null,pickFromRaster:function(D,f,a){var F,E;var W,L;var c,G,l;var M=this._rgb_px;var N=this._rgb_py;var H,P,Z;var K=f.getWidth();var I=f.getHeight();var s=this._rgb_temp;var B=D[0];var u=D[3];var o=D[6];var A=D[1];var w=D[2];var t=D[4];var q=D[5];var n=D[7];var O=this._lt_ref.x;var C=f.getRgbPixelReader();var J=0;var i=this._lt_ref.y;for(var v=this._size_ref.h-1;v>=0;v--,i+=4){var R=A*i+w;var Y=t*i+q;var e=n*i+1;var T=R+A;var V=T+A;var X=V+A;var U=Y+t;var S=U+t;var Q=S+t;var k=O;for(var z=this._size_ref.w-1;z>=0;z--,k+=4){c=o*k;G=B*k;l=u*k;c+=e;L=1/c;W=-n/((c+n)*c);F=M[0]=toInt((G+R)*L);E=N[0]=toInt((l+Y)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[0]=0}else{if(F>=K){M[0]=K-1}}if(E<0){N[0]=0}else{if(E>=I){N[0]=I-1}}}L+=W;F=M[4]=toInt((G+T)*L);E=N[4]=toInt((l+U)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[4]=0}else{if(F>=K){M[4]=K-1}}if(E<0){N[4]=0}else{if(E>=I){N[4]=I-1}}}L+=W;F=M[8]=toInt((G+V)*L);E=N[8]=toInt((l+S)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[8]=0}else{if(F>=K){M[8]=K-1}}if(E<0){N[8]=0}else{if(E>=I){N[8]=I-1}}}L+=W;F=M[12]=toInt((G+X)*L);E=N[12]=toInt((l+Q)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[12]=0}else{if(F>=K){M[12]=K-1}}if(E<0){N[12]=0}else{if(E>=I){N[12]=I-1}}}c+=o;G+=B;l+=u;L=1/c;W=-n/((c+n)*c);F=M[1]=toInt((G+R)*L);E=N[1]=toInt((l+Y)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[1]=0}else{if(F>=K){M[1]=K-1}}if(E<0){N[1]=0}else{if(E>=I){N[1]=I-1}}}L+=W;F=M[5]=toInt((G+T)*L);E=N[5]=toInt((l+U)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[5]=0}else{if(F>=K){M[5]=K-1}}if(E<0){N[5]=0}else{if(E>=I){N[5]=I-1}}}L+=W;F=M[9]=toInt((G+V)*L);E=N[9]=toInt((l+S)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[9]=0}else{if(F>=K){M[9]=K-1}}if(E<0){N[9]=0}else{if(E>=I){N[9]=I-1}}}L+=W;F=M[13]=toInt((G+X)*L);E=N[13]=toInt((l+Q)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[13]=0}else{if(F>=K){M[13]=K-1}}if(E<0){N[13]=0}else{if(E>=I){N[13]=I-1}}}c+=o;G+=B;l+=u;L=1/c;W=-n/((c+n)*c);F=M[2]=toInt((G+R)*L);E=N[2]=toInt((l+Y)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[2]=0}else{if(F>=K){M[2]=K-1}}if(E<0){N[2]=0}else{if(E>=I){N[2]=I-1}}}L+=W;F=M[6]=toInt((G+T)*L);E=N[6]=toInt((l+U)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[6]=0}else{if(F>=K){M[6]=K-1}}if(E<0){N[6]=0}else{if(E>=I){N[6]=I-1}}}L+=W;F=M[10]=toInt((G+V)*L);E=N[10]=toInt((l+S)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[10]=0}else{if(F>=K){M[10]=K-1}}if(E<0){N[10]=0}else{if(E>=I){N[10]=I-1}}}L+=W;F=M[14]=toInt((G+X)*L);E=N[14]=toInt((l+Q)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[14]=0}else{if(F>=K){M[14]=K-1}}if(E<0){N[14]=0}else{if(E>=I){N[14]=I-1}}}c+=o;G+=B;l+=u;L=1/c;W=-n/((c+n)*c);F=M[3]=toInt((G+R)*L);E=N[3]=toInt((l+Y)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[3]=0}else{if(F>=K){M[3]=K-1}}if(E<0){N[3]=0}else{if(E>=I){N[3]=I-1}}}L+=W;F=M[7]=toInt((G+T)*L);E=N[7]=toInt((l+U)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[7]=0}else{if(F>=K){M[7]=K-1}}if(E<0){N[7]=0}else{if(E>=I){N[7]=I-1}}}L+=W;F=M[11]=toInt((G+V)*L);E=N[11]=toInt((l+S)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[11]=0}else{if(F>=K){M[11]=K-1}}if(E<0){N[11]=0}else{if(E>=I){N[11]=I-1}}}L+=W;F=M[15]=toInt((G+X)*L);E=N[15]=toInt((l+Q)*L);if(F<0||F>=K||E<0||E>=I){if(F<0){M[15]=0}else{if(F>=K){M[15]=K-1}}if(E<0){N[15]=0}else{if(E>=I){N[15]=I-1}}}C.getPixelSet(M,N,4*4,s);H=(s[0]+s[3]+s[6]+s[9]+s[12]+s[15]+s[18]+s[21]+s[24]+s[27]+s[30]+s[33]+s[36]+s[39]+s[42]+s[45])/16;P=(s[1]+s[4]+s[7]+s[10]+s[13]+s[16]+s[19]+s[22]+s[25]+s[28]+s[31]+s[34]+s[37]+s[40]+s[43]+s[46])/16;Z=(s[2]+s[5]+s[8]+s[11]+s[14]+s[17]+s[20]+s[23]+s[26]+s[29]+s[32]+s[35]+s[38]+s[41]+s[44]+s[47])/16;a[J]=((H&255)<<16)|((P&255)<<8)|((Z&255));J++}}return}});NyARPickFromRaster_N=ASKlass("NyARPickFromRaster_N",IpickFromRaster_Impl,{_resolution:0,_size_ref:null,_lt_ref:null,NyARPickFromRaster_N:function(c,b,a){this._lt_ref=c;this._resolution=b;this._size_ref=a;this._rgb_temp=new IntVector(b*b*3);this._rgb_px=new IntVector(b*b);this._rgb_py=new IntVector(b*b);this._cp1cy_cp2=new FloatVector(b);this._cp4cy_cp5=new FloatVector(b);this._cp7cy_1=new FloatVector(b);return},_rgb_temp:null,_rgb_px:null,_rgb_py:null,_cp1cy_cp2:null,_cp4cy_cp5:null,_cp7cy_1:null,pickFromRaster:function(K,e,a){var o,l;var M,L;var N;var P,ad,ag;var k=this._resolution;var z=k*k;var S=e.getWidth();var Q=e.getHeight();var v=this._rgb_temp;var aa=this._rgb_px;var ac=this._rgb_py;var C=this._cp1cy_cp2;var H=this._cp4cy_cp5;var f=this._cp7cy_1;var I=K[0];var B=K[3];var t=K[6];var G=K[1];var E=K[2];var A=K[4];var u=K[5];var s=K[7];var ae=this._lt_ref.y;var ab=this._lt_ref.x;var J=e.getRgbPixelReader();var R=0;for(var D=0;D<this._size_ref.h*k;D+=k){N=ae+D;C[0]=G*N+E;H[0]=A*N+u;f[0]=s*N+1;for(l=1;l<k;l++){C[l]=C[l-1]+G;H[l]=H[l-1]+A;f[l]=f[l-1]+s}for(var F=0;F<this._size_ref.w*k;F+=k){var V=0;N=ab+F;for(l=k-1;l>=0;l--){var O=I*N+C[l];var c=t*N+f[l];var q=B*N+H[l];var W=1/(c);var af=-t/(c*(c+t));var Z=O*W;var Y=q*W;var U=O*af+I*(W+af);var T=q*af+B*(W+af);for(o=k-1;o>=0;o--){M=aa[V]=toInt(Z);L=ac[V]=toInt(Y);if(M<0||M>=S||L<0||L>=Q){if(M<0){aa[V]=0}else{if(M>=S){aa[V]=S-1}}if(L<0){ac[V]=0}else{if(L>=Q){ac[V]=Q-1}}}V++;Z+=U;Y+=T}}J.getPixelSet(aa,ac,z,v);P=ad=ag=0;for(var X=z*3-1;X>0;){ag+=v[X--];ad+=v[X--];P+=v[X--]}P/=z;ad/=z;ag/=z;a[R]=((P&255)<<16)|((ad&255)<<8)|((ag&255));R++}}return}});FLSingleARMarkerProcesser=ASKlass("FLSingleARMarkerProcesser",{tag:null,_lost_delay_count:0,_lost_delay:5,_square_detect:null,_transmat:null,_offset:null,_threshold:110,_bin_raster:null,_tobin_filter:null,_current_arcode_index:-1,_threshold_detect:null,FLSingleARMarkerProcesser:function(){return},_initialized:false,initInstance:function(b){NyAS3Utils.assert(this._initialized==false);var a=b.getScreenSize();this._square_detect=new FLARSquareContourDetector(a);this._transmat=new NyARTransMat(b);this._tobin_filter=new FLARRasterFilter_Threshold(110);this._bin_raster=new FLARBinRaster(a.w,a.h);this._threshold_detect=new FLARRasterThresholdAnalyzer_SlidePTile(15,4);this._initialized=true;this._detectmarker_cb=new FLARDetectSquareCB_1(b);this._offset=new NyARRectOffset();return},setARCodeTable:function(c,a,b){if(this._current_arcode_index!=-1){this.reset(true)}this._detectmarker_cb.setNyARCodeTable(c,a);this._offset.setSquare(b);return},reset:function(a){if(this._current_arcode_index!=-1&&a==false){this.onLeaveHandler()}this._current_arcode_index=-1;return},_detectmarker_cb:null,detectMarker:function(b){NyAS3Utils.assert(this._bin_raster.getSize().isEqualSize_int(b.getSize().w,b.getSize().h));this._tobin_filter.setThreshold(this._threshold);this._tobin_filter.doFilter(b,this._bin_raster);this._detectmarker_cb.init(b,this._current_arcode_index);this._square_detect.detectMarkerCB(this._bin_raster,this._detectmarker_cb);var a=updateStatus(this._detectmarker_cb.square,this._detectmarker_cb.code_index);if(!a){var c=this._threshold_detect.analyzeRaster(b);this._threshold=(this._threshold+c)/2}return},setConfidenceThreshold:function(a,b){this._detectmarker_cb.cf_threshold_exist=b;this._detectmarker_cb.cf_threshold_new=a},__NyARSquare_result:new FLARTransMatResult(),updateStatus:function(a,c){var b=this.__NyARSquare_result;if(this._current_arcode_index<0){if(c<0){return false}else{this._current_arcode_index=c;this.onEnterHandler(c);this._transmat.transMat(a,this._offset,b);this.onUpdateHandler(a,b);this._lost_delay_count=0;return true}}else{if(c<0){this._lost_delay_count++;if(this._lost_delay<this._lost_delay_count){this._current_arcode_index=-1;this.onLeaveHandler()}return false}else{if(c==this._current_arcode_index){this._transmat.transMat(a,this._offset,b);this.onUpdateHandler(a,b);this._lost_delay_count=0;return true}else{throw new NyARException()}}}},onEnterHandler:function(a){throw new NyARException("onEnterHandler not implemented.")},onLeaveHandler:function(){throw new NyARException("onLeaveHandler not implemented.")},onUpdateHandler:function(a,b){throw new NyARException("onUpdateHandler not implemented.")}});FLARDetectSquareCB_1=ASKlass("DetectSquareCB",{square:new FLARSquare(),confidence:0,code_index:-1,cf_threshold_new:0.5,cf_threshold_exist:0.3,_ref_raster:null,_inst_patt:null,_deviation_data:null,_match_patt:null,__detectMarkerLite_mr:new NyARMatchPattResult(),_coordline:null,DetectSquareCB:function(a){this._match_patt=null;this._coordline=new NyARCoord2Linear(a.getScreenSize(),a.getDistortionFactor());return},setNyARCodeTable:function(b,a){this._deviation_data=new NyARMatchPattDeviationColorData(a,a);this._inst_patt=new NyARColorPatt_Perspective_O2(a,a,4,25);this._match_patt=new Array(b.length);for(var c=0;c<b.length;c++){this._match_patt[c]=new NyARMatchPatt_Color_WITHOUT_PCA(b[c])}},__tmp_vertex:NyARIntPoint2d.createArray(4),_target_id:0,init:function(a,b){this._ref_raster=a;this._target_id=b;this.code_index=-1;this.confidence=Number.MIN_VALUE},onSquareDetect:function(e,n,o,m,f){if(this._match_patt==null){return}var c=this.__tmp_vertex;c[0].x=n[f[0]];c[0].y=o[f[0]];c[1].x=n[f[1]];c[1].y=o[f[1]];c[2].x=n[f[2]];c[2].y=o[f[2]];c[3].x=n[f[3]];c[3].y=o[f[3]];if(!this._inst_patt.pickFromRaster(this._ref_raster,c)){return}this._deviation_data.setRaster(this._inst_patt);var b=this.__detectMarkerLite_mr;var p=0;var d=0;var l=0;var k;for(k=0;k<this._match_patt.length;k++){this._match_patt[k].evaluate(this._deviation_data,b);var g=b.confidence;if(l<g){p=k;l=g;d=b.direction}}if(this._target_id==-1){if(l<this.cf_threshold_new){return}if(this.confidence>l){return}this.code_index=p}else{if(p!=this._target_id){return}if(l<this.cf_threshold_exist){return}if(this.confidence>l){return}this.code_index=this._target_id}this.confidence=l;var a=this.square;for(k=0;k<4;k++){var q=(k+4-d)%4;this._coordline.coord2Line(f[q],f[(q+1)%4],n,o,m,a.line[k])}for(k=0;k<4;k++){if(!NyARLinear.crossPos(a.line[k],a.line[(k+3)%4],a.sqvertex[k])){throw new NyARException()}}}});FLSingleNyIdMarkerProcesser=ASKlass("FLSingleNyIdMarkerProcesser",{tag:null,_lost_delay_count:0,_lost_delay:5,_square_detect:null,_transmat:null,_offset:null,_is_active:null,_current_threshold:110,_bin_raster:null,_tobin_filter:null,_callback:null,_data_current:null,FLSingleNyIdMarkerProcesser:function(){return},_initialized:false,initInstance:function(d,a,c){NyAS3Utils.assert(this._initialized==false);var b=d.getScreenSize();this._square_detect=new FLARSquareContourDetector(b);this._transmat=new NyARTransMat(d);this._callback=new FLARDetectSquareCB_2(d,a);this._bin_raster=new FLARBinRaster(b.w,b.h);this._data_current=a.createDataInstance();this._tobin_filter=new FLARRasterFilter_Threshold(110);this._threshold_detect=new FLARRasterThresholdAnalyzer_SlidePTile(15,4);this._initialized=true;this._is_active=false;this._offset=new NyARRectOffset();this._offset.setSquare(c);return},setMarkerWidth:function(a){this._offset.setSquare(a);return},reset:function(a){if(a==false&&this._is_active){this.onLeaveHandler()}this._is_active=false;return},detectMarker:function(b){if(!this._bin_raster.getSize().isEqualSize_int(b.getSize().w,b.getSize().h)){throw new NyARException()}this._tobin_filter.setThreshold(this._current_threshold);this._tobin_filter.doFilter(b,this._bin_raster);this._callback.init(b,this._is_active?this._data_current:null);this._square_detect.detectMarkerCB(this._bin_raster,this._callback);var a=updateStatus(this._callback.square,this._callback.marker_data);if(a){this._current_threshold=(this._current_threshold+this._callback.threshold)/2}else{var c=this._threshold_detect.analyzeRaster(b);this._current_threshold=(this._current_threshold+c)/2}return},_threshold_detect:null,__NyARSquare_result:new FLARTransMatResult(),updateStatus:function(c,b){var a=false;var d=this.__NyARSquare_result;if(!this._is_active){if(b==null){this._is_active=false}else{this._data_current.copyFrom(b);this.onEnterHandler(this._data_current);this._transmat.transMat(c,this._offset,d);this.onUpdateHandler(c,d);this._lost_delay_count=0;this._is_active=true;a=true}}else{if(b==null){this._lost_delay_count++;if(this._lost_delay<this._lost_delay_count){this.onLeaveHandler();this._is_active=false}}else{if(this._data_current.isEqual(b)){this._transmat.transMatContinue(c,this._offset,d);this.onUpdateHandler(c,d);this._lost_delay_count=0;a=true}else{throw new NyARException()}}}return a},onEnterHandler:function(a){throw new NyARException("onEnterHandler not implemented.")},onLeaveHandler:function(){throw new NyARException("onLeaveHandler not implemented.")},onUpdateHandler:function(a,b){throw new NyARException("onUpdateHandler not implemented.")}});FLARDetectSquareCB_2=ASKlass("DetectSquareCB",{square:new FLARSquare(),marker_data:null,threshold:0,_ref_raster:null,_current_data:null,_id_pickup:new NyIdMarkerPickup(),_coordline:null,_encoder:null,_data_temp:null,_prev_data:null,DetectSquareCB:function(b,a){this._coordline=new NyARCoord2Linear(b.getScreenSize(),b.getDistortionFactor());this._data_temp=a.createDataInstance();this._current_data=a.createDataInstance();this._encoder=a;return},__tmp_vertex:NyARIntPoint2d.createArray(4),init:function(a,b){this.marker_data=null;this._prev_data=b;this._ref_raster=a},_marker_param:new NyIdMarkerParam(),_marker_data:new NyIdMarkerPattern(),onSquareDetect:function(d,l,m,k,f){if(this.marker_data!=null){return}var c=this.__tmp_vertex;c[0].x=l[f[0]];c[0].y=m[f[0]];c[1].x=l[f[1]];c[1].y=m[f[1]];c[2].x=l[f[2]];c[2].y=m[f[2]];c[3].x=l[f[3]];c[3].y=m[f[3]];var e=this._marker_param;var b=this._marker_data;if(!this._id_pickup.pickFromRaster(this._ref_raster,c,b,e)){return}if(!this._encoder.encode(b,this._data_temp)){return}if(this._prev_data==null){this._current_data.copyFrom(this._data_temp)}else{if(!this._prev_data.isEqual((this._data_temp))){return}}var a=this.square;var g;for(g=0;g<4;g++){var n=(g+4-e.direction)%4;this._coordline.coord2Line(f[n],f[(n+1)%4],l,m,k,a.line[g])}for(g=0;g<4;g++){if(!NyARLinear.crossPos(a.line[g],a.line[(g+3)%4],a.sqvertex[g])){throw new NyARException()}}this.threshold=e.threshold;this.marker_data=this._current_data}});NyARCustomSingleDetectMarker=ASKlass("NyARCustomSingleDetectMarker",{_is_continue:false,_square_detect:null,_transmat:null,_bin_raster:null,_tobin_filter:null,_detect_cb:null,_offset:null,NyARCustomSingleDetectMarker:function(){return},initInstance:function(b,i,g,e,f,d,c){var a=f.getScreenSize();this._square_detect=i;this._transmat=g;this._tobin_filter=e;this._bin_raster=new NyARBinRaster(a.w,a.h);this._detect_cb=new DetectSquareCB_3(b,d,f);this._offset=new NyARRectOffset();this._offset.setSquare(c);return},detectMarkerLiteB:function(a){if(!this._bin_raster.getSize().isEqualSize_NyARIntSize(a.getSize())){throw new NyARException()}this._tobin_filter.doFilter(a,this._bin_raster);this._detect_cb.init(a);this._square_detect.detectMarkerCB(this._bin_raster,_detect_cb);if(this._detect_cb.confidence==0){return false}return true},getTransmationMatrix:function(a){if(this._is_continue){this._transmat.transMatContinue(this._detect_cb.square,this._offset,a)}else{this._transmat.transMat(this._detect_cb.square,this._offset,a)}return},refSquare:function(){return this._detect_cb.square},getConfidence:function(){return this._detect_cb.confidence},setContinueMode:function(a){this._is_continue=a}});DetectSquareCB_3=ASKlass("DetectSquareCB",NyARSquareContourDetector_IDetectMarkerCallback,{confidence:0,square:new NyARSquare(),_ref_raster:null,_inst_patt:null,_deviation_data:null,_match_patt:null,__detectMarkerLite_mr:new NyARMatchPattResult(),_coordline:null,DetectSquareCB:function(c,b,a){this._inst_patt=c;this._deviation_data=new NyARMatchPattDeviationColorData(b.getWidth(),b.getHeight());this._coordline=new NyARCoord2Linear(a.getScreenSize(),a.getDistortionFactor());this._match_patt=new NyARMatchPatt_Color_WITHOUT_PCA(b);return},__tmp_vertex:NyARIntPoint2d.createArray(4),onSquareDetect:function(d,k,l,g,e){var f;var b=this.__detectMarkerLite_mr;var c=this.__tmp_vertex;c[0].x=k[e[0]];c[0].y=l[e[0]];c[1].x=k[e[1]];c[1].y=l[e[1]];c[2].x=k[e[2]];c[2].y=l[e[2]];c[3].x=k[e[3]];c[3].y=l[e[3]];if(!this._inst_patt.pickFromRaster(this._ref_raster,c)){return}this._deviation_data.setRaster(this._inst_patt);if(!this._match_patt.evaluate(this._deviation_data,b)){return}if(this.confidence>b.confidence){return}var a=this.square;this.confidence=b.confidence;for(f=0;f<4;f++){var m=(f+4-b.direction)%4;this._coordline.coord2Line(e[m],e[(m+1)%4],k,l,g,a.line[f])}for(f=0;f<4;f++){if(!NyARLinear.crossPos(a.line[f],a.line[(f+3)%4],a.sqvertex[f])){throw new NyARException()}}},init:function(a){this.confidence=0;this._ref_raster=a}});NyARDetectMarker=ASKlass("NyARDetectMarker",{_detect_cb:null,AR_SQUARE_MAX:300,_is_continue:false,_square_detect:null,_transmat:null,_offset:null,NyARDetectMarker:function(c,e,b,d,a){this.initInstance(c,e,b,d,a);return},initInstance:function(c,l,k,g,e){var a=c.getScreenSize();var d=l[0].getWidth();var b=l[0].getHeight();this._detect_cb=new NyARDetectSquareCB(new NyARColorPatt_Perspective_O2(d,b,4,25),l,g,c);this._transmat=new NyARTransMat(c);this._square_detect=new NyARSquareContourDetector_Rle(c.getScreenSize());this._tobin_filter=new NyARRasterFilter_ARToolkitThreshold(100,e);this._offset=NyARRectOffset.createArray(g);for(var f=0;f<g;f++){this._offset[f].setSquare(k[f])}this._bin_raster=new NyARBinRaster(a.w,a.h);return},_bin_raster:null,_tobin_filter:null,detectMarkerLite:function(a,b){if(!this._bin_raster.getSize().isEqualSize_NyARIntSize(a.getSize())){throw new NyARException()}(NyARRasterFilter_ARToolkitThreshold(this._tobin_filter)).setThreshold(b);this._tobin_filter.doFilter(a,this._bin_raster);this._detect_cb.init(a);this._square_detect.detectMarkerCB(this._bin_raster,this._detect_cb);return this._detect_cb.result_stack.getLength()},getTransmationMatrix:function(c,a){var b=this._detect_cb.result_stack.getItem(c);if(_is_continue){_transmat.transMatContinue(b.square,this._offset[b.arcode_id],a)}else{_transmat.transMat(b.square,this._offset[b.arcode_id],a)}return},getConfidence:function(a){return this._detect_cb.result_stack.getItem(a).confidence},getARCodeIndex:function(a){return this._detect_cb.result_stack.getItem(a).arcode_id},setContinueMode:function(a){this._is_continue=a}});NyARDetectMarkerResult=ASKlass("NyARDetectMarkerResult",{arcode_id:0,confidence:0,square:new NyARSquare()});NyARDetectMarkerResultStack=ASKlass("NyARDetectMarkerResultStack ",NyARObjectStack,{NyARDetectMarkerResultStack:function(a){NyARObjectStack.initialize.call(this,a)},createArray:function(c){var a=new Array(c);for(var b=0;b<c;b++){a[b]=new NyARDetectMarkerResult()}return(a)}});NyARDetectSquareCB=ASKlass("NyARDetectSquareCB ",NyARSquareContourDetector_IDetectMarkerCallback,{result_stack:new NyARDetectMarkerResultStack(NyARDetectMarker.AR_SQUARE_MAX),_ref_raster:null,_inst_patt:null,_deviation_data:null,_match_patt:null,__detectMarkerLite_mr:new NyARMatchPattResult(),_coordline:null,NyARDetectSquareCB:function(g,d,b,c){var a=d[0].getWidth();var f=d[0].getHeight();this._inst_patt=g;this._coordline=new NyARCoord2Linear(c.getScreenSize(),c.getDistortionFactor());this._deviation_data=new NyARMatchPattDeviationColorData(a,f);this._match_patt=new Array(b);this._match_patt[0]=new NyARMatchPatt_Color_WITHOUT_PCA(d[0]);for(var e=1;e<b;e++){if(a!=d[e].getWidth()||f!=d[e].getHeight()){throw new NyARException()}this._match_patt[e]=new NyARMatchPatt_Color_WITHOUT_PCA(d[e])}return},__tmp_vertex:NyARIntPoint2d.createArray(4),onSquareDetect:function(d,m,n,l,e){var b=this.__detectMarkerLite_mr;var c=this.__tmp_vertex;c[0].x=m[e[0]];c[0].y=n[e[0]];c[1].x=m[e[1]];c[1].y=n[e[1]];c[2].x=m[e[2]];c[2].y=n[e[2]];c[3].x=m[e[3]];c[3].y=n[e[3]];if(!this._inst_patt.pickFromRaster(this._ref_raster,c)){return}this._deviation_data.setRaster(this._inst_patt);var g,q;var k;this._match_patt[0].evaluate(this._deviation_data,b);g=0;q=b.direction;k=b.confidence;var f;for(f=1;f<this._match_patt.length;f++){this._match_patt[f].evaluate(this._deviation_data,b);if(k>b.confidence){continue}g=f;q=b.direction;k=b.confidence}var o=this.result_stack.prePush();o.arcode_id=g;o.confidence=k;var a=o.square;for(f=0;f<4;f++){var p=(f+4-q)%4;this._coordline.coord2Line(e[p],e[(p+1)%4],m,n,l,a.line[f])}for(f=0;f<4;f++){if(!NyARLinear.crossPos(a.line[f],a.line[(f+3)%4],a.sqvertex[f])){throw new NyARException()}}},init:function(a){this._ref_raster=a;this.result_stack.clear()}});NyARSingleDetectMarker=ASKlass("NyARSingleDetectMarker",NyARCustomSingleDetectMarker,{PF_ARTOOLKIT_COMPATIBLE:1,PF_NYARTOOLKIT:2,PF_NYARTOOLKIT_ARTOOLKIT_FITTING:100,PF_TEST2:201,NyARSingleDetectMarker:function(d,e,c,b,a){if(a==null){a=this.PF_NYARTOOLKIT}NyARCustomSingleDetectMarker.initialize.call(this);this.initInstance2(d,e,c,b,a);return},initInstance2:function(d,i,g,e,b){var c=new NyARRasterFilter_ARToolkitThreshold(100,e);var a;var f;var k;switch(b){case this.PF_NYARTOOLKIT:a=new NyARColorPatt_Perspective_O2(i.getWidth(),i.getHeight(),4,25);f=new NyARSquareContourDetector_Rle(d.getScreenSize());k=new NyARTransMat(d);break;default:throw new NyARException()}NyARCustomSingleDetectMarker.initInstance.call(this,a,f,k,c,d,i,g)},detectMarkerLite:function(a,b){(NyARRasterFilter_ARToolkitThreshold(this._tobin_filter)).setThreshold(b);return NyARCustomSingleDetectMarker.detectMarkerLiteB.call(this,a)}});FLARDetectMarkerResult=ASKlass("FLARDetectMarkerResult",{arcode_id:0,confidence:0,direction:0,square:new NyARSquare()});FLARDetectMarkerResultStack=ASKlass("FLARDetectMarkerResultStack",NyARObjectStack,{FLARDetectMarkerResultStack:function(a){NyARObjectStack.initialize.call(this,a)},createArray:function(c){var a=new Array(c);for(var b=0;b<c;b++){a[b]=new FLARDetectMarkerResult()}return(a)}});FLARMultiMarkerDetector=ASKlass("FLARMultiMarkerDetector",{_detect_cb:null,AR_SQUARE_MAX:300,_is_continue:false,_square_detect:null,_transmat:null,_offset:null,_flarcode:null,FLARMultiMarkerDetector:function(b,d,a,c){this.initInstance(b,d,a,c);return},initInstance:function(c,m,l,k){var a=c.getScreenSize();var d=m[0].getWidth();var b=m[0].getHeight();var f=(100-m[0].markerPercentWidth)/2;var n=(100-m[0].markerPercentHeight)/2;var g=new NyARColorPatt_Perspective_O2(d,b,4,f);g.setEdgeSizeByPercent(f,n,4);this._detect_cb=new MultiDetectSquareCB(g,m,k,c);this._transmat=new NyARTransMat(c);this._square_detect=new FLARSquareContourDetector(c.getScreenSize());this._tobin_filter=new FLARRasterFilter_Threshold(100);this._offset=NyARRectOffset.createArray(k);for(var e=0;e<k;e++){this._offset[e].setSquare(l[e])}this._bin_raster=new FLARBinRaster(a.w,a.h);return},_bin_raster:null,_tobin_filter:null,detectMarkerLite:function(a,d){if(!this._bin_raster.getSize().isEqualSize_NyARIntSize(a.getSize())){throw new NyARException()}if(d!=-1){(FLARRasterFilter_Threshold(this._tobin_filter)).setThreshold(d);this._tobin_filter.doFilter(a,this._bin_raster)}else{var b=(a.getBuffer());var c=((this._bin_raster).getBuffer());c.copyPixels(b,b.rect,new Point())}this._detect_cb.init(a);this._square_detect.detectMarkerCB(this._bin_raster,this._detect_cb);return this._detect_cb.result_stack.getLength()},getTransformMatrix:function(c,a){var b=this._detect_cb.result_stack.getItem(c);if(_is_continue){_transmat.transMatContinue(b.square,this._offset[b.arcode_id],a)}else{_transmat.transMat(b.square,this._offset[b.arcode_id],a)}return},getConfidence:function(a){return this._detect_cb.result_stack.getItem(a).confidence},getARCodeIndex:function(a){return this._detect_cb.result_stack.getItem(a).arcode_id},getDirection:function(a){return this._detect_cb.result_stack.getItem(a).direction},getSquare:function(a){return this._detect_cb.result_stack.getItem(a).square},setContinueMode:function(a){this._is_continue=a},setAreaRange:function(b,c){if(b==null){b=100000}if(c==null){c=70}if(b<0){b=FLARLabeling.AR_AREA_MAX}if(c<0){c=FLARLabeling.AR_AREA_MIN}if(b<c){var a=b;b=c;c=a}this._square_detect.setAreaRange(b,c)},thresholdedBitmapData:function(){try{return((this._bin_raster).getBuffer())}catch(a){return null}return null}});FLARSingleMarkerDetector=ASKlass("FLARSingleMarkerDetector",{_is_continue:false,_square_detect:null,_transmat:null,_bin_raster:null,_tobin_filter:null,_detect_cb:null,_offset:null,FLARSingleMarkerDetector:function(c,g,f){var b=new FLARRasterFilter_Threshold(100);var a;var e;var k;var d=(100-g.markerPercentWidth)/2;var i=(100-g.markerPercentHeight)/2;a=new NyARColorPatt_Perspective_O2(g.getWidth(),g.getHeight(),4,d);a.setEdgeSizeByPercent(d,i,4);e=new FLARSquareContourDetector(c.getScreenSize());k=new NyARTransMat(c);this.initInstance(a,e,k,b,c,g,f);return},initInstance:function(b,i,g,e,f,d,c){var a=f.getScreenSize();this._square_detect=i;this._transmat=g;this._tobin_filter=e;this._bin_raster=new FLARBinRaster(a.w,a.h);this._detect_cb=new SingleDetectSquareCB(b,d,f);this._offset=new NyARRectOffset();this._offset.setSquare(c);return},detectMarkerLite:function(a,b){FLARRasterFilter_Threshold(this._tobin_filter).setThreshold(b);if(!this._bin_raster.getSize().isEqualSize_NyARIntSize(a.getSize())){throw new FLARException()}this._tobin_filter.doFilter(a,this._bin_raster);this._detect_cb.init(a);this._square_detect.detectMarkerCB(this._bin_raster,this._detect_cb);if(this._detect_cb.confidence==0){return false}return true},getTransformMatrix:function(a){if(this._is_continue){this._transmat.transMatContinue(this._detect_cb.square,this._offset,a)}else{this._transmat.transMat(this._detect_cb.square,this._offset,a)}return},getConfidence:function(){return this._detect_cb.confidence},getDirection:function(){return this._detect_cb.direction},getSquare:function(){return this._detect_cb.square},setContinueMode:function(a){this._is_continue=a},setAreaRange:function(b,c){if(b==null){b=100000}if(c==null){c=70}if(b<0){b=FLARLabeling.AR_AREA_MAX}if(c<0){c=FLARLabeling.AR_AREA_MIN}if(b<c){var a=b;b=c;c=a}this._square_detect.setAreaRange(b,c)},thresholdedBitmapData:function(){try{return((this._bin_raster).getBuffer())}catch(a){return null}return null}});MultiDetectSquareCB=ASKlass("MultiDetectSquareCB",{result_stack:new FLARDetectMarkerResultStack(NyARDetectMarker.AR_SQUARE_MAX),_ref_raster:null,_inst_patt:null,_deviation_data:null,_match_patt:null,__detectMarkerLite_mr:new NyARMatchPattResult(),_coordline:null,MultiDetectSquareCB:function(g,d,b,c){var a=d[0].getWidth();var f=d[0].getHeight();this._inst_patt=g;this._coordline=new NyARCoord2Linear(c.getScreenSize(),c.getDistortionFactor());this._deviation_data=new NyARMatchPattDeviationColorData(a,f);this._match_patt=new Array(b);this._match_patt[0]=new NyARMatchPatt_Color_WITHOUT_PCA(d[0]);for(var e=1;e<b;e++){if(a!=d[e].getWidth()||f!=d[e].getHeight()){throw new NyARException()}this._match_patt[e]=new NyARMatchPatt_Color_WITHOUT_PCA(d[e])}return},__tmp_vertex:NyARIntPoint2d.createArray(4),onSquareDetect:function(d,m,n,l,e){var b=this.__detectMarkerLite_mr;var c=this.__tmp_vertex;c[0].x=m[e[0]];c[0].y=n[e[0]];c[1].x=m[e[1]];c[1].y=n[e[1]];c[2].x=m[e[2]];c[2].y=n[e[2]];c[3].x=m[e[3]];c[3].y=n[e[3]];if(!this._inst_patt.pickFromRaster(this._ref_raster,c)){return}this._deviation_data.setRaster(this._inst_patt);var g,q;var k;this._match_patt[0].evaluate(this._deviation_data,b);g=0;q=b.direction;k=b.confidence;var f;for(f=1;f<this._match_patt.length;f++){this._match_patt[f].evaluate(this._deviation_data,b);if(k>b.confidence){continue}g=f;q=b.direction;k=b.confidence}var o=this.result_stack.prePush();o.arcode_id=g;o.confidence=k;o.direction=q;var a=o.square;for(f=0;f<4;f++){var p=(f+4-q)%4;this._coordline.coord2Line(e[p],e[(p+1)%4],m,n,l,a.line[f])}for(f=0;f<4;f++){if(!NyARLinear.crossPos(a.line[f],a.line[(f+3)%4],a.sqvertex[f])){throw new NyARException()}}},init:function(a){this._ref_raster=a;this.result_stack.clear()}});SingleDetectSquareCB=ASKlass("SingleDetectSquareCB",{confidence:0,square:new NyARSquare(),direction:0,_ref_raster:null,_inst_patt:null,_deviation_data:null,_match_patt:null,__detectMarkerLite_mr:new NyARMatchPattResult(),_coordline:null,SingleDetectSquareCB:function(c,b,a){this._inst_patt=c;this._deviation_data=new NyARMatchPattDeviationColorData(b.getWidth(),b.getHeight());this._coordline=new NyARCoord2Linear(a.getScreenSize(),a.getDistortionFactor());this._match_patt=new NyARMatchPatt_Color_WITHOUT_PCA(b);return},__tmp_vertex:NyARIntPoint2d.createArray(4),onSquareDetect:function(d,k,l,g,e){var f;var b=this.__detectMarkerLite_mr;var c=this.__tmp_vertex;c[0].x=k[e[0]];c[0].y=l[e[0]];c[1].x=k[e[1]];c[1].y=l[e[1]];c[2].x=k[e[2]];c[2].y=l[e[2]];c[3].x=k[e[3]];c[3].y=l[e[3]];if(!this._inst_patt.pickFromRaster(this._ref_raster,c)){return}this._deviation_data.setRaster(this._inst_patt);if(!this._match_patt.evaluate(this._deviation_data,b)){return}if(this.confidence>b.confidence){return}var a=this.square;this.confidence=b.confidence;this.direction=b.direction;for(f=0;f<4;f++){var m=(f+4-b.direction)%4;this._coordline.coord2Line(e[m],e[(m+1)%4],k,l,g,a.line[f])}for(f=0;f<4;f++){if(!NyARLinear.crossPos(a.line[f],a.line[(f+3)%4],a.sqvertex[f])){throw new NyARException()}}},init:function(a){this.confidence=0;this._ref_raster=a}});FLARIdMarkerData=ASKlass("FLARIdMarkerData",{_packet:new IntVector(22),_model:0,_controlDomain:0,_controlMask:0,_check:0,_dataDot:0,packetLength:0,FLARIdMarkerData:function(){},isEqual:function(c){if(c==null||!(c instanceof FLARIdMarkerData)){return false}var b=c;if(b.packetLength!=this.packetLength||b._check!=this._check||b._controlDomain!=this._controlDomain||b._controlMask!=this._controlMask||b._dataDot!=this._dataDot||b._model!=this._model){return false}for(var a=b.packetLength-1;a>=0;a--){if(b._packet[a]!=this._packet[a]){return false}}return true},copyFrom:function(c){var b=c;if(b==null){return}this._check=b._check;this._controlDomain=b._controlDomain;this._controlMask=b._controlMask;this._dataDot=b._dataDot;this._model=b._model;this.packetLength=b.packetLength;for(var a=b.packetLength-1;a>=0;a--){this._packet[a]=b._packet[a]}return},setModel:function(a){this._model=a},setControlDomain:function(a){this._controlDomain=a},setControlMask:function(a){this._controlMask=a},setCheck:function(a){this._check=a},setPacketData:function(a,b){if(a<this.packetLength){this._packet[a]=b}else{throw ("packet index over "+a+" >= "+this.packetLength)}},setDataDotLength:function(a){this._dataDot=a},setPacketLength:function(a){this.packetLength=a},dataDotLength:function(){return this._dataDot},model:function(){return this._model},controlDomain:function(){return this._controlDomain},controlMask:function(){return this._controlMask},check:function(){return this._check},getPacketData:function(a){if(this.packetLength<=a){throw new ArgumentError("packet index over")}return this._packet[a]}});FLARDetectIdMarkerResult=ASKlass("FLARDetectIdMarkerResult",{arcode_id:0,direction:0,markerdata:new FLARIdMarkerData(),square:new NyARSquare()});FLARDetectIdMarkerResultStack=ASKlass("FLARDetectIdMarkerResultStack",NyARObjectStack,{FLARDetectIdMarkerResultStack:function(a){NyARObjectStack.initialize.call(this,a)},createArray:function(c){var a=new Array(c);for(var b=0;b<c;b++){a[b]=new FLARDetectIdMarkerResult()}return(a)}});FLARMultiIdMarkerDetectCB=ASKlass("FLARMultiIdMarkerDetectCB",{result_stack:new FLARDetectIdMarkerResultStack(NyARDetectMarker.AR_SQUARE_MAX),square:new FLARSquare(),marker_data:null,threshold:0,direction:0,_ref_raster:null,_current_data:null,_data_temp:null,_prev_data:null,_id_pickup:new NyIdMarkerPickup(),_coordline:null,_encoder:null,__tmp_vertex:NyARIntPoint2d.createArray(4),_marker_param:new NyIdMarkerParam(),_maker_pattern:new NyIdMarkerPattern(),FLARMultiIdMarkerDetectCB:function(b,a){this._coordline=new NyARCoord2Linear(b.getScreenSize(),b.getDistortionFactor());this._data_temp=a.createDataInstance();this._current_data=a.createDataInstance();this._encoder=a;return},init:function(a){this.marker_data=null;this.result_stack.clear();this._id_pickup.init();this._ref_raster=a},_previous_verts:{},onSquareDetect:function(d,q,r,p,g){var c=this.__tmp_vertex;c[0].x=q[g[0]];c[0].y=r[g[0]];c[1].x=q[g[1]];c[1].y=r[g[1]];c[2].x=q[g[2]];c[2].y=r[g[2]];c[3].x=q[g[3]];c[3].y=r[g[3]];var e=this._marker_param;var b=this._maker_pattern;var n;if(window.DEBUG){n=document.getElementById("debugCanvas").getContext("2d");n.fillStyle="blue";for(var m=0;m<4;m++){n.fillRect(c[m].x-2,c[m].y-2,5,5)}}var k=0,f=0;for(var m=0;m<4;m++){k+=c[m].x;f+=c[m].y}k/=4;f/=4;var o=this._id_pickup.pickFromRaster(this._ref_raster,c,b,e);if(!o){if(window.DEBUG){n.fillStyle="#ff0000";n.fillText("No pick",k+3,f)}return}var l=this._encoder.encode(b,this._data_temp);if(!l){return}this._current_data.copyFrom(this._data_temp);this.marker_data=this._current_data;this.threshold=e.threshold;this.direction=e.direction;var s=this.result_stack.prePush();s.direction=this.direction;s.markerdata.copyFrom(this.marker_data);s.arcode_id=this.getId(s.markerdata);if(window.DEBUG){n.fillStyle="#00ffff";n.fillText(s.arcode_id,k+3,f)}var a=s.square;var m;for(m=0;m<4;m++){var t=(m+4-e.direction)%4;this._coordline.coord2Line(g[t],g[(t+1)%4],q,r,p,a.line[m])}for(m=0;m<4;m++){if(!NyARLinear.crossPos(a.line[m],a.line[(m+3)%4],a.sqvertex[m])){throw new NyARException()}}},getId:function(c){var a;if(c.packetLength>4){a=-1}else{a=0;for(var b=0;b<c.packetLength;b++){a=(a<<8)|c.getPacketData(b)}}return a}});FLARMultiIdMarkerDetector=ASKlass("FLARMultiIdMarkerDetector",{_is_continue:false,_square_detect:null,_offset:null,_current_threshold:110,_bin_raster:null,_tobin_filter:null,_callback:null,_data_current:null,_threshold_detect:null,_transmat:null,FLARMultiIdMarkerDetector:function(d,c){var b=d.getScreenSize();var a=new FLARIdMarkerDataEncoder_RawBit();this._square_detect=new FLARSquareContourDetector(b);this._callback=new FLARMultiIdMarkerDetectCB(d,a);this._transmat=new NyARTransMat(d);this._bin_raster=new FLARBinRaster(b.w,b.h);this._data_current=a.createDataInstance();this._tobin_filter=new FLARRasterFilter_Threshold(110);this._threshold_detect=new FLARRasterThresholdAnalyzer_SlidePTile(15,4);this._offset=new NyARRectOffset();this._offset.setSquare(c);return},detectMarkerLite:function(a,b){if(!this._bin_raster.getSize().isEqualSize_int(a.getSize().w,a.getSize().h)){throw new FLARException()}this._tobin_filter.setThreshold(b);this._tobin_filter.doFilter(a,this._bin_raster);this._callback.init(this._bin_raster);this._square_detect.detectMarkerCB(this._bin_raster,this._callback);return this._callback.result_stack.getLength()},getTransformMatrix:function(c,a){var b=this._callback.result_stack.getItem(c);if(this._is_continue){this._transmat.transMatContinue(b.square,this._offset,a)}else{this._transmat.transMat(b.square,this._offset,a)}return},getIdMarkerData:function(b){var a=new FLARIdMarkerData();a.copyFrom(this._callback.result_stack.getItem(b).markerdata);return a},getARCodeIndex:function(a){return this._callback.result_stack.getItem(a).arcode_id},getDirection:function(a){return this._callback.result_stack.getItem(a).direction},getSquare:function(a){return this._callback.result_stack.getItem(a).square},setContinueMode:function(a){this._is_continue=a},thresholdedBitmapData:function(){try{return((this._bin_raster).getBuffer())}catch(a){return null}return null}});FLARSingleIdMarkerDetectCB=ASKlass("FLARSingleIdMarkerDetectCB",{square:new FLARSquare(),marker_data:null,threshold:0,direction:0,_ref_raster:null,_current_data:null,_data_temp:null,_prev_data:null,_id_pickup:new NyIdMarkerPickup(),_coordline:null,_encoder:null,__tmp_vertex:NyARIntPoint2d.createArray(4),_marker_param:new NyIdMarkerParam(),_maker_pattern:new NyIdMarkerPattern(),FLARSingleIdMarkerDetectCB:function(b,a){this._coordline=new NyARCoord2Linear(b.getScreenSize(),b.getDistortionFactor());this._data_temp=a.createDataInstance();this._current_data=a.createDataInstance();this._encoder=a;return},init:function(a,b){this.marker_data=null;this._prev_data=b;this._ref_raster=a},onSquareDetect:function(d,n,o,m,f){if(this.marker_data!=null){return}var c=this.__tmp_vertex;c[0].x=n[f[0]];c[0].y=o[f[0]];c[1].x=n[f[1]];c[1].y=o[f[1]];c[2].x=n[f[2]];c[2].y=o[f[2]];c[3].x=n[f[3]];c[3].y=o[f[3]];var e=this._marker_param;var b=this._maker_pattern;var l=this._id_pickup.pickFromRaster(this._ref_raster,c,b,e);if(window.DEBUG){var k=document.getElementById("debugCanvas").getContext("2d");k.fillStyle="blue";for(var g=0;g<4;g++){k.fillRect(c[g].x-2,c[g].y-2,5,5)}}if(!l){return}this.direction=e.direction;if(!this._encoder.encode(b,this._data_temp)){return}if(this._prev_data==null){this._current_data.copyFrom(this._data_temp)}else{if(!this._prev_data.isEqual((this._data_temp))){return}}var a=this.square;var g;for(g=0;g<4;g++){var p=(g+4-e.direction)%4;this._coordline.coord2Line(f[p],f[(p+1)%4],n,o,m,a.line[g])}for(g=0;g<4;g++){if(!NyARLinear.crossPos(a.line[g],a.line[(g+3)%4],a.sqvertex[g])){throw new NyARException()}}this.threshold=e.threshold;this.marker_data=this._current_data}});FLARSingleIdMarkerDetector=ASKlass("FLARSingleIdMarkerDetector",{_is_continue:false,_square_detect:null,_offset:null,_is_active:null,_current_threshold:110,_bin_raster:null,_tobin_filter:null,_callback:null,_data_current:null,_threshold_detect:null,_transmat:null,FLARSingleIdMarkerDetector:function(d,c){var b=d.getScreenSize();var a=new FLARIdMarkerDataEncoder_RawBit();this._square_detect=new FLARSquareContourDetector(b);this._callback=new FLARSingleIdMarkerDetectCB(d,a);this._transmat=new NyARTransMat(d);this._bin_raster=new FLARBinRaster(b.w,b.h);this._data_current=a.createDataInstance();this._tobin_filter=new FLARRasterFilter_Threshold(110);this._threshold_detect=new FLARRasterThresholdAnalyzer_SlidePTile(15,4);this._offset=new NyARRectOffset();this._offset.setSquare(c);return},detectMarkerLite:function(a,b){if(!this._bin_raster.getSize().isEqualSize_int(a.getSize().w,a.getSize().h)){throw new FLARException()}this._tobin_filter.setThreshold(b);this._tobin_filter.doFilter(a,this._bin_raster);this._callback.init(this._bin_raster,this._is_active?this._data_current:null);this._square_detect.detectMarkerCB(this._bin_raster,this._callback);if(this._callback.marker_data==null){this._is_active=false;return false}this._is_active=true;this._data_current.copyFrom(this._callback.marker_data);return true},getIdMarkerData:function(){var a=new FLARIdMarkerData();a.copyFrom(this._callback.marker_data);return a},getDirection:function(){return this._callback.direction},getTransformMatrix:function(a){if(this._is_continue){this._transmat.transMatContinue(this._callback.square,this._offset,a)}else{this._transmat.transMat(this._callback.square,this._offset,a)}return},setContinueMode:function(a){this._is_continue=a}});FLARIdMarkerDataEncoder_RawBit=ASKlass("FLARIdMarkerDataEncoder_RawBit",{_DOMAIN_ID:0,_mod_data:new IntVector([7,31,127,511,2047,4095]),encode:function(g,e){var b=e;if(b==null){throw new FLARException('type of o_dest must be "FLARIdMarkerData"')}if(g.ctrl_domain!=this._DOMAIN_ID){return false}b.setCheck(g.check);b.setControlDomain(g.ctrl_domain);b.setControlMask(g.ctrl_mask);b.setModel(g.model);var f=toInt(g.model*2-1);b.setDataDotLength(f);var a=toInt((f*f)/8)+1;b.setPacketLength(a);var d=0;for(var c=0;c<a;c++){b.setPacketData(c,g.data[c]);d+=g.data[c]}d=d%this._mod_data[g.model-2];if(g.check!=d){return false}return true},createDataInstance:function(){return new FLARIdMarkerData()}});SingleARMarkerProcesser=ASKlass("SingleARMarkerProcesser",{tag:null,_lost_delay_count:0,_lost_delay:5,_square_detect:null,_transmat:null,_offset:null,_threshold:110,_bin_raster:null,_tobin_filter:null,_current_arcode_index:-1,_threshold_detect:null,SingleARMarkerProcesser:function(){return},_initialized:false,initInstance:function(c,b){NyAS3Utils.assert(this._initialized==false);var a=c.getScreenSize();this._square_detect=new NyARSquareContourDetector_Rle(a);this._transmat=new NyARTransMat(c);this._tobin_filter=new NyARRasterFilter_ARToolkitThreshold(110,b);this._bin_raster=new NyARBinRaster(a.w,a.h);this._threshold_detect=new NyARRasterThresholdAnalyzer_SlidePTile(15,b,4);this._initialized=true;this._detectmarker_cb=new DetectSquareCB_1(c);this._offset=new NyARRectOffset();return},setARCodeTable:function(c,a,b){if(this._current_arcode_index!=-1){this.reset(true)}this._detectmarker_cb.setNyARCodeTable(c,a);this._offset.setSquare(b);return},reset:function(a){if(this._current_arcode_index!=-1&&a==false){this.onLeaveHandler()}this._current_arcode_index=-1;return},_detectmarker_cb:null,detectMarker:function(b){NyAS3Utils.assert(this._bin_raster.getSize().isEqualSize_int(b.getSize().w,b.getSize().h));this._tobin_filter.setThreshold(this._threshold);this._tobin_filter.doFilter(b,this._bin_raster);this._detectmarker_cb.init(b,this._current_arcode_index);this._square_detect.detectMarkerCB(this._bin_raster,this._detectmarker_cb);var a=updateStatus(this._detectmarker_cb.square,this._detectmarker_cb.code_index);if(!a){var c=this._threshold_detect.analyzeRaster(b);this._threshold=(this._threshold+c)/2}return},setConfidenceThreshold:function(a,b){this._detectmarker_cb.cf_threshold_exist=b;this._detectmarker_cb.cf_threshold_new=a},__NyARSquare_result:new NyARTransMatResult(),updateStatus:function(a,c){var b=this.__NyARSquare_result;if(this._current_arcode_index<0){if(c<0){return false}else{this._current_arcode_index=c;this.onEnterHandler(c);this._transmat.transMat(a,this._offset,b);this.onUpdateHandler(a,b);this._lost_delay_count=0;return true}}else{if(c<0){this._lost_delay_count++;if(this._lost_delay<this._lost_delay_count){this._current_arcode_index=-1;this.onLeaveHandler()}return false}else{if(c==this._current_arcode_index){this._transmat.transMatContinue(a,this._offset,b);this.onUpdateHandler(a,b);this._lost_delay_count=0;return true}else{throw new NyARException()}}}},onEnterHandler:function(a){throw new NyARException("onEnterHandler not implemented.")},onLeaveHandler:function(){throw new NyARException("onLeaveHandler not implemented.")},onUpdateHandler:function(a,b){throw new NyARException("onUpdateHandler not implemented.")}});DetectSquareCB_1=ASKlass("DetectSquareCB",NyARSquareContourDetector_IDetectMarkerCallback,{square:new NyARSquare(),confidence:0,code_index:-1,cf_threshold_new:0.5,cf_threshold_exist:0.3,_ref_raster:null,_inst_patt:null,_deviation_data:null,_match_patt:null,__detectMarkerLite_mr:new NyARMatchPattResult(),_coordline:null,DetectSquareCB:function(a){this._match_patt=null;this._coordline=new NyARCoord2Linear(a.getScreenSize(),a.getDistortionFactor());return},setNyARCodeTable:function(b,a){this._deviation_data=new NyARMatchPattDeviationColorData(a,a);this._inst_patt=new NyARColorPatt_Perspective_O2(a,a,4,25);this._match_patt=new Array(b.length);for(var c=0;c<b.length;c++){this._match_patt[c]=new NyARMatchPatt_Color_WITHOUT_PCA(b[c])}},__tmp_vertex:NyARIntPoint2d.createArray(4),_target_id:0,init:function(a,b){this._ref_raster=a;this._target_id=b;this.code_index=-1;this.confidence=Number.MIN_VALUE},onSquareDetect:function(e,n,o,m,f){if(this._match_patt==null){return}var c=this.__tmp_vertex;c[0].x=n[f[0]];c[0].y=o[f[0]];c[1].x=n[f[1]];c[1].y=o[f[1]];c[2].x=n[f[2]];c[2].y=o[f[2]];c[3].x=n[f[3]];c[3].y=o[f[3]];if(!this._inst_patt.pickFromRaster(this._ref_raster,c)){return}this._deviation_data.setRaster(this._inst_patt);var b=this.__detectMarkerLite_mr;var p=0;var d=0;var l=0;var k;for(k=0;k<this._match_patt.length;k++){this._match_patt[k].evaluate(this._deviation_data,b);var g=b.confidence;if(l<g){p=k;l=g;d=b.direction}}if(this._target_id==-1){if(l<this.cf_threshold_new){return}if(this.confidence>l){return}this.code_index=p}else{if(p!=this._target_id){return}if(l<this.cf_threshold_exist){return}if(this.confidence>l){return}this.code_index=this._target_id}this.confidence=l;var a=this.square;for(k=0;k<4;k++){var q=(k+4-d)%4;this._coordline.coord2Line(f[q],f[(q+1)%4],n,o,m,a.line[k])}for(k=0;k<4;k++){if(!NyARLinear.crossPos(a.line[k],a.line[(k+3)%4],a.sqvertex[k])){throw new NyARException()}}}});SingleNyIdMarkerProcesser=ASKlass("SingleNyIdMarkerProcesser",{tag:null,_lost_delay_count:0,_lost_delay:5,_square_detect:null,_transmat:null,_offset:null,_is_active:null,_current_threshold:110,_bin_raster:null,_tobin_filter:null,_callback:null,_data_current:null,SingleNyIdMarkerProcesser:function(){return},_initialized:false,initInstance:function(d,a,c,e){NyAS3Utils.assert(this._initialized==false);var b=d.getScreenSize();this._square_detect=new NyARSquareContourDetector_Rle(b);this._transmat=new NyARTransMat(d);this._callback=new DetectSquareCB_2(d,a);this._bin_raster=new NyARBinRaster(b.w,b.h);this._data_current=a.createDataInstance();this._tobin_filter=new NyARRasterFilter_ARToolkitThreshold(110,e);this._threshold_detect=new NyARRasterThresholdAnalyzer_SlidePTile(15,e,4);this._initialized=true;this._is_active=false;this._offset=new NyARRectOffset();this._offset.setSquare(c);return},setMarkerWidth:function(a){this._offset.setSquare(a);return},reset:function(a){if(a==false&&this._is_active){this.onLeaveHandler()}this._is_active=false;return},detectMarker:function(b){if(!this._bin_raster.getSize().isEqualSize_int(b.getSize().w,b.getSize().h)){throw new NyARException()}this._tobin_filter.setThreshold(this._current_threshold);this._tobin_filter.doFilter(b,this._bin_raster);this._callback.init(b,this._is_active?this._data_current:null);this._square_detect.detectMarkerCB(this._bin_raster,this._callback);var a=updateStatus(this._callback.square,this._callback.marker_data);if(a){this._current_threshold=(this._current_threshold+this._callback.threshold)/2}else{var c=this._threshold_detect.analyzeRaster(b);this._current_threshold=(this._current_threshold+c)/2}return},_threshold_detect:null,__NyARSquare_result:new NyARTransMatResult(),updateStatus:function(c,b){var a=false;var d=this.__NyARSquare_result;if(!this._is_active){if(b==null){this._is_active=false}else{this._data_current.copyFrom(b);this.onEnterHandler(this._data_current);this._transmat.transMat(c,this._offset,d);this.onUpdateHandler(c,d);this._lost_delay_count=0;this._is_active=true;a=true}}else{if(b==null){this._lost_delay_count++;if(this._lost_delay<this._lost_delay_count){this.onLeaveHandler();this._is_active=false}}else{if(this._data_current.isEqual(b)){this._transmat.transMatContinue(c,this._offset,d);this.onUpdateHandler(c,d);this._lost_delay_count=0;a=true}else{throw new NyARException()}}}return a},onEnterHandler:function(a){throw new NyARException("onEnterHandler not implemented.")},onLeaveHandler:function(){throw new NyARException("onLeaveHandler not implemented.")},onUpdateHandler:function(a,b){throw new NyARException("onUpdateHandler not implemented.")}});DetectSquareCB_2=ASKlass("DetectSquareCB",NyARSquareContourDetector_IDetectMarkerCallback,{square:new NyARSquare(),marker_data:null,threshold:0,_ref_raster:null,_current_data:null,_id_pickup:new NyIdMarkerPickup(),_coordline:null,_encoder:null,_data_temp:null,_prev_data:null,DetectSquareCB:function(b,a){this._coordline=new NyARCoord2Linear(b.getScreenSize(),b.getDistortionFactor());this._data_temp=a.createDataInstance();this._current_data=a.createDataInstance();this._encoder=a;return},__tmp_vertex:NyARIntPoint2d.createArray(4),init:function(a,b){this.marker_data=null;this._prev_data=b;this._ref_raster=a},_marker_param:new NyIdMarkerParam(),_marker_data:new NyIdMarkerPattern(),onSquareDetect:function(d,l,m,k,f){if(this.marker_data!=null){return}var c=this.__tmp_vertex;c[0].x=l[f[0]];c[0].y=m[f[0]];c[1].x=l[f[1]];c[1].y=m[f[1]];c[2].x=l[f[2]];c[2].y=m[f[2]];c[3].x=l[f[3]];c[3].y=m[f[3]];var e=this._marker_param;var b=this._marker_data;if(!this._id_pickup.pickFromRaster(this._ref_raster,c,b,e)){return}if(!this._encoder.encode(b,this._data_temp)){return}if(this._prev_data==null){this._current_data.copyFrom(this._data_temp)}else{if(!this._prev_data.isEqual((this._data_temp))){return}}var a=this.square;var g;for(g=0;g<4;g++){var n=(g+4-e.direction)%4;this._coordline.coord2Line(f[n],f[(n+1)%4],l,m,k,a.line[g])}for(g=0;g<4;g++){if(!NyARLinear.crossPos(a.line[g],a.line[(g+3)%4],a.sqvertex[g])){throw new NyARException()}}this.threshold=e.threshold;this.marker_data=this._current_data}});TransformedBitmapPickup=ASKlass("TransformedBitmapPickup",NyARColorPatt_Perspective_O2,{_work_points:NyARIntPoint2d.createArray(4),_ref_perspective:null,TransformedBitmapPickup:function(a,d,c,b){NyARColorPatt_Perspective_O2.initialize.call(this,d,c,b,0);this._ref_perspective=a},pickupImage2d:function(d,c,t,w,l,e){var a,v,u,k,i;a=this._ref_perspective.m00;v=this._ref_perspective.m01;u=this._ref_perspective.m02;k=this._ref_perspective.m11;i=this._ref_perspective.m12;var g=this._work_points;var o,n,m;var r,b,p;var q=e.m00;var s=e.m10;var f=e.m20;o=e.m01*t+e.m03;n=e.m11*t+e.m13;m=e.m21*t+e.m23;r=q*c+o;b=s*c+n;p=f*c+m;g[0].x=toInt((r*a+b*v+p*u)/p);g[0].y=toInt((b*k+p*i)/p);r=q*w+o;b=s*w+n;p=f*w+m;g[1].x=toInt((r*a+b*v+p*u)/p);g[1].y=toInt((b*k+p*i)/p);o=e.m01*l+e.m03;n=e.m11*l+e.m13;m=e.m21*l+e.m23;r=q*w+o;b=s*w+n;p=f*w+m;g[2].x=toInt((r*a+b*v+p*u)/p);g[2].y=toInt((b*k+p*i)/p);r=q*c+o;b=s*c+n;p=f*c+m;g[3].x=toInt((r*a+b*v+p*u)/p);g[3].y=toInt((b*k+p*i)/p);return this.pickFromRaster(d,g)}});