Ë
    ¡ëi³  ã                   óX   — d Z ddlmZmZmZ ddlmZ d„ Z G d„ de«      Z G d„ d«      Z	y	)
zHhelper for importing pdf structures into a ReportLab generated document
é    )ÚformatÚ	PDFObjectÚ	pdfdocEnc)ÚstrTypesc                 ó0  — t        t        t        «      rt        nt        f}|t        t        fz   }| D ]a  }t        ||«      rŒt        |«      dk7  rt        dt        |«      z   «      ‚t        |d   t        «      rŒIt        dt        |d   «      z   «      ‚ y )Né   zTsequence elts must be strings/bytes/PDFPatternIfs or singletons containing strings: r   zCSingletons must contain strings/bytes or PDFObject instances only: )Ú
isinstancer   Útupler   ÚPDFPatternIfÚlenÚ
ValueErrorÚascii)Úpattern_sequenceÚallowedTypesÚxs      ú\/var/www/html/chat/reports/venv/lib/python3.12/site-packages/reportlab/pdfbase/pdfpattern.pyÚ_patternSequenceCheckr      sš   € Ü)¬(´EÔ:•8ÄÀ€LØ¤9¬\Ð":Ñ:€LØò tˆÜ˜!˜LÕ)Ü�1‹v�qŠyÜ Ð!wÔx}Ð~ó  yAñ  "Aó  Bð  BÜ˜a ™d¤8Õ,Ü Ð!fÔglÐmnÐopÑmqÓgrÑ!rÓsÐsñtó    c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	Ú
PDFPatternr   c                 ó6   — t        |«       || _        || _        y)a  
        Description of a kind of PDF object using a pattern.

        Pattern sequence should contain strings, singletons of form [string] or
        PDFPatternIf objects.
        Strings are literal strings to be used in the object.
        Singletons are names of keyword arguments to include.
        PDFpatternIf objects allow some conditionality.
        Keyword arguments can be non-instances which are substituted directly in string conversion,
        or they can be object instances in which case they should be pdfdoc.* style
        objects with a x.format(doc) method.
        Keyword arguments may be set on initialization or subsequently using __setitem__, before format.
        "constant object" instances can also be inserted in the patterns.
        N)r   ÚpatternÚ	arguments)Úselfr   Úkeywordargss      r   Ú__init__zPDFPattern.__init__   s   € ô 	Ð.Ô/Ø'ˆŒØ$ˆ�r   c                 ó"   — || j                   |<   y ©N©r   )r   ÚitemÚvalues      r   Ú__setitem__zPDFPattern.__setitem__%   s   € Ø$ˆ�‰�tÒr   c                 ó    — | j                   |   S r   r   )r   r    s     r   Ú__getitem__zPDFPattern.__getitem__(   s   € Ø�~‰~˜dÑ#Ð#r   c              #   ó¼  K  — | j                   }| j                  }|D �]:  }t        |t        «      rt	        |«      –— Œ"t        |t
        «      r|j                  |«      –— ŒFt        |t        «      r`t        | j                  |j                  «      «      }|xr |d   }| j                  |r|j                  n|j                  «      D ]  }|–— Œ Œ¶|d   }|j                  |d «      }	|	€t        dt        |«      z  «      ‚t        |	t
        «      rt        |	|«      –— �Œt        |	t        «      rt	        |	«      –— �Œ%t	        t!        |	«      «      –— �Œ= y ­w)Nr   z%s value not defined)r   Ú_PDFPattern__documentr	   r   r   r   r   r   ÚlistÚevalÚcondÚthenPartÚelsePartÚgetr   r   Ústr)
r   ÚLr   Údocumentr   Úresultr)   ÚzÚnamer!   s
             r   r(   zPDFPattern.eval+   s  è ø€ Ø—N‘Nˆ	Ø—?‘?ˆØó 	0ˆAÜ˜!œHÔ%Ü “lÓ"Ü˜AœiÔ(Ø—h‘h˜xÓ(Ó(Ü˜AœlÔ+Ü˜dŸi™i¨¯©Ó/Ó0�ØÒ+ &¨¡)�ØŸ™± 1§:¢:¸1¿:¹:ÓFò �AØ“Gñð ˜‘t�Ø!Ÿ™ d¨DÓ1�Ø�=Ü$Ð%;¼eÀD»kÑ%IÓJÐJÜ˜e¤IÔ.Ü   xÓ0Ô0Ü ¤hÔ/Ü# EÓ*Ô*ä#¤C¨£JÓ/Ô/ñ)	0ùs   ‚EEc                 óx   — || _         	 dj                  | j                  | j                  «      «      | ` S # | ` w xY w)Nr   )r&   Újoinr(   r   )r   r/   s     r   r   zPDFPattern.formatD   s2   € Ø"ˆŒð	 Ø—8‘8˜DŸI™I d§l¡lÓ3Ó4à‘ø�‘ús   ‰)5 µ9c                 óˆ   — t         j                  | j                  «      }| j                  |_        | j                  |_        |S r   )ÚobjectÚ__new__Ú	__class__r   r   )r   Úcs     r   ÚclonezPDFPattern.cloneK   s/   € Ü�N‰N˜4Ÿ>™>Ó*ˆØ—L‘LˆŒ	Ø—n‘nˆŒØˆr   N)
Ú__name__Ú
__module__Ú__qualname__Ú__RefOnly__r   r"   r$   r(   r   r:   © r   r   r   r      s%   „ Ø€Kò%ò&%ò$ò0ò2 ór   r   c                   ó   — e Zd ZdZg g fd„Zy)r   zÙcond will be evaluated as [cond] in PDFpattern eval.
    It should evaluate to a list with value 0/1 etc etc.
    thenPart is a list to be evaluated if the cond evaulates true,
    elsePart is the false sequence.
    c                 ó~   — t        |t        «      s|g}|||fD ]  }t        |«       Œ || _        || _        || _        y r   )r	   r'   r   r)   r*   r+   )r   r)   r*   r+   r   s        r   r   zPDFPatternIf.__init__W   sE   € Ü˜$œtÔ$¨d¨V dØ�x Ð)ò 	%ˆAÜ! !Õ$ð	%àˆŒ	Ø ˆŒØ ˆ�r   N)r;   r<   r=   Ú__doc__r   r?   r   r   r   r   Q   s   „ ñð
 %'°ô !r   r   N)
rB   Úreportlab.pdfbase.pdfdocr   r   r   Úreportlab.lib.utilsr   r   r   r   r?   r   r   ú<module>rE      s2   ðð	€ç AÑ AÝ (òtô?�ô ?÷B!ò !r   