o
    >eB                     @   s  d dl Z d dlZd dlm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 d0g d1g d2g d3g d4g d5g d6g d7g d8g d9g d:g d;g d<Zd=Zd>Zd?Zd@ZdAZdBdC ZdDdE edD ZdFdG ZdHdI Z dJdK Z!dLdM Z"dNdO Z#dPdQ Z$dRdS Z%dTdU Z&dVdW Z'dXdY Z(dZd[ Z)d\d] Z*d^d_ Z+drd`daZ,dbdc Z-ddde Z.dfdg Z/G dhdi diZ0G djdk dkZ1dle1dmee	 fdndoZ2dpdq Z3dS )s    N)List)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(   r0   ~   )r   r   4   r(   h      )r   r   r)   r*   l      )r   r   <   r+   p      )r   r   r"   r+   r5      )r   r   r#   r,   r6      )r   r   r    r(   r0   r8      )r   r   r   L   r0         )r   r   r    r1   r2         )r   r!   r"   r3   r4         )r   r   r    r*   r4   r@      )r   r   r"   r+   r5   rA      i7  i%  iT        c                 C      | j S N
data_count)block rT   L/var/www/html/humari/django-venv/lib/python3.10/site-packages/qrcode/util.py_data_counte      rV   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maprV   r   	rs_blocks).0versionerror_correctionrT   rU   
<listcomp>k   s    z<listcomp>.<listcomp>r   )   )range)r[   rT   r]   rU   r_   i   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drT   rT   rU   BCH_type_infos   s
   rh   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   )rb   G18re   rT   rT   rU   BCH_type_number{   s
   rj   c                 C   s(   d}| dkr|d7 }| dL } | dks|S )Nr   r   rT   )rf   digitrT   rT   rU   rb      s   rb   c                 C   s   t | d  S Nr   )PATTERN_POSITION_TABLEr\   rT   rT   rU   pattern_position   s   ro   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   rT   ijrT   rT   rU   <lambda>       zmask_func.<locals>.<lambda>r   c                 S   s   | d dkS rq   rT   rr   rT   rT   rU   ru          r   c                 S   s   |d dkS Nr   r   rT   rr   rT   rT   rU   ru      rw   r   c                 S   rp   rx   rT   rr   rT   rT   rU   ru      rv   r	   c                 S   s$   t | d t |d  d dkS Nr   r   r   )mathfloorrr   rT   rT   rU   ru      s   $    c                 S   s   | | d | | d  dkS ry   rT   rr   rT   rT   rU   ru      s    r   c                 S   s    | | d | | d  d dkS ry   rT   rr   rT   rT   rU   ru           r   c                 S   s    | | d | | d  d dkS )Nr   r   r   rT   rr   rT   rT   rU   ru      r}   zBad mask pattern: )	TypeError)patternrT   rT   rU   	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_LARGErn   rT   rT   rU   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\   rT   rT   rU   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))
ValueErrorrn   rT   rT   rU   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_pointrT   rT   rU   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   NrT   )r[   each_length	containerrT   rU   	<genexpr>   s
    
z%_lost_point_level1.<locals>.<genexpr>)ra   rX   )	r   r   r   modules_rangerowthis_rowprevious_colorlengthcolrT   r   rU   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   ra   iternext)
r   r   r   r   r   r   next_rowmodules_range_iterr   	top_rightrT   rT   rU   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   rT   rT   rU   r     s   







	










	

r   c                 C   s>   t tt | }t||d  }tt|d d d }|d S )Nr   d   r   r|   r   )rX   rY   floatintabs)r   r   
dark_countpercentratingrT   rT   rU   r   [  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   )rf   minimumnum_patternalpha_pattern	re_repeatnum_bitsis_numchunkis_alpha	sub_chunkr   rT   rT   rU   optimal_data_chunksc  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)rf   r   matchr   r   rT   rT   rU   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   rf   rT   rT   rU   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   rT   rT   rU   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   rf   )selfrf   r   r   rT   rT   rU   __init__  s   
zQRData.__init__c                 C   
   t | jS rP   )r   rf   r   rT   rT   rU   __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   ra   r   rf   NUMBER_LENGTHputr   r   r   find)r   bufferrs   chars
bit_lengthrf   crT   rT   rU   write  s&   

 zQRData.writec                 C   r   rP   )reprrf   r   rT   rT   rU   __repr__  r   zQRData.__repr__)NT)__name__
__module____qualname____doc__r   r   r   r   rT   rT   rT   rU   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   rT   rT   rU   r     s   
zBitBuffer.__init__c                 C   s   d dd | jD S )N.c                 S   s   g | ]}t |qS rT   )r   )r[   nrT   rT   rU   r_     s    z&BitBuffer.__repr__.<locals>.<listcomp>)joinr   r   rT   rT   rU   r     s   zBitBuffer.__repr__c                 C   s,   t |d }| j| d|d  ? d@ dkS )Nr
   r   r   )rz   r{   r   )r   index	buf_indexrT   rT   rU   get  s   zBitBuffer.getc                 C   s0   t |D ]}| ||| d ? d@ dk qd S rl   )ra   put_bit)r   numr   rs   rT   rT   rU   r     s    zBitBuffer.putc                 C   rO   rP   )r   r   rT   rT   rU   r     rW   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   rE   r   )r   r   r   append)r   bitr   rT   rT   rU   r     s   
zBitBuffer.put_bitN)	r   r   r   r   r   r   r   r   r   rT   rT   rT   rU   r     s    r   r   rZ   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   )r[   rs   r   offsetrT   rU   r_     s    z create_bytes.<locals>.<listcomp>r   )rR   total_countmaxra   r   
rsPoly_LUTr   
Polynomialgexpr   r   )r   rZ   
maxDcCount
maxEcCountdcdataecdatars_blockdcCountecCount
current_dcrsPolyrs   rawPolymodPoly
current_ec
mod_offsetmodIndexrf   dcecrT   r   rU   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
   NrQ   )r[   rS   rT   rT   rU   r   1  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   rZ   rX   r   DataOverflowErrorra   minr   PAD0PAD1r  )r\   r^   	data_listr   rf   rZ   	bit_limit_delimitbytes_to_fillrs   rT   rT   rU   create_data'  s2   

r  )r	   )4rz   r   typingr   qrcoder   r   r   qrcode.baser   r   r   r   r   r   r   r   r   r   r   r   r   rm   rc   ri   rd   r  r  rV   ra   BIT_LIMIT_TABLErh   rj   rb   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  rT   rT   rT   rU   <module>   s   	
 !"#$%&'(+

		+L

74