o
    hB                     @   s  d dl Z d dlZd dlmZmZmZ d dlmZ dZdZ	dZ
dZede	d	e
dediZed
e	de
dediZede	de
ded
iZdZedee d ZddddZg g ddgddgddgddgddgg dg dg dg dg dg dg d g d!g d"g d#g d$g d%g d&g d'g d(g d)g d*g d+g d,g d-g d.g d/g d0g d1g d2g d3g d4g d5g d6g d7g d8g d9g d:g d;Zd<Zd=Zd>Zd?Zd@ZdAdB ZdCdD edD ZdEdF ZdGdH ZdIdJ ZdKdL Z dMdN Z!dOdP Z"dQdR Z#dSdT Z$dUdV Z%dWdX Z&dYdZ Z'd[d\ Z(d]d^ Z)dqd_d`Z*dadb Z+dcdd Z,dedf Z-G dgdh dhZ.G didj djZ/dke/dle0e fdmdnZ1dodp Z2dS )r    N)LUTbase
exceptions)RSBlock            
   	                  s-   0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:s   ^[s   ]*\Z   )   r   r                  "   )r   r   &   )r      *   )r   r   .   )r      2   )r   r   6   )r       :   )r   r   >   )r   r   r   B   )r   r   0   F   )r   r   r   J   )r   r   r   N   )r   r   8   R   )r   r   r!   V   )r   r   r"   Z   )r   r   r   H   ^   )r   r   r   r&   b   )r   r   r   r'   f   )r   r   r   P   j   )r   r    r!   T   n   )r   r   r!   r*   r   )r   r   r"   r+   v   )r   r   r   r&   r.   z   )r   r   r   r'   r/   ~   )r   r   4   r'   h      )r   r   r(   r)   l      )r   r   <   r*   p      )r   r   r!   r*   r4      )r   r   r"   r+   r5      )r   r   r   r'   r/   r7      )r   r   r   L   r/         )r   r   r   r0   r1         )r   r    r!   r2   r3         )r   r   r   r)   r3   r?      )r   r   r!   r*   r4   r@      i7  i%  iT        c                 C      | j S N
data_count)block rS   >/var/www/html/venv/lib/python3.10/site-packages/qrcode/util.py_data_countd      rU   c                    s*   g | ] d g fddt ddD  qS )r   c              
      s&   g | ]}d t ttt|  qS )r	   )summaprU   r   	rs_blocks).0versionerror_correctionrS   rT   
<listcomp>j   s    z<listcomp>.<listcomp>r   )   )range)rZ   rS   r\   rT   r^   h   s    
r^   c                 C   sX   | d> }t |t t dkr$|tt |t t > N }t |t t dks| d> |B tA S )Nr
   r   )	BCH_digitG15G15_MASKdatadrS   rS   rT   BCH_type_infor   s
   rg   c                 C   sT   | d> }t |t t dkr$|tt |t t > N }t |t t dks| d> |B S )Nr   r   )ra   G18rd   rS   rS   rT   BCH_type_numberz   s
   ri   c                 C   s(   d}| dkr|d7 }| dL } | dks|S )Nr   r   rS   )re   digitrS   rS   rT   ra      s   ra   c                 C   s   t | d  S Nr   )PATTERN_POSITION_TABLEr[   rS   rS   rT   pattern_position   s   rn   c                 C   s   | dkrdd S | dkrdd S | dkrdd S | dkr d	d S | d
kr(dd S | dkr0dd S | dkr8dd S | dkr@dd S t d|  )z>
    Return the mask function for the given mask pattern.
    r   c                 S      | | d dkS Nr   r   rS   ijrS   rS   rT   <lambda>       zmask_func.<locals>.<lambda>r   c                 S   s   | d dkS rp   rS   rq   rS   rS   rT   rt          r   c                 S   s   |d dkS Nr   r   rS   rq   rS   rS   rT   rt      rv   r   c                 S   ro   rw   rS   rq   rS   rS   rT   rt      ru   r   c                 S   s$   t | d t |d  d dkS Nr   r   r   )mathfloorrq   rS   rS   rT   rt      s   $    c                 S   s   | | d | | d  dkS rx   rS   rq   rS   rS   rT   rt      s    r   c                 S   s    | | d | | d  d dkS rx   rS   rq   rS   rS   rT   rt           r   c                 S   s    | | d | | d  d dkS )Nr   r   r   rS   rq   rS   rS   rT   rt      r|   zBad mask pattern: )	TypeError)patternrS   rS   rT   	mask_func   s"   r   c                 C   s   | dk rt S | dk rtS tS )Nr
      )MODE_SIZE_SMALLMODE_SIZE_MEDIUMMODE_SIZE_LARGErm   rS   rS   rT   mode_sizes_for_version   s
   r   c                 C   s4   | t tttfvrtd|  dt| t||  S )NInvalid mode ())MODE_NUMBERMODE_ALPHA_NUMMODE_8BIT_BYTE
MODE_KANJIr}   check_versionr   )moder[   rS   rS   rT   length_in_bits   s   r   c                 C   s$   | dk s| dkrt d|  dd S )Nr   (   zInvalid version (was z, expected 1 to 40))
ValueErrorrm   rS   rS   rT   r      s   r   c                 C   sD   t | }d}t| |}|t| |7 }|t| |7 }|t| |7 }|S Nr   )len_lost_point_level1_lost_point_level2_lost_point_level3_lost_point_level4)modulesmodules_count
lost_pointrS   rS   rT   r      s   
r   c           	         s:  d}t |}dg|d   |D ]:}| | }|d }d}|D ]}|| |kr*|d7 }q|dkr6 |  d7  < d}|| }q|dkrI |  d7  < q|D ]<}| d | }d}|D ]#}| | | |krg|d7 }qX|dkrs |  d7  < d}| | | }qX|dkr |  d7  < qL|t fddt d|d D 7 }|S )Nr   r   r{   c                 3   s     | ]} | |d   V  qdS )r   NrS   )rZ   each_length	containerrS   rT   	<genexpr>   s
    
z%_lost_point_level1.<locals>.<genexpr>)r`   rW   )	r   r   r   modules_rangerowthis_rowprevious_colorlengthcolrS   r   rT   r      sD   



r   c           
      C   s   d}t |d }|D ];}| | }| |d  }t|}|D ](}||d  }	|	||d  kr2t|d  q|	|| kr9q|	|| kr@q|d7 }qq
|S )Nr   r   r   r`   iternext)
r   r   r   r   r   r   next_rowmodules_range_iterr   	top_rightrS   rS   rT   r      s"   
r   c           	      C   s  t |}t |d }d}|D ]}| | }t|}d}|D ]w}||d  s||d  r||d  s||d  r||d  s||d  r`||d  r`||d	  r`||d
  s`||d  s`||d  r||d  s||d  s||d	  s||d
  r||d  r||d  r|d7 }||d  rt|d  qq|D ]}t|}d}|D ]}| |d  | s@| |d  | r@| |d  | s@| |d  | r@| |d  | s@| |d  | r| |d  | r| |d	  | r| |d
  | s| |d  | s| |d  | r<| |d  | s@| |d  | s@| |d	  | s@| |d
  | r@| |d  | r@| |d  | r@|d7 }| |d  | rNt|d  qq|S )Nr
   r   r   r   r{   r   r   r   r   r   r	   r   r   )	r   r   r   modules_range_shortr   r   r   modules_range_short_iterr   rS   rS   rT   r     s   







	










	

r   c                 C   s>   t tt | }t||d  }tt|d d d }|d S )Nr   d   r   r{   r
   )rW   rX   floatintabs)r   r   
dark_countpercentratingrS   rS   rT   r   Z  s   r   c                 c   s    t | } d}dtt d }t| |kr)td| d }td| d }ndt|d d }t|| }t|| }t| |}|D ]'\}}|rXt	|t
d	d
V  qIt||D ]\}}	|retnt}
t	|	|
d	d
V  q]qIdS )z
    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.
    s   \d   [   ]   ^s   +$   {asciis   ,}F)r   
check_dataN)to_bytestringreescape	ALPHA_NUMr   compilestrencode_optimal_splitQRDatar   r   r   )re   minimumnum_patternalpha_pattern	re_repeatnum_bitsis_numchunkis_alpha	sub_chunkr   rS   rS   rT   optimal_data_chunksb  s&   
r   c                 c   sx    | r1t || }|sn%| | }}|r d| d | fV  d| || fV  | |d  } | s| r:d| fV  d S d S )NFT)r   searchstartend)re   r~   matchr   r   rS   rS   rT   r   |  s   	r   c                 C   s   t | tst| d} | S )z^
    Convert data to a (utf-8 encoded) byte-string if it isn't a byte-string
    already.
    zutf-8)
isinstancebytesr   r   re   rS   rS   rT   r     s   
r   c                 C   s   |   rtS t| rtS tS )z<
    Calculate the optimal mode for this chunk of data.
    )isdigitr   RE_ALPHA_NUMr   r   r   r   rS   rS   rT   optimal_mode  s
   
r   c                   @   s2   e Zd ZdZdddZdd Zdd	 Zd
d ZdS )r   zS
    Data held in a QR compatible format.

    Doesn't currently handle KANJI.
    NTc                 C   sl   |rt |}|du rt|| _n!|| _|tttfvr"td| d|r1|t|k r1td| || _dS )zg
        If ``mode`` isn't provided, the most compact QR data type possible is
        chosen.
        Nr   r   z-Provided data can not be represented in mode )	r   r   r   r   r   r   r}   r   re   )selfre   r   r   rS   rS   rT   __init__  s   
zQRData.__init__c                 C   
   t | jS rO   )r   re   r   rS   rS   rT   __len__     
zQRData.__len__c                 C   s   | j tkr*tdt| jdD ]}| j||d  }tt| }|t|| qd S | j tkrjtdt| jdD ]/}| j||d  }t|dkr^|t	
|d d t	
|d  d q8|t	
|d q8d S | j}|D ]}||d qod S )	Nr   r   r   r   -   r   r   r	   )r   r   r`   r   re   NUMBER_LENGTHputr   r   r   find)r   bufferrr   chars
bit_lengthre   crS   rS   rT   write  s&   

 zQRData.writec                 C   r   rO   )reprre   r   rS   rS   rT   __repr__  r   zQRData.__repr__)NT)__name__
__module____qualname____doc__r   r   r   r   rS   rS   rS   rT   r     s    
r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )	BitBufferc                 C   s   g | _ d| _d S r   )r   r   r   rS   rS   rT   r     s   
zBitBuffer.__init__c                 C   s   d dd | jD S )N.c                 S   s   g | ]}t |qS rS   )r   )rZ   nrS   rS   rT   r^     s    z&BitBuffer.__repr__.<locals>.<listcomp>)joinr   r   rS   rS   rT   r     s   zBitBuffer.__repr__c                 C   s,   t |d }| j| d|d  ? d@ dkS )Nr	   r   r   )ry   rz   r   )r   index	buf_indexrS   rS   rT   get  s   zBitBuffer.getc                 C   s0   t |D ]}| ||| d ? d@ dk qd S rk   )r`   put_bit)r   numr   rr   rS   rS   rT   r     s    zBitBuffer.putc                 C   rN   rO   )r   r   rS   rS   rT   r     rV   zBitBuffer.__len__c                 C   sV   | j d }t| j|kr| jd |r"| j|  d| j d ? O  < |  j d7  _ d S )Nr	   r   rD   r   )r   r   r   append)r   bitr   rS   rS   rT   r     s   
zBitBuffer.put_bitN)	r   r   r   r   r   r   r   r   r   rS   rS   rS   rT   r     s    r   r   rY   c              	      s  dd}d}g }g }|D ]}|j }|j| }t||}t||} fddt|D }	|7 |tjv r?ttj| d}
ntdgd}
t|D ]}|
tdt|gd }
qJt|	t	|
d }||
 }g }t	|| }t|D ]}|| }|
|dkr|| nd qt|
|	 |
| qg }t|D ]}|D ]}|t	|k r|
||  qqt|D ]}|D ]}|t	|k r|
||  qq|S )Nr   c                    s   g | ]}d  j |  @ qS )   )r   )rZ   rr   r   offsetrS   rT   r^     s    z create_bytes.<locals>.<listcomp>r   )rQ   total_countmaxr`   r   
rsPoly_LUTr   
Polynomialgexpr   r   )r   rY   
maxDcCount
maxEcCountdcdataecdatars_blockdcCountecCount
current_dcrsPolyrr   rawPolymodPoly
current_ec
mod_offsetmodIndexre   dcecrS   r   rT   create_bytes  sP   




r  c                 C   s   t  }|D ]}||jd |t|t|j|  || qt| |}tdd |D }t||kr@t	
dt||f tt|t| dD ]}|d qKt|d }|ritd| D ]}|d qa|t| d }	t|	D ]}
|
d dkr|td qu|td qut||S )	Nr   c                 s   s    | ]}|j d  V  qdS )r	   NrP   )rZ   rR   rS   rS   rT   r   /  s    zcreate_data.<locals>.<genexpr>z:Code length overflow. Data size (%s) > size available (%s)Fr	   r   r   )r   r   r   r   r   r   r   rY   rW   r   DataOverflowErrorr`   minr   PAD0PAD1r  )r[   r]   	data_listr   re   rY   	bit_limit_delimitbytes_to_fillrr   rS   rS   rT   create_data&  s2   

r  )r   )3ry   r   qrcoder   r   r   qrcode.baser   r   r   r   r   r   r   r   r   r   r   r   r   rl   rb   rh   rc   r  r  rU   r`   BIT_LIMIT_TABLErg   ri   ra   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   listr  r  rS   rS   rS   rT   <module>   s   	
 !"#$%&'(+

		+L

74