var aeink={};aeink.checkAndNudgePoints=function(image,points){var width=qrcode.width;var height=qrcode.height;var nudged=true;for(var offset=0;offsetwidth||y<-1||y>height){throw"Error.checkAndNudgePoints "}nudged=false;if(x==-1){points[offset]=0;nudged=true}else{if(x==width){points[offset]=width-1;nudged=true}}if(y==-1){points[offset+1]=0;nudged=true}else{if(y==height){points[offset+1]=height-1;nudged=true}}}nudged=true;for(var offset=points.length-2;offset>=0&&nudged;offset-=2){var x=Math.floor(points[offset]);var y=Math.floor(points[offset+1]);if(x<-1||x>width||y<-1||y>height){throw"Error.checkAndNudgePoints "}nudged=false;if(x==-1){points[offset]=0;nudged=true}else{if(x==width){points[offset]=width-1;nudged=true}}if(y==-1){points[offset+1]=0;nudged=true}else{if(y==height){points[offset+1]=height-1;nudged=true}}}};aeink.sampleGrid3=function(image,dimension,transform){var bits=new BitMatrix(dimension);var points=new Array(dimension<<1);for(var y=0;y>1)+0.5;points[x+1]=iValue}transform.transformPoints1(points);aeink.checkAndNudgePoints(image,points);try{for(var x=0;x>1,y)}}}catch(aioobe){throw"Error.checkAndNudgePoints"}}return bits};aeink.sampleGridx=function(image,dimension,p1ToX,p1ToY,p2ToX,p2ToY,p3ToX,p3ToY,p4ToX,p4ToY,p1FromX,p1FromY,p2FromX,p2FromY,p3FromX,p3FromY,p4FromX,p4FromY){var transform=PerspectiveTransform.quadrilateralToQuadrilateral(p1ToX,p1ToY,p2ToX,p2ToY,p3ToX,p3ToY,p4ToX,p4ToY,p1FromX,p1FromY,p2FromX,p2FromY,p3FromX,p3FromY,p4FromX,p4FromY);return aeink.sampleGrid3(image,dimension,transform)};function ECB(count,dataCodewords){this.count=count;this.dataCodewords=dataCodewords;this.__defineGetter__("Count",function(){return this.count });this.__defineGetter__("DataCodewords",function(){return this.dataCodewords})}function ECBlocks(ecCodewordsPerBlock,ecBlocks1,ecBlocks2){this.ecCodewordsPerBlock=ecCodewordsPerBlock;if(ecBlocks2){this.ecBlocks=new Array(ecBlocks1,ecBlocks2)}else{this.ecBlocks=new Array(ecBlocks1)}this.__defineGetter__("ECCodewordsPerBlock",function(){return this.ecCodewordsPerBlock});this.__defineGetter__("TotalECCodewords",function(){return this.ecCodewordsPerBlock*this.NumBlocks});this.__defineGetter__("NumBlocks",function(){var total=0;for(var i=0;i6){bitMatrix.setRegion(dimension-11,0,3,6);bitMatrix.setRegion(0,dimension-11,6,3)}return bitMatrix};this.getECBlocksForLevel=function(ecLevel){return this.ecBlocks[ecLevel.ordinal()]}}Version.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);Version.VERSIONS=buildVersions();Version.getVersionForNumber=function(versionNumber){if(versionNumber<1||versionNumber>40){throw"ArgumentException"}return Version.VERSIONS[versionNumber-1]};Version.getProvisionalVersionForDimension=function(dimension){if(dimension%4!=1){throw"Error getProvisionalVersionForDimension"}try{return Version.getVersionForNumber((dimension-17)>>2)}catch(iae){throw"Error getVersionForNumber"}};Version.decodeVersionInformation=function(versionBits){var bestDifference=4294967295;var bestVersion=0;for(var i=0;iMath.abs(toX-fromX);if(steep){var temp=fromX;fromX=fromY;fromY=temp;temp=toX;toX=toY;toY=temp}var dx=Math.abs(toX-fromX);var dy=Math.abs(toY-fromY);var error=-dx>>1;var ystep=fromY0){if(y==toY){break}y+=ystep;error-=dx}}var diffX2=toX-fromX;var diffY2=toY-fromY;return Math.sqrt((diffX2*diffX2+diffY2*diffY2))};this.sizeOfBlackWhiteBlackRunBothWays=function(fromX,fromY,toX,toY){var result=this.sizeOfBlackWhiteBlackRun(fromX,fromY,toX,toY);var scale=1;var otherToX=fromX-(toX-fromX);if(otherToX<0){scale=fromX/(fromX-otherToX);otherToX=0}else{if(otherToX>=qrcode.width){scale=(qrcode.width-1-fromX)/(otherToX-fromX);otherToX=qrcode.width-1}}var otherToY=Math.floor(fromY-(toY-fromY)*scale);scale=1;if(otherToY<0){scale=fromY/(fromY-otherToY);otherToY=0}else{if(otherToY>=qrcode.height){scale=(qrcode.height-1-fromY)/(otherToY-fromY); otherToY=qrcode.height-1}}otherToX=Math.floor(fromX+(otherToX-fromX)*scale);result+=this.sizeOfBlackWhiteBlackRun(fromX,fromY,otherToX,otherToY);return result-1};this.calculateModuleSizeOneWay=function(pattern,otherPattern){var moduleSizeEst1=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(pattern.X),Math.floor(pattern.Y),Math.floor(otherPattern.X),Math.floor(otherPattern.Y));var moduleSizeEst2=this.sizeOfBlackWhiteBlackRunBothWays(Math.floor(otherPattern.X),Math.floor(otherPattern.Y),Math.floor(pattern.X),Math.floor(pattern.Y));if(isNaN(moduleSizeEst1)){return moduleSizeEst2/7}if(isNaN(moduleSizeEst2)){return moduleSizeEst1/7}return(moduleSizeEst1+moduleSizeEst2)/14};this.calculateModuleSize=function(topLeft,topRight,bottomLeft){return(this.calculateModuleSizeOneWay(topLeft,topRight)+this.calculateModuleSizeOneWay(topLeft,bottomLeft))/2};this.distance=function(pattern1,pattern2){var xDiff=pattern1.X-pattern2.X;var yDiff=pattern1.Y-pattern2.Y;return Math.sqrt((xDiff*xDiff+yDiff*yDiff))};this.computeDimension=function(topLeft,topRight,bottomLeft,moduleSize){var tltrCentersDimension=Math.round(this.distance(topLeft,topRight)/moduleSize);var tlblCentersDimension=Math.round(this.distance(topLeft,bottomLeft)/moduleSize);var dimension=((tltrCentersDimension+tlblCentersDimension)>>1)+7;switch(dimension&3){case 0:dimension++;break;case 2:dimension--;break;case 3:throw"Error"}return dimension};this.findAlignmentInRegion=function(overallEstModuleSize,estAlignmentX,estAlignmentY,allowanceFactor){var allowance=Math.floor(allowanceFactor*overallEstModuleSize);var alignmentAreaLeftX=Math.max(0,estAlignmentX-allowance);var alignmentAreaRightX=Math.min(qrcode.width-1,estAlignmentX+allowance);if(alignmentAreaRightX-alignmentAreaLeftX0){var bottomRightX=topRight.X-topLeft.X+bottomLeft.X;var bottomRightY=topRight.Y-topLeft.Y+bottomLeft.Y;var correctionToTopLeft=1-3/modulesBetweenFPCenters;var estAlignmentX=Math.floor(topLeft.X+correctionToTopLeft*(bottomRightX-topLeft.X));var estAlignmentY=Math.floor(topLeft.Y+correctionToTopLeft*(bottomRightY-topLeft.Y));for(var i=4;i<=16;i<<=1){alignmentPattern=this.findAlignmentInRegion(moduleSize,estAlignmentX,estAlignmentY,i);break}}var transform=this.createTransform(topLeft,topRight,bottomLeft,alignmentPattern,dimension);var bits=this.sampleGrid(this.image,transform,dimension); var points;if(alignmentPattern==null){points=new Array(bottomLeft,topLeft,topRight)}else{points=new Array(bottomLeft,topLeft,topRight,alignmentPattern)}return new DetectorResult(bits,points)};this.detect=function(){var info=new FinderPatternFinder().findFinderPattern(this.image);return this.processFinderPatternInfo(info)}}var FORMAT_INFO_MASK_QR=21522;var FORMAT_INFO_DECODE_LOOKUP=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));var BITS_SET_IN_HALF_BYTE=new Array(0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4);function FormatInformation(formatInfo){this.errorCorrectionLevel=ErrorCorrectionLevel.forBits((formatInfo>>3)&3);this.dataMask=(formatInfo&7);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(o){var other=o;return this.errorCorrectionLevel==other.errorCorrectionLevel&&this.dataMask==other.dataMask}}FormatInformation.numBitsDiffering=function(a,b){a^=b;return BITS_SET_IN_HALF_BYTE[a&15]+BITS_SET_IN_HALF_BYTE[(URShift(a,4)&15)]+BITS_SET_IN_HALF_BYTE[(URShift(a,8)&15)]+BITS_SET_IN_HALF_BYTE[(URShift(a,12)&15)]+BITS_SET_IN_HALF_BYTE[(URShift(a,16)&15)]+BITS_SET_IN_HALF_BYTE[(URShift(a,20)&15)]+BITS_SET_IN_HALF_BYTE[(URShift(a,24)&15)]+BITS_SET_IN_HALF_BYTE[(URShift(a,28)&15)]};FormatInformation.decodeFormatInformation=function(maskedFormatInfo){var formatInfo=FormatInformation.doDecodeFormatInformation(maskedFormatInfo); if(formatInfo!=null){return formatInfo}return FormatInformation.doDecodeFormatInformation(maskedFormatInfo^FORMAT_INFO_MASK_QR)};FormatInformation.doDecodeFormatInformation=function(maskedFormatInfo){var bestDifference=4294967295;var bestFormatInfo=0;for(var i=0;i=FOR_BITS.length){throw"ArgumentException"}return FOR_BITS[bits]};var L=new ErrorCorrectionLevel(0,1,"L");var M=new ErrorCorrectionLevel(1,0,"M");var Q=new ErrorCorrectionLevel(2,3,"Q");var H=new ErrorCorrectionLevel(3,2,"H");var FOR_BITS=new Array(M,L,H,Q);function BitMatrix(width,height){if(!height){height=width}if(width<1||height<1){throw"Both dimensions must be greater than 0"}this.width=width;this.height=height;var rowSize=width>>5;if((width&31)!=0){rowSize++}this.rowSize=rowSize;this.bits=new Array(rowSize*height);for(var i=0;i>5);return((URShift(this.bits[offset],(x&31)))&1)!=0 };this.set_Renamed=function(x,y){var offset=y*this.rowSize+(x>>5);this.bits[offset]|=1<<(x&31)};this.flip=function(x,y){var offset=y*this.rowSize+(x>>5);this.bits[offset]^=1<<(x&31)};this.clear=function(){var max=this.bits.length;for(var i=0;ithis.height||right>this.width){throw"The region must fit inside the matrix"}for(var y=top;y>5)]|=1<<(x&31)}}}}function DataBlock(numDataCodewords,codewords){this.numDataCodewords=numDataCodewords;this.codewords=codewords;this.__defineGetter__("NumDataCodewords",function(){return this.numDataCodewords});this.__defineGetter__("Codewords",function(){return this.codewords})}DataBlock.getDataBlocks=function(rawCodewords,version,ecLevel){if(rawCodewords.length!=version.TotalCodewords){throw"ArgumentException"}var ecBlocks=version.getECBlocksForLevel(ecLevel);var totalBlocks=0;var ecBlockArray=ecBlocks.getECBlocks();for(var i=0;i=0){var numCodewords=result[longerBlocksStartAt].codewords.length;if(numCodewords==shorterBlocksTotalCodewords){break}longerBlocksStartAt--}longerBlocksStartAt++;var shorterBlocksNumDataCodewords=shorterBlocksTotalCodewords-ecBlocks.ECCodewordsPerBlock; var rawCodewordsOffset=0;for(var i=0;i=0;j--){formatInfoBits=this.copyBit(8,j,formatInfoBits)}this.parsedFormatInfo=FormatInformation.decodeFormatInformation(formatInfoBits);if(this.parsedFormatInfo!=null){return this.parsedFormatInfo}var dimension=this.bitMatrix.Dimension;formatInfoBits=0;var iMin=dimension-8;for(var i=dimension-1;i>=iMin;i--){formatInfoBits=this.copyBit(i,8,formatInfoBits)}for(var j=dimension-7;j>2; if(provisionalVersion<=6){return Version.getVersionForNumber(provisionalVersion)}var versionBits=0;var ijMin=dimension-11;for(var j=5;j>=0;j--){for(var i=dimension-9;i>=ijMin;i--){versionBits=this.copyBit(i,j,versionBits)}}this.parsedVersion=Version.decodeVersionInformation(versionBits);if(this.parsedVersion!=null&&this.parsedVersion.DimensionForVersion==dimension){return this.parsedVersion}versionBits=0;for(var i=5;i>=0;i--){for(var j=dimension-9;j>=ijMin;j--){versionBits=this.copyBit(i,j,versionBits)}}this.parsedVersion=Version.decodeVersionInformation(versionBits);if(this.parsedVersion!=null&&this.parsedVersion.DimensionForVersion==dimension){return this.parsedVersion}throw"Error readVersion"};this.readCodewords=function(){var formatInfo=this.readFormatInformation();var version=this.readVersion();var dataMask=DataMask.forReference(formatInfo.DataMask);var dimension=this.bitMatrix.Dimension;dataMask.unmaskBitMatrix(this.bitMatrix,dimension);var functionPattern=version.buildFunctionPattern();var readingUp=true;var result=new Array(version.TotalCodewords);var resultOffset=0;var currentByte=0;var bitsRead=0;for(var j=dimension-1;j>0;j-=2){if(j==6){j--}for(var count=0;count7){throw"System.ArgumentException"}return DataMask.DATA_MASKS[reference]};function DataMask000(){this.unmaskBitMatrix=function(bits,dimension){for(var i=0;i=Math.floor(R/2)){var rLastLast=rLast;var sLastLast=sLast;var tLastLast=tLast;rLast=r;sLast=s;tLast=t;if(rLast.Zero){throw"r_{i-1} was zero"}r=rLastLast;var q=this.field.Zero;var denominatorLeadingTerm=rLast.getCoefficient(rLast.Degree);var dltInverse=this.field.inverse(denominatorLeadingTerm);while(r.Degree>=rLast.Degree&&!r.Zero){var degreeDiff=r.Degree-rLast.Degree;var scale=this.field.multiply(r.getCoefficient(r.Degree),dltInverse);q=q.addOrSubtract(this.field.buildMonomial(degreeDiff,scale));r=r.addOrSubtract(rLast.multiplyByMonomial(degreeDiff,scale))}s=q.multiply1(sLast).addOrSubtract(sLastLast);t=q.multiply1(tLast).addOrSubtract(tLastLast)}var sigmaTildeAtZero=t.getCoefficient(0);if(sigmaTildeAtZero==0){throw"ReedSolomonException sigmaTilde(0) was zero"}var inverse=this.field.inverse(sigmaTildeAtZero);var sigma=t.multiply2(inverse);var omega=r.multiply2(inverse);return new Array(sigma,omega)};this.findErrorLocations=function(errorLocator){var numErrors=errorLocator.Degree;if(numErrors==1){return new Array(errorLocator.getCoefficient(1))}var result=new Array(numErrors);var e=0;for(var i=1; i<256&&e1&&coefficients[0]==0){var firstNonZero=1;while(firstNonZerolargerCoefficients.length){var temp=smallerCoefficients;smallerCoefficients=largerCoefficients;largerCoefficients=temp}var sumDiff=new Array(largerCoefficients.length);var lengthDiff=largerCoefficients.length-smallerCoefficients.length;for(var ci=0;ci=other.Degree&&!remainder.Zero){var degreeDifference=remainder.Degree-other.Degree;var scale=this.field.multiply(remainder.getCoefficient(remainder.Degree),inverseDenominatorLeadingTerm);var term=other.multiplyByMonomial(degreeDifference,scale);var iterationQuotient=this.field.buildMonomial(degreeDifference,scale);quotient=quotient.addOrSubtract(iterationQuotient);remainder=remainder.addOrSubtract(term)}return new Array(quotient,remainder)}}function GF256(primitive){this.expTable=new Array(256);this.logTable=new Array(256);var x=1;for(var i=0;i<256;i++){this.expTable[i]=x;x<<=1;if(x>=256){x^=primitive}}for(var i=0;i<255;i++){this.logTable[this.expTable[i]]=i}var at0=new Array(1);at0[0]=0;this.zero=new GF256Poly(this,new Array(at0));var at1=new Array(1);at1[0]=1;this.one=new GF256Poly(this,new Array(at1));this.__defineGetter__("Zero",function(){return this.zero});this.__defineGetter__("One",function(){return this.one});this.buildMonomial=function(degree,coefficient){if(degree<0){throw"System.ArgumentException"}if(coefficient==0){return this.zero}var coefficients=new Array(degree+1);for(var i=0;i-1){options=[{"sourceId":device.deviceId}]}}console.log(device.kind+": "+device.label+" id = "+device.deviceId)})})}catch(e){console.log(e)}}else{console.log("no navigator.mediaDevices.enumerateDevices")}if(n.getUserMedia){n.getUserMedia({video:options,audio:false},qrcode.vidSuccess,qrcode.vidError)}else{if(n.webkitGetUserMedia){qrcode.webkit=true;n.webkitGetUserMedia({video:options,audio:false},qrcode.vidSuccess,qrcode.vidError)}else{if(n.mozGetUserMedia){qrcode.moz=true;n.mozGetUserMedia({video:options,audio:false},qrcode.vidSuccess,qrcode.vidError)}}}};qrcode.decode=function(src){if(arguments.length==0){if(qrcode.canvas_qr2){var canvas_qr=qrcode.canvas_qr2;var context=qrcode.qrcontext2}else{var canvas_qr=document.getElementById("qr-canvas");var context=canvas_qr.getContext("2d")}qrcode.width=canvas_qr.width;qrcode.height=canvas_qr.height;qrcode.imagedata=context.getImageData(0,0,qrcode.width,qrcode.height);qrcode.result=qrcode.process(context);if(qrcode.callback!=null){qrcode.callback(qrcode.result) }return qrcode.result}else{var image=new Image();image.crossOrigin="Anonymous";image.onload=function(){var canvas_out=document.getElementById("out-canvas");if(canvas_out!=null){var outctx=canvas_out.getContext("2d");outctx.clearRect(0,0,320,240);outctx.drawImage(image,0,0,320,240)}var canvas_qr=document.createElement("canvas");var context=canvas_qr.getContext("2d");var nheight=image.height;var nwidth=image.width;if(image.width*image.height>qrcode.maxImgSize){var ir=image.width/image.height;nheight=Math.sqrt(qrcode.maxImgSize/ir);nwidth=ir*nheight}canvas_qr.width=nwidth;canvas_qr.height=nheight;context.drawImage(image,0,0,canvas_qr.width,canvas_qr.height);qrcode.width=canvas_qr.width;qrcode.height=canvas_qr.height;try{qrcode.imagedata=context.getImageData(0,0,canvas_qr.width,canvas_qr.height)}catch(e){qrcode.result="Cross domain image reading not supported in your browser! Save it to your computer then drag and drop the file!";if(qrcode.callback!=null){qrcode.callback(qrcode.result)}return}try{qrcode.result=qrcode.process(context)}catch(e){console.log(e);qrcode.result="error decoding QR Code"}if(qrcode.callback!=null){qrcode.callback(qrcode.result)}};image.onerror=function(){if(qrcode.callback!=null){qrcode.callback("Failed to load the image")}};image.src=src}};qrcode.isUrl=function(s){var regexp=/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;return regexp.test(s)};qrcode.decode_url=function(s){var escaped="";try{escaped=escape(s)}catch(e){console.log(e);escaped=s}var ret="";try{ret=decodeURIComponent(escaped)}catch(e){console.log(e);ret=escaped}return ret};qrcode.decode_utf8=function(s){if(qrcode.isUrl(s)){return qrcode.decode_url(s)}else{return s}};qrcode.process=function(ctx){var start=new Date().getTime();var image=qrcode.grayScaleToBitmap(qrcode.grayscale());if(qrcode.debug){for(var y=0;yminmax[ax][ay][1]){minmax[ax][ay][1]=target }}}}}var middle=new Array(numSqrtArea);for(var i3=0;i3=0){return number>>bits}else{return(number>>bits)+(2<<~bits)}}var MIN_SKIP=3;var MAX_MODULES=57;var INTEGER_MATH_SHIFT=8;var CENTER_QUORUM=2;qrcode.orderBestPatterns=function(patterns){function distance(pattern1,pattern2){var xDiff=pattern1.X-pattern2.X;var yDiff=pattern1.Y-pattern2.Y;return Math.sqrt((xDiff*xDiff+yDiff*yDiff))}function crossProductZ(pointA,pointB,pointC){var bX=pointB.x;var bY=pointB.y;return((pointC.x-bX)*(pointA.y-bY))-((pointC.y-bY)*(pointA.x-bX))}var zeroOneDistance=distance(patterns[0],patterns[1]);var oneTwoDistance=distance(patterns[1],patterns[2]);var zeroTwoDistance=distance(patterns[0],patterns[2]);var pointA,pointB,pointC;if(oneTwoDistance>=zeroOneDistance&&oneTwoDistance>=zeroTwoDistance){pointB=patterns[0];pointA=patterns[1];pointC=patterns[2]}else{if(zeroTwoDistance>=oneTwoDistance&&zeroTwoDistance>=zeroOneDistance){pointB=patterns[1]; pointA=patterns[0];pointC=patterns[2]}else{pointB=patterns[2];pointA=patterns[0];pointC=patterns[1]}}if(crossProductZ(pointA,pointB,pointC)<0){var temp=pointA;pointA=pointC;pointC=temp}patterns[0]=pointA;patterns[1]=pointB;patterns[2]=pointC};function FinderPattern(posX,posY,estimatedModuleSize){this.x=posX;this.y=posY;this.count=1;this.estimatedModuleSize=estimatedModuleSize;this.__defineGetter__("EstimatedModuleSize",function(){return this.estimatedModuleSize});this.__defineGetter__("Count",function(){return this.count});this.__defineGetter__("X",function(){return this.x});this.__defineGetter__("Y",function(){return this.y});this.incrementCount=function(){this.count++};this.aboutEquals=function(moduleSize,i,j){if(Math.abs(i-this.y)<=moduleSize&&Math.abs(j-this.x)<=moduleSize){var moduleSizeDiff=Math.abs(moduleSize-this.estimatedModuleSize);return moduleSizeDiff<=1||moduleSizeDiff/this.estimatedModuleSize<=1}return false}}function FinderPatternInfo(patternCenters){this.bottomLeft=patternCenters[0];this.topLeft=patternCenters[1];this.topRight=patternCenters[2];this.__defineGetter__("BottomLeft",function(){return this.bottomLeft});this.__defineGetter__("TopLeft",function(){return this.topLeft});this.__defineGetter__("TopRight",function(){return this.topRight})}function FinderPatternFinder(){this.image=null;this.possibleCenters=[];this.hasSkipped=false;this.crossCheckStateCount=new Array(0,0,0,0,0);this.resultPointCallback=null;this.__defineGetter__("CrossCheckStateCount",function(){this.crossCheckStateCount[0]=0;this.crossCheckStateCount[1]=0;this.crossCheckStateCount[2]=0;this.crossCheckStateCount[3]=0;this.crossCheckStateCount[4]=0;return this.crossCheckStateCount});this.foundPatternCross=function(stateCount){var totalModuleSize=0;for(var i=0;i<5;i++){var count=stateCount[i];if(count==0){return false}totalModuleSize+=count}if(totalModuleSize<7){return false}var moduleSize=Math.floor((totalModuleSize<=0&&image[centerJ+i*qrcode.width]){stateCount[2]++;i--}if(i<0){return NaN}while(i>=0&&!image[centerJ+i*qrcode.width]&&stateCount[1]<=maxCount){stateCount[1]++;i--}if(i<0||stateCount[1]>maxCount){return NaN}while(i>=0&&image[centerJ+i*qrcode.width]&&stateCount[0]<=maxCount){stateCount[0]++;i--}if(stateCount[0]>maxCount){return NaN}i=startI+1;while(i=maxCount){return NaN}while(i=maxCount){return NaN}var stateCountTotal=stateCount[0]+stateCount[1]+stateCount[2]+stateCount[3]+stateCount[4];if(5*Math.abs(stateCountTotal-originalStateCountTotal)>=2*originalStateCountTotal){return NaN}return this.foundPatternCross(stateCount)?this.centerFromEnd(stateCount,i):NaN};this.crossCheckHorizontal=function(startJ,centerI,maxCount,originalStateCountTotal){var image=this.image;var maxJ=qrcode.width;var stateCount=this.CrossCheckStateCount;var j=startJ;while(j>=0&&image[j+centerI*qrcode.width]){stateCount[2]++;j--}if(j<0){return NaN}while(j>=0&&!image[j+centerI*qrcode.width]&&stateCount[1]<=maxCount){stateCount[1]++;j--}if(j<0||stateCount[1]>maxCount){return NaN}while(j>=0&&image[j+centerI*qrcode.width]&&stateCount[0]<=maxCount){stateCount[0]++;j--}if(stateCount[0]>maxCount){return NaN}j=startJ+1;while(j=maxCount){return NaN }while(j=maxCount){return NaN}var stateCountTotal=stateCount[0]+stateCount[1]+stateCount[2]+stateCount[3]+stateCount[4];if(5*Math.abs(stateCountTotal-originalStateCountTotal)>=originalStateCountTotal){return NaN}return this.foundPatternCross(stateCount)?this.centerFromEnd(stateCount,j):NaN};this.handlePossibleCenter=function(stateCount,i,j){var stateCountTotal=stateCount[0]+stateCount[1]+stateCount[2]+stateCount[3]+stateCount[4];var centerJ=this.centerFromEnd(stateCount,j);var centerI=this.crossCheckVertical(i,Math.floor(centerJ),stateCount[2],stateCountTotal);if(!isNaN(centerI)){centerJ=this.crossCheckHorizontal(Math.floor(centerJ),Math.floor(centerI),stateCount[2],stateCountTotal);if(!isNaN(centerJ)){var estimatedModuleSize=stateCountTotal/7;var found=false;var max=this.possibleCenters.length;for(var index=0;index3){var totalModuleSize=0;var square=0;for(var i=0;i=0;i--){var pattern=this.possibleCenters[i];if(Math.abs(pattern.EstimatedModuleSize-average)>limit){this.possibleCenters.splice(i,1)}}}if(this.possibleCenters.length>3){this.possibleCenters.sort(function(a,b){if(a.count>b.count){return -1}if(a.count=CENTER_QUORUM){if(firstConfirmedCenter==null){firstConfirmedCenter=center}else{this.hasSkipped=true;return Math.floor((Math.abs(firstConfirmedCenter.X-center.X)-Math.abs(firstConfirmedCenter.Y-center.Y))/2)}}}return 0};this.haveMultiplyConfirmedCenters=function(){var confirmedCount=0;var totalModuleSize=0;var max=this.possibleCenters.length;for(var i=0;i=CENTER_QUORUM){confirmedCount++;totalModuleSize+=pattern.EstimatedModuleSize}}if(confirmedCount<3){return false}var average=totalModuleSize/max;var totalDeviation=0;for(var i=0;istateCount[2]){i+=rowSkip-stateCount[2]-iSkip;j=maxJ-1}}}else{do{j++}while(j=maxVariance){return false}}return true};this.crossCheckVertical=function(startI,centerJ,maxCount,originalStateCountTotal){var image=this.image;var maxI=qrcode.height;var stateCount=this.crossCheckStateCount;stateCount[0]=0;stateCount[1]=0;stateCount[2]=0;var i=startI;while(i>=0&&image[centerJ+i*qrcode.width]&&stateCount[1]<=maxCount){stateCount[1]++;i--}if(i<0||stateCount[1]>maxCount){return NaN}while(i>=0&&!image[centerJ+i*qrcode.width]&&stateCount[0]<=maxCount){stateCount[0]++;i--}if(stateCount[0]>maxCount){return NaN}i=startI+1;while(imaxCount){return NaN}while(imaxCount){return NaN}var stateCountTotal=stateCount[0]+stateCount[1]+stateCount[2];if(5*Math.abs(stateCountTotal-originalStateCountTotal)>=2*originalStateCountTotal){return NaN}return this.foundPatternCross(stateCount)?this.centerFromEnd(stateCount,i):NaN};this.handlePossibleCenter=function(stateCount,i,j){var stateCountTotal=stateCount[0]+stateCount[1]+stateCount[2];var centerJ=this.centerFromEnd(stateCount,j);var centerI=this.crossCheckVertical(i,Math.floor(centerJ),2*stateCount[1],stateCountTotal);if(!isNaN(centerI)){var estimatedModuleSize=(stateCount[0]+stateCount[1]+stateCount[2])/3;var max=this.possibleCenters.length;for(var index=0;index>1);var stateCount=new Array(0,0,0);for(var iGen=0;iGen>1):-((iGen+1)>>1));stateCount[0]=0;stateCount[1]=0;stateCount[2]=0;var j=startX;while(j=10&&version<=26){this.dataLengthMode=1}else{if(version>=27&&version<=40){this.dataLengthMode=2}}}this.getNextBits=function(numBits){var bits=0;if(numBits>(this.bitPointer-numBits+1);this.bitPointer-=numBits;return bits}else{if(numBits>(8-(numBits-(this.bitPointer+1))));this.bitPointer=this.bitPointer-numBits%8;if(this.bitPointer<0){this.bitPointer=8+this.bitPointer}return bits }else{if(numBits>(8-(numBits-(this.bitPointer+1+8)));bits=bitsFirstBlock+bitsSecondBlock+bitsThirdBlock;this.bitPointer=this.bitPointer-(numBits-8)%8;if(this.bitPointer<0){this.bitPointer=8+this.bitPointer}return bits}else{return 0}}}};this.NextMode=function(){if((this.blockPointer>this.blocks.length-this.numErrorCorrectionCode-2)){return 0}else{return this.getNextBits(4)}};this.getDataLength=function(modeIndicator){var index=0;while(true){if((modeIndicator>>index)==1){break}index++}return this.getNextBits(qrcode.sizeOfDataLengthInfo[this.dataLengthMode][index])};this.getRomanAndFigureString=function(dataLength){var length=dataLength;var intData=0;var strData="";var tableRomanAndFigure=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(length>1){intData=this.getNextBits(11);var firstLetter=Math.floor(intData/45);var secondLetter=intData%45;strData+=tableRomanAndFigure[firstLetter];strData+=tableRomanAndFigure[secondLetter];length-=2}else{if(length==1){intData=this.getNextBits(6);strData+=tableRomanAndFigure[intData];length-=1}}}while(length>0);return strData};this.getFigureString=function(dataLength){var length=dataLength;var intData=0;var strData="";do{if(length>=3){intData=this.getNextBits(10);if(intData<100){strData+="0"}if(intData<10){strData+="0"}length-=3}else{if(length==2){intData=this.getNextBits(7);if(intData<10){strData+="0"}length-=2}else{if(length==1){intData=this.getNextBits(4); length-=1}}}strData+=intData}while(length>0);return strData};this.get8bitByteArray=function(dataLength){var length=dataLength;var intData=0;var output=new Array();do{intData=this.getNextBits(8);output.push(intData);length--}while(length>0);return output};this.getKanjiString=function(dataLength){var length=dataLength;var intData=0;var unicodeString="";do{intData=this.getNextBits(13);var lowerByte=intData%192;var higherByte=intData/192;var tempWord=(higherByte<<8)+lowerByte;var shiftjisWord=0;if(tempWord+33088<=40956){shiftjisWord=tempWord+33088}else{shiftjisWord=tempWord+49472}unicodeString+=String.fromCharCode(shiftjisWord);length--}while(length>0);return unicodeString};this.parseECIValue=function(){var intData=0;var firstByte=this.getNextBits(8);if((firstByte&128)==0){intData=firstByte&127}if((firstByte&192)==128){var secondByte=this.getNextBits(8);intData=((firstByte&63)<<8)|secondByte}if((firstByte&224)==192){var secondThirdBytes=this.getNextBits(8);intData=((firstByte&31)<<16)|secondThirdBytes}return intData};this.__defineGetter__("DataByte",function(){var output=new Array();var MODE_NUMBER=1;var MODE_ROMAN_AND_NUMBER=2;var MODE_8BIT_BYTE=4;var MODE_ECI=7;var MODE_KANJI=8;do{var mode=this.NextMode();if(mode==0){if(output.length>0){break}else{throw"Empty data block"}}if(mode!=MODE_NUMBER&&mode!=MODE_ROMAN_AND_NUMBER&&mode!=MODE_8BIT_BYTE&&mode!=MODE_KANJI&&mode!=MODE_ECI){throw"Invalid mode: "+mode+" in (block:"+this.blockPointer+" bit:"+this.bitPointer+")"}if(mode==MODE_ECI){var temp_sbyteArray3=this.parseECIValue()}else{var dataLength=this.getDataLength(mode);if(dataLength<1){throw"Invalid data length: "+dataLength}switch(mode){case MODE_NUMBER:var temp_str=this.getFigureString(dataLength);var ta=new Array(temp_str.length);for(var j=0;j