PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  wSc.@sSddlZddlZddlZddlmZddlmZmZdiZdjZ dkZ dlZ ide6d e 6d e 6d e 6Z id e6d e 6d e 6de 6Z ide6de 6d e 6d e 6ZejdZejejdejeejdZidd6dd6dd6Zgddgddgddgddgddgdddgdddgdddgddd gddd!gdd"d#gddd$gdddd%gddd&d'gddd d(gddd!d)gddd*d+gddd#d,gddd$d-gddd d.d/gddd d(d0gddd!d)d1gddd!d2d3gdd"d#d4d5gddd#d,d6gddd$d-d7gddd d(d0d8gddd!d)d1d9gddd:d)d;d<gddd*d+d=d>gddd?d,d@dAgddd#d,d6dBgddd$d-d7dCgddd!d)d1d9dDgddd dEd1dFdGgddd!d2d3dHdIgdd"d#d4d5dJdKgddd!d+d5dAdLgddd#d,d6dBdMgg(ZdmdnBdoBdpBdqBdrBdsBZdtduBdvBdwBdxBdyBdzBd{BZd|d}Bd~BdBdBZdOZdPZdQZgedD]NZdggeddRD]+Zd eeeej ee^qL^q0Z!dSZ"dTZ#dUZ$dVZ%dWZ&dXZ'dYZ(dZZ)d[Z*d\Z+d]Z,d^Z-dd_Z.d`Z/daZ0dbZ1dcdddYZ2deddfYZ3dgZ4dhZ5dS(iN(txrange(tbaset exceptionsiiiii i ii i iii s-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:s^[s]*\Ziiiiiiii"i&ii*i.ii2i6i i:i>iBi0iFiJiNi8iRiViZiHi^ibifiPijiTinirivizi~i4ihiilii<ipiiiiiLiiiiiiiiiiicCs|jS(N(t data_count(tblock((s//usr/lib/python2.7/site-packages/qrcode/util.pyt^si)cCs[|d>}x>t|ttdkrJ|tt|tt>N}q W|d>|BtAS(Ni i(t BCH_digittG15tG15_MASK(tdatatd((s//usr/lib/python2.7/site-packages/qrcode/util.pyt BCH_type_infofs "cCsW|d>}x>t|ttdkrJ|tt|tt>N}q W|d>|BS(Ni i(RtG18(R R ((s//usr/lib/python2.7/site-packages/qrcode/util.pytBCH_type_numberns "cCs1d}x$|dkr,|d7}|dL}q W|S(Nii((R tdigit((s//usr/lib/python2.7/site-packages/qrcode/util.pyRus  cCs t|dS(Ni(tPATTERN_POSITION_TABLE(tversion((s//usr/lib/python2.7/site-packages/qrcode/util.pytpattern_position}scCs|dkrdS|dkr&dS|dkr9dS|dkrLdS|d kr_d S|d krrd S|d krdS|dkrdStd|dS(s> Return the mask function for the given mask pattern. icSs||ddkS(Nii((titj((s//usr/lib/python2.7/site-packages/qrcode/util.pyRsicSs|ddkS(Nii((RR((s//usr/lib/python2.7/site-packages/qrcode/util.pyRsicSs|ddkS(Nii((RR((s//usr/lib/python2.7/site-packages/qrcode/util.pyRsicSs||ddkS(Nii((RR((s//usr/lib/python2.7/site-packages/qrcode/util.pyRsicSs,tj|dtj|dddkS(Niii(tmathtfloor(RR((s//usr/lib/python2.7/site-packages/qrcode/util.pyRsicSs||d||ddkS(Niii((RR((s//usr/lib/python2.7/site-packages/qrcode/util.pyRsicSs"||d||dddkS(Niii((RR((s//usr/lib/python2.7/site-packages/qrcode/util.pyRsicSs"||d||dddkS(Niii((RR((s//usr/lib/python2.7/site-packages/qrcode/util.pyRssBad mask pattern: N(t TypeError(tpattern((s//usr/lib/python2.7/site-packages/qrcode/util.pyt mask_funcs"        cCs(|dkrtS|dkr tStSdS(Ni i(tMODE_SIZE_SMALLtMODE_SIZE_MEDIUMtMODE_SIZE_LARGE(R((s//usr/lib/python2.7/site-packages/qrcode/util.pytmode_sizes_for_versions   cCsd|ttttfkr+td|n|dksC|dkrVtd|nt||S(NsInvalid mode (%s)ii(s*Invalid version (was %s, expected 1 to 40)(t MODE_NUMBERtMODE_ALPHA_NUMtMODE_8BIT_BYTEt MODE_KANJIRt ValueErrorR(tmodeR((s//usr/lib/python2.7/site-packages/qrcode/util.pytlength_in_bitss   cCs^t|}d}t||}|t||7}|t||7}|t||7}|S(Ni(tlent_lost_point_level1t_lost_point_level2t_lost_point_level3t_lost_point_level4(tmodulest modules_countt lost_point((s//usr/lib/python2.7/site-packages/qrcode/util.pyR+s cCs{d}t|}d}d}d}d d f}d d f}d df} x,|D]$} | dkrj|} n| |dkr|} n|} x|D]} d} || | }| dkr|}n| |dkr|}n| }xm| D]e}| |}|dkr d}nd}x7||D]+}|||| |kr| d7} qqWqW| dkr|d| d7}qqWqOW|S(Niiiii(ii(ii(iii(ii(i(ii(i(iii(ii(R(R)R*R+t modules_rangetrow_range_firsttrow_range_lasttrow_range_standardtcol_range_firsttcol_range_lasttcol_range_standardtrowt row_rangetcolt sameCounttdarkt col_rangetrt row_offsettcol_idxtc((s//usr/lib/python2.7/site-packages/qrcode/util.pyR%sB                 c Csd}t|d}x|D]}||}||d}x|D]}d}||re|d7}n||r||d7}n||dr|d7}n||dr|d7}n|dks|dkrB|d7}qBqBWqW|S(Niiii(R( R)R*R+R,R3tthis_rowtnext_rowR5tcount((s//usr/lib/python2.7/site-packages/qrcode/util.pyR&s$         c Csjt|d}d}xt|D]}||}x{|D]s}||r:||d r:||dr:||dr:||dr:||d r:||dr:|d7}q:q:Wq#Wxt|D]}x|D]}|||r||d| r||d|r||d|r||d|r||d| r||d|r|d7}qqWqW|S( Niiiiiiii((R(R)R*tmodules_range_shortR+R3R=R5((s//usr/lib/python2.7/site-packages/qrcode/util.pyR's0    cCs}t|}d}x@|D]8}||}x%|D]}||r0|d7}q0q0WqWtd|||dd}|dS(Niiidi2ii (Rtabs(R)R*R,t dark_countR3R=R5tratio((s//usr/lib/python2.7/site-packages/qrcode/util.pyR(#s      c cs&t|}tjdtj|jdtjd}tjtjd|}t||}tjtjdtjt tjd|}x|D]x\}}|rt |dt dt VqxIt||D]8\}} |rt } nt} t | d| dt VqWqWd S( s An iterator returning QRData chunks optimized to the data content. :param minimum: The minimum number of bytes in a row to split as a chunk. t{tasciis,}s\dt[t]R"t check_dataN(t to_bytestringtsixtbt text_typetencodetretcompilet_optimal_splittescapet ALPHA_NUMtQRDataRtFalseRR( R tminimumt re_repeatt num_patterntnum_bitst alpha_patterntis_numtchunktis_alphat sub_chunkR"((s//usr/lib/python2.7/site-packages/qrcode/util.pytoptimal_data_chunks1s 20 ccsxs|rutj||}|s%Pn|j|j}}|rVt|| fVnt|||!fV||}qW|rt|fVndS(N(RNtsearchtstarttendRTtTrue(R RtmatchR`Ra((s//usr/lib/python2.7/site-packages/qrcode/util.pyRPIs cCs1t|tjs-tj|jd}n|S(s^ Convert data to a (utf-8 encoded) byte-string if it isn't a byte-string already. sutf-8(t isinstanceRJt binary_typeRLRM(R ((s//usr/lib/python2.7/site-packages/qrcode/util.pyRIWscCs'|jrtStj|r#tStS(s< Calculate the optimal mode for this chunk of data. (tisdigitRt RE_ALPHA_NUMRcRR(R ((s//usr/lib/python2.7/site-packages/qrcode/util.pyt optimal_modeas  RScBs8eZdZdedZdZdZdZRS(sS Data held in a QR compatible format. Doesn't currently handle KANJI. cCs|rt|}n|dkr3t||_na||_|tttfkrdtd|n|r|t|krtdj |n||_ dS(sg If ``mode`` isn't provided, the most compact QR data type possible is chosen. sInvalid mode (%s)s0Provided data can not be represented in mode {0}N( RItNoneRhR"RRRRR!tformatR (tselfR R"RH((s//usr/lib/python2.7/site-packages/qrcode/util.pyt__init__ss  cCs t|jS(N(R$R (Rk((s//usr/lib/python2.7/site-packages/qrcode/util.pyt__len__scCsz|jtkrrxdtdt|jdD]@}|j||d!}tt|}|jt||q+Wn|jtkrxtdt|jdD]z}|j||d!}t|dkr|jt j |ddt j |ddq|jt j |dqWnXt j r3|j}n"g|jD]}t |^q=}x|D]}|j|dq\WdS( Niiiii-i ii(R"RRR$R t NUMBER_LENGTHtputtintRRRtfindRJtPY3tord(RktbufferRtcharst bit_lengthR R<((s//usr/lib/python2.7/site-packages/qrcode/util.pytwrites"""   " cCs t|jS(N(treprR (Rk((s//usr/lib/python2.7/site-packages/qrcode/util.pyt__repr__sN( t__name__t __module__t__doc__RiRbRlRmRwRy(((s//usr/lib/python2.7/site-packages/qrcode/util.pyRSls   t BitBuffercBs>eZdZdZdZdZdZdZRS(cCsg|_d|_dS(Ni(Rttlength(Rk((s//usr/lib/python2.7/site-packages/qrcode/util.pyRls cCs)djg|jD]}t|^qS(Nt.(tjoinRttstr(Rktn((s//usr/lib/python2.7/site-packages/qrcode/util.pyRyscCs4tj|d}|j|d|d?d@dkS(Niii(RRRt(Rktindext buf_index((s//usr/lib/python2.7/site-packages/qrcode/util.pytgetscCs>x7t|D])}|j|||d?d@dkq WdS(Ni(trangetput_bit(RktnumR~R((s//usr/lib/python2.7/site-packages/qrcode/util.pyRoscCs|jS(N(R~(Rk((s//usr/lib/python2.7/site-packages/qrcode/util.pyRmscCso|jd}t|j|kr5|jjdn|r\|j|cd|jd?O size available (%s)i(R}RoR"R$R#RwRRRRtDataOverflowErrorRtminRRTtPAD0tPAD1R( Rterror_correctiont data_listRtR Rt bit_limitRRtdelimitt bytes_to_fill((s//usr/lib/python2.7/site-packages/qrcode/util.pyt create_datas2  " &iiiiiii iiiiiiiiii iii@iiii(((6RNRRJt six.movesRtqrcodeRRRRRR RRRRKRRRORQRgRnRRR RRRt _data_countRRtsumtmapRtBIT_LIMIT_TABLER R RRRRR#R+R%R&R'R(R^RPRIRhRSR}RR(((s//usr/lib/python2.7/site-packages/qrcode/util.pyts      2            " ^       5      ; =