var qrcode=function(){var qrcode=function(typeNumber,errorCorrectionLevel){var PAD0=236;var PAD1=17;var _typeNumber=typeNumber;var _errorCorrectionLevel=QRErrorCorrectionLevel[errorCorrectionLevel];var _modules=null;var _moduleCount=0;var _dataCache=null;var _dataList=[];var _this={};var makeImpl=function(test,maskPattern){_moduleCount=_typeNumber*4+17;_modules=function(moduleCount){var modules=new Array(moduleCount);for(var row=0;row=7){setupTypeNumber(test)}if(_dataCache==null){_dataCache=createData(_typeNumber,_errorCorrectionLevel,_dataList)}mapData(_dataCache,maskPattern)};var setupPositionProbePattern=function(row,col){for(var r=-1;r<=7;r+=1){if(row+r<=-1||_moduleCount<=row+r)continue;for(var c=-1;c<=7;c+=1){if(col+c<=-1||_moduleCount<=col+c)continue;if(0<=r&&r<=6&&(c==0||c==6)||0<=c&&c<=6&&(r==0||r==6)||2<=r&&r<=4&&2<=c&&c<=4){_modules[row+r][col+c]=true}else{_modules[row+r][col+c]=false}}}};var getBestMaskPattern=function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i+=1){makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(_this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i}}return pattern};var setupTimingPattern=function(){for(var r=8;r<_moduleCount-8;r+=1){if(_modules[r][6]!=null){continue}_modules[r][6]=r%2==0}for(var c=8;c<_moduleCount-8;c+=1){if(_modules[6][c]!=null){continue}_modules[6][c]=c%2==0}};var setupPositionAdjustPattern=function(){var pos=QRUtil.getPatternPosition(_typeNumber);for(var i=0;i>i&1)==1;_modules[Math.floor(i/3)][i%3+_moduleCount-8-3]=mod}for(var i=0;i<18;i+=1){var mod=!test&&(bits>>i&1)==1;_modules[i%3+_moduleCount-8-3][Math.floor(i/3)]=mod}};var setupTypeInfo=function(test,maskPattern){var data=_errorCorrectionLevel<<3|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i+=1){var mod=!test&&(bits>>i&1)==1;if(i<6){_modules[i][8]=mod}else if(i<8){_modules[i+1][8]=mod}else{_modules[_moduleCount-15+i][8]=mod}}for(var i=0;i<15;i+=1){var mod=!test&&(bits>>i&1)==1;if(i<8){_modules[8][_moduleCount-i-1]=mod}else if(i<9){_modules[8][15-i-1+1]=mod}else{_modules[8][15-i-1]=mod}}_modules[_moduleCount-8][8]=!test};var mapData=function(data,maskPattern){var inc=-1;var row=_moduleCount-1;var bitIndex=7;var byteIndex=0;var maskFunc=QRUtil.getMaskFunction(maskPattern);for(var col=_moduleCount-1;col>0;col-=2){if(col==6)col-=1;while(true){for(var c=0;c<2;c+=1){if(_modules[row][col-c]==null){var dark=false;if(byteIndex>>bitIndex&1)==1}var mask=maskFunc(row,col-c);if(mask){dark=!dark}_modules[row][col-c]=dark;bitIndex-=1;if(bitIndex==-1){byteIndex+=1;bitIndex=7}}}row+=inc;if(row<0||_moduleCount<=row){row-=inc;inc=-inc;break}}}};var createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r=0?modPoly.getAt(modIndex):0}}var totalCodeCount=0;for(var i=0;itotalDataCount*8){throw"code length overflow. ("+buffer.getLengthInBits()+">"+totalDataCount*8+")"}if(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4)}while(buffer.getLengthInBits()%8!=0){buffer.putBit(false)}while(true){if(buffer.getLengthInBits()>=totalDataCount*8){break}buffer.put(PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break}buffer.put(PAD1,8)}return createBytes(buffer,rsBlocks)};_this.addData=function(data,mode){mode=mode||"Byte";var newData=null;switch(mode){case"Numeric":newData=qrNumber(data);break;case"Alphanumeric":newData=qrAlphaNum(data);break;case"Byte":newData=qr8BitByte(data);break;case"Kanji":newData=qrKanji(data);break;default:throw"mode:"+mode}_dataList.push(newData);_dataCache=null};_this.isDark=function(row,col){if(row<0||_moduleCount<=row||col<0||_moduleCount<=col){throw row+","+col}return _modules[row][col]};_this.getModuleCount=function(){return _moduleCount};_this.make=function(){if(_typeNumber<1){var typeNumber=1;for(;typeNumber<40;typeNumber++){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,_errorCorrectionLevel);var buffer=qrBitBuffer();for(var i=0;i<_dataList.length;i++){var data=_dataList[i];buffer.put(data.getMode(),4);buffer.put(data.getLength(),QRUtil.getLengthInBits(data.getMode(),typeNumber));data.write(buffer)}var totalDataCount=0;for(var i=0;i";for(var c=0;c<_this.getModuleCount();c+=1){qrHtml+=''}qrHtml+=""}qrHtml+="";qrHtml+="";return qrHtml};_this.createSvgTag=function(cellSize,margin,alt,title){var opts={};if(typeof arguments[0]=="object"){opts=arguments[0];cellSize=opts.cellSize;margin=opts.margin;alt=opts.alt;title=opts.title}cellSize=cellSize||2;margin=typeof margin=="undefined"?cellSize*4:margin;alt=typeof alt==="string"?{text:alt}:alt||{};alt.text=alt.text||null;alt.id=alt.text?alt.id||"qrcode-description":null;title=typeof title==="string"?{text:title}:title||{};title.text=title.text||null;title.id=title.text?title.id||"qrcode-title":null;var size=_this.getModuleCount()*cellSize+margin*2;var c,mc,r,mr,qrSvg="",rect;rect="l"+cellSize+",0 0,"+cellSize+" -"+cellSize+",0 0,-"+cellSize+"z ";qrSvg+=''+escapeXml(title.text)+"":"";qrSvg+=alt.text?''+escapeXml(alt.text)+"":"";qrSvg+='';qrSvg+='":escaped+=">";break;case"&":escaped+="&";break;case'"':escaped+=""";break;default:escaped+=c;break}}return escaped};var _createHalfASCII=function(margin){var cellSize=1;margin=typeof margin=="undefined"?cellSize*2:margin;var size=_this.getModuleCount()*cellSize+margin*2;var min=margin;var max=size-margin;var y,x,r1,r2,p;var blocks={"██":"█","█ ":"▀"," █":"▄"," ":" "};var blocksLastLineNoMargin={"██":"▀","█ ":"▀"," █":" "," ":" "};var ascii="";for(y=0;y=max?blocksLastLineNoMargin[p]:blocks[p]}ascii+="\n"}if(size%2&&margin>0){return ascii.substring(0,ascii.length-size-1)+Array(size+1).join("▀")}return ascii.substring(0,ascii.length-1)};_this.createASCII=function(cellSize,margin){cellSize=cellSize||1;if(cellSize<2){return _createHalfASCII(margin)}cellSize-=1;margin=typeof margin=="undefined"?cellSize*2:margin;var size=_this.getModuleCount()*cellSize+margin*2;var min=margin;var max=size-margin;var y,x,r,p;var white=Array(cellSize+1).join("██");var black=Array(cellSize+1).join(" ");var ascii="";var line="";for(y=0;y>>8);bytes.push(b&255)}}else{bytes.push(unknownChar)}}}return bytes}};var QRMode={MODE_NUMBER:1<<0,MODE_ALPHA_NUM:1<<1,MODE_8BIT_BYTE:1<<2,MODE_KANJI:1<<3};var QRErrorCorrectionLevel={L:1,M:0,Q:3,H:2};var QRMaskPattern={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var QRUtil=function(){var PATTERN_POSITION_TABLE=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]];var G15=1<<10|1<<8|1<<5|1<<4|1<<2|1<<1|1<<0;var G18=1<<12|1<<11|1<<10|1<<9|1<<8|1<<5|1<<2|1<<0;var G15_MASK=1<<14|1<<12|1<<10|1<<4|1<<1;var _this={};var getBCHDigit=function(data){var digit=0;while(data!=0){digit+=1;data>>>=1}return digit};_this.getBCHTypeInfo=function(data){var d=data<<10;while(getBCHDigit(d)-getBCHDigit(G15)>=0){d^=G15<=0){d^=G18<5){lostPoint+=3+sameCount-5}}}for(var row=0;row=256){n-=255}return EXP_TABLE[n]};return _this}();function qrPolynomial(num,shift){if(typeof num.length=="undefined"){throw num.length+"/"+shift}var _num=function(){var offset=0;while(offset>>7-index%8&1)==1};_this.put=function(num,length){for(var i=0;i>>length-i-1&1)==1)}};_this.getLengthInBits=function(){return _length};_this.putBit=function(bit){var bufIndex=Math.floor(_length/8);if(_buffer.length<=bufIndex){_buffer.push(0)}if(bit){_buffer[bufIndex]|=128>>>_length%8}_length+=1};return _this};var qrNumber=function(data){var _mode=QRMode.MODE_NUMBER;var _data=data;var _this={};_this.getMode=function(){return _mode};_this.getLength=function(buffer){return _data.length};_this.write=function(buffer){var data=_data;var i=0;while(i+2>>8&255)*192+(c&255);buffer.put(c,13);i+=2}if(i>>8)};_this.writeBytes=function(b,off,len){off=off||0;len=len||b.length;for(var i=0;i0){s+=","}s+=_bytes[i]}s+="]";return s};return _this};var base64EncodeOutputStream=function(){var _buffer=0;var _buflen=0;var _length=0;var _base64="";var _this={};var writeEncoded=function(b){_base64+=String.fromCharCode(encode(b&63))};var encode=function(n){if(n<0){}else if(n<26){return 65+n}else if(n<52){return 97+(n-26)}else if(n<62){return 48+(n-52)}else if(n==62){return 43}else if(n==63){return 47}throw"n:"+n};_this.writeByte=function(n){_buffer=_buffer<<8|n&255;_buflen+=8;_length+=1;while(_buflen>=6){writeEncoded(_buffer>>>_buflen-6);_buflen-=6}};_this.flush=function(){if(_buflen>0){writeEncoded(_buffer<<6-_buflen);_buffer=0;_buflen=0}if(_length%3!=0){var padlen=3-_length%3;for(var i=0;i=_str.length){if(_buflen==0){return-1}throw"unexpected end of file./"+_buflen}var c=_str.charAt(_pos);_pos+=1;if(c=="="){_buflen=0;return-1}else if(c.match(/^\s$/)){continue}_buffer=_buffer<<6|decode(c.charCodeAt(0));_buflen+=6}var n=_buffer>>>_buflen-8&255;_buflen-=8;return n};var decode=function(c){if(65<=c&&c<=90){return c-65}else if(97<=c&&c<=122){return c-97+26}else if(48<=c&&c<=57){return c-48+52}else if(c==43){return 62}else if(c==47){return 63}else{throw"c:"+c}};return _this};var gifImage=function(width,height){var _width=width;var _height=height;var _data=new Array(width*height);var _this={};_this.setPixel=function(x,y,pixel){_data[y*_width+x]=pixel};_this.write=function(out){out.writeString("GIF87a");out.writeShort(_width);out.writeShort(_height);out.writeByte(128);out.writeByte(0);out.writeByte(0);out.writeByte(0);out.writeByte(0);out.writeByte(0);out.writeByte(255);out.writeByte(255);out.writeByte(255);out.writeString(",");out.writeShort(0);out.writeShort(0);out.writeShort(_width);out.writeShort(_height);out.writeByte(0);var lzwMinCodeSize=2;var raster=getLZWRaster(lzwMinCodeSize);out.writeByte(lzwMinCodeSize);var offset=0;while(raster.length-offset>255){out.writeByte(255);out.writeBytes(raster,offset,255);offset+=255}out.writeByte(raster.length-offset);out.writeBytes(raster,offset,raster.length-offset);out.writeByte(0);out.writeString(";")};var bitOutputStream=function(out){var _out=out;var _bitLength=0;var _bitBuffer=0;var _this={};_this.write=function(data,length){if(data>>>length!=0){throw"length over"}while(_bitLength+length>=8){_out.writeByte(255&(data<<_bitLength|_bitBuffer));length-=8-_bitLength;data>>>=8-_bitLength;_bitBuffer=0;_bitLength=0}_bitBuffer=data<<_bitLength|_bitBuffer;_bitLength=_bitLength+length};_this.flush=function(){if(_bitLength>0){_out.writeByte(_bitBuffer)}};return _this};var getLZWRaster=function(lzwMinCodeSize){var clearCode=1<>6,128|charcode&63)}else if(charcode<55296||charcode>=57344){utf8.push(224|charcode>>12,128|charcode>>6&63,128|charcode&63)}else{i++;charcode=65536+((charcode&1023)<<10|str.charCodeAt(i)&1023);utf8.push(240|charcode>>18,128|charcode>>12&63,128|charcode>>6&63,128|charcode&63)}}return utf8}return toUTF8Array(s)}}();(function(factory){if(typeof define==="function"&&define.amd){define([],factory)}else if(typeof exports==="object"){module.exports=factory()}})(function(){return qrcode});