/*! * qr-decode v0.0.1 * (c) 2018-present cnwhy * Released under the ISC License. */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.qrDecode=t()}(this,function(){"use strict";function e(e,t,n){this.x=e,this.y=t,this.count=1,this.estimatedModuleSize=n,this.__defineGetter__("EstimatedModuleSize",function(){return this.estimatedModuleSize}),this.__defineGetter__("Count",function(){return this.count}),this.__defineGetter__("X",function(){return Math.floor(this.x)}),this.__defineGetter__("Y",function(){return Math.floor(this.y)}),this.incrementCount=function(){this.count++},this.aboutEquals=function(e,t,n){if(Math.abs(t-this.y)<=e&&Math.abs(n-this.x)<=e){var i=Math.abs(e-this.estimatedModuleSize);return i<=1||i/this.estimatedModuleSize<=1}return!1}}var t=function(t,n,i,r,s,o,a,h){this.image=t,this.possibleCenters=new Array,this.startX=i,this.startY=r,this.width=s,this.height=o,this.moduleSize=a,this.crossCheckStateCount=new Array(0,0,0),this.resultPointCallback=h,this.centerFromEnd=function(e,t){return t-e[2]-e[1]/2},this.foundPatternCross=function(e){for(var t=this.moduleSize,n=t/2,i=0;i<3;i++)if(Math.abs(t-e[i])>=n)return!1;return!0},this.crossCheckVertical=function(e,t,i,r){var s=this.image,o=n.height,a=this.crossCheckStateCount;a[0]=0,a[1]=0,a[2]=0;for(var h=e;h>=0&&s[t+h*n.width]&&a[1]<=i;)a[1]++,h--;if(h<0||a[1]>i)return NaN;for(;h>=0&&!s[t+h*n.width]&&a[0]<=i;)a[0]++,h--;if(a[0]>i)return NaN;for(h=e+1;hi)return NaN;for(;hi)return NaN;var w=a[0]+a[1]+a[2];return 5*Math.abs(w-r)>=2*r?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.handlePossibleCenter=function(t,n,i){var r=t[0]+t[1]+t[2],s=this.centerFromEnd(t,i),o=this.crossCheckVertical(n,Math.floor(s),2*t[1],r);if(!isNaN(o)){for(var a=(t[0]+t[1]+t[2])/3,h=this.possibleCenters.length,w=0;w>1),h=new Array(0,0,0),w=0;w>1:-(w+1>>1));h[0]=0,h[1]=0,h[2]=0;for(var u=e;u=s&&o>=a?(i=e[0],n=e[1],r=e[2]):a>=o&&a>=s?(i=e[1],n=e[0],r=e[2]):(i=e[2],n=e[0],r=e[1]),function(e,t,n){var i=t.x,r=t.y;return(n.x-i)*(e.y-r)-(n.y-r)*(e.x-i)}(n,i,r)<0){var h=n;n=r,r=h}e[0]=n,e[1]=i,e[2]=r};var a=function(e){this.image=null,this.possibleCenters=[],this.hasSkipped=!1,this.crossCheckStateCount=new Array(0,0,0,0,0),this.resultPointCallback=null,this.__defineGetter__("CrossCheckStateCount",function(){return this.crossCheckStateCount[0]=0,this.crossCheckStateCount[1]=0,this.crossCheckStateCount[2]=0,this.crossCheckStateCount[3]=0,this.crossCheckStateCount[4]=0,this.crossCheckStateCount}),this.foundPatternCross=function(e){for(var t=0,n=0;n<5;n++){var i=e[n];if(0==i)return!1;t+=i}if(t<7)return!1;var s=Math.floor((t<=0&&s[n+h*e.width];)a[2]++,h--;if(h<0)return NaN;for(;h>=0&&!s[n+h*e.width]&&a[1]<=i;)a[1]++,h--;if(h<0||a[1]>i)return NaN;for(;h>=0&&s[n+h*e.width]&&a[0]<=i;)a[0]++,h--;if(a[0]>i)return NaN;for(h=t+1;h=i)return NaN;for(;h=i)return NaN;var w=a[0]+a[1]+a[2]+a[3]+a[4];return 5*Math.abs(w-r)>=2*r?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.crossCheckHorizontal=function(t,n,i,r){for(var s=this.image,o=e.width,a=this.CrossCheckStateCount,h=t;h>=0&&s[h+n*e.width];)a[2]++,h--;if(h<0)return NaN;for(;h>=0&&!s[h+n*e.width]&&a[1]<=i;)a[1]++,h--;if(h<0||a[1]>i)return NaN;for(;h>=0&&s[h+n*e.width]&&a[0]<=i;)a[0]++,h--;if(a[0]>i)return NaN;for(h=t+1;h=i)return NaN;for(;h=i)return NaN;var w=a[0]+a[1]+a[2]+a[3]+a[4];return 5*Math.abs(w-r)>=r?NaN:this.foundPatternCross(a)?this.centerFromEnd(a,h):NaN},this.handlePossibleCenter=function(e,t,n){var i=e[0]+e[1]+e[2]+e[3]+e[4],r=this.centerFromEnd(e,n),s=this.crossCheckVertical(t,Math.floor(r),e[2],i);if(!isNaN(s)&&(r=this.crossCheckHorizontal(Math.floor(r),Math.floor(s),e[2],i),!isNaN(r))){for(var o=i/7,a=!1,h=this.possibleCenters.length,w=0;w3){for(var t=0,n=0,i=0;i=0;i--){var h=this.possibleCenters[i];Math.abs(h.EstimatedModuleSize-s)>a&&this.possibleCenters.splice(i,1)}}return this.possibleCenters.length>3&&this.possibleCenters.sort(function(e,t){return e.count>t.count?-1:e.count=s){if(null!=t)return this.hasSkipped=!0,Math.floor((Math.abs(t.X-i.X)-Math.abs(t.Y-i.Y))/2);t=i}}return 0},this.haveMultiplyConfirmedCenters=function(){for(var e=0,t=0,n=this.possibleCenters.length,i=0;i=s&&(e++,t+=r.EstimatedModuleSize)}if(e<3)return!1;var o=t/n,a=0;for(i=0;iw[2]&&(f+=d-w[2]-a,l=s-1)}else{do{l++}while(l=0?e>>t:(e>>t)+(2<<~t)};function w(e,t,n){this.ordinal_Renamed_Field=e,this.bits=t,this.name=n,this.__defineGetter__("Bits",function(){return this.bits}),this.__defineGetter__("Name",function(){return this.name}),this.ordinal=function(){return this.ordinal_Renamed_Field}}var f=new w(0,1,"L"),u=new w(1,0,"M"),l=new w(2,3,"Q"),d=new w(3,2,"H"),c=new Array(u,f,d,l),v=function(e){if(e<0||e>=c.length)throw"ArgumentException";return c[e]},g=h,m=new Array(new Array(21522,0),new Array(20773,1),new Array(24188,2),new Array(23371,3),new Array(17913,4),new Array(16590,5),new Array(20375,6),new Array(19104,7),new Array(30660,8),new Array(29427,9),new Array(32170,10),new Array(30877,11),new Array(26159,12),new Array(25368,13),new Array(27713,14),new Array(26998,15),new Array(5769,16),new Array(5054,17),new Array(7399,18),new Array(6608,19),new Array(1890,20),new Array(597,21),new Array(3340,22),new Array(2107,23),new Array(13663,24),new Array(12392,25),new Array(16177,26),new Array(14854,27),new Array(9396,28),new Array(8579,29),new Array(11994,30),new Array(11245,31)),b=new Array(0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4);function y(e){this.errorCorrectionLevel=v(e>>3&3),this.dataMask=7&e,this.__defineGetter__("ErrorCorrectionLevel",function(){return this.errorCorrectionLevel}),this.__defineGetter__("DataMask",function(){return this.dataMask}),this.GetHashCode=function(){return this.errorCorrectionLevel.ordinal()<<3|this.dataMask},this.Equals=function(e){var t=e;return this.errorCorrectionLevel==t.errorCorrectionLevel&&this.dataMask==t.dataMask}}y.numBitsDiffering=function(e,t){return b[15&(e^=t)]+b[15&g(e,4)]+b[15&g(e,8)]+b[15&g(e,12)]+b[15&g(e,16)]+b[15&g(e,20)]+b[15&g(e,24)]+b[15&g(e,28)]},y.decodeFormatInformation=function(e){var t=y.doDecodeFormatInformation(e);return null!=t?t:y.doDecodeFormatInformation(21522^e)},y.doDecodeFormatInformation=function(e){for(var t=4294967295,n=0,i=0;i>5;0!=(31&e)&&n++,this.rowSize=n,this.bits=new Array(n*t);for(var i=0;i>5);return 0!=(1&_(this.bits[n],31&e))},this.set_Renamed=function(e,t){var n=t*this.rowSize+(e>>5);this.bits[n]|=1<<(31&e)},this.flip=function(e,t){var n=t*this.rowSize+(e>>5);this.bits[n]^=1<<(31&e)},this.clear=function(){for(var e=this.bits.length,t=0;tthis.height||r>this.width)throw"The region must fit inside the matrix";for(var o=t;o>5)]|=1<<(31&h)}};function p(e,t){this.count=e,this.dataCodewords=t,this.__defineGetter__("Count",function(){return this.count}),this.__defineGetter__("DataCodewords",function(){return this.dataCodewords})}function M(e,t,n){this.ecCodewordsPerBlock=e,this.ecBlocks=n?new Array(t,n):new Array(t),this.__defineGetter__("ECCodewordsPerBlock",function(){return this.ecCodewordsPerBlock}),this.__defineGetter__("TotalECCodewords",function(){return this.ecCodewordsPerBlock*this.NumBlocks}),this.__defineGetter__("NumBlocks",function(){for(var e=0,t=0;t6&&(t.setRegion(e-11,0,3,6),t.setRegion(0,e-11,6,3)),t},this.getECBlocksForLevel=function(e){return this.ecBlocks[e.ordinal()]}}k.VERSION_DECODE_INFO=new Array(31892,34236,39577,42195,48118,51042,55367,58893,63784,68472,70749,76311,79154,84390,87683,92361,96236,102084,102881,110507,110734,117786,119615,126325,127568,133589,136944,141498,145311,150283,152622,158308,161089,167017),k.VERSIONS=new Array(new k(1,new Array,new M(7,new p(1,19)),new M(10,new p(1,16)),new M(13,new p(1,13)),new M(17,new p(1,9))),new k(2,new Array(6,18),new M(10,new p(1,34)),new M(16,new p(1,28)),new M(22,new p(1,22)),new M(28,new p(1,16))),new k(3,new Array(6,22),new M(15,new p(1,55)),new M(26,new p(1,44)),new M(18,new p(2,17)),new M(22,new p(2,13))),new k(4,new Array(6,26),new M(20,new p(1,80)),new M(18,new p(2,32)),new M(26,new p(2,24)),new M(16,new p(4,9))),new k(5,new Array(6,30),new M(26,new p(1,108)),new M(24,new p(2,43)),new M(18,new p(2,15),new p(2,16)),new M(22,new p(2,11),new p(2,12))),new k(6,new Array(6,34),new M(18,new p(2,68)),new M(16,new p(4,27)),new M(24,new p(4,19)),new M(28,new p(4,15))),new k(7,new Array(6,22,38),new M(20,new p(2,78)),new M(18,new p(4,31)),new M(18,new p(2,14),new p(4,15)),new M(26,new p(4,13),new p(1,14))),new k(8,new Array(6,24,42),new M(24,new p(2,97)),new M(22,new p(2,38),new p(2,39)),new M(22,new p(4,18),new p(2,19)),new M(26,new p(4,14),new p(2,15))),new k(9,new Array(6,26,46),new M(30,new p(2,116)),new M(22,new p(3,36),new p(2,37)),new M(20,new p(4,16),new p(4,17)),new M(24,new p(4,12),new p(4,13))),new k(10,new Array(6,28,50),new M(18,new p(2,68),new p(2,69)),new M(26,new p(4,43),new p(1,44)),new M(24,new p(6,19),new p(2,20)),new M(28,new p(6,15),new p(2,16))),new k(11,new Array(6,30,54),new M(20,new p(4,81)),new M(30,new p(1,50),new p(4,51)),new M(28,new p(4,22),new p(4,23)),new M(24,new p(3,12),new p(8,13))),new k(12,new Array(6,32,58),new M(24,new p(2,92),new p(2,93)),new M(22,new p(6,36),new p(2,37)),new M(26,new p(4,20),new p(6,21)),new M(28,new p(7,14),new p(4,15))),new k(13,new Array(6,34,62),new M(26,new p(4,107)),new M(22,new p(8,37),new p(1,38)),new M(24,new p(8,20),new p(4,21)),new M(22,new p(12,11),new p(4,12))),new k(14,new Array(6,26,46,66),new M(30,new p(3,115),new p(1,116)),new M(24,new p(4,40),new p(5,41)),new M(20,new p(11,16),new p(5,17)),new M(24,new p(11,12),new p(5,13))),new k(15,new Array(6,26,48,70),new M(22,new p(5,87),new p(1,88)),new M(24,new p(5,41),new p(5,42)),new M(30,new p(5,24),new p(7,25)),new M(24,new p(11,12),new p(7,13))),new k(16,new Array(6,26,50,74),new M(24,new p(5,98),new p(1,99)),new M(28,new p(7,45),new p(3,46)),new M(24,new p(15,19),new p(2,20)),new M(30,new p(3,15),new p(13,16))),new k(17,new Array(6,30,54,78),new M(28,new p(1,107),new p(5,108)),new M(28,new p(10,46),new p(1,47)),new M(28,new p(1,22),new p(15,23)),new M(28,new p(2,14),new p(17,15))),new k(18,new Array(6,30,56,82),new M(30,new p(5,120),new p(1,121)),new M(26,new p(9,43),new p(4,44)),new M(28,new p(17,22),new p(1,23)),new M(28,new p(2,14),new p(19,15))),new k(19,new Array(6,30,58,86),new M(28,new p(3,113),new p(4,114)),new M(26,new p(3,44),new p(11,45)),new M(26,new p(17,21),new p(4,22)),new M(26,new p(9,13),new p(16,14))),new k(20,new Array(6,34,62,90),new M(28,new p(3,107),new p(5,108)),new M(26,new p(3,41),new p(13,42)),new M(30,new p(15,24),new p(5,25)),new M(28,new p(15,15),new p(10,16))),new k(21,new Array(6,28,50,72,94),new M(28,new p(4,116),new p(4,117)),new M(26,new p(17,42)),new M(28,new p(17,22),new p(6,23)),new M(30,new p(19,16),new p(6,17))),new k(22,new Array(6,26,50,74,98),new M(28,new p(2,111),new p(7,112)),new M(28,new p(17,46)),new M(30,new p(7,24),new p(16,25)),new M(24,new p(34,13))),new k(23,new Array(6,30,54,74,102),new M(30,new p(4,121),new p(5,122)),new M(28,new p(4,47),new p(14,48)),new M(30,new p(11,24),new p(14,25)),new M(30,new p(16,15),new p(14,16))),new k(24,new Array(6,28,54,80,106),new M(30,new p(6,117),new p(4,118)),new M(28,new p(6,45),new p(14,46)),new M(30,new p(11,24),new p(16,25)),new M(30,new p(30,16),new p(2,17))),new k(25,new Array(6,32,58,84,110),new M(26,new p(8,106),new p(4,107)),new M(28,new p(8,47),new p(13,48)),new M(30,new p(7,24),new p(22,25)),new M(30,new p(22,15),new p(13,16))),new k(26,new Array(6,30,58,86,114),new M(28,new p(10,114),new p(2,115)),new M(28,new p(19,46),new p(4,47)),new M(28,new p(28,22),new p(6,23)),new M(30,new p(33,16),new p(4,17))),new k(27,new Array(6,34,62,90,118),new M(30,new p(8,122),new p(4,123)),new M(28,new p(22,45),new p(3,46)),new M(30,new p(8,23),new p(26,24)),new M(30,new p(12,15),new p(28,16))),new k(28,new Array(6,26,50,74,98,122),new M(30,new p(3,117),new p(10,118)),new M(28,new p(3,45),new p(23,46)),new M(30,new p(4,24),new p(31,25)),new M(30,new p(11,15),new p(31,16))),new k(29,new Array(6,30,54,78,102,126),new M(30,new p(7,116),new p(7,117)),new M(28,new p(21,45),new p(7,46)),new M(30,new p(1,23),new p(37,24)),new M(30,new p(19,15),new p(26,16))),new k(30,new Array(6,26,52,78,104,130),new M(30,new p(5,115),new p(10,116)),new M(28,new p(19,47),new p(10,48)),new M(30,new p(15,24),new p(25,25)),new M(30,new p(23,15),new p(25,16))),new k(31,new Array(6,30,56,82,108,134),new M(30,new p(13,115),new p(3,116)),new M(28,new p(2,46),new p(29,47)),new M(30,new p(42,24),new p(1,25)),new M(30,new p(23,15),new p(28,16))),new k(32,new Array(6,34,60,86,112,138),new M(30,new p(17,115)),new M(28,new p(10,46),new p(23,47)),new M(30,new p(10,24),new p(35,25)),new M(30,new p(19,15),new p(35,16))),new k(33,new Array(6,30,58,86,114,142),new M(30,new p(17,115),new p(1,116)),new M(28,new p(14,46),new p(21,47)),new M(30,new p(29,24),new p(19,25)),new M(30,new p(11,15),new p(46,16))),new k(34,new Array(6,34,62,90,118,146),new M(30,new p(13,115),new p(6,116)),new M(28,new p(14,46),new p(23,47)),new M(30,new p(44,24),new p(7,25)),new M(30,new p(59,16),new p(1,17))),new k(35,new Array(6,30,54,78,102,126,150),new M(30,new p(12,121),new p(7,122)),new M(28,new p(12,47),new p(26,48)),new M(30,new p(39,24),new p(14,25)),new M(30,new p(22,15),new p(41,16))),new k(36,new Array(6,24,50,76,102,128,154),new M(30,new p(6,121),new p(14,122)),new M(28,new p(6,47),new p(34,48)),new M(30,new p(46,24),new p(10,25)),new M(30,new p(2,15),new p(64,16))),new k(37,new Array(6,28,54,80,106,132,158),new M(30,new p(17,122),new p(4,123)),new M(28,new p(29,46),new p(14,47)),new M(30,new p(49,24),new p(10,25)),new M(30,new p(24,15),new p(46,16))),new k(38,new Array(6,32,58,84,110,136,162),new M(30,new p(4,122),new p(18,123)),new M(28,new p(13,46),new p(32,47)),new M(30,new p(48,24),new p(14,25)),new M(30,new p(42,15),new p(32,16))),new k(39,new Array(6,26,54,82,110,138,166),new M(30,new p(20,117),new p(4,118)),new M(28,new p(40,47),new p(7,48)),new M(30,new p(43,24),new p(22,25)),new M(30,new p(10,15),new p(67,16))),new k(40,new Array(6,30,58,86,114,142,170),new M(30,new p(19,118),new p(6,119)),new M(28,new p(18,47),new p(31,48)),new M(30,new p(34,24),new p(34,25)),new M(30,new p(20,15),new p(61,16)))),k.getVersionForNumber=function(e){if(e<1||e>40)throw"ArgumentException";return k.VERSIONS[e-1]},k.getProvisionalVersionForDimension=function(e){if(e%4!=1)throw"Error getProvisionalVersionForDimension";try{return k.getVersionForNumber(e-17>>2)}catch(e){throw"Error getVersionForNumber"}},k.decodeVersionInformation=function(e){for(var t=4294967295,n=0,i=0;ii||h<-1||h>r)throw"Error.checkAndNudgePoints ";s=!1,-1==a?(t[o]=0,s=!0):a==i&&(t[o]=i-1,s=!0),-1==h?(t[o+1]=0,s=!0):h==r&&(t[o+1]=r-1,s=!0)}s=!0;for(o=t.length-2;o>=0&&s;o-=2){a=Math.floor(t[o]),h=Math.floor(t[o+1]);if(a<-1||a>i||h<-1||h>r)throw"Error.checkAndNudgePoints ";s=!1,-1==a?(t[o]=0,s=!0):a==i&&(t[o]=i-1,s=!0),-1==h?(t[o+1]=0,s=!0):h==r&&(t[o+1]=r-1,s=!0)}},sampleGrid3:function(e,t,n,i){for(var r=new A(n),s=new Array(n<<1),o=0;o>1),s[w+1]=h;i.transformPoints1(s),N.checkAndNudgePoints(e,s,t);try{for(w=0;w>1,o)}}catch(e){throw"Error.checkAndNudgePoints"}}return r}},B=N;function E(e,t,n,i,r,s,o,a,h){this.a11=e,this.a12=i,this.a13=o,this.a21=t,this.a22=r,this.a23=a,this.a31=n,this.a32=s,this.a33=h,this.transformPoints1=function(e){for(var t=e.length,n=this.a11,i=this.a12,r=this.a13,s=this.a21,o=this.a22,a=this.a23,h=this.a31,w=this.a32,f=this.a33,u=0;uMath.abs(i-e);if(s){var o=e;e=t,t=o,o=i,i=r,r=o}for(var a=Math.abs(i-e),h=Math.abs(r-t),w=-a>>1,f=t0){if(c==r)break;c+=f,w-=a}}var y=i-e,C=r-t;return Math.sqrt(y*y+C*C)},this.sizeOfBlackWhiteBlackRunBothWays=function(e,t,i,r){var s=this.sizeOfBlackWhiteBlackRun(e,t,i,r),o=1,a=e-(i-e);a<0?(o=e/(e-a),a=0):a>=n.width&&(o=(n.width-1-e)/(a-e),a=n.width-1);var h=Math.floor(t-(r-t)*o);return o=1,h<0?(o=t/(t-h),h=0):h>=n.height&&(o=(n.height-1-t)/(h-t),h=n.height-1),a=Math.floor(e+(a-e)*o),(s+=this.sizeOfBlackWhiteBlackRun(e,t,a,h))-1},this.calculateModuleSizeOneWay=function(e,t){var n=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(e.X),Math.floor(e.Y),Math.floor(t.X),Math.floor(t.Y)),i=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(t.X),Math.floor(t.Y),Math.floor(e.X),Math.floor(e.Y));return isNaN(n)?i/7:isNaN(i)?n/7:(n+i)/14},this.calculateModuleSize=function(e,t,n){return(this.calculateModuleSizeOneWay(e,t)+this.calculateModuleSizeOneWay(e,n))/2},this.distance=function(e,t){var n=e.X-t.X,i=e.Y-t.Y;return Math.sqrt(n*n+i*i)},this.computeDimension=function(e,t,n,i){var r=7+(Math.round(this.distance(e,t)/i)+Math.round(this.distance(e,n)/i)>>1);switch(3&r){case 0:r++;break;case 2:r--;break;case 3:throw"Error"}return r},this.findAlignmentInRegion=function(e,i,r,s){var o=Math.floor(s*e),a=Math.max(0,i-o),h=Math.min(n.width-1,i+o);if(h-a<3*e)throw"Error";var w=Math.max(0,r-o),f=Math.min(n.height-1,r+o);return new t(this.image,n,a,w,h-a,f-w,e,this.resultPointCallback).find()},this.createTransform=function(e,t,n,i,r){var s,o,a,h,w=r-3.5;return null!=i?(s=i.X,o=i.Y,a=h=w-3):(s=t.X-e.X+n.X,o=t.Y-e.Y+n.Y,a=h=w),S.quadrilateralToQuadrilateral(3.5,3.5,w,3.5,a,h,3.5,w,e.X,e.Y,t.X,t.Y,s,o,n.X,n.Y)},this.sampleGrid=function(e,t,i){return B.sampleGrid3(e,n,i,t)},this.processFinderPatternInfo=function(e){var t=e.TopLeft,n=e.TopRight,i=e.BottomLeft,r=this.calculateModuleSize(t,n,i);if(r<1)throw"Error";var s=this.computeDimension(t,n,i,r),o=P.getProvisionalVersionForDimension(s),a=o.DimensionForVersion-7,h=null;if(o.AlignmentPatternCenters.length>0)for(var w=n.X-t.X+i.X,f=n.Y-t.Y+i.Y,u=1-3/a,l=Math.floor(t.X+u*(w-t.X)),d=Math.floor(t.Y+u*(f-t.Y)),c=4;c<=16;c<<=1){h=this.findAlignmentInRegion(r,l,d,c);break}var v=this.createTransform(t,n,i,h,s);return new function(e,t){this.bits=e,this.points=t}(this.sampleGrid(this.image,v,s),null==h?new Array(i,t,n):new Array(i,t,n,h))},this.detect=function(){var e=new a(n).findFinderPattern(this.image);return this.processFinderPatternInfo(e)}},x=function(e,t){return e^t};var F=function e(t,n){if(null==n||0==n.length)throw"System.ArgumentException";this.field=t;var i=n.length;if(i>1&&0==n[0]){for(var r=1;rr.length){var s=i;i=r,r=s}for(var o=new Array(r.length),a=r.length-i.length,h=0;h=e.Degree&&!n.Zero;){var s=n.Degree-e.Degree,o=this.field.multiply(n.getCoefficient(n.Degree),r),a=e.multiplyByMonomial(s,o),h=this.field.buildMonomial(s,o);t=t.addOrSubtract(h),n=n.addOrSubtract(a)}return new Array(t,n)}};function R(e){this.expTable=new Array(256),this.logTable=new Array(256);for(var t=1,n=0;n<256;n++)this.expTable[n]=t,(t<<=1)>=256&&(t^=e);for(n=0;n<255;n++)this.logTable[this.expTable[n]]=n;var i=new Array(1);i[0]=0,this.zero=new F(this,new Array(i));var r=new Array(1);r[0]=1,this.one=new F(this,new Array(r)),this.__defineGetter__("Zero",function(){return this.zero}),this.__defineGetter__("One",function(){return this.one}),this.buildMonomial=function(e,t){if(e<0)throw"System.ArgumentException";if(0==t)return this.zero;for(var n=new Array(e+1),i=0;i7)throw"System.ArgumentException";return V.DATA_MASKS[e]},V.DATA_MASKS=new Array(new function(){this.unmaskBitMatrix=function(e,t){for(var n=0;n=0;){if(a[c].codewords.length==d)break;c--}c++;var v=d-i.ECCodewordsPerBlock,g=0;for(o=0;o=10&&t<=26?this.dataLengthMode=1:t>=27&&t<=40&&(this.dataLengthMode=2),this.getNextBits=function(e){var t=0;if(e>this.bitPointer-e+1,this.bitPointer-=e,t}if(e>8-(e-(this.bitPointer+1)),this.bitPointer=this.bitPointer-e%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),t}if(e>8-(e-(this.bitPointer+1+8))),this.bitPointer=this.bitPointer-(e-8)%8,this.bitPointer<0&&(this.bitPointer=8+this.bitPointer),t}return 0},this.NextMode=function(){return this.blockPointer>this.blocks.length-this.numErrorCorrectionCode-2?0:this.getNextBits(4)},this.getDataLength=function(e){for(var t=0;e>>t!=1;)t++;return this.getNextBits(L[this.dataLengthMode][t])},this.getRomanAndFigureString=function(e){var t=e,n=0,i="",r=new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":");do{if(t>1){var s=(n=this.getNextBits(11))%45;i+=r[Math.floor(n/45)],i+=r[s],t-=2}else 1==t&&(i+=r[n=this.getNextBits(6)],t-=1)}while(t>0);return i},this.getFigureString=function(e){var t=e,n=0,i="";do{t>=3?((n=this.getNextBits(10))<100&&(i+="0"),n<10&&(i+="0"),t-=3):2==t?((n=this.getNextBits(7))<10&&(i+="0"),t-=2):1==t&&(n=this.getNextBits(4),t-=1),i+=n}while(t>0);return i},this.get8bitByteArray=function(e){var t=e,n=0,i=new Array;do{n=this.getNextBits(8),i.push(n),t--}while(t>0);return i},this.getKanjiString=function(e){var t=e,n=0,i="";do{var r=((n=this.getNextBits(13))/192<<8)+n%192,s=0;s=r+33088<=40956?r+33088:r+49472,i+=String.fromCharCode(s),t--}while(t>0);return i},this.parseECIValue=function(){var e=0,t=this.getNextBits(8);return 0==(128&t)&&(e=127&t),128==(192&t)&&(e=(63&t)<<8|this.getNextBits(8)),192==(224&t)&&(e=(31&t)<<16|this.getNextBits(8)),e},this.__defineGetter__("DataByte",function(){for(var e=new Array;;){var t=this.NextMode();if(0==t){if(e.length>0)break;throw"Empty data block"}if(1!=t&&2!=t&&4!=t&&8!=t&&7!=t)throw"Invalid mode: "+t+" in (block:"+this.blockPointer+" bit:"+this.bitPointer+")";if(7==t)var n=this.parseECIValue();else{var i=this.getDataLength(t);if(i<1)throw"Invalid data length: "+i;switch(t){case 1:for(var r=this.getFigureString(i),s=new Array(r.length),o=0;o=Math.floor(n/2);){var f=r,u=o,l=h;if(o=a,h=w,(r=s).Zero)throw"r_{i-1} was zero";s=f;for(var d=this.field.Zero,c=r.getCoefficient(r.Degree),v=this.field.inverse(c);s.Degree>=r.Degree&&!s.Zero;){var g=s.Degree-r.Degree,m=this.field.multiply(s.getCoefficient(s.Degree),v);d=d.addOrSubtract(this.field.buildMonomial(g,m)),s=s.addOrSubtract(r.multiplyByMonomial(g,m))}a=d.multiply1(o).addOrSubtract(u),w=d.multiply1(h).addOrSubtract(l)}var b=w.getCoefficient(0);if(0==b)throw"ReedSolomonException sigmaTilde(0) was zero";var y=this.field.inverse(b),C=w.multiply2(y),_=s.multiply2(y);return new Array(C,_)},this.findErrorLocations=function(e){var t=e.Degree;if(1==t)return new Array(e.getCoefficient(1));for(var n=new Array(t),i=0,r=1;r<256&&i=0;n--)e=this.copyBit(8,n,e);if(this.parsedFormatInfo=C.decodeFormatInformation(e),null!=this.parsedFormatInfo)return this.parsedFormatInfo;var i=this.bitMatrix.Dimension;e=0;var r=i-8;for(t=i-1;t>=r;t--)e=this.copyBit(t,8,e);for(n=i-7;n>2;if(t<=6)return P.getVersionForNumber(t);for(var n=0,i=e-11,r=5;r>=0;r--)for(var s=e-9;s>=i;s--)n=this.copyBit(s,r,n);if(this.parsedVersion=P.decodeVersionInformation(n),null!=this.parsedVersion&&this.parsedVersion.DimensionForVersion==e)return this.parsedVersion;for(n=0,s=5;s>=0;s--)for(r=e-9;r>=i;r--)n=this.copyBit(s,r,n);if(this.parsedVersion=P.decodeVersionInformation(n),null!=this.parsedVersion&&this.parsedVersion.DimensionForVersion==e)return this.parsedVersion;throw"Error readVersion"},this.readCodewords=function(){var e=this.readFormatInformation(),t=this.readVersion(),n=z.forReference(e.DataMask),i=this.bitMatrix.Dimension;n.unmaskBitMatrix(this.bitMatrix,i);for(var r=t.buildFunctionPattern(),s=!0,o=new Array(t.TotalCodewords),a=0,h=0,w=0,f=i-1;f>0;f-=2){6==f&&f--;for(var u=0;u