§
    ¥”j.  ã                   ó  — d dl Z d dlmZ d dlmZmZmZ d dlmZ d dl	m
Z
mZmZ d dlmZmZ d dlmZmZ dd	lmZ dd
lmZmZ g d¢Z G d„ de j        ¦  «        ZdZ	  ed¬¦  «         G d„ de¦  «        ¦   «         Z G d„ de¦  «        ZdS )é    N)Ú	dataclass)ÚListÚOptionalÚTuple)ÚConfigurationError)ÚcontentÚgenericÚlayout)Úpdf_nameÚ
pdf_string)ÚBasePdfFileWriterÚinit_xobject_dictionaryé   )ÚCoordinateSystem)Ú	TextStampÚTextStampStyle)ÚDEFAULT_QR_SCALEÚ
QRPositionÚQRStampÚQRStampStylec                   óp  — e Zd ZdZ ej        ej        j        ej        j        ¬¦  «        Z	 ej        ej        j
        ej        j        ¬¦  «        Z ej        ej        j
        ej        j        ¬¦  «        Z ej        ej        j        ej        j        ¬¦  «        Zed„ ¦   «         Zedd„¦   «         ZdS )	r   z[
    QR positioning constants, with the corresponding default content layout
    rule.
    )Úx_alignÚy_align)r   r   c                 ó6   — | t           j        t           j        fv S ©N)r   ÚLEFT_OF_TEXTÚRIGHT_OF_TEXT)Úselfs    ú_/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pyhanko/stamp/qr.pyÚhorizontal_flowzQRPosition.horizontal_flow'   s   € à�
Ô/µÔ1IÐJÐJÐJó    Úreturnc                 óÔ   — 	 t           j        t           j        t           j        t           j        dœ|                     ¦   «                  S # t          $ r t          d|› d�¦  «        ‚w xY w)a  
        Convert from a configuration string.

        :param config_str:
            A string: 'left', 'right', 'top', 'bottom'
        :return:
            An :class:`.QRPosition` value.
        :raise ConfigurationError: on unexpected string inputs.
        ©ÚleftÚrightÚtopÚbottomú'zW' is not a valid QR position setting; valid values are 'left', 'right', 'top', 'bottom')r   r   r   Ú
ABOVE_TEXTÚ
BELOW_TEXTÚlowerÚKeyErrorr   )ÚclsÚ
config_strs     r   Úfrom_configzQRPosition.from_config+   s‰   € ð	å"Ô/Ý#Ô1Ý!Ô,Ý$Ô/ð	ð ð
 ×ÒÑ Ô ô"ð "øõ ð 	ð 	ð 	Ý$ð?�Jð ?ð ?ð ?ñô ð ð	øøøs   ‚AA	 Á	A'N)r"   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   ÚSimpleBoxLayoutRuleÚAxisAlignmentÚ	ALIGN_MINÚ	ALIGN_MIDr   Ú	ALIGN_MAXr   r*   r+   Úpropertyr    Úclassmethodr0   © r!   r   r   r      s  € € € € € ðð ð
 .�6Ô-ØÔ$Ô.ØÔ$Ô.ðñ ô €Lð /�FÔ.ØÔ$Ô.ØÔ$Ô.ðñ ô €Mð ,�Ô+ØÔ$Ô.ØÔ$Ô.ðñ ô €Jð ,�Ô+ØÔ$Ô.ØÔ$Ô.ðñ ô €Jð
 ðKð Kñ „XðKð ðð ð ñ „[ðð ð r!   r   gš™™™™™É?T)Úfrozenc                   óÒ   ‡ — e Zd ZU dZdZeed<   	 dZeed<   	 dZ	e
e         ed<   	 ej        Zeed<   	 dZe
ej                 ed	<   	 eˆ fd
„¦   «         Zdedej        deddfd„Zˆ xZS )r   z¸
    Style for text-based stamps together with a QR code.

    This is exactly the same as a text stamp, except that the text box
    is rendered with a QR code to the left of it.
    é   Úinnsepz@Digital version available at
this url: %(url)s
Timestamp: %(ts)sÚ
stamp_textNÚqr_inner_sizeÚqr_positionÚqr_inner_contentc                 ó¸   •— t          ¦   «                              |¦  «         	 |d         }t                               |¦  «        |d<   d S # t          $ r Y d S w xY w)NrC   )ÚsuperÚprocess_entriesr   r0   r-   )r.   Úconfig_dictÚqr_posÚ	__class__s      €r   rG   zQRStampStyle.process_entriesx   sj   ø€ å‰Œ×Ò Ñ,Ô,Ð,ð	Ø  Ô/ˆFÝ)3×)?Ò)?ÀÑ)GÔ)GˆK˜Ñ&Ð&Ð&øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ¤%A Á
AÁAÚwriterÚboxÚtext_paramsr"   r   c                 óœ   — 	 |                      d¦  «        }n"# t          $ r t          j        d¦  «        ‚w xY wt	          || |||¬¦  «        S )NÚurlz7Using a QR stamp style requires a 'url' text parameter.)ÚstylerO   rM   rL   )Úpopr-   r
   ÚLayoutErrorr   )r   rK   rL   rM   rO   s        r   Úcreate_stampzQRStampStyle.create_stamp‚   sq   € ð	Ø—/’/ %Ñ(Ô(ˆCˆCøÝð 	ð 	ð 	ÝÔ$ØIñô ð ð	øøøõ Ø˜$ C°[Àcð
ñ 
ô 
ð 	
s   ‚ ˜7)r1   r2   r3   r4   r@   ÚintÚ__annotations__rA   ÚstrrB   r   r   r   rC   rD   r   Ú
PdfContentr;   rG   r   r
   ÚBoxConstraintsÚdictrS   Ú__classcell__©rJ   s   @r   r   r   M   s  ø€ € € € € € ðð ð €FˆC€O€O�Oðð
 	Mð �ð ð ñ ðð $(€M�8˜C”=Ð'Ð'Ñ'ðð )Ô5€K�Ð5Ð5Ñ5ðð 6:Ð�h˜wÔ1Ô2Ð9Ð9Ñ9ðð ðð ð ð ñ „[ðð
à!ð
ð Ô"ð
ð ð	
ð
 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r!   r   c            
       ó¾   ‡ — e Zd Z	 	 ddedededeej                 fˆ fd„Z	d„ Z
deee         eeef         f         fˆ fd	„Zd
„ Zˆ fd„Zej        dœdefˆ fd„Zˆ xZS )r   NrK   rO   rP   rL   c                 ón   •— t          ¦   «                              ||||¬¦  «         || _        d | _        d S )N)rM   rL   )rF   Ú__init__rO   Ú_qr_size)r   rK   rO   rP   rM   rL   rJ   s         €r   r^   zQRStamp.__init__•   s8   ø€ õ 	‰Œ×Ò˜ °KÀSÐÑIÔIÐIØˆŒØˆŒˆˆr!   c                 óD   — | j         }|j        �|j        S |j        j        S r   )rP   Úinner_content_layoutrC   Úvalue)r   rP   s     r   Ú_inner_content_layout_rulez"QRStamp._inner_content_layout_rule¡   s)   € Ø”
ˆØÔ%Ð1ØÔ-Ð-ð Ô Ô&Ð&r!   r"   c                 óF  •— t          ¦   «                              ¦   «         \  }\  }}|                      ¦   «         \  }}|                      t          j        j        t          d¦  «        |¬¦  «         | j        }| j	        }|j
        }|j        �|j        }	nd|j        rF|j        r?t          t          |j        |¦  «        t          |j        |¦  «        ¦  «        }
|
d|z  z
  }	nt%          t&          |z  ¦  «        }	|	|z  }|	d|z  z   }|j        j        r||z   }t          ||¦  «        }nt          ||¦  «        }||z   }|j        j        }t/          j        |j        |j        t.          j                             |¦  «        t.          j        j        ¬¦  «        }t/          j        ||¦  «        }|                      ||	|	¦  «        }d|j!        |z  |j"        |z  |j#        |j$        fz  }|j        tJ          j&        k    rt/          j        |ddd¬¦  «        }nt|j        tJ          j'        k    rt/          j        |ddd¬¦  «        }nF|j        tJ          j(        k    rt/          j        |ddd¬	¦  «        }nt/          j        |ddd¬
¦  «        }t/          j        |j        j)        |j        j)        |t.          j        j        ¬¦  «        }|                      |||¦  «        }|d| *                    ¦   «         g}| +                    |¦  «         | ,                    d¦  «         |||ffS )Nz/QR)ÚcategoryÚnamerb   é   )r   r   ÚmarginsÚinner_content_scalings   q %g 0 0 %g %g %g cm /QR Do Qr   r$   )r&   r%   r'   r(   )r(   r&   r%   r'   )r'   r&   r%   r(   ó   qó   Q)-rF   Ú_inner_layout_natural_sizeÚ_qr_xobjectÚset_resourcer   ÚResourceTypeÚXOBJECTr   rP   rL   r@   rB   Úwidth_definedÚheight_definedÚminÚmaxÚheightÚwidthÚroundr   rC   r    rb   r
   r5   r   r   ÚMarginsÚuniformÚInnerScalingÚ
NO_SCALINGrX   ÚfitÚx_scaleÚy_scaleÚx_posÚy_posr   r   r   r+   ÚflippedÚas_cmÚextendÚappend)r   Útext_commandsÚ
text_widthÚtext_heightÚqr_refÚnatural_qr_sizerP   Ú	stamp_boxr@   Úqr_sizeÚmin_dimÚqr_innunits_scaleÚ	qr_paddedÚ	inn_widthÚ
inn_heightÚdefault_layoutÚqr_layout_ruleÚ	inner_boxÚ
qr_inn_posÚdraw_qr_commandÚ
tb_marginsÚtb_layout_ruleÚtext_inn_posÚcommandsrJ   s                           €r   rl   z"QRStamp._inner_layout_natural_size©   ss  ø€ õ ‰GŒG×.Ò.Ñ0Ô0ñ	
ØñØØð #'×"2Ò"2Ñ"4Ô"4Ñˆ�Ø×ÒÝÔ)Ô1Ý˜%‘”Øð 	ñ 	
ô 	
ð 	
ð ”
ˆØ”Hˆ	ð ”ˆØÔÐ*ØÔ)ˆGˆGØÔ$ð 		@¨Ô)Að 		@õ Ý�IÔ$ kÑ2Ô2Ý�I”O ZÑ0Ô0ñô ˆGð   F¡
Ñ*ˆGˆGåÕ,¨Ñ>Ñ?Ô?ˆGà# oÑ5ÐØ˜a &™jÑ(ˆ	ð ÔÔ,ð 	1Ø! JÑ.ˆIÝ˜Y¨Ñ4Ô4ˆJˆJå˜I zÑ2Ô2ˆIØ" [Ñ0ˆJà5:Ô5FÔ5Lˆõ  Ô3Ø"Ô*Ø"Ô*Ý”N×*Ò*¨6Ñ2Ô2õ #)Ô"5Ô"@ð
ñ 
ô 
ˆõ Ô)¨)°ZÑ@Ô@ˆ	Ø#×'Ò'¨	°7¸GÑDÔDˆ
ð ;ØÔÐ!2Ñ2ØÔÐ!2Ñ2ØÔØÔð	>
ñ 
ˆð Ô¥
Ô 7Ò7Ð7ÝœØ a¨Q°qðñ ô ˆJˆJð Ô¥*Ô":Ò:Ð:ÝœØ a¨Q°qðñ ô ˆJˆJð Ô¥*Ô"7Ò7Ð7ÝœØ ¨°°qðñ ô ˆJˆJõ  œØ Q¨Q°qðñ ô ˆJõ  Ô3ð #Ô*Ô2Ø"Ô*Ô2ØÝ"(Ô"5Ô"@ð
ñ 
ô 
ˆð &×)Ò)¨)°ZÀÑMÔMˆà# T¨<×+=Ò+=Ñ+?Ô+?Ð@ˆØ�Š˜Ñ&Ô&Ð&Ø�Š˜ÑÔÐØ˜) ZÐ0Ð0Ð0r!   c                 óP  — dd l }ddlm}m} | j        j        d u}|r|j        j        n|j        j        }| 	                    |¬¦  «        }| 
                    | j        ¦  «         |                     ¦   «          |r(|                     ||j        | j        j        ¬¦  «        }n|                     |¬¦  «        }|                     ¦   «         }|j        d|j        z  z   |j        z  }	t'          ||	|	¦  «        }
|
                     ¦   «          | j                             |
¦  «        |	fS )Nr   )ÚPdfFancyQRImageÚPdfStreamQRImage)Úerror_correction)Úimage_factoryÚversionÚcenter_image)rž   rg   )ÚqrcodeÚpyhanko.pdf_utils.qrr›   rœ   rP   rD   Ú	constantsÚERROR_CORRECT_HÚERROR_CORRECT_MÚQRCodeÚadd_datarO   ÚmakeÚ
make_imagerŸ   Úrender_command_streamÚmodules_countÚborderÚbox_sizer   ÚcompressrK   Ú
add_object)r   r¡   r›   rœ   Úis_fancyÚerr_corrÚqrÚimgÚcommand_streamÚ	bbox_sizeÚqr_xobjs              r   rm   zQRStamp._qr_xobject  s=  € ØˆˆˆØJÐJÐJÐJÐJÐJÐJÐJà”:Ô.°dÐ:ˆð ð2ˆFÔÔ,Ð,àÔ!Ô1ð 	ð
 �]Š]¨Hˆ]Ñ5Ô5ˆØ
�Š�D”HÑÔÐØ
�Š‰	Œ	ˆ	àð 	@Ø—-’-Ø-Øœ
Ø!œZÔ8ð  ñ ô ˆCˆCð —-’-Ð.>�-Ñ?Ô?ˆCØ×2Ò2Ñ4Ô4ˆàÔ%¨¨B¬I©Ñ5¸¼ÑDˆ	Ý)¨.¸)ÀYÑOÔOˆØ×ÒÑÔÐØŒ{×%Ò% gÑ.Ô.°	Ð9Ð9r!   c                 ó\   •— t          ¦   «                              ¦   «         }| j        |d<   |S )NrO   )rF   Úget_default_text_paramsrO   )r   ÚtprJ   s     €r   r¸   zQRStamp.get_default_text_params7  s(   ø€ Ý‰WŒW×,Ò,Ñ.Ô.ˆØ”Hˆˆ5‰	Øˆ	r!   ©Úcoordsr»   c                óÆ  •— t          ¦   «                              ||||¬¦  «        \  }\  }}||||z   ||z   f}t          j        t	          d¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        t          j        t          t          t          j        |¦  «        ¦  «        ¦  «        t	          d¦  «        t          j        t	          d¦  «        t	          d	¦  «        t	          d	¦  «        t          | j
        ¦  «        i¦  «        i¦  «        }	| j        }
|
€J ‚|
                     ||
                     |	¦  «        ¦  «         |||ffS )
Nrº   z/Typez/Annotz/Subtypez/Linkz/Rectz/Az/Sz/URI)rF   Úapplyr	   ÚDictionaryObjectr   ÚArrayObjectÚlistÚmapÚFloatObjectr   rO   rK   Úregister_annotationr¯   )r   Ú	dest_pageÚxÚyr»   Úpage_refÚwÚhÚ	link_rectÚ
link_annotÚwrrJ   s              €r   r½   zQRStamp.apply<  s@  ø€ õ !™7œ7Ÿ=š=¨°A°qÀ˜=ÑHÔHÑˆ‘&�1�aØ˜˜1˜q™5 ! a¡%Ð(ˆ	ÝÔ-å˜Ñ!Ô!¥8¨HÑ#5Ô#5Ý˜Ñ$Ô$¥h¨wÑ&7Ô&7Ý˜Ñ!Ô!¥7Ô#6Ý��WÔ0°)Ñ<Ô<Ñ=Ô=ñ$ô $õ ˜‘”¥Ô 8å  ™œ­°Ñ(8Ô(8Ý  Ñ(Ô(­*°T´XÑ*>Ô*>ðñ!ô !ðñ
ô 
ˆ
ð Œ[ˆØˆ~ˆ~ˆ~Ø
×Ò˜x¨¯ª°zÑ)BÔ)BÑCÔCÐCØ˜!˜Q˜ÐÐr!   )NN)r1   r2   r3   r   rV   r   r   r
   rX   r^   rc   r   r   ÚbytesrT   rl   rm   r¸   r   ÚPAGE_DEFAULTr½   rZ   r[   s   @r   r   r   ”   s,  ø€ € € € € ð Ø/3ð
ð 
à!ð
ð ð
ð ð	
ð �fÔ+Ô,ð
ð 
ð 
ð 
ð 
ð 
ð'ð 'ð 'ðo1¨E°$°u´+¸uÀSÈ#ÀX¼Ð2NÔ,Oð o1ð o1ð o1ð o1ð o1ð o1ðb:ð :ð :ð:ð ð ð ð ð $4Ô#@ð ð  ð  ð !ð ð  ð  ð  ð  ð  ð  ð  ð  ð  r!   r   )ÚenumÚdataclassesr   Útypingr   r   r   Úpyhanko.config.errorsr   Úpyhanko.pdf_utilsr   r	   r
   Úpyhanko.pdf_utils.genericr   r   Úpyhanko.pdf_utils.writerr   r   Úappearancesr   Útextr   r   Ú__all__ÚEnumr   r   r   r   r<   r!   r   ú<module>rÚ      s˜  ðØ €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (à 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ Oà )Ð )Ð )Ð )Ð )Ð )Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à
GÐ
GÐ
G€ð1ð 1ð 1ð 1ð 1�”ñ 1ô 1ð 1ðh Ð ðð €�$ÐÑÔðC
ð C
ð C
ð C
ð C
�>ñ C
ô C
ñ ÔðC
ðLD ð D ð D ð D ð D ˆiñ D ô D ð D ð D ð D r!   