§
    �’jñ ã                  ó¤#  — U d Z ddlmZ ddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZ dddddddddddœ
d„Z eej                             d¦  «        ej        ¬	¦  «        a eej                             d
¦  «        ej        ¬	¦  «        a e¦   «         Z da!d„ Z"d„ Z#d„ Z$ddddddddddœ	d„Z%ddddddddddœ	d„Z&�d{d„Z'�d|d„Z(d„ Z) e*ej+        dz    e,d¦  «        z   ¦  «        Z-d„ Z.d„ Z/ e/dd¦  «        Z0 e.dd¦  «        Z1 G d„ d¦  «        Z2 e2¦   «         Z3dZ4de5d<   da6d „ Z7d!„ Z8ej                             d"¦  «        Z9e9�z e'e:› d#e9›d$�¦  «          e'e:› d%ej        d&         › �¦  «         e9dk    rddl9Z9n1ddlZej;         <                    d'e9¦  «         =                    ¦   «         Z9e9j>        j?        j@        Z@nA	 dd(lm@Z@ n# eA$ r ddl@Z@Y nw xY w eBe@d)¦  «        r e@jC        ¦   «           e@jD        ¦   «          d*„ ZEdd+lFmGZG dd,lFmHZH dd-lFmIZI dd.lFmJZJ dd/lFmKZK dd0lFmLZL dd1lFmMZM dd2lFmNZN e@jO        ZPdZQ eRd3„ eP S                    d4¦  «        D ¦   «         ¦  «        ZTeTe@jU        e@jV        e@jW        fk    s"J d5eT›d6e@jU        e@jV        e@jW        f›�¦   «         ‚eKePdfZXePZYeKZZdZ[d7d8œd9„Z\e\Z]	 ej^        Z^n# e_$ r e`eaz  ebz  Z^Y nw xY wejc        e^         Zdejc        ee         Zfejc        eg         Zheji        ejdf         Zkejc        ejl                 Zmejc        en         Zod:Zpd;Zqd<Zrd=Zsd>„ Zt�d}d?„Zud@„ Zv�d}dA„ZwdB„ ZxdZy G dC„ dD¦  «        Zz G dE„ dF¦  «        Z{ G dG„ dH¦  «        Z| G dI„ dJ¦  «        Z} G dK„ dL¦  «        Z~ G dM„ dN¦  «        Ze1rej€        Z� G dO„ dP¦  «        Z‚e‚Zƒ G dQ„ dR¦  «        Z„ G dS„ dT¦  «        Z… G dU„ dV¦  «        Z† G dW„ dX¦  «        Z‡ G dY„ dZ¦  «        Zˆ G d[„ d\eˆ¦  «        Z‰ e‰¦   «         ZŠ G d]„ d^¦  «        Z‹ G d_„ d`¦  «        ZŒddalm�Z�  G db„ dc¦  «        ZŽ	 	 	 	 	 	 �d~dd„Z� G de„ df¦  «        Z� G dg„ dh¦  «        Z‘ G di„ dj¦  «        Z’ G dk„ dl¦  «        Z“ G dm„ dn¦  «        Z” G do„ dp¦  «        Z• G dq„ dr¦  «        Z– G ds„ dt¦  «        Z— G du„ dv¦  «        Z˜ G dw„ dx¦  «        Z™	 ejš        e›         Zœ	 e@j�         ž                    ¦   «         D ]=\  ZŸZ eŸ ¡                    dy¦  «        r#eŸ ¡                    dz¦  «        rŒ0 e¢eœeŸe ¦  «         Œ>	 de@j¤        z  e@j¥        z  e@j¦        z  e@j§        z  e@j¨        z  e@j©        z  Zªe@j«        dk    sJ ‚e¬e@j¬        k    sJ ‚e­e@j­        k    sJ ‚[œ[Ÿ[ ej®        Z¯d{Z°i Z±e°D ]Z²e²e±e² ³                    ¦   «         <   Œd|e±d}<   d~e±d<   d€e±d�<   d‚e±dƒ<   d„e±d…<   d†e±d‡<   dˆe±d‰<   dŠe±d‹<   dŒe±d�<   dŽe±d�<   d�e±d‘<   d’e±d“<   d”e±d•<   d–e±d—<   d˜Z´d˜Zµd™Z¶dšZ·d›a¸g a¹daºda»e@j¼        Z¼e@j½        Z½e@j¾        Z¾e@j¿        Z¿e@jÀ        ZÀe@jÁ        ZÁe@jÂ        ZÂe@jÃ        ZÃdZÄdZÅdœZÆdZÇdZÈdœZÉd�ZÊdžZËdŸZÌdZÍdœZÎdžZÏd ZÐd¡ZÑd¢ZÒd£ZÓdZÔdœZÕdZÖdZ×dœZØd�ZÙdžZÚdŸZÛd¤ZÜd¥ZÝd ZÞd¦Zßd§Zàd¨Zád©ZâdªZãdZädZådœZæd�ZçdZèdœZédžZêd Zëd¡ZìdZídZîdœZïd�ZðdžZñe@jò        Zóe@jô        Zõe@jö        Z÷e@jø        Zùe@jú        Zûe@jü        Zýe@jþ        Zÿe@�j         �Ze@�j        �Ze@�j        �Ze@�j        �Ze@�j        �Z	e@�j
        �Ze@�j        �ZeTd«k    r	e@�j        �ZeTd¬k    r	e@�j        �Ze@�j        �Ze@�j        �Ze@�j        �Ze@�j        �Ze@�j        �Ze@�j        �Ze@�j        �Z�e�Z �e�Z!deóz  eõz  eÿz  �ez  �Z"deóz  eõz  eÿz  �ez  �Z#deóz  eõz  eÿz  e÷z  �ez  �Z$�e$�Z%deõz  eÿz  eûz  �ez  �Z&deóz  eõz  eÿz  e÷z  �ez  �Z'deóz  eõz  eÿz  e÷z  �ez  �Z(deóz  eõz  eÿz  �ez  �Z)deóz  eõz  eÿz  �ez  �Z*d�Z+d�Z,dœ�Z-d�a.d�Z/dœ�Z0d��Z1d­�Z2d®�Z3d¯�Z4d°�Z5d±�Z6d²�Z7d³�Z8d´�Z9dµ�Z:d¶�Z;d·�Z<d¸�Z=d¹�Z>dº�Z?d»�Z@d¼�ZAd½„ d¾„ d¿„ dÀ„ dÁ„ dÂ„ dÃ„ dÄœ�ZB G dÅ„ dÆ�eC¦  «        �ZD G dÇ„ dÈ�eC¦  «        �ZE G dÉ„ dÊ�eD¦  «        �ZF e}�e/¦  «        �ZG e}�e0¦  «        �ZH e}�e1¦  «        �ZIdË�ZJdÌ�ZKdÍ�ZLdÎ�ZMdÏ�ZNdÐ�ZOdÑ�ZPdÒ�ZQdÓ�ZRdÔ�ZSdÕ�ZTdÖ�ZUd×�ZVdØ�ZWdÙ�ZXdÚ�ZYdÛ�ZZdÜ�Z[dÝ�Z\dÞ�Z]dß�Z^dà�Z_dá�Z`dâ�Zadã�Zbdä�Zcdå�Zddæ�Zedç�Zfdè�Zgdé�Zhdê�Zidë�Zjdì�Zkdí�Zldî�Zmdï�Zndð�Zodñ�Zpdò�Zqdó�Zrdô�Zsdõ�Ztdö�Zud÷�Zvdø�Zwdù�Zxdú�Zydû�Zzdü�Z{dý�Z|dþ�Z}dÿ�Z~	 d�d �l�m€�Z€�m��Z�  �e€�j‚        ¦   «         �Zƒ�eƒ� „                    ¦   «         D ]�Z…�e��e…         �eƒ�e…         �d<   Œ�[€�[�n# �e†$ r i �ZƒY nw xY w�d�Z‡�d�Zˆ�d„ �Z‰�d„ �ZŠ�d„ �Z‹�d„ �ZŒ�d„ �Z��d	„ �ZŽ�d
„ �Z��d„ �Z��d„ �Z‘�d„ �Z’�d„ �Z“�d„ �Z”�d„ �Z•�d„ �Z–�d„ �Z—�d„ �Z˜�d„ �Z™�d„ �Zš�d„ �Z›�d�d„�Zœ�d�d„�Z��d„ �Zž�d„ �ZŸ�d„ �Z �d „ �Z¡�d!„ �Z¢�d"„ �Z£�d#„ �Z¤�d$„ �Z¥�d%„ �Z¦�d&„ �Z§�d'„ �Z¨�d(„ �Z©�d)„ �Zª�d*„ �Z«�d+„ �Z¬�d,„ �Z­�d-„ �Z®�d.„ �Z¯�d/„ �Z°�d€�d1„�Z±�d2„ �Z²�d3„ �Z³�d4„ �Z´�d5„ �Zµ�d6„ �Z¶�d7„ �Z·�d8„ �Z¸�d9„ �Z¹�d:„ �Zº�d;„ �Z»�d<„ �Z¼�d=„ �Z½�d>„ �Z¾�d?„ �Z¿�d@„ �ZÀ�dA„ �ZÁ�dB„ �ZÂ�dC„ �ZÃ�dD„ �ZÄ�d��dI„�ZÅ�d‚�dL„�ZÆ�dM„ �ZÇ�dN„ �ZÈ�dO„ �ZÉ�dP„ �ZÊ�dQ„ �ZË�dR„ �ZÌ�dS„ �ZÍ�dT„ �ZÎ�dU„ �ZÏ�dV„ �ZÐ�dW„ �ZÑ�dX„ �ZÒ�dY„ �ZÓ�dZ„ �ZÔ�d[„ �ZÕ�d\„ �ZÖ�d]„ �Z×�d^„ �ZØd�aÙ�d_„ �ZÚ�d`„ �ZÛ�da„ �ZÜ�db„ �ZÝ�dc„ �ZÞ�dd„ �Zß�de„ �Zà�df„ �Zá�dg„ �Zâ�dh„ �Zã�di„ �Zä�dj„ �Zå�dk„ �Zæ�dl„ �Zç�dm„ �Zè�dn„ �Zé�do„ �Zê�dp„ �Zë�dq„ �Zì�dr„ �Zí�ds„ �Zî�dt„ �Zï�du„ �Zð�dv„ �Zñ�dw„ �Zò�dx„ �Zó�dy„ �Zô�dz„ �Zõ�d{„ �Zö�d|„ �Z÷�d}„ �Zø�d~„ �Zù�d„ �Zú�d€„ �Zû�d�„ �Zü�d‚„ �Zý�dƒ„ �Zþ�d„„ �Zÿ�d…„ �Z �d†„ �Z�d‡„ �Z�dˆ„ �Z�d‰„ �Z�dŠ„ �Z�d‹„ �Z�dŒ„ �Z�d�„ �Z�dŽ„ �Z	�d�„ �Z
�d�„ �Z�d‘„ �Z�d’„ �Z�d“„ �Z�d”„ �Z�d•„ �Z�d–„ �Z�d—„ �Z�d˜„ �Z�d™„ �Z�dš„ �Z�d›�Z�dœ�Z�d��Z�dž�Z�dŸ�Z�d �Z�d¡�Z�d¢�Z�d£�Z�d¤�Z�d¥�Z �d¦�Z!�d§�Z"�d¨�Z#�d©�Z$�dª�Z%�d«�Z&�d¬�Z'�d­�Z(�d®�Z)�d¯�Z*�d°�Z+�d±�Z,�d²�Z-�d³�Z.�d´�Z/�dµ�Z0dÆ�Z1�d¶�Z2�d·„ �Z3�dƒ�d¹„�Z4�d„�d»„�Z5�d…�d¿„�Z6�d†�dÁ„�Z7�d‡�dÄ„�Z8�dˆ�dÆ„�Z9�d‰�dÇ„�Z:�dŠ�dÉ„�Z;�d‹�dË„�Z<�dŒ�dÎ„�Z=�dÏ„ �Z>�dÐ„ �Z?�d��dÒ„�Z@�dÓ„ �ZA�dÔ„ �ZB�dÕ„ �ZC�dÖ„ �ZD�dŽ�dÛ„�ZE�d��dÝ„�ZF�d��dÞ„�ZGddd�dßœ�d‘�då„�ZH�d’�d“�dé„�ZI�d”�dí„�ZJ�dî„ �ZK�dï„ �ZL�dð„ �ZM�dñ„ �ZN�dò„ �ZO�dó„ �ZP�dô„ �ZQ�dõ„ �ZR�dö„ �ZS�d÷„ �ZT�dø„ �ZU�dù„ �ZV�dú„ �ZW�dû„ �ZX�dü„ �ZY�dý„ �ZZ�dþ„ �Z[�dÿ„ �Z\�d „ �Z] G �d„ �de@�j^        ¦  «        �Z_�d„ �Z`�d„ �Za�d„ �Zb�d„ �Zc�d„ �Zd�d„ �Ze�d	„ �Zf�d
„ �Zg�d„ �Zh�d„ �Zi�d„ �Zj�d„ �Zk�d„ �Zl�d„ �Zm�d„ �Zn�d•�d„�Zo G �d„ �de@�jp        ¦  «        �Zq G �d„ �de@�jr        ¦  «        �Zs G �d„ �de@�jt        ¦  «        �Zu�d„ �Zv G �d„ �de@�jr        ¦  «        �Zw G �d„ �de@�jr        ¦  «        �Zx�d–�d—�d"„�Zy�d˜�d#„�Zz�d™�d%„�Z{�dš�d)„�Z|�d*„ �Z}�d+„ �Z~�d,„ �Z�d-„ �Z€�d.„ �Z��d›�d/„�Z‚ G �d0„ �d1�eƒ¦  «        �Z„�d2„ �Z…�dœ�d��d6„�Z†�dž�d7„�Z‡�d8„ �Zˆ�dŸ�d �d<„�Z‰�d=„ �ZŠdddddd�d>œ�d?„�Z‹dddddd�d>œ�d@„�ZŒ�dA„ �Z��dB„ �ZŽ�dC„ �Z��dD„ �Z��dE„ �Z‘�dF„ �Z’�dG„ �Z“�dH„ �Z”�dI„ �Z•�dJ„ �Z–�dK„ �Z—�dL„ �Z˜�dM„ �Z™�dN„ �Zš�dO„ �Z›�dP„ �Zœ�d¡�dQ„�Z��d¢�dR„�Zž�dS„ �ZŸ�dT„ �Z �d|�dU„�Z¡�d£�dW„�Z¢�d¤�dY„�Z£�d¤�dZ„�Z¤�d[„ �Z¥�d\„ �Z¦�d]„ �Z§d�Z¨dœ�Z©d��Zªdž�Z«�d¥�d_„�Z¬�d`„ �Z­�da ee¦   «         d�da ee¦   «         d�dbdd�dcœ	�dd„�Z®d�dbdd÷dddddd�deœ
�df„�Z¯ G �dg„ �dh¦  «        �Z°e9s$ e@�j±        �eì¦  «          e@�j²        �eí¦  «         �di„ �Z³ e�j´        �e³¦  «         d�djl�mµ�Zµ �eµ�jµ        �Zµ ee¦   «         �Z¶�eµD ]6\  �Z·�Z¸�Z¹�Zº�e¸�dkz  �e¹�dkz  �eº�dkz  f�e¶�e· ³                    ¦   «         <   Œ7�dl„ �Z»�dm„ �Z¼�d}�dn„�Z½d�dol�m¾�Z¾ �e¾�j¿        �Z¿�e¾�jÀ        �ZÀ�e¾�jÁ        �ZÁ�e¾�jÂ        �ZÂ�e¾�jÃ        �ZÃd�dpl�mÄ�ZÄ  G �dq„ �dr�eÅ¦  «        �ZÆ�ds„ �ZÇ	 eZ�ZÈ�dteZ› �dueY› �dve�jÉ        d         › d4e�jÉ        d         › �dwe�jÊ        › �dxe�jË        �dyk    rd£nd¢› �dz�Z dS (¦  zk
PyMuPDF implemented on top of MuPDF Python bindings.

License:

    SPDX-License-Identifier: GPL-3.0-only
é    )ÚannotationsNé   )Úextra©
ÚtextÚfdÚstreamÚpathÚpath_appendÚ	pyloggingÚpylogging_loggerÚpylogging_levelÚpylogging_nameÚdefaultc        
        ób  ‡‡— | ��D|                       d¦  «        rt          | dd…         ¦  «        }�n|                       d¦  «        r| dd…         }nö|                       d¦  «        r| dd…         }nÖ|                       d¦  «        r³d}t          ¦   «         }
| d	d…                              d
¦  «        }|D ]F}|sŒ|                     dd¦  «        }t	          |¦  «        dk    sJ d|›d�¦   «         ‚|\  }}||
|<   ŒG|
                     d¦  «        Š‰�t          ‰¦  «        Š|
                     dd¦  «        }nJ d| ›d�¦   «         ‚|�t          j        |dd¬¦  «        }nË|�'t          |d¦  «        sJ ‚t          |d¦  «        sJ ‚|}n¢|�t          j        |d¦  «        }nŠ|�t          j        |d¦  «        }nr	 |€‰€‰€|�gddl	}‰€|€d}| 
                    |¦  «        Št          ‰|j        ¦  «        sJ ‚‰€‰                     ¦   «         Š G ˆˆfd„d¦  «        } |¦   «         }n|	}|S )a‚  
    Returns a stream that writes to a specified destination, which can be a
    file descriptor, a file, an existing stream or Python's `logging' system.
    
    Args:
        text: text specification of destination.
            fd:<int> - write to file descriptor.
            path:<str> - write to file.
            path+:<str> - append to file.
            logging:<items> - write to Python `logging` module.
                items: comma-separated <name=value> pairs.
                    level=<int>
                    name=<str>.
                Other names are ignored.
        
        fd: an int file descriptor.
        stream: something with methods .write(text) and .flush().
            If specified we simply return <stream>.
        path: a file path.
            If specified we return a stream that writes to this file.
        path_append: a file path.
            If specified we return a stream that appends to this file.
        pylogging*:
            if any of these args is not None, we return a stream that writes to
            Python's `logging` module.
            
            pylogging:
                Unused other than to activate use of logging module.
            pylogging_logger:
                A logging.Logger; If None, set from <pylogging_name>.
            pylogging_level:
                An int log level, if None we use
                pylogging_logger.getEffectiveLevel().
            pylogging_name:
                Only used if <pylogging_logger> is None:
                    If <pylogging_name> is None, we set it to 'pymupdf'.
                    Then we do: pylogging_logger = logging.getLogger(pylogging_name)
    Nzfd:é   zpath:é   zpath+zlogging:Té   ú,ú=r   é   zNeed `=` in item=ú.ÚlevelÚnameÚpymupdfr   z?Expected prefix `fd:`, `path:`. `path+:` or `logging:` in text=ÚwF)ÚmodeÚclosefdÚwriteÚflushÚac                  ó"   •— e Zd Zˆ ˆfd„Zd„ ZdS )ú_make_output.<locals>.Outc                óf   •— |                      d¦  «        }|r‰                     ‰|¦  «         d S d S )Nú
)ÚrstripÚlog)Úselfr   r   r   s     €€ú>C:\Projects\DSCons\.venv\Lib\site-packages\pymupdf\__init__.pyr   z_make_output.<locals>.Out.write•   sG   ø€ ð —{’{ 4Ñ(Ô(�Øð @Ø$×(Ò(¨¸$Ñ?Ô?Ð?Ð?Ð?ð@ð @ó    c                ó   — d S ©N© ©r(   s    r)   r    z_make_output.<locals>.Out.flushœ   s   € Ø�r*   N)Ú__name__Ú
__module__Ú__qualname__r   r    )r   r   s   €€r)   ÚOutr#   ”   sH   ø€ € € € € ð@ð @ð @ð @ð @ð @ðð ð ð ð r*   r2   )Ú
startswithÚintÚdictÚsplitÚlenÚgetÚioÚopenÚhasattrÚloggingÚ	getLoggerÚ
isinstanceÚLoggerÚgetEffectiveLevel)r   r   r	   r
   r   r   r   r   r   r   Úitems_dÚitemsÚitemÚnvÚnÚvÚretr<   r2   s         ``           r)   Ú_make_outputrH   .   sÇ  øø€ ðf Ñà�?Š?˜5Ñ!Ô!ð 	\Ý�T˜!˜"˜"”X‘”ˆB‰BØ�_Š_˜WÑ%Ô%ð 	\Ø˜˜˜”8ˆDˆDØ�_Š_˜WÑ%Ô%ð 	\Ø˜q˜r˜rœ(ˆKˆKØ�_Š_˜ZÑ(Ô(ð 	\ØˆIÝ‘f”fˆGØ˜˜˜”H—N’N 3Ñ'Ô'ˆEàð ð �Øð ØØ—Z’Z  QÑ'Ô'�Ý˜2‘w”w !’|�|�|Ð%<°DÐ%<Ð%<Ð%<‘|”|�|Ø‘��1Ø�˜‘
�
Ø%Ÿkšk¨'Ñ2Ô2ˆOØÐ*Ý"% oÑ"6Ô"6�Ø$Ÿ[š[¨°Ñ;Ô;ˆNˆNà[Ð[ÐSWÐ[Ð[Ð[Ñ[Ô[�1à	€~ÝŒg�b˜s¨EÐ2Ñ2Ô2ˆˆØ	Ð	Ý�v˜wÑ'Ô'Ð'Ð'Ð'Ý�v˜wÑ'Ô'Ð'Ð'Ð'ØˆˆØ	Ð	ÝŒg�d˜CÑ Ô ˆˆØ	Ð	 ÝŒg�k 3Ñ'Ô'ˆˆðØÐ$ØÐ+ØÐ*ØÐ)àˆˆˆØÐ#ØÐ%Ø!*�Ø&×0Ò0°Ñ@Ô@ÐÝÐ*¨G¬NÑ;Ô;Ð;Ð;Ð;ØÐ"Ø.×@Ò@ÑBÔBˆOð		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ñ 		ô 		ð 		ð ˆc‰eŒeˆˆàˆØ€Jr*   ÚPYMUPDF_MESSAGE)r   r   ÚPYMUPDF_LOGFc                 ó   — t           S r,   ©Ú_g_log_itemsr-   r*   r)   Ú
_log_itemsrN   ­   s   € ÝÐr*   c                ó
   — | a d S r,   )Ú_g_log_items_active)Úactives    r)   Ú_log_items_activerR   °   s   € à ÐÐÐr*   c                 ó   — t           d d …= d S r,   rL   r-   r*   r)   Ú_log_items_clearrT   ´   s   € Ý�Q�Q�Qˆˆˆr*   ©	r   r   r	   r
   r   r   r   r   r   c        	        óB   — t          | ||||||||t          ¬¦
  «
        adS )zO
    Sets destination of PyMuPDF messages. See _make_output() for details.
    r   N)rH   Ú_g_out_messagerU   s	            r)   Úset_messagesrX   ¸   s:   € õ  "ØØØØØ#ØØ-Ø+Ø)Ý"ðñ ô €N€N€Nr*   c        	        óB   — t          | ||||||||t          ¬¦
  «
        adS )zh
    Sets destination of PyMuPDF development/debugging logging. See
    _make_output() for details.
    r   N)rH   Ú
_g_out_logrU   s	            r)   Úset_logr[   Õ   s:   € õ" ØØØØØ#ØØ-Ø+Ø)Ýðñ ô €J€J€Jr*   Ú c                ó˜  — 	 t          j        d¬¦  «        }||         }	 t          j                             |j        ¦  «        }n# t          $ r
 |j        }Y nw xY w|j        }|j        }|› d|› d|› d| › �} ~n# t          $ r Y nw xY wt          rt                               | ¦  «         t          rt          | t          d¬¦  «         dS dS )z0
    For development/debugging diagnostics.
    r   )Úcontextú:z(): r   ©Úfiler    N)ÚinspectÚstackÚosr
   ÚrelpathÚfilenameÚ	ExceptionÚlinenoÚfunctionÚStopIterationrP   rM   ÚappendrZ   Úprint)r   Úcallerrc   Úframe_recordrf   Úlineri   s          r)   r'   r'   ó   s  € ðÝ” aÐ(Ñ(Ô(ˆð ˜V”}ˆð	-Ý”w—’ |Ô'<Ñ=Ô=ˆHˆHøÝð 	-ð 	-ð 	-Ø#Ô,ˆHˆHˆHð	-øøøàÔ"ˆØÔ(ˆØÐ8Ð8˜TÐ8Ð8 HÐ8Ð8°$Ð8Ð8ˆØˆEøõ ð ð ð Øˆðøøøõ ð "Ý×Ò˜DÑ!Ô!Ð!Ýð .Ýˆd�¨1Ð-Ñ-Ô-Ð-Ð-Ð-ð.ð .s"   ‚A9  $A ÁAÁAÁ9
BÂBc                óF   — t           rt          | t           d¬¦  «         dS dS )z
    For user messages.
    r   r`   N)rW   rl   ©r   s    r)   Úmessagerr     s1   € õ ð 2Ýˆd�¨qÐ1Ñ1Ô1Ð1Ð1Ð1ð2ð 2r*   c                 ón   — dd l } t          d¦  «         t          |                      ¦   «         ¦  «         d S )Nr   zexception_info:)Ú	tracebackr'   Ú
format_exc)rt   s    r)   Úexception_inforv     s=   € ØÐÐÐÝÐÑÔÐÝˆ	×ÒÑÔÑÔÐÐÐr*   z
()<>[]{}/%c                óÈ   — t           j                             | ¦  «        }|€|}n"|dk    rd}n|dk    rd}nJ d| › d|›�¦   «         ‚||k    rt          d	| › d|›�¦  «         |S )
ú}
    Returns `True`, `False` or `default` depending on whether $<name> is '1',
    '0' or unset. Otherwise assert-fails.
    NÚ1TÚ0Fr   zUnrecognised value for ú: úUsing non-default setting from )rd   Úenvironr8   r'   ©r   r   rF   rG   s       r)   Úget_env_boolr     sŽ   € õ
 	Œ
�Š˜ÑÔ€AØ€yØˆˆØ	
ˆcŠˆØˆˆØ	
ˆcŠˆØˆˆà9Ð9¨DÐ9Ð9°AÐ9Ð9Ñ9Ô9ˆqØ
ˆg‚~€~ÝÐ;¨dÐ;Ð;°aÐ;Ð;Ñ<Ô<Ð<Ø€Jr*   c                ó¢   — t           j                             | ¦  «        }|€|}nt          |¦  «        }||k    rt	          d| › d|› �¦  «         |S )rx   Nr|   r{   )rd   r}   r8   r4   r'   r~   s       r)   Úget_env_intr�   1  s[   € õ
 	Œ
�Š˜ÑÔ€AØ€yØˆˆå�!‰fŒfˆØ
ˆg‚~€~ÝÐ9¨dÐ9Ð9°aÐ9Ð9Ñ:Ô:Ð:Ø€Jr*   ÚPYMUPDF_EXCEPTIONS_VERBOSEÚPYMUPDF_USE_EXTRATc                  ó   — e Zd Zd„ ZdS )Ú_Globalsc                ó>   — d| _         d| _        d| _        d| _        d S ©Nr   )Úno_device_cachingÚsmall_glyph_heightsÚsubset_fontnamesÚskip_quad_correctionsr.   s    r)   Ú__init__z_Globals.__init__L  s(   € Ø!"ˆÔØ#$ˆÔ Ø !ˆÔØ%&ˆÔ"Ð"Ð"r*   N©r/   r0   r1   rŒ   r-   r*   r)   r…   r…   K  s#   € € € € € ð'ð 'ð 'ð 'ð 'r*   r…   z typing.Optional[typing.Callable]Ú_get_layoutc                 ó
   — da dS )z:For users who never want to see the layout recommendation.FN)Ú_recommend_layoutr-   r*   r)   Úno_recommend_layoutr‘   Z  s   € ð ÐÐÐr*   c                 óÊ   — d} 	 	 t           rQt          €Lt          j        d¦  «        dk    r6t          j                             d¦  «        st          | ¦  «         da dS dS dS dS dS )z;Check if we should recommend installing the layout package.zVConsider using the pymupdf_layout package for a greatly improved page layout analysis.r   NÚPYMUPDF_SUGGEST_LAYOUT_ANALYZERrz   zpymupdf.layoutF)r�   rŽ   rd   ÚgetenvÚ	importlibÚutilÚ	find_specrl   )Úmsgs    r)   Ú_warn_layout_oncer™   `  s�   € àd€Cð 	
ð"åð"õ Ðõ ŒIÐ7Ñ8Ô8¸CÒ?Ð?õ ”×(Ò(Ð)9Ñ:Ô:ð @õ
 	ˆc‰
Œ
ˆ
Ø!ÐÐÐð"ð "ð  Ðð @Ð?Ð?Ð?r*   ÚMUPDF_CPPYYz: $MUPDF_CPPYY=z% so attempting to import mupdf_cppyy.z: $PYTHONPATH=Ú
PYTHONPATHÚmupdf_cppyy)ÚmupdfÚinternal_check_ndebugc                ój   — |                       d¦  «        }|dk    r
| d|…         } t          | ¦  «        S )z<
    Converts string to int, ignoring trailing 'rc...'.
    Úrcr   N)Úfindr4   )r   r    s     r)   Ú_int_rcr¢   ’  s5   € ð 
�Š�4‰Œ€BØ	ˆQ‚w€wØ�C�R�CŒyˆÝˆt‰9Œ9Ðr*   )Úmupdf_location)Úpymupdf_git_branch)Úpymupdf_git_diff)Úpymupdf_git_sha)Úpymupdf_version)Úpymupdf_version_tuple)Úswig_version)Úswig_version_tuplec                ó,   — g | ]}t          |¦  «        ‘ŒS r-   )r¢   ©Ú.0Úis     r)   ú
<listcomp>r¯   °  s   € ÐKÐKÐK¨Q�g a™jœjÐKÐKÐKr*   r   z8Inconsistent MuPDF version numbers: mupdf_version_tuple=zM != (mupdf.FZ_VERSION_MAJOR, mupdf.FZ_VERSION_MINOR, mupdf.FZ_VERSION_PATCH)=z%g©Úfmtc               ó¬   — t          | t          t          f¦  «        r$d}| D ]}|r|dz  }|t          ||¬¦  «        z  }Œ|S t	          j        || ¦  «        S )zÐ
    Returns `value` formatted with mupdf.fz_format_double() if available,
    otherwise with Python's `%`.

    If `value` is a list or tuple, we return a space-separated string of
    formatted values.
    r\   ú r°   )r>   ÚlistÚtupleÚ	_format_gr�   Úfz_format_double)Úvaluer±   rG   rF   s       r)   r¶   r¶   ¿  sp   € õ �%�$¥˜Ñ'Ô'ð 2ØˆØð 	)ð 	)ˆAØð Ø�s‘
�Ø•9˜Q CÐ(Ñ(Ô(Ñ(ˆCˆCØˆ
åÔ% c¨5Ñ1Ô1Ð1r*   Úmatrix_likeÚ
point_likeÚ	quad_likeÚ	rect_likec                óF  — t          | t          ¦  «        r| j        rt          d¦  «        ‚| j        } t          | t
          j        ¦  «        r| S t          | t
          j        ¦  «        r|                      ¦   «         S | €
J d¦   «         ‚J dt          | ¦  «        ›�¦   «         ‚)zz
    Returns document as a mupdf.FzDocument, upcasting as required. Raises
    'document closed' exception if closed.
    údocument closedNr   údocument is NoneúUnrecognised type(document)=)
r>   ÚDocumentÚ	is_closedÚ
ValueErrorÚthisr�   Ú
FzDocumentÚPdfDocumentÚsuperÚtype)Údocuments    r)   Ú_as_fz_documentrÊ   è  s¦   € õ
 �(�HÑ%Ô%ð !ØÔð 	0ÝÐ.Ñ/Ô/Ð/Ø”=ˆÝ�(�EÔ,Ñ-Ô-ð 4ØˆÝ	�H�eÔ/Ñ	0Ô	0ð 4Ø�~Š~ÑÔÐØ	Ð	Ø%Ð%Ñ%Ô%ˆqà3Ð3¥$ x¡.¤.Ð3Ð3Ñ3Ô3ˆqr*   c                ó`  — t          | t          ¦  «        r| j        rt          d¦  «        ‚| j        } t          | t
          j        ¦  «        r| S t          | t
          j        ¦  «        r!t          j        | ¦  «        }|r	|j        sJ ‚|S | €
J d¦   «         ‚J dt          | ¦  «        ›�¦   «         ‚)a  
    Returns `document` downcast to a mupdf.PdfDocument. If downcast fails (i.e.
    `document` is not actually a `PdfDocument`) then we assert-fail if `required`
    is true (the default) else return a `mupdf.PdfDocument` with `.m_internal`
    false.
    r¾   Nr   r¿   rÀ   )
r>   rÁ   rÂ   rÃ   rÄ   r�   rÆ   rÅ   Ú
m_internalrÈ   )rÉ   ÚrequiredrG   s      r)   Ú_as_pdf_documentrÎ   ú  sÀ   € õ �(�HÑ%Ô%ð !ØÔð 	0ÝÐ.Ñ/Ô/Ð/Ø”=ˆÝ�(�EÔ-Ñ.Ô.ð 
4ØˆÝ	�H�eÔ.Ñ	/Ô	/ð 4ÝÔ Ñ)Ô)ˆØð 	"Ø”>Ð!Ð!�>Øˆ
Ø	Ð	Ø%Ð%Ñ%Ô%ˆqà3Ð3¥$ x¡.¤.Ð3Ð3Ñ3Ô3ˆqr*   c                ó  — t          | t          ¦  «        r| j        } t          | t          j        ¦  «        r|                      ¦   «         S t          | t          j        ¦  «        r| S | €
J d¦   «         ‚J dt          | ¦  «        ›�¦   «         ‚)z@
    Returns page as a mupdf.FzPage, upcasting as required.
    Nr   úpage is NoneúUnrecognised type(page)=)r>   ÚPagerÄ   r�   ÚPdfPagerÇ   ÚFzPagerÈ   ©Úpages    r)   Ú_as_fz_pager×     s†   € õ �$�ÑÔð ØŒyˆÝ�$�œÑ&Ô&ð 0Ø�zŠz‰|Œ|ÐÝ	�D�%œ,Ñ	'Ô	'ð 0ØˆØ	ˆØ!�/Ñ!Ô!ˆqà/Ð/¥$ t¡*¤*Ð/Ð/Ñ/Ô/ˆqr*   c                ó4  — t          | t          ¦  «        r| j        } t          | t          j        ¦  «        r| S t          | t          j        ¦  «        r!t          j        | ¦  «        }|r	|j        sJ ‚|S | €
J d¦   «         ‚J dt          | ¦  «        ›�¦   «         ‚)zé
    Returns `page` downcast to a mupdf.PdfPage. If downcast fails (i.e. `page`
    is not actually a `PdfPage`) then we assert-fail if `required` is true (the
    default) else return a `mupdf.PdfPage` with `.m_internal` false.
    Nr   rÐ   rÑ   )	r>   rÒ   rÄ   r�   rÓ   rÔ   Úpdf_page_from_fz_pagerÌ   rÈ   )rÖ   rÍ   rG   s      r)   Ú_as_pdf_pagerÚ      s¢   € õ �$�ÑÔð ØŒyˆÝ�$�œÑ&Ô&ð 
0ØˆÝ	�D�%œ,Ñ	'Ô	'ð 0ÝÔ)¨$Ñ/Ô/ˆØð 	"Ø”>Ð!Ð!�>Øˆ
Ø	ˆØ!�/Ñ!Ô!ˆqà/Ð/¥$ t¡*¤*Ð/Ð/Ñ/Ô/ˆqr*   c                óZ   — t          j        | ¦  «        }|j        st          d¦  «        ‚|S )a8  
    Wrapper for mupdf.pdf_annot_page() which raises an exception if <annot>
    is not bound to a page instead of returning a mupdf.PdfPage with
    `.m_internal=None`.

    [Some other MuPDF functions such as pdf_update_annot()` already raise a
    similar exception if a pdf_annot's .page field is null.]
    úAnnot is not bound to a page)r�   Úpdf_annot_pagerÌ   ÚRuntimeError)ÚannotrÖ   s     r)   Ú_pdf_annot_pagerà   5  s2   € õ Ô Ñ&Ô&€DØŒ?ð ;ÝÐ9Ñ:Ô:Ð:Ø€Kr*   c                  ó0  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dSd	„Z
dTd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdUd„Zed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ ZdVd„Zd„ Zd„ Zd„ ZdWd„Zed„ ¦   «         Zed „ ¦   «         Zed!„ ¦   «         Z ed"„ ¦   «         Z!ed#„ ¦   «         Z"ed$„ ¦   «         Z#ed%„ ¦   «         Z$ed&„ ¦   «         Z%ed'„ ¦   «         Z&ed(„ ¦   «         Z'ed)„ ¦   «         Z(ed*„ ¦   «         Z)ed+„ ¦   «         Z*d,„ Z+d-„ Z,d.„ Z-dXd/„Z.dYd0„Z/d1„ Z0dZd2„Z1d3„ Z2d[d4„Z3d5„ Z4d6„ Z5dSd7„Z6d8„ Z7d9„ Z8d:„ Z9d;„ Z:dSd<„Z;ed=„ ¦   «         Z<	 	 	 	 	 	 	 	 	 d\d]dN„Z=d^dO„Z>e?dP„ ¦   «         Z@edQ„ ¦   «         ZAedR„ ¦   «         ZBdS )_ÚAnnotc                óL   — t          |t          j        ¦  «        sJ ‚|| _        d S r,   )r>   r�   ÚPdfAnnotrÄ   ©r(   rß   s     r)   rŒ   zAnnot.__init__L  s%   € Ý˜5¥%¤.Ñ1Ô1Ð1Ð1Ð1ØˆŒ	ˆ	ˆ	r*   c                ó*   — t          | j        ¦  «        S r,   )ÚboolrÄ   r.   s    r)   Ú__bool__zAnnot.__bool__P  s   € Ý�D”I‰ŒÐr*   c                óJ   — t          | dd¦  «        }d| j        d         › d|› �S )NÚparentz<>ú'r   z' annotation on )ÚgetattrrÈ   )r(   rê   s     r)   Ú__repr__zAnnot.__repr__S  s/   € Ý˜˜x¨Ñ.Ô.ˆØ9�4”9˜Q”<Ð9Ð9°Ð9Ð9Ð9r*   c                ó*   — |                       ¦   «         S r,   )rí   r.   s    r)   Ú__str__zAnnot.__str__W  s   € Ø�}Š}‰ŒÐr*   c                ó:   — t          | dd¦  «        r	d| _        d S d S )NÚthisownF)rì   rñ   r.   s    r)   Ú_erasezAnnot._eraseZ  s+   € Ý�4˜ EÑ*Ô*ð 	!Ø ˆDŒLˆLˆLð	!ð 	!r*   c                óš  — | j         }t          j        |¦  «        t          j        k    rd S t	          ¦   «         }	 t          j        t          j        |¦  «        d¦  «        }|j        r-t          d¦  «         t          j	        |¦  «        }||t          <   t          j        t          j        |¦  «        d¦  «        }|j        r,t          j        |¦  «        }t          |¦  «        |t          <   n
d|t          <   t          j        t          j        |¦  «        t          d¦  «        ¦  «        }d}|j        rt          j        |¦  «        }||t"          <   n&# t$          $ r t&          rt)          ¦   «          Y d S w xY w|}|s|S | j        |d<   t,                               | ¦  «        \  }}	}
||d<   |	|d	<   |
|d
<   | j        d         }||d<   |S )NÚROzIgnoring redaction key '/RO'.ÚOverlayTextr\   ÚQr   ÚrectÚ
text_colorÚfontnameÚfontsizeÚfill)rÄ   r�   Úpdf_annot_typeÚPDF_ANNOT_REDACTr5   Úpdf_dict_getsÚpdf_annot_objrÌ   Úmessage_warningÚ
pdf_to_numÚdictkey_xrefÚpdf_to_text_stringÚJM_UnicodeFromStrÚdictkey_textÚpdf_dict_getÚPDF_NAMEÚ
pdf_to_intÚdictkey_alignrg   Úg_exceptions_verboserv   r÷   ÚTOOLSÚ	_parse_daÚcolors)r(   rß   ÚvaluesÚobjÚxrefr   ÚalignÚvalrø   rù   rú   rû   s               r)   Ú_get_redact_valueszAnnot._get_redact_values^  sÊ  € Ø”	ˆÝÔ Ñ&Ô&­%Ô*@Ò@Ð@ØˆFå‘”ˆð	ÝÔ%¥eÔ&9¸%Ñ&@Ô&@À$ÑGÔGˆCØŒ~ð ,ÝÐ ?Ñ@Ô@Ð@ÝÔ'¨Ñ,Ô,�Ø'+�•|Ñ$ÝÔ%¥eÔ&9¸%Ñ&@Ô&@À-ÑPÔPˆCØŒ~ð *ÝÔ/°Ñ4Ô4�Ý'8¸Ñ'>Ô'>�•|Ñ$Ð$à')�•|Ñ$ÝÔ$¥UÔ%8¸Ñ%?Ô%?ÅÈ#ÁÄÑOÔOˆCØˆEØŒ~ð .ÝÔ(¨Ñ-Ô-�Ø$)ˆF•=Ñ!Ð!øÝð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8ØˆFˆFð	øøøð ˆàð 	ØˆJØ”iˆˆF‰Ý).¯ª¸Ñ)>Ô)>Ñ&ˆ
�H˜hØ&ˆˆLÑØ"ˆˆJ‰Ø"ˆˆJ‰ØŒ{˜6Ô"ˆØˆˆF‰Øˆ
s   »DE ÅE9Å8E9c                ó  — t           rSt          | j        t          j        ¦  «        sJ ‚t          j        | j        ¦  «        }t          |t          ¦  «        sJ ‚|S d }d }| j        }t          |t          j        ¦  «        sJ ‚t          j        |¦  «        }t          j	        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        rt          j        |¦  «        }|r|j        rt          |¦  «        }|S )NÚAPÚN)Úg_use_extrar>   rÄ   r�   rä   r   ÚAnnot_getAPÚbytesrÿ   Úpdf_dict_getlr  Úpdf_is_streamÚpdf_load_streamrÌ   ÚJM_BinFromBuffer)r(   rG   ÚrÚresrß   Ú	annot_objÚaps          r)   Ú_getAPzAnnot._getAP…  sð   € Ýð 	Ý˜tœy­%¬.Ñ9Ô9Ð9Ð9Ð9ÝÔ# D¤IÑ.Ô.ˆCÝ˜s¥EÑ*Ô*Ð*Ð*Ð*ØˆJàˆAØˆCØ”IˆEÝ˜u¥e¤nÑ5Ô5Ð5Ð5Ð5ÝÔ+¨UÑ3Ô3ˆIÝÔ$ iµ¸$±´ÅÈ#ÁÄÑOÔOˆBÝÔ" BÑ'Ô'ð 1ÝÔ+¨RÑ0Ô0�Øð *�s”~ð *Ý$ SÑ)Ô)�ØˆHr*   r   c                óÂ  — 	 | j         }t          j        |¦  «        }t          |¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }|j        st          t          ¦  «        ‚t          j	        |¦  «        st          t          ¦  «        ‚t          |¦  «        }|j        st          t          ¦  «        ‚t          |                     ¦   «         ||d¦  «         |rGt          j        |t          d¦  «        ¦  «        }t          j        |t          d¦  «        |¦  «         d S d S # t"          $ r t$          rt'          ¦   «          Y d S Y d S w xY w)Nr  r  r   ÚRectÚBBox)rÄ   r�   rÿ   rà   r  r  rÌ   rÞ   ÚMSG_BAD_APNr  ÚJM_BufferFromBytesrÃ   ÚMSG_BAD_BUFFERÚJM_update_streamÚdocÚpdf_dict_get_rectÚpdf_dict_put_rectrg   r
  rv   )	r(   Úbuffer_r÷   rß   r   rÖ   Úapobjr  Úbboxs	            r)   Ú_setAPzAnnot._setAP˜  sX  € ð	9Ø”IˆEÝÔ+¨UÑ3Ô3ˆIÝ" 5Ñ)Ô)ˆDÝÔ'¨µH¸T±N´NÅHÈSÁMÄMÑRÔRˆEØÔ#ð 1Ý"¥KÑ0Ô0Ð0ÝÔ&¨Ñ.Ô.ð 1Ý"¥KÑ0Ô0Ð0Ý$ gÑ.Ô.ˆCØ”>ð 2Ý ¥.Ñ1Ô1Ð1Ý˜dŸhšh™jœj¨%°°aÑ8Ô8Ð8Øð HÝÔ.°	½8ÀFÑ;KÔ;KÑLÔL�ÝÔ'¨µ¸Ñ0@Ô0@À$ÑGÔGÐGÐGÐGðHð Høõ ð 	9ð 	9ð 	9Ý#Ð8­Ñ(8Ô(8Ð(8Ð(8Ð(8Ð(8Ð8Ð8Ð8ð	9øøøs   ‚D2D8 Ä8EÅEéÿÿÿÿNc                ó
  — | j         }|j        sJ ‚t          j        |¦  «        }t	          |¦  «        }|                     ¦   «         }t          j        |¦  «        }	t          |¦  «        \  }
}	 |
dk    s;|	t          j        t          j	        t          j
        t          j        t          j        fvr#t          j        |t          d¦  «        ¦  «         n#|
dk    rt          j        ||d |
…         ¦  «         |dk    rdnd}|	t          j        t          j	        t          j        t          j        t          j        t          j
        t          j        t          j        t          j        t          j        t          j        fvrd}|r#t          j        |t          d¦  «        |¦  «         |	t          j        k    r$|
dk    rt          j        ||d |
…         ¦  «         n}|
dk    rwt          j        |                     ¦   «         |
¦  «        }t3          |
¦  «        D ]}t          j        |||         ¦  «         Œt          j        |t          d¦  «        |¦  «         t          j        |¦  «         t          j        |¦  «         d|_        n:# t>          $ r-}t@          rtC          ¦   «          tE          d|› �¦  «         ‚ d }~ww xY w|dk     s|dk    r|sdS 	 t          j#        t          j        |¦  «        t          d¦  «        t          d¦  «        ¦  «        }|j        stI          tJ          ¦  «        ‚t          j&        |t          d	¦  «        ¦  «        }|j        s#t          j'        |t          d	¦  «        d
¦  «        }t          j(        |                     ¦   «         d¦  «        }|dk    ro|dk     rit          j)        |t          d¦  «        |¦  «         t          j)        |t          d¦  «        |¦  «         t          j)        |t          d¦  «        |¦  «         |rFt          j*        |t          d¦  «        |¦  «         t          j*        |t          d¦  «        |¦  «         t          j&        |t          d¦  «        ¦  «        }|j        s#t          j'        |t          d¦  «        d
¦  «        }t          j        |t          d¦  «        |¦  «         n:# t>          $ r-}t@          rtC          ¦   «          tE          d|› �¦  «         ‚ d }~ww xY wdS )Nr   ÚICr   ÚRotatezcannot update annot: Tr  r  Ú	Resourcesr   r   ÚCAÚcaÚBMÚ	ExtGStateÚHz#cannot set opacity or blend mode
: )+rÄ   rÌ   r�   rÿ   rà   r*  rü   ÚJM_color_FromSequenceÚPDF_ANNOT_SQUAREÚPDF_ANNOT_CIRCLEÚPDF_ANNOT_LINEÚPDF_ANNOT_POLY_LINEÚPDF_ANNOT_POLYGONÚpdf_dict_delr  Úpdf_set_annot_interior_colorÚPDF_ANNOT_CARETÚPDF_ANNOT_FREE_TEXTÚPDF_ANNOT_FILE_ATTACHMENTÚPDF_ANNOT_INKÚPDF_ANNOT_STAMPÚPDF_ANNOT_TEXTÚpdf_dict_put_intÚpdf_set_annot_colorÚpdf_new_arrayÚrangeÚpdf_array_push_realÚpdf_dict_putÚpdf_dirty_annotÚpdf_update_annotÚresynth_requiredrg   r
  rv   rr   r  rÞ   r&  r  Úpdf_dict_put_dictÚpdf_new_dictÚpdf_dict_put_realÚpdf_dict_put_name)r(   ÚopacityÚ
blend_modeÚ
fill_colorÚrotaterß   r   rÖ   ÚpdfÚtype_ÚnfcolÚfcolÚ
insert_rotÚcolr®   Úer!  Ú	resourcesÚalp0Úextgs                       r)   Ú_update_appearancezAnnot._update_appearance¬  s®  € Ø”	ˆØÔÐÐÐÝÔ'¨Ñ/Ô/ˆ	Ý˜uÑ%Ô%ˆØ�hŠh‰jŒjˆÝÔ$ eÑ,Ô,ˆÝ+¨JÑ7Ô7‰ˆˆtð1	ð ˜Šzˆz˜UÝÔ*ÝÔ*ÝÔ(ÝÔ-ÝÔ+ð+ð ð õ Ô" I­x¸©~¬~Ñ>Ô>Ð>Ð>Ø˜’�ÝÔ2°E¸4ÀÀÀ¼<ÑHÔHÐHà$¨šk˜k˜˜¨qˆJØÝÔ)ÝÔ*ÝÔ-ÝÔ3ÝÔ'ÝÔ(ÝÔ-ÝÔ+ÝÔ*ÝÔ)ÝÔ(ðð ð ð �
àð NÝÔ& yµ(¸8Ñ2DÔ2DÀfÑMÔMÐMð �Ô1Ò1Ð1Ø˜1’9�9ÝÔ-¨e°T¸&¸5¸&´\ÑBÔBÐBøØ˜’�ÝÔ)¨$¯(ª(©*¬*°eÑ<Ô<�Ý ™œð <ð <�AÝÔ-¨c°4¸´7Ñ;Ô;Ð;Ð;ÝÔ" 9­h°t©n¬n¸cÑBÔBÐBÝÔ! %Ñ(Ô(Ð(ÝÔ" 5Ñ)Ô)Ð)Ø#$ˆCÔ Ð øÝð 	ð 	ð 	Ý#ð !ÝÑ Ô Ð ÝÐ0¨QÐ0Ð0Ñ1Ô1Ð1Øøøøøð		øøøð �aŠKˆK˜7 aš<˜<°˜<Ø�4ð 	ÝÔ$ÝÔ'¨Ñ.Ô.Ý˜T‘N”NÝ˜S‘M”Mñô ˆBð
 ”=ð 1Ý"¥KÑ0Ô0Ð0åÔ*¨Bµ¸Ñ0EÔ0EÑFÔFˆIØÔ'ð SÝ!Ô3°R½À+Ñ9NÔ9NÐPQÑRÔR�	åÔ% t§x¢x¡z¤z°1Ñ5Ô5ˆDØ˜!Š|ˆ| ¨!¢ ÝÔ'¨­x¸©~¬~¸wÑGÔGÐGÝÔ'¨­x¸©~¬~¸wÑGÔGÐGÝÔ'¨µH¸T±N´NÀGÑLÔLÐLàð PÝÔ'¨­x¸©~¬~¸zÑJÔJÐJÝÔ'¨µH¸T±N´NÀJÑOÔOÐOåÔ% yµ(¸;Ñ2GÔ2GÑHÔHˆDØ”?ð UÝÔ.°	½8ÀKÑ;PÔ;PÐRSÑTÔT�åÔ ¥h¨s¡m¤m°TÑ:Ô:Ð:Ð:øåð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8ÝÐ?¸AÐ?Ð?Ñ@Ô@Ð@Øøøøøð	øøøð
 ˆts2   Á/HJ Ê
J<Ê(J7Ê7J<ËG<S Ó
TÓ(S?Ó?Tc                ó  — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }|j        s1t          t          j        t          j        j	        ¦  «        ¦  «        }n1t          j
        |t          d¦  «        ¦  «        }t          |¦  «        }t          |¦  «        |                      ¦   «         j        z  }||                      ¦   «         j        z  }|S )zannotation appearance bboxr  r  r%  )ÚCheckParentrÄ   r�   rÿ   r  r  rÌ   ÚJM_py_from_rectÚFzRectÚFixed_INFINITEr+  r$  Ú
get_parentÚtransformation_matrixÚderotation_matrix)r(   rß   r   r!  r  r÷   s         r)   Úapn_bboxzAnnot.apn_bbox  sÑ   € õ 	�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ  ­H°T©N¬N½HÀS¹M¼MÑJÔJˆØŒ}ð 	(Ý!¥%¤,­u¬|Ô/JÑ"KÔ"KÑLÔLˆCˆCåÔ*¨2­x¸Ñ/?Ô/?Ñ@Ô@ˆDÝ! $Ñ'Ô'ˆCå�3‰iŒi˜$Ÿ/š/Ñ+Ô+ÔAÑAˆØˆt�ŠÑ Ô Ô2Ñ2ˆØˆ
r*   c                óô  — 	 t          | ¦  «         | j        }t          |t          j        ¦  «        sJ ‚t          j        t          j        |¦  «        t          j        t          j        ¦  «        }|j	        s t          t          j        ¦   «         ¦  «        S t          j        |t          j        ¦  «        }t          |¦  «        }t          |¦  «        }|S # t          $ r t           rt#          ¦   «          ‚ w xY w)zannotation appearance matrix)rf  rÄ   r>   r�   rä   r  rÿ   ÚPDF_ENUM_NAME_APÚPDF_ENUM_NAME_NrÌ   ÚJM_py_from_matrixÚFzMatrixÚpdf_dict_get_matrixÚPDF_ENUM_NAME_MatrixÚMatrixrg   r
  rv   )r(   rß   r!  Úmatr  s        r)   Ú
apn_matrixzAnnot.apn_matrix   sã   € ð	Ý˜ÑÔÐØ”IˆEÝ˜e¥U¤^Ñ4Ô4Ð4Ð4Ð4ÝÔ$ÝÔ'¨Ñ.Ô.ÝÔ*ÝÔ)ñô ˆBð
 ”=ð ;Ý(­¬Ñ)9Ô)9Ñ:Ô:Ð:ÝÔ+¨BµÔ0JÑKÔKˆCÝ# CÑ(Ô(ˆCå˜‘+”+ˆCàˆJøÝð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð	øøøs   ‚BC Â>C Ã!C7c           
     óŠ  — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |t          d¦  «        ¦  «        }d}|j        r#t          t          j        |¦  «        ¦  «        }|S t          j	        |t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }t          j
        |¦  «        rêt          j        |¦  «        }t          |¦  «        D ]Æ}t          j        ||¦  «        }t          j
        |¦  «        r›t          j        |¦  «        }t          |¦  «        D ]w}	t          j        ||	¦  «        }
t          j        |
t          d¦  «        ¦  «        dk    r:t          t          j        t          j        ||	¦  «        ¦  «        ¦  «        }|c c S ŒxŒÇ|S )zannotation BlendModer8  Nr  r  r5  r9  r   )rf  rÄ   r�   rÿ   r  r  rÌ   r  Úpdf_to_namer  Úpdf_is_dictÚpdf_dict_lenrL  Úpdf_dict_get_valÚpdf_dict_get_keyÚ
pdf_objcmp)r(   rß   r   r  rW  rE   r®   Úobj1ÚmÚjÚobj2s              r)   Ú	blendmodezAnnot.blendmode8  s§  € õ 	�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ  ­H°T©N¬NÑ;Ô;ˆØˆ
ØŒ>ð 	Ý*­5Ô+<¸SÑ+AÔ+AÑBÔBˆJØÐåÔ!ØÝ˜‘”Ý˜‘”Ý˜Ñ%Ô%Ý˜Ñ%Ô%ñô ˆõ Ô˜SÑ!Ô!ð 
	.ÝÔ" 3Ñ'Ô'ˆAÝ˜1‘X”Xð .ð .�ÝÔ-¨c°1Ñ5Ô5�ÝÔ$ TÑ*Ô*ð .ÝÔ*¨4Ñ0Ô0�AÝ" 1™XœXð .ð .˜Ý$Ô5°d¸AÑ>Ô>˜Ý Ô+¨Dµ(¸4±.´.ÑAÔAÀQÒFÐFÝ):½5Ô;LÍUÔMcÐdhÐjkÑMlÔMlÑ;mÔ;mÑ)nÔ)n˜JØ#-Ð-Ð-Ð-Ð-Ð-ð Gøð Ðr*   c                óL  — t          | ¦  «         | j        d         }|t          j        t          j        t          j        t          j        t          j        t          j        t          j	        fvrt          ¦   «         S t          j        | j        ¦  «        }t          |¦  «        }|S )zBorder information.r   )rf  rÈ   r�   r=  rD  rF  r>  r?  r@  r<  r5   rÿ   rÄ   ÚJM_annot_border)r(   ÚatypeÚaorG   s       r)   ÚborderzAnnot.borderX  sˆ   € õ 	�DÑÔÐØ”	˜!”ˆØÝÔ&ÝÔ)ÝÔ#ÝÔ$ÝÔ)ÝÔ'ÝÔ&ðð ð õ ‘6”6ˆMÝÔ  ¤Ñ+Ô+ˆÝ˜bÑ!Ô!ˆØˆ
r*   r   c                óÐ   — t          | ¦  «         | j        }t          j        t          j        |¦  «        ¦  «        }t          ddd|¬¦  «        }t          j        |||¦  «         dS )z!Clean appearance contents stream.r   r   )ÚrecurseÚinstance_formsÚasciiÚsanitizeN)rf  rÄ   r�   Úpdf_get_bound_documentrÿ   Ú_make_PdfFilterOptionsÚpdf_filter_annot_contents)r(   r�  rß   rZ  Úfilter_s        r)   Úclean_contentszAnnot.clean_contentsk  sd   € å�DÑÔÐØ”	ˆÝÔ*­5Ô+>¸uÑ+EÔ+EÑFÔFˆÝ(°À1ÈAÐX`ÐaÑaÔaˆÝÔ'¨¨U°GÑ<Ô<Ð<Ð<Ð<r*   c                óò   — 	 t          | ¦  «         | j        }t          |t          j        ¦  «        sJ ‚t          t          j        |¦  «        ¦  «        S # t          $ r t          rt          ¦   «          ‚ w xY w)zColor definitions.)
rf  rÄ   r>   r�   rä   ÚJM_annot_colorsrÿ   rg   r
  rv   rå   s     r)   r  zAnnot.colorss  s|   € ð	Ý˜ÑÔÐØ”IˆEÝ˜e¥U¤^Ñ4Ô4Ð4Ð4Ð4Ý"¥5Ô#6°uÑ#=Ô#=Ñ>Ô>Ð>øÝð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð	øøøs   ‚AA Á!A6c                ó  — t          | ¦  «         | j        }t          j        |¦  «        }t	          |¦  «        }	 t          |¦  «        }|snt          j        ||¦  «         Œ(t          j        |t          d¦  «        ¦  «         t          j	        | 
                    ¦   «         t          d¦  «        ¦  «        }t          j        |¦  «        }d}t          |dz
  dd¦  «        D ]m}t          j        ||¦  «        }	t          j	        |	t          d¦  «        ¦  «        }
|	j        sŒAt          j        |
|¦  «        st          j        ||¦  «         d}Œn|r7t          j        | 
                    ¦   «         t          d¦  «        |¦  «         dS dS )z*Delete 'Popup' and responding annotations.r   ÚPopupÚAnnotsr   r1  ÚParentN)rf  rÄ   r�   rÿ   rà   ÚJM_find_annot_irtÚpdf_delete_annotrA  r  r  r  Úpdf_array_lenrL  Úpdf_array_getrÌ   r~  Úpdf_array_deleterN  )r(   rß   r   rÖ   Ú	irt_annotÚannotsrE   Úfoundr®   ÚoÚps              r)   Údelete_responseszAnnot.delete_responses  sƒ  € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	Ý˜uÑ%Ô%ˆð	4Ý)¨%Ñ0Ô0ˆIØð ØÝÔ" 4¨Ñ3Ô3Ð3ð		4õ
 	Ô˜9¥h¨wÑ&7Ô&7Ñ8Ô8Ð8åÔ# D§H¢H¡J¤Jµ¸Ñ0BÔ0BÑCÔCˆÝÔ Ñ'Ô'ˆØˆÝ�q˜‘s˜B Ñ#Ô#ð 	ð 	ˆAÝÔ# F¨AÑ.Ô.ˆAÝÔ" 1¥h¨xÑ&8Ô&8Ñ9Ô9ˆAØ”<ð ØÝÔ# A yÑ1Ô1ð ÝÔ& v¨qÑ1Ô1Ð1Ø�øØð 	GÝÔ˜tŸxšx™zœz­8°HÑ+=Ô+=¸vÑFÔFÐFÐFÐFð	Gð 	Gr*   c                óî  — t          | ¦  «         t          ¦   «         }d}d}d}| j        }t          j        |¦  «        }t          j        |¦  «        }|t          j        k    rt          t          ¦  «        ‚t          j	        |t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }|j        st          dt          ¦  «         t          j        |t          d¦  «        ¦  «        }	t          j        |	t          d¦  «        ¦  «        }
|
j        rt          j        |
¦  «        }n=t          j        |	t          d¦  «        ¦  «        }
|
j        rt          j        |
¦  «        }t          j        |	t          d¦  «        ¦  «        }
|
j        rt          j        |
¦  «        }t          j        |t          d	¦  «        ¦  «        }
|
j        rt          j        |
¦  «        }t          j	        |t          d
¦  «        t          d¦  «        ¦  «        }
|
j        rt          j        |
¦  «        }t#          |¦  «        |t$          <   t'          |¦  «        |t(          <   ||t*          <   ||t,          <   |S )zAttached file information.r1  NÚFSÚEFÚFúbad PDF: file entry not foundÚUFÚDescÚLengthÚParamsÚSize)rf  r5   rÄ   r�   rÿ   rü   rE  Ú	TypeErrorÚMSG_BAD_ANNOT_TYPEr  r  rÌ   ÚRAISEPYÚJM_Exc_FileDataErrorr  r  r  ÚJM_EscapeStrFromStrÚdictkey_filenamer  Údictkey_descrÚdictkey_lengthÚdictkey_size)r(   r  ÚlengthÚsizeÚdescrß   r   r[  r	   Úfsr¡  rf   s               r)   Ú	file_infozAnnot.file_infoš  s   € õ 	�DÑÔÐÝ‰fŒfˆØˆØˆØˆØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ$ UÑ+Ô+ˆØ•EÔ3Ò3Ð3ÝÕ/Ñ0Ô0Ð0ÝÔ$ØÝ˜‘”Ý˜‘”Ý˜‘”ñ	ô ˆð Ô ð 	LÝÐ4Õ6JÑKÔKÐKåÔ 	­8°D©>¬>Ñ:Ô:ˆåÔ˜r¥8¨D¡>¤>Ñ2Ô2ˆØŒ<ð 	7ÝÔ/°Ñ2Ô2ˆHˆHåÔ" 2¥x°¡}¤}Ñ5Ô5ˆAØŒ|ð 7Ý Ô3°AÑ6Ô6�åÔ˜r¥8¨FÑ#3Ô#3Ñ4Ô4ˆØŒ<ð 	/ÝÔ+¨AÑ.Ô.ˆDåÔ˜v¥x°Ñ'9Ô'9Ñ:Ô:ˆØŒ<ð 	)ÝÔ% aÑ(Ô(ˆFåÔ ­°Ñ(:Ô(:½HÀVÑ<LÔ<LÑMÔMˆØŒ<ð 	'ÝÔ# AÑ&Ô&ˆDå!4°XÑ!>Ô!>ˆÕÑÝ/°Ñ5Ô5ˆ�]ÑØ%ˆ�^ÑØ!ˆ�\ÑØˆ
r*   c                óV   — t          | ¦  «         | j        }t          j        |¦  «        S )zFlags field.)rf  rÄ   r�   Úpdf_annot_flagsrå   s     r)   ÚflagszAnnot.flagsÌ  s*   € õ 	�DÑÔÐØ”	ˆÝÔ$ UÑ+Ô+Ð+r*   c                óÄ  — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |¦  «        }|t          j        k    rt          t          ¦  «        ‚t          j        |t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }|j
        st          dt          ¦  «         t          j        |¦  «        }t          |¦  «        }|S )zRetrieve attached file content.r¥  r¦  r§  r¨  )rf  rÄ   r�   rÿ   rü   rE  r®  r¯  r  r  rÌ   r°  r±  r  r  )r(   rß   r   rÈ   r	   Úbufr  s          r)   Úget_filezAnnot.get_fileÓ  sÀ   € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ# EÑ*Ô*ˆØ•5Ô2Ò2Ð2ÝÕ/Ñ0Ô0Ð0ÝÔ$ Yµ¸±´ÅÈÁÄÕPXÐY\ÑP]ÔP]Ñ^Ô^ˆØÔ ð 	LÝÐ4Õ6JÑKÔKÐKÝÔ# FÑ+Ô+ˆÝ˜sÑ#Ô#ˆØˆ
r*   c                óØ   — t          | ¦  «         d}| j        }t          j        |¦  «        }t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        }|S )z*Get annotation optional content reference.r   ÚOC©rf  rÄ   r�   rÿ   r  r  rÌ   r  )r(   Úocrß   r   r  s        r)   Úget_oczAnnot.get_ocâ  sc   € å�DÑÔÐØˆØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ  ­H°T©N¬NÑ;Ô;ˆØŒ>ð 	'ÝÔ! #Ñ&Ô&ˆBØˆ	r*   c                ó,  — 	 t          | d¦  «        }n�# t          $ rt t          | j        ¦  «        }t	          |t
          j        ¦  «        sJ ‚|j        r!t          | 	                    ¦   «         ¦  «        nd }t          ||¦  «        }|| _        Y nw xY w|S )Nrê   )rì   ÚAttributeErrorrà   rÄ   r>   r�   rÓ   rÌ   rÁ   r*  rÒ   rê   )r(   rG   rÖ   rÉ   s       r)   rj  zAnnot.get_parentð  sœ   € ð	Ý˜4 Ñ*Ô*ˆCˆCøÝð 	ð 	ð 	Ý" 4¤9Ñ-Ô-ˆDÝ˜t¥U¤]Ñ3Ô3Ð3Ð3Ð3Ø04´ÐI•x §¢¡¤Ñ,Ô,Ð,ÀTˆHÝ�t˜XÑ&Ô&ˆCàˆDŒKˆKˆKð	øøøð ˆ
s   ‚ “A;BÂBc                óò  — t          | ¦  «         t          t          t          dœ}t	          |¦  «        t
          u r(|                     |                     ¦   «         d¦  «        }|rt          |dz  |dz  ¦  «        }t          |¦  «        }|}|st          j        ¦   «         }t          j        | j        ||t          j        d¦  «        |¦  «        }t          |¦  «        }	|r|	                     ||¦  «         |	S )zannotation Pixmap)ÚgrayÚrgbÚcmykNéH   r   )rf  ÚcsGRAYÚcsRGBÚcsCMYKrÈ   Ústrr8   Úlowerru  ÚJM_matrix_from_pyr�   Úfz_device_rgbÚpdf_new_pixmap_from_annotrÄ   ÚFzSeparationsÚPixmapÚset_dpi)
r(   ÚmatrixÚdpiÚ
colorspaceÚalphaÚcspacesÚctmÚcsÚpixrG   s
             r)   Ú
get_pixmapzAnnot.get_pixmapþ  sí   € õ 	�DÑÔÐÝ!­%½Ð@Ð@ˆÝ�
ÑÔ�sÐ"Ð"Ø Ÿš Z×%5Ò%5Ñ%7Ô%7¸Ñ>Ô>ˆJØð 	0Ý˜C "™H c¨B¡hÑ/Ô/ˆFÝ Ñ'Ô'ˆØˆØð 	'ÝÔ$Ñ&Ô&ˆBåÔ-¨d¬i¸¸bÅ%ÔBUÐVWÑBXÔBXÐZ_Ñ`Ô`ˆÝ�S‰kŒkˆØð 	"Ø�KŠK˜˜SÑ!Ô!Ð!Øˆ
r*   c                óf  — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |¦  «        }t          j        |t          d¦  «        ¦  «        }|t          j        k    s|j        st          t          ¦  «        ‚t          j        |t          d¦  «        ¦  «        j        rt          dt          ¦  «         t          ¦   «         }t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        |d<   t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        |d<   t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        |d	<   t          j        |t          d
¦  «        ¦  «        }|j        rt          j        |¦  «        |d<   t          j        |d¦  «        }|j        rt          j        |¦  «        |d<   t          j        |¦  «        }t'          |¦  «        }||d<   |S )zRetrieve sound stream.ÚSoundr§  zunsupported sound streamÚRÚrateÚCÚchannelsÚBÚbpsÚEÚencodingÚCOÚcompressionr	   )rf  rÄ   r�   rÿ   rü   r  r  ÚPDF_ANNOT_SOUNDrÌ   r®  r¯  r°  r±  r5   Úpdf_to_realr  ry  rþ   r  r  )	r(   rß   r   rÈ   Úsoundr  r  rÀ  r	   s	            r)   Ú	get_soundzAnnot.get_sound  sä  € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ# EÑ*Ô*ˆÝÔ" 9­h°wÑ.?Ô.?Ñ@Ô@ˆØ•5Ô(Ò(Ð(°Ô0@Ð(ÝÕ/Ñ0Ô0Ð0ÝÔ˜e¥X¨c¡]¤]Ñ3Ô3Ô>ð 	GÝÐ/Õ1EÑFÔFÐFÝ‰fŒfˆÝÔ  ­°©¬Ñ6Ô6ˆØŒ>ð 	1ÝÔ+¨CÑ0Ô0ˆC�‰KÝÔ  ­°©¬Ñ6Ô6ˆØŒ>ð 	4Ý#Ô.¨sÑ3Ô3ˆC�
‰OÝÔ  ­°©¬Ñ6Ô6ˆØŒ>ð 	/ÝÔ)¨#Ñ.Ô.ˆC�‰JÝÔ  ­°©¬Ñ6Ô6ˆØŒ>ð 	5Ý#Ô/°Ñ4Ô4ˆC�
‰OÝÔ! %¨Ñ.Ô.ˆØŒ>ð 	8Ý!&Ô!2°3Ñ!7Ô!7ˆC�ÑÝÔ# EÑ*Ô*ˆÝ! #Ñ&Ô&ˆØˆˆH‰Øˆ
r*   c                ó,   — t          j        | g|¢R i |¤ŽS r,   ©ÚutilsÚget_text©r(   ÚargsÚkwargss      r)   rõ  zAnnot.get_text2  ó"   € ÝŒ~˜dÐ4 TÐ4Ð4Ð4¨VÐ4Ð4Ð4r*   c                ó,   — t          j        | g|¢R i |¤ŽS r,   )rô  Úget_textboxrö  s      r)   rû  zAnnot.get_textbox5  s#   € ÝÔ  Ð7¨Ð7Ð7Ð7°Ð7Ð7Ð7r*   c                ó  — t          | ¦  «         t          j        |¦  «        }|rjt          t          d¦  «        sJ dt          › d�¦   «         ‚t          |¦  «        }|                     ¦   «         |_        |xj        t          j	        z  c_        | j
        }t          j        ||¦  «        }t          |¦  «        }|                      ¦   «         }t          |t          j        ¦  «        r||_        nt          j        |¦  «        |_        |S )zMake annotation TextPage.ÚFZ_STEXT_CLIP_RECTzMuPDF-z% does not support FZ_STEXT_CLIP_RECT.)rf  r�   ÚFzStextOptionsr;   Úmupdf_versionÚJM_rect_from_pyÚinternalÚclipr¾  rý  rÄ   ÚFzStextPageÚTextPagerj  r>   ÚweakrefÚ	ProxyTyperê   Úproxy)	r(   r  r¾  ÚoptionsÚclip2rß   Ú	stextpagerG   r¢  s	            r)   Úget_textpagezAnnot.get_textpage8  sí   € å�DÑÔÐÝÔ& uÑ-Ô-ˆØð 	6Ý�5Ð"6Ñ7Ô7ÐvÐvÐ9vÅ-Ð9vÐ9vÐ9vÑvÔvÐ7Ý# DÑ)Ô)ˆEØ Ÿ>š>Ñ+Ô+ˆGŒLØˆMŒM�UÔ5Ñ5ˆMŒMØ”	ˆÝÔ% e¨WÑ5Ô5ˆ	Ý�yÑ!Ô!ˆØ�OŠOÑÔˆÝ�a�Ô*Ñ+Ô+ð 	*ØˆCŒJˆJå œ qÑ)Ô)ˆCŒJØˆ
r*   c                ó¬   — t          | ¦  «         | j        }t          j        t          j        |¦  «        t          d¦  «        ¦  «        }|j        rdndS )z Check if annotation has a Popup.r–  TF)rf  rÄ   r�   r  rÿ   r  rÌ   )r(   rß   r  s      r)   Ú	has_popupzAnnot.has_popupK  sO   € õ 	�DÑÔÐØ”	ˆÝÔ ¥Ô!4°UÑ!;Ô!;½XÀgÑ=NÔ=NÑOÔOˆØ”~Ð0ˆtˆt¨5Ð0r*   c                ó”  — t          | ¦  «         | j        }t          ¦   «         }t          t	          j        |¦  «        ¦  «        |t          <   t	          j        t	          j        |¦  «        t          d¦  «        ¦  «        }t          t	          j
        |¦  «        ¦  «        |t          <   t	          j        t	          j        |¦  «        t          d¦  «        ¦  «        }t          t	          j        |¦  «        ¦  «        |t          <   t	          j        t	          j        |¦  «        d¦  «        }t          t	          j        |¦  «        ¦  «        |t          <   t	          j        t	          j        |¦  «        t          d¦  «        ¦  «        }t          t	          j        |¦  «        ¦  «        |t           <   t	          j        t	          j        |¦  «        d¦  «        }t	          j        |¦  «        |t"          <   t	          j        t	          j        |¦  «        d¦  «        }t          t	          j        |¦  «        ¦  «        |t$          <   |S )zVarious information details.ÚNameÚTÚCreationDateÚMÚSubjÚNM)rf  rÄ   r5   r  r�   Úpdf_annot_contentsÚdictkey_contentr  rÿ   r  ry  Údictkey_namer  Údictkey_titlerþ   Údictkey_creationDateÚdictkey_modDateÚdictkey_subjectÚ
dictkey_id)r(   rß   r  r¡  s       r)   Úinfoz
Annot.infoS  s¶  € õ 	�DÑÔÐØ”	ˆÝ‰fŒfˆå0µÔ1IÈ%Ñ1PÔ1PÑQÔQˆ�OÑåÔ�uÔ2°5Ñ9Ô9½8ÀFÑ;KÔ;KÑLÔLˆÝ-­eÔ.?ÀÑ.BÔ.BÑCÔCˆ�LÑõ Ô�uÔ2°5Ñ9Ô9½8ÀC¹=¼=ÑIÔIˆÝ.­uÔ/GÈÑ/JÔ/JÑKÔKˆ�MÑõ Ô¥Ô 3°EÑ :Ô :¸NÑKÔKˆÝ$5µeÔ6NÈqÑ6QÔ6QÑ$RÔ$RˆÕ Ñ!õ Ô�uÔ2°5Ñ9Ô9½8ÀC¹=¼=ÑIÔIˆÝ0µÔ1IÈ!Ñ1LÔ1LÑMÔMˆ�OÑõ Ô¥Ô 3°EÑ :Ô :¸FÑCÔCˆÝ$Ô7¸Ñ:Ô:ˆ�OÑõ Ô¥Ô 3°EÑ :Ô :¸DÑAÔAˆÝ+­EÔ,DÀQÑ,GÔ,GÑHÔHˆ�J‰àˆ
r*   c                ó¶   — | j         }t          j        |¦  «        }t          j        |t	          d¦  «        ¦  «        }|j        sdS t          j        |¦  «        S )z%
        annotation IRT xref
        ÚIRTr   )rÄ   r�   rÿ   r  r  rÌ   r  )r(   rß   r   Úirts       r)   Úirt_xrefzAnnot.irt_xrefu  sS   € ð
 ”	ˆÝÔ'¨Ñ/Ô/ˆ	ÝÔ  )­X°e©_¬_Ñ=Ô=ˆØŒ~ð 	Ø�1ÝÔ Ñ%Ô%Ð%r*   c                óR   — t          | ¦  «         t          j        | j        ¦  «        S )z-Get 'open' status of annotation or its Popup.)rf  r�   Úpdf_annot_is_openrÄ   r.   s    r)   Úis_openzAnnot.is_open�  s%   € õ 	�DÑÔÐÝÔ& t¤yÑ1Ô1Ð1r*   c                ó²   — | j         }t          j        |¦  «        }|t          j        k    rdS t	          t          d¦  «        sJ ‚t          j        |¦  «        S )zannotation languageNÚfz_string_from_text_language2)rÄ   r�   Úpdf_annot_languageÚFZ_LANG_UNSETr;   r&  )r(   Ú
this_annotÚlangs      r)   ÚlanguagezAnnot.language‡  sV   € ð ”Yˆ
ÝÔ'¨
Ñ3Ô3ˆØ•5Ô&Ò&Ð&ØˆFÝ•uÐ=Ñ>Ô>Ð>Ð>Ð>ÝÔ2°4Ñ8Ô8Ð8r*   c                ó²   — t          | ¦  «         | j        }t          j        |¦  «        sdS t          j        |¦  «        }t          j        |¦  «        }||fS )zLine end codes.N)rf  rÄ   r�   Ú pdf_annot_has_line_ending_stylesÚpdf_annot_line_start_styleÚpdf_annot_line_end_style)r(   rß   ÚlstartÚlends       r)   Ú	line_endszAnnot.line_ends‘  s[   € õ 	�DÑÔÐØ”	ˆåÔ5°eÑ<Ô<ð 	ØˆFÝÔ1°%Ñ8Ô8ˆÝÔ-¨eÑ4Ô4ˆØ�tˆ|Ðr*   c                óÔ  — t          | ¦  «         | j        }t          |t          j        ¦  «        sJ ‚|j        sJ ‚t          j        |¦  «        }|t          j        k    rt          j        |¦  «        }nt          j	        |¦  «        }|j        rt          |¦  «        nd}|sdS d|_        |                     ¦   «         j                             ¦   «         |                      ¦   «         j                             ¦   «         k    sJ ‚||j        j        t!          |¦  «        <   |j        d         t          j        k    r+t%          ¦   «         }t&                               ||¦  «         |}|S )zNext annotation.NTr   )rf  rÄ   r>   r�   rä   rÌ   rü   ÚPDF_ANNOT_WIDGETÚpdf_next_annotÚpdf_next_widgetrâ   rñ   rj  Úm_internal_valuerê   Ú_annot_refsÚidrÈ   ÚWidgetr  Ú_fill_widget)r(   r)  r[  rß   r  Úwidgets         r)   Únextz
Annot.next�  s@  € õ 	�DÑÔÐØ”Yˆ
Ý˜*¥e¤nÑ5Ô5Ð5Ð5Ð5ØÔ$Ð$Ð$Ð$ÝÔ$ ZÑ0Ô0ˆØ•EÔ*Ò*Ð*ÝÔ(¨Ñ4Ô4ˆEˆEåÔ)¨*Ñ5Ô5ˆEà#Ô.Ð8�e�E‰lŒlˆl°DˆØð 	Ø�4ØˆŒØ�~Š~ÑÔÔ$×5Ò5Ñ7Ô7¸4¿?º?Ñ;LÔ;LÔ;Q×;bÒ;bÑ;dÔ;dÒdÐdÐdÐdØ*-ˆŒ
Ô�r #™wœwÑ'àŒ8�AŒ;�%Ô0Ò0Ð0Ý‘X”XˆFÝ×Ò˜s FÑ+Ô+Ð+ØˆCØˆ
r*   c                óè   — t          | ¦  «         | j        }d}t          j        t          j        |¦  «        t          j        ¦  «        }t          j        |¦  «        rt          j        |¦  «        }|S )zOpacity.r1  )rf  rÄ   r�   r  rÿ   ÚPDF_ENUM_NAME_CAÚpdf_is_numberrï  )r(   rß   Úopyr7  s       r)   rV  zAnnot.opacity·  sf   € õ 	�DÑÔÐØ”	ˆØˆÝÔ¥Ô!4°UÑ!;Ô!;½UÔ=SÑTÔTˆÝÔ˜rÑ"Ô"ð 	(ÝÔ# BÑ'Ô'ˆCØˆ
r*   c                óÞ  — t          | ¦  «         t          j        t          j        j        ¦  «        }| j        }t          j        |¦  «        }t          j        |t          d¦  «        ¦  «        }|j        r"t          j	        |t          d¦  «        ¦  «        }t          |¦  «        }t          |¦  «        |                      ¦   «         j        z  }||                      ¦   «         j        z  }|S )zannotation 'Popup' rectangler–  r$  )rf  r�   rh  ri  rÄ   rÿ   r  r  rÌ   r+  rg  r$  rj  rk  rl  )r(   r÷   rß   r   r  r  s         r)   Ú
popup_rectzAnnot.popup_rectÂ  sÄ   € õ 	�DÑÔÐÝŒ|�EœLÔ7Ñ8Ô8ˆØ”	ˆÝÔ'¨Ñ/Ô/ˆ	ÝÔ  )­X°gÑ->Ô->Ñ?Ô?ˆØŒ>ð 	BÝÔ*¨3µ¸Ñ0@Ô0@ÑAÔAˆDå˜dÑ#Ô#ˆõ �3‰iŒi˜$Ÿ/š/Ñ+Ô+ÔAÑAˆØˆt�ŠÑ Ô Ô2Ñ2ˆàˆ
r*   c                óØ   — t          | ¦  «         d}| j        }t          j        |¦  «        }t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        }|S )zannotation 'Popup' xrefr   r–  rÄ  )r(   r  rß   r   r  s        r)   Ú
popup_xrefzAnnot.popup_xrefÕ  sg   € õ 	�DÑÔÐØˆØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ  ­H°WÑ,=Ô,=Ñ>Ô>ˆØŒ>ð 	)ÝÔ# CÑ(Ô(ˆDØˆr*   c                óÔ   — t           rt          j        | j        ¦  «        }nt	          j        | j        ¦  «        }t          |¦  «        }|                      ¦   «         }||j        z  }|S )zannotation rectangle)	r  r   ÚAnnot_rect3rÄ   r�   Úpdf_bound_annotr$  rj  rl  )r(   r  r¢  s      r)   r÷   z
Annot.rectá  sb   € õ ð 	3ÝÔ# T¤YÑ/Ô/ˆCˆCåÔ'¨¬	Ñ2Ô2ˆCÝ�3‰iŒiˆð �OŠOÑÔˆð 	ˆqÔ"Ñ"ˆØˆ
r*   c           	     óä  — t          j        | j        ¦  «        }t          j        |t	          d¦  «        ¦  «        }t          j        |¦  «        dk    rœt          j        t          j        |d¦  «        ¦  «        t          j        t          j        |d¦  «        ¦  «        t          j        t          j        |d¦  «        ¦  «         t          j        t          j        |d¦  «        ¦  «         fS dS )z6
        annotation delta values to rectangle
        ÚRDé   r   r   r   r   N)r�   rÿ   rÄ   r  r  r›  rï  rœ  )r(   r   Úarrs      r)   Ú
rect_deltazAnnot.rect_deltaõ  sÈ   € õ
 Ô'¨¬	Ñ2Ô2ˆ	ÝÔ  )­X°d©^¬^Ñ<Ô<ˆÝÔ Ñ$Ô$¨Ò)Ð)åÔ%¥uÔ':¸CÀÑ'CÔ'CÑDÔDÝÔ%¥uÔ':¸CÀÑ'CÔ'CÑDÔDÝÔ&­Ô(;¸SÀ!Ñ(DÔ(DÑEÔEÐEÝÔ&­Ô(;¸SÀ!Ñ(DÔ(DÑEÔEÐEð	ð ð *Ð)r*   c                óÊ   — t          | ¦  «         | j        }t          j        t          j        |¦  «        t          j        ¦  «        }|j        sdS t          j        |¦  «        S )zannotation rotationr1  )rf  rÄ   r�   r  rÿ   ÚPDF_ENUM_NAME_RotaterÌ   r  )r(   rß   Úrotations      r)   rP  zAnnot.rotation  sZ   € õ 	�DÑÔÐØ”	ˆÝÔ%¥uÔ':¸5Ñ'AÔ'AÅ5ÔC]Ñ^Ô^ˆØÔ"ð 	Ø�2ÝÔ Ñ*Ô*Ð*r*   c                óª  — t          | ¦  «         |                      ¦   «         }|j        }|j        }||| z  z  }| j        }t          j        |¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }|j	        st          t          ¦  «        ‚t          |¦  «        }t          j        |t          d¦  «        |¦  «         dS )z1
        Set annotation appearance bbox.
        r  r  r%  N)rf  rj  Úrotation_matrixrk  rÄ   r�   rÿ   r  r  rÌ   rÞ   r&  r   r,  )	r(   r/  rÖ   Úrotrv  rß   r   r!  r÷   s	            r)   Úset_apn_bboxzAnnot.set_apn_bbox  sÀ   € õ 	�DÑÔÐØ�ŠÑ Ô ˆØÔ"ˆØÔ(ˆØ��s�d‘
ÑˆØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ  ­H°T©N¬N½HÀS¹M¼MÑJÔJˆØŒ}ð 	-Ý¥Ñ,Ô,Ð,Ý˜tÑ$Ô$ˆÝÔ ¥H¨VÑ$4Ô$4°dÑ;Ô;Ð;Ð;Ð;r*   c                óT  — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }|j        st          t          ¦  «        ‚t          |¦  «        }t          j
        |t          d¦  «        |¦  «         dS )z!Set annotation appearance matrix.r  r  ru  N)rf  rÄ   r�   rÿ   r  r  rÌ   rÞ   r&  rÓ  Úpdf_dict_put_matrix)r(   rÙ  rß   r   r!  rv  s         r)   Úset_apn_matrixzAnnot.set_apn_matrix  s�   € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ  ­H°T©N¬N½HÀS¹M¼MÑJÔJˆØŒ}ð 	-Ý¥Ñ,Ô,Ð,Ý Ñ'Ô'ˆÝÔ! "¥h¨xÑ&8Ô&8¸#Ñ>Ô>Ð>Ð>Ð>r*   c                ó    — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |t          d¦  «        |¦  «         dS )zSet annotation BlendMode.r8  N©rf  rÄ   r�   rÿ   rU  r  )r(   rW  rß   r   s       r)   Úset_blendmodezAnnot.set_blendmode*  sH   € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ 	­8°D©>¬>¸:ÑFÔFÐFÐFÐFr*   c                óî  — t          | ¦  «         | j        dd…         \  }}|t          j        t          j        t          j        t          j        t          j        t          j        t          j	        fvrt          d|› d�¦  «         dS |t          j        t          j        t          j        t          j	        fvr|dk    rt          d|› d�¦  «         d}t          |¦  «        t          ur||||dœ}|                     d	d¦  «         |                     d
d¦  «         |                     dd¦  «         |                     dd¦  «         |d	         €d|d	<   |d         €d|d<   t          |d         d¦  «        r?t          |d         ¦  «        |d<   |d         D ]}t          |t           ¦  «        sd|d<    nŒ| j        }	t          j        |	¦  «        }
t          j        |
¦  «        }t)          |||
¦  «        S )zbSet border properties.

        Either a dict, or direct arguments width, style, dashes or clouds.Nr   zCannot set border for 'ú'.r   zCannot set cloudy border for 'r1  )ÚwidthÚstyleÚdashesÚcloudsr]  r^  r_  r`  Ú__getitem__)rf  rÈ   r�   r=  rD  rF  r>  r?  r@  r<  rr   r5   Ú
setdefaultr;   rµ   r>   r4   rÄ   rÿ   rŽ  ÚJM_annot_set_border)r(   rˆ  r]  r^  r_  r`  r†  ÚatnamerC   rß   r   rZ  s               r)   Ú
set_borderzAnnot.set_border1  s  € õ 	�DÑÔÐØœ	 " 1 "œ‰ˆˆvØÝÔ&ÝÔ)ÝÔ#ÝÔ$ÝÔ)ÝÔ'ÝÔ&ðð ð õ Ð8¨fÐ8Ð8Ð8Ñ9Ô9Ð9Ø�4ØÝÔ&ÝÔ)ÝÔ'ÝÔ&ð	ð ð ð ˜ŠzˆzÝÐC¸ÐCÐCÐCÑDÔDÐDØ�Ý�‰<Œ<�tÐ#Ð#Ø$¨uÀÐRXÐYÐYˆFØ×Ò˜' 2Ñ&Ô&Ð&Ø×Ò˜' 4Ñ(Ô(Ð(Ø×Ò˜( DÑ)Ô)Ð)Ø×Ò˜( BÑ'Ô'Ð'Ø�'Œ?Ð"Ø ˆF�7‰OØ�(ÔÐ#Ø!ˆF�8ÑÝ�6˜(Ô# ]Ñ3Ô3ð 	Ý$ V¨HÔ%5Ñ6Ô6ˆF�8ÑØ˜xÔ(ð ð �Ý! $­Ñ,Ô,ð Ø'+�F˜8Ñ$Ø�Eðð ”	ˆÝÔ'¨Ñ/Ô/ˆ	ÝÔ*¨IÑ6Ô6ˆÝ" F¨C°Ñ;Ô;Ð;r*   c                ó|  — | j         d         t          j        k    rt          d¦  «        ‚t	          | ¦  «         |                      ¦   «         j        }t          |¦  «        t          ur||dœ}|                     d¦  «        }|                     d¦  «        }t          j	        t          j
        t          j        t          j        t          j        t          j        f}|g dfv r|                     | j        dd¦  «         ns|�qt#          |d
¦  «        rt%          |¦  «        g}t'          |¦  «         t)          |¦  «        dv sJ ‚dt+          |¦  «        › d�}|                     | j        d|¦  «         |r/| j         d         |vr t-          d| j         d         › d�¦  «         d	S |g dfv r|                     | j        dd¦  «         d	S |�st#          |d
¦  «        rt%          |¦  «        g}t'          |¦  «         t)          |¦  «        dv sJ ‚dt+          |¦  «        › d�}|                     | j        d|¦  «         d	S d	S )z\Set 'stroke' and 'fill' colors.

        Use either a dict or the direct arguments.
        r   z'cannot be used for FreeText annotations©rû   Ústrokerû   rh  r-   ræ  ú[]NÚ	__float__©r   r   rK  ú[ú]z,Warning: fill color ignored for annot type 'r   r\  r3  )rÈ   r�   rD  rÃ   rf  rj  rê   r5   r8   r=  r<  r>  r?  r@  rý   Úxref_set_keyr  r;   ÚfloatÚ
CheckColorr7   r¶   rr   )r(   r  rh  rû   r*  Úfill_annotsÚss          r)   Ú
set_colorszAnnot.set_colors`  sR  € ð
 Œ9�QŒ<�5Ô4Ò4Ð4ÝÐFÑGÔGÐGå�DÑÔÐØ�oŠoÑÔÔ&ˆÝ�‰<Œ<�tÐ#Ð#Ø"¨fÐ5Ð5ˆFØ�zŠz˜&Ñ!Ô!ˆØ—’˜HÑ%Ô%ˆåÔ-­uÔ/EÅuÔG[Õ]bÔ]vÕx}ô  yPÝÔ-ð0ˆð �b˜"�XÐÐØ×Ò˜TœY¨¨TÑ2Ô2Ð2Ð2ØÐÝ�v˜{Ñ+Ô+ð )Ý ™-œ-˜�Ý�vÑÔÐÝ�v‘;”; )Ð+Ð+Ð+Ð+Ø(•I˜fÑ%Ô%Ð(Ð(Ð(ˆAØ×Ò˜TœY¨¨QÑ/Ô/Ð/àð 	�D”I˜a”L¨Ð3Ð3ÝÐSÀ4Ä9ÈQÄ<ÐSÐSÐSÑTÔTÐTØˆFØ�B˜�8ÐÐØ×Ò˜TœY¨¨dÑ3Ô3Ð3Ð3Ð3ØÐÝ�t˜[Ñ)Ô)ð %Ý˜d™œ�}�Ý�tÑÔÐÝ�t‘9”9 	Ð)Ð)Ð)Ð)Ø&•I˜d‘O”OÐ&Ð&Ð&ˆAØ×Ò˜TœY¨¨aÑ0Ô0Ð0Ð0Ð0ð Ðr*   c                ó\   — t          | ¦  «         | j        }t          j        ||¦  «         dS )zSet annotation flags.N)rf  rÄ   r�   Úpdf_set_annot_flags)r(   r¾  rß   s      r)   Ú	set_flagszAnnot.set_flags‰  s0   € å�DÑÔÐØ”	ˆÝÔ! %¨Ñ/Ô/Ð/Ð/Ð/r*   c                ó"  — t          | ¦  «         t          |¦  «        t          u rp|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }d}| j        }t          j        |¦  «        }|rt          j        ||¦  «         |rÃ|rt          j        ||¦  «         |r5t          j	        t          j
        |¦  «        t          d¦  «        |¦  «         |r5t          j	        t          j
        |¦  «        t          d¦  «        |¦  «         |r>t          j        t          j
        |¦  «        d	t          j        |¦  «        ¦  «         dS dS dS )
zSet various properties.ÚcontentNÚtitleÚcreationDateÚmodDateÚsubjectr  r  r  )rf  rÈ   r5   r8   rÄ   r�   Úpdf_annot_has_authorÚpdf_set_annot_contentsÚpdf_set_annot_authorÚpdf_dict_put_text_stringrÿ   r  Úpdf_dict_putsÚpdf_new_text_string)	r(   r  rx  ry  rz  r{  r|  rß   Ú	is_markups	            r)   Úset_infozAnnot.set_info�  s’  € å�DÑÔÐÝ�‰:Œ:�ÐÐØ—h’h˜y¨$Ñ/Ô/ˆGØ—H’H˜W dÑ+Ô+ˆEØŸ8š8 N°DÑ9Ô9ˆLØ—h’h˜y¨$Ñ/Ô/ˆGØ—h’h˜y¨$Ñ/Ô/ˆGØˆDØ”	ˆåÔ.¨uÑ5Ô5ˆ	àð 	9ÝÔ(¨°Ñ8Ô8Ð8Øð 	làð 9ÝÔ*¨5°%Ñ8Ô8Ð8àð sÝÔ.­uÔ/BÀ5Ñ/IÔ/IÍ8ÐTbÑKcÔKcÐeqÑrÔrÐràð cÝÔ.­uÔ/BÀ5Ñ/IÔ/IÍ8ÐTWÉ=Ì=ÐZaÑbÔbÐbàð lÝÔ#¥EÔ$7¸Ñ$>Ô$>ÀÍÔHaÐbiÑHjÔHjÑkÔkÐkÐkÐkð	lð 	lðlð lr*   c                ó<  — | j         }t          j        |¦  «        }t          |¦  «        }|dk     s*|t          j        |                     ¦   «         ¦  «        k    rt          t          ¦  «        ‚t          j        |                     ¦   «         |d¦  «        }t          j	        |t          d¦  «        ¦  «        }t          j        t          j        |¦  «        ¦  «        }|dk     rt          t          ¦  «        ‚t          j        |t          d¦  «        |¦  «         dS )z)
        Set annotation IRT xref
        r   r   ÚSubtyper  N)rÄ   r�   rÿ   rà   Úpdf_xref_lenr*  rÃ   ÚMSG_BAD_XREFÚpdf_new_indirectr  r  Úpdf_annot_type_from_stringry  ÚMSG_IS_NO_ANNOTrN  )r(   r  rß   r   rÖ   r   ÚsubtÚirt_subts           r)   Úset_irt_xrefzAnnot.set_irt_xref­  så   € ð ”	ˆÝÔ'¨Ñ/Ô/ˆ	Ý˜uÑ%Ô%ˆØ�!Š8ˆ8�t�uÔ1°4·8²8±:´:Ñ>Ô>Ò>Ð>Ý�lÑ+Ô+Ð+ÝÔ$ d§h¢h¡j¤j°$¸Ñ:Ô:ˆÝÔ! 3­°Ñ(;Ô(;Ñ<Ô<ˆÝÔ3µUÔ5FÈÑ5MÔ5MÑNÔNˆØ�aŠ<ˆ<Ý�oÑ.Ô.Ð.ÝÔ˜I¥x°¡¤¸Ñ<Ô<Ð<Ð<Ð<r*   c                ó¢   — t          | ¦  «         | j        }|st          j        }nt          j        |¦  «        }t          j        ||¦  «         dS )zSet annotation language.N)rf  rÄ   r�   r(  Úfz_text_language_from_stringÚpdf_set_annot_language)r(   r+  r)  r*  s       r)   Úset_languagezAnnot.set_language½  sS   € å�DÑÔÐØ”Yˆ
Øð 	@ÝÔ&ˆDˆDåÔ5°hÑ?Ô?ˆDÝÔ$ Z°Ñ6Ô6Ð6Ð6Ð6r*   c                ó¨   — t          | ¦  «         | j        }t          j        |¦  «        rt          j        |||¦  «         dS t          d¦  «         dS )zSet line end codes.zbad annot type for line endsN)rf  rÄ   r�   r-  Ú pdf_set_annot_line_ending_stylesr   )r(   ÚstartÚendrß   s       r)   Úset_line_endszAnnot.set_line_endsÇ  sZ   € å�DÑÔÐØ”	ˆÝÔ1°%Ñ8Ô8ð 	<ÝÔ2°5¸%ÀÑEÔEÐEÐEÐEåÐ:Ñ;Ô;Ð;Ð;Ð;r*   c                ó    — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |t          d¦  «        |¦  «         dS )zSet /Name (icon) of annotation.r  NrY  )r(   r   rß   r   s       r)   Úset_namezAnnot.set_nameÐ  sJ   € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ 	­8°FÑ+;Ô+;¸TÑBÔBÐBÐBÐBr*   c                óì   — t          | ¦  «         | j        }t          j        |¦  «        }|s$t          j        |t          d¦  «        ¦  «         dS t          t          j        |¦  «        ||¦  «         dS )z Set / remove annotation OC xref.rÃ  N)rf  rÄ   r�   rÿ   rA  r  ÚJM_add_oc_objectrŽ  )r(   rÅ  rß   r   s       r)   Úset_oczAnnot.set_oc×  ss   € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	Øð 	UÝÔ˜y­(°4©.¬.Ñ9Ô9Ð9Ð9Ð9å�UÔ9¸)ÑDÔDÀiÐQSÑTÔTÐTÐTÐTr*   c                óè   — t          | ¦  «         | j        }t          |dd¦  «        st          j        |d¦  «         dS t          j        ||¦  «         |dk     rt          |¦  «        }d|_        dS dS )zSet opacity.ç        ç      ð?r   N)rf  rÄ   Ú_INRANGEr�   Úpdf_set_annot_opacityrà   Útransparency)r(   rV  rß   rÖ   s       r)   Úset_opacityzAnnot.set_opacityá  s�   € å�DÑÔÐØ”	ˆÝ˜  cÑ*Ô*ð 	ÝÔ'¨¨qÑ1Ô1Ð1ØˆFÝÔ# E¨7Ñ3Ô3Ð3Ø�SŠ=ˆ=Ý" 5Ñ)Ô)ˆDØ !ˆDÔÐÐð ˆ=r*   c                ó\   — t          | ¦  «         | j        }t          j        ||¦  «         dS )z-Set 'open' status of annotation or its Popup.N)rf  rÄ   r�   Úpdf_set_annot_is_open)r(   r$  rß   s      r)   Úset_openzAnnot.set_opení  s0   € å�DÑÔÐØ”	ˆÝÔ# E¨7Ñ3Ô3Ð3Ð3Ð3r*   c                óÜ   — t          | ¦  «         | j        }t          |¦  «        }t          |¦  «        }t	          j        t          |¦  «        |¦  «        }t	          j        ||¦  «         dS )z@
        Create annotation 'Popup' or update rectangle.
        N)rf  rÄ   rà   ÚJM_rotate_page_matrixr�   Úfz_transform_rectr   Úpdf_set_annot_popup)r(   r÷   rß   ÚpdfpagerS  r  s         r)   Ú	set_popupzAnnot.set_popupó  sf   € õ 	�DÑÔÐØ”	ˆÝ! %Ñ(Ô(ˆÝ# GÑ,Ô,ˆÝÔ#¥O°DÑ$9Ô$9¸3Ñ?Ô?ˆÝÔ! %¨Ñ+Ô+Ð+Ð+Ð+r*   c                óª  — t          | ¦  «         | j        }t          |¦  «        }t          |¦  «        }t	          j        t          |¦  «        |¦  «        }t	          j        |¦  «        st	          j        |¦  «        rt          t          ¦  «        ‚	 t	          j        ||¦  «         dS # t          $ r}t          d|› �¦  «         Y d}~dS d}~ww xY w)zSet annotation rectangle.zcannot set rect: NF)rf  rÄ   rà   r¨  r�   r©  r   Úfz_is_empty_rectÚfz_is_infinite_rectrÃ   ÚMSG_BAD_RECTÚpdf_set_annot_rectrg   rr   )r(   r÷   rß   r«  rS  r  r`  s          r)   Úset_rectzAnnot.set_rectþ  sß   € å�DÑÔÐØ”	ˆå! %Ñ(Ô(ˆÝ# GÑ,Ô,ˆÝÔ#¥O°DÑ$9Ô$9¸3Ñ?Ô?ˆÝÔ! !Ñ$Ô$ð 	,­Ô(AÀ!Ñ(DÔ(Dð 	,Ý�lÑ+Ô+Ð+ð	ÝÔ$ U¨AÑ.Ô.Ð.Ð.Ð.øÝð 	ð 	ð 	ÝÐ+¨Ð+Ð+Ñ,Ô,Ð,Ø�5�5�5�5�5øøøøð	øøøs   ÂB+ Â+
CÂ5CÃCc                óD  — t          | ¦  «         | j        }t          j        |¦  «        }|t          j        t          j        t          j        t          j        t          j        t          j	        t          j
        t          j        t          j        t          j        t          j        fvrdS |}|dk     r|dz  }|dk     °|dk    r|dz  }|dk    °|t          j        k    r|dz  dk    rd}t          j        |¦  «        }t          j        |t#          d¦  «        |¦  «         dS )zSet annotation rotation.Nr   éh  éZ   r4  )rf  rÄ   r�   rü   rC  r=  rD  rE  rF  r>  r?  r@  r<  rG  rH  rÿ   rI  r  )r(   rY  rß   rÈ   rS  r   s         r)   Úset_rotationzAnnot.set_rotation  s  € å�DÑÔÐà”	ˆÝÔ# EÑ*Ô*ˆØÝÔ%ÝÔ&ÝÔ)ÝÔ/ÝÔ#ÝÔ$ÝÔ)ÝÔ'ÝÔ&ÝÔ%ÝÔ$ðð ð ð ˆFØˆØ�AŠgˆgØ�3‰JˆCð �AŠgˆgà�SŠjˆjØ�3‰JˆCð �SŠjˆjà•5Ô,Ò,Ð,°°r±¸Q²°ØˆCÝÔ'¨Ñ.Ô.ˆ	ÝÔ˜y­(°8Ñ*<Ô*<¸cÑBÔBÐBÐBÐBr*   c                ó^  — t          | ¦  «         | j        j        sdS t          j        | j        ¦  «        }t          j        |¦  «        }t          j        t          j        | j        ¦  «        d¦  «        }|j        rt          j        |¦  «        r||fS t          j	        |¦  «        }|||fS )zannotation typeÚnullÚIT)
rf  rÄ   rÌ   r�   rü   Úpdf_string_from_annot_typerþ   rÿ   Úpdf_is_namery  )r(   r[  Úcr¡  Úits        r)   rÈ   z
Annot.type,  s§   € õ 	�DÑÔÐØŒyÔ#ð 	Ø�6ÝÔ$ T¤YÑ/Ô/ˆÝÔ,¨UÑ3Ô3ˆÝÔ¥Ô!4°T´YÑ!?Ô!?ÀÑFÔFˆØŒ|ð 	�uÔ0°Ñ3Ô3ð 	Ø˜1�:ÐÝÔ˜qÑ!Ô!ˆØ�q˜"ˆ~Ðr*   TrW  ÚOptStrrV  ÚOptFloatrú   ro  rù   rø   ÚOptSeqÚborder_colorrX  Ú	cross_outrç   rY  r4   c
                óŽ  — t          j        | j        ¦  «        }
|r3t          j        |
t	          d¦  «        ¦  «        }|st          d¦  «        ‚t                               ¦   «          t          | ¦  «         d„ }| j	        d         }| j
                             dd¦  «        }| j
                             dd¦  «        }| j        d	         }|�|}n| j        d
         }d}| j        }|	dk    r=|	dk     r|	dz  }	|	dk     °|	dk    r|	dz  }	|	dk    °|t           j        k    r|	dz  dk    rd}	|€| j        }t!          |d¦  «        s| j        }d|cxk    rdk     sn |rd}nd}|t           j        k    rvt%          |¦  «         t%          |¦  «         t&                               | ¦  «        \  }}}|dk    rd}|r|}|r|}|dk    r|}t+          | t-          |¦  «        |||¦  «         d}|                      ||||	¬¦  «        }|du rt1          d¦  «        ‚|t           j        k    rS|                      ¦   «         }d|cxk    rdk     r0n n-|                     d¦  «        s|                      d|z   ¦  «         dS  ||d¦  «        } ||d¦  «        }|                      ¦   «         j        }| }|rDdd                     t?          t@          |¦  «        ¦  «        z   dz   }| !                    d¦  «        }nd}| j"        r| j"        \  }} nd\  }} |                      ¦   «         }| #                    ¦   «         }!d}"|t           j$        k    �r;|r’d}"|!dd…         }!|!\  }#}$}%}&}'|! %                    |%¦  «         |! %                    |$¦  «         |! %                    |&¦  «         |! %                    |$¦  «         |! %                    |'¦  «         |! %                    d¦  «         |dk    s|d k    r†d}"|dk    r%tM          |¦  «         !                    ¦   «         d!z   gng }(|!D ]R})|) '                    d"¦  «        rŒ|) '                    d#¦  «        r|d k    r
|dd…         })|( %                    |)¦  «         ŒS|(}!d$                     |!¦  «        }|t           j(        t           j)        fv r‚d$                     |!dd…         ¦  «        d$z   }d}"|d k    r/|t           j(        k    r	||z   d%z   }nA|t           j)        k    r|dz   }n+|t           j(        k    r|d&z   }n|t           j)        k    r|dz   }|�||z   }| *                    d'd(d¦  «        }d}"|r| !                    d¦  «        |z   }d}"d)|z   d*z   }|| z   dk    �r•|t           j(        t           j)        fv �rzdt&          j+        t&          j,        t&          j-        t&          j.        t&          j/        t&          j0        t&          j1        t&          j2        t&          j3        f
}*ti          dt-          |*¦  «        ¦  «        }+d+tk          d| j
        d         ¦  «        z  },| j6        |, |, |,|,fz   }d}"| j7        }-||+v r\tq          |-d         ¦  «        |z  }.tq          |-d         ¦  «        |z  }/ |*|         | |.|/d|¦  «        }0||0 !                    ¦   «         z  }| |+v r\tq          |-d,         ¦  «        |z  }.tq          |-d         ¦  «        |z  }/ |*|          | |.|/d|¦  «        }0||0 !                    ¦   «         z  }|"rF|r-|  9                    |¦  «         |                      |d¬-¦  «         n|                      |d¬-¦  «         |t           j:        t           j;        t           j<        t           j=        t           j>        t           j)        t           j(        t           j?        t           j@        t           jA        f
vrdS | jB        }1|1dk    rdS | j6        jC        | j6        jD        z   d+z  }2|1dk    r�t‹          |t�          dd¦  «        z
  ¦  «        d.k     rdS | j6         G                    |2| ¦  «        }3|  9                    |3j6        ¦  «         |  H                    t�          dd¦  «        ¦  «         dS t�          |1¦  «        }4| j6         G                    |2|4¦  «        }3|  9                    |3j6        ¦  «         |  H                    ||4z  ¦  «         dS )/a"  Update annot appearance.

        Notes:
            Depending on the annot type, some parameters make no sense,
            while others are only available in this method to achieve the
            desired result. This is especially true for 'FreeText' annots.
        Args:
            blend_mode: set the blend mode, all annotations.
            opacity: set the opacity, all annotations.
            fontsize: set fontsize, 'FreeText' only.
            fontname: set the font, 'FreeText' only.
            border_color: set border color, 'FreeText' only.
            text_color: set text color, 'FreeText' only.
            fill_color: set fill color, all annotations.
            cross_out: draw diagonal lines, 'Redact' only.
            rotate: set rotation, 'FreeText' and some others.
        ÚRCú-cannot set border_color if rich_text is Falsec                óX   — t          | |¦  «        }|sdS |dz                        ¦   «         S )zHReturn valid PDF color operator for a given color sequence.
            r*   r%   )Ú	ColorCodeÚencode)rß  ÚcodeÚccs      r)   Úcolor_stringz"Annot.update.<locals>.color_string^  s6   € õ ˜2˜tÑ$Ô$ˆBØð Ø�sØ˜‘I×%Ò%Ñ'Ô'Ð'r*   r   r_  Nr]  r1  rh  rû   r´  rµ  rj  r   ú/H gs
r\   é   )rV  rW  rX  rY  FzError updating annotation.s   /H gss   /H gs
Úfr¼  rl  r³   z] 0 d
úutf-8©r   r   Tó   Sr*   s    wó   ws   RGó   
ó   bó   ss   
S
s
   
S
[] 0 d
ó   q
s   
Q
r   éþÿÿÿ©r÷   çñhãˆµøä>)Ir�   rÿ   rÄ   r  r  rÃ   râ   Úupdate_timing_testrf  rÈ   rˆ  r8   r  rw  rD  rƒ  r;   rV  rp  r  r  ÚJM_make_annot_DAr7   rd  rÞ   r"  r3   r0  rj  rk  ÚjoinÚmaprÑ  rÈ  r2  Ú
splitlinesrý   rk   r¶   Úendswithr@  r?  ÚreplaceÚ
_le_squareÚ
_le_circleÚ_le_diamondÚ_le_openarrowÚ_le_closedarrowÚ_le_buttÚ_le_ropenarrowÚ_le_rclosedarrowÚ	_le_slashrL  Úmaxr÷   ÚverticesÚPointr²  rC  r=  rE  rF  r>  r<  rG  rH  rP  ÚtlÚbrÚabsru  ÚmorphrW  )5r(   rW  rV  rú   rù   rø   rÁ  rX  rÂ  rY  r   Úis_rich_textrË  Ú
annot_typeÚdtÚbwidthrh  rû   r÷   ÚapnmatÚopa_codeÚtcolÚfnameÚfsizer  r!  ÚbfillÚbstrokeÚp_ctmÚimatr_  Úline_end_leÚline_end_riÚap_tabÚ
ap_updatedÚ_ÚLLÚLRÚURÚULÚntabro   Úle_funcsÚle_funcs_rangeÚdÚpointsÚp1Úp2ÚleftrS  r  Úquadrv  s5                                                        r)   ÚupdatezAnnot.update:  s/	  € õ8 Ô'¨¬	Ñ2Ô2ˆ	àð 	RÝ Ô-¨i½À$¹¼ÑHÔHˆLØð RÝ Ð!PÑQÔQÐQÝ× Ò Ñ"Ô"Ð"Ý�DÑÔÐð	(ð 	(ð 	(ð ”Y˜q”\ˆ
àŒ[�_Š_˜X tÑ,Ô,ˆØ”—’ ¨"Ñ-Ô-ˆØ”˜XÔ&ˆØÐ!ØˆDˆDà”;˜vÔ&ˆDØˆØ”ˆØ�RŠ<ˆ<Ø˜1’*�*Ø˜#‘�ð ˜1’*�*à˜C’-�-Ø˜#‘�ð ˜C’-�-à�UÔ6Ò6Ð6¸6ÀB¹;È!Ò;KÐ;KØ�ð
 ÐØœˆJÝ�w Ñ,Ô,ð 	#Ø”lˆGà�ÐÐÒÐ˜!ÒÐÐÐ˜zÐØ ˆHˆHàˆHà�Ô2Ò2Ð2Ý�zÑ"Ô"Ð"Ý�zÑ"Ô"Ð"Ý!&§¢°Ñ!6Ô!6ÑˆD�%˜ð ˜ŠzˆzØ�Øð "Ø!�Øð !Ø �Ø˜!Š|ˆ|Ø �Ý˜T¥3 t¡9¤9¨d°E¸5ÑAÔAÐAØˆJð
 ×%Ò%ØØ!ØØð	 &ñ 
ô 
ˆð �%ˆ<ˆ<ÝÐ;Ñ<Ô<Ð<à�Ô2Ò2Ð2à—’‘”ˆBØ�GÐÐÒÐ˜aÒÐÐÐÐ¨¯ª°hÑ(?Ô(?ÐØ—’˜J¨™OÑ,Ô,Ð,ØˆFà�˜T 3Ñ'Ô'ˆØ�,˜v sÑ+Ô+ˆà—’Ñ!Ô!Ô7ˆØˆvˆàð 	Ø˜3Ÿ8š8¥C­¨R¡L¤LÑ1Ô1Ñ1°IÑ=ˆFØ—]’] 7Ñ+Ô+ˆFˆFàˆFàŒ>ð 	,Ø'+¤~Ñ$ˆK˜˜à'+Ñ$ˆK˜ð �[Š[‰]Œ]ˆØ—’‘”ˆØˆ
à�Ô/Ò/Ñ/Øð 	$Ø!�
Ø   œ�Ø$*Ñ!��2�r˜2˜rØ—’˜bÑ!Ô!Ð!Ø—’˜bÑ!Ô!Ð!Ø—’˜bÑ!Ô!Ð!Ø—’˜bÑ!Ô!Ð!Ø—’˜bÑ!Ô!Ð!Ø—’˜dÑ#Ô#Ð#à˜Šzˆz˜W¨š^˜^Ø!�
Ø?EÈºz¸z�	 &Ñ)Ô)×0Ò0Ñ2Ô2°UÑ:Ð;Ð;Èr�Ø"ð &ð &�DØ—}’} TÑ*Ô*ð !Ø Ø—}’} UÑ+Ô+ð ,°¸3²°Ø& s¨ sœ|˜Ø—K’K Ñ%Ô%Ð%Ð%Ø�à—’˜FÑ#Ô#ˆBà�%Ô1µ5Ô3LÐMÐMÐMØ—’˜F 3 B 3œKÑ(Ô(¨5Ñ0ˆBØˆJØ˜Š|ˆ|Ø¥Ô!8Ò8Ð8Ø˜e™ dÑ*�B�BØ¥5Ô#<Ò<Ð<Ø˜d™�Bøà¥Ô!8Ò8Ð8Ø˜d™�B�BØ¥5Ô#<Ò<Ð<Ø˜d™�BàÐØ˜"‘ˆBà—’˜HÐ&6¸Ñ:Ô:ˆBØˆJàð 	Ø—’ Ñ)Ô)¨BÑ.ˆBØˆJà�b‰[˜8Ñ#ˆð ˜Ñ$ qÒ(Ñ(¨Z½EÔ<SÕUZÔUnÐ;oÐ-oÑ-oà�eÔ.µÔ0@ÝÔ)­5Ô+>ÝÔ-­u¬~ÝÔ,­eÔ.DÝœð	)ˆHõ
 # 1¥c¨(¡m¤mÑ4Ô4ˆNØ•C˜˜4œ; wÔ/Ñ0Ô0Ñ0ˆAØ”9   Q B¨¨1˜~Ñ-ˆDØˆJØ”]ˆFØ˜nÐ,Ð,Ý˜6 !œ9Ñ%Ô%¨Ñ,�Ý˜6 !œ9Ñ%Ô%¨Ñ,�Ø,�x Ô,¨T°2°r¸5À*ÑMÔM�Ø�d—k’k‘m”mÑ#�Ø˜nÐ,Ð,Ý˜6 "œ:Ñ&Ô&¨Ñ-�Ý˜6 "œ:Ñ&Ô&¨Ñ-�Ø,�x Ô,¨T°2°r¸4ÀÑLÔL�Ø�d—k’k‘m”mÑ#�àð 	(Øð (Ø—’˜dÑ#Ô#Ð#Ø—’˜B Q�Ñ'Ô'Ð'Ð'à—’˜B Q�Ñ'Ô'Ð'ð
 ÝÔ%ÝÔ&ÝÔ/ÝÔ#ÝÔ$ÝÔ)ÝÔ'ÝÔ&ÝÔ%ÝÔ$ðð ð ð ˆFàŒmˆØ�"Š9ˆ9ØˆFàŒYŒ\˜DœIœLÑ(¨AÑ-ˆà�!Š8ˆ8Ý�6�F 1 a™LœLÑ(Ñ)Ô)¨DÒ0Ð0Ø�Ø”9—?’? 1 v gÑ.Ô.ˆDØ�MŠM˜$œ)Ñ$Ô$Ð$Ø×Ò¥ q¨!¡¤Ñ-Ô-Ð-ØˆFå�S‰kŒkˆØŒy�Š˜q #Ñ&Ô&ˆØ�Š�d”iÑ Ô Ð Ø×Ò˜F S™LÑ)Ô)Ð)Ð)Ð)r*   c                óî  — t          | ¦  «         | j        }t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }|t          j        k    rt          t          ¦  «        ‚t          j	        |t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }	|	j        st          dt          ¦  «         t          j        |t          d¦  «        ¦  «        }
t          |¦  «        }|r|j        st!          t"          ¦  «        ‚|r‘t%          ||	|d¦  «         t          j        |¦  «        \  }}t          j        |¦  «        }t          j        |	t          d¦  «        |¦  «         t          j        |	|t          d¦  «        t          d¦  «        ¦  «         |r¯t          j        |	t          d¦  «        |¦  «         t          j        |
t          d¦  «        |¦  «         t          j        |	t          d	¦  «        |¦  «         t          j        |
t          d	¦  «        |¦  «         t          j        |t          d
¦  «        |¦  «         |rFt          j        |	t          d	¦  «        |¦  «         t          j        |
t          d	¦  «        |¦  «         |rHt          j        |	t          d¦  «        |¦  «         t          j        |
t          d¦  «        |¦  «         dS dS )zUpdate attached file.r¥  r¦  r§  úbad PDF: no /EF objectr   ÚDLr¬  r­  r©  ÚContentsrª  N)rf  rÄ   r�   rÿ   rŽ  rü   rE  r®  r¯  r  r  rÌ   r°  r±  r  r'  rÃ   r(  r)  Úfz_buffer_storageÚpdf_new_intrN  Úpdf_dict_putlr€  )r(   r-  rf   Ú	ufilenamer¹  rß   r   rZ  rÈ   r	   rº  r  r7   r  Úls                  r)   Úupdate_filezAnnot.update_file7  s�  € å�DÑÔÐØ”	ˆÝÔ'¨Ñ.Ô.ˆ	ÝÔ*¨9Ñ5Ô5ˆÝÔ# EÑ*Ô*ˆØ•5Ô2Ò2Ð2ÝÕ/Ñ0Ô0Ð0ÝÔ$ Yµ¸±´ÅÈÁÄÕPXÐY\ÑP]ÔP]Ñ^Ô^ˆàÔ ð 	EÝÐ-Õ/CÑDÔDÐDåÔ 	­8°D©>¬>Ñ:Ô:ˆõ ! Ñ)Ô)ˆØð 	.˜3œ>ð 	.Ý�nÑ-Ô-Ð-Øð 	QÝ˜S &¨#¨qÑ1Ô1Ð1åÔ,¨SÑ1Ô1‰FˆC�ÝÔ! #Ñ&Ô&ˆAÝÔ˜v¥x°¡~¤~°qÑ9Ô9Ð9ÝÔ ¨­8°HÑ+=Ô+=½xÈÑ?OÔ?OÑPÔPÐPàð 	VÝÔ*¨6µ8¸C±=´=À(ÑKÔKÐKÝÔ*¨2­x¸©}¬}¸hÑGÔGÐGÝÔ*¨6µ8¸D±>´>À8ÑLÔLÐLÝÔ*¨2­x¸©~¬~¸xÑHÔHÐHÝÔ*¨9µh¸zÑ6JÔ6JÈHÑUÔUÐUàð 	JÝÔ*¨6µ8¸D±>´>À9ÑMÔMÐMÝÔ*¨2­x¸©~¬~¸yÑIÔIÐIàð 	GÝÔ*¨6µ8¸FÑ3CÔ3CÀTÑJÔJÐJÝÔ*¨2­x¸Ñ/?Ô/?ÀÑFÔFÐFÐFÐFð	Gð 	Gr*   c                 ó8   — d} t          d¦  «        D ]}| |z  } Œ| S )Nr   i0u  )rL  )Útotalr®   s     r)   rÚ  zAnnot.update_timing_testb  s,   € àˆÝ˜‘”ð 	ð 	ˆAØ�Q‰JˆEˆEØˆr*   c           	     ó�  — t          | ¦  «         | j        }t          |t          j        ¦  «        sJ ‚t          j        |¦  «        }t          |¦  «        }t          j        ¦   «         }t          j        ¦   «         }t          j	        |||¦  «         t          |¦  «        }t          j        ||¦  «        }t          j        |t          d¦  «        ¦  «        }|j        s"t          j        |t          d¦  «        ¦  «        }|j        s"t          j        |t          d¦  «        ¦  «        }|j        st          j        |d¦  «        }|j        rÆg }t!          dt          j        |¦  «        d¦  «        D ]ž}	t          j        t          j        ||	¦  «        ¦  «        }
t          j        t          j        ||	dz   ¦  «        ¦  «        }t          j        |
|¦  «        }t          j        ||¦  «        }|                     |j        |j        f¦  «         ŒŸ|S t          j        |d¦  «        }|j        �rg }t!          t          j        |¦  «        ¦  «        D ]ð}	g }t          j        ||	¦  «        }t!          dt          j        |¦  «        d¦  «        D ]ž}t          j        t          j        ||¦  «        ¦  «        }
t          j        t          j        ||dz   ¦  «        ¦  «        }t          j        |
|¦  «        }t          j        ||¦  «        }|                     |j        |j        f¦  «         ŒŸ|                     |¦  «         Œñ|S d	S )
zannotation vertex pointsÚVerticesÚLÚ
QuadPointsÚCLr   r   r   ÚInkListN)rf  rÄ   r>   r�   rä   rÿ   rà   rr  rh  Úpdf_page_transformÚJM_derotate_page_matrixÚ	fz_concatr  r  rÌ   rþ   rL  r›  rï  rœ  ÚFzPointÚfz_transform_pointrk   ÚxÚy)r(   rß   r   rÖ   Úpage_ctmÚdummyÚderotr¡  r  r®   r(  r)  ÚpointÚres1Úo1r�  s                   r)   rë  zAnnot.verticesi  sî  € õ 	�DÑÔÐØ”	ˆÝ˜%¥¤Ñ0Ô0Ð0Ð0Ð0ÝÔ'¨Ñ.Ô.ˆ	Ý˜uÑ%Ô%ˆÝ”>Ñ#Ô#ˆÝ”‘”ˆÝÔ   u¨hÑ7Ô7Ð7Ý'¨Ñ-Ô-ˆÝ”? 8¨UÑ3Ô3ˆõ Ô˜y­(°:Ñ*>Ô*>Ñ?Ô?ˆØŒ|ÐP¥EÔ$6°yÅ(È3Á-Ä-Ñ$PÔ$P ØŒ|ÐY¥EÔ$6°yÅ(È<ÑBXÔBXÑ$YÔ$Y ØŒ|ÐH¥EÔ$7¸	À4Ñ$HÔ$H àŒ<ð 
	ð ˆCÝ˜1�eÔ1°!Ñ4Ô4°aÑ8Ô8ð 0ð 0�ÝÔ%¥eÔ&9¸!¸QÑ&?Ô&?Ñ@Ô@�ÝÔ%¥eÔ&9¸!¸Q¸q¹SÑ&AÔ&AÑBÔB�Ýœ a¨Ñ+Ô+�ÝÔ0°¸ÑAÔA�Ø—
’
˜UœW e¤gÐ.Ñ/Ô/Ð/Ð/ØˆJåÔ 	¨9Ñ5Ô5ˆØŒ<ñ 	ð ˆCÝ�5Ô.¨qÑ1Ô1Ñ2Ô2ð 	!ð 	!�Ø�ÝÔ(¨¨AÑ.Ô.�Ý˜q¥%Ô"5°bÑ"9Ô"9¸1Ñ=Ô=ð 5ð 5�AÝÔ)­%Ô*=¸bÀ!Ñ*DÔ*DÑEÔE�AÝÔ)­%Ô*=¸bÀ!ÀAÁ#Ñ*FÔ*FÑGÔG�AÝ!œM¨!¨QÑ/Ô/�EÝ!Ô4°U¸HÑEÔE�EØ—K’K %¤'¨5¬7Ð!3Ñ4Ô4Ð4Ð4Ø—
’
˜4Ñ Ô Ð Ð ØˆJð	ð 	r*   c                óz   — t          | ¦  «         | j        }t          j        t          j        |¦  «        ¦  «        S )zannotation xref number)rf  rÄ   r�   r  rÿ   rå   s     r)   r  z
Annot.xrefŸ  s5   € õ 	�DÑÔÐØ”	ˆÝÔ¥Ô 3°EÑ :Ô :Ñ;Ô;Ð;r*   ©r   )r1  NNr1  ©r   )NNNr   r‡   )Nr1  NNr1  ©NNN©NNNNNNr,   )	NNr   NNNNTr1  )rW  r¾  rV  r¿  rú   ro  rù   r¾  rø   rÀ  rÁ  rÀ  rX  rÀ  rÂ  rç   rY  r4   ©NNNN)Cr/   r0   r1   rŒ   rè   rí   rï   rò   r  r"  r0  rd  Úpropertyrm  rw  rƒ  rˆ  r’  r  r£  r»  r¾  rÁ  rÆ  rj  rá  rñ  rõ  rû  r  r  r  r!  r$  r+  r2  r=  rV  rC  rE  r÷   rM  rP  rT  rW  rZ  re  rs  rv  r„  rŽ  r’  r—  r™  rœ  r£  r¦  r¬  r²  r¶  rÈ   r  r  ÚstaticmethodrÚ  rë  r  r-   r*   r)   râ   râ   J  se  € € € € € ðð ð ðð ð ð:ð :ð :ðð ð ð!ð !ð !ð%ð %ð %ðNð ð ð&9ð 9ð 9ð 9ð(að að að aðF ðð ñ „Xðð  ðð ñ „Xðð. ðð ñ „Xðð> ðð ñ „Xðð$=ð =ð =ð =ð ð	ð 	ñ „Xð	ðGð Gð Gð6 ð/ð /ñ „Xð/ðb ð,ð ,ñ „Xð,ðð ð ð	ð 	ð 	ðð ð ðð ð ð ð(ð ð ð@5ð 5ð 5ð8ð 8ð 8ðð ð ð ð& ð1ð 1ñ „Xð1ð ðð ñ „XððB ð	&ð 	&ñ „Xð	&ð ð2ð 2ñ „Xð2ð
 ð9ð 9ñ „Xð9ð ð	ð 	ñ „Xð	ð ðð ñ „Xðð2 ðð ñ „Xðð ðð ñ „Xðð$ ð	ð 	ñ „Xð	ð ðð ñ „Xðð& ðð ñ „Xðð ð+ð +ñ „Xð+ð<ð <ð <ð"	?ð 	?ð 	?ðGð Gð Gð-<ð -<ð -<ð -<ð^'1ð '1ð '1ð '1ðR0ð 0ð 0ðlð lð lð lð<=ð =ð =ð 7ð 7ð 7ð 7ð<ð <ð <ðCð Cð CðUð Uð Uð Uð
"ð 
"ð 
"ð4ð 4ð 4ð	,ð 	,ð 	,ðð ð ð Cð Cð Cð Cð< ðð ñ „Xðð !%Ø#ØØ"Ø $Ø"&Ø $Ø!Øð{*ð {*ð {*ð {*ð {*ðz)Gð )Gð )Gð )GðV ðð ñ „\ðð ð3ð 3ñ „Xð3ðj ð<ð <ñ „Xð<ð <ð <r*   râ   c                  ól   — e Zd Zd„ Zd„ Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd	„Z
ed
„ ¦   «         Zd„ Zd„ ZdS )ÚArchivec                óx   — t          ¦   «         | _        t          j        ¦   «         | _        |r | j        |Ž  dS dS )zõ
        Archive(dirname [, path]) - from folder
        Archive(file [, path]) - from file name or object
        Archive(data, name) - from memory item
        Archive() - empty archive
        Archive(archive [, path]) - from archive
        N)r´   Ú_subarchivesr�   Úfz_new_multi_archiverÄ   Úadd©r(   r÷  s     r)   rŒ   zArchive.__init__¨  sG   € õ !™FœFˆÔÝÔ.Ñ0Ô0ˆŒ	Øð 	ØˆDŒH�tÐÐÐÐð	ð 	r*   c                ó0   — dt          | j        ¦  «        › �S )NzArchive, sub-archives: )r7   r;  r.   s    r)   rí   zArchive.__repr__µ  s   € ØA­¨TÔ->Ñ)?Ô)?ÐAÐAÐAr*   Nc                ó<   — t          j        | j        ||¦  «         d S r,   )r�   Úfz_mount_multi_archiverÄ   )r(   Úsubarchr
   s      r)   Ú	_add_archzArchive._add_arch¸  s   € ÝÔ$ d¤i°¸$Ñ?Ô?Ð?Ð?Ð?r*   c                ód   — t          j        |¦  «        }t          j        | j        ||¦  «         d S r,   )r�   Úfz_open_directoryrA  rÄ   )r(   Úfolderr
   Úsubs       r)   Ú_add_dirzArchive._add_dir»  s/   € ÝÔ% vÑ.Ô.ˆÝÔ$ d¤i°°dÑ;Ô;Ð;Ð;Ð;r*   c                óÐ   — t          |¦  «        }t          j        t          j        ¦   «         ¦  «        }t          j        |||¦  «         t          j        | j        ||¦  «         d S r,   )r'  r�   Úfz_new_tree_archiveÚFzTreeÚfz_tree_archive_add_bufferrA  rÄ   )r(   Úmemoryr   r
   ÚbuffrG  s         r)   Ú_add_treeitemzArchive._add_treeitem¿  sW   € Ý! 6Ñ*Ô*ˆÝÔ'­¬©¬Ñ8Ô8ˆÝÔ(¨#¨t°TÑ:Ô:Ð:ÝÔ$ d¤i°°dÑ;Ô;Ð;Ð;Ð;r*   c                óš   — |dk    rt          j        |¦  «        }nt          j        |¦  «        }t          j        | j        ||¦  «         d S ©Nr   )r�   Úfz_open_zip_archiveÚfz_open_tar_archiverA  rÄ   )r(   Úfilepathr[  r
   rG  s        r)   Ú_add_ziptarfilezArchive._add_ziptarfileÅ  sJ   € Ø�AŠ:ˆ:ÝÔ+¨XÑ6Ô6ˆCˆCåÔ+¨XÑ6Ô6ˆCÝÔ$ d¤i°°dÑ;Ô;Ð;Ð;Ð;r*   c                óà   — t          |¦  «        }t          j        |¦  «        }|dk    rt          j        |¦  «        }nt          j        |¦  «        }t          j        | j        ||¦  «         d S rQ  )r'  r�   Úfz_open_bufferÚfz_open_zip_archive_with_streamÚfz_open_tar_archive_with_streamrA  rÄ   )r(   rM  r[  r
   rN  r	   rG  s          r)   Ú_add_ziptarmemoryzArchive._add_ziptarmemoryÌ  sg   € Ý! 6Ñ*Ô*ˆÝÔ% tÑ,Ô,ˆØ�!Š8ˆ8ÝÔ7¸Ñ@Ô@ˆCˆCåÔ7¸Ñ@Ô@ˆCÝÔ$ d¤i°°dÑ;Ô;Ð;Ð;Ð;r*   c                óp	  ‡ — d„ }ˆ fd„}t          |t          j        ¦  «        rt          |¦  «        }t          |t          ¦  «        �rt          j                             |¦  «        r5‰                      ||¦  «          |t	          j        |¦  «        |d¦  «        S t          j         	                    |¦  «        rŽt          |t          ¦  «        r|dk    sJ d|›d�¦   «         ‚t          j        |d¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   ‰                      ||¦  «          ||gdd	¦  «        S t          d
|›�¦  «        ‚ ||¦  «        rEt          |t          ¦  «        r
|d|›d�k    sJ ‚‰                      ||¦  «          ||gdd	¦  «        S t          |t          j        ¦  «        rzt#          |dd¦  «        }|€1|j                             ¦   «         }‰                      |d|¦  «         n‰                      |d|¦  «          ||                     ¦   «         |d¦  «        S t          |t.          j        ¦  «        r t#          |j        dd¦  «        }|€R|j        }t          |t          j        ¦  «        s|j        }‰                      |                     ¦   «         d|¦  «         n‰                      |d|¦  «          ||                     ¦   «         |d¦  «        S t          |t8          ¦  «        r#‰                      ||¦  «          |g |d¦  «        S t          |t<          ¦  «        �r#t?          |¦  «        dk    �r|\  }	}
t          |
t          ¦  «        sJ dtA          |
¦  «        ›�¦   «         ‚ ||	¦  «        r‰                      |	|
|¬¦  «         n©t          |	t          ¦  «        ryt          j         	                    |	¦  «        rYt          j        |	d¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   ‰                      ||
|¬¦  «         nJ dtA          |	¦  «        ›d�¦   «         ‚ ||
g|d	¦  «        S tC          |d¦  «        r|D ]}‰  "                    ||¦  «         ŒdS tG          dtA          |¦  «        › d�¦  «        ‚)a±  
        Add a sub-archive.

        Args:
            content:
                The content to be added. May be one of:
                    `str` - must be path of directory or file.
                    `bytes`, `bytearray`, `io.BytesIO` - raw data.
                    `zipfile.Zipfile`.
                    `tarfile.TarFile`.
                    `pymupdf.Archive`.
                    A two-item tuple `(data, name)`.
                    List or tuple (but not tuple with length 2) of the above.
            path: (str) a "virtual" path name, under which the elements
                of content can be retrieved. Use it to e.g. cope with
                duplicate element names.
        c                óP   — t          | t          t          t          j        f¦  «        S r,   )r>   r  Ú	bytearrayr9   ÚBytesIO©r(  s    r)   Úis_binary_dataz#Archive.add.<locals>.is_binary_dataç  s   € Ý˜a¥%­µB´JÐ!?Ñ@Ô@Ð@r*   c                ój  •— t          || |¬¦  «        }|dk    s‰j        g k    r‰j                             |¦  «         d S ‰j        d         }|d         dk    s|d         |d         k    r‰j                             |¦  «         d S |d                              |d         ¦  «         |‰j        d<   d S )N)r±   Úentriesr
   Útreer1  r±   r
   rb  )r5   r;  rk   Úextend)rb  Úmountr±   rB  Últreer(   s        €r)   Úmake_subarchz!Archive.add.<locals>.make_subarchê  sÆ   ø€ Ý˜s¨G¸%Ð@Ñ@Ô@ˆGØ�fŠ}ˆ} Ô 1°RÒ 7Ð 7ØÔ!×(Ò(¨Ñ1Ô1Ð1Ð1Ð1àÔ)¨"Ô-�Ø˜”< 6Ò)Ð)¨U°6¬]¸gÀf¼oÒ-MÐ-MØÔ%×,Ò,¨WÑ5Ô5Ð5Ð5Ð5à˜)Ô$×+Ò+¨G°IÔ,>Ñ?Ô?Ð?Ø,1�DÔ% bÑ)Ð)Ð)r*   Údirr\   z'Need name for binary content, but path=r   ÚrbNrc  zNot a file or directory: rf   r   Úzipr   r   ÚtarÚmultir   zUnexpected type(name)=)r
   zUnexpected type(data)=ra  zUnrecognised type )$r>   ÚpathlibÚPathrÑ  rd   r
   ÚisdirrH  ÚlistdirÚisfiler9   r:   ÚreadrO  rÃ   ÚzipfileÚZipFilerì   ÚfpÚgetvaluerZ  rU  ÚnamelistÚtarfileÚTarFileÚfileobjr^  Úgetnamesr9  rC  rµ   r7   rÈ   r;   r=  r®  )r(   rx  r
   r`  rg  rÎ  Úffrf   ru  Údatar   rC   s   `           r)   r=  zArchive.addÕ  sx  ø€ ð$	Að 	Að 	Að
	2ð 
	2ð 
	2ð 
	2ð 
	2õ �g�wœ|Ñ,Ô,ð 	#Ý˜'‘l”lˆGå�g�sÑ#Ô#ñ *	3ÝŒw�}Š}˜WÑ%Ô%ð JØ—’˜g tÑ,Ô,Ð,Ø#�|¥B¤J¨wÑ$7Ô$7¸¸uÑEÔEÐEÝ”—’ Ñ(Ô(ð JÝ! $­Ñ,Ô,ð F°¸²°°ØE¸TÐEÐEÐEñ 2<´Ð;å”W˜W dÑ+Ô+ð "¨qØŸš™œ�Bð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "à×"Ò" 2 tÑ,Ô,Ð,Ø#�| T F¨D°&Ñ9Ô9Ð9å Ð!H¸WÐ!HÐ!HÑIÔIÐIàˆ^˜GÑ$Ô$ð 	3Ý˜d¥CÑ(Ô(ð B¨Tð 6BØ9=ð6Bð 6Bð 6Bò .Bð .Bð .Bð Bà×Ò˜w¨Ñ-Ô-Ð-Ø�<  ¨¨fÑ5Ô5Ð5å˜¥¤Ñ1Ô1ð 	3Ý˜w¨
°DÑ9Ô9ˆHØÐØ”Z×(Ò(Ñ*Ô*�Ø×&Ò& r¨1¨dÑ3Ô3Ð3Ð3à×$Ò$ X¨q°$Ñ7Ô7Ð7Ø�< × 0Ò 0Ñ 2Ô 2°D¸%Ñ@Ô@Ð@å˜¥¤Ñ1Ô1ð 	3Ý˜wœ°¸Ñ=Ô=ˆHØÐØ”_�Ý! "¥b¤jÑ1Ô1ð $Øœ�BØ×&Ò& r§{¢{¡}¤}°a¸Ñ>Ô>Ð>Ð>à×$Ò$ X¨q°$Ñ7Ô7Ð7Ø�< × 0Ò 0Ñ 2Ô 2°D¸%Ñ@Ô@Ð@å˜¥Ñ)Ô)ð 	3Ø�NŠN˜7 DÑ)Ô)Ð)Ø�<  D¨'Ñ2Ô2Ð2å�g�uÑ%Ô%ñ 	C­#¨g©,¬,¸!Ò*;Ñ*;à ‰JˆD�$Ý˜d¥CÑ(Ô(ÐEÐEÐ*E½¸T¹
¼
Ð*EÐ*EÑEÔEÐ(Øˆ~˜dÑ#Ô#ð 7Ø×"Ò" 4¨°DÐ"Ñ9Ô9Ð9Ð9Ý˜D¥#Ñ&Ô&ð 7Ý”7—>’> $Ñ'Ô'ð <Ýœ  tÑ,Ô,ð &°ØŸVšV™XœX˜ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &à×&Ò& r¨4°dÐ&Ñ;Ô;Ð;øà6Ð6­¨T©
¬
Ð6Ð6Ð6Ñ6Ô6�qØ�<  ¨¨fÑ5Ô5Ð5å�W˜mÑ,Ô,ð 	Càð %ð %�Ø—’˜˜tÑ$Ô$Ð$Ð$ØˆFõ ÐAµ°g±´ÐAÐAÐAÑBÔBÐBs$   Ã:DÄDÄ"DÏ=PÐP"Ð%P"c                ó   — | j         S )z'
        List of sub archives.
        )r;  r.   s    r)   Ú
entry_listzArchive.entry_list>  s   € ð
 Ô Ð r*   c                ó6   — t          j        | j        |¦  «        S r,   )r�   Úfz_has_archive_entryrÄ   ©r(   r   s     r)   Ú	has_entryzArchive.has_entryE  s   € ÝÔ)¨4¬9°dÑ;Ô;Ð;r*   c                óT   — t          j        | j        |¦  «        }t          |¦  «        S r,   )r�   Úfz_read_archive_entryrÄ   r  )r(   r   rN  s      r)   Ú
read_entryzArchive.read_entryH  s$   € ÝÔ*¨D¬I°tÑ<Ô<ˆÝ Ñ&Ô&Ð&r*   r,   )r/   r0   r1   rŒ   rí   rC  rH  rO  rU  rZ  r=  r6  r  rƒ  r†  r-   r*   r)   r9  r9  §  sï   € € € € € ðð ð ðBð Bð Bð@ð @ð @ð @ð<ð <ð <ð <ð<ð <ð <ð <ð<ð <ð <ð <ð<ð <ð <ð <ðgð gð gð gðR ð!ð !ñ „Xð!ð<ð <ð <ð'ð 'ð 'ð 'ð 'r*   r9  c                  ó˜  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdKd„Z	d	„ Z
d
„ Zd„ ZdLd„Zd„ ZdMd„ZdKd„Zd„ ZdNd„Zd„ Zd„ Zd„ ZdKd„ZdKd„Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ Zd„ Z d „ Z!d!„ Z"d"„ Z#e$d#„ ¦   «         Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*e$d)„ ¦   «         Z+e$d*„ ¦   «         Z,e$d+„ ¦   «         Z-e$d,„ ¦   «         Z.e$d-„ ¦   «         Z/d.„ Z0d/„ Z1e$d0„ ¦   «         Z2d1„ Z3d2„ Z4d3„ Z5dOd5„Z6d6„ Z7d7„ Z8d8„ Z9d9„ Z:d:„ Z;dOd;„Z<d<„ Z=d=„ Z>d>„ Z?d?„ Z@d@„ ZAdA„ ZBdB„ ZC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dPdC„ZDdD„ ZEdQdF„ZFdG„ ZGdH„ ZHe$dI„ ¦   «         ZIe$dJ„ ¦   «         ZJe	ZKe	ZLe	ZMdS )RÚXmlc                ó   — | S r,   r-   r.   s    r)   Ú	__enter__zXml.__enter__O  ó   € Øˆr*   c                ó   — d S r,   r-   r>  s     r)   Ú__exit__zXml.__exit__R  ó   € Øˆr*   c                ó  — t          |t          j        ¦  «        r	|| _        d S t          |t          ¦  «        r/t          j        |¦  «        }t          j        |¦  «        | _        d S J dt          |¦  «        › �¦   «         ‚)Nr   zUnsupported type for rhs: )r>   r�   ÚFzXmlrÄ   rÑ  Úfz_new_buffer_from_copied_dataÚfz_parse_xml_from_html5rÈ   )r(   ÚrhsrN  s      r)   rŒ   zXml.__init__U  su   € Ý�c�5œ;Ñ'Ô'ð 	?ØˆDŒIˆIˆIÝ˜�SÑ!Ô!ð 	?ÝÔ7¸Ñ<Ô<ˆDÝÔ5°dÑ;Ô;ˆDŒIˆIˆIà>Ð>µ4¸±9´9Ð>Ð>Ñ>Ô>�1r*   c                ó4   ‡— ˆfd„Šd}g } ‰| ||¦  «        }|S )Nc           	     ó¾  •— | �Ù| j         r(|                     |d| j        › d�f¦  «         | j        } Œ1|                     |d| j        › �f¦  «         |                      ¦   «                              ¦   «         D ]#\  }}|                     |d|› d|› d�f¦  «         Œ$| j        }|r ‰|||dz   ¦  «        }|                     |d| j        › �f¦  «         | j        } | ­Ù|S )Nú"ú(r   z 'rë   r   ú))Úis_textrk   r   r=  ÚtagnameÚget_attributesrB   Úfirst_child)ÚnoderB   ÚshiftÚkrF   ÚchildÚ	show_nodes         €r)   r¡  z%Xml._get_node_tree.<locals>.show_node_  s  ø€ ØÐ"Ø”<ð Ø—L’L %Ð)9¨T¬YÐ)9Ð)9Ð)9Ð!:Ñ;Ô;Ð;Øœ9�DØØ—’˜eÐ%7¨¬Ð%7Ð%7Ð8Ñ9Ô9Ð9Ø ×/Ò/Ñ1Ô1×7Ò7Ñ9Ô9ð 9ð 9‘D�A�qØ—L’L %¨¨Q¨¨°!¨¨¨Ð!7Ñ8Ô8Ð8Ð8ØÔ(�Øð ?Ø%˜I e¨U°E¸A±IÑ>Ô>�EØ—’˜eÐ%7¨¬Ð%7Ð%7Ð8Ñ9Ô9Ð9Ø”y�ð Ð"ð ˆLr*   r   r-   )r(   rž  rB   r¡  s      @r)   Ú_get_node_treezXml._get_node_tree^  s@   ø€ ð	ð 	ð 	ð 	ð 	ð  ˆØˆØ�	˜$  uÑ-Ô-ˆØˆr*   c                óZ   — |                       d¦  «        }|                      |¦  «         |S )zAdd bulleted list ("ul" tag)Úul©Úcreate_elementÚappend_child©r(   r   s     r)   Úadd_bullet_listzXml.add_bullet_listt  ó.   € à×#Ò# DÑ)Ô)ˆØ×Ò˜%Ñ Ô Ð Øˆr*   c                ó°   — |                       d¦  «        }|�||v r| S |                      d¦  «         |€|}n|d|z   z  }|                      d|¦  «         | S )z5Set some class via CSS. Replaces complete class spec.ÚclassNr³   ©Úget_attribute_valueÚremove_attributeÚset_attribute)r(   r   Úclss      r)   Ú	add_classzXml.add_classz  sp   € à×&Ò& wÑ/Ô/ˆØˆ?˜t s˜{˜{ØˆKØ×Ò˜gÑ&Ô&Ð&Øˆ;ØˆCˆCà�3˜‘:ÑˆCØ×Ò˜7 CÑ(Ô(Ð(Øˆr*   Nc                ó  — |                       d¦  «        }t          |¦  «        t          u r(|                     |                      |¦  «        ¦  «         |                      ¦   «         }|€| }|                     |¦  «         | S )zAdd a "code" tagrÉ  ©r¦  rÈ   rÑ  r§  Úcreate_text_nodeÚspan_bottom©r(   r   r   Úprevs       r)   Úadd_codezXml.add_code‡  s|   € à×#Ò# FÑ+Ô+ˆÝ�‰:Œ:�ÐÐØ×Ò˜t×4Ò4°TÑ:Ô:Ñ;Ô;Ð;Ø×ÒÑ!Ô!ˆØˆ<ØˆDØ×Ò˜%Ñ Ô Ð Øˆr*   c                óZ   — |                       d¦  «        }|                      |¦  «         |S )z!Add monospaced lines ("pre" node)Úprer¥  r¨  s     r)   Úadd_codeblockzXml.add_codeblock’  ó.   € à×#Ò# EÑ*Ô*ˆØ×Ò˜%Ñ Ô Ð Øˆr*   c                óZ   — |                       d¦  «        }|                      |¦  «         |S )zAdd description list ("dl" tag)Údlr¥  r¨  s     r)   Úadd_description_listzXml.add_description_list˜  rª  r*   c                óZ   — |                       d¦  «        }|                      |¦  «         |S )zAdd "div" tagÚdivr¥  r¨  s     r)   Úadd_divisionzXml.add_divisionž  r½  r*   r   c                óô   — |t          dd¦  «        vrt          d¦  «        ‚| j        }d|› �}|                      |¦  «        }|dvr|                      |¦  «         |S | j                             |¦  «         |S )zAdd header tagr   é   zHeader level must be in [1, 6]Úh)Úh1Úh2Úh3Úh4Úh5Úh6r¢  )rL  rÃ   rš  r¦  r§  rê   )r(   r   Úthis_tagÚnew_tagr   s        r)   Ú
add_headerzXml.add_header¤  s‰   € à�˜a ™œÐ#Ð#ÝÐ=Ñ>Ô>Ð>Ø”<ˆØ�e�+�+ˆØ×#Ò# GÑ,Ô,ˆØÐDÐDÐDØ×Ò˜eÑ$Ô$Ð$ØˆLØŒ× Ò  Ñ'Ô'Ð'Øˆr*   c                óZ   — |                       d¦  «        }|                      |¦  «         |S )zAdd horizontal line ("hr" tag)Úhrr¥  r¨  s     r)   Úadd_horizontal_linezXml.add_horizontal_line±  rª  r*   c                óT  — |                       d¦  «        }|�|                     d|› ¦  «         |�|                     d|› ¦  «         |�|                     dd|› �¦  «         |�|                     d|› ¦  «         |                     d|› ¦  «         |                      |¦  «         |S )	zAdd image node (tag "img").ÚimgNr]  Úheightr^  zfloat: r  Úsrc)r¦  r°  r§  )r(   r   r]  rÕ  Úimgfloatr  r   s          r)   Ú	add_imagezXml.add_image·  sÅ   € à×#Ò# EÑ*Ô*ˆØÐØ×Ò ¨E¨Ñ4Ô4Ð4ØÐØ×Ò ¨V¨+Ñ6Ô6Ð6ØÐØ×Ò Ð)=°8Ð)=Ð)=Ñ>Ô>Ð>ØÐØ×Ò ¨E¨Ñ4Ô4Ð4Ø×Ò˜E d 9Ñ-Ô-Ð-Ø×Ò˜%Ñ Ô Ð Øˆr*   c                ó4  — |                       d¦  «        }t          |t          ¦  «        s|}|                     d|¦  «         |                     |                      |¦  «        ¦  «         |                      ¦   «         }|€| }|                     |¦  «         | S )zAdd a hyperlink ("a" tag)r!   Úhref)r¦  r>   rÑ  r°  r§  rµ  r¶  )r(   rÚ  r   r   r¸  s        r)   Úadd_linkzXml.add_linkÆ  s˜   € à×#Ò# CÑ(Ô(ˆÝ˜$¥Ñ$Ô$ð 	ØˆDØ×Ò˜F DÑ)Ô)Ð)Ø×Ò˜4×0Ò0°Ñ6Ô6Ñ7Ô7Ð7Ø×ÒÑ!Ô!ˆØˆ<ØˆDØ×Ò˜%Ñ Ô Ð Øˆr*   c                ó–   — | j         dvrt          d| j         ¦  «        ‚|                      d¦  «        }|                      |¦  «         |S )z8Add item ("li" tag) under a (numbered or bulleted) list.)Úolr¤  zcannot add list item toÚli)rš  rÃ   r¦  r§  r¨  s     r)   Úadd_list_itemzXml.add_list_itemÓ  sN   € àŒ<˜|Ð+Ð+ÝÐ6¸¼ÑEÔEÐEØ×#Ò# DÑ)Ô)ˆØ×Ò˜%Ñ Ô Ð Øˆr*   c                óÜ   — |                       d¦  «        }|dk    r#|                     dt          |¦  «        ¦  «         |�|                     d|¦  «         |                      |¦  «         |S )zAdd numbered list ("ol" tag)rÝ  r   r•  NrÈ   )r¦  r°  rÑ  r§  )r(   r•  Únumtyper   s       r)   Úadd_number_listzXml.add_number_listÛ  so   € à×#Ò# DÑ)Ô)ˆØ�1Š9ˆ9Ø×Ò ­¨U©¬Ñ4Ô4Ð4ØÐØ×Ò ¨Ñ0Ô0Ð0Ø×Ò˜%Ñ Ô Ð Øˆr*   c                ó¦   — |                       d¦  «        }| j        dk    r|                      |¦  «         n| j                             |¦  «         |S )zAdd "p" tagr¢  )r¦  rš  r§  rê   r¨  s     r)   Úadd_paragraphzXml.add_paragraphå  sT   € à×#Ò# CÑ(Ô(ˆØŒ<˜3ÒÐØ×Ò˜eÑ$Ô$Ð$Ð$àŒK×$Ò$ UÑ+Ô+Ð+Øˆr*   c                óZ   — |                       d¦  «        }|                      |¦  «         |S ©NÚspanr¥  r¨  s     r)   Úadd_spanzXml.add_spanî  s.   € Ø×#Ò# FÑ+Ô+ˆØ×Ò˜%Ñ Ô Ð Øˆr*   c                ó°   — |                       d¦  «        }|�||v r| S |                      d¦  «         |€|}n|d|z   z  }|                      d|¦  «         | S )z;Set some style via CSS style. Replaces complete style spec.r^  Nú;r­  )r(   r   r^  s      r)   Ú	add_stylezXml.add_styleó  sq   € à×(Ò(¨Ñ1Ô1ˆØÐ ¨  ØˆKØ×Ò˜gÑ&Ô&Ð&Øˆ=ØˆEˆEà�S˜4‘ZÑˆEØ×Ò˜7 EÑ*Ô*Ð*Øˆr*   c                ó  — |                       d¦  «        }t          |¦  «        t          u r(|                     |                      |¦  «        ¦  «         |                      ¦   «         }|€| }|                     |¦  «         | S )zAdd a subscript ("sub" tag)rG  r´  r·  s       r)   Úadd_subscriptzXml.add_subscript 	  ó|   € à×#Ò# EÑ*Ô*ˆÝ�‰:Œ:�ÐÐØ×Ò˜t×4Ò4°TÑ:Ô:Ñ;Ô;Ð;Ø×ÒÑ!Ô!ˆØˆ<ØˆDØ×Ò˜%Ñ Ô Ð Øˆr*   c                ó  — |                       d¦  «        }t          |¦  «        t          u r(|                     |                      |¦  «        ¦  «         |                      ¦   «         }|€| }|                     |¦  «         | S )zAdd a superscript ("sup" tag)Úsupr´  r·  s       r)   Úadd_superscriptzXml.add_superscript	  rî  r*   c                óX  — |                      ¦   «         }t          |¦  «        }|                      ¦   «         }|€| }t          |¦  «        D ]^\  }}|                     |                      |¦  «        ¦  «         ||dz
  k     r(|                     |                      d¦  «        ¦  «         Œ_| S )z"Add text. Line breaks are honored.Nr   rî  )rÞ  r7   r¶  Ú	enumerater§  rµ  r¦  )r(   r   ÚlinesÚ
line_countr¸  r®   ro   s          r)   Úadd_textzXml.add_text	  s«   € à—’Ñ!Ô!ˆÝ˜‘Z”Zˆ
Ø×ÒÑ!Ô!ˆØˆ<ØˆDå  Ñ'Ô'ð 	=ð 	=‰GˆAˆtØ×Ò˜d×3Ò3°DÑ9Ô9Ñ:Ô:Ð:Ø�: ‘>Ò!Ð!Ø×!Ò! $×"5Ò"5°dÑ";Ô";Ñ<Ô<Ð<øØˆr*   c                óD   — t          j        | j        |j        ¦  «         d S r,   )r�   Úfz_dom_append_childrÄ   r¨  s     r)   r§  zXml.append_child$	  s   € ÝÔ! 4¤9¨e¬jÑ9Ô9Ð9Ð9Ð9r*   c                ó´   — |                       d¦  «        }|                     |¦  «         |                      ¦   «         }|€| }|                     |¦  «         |S ræ  )r¦  rë  r¶  r§  )r(   r^  rç  r¸  s       r)   Úappend_styled_spanzXml.append_styled_span'	  s[   € Ø×"Ò" 6Ñ*Ô*ˆØ�Š�uÑÔÐØ×ÒÑ!Ô!ˆØˆ<ØˆDØ×Ò˜$ÑÔÐØˆr*   c                óN   — t          t          j        | j        ¦  «        ¦  «        S r,   )rˆ  r�   Úfz_dom_bodyrÄ   r.   s    r)   ÚbodytagzXml.bodytag0	  s   € Ý•EÔ% t¤yÑ1Ô1Ñ2Ô2Ð2r*   c                óR   — t          j        | j        ¦  «        }t          |¦  «        S r,   )r�   Úfz_dom_clonerÄ   rˆ  ©r(   rG   s     r)   Úclonez	Xml.clone3	  s    € ÝÔ  $¤)Ñ,Ô,ˆÝ�C‰yŒyÐr*   c                óæ   — t          | ¦  «        t          u r| S t          | ¦  «        t          u rdt          | ¦  «        › d�S t          | ¦  «        t          t
          fv rdt	          | ¦  «        › �S | S )Nzrgb(r˜  rË  )rÈ   rÑ  r4   ÚsRGB_to_rgbrµ   r´   )Úcolors    r)   Ú
color_textzXml.color_text7	  sp   € å�‰;Œ;�#ÐÐØˆLÝ�‰;Œ;�#ÐÐØ/�+ eÑ,Ô,Ð/Ð/Ð/Ð/Ý�‰;Œ;�5¥$˜-Ð'Ð'Ø'�˜u™œÐ'Ð'Ð'Øˆr*   c                óP   — t          t          j        | j        |¦  «        ¦  «        S r,   )rˆ  r�   Úfz_dom_create_elementrÄ   )r(   Útags     r)   r¦  zXml.create_elementA	  s   € Ý•EÔ/°´¸CÑ@Ô@ÑAÔAÐAr*   c                óP   — t          t          j        | j        |¦  «        ¦  «        S r,   )rˆ  r�   Úfz_dom_create_text_noderÄ   )r(   r   s     r)   rµ  zXml.create_text_nodeD	  s   € Ý•EÔ1°4´9¸dÑCÔCÑDÔDÐDr*   c                ó¢   — |                       ¦   «         }|D ]7}t          d|d         z  |d                              dd¦  «        z   ¦  «         Œ8dS )z)Print a list of the node tree below self.z  r   r   r%   ú\nN)r¢  rr   rà  )r(   rB   rC   s      r)   Údebugz	Xml.debugG	  s`   € à×#Ò#Ñ%Ô%ˆØð 	Cð 	CˆDÝ�D˜4 œ7‘N T¨!¤W§_¢_°T¸5Ñ%AÔ%AÑAÑBÔBÐBÐBð	Cð 	Cr*   c                ój   — t          j        | j        |||¦  «        }|j        rt	          |¦  «        S d S r,   )r�   Úfz_dom_findrÄ   rÌ   rˆ  ©r(   r  ÚattÚmatchrG   s        r)   r¡   zXml.findM	  s:   € ÝÔ ¤¨C°°eÑ<Ô<ˆØŒ>ð 	Ý˜‘9”9Ðð	ð 	r*   c                ój   — t          j        | j        |||¦  «        }|j        rt	          |¦  «        S d S r,   )r�   Úfz_dom_find_nextrÄ   rÌ   rˆ  r  s        r)   Ú	find_nextzXml.find_nextR	  s:   € ÝÔ$ d¤i°°c¸5ÑAÔAˆØŒ>ð 	Ý˜‘9”9Ðð	ð 	r*   c                ó�   — t          j        | j        ¦  «        rd S t          j        | ¦  «        }|j        rt          |¦  «        S d S r,   )r�   Úfz_xml_textrÄ   Úfz_dom_first_childrÌ   rˆ  r   s     r)   rœ  zXml.first_childW	  sL   € åÔ˜dœiÑ(Ô(ð 	àˆFÝÔ&¨Ñ-Ô-ˆØŒ>ð 	Ý˜‘9”9Ðð	ð 	r*   c                ó>   — |sJ ‚t          j        | j        |¦  «        S r,   )r�   Úfz_dom_attributerÄ   ©r(   Úkeys     r)   r®  zXml.get_attribute_value`	  s    € Øˆ
ˆ
ˆsÝÔ% t¤y°#Ñ6Ô6Ð6r*   c                ó¸   — t          j        | j        ¦  «        rd S t          ¦   «         }d}	 t          j        | j        |¦  «        \  }}|r|sn|||<   |dz  }Œ-|S ©Nr   r   )r�   r  rÄ   r5   Úfz_dom_get_attribute)r(   Úresultr®   r  r  s        r)   r›  zXml.get_attributesd	  sw   € ÝÔ˜dœiÑ(Ô(ð 	àˆFÝ‘”ˆØˆð	ÝÔ1°4´9¸aÑ@Ô@‰HˆC�Øð ˜cð ØØˆF�C‰LØ�‰FˆAð	ð ˆr*   c                óD   — t          j        | j        |j        ¦  «         d S r,   )r�   Úfz_dom_insert_afterrÄ   ©r(   r�  s     r)   Úinsert_afterzXml.insert_afterr	  s   € ÝÔ! 4¤9¨d¬iÑ8Ô8Ð8Ð8Ð8r*   c                óD   — t          j        | j        |j        ¦  «         d S r,   )r�   Úfz_dom_insert_beforerÄ   r#  s     r)   Úinsert_beforezXml.insert_beforeu	  s   € ÝÔ" D¤I¨t¬yÑ9Ô9Ð9Ð9Ð9r*   c                ó(  — |                      ¦   «         }t          |¦  «        }t          |¦  «        D ]^\  }}|                      |                      |¦  «        ¦  «         ||dz
  k     r(|                      |                      d¦  «        ¦  «         Œ_| S )Nr   rî  )rÞ  r7   ró  r§  rµ  r¦  )r(   r   rô  rõ  r®   ro   s         r)   Úinsert_textzXml.insert_textx	  s�   € Ø—’Ñ!Ô!ˆÝ˜‘Z”Zˆ
Ý  Ñ'Ô'ð 	=ð 	=‰GˆAˆtØ×Ò˜d×3Ò3°DÑ9Ô9Ñ:Ô:Ð:Ø�: ‘>Ò!Ð!Ø×!Ò! $×"5Ò"5°dÑ";Ô";Ñ<Ô<Ð<øØˆr*   c                ó   — | j         duS )zCheck if this is a text node.Nrq   r.   s    r)   r™  zXml.is_text�	  s   € ð Œy Ð$Ð$r*   c                ó6   — | j         }|€dS 	 |j        }|s|S |}Œ)zReturn last child node.N)rœ  r=  )r(   r   r=  s      r)   Ú
last_childzXml.last_child†	  s9   € ð Ô ˆØˆ=Ø�4ð	Ø”:ˆDØð Ø�ØˆEð		r*   c                ód   — t          j        | j        ¦  «        }|j        rt	          |¦  «        S d S r,   )r�   Úfz_dom_nextrÄ   rÌ   rˆ  r   s     r)   r=  zXml.next’	  s4   € åÔ ¤Ñ+Ô+ˆØŒ>ð 	Ý˜‘9”9Ðð	ð 	r*   c                ód   — t          j        | j        ¦  «        }|j        rt	          |¦  «        S d S r,   )r�   Úfz_dom_parentrÄ   rÌ   rˆ  r   s     r)   rê   z
Xml.parent˜	  s4   € åÔ! 4¤9Ñ-Ô-ˆØŒ>ð 	Ý˜‘9”9Ðð	ð 	r*   c                ód   — t          j        | j        ¦  «        }|j        rt	          |¦  «        S d S r,   )r�   Úfz_dom_previousrÄ   rÌ   rˆ  r   s     r)   ÚpreviouszXml.previousž	  s4   € åÔ# T¤YÑ/Ô/ˆØŒ>ð 	Ý˜‘9”9Ðð	ð 	r*   c                ó8   — t          j        | j        ¦  «         d S r,   )r�   Úfz_dom_removerÄ   r.   s    r)   Úremovez
Xml.remove¤	  s   € ÝÔ˜TœYÑ'Ô'Ð'Ð'Ð'r*   c                óB   — |sJ ‚t          j        | j        |¦  «         d S r,   )r�   Úfz_dom_remove_attributerÄ   r  s     r)   r¯  zXml.remove_attribute§	  s&   € Øˆ
ˆ
ˆsÝÔ% t¤y°#Ñ6Ô6Ð6Ð6Ð6r*   c                óN   — t          t          j        | j        ¦  «        ¦  «        S r,   )rˆ  r�   Úfz_xml_rootrÄ   r.   s    r)   ÚrootzXml.root«	  s   € å•EÔ% t¤yÑ1Ô1Ñ2Ô2Ð2r*   c                óú   — t          |t          ¦  «        r|}nJ|t          k    rd}n<|t          k    rd}n.|t          k    rd}n |t
          k    rd}nt          d|›�¦  «        ‚|                      d|› �¦  «         | S )z Set text alignment via CSS styler  ÚcenterÚrightÚjustifyzUnrecognised align=ztext-align: )r>   rÑ  ÚTEXT_ALIGN_LEFTÚTEXT_ALIGN_CENTERÚTEXT_ALIGN_RIGHTÚTEXT_ALIGN_JUSTIFYrÃ   rë  )r(   r  Úts      r)   Ú	set_alignzXml.set_align¯	  s�   € å�u�cÑ"Ô"ð 	7ØˆAˆAØ•oÒ%Ð%ØˆAˆAØÕ'Ò'Ð'ØˆAˆAØÕ&Ò&Ð&ØˆAˆAØÕ(Ò(Ð(ØˆAˆAåÐ5¨UÐ5Ð5Ñ6Ô6Ð6Ø�ŠÐ) aÐ)Ð)Ñ*Ô*Ð*Øˆr*   c                óD   — |sJ ‚t          j        | j        ||¦  «         d S r,   )r�   Úfz_dom_add_attributerÄ   )r(   r  r¸   s      r)   r°  zXml.set_attributeÀ	  s(   € Øˆ
ˆ
ˆsÝÔ" D¤I¨s°EÑ:Ô:Ð:Ð:Ð:r*   c                ó\   — |                       d|                      |¦  «        › �¦  «         | S )z"Set background color via CSS stylezbackground-color: )rë  r  ©r(   r  s     r)   Úset_bgcolorzXml.set_bgcolorÄ	  s.   € à�ŠÐD¨D¯OªO¸EÑ,BÔ,BÐDÐDÑEÔEÐEØˆr*   Tc                óD   — |rd}nd}|                       d|› �¦  «         | S )zSet bold on / off via CSS styleÚboldÚnormalzfont-weight: ©rú  ©r(   r  s     r)   Úset_boldzXml.set_boldÉ	  s8   € àð 	ØˆCˆCàˆCØ×ÒÐ 5°Ð 5Ð 5Ñ6Ô6Ð6Øˆr*   c                ó\   — |                       d|                      |¦  «        › �¦  «         | S )zSet text color via CSS stylezcolor: )rú  r  rI  s     r)   Ú	set_colorzXml.set_colorÒ	  s0   € à×ÒÐ B¨$¯/ª/¸%Ñ*@Ô*@Ð BÐ BÑCÔCÐCØˆr*   c                ó6   — |                       d|› �¦  «         | S )z(Set number of text columns via CSS stylez	columns: rN  )r(   Úcolss     r)   Úset_columnszXml.set_columns×	  s$   € à×ÒÐ 2¨DÐ 2Ð 2Ñ3Ô3Ð3Øˆr*   c                ó6   — |                       d|› �¦  «         | S )z"Set font-family name via CSS stylezfont-family: rN  )r(   Úfonts     r)   Úset_fontzXml.set_fontÜ	  s$   € à×ÒÐ 6°Ð 6Ð 6Ñ7Ô7Ð7Øˆr*   c                ót   — t          |¦  «        t          u rd}nd}d|› |› �}|                      |¦  «         | S )z Set font size name via CSS styler\   Úpxzfont-size: )rÈ   rÑ  rú  )r(   rú   rZ  r   s       r)   Úset_fontsizezXml.set_fontsizeá	  sJ   € å�‰>Œ>�SÐ Ð ØˆBˆBàˆBØ+˜XÐ+ rÐ+Ð+ˆØ×Ò Ñ%Ô%Ð%Øˆr*   c                ó”   — | j         }|                     dd|¦  «        rt          d|› d�¦  «        ‚|                      d|¦  «         | S )zSet a unique id.Nr9  zid 'z' already exists)r;  r¡   rÃ   r°  )r(   Úuniquer;  s      r)   Úset_idz
Xml.set_idë	  sX   € ð ŒyˆØ�9Š9�T˜4 Ñ(Ô(ð 	>ÝÐ< FÐ<Ð<Ð<Ñ=Ô=Ð=Ø×Ò˜4 Ñ(Ô(Ð(Øˆr*   c                óD   — |rd}nd}|                       d|› �¦  «         | S )z!Set italic on / off via CSS styleÚitalicrM  zfont-style: rN  rO  s     r)   Ú
set_italiczXml.set_italicô	  s8   € àð 	ØˆCˆCàˆCØ×ÒÐ 4¨sÐ 4Ð 4Ñ5Ô5Ð5Øˆr*   c                ó6   — |                       d|› �¦  «         | S )z>Set inter-line spacing value via CSS style - block-level only.z-mupdf-leading: ©rë  )r(   Úleadings     r)   Úset_leadingzXml.set_leadingý	  s"   € à�ŠÐ3¨'Ð3Ð3Ñ4Ô4Ð4Øˆr*   c                ó6   — |                       d|› �¦  «         | S )z,Set inter-letter spacing value via CSS stylezletter-spacing: rN  ©r(   Úspacings     r)   Úset_letter_spacingzXml.set_letter_spacing
  s$   € à×ÒÐ <°7Ð <Ð <Ñ=Ô=Ð=Øˆr*   c                ó6   — |                       d|› �¦  «         | S )z6Set line height name via CSS style - block-level only.zline-height: rc  )r(   Ú
lineheights     r)   Úset_lineheightzXml.set_lineheight
  s"   € à�ŠÐ3 zÐ3Ð3Ñ4Ô4Ð4Øˆr*   c                ó6   — |                       d|› �¦  «         | S )zSet margin values via CSS stylez	margins: rN  rO  s     r)   Úset_marginszXml.set_margins
  s$   € à×ÒÐ 1¨CÐ 1Ð 1Ñ2Ô2Ð2Øˆr*   c                ó6   — |                       d|› �¦  «         | S )zSet opacity via CSS stylez	opacity: rN  )r(   rV  s     r)   r£  zXml.set_opacity
  s$   € à×ÒÐ 5¨GÐ 5Ð 5Ñ6Ô6Ð6Øˆr*   c                ó0   — |                       d¦  «         | S )z$Insert a page break after this node.zpage-break-after: alwaysrc  r.   s    r)   Úset_pagebreak_afterzXml.set_pagebreak_after
  s   € à�ŠÐ1Ñ2Ô2Ð2Øˆr*   c                ó0   — |                       d¦  «         | S )z%Insert a page break before this node.zpage-break-before: alwaysrc  r.   s    r)   Úset_pagebreak_beforezXml.set_pagebreak_before
  s   € à�ŠÐ2Ñ3Ô3Ð3Øˆr*   c                ó¾  — | j         }|                     ¦   «         }|�|                     |¦  «         |�|                     |¦  «         |�|                     |¦  «         |�|                     |¦  «         |�|                     |¦  «         |�|                     |¦  «         |�|                     |¦  «         |�| 	                    |¦  «         |	�| 
                    |	¦  «         |
�|                     |
¦  «         |�|                     |¦  «         |�|                     |¦  «         |�|                     |¦  «         |�|                     ¦   «          |�|                     ¦   «          |�|                     |¦  «         |�|                      |¦  «         |�|                      |¦  «         g }|                     d¦  «        }|�|                     |¦  «         |j        }|r1|                     |                     d¦  «        ¦  «         |j        }|°1|                      dd                     |¦  «        ¦  «         |                     ¦   «          | S )z`Set any or all properties of a node.

        To be used for existing nodes preferably.
        Nr^  rê  )r;  rÃ  rE  rJ  rP  rR  rU  rX  r[  Úset_text_indentra  re  ri  rl  rn  rq  rs  Úset_word_spacingr^  r²  r®  rk   rœ  r°  rÜ  r6  )r(   r  ÚbgcolorrL  r  ÚcolumnsrW  rú   Úindentr`  rd  Úletter_spacingrk  ÚmarginsÚpagebreak_afterÚpagebreak_beforeÚword_spacingÚunqidr±  r;  ÚtempÚstylesÚ	top_styler   s                           r)   Úset_propertieszXml.set_properties 
  s…  € ð2 ŒyˆØ× Ò Ñ"Ô"ˆØÐØ�NŠN˜5Ñ!Ô!Ð!ØÐØ×Ò˜WÑ%Ô%Ð%ØÐØ�MŠM˜$ÑÔÐØÐØ�NŠN˜5Ñ!Ô!Ð!ØÐØ×Ò˜WÑ%Ô%Ð%ØÐØ�MŠM˜$ÑÔÐØÐØ×Ò˜hÑ'Ô'Ð'ØÐØ× Ò  Ñ(Ô(Ð(ØÐØ�OŠO˜FÑ#Ô#Ð#ØÐØ×Ò˜WÑ%Ô%Ð%ØÐ%Ø×#Ò# NÑ3Ô3Ð3ØÐ!Ø×Ò 
Ñ+Ô+Ð+ØÐØ×Ò˜WÑ%Ô%Ð%ØÐ&Ø×$Ò$Ñ&Ô&Ð&ØÐ'Ø×%Ò%Ñ'Ô'Ð'ØÐ#Ø×!Ò! ,Ñ/Ô/Ð/ØÐØ�KŠK˜ÑÔÐØˆ?Ø�NŠN˜3ÑÔÐàˆØ×,Ò,¨WÑ5Ô5ˆ	ØÐ Ø�MŠM˜)Ñ$Ô$Ð$ØÔ ˆØð 	&Ø�MŠM˜%×3Ò3°GÑ<Ô<Ñ=Ô=Ð=ØÔ%ˆEð ð 	&ð 	×Ò˜7 C§H¢H¨VÑ$4Ô$4Ñ5Ô5Ð5Ø�Š‰ŒˆØˆr*   c                ó6   — |                       d|› �¦  «         | S )z;Set text indentation name via CSS style - block-level only.ztext-indent: rc  )r(   ry  s     r)   ru  zXml.set_text_indentl
  s"   € à�ŠÐ/ vÐ/Ð/Ñ0Ô0Ð0Øˆr*   Ú	underlinec                ó6   — |                       d|› �¦  «         | S )Nztext-decoration: rN  rO  s     r)   Úset_underlinezXml.set_underlineq
  s$   € Ø×ÒÐ 9°CÐ 9Ð 9Ñ:Ô:Ð:Øˆr*   c                ó6   — |                       d|› �¦  «         | S )z*Set inter-word spacing value via CSS stylezword-spacing: rN  rg  s     r)   rv  zXml.set_word_spacingu
  s$   € à×ÒÐ :°Ð :Ð :Ñ;Ô;Ð;Øˆr*   c                óÔ   — | }| j         }|€dS |j        r|j        }|€n|j        °|�|j        dk    rdS 	 |€|S |j        dv s|j        r|j        }Œ|j        dk    r
|}|j        }n|S Œ4)z$Find deepest level in stacked spans.Nrç  T)r!   rG  rð  Úbody)r,  r™  r3  rš  r=  rœ  )r(   rê   r   s      r)   r¶  zXml.span_bottomz
  s©   € àˆØ”ˆØˆ=Ø�4ØŒmð 	Ø”NˆEØˆ}Øð Œmð 	ð ˆ=˜EœM¨VÒ3Ð3Ø�4ð
	Øˆ}Ø�ØŒ}Ð 9Ð9Ð9¸U¼]Ð9Øœ
�ØØŒ} Ò&Ð&Ø�ØÔ)��à�ð
	r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   Ú
fz_xml_tagrÄ   r.   s    r)   rš  zXml.tagname“
  s   € åÔ ¤Ñ+Ô+Ð+r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   r  rÄ   r.   s    r)   r   zXml.text—
  s   € åÔ  $¤)Ñ,Ô,Ð,r*   r,   r2  r5  ©r   N©T)NNNNNNNNNNNNNNNNNN)r…  )Nr/   r0   r1   rŠ  r�  rŒ   r¢  r©  r²  r¹  r¼  rÀ  rÃ  rÏ  rÒ  rØ  rÛ  rß  râ  rä  rè  rë  rí  rñ  rö  r§  rú  rý  r  r7  r  r¦  rµ  r  r¡   r  r6  rœ  r®  r›  r$  r'  r)  r™  r,  r=  rê   r3  r6  r¯  r;  rE  r°  rJ  rP  rR  rU  rX  r[  r^  ra  re  ri  rl  rn  r£  rq  rs  rƒ  ru  r‡  rv  r¶  rš  r   Úadd_varÚadd_sampÚadd_kbdr-   r*   r)   rˆ  rˆ  M  s.  € € € € € ðð ð ðð ð ð?ð ?ð ?ðð ð ð,ð ð ðð ð ð	ð 	ð 	ð 	ðð ð ðð ð ðð ð ðð ð ð ðð ð ðð ð ð ðð ð ð ðð ð ðð ð ð ðð ð ðð ð ð
ð ð ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ðð ð ð:ð :ð :ðð ð ð3ð 3ð 3ðð ð ð ðð ñ „\ððBð Bð BðEð Eð EðCð Cð Cðð ð ð
ð ð ð
 ðð ñ „Xðð7ð 7ð 7ðð ð ð9ð 9ð 9ð:ð :ð :ðð ð ð ð%ð %ñ „Xð%ð ð	ð 	ñ „Xð	ð ðð ñ „Xðð
 ðð ñ „Xðð
 ðð ñ „Xðð
(ð (ð (ð7ð 7ð 7ð ð3ð 3ñ „Xð3ðð ð ð";ð ;ð ;ðð ð ð
ð ð ð ðð ð ð
ð ð ð
ð ð ð
ð ð ðð ð ðð ð ð ðð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð ØØØØØØØØØØØØØ Ø!ØØØð'Jð Jð Jð JðXð ð ð
ð ð ð ðð ð ð
ð ð ð2 ð,ð ,ñ „Xð,ð ð-ð -ñ „Xð-ð €GØ€HØ€G€G€Gr*   rˆ  c                  óL   — e Zd Zd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         ZdS )Ú
Colorspacec                óÚ  — t          |t          j        ¦  «        r	|| _        dS |t          k    r*t          j        t          j        j        ¦  «        | _        dS |t          k    r*t          j        t          j        j        ¦  «        | _        dS |t          k    r*t          j        t          j        j	        ¦  «        | _        dS t          j        t          j        j	        ¦  «        | _        dS )z!Supported are GRAY, RGB and CMYK.N)
r>   r�   ÚFzColorspacerÄ   ÚCS_GRAYÚ
Fixed_GRAYÚCS_CMYKÚ
Fixed_CMYKÚCS_RGBÚ	Fixed_RGB)r(   r[  s     r)   rŒ   zColorspace.__init__¢
  s²   € å�u�eÔ0Ñ1Ô1ð 		IØˆDŒIˆIˆIØ•gÒÐÝÔ*­5Ô+=Ô+HÑIÔIˆDŒIˆIˆIØ•gÒÐÝÔ*­5Ô+=Ô+HÑIÔIˆDŒIˆIˆIØ•fŠ_ˆ_ÝÔ*­5Ô+=Ô+GÑHÔHˆDŒIˆIˆIåÔ*­5Ô+=Ô+GÑHÔHˆDŒIˆIˆIr*   c                ó6   — d| j                  }d|› d| j        › �S )N)r\   ÚGRAYr\   ÚRGBÚCMYKzColorspace(CS_z) - )rE   r   ©r(   r(  s     r)   rí   zColorspace.__repr__¯
  s&   € Ø+¨D¬FÔ3ˆØ2 Ð2Ð2 t¤yÐ2Ð2Ð2r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   Úfz_colorspace_namerÄ   r.   s    r)   Ú_namezColorspace._name³
  s   € ÝÔ'¨¬	Ñ2Ô2Ð2r*   c                ó4   — t          j        | j        ¦  «        S )zSize of one pixel.)r�   Úfz_colorspace_nrÄ   r.   s    r)   rE   zColorspace.n¶
  ó   € õ Ô$ T¤YÑ/Ô/Ð/r*   c                ó*   — |                       ¦   «         S )zName of the Colorspace.©r¤  r.   s    r)   r   zColorspace.name»
  s   € ð �zŠz‰|Œ|Ðr*   N)	r/   r0   r1   rŒ   rí   r¤  r6  rE   r   r-   r*   r)   r”  r”   
  sz   € € € € € ðIð Ið Ið3ð 3ð 3ð3ð 3ð 3ð ð0ð 0ñ „Xð0ð ðð ñ „Xðð ð r*   r”  c                  ó   — e Zd Zd„ ZdS )ÚDeviceWrapperc                ó¸  — t          |t          j        ¦  «        r|\  }|| _        d S t          |t          d ¦  «        rƒ|\  }}t          |¦  «        }t          j        |¦  «        r-t          j        t          j        ¦   «         |¦  «        | _        d S t          j	        t          j        ¦   «         ||¦  «        | _        d S t          |t          j
        ¦  «        r|\  }t          j        |¦  «        | _        d S t          |t          j        d ¦  «        r5|\  }}t          j        |¦  «        }	t          j        ||	¦  «        | _        d S t          d|›�¦  «        ‚)Nz%Unrecognised args for DeviceWrapper: )Ú
args_matchr�   ÚFzDevicerÄ   r×  ÚJM_irect_from_pyÚfz_is_infinite_irectÚfz_new_draw_devicerr  Úfz_new_draw_device_with_bboxÚFzDisplayListÚfz_new_list_devicer  rþ  Úfz_new_stext_devicerg   )
r(   r÷  ÚdeviceÚpmr  r/  r¿  Útpr¾  Úoptss
             r)   rŒ   zDeviceWrapper.__init__Â
  s?  € Ý�t�Uœ^Ñ,Ô,ð 	OØ‰GˆFØˆDŒIˆIˆIÝ˜�v tÑ,Ô,ð 	OØ‰HˆB�Ý# TÑ*Ô*ˆDÝÔ)¨4Ñ0Ô0ð \Ý!Ô4µe´nÑ6FÔ6FÈÑKÔK�”	�	�	å!Ô>ÅÄÑ@PÔ@PÐRTÐVZÑ[Ô[�”	�	�	Ý˜�uÔ2Ñ3Ô3ð 	OØ‰CˆBÝÔ0°"Ñ5Ô5ˆDŒIˆIˆIÝ˜�uÔ0°$Ñ7Ô7ð 	OØ‰IˆB�ÝÔ'¨Ñ/Ô/ˆDÝÔ1°2°tÑ<Ô<ˆDŒIˆIˆIåÐMÀTÐMÐMÑNÔNÐNr*   Nr�   r-   r*   r)   r«  r«  Á
  s(   € € € € € ðOð Oð Oð Oð Or*   r«  c                  óF   — e Zd Zd„ Zd„ Zd
d„Zdd„Zed„ ¦   «         Zd	„ Z	dS )ÚDisplayListc                óD   — t          | ¦  «        t          urd S d| _        d S ©NF)rÈ   r»  rñ   r.   s    r)   Ú__del__zDisplayList.__del__Ù
  s"   € Ý�D‰zŒz�[Ð(Ð(¨&¨&ØˆŒˆˆr*   c                óH  — t          |¦  «        dk    rAt          |d         t          j        ¦  «        r!t          j        |d         ¦  «        | _        d S t          |¦  «        dk    r/t          |d         t          j        ¦  «        r|d         | _        d S J d|›�¦   «         ‚)Nr   r   zUnrecognised args=)r7   r>   r�   rh  r³  rÄ   r>  s     r)   rŒ   zDisplayList.__init__Ý
  sˆ   € Ýˆt‰9Œ9˜Š>ˆ>�j¨¨a¬µ%´,Ñ?Ô?ˆ>ÝÔ+¨D°¬GÑ4Ô4ˆDŒIˆIˆIÝ�‰YŒY˜!Š^ˆ^¥
¨4°¬7µEÔ4GÑ HÔ Hˆ^Ø˜QœˆDŒIˆIˆIà-Ð- dÐ-Ð-Ñ-Ô-�1r*   Nr   c                óÆ   — t          |t          ¦  «        r|j        }n#t          j        t          j        j        ¦  «        }t          | j        ||||d ¦  «        }d|_        |S ©NT)r>   r”  rÄ   r�   r–  rœ  ÚJM_pixmap_from_display_listrñ   )r(   rÙ  rÛ  rÜ  r  r  s         r)   rá  zDisplayList.get_pixmapå
  s[   € Ý�j¥*Ñ-Ô-ð 	JØ#œˆJˆJåÔ+­EÔ,>Ô,HÑIÔIˆJÝ)¨$¬)°V¸ZÈÐPTÐVZÑ[Ô[ˆØˆŒØˆ
r*   r   c                ó|   — t          j        ¦   «         }||_        t          j        | j        |¦  «        }d|_        |S )z#Make a TextPage from a DisplayList.T)r�   rþ  r¾  r  rÄ   rñ   )r(   r¾  Ústext_optionsr  s       r)   r  zDisplayList.get_textpageî
  s8   € åÔ,Ñ.Ô.ˆØ#ˆÔÝÔ ¤	¨=Ñ9Ô9ˆØˆŒØˆ
r*   c                óp   — t          t          j        | j        ¦  «        ¦  «        }t	          |¦  «        }|S r,   )rg  r�   Úfz_bound_display_listrÄ   r$  rO  s     r)   r÷   zDisplayList.rectö
  s,   € å�eÔ9¸$¼)ÑDÔDÑEÔEˆÝ�3‰iŒiˆØˆ
r*   c                ó    — t          j        | j        |j        t	          |¦  «        t          |¦  «        t          j        ¦   «         ¦  «         d S r,   )r�   Úfz_run_display_listrÄ   r¶  rÓ  r   ÚFzCookie)r(   Údwr€  Úareas       r)   ÚrunzDisplayList.runü
  sL   € ÝÔ!Ø”	Ø”	Ý! !Ñ$Ô$Ý Ñ%Ô%Ý”Ñ Ô ñ	ô 	ð 	ð 	ð 	r*   )NNr   N)r   )
r/   r0   r1   r¾  rŒ   rá  r  r6  r÷   rÌ  r-   r*   r)   r»  r»  Ø
  s„   € € € € € ðð ð ð.ð .ð .ðð ð ð ðð ð ð ð ðð ñ „Xðð
ð ð ð ð r*   r»  c                  ój	  — e Zd Z�d?d„Z�d@d„Zd„ Zd„ Zej        d«�dAd„¦   «         Z	e
j        dk    r$ej        �dBd„¦   «         Z	ej        �dCd„¦   «         Z	d«d„Z	�dDd„Z�dEd„Z�dFd„Zd„ Z�dGd„Zd„ Zd„ Zd„ Z	 	 	 �dH�dId'„Z	 	 	 	 �dJ�dKd*„Zd+„ Z�dLd.„Z�dMd/„Zd0„ Zd1„ Zd2„ Z�dNd3„Zd4„ Z�dOd6„Zd«�dPd<„Zd=„ Z d>„ Z!d?„ Z"d@„ Z#dA„ Z$�dQdB„Z%dC„ Z&dD„ Z'dE„ Z(�dRdH„Z)dI„ Z*dJ„ Z+dK„ Z,dL„ Z-�dSdM„Z.e/dN„ ¦   «         Z0�dQdO„Z1�dTdQ„Z2dR„ Z3dS„ Z4dTdTdUœ�dUdX„Z5e/dY„ ¦   «         Z6dZ„ Z7d[„ Z8�dVd\„Z9�dW�dXd_„Z:d`„ Z;�dW�dYda„Z<db„ Z=	 	 	 �dM�dZdj„Z>�dEdk„Z?�d[dl„Z@�d\dn„ZA�d]dp„ZB�d^dr„ZC	 	 	 	 �dN�d_dt„ZD�d`du„ZEdv„ ZF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dadz„ZGd{„ ZH�dWd|„ZI	 	 	 �db�dcd�„ZJ�dWd‚„ZKdƒ„ ZLd„„ ZM�ddd…„ZNd†„ ZO�ded‡„ZPdˆ„ ZQ�df�dgdŠ„ZR�df�dgd‹„ZSdŒ„ ZT�dfd�„ZUdddddxdTdŽœ�dhd—„ZV	 	 	 	 	 �di�djd „ZW�dkd¡„ZXd¢„ ZY	 �dl�dmd¤„ZZd¥„ Z[�dnd¦„Z\�dnd§„Z]d¨„ Z^	 	 	 	 	 	 	 	 �dod©„Z_	 	 	 	 	 	 	 �dp�dqdµ„Z`d d d d dPdPdPdddPdd¶œd·„Zae/d¸„ ¦   «         Zbe/d¹„ ¦   «         Zce/dº„ ¦   «         Zde/d»„ ¦   «         Zee/d¼„ ¦   «         Zfe/d½„ ¦   «         Zgd¾„ Zhd¿„ ZidÀ„ ZjdÁ„ ZkdÂ„ ZldÃ„ ZmdÄ„ ZndÅ„ Zo�drdÆ„ZpdÇ„ ZqdÈ„ Zre/dÉ„ ¦   «         Zse/dÊ„ ¦   «         ZtdË„ Zu�dsdÌ„Zv�dl�dtdÏ„ZwdÐ„ ZxdÑ„ ZydÒ„ Zze/�dudÓ„¦   «         Z{�dW�dXdÔ„Z|e/dÕ„ ¦   «         Z}�drdÖ„Z~e/d×„ ¦   «         Z	 	 	 �dR�dvdØ„Z€dÙ„ Z�dÚ„ Z‚e/dÛ„ ¦   «         ZƒdÜ„ Z„dÝ„ Z…dÞ„ Z†e/�dFdß„¦   «         Z‡e/�dFdà„¦   «         Zˆ�dM�dwdå„Z‰dæ„ ZŠ�dxdç„Z‹e/dè„ ¦   «         ZŒdé„ Z��dydê„ZŽdë„ Z��dzdì„Z�	 	 	 	 	 	 	 	 	 	 �d{dí„Z‘�d|dî„Z’dï„ Z“	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d}dð„Z”dñ„ Z•dò„ Z–	 	 	 	 	 	 	 	 	 	 	 	 	 �d~�d�d „Z—	 	 	 	 �d€�d��d„Z˜�d„ Z™�dr�d„Zš�d‚�d„Z›d«�d„Zœ�dƒ�d„Z��dr�d„�d
„Zž�d…�d„ZŸ	 	 	 	 �d†�d‡�d„Z �dˆ�d„Z¡�d‰�d„Z¢�d„ Z£	 �d|�dŠ�d„Z¤	 	 	 	 	 	 	 	 �d‹�dŒ�d „Z¥�d!„ Z¦�d��dŽ�d$„Z§d«�d%„Z¨�dr�d&„Z©�d��d'„Zªe/�d(„ ¦   «         Z«	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �d��d)„Z¬�d*„ Z­e/�d+„ ¦   «         Z®d�d,œ�d‘�d0„Z¯�d1„ Z°�d2„ Z±�d3„ Z²�d4„ Z³d«�d5„Z´�d6„ Zµ�d7„ Z¶�dx�d8„Z·�d9„ Z¸�d:„ Z¹�d;„ Zº�d<„ Z»�d=Z¼ e/�d>„ ¦  «        Z½e´Z¾dS (’  rÁ   Úreturnrç   c                ó~  — t          |¦  «        t          u r|| j        k     rdS dS t          |¦  «        t          t          fvst          |¦  «        dk    rdS |\  }}	 t          |t          ¦  «        r|dk     s|| j        k    rdS 	 t          |t          ¦  «        r|dk     s||                      |¦  «        k    rdS dS )NTFr   r   )	rÈ   r4   Ú
page_countrµ   r´   r7   r>   Úchapter_countÚchapter_page_count)r(   ÚlocÚchapterÚpnos       r)   Ú__contains__zDocument.__contains__  sÑ   € Ý�‰9Œ9�ÐÐØ�T”_Ò$Ð$Ø�tØ�5Ý�‰9Œ9�U¥D˜MÐ)Ð)­S°©X¬X¸ª]¨]Ø�5Ø‰ˆ�ð	Ý! '­3Ñ/Ô/ð	à˜Q’;�;Ø˜dÔ0Ò0Ð0à�5ð	Ý! #¥sÑ+Ô+ð	à˜’7�7Ø˜$×1Ò1°'Ñ:Ô:Ò:Ð:à�5Øˆtr*   ÚNonec                óŒ  — | j         st          d¦  «        ‚t          |¦  «        t          u r|                      |¦  «        S t          |¦  «        t
          t          t          fv r|                      |¦  «        S t          |¦  «        t          urt          d¦  «        ‚| j
        }|j        r|j        nd}|j        r|j        n|}|j        r|j        nd}|dk     r||z  }|dk     °||k    rt          d¦  «        ‚|dk     r||z  }|dk     °||k    rt          d¦  «        ‚|                      t          |||¦  «        ¦  «        S )Nú	is no PDFzbad argument typer   r   úbad page number(s))Úis_pdfrÃ   rÈ   r4   Údelete_pager´   rµ   rL  Údelete_pagesÚslicerÐ  r•  ÚstopÚstep)r(   r®   Úpcr•  rß  rà  s         r)   Ú__delitem__zDocument.__delitem__!  sP  € ØŒ{ð 	*Ý˜[Ñ)Ô)Ð)Ý�‰7Œ7•cˆ>ˆ>Ø×#Ò# AÑ&Ô&Ð&Ý�‰7Œ7•t�U¥EÐ*Ð*Ð*Ø×$Ò$ QÑ'Ô'Ð'Ý�‰7Œ7�%ÐÐÝÐ0Ñ1Ô1Ð1ØŒ_ˆØœ7Ð)�”�¨ˆØœÐ'ˆqŒvˆv RˆØœÐ&ˆqŒvˆv QˆØ�aŠiˆiØ�R‰KˆEð �aŠiˆià�BŠ;ˆ;ÝÐ1Ñ2Ô2Ð2Ø�QŠhˆhØ�B‰JˆDð �QŠhˆhà�"Š9ˆ9ÝÐ1Ñ2Ô2Ð2Ø× Ò ¥ u¨d°DÑ!9Ô!9Ñ:Ô:Ð:r*   c                ó   — | S r,   r-   r.   s    r)   rŠ  zDocument.__enter__8  r‹  r*   c                ó.   — |                       ¦   «          d S r,   ©Úcloser>  s     r)   r�  zDocument.__exit__;  ó   € Ø�
Š
‰Œˆˆˆr*   r   r®   r4   rÒ   c                ó   — d S r,   r-   ©r(   r®   s     r)   ra  zDocument.__getitem__>  s   € àˆr*   )r   é	   rÞ  ú
list[Page]c                ó   — d S r,   r-   ré  s     r)   ra  zDocument.__getitem__C  ó   € àˆCr*   útuple[int, int]c                ó   — d S r,   r-   ré  s     r)   ra  zDocument.__getitem__G  rí  r*   c                ó¸  ‡ — t          |t          ¦  «        r5ˆ fd„t          |                     t	          ‰ ¦  «        ¦  «        Ž D ¦   «         S t          |t
          ¦  «        sOt          |t          ¦  «        r,t	          |¦  «        dk    rt          d„ |D ¦   «         ¦  «        sJ d|›d�¦   «         ‚|‰ vrt          d|› d�¦  «        ‚‰  	                    |¦  «        S )Nc                ó    •— g | ]
}‰|         ‘ŒS r-   r-   )r­   r�  r(   s     €r)   r¯   z(Document.__getitem__.<locals>.<listcomp>M  s   ø€ ÐBÐBÐB �D˜”GÐBÐBÐBr*   r   c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S r,   )r>   r4   ©r­   r(  s     r)   ú	<genexpr>z'Document.__getitem__.<locals>.<genexpr>N  s0   è è € ÐRqÐRqÐjkÕS]Ð^_ÕadÑSeÔSeÐRqÐRqÐRqÐRqÐRqÐRqr*   zInvalid item number: i=r   úpage z not in document)
r>   rÞ  rL  Úindicesr7   r4   rµ   ÚallÚ
IndexErrorÚ	load_pageré  s   ` r)   ra  zDocument.__getitem__K  så   ø€ Ý�a�ÑÔð 	CØBÐBÐBÐB¥U¨A¯IªIµc¸$±i´iÑ,@Ô,@Ð%AÐBÑBÔBÐBÝ˜!�SÑ!Ô!ð 	.¥j°µEÑ&:Ô&:ð 	.½sÀ1¹v¼vÈº{¸{ÍsÐRqÐRqÐopÐRqÑRqÔRqÑOqÔOq¸{¸{Ø-¨Ð-Ð-Ð-ñ @K¼{Ðrà�Dˆ=ˆ=ÝÐ8 QÐ8Ð8Ð8Ñ9Ô9Ð9Ø�~Š~˜aÑ Ô Ð r*   Né   c	                óÈ  — t           }	da 	 d| _        d| _        d| _        d| _        g | _        i | _        i | _        i | _        t          j	        ¦   «         | _
        t          |t          j        ¦  «        r|}
|
| _        d| _        	 |	a dS |}|}t!          |¦  «        }t          j        |¦  «        s|j        |j        z
  }|j        |j        z
  }|| _        || _        t          |t0          j        ¦  «        rt5          |j        ¦  «        }nkt          |t8          ¦  «        rt5          |¦  «        }nF|st5          ¦   «         }n5t          |t4          ¦  «        s t;          dt=          |¦  «        ›d�¦  «        ‚|��o|�|€|}t          |t>          t@          f¦  «        rntt          |tB          ¦  «        rt?          |¦  «        }nOt          |tD          j#        ¦  «        r| $                    ¦   «         }n t;          dt=          |¦  «        ›d�¦  «        ‚|| _        t          |t>          t@          f¦  «        sJ ‚tK          |¦  «        dk    rtM          d¦  «        ‚t          j'        t          j(        |¦  «        tK          |¦  «        ¦  «        }	 t          j)        |r|nd	||j        ¦  «        }�n# tT          $ r.}tV          d
k    rtY          ¦   «          t[          d¦  «        |‚d}~ww xY w|�rº|rJ ‚t          |t8          ¦  «        rn[t]          |d¦  «        rt9          |¦  «        }n;t]          |d¦  «        r|j        }n#t;          dt=          |¦  «        ›d|›d�¦  «        ‚|| _        t^          j0         1                    |¦  «        ste          d|› d�¦  «        ‚t^          j0         3                    |¦  «        st[          d|› d�¦  «        ‚t^          j0         4                    |¦  «        dk    rtM          d|›d�¦  «        ‚|r|}n,t1          j        |¦  «        j5         6                    d¦  «        }	 t          j7        |¦  «        }t          j)        |||j        ¦  «        }ni# tT          $ r5}tV          d
k    rtY          ¦   «          t[          d|›d|› d�¦  «        |‚d}~ww xY wt          j        ¦   «         }t          j8        |¦  «        }|dk    r|dk    rt          j9        ||||¦  «         n+t          j:        |¦  «        rt          j9        |ddd¦  «         || _        d| _;        | j;        rÓtx           =                    ¦   «         | _>        | j?        rd| _        n|  @                    ¦   «          |r'| A                    ¦   «          B                    d¦  «        s|rgd| A                    ¦   «         v rQ	 |  C                    ¦   «         }n;# tT          $ r.}tV          d
k    rtY          ¦   «          t[          d¦  «        |‚d}~ww xY wtˆ          rNt          | j        t          j        ¦  «        | _        | j        rtŠ          jF        | _G        ntŠ          jH        | _G        |	a dS # |	a w xY w)aV  Creates a document. Use 'open' as a synonym.

        Notes:
            Basic usages:
            open() - new PDF document
            open(filename) - string or pathlib.Path, must have supported
                    file extension.
            open(type, buffer) - type: valid extension, buffer: bytes object.
            open(stream=buffer, filetype=type) - keyword version of previous.
            open(filename, fileype=type) - filename with unrecognized extension.
            rect, width, height, fontsize: layout reflowable document
            on open (e.g. EPUB). Ignored if n/a.
        r   FNTzbad archive: type(archive)=r   zbad stream: type(stream)=zCannot open empty stream.r\   r   zFailed to open streamÚabsoluter   zbad filename: type(filename)=z
 filename=zno such file: 'rë   z' is no filez!Cannot open empty file: filename=zFailed to open file z	 as type i�  iX  rú  Úsvgúcannot open broken document)IÚJM_mupdf_show_errorsrÂ   Úis_encryptedÚmetadataÚ	FontInfosÚ	GraftmapsÚ
ShownPagesÚInsertedImagesr  ÚWeakValueDictionaryÚ
_page_refsr>   r�   rÆ   rÄ   Úthis_is_pdfr   r¯  Úx1Úx0Úy1Úy0r¤  r	   rm  rn  r9  r   rÑ  r®  rÈ   r  Ú
memoryviewr]  r9   r^  rv  r7   ÚEmptyFileErrorÚfz_open_memoryÚpython_buffer_dataÚ$fz_open_document_with_stream_and_dirrg   r
  rv   ÚFileDataErrorr;   rd   r
   ÚexistsÚFileNotFoundErrorrq  ÚgetsizeÚsuffixÚstripÚfz_open_filerÅ   Úfz_layout_documentÚfz_is_document_reflowablerñ   r  Úgen_idÚ	_graft_idÚ
needs_passÚinit_docrÒ  rß  Úconvert_to_pdfr  r   Úpage_count_pdfÚpage_count2Úpage_count_fz)r(   rf   r	   Úfiletyper÷   r]  rÕ  rú   ÚarchiveÚJM_mupdf_show_errors_oldÚpdf_documentr   rÆ  r  Ú	fz_streamr*  r`  r  rZ  r  s                       r)   rŒ   zDocument.__init__T  s¼  € õ$ $8Ð Ø ÐðF	<Ø %ˆDŒNØ %ˆDÔØ %ˆDÔØ#ˆDŒMØ!ˆDŒNØ!ˆDŒNØ!ˆDŒOØ#%ˆDÔÝ&Ô:Ñ<Ô<ˆDŒOÝ˜(¥EÔ$5Ñ6Ô6ð Ø'�Ø(�”	Ø#'�Ô Øðp $<Ð Ð Ð ðm ˆAØˆAÝ Ñ%Ô%ˆAÝÔ,¨QÑ/Ô/ð  Ø”D˜1œ4‘K�Ø”D˜1œ4‘K�à!ˆDŒJØ ˆDŒKÝ˜'¥7¤<Ñ0Ô0ð CÝ! '¤,Ñ/Ô/��Ý˜G¥SÑ)Ô)ð CÝ! 'Ñ*Ô*��Øð CÝ!™)œ)��Ý ­Ñ1Ô1ð CÝÐ Aµ°W±´Ð AÐ AÐ AÑBÔBÐBØÑ!ØÐ'¨HÐ,<ð  (�HÝ˜f¥u­jÐ&9Ñ:Ô:ð EØÝ ­	Ñ2Ô2ð EÝ" 6™]œ]�F�FÝ ­¬
Ñ3Ô3ð EØ#Ÿ_š_Ñ.Ô.�F�Få#Ð$Cµ4¸±<´<Ð$CÐ$CÐ$CÑDÔDÐDð %�”å! &­5µ*Ð*=Ñ>Ô>Ð>Ð>Ð>Ý�v‘;”; !Ò#Ð#õ )Ð)DÑEÔEÐEå!Ô0µÔ1IÈ&Ñ1QÔ1QÕSVÐW]ÑS^ÔS^Ñ_Ô_�	ðHÝÔDÐQYÐEaÀXÀXÐ_aÐclÐnuÔnzÑ{Ô{�C‘CøÝ ð Hð Hð HÝ+¨aÒ/Ð/µNÑ4DÔ4DÐ4DÝ'Ð(?Ñ@Ô@ÀaÐGøøøøðHøøøð ñ ",Ø!Ð!Ð!�zÝ˜h­Ñ,Ô,ð UØÝ˜X zÑ2Ô2ð UÝ" 8™}œ}�H�HÝ˜X vÑ.Ô.ð UØ'œ}�H�Hå#Ð$SµT¸(±^´^Ð$SÐ$SÀxÐ$SÐ$SÐ$SÑTÔTÐTØ%�”
õ ”w—~’~ hÑ/Ô/ð RÝ+Ð,I¸hÐ,IÐ,IÐ,IÑJÔJÐJÝœŸš¨Ñ1Ô1ð RÝ'Ð(B¨HÐ(BÐ(BÐ(BÑCÔCÐCÝ”W—_’_ XÑ.Ô.°!Ò3Ð3Ý(Ð)PÀHÐ)PÐ)PÐ)PÑQÔQÐQàð FØ%�F�Få$œ\¨(Ñ3Ô3Ô:×@Ò@ÀÑEÔE�FðfÝ %Ô 2°8Ñ <Ô <�IÝÔDÀVÈYÐX_ÔXdÑeÔe�C�CøÝ ð fð fð fÝ+¨aÒ/Ð/µNÑ4DÔ4DÐ4DÝ'Ð(]¸xÐ(]Ð(]ÐTZÐ(]Ð(]Ð(]Ñ^Ô^ÐdeÐeøøøøðføøøõ
 Ô'Ñ)Ô)�ÝÔ& sÑ+Ô+�à�1Šuˆu˜˜Qš˜ÝÔ(¨¨a°°HÑ=Ô=Ð=Ð=ÝÔ0°Ñ5Ô5ð <ÝÔ(¨¨c°3¸Ñ;Ô;Ð;àˆDŒIð  ˆDŒLàŒ|ð RÝ!&§¢¡¤�”Ø”?ð $Ø(,�DÔ%Ð%à—M’M‘O”O�Oð ð R §¢Ñ 0Ô 0× 9Ò 9¸%Ñ @Ô @ð RÀHð RÐQVÐZb×ZhÒZhÑZjÔZjÐQjÐQjðRØ ×/Ò/Ñ1Ô1˜˜øÝ$ð Rð Rð RÝ/°!Ò3Ð3½Ñ8HÔ8HÐ8HÝ+Ð,IÑJÔJÐPQÐQøøøøðRøøøõ ð ;Ý#-¨t¬y½%Ô:KÑ#LÔ#L�Ô ØÔ#ð ;Ý',Ô';�DÔ$Ð$å',Ô':�DÔ$à#;Ð Ð Ð øÐ#;Ð Ð;Ð;Ð;Ð;s‚   ‹A:Y Â
HY ÊJ. Ê,Y Ê.
K&Ê8)K!Ë!K&Ë&EY Ð4/Q$ Ñ#Y Ñ$
R#Ñ.0RÒR#Ò#DY Ö4W	 ×Y ×	
X×)W<×<XØAY ÙY!c                ó   — | j         S r,   )rÐ  r.   s    r)   Ú__len__zDocument.__len__ñ  s
   € ØŒÐr*   rÑ  c                óž   — | j         rdnd}| j        €&| j        dk    r|› d| j        d›d�S |› d| j        › d�S |› d| j        › d| j        d›d�S )	Nzclosed r\   zDocument(<new PDF, doc# r
  z>)z
Document('ú')z', <memory, doc# )rÂ   r	   r   r  )r(   rÂ   s     r)   rí   zDocument.__repr__ô  s€   € Ø!%¤Ð7�I�I°Rˆ	ØŒ;ÐØŒy˜BŠˆØ#ÐQÐQ¸T¼^ÐQÐQÐQÐQÐQØÐ8Ð8¨4¬9Ð8Ð8Ð8Ð8ØÐWÐW t¤yÐWÐWÀ4Ä>ÐWÐWÐWÐWÐWr*   c           	     óø  — | j         s| j        rt          d¦  «        ‚t          | d¬¦  «        }|j        sdS t          j        t          j        |¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }|j        rt          j	        |¦  «        st          d	¦  «        ‚t          j        |¦  «        }t          ||¦  «        }t          j        |||¦  «         dS )
zAdd new form font.údocument closed or encryptedr   ©rÍ   NÚRootÚAcroFormÚDRÚFontzPDF has no form fonts yet)rÂ   r   rÃ   rÎ   rÌ   r�   r  Úpdf_trailerr  rz  rÞ   Úpdf_new_nameÚJM_pdf_obj_from_strrN  )r(   r   rW  rZ  ÚfontsrŸ  rF   s          r)   Ú_addFormFontzDocument._addFormFontü  sø   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	ØˆFÝÔ#ÝÔ! 3Ñ'Ô'Ý˜Ñ Ô Ý˜Ñ$Ô$Ý˜‘”Ý˜Ñ Ô ñô ˆð Ôð 	=¥uÔ'8¸%Ñ'@Ô'@ð 	=ÝÐ ;Ñ<Ô<Ð<ÝÔ Ñ%Ô%ˆÝ  dÑ+Ô+ˆÝÔ˜E 1 aÑ(Ô(Ð(Ð(Ð(r*   Úidxc                ód   — |                       ¦   «         |         }|                      |¦  «         dS )z$Delete TOC / bookmark item by index.N)Úget_outline_xrefsÚ_remove_toc_item)r(   r8  r  s      r)   Údel_toc_itemzDocument.del_toc_item  s4   € ð
 ×%Ò%Ñ'Ô'¨Ô,ˆØ×Ò˜dÑ#Ô#Ð#Ð#Ð#r*   c                ó  — | j         s| j        rt          d¦  «        ‚g }t          | d¬¦  «        }|j        s|S t          j        t          j        |¦  «        t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        }|j        s|S t          j        |t          d¦  «        ¦  «        }t          ||¦  «        }t          |¦  «        }t          j        |¦  «        }t          j        ||¦  «         t          j        |t          d¦  «        ¦  «         t          |¦  «        D ]*}t          ||¦  «        \  }	}
t          j        ||
¦  «         Œ+|                     |¦  «         |}|                      ¦   «          |S )zDelete the TOC.r-  r   r.  r/  ÚOutlinesÚFirst)rÂ   r   rÃ   rÎ   rÌ   r�   r  r3  r  ÚJM_outline_xrefsr7   r  Úpdf_delete_objectrA  rL  ÚJM_INT_ITEMrk   r  )r(   ÚxrefsrZ  r;  ÚolrootÚfirstÚ
xref_countÚolroot_xrefr®   r  r  r  s               r)   Ú_delToCzDocument._delToC  su  € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØˆÝ˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	ØˆLåÔ!¥%Ô"3°CÑ"8Ô"8½(À6Ñ:JÔ:JÑKÔKˆåÔ# D­(°:Ñ*>Ô*>Ñ?Ô?ˆØÔ ð 	ØˆLåÔ" 6­8°GÑ+<Ô+<Ñ=Ô=ˆå  ¨Ñ.Ô.ˆÝ˜‘Z”Zˆ
åÔ& vÑ.Ô.ˆÝÔ  [Ñ1Ô1Ð1ÝÔ˜4¥¨*Ñ!5Ô!5Ñ6Ô6Ð6å�zÑ"Ô"ð 	/ð 	/ˆAÝ! %¨Ñ+Ô+‰GˆAˆtÝÔ# C¨Ñ.Ô.Ð.Ð.Ø�Š�[Ñ!Ô!Ð!ØˆØ�Š‰ŒˆØˆ
r*   c                óœ   — t          | ¦  «        }t          j        ||¦  «         |j        j        rt          j        |j        ¦  «         d S d S r,   )rÎ   r�   Úpdf_delete_pagerÌ   Úrev_page_mapÚll_pdf_drop_page_tree)r(   rÕ  rZ  s      r)   Ú_delete_pagezDocument._delete_page8  sR   € Ý˜tÑ$Ô$ˆÝÔ˜s CÑ(Ô(Ð(ØŒ>Ô&ð 	9ÝÔ'¨¬Ñ8Ô8Ð8Ð8Ð8ð	9ð 	9r*   c                óÂ   — t          | ¦  «        }t          |dt          j        |¦  «        dz
  ¦  «        st	          t
          ¦  «        ‚t          j        ||¦  «         dS )zDelete object.r   N)rÎ   r   r�   r‡  rÃ   rˆ  rA  ©r(   r  rZ  s      r)   Ú_deleteObjectzDocument._deleteObject>  sZ   € å˜tÑ$Ô$ˆÝ˜˜a¥Ô!3°CÑ!8Ô!8¸Ñ!:Ñ;Ô;ð 	,Ý�lÑ+Ô+Ð+ÝÔ  TÑ*Ô*Ð*Ð*Ð*r*   r1  Údoc1ú
'Document'Údoc2Ú	from_pageÚto_pageÚstart_atc                óò  ‡— d„ }|dk     rd}n||j         k    r|j         dz
  }n|}|dk     s||j         k    r|j         dz
  }n|}|dk     rt          d¦  «        ‚|Š||k    rdnd}t          t          |||z   |¦  «        ¦  «        }	ˆfd„t          t	          |	¦  «        ¦  «        D ¦   «         }
g }g }t          t	          |	¦  «        ¦  «        D ]f}|	|         }|
|         }|                     |¦  «        }|                      |¦  «        }|                     |¦  «         |                     |¦  «         Œgt          t	          |¦  «        ¦  «        D �]$}||	|                  }|                     ¦   «         }t	          |¦  «        dk    rd}Œ;| |
|                  }t          j	        ¦   «         }t          |¦  «        }t          j        |t          j        d¦  «        |¦  «         t          t          j        |¦  «        ¦  «        }g }|D ]C}|d         t          k    r|d	         |	vrŒ ||||	|¦  «        }|r|                     |¦  «         ŒD|g k    r"|                     t#          |¦  «        ¦  «         �Œ&dS )
zÃInsert links contained in copied page range into destination PDF.

        Parameter values **must** equal those of method insert_pdf(), which must
        have been previously executed.
        c           	     óÔ  — | d         |z  }t          t          |¦  «        ¦  «        }| d         t          k    rZt          d         }|                     | d         ¦  «        }| d         |z  } |||         |j        |j        | d         |¦  «        }	�nU| d         t          k    rÙ| d         dk    r‹t          d         }|                      dt          dd¦  «        ¦  «        }
t          |
¦  «        t          urt          dd¦  «        }
 || d         |
j        |
j        | d         | d	         | d	         |¦  «        }	n­t          d
         }t          | d         ¦  «        }|dd…         }| d	         } ||||¦  «        }	nk| d         t          k    r't          d         } || d	         | d	         |¦  «        }	n3| d         t          k    r t          d         } || d         |¦  «        }	nd}	|	S )z5Create annotation object string for a passed-in link.ÚfromÚkindÚgoto1rÖ   ÚtoÚzoomr   Úgotor1ra   Úgotor2r   r1  ÚlaunchÚurir\   )r¶   rµ   Ú	LINK_GOTOÚ
annot_skelÚindexr(  r)  Ú
LINK_GOTORr8   rì  rÈ   Úget_pdf_strÚLINK_LAUNCHÚLINK_URI)ÚlnkÚxref_dstÚpno_srcrÞ  r  r÷   Útxtr8  r¢  rß   Úpntr\  rÎ  s                r)   Ú	cre_annotz%Document._do_links.<locals>.cre_annotU  sÜ  € ð �F”˜cÑ!ˆAÝ�U 1™XœXÑ&Ô&ˆDØ�6Œ{�iÒ'Ð'Ý  Ô)�Ø—m’m C¨¤KÑ0Ô0�Ø˜”I ‘O�Ø˜˜H SœM¨1¬3°´°S¸´[À$ÑGÔG�‘à�V”¥
Ò*Ð*Ø�v”; !Ò#Ð#Ý$ XÔ.�CØŸ'š' $­¨a°©¬Ñ4Ô4�CÝ˜C‘y”y­Ð-Ð-Ý# A q™kœk˜Ø˜CØ˜FœØœØœØ˜FœØ˜FœØ˜FœØñô �E�Eõ % XÔ.�CÝ$ S¨¤YÑ/Ô/�BØ˜A˜b˜Dœ�BØ˜Fœ�AØ˜C  A tÑ,Ô,�E�Eà�V”¥Ò+Ð+Ý  Ô*�Ø˜˜C œK¨¨V¬°dÑ;Ô;��à�V”¥Ò(Ð(Ý  Ô'�Ø˜˜C œJ¨Ñ-Ô-��ð �àˆLr*   r   r   z'start_at' must be >= 0r1  c                ó   •— g | ]}‰|z   ‘ŒS r-   r-   )r­   r®   Úsas     €r)   r¯   z&Document._do_links.<locals>.<listcomp>š  s   ø€ Ð7Ð7Ð7˜a�2˜‘6Ð7Ð7Ð7r*   NrZ  rÖ   )rÐ  rÃ   r´   rL  r7   Ú	page_xrefrk   Ú	get_linksr�   rr  rÚ   r#  rh  ru  Úfz_invert_matrixrb  Ú_addAnnot_FromStringrµ   )rQ  rS  rT  rU  rV  rn  ru  r¸  Úincrrk  Úpno_dstÚxref_srcrj  r®   Úp_srcÚp_dstÚold_xrefÚnew_xrefÚpage_srcÚlinksÚpage_dstrÞ  Úpage_src_pdf_documentÚictmÚlink_tabr  Ú
annot_textrp  s                              @r)   Ú	_do_linkszDocument._do_linksE  s´  ø€ ð ,	ð ,	ð ,	ðb �qŠ=ˆ=ØˆBˆBØ˜$œ/Ò)Ð)Ø” 1Ñ$ˆBˆBàˆBà�QŠ;ˆ;˜' T¤_Ò4Ð4Ø” 1Ñ$ˆBˆBàˆBà�aŠ<ˆ<ÝÐ6Ñ7Ô7Ð7Øˆà˜"’H�Hˆqˆq "ˆõ •u˜R  d¡¨DÑ1Ô1Ñ2Ô2ˆØ7Ð7Ð7Ð7¥5­¨W©¬Ñ#6Ô#6Ð7Ñ7Ô7ˆð ˆØˆÝ•s˜7‘|”|Ñ$Ô$ð 	&ð 	&ˆAØ˜A”JˆEØ˜A”JˆEØ—~’~ eÑ,Ô,ˆHØ—~’~ eÑ,Ô,ˆHØ�OŠO˜HÑ%Ô%Ð%Ø�OŠO˜HÑ%Ô%Ð%Ð%õ •s˜8‘}”}Ñ%Ô%ð  	@ñ  	@ˆAØ˜G AœJÔ'ˆHØ×&Ò&Ñ(Ô(ˆEõ
 �5‰zŒz˜QŠˆØ�ØØ˜G AœJÔ'ˆHõ ”.Ñ"Ô"ˆCÝ$0°Ñ$:Ô$:Ð!ÝÔ$Ð%:½E¼LÈ¹O¼OÈSÑQÔQÐQÝ�%Ô0°Ñ5Ô5Ñ6Ô6ˆDàˆHØð 0ð 0�Ø�V”9¥	Ò)Ð)¨q°¬yÀÐ/GÐ/GØØ&˜Y q¨(°G¸TÑBÔB�
Øð 0Ø—O’O JÑ/Ô/Ð/øØ˜2Š~ˆ~Ø×-Ò-­u°X©¬Ñ?Ô?Ð?ùðA 	@ð  	@r*   rk  rÖ  c           	     óä  ‡,‡-‡.— |j         sdS d„ Š,d„ Š.ˆ-fd„Š-ˆ-fd„}dˆ,ˆ.fd„	}d„ }	t          j        | ¦  «        }
t          j        |¦  «        }| j         rˆ |	| ¦  «        }|                     t	          d	¦  «        ¦  «        }|                     t	          d
¦  «        ¦  «        }|                     ¦   «         s#|                     t	          d
¦  «        d¦  «        }�n–t          j         |	|¦  «        ¦  «        }|                     t	          d	¦  «        ¦  «         |                     t	          d	¦  «        d¦  «         |                     t	          d
¦  «        ¦  «         |                     t	          d
¦  «        d¦  «         t          j	        ||¦  «        }t          j
        |
|¦  «        }|                     t	          d	¦  «        ¦  «        }|                     t	          d
¦  «        ¦  «        }|                     ¦   «         }t          j        |
|d¦  «        }t          j        t          j        |
¦  «        t	          d¦  «        ¦  «        }|                     t	          d¦  «        |¦  «         ||k    rt          ||dz   ¦  «        }nt          ||dz
  d¦  «        }i }|D ]{}||         }d„ |                     ¦   «         D ¦   «         D ]R}t          j        ||¦  «        }|                     t	          d¦  «        ¦  «          ||¦  «        \  }}|r	d|g dœ||<   ŒSŒ||                     ¦   «         D ]¢}t          j        ||¦  «        }t          j	        ||¦  «        }t          j
        |
|¦  «        } ‰-|g ¦  «        }|                     ¦   «         } t          j        |
| d¦  «        }!|                     |!¦  «         | ||         d<   |||         d<   Œ£t          t)          |¦  «        ¦  «        D �]k}| ||z            }"|||                  }d„ |                     ¦   «         D ¦   «         }#|#sŒ=t          j        |"¦  «        }$t          j        |$                     ¦   «         t	          d¦  «        ¦  «        }%t          j        |%¦  «        s5t          j        |$                     ¦   «         t	          d¦  «        d¦  «        }%|#D �]™}t          j        ||¦  «        }t          j        t          j        |d¦  «        ¦  «        }&t          j        |                     t	          d¦  «        ¦  «        ¦  «        }|dk    r­	 t          j	        ||¦  «        }'n,# t2          $ r}(t5          d|›d|(› �¦  «         Y d}(~(Œ´d}(~(ww xY wt          j
        |
|'¦  «        })|)                     ¦   «         }t          j        |
|d¦  «        }*t          j        |%|*¦  «         t          j        ||*¦  «         n\||         }|d                              |¦  «        }+|d         |+         }t          j        |
|d¦  «        }*t          j        |%|*¦  «         |&rt          j        ||*¦  «         �Œ›�Œm ||
||¬¦  «         dS )zµInsert widgets of copied page range into target PDF.

        Parameter values **must** equal those of method insert_pdf() which
        must have been previously executed.
        Nc                ót  — t          |                      ¦   «         ¦  «        D ]•}|                      |¦  «        }|                     t	          d¦  «        ¦  «        }t          |                     ¦   «         ¦  «        D ]:}|                     |¦  «        }|                     t	          d¦  «        |¦  «         Œ;Œ–dS )z3 Make sure all kids have correct "Parent" pointers.ÚKidsr˜  N)rL  r›  rœ  r  r  rN  )Úacro_fieldsr®   rê   Úkidsr�  Úkids         r)   Úclean_kid_parentsz/Document._do_widgets.<locals>.clean_kid_parentsÜ  sÀ   € å˜;×4Ò4Ñ6Ô6Ñ7Ô7ð Að A�Ø$×2Ò2°1Ñ5Ô5�Ø×*Ò*­8°FÑ+;Ô+;Ñ<Ô<�Ý˜t×1Ò1Ñ3Ô3Ñ4Ô4ð Að A�AØ×,Ò,¨QÑ/Ô/�CØ×$Ò$¥X¨hÑ%7Ô%7¸Ñ@Ô@Ð@Ð@ðAðAð Ar*   c           	     ó¨  — d„ }d„ }t          j        | |¦  «        }t          j        | |¦  «        }|                     t          d¦  «        ¦  «        }	|                     t          d¦  «        ¦  «        }
|	                     ¦   «         r || |||	||
¦  «         dS |
                     ¦   «         r || |||
||	¦  «         dS  || ||||||¦  «         dS )a~  Called for each pair of widgets having the same name.

            Args:
                pdf: target MuPDF document
                acro_fields: object Root/AcroForm/Fields
                xref1, xref2: widget xrefs having same names
                name: (str) the name

            Result:
                Defined or updated widget parent that points to both widgets.
            c                óî  — t          j        | |d¦  «        }t          j        | |d¦  «        }|                     |¦  «        }|                     |¦  «         |                     ¦   «         sqt          j        | |¦  «        }	|	                     t          d¦  «        ¦  «         |	                     t          d¦  «        |¦  «         | 	                    |¦  «         dS t          |                     ¦   «         ¦  «        D ]w}
|                     |
¦  «        }|                     t          d¦  «        |¦  «         t          j        | |                     ¦   «         d¦  «        }| 	                    |¦  «         ŒxdS )zûMerge widget in xref2 into "Kids" list of widget xref1.

                Args:
                    xref1, kids1: target widget and its "Kids" array.
                    xref2, kids2: source wwidget and its "Kids" array (may be empty).
                r   r  r˜  N)r�   r‰  Úpdf_array_findr�  Úpdf_is_arrayÚpdf_load_objectrA  r  rN  Úpdf_array_pushrL  r›  rœ  r  )rZ  r‡  Úxref1Úkids1Úxref2Úkids2Úw1_indÚw2_indr8  r<  r®   r‰  Úkid_inds                r)   Ú	re_targetz=Document._do_widgets.<locals>.join_widgets.<locals>.re_targetò  sc  € õ Ô/°°U¸AÑ>Ô>�ÝÔ/°°U¸AÑ>Ô>�à!×0Ò0°Ñ8Ô8�Ø×,Ò,¨SÑ1Ô1Ð1à×)Ò)Ñ+Ô+ð 6Ý"Ô2°3¸Ñ>Ô>�Fð ×'Ò'­°©¬Ñ6Ô6Ð6Ø×'Ò'­°Ñ(:Ô(:¸FÑCÔCÐCð ×(Ò(¨Ñ0Ô0Ð0Ð0Ð0å" 5×#6Ò#6Ñ#8Ô#8Ñ9Ô9ð 6ð 6˜Ø#×1Ò1°!Ñ4Ô4˜Ø×(Ò(­°(Ñ);Ô);¸VÑDÔDÐDÝ"'Ô"8¸¸c¿nºnÑ>NÔ>NÐPQÑ"RÔ"R˜Ø×,Ò,¨WÑ5Ô5Ð5Ð5ð	6ð 6r*   c                óh  — t          j        | d¦  «        }|                     t          d¦  «        |¦  «         |                     t          d¦  «        d¦  «        }t          j        | |¦  «        }	|	                     ¦   «         }
t          j        | |
d¦  «        }|                     t          d¦  «        ¦  «        }| 	                    t          d¦  «        ¦  «         |	 
                    t          d¦  «        |¦  «         |                     t          d¦  «        ¦  «        }| 	                    t          d¦  «        ¦  «         |	 
                    t          d¦  «        |¦  «         | 	                    t          d¦  «        ¦  «         | 
                    t          d¦  «        |¦  «         | 	                    t          d¦  «        ¦  «         | 
                    t          d¦  «        |¦  «         t          j        | |d¦  «        }t          j        | |d¦  «        }|                     |¦  «         |                     |¦  «         |                     |¦  «        }|                     |¦  «         |                     |¦  «        }|                     |¦  «         |                     |¦  «         d	S )
aÐ  Make new "Parent" for two widgets with same name.

                Args:
                    xref1, w1: first widget
                    xref2, w2: second widget
                    name: field name

                Result:
                    Both widgets have no "Kids". We create a new object with the
                    name and a "Kids" array containing the widgets.
                    Original widgets must be removed from AcroForm/Fields.
                r   r  r†  r   r   ÚFTÚAAr˜  N)r�   rS  r€  r  Úpdf_dict_put_arrayÚpdf_add_objectr  r‰  r  rA  rN  r�  r�  r�  )rZ  r‡  r‘  Úw1r“  Úw2r   Únewrˆ  Únew_objÚnew_obj_xrefÚnew_indÚftÚaaÚind1Úind2r8  s                    r)   Ú
new_targetz>Document._do_widgets.<locals>.join_widgets.<locals>.new_target  sD  € õ Ô(¨¨aÑ0Ô0�Ø×,Ò,­X°c©]¬]¸DÑAÔAÐAØ×-Ò-­h°vÑ.>Ô.>ÀÑBÔB�ÝÔ.¨s°CÑ8Ô8�Ø&×1Ò1Ñ3Ô3�ÝÔ0°°lÀAÑFÔF�ð —_’_¥X¨d¡^¤^Ñ4Ô4�Ø—’¥¨¡¤Ñ/Ô/Ð/Ø×$Ò$¥X¨d¡^¤^°RÑ8Ô8Ð8à—_’_¥X¨d¡^¤^Ñ4Ô4�Ø—’¥¨¡¤Ñ/Ô/Ð/Ø×$Ò$¥X¨d¡^¤^°RÑ8Ô8Ð8ð —’¥¨¡¤Ñ.Ô.Ð.Ø—’¥¨Ñ 2Ô 2°GÑ<Ô<Ð<Ø—’¥¨¡¤Ñ.Ô.Ð.Ø—’¥¨Ñ 2Ô 2°GÑ<Ô<Ð<õ Ô-¨c°5¸!Ñ<Ô<�ÝÔ-¨c°5¸!Ñ<Ô<�Ø×#Ò# DÑ)Ô)Ð)Ø×#Ò# DÑ)Ô)Ð)ð "×0Ò0°Ñ6Ô6�Ø×,Ò,¨SÑ1Ô1Ð1Ø!×0Ò0°Ñ6Ô6�Ø×,Ò,¨SÑ1Ô1Ð1à×*Ò*¨7Ñ3Ô3Ð3Ð3Ð3r*   r†  N)r�   r�  r  r  rŽ  )rZ  r‡  r‘  r“  r   r˜  r¨  rž  rŸ  r’  r”  s              r)   Újoin_widgetsz*Document._do_widgets.<locals>.join_widgetså  s  € ð6ð 6ð 6ð<04ð 04ð 04õd Ô& s¨EÑ2Ô2ˆBÝÔ& s¨EÑ2Ô2ˆBØ—O’O¥H¨VÑ$4Ô$4Ñ5Ô5ˆEØ—O’O¥H¨VÑ$4Ô$4Ñ5Ô5ˆEð ×!Ò!Ñ#Ô#ð IØ�	˜#˜{¨E°5¸%ÀÑGÔGÐGÐGÐGØ×#Ò#Ñ%Ô%ð IØ�	˜#˜{¨E°5¸%ÀÑGÔGÐGÐGÐGà�
˜3 ¨U°B¸¸rÀ4ÑHÔHÐHÐHÐHr*   c           	     óº  •— t          j        | t          d¦  «        ¦  «        }|                     ¦   «         s|S t	          |                     ¦   «         ¦  «        D ]}|                     |¦  «        }t          j        t          j        |t          d¦  «        ¦  «        ¦  «        r ‰||¦  «        }ŒX|                     | 	                    ¦   «         ¦  «         Œ€|S )z^Return xref list of leaf kids for a parent.

            Call with an empty list.
            r†  )
r�   r  r  rŽ  rL  r›  rœ  rz  rk   r  )rê   Ú	kids_listrˆ  r®   r‰  Úget_kidss        €r)   r¬  z&Document._do_widgets.<locals>.get_kidsO  sÑ   ø€ õ
 Ô% f­h°vÑ.>Ô.>Ñ?Ô?ˆDØ×$Ò$Ñ&Ô&ð !Ø Ð Ý˜4×-Ò-Ñ/Ô/Ñ0Ô0ð 7ð 7�Ø×(Ò(¨Ñ+Ô+�ÝÔ$¥UÔ%7¸½XÀfÑ=MÔ=MÑ%NÔ%NÑOÔOð 7Ø ( ¨¨iÑ 8Ô 8�I�Ià×$Ò$ S§^¢^Ñ%5Ô%5Ñ6Ô6Ð6Ð6ØÐr*   c                ó¨   •— g }t          j        | t          d¦  «        ¦  «        }|                     ¦   «         }|dk    r||fS  ‰||¦  «        }||fS )z:Get the xref of top "Parent" and the list of leaf widgets.r˜  r   )r�   r  r  r  )r<  r«  rê   Úparent_xrefr¬  s       €r)   Ú
kids_xrefsz(Document._do_widgets.<locals>.kids_xrefs_  se   ø€ àˆIÝÔ'¨µ¸Ñ0BÔ0BÑCÔCˆFØ ×+Ò+Ñ-Ô-ˆKØ˜aÒÐØ" IÐ-Ð-Ø ˜ ¨Ñ3Ô3ˆIØ 	Ð)Ð)r*   Fc                ó|  •— i }t          t          j        |¦  «        ¦  «        D ]}}t          j        ||¦  «        }|                     ¦   «         }t          j        |t          d¦  «        ¦  «        }|                     |g ¦  «        }|                     |¦  «         |||<   Œ~| 	                    ¦   «         D ]y\  }	}t          |¦  «        dk     rŒ|dd…         \  }
}|r ‰| ||
||	¦  «         Œ8|	d|› d�z   }t          j        | |¦  «        }|                     t          d¦  «        |¦  «         Œz ‰|¦  «         dS )z6Handle any widget name duplicates caused by the merge.r  r   Nz [rm  )rL  r�   r›  rœ  r  Úpdf_dict_get_text_stringr  r8   rk   rB   r7   r�  r€  )rZ  r‡  Újoin_duplicatesÚnamesr®   Úwobjectr  r  rC  r   Úxref0r‘  ÚnewnamerŠ  r©  s                €€r)   Údeduplicate_namesz/Document._do_widgets.<locals>.deduplicate_namesi  sW  ø€ àˆEõ �5Ô.¨{Ñ;Ô;Ñ<Ô<ð !ð !�ÝÔ-¨k¸1Ñ=Ô=�Ø×)Ò)Ñ+Ô+�õ Ô2°7½HÀS¹M¼MÑJÔJ�ØŸ	š	 ! RÑ(Ô(�Ø—’˜TÑ"Ô"Ð"Ø ��a‘�à$Ÿ{š{™}œ}ð 	Mð 	M‘��eÝ�u‘:”: ’>�>ØØ$ R a Rœy‘��uØ"ð MØ �L  k°5¸%ÀÑFÔFÐFÐFà" ]¨% ] ] ]Ñ2�GÝ#Ô3°C¸Ñ?Ô?�GØ×4Ò4µX¸c±]´]ÀGÑLÔLÐLÐLàÐ˜kÑ*Ô*Ð*Ð*Ð*r*   c                óx   — t          j        | ¦  «        }t          j        t          j        |¦  «        d¦  «        S )z,Retrieve the AcroForm dictionary form a PDF.úRoot/AcroForm)r�   Úpdf_document_from_fz_documentÚpdf_dict_getpr3  )r*  rZ  s     r)   Úget_acroformz*Document._do_widgets.<locals>.get_acroform…  s0   € åÔ5°cÑ:Ô:ˆCåÔ&¥uÔ'8¸Ñ'=Ô'=¸ÑOÔOÐOr*   ÚFieldsrì  r   r   r/  r0  r   r1  c                ó:   — g | ]\  }}}|t           j        k    ¯|‘ŒS r-   ©r�   r4  ©r­   r  Úwtyper  s       r)   r¯   z(Document._do_widgets.<locals>.<listcomp>¹  s6   € ð ð ð á"�D˜% Ø�EÔ2Ò2Ð2ð à2Ð2Ð2r*   ÚP)r{  Úold_kidsÚnew_kidsr{  rÄ  c                ó:   — g | ]\  }}}|t           j        k    ¯|‘ŒS r-   r¿  rÀ  s       r)   r¯   z(Document._do_widgets.<locals>.<listcomp>Ý  s6   € ð ð ð á"�D˜% Ø�EÔ2Ò2Ð2ð à2Ð2Ð2r*   r—  zAA/Cr˜  zcannot copy widget at xref=r{   rÃ  )r²  ©F)Úis_form_pdfr�   rº  r  r  rŽ  rœ  Úpdf_deep_copy_objrA  Úpdf_graft_mapped_objectr�  r  r‰  r3  rN  rL  Úannot_xrefsr�  Úkeysr�  r7   rÙ   r  rz  r»  rg   r   rd  )/rk  rÖ  ÚgraftmaprT  rU  rV  r²  r¯  r·  r¼  ÚtarpdfÚsrcpdfÚacror‡  Útar_coÚ
acro_graftÚacro_tarÚtar_xrefÚacro_tar_indr;  Ú	src_rangeÚparentsr®   Úsrc_pager  Úw_objr®  rÃ  rê   Úparent_graftÚ
parent_tarÚkids_xrefs_newÚparent_xref_newÚ
parent_indÚtar_pageÚw_xrefsÚtar_page_pdfÚ
tar_annotsÚis_aacÚw_obj_graftr`  Ú	w_obj_tarÚw_obj_tar_indr8  rŠ  r¬  r©  s/                                               @@@r)   Ú_do_widgetszDocument._do_widgetsË  s  øøø€ ð Œð 	ØˆFð	Að 	Að 	Aðh	Ið h	Ið h	IðT	ð 	ð 	ð 	ð 	ð 	*ð 	*ð 	*ð 	*ð 	*ð	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð8	Pð 	Pð 	Põ Ô4°SÑ9Ô9ˆÝÔ4°SÑ9Ô9ˆàŒ?ð 	Bà�< Ñ$Ô$ˆDà×+Ò+­H°XÑ,>Ô,>Ñ?Ô?ˆKØ×&Ò&¥x°¡~¤~Ñ6Ô6ˆFØ×&Ò&Ñ(Ô(ð DØ×0Ò0µ¸$±´ÀÑCÔC�ùõ Ô*¨<¨<¸Ñ+<Ô+<Ñ=Ô=ˆDð ×Ò�h xÑ0Ô0Ñ1Ô1Ð1Ø×#Ò#¥H¨XÑ$6Ô$6¸Ñ:Ô:Ð:Ø×Ò�h t™nœnÑ-Ô-Ð-Ø×#Ò#¥H¨T¡N¤N°AÑ6Ô6Ð6õ Ô6°xÀÑFÔFˆJõ Ô+¨F°JÑ?Ô?ˆHØ"×/Ò/µ¸Ñ0BÔ0BÑCÔCˆKØ×*Ò*­8°D©>¬>Ñ:Ô:ˆFð  ×*Ò*Ñ,Ô,ˆHÝ Ô1°&¸(ÀAÑFÔFˆLÝÔ%¥eÔ&7¸Ñ&?Ô&?ÅÈ&ÑAQÔAQÑRÔRˆDØ×Ò�h zÑ2Ô2°LÑAÔAÐAà˜ÒÐÝ˜i¨°1©Ñ5Ô5ˆIˆIå˜i¨°1©°bÑ9Ô9ˆIàˆð ð 	ð 	ˆAØ˜1”vˆHðð à&.×&:Ò&:Ñ&<Ô&<ðñ ô ð ð �õ
 Ô-¨f°dÑ;Ô;�Ø×"Ò"¥8¨C¡=¤=Ñ1Ô1Ð1ð )3¨
°5Ñ(9Ô(9Ñ%�˜XØð à$%Ø$,Ø$&ð,ð ,�G˜KÑ(øðð" —L’L‘N”Nð 		7ð 		7ˆDÝÔ*¨6°4Ñ8Ô8ˆFÝ Ô8¸À6ÑJÔJˆLÝÔ-¨f°lÑCÔCˆJØ%˜X j°"Ñ5Ô5ˆNØ(×3Ò3Ñ5Ô5ˆOÝÔ/°¸ÈÑKÔKˆJØ×&Ò& zÑ2Ô2Ð2Ø(7ˆG�DŒM˜*Ñ%Ø(6ˆG�DŒM˜*Ñ%Ð%å•s˜9‘~”~Ñ&Ô&ð 8	@ñ 8	@ˆAà˜8 a™<Ô(ˆHð ˜9 Qœ<Ô(ˆHðð à&.×&:Ò&:Ñ&<Ô&<ðñ ô ˆGð
 ð Øõ !Ô6°xÑ@Ô@ˆLõ Ô+¨L×,<Ò,<Ñ,>Ô,>ÅÈÑ@RÔ@RÑSÔSˆJÝÔ% jÑ1Ô1ð Ý"Ô5Ø ×$Ò$Ñ&Ô&­°Ñ(:Ô(:¸Añô �
ð  ð @ñ @�ÝÔ-¨f°dÑ;Ô;�õ Ô*­5Ô+>¸uÀfÑ+MÔ+MÑNÔN�õ $Ô.Ø×&Ò&¥x°Ñ'9Ô'9Ñ:Ô:ñô �ð  !Ò#Ð#ð!Ý&+Ô&CÀHÈeÑ&TÔ&T˜˜øÝ$ð !ð !ð !Ý'Ð(MÀÐ(MÐ(MÈ!Ð(MÐ(MÑNÔNÐNØ ˜˜˜˜øøøøð!øøøõ !&Ô 4°V¸[Ñ IÔ I�IØ(×3Ò3Ñ5Ô5�HÝ$)Ô$:¸6À8ÈQÑ$OÔ$O�MÝÔ(¨°]ÑCÔCÐCÝÔ(¨°mÑDÔDÐDÐDà$ [Ô1�FØ  Ô,×2Ò2°4Ñ8Ô8�CØ% jÔ1°#Ô6�HÝ$)Ô$:¸6À8ÈQÑ$OÔ$O�MÝÔ(¨°]ÑCÔCÐCð ð @ÝÔ(¨°Ñ?Ô?Ð?ùñ=@ð@ 	Ð˜& +¸ÐOÑOÔOÐOÐOÐOs   Ô?UÕ
U>ÕU9Õ9U>c           	     ó¼  — t          | ¦  «        }t          j        t          j        |¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        ¦  «        }t          j        |d|z  dz   ¦  «        }t          j        |t	          d¦  «        t	          d¦  «        ¦  «        }t          j        |¦  «        }t          |¦  «        }|S )Nr/  ÚNamesÚEmbeddedFilesr   r   r¦  r§  )rÎ   r�   r  r3  r  rœ  r  r  )r(   r8  rZ  r³  ÚentryÚfilespecrÀ  Úconts           r)   Ú_embeddedFileGetzDocument._embeddedFileGet  s¹   € Ý˜tÑ$Ô$ˆÝÔ#ÝÔ! #Ñ&Ô&Ý˜Ñ Ô Ý˜Ñ!Ô!Ý˜Ñ)Ô)Ý˜Ñ!Ô!ñô ˆõ Ô# E¨1¨S©5°©7Ñ3Ô3ˆÝÔ& u­h°t©n¬n½hÀs¹m¼mÑLÔLˆÝÔ# HÑ-Ô-ˆÝ Ñ$Ô$ˆØˆr*   rC   útyping.Union[int, str]c                óÊ   — |                       ¦   «         }||v r|                     |¦  «        }n4|t          t          |¦  «        ¦  «        v r|}nt	          d|› d�¦  «        ‚|S )Nrë   z' not in EmbeddedFiles array.)Úembfile_namesrd  rL  r7   rÃ   )r(   rC   Ú	filenamesr8  s       r)   Ú_embeddedFileIndexzDocument._embeddedFileIndex   sp   € Ø×&Ò&Ñ(Ô(ˆ	Ø�9ÐÐØ—/’/ $Ñ'Ô'ˆCˆCØ•U�3˜y™>œ>Ñ*Ô*Ð*Ð*ØˆCˆCåÐD ÐDÐDÐDÑEÔEÐEØˆ
r*   c           	     ó�  — t          | ¦  «        }t          |¦  «        }|j        st          t          ¦  «        ‚t          j        t          j        |¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }t          j	        |¦  «        sˆt          j
        t          j        |¦  «        t          d¦  «        ¦  «        }	t          j        |d¦  «        }t          j        |	|t          d¦  «        t          d¦  «        t          d¦  «        ¦  «         t          |||||d¦  «        }
t          j        t          j        |
t          d¦  «        t          d¦  «        ¦  «        ¦  «        }t          j        |t          j        |¦  «        ¦  «         t          j        ||
¦  «         |S )Nr/  rè  ré  é   r   r¦  r§  )rÎ   r'  rÌ   r®  r(  r�   r  r3  r  rŽ  r  rK  r  ÚJM_embed_filer  r�  r‚  )r(   r   r-  rf   r  r¹  rZ  r}  r³  r;  Ú	fileentryr  s               r)   Ú_embfile_addzDocument._embfile_add*  s‰  € Ý˜tÑ$Ô$ˆÝ! 'Ñ*Ô*ˆØŒð 	-Ý�^Ñ,Ô,Ð,åÔ#ÝÔ! #Ñ&Ô&Ý˜Ñ Ô Ý˜Ñ!Ô!Ý˜Ñ)Ô)Ý˜Ñ!Ô!ñô ˆõ Ô! %Ñ(Ô(ð 		ÝÔ%¥eÔ&7¸Ñ&<Ô&<½hÀvÑ>NÔ>NÑOÔOˆDÝÔ'¨¨QÑ/Ô/ˆEÝÔØØÝ˜WÑ%Ô%Ý˜_Ñ-Ô-Ý˜WÑ%Ô%ñô ð õ " # t¨X°yÀ$ÈÑJÔJˆ	ÝÔÝÔ# I­x¸©~¬~½xÈ¹}¼}ÑMÔMñô ˆõ 	Ô˜U¥EÔ$=¸dÑ$CÔ$CÑDÔDÐDÝÔ˜U IÑ.Ô.Ð.Øˆr*   c           	     ó:  — t          | ¦  «        }t          j        t          j        |¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        ¦  «        }t          j        ||dz   ¦  «         t          j        ||¦  «         d S )Nr/  rè  ré  r   )rÎ   r�   r  r3  r  r�  )r(   r8  rZ  r³  s       r)   Ú_embfile_delzDocument._embfile_delI  s�   € Ý˜tÑ$Ô$ˆÝÔ#ÝÔ! #Ñ&Ô&Ý˜Ñ Ô Ý˜Ñ!Ô!Ý˜Ñ)Ô)Ý˜Ñ!Ô!ñô ˆõ 	Ô˜u c¨A¡gÑ.Ô.Ð.ÝÔ˜u cÑ*Ô*Ð*Ð*Ð*r*   c           	     ó¬  — t          | ¦  «        }d}d}t          j        |¦  «        }t          j        |t	          d¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        ¦  «        }t          j        |d|z  dz   ¦  «        }t          j        |t	          d¦  «        ¦  «        }	|	j        rt          j        |	¦  «        }||d<   t          j	        t          j        |t	          d	¦  «        ¦  «        ¦  «        }
t          |
¦  «        |t          <   t          j	        t          j        |t	          d
¦  «        ¦  «        ¦  «        }
t          |
¦  «        |t          <   t          j	        t          j        |t	          d¦  «        ¦  «        ¦  «        }
t          |
¦  «        |t          <   d}d}t          j        |t	          d¦  «        t	          d	¦  «        ¦  «        }t          j        |¦  «        }t          j        |t	          d¦  «        ¦  «        }|j        rt          j        |¦  «        }t          j        |t	          d¦  «        ¦  «        }|j        rt          j        |¦  «        }nKt          j        |t	          d¦  «        t	          d¦  «        ¦  «        }|j        rt          j        |¦  «        }||t           <   ||t"          <   |S )Nr   r/  rè  ré  r   r   ÚCIÚ
collectionr§  r©  rª  r1  r¦  r«  r  r¬  r­  )rÎ   r�   r3  r  r  rœ  r  rÌ   r  r  r²  r³  Údictkey_ufilenamer  r´  r  r¶  rµ  )r(   r8  ÚinfodictrZ  r  Úci_xrefÚtrailerr³  r¡  Úcir   Úlen_r  rö  s                 r)   Ú_embfile_infozDocument._embfile_infoU  s^  € Ý˜tÑ$Ô$ˆØˆØˆåÔ# CÑ(Ô(ˆåÔ#ØÝ˜Ñ Ô Ý˜Ñ!Ô!Ý˜Ñ)Ô)Ý˜Ñ!Ô!ñô ˆõ Ô  q¨¡u¨Q¡wÑ/Ô/ˆÝÔ ¥8¨D¡>¤>Ñ2Ô2ˆØŒ=ð 	+ÝÔ& rÑ*Ô*ˆGØ!(ˆ�ÑÝÔ'­Ô(:¸1½hÀs¹m¼mÑ(LÔ(LÑMÔMˆÝ%8¸Ñ%>Ô%>ˆÕ!Ñ"åÔ'­Ô(:¸1½hÀt¹n¼nÑ(MÔ(MÑNÔNˆÝ&9¸$Ñ&?Ô&?ˆÕ"Ñ#åÔ'­Ô(:¸1½hÀvÑ>NÔ>NÑ(OÔ(OÑPÔPˆÝ"3°DÑ"9Ô"9ˆ•ÑàˆØˆÝÔ'¨­8°D©>¬>½8ÀC¹=¼=ÑIÔIˆ	ÝÔ 	Ñ*Ô*ˆÝÔ˜y­(°8Ñ*<Ô*<Ñ=Ô=ˆØŒ<ð 	'ÝÔ# AÑ&Ô&ˆDåÔ˜y­(°4©.¬.Ñ9Ô9ˆØŒ<ð 	)ÝÔ! !Ñ$Ô$ˆBˆBåÔ# I­x¸Ñ/AÔ/AÅ8ÈFÑCSÔCSÑTÔTˆAØŒ|ð )ÝÔ% aÑ(Ô(�Ø!#ˆ•ÑØ#'ˆ•Ñ Øˆr*   c           	     óî  — t          | ¦  «        }t          j        t          j        |¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        ¦  «        }t          j        |¦  «        rqt          j        |¦  «        }t          d|d¦  «        D ]M}t          t          j	        t          j
        ||¦  «        ¦  «        ¦  «        }|                     |¦  «         ŒLdS dS )z Get list of embedded file names.r/  rè  ré  r   r   N)rÎ   r�   r  r3  r  rŽ  r›  rL  r²  r  rœ  rk   )r(   rw  rZ  r³  rE   r®   r  s          r)   Ú_embfile_nameszDocument._embfile_names„  só   € å˜tÑ$Ô$ˆÝÔ#ÝÔ! #Ñ&Ô&Ý˜Ñ Ô Ý˜Ñ!Ô!Ý˜Ñ)Ô)Ý˜Ñ!Ô!ñô ˆõ Ô˜eÑ$Ô$ð 	%ÝÔ# EÑ*Ô*ˆAÝ˜1˜a ‘^”^ð %ð %�Ý)ÝÔ0Ý!Ô/°°qÑ9Ô9ñô ñô �ð
 —’ Ñ$Ô$Ð$Ð$ð	%ð 	%ð%ð %r*   c           	     ó`  — t          | ¦  «        }d}t          j        t          j        |¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        ¦  «        }t          j        |d|z  dz   ¦  «        }	t          j        |	t	          d¦  «        t	          d¦  «        ¦  «        }
|
j        st          d	t          ¦  «         t          |¦  «        }|r"|j        r|j        st          t          ¦  «        ‚|j        rš|r˜|j        r‘t          ||
|d¦  «         t          j        |¦  «        \  }}t          j        |¦  «        }t          j        |
t	          d
¦  «        |¦  «         t          j        |
|t	          d¦  «        t	          d¦  «        ¦  «         t          j        |
¦  «        }|r#t          j        |	t	          d¦  «        |¦  «         |r#t          j        |	t	          d¦  «        |¦  «         |r#t          j        |	t	          d¦  «        |¦  «         |S )Nr   r/  rè  ré  r   r   r¦  r§  r  r  r¬  r­  r©  rª  )rÎ   r�   r  r3  r  rœ  rÌ   r°  r±  r'  r®  r(  r)  r  r  rN  r  r  r€  )r(   r8  r-  rf   r  r¹  rZ  r  r³  rê  rë  r  r7   r  r  s                  r)   Ú_embfile_updzDocument._embfile_upd˜  s  € Ý˜tÑ$Ô$ˆØˆÝÔ#ÝÔ! #Ñ&Ô&Ý˜Ñ Ô Ý˜Ñ!Ô!Ý˜Ñ)Ô)Ý˜Ñ!Ô!ñô ˆõ Ô# E¨1¨S©5°©7Ñ3Ô3ˆåÔ& u­h°t©n¬n½hÀs¹m¼mÑLÔLˆØÔ"ð 	EÝÐ-Õ/CÑDÔDÐDÝ  Ñ)Ô)ˆØð 	-�wÔ)ð 	-°#´.ð 	-Ý�^Ñ,Ô,Ð,ØŒ>ð 	S˜gð 	S¨'Ô*<ð 	SÝ˜S (¨C°Ñ3Ô3Ð3åÔ,¨SÑ1Ô1‰FˆC�ÝÔ! #Ñ&Ô&ˆAÝÔ˜x­°$©¬¸Ñ;Ô;Ð;ÝÔ ¨!­X°hÑ-?Ô-?ÅÈ&ÑAQÔAQÑRÔRÐRÝÔ Ñ)Ô)ˆØð 	KÝÔ*¨5µ(¸3±-´-ÀÑJÔJÐJàð 	MÝÔ*¨5µ(¸4±.´.À)ÑLÔLÐLàð 	JÝÔ*¨5µ(¸6Ñ2BÔ2BÀDÑIÔIÐIØˆr*   c           	     ó   — | j         rt          d¦  «        ‚t          rt          j        | j        |¦  «        S t          | ¦  «        }d}d}d}d}t          j        t          j	        |¦  «        t          d¦  «        ¦  «        }|j        sdS t          j        |t          d¦  «        ¦  «        }|j        sdS t          j        |t          d	¦  «        ¦  «        }	|	j        sdS g }
t          |	|
¦  «        }
t          |
¦  «        }t          |¦  «        }|sdS ||k    rt          d
¦  «        ‚t          |¦  «        D �]Â}t!          |
|         ¦  «        }||         }|d         }t#          |t$          ¦  «        st          d¦  «        ‚|
|         |t&          <   t          j        ||¦  «        }t          j        t          j        |t          d¦  «        ¦  «        ¦  «        }|dk    rd||<   n|dk    rd||<   n|dk    r
d||<   d||<   t          j        t          j        |t          d¦  «        ¦  «        ¦  «        }|dk     rd||<   n|dk    rd||<   t          j        |t          d¦  «        ¦  «        }t          j        |¦  «        r–t          j        |¦  «        dk    r~t          j        t          j        |d¦  «        ¦  «        t          j        t          j        |d¦  «        ¦  «        t          j        t          j        |d¦  «        ¦  «        f}||t4          <   d}t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        s0t          j        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        r?t          j        |¦  «        dk    r't          j        t          j        |d¦  «        ¦  «        }t9          |¦  «        ||<   ||d<   |||<   �ŒÄdS )z4Add color info to all items of an extended TOC list.r¾   r]  rL  r`  Úcollapser/  Nr>  r?  z$internal error finding outline xrefsr   zneed non-simple TOC formatr§  r   Tr   ÚCountr   Fræ  ÚDestÚAÚDr   rK  )rÂ   rÃ   r  r   ÚDocument_extend_toc_itemsrÄ   rÎ   r�   r  r3  r  rÌ   r@  r7   rø  rL  r4   r>   r5   r  r�  r  rŽ  r›  rï  rœ  Údictkey_colorr  ro  )r(   rB   rZ  r]  rL  r`  r	  r;  rD  rE  rC  rE   r€  r®   r  rC   ÚitemdictÚbmr¾  Úcountr_  r  Úzr  s                           r)   Ú_extend_toc_itemszDocument._extend_toc_items¼  s×  € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/Ýð 	FÝÔ2°D´I¸uÑEÔEÐEÝ˜tÑ$Ô$ˆØˆØˆØˆØˆåÔ!¥%Ô"3°CÑ"8Ô"8½(À6Ñ:JÔ:JÑKÔKˆØŒð 	ØˆFÝÔ# D­(°:Ñ*>Ô*>Ñ?Ô?ˆØÔ ð 	ØˆFÝÔ" 6­8°GÑ+<Ô+<Ñ=Ô=ˆØÔð 	ØˆFØˆÝ  ¨Ñ.Ô.ˆÝ�‰JŒJˆÝ�‰JŒJˆØð 	ØˆFØ�Š6ˆ6ÝÐDÑEÔEÐEõ �q‘”ð %	ñ %	ˆAÝ�u˜Q”x‘=”=ˆDØ˜”8ˆDØ˜A”wˆHÝ˜h­Ñ-Ô-ð @Ý Ð">Ñ?Ô?Ð?Ø%*¨1¤XˆH•\Ñ"ÝÔ& s¨DÑ1Ô1ˆBÝÔ$¥eÔ&8¸½XÀc¹]¼]Ñ&KÔ&KÑLÔLˆEØ˜ŠzˆzØ#'�˜Ñ Ð Ø˜!’�Ø!%�˜‘�Ø˜!’�Ø#'�˜Ñ Ø!%�˜‘ÝÔ$¥eÔ&8¸½XÀgÑ=NÔ=NÑ&OÔ&OÑPÔPˆEØ�qŠyˆyØ%)�˜Ñ"Ð"Ø˜’�Ø%*�˜Ñ"ÝÔ$ R­°#©¬Ñ7Ô7ˆCÝÔ! #Ñ&Ô&ð 0­5Ô+>¸sÑ+CÔ+CÀqÒ+HÐ+HåÔ)­%Ô*=¸cÀ1Ñ*EÔ*EÑFÔFÝÔ)­%Ô*=¸cÀ1Ñ*EÔ*EÑFÔFÝÔ)­%Ô*=¸cÀ1Ñ*EÔ*EÑFÔFð�ð
 +0��Ñ'ØˆAÝÔ$ R­°&Ñ)9Ô)9Ñ:Ô:ˆCØ”>ð L­Ô);¸CÑ)@Ô)@ð LÝÔ)¨"­h°s©m¬m½XÀc¹]¼]ÑKÔK�ÝÔ! #Ñ&Ô&ð C­5Ô+>¸sÑ+CÔ+CÀqÒ+HÐ+HÝÔ%¥eÔ&9¸#¸qÑ&AÔ&AÑBÔB�Ý" 1™XœXˆH�T‰NØˆD�‰GØˆE�!‰H‰HðK%	ð %	r*   rÖ   c                óJ   — t          |¦  «        }|| j        v r
| j        |= dS dS )z&Remove a page from document page dict.N)r9  r  )r(   rÖ   Úpids      r)   Ú_forget_pagezDocument._forget_page  s2   € å�‰hŒhˆØ�$”/Ð!Ð!à” Ð$Ð$Ð$ð "Ð!r*   r  ÚbfnameÚextÚorderingÚlimitc                ó†  — t          | ¦  «        }|}|dk     rd}|dk    r1t          j        |¦  «        \  }	}
}t          j        d |	|
|d¦  «        }ntt          j        |¦  «        \  }	}
|	rt          j        ||	|
dd¦  «        }nBt          ||¦  «        }|j        st          d|d›d�¦  «        ‚t          j        d ||d¦  «        }g }t          |¦  «        D ]j}t          j
        ||¦  «        }t          j        ||d¦  «        }|dk    r|}|dk    r|                     ||f¦  «         ŒS|                     |df¦  «         Œk|S )Né   r   zfont at xref r
  z is not supportedrž  )rÎ   r�   Úfz_lookup_cjk_fontÚfz_new_font_from_memoryÚfz_lookup_base14_fontÚJM_get_fontbufferrÌ   rg   Úfz_new_font_from_bufferrL  Úfz_encode_characterÚfz_advance_glyphrk   )r(   r  r  r  r  r  r8  rZ  Úmylimitr}  r¸  rd  rW  rÀ  Úwlistr®   ÚglyphÚadvs                     r)   Ú_get_char_widthszDocument._get_char_widths	  sn  € Ý˜tÑ$Ô$ˆØˆØ�SŠ=ˆ=ØˆGØ�qŠ=ˆ=Ý %Ô 8¸Ñ BÔ BÑˆD�$˜ÝÔ0°°t¸TÀ5È!ÑLÔLˆDˆDåÔ4°VÑ<Ô<‰JˆD�$Øð HÝÔ4°V¸TÀ4ÈÈAÑNÔN��å'¨¨TÑ2Ô2�Ø”~ð OÝ#Ð$M°DÐ$MÐ$MÐ$MÐ$MÑNÔNÐNåÔ4°T¸3ÀÀQÑGÔG�ØˆÝ�w‘”ð 	,ð 	,ˆAÝÔ-¨d°AÑ6Ô6ˆEÝÔ(¨¨u°aÑ8Ô8ˆCØ˜1Š}ˆ}Ø�Ø�qŠyˆyØ—’˜u c˜lÑ+Ô+Ð+Ð+à—’˜u c˜lÑ+Ô+Ð+Ð+Øˆr*   c           	     ó¸  — t          | ¦  «        }g }t          j        d¦  «        }t          j        t          j        |¦  «        t          d¦  «        |¦  «        }|j        s|S t          j        t          j        |t          d¦  «        ¦  «        ¦  «        }|j        rt          ||¦  «         |S t          j        t          j        |t          d¦  «        t          d¦  «        ¦  «        ¦  «        }|j        rt          ||¦  «         |S t          j        t          j        |t          d¦  «        ¦  «        ¦  «        }|j        rt          j
        |¦  «        s|S t          j        |¦  «        }t          |¦  «        D ]Y}t          j        t          j        t          j        ||¦  «        t          d¦  «        ¦  «        ¦  «        }t          ||¦  «         ŒZ|S )NÚ
PageLabelsr/  ÚNumsr†  )rÎ   r�   r4  r  r3  r  rÌ   Úpdf_resolve_indirectr  ÚJM_get_page_labelsrŽ  r›  rL  rœ  )	r(   rZ  r    Ú
pagelabelsr  Únumsrˆ  rE   r®   s	            r)   Ú_get_page_labelszDocument._get_page_labels'  s°  € Ý˜tÑ$Ô$ˆØˆÝÔ'¨Ñ5Ô5ˆ
ÝÔ!¥5Ô#4°SÑ#9Ô#9½8ÀFÑ;KÔ;KÈZÑXÔXˆØŒ~ð 	ØˆIåÔ)­5Ô+=¸sÅHÈVÑDTÔDTÑ+UÔ+UÑVÔVˆØŒ?ð 	Ý˜r 4Ñ(Ô(Ð(ØˆIåÔ)­5Ô+>¸sÅHÈVÑDTÔDTÕV^Ð_eÑVfÔVfÑ+gÔ+gÑhÔhˆØŒ?ð 	Ý˜r 4Ñ(Ô(Ð(ØˆIåÔ)­5Ô+=¸sÅHÈVÑDTÔDTÑ+UÔ+UÑVÔVˆØŒð 	¥eÔ&8¸Ñ&>Ô&>ð 	ØˆIÝÔ Ñ%Ô%ˆÝ�q‘”ð 	)ð 	)ˆAÝÔ-ÝÔ&ÝÔ+¨D°!Ñ4Ô4Ý  Ñ(Ô(ñô ñô ˆDõ ˜r 4Ñ(Ô(Ð(Ð(Øˆ	r*   c                óŒ   — 	 t          j        | j        |¦  «        S # t          $ r t          dk    rt          ¦   «          Y dS w xY w)zGet metadata.r   r\   )r�   Úfz_lookup_metadata2rÄ   rg   r
  rv   r  s     r)   Ú_getMetadatazDocument._getMetadataG  sT   € ð	ÝÔ,¨d¬i¸Ñ=Ô=Ð=øÝð 	ð 	ð 	Ý# aÒ'Ð'­NÑ,<Ô,<Ð,<Ø�2�2ð	øøøs   ‚ œ#AÁAc                óz  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        t	          j        |¦  «        t          d¦  «        ¦  «        }t	          j        |t          d¦  «        ¦  «        }|j        sŸt	          j	        |d¦  «        }t	          j
        |t          d¦  «        t          d¦  «        ¦  «         t	          j        ||¦  «        }t	          j
        |t          d¦  «        |¦  «         t	          j        |t          d¦  «        ¦  «        }t	          j        |¦  «        S )z/Get xref of Outline Root, create it if missing.r-  r/  r>  rK  ÚType)rÂ   r   rÃ   rÎ   r�   r  r3  r  rÌ   rS  rN  r�  r  )r(   rZ  r;  rD  Úind_objs        r)   Ú_getOLRootNumberzDocument._getOLRootNumberO  s  € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆåÔ!¥5Ô#4°cÑ#:Ô#:½HÀVÑ<LÔ<LÑMÔMˆåÔ# T­8°JÑ+?Ô+?Ñ@Ô@ˆØÔ ð 	EÝÔ'¨¨aÑ0Ô0ˆFÝÔ ­°Ñ(8Ô(8½(À:Ñ:NÔ:NÑOÔOÐOÝÔ*¨C°Ñ8Ô8ˆGÝÔ ¥h¨zÑ&:Ô&:¸GÑDÔDÐDÝÔ'¨­x¸
Ñ/CÔ/CÑDÔDˆFÝÔ Ñ(Ô(Ð(r*   c                ó¤  — t          | d¬¦  «        }|j        sdS g }t          j        t          j        |¦  «        t          d¦  «        ¦  «        }|j        rxt          j        |¦  «        }t          |¦  «        D ]T}t          j        ||¦  «        }t          j	        |¦  «        }t          j        |¦  «        }|                     |¦  «         ŒU|S )zGet PDF file id.r   r.  NÚID)rÎ   rÌ   r�   r  r3  r  r›  rL  rœ  r  ÚbinasciiÚhexlifyrk   )	r(   rZ  ÚidlistÚidentityrE   r®   r¡  r   Úhex_s	            r)   Ú_getPDFfileidzDocument._getPDFfileid`  sÇ   € å˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	ØˆFØˆÝÔ%¥eÔ&7¸Ñ&<Ô&<½hÀt¹n¼nÑMÔMˆØÔð 	$ÝÔ# HÑ-Ô-ˆAÝ˜1‘X”Xð $ð $�ÝÔ'¨°!Ñ4Ô4�ÝÔ/°Ñ2Ô2�ÝÔ'¨Ñ-Ô-�Ø—’˜dÑ#Ô#Ð#Ð#Øˆr*   c                óð  — | j         s| j        rt          d¦  «        ‚| j        }t	          |t
          j        ¦  «        rt          j        |¦  «        nt          j        |¦  «        }|}|dk     r||z  }|dk     °||k    rt          t          ¦  «        ‚t          | ¦  «        }t          j        ||¦  «        }t          j        |t
          j        ¦  «        }g }	g }
|j        rt          |||	|d|
¦  «         |	S )z,List fonts, images, XObjects used on a page.r-  r   )rÂ   r   rÃ   rÄ   r>   r�   rÆ   Úpdf_count_pagesÚfz_count_pagesÚMSG_BAD_PAGENOrÎ   Úpdf_lookup_page_objÚpdf_dict_get_inheritableÚPDF_ENUM_NAME_ResourcesrÌ   ÚJM_scan_resources)r(   rÕ  Úwhatr*  Ú	pageCountrE   rZ  ÚpagerefÚrsrcÚlisteÚtracers              r)   Ú_getPageInfozDocument._getPageInfop  sÿ   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒiˆÝ2<¸SÅ%ÔBSÑ2TÔ2TÐs•EÔ)¨#Ñ.Ô.Ð.ÕZ_ÔZnÐorÑZsÔZsˆ	ØˆØ�!ŠeˆeØ�‰NˆAð �!Šeˆeà�	Š>ˆ>Ý�nÑ-Ô-Ð-Ý˜tÑ$Ô$ˆÝÔ+¨C°Ñ3Ô3ˆÝÔ-¨gµuÔ7TÑUÔUˆØˆØˆØŒ?ð 	AÝ˜c 4¨°°a¸Ñ@Ô@Ð@Øˆr*   c                ó„   — t          | ¦  «        }|s|st          t          ¦  «        ‚t          |d||dddddd¦
  «
        }|S )z;
        Utility: insert font from file or binary.
        Nr   r1  )rÎ   rÃ   ÚMSG_FILE_OR_BUFFERÚJM_insert_font)r(   ÚfontfileÚ
fontbufferrZ  r¸   s        r)   Ú_insert_fontzDocument._insert_font„  sS   € õ ˜tÑ$Ô$ˆØð 	2 
ð 	2ÝÕ0Ñ1Ô1Ð1Ý˜s D¨(°JÀÀ1ÀaÈÈAÈrÑRÔRˆØˆr*   c                óæ   — | j         }t          |t          j        ¦  «        sJ ‚	 t          j        |¦  «        }n*# t
          $ r t          dk    rt          ¦   «          Y dS w xY wt          |¦  «        S )zLoad first outline.r   N)	rÄ   r>   r�   rÅ   Úfz_load_outlinerg   r
  rv   ÚOutline)r(   r*  rÝ  s      r)   Ú_loadOutlinezDocument._loadOutlineŽ  s   € àŒiˆÝ˜3¥Ô 0Ñ1Ô1Ð1Ð1Ð1ð	ÝÔ&¨Ñ,Ô,ˆBˆBøÝð 	ð 	ð 	Ý# aÒ'Ð'­NÑ,<Ô,<Ð,<ØˆFˆFð	øøøõ ˜‰|Œ|Ðs   ¥: º#A!Á A!c                óB   — | j         rt          d¦  «        ‚J d¦   «         ‚)z)Make an array page number -> page object.r¾   r   z_make_page_map() is no-op)rÂ   rÃ   r.   s    r)   Ú_make_page_mapzDocument._make_page_map™  s)   € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/Ø.Ð.Ñ.Ô.ˆqr*   c                óº  — t          | ¦  «        }d}t          ||¦  «        \  }}}	t          j        |t	          d¦  «        ¦  «        }
t          ||¦  «        \  }}}t          j        |t	          d¦  «        ¦  «        }|r|}n|dz   }t          j        |
|¦  «        }|s)|dk    r#t          j        |t	          d¦  «        |¦  «         t          j        |||¦  «         |dk    �r|}|j        rqt          j	        |t	          d¦  «        ¦  «        }t          j
        |t	          d¦  «        |dz   ¦  «         t          j        |t	          d¦  «        ¦  «        }|j        °q|s�t          j        |
|	¦  «         |}|j        rqt          j	        |t	          d¦  «        ¦  «        }t          j
        |t	          d¦  «        |dz
  ¦  «         t          j        |t	          d¦  «        ¦  «        }|j        °qn±|r{|}|j        rqt          j	        |t	          d¦  «        ¦  «        }t          j
        |t	          d¦  «        |dz   ¦  «         t          j        |t	          d¦  «        ¦  «        }|j        °qn4|	|k     rt          j        |
|	¦  «         nt          j        |
|	dz   ¦  «         |j        j        rt          j        |j        ¦  «         |                      ¦   «          dS )z"Move or copy a PDF page reference.r   r†  r   r˜  r
  N)rÎ   Úpdf_lookup_page_locr�   r  r  r~  rN  Úpdf_array_insertrÌ   Úpdf_dict_get_intrI  r�  rK  rL  Ú_reset_page_refs)r(   rÕ  ÚnbÚbeforeÚcopyrZ  ÚsameÚpage1Úparent1Úi1r’  Úpage2Úparent2Úi2r”  Úposrê   r  s                     r)   Ú_move_copy_pagezDocument._move_copy_pageŸ  sæ  € å˜tÑ$Ô$ˆØˆõ 1°#°sÑ;Ô;Ñˆˆw˜åÔ" G­X°fÑ-=Ô-=Ñ>Ô>ˆå0°#°rÑ:Ô:Ñˆˆw˜ÝÔ" G­X°fÑ-=Ô-=Ñ>Ô>ˆØð 	ØˆCˆCà�q‘&ˆCõ Ô ¨Ñ.Ô.ˆð ð 	D˜ š	˜	ÝÔ ¥x°Ñ'9Ô'9¸7ÑCÔCÐCÝÔ  u¨cÑ2Ô2Ð2à�1Š9‰9ØˆFØÔ#ð IÝÔ.°½ÀÑ8IÔ8IÑJÔJ�ÝÔ&¨µ¸Ñ0AÔ0AÀ5È1Á9ÑMÔMÐMÝÔ+¨VµX¸hÑ5GÔ5GÑHÔH�ð Ô#ð Ið ð MÝÔ&¨¨rÑ2Ô2Ð2Ø �ØÔ'ð MÝ!Ô2°F½HÀWÑ<MÔ<MÑNÔN�EÝÔ*¨FµH¸WÑ4EÔ4EÀuÈqÁyÑQÔQÐQÝ"Ô/°½À(Ñ9KÔ9KÑLÔL�Fð Ô'ð Møð
 ð 
;Ø �ØÔ'ð MÝ!Ô2°F½HÀWÑ<MÔ<MÑNÔN�EÝÔ*¨FµH¸WÑ4EÔ4EÀuÈqÁyÑQÔQÐQÝ"Ô/°½À(Ñ9KÔ9KÑLÔL�Fð Ô'ð Møð
 ˜’8�8ÝÔ*¨E°2Ñ6Ô6Ð6Ð6åÔ*¨E°2¸±6Ñ:Ô:Ð:ØŒ>Ô&ð 	9ÝÔ'¨¬Ñ8Ô8Ð8à×ÒÑÔÐÐÐr*   éS  éJ  c                ó  — | j         s| j        rt          d¦  «        ‚t          rt	          j        | j        |||¦  «         n°t          | ¦  «        }t          j	        t          j	        j
        ¦  «        }||_        ||_        t          j        ¦   «         }|dk     rt          t          ¦  «        ‚t          j        |d¦  «        }t          j        ||d||¦  «        }t          j        |||¦  «         |                      ¦   «          | |         S )zMake a new PDF page.r-  r1  r   r   )rÂ   r   rÃ   r  r   Ú_newPagerÄ   rÎ   r�   rh  Ú
Fixed_UNITr	  r  ÚFzBufferrD  Úpdf_add_new_dictÚpdf_add_pageÚpdf_insert_pager`  )	r(   rÕ  r]  rÕ  rZ  ÚmediaboxÚcontentsra  Úpage_objs	            r)   rp  zDocument._newPage×  sú   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ýð 	7ÝŒN˜DœI s¨E°6Ñ:Ô:Ð:Ð:å" 4Ñ(Ô(ˆCÝ”|¥E¤LÔ$;Ñ<Ô<ˆHØˆHŒKØ ˆHŒKÝ”~Ñ'Ô'ˆHØ�RŠxˆxÝ ¥.Ñ1Ô1Ð1õ Ô.¨s°AÑ6Ô6ˆIÝÔ)¨3°¸!¸YÈÑQÔQˆHÝÔ! 3¨¨XÑ6Ô6Ð6ð 	×ÒÑÔÐØ�CŒyÐr*   c                óD   — t          | ¦  «        }t          ||¦  «         d S r,   )rÎ   Ú_remove_dest_range)r(   ÚnumbersrZ  s      r)   Ú_remove_links_tozDocument._remove_links_toï  s%   € Ý˜tÑ$Ô$ˆÝ˜3 Ñ(Ô(Ð(Ð(Ð(r*   c                ó–  — t          | ¦  «        }t          j        ||d¦  «        }t          j        |t	          d¦  «        ¦  «         t          j        |t	          d¦  «        ¦  «         t          j        |d¦  «        }t          d¦  «        D ]}t          j        |d¦  «         Œt          j        |t	          d¦  «        |¦  «         d S )Nr   r  r  r   çš™™™™™é?ræ  )	rÎ   r�   r‰  rA  r  rK  rL  rM  rN  )r(   r  rZ  rC   r  r®   s         r)   r;  zDocument._remove_toc_itemó  sµ   € å˜tÑ$Ô$ˆÝÔ% c¨4°Ñ3Ô3ˆÝÔ˜D¥(¨6Ñ"2Ô"2Ñ3Ô3Ð3ÝÔ˜D¥(¨3¡-¤-Ñ0Ô0Ð0ÝÔ# S¨!Ñ,Ô,ˆÝ�q‘”ð 	3ð 	3ˆAÝÔ% u¨cÑ2Ô2Ð2Ð2ÝÔ˜D¥(¨3¡-¤-°Ñ7Ô7Ð7Ð7Ð7r*   c                óÞ   — t          | dd¦  «        rdS d„ | j                             ¦   «         D ¦   «         }|D ]}|r|                     ¦   «          d}Œ| j                             ¦   «          dS )z,Invalidate all pages in document dictionary.rÂ   TNc                ó   — g | ]}|‘ŒS r-   r-   ©r­   r¢  s     r)   r¯   z-Document._reset_page_refs.<locals>.<listcomp>  s   € Ð5Ð5Ð5�q�Ð5Ð5Ð5r*   )rì   r  r  rò   Úclear)r(   ÚpagesrÖ   s      r)   r`  zDocument._reset_page_refsþ  s€   € å�4˜ dÑ+Ô+ð 	ØˆFØ5Ð5˜DœO×2Ò2Ñ4Ô4Ð5Ñ5Ô5ˆØð 	ð 	ˆDØð Ø—’‘”�Ø�øØŒ×ÒÑÔÐÐÐr*   c                ó  — t          | ¦  «        }t          j        d¦  «        }t          j        t          j        |¦  «        t          d¦  «        ¦  «        }t          j        ||¦  «         t          j        |t          j        |d¦  «        |t          d¦  «        ¦  «         |  	                    ¦   «         }|  
                    |d¬¦  «        }|                     dd|› d	�¦  «        }|                      ||¦  «         d S )
Nr+  r/  r   r,  T©Ú
compressedz/Nums[]z/Nums[rm  )rÎ   r�   r4  r  r3  r  rA  r  rK  Úpdf_catalogÚxref_objectrà  Úupdate_object)r(   ÚlabelsrZ  r/  r;  r  r   s          r)   Ú_set_page_labelszDocument._set_page_labels	  sè   € Ý˜tÑ$Ô$ˆÝÔ'¨Ñ5Ô5ˆ
ÝÔ!¥%Ô"3°CÑ"8Ô"8½(À6Ñ:JÔ:JÑKÔKˆÝÔ˜4 Ñ,Ô,Ð,ÝÔ˜D¥%Ô"5°c¸1Ñ"=Ô"=¸zÍ8ÐTZÑK[ÔK[Ñ\Ô\Ð\à×ÒÑ!Ô!ˆØ×Ò °ÐÑ6Ô6ˆØ�|Š|˜IÐ'9°Ð'9Ð'9Ð'9Ñ:Ô:ˆØ×Ò˜4 Ñ&Ô&Ð&Ð&Ð&r*   c                óÈ  — t          | ¦  «        }t          j        ||d¦  «        }|r#t          j        |t	          d¦  «        |¦  «         |rUt          j        |t	          d¦  «        ¦  «         t          ||¦  «        }	t          j        |t	          d¦  «        |	¦  «         t          j        |t	          d¦  «        |¦  «         |rht          j	        |d¦  «        }
t          d¦  «        D ]}||         }t          j        |
|¦  «         Œ t          j        |t	          d¦  «        |
¦  «         n$|�"t          j        |t	          d¦  «        ¦  «         |�‡t          j        |t	          d	¦  «        ¦  «        j        rbt          j        |t	          d	¦  «        ¦  «        }|dk     r|d
u s
|dk    r2|du r0|dz  }t          j        |t	          d	¦  «        |¦  «         dS dS dS dS dS )zB
        "update" bookmark by letting it point to nowhere
        r   ÚTitler  r  r§  r   ræ  Nr
  FTr1  )rÎ   r�   r‰  r€  r  rA  r5  rN  rI  rK  rL  rM  r  rÌ   r_  )r(   r  Úactionry  r¾  r	  r  rZ  rC   r  r¼  r®   rÎ  s                r)   Ú_update_toc_itemzDocument._update_toc_item  sï  € õ ˜tÑ$Ô$ˆÝÔ% s¨D°!Ñ4Ô4ˆØð 	LÝÔ*¨Dµ(¸7Ñ2CÔ2CÀUÑKÔKÐKØð 	:ÝÔ ¥h¨vÑ&6Ô&6Ñ7Ô7Ð7Ý% s¨FÑ3Ô3ˆCÝÔ ¥h¨s¡m¤m°SÑ9Ô9Ð9ÝÔ ¥h¨s¡m¤m°UÑ;Ô;Ð;Øð 	5ÝÔ# S¨!Ñ,Ô,ˆAÝ˜1‘X”Xð 1ð 1�Ø˜!”H�ÝÔ)¨1¨aÑ0Ô0Ð0Ð0ÝÔ ¥h¨s¡m¤m°QÑ7Ô7Ð7Ð7ØÐÝÔ ¥h¨s¡m¤mÑ4Ô4Ð4ØÐÝÔ! 4­°'Ñ):Ô):Ñ;Ô;ÔFð HÝÔ*¨Dµ(¸7Ñ2CÔ2CÑDÔD�Ø˜’E�E˜h¨%Ð/Ð/°Q¸²U°U¸xÈ4Ð?OÐ?OØ˜R™�AÝÔ*¨Dµ(¸7Ñ2CÔ2CÀQÑGÔGÐGÐGÐGð  ÐðHð Hà5:°UÐ?OÐ?Or*   c           	     ó&  — t          | d¬¦  «        }|j        sdS t          j        t          j        |¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }t          ¦   «         }|j        rƒt          j        |¦  «        rot          j        |¦  «        }t          |¦  «        D ]K}t          j
        ||¦  «        }|                     t          t          j        |¦  «        ¦  «        ¦  «         ŒL|S )z&Get list of field font resource names.r   r.  Nr/  r0  r1  r2  )rÎ   rÌ   r�   r  r3  r  r´   rz  r{  rL  r}  rk   r  ry  )r(   rZ  r6  rM  rE   r®   rÎ  s          r)   Ú	FormFontszDocument.FormFonts1  s   € õ ˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	ØˆFÝÔ#ÝÔ! #Ñ&Ô&Ý˜Ñ Ô Ý˜Ñ$Ô$Ý˜‘”Ý˜Ñ Ô ñô ˆõ ‘”ˆØÔð 	F¥Ô 1°%Ñ 8Ô 8ð 	FÝÔ" 5Ñ)Ô)ˆAÝ˜1‘X”Xð Fð F�ÝÔ*¨5°!Ñ4Ô4�Ø—’Õ.­uÔ/@ÀÑ/CÔ/CÑDÔDÑEÔEÐEÐEØˆr*   c                óz   — t          | ¦  «        }t          ||||¦  «         t          j        |j        ¦  «         dS )zAdd a new OC layer.N)rÎ   ÚJM_add_layer_configr�   Úll_pdf_read_ocgrÌ   )r(   r   ÚcreatorÚonrZ  s        r)   Ú	add_layerzDocument.add_layerF  s<   € å˜tÑ$Ô$ˆÝ˜S $¨°Ñ4Ô4Ð4ÝÔ˜sœ~Ñ.Ô.Ð.Ð.Ð.r*   r   c                ó.  — d}t          | ¦  «        }t          j        |d¦  «        }t          j        |t	          d¦  «        t	          d¦  «        ¦  «         t          j        |t	          d¦  «        |¦  «         t          j        |t	          d¦  «        d¦  «        }	|s#t          j        |	t	          d¦  «        ¦  «         n^t          |t          ¦  «        s"J d	t          |¦  «        ›d
t          ›�¦   «         ‚t          j        |	t          j        |¦  «        ¦  «         t          j        |t	          d¦  «        d¦  «        }
t          j        d¦  «        }t          j        |
|d¦  «        }t          j        |t	          d¦  «        d¦  «         |r$t          j        |t	          d¦  «        |¦  «         n#t          j        |t	          d¦  «        d¦  «         t          j        ||¦  «        }t          |¦  «        }t          j        |t	          d¦  «        ¦  «        }t          j        ||¦  «         |dk    r{t          j        |t	          d¦  «        ¦  «        }t          j        |¦  «        st%          t&          ¦  «        ‚t          j        ||¦  «        }|j        st%          t&          ¦  «        ‚n"t          j        |t	          d¦  «        ¦  «        }t          j        |t	          d¦  «        ¦  «        }|j        s#t          j        |t	          d¦  «        d¦  «        }t          j        ||¦  «         |rMt          j        |t	          d¦  «        ¦  «        }|j        s#t          j        |t	          d¦  «        d¦  «        }nLt          j        |t	          d¦  «        ¦  «        }|j        s#t          j        |t	          d¦  «        d¦  «        }t          j        ||¦  «         t          j        |j        ¦  «         t          j        |¦  «        }|S )zAdd new optional content group.r   r   r6  ÚOCGr  ÚIntentr   ÚViewz)fixme: intent is not a str. type(intent)=ú type=ÚUsageÚCreatorInfoÚCreatorÚPyMuPDFr†  ÚArtworkÚOCGsr1  ÚConfigsr  ÚOrderr   ÚONÚOFF)rÎ   r�   rs  rN  r  r€  rœ  r�  r>   rÑ  rÈ   r4  rR  rU  r�  ÚJM_ensure_ocpropertiesr  rŽ  rÃ   ÚMSG_BAD_OC_CONFIGrœ  rÌ   r”  r  )r(   r   Úconfigr–  ÚintentÚusager  rZ  ÚocgÚintentsÚuse_forÚci_nameÚcre_infoÚindocgÚocpr  Úcfgs                    r)   Úadd_ocgzDocument.add_ocgL  s—  € àˆÝ˜tÑ$Ô$ˆõ Ô$ S¨!Ñ,Ô,ˆÝÔ˜3¥¨Ñ 0Ô 0µ(¸5±/´/ÑBÔBÐBÝÔ& s­H°VÑ,<Ô,<¸dÑCÔCÐCÝÔ*¨3µ¸Ñ0BÔ0BÀAÑFÔFˆØð 	FÝÔ  ­(°6Ñ*:Ô*:Ñ;Ô;Ð;Ð;Ý˜F¥CÑ(Ô(ð 	FØLÐLµT¸&±\´\ÐLÐLÅTÐLÐLÑLÔL�1õ Ô  ­%Ô*<¸VÑ*DÔ*DÑEÔEÐEÝÔ)¨#­x¸Ñ/@Ô/@À!ÑDÔDˆÝÔ$ ]Ñ3Ô3ˆÝÔ*¨7°G¸QÑ?Ô?ˆÝÔ& xµ¸)Ñ1DÔ1DÀiÑPÔPÐPØð 	NÝÔ# H­h°yÑ.AÔ.AÀ5ÑIÔIÐIÐIåÔ# H­h°yÑ.AÔ.AÀ9ÑMÔMÐMÝÔ% c¨3Ñ/Ô/ˆõ % SÑ)Ô)ˆÝÔ  ¥h¨vÑ&6Ô&6Ñ7Ô7ˆÝÔ˜S &Ñ)Ô)Ð)à�BŠ;ˆ;ÝÔ$ S­(°9Ñ*=Ô*=Ñ>Ô>ˆCÝÔ% cÑ*Ô*ð 5Ý Õ"3Ñ4Ô4Ð4ÝÔ% c¨6Ñ2Ô2ˆCØ”>ð 5Ý Õ"3Ñ4Ô4Ð4ð5õ Ô$ S­(°3©-¬-Ñ8Ô8ˆCåÔ  ¥h¨wÑ&7Ô&7Ñ8Ô8ˆØŒ~ð 	FÝÔ*¨3µ¸Ñ0AÔ0AÀ1ÑEÔEˆCÝÔ˜S &Ñ)Ô)Ð)Øð 	GÝÔ$ S­(°4©.¬.Ñ9Ô9ˆCØ”>ð GÝÔ.¨sµH¸T±N´NÀAÑFÔF�øåÔ# C­°%©¬Ñ9Ô9ˆCØ”>ð GÝÔ-¨cµ8¸E±?´?ÀAÑFÔF�ÝÔ˜S &Ñ)Ô)Ð)õ 	Ô˜cœnÑ-Ô-Ð-åÔ Ñ'Ô'ˆØˆr*   c                ó¼   — | j         rt          d¦  «        ‚t          j        | j        |¦  «        }|r)d| _        d| _        |                      ¦   «          d| _        |S )zDecrypt document.r¾   FT)rÂ   rÃ   r�   Úfz_authenticate_passwordrÄ   r   r  rñ   )r(   Úpasswordr  s      r)   ÚauthenticatezDocument.authenticate’  s`   € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/ÝÔ,¨T¬Y¸ÑAÔAˆØð 	 Ø %ˆDÔØ %ˆDÔØ�MŠM‰OŒOˆOØˆDŒLØˆ
r*   c                ó^   — t          | d¬¦  «        }|j        sdS t          j        |¦  «        S )z-Check whether incremental saves are possible.r   r.  F)rÎ   rÌ   r�   Úpdf_can_be_saved_incrementally©r(   rZ  s     r)   Úcan_save_incrementallyzDocument.can_save_incrementallyž  s4   € å˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	Ø�5ÝÔ3°CÑ8Ô8Ð8r*   T)rŸ  ÚwidgetsrŸ  r½  c               ó„   — t          | ¦  «        }t          j        |t          |¦  «        t          |¦  «        ¦  «         dS )aú  Convert annotations or fields to permanent content.

        Notes:
            Converts annotations or widgets to permanent page content, like
            text and vector graphics, as appropriate.
            After execution, pages will still look the same, but no longer
            have annotations, respectively no fields.
            If widgets are selected the PDF will no longer be a Form PDF.

        Args:
            annots: convert annotations
            widgets: convert form fields

        N)rÎ   r�   Úpdf_bake_documentr4   )r(   rŸ  r½  rZ  s       r)   ÚbakezDocument.bake¥  s8   € õ ˜tÑ$Ô$ˆÝÔ ¥S¨¡[¤[µ#°g±,´,Ñ?Ô?Ð?Ð?Ð?r*   c                ó`   — | j         rt          d¦  «        ‚t          j        | j        ¦  «        S )zNumber of chapters.r¾   )rÂ   rÃ   r�   Úfz_count_chaptersrÄ   r.   s    r)   rÑ  zDocument.chapter_count·  s0   € ð Œ>ð 	0ÝÐ.Ñ/Ô/Ð/ÝÔ&¨¬	Ñ2Ô2Ð2r*   c                óÎ   — | j         rt          d¦  «        ‚t          j        | j        ¦  «        }|dk     s||k    rt          d¦  «        ‚t          j        | j        |¦  «        }|S )zPage count of chapter.r¾   r   zbad chapter number)rÂ   rÃ   r�   rÂ  rÄ   Úfz_count_chapter_pages)r(   rÔ  Úchaptersrƒ  s       r)   rÒ  zDocument.chapter_page_count¾  sh   € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/ÝÔ*¨D¬IÑ6Ô6ˆØ�QŠ;ˆ;˜' XÒ-Ð-ÝÐ2Ñ3Ô3Ð3ÝÔ,¨d¬i¸ÑAÔAˆØˆr*   c                óÔ   — t          | dd¦  «        rt          d¦  «        ‚t          | d¦  «        r| j        rd| _        |                      ¦   «          d| _        i | _        d| _        dS )zClose document.rÂ   Tr¾   Ú_outlineN)rì   rÃ   r;   rÇ  r`  rÂ   r  rÄ   r.   s    r)   ræ  zDocument.closeÈ  sv   € å�4˜ dÑ+Ô+ð 	0ÝÐ.Ñ/Ô/Ð/å�4˜Ñ$Ô$ð 	!¨¬ð 	!Ø ˆDŒMØ×ÒÑÔÐð !ˆŒàˆŒð ˆŒ	ˆ	ˆ	r*   c                ó¬  — | j         s| j        rt          d¦  «        ‚| j        }|}|}t	          j        |¦  «        }|dk     rd}||dz
  k    r|dz
  }|dk     r|dz
  }||dz
  k    r|dz
  }t          t          ¦  «        }t          ||||¦  «        }	t          t          ¦  «        }
t          ||
¦  «        D ]}t          t          |         › ¦  «         Œ|	S )z[Convert document to a PDF, selecting page range and optional rotation. Output bytes object.r-  r   r   )rÂ   r   rÃ   rÄ   r�   rC  r7   ÚJM_mupdf_warnings_storeÚJM_convert_to_pdfrL  rr   )r(   rT  rU  rY  Úfz_docru  r¸  ÚsrcCountÚlen0r*  Úlen1r®   s               r)   r  zDocument.convert_to_pdfÚ  sý   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ø”ˆØˆØˆÝÔ'¨Ñ/Ô/ˆØ�Š6ˆ6ØˆBØ�˜1‘ÒÐØ˜A‘ˆBØ�Š6ˆ6Ø˜A‘ˆBØ�˜1‘ÒÐØ˜A‘ˆBÝÕ*Ñ+Ô+ˆÝ ¨¨B°Ñ7Ô7ˆÝÕ*Ñ+Ô+ˆÝ�t˜TÑ"Ô"ð 	5ð 	5ˆAÝÕ.¨qÔ1Ð3Ñ4Ô4Ð4Ð4Øˆ
r*   rÕ  r\  c                ó  — | j         rt          d¦  «        ‚t          | ¦  «        }|t          |¦  «        vs|t          d|¦  «        vrt          d¦  «        ‚d}d}|dk    r|dz
  }d}|                      ||||¦  «        S )zéCopy a page within a PDF document.

        This will only create another reference of the same page object.
        Args:
            pno: source page number
            to: put before this page, '-1' means after last page.
        r¾   r1  rÚ  r   r   ©rÂ   rÃ   r7   rL  rl  ©r(   rÕ  r\  rÐ  rb  rc  s         r)   Ú	copy_pagezDocument.copy_pageñ  sš   € ð Œ>ð 	0ÝÐ.Ñ/Ô/Ð/å˜‘Y”Yˆ
à�5 Ñ,Ô,Ð,Ð,Ø�U 2 zÑ2Ô2Ð2Ð2åÐ1Ñ2Ô2Ð2ØˆØˆØ�Š8ˆ8Ø˜a‘ˆBØˆFà×#Ò# C¨¨V°TÑ:Ô:Ð:r*   c                ó  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        t	          j        |¦  «        t          d¦  «        ¦  «        }|j        r$t	          j	        |t          d¦  «        ¦  «         dS dS )zDelete XML metadata.r-  r/  ÚMetadataN)
rÂ   r   rÃ   rÎ   r�   r  r3  r  rÌ   rA  )r(   rZ  r;  s      r)   Údel_xml_metadatazDocument.del_xml_metadata
  sŒ   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ!¥5Ô#4°cÑ#:Ô#:½HÀVÑ<LÔ<LÑMÔMˆØŒ?ð 	<ÝÔ ¥h¨zÑ&:Ô&:Ñ;Ô;Ð;Ð;Ð;ð	<ð 	<r*   c                ó,   — |                       |¦  «        S )z% Delete one page from a PDF.
        )rÝ  )r(   rÕ  s     r)   rÜ  zDocument.delete_page  s   € ð × Ò  Ñ%Ô%Ð%r*   c                ó^  — | j         st          d¦  «        ‚| j        rt          d¦  «        ‚| j        }dx}}|rŸ|rt          d¦  «        ‚|                     dd¦  «        }|                     dd¦  «        }|dk     r||z  }|dk     °|dk     r||z  }|dk     °||cxk    r|k     sn t          d¦  «        ‚t          t          ||d	z   ¦  «        ¦  «        }�nt          |¦  «        d
k    s|g k    rt          d¦  «        ‚t          |¦  «        d
k    r‰|\  }}t          |¦  «        t          u rt          |¦  «        t          u st          d¦  «        ‚||k    r||}}||cxk    r|k     sn t          d¦  «        ‚t          t          ||d	z   ¦  «        ¦  «        }nMt          |d         t          ¦  «        r|d         }|dk     r||z  }|dk     °|f}nt          |d         ¦  «        }t          t          t          t          |¦  «        ¦  «        ¦  «        }|g k    rt          d¦  «         dS |                     ¦   «          |d         dk     s|d         |k    rt          d¦  «        ‚t!          |¦  «        }|                      ¦   «         }	t%          |                      ¦   «         ¦  «        D ]-\  }
}|	|
         d
         d	z
  |v r|                      |¦  «         Œ.|                      |¦  «         t-          |¦  «        D ]}
|                      |
¦  «         Œ|                      ¦   «          dS )a6  Delete pages from a PDF.

        Args:
            Either keywords 'from_page'/'to_page', or two integers to
            specify the first/last page to delete.
            Or a list/tuple/range object, which can contain arbitrary
            page numbers.
            Or a single integer page number.
        rÙ  r¾   r1  z*cannot mix keyword and positional argumentrT  rU  r   rÚ  r   r   z need 1 or 2 positional argumentszboth arguments must be intznothing to deleteN)rÛ  rÃ   rÂ   rÐ  r8   rµ   rL  r7   rÈ   r4   r>   r´   rÝ  Úsetrr   ÚsortÚ	frozensetÚget_tocró  r:  r;  r|  ÚreversedrM  r`  )r(   r÷  ÚkwrÐ  rÎ  rD  r{  rÕ  Úfrozen_numbersÚtocr®   r  s               r)   rÝ  zDocument.delete_pages  s`  € ð Œ{ð 	*Ý˜[Ñ)Ô)Ð)ØŒ>ð 	0ÝÐ.Ñ/Ô/Ð/à”_ˆ
Øˆ
ˆˆAØð 	)Øð OÝ Ð!MÑNÔNÐNØ—’�{ BÑ'Ô'ˆAØ—’�y "Ñ%Ô%ˆAØ�a’%�%Ø�Z‘�ð �a’%�%à�a’%�%Ø�Z‘�ð �a’%�%à˜Ð&Ð&Ò&Ð&˜JÒ&Ð&Ð&Ð&Ý Ð!5Ñ6Ô6Ð6Ý�E ! Q¨¡U™OœOÑ,Ô,ˆG‰Gå�4‰yŒy˜1Š}ˆ} ¨¢
 
Ý Ð!CÑDÔDÐDÝ�4‰yŒy˜AŠ~ˆ~Ø‘��1Ý˜Q™œ¥3˜˜­4°©7¬7µc¨>¨>Ý$Ð%AÑBÔBÐBØ�q’5�5Ø˜a�q�AØ˜AÐ*Ð*Ò*Ð* 
Ò*Ð*Ð*Ð*Ý$Ð%9Ñ:Ô:Ð:Ý¥ a¨¨Q©¡¤Ñ0Ô0��Ý˜D œG¥SÑ)Ô)ð )Ø˜1”g�Ø˜A’g�gØ˜:Ñ%�Cð ˜A’g�gà˜&��å  Q¤™.œ.�å•s�3¥ G¡¤Ñ-Ô-Ñ.Ô.ˆØ�bŠ=ˆ=ÝÐ'Ñ(Ô(Ð(ØˆFØ�Š‰ŒˆØ�1Œ:˜Š>ˆ>˜W Rœ[¨JÒ6Ð6ÝÐ1Ñ2Ô2Ð2Ý" 7Ñ+Ô+ˆØ�lŠl‰nŒnˆÝ  ×!7Ò!7Ñ!9Ô!9Ñ:Ô:ð 	,ð 	,‰GˆAˆtØ�1Œv�aŒy˜1‰} Ð.Ð.Ø×%Ò% dÑ+Ô+Ð+øà×Ò˜nÑ-Ô-Ð-å˜'Ñ"Ô"ð 	!ð 	!ˆAØ×Ò˜aÑ Ô Ð Ð à×ÒÑÔÐÐÐr*   r   r-  Ú
ByteStringrf   r¾  r  r¹  c                ó‚  — |                       ¦   «         }||v rt          d|› d�¦  «        ‚|€|}|€|}|€|}|                      |||||¬¦  «        }t          ¦   «         }|                      |dd¦  «         |                      |dt          |¦  «        ¦  «         |                      |dt          |¦  «        ¦  «         |S )	a\  Add an item to the EmbeddedFiles array.

        Args:
            name: name of the new item, must not already exist.
            buffer_: (binary data) the file content.
            filename: (str) the file name, default: the name
            ufilename: (unicode) the file name, default: filename
            desc: (str) the description.
        zName 'z' already exists.N©r-  rf   r  r¹  r6  z/EmbeddedFileúParams/CreationDateúParams/ModDate)rð  rÃ   r÷  Úget_pdf_nowrn  rf  )	r(   r   r-  rf   r  r¹  rñ  r  Údates	            r)   Úembfile_addzDocument.embfile_add]  sí   € ð  ×&Ò&Ñ(Ô(ˆ	Ø�9ÐÐÝÐ= dÐ=Ð=Ð=Ñ>Ô>Ð>ØÐØˆHØÐØ ˆIØˆ<ØˆDØ× Ò ØØØ!Ø#Øð !ñ ô ˆõ ‰}Œ}ˆØ×Ò˜$ ¨Ñ8Ô8Ð8Ø×Ò˜$Ð 5µ{À4Ñ7HÔ7HÑIÔIÐIØ×Ò˜$Ð 0µ+¸dÑ2CÔ2CÑDÔDÐDØˆr*   c                óD   — t          |                      ¦   «         ¦  «        S )zGet number of EmbeddedFiles.)r7   rð  r.   s    r)   Úembfile_countzDocument.embfile_countƒ  s   € å�4×%Ò%Ñ'Ô'Ñ(Ô(Ð(r*   c                óV   — |                       |¦  «        }|                      |¦  «        S )aT  Delete an entry from EmbeddedFiles.

        Notes:
            The argument must be name or index of an EmbeddedFiles item.
            Physical deletion of data will happen on save to a new
            file with appropriate garbage option.
        Args:
            item: name or number of item.
        Returns:
            None
        )rò  rù  ©r(   rC   r8  s      r)   Úembfile_delzDocument.embfile_del‡  s+   € ð ×%Ò% dÑ+Ô+ˆØ× Ò  Ñ%Ô%Ð%r*   r  c                óV   — |                       |¦  «        }|                      |¦  «        S )z¯Get the content of an item in the EmbeddedFiles array.

        Args:
            item: number or name of item.
        Returns:
            (bytes) The file content.
        )rò  rí  rë  s      r)   Úembfile_getzDocument.embfile_get–  s+   € ð ×%Ò% dÑ+Ô+ˆØ×$Ò$ SÑ)Ô)Ð)r*   r5   c                óØ  — |                       |¦  «        }d|                      ¦   «         |         i}|                      ||¦  «        }|                      |d¦  «        \  }}|dk    r||d<   |                      |d¦  «        \  }}|dk    r||d<   |                      |d¦  «        \  }}|dk    r;t	          j        |                     ¦   «         ¦  «                             ¦   «         |d<   |S )	z­Get information of an item in the EmbeddedFiles array.

        Args:
            item: number or name of item.
        Returns:
            Information dictionary.
        r   rã  r¸  rz  rä  r{  zParams/CheckSumÚchecksum)rò  rð  r  Úxref_get_keyr;  r<  rÈ  Údecode)r(   rC   r8  rþ  r  rD  ræ  Úmd5s           r)   Úembfile_infozDocument.embfile_info¡  sò   € ð ×%Ò% dÑ+Ô+ˆØ˜D×.Ò.Ñ0Ô0°Ô5Ð6ˆØ×!Ò! # xÑ0Ô0ˆØ×#Ò# DÐ*?Ñ@Ô@‰ˆˆ4Ø�Š;ˆ;Ø'+ˆH�^Ñ$Ø×#Ò# DÐ*:Ñ;Ô;‰ˆˆ4Ø�Š;ˆ;Ø"&ˆH�YÑØ×"Ò" 4Ð):Ñ;Ô;‰ˆˆ3Ø�Š;ˆ;Ý#+Ô#3°C·J²J±L´LÑ#AÔ#A×#HÒ#HÑ#JÔ#JˆH�ZÑ Øˆr*   r´   c                ó4   — g }|                       |¦  «         |S )z#Get list of names of EmbeddedFiles.)r  )r(   rñ  s     r)   rð  zDocument.embfile_names·  s!   € àˆ	Ø×Ò˜IÑ&Ô&Ð&ØÐr*   ÚOptBytesc                óÈ   — |                       |¦  «        }|                      |||||¬¦  «        }t          ¦   «         }|                      |dt	          |¦  «        ¦  «         |S )a­  Change an item of the EmbeddedFiles array.

        Notes:
            Only provided parameters are changed. If all are omitted,
            the method is a no-op.
        Args:
            item: number or name of item.
            buffer_: (binary data) the new file content.
            filename: (str) the new file name.
            ufilename: (unicode) the new filen ame.
            desc: (str) the new description.
        râ  rä  )rò  r  rå  rn  rf  )	r(   rC   r-  rf   r  r¹  r8  r  ræ  s	            r)   Úembfile_updzDocument.embfile_upd½  sq   € ð& ×%Ò% dÑ+Ô+ˆØ× Ò ØØØ!Ø#Øð !ñ ô ˆõ ‰}Œ}ˆØ×Ò˜$Ð 0µ+¸dÑ2CÔ2CÑDÔDÐDØˆr*   c           
     óf  — t          | ¦  «        }t          j        ||¦  «        }t          j        |t	          d¦  «        ¦  «        }t          j        |t	          d¦  «        ¦  «        }t          j        |t	          d¦  «        ¦  «        �r‚t          j        |¦  «                             d¦  «        �sZt          j        |t	          d¦  «        ¦  «        }|j        rt          j	        |¦  «        r#t          j        |t	          d¦  «        ¦  «        }	n|}	t          ||¦  «        }
|
dk    r"|s t          ||¦  «        }t          |¦  «        }nd}|sRt          t          j        |	¦  «        ¦  «        t          |
¦  «        t          t          j        |¦  «        ¦  «        |f}n�t          t          t          j        |	¦  «        ¦  «        t           t          |
¦  «        t"          t          t          j        |¦  «        ¦  «        t$          |i}n#|sd	}nt          d
t           d
t"          d
t$          di}|S )zD
        Get a font by xref. Returns a tuple or dictionary.
        r6  r†  r2  ÚCIDFontTypeÚBaseFontr  ún/ar*   )r\   r\   r\   r*   r\   )rÎ   r�   r�  r  r  Úpdf_name_eqry  r3   rÌ   Úpdf_is_nullÚJM_get_fontextensionr!  r  r²  r  r  Údictkey_extÚdictkey_typer  )r(   r  Ú	info_onlyÚnamedrZ  r  r[  ÚsubtypeÚbasefontÚbnamer  r-  Úbytes_r    s                 r)   Úextract_fontzDocument.extract_fontÜ  sþ  € õ
 ˜tÑ$Ô$ˆÝÔ# C¨Ñ.Ô.ˆÝÔ" 3­°Ñ(8Ô(8Ñ9Ô9ˆÝÔ$ S­(°9Ñ*=Ô*=Ñ>Ô>ˆÝÔ˜e¥X¨fÑ%5Ô%5Ñ6Ô6ñ %	ÝÔ)¨7Ñ3Ô3×>Ò>¸}ÑMÔMñ%	õ Ô)¨#­x¸
Ñ/CÔ/CÑDÔDˆHØÔ&ð !­%Ô*;¸HÑ*EÔ*Eð !ÝÔ*¨3µ¸Ñ0@Ô0@ÑAÔA��à �Ý& s¨DÑ1Ô1ˆCØ�eŠ|ˆ| Iˆ|Ý+¨C°Ñ6Ô6�Ý)¨'Ñ2Ô2��à�Øð å+­EÔ,=¸eÑ,DÔ,DÑEÔEÝ)¨#Ñ.Ô.Ý)­%Ô*;¸GÑ*DÔ*DÑEÔEØð	��õ %Õ&9½%Ô:KÈEÑ:RÔ:RÑ&SÔ&SÝ#Õ%6°sÑ%;Ô%;Ý$Õ&7½Ô8IÈ'Ñ8RÔ8RÑ&SÔ&SÝ'¨ð	��ð ð Ø$��õ % bÝ# RÝ$ bÝ'¨ð	�ð ˆ	r*   c                ó  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          |dt          j        |¦  «        dz
  ¦  «        st          t          ¦  «        ‚t          j        ||d¦  «        }t          j	        |t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        st          d¦  «        ‚t          j        |t          d¦  «        t          d¦  «        ¦  «        }|j        rt          j        |¦  «        }nd}t          j        ||¦  «        }t!          ¦   «         }t#          ||¦  «         ||t$          <   t          j        |                     ¦   «         ¦  «        |t*          <   |S )	z(Get image by xref. Returns a dictionary.r-  r   r   r†  ÚImageznot an imageÚSMaskÚMask)rÂ   r   rÃ   rÎ   r   r�   r‡  rˆ  r‰  r  r  rý  Úpdf_dict_getarÌ   r  Úpdf_load_imager5   Ú_make_image_dictÚdictkey_smaskr£  rÛ  Údictkey_cs_name)	r(   r  rZ  r  r  r¡  ÚsmaskrÔ  r    s	            r)   Úextract_imagezDocument.extract_image  s]  € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<å˜tÑ$Ô$ˆå˜˜a¥Ô!3°CÑ!8Ô!8¸Ñ!:Ñ;Ô;ð 	,Ý�lÑ+Ô+Ð+åÔ$ S¨$°Ñ2Ô2ˆÝÔ$ S­(°9Ñ*=Ô*=Ñ>Ô>ˆåÔ  ­(°7Ñ*;Ô*;Ñ<Ô<ð 	.Ý˜nÑ-Ô-Ð-åÔ ¥X¨gÑ%6Ô%6½ÀÑ8HÔ8HÑIÔIˆØŒ<ð 	ÝÔ$ QÑ'Ô'ˆEˆEàˆEõ Ô" 3¨Ñ,Ô,ˆÝ‰VŒVˆÝ˜˜bÑ!Ô!Ð!Ø!ˆ�=ÑÝ#Ô6°s·~²~Ñ7GÔ7GÑHÔHˆ�?ÑØˆ	r*   r   Féÿ  c                óV   — |                       |||||||||	|
|||||||||||¬¦  «        S )z8
        Save PDF using some different defaults
        )ÚgarbageÚcleanÚdeflateÚdeflate_imagesÚdeflate_fontsÚincrementalrŒ  ÚexpandÚlinearÚprettyÚ
encryptionÚpermissionsÚowner_pwÚuser_pwÚ	no_new_idÚpreserve_metadataÚuse_objstmsÚcompression_effortÚraise_on_repairÚreproducible)Úsave)r(   rf   r  r  r  r  r  r  rŒ  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  s                         r)   Úez_savezDocument.ez_save+  s^   € ð6 �yŠyØØØØØ-Ø+Ø'ØØØØØ%Ø'Ø!ØØ#Ø"3Ø'Ø#5Ø /Ø)ð+ ñ ô ð 	r*   c                óŒ   — | j         s| j        rt          d¦  «        ‚t          j        | j        |¦  «        }|j        |j        fS )z-Find new location after layouting a document.r-  )rÂ   r   rÃ   r�   Úfz_lookup_bookmark2rÄ   rÔ  rÖ   )r(   r  Úlocations      r)   Úfind_bookmarkzDocument.find_bookmark^  sI   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ÝÔ,¨d¬i¸Ñ<Ô<ˆØÔ ¤Ð.Ð.r*   c                ó
  — t          | ¦  «        }t          j        |¦  «        }	 t          |d|dz
  ¦  «        rt          |d|dz
  ¦  «        st	          t
          ¦  «        ‚t          j        t          j        ||¦  «        ¦  «        }t          j        |¦  «        }t          j	        |t          d¦  «        ¦  «        }|j        �r”t          j        |¦  «        }t          j        ||¦  «        }	t          |¦  «        D �]7}
t          j        ||
¦  «        }t          j	        |t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        rŒ]t          j        |d¦  «        j        rŒxt          j        t          j        |¦  «        ¦  «        }t          j        |¦  «        }t          j        |||¦  «         t          j        ||d¦  «        }t          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        ¦  «         t          j        |	|¦  «         �Œ9t          j        |t          d¦  «        |	¦  «         t1          |¦  «        }|rv|j        rot          j        |t          j        d	¦  «        t          j        ¦   «         d¦  «        }t9          |||d¦  «         t          j        |t          d
¦  «        |¦  «         t          j        |¦  «        }t          j        |||¦  «         t          j        ||d¦  «        }t          j        |||¦  «         t          j        |j        ¦  «         n# t          j        |j        ¦  «         w xY w|                      ¦   «          dS )zMake a full page duplicate.r   r   r1  r—  r†  r–  r  rÂ  ó    r  N) rÎ   r�   rB  r   rÃ   rD  r-  rE  rÈ  r  r  rÌ   r›  rK  rL  rœ  rý  rþ   Úpdf_create_objectÚpdf_update_objectr‰  rA  r�  rN  ÚJM_read_contentsÚpdf_add_streamr‘  ÚPdfObjr)  ru  rL  r`  )r(   rÕ  r\  rZ  rÐ  re  rh  Ú
old_annotsrE   Ú
new_annotsr®   r¡  r  Úcopy_or  r  rw  s                    r)   Úfullcopy_pagezDocument.fullcopy_pagee  s-  € å˜tÑ$Ô$ˆÝÔ*¨CÑ0Ô0ˆ
ð0	9Ý˜S ! Z°!¡^Ñ4Ô4ð 2Ý# B¨¨J¸©NÑ;Ô;ð2õ !¥.Ñ1Ô1Ð1åÔ.µÔ0IÈ3ÐPSÑ0TÔ0TÑUÔUˆEåÔ+¨UÑ3Ô3ˆEÝÔ+¨UµH¸XÑ4FÔ4FÑGÔGˆJð Ô$ñ KÝÔ'¨Ñ4Ô4�Ý"Ô0°#°qÑ9Ô9�
Ý˜q™œð >ñ >�AÝÔ+¨Z¸Ñ;Ô;�AÝ#Ô0°!µX¸iÑ5HÔ5HÑIÔI�GÝÔ(¨'µ8¸GÑ3DÔ3DÑEÔEð !Ø ÝÔ*¨A¨uÑ5Ô5Ô@ð !Ø Ý"Ô4µeÔ6PÐRSÑ6TÔ6TÑUÔU�FÝ Ô2°CÑ8Ô8�DÝÔ+¨S°$¸Ñ?Ô?Ð?Ý"Ô3°S¸$ÀÑBÔB�FÝÔ&¨µ¸Ñ0AÔ0AÑBÔBÐBÝÔ&¨µ¸±´Ñ>Ô>Ð>ÝÔ(¨*°fÑ=Ô=Ð=Ñ=ÝÔ" E­8°HÑ+=Ô+=¸zÑJÔJÐJõ # EÑ*Ô*ˆCð ð K�s”~ð Kå Ô/°µeÔ6ZÐ\`Ñ6aÔ6aÕchÔcoÑcqÔcqÐstÑuÔu�Ý  # x°°aÑ8Ô8Ð8ÝÔ" E­8°JÑ+?Ô+?ÀÑJÔJÐJõ Ô*¨CÑ0Ô0ˆDÝÔ# S¨$°Ñ6Ô6Ð6åÔ*¨C°°qÑ9Ô9ˆEÝÔ! 3¨¨EÑ2Ô2Ð2åÔ'¨¬Ñ8Ô8Ð8Ð8ø�EÔ'¨¬Ñ8Ô8Ð8Ð8øøøà×ÒÑÔÐÐÐs   ¥LM ÍM,r  r*  ÚfontdictÚOptDictc                ó  — t          | |¦  «        }|€Ö|€$t          j        | |¦  «        \  }}}}	}
||||	|
dœ}n(|d         }|d         }|d         }|d         }|d         }|dk    rt          d	¦  «        ‚|d
v rd}nd}|dv rd}n|dv rd}n|dv rd}n	|dv rd}nd}||d<   |dk    rt          }n|dk    rt
          }nd}||d<   ||d<   ||g}| j                             |¦  «         n |d         }|d         }|d         }|d         }|€d}nt          |¦  «        }t          d|¦  «        }||k    r|S |dk     r-|  
                    ||d         |d         |d         ||¦  «        }nd}||d<   ||d<   t          | |¦  «         |S )a¹  Get list of glyph information of a font.

        Notes:
            Must be provided by its XREF number. If we already dealt with the
            font, it will be recorded in doc.FontInfos. Otherwise we insert an
            entry there.
            Finally we return the glyphs for the font. This is a list of
            (glyph, width) where glyph is an integer controlling the char
            appearance, and width is a float controlling the char's spacing:
            width * fontsize is the actual space.
            For 'simple' fonts, glyph == ord(char) will usually be true.
            Exceptions are 'Symbol' and 'ZapfDingbats'. We are providing data for these directly here.
        N)r   rÈ   r  ÚascenderÚ	descenderr   r  rÈ   r  Úsimpler\   zxref is not a font)ÚType1ÚMMType1ÚTrueTypeTF)ÚFangtiÚMingr   )ÚHeitiÚSongr   )ÚGothicÚMinchor   )ÚDotumÚBatangr   r1  ÚZapfDingbatsÚSymbolÚglyphsr  )ÚCheckFontInforô  Ú_get_font_propertiesrÃ   Úzapf_glyphsÚsymbol_glyphsr  rk   r7   rê  r)  ÚUpdateFontInfo)r*  r  r  r8  r:  Úfontinfor   r  ÚstypeÚascÚdscr  r?  rM  Úoldlimitr%  s                   r)   Úget_char_widthszDocument.get_char_widths�  sA  € õ( !  dÑ+Ô+ˆØÐØÐÝ-2Ô-GÈÈTÑ-RÔ-RÑ*��c˜5 # sà Ø!ØØ #Ø!$ðð ��ð   Ô'�Ø˜u”o�Ø  Ô(�Ø# JÔ/�Ø! (Ô+�à�bŠyˆyÝ Ð!5Ñ6Ô6Ð6ð Ð8Ð8Ð8Ø��à�ð Ð)Ð)Ð)Ø��ØÐ*Ð*Ð*Ø��ØÐ-Ð-Ð-Ø��ØÐ,Ð,Ð,Ø��à�à!'ˆH�XÑà�~Ò%Ð%Ý$��Ø˜Ò!Ð!Ý&��à�à!'ˆH�XÑØ#+ˆH�ZÑ Ø˜hÐ'ˆHØŒM× Ò  Ñ*Ô*Ð*Ð*à ”{ˆHØ˜hÔ'ˆFØ˜hÔ'ˆFØ 
Ô+ˆHàˆ>ØˆHˆHå˜6‘{”{ˆHå�c˜5‘/”/ˆà�hÒÐØˆMà�aŠ<ˆ<Ø×)Ò)Ø�h˜vÔ&¨°¬¸À*Ô9MÈwÐX[ñô ˆFˆFð ˆFà#ˆ�ÑØˆ�‰Ý�s˜HÑ%Ô%Ð%àˆr*   c                óÊ  — t          | ¦  «        }t          j        t          j        |¦  «        t	          d¦  «        t	          d¦  «        ¦  «        }|j        sdS |dk    r#t          j        |t	          d¦  «        ¦  «        }n5t          j        t          j        |t	          d¦  «        ¦  «        |¦  «        }|j        st          t          ¦  «        ‚t          |¦  «        }|S )z,Content of ON, OFF, RBGroups of an OC layer.r/  ÚOCPropertiesNr1  r  r£  )rÎ   r�   r  r3  r  rÌ   r  rœ  rÃ   r¨  ÚJM_get_ocg_arrays)r(   r©  rZ  r²  r  r    s         r)   Ú	get_layerzDocument.get_layer  sÓ   € å˜tÑ$Ô$ˆÝÔ!ÝÔ! 3Ñ'Ô'Ý˜Ñ Ô Ý˜Ñ(Ô(ñô ˆð
 Œ~ð 	ØˆFØ�RŠ<ˆ<ÝÔ$ c­8°C©=¬=Ñ9Ô9ˆCˆCåÔ%ÝÔ&¨­X°iÑ-@Ô-@ÑAÔAØñô ˆCð Œ~ð 	1ÝÕ/Ñ0Ô0Ð0Ý Ñ$Ô$ˆØˆ	r*   c                óè  — t          | ¦  «        }t          j        |¦  «        }|dk    rft          j        t          j        |¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        sd}g }t          j        ¦   «         }t          |¦  «        D ]=}t          j	        |||¦  «         ||j
        |j        dœ}|                     |¦  «         Œ>|S )zShow optional OC layers.r   r/  rZ  r£  r   )Únumberr   r•  )rÎ   r�   Úpdf_count_layer_configsr  r3  r  rŽ  ÚPdfLayerConfigrL  Úpdf_layer_config_infor   r•  rk   )r(   rZ  rE   r  r    r  r®   rC   s           r)   Ú
get_layerszDocument.get_layers  sõ   € å˜tÑ$Ô$ˆÝÔ)¨3Ñ/Ô/ˆØ�Š6ˆ6ÝÔ%ÝÔ% sÑ+Ô+Ý˜VÑ$Ô$Ý˜^Ñ,Ô,Ý˜YÑ'Ô'ñ	ô ˆCõ Ô% sÑ+Ô+ð Ø�ØˆÝÔ#Ñ%Ô%ˆÝ�q‘”ð 	ð 	ˆAÝÔ'¨¨a°Ñ6Ô6Ð6àØ œIØ#œ|ðð ˆDð
 �IŠI�tÑÔÐÐØˆ	r*   c                ó¨   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }d}t	          |¦  «         t          j        |¦  «        }|S )zMake new xref.r-  r   )rÂ   r   rÃ   rÎ   ÚENSURE_OPERATIONr�   r1  )r(   rZ  r  s      r)   Úget_new_xrefzDocument.get_new_xref1  sZ   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆØˆÝ˜ÑÔÐÝÔ& sÑ+Ô+ˆØˆr*   c                ó2  — | j         s| j        rt          d¦  «        ‚|                      |d¦  «        \  }}|dk    s|dvrt          d|› �¦  «        ‚|                      |d¦  «        \  }}|dk    rdS t	          |                     d	d
¦  «        ¦  «        }|S )zšReturn optional content object xref for an image or form xobject.

        Args:
            xref: (int) xref number of an image or form xobject.
        údocument close or encryptedr†  r   ©ú/Imageú/Formúbad object type at xref rÃ  r  r   ú0 Rr\   )rÂ   r   rÃ   rñ  r4   rà  )r*  r  rD  r   rÅ  r    s         r)   rÆ  zDocument.get_oc;  s²   € ð Œ=ð 	<˜CÔ,ð 	<ÝÐ:Ñ;Ô;Ð;Ø×"Ò" 4¨Ñ3Ô3‰ˆˆ4Ø�Š;ˆ;˜$Ð&9Ð9Ð9ÝÐ>¸Ð>Ð>Ñ?Ô?Ð?Ø× Ò   tÑ,Ô,‰ˆˆ2Ø�Š;ˆ;Ø�1Ý�—’˜E 2Ñ&Ô&Ñ'Ô'ˆØˆ	r*   c           	     ój  — t          j        d¦  «        }t          | ¦  «        }t          j        t          j        t          j        |¦  «        t          d¦  «        ¦  «        t          d¦  «        t          d¦  «        ¦  «        }t          ¦   «         }t          j        |¦  «        s|S t          j	        |¦  «        }t          |¦  «        D �]ä}t          j        ||¦  «        }t          j        |¦  «        }t          j        t          j        |t          d¦  «        ¦  «        ¦  «        }	t          j        |t          d¦  «        |t          d¦  «        ¦  «        }
d}|
j        rt          j        |
¦  «        }t!          ¦   «         }t          j        |t          d	¦  «        ¦  «        }|j        rÆt          j        |¦  «        r(|                     t          j        |¦  «        ¦  «         nŠt          j        |¦  «        rvt          j	        |¦  «        }t          |¦  «        D ]R}t          j        ||¦  «        }t          j        |¦  «        r'|                     t          j        |¦  «        ¦  «         ŒSt          j        ¦   «         }t          j        ||||¦  «        }|	|| |d
œ}|}|||<   �Œæ|S )z&Show existing optional content groups.rž  r/  rZ  r¢  r  r�  r†  Nrš  )r   rª  r–  r«  )r�   r4  rÎ   r  r  r3  r  r5   rŽ  r›  rL  rœ  r  r  rÌ   ry  r´   r»  rk   ÚPdfResourceStackÚpdf_is_ocg_hidden)r(   r  rZ  Úocgsr    rE   r®   r¬  r  r   r  r«  r­  rª  r€  r�  r¡  Úresource_stackÚhiddenrC   r€  s                        r)   Úget_ocgszDocument.get_ocgsL  su  € åÔ Ñ/Ô/ˆÝ˜tÑ$Ô$ˆÝÔ"ÝÔ"¥EÔ$5°sÑ$;Ô$;½XÀfÑ=MÔ=MÑNÔNÝ˜Ñ(Ô(Ý˜Ñ Ô ñô ˆõ
 ‰VŒVˆÝÔ! 4Ñ(Ô(ð 	ØˆIÝÔ Ñ&Ô&ˆÝ�q‘”ð 	ñ 	ˆAÝÔ% t¨QÑ/Ô/ˆCÝÔ# SÑ)Ô)ˆDÝÔ+­UÔ-?ÀÅhÈvÑFVÔFVÑ-WÔ-WÑXÔXˆDÝÔ% s­H°WÑ,=Ô,=¸rÅ8ÈIÑCVÔCVÑWÔWˆCØˆEØŒ~ð 0ÝÔ)¨3Ñ/Ô/�Ý‘f”fˆGÝÔ'¨­h°xÑ.@Ô.@ÑAÔAˆFØÔ ð CÝÔ$ fÑ-Ô-ð CØ—N’N¥EÔ$5°vÑ$>Ô$>Ñ?Ô?Ð?Ð?ÝÔ'¨Ñ0Ô0ð CÝÔ+¨VÑ4Ô4�AÝ" 1™XœXð Cð C˜Ý!Ô/°¸Ñ;Ô;˜Ý Ô,¨aÑ0Ô0ð CØ#ŸNšN­EÔ,=¸qÑ,AÔ,AÑBÔBÐBøÝ"Ô3Ñ5Ô5ˆNÝÔ,¨c°>À5È#ÑNÔNˆFà Ø%Ø$˜*Ø"ð	ð ˆDð ˆDØˆB�‰I‰IØˆ	r*   c                óŒ  — |t          |                      ¦   «         ¦  «        vrt          d¦  «        ‚|                      |d¬¦  «        }d|vrt          d¦  «        ‚t	          |¦  «        }|                     d¦  «        }|                     d|¦  «        }|dk     s|dk     rd	}nU||d
z   |…                              dd¦  «                             ¦   «         }t          t          t          |¦  «        ¦  «        }|                     d¦  «        }|dk     rd	}nW|                     d|¦  «        }|dk     r|                     d|¦  «        }|dk     rt          d¦  «        ‚||dz   |dz   …         }|                     d¦  «        }|dk     rd	}�n0dx}	}
|}|	dk     s|	|
k    rH|dz  }||k     st          d¦  «        ‚||         dk    r|	dz  }	||         dk    r|
dz  }
|	dk     °B|	|
k    °H||dz   |dz   …         }|                     dd¦  «                             dd¦  «                             dd¦  «        }|                     dd¦  «                             dd¦  «                             dd ¦  «        }dd	l}	 |                     |¦  «        }n/# t          $ r" t          ¦   «          t          d!|›�¦  «         ‚ w xY w||||d"œS )#aˆ  Return the definition of an OCMD (optional content membership dictionary).

        Recognizes PDF dict keys /OCGs (PDF array of OCGs), /P (policy string) and
        /VE (visibility expression, PDF array). Via string manipulation, this
        info is converted to a Python dictionary with keys "xref", "ocgs", "policy"
        and "ve" - ready to recycle as input for 'set_ocmd()'.
        úbad xrefTr…  ú
/Type/OCMDzbad object typeú/OCGs[rm  r   Nrô  rl  r³   ú/P/r|  r–  zbad object at xrefr   r   z/VE[r   rl  z/Andz"and",z/Notz"not",z/Orz"or",z 0 R]ú 0 Rr   z][z],[zbad /VE key: )r  rp  ÚpolicyÚve)rL  Úxref_lengthrÃ   rˆ  r7   r¡   rà  r6   r´   rÝ  r4   ÚjsonÚloadsrg   rv   rr   )r*  r  r   ÚtextlenÚp0r  rp  rz  r{  ÚlpÚrpr}  s               r)   Úget_ocmdzDocument.get_ocmdx  sû  € ð •u˜SŸ_š_Ñ.Ô.Ñ/Ô/Ð/Ð/Ý˜ZÑ(Ô(Ð(Ø�Š˜t°ˆÑ5Ô5ˆØ˜tÐ#Ð#ÝÐ.Ñ/Ô/Ð/Ý�d‘)”)ˆà�YŠY�xÑ Ô ˆØ�YŠY�s˜BÑÔˆØ�Š6ˆ6�R˜!’V�VØˆDˆDà˜˜Q™ ˜Ô$×,Ò,¨U°CÑ8Ô8×>Ò>Ñ@Ô@ˆDÝ��C ™œÑ'Ô'ˆDà�YŠY�uÑÔˆØ�Š6ˆ6ØˆFˆFà—’˜4 Ñ$Ô$ˆBØ�AŠvˆvØ—Y’Y˜t RÑ(Ô(�Ø�AŠvˆvÝ Ð!5Ñ6Ô6Ð6à˜b 1™f r¨A¡v˜oÔ.�à�YŠY�vÑÔˆØ�Š6ˆ6ØˆB‰BàˆKˆB�ØˆBØ�q’&�&˜B "šH˜HØ�a‘�Ø˜G’|�|Ý$Ð%9Ñ:Ô:Ð:Ø˜”8˜s’?�?Ø˜!‘G�BØ˜”8˜s’?�?Ø˜!‘G�Bð �q’&�&˜B "šH˜Hð �b˜1‘f˜r A™v�oÔ&ˆBà—
’
˜6 8Ñ,Ô,ß’˜ Ñ*Ô*ß’˜ Ñ(Ô(ð ð
 —’˜G SÑ)Ô)×1Ò1°&¸#Ñ>Ô>×FÒFÀtÈUÑSÔSˆBØˆKˆKˆKðØ—Z’Z ‘^”^��øÝð ð ð ÝÑ Ô Ð ÝÐ.¨Ð.Ð.Ñ/Ô/Ð/Øðøøøð  d°fÀBÐGÐGÐGs   É:J Ê,J<c                ó„  — g }t          | d¬¦  «        }|j        s|S t          j        t          j        |¦  «        t          d¦  «        ¦  «        }|j        s|S t          j        |t          d¦  «        ¦  «        }|j        s|S t          j        |t          d¦  «        ¦  «        }|j        s|S t          ||¦  «        }|S )z!Get list of outline xref numbers.r   r.  r/  r>  r?  )rÎ   rÌ   r�   r  r3  r  r@  )r(   rC  rZ  r;  rD  rE  s         r)   r:  zDocument.get_outline_xrefs»  sÄ   € àˆÝ˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	ØˆLÝÔ!¥%Ô"3°CÑ"8Ô"8½(À6Ñ:JÔ:JÑKÔKˆØŒð 	ØˆLÝÔ# D­(°:Ñ*>Ô*>Ñ?Ô?ˆØÔ ð 	ØˆLÝÔ" 6­8°GÑ+<Ô+<Ñ=Ô=ˆØÔð 	ØˆLÝ  ¨Ñ.Ô.ˆØˆr*   Úfullc                ó.  — | j         s| j        rt          d¦  «        ‚| j        sdS t	          |¦  «        t
          ur4	 |j        }n+# t          $ r t          ¦   «          t          d¦  «        ‚w xY w|  	                    |d¦  «        }|sd„ |D ¦   «         S |S )z1Retrieve a list of fonts used on a page.
        r-  r-   zneed a Page or page numberr   c                ó"   — g | ]}|d d…         ‘ŒS ©Nr1  r-   ©r­   rF   s     r)   r¯   z+Document.get_page_fonts.<locals>.<listcomp>Ü  ó    € Ð(Ð(Ð(˜q�A�c�r�c”FÐ(Ð(Ð(r*   )
rÂ   r   rÃ   rÛ  rÈ   r4   r^  rg   rv   rO  ©r(   rÕ  r…  r  s       r)   Úget_page_fontszDocument.get_page_fontsÍ  sÃ   € ð Œ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒ{ð 	Ø�2Ý�‰9Œ9�CÐÐð?Ø”j��øÝð ?ð ?ð ?ÝÑ Ô Ð Ý Ð!=Ñ>Ô>Ð>ð?øøøð ×Ò  QÑ'Ô'ˆØð 	)Ø(Ð( CÐ(Ñ(Ô(Ð(Øˆ
s   ¾A Á(A.c                óš   — | j         s| j        rt          d¦  «        ‚| j        sdS |                      |d¦  «        }|sd„ |D ¦   «         S |S )z2Retrieve a list of images used on a page.
        r-  r-   r   c                ó"   — g | ]}|d d…         ‘ŒS rˆ  r-   r‰  s     r)   r¯   z,Document.get_page_images.<locals>.<listcomp>è  rŠ  r*   ©rÂ   r   rÃ   rÛ  rO  r‹  s       r)   Úget_page_imageszDocument.get_page_imagesß  sl   € ð Œ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒ{ð 	Ø�2Ø×Ò  QÑ'Ô'ˆØð 	)Ø(Ð( CÐ(Ñ(Ô(Ð(Øˆ
r*   c                ó>   — d„ |                       ¦   «         D ¦   «         S )zÙReturn page label definitions in PDF document.

        Returns:
            A list of dictionaries with the following format:
            {'startpage': int, 'prefix': str, 'style': str, 'firstpagenum': int}.
        c                ó6   — g | ]}t          j        |¦  «        ‘ŒS r-   )rô  Ú	rule_dict)r­   rC   s     r)   r¯   z,Document.get_page_labels.<locals>.<listcomp>ó  s"   € ÐJÐJÐJ¨$•” Ñ%Ô%ÐJÐJÐJr*   )r1  r.   s    r)   Úget_page_labelszDocument.get_page_labelsë  s%   € ð KÐJ°$×2GÒ2GÑ2IÔ2IÐJÑJÔJÐJr*   c                óà   — g }|s|S |                       ¦   «         }|g k    r|S t          | j        ¦  «        D ]6}t          j        ||¦  «        }||k    r|                     |¦  «         |r nŒ7|S )a"  Return a list of page numbers with the given label.

        Args:
            doc: PDF document object (resp. 'self').
            label: (str) label.
            only_one: (bool) stop searching after first hit.
        Returns:
            List of page numbers having this label.
        )r1  rL  rÐ  rô  Úget_label_pnork   )r*  ÚlabelÚonly_oner{  rŠ  r®   Úplabels          r)   Úget_page_numberszDocument.get_page_numbersõ  sŽ   € ð ˆØð 	ØˆNØ×%Ò%Ñ'Ô'ˆØ�RŠ<ˆ<ØˆNÝ�s”~Ñ&Ô&ð 	ð 	ˆAÝÔ(¨¨FÑ3Ô3ˆFØ˜ŠˆØ—’˜qÑ!Ô!Ð!Øð Ø�EøØˆr*   ©rÙ  rÚ  rÛ  r  rÜ  rŸ  rÙ  r¹   rÛ  r”  r  r¼   rÜ  ú'Pixmap'c               óh   — |€t           }|€t          }| |                              ||||||¬¦  «        S )a  Create pixmap of document page by page number.

        Notes:
            Convenience function calling page.get_pixmap.
        Args:
            pno: (int) page number
            matrix: pymupdf.Matrix for transformation (default: pymupdf.Identity).
            colorspace: (str,pymupdf.Colorspace) rgb, rgb, gray - case ignored, default csRGB.
            clip: (irect-like) restrict rendering to this area.
            alpha: (bool) include alpha channel
            annots: (bool) also render annotations
        Nr›  )ÚIdentityrÏ  rá  )r*  rÕ  rÙ  rÚ  rÛ  r  rÜ  rŸ  s           r)   Úget_page_pixmapzDocument.get_page_pixmap  sK   € ð. ˆ>ÝˆFØÐÝˆJØ�3Œx×"Ò"ØØ JØØØð #ñ ô ð 	r*   r   Úoptionr¾  ÚOptIntÚtextpageú
'TextPage'rÙ  ú
typing.Anyc                ó@   — | |                               ||||¬¦  «        S )a>  Extract a document page's text by page number.

        Notes:
            Convenience function calling page.get_text().
        Args:
            pno: page number
            option: (str) text, words, blocks, html, dict, json, rawdict, xhtml or xml.
        Returns:
            output from page.TextPage().
        )r  r¾  rÙ  )rõ  )r*  rÕ  r   r  r¾  r¢  rÙ  s          r)   Úget_page_textzDocument.get_page_text2  s%   € ð& �3Œx× Ò  ¨d¸%ÀdÐ ÑKÔKÐKr*   c                ó~   — | j         s| j        rt          d¦  «        ‚| j        sdS |                      |d¦  «        }|S )z4Retrieve a list of XObjects used on a page.
        r-  r-   r   r�  )r(   rÕ  r  s      r)   Úget_page_xobjectszDocument.get_page_xobjectsG  sP   € ð Œ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒ{ð 	Ø�2Ø×Ò  QÑ'Ô'ˆØˆ
r*   c                ó  — t          | d¬¦  «        }|j        sdS t          j        t          j        |¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }d}|j        rt          j        |¦  «        }|S )zGet the /SigFlags value.r   r.  r1  r/  r0  ÚSigFlags)rÎ   rÌ   r�   r  r3  r  r  )r(   rZ  ÚsigflagsÚsigflags       r)   Úget_sigflagszDocument.get_sigflagsQ  s‹   € å˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	Ø�2ÝÔ&ÝÔ! #Ñ&Ô&Ý˜Ñ Ô Ý˜Ñ$Ô$Ý˜Ñ$Ô$ñ	ô ˆð ˆØÔð 	1ÝÔ& xÑ0Ô0ˆGØˆr*   r?  c                óâ   ‡ ‡‡— ˆ ˆˆfd„Š‰ j         rt          d¦  «        ‚‰                      ¦   «          ‰ j        }|sg S d}g } ‰|||¦  «        }‰ j        r‰s‰                      |¦  «         |S )a  Create a table of contents.

        Args:
            simple: a bool to control output. Returns a list, where each entry consists of outline level, title, page number and link destination (if simple = False). For details see PyMuPDF's documentation.
        c                óØ  •— | ræ| j         j        rÚ| j        r| j        }nd}| j        sF| j        r<| j        dk    r&‰                     | j        ¦  «        }|d         dz   }n| j        dz   }nd}nd}‰	s/t          j        | ‰¦  «        }| 	                    ||||g¦  «         n| 	                    |||g¦  «         | j
        r ‰| j
        ||dz   ¦  «        }| j        } | r| j         j        °Ú|S )zPRecursively follow the outline item chain and record item information in a list.r³   r1  r   r   )rÄ   rÌ   ry  Úis_externalra  rÖ   Úresolve_linkrô  ÚgetLinkDictrk   Údownr=  )
ÚolItemrM  Úlvlry  ÚresolverÖ   Úlinkr*  rŠ  r?  s
          €€€r)   rŠ  z!Document.get_toc.<locals>.recursej  s'  ø€ àð %˜Vœ[Ô3ð %Ø”<ð  Ø"œL�E�Eà�EàÔ)ð 
Ø”zð "Ø!œ;¨"Ò,Ð,Ø&)×&6Ò&6°v´zÑ&BÔ&B˜GØ#*¨1¤:°¡>˜D˜Dà#)¤;°¡?˜D˜Dà!˜˜à�Dàð 5Ý Ô,¨V°SÑ9Ô9�DØ—L’L # u¨d°DÐ!9Ñ:Ô:Ð:Ð:à—L’L # u¨dÐ!3Ñ4Ô4Ð4à”;ð AØ#˜G F¤K°¸¸a¹Ñ@Ô@�EØœ�ð5 ð %˜Vœ[Ô3ð %ð6 ˆLr*   r¾   r   )rÂ   rÃ   r  ÚoutlinerÛ  r  )r*  r?  r´  rµ  rM  rß  rŠ  s   ``    @r)   rÛ  zDocument.get_toca  s¬   øøø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	ð@ Œ=ð 	0ÝÐ.Ñ/Ô/Ð/Ø�Š‰ŒˆØ”ˆØð 	ØˆIØˆØˆØˆg�f˜e SÑ)Ô)ˆØŒ:ð 	'˜fð 	'Ø×!Ò! #Ñ&Ô&Ð&Øˆ
r*   c                ó  — d}t          | d¬¦  «        }|j        rBt          j        t          j        |¦  «        t          d¦  «        t          d¦  «        ¦  «        }|�+|j        r$t          j        |¦  «        }t          |¦  «        }nd}|S )zGet document XML metadata.Nr   r.  r/  rÔ  r\   )rÎ   rÌ   r�   r  r3  r  r  ÚJM_UnicodeFromBuffer)r(   ÚxmlrZ  rN  r    s        r)   Úget_xml_metadatazDocument.get_xml_metadata—  s�   € àˆÝ˜t¨aÐ0Ñ0Ô0ˆØŒ>ð 	ÝÔ%ÝÔ% cÑ*Ô*Ý˜VÑ$Ô$Ý˜ZÑ(Ô(ñô ˆCð
 ˆ?˜sœ~ˆ?ÝÔ(¨Ñ-Ô-ˆDÝ% dÑ+Ô+ˆBˆBàˆBØˆ	r*   c                ó  — | j         rt          d¦  «        ‚| j        st          d¦  «        ‚t          | j        ¦  «        D ]J}|                      |¦  «        D ]2}|d         t          j        k    s|d         t          j        k    s  dS Œ3ŒKdS )z0Check whether there are annotations on any page.r¾   rÙ  r   TF)	rÂ   rÃ   rÛ  rL  rÐ  Úpage_annot_xrefsr�   ÚPDF_ANNOT_LINKr4  ©r*  r®   rC   s      r)   Ú
has_annotszDocument.has_annots¨  s¢   € àŒ=ð 	0ÝÐ.Ñ/Ô/Ð/ØŒzð 	*Ý˜[Ñ)Ô)Ð)Ý�s”~Ñ&Ô&ð 	 ð 	 ˆAØ×,Ò,¨QÑ/Ô/ð  ð  �à˜Qœ¥5Ô#7Ò7Ð7¸4À¼7ÅeÔF\Ò;\Ð;\Ø˜4˜4˜4øð ð ˆur*   c                óð   — | j         rt          d¦  «        ‚| j        st          d¦  «        ‚t          | j        ¦  «        D ]4}|                      |¦  «        D ]}|d         t          j        k    r  dS ŒŒ5dS )z*Check whether there are links on any page.r¾   rÙ  r   TF)rÂ   rÃ   rÛ  rL  rÐ  r¾  r�   r¿  rÀ  s      r)   Ú	has_linkszDocument.has_linksµ  s•   € àŒ=ð 	0ÝÐ.Ñ/Ô/Ð/ØŒzð 	*Ý˜[Ñ)Ô)Ð)Ý�s”~Ñ&Ô&ð 	 ð 	 ˆAØ×,Ò,¨QÑ/Ô/ð  ð  �Ø˜”7�eÔ2Ò2Ð2Ø˜4˜4˜4ð 3ð ð ˆur*   c                óP  ‡ — ‰ j         rt          d¦  «        ‚‰                      ¦   «         ‰ _        t	          ˆ fd„ddddddd	d
dddœ
                     ¦   «         D ¦   «         ¦  «        ‰ _        ‰                      d¦  «        dk    rd n‰                      d¦  «        ‰ j        d<   d S )Nz,cannot initialize - document still encryptedc                óD   •— g | ]\  }}|‰                      |¦  «        f‘ŒS r-   )r4  )r­   rŸ  rF   r(   s      €r)   r¯   z%Document.init_doc.<locals>.<listcomp>Æ  s=   ø€ ð ð ð Ù58°Q°q˜˜4×,Ò,¨QÑ/Ô/Ð0ðð ð r*   Úformatz
info:Titlezinfo:Authorzinfo:Subjectzinfo:Keywordszinfo:Creatorzinfo:Producerzinfo:CreationDatezinfo:ModDatezinfo:Trapped)
rÆ  ry  Úauthorr|  Úkeywordsr•  Úproducerrz  r{  Útrappedr  r×  )r   rÃ   rY  rÇ  r5   rB   r  r4  r.   s   `r)   r  zDocument.init_docÁ  sØ   ø€ ØÔð 	MÝÐKÑLÔLÐLØ×)Ò)Ñ+Ô+ˆŒÝðð ð ð à%-Ø$0Ø%2Ø&4Ø'6Ø&4Ø'6Ø+>Ø&4Ø&4ð=ð =÷ $še™gœgðñ ô ñô ˆŒð  /3×.?Ò.?ÀÑ.MÔ.MÈvÒ.UÐ.U d dÐ[_×[lÒ[lÐmyÑ[zÔ[zˆŒ�lÑ#Ð#Ð#r*   c
                óÂ  — d}
t          |t          ¦  «        rH|j        j        dk    rt          t          |¦  «        }t          d|                     ¦   «         ¦  «        }
n't          |t
          ¦  «        r|}
nt          |¦  «        }
|
st          d¦  «        ‚|
j        s$|
 	                    ¦   «         }t          d|¦  «        }
|  
                    |
||||||||	¬¦	  «	        S )zß
        Insert an arbitrary supported document to an existing PDF.

        The infile may be given as a filename, a Document or a Pixmap. Other
        parameters - where applicable - equal those of insert_pdf().
        Nr   Úpngzbad infile parameterrZ  )rT  rU  rV  rY  r}  rŸ  Úshow_progressÚfinal)r>   r×  rÛ  rE   rÏ  rÁ   ÚtobytesrÃ   rÛ  r  Ú
insert_pdf)r(   ÚinfilerT  rU  rV  rY  r}  rŸ  rÍ  rÎ  rÖ  Úpdfbytess               r)   Úinsert_filezDocument.insert_file×  só   € ð" ˆÝ�f�fÑ%Ô%ð 	#ØÔ Ô" QÒ&Ð&Ý¥ vÑ.Ô.�Ý˜5 &§.¢.Ñ"2Ô"2Ñ3Ô3ˆCˆCÝ˜¥Ñ)Ô)ð 	#ØˆCˆCå˜6Ñ"Ô"ˆCØð 	5ÝÐ3Ñ4Ô4Ð4ØŒzð 	,Ø×)Ò)Ñ+Ô+ˆHÝ˜5 (Ñ+Ô+ˆCØ�ŠØØ#ØØ!ØØØØ+Øð ñ 
ô 
ð 
	r*   Úhelvr1  útyping.Union[str, list, None]rú   ro  r]  rÕ  rù   rS  r  rÀ  c	                óŽ   — |                       |||¬¦  «        }	t          |¦  «        sdS |	                     d|||||¬¦  «        }
|
S )zÔCreate a new PDF page and insert some text.

        Notes:
            Function combining pymupdf.Document.new_page() and pymupdf.Page.insert_text().
            For parameter details see these methods.
        )rÕ  r]  rÕ  r   )é2   rÍ  )rú   rù   rS  r  )Únew_pagerç   r)  )r*  rÕ  r   rú   r]  rÕ  rù   rS  r  rÖ   r    s              r)   Úinsert_pagezDocument.insert_page  sa   € ð" �|Š| ¨5¸ˆ|Ñ@Ô@ˆÝ�D‰zŒzð 	Ø�1Ø×ÒØØØØØØð ñ 
ô 
ˆð ˆ	r*   )rT  rU  rV  rY  r}  rŸ  r½  r²  rÍ  rÎ  Ú_gmapc               óÌ  — | j         s| j        rt          d¦  «        ‚| j        |j        k    rt          d¦  «        ‚|}|dk     r| j        }| j        }|j        }|}|}|}t          |d¦  «        }t          ||dz
  ¦  «        }|dk     r|dz
  }t          ||dz
  ¦  «        }|dk     r|}t          ||¦  «        }t          |¦  «        |
cxk    rdk    rin nft          j	         
                    |j        ¦  «        }|sd}t          j	         
                    | j        ¦  «        }|sd}t          d|› d|› d�¦  «         |j        }| j                             |d	¦  «        }|€t          | ¦  «        }|| j        |<   t           r$t#          | j        |j        |||||||
||¦  «         nbt'          | ¦  «        }t'          |¦  «        }|j        r|j        st+          d
¦  «        ‚t-          |¦  «         t/          |||||||||
|¦
  «
         |                      ¦   «          |r|                      ||||¬¦  «         |r|                      ||||||	¬¦  «         |dk    rd	| j        |<   d	S d	S )a½  Insert a page range from another PDF.

        Args:
            docsrc: PDF to copy from. Must be different object, but may be same file.
            from_page: (int) first source page to copy, 0-based, default 0.
            to_page: (int) last source page to copy, 0-based, default last page.
            start_at: (int) from_page will become this page number in target.
            rotate: (int) rotate copied pages, default -1 is no change.
            links: (int/bool) whether to also copy links.
            annots: (int/bool) whether to also copy annotations.
            widgets: (int/bool) whether to also copy form fields.
            join_duplicates: (int/bool) join or rename duplicate widget names.
            show_progress: (int) progress message interval, 0 is no messages.
            final: (bool) indicates last insertion from this source PDF.
            _gmap: internal use only

        Copy sequence reversed if from_page > to_page.r-  z'source and target cannot be same objectr   r   z
memory PDFzInserting 'z' at 'rë   Nzsource or target not a PDF)rT  rU  rV  )rT  rU  rV  r²  )rÂ   r   rÃ   r  rÐ  rê  Úminr7   rd   r
   Úbasenamer   rr   r  r8   ÚGraftmapr  Úextra_FzDocument_insert_pdfrÄ   rÎ   rÌ   r®  rd  ÚJM_merge_ranger`  rƒ  ræ  )r(   ÚdocsrcrT  rU  rV  rY  r}  rŸ  r½  r²  rÍ  rÎ  rÚ  rp  ÚoutCountrÌ  ru  r¸  ÚinnameÚoutnameÚisrtÚpdfoutÚpdfsrcs                          r)   rÐ  zDocument.insert_pdf   sç  € ðL Œ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒ>˜VÔ-Ò-Ð-ÝÐFÑGÔGÐGØˆØ�Š6ˆ6Ø”ˆBØ”?ˆØÔ$ˆð ˆØˆØˆõ ��Q‰ZŒZˆÝ��X ‘\Ñ"Ô"ˆà�Š6ˆ6Ø˜A‘ˆBÝ��X ‘\Ñ"Ô"ˆà�Š6ˆ6ØˆBÝ��XÑÔˆåˆv‰;Œ;˜Ð*Ð*Ò*Ð*¨Ò*Ð*Ð*Ð*Ð*Ý”W×%Ò% f¤kÑ2Ô2ˆFØð &Ø%�Ý”g×&Ò& t¤yÑ1Ô1ˆGØð 'Ø&�ÝÐ: &Ð:Ð:°Ð:Ð:Ð:Ñ;Ô;Ð;ð ÔˆØ”×"Ò" 4¨Ñ.Ô.ˆØˆ=å˜T‘N”NˆEØ#(ˆDŒN˜4Ñ åð 	då'Ø”IØ”KØØØØØØØ!ØØñô ð ð õ & dÑ+Ô+ˆFÝ% fÑ-Ô-ˆFàÔ$ð ?¨FÔ,=ð ?ÝÐ!=Ñ>Ô>Ð>Ý˜VÑ$Ô$Ð$Ý˜6 6¨2¨r°2°v¸uÀfÈmÐ]bÑcÔcÐcð 	×ÒÑÔÐØð 	Jà�NŠN˜6¨R¸ÀbˆNÑIÔIÐIØð 	tØ×Ò˜V U°bÀ"ÈrÐcrÐÑsÔsÐsØ�AŠ:ˆ:Ø#'ˆDŒN˜4Ñ Ð Ð ð ˆ:r*   c                ój   — t          | d¬¦  «        }|j        sdS t          j        |¦  «        }|rdndS )Nr   r.  FT)rÎ   rÌ   r�   Úpdf_has_unsaved_changes©r(   rZ  r  s      r)   Úis_dirtyzDocument.is_dirty—  sB   € å˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	Ø�5ÝÔ)¨#Ñ.Ô.ˆØÐ#ˆtˆt˜eÐ#r*   c                ó^   — t          | d¬¦  «        }|j        rt          j        |¦  «        S dS )z9
        Check whether we have a linearized PDF.
        r   r.  F)rÎ   rÌ   r�   Úpdf_doc_was_linearizedr»  s     r)   Úis_fast_webaccesszDocument.is_fast_webaccessŸ  s6   € õ
 ˜t¨aÐ0Ñ0Ô0ˆØŒ>ð 	5ÝÔ/°Ñ4Ô4Ð4Øˆur*   c                ó|  — t          | d¬¦  «        }|j        sdS d}	 t          j        t          j        |¦  «        t          j        t          j        t          j        ¦  «        }t          j        |¦  «        rt          j	        |¦  «        }n&# t          $ r t          rt          ¦   «          Y dS w xY w|dk    r|S dS )z Either False or PDF field count.r   r.  Fr1  )rÎ   rÌ   r�   r  r3  ÚPDF_ENUM_NAME_RootÚPDF_ENUM_NAME_AcroFormÚPDF_ENUM_NAME_FieldsrŽ  r›  rg   r
  rv   )r(   rZ  r  Úfieldss       r)   rÇ  zDocument.is_form_pdf©  sÏ   € õ ˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	Ø�5Øˆð	ÝÔ(ÝÔ% cÑ*Ô*ÝÔ,ÝÔ0ÝÔ.ñ	ô ˆFõ Ô! &Ñ)Ô)ð 4ÝÔ+¨FÑ3Ô3�øøÝð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Ø�5�5ð	øøøð �AŠ:ˆ:ØˆLØˆus   žA/B ÂB1Â0B1c                óŽ   — t          | j        t          j        ¦  «        rdS t          j        | j        j        ¦  «        rd}nd}|S )zCheck for PDF.TF)r>   rÄ   r�   rÆ   Úll_pdf_specificsrÌ   r   s     r)   rÛ  zDocument.is_pdfÀ  sK   € õ �d”i¥Ô!2Ñ3Ô3ð 	Ø�4õ
 Ô! $¤)Ô"6Ñ7Ô7ð 	ØˆCˆCàˆCØˆ
r*   c                óp   — | j         rt          d¦  «        ‚t          t          j        | ¦  «        ¦  «        S )z Check if document is layoutable.r¾   )rÂ   rÃ   rç   r�   r  r.   s    r)   Úis_reflowablezDocument.is_reflowableÏ  s6   € ð Œ>ð 	0ÝÐ.Ñ/Ô/Ð/Ý•EÔ3°DÑ9Ô9Ñ:Ô:Ð:r*   c                ój   — t          | d¬¦  «        }|j        sdS t          j        |¦  «        }|rdS dS )zCheck whether PDF was repaired.r   r.  FT)rÎ   rÌ   r�   Úpdf_was_repairedrê  s      r)   Úis_repairedzDocument.is_repairedÖ  sG   € õ ˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	Ø�5ÝÔ" 3Ñ'Ô'ˆØð 	Ø�4Øˆur*   c                óð   — | j         s| j        rt          d¦  «        ‚d}d}t          | ¦  «        }t	          j        |¦  «        }t	          j        |¦  «        }t          |¦  «        t          |¦  «        dœS )z(Show if undo and / or redo are possible.r-  r   )ÚundoÚredo)rÂ   r   rÃ   rÎ   r�   Úpdf_can_undoÚpdf_can_redorç   )r(   rü  rý  rZ  s       r)   Újournal_can_dozDocument.journal_can_doá  sv   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØˆØˆÝ˜tÑ$Ô$ˆÝÔ! #Ñ&Ô&ˆÝÔ! #Ñ&Ô&ˆÝ˜T™
œ
­D°©J¬JÐ7Ð7Ð7r*   c                ó†   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «         dS )zActivate document journalling.r-  N)rÂ   r   rÃ   rÎ   r�   Úpdf_enable_journalr»  s     r)   Újournal_enablezDocument.journal_enableì  sI   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ  Ñ%Ô%Ð%Ð%Ð%r*   c                ó„   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }|j        o|j        j        }|S )z Check if journalling is enabled.r-  )rÂ   r   rÃ   rÎ   rÌ   Újournal)r(   rZ  Úenableds      r)   Újournal_is_enabledzDocument.journal_is_enabledó  sH   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆØ”.Ð; S¤^Ô%;ˆØˆr*   c                ój  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          |t
          ¦  «        rt          j        ||¦  «         n8t          |¦  «        }t          j	        |¦  «        }t          j
        ||¦  «         |j        j        st          dt          ¦  «         dS dS )zLoad a journal from a file.r-  z!Journal and document do not matchN)rÂ   r   rÃ   rÎ   r>   rÑ  r�   Úpdf_load_journalr'  rW  Úpdf_deserialise_journalrÌ   r  r°  r±  )r(   rf   rZ  r  Ústms        r)   Újournal_loadzDocument.journal_loadû  s¼   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝ�h¥Ñ$Ô$ð 	4ÝÔ" 3¨Ñ1Ô1Ð1Ð1å$ XÑ.Ô.ˆCÝÔ& sÑ+Ô+ˆCÝÔ)¨#¨sÑ3Ô3Ð3ØŒ~Ô%ð 	PÝÐ8Õ:NÑOÔOÐOÐOÐOð	Pð 	Pr*   c                óˆ   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        ||¦  «        }|S )z#Show operation name for given step.r-  )rÂ   r   rÃ   rÎ   r�   Úpdf_undoredo_step)r(   rà  rZ  r   s       r)   Újournal_op_namezDocument.journal_op_name	  sI   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ& s¨DÑ1Ô1ˆØˆr*   c                ó”   — | j         s| j        rt          d¦  «        ‚d}t          | ¦  «        }t	          j        |¦  «        \  }}||fS )zShow journalling state.r-  r   )rÂ   r   rÃ   rÎ   r�   Úpdf_undoredo_state)r(   ÚstepsrZ  r    s       r)   Újournal_positionzDocument.journal_position  sU   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØˆÝ˜tÑ$Ô$ˆÝÔ,¨SÑ1Ô1‰	ˆˆEØ�5ˆyÐr*   c                ó†   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «         dS )zMove forward in the journal.r-  T)rÂ   r   rÃ   rÎ   r�   Úpdf_redor»  s     r)   Újournal_redozDocument.journal_redo  óG   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝŒ�sÑÔÐØˆtr*   c                ó&  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          |t
          ¦  «        rt          j        ||¦  «         dS t          |¦  «        }t          j	        ||¦  «         | 
                    ¦   «          dS )zSave journal to a file.r-  N)rÂ   r   rÃ   rÎ   r>   rÑ  r�   Úpdf_save_journalÚJM_new_output_fileptrÚpdf_write_journalÚfz_close_output)r(   rf   rZ  Úouts       r)   Újournal_savezDocument.journal_save"  s•   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝ�h¥Ñ$Ô$ð 	"ÝÔ" 3¨Ñ1Ô1Ð1Ð1Ð1å'¨Ñ1Ô1ˆCÝÔ# C¨Ñ-Ô-Ð-Ø×ÒÑ!Ô!Ð!Ð!Ð!r*   c                óî   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }|j        j        st          d¦  «        ‚|rt          j        ||¦  «         dS t          j	        |¦  «         dS )zBegin a journalling operation.r-  zJournalling not enabledN)
rÂ   r   rÃ   rÎ   rÌ   r  rÞ   r�   Úpdf_begin_operationÚpdf_begin_implicit_operation)r(   r   rZ  s      r)   Újournal_start_opzDocument.journal_start_op.  s†   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆØŒ~Ô%ð 	;ÝÐ 9Ñ:Ô:Ð:Øð 	4ÝÔ% c¨4Ñ0Ô0Ð0Ð0Ð0åÔ.¨sÑ3Ô3Ð3Ð3Ð3r*   c                ó†   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «         dS )zEnd a journalling operation.r-  N)rÂ   r   rÃ   rÎ   r�   Úpdf_end_operationr»  s     r)   Újournal_stop_opzDocument.journal_stop_op:  sI   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ Ñ$Ô$Ð$Ð$Ð$r*   c                ó†   — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «         dS )zMove backwards in the journal.r-  T)rÂ   r   rÃ   rÎ   r�   Úpdf_undor»  s     r)   Újournal_undozDocument.journal_undoA  r  r*   c                óª   — t          | d¬¦  «        }|j        sdS t          j        |¦  «        }|t          j        k    rdS t          j        |¦  «        S )zDocument language.r   r.  N)rÎ   rÌ   r�   Úpdf_document_languager(  r&  )r(   rZ  r*  s      r)   r+  zDocument.languageI  sY   € õ ˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	ØˆFÝÔ*¨3Ñ/Ô/ˆØ•5Ô&Ò&Ð&ØˆFÝÔ2°4Ñ8Ô8Ð8r*   c                ó|   — | j         rt          d¦  «        ‚t          j        | j        ¦  «        }|j        |j        fS )z Id (chapter, page) of last page.r¾   )rÂ   rÃ   r�   Úfz_last_pagerÄ   rÔ  rÖ   )r(   Úlast_locs     r)   Úlast_locationzDocument.last_locationT  s?   € ð Œ>ð 	0ÝÐ.Ñ/Ô/Ð/ÝÔ% d¤iÑ0Ô0ˆØÔ ¤Ð.Ð.r*   c                óf  — t          | ¦  «        }t          j        ¦   «         }t          j        |¦  «        }g }t	          |¦  «        D ]h}t          j        |||¦  «         |j        dk    rd}n|j        dk    rd}nd}||j        |j        ||j	        |j
        dœ}|                     |¦  «         Œi|S )z-Show OC visibility status modifiable by user.r   Úcheckboxr   Úradioboxr—  )r^  r   ÚdepthrÈ   r–  Úlocked)rÎ   r�   ÚPdfLayerConfigUiÚpdf_count_layer_config_uirL  Úpdf_layer_config_ui_inforÈ   r   r2  Úselectedr3  rk   )r(   rZ  r  rE   r    r®   r[  rC   s           r)   Úlayer_ui_configszDocument.layer_ui_configs\  sÃ   € å˜tÑ$Ô$ˆÝÔ%Ñ'Ô'ˆÝÔ+¨SÑ1Ô1ˆØˆÝ�q‘”ð 	ð 	ˆAÝÔ*¨C°°DÑ9Ô9Ð9ØŒy˜AŠ~ˆ~Ø"��Ø”˜a’�Ø"��à�àØ œIØ!œZØ!Øœ-Ø"œkðð ˆDð �IŠI�d‰OŒOˆOˆOØˆ	r*   c                ó¸  — | j         s| j        rt          d¦  «        ‚| j        }t	          j        |¦  «        sdS |}|}t          |¦  «        }t	          j        |¦  «        s|j        |j	        z
  }|j
        |j        z
  }|dk    s|dk    rt          d¦  «        ‚t	          j        ||||¦  «         |                      ¦   «          |                      ¦   «          dS )z Re-layout a reflowable document.r-  Nrž  zbad page size)rÂ   r   rÃ   rÄ   r�   r  r   r¯  r	  r
  r  r  r  r`  r  )	r(   r÷   r]  rÕ  rú   r*  r   rÆ  r  s	            r)   ÚlayoutzDocument.layoutu  sá   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒiˆÝÔ.°Ñ4Ô4ð 	ØˆFØˆØˆÝ˜DÑ!Ô!ˆÝÔ(¨Ñ+Ô+ð 	Ø”�q”t‘ˆAØ”�q”t‘ˆAØ�Š8ˆ8�q˜C’x�xÝ˜oÑ.Ô.Ð.ÝÔ  # q¨!¨XÑ6Ô6Ð6à×ÒÑÔÐØ�Š‰Œˆˆˆr*   Úcssrk   c                ó  — | j         s| j        rt          d¦  «        ‚| j        }t	          j        |¦  «        sdS t          |t          ¦  «        r|sdS t          t          |¦  «        ¦  «        }t	          j
        |||¦  «         dS )zÒApply CSS to a reflowable document.

        If 'append' evaluates to True, the CSS will be appended to
        the default CSS of this document type.
        Otherwise the default CSS will be ignored.
        r-  N)rÂ   r   rÃ   rÄ   r�   r  r>   rÑ  r4   rç   Úfz_style_document)r(   r;  rk   r*  s       r)   Ú	apply_csszDocument.apply_css‰  s’   € ð Œ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒiˆÝÔ.¨sÑ3Ô3ð 	ØˆFÝ˜#�sÑ#Ô#ð 	¨3ð 	ØˆFÝ•T˜&‘\”\Ñ"Ô"ˆÝÔ  V¨SÑ1Ô1Ð1Ð1Ð1r*   c                ó  — | j         s| j        rt          d¦  «        ‚|€d}|| vrt          d¦  «        ‚t          |¦  «        t          u r|dk     r| j        }|dk     r||z  }|dk     °t          |t          ¦  «        rt          j        | j	        |¦  «        }n |\  }}t          j
        | j	        ||¦  «        }t          || ¦  «        }d|_        | |_        || j        t          |¦  «        <   t!          j        ¦   «         |_        ||_        |S )z¤Load a page.

        'page_id' is either a 0-based page number or a tuple (chapter, pno),
        with chapter number and page number within that chapter.
        r-  Nr   zpage not in documentT)rÂ   r   rÃ   rÈ   r4   rÐ  r>   r�   Úfz_load_pagerÄ   Úfz_load_chapter_pagerÒ   rñ   rê   r  r9  r  r  r8  r^  )r(   Úpage_idÚnprÖ   rÔ  Úpagenumr  s          r)   rù  zDocument.load_pageš  s  € ð Œ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Øˆ?ØˆGØ˜$ÐÐÝÐ3Ñ4Ô4Ð4Ý�‰=Œ=�CÐÐ G¨a¢K KØ”ˆBØ˜A’+�+Ø˜2‘�ð ˜A’+�+å�g�sÑ#Ô#ð 	KÝÔ% d¤i°Ñ9Ô9ˆDˆDà&ÑˆG�WÝÔ-¨d¬i¸À'ÑJÔJˆDÝ�4˜ÑÔˆàˆŒØˆŒ
Ø#&ˆŒ�˜3™œÑ Ý!Ô5Ñ7Ô7ˆŒØˆŒ
Øˆ
r*   c                ó*  — | j         rt          d¦  «        ‚| j        }t          j        dd¦  «        }t          j        |¦  «        }|dk     r||z  }|dk     °||k    rt          t          ¦  «        ‚t          j        ||¦  «        }|j        |j	        fS )zConvert pno to (chapter, page).r¾   r1  r   )
rÂ   rÃ   rÄ   r�   Úfz_make_locationrC  rD  Úfz_location_from_page_numberrÔ  rÖ   )r(   rÕ  Úthis_docrÓ  rÐ  s        r)   Úlocation_from_page_numberz"Document.location_from_page_number¸  sœ   € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/Ø”9ˆÝÔ$ R¨Ñ,Ô,ˆÝÔ)¨(Ñ3Ô3ˆ
Ø�AŠgˆgØ�:ÑˆCð �AŠgˆgà�*ÒÐÝ�nÑ-Ô-Ð-ÝÔ0°¸3Ñ?Ô?ˆØŒ{˜CœHÐ$Ð$r*   c                ó¾   — | j         s| j        rt          d¦  «        ‚t          j        |Ž }t          j        | j        j        |                     ¦   «         ¦  «        }|S )z.Make a page pointer before layouting document.r-  )	rÂ   r   rÃ   r�   Ú
FzLocationÚll_fz_make_bookmark2rÄ   rÌ   r  )r(   rÓ  Úmarks      r)   Úmake_bookmarkzDocument.make_bookmarkÆ  sV   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ÝÔ Ð$ˆÝÔ)¨4¬9Ô+?ÀÇÂÁÄÑPÔPˆØˆr*   c                ó˜  — |                       ¦   «         }|dk    rdS |                      |d¦  «        }|d         dk    ri S |d         dk    rEt          |d                              ¦   «         d         ¦  «        }|                      |d¬¦  «        }n|d         d	k    r	|d         }nd}|�|dd
…         dk    r|dd…         dk    si S ddddœ}|d
d…                              d¦  «        }|dd…         D ]S}	 |                     ¦   «         \  }}n-# t
          $ r  t          dk    rt          ¦   «          |cY c S w xY w|dk    rd||<   ŒT|S )zReturn the PDF MarkInfo value.r   NÚMarkInfor¸  r  r   Tr…  r5   r   ú<<r×  ú>>F©ÚMarkedÚUserPropertiesÚSuspectsú/Útrue)r‡  rñ  r4   r6   rˆ  rg   r
  rv   )r(   r  r    r  ÚvalidrF   r  r¸   s           r)   ÚmarkinfozDocument.markinfoÎ  s‡  € ð ×ÒÑ!Ô!ˆØ�1Š9ˆ9Ø�4Ø×Ò˜t ZÑ0Ô0ˆØˆaŒ5�FŠ?ˆ?ØˆIØˆaŒ5�FŠ?ˆ?Ý�r˜!”u—{’{‘}”} QÔ'Ñ(Ô(ˆDØ×"Ò" 4°DÐ"Ñ9Ô9ˆCˆCØ�ŒU�fŠ_ˆ_Ø�Q”%ˆCˆCàˆCØˆ;˜s 2 A 2œw¨$š˜°3°r°s°s´8¸tÒ3CÐ3CØˆIØ °EÀuÐMÐMˆØ�!�B�$Œi�oŠo˜cÑ"Ô"ˆØ�Q�R�R”ð 	"ð 	"ˆAðØŸWšW™YœY‘
��U�UøÝð ð ð Ý'¨!Ò+Ð+µÑ0@Ô0@Ð0@Ø�����ðøøøð ˜ŠˆØ!��c‘
øØˆs   Ã9DÄ%D;Ä:D;c                ó  — | j         rt          d¦  «        ‚t          | ¦  «        }|t          |¦  «        vs|t          d|¦  «        vrt          d¦  «        ‚d}d}|dk    r|dz
  }d}|                      ||||¦  «        S )z¡Move a page within a PDF document.

        Args:
            pno: source page number.
            to: put before this page, '-1' means after last page.
        r¾   r1  rÚ  r   r   rÐ  rÑ  s         r)   Ú	move_pagezDocument.move_pageì  s™   € ð Œ>ð 	0ÝÐ.Ñ/Ô/Ð/Ý˜‘Y”Yˆ
Ø•u˜ZÑ(Ô(Ð(Ð(¨Bµe¸BÀ
Ñ6KÔ6KÐ,KÐ,KÝÐ1Ñ2Ô2Ð2ØˆØˆØ�Š8ˆ8Ø˜a‘ˆBØˆFà×#Ò# C¨¨V°TÑ:Ô:Ð:r*   c                ó   — | j         S r,   r©  r.   s    r)   r   zDocument.name   s
   € àŒzÐr*   c                óœ  — | j         sdS t          | ¦  «        }d}d}t          j        t          j        |¦  «        d¦  «        }t          j        ||¦  «        }t          j        |¦  «        rt          j        |¦  «        }|r!t          j        ||t          j	        ¦  «         n t          j        ||t          j
        ¦  «         |€|dk    S |S )z"Get/set the NeedAppearances value.Nr1  ÚNeedAppearancesr¹  r   )rÇ  rÎ   r�   r»  r3  rþ   Úpdf_is_boolÚpdf_to_boolr�  ÚPDF_TRUEÚ	PDF_FALSE)r(   r¸   rZ  ÚoldvalÚappkeyÚformÚapps          r)   Úneed_appearanceszDocument.need_appearances  sÐ   € àÔð 	Ø�4å˜tÑ$Ô$ˆØˆØ"ˆåÔ"ÝÔ! #Ñ&Ô&Øñô ˆõ Ô! $¨Ñ/Ô/ˆÝÔ˜SÑ!Ô!ð 	,ÝÔ& sÑ+Ô+ˆFØð 	?ÝÔ  f­e¬nÑ=Ô=Ð=Ð=åÔ  f­e¬oÑ>Ô>Ð>Øˆ=Ø˜Q’;ÐØˆr*   c                óØ   — | j         rt          d¦  «        ‚t          | j        t          j        ¦  «        r| j        n| j                             ¦   «         }t	          j        |¦  «        }|S )zIndicate password required.r¾   )rÂ   rÃ   r>   rÄ   r�   rÅ   rÇ   Úfz_needs_password)r(   rÉ   rG   s      r)   r  zDocument.needs_pass  s]   € ð Œ>ð 	0ÝÐ.Ñ/Ô/Ð/Ý *¨4¬9µeÔ6FÑ GÔ GÐ^�4”9�9ÈTÌYÏ_Ê_ÑM^ÔM^ˆÝÔ% xÑ0Ô0ˆØˆ
r*   c                óB   — |                       |||¬¦  «         | |         S )aX  Create and return a new page object.

        Args:
            pno: (int) insert before this page. Default: after last page.
            width: (float) page width in points. Default: 595 (ISO A4 width).
            height: (float) page height in points. Default 842 (ISO A4 height).
        Returns:
            A pymupdf.Page object.
        ©r]  rÕ  )rp  )r*  rÕ  r]  rÕ  s       r)   rØ  zDocument.new_page%  s%   € ð 	�Š�S ¨fˆÑ5Ô5Ð5Ø�3Œxˆr*   c                óÞ  — | j         s| j        rt          d¦  «        ‚t          |¦  «        t          u rd|f}|| vrt          d¦  «        ‚t          |¦  «        | j        k    rdS t          | ¦  «        }|d         }t          |t          ¦  «        st          t          t          ¦  «         |}|d         }|}t          j        ||¦  «        }t          j        ||¦  «        }|j        |j        fS )z!Get (chapter, page) of next page.r-  r   úpage id not in documentr-   r   )rÂ   r   rÃ   rÈ   r4   rµ   r.  rÊ   r>   r°  ÚMSG_BAD_PAGEIDÚPyExc_ValueErrorr�   rF  Úfz_next_pagerÔ  rÖ   )r(   rB  rH  r  rÔ  rÕ  rÓ  Únext_locs           r)   Únext_locationzDocument.next_location7  sò   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý�‰=Œ=�CÐÐØ˜'�lˆGØ˜$ÐÐÝÐ6Ñ7Ô7Ð7Ý�‰>Œ>˜TÔ/Ò/Ð/Ø�2Ý" 4Ñ(Ô(ˆØ�qŒkˆÝ˜#�sÑ#Ô#ð 	6Ý•NÕ$4Ñ5Ô5Ð5ØˆØ�qŒkˆØˆÝÔ$ W¨cÑ2Ô2ˆÝÔ% x°Ñ5Ô5ˆØÔ ¤Ð.Ð.r*   c                ó¶  — t           rt          j        | j        |¦  «        S t	          | j        t
          j        ¦  «        r!t          j        | j        ¦  «        }| j        }n(t          j        | j        ¦  «        }t          | ¦  «        }|dk     r||z  }|dk     °||k    rt          t          ¦  «        ‚t          j        ||¦  «        }t          |¦  «        }|S r‡   )r  r   r¾  rÄ   r>   r�   rÆ   rB  rC  rÎ   rÃ   rD  rE  ÚJM_get_annot_xref_list)r(   rE   rÐ  r&  rx  rŸ  s         r)   r¾  zDocument.page_annot_xrefsL  sÈ   € Ýð 	9ÝÔ)¨4¬9°aÑ8Ô8Ð8å�d”i¥Ô!2Ñ3Ô3ð 	2ÝÔ.¨t¬yÑ9Ô9ˆJØœ9ˆLˆLåÔ-¨d¬iÑ8Ô8ˆJÝ+¨DÑ1Ô1ˆLØ�!ŠeˆeØ�‰OˆAð �!ŠeˆeàˆzŠ>ˆ>Ý�nÑ-Ô-Ð-ÝÔ,¨\¸1Ñ=Ô=ˆÝ'¨Ñ1Ô1ˆØˆr*   c                ó  — | j         rt          d¦  «        ‚t          r|                      | ¦  «        S t	          | j        t          j        ¦  «        rt          j        | j        ¦  «        S t          j	        | j        ¦  «        S )zNumber of pages.r¾   )
rÂ   rÃ   r  r!  r>   rÄ   r�   rÅ   rC  rB  r.   s    r)   rÐ  zDocument.page_count^  sv   € ð Œ>ð 	0ÝÐ.Ñ/Ô/Ð/Ýð 	*Ø×#Ò# DÑ)Ô)Ð)Ý�t”y¥%Ô"2Ñ3Ô3ð 	5ÝÔ'¨¬Ñ3Ô3Ð3åÔ(¨$¬)Ñ4Ô4Ð4r*   c                ód  — | j         rt          d¦  «        ‚| j        }t          j        |¦  «        }|}|dk     r||z  }|dk     °t          | ¦  «        }||k    rt          t          ¦  «        ‚t          j        ||¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }|S )z2Get CropBox of page number (without loading page).r¾   r   )rÂ   rÃ   rÄ   r�   rC  rÎ   rD  rE  Ú
JM_cropboxrg  r$  )	r(   rÕ  rH  rÐ  rE   rZ  rK  Úcropboxr  s	            r)   Úpage_cropboxzDocument.page_cropboxj  s´   € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/Ø”9ˆÝÔ)¨8Ñ4Ô4ˆ
ØˆØ�!ŠeˆeØ�‰OˆAð �!Šeˆeå˜tÑ$Ô$ˆØ�
Š?ˆ?Ý�nÑ-Ô-Ð-ÝÔ+¨S°!Ñ4Ô4ˆÝ˜WÑ%Ô%ˆÝ˜gÑ&Ô&ˆå�3‰iŒiˆàˆ
r*   c                óø   — t          |¦  «        t          u r| j        }|dk     r||z  }|dk     °d|f}|| vrt          d¦  «        ‚|\  }}t	          j        ||¦  «        }t	          j        | j        |¦  «        }|S )z&Convert (chapter, pno) to page number.r   rn  )rÈ   r4   rÐ  rÃ   r�   rF  Úfz_page_number_from_locationrÄ   )r(   rB  rC  rÔ  rÕ  rÓ  Úpage_ns          r)   Úpage_number_from_locationz"Document.page_number_from_location~  sŽ   € å�‰=Œ=�CÐÐØ”ˆBØ˜A’+�+Ø˜2‘�ð ˜A’+�+à˜'�lˆGØ˜$ÐÐÝÐ6Ñ7Ô7Ð7Ø‰ˆ�ÝÔ$ g¨sÑ3Ô3ˆÝÔ3°T´YÀÑDÔDˆØˆr*   c                óp  — t           rt          j        | j        |¦  «        S | j        rt          d¦  «        ‚t          j        | j        ¦  «        }|}|dk     r||z  }|dk     °t          | ¦  «        }d}||k    rt          t          ¦  «        ‚t          j
        t          j        ||¦  «        ¦  «        }|S )zGet xref of page number.r¾   r   )r  r   rq  rÄ   rÂ   rÃ   r�   rC  rÎ   rD  r  rE  )r(   rÕ  rÐ  rE   rZ  r  s         r)   rq  zDocument.page_xrefŒ  s¶   € åð 	4Ý”? D¤I¨sÑ3Ô3Ð3ØŒ>ð 	0ÝÐ.Ñ/Ô/Ð/ÝÔ)¨$¬)Ñ4Ô4ˆ
ØˆØ�!ŠeˆeØ�‰OˆAð �!Šeˆeå˜tÑ$Ô$ˆØˆØ�
Š?ˆ?Ý�nÑ-Ô-Ð-ÝÔ¥Ô 9¸#¸qÑ AÔ AÑBÔBˆØˆr*   c                ó¾   — |                       ¦   «         }|dk    rdS |                      |d¦  «        }|d         dk    rdS |d         dk    r|d         dd…         S dS )z)Return the PDF PageLayout value.
        r   NÚ
PageLayoutr¸  Ú
SinglePager   r   ©r‡  rñ  ©r(   r  r    s      r)   Ú
pagelayoutzDocument.pagelayout�  sn   € ð ×ÒÑ!Ô!ˆØ�1Š9ˆ9Ø�4Ø×Ò˜t \Ñ2Ô2ˆØˆaŒ5�FŠ?ˆ?Ø�<ØˆaŒ5�FŠ?ˆ?Ø�a”5˜˜˜”9ÐØˆ|r*   c                ó¾   — |                       ¦   «         }|dk    rdS |                      |d¦  «        }|d         dk    rdS |d         dk    r|d         dd…         S dS )z'Return the PDF PageMode value.
        r   NÚPageModer¸  ÚUseNoner   r   rƒ  r„  s      r)   ÚpagemodezDocument.pagemode«  sn   € ð ×ÒÑ!Ô!ˆØ�1Š9ˆ9Ø�4Ø×Ò˜t ZÑ0Ô0ˆØˆaŒ5�FŠ?ˆ?Ø�9ØˆaŒ5�FŠ?ˆ?Ø�a”5˜˜˜”9ÐØˆyr*   r•  rß  rà  úcollections.abc.Iterable[Page]c              #  ó`  K  — | j         sdS |pd}|dk     r|| j         z  }|dk     °|t          | j         ¦  «        vrt          d¦  «        ‚|�|| j         k    r|n| j         }|dk    rt          d¦  «        ‚|€||k    rd}nd}t          |||¦  «        D ]}|                      |¦  «        V — ŒdS )z}Return a generator iterator over a page range.

        Arguments have the same meaning as for the range() built-in.
        Nr   zbad start page numberzarg 3 must not be zeror1  r   )rÐ  rL  rÃ   rù  )r(   r•  rß  rà  rÕ  s        r)   rƒ  zDocument.pages¹  sö   è è € ð
 Œð 	ØˆFà�
˜ˆØ�aŠiˆiØ�T”_Ñ$ˆEð �aŠiˆià�˜dœoÑ.Ô.Ð.Ð.ÝÐ4Ñ5Ô5Ð5ð Ð'¨D°D´OÒ,CÐ,CˆtˆtÈÌˆð �1Š9ˆ9ÝÐ5Ñ6Ô6Ð6Øˆ<Ø�tŠ|ˆ|Ø��à�å˜  dÑ+Ô+ð 	(ð 	(ˆCØ—>’> #Ñ&Ô&Ð'Ð'Ð'Ð'ð	(ð 	(r*   c                óÎ   — t          | d¬¦  «        }d}|j        s|S t          j        t          j        |¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        }|S )zGet xref of PDF catalog.r   r.  r/  )rÎ   rÌ   r�   r  r3  r  r  )r(   rZ  r  r;  s       r)   r‡  zDocument.pdf_catalogÖ  sb   € å˜t¨aÐ0Ñ0Ô0ˆØˆØŒ~ð 	ØˆKÝÔ!¥%Ô"3°CÑ"8Ô"8½(À6Ñ:JÔ:JÑKÔKˆÝÔ Ñ%Ô%ˆØˆr*   c                ó2   — |                       d||¬¦  «        S )zGet PDF trailer as a string.r1  )r†  rŒ  )rˆ  )r(   r†  rŒ  s      r)   r3  zDocument.pdf_trailerà  s   € à×Ò ¨zÀÐÑGÔGÐGr*   c                óø  — | j         rdS | j        }t          j        |¦  «        }|j        rt          j        |¦  «        S d}t          j        |t          j        ¦  «        s|t          j        z  }t          j        |t          j	        ¦  «        s|t          j
        z  }t          j        |t          j        ¦  «        s|t          j        z  }t          j        |t          j        ¦  «        s|t          j        z  }|S )zDocument permissions.r   l   üÿ )r   rÄ   r�   rº  rÌ   Úpdf_document_permissionsÚfz_has_permissionÚFZ_PERMISSION_PRINTÚPDF_PERM_PRINTÚFZ_PERMISSION_EDITÚPDF_PERM_MODIFYÚFZ_PERMISSION_COPYÚPDF_PERM_COPYÚFZ_PERMISSION_ANNOTATEÚPDF_PERM_ANNOTATE)r(   r*  rZ  Úperms       r)   r   zDocument.permissionsä  sè   € ð Ôð 	Ø�1ØŒYˆÝÔ1°#Ñ6Ô6ˆð Œ>ð 	7ÝÔ1°#Ñ6Ô6Ð6ð ˆåÔ& s­EÔ,EÑFÔFð 	/Ø�%Ô.Ñ.ˆDÝÔ& s­EÔ,DÑEÔEð 	0Ø�%Ô/Ñ/ˆDÝÔ& s­EÔ,DÑEÔEð 	.Ø�%Ô-Ñ-ˆDÝÔ& s­EÔ,HÑIÔIð 	2Ø�%Ô1Ñ1ˆDØˆr*   c                ó*  — | j         s| j        rt          d¦  «        ‚t          |¦  «        t          u rd|f}|| vrt          d¦  «        ‚|dk    rdS |\  }}t          j        ||¦  «        }t          j        | j        |¦  «        }|j	        |j
        fS )z%Get (chapter, page) of previous page.r-  r   rn  rÐ  r-   )rÂ   r   rÃ   rÈ   r4   r�   rF  Úfz_previous_pagerÄ   rÔ  rÖ   )r(   rB  rÔ  rÕ  rÓ  Úprev_locs         r)   Úprev_locationzDocument.prev_locationý  sª   € ð Œ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý�‰=Œ=�CÐÐØ˜'�lˆGØ˜$ÐÐÝÐ6Ñ7Ô7Ð7Ø�vÒÐØ�2Ø‰ˆ�ÝÔ$ W¨cÑ2Ô2ˆÝÔ)¨$¬)°SÑ9Ô9ˆØÔ ¤Ð.Ð.r*   c                ó  — i }|j         }|j                             ¦   «         D ]
\  }}|||<   Œ|j        j        j        }|j                             ¦   «         }d|_        |                     ¦   «          d}t           	                    d¦  «         |  
                    |¦  «        }|                     ¦   «         D ]\  }}||         }||j        |<   Œ|dk    rn4|j                             ¦   «         }	|	|k    sJ d|›d|d›d|	d›�¦   «         ‚|S )zMake a fresh copy of a page.Néd   r   z	refs_old=z m_internal_old=z#xz m_internal_new=)r^  r8  rB   rÄ   rÌ   Úrefsr7  rò   r  Ústore_shrinkrù  )
r(   rÖ   r6  rÕ  rŸ  rF   Úrefs_oldÚm_internal_oldrß   Úm_internal_news
             r)   Úreload_pagezDocument.reload_page  s7  € àˆ
ØŒkˆØÔ$×*Ò*Ñ,Ô,ð 	ð 	‰DˆAˆqØˆJ�q‰MˆMð4 ”9Ô'Ô,ˆØœ×3Ò3Ñ5Ô5ˆàˆŒ	Ø�Š‰ŒˆØˆÝ×Ò˜3ÑÔÐØ�~Š~˜cÑ"Ô"ˆð ×$Ò$Ñ&Ô&ð 	(ð 	(‰DˆAˆqØ˜q”MˆEà"'ˆDÔ˜QÑÐØ�qŠ=ˆ=ð
 ð "œY×7Ò7Ñ9Ô9ˆNØ! ^Ò3Ð3Ð3ØL�xÐLÐL >ÐLÐLÐL¸ÐLÐLÐLñ 4Ô3Ð3àˆr*   c                ób   — t          | d¬¦  «        }|j        rt          j        |¦  «         dS dS )z8
        If we are a PDF document, does repair.
        Fr.  N)rÎ   rÌ   r�   Úpdf_check_documentr»  s     r)   ÚrepairzDocument.repairH  sA   € õ ˜t¨eÐ4Ñ4Ô4ˆØŒ>ð 	*ÝÔ$ SÑ)Ô)Ð)Ð)Ð)ð	*ð 	*r*   c                ó  — |s|rdS dS 	 t          j        | j        |¦  «        \  }}}n+# t          $ r t          rt          ¦   «          |rY dS Y dS w xY w|r|j        |j        f||fS t          j        | j        |¦  «        }|||fS )aM  Calculate internal link destination.

        Args:
            uri: (str) some Link.uri
            chapters: (bool) whether to use (chapter, page) format
        Returns:
            (page_id, x, y) where x, y are point coordinates on the page.
            page_id is either page number (if chapters=0), or (chapter, pno).
        )©r1  r1  r   r   )r1  r   r   )	r�   Úfz_resolve_linkrÄ   rg   r
  rv   rÔ  rÖ   r|  )r(   ra  rÅ  rÓ  ÚxpÚyprÕ  s          r)   r±  zDocument.resolve_linkP  sÁ   € ð ð 	Øð &Ø%�~Ø�8ð	ÝÔ/°´	¸3Ñ?Ô?‰KˆC��R�RøÝð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð &Ø%�~�~Ø�8�8ð		øøøð
 ð 	3Ø”K ¤Ð*¨B°Ð2Ð2ÝÔ0°´¸CÑ@Ô@ˆØ�B˜ˆ{Ðs   Š) ©!AÁAc                ó  — t          |¦  «        }|sdx}}|dk    r||k    rt          d¦  «        ‚t          j        ¦   «         }t	          t          |¦  «        ¦  «        }|
�s5t          j        ¦   «         }|r7t          j        |_        t          j        |_	        ||_
        ||_        ||_        |rr|r7t          j        |_        t          j        |_        ||_        ||_        ||_        |r7t          j        |_        t          j        |_        ||_        ||_        ||_        |rr|r7t          j        |_        t          j        |_        ||_        ||_        ||_        |r7t          j        |_        t          j        |_        ||_        ||_         ||_!        n|
}t	          t          |¦  «        ¦  «        }||z
  }|rt          d|› �¦  «        ‚|	r|  "                    d¦  «         tG          | ¦  «        }t          j$        ||¦  «         dS )a=  Rewrite images in a PDF document.

        The typical use case is to reduce the size of the PDF by recompressing
        images. Default parameters will convert all images to JPEG where
        possible, using the specified resolutions and quality. Exclude
        undesired images by setting parameters to False.
        Args:
            dpi_threshold: look at images with a larger DPI only.
            dpi_target: change eligible images to this DPI.
            quality: Quality of the recompressed images (0-100).
            lossy: process lossy image types (e.g. JPEG).
            lossless: process lossless image types (e.g. PNG).
            bitonal: process black-and-white images (e.g. FAX)
            color: process colored images.
            gray: process gray images.
            set_to_gray: whether to change the PDF to gray at process start.
            options: (PdfImageRewriterOptions) Custom options for image
                    rewriting (optional). Expert use only. If provided, other
                    parameters are ignored, except set_to_gray.
        r   z0{dpi_target=} must be less than {dpi_threshold=}zInvalid options: r   N)%rÑ  rÃ   r�   ÚPdfImageRewriterOptionsrØ  rh  ÚFZ_RECOMPRESS_FAXÚbitonal_image_recompress_methodÚFZ_SUBSAMPLE_AVERAGEÚbitonal_image_subsample_methodÚbitonal_image_subsample_toÚ bitonal_image_recompress_qualityÚ!bitonal_image_subsample_thresholdÚFZ_RECOMPRESS_JPEGÚ&color_lossless_image_recompress_methodÚ%color_lossless_image_subsample_methodÚ!color_lossless_image_subsample_toÚ(color_lossless_image_subsample_thresholdÚ'color_lossless_image_recompress_qualityÚ#color_lossy_image_recompress_methodÚ"color_lossy_image_subsample_methodÚ%color_lossy_image_subsample_thresholdÚcolor_lossy_image_subsample_toÚ$color_lossy_image_recompress_qualityÚ%gray_lossless_image_recompress_methodÚ$gray_lossless_image_subsample_methodÚ gray_lossless_image_subsample_toÚ'gray_lossless_image_subsample_thresholdÚ&gray_lossless_image_recompress_qualityÚ"gray_lossy_image_recompress_methodÚ!gray_lossy_image_subsample_methodÚ$gray_lossy_image_subsample_thresholdÚgray_lossy_image_subsample_toÚ#gray_lossy_image_recompress_qualityÚrecolorrÎ   Úpdf_rewrite_images)r(   Údpi_thresholdÚ
dpi_targetÚqualityÚlossyÚlosslessÚbitonalr  rÊ  Úset_to_grayr  Úquality_strÚtemplate_optsÚdir1r¹  Údir2Úinvalid_optionsrZ  s                     r)   Úrewrite_imageszDocument.rewrite_imagesj  s  € õB ˜'‘l”lˆØð 	+Ø)*Ð*ˆM˜JØ˜Š>ˆ>˜j¨MÒ9Ð9ÝÐOÑPÔPÐPÝÔ5Ñ7Ô7ˆÝ•3�}Ñ%Ô%Ñ&Ô&ˆØñ #	ÝÔ0Ñ2Ô2ˆDØð GÝ7<Ô7N�Ô4Ý6;Ô6P�Ô3Ø2<�Ô/Ø8C�Ô5Ø9F�Ô6Øð LØð OÝBGÔBZ�DÔ?ÝAFÔA[�DÔ>Ø=G�DÔ:ØDQ�DÔAØCN�DÔ@Øð LÝ?DÔ?W�DÔ<Ý>CÔ>X�DÔ;ØAN�DÔ>Ø:D�DÔ7Ø@K�DÔ=Øð KØð NÝAFÔAY�DÔ>Ý@EÔ@Z�DÔ=Ø<F�DÔ9ØCP�DÔ@ØBM�DÔ?Øð KÝ>CÔ>V�DÔ;Ý=BÔ=W�DÔ:Ø@M�DÔ=Ø9C�DÔ6Ø?J�DÔ<øàˆDå•3�t‘9”9‰~Œ~ˆØ ™+ˆØð 	DÝÐB°ÐBÐBÑCÔCÐCàð 	Ø�LŠL˜‰OŒOˆOÝ˜tÑ$Ô$ˆÝÔ   dÑ+Ô+Ð+Ð+Ð+r*   c                ó°   — | j         st          d¦  «        ‚t          | j        ¦  «        D ]*}|                      |¦  «                             |¦  «         Œ+dS )zÉChange the color component count on all pages.

        Args:
            components: (int) desired color component count, one of 1, 3, 4.

        Invokes the same-named method for all pages.
        rÙ  N)rÛ  rÃ   rL  rÐ  rù  rÌ  )r(   Ú
componentsr®   s      r)   rÌ  zDocument.recolorÁ  sb   € ð Œ{ð 	*Ý˜[Ñ)Ô)Ð)Ý�t”Ñ'Ô'ð 	2ð 	2ˆAØ�NŠN˜1ÑÔ×%Ò% jÑ1Ô1Ð1Ð1ð	2ð 	2r*   c                ó  ‡ ‡‡	‡
— t          ‰ d¦  «        r‰ j        S ˆ fd„t          ‰ j        ¦  «        D ¦   «         Š
d„ Š	ˆ	ˆ
ˆ fd„Šˆfd„}t	          j        ‰ ¦  «        }t	          j        t	          j        |¦  «        d¦  «        }i }t	          j        d¦  «        }t	          j	        ||¦  «        }| 
                    ¦   «         r |||¦  «         t	          j        ||¦  «        }| 
                    ¦   «         r |||¦  «         |‰ _        |S )af  Convert the PDF's destination names into a Python dict.

        The only parameter is the pymupdf.Document.
        All names found in the catalog under keys "/Dests" and "/Names/Dests" are
        being included.

        Returns:
            A dcitionary with the following layout:
            - key: (str) the name
            - value: (dict) with the following layout:
                * "page":  target page number (0-based). If no page number found -1.
                * "to": (x, y) target point on page - currently in PDF coordinates,
                        i.e. point (0,0) is the bottom-left of the page.
                * "zoom": (float) the zoom factor
                * "dest": (str) only occurs if the target location on the page has
                        not been provided as "/XYZ" or if no page number was found.
            Examples:
            {'__bookmark_1': {'page': 0, 'to': (0.0, 541.0), 'zoom': 0.0},
            '__bookmark_2': {'page': 0, 'to': (0.0, 481.45), 'zoom': 0.0}}

            or

            '21154a7c20684ceb91f9c9adc3b677c40': {'page': -1, 'dest': '/XYZ 15.75 1486 0'}, ...
        Ú_resolved_namesc                ó<   •— i | ]}‰                      |¦  «        |“ŒS r-   )rq  )r­   r®   r(   s     €r)   ú
<dictcomp>z*Document.resolve_names.<locals>.<dictcomp>ê  s'   ø€ ÐKÐKÐK¨q�d—n’n QÑ'Ô'¨ÐKÐKÐKr*   c                óÆ   — t          j        d¦  «        }t          j        |¦  «        }t          j        || dd¦  «         |                     ¦   «          t          |¦  «        S )z1Return string version of a PDF object definition.é   r   r   )r�   Úfz_new_bufferÚFzOutputÚpdf_print_objr  rº  )r  ÚbufferÚoutputs      r)   Ú
obj_stringz*Document.resolve_names.<locals>.obj_stringì  sX   € åÔ(¨Ñ-Ô-ˆFÝ”^ FÑ+Ô+ˆFÝÔ ¨¨Q°Ñ2Ô2Ð2Ø×"Ò"Ñ$Ô$Ð$Ý'¨Ñ/Ô/Ð/r*   c                ór  •‡— dddœ}|                       ¦   «         rt          j        | ¦  «        } |                      ¦   «         r ‰| ¦  «        }n5|                      ¦   «         r ‰t          j        | d¦  «        ¦  «        }n|S |dd…         }|                     d¦  «        }|dk     r||d<   |S |d|…                              ¦   «         }||d…         }||d<   |                     d	¦  «        rU	 ‰ 	                    t          |                     ¦   «         d
         ¦  «        d¦  «        |d<   n># t          $ r d|d<   Y n-w xY w	 t          |¦  «        |d<   n# t          $ r d|d<   Y nw xY w|d         }|d
k     r|S 	 ‰|         j        Šn# t          $ r |cY S w xY wd„ }ˆfd„}ˆfd„}d„ |                     ¦   «         D ¦   «         }	|	s|S |	d
         }
d                     d„ |
D ¦   «         ¦  «        }
|	dd…         }|
dk    r¥|d= t          |¦  «        d
k    r ||d
         ¦  «        nd}t          |¦  «        dk    r ||d         ¦  «        nd}t          |¦  «        dk    r ||d         ¦  «        nd} ||¦  «        } ||¦  «        }|�|nd|�|ndf|d<   |�|nd|d<   �n|
dv r|d= d|d<   d|d<   nú|
dv rE|d= t          |¦  «        d
k    r ||d
         ¦  «        nd} ||¦  «        }d|�|ndf|d<   d|d<   n±|
dv rE|d= t          |¦  «        d
k    r ||d
         ¦  «        nd} ||¦  «        }|�|nddf|d<   d|d<   nh|
dk    rbt          |¦  «        dk    rO|d=  ||d
         ¦  «        } ||d         ¦  «        } ||¦  «        } ||¦  «        }|�|nd|�|ndf|d<   d|d<   |S )z3Generate value of one item of the names dictionary.r1  r\   )rÖ   Údestr  r   rW  rê  Nrl  r   rÖ   c                ó†   — | €d S |                       d¦  «        } |                      ¦   «         dk    rd S t          | ¦  «        S )Nri  r¸  )r  rÒ  ro  )Útokens    r)   Úas_floatz;Document.resolve_names.<locals>.get_array.<locals>.as_float#  sA   € Ø�=Ø˜4ØŸš DÑ)Ô)�Ø—;’;‘=”= FÒ*Ð*Ø˜4Ý˜U‘|”|Ð#r*   c                ó    •— | €d S | ‰j         z
  S r,   )r
  )Úpdf_xÚ	page_rects    €r)   Ú	to_fitz_xz<Document.resolve_names.<locals>.get_array.<locals>.to_fitz_x+  ó   ø€ Ø�=Ø˜4Ø˜yœ|Ñ+Ð+r*   c                ó    •— | €d S | ‰j         z
  S r,   )r  )Úpdf_yrð  s    €r)   Ú	to_fitz_yz<Document.resolve_names.<locals>.get_array.<locals>.to_fitz_y0  rò  r*   c                ó8   — g | ]}|                      d ¦  «        ‘ŒS )ri  ©r  r�  s     r)   r¯   z=Document.resolve_names.<locals>.get_array.<locals>.<listcomp>5  s"   € Ð:Ð:Ð: q�Q—W’W˜T‘]”]Ð:Ð:Ð:r*   c              3  óN   K  — | ] }|                      ¦   «         s|d k    ¯|V — Œ!dS )rW  N)Úisalpha)r­   Úchs     r)   rô  z<Document.resolve_names.<locals>.get_array.<locals>.<genexpr>:  s3   è è € ÐJÐJ "°·
²
±´ÐJÀÀcÂ	À	˜2À	À	À	À	ÐJÐJr*   ú/XYZr   rž  r\  r]  ©z/Fitz/FitB)rž  rž  ©z/FitHz/FitBH©z/FitVz/FitBVú/FitRrK  r   )Úpdf_is_indirectr�   r-  rŽ  rz  rþ   r¡   r  rß  r8   r4   r6   rg   r÷   rÜ  r7   )r  Ú
templ_dictÚarrayr8  ÚsubvalrÕ  rí  rñ  rõ  Úpartsr   r÷  r  Útopr]  r(  r)  rð  rè  Ú
page_xrefsr(   s                    @€€€r)   Ú	get_arrayz)Document.resolve_names.<locals>.get_arrayô  s  øø€ à"$¨bÐ1Ð1ˆJØ×"Ò"Ñ$Ô$ð 6ÝÔ0°Ñ5Ô5�Ø×ÒÑ!Ô!ð "Ø"˜
 3™œ��Ø—’Ñ"Ô"ð "Ø"˜
¥5Ô#6°s¸CÑ#@Ô#@ÑAÔA��à!Ð!ð ˜!˜B˜$”KˆEð —*’*˜S‘/”/ˆCØ�QŠwˆwØ%*�
˜6Ñ"Ø!Ð!à˜4˜C˜4”[×&Ò&Ñ(Ô(ˆFØ˜#˜$˜$”KˆEØ!&ˆJ�vÑð �Š˜uÑ%Ô%ð 	,ð,Ø)3¯ª½¸F¿LºL¹N¼NÈ1Ô<MÑ8NÔ8NÐPRÑ)SÔ)S�J˜vÑ&Ð&øÝ ð ,ð ,ð ,Ø)+�J˜vÑ&Ð&Ð&ð,øøøð,Ý),¨V©¬�J˜vÑ&Ð&øÝ ð ,ð ,ð ,Ø)+�J˜vÑ&Ð&Ð&ð,øøøð ˜VÔ$ˆCØ�QŠwˆwØ!Ð!ð"Ø  œIœN�	�	øÝð "ð "ð "Ø!Ð!Ð!Ð!ð"øøøð$ð $ð $ð,ð ,ð ,ð ,ð ,ð
,ð ,ð ,ð ,ð ,ð
 ;Ð:¨E¯KªK©M¬MÐ:Ñ:Ô:ˆEØð "Ø!Ð!à˜”8ˆDØ—7’7ÐJÐJ¨ÐJÑJÔJÑJÔJˆDØ˜˜˜”9ˆDà�vŠ~ˆ~Ø˜vÐ&Ý,/°©I¬I¸ªM¨M�x�x  Q¤Ñ(Ô(Ð(¸t�Ý+.¨t©9¬9°qª=¨=�h�h˜t AœwÑ'Ô'Ð'¸d�Ý,/°©I¬I¸ªM¨M�x�x  Q¤Ñ(Ô(Ð(¸t�à�I˜d‘O”O�Ø�I˜c‘N”N�à˜�A�A¨CØ˜�A�A¨Cð$�
˜4Ñ ð .2Ð-= T TÀ3�
˜6Ñ"Ñ"àÐ*Ð*Ð*Ø˜vÐ&Ø#-�
˜4Ñ Ø%(�
˜6Ñ"Ð"àÐ,Ð,Ð,Ø˜vÐ&Ý+.¨t©9¬9°qª=¨=�h�h˜t AœwÑ'Ô'Ð'¸d�Ø�I˜c‘N”N�Ø$'¨a¨m¨¨ÀÐ#E�
˜4Ñ Ø%(�
˜6Ñ"Ð"àÐ,Ð,Ð,Ø˜vÐ&Ý,/°©I¬I¸ªM¨M�x�x  Q¤Ñ(Ô(Ð(¸t�Ø�I˜d‘O”O�Ø)*¨ A A¸CÀÐ#E�
˜4Ñ Ø%(�
˜6Ñ"Ð"à˜’�¥S¨¡Y¤Y°!¢^ ^Ø˜vÐ&Ø�x  Q¤Ñ(Ô(�Ø�h˜t AœwÑ'Ô'�Ø�I˜d‘O”O�Ø�I˜c‘N”N�à˜�A�A¨CØ˜�A�A¨Cð$�
˜4Ñ ð &)�
˜6Ñ"àÐs6   Ã2>D1 Ä1EÅEÅE ÅE,Å+E,Æ F ÆFÆFc                óD  •— t          j        |¦  «        }t          |¦  «        D ]z}t          j        ||¦  «        }t          j        ||¦  «        }|                     ¦   «         r|                     ¦   «         }nt          d|› d�¦  «         d}|r ‰|¦  «        | |<   Œ{dS )zyGenerate name resolution items for pdf_dict.

            This may be either "/Names/Dests" or just "/Dests"
            zkey z is no /NameN)r�   r{  rL  r}  r|  r»  ry  rr   )Ú	dest_dictÚpdf_dictÚ
name_countr®   r  r  Údict_keyr	  s          €r)   Ú	fill_dictz)Document.resolve_names.<locals>.fill_dictl  s¹   ø€ õ Ô+¨HÑ5Ô5ˆJõ ˜:Ñ&Ô&ð 
9ð 
9�ÝÔ,¨X°qÑ9Ô9�ÝÔ,¨X°qÑ9Ô9�Ø—?’?Ñ$Ô$ð $Ø"ŸšÑ0Ô0�H�HåÐ2 1Ð2Ð2Ð2Ñ3Ô3Ð3Ø#�Hàð 9Ø*3¨)°C©.¬.�I˜hÑ'øð
9ð 
9r*   r/  ÚDests)r;   rÞ  rL  rÐ  r�   rº  rþ   r3  r4  r  rz  Úpdf_load_name_tree)r(   r	  rZ  Úcatalogr		  ÚdestsÚ	old_destsrc  r	  rè  r	  s   `       @@@r)   Úresolve_nameszDocument.resolve_namesÎ  sd  øøøø€ õ2 �4Ð*Ñ+Ô+ð 	(ØÔ'Ð'àKÐKÐKÐKµE¸$¼/Ñ4JÔ4JÐKÑKÔKˆ
ð	0ð 	0ð 	0ðv	ð v	ð v	ð v	ð v	ð v	ð v	ðp	9ð 	9ð 	9ð 	9ð 	9õ, Ô1°$Ñ7Ô7ˆõ Ô%¥eÔ&7¸Ñ&<Ô&<¸fÑEÔEˆàˆ	õ Ô" 7Ñ+Ô+ˆõ Ô& w°Ñ6Ô6ˆ	Ø× Ò Ñ"Ô"ð 	,ØˆI�i Ñ+Ô+Ð+õ Ô'¨¨UÑ3Ô3ˆØ×ÒÑÔð 	'ØˆI�i Ñ&Ô&Ð&à(ˆÔØÐr*   c                ó*  — | j         }	 | j        s| j        rt          d¦  «        ‚t	          |¦  «        t
          u rnWt          |d¦  «        rt          |¦  «        }n7t          |d¦  «        r|j        }nt          |d¦  «        st          d¦  «        ‚|| j        k    r|st          d¦  «        ‚|
r|rt          d¦  «        ‚| j        dk     rt          d	¦  «        ‚|r!| j        |k    s| j	        rt          d
¦  «        ‚|rt          |¦  «        dk    s|r"t          |¦  «        dk    rt          d¦  «        ‚t          | d¬¦  «        }|s4|                      ¦   «         }t          |d¬¦  «        }t          |¦  «        }t          j        ¦   «         }||_        ||_        ||_        ||_        ||_        |	|_        ||_        ||_        |
|_        ||_        ||_        ||_        ||_        ||_        ||_        ||_        |�|                      |¦  «         n|�|                      |¦  «         |�| !                    |¦  «         ||_"        ||_#        ||_$        d }d|j%        _&        tO          |¦  «         |dk    rtQ          |¦  «         tS          |t
          ¦  «        rt          j*        |||¦  «         n9tW          |¦  «        }t          j,        |||¦  «         | -                    ¦   «          |r| j         r|st]          d¦  «        ‚d S d S d S )Nr-  r:   r   Úseekú)filename must be str, Path or file objectz$save to original must be incrementalz3'linear' and 'use_objstms' cannot both be requestedr   zcannot save with zero pageszincremental needs original fileé(   z"password length must not exceed 40Fr.  rZ  )r	   r#  r   zDocument save did a repair)/rú  rÂ   r   rÃ   rÈ   rÑ  r;   r   rÐ  r	   r7   rÎ   r  r:   r�   ÚPdfWriteOptionsÚdo_incrementalÚdo_asciiÚdo_compressÚdo_compress_imagesÚdo_compress_fontsÚdo_decompressÚ
do_garbageÚ	do_prettyÚ	do_linearÚdo_cleanÚdo_sanitizeÚdont_regenerate_idÚdo_appearanceÚ
do_encryptr   r(  Úopwd_utf8_set_valueÚupwd_utf8_set_valueÚdo_preserve_metadataÚdo_use_objstmsr&  rÌ   rQ  ÚJM_embedded_cleanÚJM_ensure_identityr>   Úpdf_save_documentr  Úpdf_write_documentr  rg   )r(   rf   r  r  r  r  r  r  rŒ  r  r  r#  Ú
appearancer  r  r   r!  r"  r$  r%  r&  r'  r(  Úis_repaired_prerZ  Ú	pdf_bytesr&  r¹  r  s                                r)   r)  zDocument.save™  s~  € ð6 Ô*ˆØ=ØŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý�‰>Œ>�SÐ Ð ØÝ�X˜vÑ&Ô&ð 	JÝ˜8‘}”}ˆHˆHÝ�X˜vÑ&Ô&ð 	JØ”}ˆHˆHÝ˜ 6Ñ*Ô*ð 	JÝÐHÑIÔIÐIØ�t”yÒ Ð ¨Ð ÝÐCÑDÔDÐDØð 	T�kð 	TÝÐRÑSÔSÐSØŒ?˜QÒÐÝÐ:Ñ;Ô;Ð;Øð 	DØŒy˜HÒ$Ð$¨¬Ð$Ý Ð!BÑCÔCÐCØð 	C•s˜7‘|”| bÒ(Ð(¨HÐ(½¸X¹¼ÈÒ9KÐ9KÝÐAÑBÔBÐBå˜t¨eÐ4Ñ4Ô4ˆØð 	1Ø×+Ò+Ñ-Ô-ˆIÝ y¸5ÐAÑAÔAˆLÝ" <Ñ0Ô0ˆCåÔ$Ñ&Ô&ˆØ)ˆÔØˆŒØ"ˆÔØ"0ˆÔØ!.ˆÔØ#ˆÔØ!ˆŒØˆŒØˆŒØˆŒØ ˆÔØ"+ˆÔØ'ˆÔØ$ˆŒØ&ˆÔØ(ˆÔØÐØ×$Ò$ XÑ.Ô.Ð.Ð.ØÐ Ø×$Ò$ WÑ-Ô-Ð-ØÐØ×$Ò$ WÑ-Ô-Ð-Ø$5ˆÔ!Ø)ˆÔØ"4ˆÔàˆØ*+ˆŒÔ'Ý˜#ÑÔÐØ˜Š>ˆ>Ý˜sÑ#Ô#Ð#Ý�h¥Ñ$Ô$ð 	"åÔ# C¨°4Ñ8Ô8Ð8Ð8å'¨Ñ1Ô1ˆCåÔ$ S¨#¨tÑ4Ô4Ð4Ø×ÒÑ!Ô!Ð!Øð 	?ØÔð ?¨ð ?ÝÐ =Ñ>Ô>Ð>ð	?ð 	?ð?ð ?ð ?ð ?r*   c                ój  — | j         rt          d¦  «        ‚t          |¦  «        t          u rnGt	          |d¦  «        rt          |¦  «        }n't	          |d¦  «        r|j        }nt          d¦  «        ‚|| j        k    rt          d¦  «        ‚t          | ¦  «        }t          j        ||¦  «         dS )z.Save a file snapshot suitable for journalling.zdoc is closedr:   r   r	  zcannot snapshot to originalN)	rÂ   rÃ   rÈ   rÑ  r;   r   rÎ   r�   Úpdf_save_snapshot)r(   rf   rZ  s      r)   Úsave_snapshotzDocument.save_snapshotþ  s»   € àŒ>ð 	.Ý˜_Ñ-Ô-Ð-Ý�‰>Œ>�SÐ Ð ØÝ�X˜vÑ&Ô&ð 	JÝ˜8‘}”}ˆHˆHÝ�X˜vÑ&Ô&ð 	JØ”}ˆHˆHåÐHÑIÔIÐIØ�t”yÒ Ð ÝÐ:Ñ;Ô;Ð;Ý˜tÑ$Ô$ˆÝÔ  XÑ.Ô.Ð.Ð.Ð.r*   c                óP   — |                       | j        dt          j        ¬¦  «        S )z Save PDF incrementallyT)r  r  )r)  r   r�   ÚPDF_ENCRYPT_KEEPr.   s    r)   ÚsaveIncrzDocument.saveIncr  s   € à�yŠy˜œ°ÅÔAWˆyÑXÔXÐXr*   Úattached_filesÚclean_pagesÚembedded_filesÚhidden_textÚ
javascriptr  Ú
redactionsÚredact_imagesÚremove_linksÚreset_fieldsÚreset_responsesÚ
thumbnailsÚxml_metadatac                óP  — d„ }| j         st          d¦  «        ‚| j        s| j        rt          d¦  «        ‚|sd}|r|                      i ¦  «         | D �]p}|
r+|                     ¦   «         D ]}|                     ¦   «          Œ|	r.|                     ¦   «         }|D ]}|                     |¦  «         Œd}|r ||¦  «        }t          |¦  «        }| 
                    ¦   «         D ]h}|j        d         t          j        k    r|r|                     d¬¦  «         |r|                     ¦   «          |j        d         t          j        k    rd}Œi|s|r|r|                     |¬	¦  «         |r|                     ¦   «          |rA|                      |j        d
¦  «        d         dk    r|                      |j        d
d¦  «         �Œr|r,|                      ¦   «         D ]}|                      |¦  «         Œ|r|                      ¦   «          |s|sd}n|                      ¦   «         }t5          d|¦  «        D ]ð}|                      |¦  «        sd|› d�}t          |¦  «        ‚|r9|                      |d¦  «        d         dk    rd}|                      ||¦  «         Œg|sŒj|                      |d¦  «        d         dk    r/|                      |d¦  «         |                      |dd¬¦  «         Œ¹|                      |d¦  «        d         dk    r|                      |dd¦  «         Œñd S )Nc                ó~  ‡	‡
— t          t          dd¦  «        Š	t          t          dd¦  «        Š
ˆ	ˆ
fd„}d}|                      dt          t          z  ¬¦  «        }|                     dd	¦  «        D ]Ë}|                     d
¦  «        dk    rŒ|                     dd	¦  «        D ]˜}|                     t          d	¦  «        D ]z} ||¦  «        sŒ|                     t          ¦  «        p|                     d¦  «        }|sŒ@t          |¦  «        }|j	        s|j
        rŒ^|                      |d¬¦  «         |dz  }Œ{Œ™ŒÌ|S )zBAdd redaction annots for hidden text spans and return their count.ÚFZ_STEXT_FILLEDNÚFZ_STEXT_STROKEDc                ó  •— |                       t          ¦  «        p|                       d¦  «        }t          |t          ¦  «        r!|                     d¦  «        d         dk    rdS |                       d¦  «        }|dk    rdS |                       t
          ¦  «        }t          |t          ¦  «        rTt          ‰t          ¦  «        r?t          ‰t          ¦  «        r*t          |‰z  ¦  «        }t          |‰z  ¦  «        }|s|sdS dS )	NrW  ú+r1  ÚGlyphLessFontTrÜ  r   F)r8   Údictkey_fontr>   rÑ  r6   Údictkey_char_flagsr4   rç   )rç  rW  rÜ  Ú
char_flagsÚfilledÚstrokedÚfilled_flagÚstroked_flags         €€r)   Úis_hidden_spanzJDocument.scrub.<locals>.add_hidden_text_redactions.<locals>.is_hidden_span-  sþ   ø€ Ø—x’x¥Ñ-Ô-ÐA°·²¸&Ñ1AÔ1A�Ý˜d¥CÑ(Ô(ð $à—z’z #‘” rÔ*¨oÒ=Ð=Ø#˜tàŸš Ñ)Ô)�Ø˜A’:�:Ø˜4à!ŸXšXÕ&8Ñ9Ô9�
å˜z­3Ñ/Ô/ð$å" ;µÑ4Ô4ð$õ # <µÑ5Ô5ð$õ
 " *¨{Ñ":Ñ;Ô;�FÝ" :°Ñ#<Ñ=Ô=�GØ!ð $¨'ð $Ø#˜tà�ur*   r   r5   ©r¾  Úblocksr-   rÈ   rô  r/  F)rÂ  r   )rì   r�   rõ  ÚTEXT_PRESERVE_SPANSÚTEXT_COLLECT_STYLESr8   Údictkey_spansÚdictkey_bboxr$  Úis_emptyÚis_infiniteÚadd_redact_annot)rÖ   rR	  r  r¢  Úblockro   rç  r/  r÷   rP	  rQ	  s            @@r)   Úadd_hidden_text_redactionsz2Document.scrub.<locals>.add_hidden_text_redactions(  s}  øø€ å!¥%Ð):¸DÑAÔAˆKÝ"¥5Ð*<¸dÑCÔCˆLðð ð ð ð ð ð0 ˆEØ—}’}ØÕ1Õ4GÑGð %ñ ô ˆHð "Ÿš h°Ñ3Ô3ð #ð #�Ø—9’9˜VÑ$Ô$¨Ò)Ð)ØØ!ŸIšI g¨rÑ2Ô2ð #ð #�DØ $§¢­¸Ñ ;Ô ;ð 
#ð 
#˜Ø-˜~¨dÑ3Ô3ð %Ø$Ø#Ÿxšx­Ñ5Ô5ÐI¸¿ºÀ&Ñ9IÔ9I˜Ø#ð %Ø$Ý# D™zœz˜Øœ=ð %¨DÔ,<ð %Ø$Ø×-Ò-¨d¸eÐ-ÑDÔDÐDØ ™
˜˜ð
#ð#ð ˆLr*   rÙ  zclosed or encrypted docFr   r0  )r-  T)ÚimagesÚThumbr¸  r   z	bad xref z - clean PDF before scrubbingÚSz/JavaScriptz<</S/JavaScript/JS()>>r6  z	/Metadataú<<>>s   deleted)r   rÔ  )rÛ  rÃ   r   rÂ   Úset_metadatar½  Úresetrr  Údelete_linkrç   rŸ  rÈ   r�   rE  r  r£  rý   Úapply_redactionsr’  rñ  r  rn  rð  rì  rÕ  r|  rL  rˆ  r‰  Úupdate_stream)r*  r8	  r9	  r:	  r;	  r<	  r  r=	  r>	  r?	  r@	  rA	  rB	  rC	  r]	  rÖ   r<  r}  r·  Úhidden_redactsÚfound_redactsrß   r   Ú
xref_limitr  r˜   r  s                              r)   ÚscrubzDocument.scrub  sÐ  € ð"0	ð 0	ð 0	ðd Œzð 	*Ý˜[Ñ)Ô)Ð)ØÔð 	8˜sœ}ð 	8ÝÐ6Ñ7Ô7Ð7àð 	ØˆJàð 	!Ø×Ò˜RÑ Ô Ð àð  	Añ  	AˆDØð #à"Ÿlšl™nœnð #ð #�FØ—L’L‘N”N�N�Nàð +ØŸšÑ(Ô(�Ø!ð +ð +�DØ×$Ò$ TÑ*Ô*Ð*Ð*àˆNØð BØ!;Ð!;¸DÑ!AÔ!A�å  Ñ0Ô0ˆMØŸš™œð )ð )�Ø”:˜a”=¥EÔ$CÒCÐCÈÐCØ×%Ò%¨dÐ%Ñ3Ô3Ð3Ø"ð -Ø×*Ò*Ñ,Ô,Ð,Ø”:˜a”=¥EÔ$:Ò:Ð:Ø$(�Møàð < *ð <°ð <Ø×%Ò%¨]Ð%Ñ;Ô;Ð;àð &Ø×#Ò#Ñ%Ô%Ð%àð AØ×#Ò# D¤I¨wÑ7Ô7¸Ô:¸fÒDÐDØ×$Ò$ T¤Y°¸Ñ@Ô@Ð@ùð ð 	&Ø×)Ò)Ñ+Ô+ð &ð &�Ø—’ Ñ%Ô%Ð%Ð%àð 	#Ø× Ò Ñ"Ô"Ð"Øð 	+ 
ð 	+ØˆJˆJàŸšÑ*Ô*ˆJÝ˜!˜ZÑ(Ô(ð 	;ð 	;ˆDØ—?’? 4Ñ(Ô(ð &ØE $ÐEÐEÐE�Ý  ‘o”oÐ%Øð ˜c×.Ò.¨t°SÑ9Ô9¸!Ô<ÀÒMÐMà.�Ø×!Ò! $¨Ñ,Ô,Ð,Øàð Øà×Ò  fÑ-Ô-¨aÔ0°KÒ?Ð?à×!Ò! $¨Ñ/Ô/Ð/Ø×!Ò! $¨
¸Ð!Ñ=Ô=Ð=Øà×Ò  jÑ1Ô1°!Ô4¸Ò>Ð>Ø× Ò   z°6Ñ:Ô:Ð:øð)	;ð 	;r*   Úquadsc                óŠ   — |€"dt           z  t          z  t          z  t          z  }| |                              |||||¬¦  «        S )a¹  Search for a string on a page.

        Args:
            pno: page number
            text: string to be searched for
            clip: restrict search to this rectangle
            quads: (bool) return quads instead of rectangles
            flags: bit switches, default: join hyphened words
            textpage: reuse a prepared textpage
        Returns:
            a list of rectangles or quads, each containing an occurrence.
        Nr   )rk	  r  r¾  r¢  )ÚTEXT_DEHYPHENATEÚTEXT_PRESERVE_LIGATURESÚTEXT_PRESERVE_WHITESPACEÚTEXT_MEDIABOX_CLIPÚ
search_for)r*  rÕ  r   rk	  r  r¾  r¢  s          r)   Úsearch_page_forzDocument.search_page_for©  sd   € ð* ˆ=ØÝ&ñ'å-ñ.õ /ñ/õ )ñ	)ˆEð �3Œx×"Ò"ØØØØØð #ñ 
ô 
ð 	
r*   c                óð  — | j         s| j        rt          d¦  «        ‚| j        st          d¦  «        ‚t	          |d¦  «        st          d¦  «        ‚t          t          | ¦  «        ¦  «        }t          |¦  «        dk    s"t          |¦  «        |vst          |¦  «        |vrt          d¦  «        ‚t          | ¦  «        }t          j        ||t          j        ¦  «         |                      ¦   «          dS )z,Build sub-pdf with page numbers in the list.r-  rÙ  ra  zsequence requiredr   rÚ  N)rÂ   r   rÃ   rÛ  r;   rL  r7   rÜ  rê  rÎ   r�   Úpdf_rearrange_pages2ÚPDF_CLEAN_STRUCTURE_KEEPr`  )r(   ÚpylisteÚvalid_rangerZ  s       r)   ÚselectzDocument.selectÍ  sö   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<ØŒ{ð 	*Ý˜[Ñ)Ô)Ð)Ý�w Ñ.Ô.ð 	2ÝÐ0Ñ1Ô1Ð1å�C ™IœIÑ&Ô&ˆÝ�‰LŒL˜AÒÐÝ�7‰|Œ| ;Ð.Ð.Ý�7‰|Œ| ;Ð.Ð.åÐ1Ñ2Ô2Ð2õ ˜tÑ$Ô$ˆõ
 	Ô" 3¨µÔ1OÑPÔPÐPð 	×ÒÑÔÐÐÐr*   c                ó”   — t          | ¦  «        }|st          j        }nt          j        |¦  «        }t          j        ||¦  «         dS rÁ  )rÎ   r�   r(  r�  Úpdf_set_document_language)r(   r+  rZ  r*  s       r)   r’  zDocument.set_languageè  sJ   € Ý˜tÑ$Ô$ˆØð 	@ÝÔ&ˆDˆDåÔ5°hÑ?Ô?ˆDÝÔ'¨¨TÑ2Ô2Ð2Øˆtr*   c                ó`  — | j         rt          d¦  «        ‚t          |                      ¦   «                              ¦   «         ¦  «        }|t          ¦   «         k    rt          d¦  «        ‚|rrt          |¦  «        t          t          fvrt          d¦  «        ‚t          |¦  «                             |¦  «        }|t          ¦   «         k    rt          d|› �¦  «        ‚|rrt          |¦  «        t          t          fvrt          d¦  «        ‚t          |¦  «                             |¦  «        }|t          ¦   «         k    rt          d|› �¦  «        ‚|rrt          |¦  «        t          t          fvrt          d¦  «        ‚t          |¦  «                             |¦  «        }|t          ¦   «         k    rt          d|› �¦  «        ‚|r§t          |¦  «        t          t          fvrt          d	¦  «        ‚|D ]x}	t          |	¦  «        t          t          fvrt          d
|	› d�¦  «        ‚t          |	¦  «                             |¦  «        }|t          ¦   «         k    rt          d|› �¦  «        ‚Œy|r<t          |¦  «         
                    ¦   «         }|dk    rd}|dvrt          d¦  «        ‚t          | ¦  «        }
t          j        t          j        |
¦  «        t          d¦  «        t          d¦  «        ¦  «        }|j        sdS |dk    r#t          j        |t          d¦  «        ¦  «        }n5t          j        t          j        |t          d¦  «        ¦  «        |¦  «        }|j        st          t&          ¦  «        ‚t)          ||||||¦  «         t          j        |
j        ¦  «         dS )z5Set the PDF keys /ON, /OFF, /RBGroups of an OC layer.r¾   z document has no optional contentzbad type: 'on'zbad OCGs in 'on': zbad type: 'off'zbad OCGs in 'off': zbad type: 'locked'zbad OCGs in 'locked': zbad type: 'rbgroups'zbad RBGroup 'rë   zbad OCGs in RBGroup: Ú	UNCHANGEDÚ	Unchanged)r¥  r¦  r}	  zbad 'basestate'r/  rZ  Nr1  r  r£  )rÂ   rÃ   rØ  rs  rË  rÈ   r´   rµ   Ú
differencerÑ  ÚupperrÎ   r�   r  r3  r  rÌ   r  rœ  r¨  ÚJM_set_ocg_arraysr”  )r(   r©  Ú	basestater–  ÚoffÚrbgroupsr3  rp  rr  r(  rZ  r²  r  s                r)   Ú	set_layerzDocument.set_layerñ  s~  € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/Ý�4—=’=‘?”?×'Ò'Ñ)Ô)Ñ*Ô*ˆØ•3‘5”5Š=ˆ=ÝÐ?Ñ@Ô@Ð@àð 	;Ý�B‰xŒx¥¥e˜}Ð,Ð,Ý Ð!1Ñ2Ô2Ð2Ý�B‘”×"Ò" 4Ñ(Ô(ˆAØ•C‘E”EŠzˆzÝ Ð!9°aÐ!9Ð!9Ñ:Ô:Ð:àð 	<Ý�C‰yŒy¥¥u Ð-Ð-Ý Ð!2Ñ3Ô3Ð3Ý�C‘”×#Ò# DÑ)Ô)ˆAØ•C‘E”EŠzˆzÝ Ð!:°qÐ!:Ð!:Ñ;Ô;Ð;àð 	?Ý�F‰|Œ|¥D­% =Ð0Ð0Ý Ð!5Ñ6Ô6Ð6Ý�F‘”×&Ò& tÑ,Ô,ˆAØ•C‘E”EŠzˆzÝ Ð!=¸!Ð!=Ð!=Ñ>Ô>Ð>àð 	BÝ�H‰~Œ~¥d­E ]Ð2Ð2Ý Ð!7Ñ8Ô8Ð8Øð Bð B�Ý˜A‘w”w¥4­ -Ð/Ð/Ý$Ð%9°QÐ%9Ð%9Ð%9Ñ:Ô:Ð:Ý˜‘F”F×%Ò% dÑ+Ô+�Ø�™œ’:�:Ý$Ð%@¸QÐ%@Ð%@ÑAÔAÐAð ð ð 	4Ý˜I™œ×,Ò,Ñ.Ô.ˆIØ˜KÒ'Ð'Ø'�	ØÐ :Ð:Ð:Ý Ð!2Ñ3Ô3Ð3Ý˜tÑ$Ô$ˆÝÔ!ÝÔ! 3Ñ'Ô'Ý˜Ñ Ô Ý˜Ñ(Ô(ñô ˆð
 Œ~ð 	ØˆFØ�RŠ<ˆ<ÝÔ$ c­8°C©=¬=Ñ9Ô9ˆCˆCåÔ%ÝÔ&¨­X°iÑ-@Ô-@ÑAÔAØñô ˆCð Œ~ð 	1ÝÕ/Ñ0Ô0Ð0Ý˜3 	¨2¨s°H¸fÑEÔEÐEÝÔ˜sœ~Ñ.Ô.Ð.Ð.Ð.r*   c                óp  ‡— t          ‰t          ¦  «        rAˆfd„|                      ¦   «         D ¦   «         }|g k    rt          d‰› d�¦  «        ‚|d         Št	          | ¦  «        }|dk    rt          j        |‰¦  «         dS |dk    rt          j        |‰¦  «         dS t          j        |‰¦  «         dS )z$Set / unset OC intent configuration.c                ó8   •— g | ]}|d          ‰k    ¯|d         ‘ŒS )r   r^  r-   )r­   Úuir^  s     €r)   r¯   z0Document.set_layer_ui_config.<locals>.<listcomp>7  s,   ø€ Ð]Ð]Ð] rÈÈ6Ì
ÐV\ÒH\ÐH\�b˜”lÐH\ÐH\ÐH\r*   z	bad OCG 'r\  r   r   r   N)	r>   rÑ  r8  rÃ   rÎ   r�   Úpdf_toggle_layer_config_uiÚpdf_deselect_layer_config_uiÚpdf_select_layer_config_ui)r(   r^  rŽ  rx	  rZ  s    `   r)   Úset_layer_ui_configzDocument.set_layer_ui_config2  sÒ   ø€ õ �f�cÑ"Ô"ð 	Ø]Ð]Ð]Ð]¨T×-BÒ-BÑ-DÔ-DÐ]Ñ]Ô]ˆFØ˜Š|ˆ|Ý Ð!7¨VÐ!7Ð!7Ð!7Ñ8Ô8Ð8Ø˜A”YˆFÝ˜tÑ$Ô$ˆØ�QŠ;ˆ;ÝÔ,¨S°&Ñ9Ô9Ð9Ð9Ð9Ø�qŠ[ˆ[ÝÔ.¨s°FÑ;Ô;Ð;Ð;Ð;åÔ,¨S°&Ñ9Ô9Ð9Ð9Ð9r*   rZ  c                óø  — |                       ¦   «         }|dk    rt          d¦  «        ‚|rt          |t          ¦  «        sdS ddddœ}t	          |                     ¦   «         ¦  «                             |                     ¦   «         ¦  «        sXdt	          |                     ¦   «         ¦  «                             |                     ¦   «         ¦  «        › �}t          |¦  «        ‚d}|                     |¦  «         | 	                    ¦   «         D ]K\  }}t          |¦  «                             ¦   «         }|dvrt          d|› d	|› d
�¦  «        ‚|d|› d|› �z  }ŒL|dz  }|                      |d|¦  «         dS )zSet the PDF MarkInfo values.r   ú	not a PDFFrS  zbad MarkInfo key(s): rQ  )rX  Úfalsezbad key value 'z': 'rë   rW  r³   rR  rP  T)r‡  rÃ   r>   r5   rØ  rË  Ú
issupersetr~	  r  rB   rÑ  rÒ  rn  )r(   rZ  r  rY  ÚbadkeysÚpdfdictr  r¸   s           r)   Úset_markinfozDocument.set_markinfoC  s€  € à×ÒÑ!Ô!ˆØ�1Š9ˆ9Ý˜[Ñ)Ô)Ð)Øð 	�z¨(µDÑ9Ô9ð 	Ø�5Ø °EÀuÐMÐMˆå�5—:’:‘<”<Ñ Ô ×+Ò+¨H¯MªM©O¬OÑ<Ô<ð 	&Ø]­c°(·-²-±/´/Ñ.BÔ.B×.MÒ.MÈeÏjÊjÉlÌlÑ.[Ô.[Ð]Ð]ˆGÝ˜WÑ%Ô%Ð%ØˆØ�Š�XÑÔÐØŸ+š+™-œ-ð 	)ð 	)‰JˆC�Ý�e‘*”*×"Ò"Ñ$Ô$ˆEØÐ-Ð-Ð-Ý Ð!D°3Ð!DÐ!D¸EÐ!DÐ!DÐ!DÑEÔEÐEØÐ(˜3Ð(Ð( Ð(Ð(Ñ(ˆGˆGØ�4‰ˆØ×Ò˜$ 
¨GÑ4Ô4Ð4Øˆtr*   r€  c                ór  ‡— | j         st          d¦  «        ‚| j        s| j        rt          d¦  «        ‚|€i }n%t	          |¦  «        t
          urt          d¦  «        ‚ddddddd	d
ddddœŠt          ‰                     ¦   «         ¦  «        }t          |                     ¦   «         ¦  «                             |¦  «        }|t          ¦   «         k    rd|› �}t          |¦  «        ‚|  	                    dd¦  «        \  }}|dk    rd}n#t          |                     dd¦  «        ¦  «        }|i k    r|dk    rdS |dk    rE|                      ¦   «         }|                      |d¦  «         |                      dd|› d�¦  «         n3|i k    r-|                      ddd¦  «         |                      ¦   «          dS ˆfd„|                     ¦   «         D ¦   «         D ]I\  }}	‰|         }
t#          |	¦  «        r|	dv rd}	nt%          |	¦  «        }	|                      ||
|	¦  «         ŒJ|                      ¦   «          dS )zcUpdate the PDF /Info object.

        Args:
            m: a dictionary like doc.metadata.
        rÙ  r-  Nzbad metadataÚAuthorÚProducerrŸ  r�  r  ÚModDateÚSubjectÚKeywordsÚTrapped)rÇ  rÉ  r•  ry  rÆ  r  rz  r{  r|  rÈ  rÊ  zbad dict key(s): r1  ÚInfor  r   rl  r\   ra	  ry  r¸  c                ó.   •— g | ]\  }}‰|         ®||f‘ŒS r,   r-   )r­   rŸ  rF   Úkeymaps      €r)   r¯   z)Document.set_metadata.<locals>.<listcomp>�  s*   ø€ ÐOÐOÐO¡D A q¸À¼Ð9N˜!˜Q˜Ð9NÐ9NÐ9Nr*   )Únoner¸  )rÛ  rÃ   rÂ   r   rÈ   r5   rØ  rË  r~	  rñ  r4   rà  re  r‰  rn  r  rB   rç   rf  )r*  r€  Ú
valid_keysÚdiff_setr˜   rD  r€  Ú	info_xrefr  r  Úpdf_keyrœ	  s              @r)   rb	  zDocument.set_metadataZ  sk  ø€ ð Œzð 	*Ý˜[Ñ)Ô)Ð)ØŒ=ð 	=˜CÔ,ð 	=ÝÐ;Ñ<Ô<Ð<Øˆ9ØˆAˆAÝ�!‰WŒW�DÐ Ð Ý˜^Ñ,Ô,Ð,àØ"Ø ØØØØ*Ø Ø Ø"Ø ð
ð 
ˆõ ˜Ÿš™œÑ'Ô'ˆ
Ý�q—v’v‘x”x‘=”=×+Ò+¨JÑ7Ô7ˆØ•s‘u”uÒÐØ0 hÐ0Ð0ˆCÝ˜S‘/”/Ð!à×"Ò" 2 vÑ.Ô.‰ˆˆ4Ø�Š;ˆ;ØˆIˆIå˜DŸLšL¨°Ñ3Ô3Ñ4Ô4ˆIà�Š7ˆ7�y A’~�~ØˆFà˜Š>ˆ>Ø×(Ò(Ñ*Ô*ˆIØ×Ò˜i¨Ñ0Ô0Ð0Ø×Ò˜R ¨IÐ);Ð);Ð);Ñ<Ô<Ð<Ð<Ø�"ŠWˆWØ×Ò˜R ¨Ñ0Ô0Ð0Ø�LŠL‰NŒNˆNØˆFàOÐOÐOÐO¨A¯GªG©I¬IÐOÑOÔOð 	6ð 	6‰HˆC�Ø˜S”kˆGÝ˜‘9”9ð ' Ð'7Ð 7Ð 7Ø��å! #Ñ&Ô&�Ø×Ò˜Y¨°Ñ5Ô5Ð5Ð5Ø�Š‰ŒˆØˆr*   rÅ  c                óÀ  — | j         s| j        rt          d¦  «        ‚|                      |d¦  «        \  }}|dk    s|dvrt          d|› �¦  «        ‚|dk    r5|                      |d¦  «        \  }}|dk    s|dvrt          d|› �¦  «        ‚|dk    r0d	|                      |¦  «        v r|                      |d	d
¦  «         dS |                      |d	|› d�¦  «         dS )zÄAttach optional content object to image or form xobject.

        Args:
            xref: (int) xref number of an image or form xobject
            oc: (int) xref number of an OCG or OCMD
        rg  r†  r   rh  rk  r   r6  )z/OCGz/OCMDrÃ  r¸  Nry  )rÂ   r   rÃ   rñ  Úxref_get_keysrn  )r*  r  rÅ  rD  r   s        r)   rœ  zDocument.set_oc—  s  € ð Œ=ð 	<˜CÔ,ð 	<ÝÐ:Ñ;Ô;Ð;Ø×"Ò" 4¨Ñ3Ô3‰ˆˆ4Ø�Š;ˆ;˜$Ð&9Ð9Ð9ÝÐ>¸Ð>Ð>Ñ?Ô?Ð?Ø�Š6ˆ6Ø×&Ò& r¨6Ñ2Ô2‰GˆAˆtØ�FŠ{ˆ{˜dÐ*;Ð;Ð;Ý Ð!@¸BÐ!@Ð!@ÑAÔAÐAØ�Š7ˆ7�t˜s×0Ò0°Ñ6Ô6Ð6Ð6Ø×Ò˜T 4¨Ñ0Ô0Ð0Ø�4Ø×Ò˜˜t¨ [ [ [Ñ1Ô1Ð1Øˆtr*   rp  útyping.Union[list, None]rz  r{  c                ó&  ‡	‡
— t          |                      ¦   «                              ¦   «         ¦  «        Š	ˆ	ˆ
fd„Š
d}|r’t          |¦  «        t          t
          fv rut          |¦  «                             ‰	¦  «        }|t          ¦   «         k    rd|› �}t          |¦  «        ‚|dd                     t          d„ |¦  «        ¦  «        z   dz   z  }|rLt          |¦  «                             ¦   «         }dd	d
ddœ}|dvrt          d|› �¦  «        ‚|d||         › �z  }|r|d ‰
|¦  «        › �z  }|dz  }|dk    r|                      ¦   «         }n(d|                      |d¬¦  «        vrt          d¦  «        ‚|                      ||¦  «         |S )aÑ  Create or update an OCMD object in a PDF document.

        Args:
            xref: (int) 0 for creating a new object, otherwise update existing one.
            ocgs: (list) OCG xref numbers, which shall be subject to 'policy'.
            policy: one of 'AllOn', 'AllOff', 'AnyOn', 'AnyOff' (any casing).
            ve: (list) visibility expression. Use instead of 'ocgs' with 'policy'.

        Returns:
            Xref of the created or updated OCMD.
        c                óf  •— t          | ¦  «        t          t          fvst          | ¦  «        dk     rt	          d| › �¦  «        ‚| d                              ¦   «         dvrt	          d| d         › �¦  «        ‚| d                              ¦   «         dk    r%t          | ¦  «        dk    rt	          d| › �¦  «        ‚d| d                              ¦   «         › �}| dd …         D ]I}t          |¦  «        t          u r |‰vrt	          d	|› �¦  «        ‚|d
|› d�z  }Œ8|d
 ‰|¦  «        › �z  }ŒJ|dz  }|S )Nr   zbad 've' format: r   )ÚandÚorÚnotzbad operand: r©	  z[/r   zbad OCG r³   ry  rm  )rÈ   r´   rµ   r7   rÃ   rÒ  ry  r4   )r{  rC   r(  Úall_ocgsÚve_makers      €€r)   r«	  z#Document.set_ocmd.<locals>.ve_makerÂ  sI  ø€ Ý�B‰xŒx¥¥e˜}Ð,Ð,µ°B±´¸!²°Ý Ð!9°RÐ!9Ð!9Ñ:Ô:Ð:Ø�!Œu�{Š{‰}Œ}Ð$8Ð8Ð8Ý Ð!8°°A´Ð!8Ð!8Ñ9Ô9Ð9Ø�!Œu�{Š{‰}Œ} Ò%Ð%­#¨b©'¬'°Qª,¨,Ý Ð!9°RÐ!9Ð!9Ñ:Ô:Ð:Ø'˜˜1œŸš™œÐ'Ð'ˆDØ˜˜˜”Vð .ð .�Ý˜‘7”7�c�>�>Ø Ð(Ð(Ý(¨°A¨¨Ñ8Ô8Ð8Ø˜K ˜K˜K˜KÑ'�D�DàÐ-  ¨¡¤Ð-Ð-Ñ-�D�DØ�C‰KˆDØˆKr*   z<</Type/OCMDz
bad OCGs: rw  r³   c                ó   — | › d�S )Nry  r-   r_  s    r)   ú<lambda>z#Document.set_ocmd.<locals>.<lambda>Û  s   € ¸°j°j°j€ r*   rm  ÚAnyOnÚAllOnÚAnyOffÚAllOff)ÚanyonÚallonÚanyoffÚalloffzbad policy: rx  z/VErR  r   rv  Tr…  zbad xref or not an OCMD)rØ  rs  rË  rÈ   r´   rµ   r~	  rÃ   rÜ  rÝ  rÑ  rÒ  re  rˆ  r‰  )r*  r  rp  rz  r{  r   rr  r˜   Úpolsrª	  r«	  s            @@r)   Úset_ocmdzDocument.set_ocmd­  sØ  øø€ õ& �s—|’|‘~”~×*Ò*Ñ,Ô,Ñ-Ô-ˆð	ð 	ð 	ð 	ð 	ð 	ð$ ˆàð 	O•D˜‘J”J¥4­ -Ð/Ð/Ý�D‘	”	×$Ò$ XÑ.Ô.ˆAØ•C‘E”EŠzˆzØ& 1Ð&Ð&�Ý  ‘o”oÐ%Ø�H˜sŸxšx­Ð,@Ð,@À$Ñ(GÔ(GÑHÔHÑHÈ3ÑNÑNˆDàð 
	)Ý˜‘[”[×&Ò&Ñ(Ô(ˆFà Ø Ø"Ø"ð	ð ˆDð ÐCÐCÐCÝ Ð!8°Ð!8Ð!8Ñ9Ô9Ð9ØÐ(˜$˜vœ,Ð(Ð(Ñ(ˆDàð 	)ØÐ(˜(˜( 2™,œ,Ð(Ð(Ñ(ˆDà�‰ˆð �1Š9ˆ9Ø×#Ò#Ñ%Ô%ˆDˆDØ §¢°À$ Ñ!GÔ!GÐGÐGÝÐ6Ñ7Ô7Ð7Ø×Ò˜$ Ñ%Ô%Ð%Øˆr*   r…  c                ó\  — d}|                       ¦   «         }|dk    rt          d¦  «        ‚|st          d¦  «        ‚|d         dk    r
|dd…         }|D ]I}|                     ¦   «         |                     ¦   «         k    r|                      |dd|› �¦  «          d	S ŒJt          d¦  «        ‚)
zSet the PDF PageLayout value.)r‚  Ú	OneColumnÚTwoColumnLeftÚTwoColumnRightÚTwoPageLeftÚTwoPageRightr   r�	  zbad PageLayout valuerW  r   Nr�  T©r‡  rÃ   rÒ  rn  )r(   r…  rY  r  rF   s        r)   Úset_pagelayoutzDocument.set_pagelayoutö  sË   € àmˆØ×ÒÑ!Ô!ˆØ�1Š9ˆ9Ý˜[Ñ)Ô)Ð)Øð 	5ÝÐ3Ñ4Ô4Ð4Ø�aŒ=˜CÒÐØ# A B BœˆJØð 	ð 	ˆAØ×ÒÑ!Ô! Q§W¢W¡Y¤YÒ.Ð.Ø×!Ò! $¨°g¸!°g°gÑ>Ô>Ð>Ø�t�tð /õ Ð/Ñ0Ô0Ð0r*   r‰  c                ó\  — d}|                       ¦   «         }|dk    rt          d¦  «        ‚|st          d¦  «        ‚|d         dk    r
|dd…         }|D ]I}|                     ¦   «         |                     ¦   «         k    r|                      |dd|› �¦  «          d	S ŒJt          d¦  «        ‚)
zSet the PDF PageMode value.)rˆ  ÚUseOutlinesÚ	UseThumbsÚ
FullScreenÚUseOCÚUseAttachmentsr   r�	  zbad PageMode valuerW  r   Nr‡  Tr¾	  )r(   r‰  rY  r  rF   s        r)   Úset_pagemodezDocument.set_pagemode  sÉ   € à`ˆØ×ÒÑ!Ô!ˆØ�1Š9ˆ9Ý˜[Ñ)Ô)Ð)Øð 	3ÝÐ1Ñ2Ô2Ð2Ø�AŒ;˜#ÒÐØ   ”|ˆHØð 	ð 	ˆAØ�~Š~ÑÔ 1§7¢7¡9¤9Ò,Ð,Ø×!Ò! $¨
°G¸°G°GÑ<Ô<Ð<Ø�t�tð -õ Ð-Ñ.Ô.Ð.r*   c                óT   ‡— d„ Šˆfd„}|                        ||¦  «        ¦  «         dS )a0  Add / replace page label definitions in PDF document.

        Args:
            doc: PDF document (resp. 'self').
            labels: list of label dictionaries like:
            {'startpage': int, 'prefix': str, 'style': str, 'firstpagenum': int},
            as returned by get_page_labels().
        c                ó  — | d         › d�}|                       dd¦  «        dk    r|d| d         › d�z  }|                       dd¦  «        dk    r|d| d         › �z  }|                       d	d
¦  «        d
k    r|d| d	         › �z  }|dz  }|S )zåConvert Python label dict to corresponding PDF rule string.

            Args:
                label: (dict) build rule for the label.
            Returns:
                PDF label rule string wrapped in "<<", ">>".
            Ú	startpagerQ  Úprefixr\   z/P(r˜  r^  z/S/Úfirstpagenumr   z/St rR  )r8   )r—  rr  s     r)   Úcreate_label_strz2Document.set_page_labels.<locals>.create_label_str!  s¹   € ð ˜Ô%Ð)Ð)Ð)ˆAØ�yŠy˜ 2Ñ&Ô&¨"Ò,Ð,ØÐ-˜5 œ?Ð-Ð-Ð-Ñ-�Ø�yŠy˜ "Ñ%Ô%¨Ò+Ð+ØÐ+˜5 œ>Ð+Ð+Ñ+�Ø�yŠy˜¨Ñ+Ô+¨aÒ/Ð/ØÐ3˜E .Ô1Ð3Ð3Ñ3�Ø�‰IˆAØˆHr*   c                óx   •— |                       d„ ¬¦  «         d                     ˆfd„| D ¦   «         ¦  «        }|S )a5  Return concatenated string of all labels rules.

            Args:
                labels: (list) dictionaries as created by function 'rule_dict'.
            Returns:
                PDF compatible string for page label definitions, ready to be
                enclosed in PDF array 'Nums[...]'.
            c                ó   — | d         S )NrÉ	  r-   r_  s    r)   r­	  z?Document.set_page_labels.<locals>.create_nums.<locals>.<lambda><  s
   €  a¨¤n€ r*   ©r  r\   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r-   r-   )r­   r—  rÌ	  s     €r)   r¯   zADocument.set_page_labels.<locals>.create_nums.<locals>.<listcomp>=  s%   ø€ ÐEÐEÐE°UÐ)Ð)¨%Ñ0Ô0ÐEÐEÐEr*   )rÙ  rÜ  )rŠ  rr  rÌ	  s     €r)   Úcreate_numsz-Document.set_page_labels.<locals>.create_nums3  sH   ø€ ð �KŠKÐ4Ð4ˆKÑ5Ô5Ð5Ø—’ÐEÐEÐEÐE¸fÐEÑEÔEÑFÔFˆAØˆHr*   N)r‹  )r*  rŠ  rÑ	  rÌ	  s      @r)   Úset_page_labelszDocument.set_page_labels  sQ   ø€ ð	ð 	ð 	ð$	ð 	ð 	ð 	ð 	ð 	×Ò˜[˜[¨Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1r*   rß  r	  c           	     óö  — | j         s| j        rt          d¦  «        ‚| j        st          d¦  «        ‚|s!t	          |                      ¦   «         ¦  «        S t          |¦  «        t          t          fvrt          d¦  «        ‚t	          |¦  «        }| j	        }|d         }t          |¦  «        t          t          fvrt          d¦  «        ‚|d         dk    rt          d¦  «        ‚t          t          |dz
  ¦  «        ¦  «        D ]ç}||         }||dz            }d|d	         cxk    r|k    sn t          d
|› d�¦  «        ‚t          |¦  «        t          t          fvst	          |¦  «        dvrt          d|dz   › �¦  «        ‚t          |d         ¦  «        t          us|d         dk     rt          d|dz   › �¦  «        ‚|d         |d         dz   k    rt          d|dz   › �¦  «        ‚Œè|                      ¦   «         }	g }	dg|	z   }
|                      ¦   «         |
d<   |t	          |	¦  «        k    rIt          |t	          |	¦  «        z
  ¦  «        D ])}|
                     |                      ¦   «         ¦  «         Œ*ddi}ddd|
d         dœg}t          |¦  «        D �]û}||         }|d         }t          |d         ¦  «        }t!          | j	        dz
  t#          d|d	         dz
  ¦  «        ¦  «        }|                      |¦  «        }|                      |¦  «        j        }t+          d|dz
  ¦  «        }|t,          dœ}|d	         dk     r
t.          |d<   t	          |¦  «        dk    rÓt          |d         ¦  «        t          t0          fv rt+          d||d         z
  ¦  «        |d<   n“t          |d         ¦  «        t2          u r|d                              ¦   «         n|}d|vr||d<   nQ| |         }t+          |d         ¦  «        }|j        j        |j        z
  |_        ||j        z  }|j        |j        f|d<   i }d|d<   d|d<   d|d<   d|d<   d|d<   t?          j         ||¦  «        |d<   |d         |d<   ||d<   ||dz
           |d<   |
|dz            |d<   | !                    d ¦  «        |d <   | !                    d!d¦  «        d	| !                    d"d¦  «        z  z   |d#<   |dz   ||<   |||dz
                    }| !                    d$¦  «        s|r||k    r|dxx         dz  cc<   n|dxx         dz  cc<   |d         dk    r|dz   |d<   |dz   |d<   n)|d         |d<   ||d                  }|dz   |d<   |dz   |d<   |                     |¦  «         �ŒýtE          |¦  «        D �]¸\  }}d%}|d         dk    r|d&|d         › �z  }	 ||d         z  }n)# tF          $ r tH          d	k    rtK          ¦   «          Y nw xY w	 |d         dk    r|d'|
|d                  › d(�z  }n)# tF          $ r tH          d	k    rtK          ¦   «          Y nw xY w	 |d         dk    r|d)|
|d                  › d(�z  }n)# tF          $ r tH          d	k    rtK          ¦   «          Y nw xY w	 |d         dk    r|d*|
|d                  › d(�z  }n)# tF          $ r tH          d	k    rtK          ¦   «          Y nw xY w	 |d         dk    r|d+|
|d                  › d(�z  }n)# tF          $ r tH          d	k    rtK          ¦   «          Y nw xY w	 |d         dk    r|d,|
|d                  › d(�z  }n)# tF          $ r tH          d	k    rtK          ¦   «          Y nw xY w	 |d-|d         z   z  }n)# tF          $ r tH          d	k    rtK          ¦   «          Y nw xY w| !                    d ¦  «        rBt	          |d          ¦  «        dk    r)|d.tM          t          |d          ¦  «        ¦  «        › d/�z  }| !                    d#d¦  «        dk    r|d0|d#         › �z  }|dk    r|d1z  }|d2z  }|  '                    |
|         |¦  «         �Œº|  (                    ¦   «          |S )3aÉ  Create new outline tree (table of contents, TOC).

        Args:
            toc: (list, tuple) each entry must contain level, title, page and
                optionally top margin on the page. None or '()' remove the TOC.
            collapse: (int) collapses entries beyond this level. Zero or None
                shows all entries unfolded.
        Returns:
            the number of inserted items, or the number of removed items respectively.
        r-  rÙ  z'toc' must be list or tupler   z'items must be sequences of 3 or 4 itemsr   z#hierarchy level of item 0 must be 1r1  r   zrow z: page number out of range)r   rK  zbad row zbad hierarchy level in row )r  rE  Úlastr  rÍ  é$   )r\  rZ  rZ  r   r\  rE  r  rÔ	  r¸  r=  rê  r	  ry  rê   r  r  r`  rL  r¾  r	  rQ  z/Count z/First ry  z/Last z/Next z/Parent z/Prev z/Titlez/C[ rm  z/F z/Type/OutlinesrR  ))rÂ   r   rÃ   rÛ  r7   rH  rÈ   r´   rµ   rÐ  rL  r4   r8  rk   re  rf  rÜ  rê  rq  rz  rÕ  rì  rb  Ú	LINK_NONEro  r5   rc  ry  r)  rR  r(  rô  Ú
getDestStrr8   ró  rg   r
  rv   r¶   r‰  r  )r*  rß  r	  ÚtoclenrÐ  Út0r®   Út1Út2Ú	old_xrefsr  ÚlvltabÚolitemsr¡  rµ  ry  rÕ  rq  Úpage_heightr	  r		  rÖ   r-  r
  rê   r¸  rÝ  rl  s                               r)   Úset_toczDocument.set_tocB  s·	  € ð Œ=ð 	=˜CÔ,ð 	=ÝÐ;Ñ<Ô<Ð<ØŒzð 	*Ý˜[Ñ)Ô)Ð)Øð 	&Ý�s—{’{‘}”}Ñ%Ô%Ð%õ �‰9Œ9�T¥5˜MÐ)Ð)ÝÐ:Ñ;Ô;Ð;Ý�S‘”ˆØ”^ˆ
Ø�ŒVˆÝ�‰8Œ8�D¥%˜=Ð(Ð(ÝÐFÑGÔGÐGØˆaŒ5�AŠ:ˆ:ÝÐBÑCÔCÐCÝ•e˜F Q™JÑ'Ô'Ñ(Ô(ð 
	Jð 
	JˆAØ�Q”ˆBØ�Q˜‘U”ˆBØ˜˜AœÐ,Ð,Ò,Ð, *Ò,Ð,Ð,Ð,Ý Ð!E¨Ð!EÐ!EÐ!EÑFÔFÐFÝ�R‘”¥¥u Ð-Ð-µ#°b±'´'ÀÐ2GÐ2GÝ Ð!5¨Q°©UÐ!5Ð!5Ñ6Ô6Ð6Ý�R˜”U‘”¥3Ð&Ð&¨2¨a¬5°1ª9¨9Ý Ð!HÀÀAÁÐ!HÐ!HÑIÔIÐIØ�!Œu�r˜!”u˜q‘yÒ Ð Ý Ð!HÀÀAÁÐ!HÐ!HÑIÔIÐIð !ð —K’K‘M”Mˆ	ð ˆ	Øˆs�Y‰ˆØ×&Ò&Ñ(Ô(ˆˆQ‰Ø•C˜	‘N”NÒ"Ð"Ý˜F¥S¨¡^¤^Ñ3Ñ5Ô5ð 0ð 0�Ø—’˜C×,Ò,Ñ.Ô.Ñ/Ô/Ð/Ð/à�Q�ˆð
 ¨°RÀÀaÄÐIÐIÐJˆõ �v‘”ð 8	ñ 8	ˆAØ�A”ˆAØ�A”$ˆCÝ  !¤Ñ%Ô%ˆEÝ�c”n qÑ(­#¨a°°1´¸±Ñ*:Ô*:Ñ;Ô;ˆCØŸš cÑ*Ô*ˆIØ×*Ò*¨3Ñ/Ô/Ô6ˆKÝ˜˜K¨"Ñ,Ñ-Ô-ˆCØ"­IÐ6Ð6ˆIØ�Œt�aŠxˆxÝ$-�	˜&Ñ!Ý�1‰vŒv˜ŠzˆzÝ˜˜!œ‘:”:¥#¥u Ð-Ð-Ý&+¨B°¸aÀ¼dÑ0BÑ&CÔ&C�I˜d‘O�Oõ 04°A°a´D©z¬z½TÐ/AÐ/A  !¤§	¢	¡¤ Ày�IØ 9Ð,Ð,Ø*-˜	 $™˜à" 3œx˜Ý % i°¤oÑ 6Ô 6˜Ø"&¤,Ô"5¸¼Ñ"?˜œØ %¨Ô(<Ñ <˜Ø+0¬7°E´GÐ*<˜	 $™ØˆAØˆAˆg‰JØˆAˆg‰JØˆAˆf‰IØˆAˆf‰IØˆAˆf‰IÝÔ(¨°IÑ>Ô>ˆAˆf‰IØ  ”ˆAˆe‰HØˆAˆg‰JØ   q¡œ/ˆAˆh‰KØ˜Q ™UœˆAˆf‰IØ"Ÿš wÑ/Ô/ˆAˆg‰JØ"Ÿš x°Ñ3Ô3°a¸)¿-º-ÈÐPQÑ:RÔ:RÑ6RÑRˆAˆg‰JØ˜a™%ˆF�3‰KØ˜V C¨!¡Gœ_Ô-ˆFð —’˜jÑ)Ô)ð%Ø-5ð%Ø:=Àº.¸.à�w��” 1Ñ$��‘�à�w��” 1Ñ$��‘à�gŒ "Ò$Ð$Ø"# a¡%��w‘Ø!" Q¡��v‘�à" 6œN��&‘	Ø˜v fœ~Ô.�Ø  1™u��V‘Ø!" Q¡��v‘Ø�NŠN˜1ÑÔÐÑõ
 ˜wÑ'Ô'ð :	,ñ :	,‰EˆAˆrØˆCØ�'Œ{˜aÒÐØÐ.  G¤Ð.Ð.Ñ.�ðØ�r˜&”zÑ!��øÝð ð ð å'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø�ðøøøðØ�g”; Ò#Ð#ØÐ< T¨"¨W¬+Ô%6Ð<Ð<Ð<Ñ<�CøøÝð ð ð Ý'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø�ðøøøðØ�f”: ’?�?ØÐ: D¨¨F¬Ô$4Ð:Ð:Ð:Ñ:�CøøÝð ð ð Ý'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø�ðøøøðØ�f”: ’?�?ØÐ: D¨¨F¬Ô$4Ð:Ð:Ð:Ñ:�CøøÝð ð ð å'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø�ðøøøðØ�h”< "Ò$Ð$ØÐ> d¨2¨h¬<Ô&8Ð>Ð>Ð>Ñ>�CøøÝð ð ð å'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø�ðøøøðØ�f”: ’?�?ØÐ: D¨¨F¬Ô$4Ð:Ð:Ð:Ñ:�CøøÝð ð ð å'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø�ðøøøðØ�x " W¤+Ñ-Ñ-��øÝð ð ð å'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø�ðøøøð
 �vŠv�g‰Œð ?¥3 r¨'¤{Ñ#3Ô#3°qÒ#8Ð#8ØÐ>�i­¨b°¬kÑ(:Ô(:Ñ;Ô;Ð>Ð>Ð>Ñ>�Ø�vŠv�g˜qÑ!Ô! AÒ%Ð%ØÐ*˜R œ[Ð*Ð*Ñ*�à�AŠvˆvØÐ'Ñ'�Ø�4‰KˆCØ×Ò˜d 1œg sÑ+Ô+Ð+Ñ+à�Š‰ŒˆØˆs~   ×W×#X ×?X Ø!X&Ø&#YÙYÙ!Y2Ù2#ZÚZÚ!Z>Ú>#[$Û#[$Û(!\
Ü
#\0Ü/\0Ü4!]Ý#]<Ý;]<Þ ^Þ#^5Þ4^5r		  rZ  ra  ry  rº   r]  c
                óB  — |                       ¦   «         |         }
d}t          |¦  «        t          u �r¦|d         t          k    ro|d         }|                      |¦  «        }|                      |¦  «        j        }|                     dt          dd¦  «        ¦  «        }||j	        z
  |_	        ||d<   t          j        ||¦  «        }|                     d¦  «        st          d¦  «        ‚|                     d	¦  «        }|rjt          t          t           |¦  «        ¦  «        }t#          |¦  «        d
k    s&t%          |¦  «        dk     st'          |¦  «        dk    rt          d¦  «        ‚|                     dd¦  «        }|                     dd¦  «        }|d|z  z   }|                     d¦  «        }|                      |
|dd…         ||||¬¦  «        S |t*          k    r|                      |¦  «        S |€|€dS |€|                      |
d|¬¦  «        S |t          k    r”|�|t/          d| j        dz   ¦  «        vrt          d¦  «        ‚|                      |dz
  ¦  «        }|                      |dz
  ¦  «        j        }|€t          d|dz
  ¦  «        }nt          |¦  «        }||j	        z
  |_	        ||||||	dœ}t          j        ||¦  «        }|dk    s|                     d¦  «        st          d¦  «        ‚|                      |
|dd…         |¬¦  «        S )az  Update TOC item by index.

        It allows changing the item's title and link destination.

        Args:
            idx:
                (int) desired index of the TOC list, as created by get_toc.
            dest_dict:
                (dict) destination dictionary as created by get_toc(False).
                Outrules all other parameters. If None, the remaining parameters
                are used to make a dest dictionary.
            kind:
                (int) kind of link (pymupdf.LINK_GOTO, etc.). If None, then only
                the title will be updated. If pymupdf.LINK_NONE, the TOC item will
                be deleted.
            pno:
                (int) page number (1-based like in get_toc). Required if
                pymupdf.LINK_GOTO.
            uri:
                (str) the URL, required if pymupdf.LINK_URI.
            title:
                (str) the new title. No change if None.
            to:
                (point-like) destination on the target page. If omitted, (72, 36)
                will be used as target coordinates.
            filename:
                (str) destination filename, required for pymupdf.LINK_GOTOR and
                pymupdf.LINK_LAUNCH.
            name:
                (str) a destination name for pymupdf.LINK_NAMED.
            zoom:
                (float) a zoom factor for the target location (pymupdf.LINK_GOTO).
        r   rZ  rÖ   r\  rÍ  rÕ	  z/Azbad bookmark destr  r   r   zbad color valuerL  Fr`  r   r	  N)rŽ  ry  r  r¾  r	  )rŽ  ry  zbad page number)rZ  r\  ra  rÖ   ra   r]  r\   )r:  rÈ   r5   rb  rq  rz  rÕ  r8   rì  r)  rô  r×	  r3   rÃ   r´   rÝ  ro  r7   rÜ  rê  r�  rÖ	  r<  rL  rÐ  )r*  r8  r		  rZ  rÕ  ra  ry  r\  rf   r]  r  rq  rß	  rŽ  r  rL  r`  r¾  r	  Úddicts                       r)   Úset_toc_itemzDocument.set_toc_item  s.  € ðZ ×$Ò$Ñ&Ô& sÔ+ˆØˆ	Ý�	‰?Œ?�dÐ"Ñ"Ø˜Ô ¥IÒ-Ð-Ø Ô'�ØŸMšM¨#Ñ.Ô.�	Ø!×.Ò.¨sÑ3Ô3Ô:�Ø—]’] 4­¨r°2©¬Ñ7Ô7�Ø" R¤TÑ)�”Ø"$�	˜$‘ÝÔ% i°Ñ;Ô;ˆFØ×$Ò$ TÑ*Ô*ð 6Ý Ð!4Ñ5Ô5Ð5Ø—M’M 'Ñ*Ô*ˆEØð 8Ý�S¥¨Ñ.Ô.Ñ/Ô/�Ý�u‘:”: ’?�?¥c¨%¡j¤j°1¢n n½¸E¹
¼
ÀQº¸Ý$Ð%6Ñ7Ô7Ð7Ø—=’= ¨Ñ/Ô/ˆDØ—]’] 8¨UÑ3Ô3ˆFØ˜Q ™XÑ%ˆEØ —}’} ZÑ0Ô0ˆHØ×'Ò'ØØ˜a˜b˜b”zØØØØ!ð (ñ ô ð ð •9ÒÐØ×#Ò# CÑ(Ô(Ð(Øˆ<˜E˜MØ�4Øˆ<Ø×'Ò'¨°TÀÐ'ÑGÔGÐGà•9ÒÐØˆ{˜c­¨q°#´.À1Ñ2DÑ)EÔ)EÐEÐEÝ Ð!2Ñ3Ô3Ð3ØŸš c¨A¡gÑ.Ô.ˆIØ×*Ò*¨3°©7Ñ3Ô3Ô:ˆKØˆzÝ˜2˜{¨RÑ/Ñ0Ô0��å˜2‘Y”Y�Ø" R¤TÑ)�”ð ØØØØØð
ð 
ˆõ Ô! )¨UÑ3Ô3ˆØ�RŠ<ˆ<˜v×0Ò0°Ñ6Ô6ˆ<ÝÐ0Ñ1Ô1Ð1à×#Ò# D°¸¸¸´À5Ð#ÑIÔIÐIr*   c                ó&  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        t	          j        |¦  «        t          d¦  «        ¦  «        }|j        st          t          t          ¦  «         t	          j        |                     d¦  «        ¦  «        }t	          j        |t          d¦  «        ¦  «        }|j        rt          |||d¦  «         d	S t	          j        ||t	          j        ¦   «         d¦  «        }t	          j        |t          d¦  «        t          d¦  «        ¦  «         t	          j        |t          d¦  «        t          d¦  «        ¦  «         t	          j        |t          d¦  «        |¦  «         d	S )
z"Store XML document level metadata.r-  r/  rÏ  rÔ  r   r6  r†  ÚXMLN)rÂ   r   rÃ   rÎ   r�   r  r3  r  rÌ   r°  ÚMSG_BAD_PDFROOTr±  r‘  rÈ  r)  r4  r5  rN  )r(   r  rZ  r;  r  r»  s         r)   Úset_xml_metadatazDocument.set_xml_metadatam  sT  € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ!¥5Ô#4°cÑ#:Ô#:½HÀVÑ<LÔ<LÑMÔMˆØŒð 	<Ý•_Õ&:Ñ;Ô;Ð;ÝÔ2°H·O²OÀGÑ4LÔ4LÑMÔMˆÝÔ  $­°Ñ(<Ô(<Ñ=Ô=ˆØŒ>ð 	AÝ˜c 3¨¨QÑ/Ô/Ð/Ð/Ð/åÔ&¨¨Sµ%´,±.´.À!ÑDÔDˆCÝÔ ¥X¨fÑ%5Ô%5µxÀ
Ñ7KÔ7KÑLÔLÐLÝÔ ¥X¨iÑ%8Ô%8½(À5¹/¼/ÑJÔJÐJÝÔ ¥h¨zÑ&:Ô&:¸CÑ@Ô@Ð@Ð@Ð@r*   ÚverboseÚfallbackc                ó"  ‡ ‡— |sJt          j        ‰ ¦  «        }t          j        |t          t	          ‰ j        ¦  «        ¦  «        ¦  «         dS i Šˆ fd„}ˆ fd„}ˆ fd„}d„ }ˆfd„}ˆfd„}	 |‰ ¦  «         ‰s|rt          d¦  «         d	S d	}
d	}‰                     ¦   «         D ]}|
t          |¦  «        z  }
Œ‰ D ]¨}| 	                    ¦   «         D ]‘}t          |¦  «        t          urŒ|d
         dd…         } |	|¦  «        }|€Œ7‰|         \  }}\  }}|d         D ]8}|                     |d	         ¦  «         |                     |d         ¦  «         Œ9||||ff‰|<   Œ’Œ©‰                     ¦   «         D �]\  }\  }}} |||d	         |d         ¦  «        }t          |¦  «        d	         }|� t          |¦  «        t          |¦  «        k    r|rt          d|›d�¦  «         Œp|rt          d|›d�¦  «         ‰                      |¬¦  «        }|d	         } ||¦  «         ‰                      |d¬¦  «        }|D ]7} ||¦  «        \  }}‰                      ||¦  «         |s|r ||||¦  «         Œ8|t          |¦  «        z  }�Œ|
|z
  S )a´  Build font subsets in a PDF.

        Eligible fonts are potentially replaced by smaller versions. Page text is
        NOT rewritten and thus should retain properties like being hidden or
        controlled by optional content.

        This method by default uses MuPDF's own internal feature to create subset
        fonts. As this is a new function, errors may still occur. In this case,
        please fall back to using the previous version by using "fallback=True".
        Fallback mode requires the external package 'fontTools'.

        Args:
            fallback: use the older deprecated implementation.
            verbose: only used by fallback mode.

        Returns:
            The new MuPDF-based code returns None.  The deprecated fallback
            mode returns 0 if there are no fonts to subset.  Otherwise, it
            returns the decrease in fontsize (the difference in fontsize),
            measured in bytes.
        Nc                ój  •— ‰                      | d¦  «        }|d         dk    rdS t          |d         dd…                              dd¦  «        ¦  «        }‰                      |d	¦  «        }|d         dk    rd
}n|d         }‰                      |d¦  «        }|d         dk    rd
}n|d         }||fS )z(Retrieve old font '/W' and '/DW' values.ÚDescendantFontsr   r	  ©NNr   r1  rl  r\   ÚWNÚDWr4   )rñ  r4   rà  )r  ÚdfÚdf_xrefÚwidthsÚdwidthsr*  s        €r)   Úget_old_widthsz-Document.subset_fonts.<locals>.get_old_widths¢  sÈ   ø€ à×!Ò! $Ð(9Ñ:Ô:ˆBØ�!Œu˜ÒÐØ!�zÝ˜"˜Qœ%  " œ+×-Ò-¨e°RÑ8Ô8Ñ9Ô9ˆGØ×%Ò% g¨sÑ3Ô3ˆFØ�aŒy˜GÒ#Ð#Ø��à œ�Ø×&Ò& w°Ñ5Ô5ˆGØ�qŒz˜UÒ"Ð"Ø��à! !œ*�Ø˜7�?Ð"r*   c                óN  •— ‰                      | d¦  «        }|d         dk    rdS t          |d         dd…                              dd¦  «        ¦  «        }t          |¦  «        t          us|s8‰                      |d	¦  «        d         d
k    r‰                     |d	d
¦  «         n‰                     |d	|¦  «         t          |¦  «        t          us|s8‰                      |d¦  «        d         d
k    r‰                     |dd
¦  «         n‰                     |d|¦  «         dS )zÀRestore the old '/W' and '/DW' in subsetted font.

            If either parameter is None or evaluates to False, the corresponding
            dictionary key will be set to null.
            rì	  r   r	  Nr   r1  rl  r\   rî	  r¸  rï	  )rñ  r4   rà  rÈ   rÑ  rn  )r  rò	  ró	  rð	  rñ	  r*  s        €r)   Úset_old_widthsz-Document.subset_fonts.<locals>.set_old_widths´  sG  ø€ ð ×!Ò! $Ð(9Ñ:Ô:ˆBØ�!Œu˜ÒÐØ�tÝ˜"˜Qœ%  " œ+×-Ò-¨e°RÑ8Ô8Ñ9Ô9ˆGÝ�V‘”¥CÐ'Ð'¨vÐ'¸3×;KÒ;KÈGÐUXÑ;YÔ;YØô<àò<ð <ð × Ò  ¨#¨vÑ6Ô6Ð6Ð6à× Ò  ¨#¨vÑ6Ô6Ð6Ý�W‘”¥SÐ(Ð(°Ð(¸S×=MÒ=MØ˜ñ>ô >àô>àò>ð >ð × Ò  ¨$°Ñ7Ô7Ð7Ð7à× Ò  ¨$°Ñ8Ô8Ð8Ø�4r*   c                óê  •— ddl }ddl}d                     |                     t	          |j        ¦  «        d¬¦  «        ¦  «        dz   }‰
                     | d¬¦  «        }|                     d	d	|z   ¦  «        }‰
                     | d
¦  «        }|d         dk    rÂt          |d         dd…                              dd¦  «        ¦  «        }‰
                     |d¦  «        }|d         dk    rot          |d                              dd¦  «        ¦  «        }‰
                     |d¬¦  «        }	|	                     dd|z   ¦  «        }	‰
 
                    ||	¦  «         ‰
 
                    | |¦  «         dS )a'  Generate a name prefix to tag a font as subset.

            We use a random generator to select 6 upper case ASCII characters.
            The prefixed name must be put in the font xref as the "/BaseFont" value
            and in the FontDescriptor object as the '/FontName' value.
            r   Nr\   rô  )rŸ  rI	  Tr…  z
/BaseFont/rì	  r	  r   r1  rl  ÚFontDescriptorr  z
/FontName/)ÚrandomÚstringrÜ  Úchoicesrµ   Úascii_uppercaserˆ  rà  rñ  r4   r‰  )r{  rù	  rú	  rÊ	  Úfont_strrð	  rñ	  r   Úfd_xrefÚfd_strr*  s             €r)   Úset_subset_fontnamez2Document.subset_fonts.<locals>.set_subset_fontnameÌ  sg  ø€ ð ˆMˆMˆMØˆMˆMˆMØ—W’W˜VŸ^š^­E°&Ô2HÑ,IÔ,IÈQ˜^ÑOÔOÑPÔPÐSVÑVˆFØ—’ x¸D�ÑAÔAˆHØ×'Ò'¨°lÀVÑ6KÑLÔLˆHØ×!Ò! (Ð,=Ñ>Ô>ˆBØ�!Œu˜ÒÐÝ˜b œe A b Dœk×1Ò1°%¸Ñ<Ô<Ñ=Ô=�Ø×%Ò% gÐ/?Ñ@Ô@�Ø�a”5˜F’?�?Ý! " Q¤%§-¢-°°rÑ":Ô":Ñ;Ô;�GØ Ÿ_š_¨WÀ˜_ÑFÔF�FØ#Ÿ^š^¨L¸,ÈÑ:OÑPÔP�FØ×%Ò% g¨vÑ6Ô6Ð6Ø×Ò˜h¨Ñ1Ô1Ð1Ð1Ð1r*   c           	     ón  — 	 ddl m} n3# t          $ r& t          rt	          ¦   «          t          d¦  «         ‚ w xY wddl}|                     ¦   «         5 }|› d�}|› d�}|› d�}|dd|› �d	d
dddg}	t          j	        |› d�dd¬¦  «        5 }
d|v rZ|	 
                    d|› �¦  «         |                     d¦  «         t          |¦  «        }|D ]}|
                     |› d�¦  «         ŒnZ|	 
                    d|› �¦  «         |                     d¦  «         t          |¦  «        }|D ]}|
                     |d›d�¦  «         Œddd¦  «         n# 1 swxY w Y   t          j	        |d¦  «        5 }|                     | ¦  «         ddd¦  «         n# 1 swxY w Y   	 t          j        |¦  «         n# t           $ r Y nw xY w	 |                     |	¦  «         t%          |¬¦  «        }|j        }|j        dk    rd}n # t           $ r t	          ¦   «          d}Y nw xY wddd¦  «         n# 1 swxY w Y   |S )a"  Build font subset using fontTools.

            Args:
                buffer: (bytes) the font given as a binary buffer.
                unc_set: (set) required glyph ids.
            Returns:
                Either None if subsetting is unsuccessful or the subset font buffer.
            r   Nz/This method requires fontTools to be installed.z/oldfont.ttfz/newfont.ttfz/uncfile.txtz--retain-gidsz--output-file=z--layout-features=*z--passthrough-tablesz--ignore-missing-glyphsz--ignore-missing-unicodesz--symbol-cmapr   Úutf8)rë  éýÿ  z--gids-file=é½   r%   z--unicodes-file=éÿ   Ú04xÚwb)rS  )ÚfontTools.subsetÚsubsetÚImportErrorr
  rv   rr   ÚtempfileÚTemporaryDirectoryr9   r:   rk   r=  r´   r   rd   r6  rg   Úmainr2  ræ  Úglyph_count)ræ  Úunc_setÚgid_setÚftsr
  Útmp_dirÚoldfont_pathÚnewfont_pathÚuncfile_pathr÷  Úunc_fileÚunc_listÚuncrS  rW  Ú
new_buffers                   r)   Úbuild_subsetz+Document.subset_fonts.<locals>.build_subsetä  s�  € ðØ.Ð.Ð.Ð.Ð.Ð.Ð.øÝð ð ð Ý'Ð<­NÑ,<Ô,<Ð,<ÝÐIÑJÔJÐJØðøøøð ˆOˆOˆOØ×,Ò,Ñ.Ô.ð -&°'Ø")Ð7Ð7Ð7�Ø")Ð7Ð7Ð7�Ø")Ð7Ð7Ð7�à Ø#Ø3 \Ð3Ð3Ø)Ø*Ø-Ø/Ø#ð	�õ ”W Ð5Ð5Ð5°sÀVÐLÑLÔLð ;ÐPXØ Ð(Ð(ØŸšÐ$A°<Ð$AÐ$AÑBÔBÐBØŸš CÑ(Ô(Ð(Ý#'¨¡=¤=˜Ø#+ð 7ð 7˜CØ$ŸNšN¨c¨:¨:¨:Ñ6Ô6Ð6Ð6ð7ð ŸšÐ$E°|Ð$EÐ$EÑFÔFÐFØŸš CÑ(Ô(Ð(Ý#'¨¡=¤=˜Ø#+ð ;ð ;˜CØ$ŸNšN¨c¨>¨>¨>¨>Ñ:Ô:Ð:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;õ ”W˜\¨4Ñ0Ô0ð +°HØ—N’N 6Ñ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ðÝ”I˜lÑ+Ô+Ð+Ð+øÝ ð ð ð Ø�Dðøøøð&Ø—H’H˜T‘N”N�NÝ¨Ð6Ñ6Ô6�DØ!%¤�JØÔ'¨1Ò,Ð,Ø%)˜
øøÝ ð &ð &ð &Ý"Ñ$Ô$Ð$Ø!%�J�J�Jð&øøøðW-&ð -&ð -&ñ -&ô -&ð -&ð -&ð -&ð -&ð -&ð -&øøøð -&ð -&ð -&ð -&ð\ Ðs«   ‚	 ‰09Á7H*ÂB9EÅH*ÅE	ÅH*ÅE	ÅH*Å0FÆH*ÆF	ÆH*ÆF	ÆH*ÆF3Æ2H*Æ3
G Æ=H*Æ?G Ç H*Ç9G>Ç=H*Ç>HÈH*ÈHÈH*È*H.È1H.c           
     ó²  •‡— d„ Šˆfd„}t          | j        ¦  «        D �]6}|                      |d¬¦  «        D �]}|d         }|d         }|d         }|dvrŒ t          |¦  «        d	k    r|d	         d
k    rŒ@|                      |¦  «        }|d         } || |¦  «        }	‰                     |t          ¦   «         t          ¦   «         t          ¦   «         t          ¦   «         ff¦  «        \  }
}}|                     |¦  «         |	D ]}|
                     |¦  «         Œt          |¬¦  «        }|
                     |j	        ¦  «         ~|
||f‰|<   �Œ�Œ8dS )z·Populate 'font_buffers'.

            For each font candidate, store its xref and the list of names
            by which PDF text may refer to it (there may be multiple).
            c                óØ   — d| v re|                       d¦  «        }t          | |dz   |dz   …         d¦  «        }|                      | ||dz   …         t          |¦  «        ¦  «        } d| v °e| S )zlRecreate font name that contains PDF hex codes.

                E.g. #20 -> space, chr(32)
                ú#r   r   é   )r¡   r4   rà  Úchr)r   r¢  r¼  s      r)   Ú	norm_namez@Document.subset_fonts.<locals>.repl_fontnames.<locals>.norm_name+  ss   € ð
 ˜T�k�kØŸ	š	 #™œ�AÝ˜D  Q¡¨¨Q© Ô/°Ñ4Ô4�AØŸ<š<¨¨Q°°Q±¨Y¬½¸Q¹¼Ñ@Ô@�Dð ˜T�k�kð �r*   c                óú  •— |d         }|g}|                       |d         d¦  «        d         dd…         } ‰|¦  «        }||vr|                     |¦  «         |                       |d         d¦  «        }|d         dk    r|S |d         dd…         }|                     d	¦  «        r.t          |dd
…         ¦  «        }|                      |d¬¦  «        }|                     d¦  «        }|dk    rˆ|                     d|dz   ¦  «        }t          |                     d|dz   ¦  «        |                     d|dz   ¦  «        ¦  «        }||dz   |…         } ‰|¦  «        }||vr|                     |¦  «         |S )z�Return a list of fontnames for an item of page.get_fonts().

                There may be multiple names e.g. for Type0 fonts.
                r   r   rû  r   Nrì	  r	  r1  ry  éüÿÿÿTr…  z	/BaseFontrW  rR  )rñ  rk   rß  r4   rˆ  r¡   rÜ  )	r*  rC   rù   r³  Údescendentsr  r  r  r 
  s	           €r)   Úget_fontnameszDDocument.subset_fonts.<locals>.repl_fontnames.<locals>.get_fontnames6  sœ  ø€ ð
   œ7�Ø!˜
�Ø×+Ò+¨D°¬G°ZÑ@Ô@ÀÔCÀAÀBÀBÔG�Ø$˜9 XÑ.Ô.�Ø 5Ð(Ð(Ø—L’L Ñ*Ô*Ð*Ø!×.Ò.¨t°A¬wÐ8IÑJÔJ�Ø˜q”> WÒ,Ð,Ø �LØ)¨!œn¨Q¨r¨TÔ2�Ø×'Ò'¨Ñ/Ô/ð IÝ˜{¨3¨B¨3Ô/Ñ0Ô0�DØ"%§/¢/°$À4 /Ñ"HÔ"H�KØ ×%Ò% kÑ2Ô2�Ø˜’7�7Ø$×)Ò)¨#¨r°A©vÑ6Ô6�BÝ˜[×-Ò-¨c°2¸±6Ñ:Ô:¸K×<LÒ<LÈTÐSUÐXYÑSYÑ<ZÔ<ZÑ[Ô[�BØ*¨2°©6°B¨;Ô7�HØ(˜y¨Ñ2Ô2�HØ uÐ,Ð,ØŸš XÑ.Ô.Ð.Ø�r*   T©r…  r   r   r   )ÚotfÚttfÚwoffÚwoff2rô  rI	  r1  ©rT  N)
rL  rÐ  rŒ  r7   r  r8   rØ  r=  r2  r   )r*  r$
  r®   rÎ  Ú	font_xrefÚfont_extrÝ  ÚextrrT  r³  Úname_setÚxref_setÚsubsetsr   rW  r 
  Úfont_bufferss                  @€r)   Úrepl_fontnamesz-Document.subset_fonts.<locals>.repl_fontnames$  s¯  øø€ ð	ð 	ð 	ðð ð ð ð õ8 ˜3œ>Ñ*Ô*ð Mñ M�Ø×+Ò+¨A°DÐ+Ñ9Ô9ð Mñ M�AØ ! !¤�IØ  œt�HØ  œt�Hàð (ð ð ð !å˜8‘}”} qÒ(Ð(¨X°a¬[¸CÒ-?Ð-?Ø à×+Ò+¨IÑ6Ô6�DØ!% b¤�JØ)˜M¨#¨qÑ1Ô1�EØ2>×2BÒ2BØ"¥S¡U¤U­C©E¬EµC±E´E½3¹5¼5°>Ð$Bñ3ô 3Ñ/�H˜h¨ð —L’L Ñ+Ô+Ð+Ø %ð +ð +˜Ø Ÿš TÑ*Ô*Ð*Ð*Ý¨:Ð6Ñ6Ô6�DØ—L’L ¤Ñ+Ô+Ð+ØØ08¸(ÀGÐ/L�L Ñ,Ñ,ñ9MðMð Mr*   c                óT   •— ‰                      ¦   «         D ]\  }\  }}}| |v r|c S Œd S r,   )rB   )r   ræ  r.
  r  r1
  s       €r)   Úfind_buffer_by_namez2Document.subset_fonts.<locals>.find_buffer_by_nameq  sH   ø€ Ø,8×,>Ò,>Ñ,@Ô,@ð "ð "Ñ(�Ñ(˜ 1 aØ˜8Ð#Ð#Ø!�M�M�Mð $à�4r*   zNo fonts to subset.r   rW  é!   Úcharsr   zCannot subset r   zBuilt subset of font r*
  Tr…  )r�   rº  Úpdf_subset_fonts2r´   rL  rÐ  rr   rË  r7   Úget_texttracerÈ   r5   r=  rB   rU  rˆ  r‰  ) r*  rè	  ré	  rZ  rô	  rö	  r 
  r
  r2
  r4
  Úold_fontsizeÚnew_fontsizerT  rÖ   rç  rù   ræ  r.
  r/
  Úset_ucsÚset_gidr¼  Ú
old_bufferr0
  r
  r  r{  rý	  r+
  Úwidth_tableÚ	def_widthr1
  s    `                              @r)   Úsubset_fontszDocument.subset_fonts  sÁ  øø€ ð8 ð 	ÝÔ5°cÑ:Ô:ˆCÝÔ# C­­e°C´NÑ.CÔ.CÑ)DÔ)DÑEÔEÐEØˆFàˆð	#ð 	#ð 	#ð 	#ð 	#ð$	ð 	ð 	ð 	ð 	ð0	2ð 	2ð 	2ð 	2ð 	2ð0>	ð >	ð >	ð@K	Mð K	Mð K	Mð K	Mð K	MðZ	ð 	ð 	ð 	ð 	ð 	ˆ�sÑÔÐØð 	Øð 0ÝÐ.Ñ/Ô/Ð/Ø�1àˆØˆØ&×+Ò+Ñ-Ô-ð 	,ð 	,ˆJØ�C 
™OœOÑ+ˆLˆLð ð 	Pð 	PˆDð ×*Ò*Ñ,Ô,ð Pð P�Ý˜‘:”:¥TÐ)Ð)ØØ œ<¨¨¨Ô,�Ø,Ð,¨XÑ6Ô6�Ø�>ØØ9EÀfÔ9MÑ6�˜(Ñ$6 W¨gØ˜gœð &ð &�AØ—K’K  !¤Ñ%Ô%Ð%Ø—K’K  !¤Ñ%Ô%Ð%Ð%Ø(0°(¸WÀgÐ<NÐ'O�˜VÑ$Ð$ðPð :F×9KÒ9KÑ9MÔ9Mð 	,ñ 	,Ñ5ˆJÑ5˜ 8¨WØ%˜ j°'¸!´*¸gÀa¼jÑIÔIˆJÝ˜H‘~”~ aÔ(ˆHØÐ!¥S¨¡_¤_½¸J¹¼Ò%GÐ%Gàð <ÝÐ:¨XÐ:Ð:Ð:Ñ;Ô;Ð;ØØð ?ÝÐ=°Ð=Ð=Ð=Ñ>Ô>Ð>Ø×"Ò"¨jÐ"Ñ9Ô9ˆCØ˜1”vˆHØÐ Ñ)Ô)Ð)Ø—’ØØð 'ñ ô ˆHð
 &ð Fð F�	à)7¨¸	Ñ)BÔ)BÑ&�˜Yà×!Ò! )¨XÑ6Ô6Ð6àð F )ð FØ"�N 9¨k¸9ÑEÔEÐEøð �C 
™OœOÑ+ˆL‰Là˜lÑ*Ð*r*   c                óè  — t          | ¦  «        }t          j        t          j        |¦  «        t	          d¦  «        t	          d¦  «        t	          d¦  «        ¦  «        }t          j        |¦  «        rt          j        |¦  «        s|dk     rdS t          t          ¦  «        ‚|dk     rdS t          j	        ||¦  «         |r/t          j
        |¦  «         t          j        |j        ¦  «         dS dS )zActivate an OC layer.r/  rZ  r£  r   Nr   )rÎ   r�   r  r3  r  rŽ  r›  rÃ   ÚMSG_BAD_OC_LAYERÚpdf_select_layer_configÚpdf_set_layer_config_as_defaultr”  rÌ   )r(   r©  Ú
as_defaultrZ  Úcfgss        r)   Úswitch_layerzDocument.switch_layer·  sñ   € å˜tÑ$Ô$ˆÝÔ"ÝÔ! 3Ñ'Ô'Ý˜Ñ Ô Ý˜Ñ(Ô(Ý˜Ñ#Ô#ñ	ô ˆõ Ô! 4Ñ(Ô(ð 	0µÔ0CÀTÑ0JÔ0Jð 	0Ø˜ŠzˆzØ�ÝÕ.Ñ/Ô/Ð/Ø�AŠ:ˆ:ØˆFÝÔ% s¨FÑ3Ô3Ð3Øð 	3ÝÔ1°3Ñ7Ô7Ð7ÝÔ! 3¤>Ñ2Ô2Ð2Ð2Ð2ð	3ð 	3r*   c                ó‚  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «        }t          |d|dz
  ¦  «        st          dt          ¦  «         t          |¦  «         t          ||¦  «        }t	          j        |||¦  «         |rt          t          |¦  «        ¦  «         dS dS )z!Replace object definition source.r-  r   ru  N)rÂ   r   rÃ   rÎ   r�   r‡  r   r°  rˆ  rd  r5  r2  ÚJM_refresh_linksrÚ   )r(   r  r   rÖ   rZ  Úxreflenr¡  s          r)   r‰  zDocument.update_objectË  sÊ   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ$ SÑ)Ô)ˆÝ˜˜a ¨¡Ñ+Ô+ð 	.Ý�J¥Ñ-Ô-Ð-Ý˜ÑÔÐå% c¨4Ñ0Ô0ˆÝÔ  T¨7Ñ3Ô3Ð3Øð 	2Ý�l¨4Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1ð	2ð 	2r*   c                óÈ  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «        }|dk     s||k    rt          t          ¦  «        ‚t	          j        ||d¦  «        }t	          j        |¦  «        st          t          ¦  «        ‚t          |¦  «        }|j        st          t          ¦  «        ‚t          ||||¦  «         d|_        dS )zReplace xref stream part.r-  r   r   N)rÂ   r   rÃ   rÎ   r�   r‡  rˆ  r‰  rz  ÚMSG_IS_NO_DICTr'  rÌ   r®  r(  r)  Údirty)	r(   r  r	   r   ÚcompressrZ  rJ
  r  r  s	            r)   rf	  zDocument.update_streamÚ  sÚ   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ$ SÑ)Ô)ˆØ�!Š8ˆ8�t˜g’~�~Ý�lÑ+Ô+Ð+åÔ$ S¨$°Ñ2Ô2ˆÝÔ  Ñ%Ô%ð 	.Ý�nÑ-Ô-Ð-Ý  Ñ(Ô(ˆØŒ~ð 	-Ý�^Ñ,Ô,Ð,Ý˜˜c 3¨Ñ1Ô1Ð1ØˆŒ	ˆ	ˆ	r*   c                ó^   — t          | d¬¦  «        }|j        rt          j        |¦  «        S dS )z1
        Count versions of PDF document.
        r   r.  )rÎ   rÌ   r�   Úpdf_count_versionsr»  s     r)   Úversion_countzDocument.version_countì  s6   € õ
 ˜t¨aÐ0Ñ0Ô0ˆØŒ>ð 	1ÝÔ+¨CÑ0Ô0Ð0Øˆqr*   c                ó    — ddl m}  |¦   «         }|                      ||||
||||||||	||||||||||¬¦  «         |                     ¦   «         S )Nr   ©r^  )r  r  r#  r/	  r  r  r  r  rŒ  r  r  r  r  r   r!  r"  r$  r%  r&  r'  r(  )r9   r^  r)  rv  )r(   r  r  r  r  r  r  rŒ  r  r  r#  r/	  r  r  r   r!  r"  r$  r%  r&  r'  r(  r^  Úbios                           r)   r   zDocument.writeö  sŽ   € ð0 	ÐÐÐÐÐØˆg‰iŒiˆØ�	Š	ØØØØ#Ø%ØØ-Ø+Ø'ØØØØØ%Ø'Ø!ØØ"3Ø'Ø#5Ø /Ø)ð- 	ñ 	
ô 	
ð 	
ð0 �|Š|‰~Œ~Ðr*   c                ó   —  | j         |i |¤ŽS r,   )r   rö  s      r)   rÏ  zDocument.tobytes*  s   € ØˆtŒz˜4Ð* 6Ð*Ð*Ð*r*   c                ó^   — t          | ¦  «         | j                             | j        ¦  «        S ©zPDF xref number of page.©rf  rê   rq  r^  r.   s    r)   r  zDocument.xref-  ó*   € õ 	�DÑÔÐØŒ{×$Ò$ T¤[Ñ1Ô1Ð1r*   )ÚkeepÚsourceÚtargetrZ
  c               ó’  — |                       |¦  «        r.|                      |¦  «        }|                      ||dd¬¦  «         |€g }|                      |¦  «        D ]}||v rŒ|                      ||d¦  «         Œ|                      |¦  «        D ]5}|                      ||¦  «        }|                      |||d         ¦  «         Œ6dS )aö  Copy a PDF dictionary object to another one given their xref numbers.

        Args:
            doc: PDF document object
            source: source xref number
            target: target xref number, the xref must already exist
            keep: an optional list of 1st level keys in target that should not be
                  removed before copying.
        Notes:
            This works similar to the copy() method of dictionaries in Python. The
            source may be a stream object.
        FT)rN
  r   Nr¸  r   )Úxref_is_streamÚxref_stream_rawrf	  r£	  rn  rñ  )r*  r[
  r\
  rZ
  r	   r  rC   s          r)   Ú	xref_copyzDocument.xref_copy3  s  € ð ×Ò˜fÑ%Ô%ð 	à×(Ò(¨Ñ0Ô0ˆFØ×ÒØØØØð	 ñ ô ð ð ˆ<ØˆDØ×$Ò$ VÑ,Ô,ð 	2ð 	2ˆCØ�dˆ{ˆ{ØØ×Ò˜V S¨&Ñ1Ô1Ð1Ð1à×$Ò$ VÑ,Ô,ð 	3ð 	3ˆCØ×#Ò# F¨CÑ0Ô0ˆDØ×Ò˜V S¨$¨q¬'Ñ2Ô2Ð2Ð2ð	3ð 	3r*   c                óJ  — t          | ¦  «        }t          j        |¦  «        }t          |d|dz
  ¦  «        s|dk    rt	          t
          ¦  «        ‚|dk    rt          j        ||¦  «        }nt          j        |¦  «        }|j        sdS t          j	        ||¦  «        }|j        sdS d}t          j
        |¦  «        rd}t          j        |¦  «        d›d�}�n$t          j        |¦  «        rd	}�nt          j        |¦  «        rd
}nõt          j        |¦  «        rd}t          j        |¦  «        d›}nÈt          j        |¦  «        rd}n±t          j        |¦  «        rd}d}n˜t          j        |¦  «        rd}t          j        |¦  «        rd}nkd}nht          j        |¦  «        rd}dt          j        |¦  «        › �}n:t          j        |¦  «        r$d}t/          t          j        |¦  «        ¦  «        }nd}|€ t3          |dd¦  «        }	t5          |	¦  «        }||fS )z+Get PDF dict key value of object at 'xref'.r   r1  r   )r¸  r¸  Nr  r
  ry  r	  r5   r4   ro  r¸  rç   rX  rŽ	  r   rW  rú	  Úunknown)rÎ   r�   r‡  r   rÃ   rˆ  r�  r3  rÌ   r»  r 	  r  rŽ  rz  Ú
pdf_is_intr  Úpdf_is_realrþ  r`  ra  r»  ry  Úpdf_is_stringr  r  ÚJM_object_to_bufferrº  )
r(   r  r  rZ  rJ
  r  Úsubobjr   rÈ   r  s
             r)   rñ  zDocument.xref_get_keyV  sT  € å˜tÑ$Ô$ˆÝÔ$ SÑ)Ô)ˆÝ˜˜a ¨¡Ñ+Ô+ð 	,°¸²
°
Ý�lÑ+Ô+Ð+Ø�!Š8ˆ8ÝÔ'¨¨TÑ2Ô2ˆCˆCåÔ# CÑ(Ô(ˆCØŒ~ð 	$Ø#Ð#ÝÔ$ S¨#Ñ.Ô.ˆØÔ ð 	$Ø#Ð#ØˆÝÔ  Ñ(Ô(ð 	ØˆDÝÔ& vÑ.Ô.Ð6Ð6Ð6Ð6ˆD‰DÝÔ Ñ'Ô'ð 	ØˆD‰DÝÔ˜vÑ&Ô&ð 	ØˆDˆDÝÔ˜fÑ%Ô%ð 	ØˆDÝÔ& vÑ.Ô.Ð2Ð2ˆDˆDÝÔ˜vÑ&Ô&ð 	ØˆDˆDÝÔ˜vÑ&Ô&ð 	ØˆDØˆDˆDÝÔ˜vÑ&Ô&ð 	ØˆDÝÔ  Ñ(Ô(ð Ø��à��ÝÔ˜vÑ&Ô&ð 	ØˆDØ2•uÔ(¨Ñ0Ô0Ð2Ð2ˆDˆDÝÔ  Ñ(Ô(ð 	ØˆDÝ$¥UÔ%=¸fÑ%EÔ%EÑFÔFˆDˆDàˆDØˆ<Ý% f¨a°Ñ3Ô3ˆCÝ'¨Ñ,Ô,ˆDØ�dˆ|Ðr*   c                óà  — t          | ¦  «        }t          j        |¦  «        }t          |d|dz
  ¦  «        s|dk    rt	          t
          ¦  «        ‚|dk    rt          j        ||¦  «        }nt          j        |¦  «        }t          j        |¦  «        }g }|dk    r|S t          |¦  «        D ]>}t          j
        t          j        ||¦  «        ¦  «        }|                     |¦  «         Œ?|S )zFGet the keys of PDF dict object at 'xref'. Use -1 for the PDF trailer.r   r1  r   )rÎ   r�   r‡  r   rÃ   rˆ  r�  r3  r{  rL  ry  r}  rk   )	r(   r  rZ  rJ
  r  rE   r    r®   r  s	            r)   r£	  zDocument.xref_get_keysˆ  så   € å˜tÑ$Ô$ˆÝÔ$ cÑ*Ô*ˆÝ˜˜a ¨¡Ñ+Ô+ð 	,°¸²
°
Ý�lÑ+Ô+Ð+Ø�!Š8ˆ8ÝÔ'¨¨dÑ3Ô3ˆCˆCåÔ# SÑ)Ô)ˆCÝÔ Ñ$Ô$ˆØˆØ�Š6ˆ6ØˆIÝ�q‘”ð 	ð 	ˆAÝÔ#¥UÔ%;¸SÀ!Ñ%DÔ%DÑEÔEˆCØ�IŠI�c‰NŒNˆNˆNØˆ	r*   c                ó„   — | j         s| j        rt          d¦  «        ‚|                      |d¦  «        d         dk    rdS dS )zCheck if xref is a font object.r-  r6  r   z/FontTF©rÂ   r   rÃ   rñ  ©r(   r  s     r)   Úxref_is_fontzDocument.xref_is_font›  sO   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ø×Ò˜T 6Ñ*Ô*¨1Ô-°Ò8Ð8Ø�4Øˆur*   c                ó„   — | j         s| j        rt          d¦  «        ‚|                      |d¦  «        d         dk    rdS dS )z!Check if xref is an image object.r-  r†  r   ri  TFrj
  rk
  s     r)   Úxref_is_imagezDocument.xref_is_image£  sO   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ø×Ò˜T 9Ñ-Ô-¨aÔ0°HÒ<Ð<Ø�4Øˆur*   c                óz   — t          | d¬¦  «        }|j        sdS t          t          j        ||¦  «        ¦  «        S )z!Check if xref is a stream object.r   r.  F)rÎ   rÌ   rç   r�   Úpdf_obj_num_is_streamrO  s      r)   r^
  zDocument.xref_is_stream«  s>   € å˜t¨aÐ0Ñ0Ô0ˆØŒ~ð 	Ø�5Ý•EÔ/°°TÑ:Ô:Ñ;Ô;Ð;r*   c                ó„   — | j         s| j        rt          d¦  «        ‚|                      |d¦  «        d         dk    rdS dS )z Check if xref is a form xobject.r-  r†  r   rj  TFrj
  rk
  s     r)   Úxref_is_xobjectzDocument.xref_is_xobject²  sO   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ø×Ò˜T 9Ñ-Ô-¨aÔ0°GÒ;Ð;Ø�4Øˆur*   c                ób   — d}t          | d¬¦  «        }|j        rt          j        |¦  «        }|S )zGet length of xref table.r   r.  )rÎ   rÌ   r�   r‡  )r(   rJ
  rZ  s      r)   r|  zDocument.xref_lengthº  s8   € àˆÝ˜t¨aÐ0Ñ0Ô0ˆØŒ>ð 	.ÝÔ(¨Ñ-Ô-ˆGØˆr*   c                óâ  — | j         rt          d¦  «        ‚t          rt          j        | j        |||¦  «        }|S t          | ¦  «        }t          j        |¦  «        }t          |d|dz
  ¦  «        s|dk    rt          t          ¦  «        ‚|dk    rt          j        ||¦  «        }nt          j        |¦  «        }t          t          j        |¦  «        ||¦  «        }t          |¦  «        }	|	S )z#Get xref object source as a string.r¾   r   r1  r   )rÂ   rÃ   r  r   rˆ  rÄ   rÎ   r�   r‡  r   rˆ  r�  r3  rf
  r-  ÚJM_EscapeStrFromBuffer)
r(   r  r†  rŒ  rG   rZ  rJ
  r  r  r   s
             r)   rˆ  zDocument.xref_objectÂ  sæ   € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/Ýð 	ÝÔ# T¤Y°°jÀ%ÑHÔHˆCØˆJÝ˜tÑ$Ô$ˆÝÔ$ SÑ)Ô)ˆÝ˜˜a ¨¡Ñ+Ô+ð 	,°¸²
°
Ý�lÑ+Ô+Ð+Ø�!Š8ˆ8ÝÔ'¨¨TÑ2Ô2ˆCˆCåÔ# CÑ(Ô(ˆCÝ!¥%Ô"<¸SÑ"AÔ"AÀ:ÈuÑUÔUˆÝ% cÑ*Ô*ˆØˆr*   c           	     óÒ  — | j         rt          d¦  «        ‚|r@t          |t          ¦  «        r+t                               |¦  «        t          ¦   «         dhfvrt          d¦  «        ‚t          |t          ¦  «        r@|r>|d         dk    rAt                               |dd…         ¦  «        t          ¦   «         k    rt          d¦  «        ‚t          | ¦  «        }t          j	        |¦  «        }t          |d|dz
  ¦  «        s|dk    rt          t          ¦  «        ‚|dk    rt          j        ||¦  «        }nt          j        |¦  «        }t          |||¦  «        }|j        sdS |dk    rt          j        |||¦  «         dS t          j        |¦  «        }t%          |¦  «        D ]>}	t          j        |t          j        ||	¦  «        t          j        ||	¦  «        ¦  «         Œ?dS )	z&Set the value of a PDF dictionary key.r¾   rW  z	bad 'key'r   r   Nzbad 'value'r1  )rÂ   rÃ   r>   rÑ  ÚINVALID_NAME_CHARSÚintersectionrØ  rÎ   r�   r‡  r   rˆ  r�  r3  ÚJM_set_object_valuerÌ   r2  r{  rL  rN  r}  r|  )
r(   r  r  r¸   rZ  rJ
  r  r¡  rE   r®   s
             r)   rn  zDocument.xref_set_keyÕ  s÷  € àŒ>ð 	0ÝÐ.Ñ/Ô/Ð/àð 	*�* S­#Ñ.Ô.ð 	*Õ2D×2QÒ2QÐRUÑ2VÔ2VÕ_bÑ_dÔ_dÐgjÐfkÐ^lÐ2lÐ2lÝ˜[Ñ)Ô)Ð)Ý˜%¥Ñ%Ô%ð 	,¨Uð 	,°e¸A´hÀ#²o°oÕJ\×JiÒJiÐjoÐpqÐprÐprÔjsÑJtÔJtÕx{Ñx}Ôx}ÒJ}ÐJ}Ý˜]Ñ+Ô+Ð+å˜tÑ$Ô$ˆÝÔ$ SÑ)Ô)ˆõ ˜˜a ¨¡Ñ+Ô+ð 	,°¸²
°
Ý�lÑ+Ô+Ð+Ø�2Š:ˆ:ÝÔ'¨¨TÑ2Ô2ˆCˆCåÔ# CÑ(Ô(ˆCÝ% c¨3°Ñ6Ô6ˆØÔ!ð 	ØˆFØ�2Š:ˆ:ÝÔ# C¨¨wÑ7Ô7Ð7Ð7Ð7åÔ" 7Ñ+Ô+ˆAÝ˜1‘X”Xð ð �ÝÔ"ØÝÔ.¨w¸Ñ:Ô:ÝÔ.¨w¸Ñ:Ô:ñô ð ð ðð r*   c                ó¸  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «        }t          |d|dz
  ¦  «        s|dk    rt          t          ¦  «        ‚|dk    rt	          j        ||d¦  «        }nt	          j	        |¦  «        }d}t	          j
        |¦  «        r$t	          j        ||¦  «        }t          |¦  «        }|S )zGet decompressed xref stream.r-  r   r1  r   N)rÂ   r   rÃ   rÎ   r�   r‡  r   rˆ  r‰  r3  r  Úpdf_load_stream_numberr  ©r(   r  rZ  rJ
  r  r  r  s          r)   Úxref_streamzDocument.xref_streamû  sÛ   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ$ cÑ*Ô*ˆÝ˜˜a ¨¡Ñ+Ô+ð 	,°¸²
°
Ý�lÑ+Ô+Ð+Ø�1Š9ˆ9ÝÔ(¨#¨t°QÑ7Ô7ˆCˆCåÔ# SÑ)Ô)ˆCØˆÝÔ Ñ$Ô$ð 	'ÝÔ.°°TÑ:Ô:ˆCÝ  #Ñ&Ô&ˆAØˆr*   c                ó¸  — | j         s| j        rt          d¦  «        ‚t          | ¦  «        }t	          j        |¦  «        }t          |d|dz
  ¦  «        s|dk    rt          t          ¦  «        ‚|dk    rt	          j        ||d¦  «        }nt	          j	        |¦  «        }d}t	          j
        |¦  «        r$t	          j        ||¦  «        }t          |¦  «        }|S )z&Get xref stream without decompression.r-  r   r1  r   N)rÂ   r   rÃ   rÎ   r�   r‡  r   rˆ  r‰  r3  r  Úpdf_load_raw_stream_numberr  r|
  s          r)   r_
  zDocument.xref_stream_raw   sÛ   € àŒ>ð 	=˜TÔ.ð 	=ÝÐ;Ñ<Ô<Ð<Ý˜tÑ$Ô$ˆÝÔ$ cÑ*Ô*ˆÝ˜˜a ¨¡Ñ+Ô+ð 	,°¸²
°
Ý�lÑ+Ô+Ð+Ø�1Š9ˆ9ÝÔ(¨#¨t°QÑ7Ô7ˆCˆCåÔ# SÑ)Ô)ˆCØˆÝÔ Ñ$Ô$ð 	'ÝÔ2°C¸Ñ>Ô>ˆCÝ  #Ñ&Ô&ˆAØˆr*   c                óL  — t          | ¦  «        }t          j        t          j        |¦  «        t	          d¦  «        ¦  «        }|j        st          t          t          ¦  «         t          j        |t	          d¦  «        ¦  «        }d}|j        rt          j	        |¦  «        }|S )z"Get xref of document XML metadata.r/  rÔ  r   )
rÎ   r�   r  r3  r  rÌ   r°  ræ	  r±  r  )r(   rZ  r;  r»  r  s        r)   Úxref_xml_metadatazDocument.xref_xml_metadata   s�   € å˜tÑ$Ô$ˆÝÔ!¥5Ô#4°cÑ#:Ô#:½HÀVÑ<LÔ<LÑMÔMˆØŒð 	<Ý•_Õ&:Ñ;Ô;Ð;ÝÔ  $­°Ñ(<Ô(<Ñ=Ô=ˆØˆØŒ>ð 	*ÝÔ# SÑ)Ô)ˆDØˆr*   )rÄ   r!  r  Ú__dict__c                ó   — | j         S r,   )rÇ  r.   s    r)   r­	  zDocument.<lambda>-   s   €  D¤M€ r*   )rÎ  rç   )rÎ  r×  )r®   r4   rÎ  rÒ   )r®   rÞ  rÎ  rë  )r®   rî  rÎ  rÒ   )NNNNr   r   rú  N©rÎ  r4   ©rÎ  rÑ  )r8  r4   rÎ  r×  )r1  r1  r1  )rQ  rR  rS  rR  rT  r4   rU  r4   rV  r4   rÎ  r×  )r1  r1  r1  r   )rk  rR  rÖ  rR  rT  r4   rU  r4   rV  r4   rÎ  r×  )rC   rî  rÎ  r4   r3  r5  ©rÖ   rÒ   )r  r4   r  rÑ  r  rÑ  r  r4   r  r4   r8  r4   rí	  )r1  rm  rn  ©NNr   NN)r1  r   NN)rŸ  rç   r½  rç   rÎ  r×  )r   r1  r   )r1  )rÕ  r4   r\  r4   )rÕ  r4   )r   rÑ  r-  rà  rf   r¾  r  r¾  r¹  r¾  rÎ  r×  )rC   rî  )rC   rî  rÎ  r  )rC   rî  rÎ  r5   ©rÎ  r´   )rC   rî  r-  rö  rf   r¾  r  r¾  r¹  r¾  rÎ  r×  )r   r   N)r   FTTTFFFFFr   r  NNTr   r   r   FF)r  r   N)r*  rR  r  r4   r  r4   r8  r4   r:  r;  rÎ  r´   )r*  rR  r  r4   rÎ  r4   )r*  rR  r  r4   rÎ  r5   rÆ  )rÕ  r4   r…  rç   rÎ  r´   )r*  rR  rÕ  r4   rÙ  r¹   rÛ  r”  r  r¼   rÜ  rç   rŸ  rç   rÎ  rœ  )r   NNNF)r*  rR  rÕ  r4   r   rÑ  r  r¼   r¾  r¡  r¢  r£  rÙ  rç   rÎ  r¤  )rÕ  r4   rÎ  r´   r�  )r*  rR  r?  rç   rÎ  r´   )r*  rR  rÎ  rç   )r1  r1  r1  r1  TTr   r   )Nrú  rm  rn  rÔ  Nr1  )r*  rR  rÕ  r4   r   rÕ  rú   ro  r]  ro  rÕ  ro  rù   rÑ  rS  r¾  r  rÀ  rÎ  r4   r,   )Nr   r   rú  )r;  rÑ  rk   rç   ©rÎ  r5   )
r*  rR  rÕ  r4   r]  ro  rÕ  ro  rÎ  rÒ   )r•  r¡  rß  r¡  rà  r¡  rÎ  rŠ  rÐ  )rÖ   rÒ   rÎ  rÒ   r‡   )
Nr   r   TTTTTFNr2  )r   r   r   r   r   r   r   r   r   r   r   r   r   r  NNr   r   r   FF)TTTTTTTr   TTTTT)r*  rR  r8	  rç   r9	  rç   r:	  rç   r;	  rç   r<	  rç   r  rç   r=	  rç   r>	  r4   r?	  rç   r@	  rç   rA	  rç   rB	  rç   rC	  rç   rÎ  r×  )FNNN)r*  rR  rÕ  r4   r   rÑ  rk	  rç   r  r¼   r¾  r4   r¢  r£  rÎ  r´   )NNNNN)rZ  r5   rÎ  rç   )r*  rR  r€  r5   rÎ  r×  )r*  rR  r  r4   rÅ  r4   rÎ  r×  )r   NNN)r*  rR  r  r4   rp  r¤	  rz  r¾  r{  r¤	  rÎ  r4   )r…  rÑ  )r‰  rÑ  )r*  rR  rß  r´   r	  r4   rÎ  r4   )NNNNNNNr   )r*  rR  r8  r4   r		  r;  rZ  r¡  rÕ  r¡  ra  r¾  ry  r¾  r\  rº   rf   r¾  r]  ro  rÎ  r×  ©FF)r*  rR  rè	  rç   ré	  rç   rÎ  r¡  )r   Nr   r   )FFFFFFFFFFFFr   r  NNr   r   r   FF)
r*  rR  r[
  r4   r\
  r4   rZ
  r´   rÎ  r×  )¿r/   r0   r1   rÖ  râ  rŠ  r�  ÚtypingÚoverloadra  ÚsysÚversion_inforŒ   r)  rí   r7  r<  rH  rM  rP  rƒ  ræ  rí  rò  r÷  rù  r  r  r  r  r  r)  r1  r4  r8  r@  rO  rU  rY  r[  rl  rp  r|  r;  r`  r‹  r�  r6  r‘  r—  r´  r¸  r¼  rÀ  rÑ  rÒ  ræ  r  rÒ  rÕ  rÜ  rÝ  rç  ré  rì  rî  rô  rð  rø  r  r  r*  r.  r9  rX  r\  rb  re  rÆ  rs  rƒ  r:  rŒ  r�  r”  rš  rŸ  r¦  r¨  r­  rÛ  r¼  rÁ  rÃ  r  rÓ  rÙ  rÐ  rë  rî  rÇ  rÛ  r÷  rú  r   r  r  r  r  r  r  r  r"  r%  r(  r+  r.  r8  r:  r>  rù  rI  rN  rZ  r\  r   rh  r  rØ  rs  r¾  rÐ  rz  r~  rq  r…  r‰  rƒ  r‡  r3  r   r�  r¥  r¨  r±  rÚ  rÌ  r	  r)  r4	  r7	  rj	  rr	  rx	  r’  r„	  r‹	  r’	  rb	  rœ  r·	  r¿	  rÆ	  rÒ	  rà	  rã	  rç	  r@
  rG
  r‰  rf	  rQ
  r   rÏ  r  r`
  rñ  r£	  rl
  rn
  r^
  rr
  r|  rˆ  rn  r}
  r_
  r�
  Ú	__slots__r¸  Ú	is_streamr-   r*   r)   rÁ   rÁ   	  s$  € € € € € ñð ð ð ñ,;ð ;ð ;ð ;ð.ð ð ðð ð ð „_ðñ ð ð ñ „_ðð Ô˜6Ò!Ð!Ø	Œñ	ð 	ð 	ñ 
Œð	ð 
Œñ	ð 	ð 	ñ 
Œð	ð!ð !ð !ð !ñ[<ð [<ð [<ð [<ñzð ð ð ñXð Xð Xð Xð)ð )ð )ñ($ð $ð $ð $ðð ð ð@9ð 9ð 9ð+ð +ð +ð  ØØñC@ñ C@ð C@ð C@ð C@ðT  ØØØñDPñ DPð DPð DPð DPðL
ð ð ñð ð ð ñð ð ð ð>
+ð 
+ð 
+ð-ð -ð -ð^%ð %ð %ñ("ð "ð "ð "ðHDð Dð DñL%ð %ð %ð %ðñ ð ð ð ð<ð ð ð@ð ð ð)ð )ð )ð"ð ð ð ð ð ñ(ð ð ð ð	ð 	ð 	ð/ð /ð /ð6 ð 6 ð 6 ñpð ð ð ð0)ð )ð )ð	8ð 	8ð 	8ð	 ð 	 ð 	 ð
'ð 
'ð 
'ñHð Hð Hð Hð8 ðð ñ „Xðñ(/ð /ð /ð /ñDð Dð Dð DðL
ð 
ð 
ð9ð 9ð 9ð &*¸4ð @ð @ñ @ð @ð @ð @ð$ ð3ð 3ñ „Xð3ðð ð ðð ð ñ$ð ð ð ñ.;ñ ;ð ;ð ;ð ;ð2<ð <ð <ñ&ñ &ð &ð &ð &ð
C ð C ð C ðP #Ø#Øñ$ñ $ð $ð $ð $ñL)ð )ð )ð )ñ&ð &ð &ð &ñ	*ð 	*ð 	*ð 	*ñð ð ð ñ,ð ð ð ð  $Ø"Ø#Øññ ð ð ð ñ>/ð /ð /ð /ðbð ð ðB ØØØØØØØØØØØØØØØØØ Ø!Øñ-1ð 1ð 1ð 1ðf/ð /ð /ñ6 ð 6 ð 6 ð 6 ðv ØØ $ñcñ cð cð cð cñJð ð ð ð,ð ð ð2ð ð ñð ð ð ð"*ð *ð *ñXAHð AHð AHð AHðFð ð ñ$ñ ð ð ð ñ$
ñ 
ð 
ð 
ð 
ðKð Kð Kñð ð ð ð< #'ØØ%)Ø"ØØð!ð !ñ !ð !ð !ð !ðL !Ø"Ø Ø#'ØñLñ Lð Lð Lð Lñ*ð ð ð ðð ð ð$  ñ4ñ 4ð 4ð 4ð 4ðlð ð ñ"ð ð ð ñ
ð 
ð 
ð 
ð{ð {ð {ð0 ØØØØØØØñ)ð )ð )ð )ð\ 37Ø ØØØ"Ø#Ø ññ ð ð ð ðD ØØØØØØØØØØðt(ð t(ð t(ð t(ð t(ðn ð$ð $ñ „Xð$ð ðð ñ „Xðð ðð ñ „Xðð, ðð ñ „Xðð ð;ð ;ñ „Xð;ð ðð ñ „Xðð	8ð 	8ð 	8ð&ð &ð &ðð ð ðPð Pð Pðð ð ðð ð ðð ð ð
"ð 
"ð 
"ñ
4ð 
4ð 
4ð 
4ð%ð %ð %ðð ð ð ð9ð 9ñ „Xð9ð ð/ð /ñ „Xð/ðð ð ñ2ð ð ð ñ(2ñ 2ð 2ð 2ð 2ð"ð ð ð<%ð %ð %ðð ð ð ñð ð ñ „Xðñ:;ñ ;ð ;ð ;ð ;ð( ðð ñ „Xðñð ð ð ð0 ðð ñ „Xðð ØØñ	ñ ð ð ð ð$/ð /ð /ð*ð ð ð$ ð	5ð 	5ñ „Xð	5ðð ð ð(ð ð ðð ð ð" ñð ð ñ „Xðð ñð ð ñ „Xðñ(ñ (ð (ð (ð (ð:ð ð ñHð Hð Hð Hð ðð ñ „Xðð0/ð /ð /ñ 9ð 9ð 9ð 9ðv*ð *ð *ñð ð ð ð8 ØØØØØØØØØñU,ð U,ð U,ð U,ñn2ð 2ð 2ð 2ðIð Ið Ið\ ØØØØØØØØØØØØØØØØØØ Ø!Øñ/c?ð c?ð c?ð c?ðJ/ð /ð /ð"Yð Yð Yð  $Ø Ø#Ø ØØØØØ!Ø!Ø $ØØ!ñP;ñ P;ñ P;ð P;ð P;ðl  Ø"ØØ#'ñ"
ñ "
ñ "
ð "
ð "
ñH ð  ð  ñ6ñ ð ð ñ?/ñ ?/ð ?/ð ?/ðB:ñ :ð :ð :ñ"ñ ð ð ñ.;ñ ;ñ ;ð ;ð ;ñzñ ð ð ð0 Ø-1Ø!Ø+/ñGñ Gñ Gð Gð GñR1ñ 1ð 1ð 1ñ /ñ /ð /ð /ñ *2ð *2ð *2ð^ ñ}ñ }ñ }ð }ð }ðD "&ØØØØ Ø!Ø#ØñjJñ jJñ jJð jJð jJñXAð Að Añ$v+ñ v+ñ v+ð v+ð v+ðp	3ñ 3ð 3ð 3ñ(2ñ 2ð 2ð 2ññ ð ð ð$ ñð ñ „Xðð ØØØ ØØØØØØØØØØØØØØØ Ø!Øñ-2ñ 2ð 2ð 2ñh+ð +ð +ð ñ2ð 2ñ „Xð2ð
 NRñ !3ð !3ñ !3ñ !3ð !3ð !3ñF0ð 0ð 0ñdð ð ñ&ð ð ñð ð ð<ñ <ð <ð <ñð ð ñð ð ññ ð ð ñ&$ð $ð $ñLð ð ñ$ð ð ñ$
ð 
ð 
ñ C€IàˆhÑ1Ð1Ñ2Ô2€GØ€I€I€Ir*   rÁ   c                  ó4   — e Zd Zd„ Zd„ Zd	d„Zd„ Zd„ Zd„ ZdS )
ÚDocumentWriterc                ó   — | S r,   r-   r.   s    r)   rŠ  zDocumentWriter.__enter__5   r‹  r*   c                ó.   — |                       ¦   «          d S r,   rå  r>  s     r)   r�  zDocumentWriter.__exit__8   rç  r*   r\   c                óö  — t          |t          ¦  «        rn7t          |d¦  «        rt          |¦  «        }nt          |d¦  «        r|j        }t          |t          ¦  «        r,t	          j        ||t          j        j        ¦  «        | _        d S t          |¦  «        }t	          j        ||t          j        j	        ¦  «        | _        | 
                    ¦   «         dk    sJ ‚t          | j        d¦  «        sJ ‚d S )Nrü  r   r   Ú_out)r>   rÑ  r;   r   r�   ÚFzDocumentWriterÚPathType_PDFrÄ   r  ÚOutputType_PDFr7  )r(   r
   r  r  s       r)   rŒ   zDocumentWriter.__init__;   sç   € Ý�t�SÑ!Ô!ð 	ØÝ�d˜JÑ'Ô'ð 	Ý˜‘:”:ˆDˆDÝ�d˜FÑ#Ô#ð 	Ø”9ˆDÝ�t�SÑ!Ô!ð 	/ÝÔ.°°g½uÔ?UÔ?bÑcÔcˆDŒIˆIˆIõ (¨Ñ.Ô.ˆCÝÔ.°°W½eÔ>TÔ>cÑdÔdˆDŒIØ×'Ò'Ñ)Ô)¨QÒ.Ð.Ð.Ð.Ý˜DœI vÑ.Ô.Ð.Ð.Ð.Ð.Ð.r*   c                óv   — t          |¦  «        }t          j        | j        |¦  «        }t	          |¦  «        }|S r,   )r   r�   Úfz_begin_pagerÄ   r«  )r(   rv  Ú	mediabox2r¶  Údevice_wrappers        r)   Ú
begin_pagezDocumentWriter.begin_pageR   s6   € Ý# HÑ-Ô-ˆ	ÝÔ$ d¤i°Ñ;Ô;ˆÝ&¨Ñ/Ô/ˆØÐr*   c                ó8   — t          j        | j        ¦  «         d S r,   )r�   Úfz_close_document_writerrÄ   r.   s    r)   ræ  zDocumentWriter.closeX   s   € ÝÔ&¨¬	Ñ2Ô2Ð2Ð2Ð2r*   c                ó8   — t          j        | j        ¦  «         d S r,   )r�   Úfz_end_pagerÄ   r.   s    r)   Úend_pagezDocumentWriter.end_page[   s   € ÝÔ˜4œ9Ñ%Ô%Ð%Ð%Ð%r*   N©r\   )	r/   r0   r1   rŠ  r�  rŒ   rž
  ræ  r£
  r-   r*   r)   r’
  r’
  3   ss   € € € € € ðð ð ðð ð ð/ð /ð /ð /ð.ð ð ð3ð 3ð 3ð&ð &ð &ð &ð &r*   r’
  c                  óx  — e Zd Zd„ Z	 	 	 	 	 	 	 	 	 	 dd„Zd„ Zed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Z	dd„Z
ed„ ¦   «         Zed„ ¦   «         Zdd„Zd d„Zed„ ¦   «         Zd„ Zdd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zdd„Zd„ Zd„ ZdS )!r2  c                ó6   — t          | ¦  «        t          urd S d S r,   )rÈ   r2  r.   s    r)   r¾  zFont.__del__a   s    € Ý�‰:Œ:�TÐ!Ð!Ø�4ð "Ð!r*   Nr   r1  r   c                ó"  — |rmt          |d¦  «        r|                     ¦   «         }n$t          |t          ¦  «        rt	          |¦  «        }t          |t          ¦  «        st          d¦  «        ‚t          |t          ¦  «        r×|                     ¦   «         }d|v sd|v sd|v rt          d¦  «         |dv rd}n¡| 	                    d	¦  «        rd
}n‰| 	                    d¦  «        rd}nq| 	                    d¦  «        rd}nY|t                               ¦   «         v rdd l}|                     |¦  «        }d }~n!|dk     rt                               ||¦  «        }t!          j        |¦  «        }t%          |||||||||	|
¦
  «
        }|| _        d S )Nrv  zbad type: 'fontbuffer'rW  ú\r   z!Warning: did you mean a fontfile?)Úcjkúchina-túchina-tsr   úchina-sr   Úkorear   Újapanr   )r;   rv  r>   r]  r  rÃ   rÑ  rÒ  rr   r3   Úfitz_fontdescriptorsrË  Úpymupdf_fontsÚmyfontÚBase14_fontdictr8   r�   r�  ÚJM_get_fontrÄ   )r(   rù   rS  rT  Úscriptr+  r  Úis_boldÚ	is_italicÚis_serifÚembedÚfname_lowerr°
  r*  rW  s                  r)   rŒ   zFont.__init__e   sÏ  € ð ð 	;Ý�z :Ñ.Ô.ð /Ø'×0Ò0Ñ2Ô2�
�
Ý˜J­	Ñ2Ô2ð /Ý" :Ñ.Ô.�
Ý˜j­%Ñ0Ô0ð ;Ý Ð!9Ñ:Ô:Ð:å�h¥Ñ$Ô$ð 	CØ"Ÿ.š.Ñ*Ô*ˆKØ�kÐ!Ð! T¨[Ð%8Ð%8¸CÀ;Ð<NÐ<NÝÐ;Ñ<Ô<Ð<àÐ<Ð<Ð<Ø��à×'Ò'¨	Ñ2Ô2ð CØ��Ø×'Ò'¨Ñ0Ô0ð CØ��Ø×'Ò'¨Ñ0Ô0ð 	CØ��ØÕ 4× 9Ò 9Ñ ;Ô ;Ð;Ð;Ø$Ð$Ð$Ð$Ø*×1Ò1°+Ñ>Ô>�
Ø�Ø!�Mà˜A’�Ý*×.Ò.¨x¸ÑBÔB�åÔ1°(Ñ;Ô;ˆÝ˜8 XØ˜v t¨XØ˜I x°ñ8ô 8ˆð ˆŒ	ˆ	ˆ	r*   c                ó   — d| j         › d�S )NzFont('r+  ©r   r.   s    r)   rí   zFont.__repr__˜   s   € Ø%˜œ	Ð%Ð%Ð%Ð%r*   c                ó4   — t          j        | j        ¦  «        S )z Return the glyph ascender value.)r�   Úfz_font_ascenderrÄ   r.   s    r)   r=  zFont.ascender›   ó   € õ Ô% d¤iÑ0Ô0Ð0r*   c                ó4   — | j                              ¦   «         S r,   )rÄ   Úfz_font_bboxr.   s    r)   r/  z	Font.bbox    s   € àŒy×%Ò%Ñ'Ô'Ð'r*   c                ó”   — t          j        t          j        | j        j        j        ¦  «        ¦  «        }t          j        |¦  «        S r,   )r�   rr  Úll_fz_keep_bufferrÄ   rÌ   ræ  Úfz_buffer_extract_copy)r(   r-  s     r)   ræ  zFont.buffer¤   s5   € å”.¥%Ô"9¸4¼9Ô;OÔ;VÑ"WÔ"WÑXÔXˆÝÔ+¨WÑ5Ô5Ð5r*   rú  c           	     óD  — t          j        |¦  «        }g }|D ]†}	t          |	¦  «        }
|r(t          j        | j        |
¦  «        }|dk    r| j        }nt          j        | j        |
||¦  «        \  }}|                     |t          j        |||¦  «        z  ¦  «         Œ‡|S )z@Return tuple of char lengths of unicode 'text' under a fontsize.r   )r�   r�  ÚordÚfz_encode_character_scrÄ   Ú!fz_encode_character_with_fallbackrk   r$  )r(   r   rú   r+  r´
  ÚwmodeÚ
small_capsr*  r    rú  r¼  ÚgidrW  s                r)   Úchar_lengthszFont.char_lengths©   s­   € åÔ1°(Ñ;Ô;ˆØˆØð 	Kð 	KˆBÝ�B‘”ˆAØð `ÝÔ2°4´9¸aÑ@Ô@�Ø˜!’8�8Øœ9�Døå!ÔCÀDÄIÈqÐRXÐZ^Ñ_Ô_‘	��TØ�IŠI�h¥Ô!7¸¸cÀ5Ñ!IÔ!IÑIÑJÔJÐJÐJØˆ	r*   c                ó4   — t          j        | j        ¦  «        S )z!Return the glyph descender value.)r�   Úfz_font_descenderrÄ   r.   s    r)   r>  zFont.descender¸   s   € õ Ô& t¤yÑ1Ô1Ð1r*   c                óp  ‡— t          j        | j        j        ¦  «        }|sd S t	          |t           j        ¦  «        sJ ‚t          rœ|j        gŠˆfd„} |d¦  «        } |d¦  «        } |d¦  «        } |d¦  «        } |d¦  «        } |d¦  «        } |d¦  «        }	 |d¦  «        }
 |d¦  «        } |d¦  «        } |d¦  «        } |d¦  «        } |d¦  «        }t          r|n|j        t          r|n|j        t          r|n|j	        t          r|n|j
        t          r|n|j        t          r|n|j        t          r|	n|j        t          r|
n|j        t          r|n|j        t          r|n|j        t          r|n|j        t          r|n|j        t          r|n|j        t          r|n|j        dœS )Nc                óF   •— ‰d         d| z  dz
  z  }‰d         | z	  ‰d<   |S r  r-   )ÚbitsrG   rF   s     €r)   ÚbzFont.flags.<locals>.bÇ   s/   ø€ Ø˜”d˜q D™y¨!™mÑ,�Ø˜”t˜t‘|��!‘Ø�
r*   r   )ÚmonoÚserifrL  r`  Ú
substituteÚstretchz	fake-boldzfake-italicÚopentypezinvalid-bboxr©
  zcjk-langr¸
  znever-embed)r�   Úll_fz_font_flagsrÄ   rÌ   r>   Úfz_font_flags_trœ   Úis_monor·
  rµ
  r¶
  Úft_substituteÚ
ft_stretchÚ	fake_boldÚfake_italicÚhas_opentypeÚinvalid_bboxr©
  Úcjk_langr¸
  Únever_embed)r(   rÎ  rÑ
  rÙ
  r·
  rµ
  r¶
  rÚ
  rÛ
  rÜ
  rÝ
  rÞ
  rß
  rà
  r¸
  rá
  rF   s                   @r)   r¾  z
Font.flags½   sæ  ø€ åÔ" 4¤9Ô#7Ñ8Ô8ˆØð 	ØˆFÝ˜1�eÔ3Ñ4Ô4Ð4Ð4Ð4åð 	à”�ˆAðð ð ð ð ð �a˜‘d”dˆGØ�q˜‘t”tˆHØ�a˜‘d”dˆGØ˜˜!™œˆIØ˜A˜a™DœDˆMØ˜˜1™œˆJØ˜˜!™œˆIØ˜!˜A™$œ$ˆKØ˜1˜Q™4œ4ˆLØ˜1˜Q™4œ4ˆLØ�q˜‘t”tˆHØ�A�a‘D”DˆEØ˜!˜A™$œ$ˆKå+6Ð E  ¸A¼IÝ,7Ð G  ¸Q¼ZÝ+6Ð E  ¸A¼IÝ-8Ð I 	 	¸a¼kÝ1<Ð Q  À!Ä/Ý.9Ð K 
 
¸q¼|Ý-8Ð I 	 	¸a¼kÝ/:Ð M  ÀÄÝ0;Ð O  ÀÄÝ0;Ð O  ÀÄÝ,7Ð B  ¸Q¼UÝ,7Ð G  ¸Q¼ZÝ)4Ð A  ¸!¼'Ý/:Ð M  ÀÄðð ð 	r*   c                óè   — t          j        |¦  «        }|r(t          j        | j        |¦  «        }|dk    r| j        }nt          j        | j        |||¦  «        \  }}t          j        |||¦  «        S )z2Return the glyph width of a unicode (font size 1).r   )r�   r�  rÆ
  rÄ   rÇ
  r$  )	r(   Úchr_r+  r´
  rÈ
  rÉ
  r*  rÊ
  rW  s	            r)   Úglyph_advancezFont.glyph_advanceé   ss   € åÔ1°(Ñ;Ô;ˆØð 	_ÝÔ.¨t¬y¸$Ñ?Ô?ˆCØ�aŠxˆxØ”y�øåÔ?ÀÄ	È4ÐQWÐY]Ñ^Ô^‰IˆC�ÝÔ% d¨C°Ñ7Ô7Ð7r*   c                ó$  — t          j        |¦  «        }|r(t          j        | j        |¦  «        }|dk    r| j        }nt          j        | j        |||¦  «        \  }}t          t          j        ||t          j        ¦   «         ¦  «        ¦  «        S )z1Return the glyph bbox of a unicode (font size 1).r   )r�   r�  rÆ
  rÄ   rÇ
  r$  Úfz_bound_glyphrr  )r(   Úcharr+  r´
  rÉ
  r*  rÊ
  rW  s           r)   Ú
glyph_bboxzFont.glyph_bboxô   sƒ   € åÔ1°(Ñ;Ô;ˆØð 	`ÝÔ.°´	¸4Ñ@Ô@ˆCØ�aŠxˆxØ”y�øåÔ?ÀÄÈDÐRXÐZ^Ñ_Ô_‰IˆC�Ý•EÔ(¨$°µU´^Ñ5EÔ5EÑFÔFÑGÔGÐGr*   c                ó$   — | j         j        j        S r,   )rÄ   rÌ   r
  r.   s    r)   r
  zFont.glyph_countÿ   s   € àŒyÔ#Ô/Ð/r*   c                ó    — t          |¦  «        S )z$Return the unicode for a glyph name.)Úglyph_name_to_unicoder‚  s     r)   rë
  zFont.glyph_name_to_unicode!  s   € å$ TÑ*Ô*Ð*r*   c                óà   — |r4t          j        |¦  «        }t          j        | j        |||¦  «        \  }}n7|rt          j        | j        |¦  «        }nt          j        | j        |¦  «        }|S )z0Check whether font has a glyph for this unicode.)r�   r�  rÇ
  rÄ   rÆ
  r#  )	r(   r
  r+  r´
  ré	  rÉ
  r*  rÊ
  rW  s	            r)   Ú	has_glyphzFont.has_glyph!  ss   € àð 	@ÝÔ5°hÑ?Ô?ˆDÝÔ?ÀÄ	È3ÐPVÐX\Ñ]Ô]‰IˆC��àð @ÝÔ2°4´9¸cÑBÔB��åÔ/°´	¸3Ñ?Ô?�Øˆ
r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   Úfz_font_is_boldrÄ   r.   s    r)   rµ
  zFont.is_bold!  s   € åÔ$ d¤iÑ0Ô0Ð0r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   Úfz_font_is_italicrÄ   r.   s    r)   r¶
  zFont.is_italic!  s   € åÔ&¨¬	Ñ2Ô2Ð2r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   Úfz_font_is_monospacedrÄ   r.   s    r)   Úis_monospacedzFont.is_monospaced!  s   € åÔ*¨D¬IÑ6Ô6Ð6r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   Úfz_font_is_serifrÄ   r.   s    r)   r·
  zFont.is_serif!  s   € åÔ% t¤yÑ1Ô1Ð1r*   c                ó   — dS rÁ  )rÄ   r�   r×
  rÌ   rœ   ÚcppyyÚgblÚ"mupdf_mfz_font_flags_ft_substituterÚ
  Úll_fz_font_t3_procsÚpdf_font_writing_supported)r(   rW  r¾  rø
  rÚ
  s        r)   Úis_writablezFont.is_writable#!  s   € àˆtr*   c                ó8   — t          j        | j        ¦  «        }|S r,   )r�   Úfz_font_namerÄ   r   s     r)   r   z	Font.name6!  s   € åÔ  ¤Ñ+Ô+ˆàˆ
r*   c                ój  — | j         }t          j        |¦  «        }d}	t          |t          ¦  «        st          t          ¦  «        ‚|D ]d}
t          |
¦  «        }|rt          j        ||¦  «        }|dk    r|}nt          j	        ||||¦  «        \  }}|	t          j
        |||¦  «        z  }	Œe|	|z  }	|	S )z1Return length of unicode 'text' under a fontsize.r   )rÄ   r�   r�  r>   rÑ  r®  ÚMSG_BAD_TEXTrÅ
  rÆ
  rÇ
  r$  )r(   r   rú   r+  r´
  rÈ
  rÉ
  Úthisfontr*  r    rú  r¼  rÊ
  rW  s                 r)   Útext_lengthzFont.text_length<!  sÇ   € à”9ˆÝÔ1°(Ñ;Ô;ˆØˆÝ˜$¥Ñ$Ô$ð 	+Ý�\Ñ*Ô*Ð*Øð 	;ð 	;ˆBÝ�B‘”ˆAØð _ÝÔ2°8¸QÑ?Ô?�Ø˜!’8�8Ø#�Døå!ÔCÀHÈaÐQWÐY]Ñ^Ô^‘	��TØ•%Ô(¨¨s°EÑ:Ô:Ñ:ˆBˆBØ
ˆh‰ˆØˆ	r*   c                ó    — t          |¦  «        S )z$Return the glyph name for a unicode.)Úunicode_to_glyph_name)r(   rú  s     r)   r  zFont.unicode_to_glyph_nameO!  s   € å$ RÑ(Ô(Ð(r*   c                óŒ   — t          j        | j        ¦  «        }d„ |D ¦   «         }t          |¦  «        }t	          |¦  «        }|S )zE
        Returns sorted list of valid unicodes of a fz_font.
        c                ó   — g | ]	}|j         ‘Œ
S r-   )Úucsr¬   s     r)   r¯   z)Font.valid_codepoints.<locals>.<listcomp>X!  s   € Ð(Ð(Ð(˜!�”Ð(Ð(Ð(r*   )r�   Úfz_enumerate_font_cmap2rÄ   rØ  Úsorted)r(   Úucs_gidsÚucssÚucss_uniqueÚucss_unique_sorteds        r)   Úvalid_codepointszFont.valid_codepointsS!  sH   € õ Ô0°´Ñ;Ô;ˆØ(Ð(˜xÐ(Ñ(Ô(ˆÝ˜$‘i”iˆÝ# KÑ0Ô0ÐØ!Ð!r*   )
NNNr   Nr1  r   r   r   r   )rú  Nr   r   r   )Nr   r   r   )Nr   r   )r/   r0   r1   r¾  rŒ   rí   r6  r=  r/  ræ  rË
  r>  r¾  rä
  rè
  r
  rë
  rí
  rµ
  r¶
  rô
  r·
  rý
  r   r  r  r  r-   r*   r)   r2  r2  _   sA  € € € € € ðð ð ð ØØØØØØØØØð1ð 1ð 1ð 1ðf&ð &ð &ð ð1ð 1ñ „Xð1ð ð(ð (ñ „Xð(ð ð6ð 6ñ „Xð6ðð ð ð ð ð2ð 2ñ „Xð2ð ð)ð )ñ „Xð)ðV	8ð 	8ð 	8ð 	8ð	Hð 	Hð 	Hð 	Hð ð0ð 0ñ „Xð0ð+ð +ð +ð
ð 
ð 
ð 
ð ð1ð 1ñ „Xð1ð ð3ð 3ñ „Xð3ð ð7ð 7ñ „Xð7ð ð2ð 2ñ „Xð2ð ðð ñ „Xðð$ ðð ñ „Xðð
ð ð ð ð&)ð )ð )ð"ð "ð "ð "ð "r*   r2  c                  ó   — e Zd Zd„ Zd„ ZdS )rÞ  c                óD   — t          | ¦  «        t          urd S d| _        d S r½  )rÈ   rÞ  rñ   r.   s    r)   r¾  zGraftmap.__del__`!  s#   € Ý�D‰zŒz�XÐ%Ð%ØˆFØˆŒˆˆr*   c                óh   — t          |¦  «        }t          j        |¦  «        }|| _        d| _        d S rÁ  )rÎ   r�   Úpdf_new_graft_maprÄ   rñ   )r(   r*  ÚdstÚmap_s       r)   rŒ   zGraftmap.__init__e!  s1   € Ý˜sÑ#Ô#ˆÝÔ& sÑ+Ô+ˆØˆŒ	ØˆŒˆˆr*   N)r/   r0   r1   r¾  rŒ   r-   r*   r)   rÞ  rÞ  ^!  s2   € € € € € ðð ð ð
ð ð ð ð r*   rÞ  c                  ó
  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         Zedd„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zdd„Zdd„Zd„ Zed„ ¦   «         ZdZdS )ÚLinkc                ó.   — |                       ¦   «          d S r,   )rò   r.   s    r)   r¾  zLink.__del__m!  s   € Ø�Š‰Œˆˆˆr*   c                óL   — t          |t          j        ¦  «        sJ ‚|| _        d S r,   )r>   r�   ÚFzLinkrÄ   )r(   rÄ   s     r)   rŒ   zLink.__init__p!  s%   € Ý˜4¥¤Ñ.Ô.Ð.Ð.Ð.ØˆŒ	ˆ	ˆ	r*   c                óN   — t          | ¦  «         dt          | j        ¦  «        z   S ©Nzlink on ©rf  rÑ  rê   r.   s    r)   rí   zLink.__repr__t!  ó%   € Ý�DÑÔÐØ�C ¤Ñ,Ô,Ñ,Ð,r*   c                óN   — t          | ¦  «         dt          | j        ¦  «        z   S r  r  r.   s    r)   rï   zLink.__str__x!  r  r*   c                ó–   — t          |d¬¦  «        }|j        sd S t          j        ||d¦  «        }|j        sd S t	          |¦  «        }|S ©Nr   r.  )rÎ   rÌ   r�   r‰  r…  ©r(   r*  r  rZ  Úlink_objrÑ
  s         r)   Ú_borderzLink._border|!  sY   € Ý˜s¨QÐ/Ñ/Ô/ˆØŒ~ð 	ØˆFÝÔ)¨#¨t°QÑ7Ô7ˆØÔ"ð 	ØˆFÝ˜HÑ%Ô%ˆØˆr*   c                óº   — t          |d¬¦  «        }|j        sd S t          j        ||d¦  «        }|j        st	          t
          ¦  «        ‚t          |¦  «        }|S r!  )rÎ   rÌ   r�   r‰  rÃ   rˆ  r”  r"  s         r)   Ú_colorszLink._colors†!  sb   € Ý˜s¨QÐ/Ñ/Ô/ˆØŒ~ð 	ØˆFÝÔ)¨3°°aÑ8Ô8ˆØÔ"ð 	,Ý�lÑ+Ô+Ð+Ý˜XÑ&Ô&ˆØˆr*   c                ó"   — d | _         d| _        d S r½  )rê   rñ   r.   s    r)   rò   zLink._erase�!  s   € ØˆŒØˆŒˆˆr*   c                óš   — t          |d¬¦  «        }|j        sd S t          j        ||d¦  «        }|j        sd S t	          |||¦  «        }|S r!  )rÎ   rÌ   r�   r‰  rc  )r(   rˆ  r*  r  rZ  r#  rÑ
  s          r)   Ú
_setBorderzLink._setBorder”!  s]   € Ý˜s¨QÐ/Ñ/Ô/ˆØŒ~ð 	ØˆFÝÔ)¨#¨t°QÑ7Ô7ˆØÔ"ð 	ØˆFÝ ¨¨XÑ6Ô6ˆØˆr*   c                óV   — |                       | j        j        j        | j        ¦  «        S r,   )r$  rê   rÄ   r  r.   s    r)   rˆ  zLink.borderž!  ó    € à�|Š|˜DœKÔ.Ô3°T´YÑ?Ô?Ð?r*   c                óV   — |                       | j        j        j        | j        ¦  «        S r,   )r&  rê   rÄ   r  r.   s    r)   r  zLink.colors¢!  r+  r*   c                óf  — t          | d¦  «        r| j        €t          d¦  «        ‚| j        j        j        s| j        j        j        rt          d¦  «        ‚| j        j        }| j        s| j                             d¦  «        rd}n|                     | j        ¦  «        }t          | ||¦  «        S )z Create link destination details.rê   Núorphaned object: parent is Noner-  r
  )
r;   rê   rÃ   rÂ   r   r°  ra  r3   r±  ÚlinkDest)r(   r*  ra  s      r)   rê  z	Link.dest¦!  sµ   € õ �4˜Ñ"Ô"ð 	@ t¤{Ð':ÝÐ>Ñ?Ô?Ð?ØŒ;ÔÔ'ð 	=¨4¬;Ô+=Ô+Jð 	=ÝÐ;Ñ<Ô<Ð<ØŒkÔ ˆàÔð 	-˜tœx×2Ò2°3Ñ7Ô7ð 	-ØˆCˆCà×"Ò" 4¤8Ñ,Ô,ˆCå˜˜c 3Ñ'Ô'Ð'r*   rÎ  r4   c                óÆ   — t          | ¦  «         | j        j        }|j        sdS |                     | j        d¦  «        }|d         dk    rt          |d         ¦  «        S dS )Nr   r§  r   r¸  )rf  rê   rÛ  rñ  r  r4   )r(   r*  rÎ  s      r)   r¾  z
Link.flags¶!  sb   € å�DÑÔÐØŒkÔ ˆØŒzð 	Ø�1Ø×Ò˜TœY¨Ñ,Ô,ˆØˆQŒ4�6Š>ˆ>Ý�q˜”t‘9”9ÐØˆqr*   c                óî   — t          | ¦  «         t          rt          j        | j        ¦  «        S | j        }|j        r|j        j        sdS t          t          j	        |j        j        ¦  «        ¦  «        S )zFlag the link as external.F)
rf  r  r   ÚLink_is_externalrÄ   rÌ   ra  rç   r�   Úfz_is_external_link©r(   Ú	this_links     r)   r°  zLink.is_externalÁ!  sp   € õ 	�DÑÔÐÝð 	6ÝÔ)¨4¬9Ñ5Ô5Ð5Ø”Iˆ	ØÔ#ð 	¨9Ô+?Ô+Cð 	Ø�5Ý•UÔ.°	Ô0DÔ0HÑIÔIÑJÔJÐJr*   c                ó:  — | j         j        sdS t          | ¦  «         	 | j                              ¦   «         }|j        sdS t          |¦  «        }|rÉd|_        | j	        |_	        ||j	        j
        t          |¦  «        <   | j        dk    r�d„ | j	                             ¦   «         D ¦   «         }d„ | j	                             ¦   «         D ¦   «         }|                     | j        ¦  «        }||dz            |_        ||dz            |_        nd|_        d|_        |S )z
Next link.Nr   Tc                óJ   — g | ] }|d          t           j        k    ¯|d         ‘Œ!S ©r   r   ©r�   r¿  ró  s     r)   r¯   zLink.next.<locals>.<listcomp>Þ!  s.   € ÐfÐfÐf qÈÈ1ÌÕQVÔQeÒIeÐIe˜a œdÐIeÐIeÐIer*   c                óJ   — g | ] }|d          t           j        k    ¯|d         ‘Œ!S )r   r   r9  ró  s     r)   r¯   zLink.next.<locals>.<listcomp>ß!  s-   € ÐdÐdÐd QÀqÈÄtÍuÔOcÒGcÐGc˜A˜aœDÐGcÐGcÐGcr*   r   r\   )rÄ   rÌ   rf  r  r   Ú	Link_nextr=  r  rñ   rê   r8  r9  r  rÊ  rd  )r(   r  Ú
link_xrefsÚlink_idsr8  s        r)   r=  z	Link.nextÌ!  s  € ð ŒyÔ#ð 	Ø�4Ý�DÑÔÐð	#ð ”)—.’.Ñ"Ô"ˆCØŒ~ð 	Ø�4Ý�C‰jŒjˆØð 	ØˆCŒKØœˆCŒJØ.1ˆCŒJÔ"¥2 c¡7¤7Ñ+ØŒy˜1Š}ˆ}ØfÐf¨D¬K×,CÒ,CÑ,EÔ,EÐfÑfÔf�
ØdÐd¨$¬+×*AÒ*AÑ*CÔ*CÐdÑdÔd�Ø ×&Ò& t¤yÑ1Ô1�Ø% c¨A¡gÔ.�”Ø! #¨¡'Ô*�”�à�”Ø�”Øˆ
r*   c                óÒ   — t          | ¦  «         | j        �| j        j        st          d¦  «        ‚t	          | j                             ¦   «         ¦  «        }t          |¦  «        }|S )zRectangle ('hot area').Nz"self.this.m_internal not available)rf  rÄ   rÌ   rg   rg  r÷   r$  rO  s     r)   r÷   z	Link.rectè!  s^   € õ 	�DÑÔÐð Œ9Ð D¤IÔ$8ÐÝÐAÑBÔBÐBÝ˜tœyŸ~š~Ñ/Ô/Ñ0Ô0ˆÝ�3‰iŒiˆØˆ
r*   Nr   c                ó�   — t          |¦  «        t          ur|||dœ}|                      || j        j        j        | j        ¦  «        S )N)r]  r^  r_  )rÈ   r5   r)  rê   rÄ   r  )r(   rˆ  r]  r_  r^  s        r)   re  zLink.set_borderô!  sB   € Ý�‰<Œ<�tÐ#Ð#Ø$¨uÀÐGÐGˆFØ�Š˜v t¤{Ô'9Ô'>ÀÄ	ÑJÔJÐJr*   c                ó  — t          | ¦  «         | j        j        }t          |¦  «        t          ur||dœ}|                     d¦  «        }|                     d¦  «        }|�t          d¦  «         |g dfv r|                     | j        dd¦  «         dS t          |d	¦  «        rt          |¦  «        g}t          |¦  «         t          |¦  «        d
v sJ ‚dt          |¦  «        › d�}|                     | j        d|¦  «         dS )zSet border colors.rg  rû   rh  Nz!warning: links have no fill colorr-   ræ  ri  rj  rk  rl  rm  )rf  rê   rÈ   r5   r8   rr   rn  r  r;   ro  rp  r7   r¶   )r(   r  rh  rû   r*  rr  s         r)   rs  zLink.set_colorsù!  s  € å�DÑÔÐØŒkÔ ˆÝ�‰<Œ<�tÐ#Ð#Ø"¨fÐ5Ð5ˆFØ�zŠz˜&Ñ!Ô!ˆØ—’˜HÑ%Ô%ˆØÐÝÐ7Ñ8Ô8Ð8Ø�b˜"�XÐÐØ×Ò˜TœY¨¨TÑ2Ô2Ð2ØˆFÝ�6˜;Ñ'Ô'ð 	%Ý˜F‘m”m�_ˆFÝ�6ÑÔÐÝ�6‰{Œ{˜iÐ'Ð'Ð'Ð'Ø$•	˜&Ñ!Ô!Ð$Ð$Ð$ˆØ×Ò˜œ C¨Ñ+Ô+Ð+Ð+Ð+r*   c                ó  — t          | ¦  «         | j        j        }|j        st          d¦  «        ‚t	          |¦  «        t
          urt          d¦  «        ‚|                     | j        dt          |¦  «        ¦  «         d S )NrÙ  zbad 'flags' valuer§  )	rf  rê   rÛ  rÃ   rÈ   r4   rn  r  rÑ  )r(   r¾  r*  s      r)   rv  zLink.set_flags"  sw   € Ý�DÑÔÐØŒkÔ ˆØŒzð 	*Ý˜[Ñ)Ô)Ð)Ý�E‰{Œ{�cÐ!Ð!ÝÐ0Ñ1Ô1Ð1Ø×Ò˜œ C­¨U©¬Ñ4Ô4Ð4Øˆtr*   c                óz   — t           rt          j        | j        ¦  «        S | j        }|j        r|j        j        ndS )zUri string.r\   )r  r   Úlink_urirÄ   rÌ   ra  r4  s     r)   ra  zLink.uri"  s>   € õ ð 	-Ý”> $¤)Ñ,Ô,Ð,Ø”Iˆ	Ø+4Ô+?ÐGˆyÔ#Ô'Ð'ÀRÐGr*   r1  r„
  )Nr   NNr3  )r/   r0   r1   r¾  rŒ   rí   rï   r$  r&  rò   r)  r6  rˆ  r  rê  r¾  r°  r=  r÷   re  rs  rv  ra  rÖ   r-   r*   r)   r  r  l!  s±  € € € € € ðð ð ðð ð ð-ð -ð -ð-ð -ð -ðð ð ðð ð ðð ð ðð ð ð ð@ð @ñ „Xð@ð ð@ð @ñ „Xð@ð ð(ð (ñ „Xð(ð ðð ð ñ „Xðð ðKð Kñ „XðKð ðð ñ „Xðð6 ð	ð 	ñ „Xð	ðKð Kð Kð Kð
,ð ,ð ,ð ,ð(ð ð ð ðHð Hñ „XðHð €D€D€Dr*   r  c                  óÆ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zdddddddœd„Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Ze	ZeZeZdS )ru  c                óX   — t          j        t          d„ | D ¦   «         ¦  «        ¦  «        S )Nc                ó   — g | ]}||z  ‘ŒS r-   r-   ©r­   r¼  s     r)   r¯   z"Matrix.__abs__.<locals>.<listcomp>&"  ó   € Ð0Ð0Ð0 a˜a ™cÐ0Ð0Ð0r*   ©ÚmathÚsqrtÚsumr.   s    r)   Ú__abs__zMatrix.__abs__%"  ó)   € ÝŒy�Ð0Ð0¨4Ð0Ñ0Ô0Ñ1Ô1Ñ2Ô2Ð2r*   c           
     ó¾  — t          |d¦  «        rDt          | j        |z   | j        |z   | j        |z   | j        |z   | j        |z   | j        |z   ¦  «        S t          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z   | j        |d         z   | j        |d         z   | j        |d         z   | j        |d         z   | j        |d	         z   ¦  «        S ©
Nrj  rô  úMatrix: bad seq lenr   r   r   r   rK  r   ©
r;   ru  r!   rÑ
  r¼  r
  r`  rÎ  r7   rÃ   ©r(   r€  s     r)   Ú__add__zMatrix.__add__("  óÓ   € Ý�1�kÑ"Ô"ð 	>Ý˜$œ& 1™* d¤f¨q¡j°$´&¸1±*Øœ& 1™* d¤f¨q¡j°$´&¸1±*ñ>ô >ð >åˆq‰6Œ6�QŠ;ˆ;ÝÐ2Ñ3Ô3Ð3Ý�d”f˜q œt‘m T¤V¨a°¬d¡]°D´F¸Q¸q¼T±MØœ& 1 Q¤4™-¨¬°!°A´$©¸¼ÀÀ1Ä¹ñGô Gð 	Gr*   c                óX   — t          | ¦  «        t          | ¦  «        cxk    odk    nc  S r‡   ©rê  rÜ  r.   s    r)   rè   zMatrix.__bool__1"  ó3   € Ý˜‘I”I¥ T¡¤Ð/Ð/Ò/Ð/¨aÒ/Ð/Ð/Ð/Ð0Ð0r*   c                óX   — t          |d¦  «        sdS t          |¦  «        dk    o| |z
   S )Nr)  Frô  ©r;   r7   )r(   rv  s     r)   Ú__eq__zMatrix.__eq__4"  s5   € Ý�s˜IÑ&Ô&ð 	Ø�5Ý�3‰xŒx˜1Š}Ð1 d¨S¡jÐ!1Ð1r*   c                óZ   — | j         | j        | j        | j        | j        | j        f|         S r,   ©r!   rÑ
  r¼  r
  r`  rÎ  ré  s     r)   ra  zMatrix.__getitem__9"  s&   € Ø”˜œ ¤¨¬°´¸¼Ð?ÀÔBÐBr*   Nr]  c               óÎ  — |s,dx| _         x| _        x| _        x| _        x| _        | _        �nþt          |¦  «        dk    rt          d¦  «        ‚t          |¦  «        dk    r<t          t          |¦  «        \  | _         | _        | _        | _        | _        | _        �n�t          |¦  «        dk    �rqt          |d         t          j        ¦  «        rn|d         j         | _         |d         j        | _        |d         j        | _        |d         j        | _        |d         j        | _        |d         j        | _        �nët          |d         d¦  «        r‹t          j        |d         ¦  «        }t!          t          j        |¦  «        d¦  «        }	t!          t          j        |¦  «        d¦  «        }
|	x| _         | _        |
| _        |
 | _        dx| _        | _        �nJt          t          |d         ¦  «        \  | _         | _        | _        | _        | _        | _        �nt          |¦  «        dk    st          |¦  «        d	k    r`|d         dk    rTt          |d         ¦  «        ddt          |d         ¦  «        ddf\  | _         | _        | _        | _        | _        | _        n‚t          |¦  «        d	k    r`|d         dk    rTd
t          |d         ¦  «        t          |d         ¦  «        d
ddf\  | _         | _        | _        | _        | _        | _        nt          d¦  «        ‚|�|| _         |�|| _        |�|| _        |�|| _        |�|| _        |�	|| _        dS dS )aº  
        Matrix() - all zeros
        Matrix(a, b, c, d, e, f)
        Matrix(zoom-x, zoom-y) - zoom
        Matrix(shear-x, shear-y, 1) - shear
        Matrix(degree) - rotate
        Matrix(Matrix) - new copy
        Matrix(sequence) - from 'sequence'
        Matrix(mupdf.FzMatrix) - from MuPDF class wrapper for fz_matrix.
        
        Explicit keyword args a, b, c, d, e, f override any earlier settings if
        not None.
        rž  rô  rQ  r   r   rj  r   r   r   rŸ  zMatrix: bad argsN)r!   rÑ
  r¼  r
  r`  rÎ  r7   rÃ   rÝ  ro  r>   r�   rr  r;   rJ  ÚradiansÚroundÚcosÚsin)r(   r!   rÑ
  r¼  r
  r`  rÎ  r÷  ÚthetaÚc_Ús_s              r)   rŒ   zMatrix.__init__<"  så  € ð ð 	1ØBEÐEˆDŒFÐE�T”VÐE˜dœfÐE t¤vÐE°´¸¼¹Ý�‰YŒY˜Š]ˆ]ÝÐ2Ñ3Ô3Ð3Ý�‰YŒY˜!Š^ˆ^Ý=@ÅÈÑ=MÔ=MÑ:ˆDŒF�D”F˜DœF D¤F¨D¬F°D´F±FÝ�‰YŒY˜!Š^‰^Ý˜$˜qœ'¥5¤>Ñ2Ô2ð UØ˜aœœ�”Ø˜aœœ�”Ø˜aœœ�”Ø˜aœœ�”Ø˜aœœ�”Ø˜aœœ�”‘Ý˜˜aœ +Ñ.Ô.ð 	UÝœ T¨!¤WÑ-Ô-�Ý�4œ8 E™?œ?¨AÑ.Ô.�Ý�4œ8 E™?œ?¨AÑ.Ô.�Ø"$Ð$�”˜œØ�”Ø˜�”Ø"%Ð%�”˜œ™åADÅUÈDÐQRÌGÑATÔATÑ>�”˜œ ¤¨¬°´¸¼¹Ý�‰YŒY˜!Š^ˆ^�s 4™yœy¨Aš~˜~°$°q´'¸Q²,°,Ý=BÀ4ÈÄ7¹^¼^Ø�S�%  Q¤™.œ.¨#¨sð>3Ñ:ˆDŒF�D”F˜DœF D¤F¨D¬F°D´F°Få�‰YŒY˜!Š^ˆ^  Q¤¨1¢ Ø=@Ý�d˜1”g‘”¥ d¨1¤g¡¤°°S¸#ð>>Ñ:ˆDŒF�D”F˜DœF D¤F¨D¬F°D´F°Fõ Ð/Ñ0Ô0Ð0ð ˆ= Q˜DœFØˆ= Q˜DœFØˆ= Q˜DœFØˆ= Q˜DœFØˆ= Q˜DœFØˆ= Q˜DœF˜F˜Fˆ=ˆ=r*   c                óL   — t          ¦   «         }|                     | ¦  «         |S )zCalculate inverted matrix.)ru  Úinvert)r(   Úm1s     r)   Ú
__invert__zMatrix.__invert__s"  s   € å‰XŒXˆØ
�	Š	�$‰ŒˆØˆ	r*   c                ó   — dS )Nrô  r-   r.   s    r)   r)  zMatrix.__len__y"  ó   € Øˆqr*   c           	     óö   — t          |d¦  «        rDt          | j        |z  | j        |z  | j        |z  | j        |z  | j        |z  | j        |z  ¦  «        S t          dd¦  «        }|                     | |¦  «        S )Nrj  r   )	r;   ru  r!   rÑ
  r¼  r
  r`  rÎ  Úconcat)r(   r€  rh  s      r)   Ú__mul__zMatrix.__mul__|"  sx   € Ý�1�kÑ"Ô"ð 	>Ý˜$œ& 1™* d¤f¨q¡j°$´&¸1±*Øœ& 1™* d¤f¨q¡j°$´&¸1±*ñ>ô >ð >å�A�a‰[Œ[ˆØ�yŠy˜˜qÑ!Ô!Ð!r*   c                ór   — t          | j         | j         | j         | j         | j         | j         ¦  «        S r,   )ru  r!   rÑ
  r¼  r
  r`  rÎ  r.   s    r)   Ú__neg__zMatrix.__neg__ƒ"  s2   € Ý�t”v�g ¤˜w¨¬¨°$´&°¸4¼6¸'ÀDÄFÀ7ÑKÔKÐKr*   c                óX   — t          | ¦  «        t          | ¦  «        cxk    odk    nc  S r‡   rW  r.   s    r)   Ú__nonzero__zMatrix.__nonzero__†"  rX  r*   c                ó    — t          | ¦  «        S r,   )ru  r.   s    r)   Ú__pos__zMatrix.__pos__‰"  s   € Ý�d‰|Œ|Ðr*   c                ó@   — dt          t          | ¦  «        ¦  «        z   S )Nru  ©rÑ  rµ   r.   s    r)   rí   zMatrix.__repr__Œ"  s   € Ø�#�e D™kœkÑ*Ô*Ñ*Ð*r*   c                óê   — t          |¦  «        }|dk    r|| _        nU|dk    r|| _        nG|dk    r|| _        n9|dk    r|| _        n+|dk    r|| _        n|dk    r|| _        nt          d¦  «        ‚d S )Nr   r   r   r   rK  r   úindex out of range)ro  r!   rÑ
  r¼  r
  r`  rÎ  rø  ©r(   r®   rF   s      r)   Ú__setitem__zMatrix.__setitem__�"  s‡   € Ý�!‰HŒHˆØ�!ŠVˆV˜a�T”V�VØ�!ŠVˆV˜a�T”V�VØ�!ŠVˆV˜a�T”V�VØ�!ŠVˆV˜a�T”V�VØ�!ŠVˆV˜a�T”V�VØ�!ŠVˆV˜a�T”V�VåÐ1Ñ2Ô2Ð2Øˆr*   c           
     ó¾  — t          |d¦  «        rDt          | j        |z
  | j        |z
  | j        |z
  | j        |z
  | j        |z
  | j        |z
  ¦  «        S t          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z
  | j        |d         z
  | j        |d         z
  | j        |d         z
  | j        |d         z
  | j        |d	         z
  ¦  «        S rP  rR  rS  s     r)   Ú__sub__zMatrix.__sub__›"  rU  r*   c           	     óf  — t          |d¦  «        rVt          | j        dz  |z  | j        dz  |z  | j        dz  |z  | j        dz  |z  | j        dz  |z  | j        dz  |z  ¦  «        S t          |¦  «        d         }|st          d¦  «        ‚t          dd¦  «        }| 
                    | |¦  «        S ©Nrj  rŸ  r   zmatrix not invertible)r;   ru  r!   rÑ
  r¼  r
  r`  rÎ  Úutil_invert_matrixÚZeroDivisionErrorrm  )r(   r€  rh  Úm2s       r)   Ú__truediv__zMatrix.__truediv__¤"  s½   € Ý�1�kÑ"Ô"ð 	GÝ˜$œ& 2™+ a™-¨¬°"©°Q©¸¼À¹ÀA¹Øœ& 2™+ a™-¨¬°"©°Q©¸¼À¹ÀA¹ñGô Gð Gå Ñ"Ô" 1Ô%ˆØð 	=Ý#Ð$;Ñ<Ô<Ð<Ý�A�a‰[Œ[ˆØ�yŠy˜˜rÑ"Ô"Ð"r*   c                óà   — t          |¦  «        t          |¦  «        cxk    rdk    sn t          d¦  «        ‚t          ||¦  «        \  | _        | _        | _        | _        | _        | _        | S )z.Multiply two matrices and replace current one.rô  rQ  )	r7   rÃ   Úutil_concat_matrixr!   rÑ
  r¼  r
  r`  rÎ  )r(   ÚoneÚtwos      r)   rm  zMatrix.concat®"  sj   € å�3‰xŒx�3˜s™8œ8Ð(Ð(Ò(Ð( qÒ(Ð(Ð(Ð(ÝÐ2Ñ3Ô3Ð3Ý9KÈCÐQTÑ9UÔ9UÑ6ˆŒ�”˜œ ¤¨¬°´Øˆr*   c                ó¾   — |€t          | ¦  «        }nt          |¦  «        }|d         dk    rdS |d         \  | _        | _        | _        | _        | _        | _        dS )z}Calculate the inverted matrix. Return 0 if successful and replace
        current one. Else return 1 and do nothing.
        Nr   r   )r  r!   rÑ
  r¼  r
  r`  rÎ  )r(   rÖ  r  s      r)   rg  zMatrix.invertµ"  s^   € ð ˆ;Ý$ TÑ*Ô*ˆCˆCå$ SÑ)Ô)ˆCØˆqŒ6�QŠ;ˆ;Ø�1Ø9<¸Q¼Ñ6ˆŒ�”˜œ ¤¨¬°´Øˆqr*   c                óê   — t          | j        ¦  «        t          k     rt          | j        ¦  «        t          k     p9t          | j        ¦  «        t          k     ot          | j        ¦  «        t          k     S )z,True if rectangles are mapped to rectangles.)rï  rÑ
  ÚEPSILONr¼  r!   r
  r.   s    r)   Úis_rectilinearzMatrix.is_rectilinearÂ"  sR   € õ �D”F‘”�gÒ%Ð?­#¨d¬f©+¬+½Ò*?ð >Ý�”‰[Œ[�7Ò"Ð<¥s¨4¬6¡{¤{µWÒ'<ð	>r*   c                óÌ  — t          |¦  «        }|dk     r|dz  }|dk     °|dk    r|dz  }|dk    °t          d|z
  ¦  «        t          k     r�n•t          d|z
  ¦  «        t          k     r8| j        }| j        }| j        | _        | j        | _        | | _        | | _        �nBt          d|z
  ¦  «        t          k     r5| j         | _        | j         | _        | j         | _        | j         | _        nòt          d|z
  ¦  «        t          k     r7| j        }| j        }| j         | _        | j         | _        || _        || _        n t          j        |¦  «        }t          j	        |¦  «        }t          j
        |¦  «        }| j        }| j        }||z  || j        z  z   | _        ||z  || j        z  z   | _        | |z  || j        z  z   | _        | |z  || j        z  z   | _        | S )z2Calculate pre rotation and replace current matrix.r   r´  g     €V@g     €f@g     àp@)ro  rï  r‰  r!   rÑ
  r¼  r
  rJ  r_  rb  ra  )r(   rc  r!   rÑ
  Úradrr  r¼  s          r)   Ú	prerotatezMatrix.prerotateÈ"  sÌ  € å�e‘”ˆØ�aŠiˆi˜ #™˜ˆe�aŠiˆiØ�sŠlˆl˜E S™L˜Eˆe�sŠlˆlÝˆq�5‰y‰>Œ>�GÒ#Ð#Ùå�˜‘ÑÔ¥Ò(Ð(Ø”ˆAØ”ˆAØ”VˆDŒFØ”VˆDŒFØ�RˆDŒFØ�RˆDŒF‰Få�˜‘ÑÔ¥'Ò)Ð)Ø”f�WˆDŒFØ”f�WˆDŒFØ”f�WˆDŒFØ”f�WˆDŒFˆFå�˜‘ÑÔ¥'Ò)Ð)Ø”ˆAØ”ˆAØ”f�WˆDŒFØ”f�WˆDŒFØˆDŒFØˆDŒFˆFõ ”,˜uÑ%Ô%ˆCÝ”˜‘”ˆAÝ”˜‘”ˆAØ”ˆAØ”ˆAØ˜‘U˜Q ¤™ZÑ'ˆDŒFØ˜‘U˜Q ¤™ZÑ'ˆDŒFØ�B˜‘F˜Q ¤™ZÑ'ˆDŒFØ�B˜‘F˜Q ¤™ZÑ'ˆDŒFàˆr*   c                óÂ   — t          |¦  «        }t          |¦  «        }| xj        |z  c_        | xj        |z  c_        | xj        |z  c_        | xj        |z  c_        | S )z1Calculate pre scaling and replace current matrix.©ro  r!   rÑ
  r¼  r
  )r(   ÚsxÚsys      r)   ÚprescalezMatrix.prescaleó"  sY   € å�2‰YŒYˆÝ�2‰YŒYˆØˆŒ�"‰ˆŒØˆŒ�"‰ˆŒØˆŒ�"‰ˆŒØˆŒ�"‰ˆŒØˆr*   c                ó
  — t          |¦  «        }t          |¦  «        }| j        | j        }}| xj        || j        z  z  c_        | xj        || j        z  z  c_        | xj        ||z  z  c_        | xj        ||z  z  c_        | S )z2Calculate pre shearing and replace current matrix.r�  )r(   rÆ  rF   r!   rÑ
  s        r)   ÚpreshearzMatrix.preshearý"  s|   € å�!‰HŒHˆÝ�!‰HŒHˆØŒv�t”vˆ1ˆØˆŒ�!�d”f‘*ÑˆŒØˆŒ�!�d”f‘*ÑˆŒØˆŒ�!�a‘%‰ˆŒØˆŒ�!�a‘%‰ˆŒØˆr*   c                óÎ   — t          |¦  «        }t          |¦  «        }| xj        || j        z  || j        z  z   z  c_        | xj        || j        z  || j        z  z   z  c_        | S )z5Calculate pre translation and replace current matrix.)ro  r`  r!   r¼  rÎ  rÑ
  r
  )r(   ÚtxÚtys      r)   ÚpretranslatezMatrix.pretranslate#  s_   € å�2‰YŒYˆÝ�2‰YŒYˆØˆŒ�"�t”v‘+  T¤V¡Ñ+Ñ+ˆŒØˆŒ�"�t”v‘+  T¤V¡Ñ+Ñ+ˆŒØˆr*   r,   )r/   r0   r1   rM  rT  rè   r[  ra  rŒ   ri  r)  rn  rp  rr  rt  rí   rz  r|  r‚  rm  rg  r6  rŠ  r�  r’  r”  r˜  Ú__inv__Ú__div__Únormr-   r*   r)   ru  ru  #"  s°  € € € € € ð3ð 3ð 3ðGð Gð Gð1ð 1ð 1ð2ð 2ð 2ð
Cð Cð Cð !%¨°¸ÀÈð 5'ð 5'ð 5'ð 5'ð 5'ðnð ð ðð ð ð"ð "ð "ðLð Lð Lð1ð 1ð 1ðð ð ð+ð +ð +ð
ð 
ð 
ðGð Gð Gð#ð #ð #ðð ð ðð ð ð ð ð>ð >ñ „Xð>ð
)ð )ð )ðVð ð ð	ð 	ð 	ðð ð ð €GØ€GØ€D€D€Dr*   ru  c                  ó0   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚIdentityMatrixz"Identity matrix [1, 0, 0, 1, 0, 0]c                ó    — t          d¦  «        S )N)r   r   r   r   r   r   )Úhashr.   s    r)   Ú__hash__zIdentityMatrix.__hash__#  s   € Ý�MÑ"Ô"Ð"r*   c                ó>   — t                                | dd¦  «         d S )NrŸ  )ru  rŒ   r.   s    r)   rŒ   zIdentityMatrix.__init__#  s   € Ý�Š˜˜c 3Ñ'Ô'Ð'Ð'Ð'r*   c                ó   — dS )Nz,IdentityMatrix(1.0, 0.0, 0.0, 1.0, 0.0, 0.0)r-   r.   s    r)   rí   zIdentityMatrix.__repr__#  s   € Ø=Ð=r*   c                óZ   — |dv rd| j         |<   d S |dv rd| j         |<   d S || j         |<   d S )NÚadrŸ  Úbcefrž  )r‚
  )r(   r   r¸   s      r)   Ú__setattr__zIdentityMatrix.__setattr__!#  sJ   € Ø�4ˆ<ˆ<Ø"%ˆDŒM˜$ÑÐÐØ�Vˆ^ˆ^Ø"%ˆDŒM˜$ÑÐÐà"'ˆDŒM˜$ÑÐÐr*   c                 ó    — t          d¦  «        ‚)NzIdentity is readonly)ÚNotImplementedError)r÷  s    r)   Ú	checkargszIdentityMatrix.checkargs)#  s   € Ý!Ð"8Ñ9Ô9Ð9r*   N)	r/   r0   r1   Ú__doc__r   rŒ   rí   r¦  r©  r-   r*   r)   r�  r�  #  se   € € € € € Ø,Ð,ð#ð #ð #ð(ð (ð (ð>ð >ð >ð(ð (ð (ð:ð :ð :ð :ð :r*   r�  c                  ó   — e Zd ZdZdd„ZdS )r/  z#link or outline destination detailsNc           	     ó
  ‡ ‡— |j         }| }d‰ _        d‰ _        d‰ _        d‰ _        d‰ _        t          ‰ _        t          dd¦  «        ‰ _	        t          ¦   «         ‰ _        d‰ _        |j        ‰ _        t          dd¦  «        ‰ _        |j        ‰ _        d„ }d„ }d„ Šˆˆ fd„}|rY‰ j                             d¦  «        s?d	|d         d
z   › dt#          |d
         ¦  «        › dt#          |d         ¦  «        › �‰ _        |j         rd‰ _        t$          ‰ _        ‰ j        sd‰ _        t          ‰ _        |�rX‰ j        �rP‰ j                             dd¦  «        ‰ _        ‰ j                             d¦  «        �rôt(          ‰ _         |‰ j        ¦  «        }	|	                     d¦  «        }
|
��|
                     ¦   «         rùt/          |
¦  «        d
z
  ‰ _        d}|	                     d¦  «        }|r¨|                     d¦  «        }t3          |¦  «        dk    r€	 t          t5          |d
         ¦  «        t5          |d         ¦  «        ¦  «        ‰ _	        ‰ j        t6          z  t8          z  ‰ _        d}n%# t:          $ r t<          rt?          ¦   «          Y nw xY w|s ||	                     d¦  «        ¦  «         nÔt@          ‰ _        tC          j"        d‰ j        ¦  «        }|sJ ‚|rq|ro || #                    d
¦  «        ¦  «        }| $                    ¦   «                              |¦  «        ‰ _        ‰ j        €t          ¦   «         ‰ _        |‰ j        d<   n7 |‰ j        ¦  «        ‰ _        n!t@          ‰ _         |‰ j        ¦  «        ‰ _        |j         �rO‰ j        s�nF‰ j                             d¦  «        rü‰ j        dd …         ‰ _        ‰ j                             d¦  «        r‰ j        dd …         ‰ _        d‰ _        d‰ _        tJ          ‰ _        ‰ j                             d¦  «        }t3          |¦  «        dk    rr|d
                              d¦  «        rWtL          ‰ _        |d         ‰ _        t/          |d
                              d¦  «        d         dd …         ¦  «        d
z
  ‰ _        n0d‰ j        v rd‰ _        t$          ‰ _        nd‰ _        tJ          ‰ _        tO          ‰ j        t          ¦  «        sJ ‚d S )Nr\   r   Fc                ó  — |                       d¦  «        r
| dd …         } |                      d¦  «        }t          ¦   «         }|D ];}|                     d¦  «        }|dk    r||dz   d …         ||d |…         <   Œ6d ||<   Œ<|S )Nr
  r   ú&r   r   )r3   r6   r5   r¡   )ra  rB   rG   rC   Úeqs        r)   Úuri_to_dictz&linkDest.__init__.<locals>.uri_to_dictB#  s‘   € Ø�~Š~˜cÑ"Ô"ð Ø˜!˜"˜"”g�Ø—I’I˜c‘N”NˆEÝ‘&”&ˆCØð %ð %�Ø—Y’Y˜s‘^”^�Ø˜’7�7Ø%)¨"¨Q©$¨%¨%¤[�C˜˜S˜b˜Sœ	‘N�Nà $�C˜‘I�IØˆJr*   c                óö   — |                       dd¦  «        }|                     d¦  «        }|d         }|dd…         D ]:}|dd…         }|t          t          |d¬	¦  «        ¦  «        z  }||dd…         z  }Œ;|S )
z'Unescape '%AB' substrings to chr(0xAB).z%%z%25ú%r   r   Nr   r
  )Úbase)rà  r6   r
  r4   )r   r6   r¶  rC   Úpieces        r)   Úunescapez#linkDest.__init__.<locals>.unescapeO#  s‹   € à—L’L  uÑ-Ô-ˆEØ—K’K Ñ$Ô$ˆEØ˜A”hˆGØ˜a˜b˜bœ	ð $ð $�Ø˜R˜a˜Rœ�Ø�3�s 5¨rÐ2Ñ2Ô2Ñ3Ô3Ñ3�Ø˜4   œ8Ñ#��ØˆNr*   c                óÖ   — | €d S |                       ¦   «         } | sd S |                      ¦   «         dv rd S 	 t          | ¦  «        S # t          $ r t          rt          ¦   «          Y d S w xY w)N)r¸  Únan)r  rÒ  ro  rg   r
  rv   rq   s    r)   rí  z#linkDest.__init__.<locals>.as_floatZ#  s…   € Øˆ|Ø�tØ—:’:‘<”<ˆDØð Ø�tØ�zŠz‰|Œ|˜Ð.Ð.Ø�tðÝ˜T‘{”{Ð"øÝð ð ð Ý'ð %Ý"Ñ$Ô$Ð$Ø�t�tðøøøs   ¶A ÁA(Á'A(c                óN  •— | sdS d„ |                       d¦  «        D ¦   «         }|sdS |d         }|sdS |d         dk    rd|› �}|dd …         }|dv rt          dd¦  «        ‰_        dS |d	v rSt          |¦  «        dk    r ‰|d         ¦  «        nd }|�)t          d|¦  «        ‰_        ‰j        t
          z  ‰_        dS |d
v rSt          |¦  «        dk    r ‰|d         ¦  «        nd }|�)t          |d¦  «        ‰_        ‰j        t          z  ‰_        dS |dk    rnt          |¦  «        dk    rY ‰|d         ¦  «        } ‰|d         ¦  «        }|�5|�3t          ||¦  «        ‰_        ‰j        t          z  t
          z  ‰_        dS dS |dk    r’t          |¦  «        dk    r ‰|d         ¦  «        nd }t          |¦  «        dk    r ‰|d         ¦  «        nd }|� |‰j        _        ‰j        t          z  ‰_        |� |‰j        _        ‰j        t
          z  ‰_        dS dS )NFc                ó6   — g | ]}|                      ¦   «         ‘ŒS r-   r÷  r¬   s     r)   r¯   z9linkDest.__init__.<locals>.apply_view.<locals>.<listcomp>l#  s    € Ð8Ð8Ð8 1�Q—W’W‘Y”YÐ8Ð8Ð8r*   r   r   rW  r   rü  Trý  rþ  rÿ  rK  r   rû  r   )	r6   rì  Últr7   r¾  ÚLINK_FLAG_T_VALIDÚLINK_FLAG_L_VALIDr(  r)  )ÚviewrB   r   r÷  r	  r  rí  r(   s         €€r)   Ú
apply_viewz%linkDest.__init__.<locals>.apply_viewi#  s\  ø€ Øð Ø�uØ8Ð8¨¯
ª
°3©¬Ð8Ñ8Ô8ˆEØð Ø�uØ˜”8ˆDØð Ø�uØ�AŒw˜#Š~ˆ~Ø!˜4�z�z�Ø˜˜˜”9ˆDàÐ(Ð(Ð(Ý  1™+œ+�”Ø�tàÐ*Ð*Ð*Ý+.¨t©9¬9¸ª>¨>�h�h˜t AœwÑ'Ô'Ð'¸t�Ø�?Ý# A s™mœm�D”GØ!%¤Õ.?Ñ!?�D”JØ�tàÐ*Ð*Ð*Ý,/°©I¬I¸ªN¨N�x�x  Q¤Ñ(Ô(Ð(À�ØÐ#Ý# D¨!™nœn�D”GØ!%¤Õ.?Ñ!?�D”JØ�tà�wŠˆÝ�t‘9”9 ’>�>Ø#˜8 D¨¤GÑ,Ô,�DØ"˜( 4¨¤7Ñ+Ô+�CØÐ'¨C¨OÝ"'¨¨cÑ"2Ô"2˜œØ%)¤ZÕ2CÑ%CÕFWÑ%W˜œ
Ø#˜tØ�uà�vŠ~ˆ~Ý,/°©I¬I¸ªN¨N�x�x  Q¤Ñ(Ô(Ð(À�Ý+.¨t©9¬9¸ª>¨>�h�h˜t AœwÑ'Ô'Ð'¸t�ØÐ#Ø $�D”G”IØ!%¤Õ.?Ñ!?�D”JØ�?Ø #�D”G”IØ!%¤Õ.?Ñ!?�D”JØ�tà�5r*   r
  z#page=r   z&zoom=0,r   r   r1  z	&zoom=nanz&zoom=0rÖ   r]  r   Tr½  z^#nameddest=(.*)Ú	nameddestzfile:r   z//zpage=r®  r_   )(r°  rê  Ú	file_specr¾  Úis_mapÚis_urirÖ	  rZ  rì  rº  r5   r  Ú
new_windowrÖ   ri  ra  r3   r¶   rh  rà  rb  r8   Úisdigitr4   r6   r7   ro  r¼  r»  rg   r
  rv   Ú
LINK_NAMEDÚrer  Úgroupr	  rg  re  r>   )r(   r  ÚrlinkrÉ   ÚisExtÚisIntr°  rµ  r¾  ÚparamsÚpage_argÚhave_locationr]  Ú
zoom_itemsr€  r  Úftabrí  s   `                @r)   rŒ   zlinkDest.__init__2#  sÞ  øø€ Ø”ˆØ�	ˆØˆŒ	ØˆŒØˆŒ
ØˆŒØˆŒÝˆŒ	Ý˜˜1‘+”+ˆŒÝ‘V”VˆŒ
ØˆŒØ”HˆŒ	Ý˜˜1‘+”+ˆŒØ”7ˆŒð	ð 	ð 	ð		ð 		ð 		ð	ð 	ð 	ð4	ð 4	ð 4	ð 4	ð 4	ð 4	ðl ð 	b˜œ×,Ò,¨SÑ1Ô1ð 	bØa  a¤¨1¡ÐaÐaµiÀÀaÄÑ6IÔ6IÐaÐaÍIÐV[Ð\]ÔV^ÑL_ÔL_ÐaÐaˆDŒHØŒ?ð 	!ØˆDŒIÝ ˆDŒIØŒxð 	"ØˆDŒIÝ!ˆDŒIØñ &	3�T”Xñ &	3Ø”x×'Ò'¨°YÑ?Ô?ˆDŒHØŒx×"Ò" 3Ñ'Ô'ñ $3Ý%�”	Ø$˜ T¤XÑ.Ô.�Ø!Ÿ:š: fÑ-Ô-�ØÑ'¨H×,<Ò,<Ñ,>Ô,>Ð'Ý # H¡¤°Ñ 1�D”IØ$)�MØ!Ÿ:š: fÑ-Ô-�DØð 	5Ø%)§Z¢Z°¡_¤_˜
Ý˜z™?œ?¨aÒ/Ð/ð5Ý*/µ°jÀ´mÑ0DÔ0DÅeÈJÐWXÌMÑFZÔFZÑ*[Ô*[ ¤Ø-1¬ZÕ:KÑ-KÕN_Ñ-_ ¤
Ø04  øÝ#,ð 5ð 5ð 5Ý#7ð !5Ý$2Ñ$4Ô$4Ð$4øøð5øøøð )ð 7Ø"˜
 6§:¢:¨fÑ#5Ô#5Ñ6Ô6Ð6øå *�D”IÝœÐ!3°T´XÑ>Ô>�AØ#�O�O˜8Øð 	; Að 	;Ø ( ¨¯ª°©¬Ñ 4Ô 4˜Ø%-×%;Ò%;Ñ%=Ô%=×%AÒ%AÀ%Ñ%HÔ%H˜œ
Øœ:Ð-õ *.©¬˜DœJØ27˜œ
 ;Ñ/Ð/à%0 [°´Ñ%:Ô%:˜œ
˜
å&�”	Ø(˜[¨¬Ñ2Ô2�”
ØŒ?ñ 	(Ø”8ð (ÙØ”×$Ò$ WÑ-Ô-ð (Ø!%¤¨!¨"¨"¤�”Ø”>×,Ò,¨TÑ2Ô2ð 8Ø%)¤^°A°B°BÔ%7�D”NØ#�”Ø�”Ý'�”	Ø”~×+Ò+¨CÑ0Ô0�Ý�t‘9”9 ’>�>Ø˜A”w×)Ò)¨'Ñ2Ô2ð GÝ$.˜œ	Ø)-¨a¬˜œÝ$'¨¨Q¬¯ª°cÑ(:Ô(:¸1Ô(=¸a¸b¸bÔ(AÑ$BÔ$BÀQÑ$F˜œ	øØ˜œ��Ø"�”Ý$�”	�	à"�”Ý'�”	Ý˜$œ*¥dÑ+Ô+Ð+Ð+Ð+Ð+Ð+s   ÈAI7 É7JÊJr,   ©r/   r0   r1   rª  rŒ   r-   r*   r)   r/  r/  /#  s4   € € € € € Ø-Ð-ðr,ð r,ð r,ð r,ð r,ð r,r*   r/  c                  ól   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zed
„ ¦   «         Zd„ Zd„ Zdd„ZdS )r:  z6
    Class describing a PDF form field ("widget")
    c                ó¸  — d | _         d| _        d| _        d | _        d | _        d | _        d | _        d | _        d | _        d| _	        d| _
        d| _        d | _        d | _        d | _        d | _        d| _        d| _        d| _        d| _        d| _        d| _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d| _        d S )Nr`	  r   ©r   r   r   ÚHelvr\   )rÁ  Úborder_styleÚborder_widthÚborder_dashesÚchoice_valuesÚ	rb_parentÚ
field_nameÚfield_labelÚfield_valueÚfield_flagsÚfield_displayÚ
field_typeÚfield_type_stringrX  Úbutton_captionÚ	is_signedrø   Ú	text_fontÚtext_fontsizeÚtext_maxlenÚtext_formatÚ_text_dar´
  Úscript_strokeÚscript_formatÚscript_changeÚscript_calcÚscript_blurÚscript_focusr÷   r  r.   s    r)   rŒ   zWidget.__init__ë#  só   € Ø ˆÔØˆÔØˆÔØ!ˆÔØ!ˆÔØˆŒàˆŒØˆÔØˆÔØˆÔØˆÔØˆŒØ!%ˆÔàˆŒØ"ˆÔØˆŒØ#ˆŒØˆŒØˆÔØˆÔØˆÔØˆŒàˆŒØ!ˆÔØ!ˆÔØ!ˆÔØˆÔØˆÔØ ˆÔàˆŒ	ØˆŒ	ˆ	ˆ	r*   c                ó(   — d| j         › d| j        › d�S )NzWidget:(field_type=z script=r˜  )rà  r´
  r.   s    r)   rí   zWidget.__repr__$  s    € ØS TÔ%;ÐSÐSÀTÄ[ÐSÐSÐSÐSr*   c                ó´   — | j         s	d| _         dS d}|D ];}| j                              ¦   «         |                     ¦   «         k    r
|| _          dS Œ<d| _         dS )zAEnsure text_font is from our list and correctly spelled.
        rÔ  N)ÚCourÚTiRorÔ  ÚZaDb)rã  rÒ  )r(   Úvalid_fontsrÎ  s      r)   Ú_adjust_fontzWidget._adjust_font$  sp   € ð Œ~ð 	Ø#ˆDŒNØˆFØ6ˆØð 	ð 	ˆAØŒ~×#Ò#Ñ%Ô%¨¯ª©¬Ò2Ð2Ø!"�”Ø��ð 3ð  ˆŒØˆr*   c           	     ó  — | j         t          dd¦  «        vrt          d¦  «        ‚| j         t          j        k    rÀ| j        dvr¹t          | d¦  «        r«| j        j        }|                     | j	        d¦  «        \  }}|dk    r}t          t          t          |dd…                              d	d
¦  «                             ¦   «         ¦  «        ¦  «        }|D ],}|| j	        k    r|                     |dd¦  «         Œ%dS dS dS dS dS )z Any widget type checks.
        r   r   zbad field type)FÚOffrê   zParent/Kidsr	  r1  rl  r\   ÚASz/OffN)rß  rL  rÃ   r�   ÚPDF_WIDGET_TYPE_RADIOBUTTONrÜ  r;   rê   rñ  r  rµ   rÝ  r4   rà  r6   rn  )r(   r*  Ú	kids_typeÚ
kids_valuerC  r  s         r)   Ú_checkerzWidget._checker!$  s1  € ð Œ?¥%¨¨1¡+¤+Ð-Ð-ÝÐ-Ñ.Ô.Ð.ð Œ?�eÔ?Ò?Ð?ÀDÔDTÐ\jÐDjÐDjÕovÐw{ð  ~Fñ  pGô  pGÐDjð ”+Ô$ˆCØ$'×$4Ò$4°T´YÀÑ$NÔ$NÑ!ˆI�zØ˜GÒ#Ð#Ý�c¥# z°!°B°$Ô'7×'?Ò'?ÀÀbÑ'IÔ'I×'OÒ'OÑ'QÔ'QÑRÔRÑSÔS�Ø!ð =ð =�DØ˜tœyÒ(Ð(Ø×(Ò(¨¨t°VÑ<Ô<Ð<øð @Ð?ÐDjÐDjÐDjÐDjð
 $Ð#ð=ð =r*   c                ó  — | j         sdS d}d}d}| j                              ¦   «         }t          |¦  «        D ]´\  }}|dk    rA||dz
           dd…         }t          ||dz
           ¦  «        }dx||<   x||dz
  <   ||dz
  <   ŒL|d	k    r't          ||dz
           ¦  «        g}dx||<   ||dz
  <   Œy|d
k    r5d„ ||dz
  |…         D ¦   «         }dx||<   x||dz
  <   x||dz
  <   ||dz
  <   Œ´Œµ|| _        || _        || _        d| _         dS )z°Extract font name, size and color from default appearance string (/DA object).

        Equivalent to 'pdf_parse_default_appearance' function in MuPDF's 'pdf-annot.c'.
        NrÔ  r   rÓ  ÚTfr   r   r\   ÚgÚrgc                ó,   — g | ]}t          |¦  «        ‘ŒS r-   ©ro  ©r­   rÎ  s     r)   r¯   z$Widget._parse_da.<locals>.<listcomp>L$  ó   € Ð6Ð6Ð6 A•u˜Q‘x”xÐ6Ð6Ð6r*   r   )rç  r6   ró  ro  rã  rä  rø   )r(   rW  rù  r_  Údatr®   rC   s          r)   r  zWidget._parse_da6$  se  € ð
 Œ}ð 	ØˆFØˆØˆØˆØŒm×!Ò!Ñ#Ô#ˆÝ  ‘~”~ð 	ð 	‰GˆAˆtØ�tŠ|ˆ|Ø˜1˜q™5”z ! " "”~�Ý˜c ! a¡%œjÑ)Ô)�Ø/1Ð1��A‘Ð1˜˜Q˜q™S™ C¨¨!©¡HØØ�sŠ{ˆ{Ý˜c ! a¡%œjÑ)Ô)Ð+�Ø$&Ð&��A‘˜˜Q˜q™S™ØØ�tŠ|ˆ|Ø6Ð6¨¨Q°©U°1¨W¬Ð6Ñ6Ô6�Ø:<Ð<��A‘Ð<˜˜Q˜q™S™Ð< C¨¨!©¡H¨s°1°Q±3©xØð ð ˆŒØ"ˆÔØˆŒØˆŒØˆr*   c                ón  — | j         j        s| j         j        rt          d¦  «        ‚| j        st          d¦  «        ‚| j        dk    rd| _        t          | j        ¦  «         t          | j        ¦  «         | j	        sd| _	        t          | j	        ¦  «         | j
        sd| _
        | j        sd| _        | j                             ¦   «         dd…         | _        | j        t          j        t          j        t          j        fv }| j        sd| _        n*t)          | j        ¦  «        t*          urt          d¦  «        ‚|s| j        sd| _        n*t)          | j        ¦  «        t*          urt          d	¦  «        ‚|s| j        sd| _        n*t)          | j        ¦  «        t*          urt          d
¦  «        ‚|s| j        sd| _        n*t)          | j        ¦  «        t*          urt          d¦  «        ‚|s| j        sd| _        n*t)          | j        ¦  «        t*          urt          d¦  «        ‚|s| j        sd| _        n*t)          | j        ¦  «        t*          urt          d¦  «        ‚|s| j        sd| _        n*t)          | j        ¦  «        t*          urt          d¦  «        ‚|                      ¦   «          dS )z$Validate the class entries.
        zbad rectzfield name missingÚUnnamedNrÓ  r   r   zscript content must be a stringz$script_calc content must be a stringz&script_change content must be a stringz&script_format content must be a stringz&script_stroke content must be a stringz$script_blur content must be a stringz%script_focus content must be a string)r÷   rZ	  rY	  rÃ   rÚ  rÛ  rp  rÁ  rX  rø   rÖ  rä  rÕ  r	  rß  r�   ÚPDF_WIDGET_TYPE_BUTTONÚPDF_WIDGET_TYPE_CHECKBOXrø  r´
  rÈ   rÑ  rë  rê  ré  rè  rì  rí  rû  )r(   Úbtn_types     r)   Ú	_validatezWidget._validateU$  sï  € ð ŒIÔ!ð 	)ØŒyÔ!ð	)õ ˜ZÑ(Ô(Ð(àŒð 	3ÝÐ1Ñ2Ô2Ð2àÔ˜yÒ(Ð(Ø#ˆDÔÝ�4Ô$Ñ%Ô%Ð%Ý�4”?Ñ#Ô#Ð#ØŒð 	(Ø'ˆDŒOÝ�4”?Ñ#Ô#Ð#àÔ ð 	"Ø !ˆDÔàÔ!ð 	#Ø!"ˆDÔà Ô-×3Ò3Ñ5Ô5°a¸°cÔ:ˆÔð ”?ÝÔ,ÝÔ.ÝÔ1ð'ð ˆð
 Œ{ð 	@ØˆDŒKˆKÝ�$”+ÑÔ¥cÐ)Ð)ÝÐ>Ñ?Ô?Ð?ð ð 	E˜4Ô+ð 	EØ#ˆDÔÐÝ�$Ô"Ñ#Ô#­3Ð.Ð.ÝÐCÑDÔDÐDàð 	G˜4Ô-ð 	GØ!%ˆDÔÐÝ�$Ô$Ñ%Ô%­SÐ0Ð0ÝÐEÑFÔFÐFàð 	G˜4Ô-ð 	GØ!%ˆDÔÐÝ�$Ô$Ñ%Ô%­SÐ0Ð0ÝÐEÑFÔFÐFàð 	G˜4Ô-ð 	GØ!%ˆDÔÐÝ�$Ô$Ñ%Ô%­SÐ0Ð0ÝÐEÑFÔFÐFàð 	E˜4Ô+ð 	EØ#ˆDÔÐÝ�$Ô"Ñ#Ô#­3Ð.Ð.ÝÐCÑDÔDÐDàð 	F˜4Ô,ð 	FØ $ˆDÔÐÝ�$Ô#Ñ$Ô$­CÐ/Ð/ÝÐDÑEÔEÐEà�Š‰Œˆˆˆr*   c                óz  — | j         sdS | j        j        }|sJ ‚t          |¦  «        }t          j        || j         ¦  «        }t          j        |t          d¦  «        ¦  «        }|                     ¦   «         sdS |                     t          d¦  «        | j	        ¦  «         |                     t          d¦  «        ¦  «        }| 
                    ¦   «         st          d¦  «         dS t          |                     ¦   «         ¦  «        D ]¯}|                     |¦  «        }|                     ¦   «         sŒ,|                     ¦   «         }|| j         k    rŒL|                     t          d¦  «        ¦  «        }	|	                     ¦   «         dk    sŒ‡|                     t          d¦  «        | j	        ¦  «         Œ°dS )	a  Propagate the field flags.

        If this widget has a "/Parent", set its field flags and that of all
        its /Kids widgets to the value of the current widget.
        Only possible for widgets existing in the PDF.

        Returns True or False.
        Fr˜  ÚFfr†  z0warning: malformed PDF, Parent has no Kids arrayr†  r:  T)r  rê   rÎ   r�   r�  r  r  rz  rI  rÝ  rŽ  rr   rL  r›  rœ  r  ry  )
r(   r*  rZ  Ú
pdf_widgetr˜  rˆ  r®   r‰  r  r  s
             r)   Ú_sync_flagszWidget._sync_flagsœ$  s¨  € ð Œyð 	Ø�5ØŒkÔ ˆØˆ
ˆ
ˆsÝ˜sÑ#Ô#ˆåÔ*¨3°´	Ñ:Ô:ˆ
ÝÔ# Jµ¸Ñ0BÔ0BÑCÔCˆØ×!Ò!Ñ#Ô#ð 	Ø�5ð 	×Ò¥¨¡¤°Ô0@ÑAÔAÐAð ×"Ò"¥8¨FÑ#3Ô#3Ñ4Ô4ˆØ× Ò Ñ"Ô"ð 	ÝÐFÑGÔGÐGØ�5å�t×)Ò)Ñ+Ô+Ñ,Ô,ð 	Cð 	CˆAà×$Ò$ QÑ'Ô'ˆCØ—?’?Ñ$Ô$ð ØØ—>’>Ñ#Ô#ˆDØ�t”yÒ Ð ØØ×&Ò&¥x°	Ñ':Ô':Ñ;Ô;ˆGØ×&Ò&Ñ(Ô(¨HÒ4Ð4Øà× Ò ¥¨$¡¤°Ô1AÑBÔBÐBÐBàˆtr*   c                ó&  — | j         dvrdS t          | d¦  «        r| j        j        }ndS | j        }dddœ}|                     |d¦  «        }|d         dk    rfg }|d         d	d
…         }|                     d¦  «        dd…         }|D ]/}|                     |                     ¦   «         d         ¦  «         Œ0||d<   |d         dk    r™g }t          |d                              d¦  «        d         ¦  «        }|                     |¦  «        }|                     d¦  «        dd…         }|D ]/}|                     |                     ¦   «         d         ¦  «         Œ0||d<   |                     |d¦  «        }	|	d         dk    rfg }
|	d         d	d
…         }	|	                     d¦  «        dd…         }|D ]/}|
                     |                     ¦   «         d         ¦  «         Œ0|
|d<   |	d         dk    r™g }
t          |	d                              d¦  «        d         ¦  «        }|                     |¦  «        }	|	                     d¦  «        dd…         }|D ]/}|
                     |                     ¦   «         d         ¦  «         Œ0|
|d<   |S )a	  Return the on/off state names for button widgets.

        A button may have 'normal' or 'pressed down' appearances. While the 'Off'
        state is usually called like this, the 'On' state is often given a name
        relating to the functional context.
        ©r   r   Nrê   )rM  r³  zAP/Nr   r5   r   r   r×  rW  rM  r  r³   zAP/Dr³  )	rß  r;   rê   r  rñ  r6   rk   r4   rˆ  )r(   r*  r  ÚstatesÚAPNÚnstatesÚapntr(  ÚnxrefÚAPDÚdstatesÚapdtÚdxrefs                r)   Úbutton_stateszWidget.button_statesÉ$  sš  € ð Œ? &Ð(Ð(Ø�4Ý�4˜Ñ"Ô"ð 	Ø”+Ô$ˆCˆCàˆFØŒyˆØ ¨$Ð/Ð/ˆØ×Ò˜t VÑ,Ô,ˆØˆqŒ6�VÒÐØˆGØ�a”&˜˜2˜”,ˆCØ—9’9˜S‘>”> ! " "Ô%ˆDØð -ð -�Ø—’˜qŸwšw™yœy¨œ|Ñ,Ô,Ð,Ð,Ø&ˆF�8ÑØˆqŒ6�VÒÐØˆGÝ˜˜AœŸš SÑ)Ô)¨!Ô,Ñ-Ô-ˆEØ—/’/ %Ñ(Ô(ˆCØ—9’9˜S‘>”> ! " "Ô%ˆDØð -ð -�Ø—’˜qŸwšw™yœy¨œ|Ñ,Ô,Ð,Ð,Ø&ˆF�8ÑØ×Ò˜t VÑ,Ô,ˆØˆqŒ6�VÒÐØˆGØ�a”&˜˜2˜”,ˆCØ—9’9˜S‘>”> ! " "Ô%ˆDØð -ð -�Ø—’˜qŸwšw™yœy¨œ|Ñ,Ô,Ð,Ð,Ø$ˆF�6‰NØˆqŒ6�VÒÐØˆGÝ˜˜AœŸš SÑ)Ô)¨!Ô,Ñ-Ô-ˆEØ—/’/ %Ñ(Ô(ˆCØ—9’9˜S‘>”> ! " "Ô%ˆDØð -ð -�Ø—’˜qŸwšw™yœy¨œ|Ñ,Ô,Ð,Ð,Ø$ˆF�6‰NØˆr*   c                ó   — | j         j        S r,   )Ú_annotr=  r.   s    r)   r=  zWidget.nextú$  s   € àŒ{ÔÐr*   c                óÞ   — | j         dvrdS |                      ¦   «         }|€t          ¦   «         }|                     ¦   «         D ]}||         D ]}|dk    r|c c S ŒŒt	          d¦  «         dS )a�  Return the "On" value for button widgets.
        
        This is useful for radio buttons mainly. Checkboxes will always return
        "Yes". Radio buttons will return the string that is unequal to "Off"
        as returned by method button_states().
        If the radio button is new / being created, it does not yet have an
        "On" value. In this case, a warning is shown and True is returned.
        r  Nrö  z(warning: radio button has no 'On' value.T)rß  r  r5   rË  rr   )r(   ÚbstaterŸ  rF   s       r)   Úon_statezWidget.on_stateþ$  s•   € ð Œ? &Ð(Ð(Ø�4Ø×#Ò#Ñ%Ô%ˆØˆ>Ý‘V”VˆFØ—’‘”ð 	ð 	ˆAØ˜A”Yð ð �Ø˜’:�:Ø�H�H�H�H�Hð ðõ 	Ð:Ñ;Ô;Ð;Øˆtr*   c                óD   — t                                | j        ¦  «         dS )z.Reset the field value to its default.
        N)r  Ú_reset_widgetr  r.   s    r)   rc	  zWidget.reset%  s    € õ 	×Ò˜DœKÑ(Ô(Ð(Ð(Ð(r*   Fc                ó,  — |                       ¦   «          |                      ¦   «          d| _        t          | j        ¦  «        dk    rd| j        z   }nEt          | j        ¦  «        dk    rd| j        z   }n"t          | j        ¦  «        dk    r
d| j        z   } |j        | j        | j        | j        dœŽ| _        | j        rt          | j
        ¦  «         t                               | j
        | ¦  «         d| _        |r|                      ¦   «          d	S d	S )
z!Reflect Python object in the PDF.r\   r   ú!{:g} {:g} {:g} rg /{f:s} {s:g} Tfr   z{:g} g /{f:s} {s:g} TfrK  z%{:g} {:g} {:g} {:g} k /{f:s} {s:g} Tf©rÎ  rr  N)r
  rô  rç  r7   rø   rÆ  rã  rä  rë  Úutil_ensure_widget_calcr  r  Ú_save_widgetr  )r(   Ú
sync_flagsr±   s      r)   r  zWidget.update%  s$  € à�ŠÑÔÐà×ÒÑÔÐð ˆŒÝ�”Ñ!Ô! QÒ&Ð&Ø5¸¼ÑEˆCˆCÝ�”Ñ!Ô! QÒ&Ð&Ø*¨T¬]Ñ:ˆCˆCÝ�”Ñ!Ô! QÒ&Ð&Ø9¸D¼MÑIˆCØ"˜œ
 D¤O°t´~Ø&*Ô&8ð:ð :ð :ˆŒð Ôð 	1å# D¤KÑ0Ô0Ð0õ 	×Ò˜4œ;¨Ñ-Ô-Ð-ØˆŒØð 	Ø×ÒÑÔÐÐÐð	ð 	r*   NrÆ  )r/   r0   r1   rª  rŒ   rí   rô  rû  r  r
  r  r  r6  r=  r  rc	  r  r-   r*   r)   r:  r:  æ#  sí   € € € € € ðð ð#ð #ð #ðJTð Tð Tðð ð ð=ð =ð =ð*ð ð ð>Eð Eð EðN+ð +ð +ðZ/ð /ð /ðb ð ð  ñ „Xð ðð ð ð*)ð )ð )ð
ð ð ð ð ð r*   r:  )Ú_extrac                  óü   — e Zd Zd„ Zed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdgZdS )rX  c                ó   — || _         d S r,   )rÄ   ©r(   rÝ  s     r)   rŒ   zOutline.__init__<%  s   € ØˆŒ	ˆ	ˆ	r*   c                ó$   — t          | dd¦  «        S )zoutline destination detailsN©r/  r.   s    r)   rê  zOutline.dest?%  s   € õ ˜˜d DÑ)Ô)Ð)r*   c                ó$   — t          | d|¦  «        S )zo
        Like `dest` property but uses `document` to resolve destinations for
        kind=LINK_NAMED.
        Nr-  )r(   rÉ   s     r)   ÚdestinationzOutline.destinationD%  s   € õ
 ˜˜d HÑ-Ô-Ð-r*   c                óh   — | j         }|                     ¦   «         }|j        sd S t          |¦  «        S r,   )rÄ   r³  rÌ   rX  )r(   rÝ  Údown_ols      r)   r³  zOutline.downK%  ó4   € àŒYˆØ—'’'‘)”)ˆØÔ!ð 	ØˆFÝ�wÑÔÐr*   c                óª   — t           rt          j        | j        ¦  «        S | j        }|j        sdS |j        j        }|€dS t          j        |¦  «        S r½  )r  r(  ÚOutline_is_externalrÄ   rÌ   ra  r�   r3  )r(   rÝ  ra  s      r)   r°  zOutline.is_externalS%  sZ   € åð 	:õ Ô-¨t¬yÑ9Ô9Ð9ØŒYˆØŒ}ð 	Ø�5ØŒmÔˆØˆ;Ø�5ÝÔ(¨Ñ-Ô-Ð-r*   c                ó&   — 	 | j         j        j        S r,   )rÄ   rÌ   r$  r.   s    r)   r$  zOutline.is_openb%  s   € ð	0Ø”9Ô'Ô/Ð/r*   c                óh   — | j         }|                     ¦   «         }|j        sd S t          |¦  «        S r,   )rÄ   r=  rÌ   rX  )r(   rÝ  Únext_ols      r)   r=  zOutline.nexth%  r2  r*   c                ó0   — 	 | j         j        j        j        S r,   )rÄ   rÌ   rÖ   r.   s    r)   rÖ   zOutline.pagep%  s   € ð	2Ø”9Ô'Ô,Ô1Ð1r*   c                ó$   — | j         j        j        S r,   )rÄ   rÌ   ry  r.   s    r)   ry  zOutline.titlev%  s   € àŒyÔ#Ô)Ð)r*   c                ó:   — | j         }|j        sd S |j        j        S r,   )rÄ   rÌ   ra  r+  s     r)   ra  zOutline.uriz%  s#   € àŒYˆØŒ}ð 	Ø�4ØŒ}Ô Ð r*   c                ó$   — | j         j        j        S r,   )rÄ   rÌ   r(  r.   s    r)   r(  z	Outline.x�%  ó   € àŒyÔ#Ô%Ð%r*   c                ó$   — | j         j        j        S r,   )rÄ   rÌ   r)  r.   s    r)   r)  z	Outline.y…%  r<  r*   rÄ   N)r/   r0   r1   rŒ   r6  rê  r/  r³  r°  r$  r=  rÖ   ry  ra  r(  r)  r�
  r-   r*   r)   rX  rX  :%  sC  € € € € € ðð ð ð ð*ð *ñ „Xð*ð.ð .ð .ð ð ð  ñ „Xð ð ð.ð .ñ „Xð.ð ð#ð #ñ „Xð#ð
 ð ð  ñ „Xð ð ð%ð %ñ „Xð%ð
 ð*ð *ñ „Xð*ð ð!ð !ñ „Xð!ð ð&ð &ñ „Xð&ð ð&ð &ñ „Xð&ð �	€I€I€Ir*   rX  c                ór  ‡— t          j        ¦   «         }| |_        ||_        ||_        ||_        |r„‰rt          ‰t           j        ¦  «        sJ ‚nt          j        ¦   «         Š G ˆfd„dt           j        ¦  «        } |¦   «         }| 	                    | 
                    ¦   «         ¦  «         ||_        |S )z4
    Returns a mupdf.PdfFilterOptions instance.
    c                  ó(   •‡ — e Zd Zˆ ˆfd„Zd„ Zˆ xZS )ú'_make_PdfFilterOptions.<locals>.Factoryc                ó~   •— t          ¦   «                              ¦   «          |                      ¦   «          ‰| _        d S r,   )rÇ   rŒ   Úuse_virtual_filterÚsopts)r(   Ú	__class__rC  s    €€r)   rŒ   z0_make_PdfFilterOptions.<locals>.Factory.__init__¬%  s6   ø€ Ý‘”× Ò Ñ"Ô"Ð"Ø×'Ò'Ñ)Ô)Ð)Ø"�”
�
�
r*   c           	     ód   — 	 t          j        |||||| j                             ¦   «         ¦  «        S r,   )r'   rC  r  r�   Úll_pdf_new_sanitize_filter)r(   Úctxr*  ÚchainÚstruct_parentsÚ	transformr  s          r)   Úfilterz._make_PdfFilterOptions.<locals>.Factory.filter°%  s>   € ð	9õ Ô7ØØØ&Ø!ØØœ
×+Ò+Ñ-Ô-ñô ð r*   )r/   r0   r1   rŒ   rK  Ú__classcell__)rD  rC  s   @€r)   ÚFactoryr@  «%  sM   øø€ € € € € ð#ð #ð #ð #ð #ð #ðð ð ð ð ð ð r*   rM  )r�   ÚPdfFilterOptionsrŠ  r‹  rŒ  Ú	no_updater>   ÚPdfSanitizeFilterOptionsÚPdfFilterFactory2Úadd_factoryr  Ú_factory)	rŠ  r‹  rŒ  rO  r�  rC  r‘  rM  Úfactorys	        `   r)   r�  r�  Œ%  sÞ   ø€ õ Ô$Ñ&Ô&€GØ€G„OØ+€GÔØ€G„Mà!€GÔØð (#ð ð 	5Ý˜e¥UÔ%CÑDÔDÐDÐDÐDÐDåÔ2Ñ4Ô4ˆEð	ð 	ð 	ð 	ð 	ð 	ð 	•eÔ-ñ 	ô 	ð 	ð2 �'‘)”)ˆØ×Ò˜G×,Ò,Ñ.Ô.Ñ/Ô/Ð/Ø"ˆÔØ€Nr*   c                  óÈ  — e Zd Zd„ Zd„ Zd„ Zd„ Z�dd„Zddddddddej	        d	ddd
dfd„Z
d„ Zd„ Zd„ Z�dd„Zd„ Zdd„Z�dd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z�dd„Zd„ Z�dd„Z	 	 	 �dd!„Zd"„ Zd#„ Z�dd$„Zd%„ Z�dd'„Z d(„ Z!�dd)„Z"d*„ Z#d+„ Z$�dd,„Z%�dd0„Z&�dd3„Z'	 	 	 �d�dd;„Z(ddddddddej	        d	ddd
dd<œ�ddM„Z)	 	 �d�d dN„Z*�d!dQ„Z+�d"dT„Z,�d#dV„Z-�d#dW„Z.�ddX„Z/	 	 	 	 	 	 	 �d$�d%d\„Z0	 	 	 	 �d�d d]„Z1d�dd^„Z2�d�d d_„Z3�d&�d'da„Z4�d�d db„Z5�d(de„Z6df„ Z7dg„ Z8�ddh„Z9	 	 	 �d)�d*dn„Z:�d+do„Z;dp„ Z<dq„ Z=e>dr„ ¦   «         Z?e>ds„ ¦   «         Z@dt„ ZA�d+du„ZBe>dv„ ¦   «         ZCe>dw„ ¦   «         ZDdx„ ZE�d,dz„ZFd{„ ZG�d-d|„ZHe>�d.d~„¦   «         ZI	 	 	 	 	 	 	 	 	 	 	 	 �d/�d0dŒ„ZJ	 	 	 	 	 	 	 	 	 	 	 �d1�d2d�„ZK	 	 	 	 	 	 	 	 	 	 	 	 �d/�d3d�„ZL	 	 	 	 	 	 	 	 	 	 �d4�d5d‘„ZM	 	 	 	 	 	 	 	 	 	 	 �d1�d6d“„ZN	 	 	 	 	 	 	 	 	 	 	 	 �d7�d8d”„ZO	 	 	 	 	 	 	 	 	 	 	 �d9�d:d—„ZP	 	 	 	 	 	 	 	 	 	 	 	 �d;�d<d˜„ZQ	 	 	 	 	 	 	 	 	 	 	 	 	 �d=�d>d›„ZR	 	 	 	 	 	 	 	 	 	 	 �d?�d@d�„ZS	 	 	 	 	 	 	 	 	 	 	 �d?�d@dž„ZT�dAdŸ„ZUd „ ZVe>d¡„ ¦   «         ZWe>d¢„ ¦   «         ZXe>d£„ ¦   «         ZY�dd¤„ZZ�dd¥„Z[d¦„ Z\�d+d§„Z]�dB�dCd©„Z^	 	 �dD�dEd¬„Z_�dB�dFd­„Z`d®„ Za�dFd¯„Zbecdddd
d&d°œ�dGd¹„Zddº„ Ze	 	 �dH�dId¿„Zf�dBdÀ„ZgddÁ„Zh�dBdÂ„Zi�dJdÃ„Zj�dKdÄ„Zk	 �d�dLdÅ„ZldÆ„ ZmdÇ„ ZndÈ„ ZodÉ„ ZpdÊ„ Zq�d�dMdÍ„ZrdÎ„ ZsdÏ„ Zt	 	 �dNdÑ„Zudddddd	d&d&d
dÒœ	�dOdÔ„Zvd ddd&ddd&ddddddÕœdÖ„Zw�d�dPdÛ„ZxdddÐddddddÜd	dddd&d	d	ddÝœ�dQdæ„ZyddÜddd	d	dddÐddd	ddd&dddd	dçœ�dRdê„Zze>dë„ ¦   «         Z{e>dì„ ¦   «         Z|�ddí„Z}�dSdð„Z~dñ„ Zdò„ Z€e>dó„ ¦   «         Z�e>dô„ ¦   «         Z‚dõ„ Zƒdö„ Z„d÷„ Z…ddddøœ�d,dù„Z†e>dú„ ¦   «         Z‡e>�d.dû„¦   «         Zˆdü„ Z‰dd
dddýœ�dJdþ„ZŠdÿ„ Z‹�d „ ZŒ�d„ Z��d„ ZŽ�d�d„Z��d„ Z��d„ Z‘�d„ Z’	 	 	 	 	 	 �dT�dU�d„Z“e>�d„ ¦   «         Z”e>�d	„ ¦   «         Z•�dV�d
„Z–�d�d„Z—�d„ Z˜	 	 	 	 	 	 	 	 �dW�dX�d„Z™e>�d„ ¦   «         Zš e>eA�d�¬¦  «        Z›dZœdS (Y  rÒ   c                ó~  — t          |t          j        t          j        f¦  «        sJ d|› �¦   «         ‚|| _        d| _        d | _        d| _        t          ¦   «         | _	        || _
        |j        rEt          |t          j        ¦  «        r|j        j        j        | _        d S |j        j        | _        d S d | _        d S )Nz	page is: Tr\   )r>   r�   rÔ   rÓ   rÄ   rñ   Ú
last_pointÚ	draw_contr5   r8  rê   rÌ   rÇ   r^  )r(   rÖ   rÉ   s      r)   rŒ   zPage.__init__Ì%  s­   € Ý˜$¥¤­u¬}Ð =Ñ>Ô>ÐRÐRÐ@RÈDÐ@RÐ@RÑRÔRÐ>ØˆŒ	ØˆŒØˆŒØˆŒÝ™6œ6ˆÔØˆŒØŒ?ð 	Ý˜4¥¤Ñ/Ô/ð 5Ø"œoÔ3Ô:�”��à"œoÔ4�”��àˆDŒKˆKˆKr*   c                ó*   — |                       ¦   «         S r,   )rï   r.   s    r)   rí   zPage.__repr__Ü%  s   € Ø�|Š|‰~Œ~Ðr*   c                óB  — t          | dd ¦  «        }t          | j        j        t          j        ¦  «        r| j        j        j        j        }n| j        j        j        }|r:| j        j	        }| j        j
        �d}|dk    rd}d|› d|› d| j        j        d›d	�}nd|› �}|S )
Nrê   rM  r\   znew PDFrõ  z of <z, doc# r
  ú>)rì   r>   rÄ   rÌ   r�   Úpdf_pagerÇ   r^  rê   r   r	   r  )r(   rê   r^  r(  rG   s        r)   rï   zPage.__str__ß%  s·   € å˜˜x¨Ñ.Ô.ˆÝ�d”iÔ*­E¬NÑ;Ô;ð 	1Ø”YÔ)Ô/Ô6ˆFˆFà”YÔ)Ô0ˆFàð 	#Ø”Ô ˆAØŒ{Ô!Ð-Ø�Ø�BŠwˆwØ�ØK˜&ÐKÐK qÐKÐK°´Ô1FÐKÐKÐKÐKˆCˆCà"˜&Ð"Ð"ˆCØˆ
r*   c                ó  — t           r(t          j        | j        t	          |¦  «        ¦  «        }nÜ|                      ¦   «         }t          j        |t          j        ¦  «        }|rƒt	          |¦  «        }t          j	        |¦  «        }t          j
        |j        |j        |j        |j        z   |j        z
  |j        |j        z   |j        z
  ¦  «        }t          j        ||¦  «         t          j        |¦  «         t'          |d¦  «         |S ©Nr  )r  r   Ú_add_caret_annotrÄ   ÚJM_point_from_pyÚ	_pdf_pager�   Úpdf_create_annotrC  Úpdf_annot_rectrh  r(  r)  r	  r
  r  r  r±  rP  ÚJM_add_annot_id)r(   r-  rß   rÖ   r¢  r  s         r)   r_  zPage._add_caret_annotò%  sâ   € Ýð 	(ÝÔ*¨D¬IÕ7GÈÑ7NÔ7NÑOÔOˆEˆEà—>’>Ñ#Ô#ˆDÝÔ*¨4µÔ1FÑGÔGˆEØð 3Ý$ UÑ+Ô+�ÝÔ(¨Ñ/Ô/�Ý”L ¤ a¤c¨1¬3°´©:¸¼Ñ+<¸a¼cÀAÄD¹jÈ1Ì4Ñ>OÑPÔP�ÝÔ(¨°Ñ2Ô2Ð2ÝÔ" 5Ñ)Ô)Ð)Ý˜E 3Ñ'Ô'Ð'Øˆr*   Nc                ó$  — |                       ¦   «         }|r|n|}|r|n|}	t          |¦  «        }
t          |¦  «        }|j        st	          t
          ¦  «        ‚t          j        |t          j        ¦  «        }t          j	        |¦  «        }t          j
        |
j        |
j        |
j        |j        z   |j        z
  |
j        |j        z   |j        z
  ¦  «        }t          j        ||¦  «         t          j        }t          j        ||¦  «         |rt          j        ||¦  «         t+          |                     ¦   «         ||||	d¦  «        }t          j        t          j        |¦  «        t3          d¦  «        |¦  «         t          j        t          j        |¦  «        t3          d¦  «        |¦  «         t          j        |¦  «         t          j        ||¦  «         t          j        ||¦  «         t9          |d¦  «         t;          |¦  «        S )Nr   r¥  r  r  )ra  r`  r'  rÌ   r®  r(  r�   rb  rE  rc  Úfz_make_rectr(  r)  r	  r
  r  r  r±  ÚPDF_ANNOT_IS_PRINTru  Úpdf_set_annot_icon_namerõ  r*  rN  rÿ   r  r€  rP  rd  râ   )r(   r-  r-  rf   r  r¹  ÚiconrÖ   Úufr
  r¢  Úfilebufrß   r  r¾  r  s                   r)   Ú_add_file_annotzPage._add_file_annot&  sÇ  € Ø�~Š~ÑÔˆØ#Ð1ˆYˆY¨ˆØÐ&ˆDˆD˜hˆÝ˜UÑ#Ô#ˆÝ$ WÑ-Ô-ˆØÔ!ð 	-Ý�^Ñ,Ô,Ð,ÝÔ& t­UÔ-LÑMÔMˆÝÔ  Ñ'Ô'ˆÝÔ˜qœs A¤C¨¬¨q¬t©°a´dÑ):¸A¼CÀ!Ä$¹JÈÌÑ<MÑNÔNˆÝÔ  ¨Ñ*Ô*Ð*ÝÔ(ˆÝÔ! %¨Ñ/Ô/Ð/àð 	7ÝÔ)¨%°Ñ6Ô6Ð6å˜DŸHšH™JœJ¨°¸2¸qÀ!ÑDÔDˆÝÔ�5Ô.¨uÑ5Ô5µxÀ±~´~ÀsÑKÔKÐKÝÔ&¥uÔ':¸5Ñ'AÔ'AÅ8ÈJÑCWÔCWÐYaÑbÔbÐbÝÔ˜uÑ%Ô%Ð%ÝÔ  ¨Ñ*Ô*Ð*ÝÔ! %¨Ñ/Ô/Ð/Ý˜˜sÑ#Ô#Ð#Ý�U‰|Œ|Ðr*   rú  r   r   Fc                óÆ  — d|› �}|                       ¦   «         }|r|st          d¦  «        ‚|r|s|}t          |¦  «        \  }}t          |¦  «        \  }}t          |¦  «        }t	          j        |¦  «        st	          j        |¦  «        rt          t          ¦  «        ‚t	          j        |t          j	        ¦  «        }t	          j
        |¦  «        }|st	          j        ||¦  «         nHt	          j        |t          d¦  «        |¦  «         |r#t	          j        |t          d¦  «        |¦  «         t	          j        ||¦  «         |dk     r|dz  }|dk     °|dk    r|dz  }|dk    °|dk    r#t	          j        |t          d¦  «        |¦  «         t	          j        ||¦  «         |dk    rt	          j        ||d |…         ¦  «         t	          j        ||¦  «         t	          j        ||¦  «         |	r'|	D ]$}t	          j        |t+          |¦  «        ¦  «         Œ%|
rwt	          j        |t          d¦  «        t          d	¦  «        ¦  «         t	          j        ||¦  «         t1          |
¦  «        }t3          j        |t7          |
¦  «        |¦  «         |st9          |||||¦  «         t	          j        |¦  «         t=          |d
¦  «         t?          |¦  «        }|S )Nzï<?xml version="1.0"?>
            <body xmlns="http://www.w3.org/1999/xtml"
            xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/"
            xfa:contentType="text/html" xfa:APIVersion="Acrobat:8.0.0" xfa:spec="2.4">
            rÅ  rÄ  ÚDSr   r´  r4  r¹  ÚFreeTextCalloutr  ) ra  rÃ   r;  r   r�   r¯  r®  r°  rb  rD  rÿ   r~  r€  r  r±  rI  Úpdf_set_annot_quaddingrJ  Úpdf_set_annot_border_widthr¡  Úpdf_add_annot_border_dash_itemro  rN  Úpdf_set_annot_callout_styler7   r   ÚJM_set_annot_callout_linerµ   rÛ  rP  rd  râ   )r(   r÷   r   rú   rù   rø   rX  rÁ  rÖ  r_  ÚcalloutÚline_endrV  r  rY  Úrichtextr^  r    rÖ   r\  r]  Úntcolr÷  r  rß   r   r
  Úpoint_countr  s                                r)   Ú_add_freetext_annotzPage._add_freetext_annot&  s  € ð$ð ð	ð ˆð
 �~Š~ÑÔˆØð 	N ð 	NÝÐLÑMÔMÐMØð 	& 
ð 	&Ø%ˆJÝ+¨JÑ7Ô7‰ˆˆtÝ+¨JÑ7Ô7‰ˆˆtÝ˜DÑ!Ô!ˆÝÔ$ QÑ'Ô'ð 	,­5Ô+AÀ!Ñ+DÔ+Dð 	,Ý�lÑ+Ô+Ð+ÝÔ& t­UÔ-FÑGÔGˆÝÔ'¨Ñ.Ô.ˆ	ð ð 	PÝÔ(¨°Ñ5Ô5Ð5Ð5åÔ*¨9µX¸d±^´^ÀRÑHÔHÐHØð PÝÔ.¨y½À$¹¼ÈÑOÔOÐOåÔ  ¨Ñ*Ô*Ð*à�qŠjˆjØ�c‰MˆFð �qŠjˆjà˜ŠmˆmØ�c‰MˆFð ˜Šmˆmà�QŠ;ˆ;ÝÔ" 9­h°xÑ.@Ô.@À&ÑIÔIÐIåÔ$ U¨EÑ2Ô2Ð2à�1Š9ˆ9ÝÔ% e¨T°&°5°&¬\Ñ:Ô:Ð:åÔ(¨°Ñ=Ô=Ð=ÝÔ# E¨7Ñ3Ô3Ð3Øð 	FØð Fð F�ÝÔ4°U½EÀ!¹H¼HÑEÔEÐEÐEð ð 	PÝÔ˜y­(°4©.¬.½(ÐCTÑ:UÔ:UÑVÔVÐVÝÔ-¨e°XÑ>Ô>Ð>Ý˜g™,œ,ˆKÝÔ+¨Eµ5¸±>´>À;ÑOÔOÐOð ð 	EÝ˜U E¨4°¸8ÑDÔDÐDåÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#Ý�E‰lŒlˆØˆ
r*   c                ó¨  — t          | j        ¦  «        }t          |¦  «        st          t          ¦  «        ‚t          j        ¦   «         }t          j        |t          j        d¦  «        |¦  «         t          j	        |¦  «        }t          j
        |t
          j        ¦  «        }t          j        |¦  «        }t          |¦  «        }t          j        |                     ¦   «         |¦  «        }t!          |¦  «        D ]þ}	||	         }
t          |
¦  «        }t          j        |                     ¦   «         d|z  ¦  «        }t!          |¦  «        D ]–}|
|         }t          |¦  «        rt#          |¦  «        dk    rt          t          ¦  «        ‚t          j        t'          |¦  «        |¦  «        }t          j        ||j        ¦  «         t          j        ||j        ¦  «         Œ—t          j        ||¦  «         Œÿt          j        |t3          d¦  «        |¦  «         t          j        |¦  «         t7          |d¦  «         t9          |¦  «        S )Nr   r   r"  r  )rÚ   rÄ   ÚPySequence_CheckrÃ   ÚMSG_BAD_ARG_INK_ANNOTr�   rr  r#  rh  rs  rb  rF  rÿ   r7   rK  r*  rL  ÚPySequence_Sizer'  r`  rM  r(  r)  r�  rN  r  rP  rd  râ   )r(   r´   rÖ   rÞ  Úinv_ctmrß   r   Ún0Úinklistr�  ÚsublistÚn1rh  r®   r¢  r-  s                   r)   Ú_add_ink_annotzPage._add_ink_annotl&  sò  € Ý˜DœIÑ&Ô&ˆÝ Ñ%Ô%ð 	5ÝÕ3Ñ4Ô4Ð4ÝŒnÑÔˆÝÔ  ¥u¤|°A¡¤¸Ñ<Ô<Ð<ÝÔ(¨Ñ-Ô-ˆÝÔ& t­UÔ-@ÑAÔAˆÝÔ'¨Ñ.Ô.ˆ	Ý�‰YŒYˆÝÔ% d§h¢h¡j¤j°"Ñ5Ô5ˆå�r‘”ð 	2ð 	2ˆAØ˜1”gˆGÝ�W‘”ˆBÝÔ(¨¯ª©¬°Q¸±VÑ<Ô<ˆFå˜2‘Y”Yð ;ð ;�Ø˜A”J�Ý'¨Ñ*Ô*ð =­o¸aÑ.@Ô.@ÀAÒ.EÐ.EÝ$Õ&;Ñ<Ô<Ð<ÝÔ0Õ1AÀ!Ñ1DÔ1DÀgÑNÔN�ÝÔ)¨&°%´'Ñ:Ô:Ð:ÝÔ)¨&°%´'Ñ:Ô:Ð:Ð:åÔ  ¨&Ñ1Ô1Ð1Ð1åÔ˜9¥h¨yÑ&9Ô&9¸7ÑCÔCÐCÝÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#Ý�U‰|Œ|Ðr*   c                óH  — |                       ¦   «         }t          j        |t          j        ¦  «        }t	          |¦  «        }t	          |¦  «        }t          j        |||¦  «         t          j        |¦  «         t          |d¦  «         |j        sJ ‚t          |¦  «        S r^  )
ra  r�   rb  r>  r`  Úpdf_set_annot_linerP  rd  rÌ   râ   )r(   r  r  rÖ   rß   r!   rÑ
  s          r)   Ú_add_line_annotzPage._add_line_annotŒ&  s‘   € Ø�~Š~ÑÔˆÝÔ& t­UÔ-AÑBÔBˆÝ˜RÑ Ô ˆÝ˜RÑ Ô ˆÝÔ  ¨¨1Ñ-Ô-Ð-ÝÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#ØÔÐÐÐÝ�U‰|Œ|Ðr*   c                ó¨  — |                       ¦   «         }t          |¦  «        dk     rt          t          ¦  «        ‚t	          j        ||¦  «        }|D ]M}t          |¦  «        dk    rt          t          ¦  «        ‚t          |¦  «        }t	          j        ||¦  «         ŒNt	          j	        |¦  «         t          |d¦  «         t          |¦  «        S )Nr   r  )ra  r7   rÃ   ÚMSG_BAD_ARG_POINTSr�   rb  r~  r`  Úpdf_add_annot_vertexrP  rd  râ   )r(   r  rò  rÖ   rß   r¢  r-  s          r)   Ú_add_multilinezPage._add_multiline—&  sÂ   € Ø�~Š~ÑÔˆÝˆv‰;Œ;˜Š?ˆ?ÝÕ0Ñ1Ô1Ð1ÝÔ& t¨ZÑ8Ô8ˆØð 	5ð 	5ˆAÝ Ñ"Ô" aÒ'Ð'Ý Õ"4Ñ5Ô5Ð5Ý$ QÑ'Ô'ˆEÝÔ& u¨eÑ4Ô4Ð4Ð4åÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#Ý�U‰|Œ|Ðr*   c                ó2  — |                       ¦   «         }g d¢}d}	t          j        |t          j        ¦  «        }
t	          |¦  «        }t          j        |¦  «        }t          j        |
|¦  «         |r›t          |¦  «        \  }	}t          j        | 	                    ¦   «         |	¦  «        }t          |	¦  «        D ]}t          j        |||         ¦  «         Œt          j        t          j        |
¦  «        t          d¦  «        |¦  «         |r¨|sJ ‚t          j        t          j        |
¦  «        dt          j        |¦  «        ¦  «         t          j        t          j        |
¦  «        t          d¦  «        |¦  «         t          j        t          j        |
¦  «        t          d¦  «        |¦  «         t          j        |
¦  «         t)          |
d¦  «         t          j        |
j        ¦  «        }
t          j        |
¦  «        }
t1          |
¦  «        S )N)r   r   r   r   r   r3  rõ   ÚDArö   r  )ra  r�   rb  rý   ÚJM_quad_from_pyÚfz_rect_from_quadr±  r;  rK  r*  rL  rM  rN  rÿ   r  r�  r‚  r€  rI  rP  rd  Úll_pdf_keep_annotrÌ   rä   râ   )r(   r  r   Úda_strr  rû   rø   rÖ   r]  r\  rß   Úqr  rL  r®   s                  r)   Ú_add_redact_annotzPage._add_redact_annot¦&  sÒ  € Ø�~Š~ÑÔˆØˆ}ˆ}ˆØˆÝÔ& t­UÔ-CÑDÔDˆÝ˜DÑ!Ô!ˆÝÔ# AÑ&Ô&ˆåÔ  ¨Ñ*Ô*Ð*Øð 	PÝ/°Ñ5Ô5‰KˆE�4ÝÔ% d§h¢h¡j¤j°%Ñ8Ô8ˆCÝ˜5‘\”\ð 8ð 8�ÝÔ)¨#¨t°A¬wÑ7Ô7Ð7Ð7ÝÔ�uÔ2°5Ñ9Ô9½8ÀD¹>¼>È3ÑOÔOÐOØð 	UØˆMˆM�6ÝÔÝÔ'¨Ñ.Ô.Ø!ÝÔ-¨dÑ3Ô3ñô ð õ
 Ô*­5Ô+>¸uÑ+EÔ+EÅxÐPTÁ~Ä~ÐW]Ñ^Ô^Ð^ÝÔ"¥5Ô#6°uÑ#=Ô#=½xÈ¹}¼}ÈeÑTÔTÐTÝÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#ÝÔ'¨Ô(8Ñ9Ô9ˆÝ” Ñ&Ô&ˆÝ�U‰|Œ|Ðr*   c                óŒ  — |                       ¦   «         }t          |¦  «        }t          j        |¦  «        st          j        |¦  «        rt          t          ¦  «        ‚t          j        ||¦  «        }t          j        ||¦  «         t          j	        |¦  «         t          |d¦  «         |j        sJ ‚t          |¦  «        S r^  )ra  r   r�   r¯  r®  rÃ   r°  rb  r±  rP  rd  rÌ   râ   )r(   r÷   rò  rÖ   r  rß   s         r)   Ú_add_square_or_circlezPage._add_square_or_circleÄ&  s²   € Ø�~Š~ÑÔˆÝ˜DÑ!Ô!ˆÝÔ$ QÑ'Ô'ð 	,­5Ô+AÀ!Ñ+DÔ+Dð 	,Ý�lÑ+Ô+Ð+ÝÔ& t¨ZÑ8Ô8ˆÝÔ  ¨Ñ*Ô*Ð*ÝÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#ØÔÐÐÐÝ�U‰|Œ|Ðr*   c                óÖ  — t          |¦  «        }t          |¦  «        }t          j        |¦  «        st          j        |¦  «        rt          t          ¦  «        ‚|                      ¦   «         }g d¢}t          |¦  «        }d }d }|t          |¦  «        v r	||         }n¼t          |t          ¦  «        r|                     ¦   «         }n’t          |t          ¦  «        r't          j        |¦  «                             ¦   «         }nVt          |t"          t$          f¦  «        r|}n7t          |t&          j        ¦  «        r|                     ¦   «         }n|d         }t          j        |t          j        ¦  «        }	|�rNt          j        |¦  «        }
t          j        |
¦  «        }|                     ¦   «         |                     ¦   «         }}t9          |j        |z  |j        |z  ¦  «        }||z  }||z  }|j        |j         z   dz  }|j!        |dz  z
  }|j"        |dz  z
  }||z   }||z   }t          j#        ||||¦  «        }t          j$        |	|¦  «         t          j%        |	|¦  «         t          j&        t          j'        |	¦  «        tQ          d¦  «        t          j)        d¦  «        ¦  «         t          j*        |	d¦  «         nlt          j$        |	|¦  «         t          j&        t          j'        |	¦  «        tQ          d¦  «        tQ          |¦  «        ¦  «         t          j*        |	|¦  «         t          j+        |	¦  «         tY          |	d¦  «         t[          |	¦  «        S )N)ÚApprovedÚAsIsÚConfidentialÚDepartmentalÚExperimentalÚExpiredÚFinalÚ
ForCommentÚForPublicReleaseÚNotApprovedÚNotForPublicReleaseÚSoldÚ	TopSecretÚDraftr   r   r  Ú
ImageStampzImage Stampr  ).r$  r   r�   r¯  r®  rÃ   r°  ra  r7   rL  r>   r×  rÏ  rÑ  rm  rn  Ú
read_bytesr  r]  r9   r^  rv  rb  rG  r‘  Úfz_new_image_from_bufferr   rÆ  rÜ  r]  rÕ  rí  rî  r(  r)  rf  r±  Úpdf_set_annot_stamp_imagerN  rÿ   r  r4  r~  rP  rd  râ   )r(   r÷   Ústampr  rÖ   Ústamp_idrE   rÀ  r   rß   ÚfzbuffrÔ  r   rÆ  Úscaler]  rÕ  r=  r
  r  r	  r  s                         r)   Ú_add_stamp_annotzPage._add_stamp_annotÐ&  s  € Ý�D‰zŒzˆÝ˜DÑ!Ô!ˆÝÔ$ QÑ'Ô'ð 	+­5Ô+AÀ!Ñ+DÔ+Dð 	+Ý�\Ñ*Ô*Ð*Ø�~Š~ÑÔˆðð ð ˆõ  �‰MŒMˆØˆØˆØ•E˜!‘H”HÐÐØ˜E”?ˆDˆDÝ˜�vÑ&Ô&ð 		Ø—-’-‘/”/ˆCˆCÝ˜�sÑ#Ô#ð 	Ý”,˜uÑ%Ô%×0Ò0Ñ2Ô2ˆCˆCÝ˜¥¥yÐ1Ñ2Ô2ð 	ØˆCˆCÝ˜�rœzÑ*Ô*ð 	Ø—.’.Ñ"Ô"ˆCˆCà˜A”;ˆDåÔ& t­UÔ-BÑCÔCˆØñ 	6ÝÔ9¸#Ñ>Ô>ˆFÝÔ0°Ñ8Ô8ˆCð —5’5‘7”7˜CŸEšE™GœGˆqˆAÝ˜œ
 Q™¨¬°a©Ñ8Ô8ˆEØ˜‘IˆEØ˜‘YˆFð ”g ¤Ñ'¨1Ñ,ˆFØ”˜E A™IÑ%ˆBØ”˜F Q™JÑ&ˆBØ�e‘ˆBØ�f‘ˆBÝÔ" 2 r¨2¨rÑ2Ô2ˆAÝÔ$ U¨AÑ.Ô.Ð.ÝÔ+¨E°3Ñ7Ô7Ð7ÝÔ�uÔ2°5Ñ9Ô9½8ÀFÑ;KÔ;KÍUÔM_Ð`lÑMmÔMmÑnÔnÐnÝÔ(¨°Ñ>Ô>Ð>Ð>åÔ$ U¨AÑ.Ô.Ð.ÝÔ�uÔ2°5Ñ9Ô9½8ÀFÑ;KÔ;KÍXÐVZÉ^Ì^Ñ\Ô\Ð\ÝÔ(¨°Ñ5Ô5Ð5ÝÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#Ý�U‰|Œ|Ðr*   c                ó,  — |                       ¦   «         }t          |¦  «        }t          j        |t          j        ¦  «        }t          j        |¦  «        }t          j        |j        |j        |j        |j	        z   |j
        z
  |j        |j        z   |j        z
  ¦  «        }t          j        ||¦  «         t          j        ||¦  «         |rt          j        ||¦  «         t          j        |¦  «         t#          |d¦  «         t%          |¦  «        S r^  )ra  r`  r�   rb  rH  rc  rf  r(  r)  r	  r
  r  r  r±  r~  rh  rP  rd  râ   )r(   r-  r   ri  rÖ   r¢  rß   r  s           r)   Ú_add_text_annotzPage._add_text_annot'  sé   € Ø�~Š~ÑÔˆÝ˜eÑ$Ô$ˆÝÔ& t­UÔ-AÑBÔBˆÝÔ  Ñ'Ô'ˆÝÔ˜qœs A¤C¨¬¨q¬t©°a´dÑ):¸A¼CÀ!Ä$¹JÈÌÑ<MÑNÔNˆÝÔ  ¨Ñ*Ô*Ð*ÝÔ$ U¨DÑ1Ô1Ð1Øð 	7ÝÔ)¨%°Ñ6Ô6Ð6ÝÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#Ý�U‰|Œ|Ðr*   c                óä   — t          | ¦  «         | j        j        st          d¦  «        ‚t	          | ||¦  «        }|sd S t          j        | ¦  «        |_        || j        t          |¦  «        <   |S )NrÙ  )	rf  rê   rÛ  rÃ   ÚPage__add_text_markerr  r  r8  r9  )r(   rk	  rò  r  s       r)   Ú_add_text_markerzPage._add_text_marker"'  sr   € å�DÑÔÐØŒ{Ô!ð 	*Ý˜[Ñ)Ô)Ð)å# D¨%°Ñ<Ô<ˆØð 	Ø�4Ý”] 4Ñ(Ô(ˆŒ
Ø$'ˆÔ�˜C™œÑ!àˆ
r*   c                óÒ  — t          | ¦  «         t          r0t          j        | j        _        t          j        | j        |¦  «        S t          | j        ¦  «        }t          |¦  «        }|dk     rdS d}t          |t          ¦  «        st          d¦  «        ‚t          j        |                     ¦   «         t          d¦  «        ¦  «        j        s5t          j        |                     ¦   «         t          d¦  «        |¦  «         t          j        |                     ¦   «         t          d¦  «        ¦  «        }|j        sJ d|›d|j        ›�¦   «         ‚t%          |¦  «        D �] }||         }t'          |¦  «        }|st)          d|d	›d
�¦  «         Œ1	 t          j        |                     ¦   «         t/          |                     ¦   «         |¦  «        ¦  «        }t          j        |                     ¦   «         t          j        |¦  «        d¦  «        }	t          j        ||	¦  «         ŒÉ# t6          $ r, t8          rt;          ¦   «          t)          d|d	›d�¦  «         Y Œþw xY wdS )z&Add links from list of object sources.r   Nr1  zbad 'linklist' argumentr—  zlcount=z annots.m_internal=zskipping bad link / annot item r
  r   r   z.
)rf  r  r   ÚPage_addAnnot_FromStringrD  rt  rÄ   rÚ   r7   r>   rµ   rÃ   r�   r  r  r  rÌ   rœ  rL  ÚJM_StrAsCharrr   r�  r*  r5  r‰  r  r�  rg   r
  rv   )
r(   ÚlinklistrÖ   Úlcountr®   rŸ  Útxtpyr   rß   r7  s
             r)   rt  zPage._addAnnot_FromString0'  sM  € å�DÑÔÐÝð 	HÝ27Ô2PˆDŒNÔ/åÔ1°4´9¸hÑGÔGÐGÝ˜DœIÑ&Ô&ˆÝ�X‘”ˆØ�AŠ:ˆ:ØˆFØˆõ ˜(¥EÑ*Ô*ð 	9ÝÐ7Ñ8Ô8Ð8ÝÔ! 4§8¢8¡:¤:­x¸Ñ/AÔ/AÑBÔBÔMð 	NÝÔ$ d§h¢h¡j¤jµ(¸8Ñ2DÔ2DÀfÑMÔMÐMÝÔ# T§X¢X¡Z¤Zµ¸(Ñ1CÔ1CÑDÔDˆØÔ ÐCÐCÐ"C VÐ"CÐ"C¨vÔ/@Ð"CÐ"CÑCÔCÐ Ý�v‘”ð 	Dñ 	DˆAØ˜Q”KˆEÝ Ñ&Ô&ˆDØð ÝÐ@¸!Ð@Ð@Ð@Ð@ÑAÔAÐAØðDÝÔ,¨d¯hªh©j¬jÕ:MÈtÏxÊxÉzÌzÐ[_Ñ:`Ô:`ÑaÔa�ÝÔ0°$·(²(±*´*½eÔ>NÐPUÑ>VÔ>VÐXYÑZÔZ�ÝÔ$ f¨gÑ6Ô6Ð6Ð6øÝð Dð Dð DÝ'Ð<­NÑ,<Ô,<Ð,<ÝÐB¸!ÐBÐBÐBÐBÑCÔCÐCÐCÐCðDøøøð	Dð 	Ds   ÆBH.È.3I$É#I$c                óà   — |                       ¦   «         }|                     ¦   «         }t          ||||¦  «        }|j        st	          d¦  «        ‚t          |d¦  «         t          |¦  «        S )Nzcannot create widgetrî	  )ra  r*  ÚJM_create_widgetrÌ   rÞ   rd  râ   )r(   rß  rÚ  rÖ   rZ  rß   s         r)   Ú
_addWidgetzPage._addWidgetR'  sg   € Ø�~Š~ÑÔˆØ�hŠh‰jŒjˆÝ   d¨J¸
ÑCÔCˆØÔð 	8ÝÐ 6Ñ7Ô7Ð7Ý˜˜sÑ#Ô#Ð#Ý�U‰|Œ|Ðr*   c                óÜ   — |                       ¦   «         }t          j        ¦   «         }d|_        ||_        ||_        ||_        t          j        |                     ¦   «         ||¦  «        }|S r‡   )	ra  r�   ÚPdfRedactOptionsÚblack_boxesr   Úimage_methodÚline_artÚpdf_redact_pager*  )r(   r   r^	  ÚgraphicsrÖ   r¹  Úsuccesss          r)   Ú_apply_redactionszPage._apply_redactions['  s^   € Ø�~Š~ÑÔˆÝÔ%Ñ'Ô'ˆØˆÔØˆŒ	Ø"ˆÔØ ˆŒÝÔ'¨¯ª©
¬
°D¸$Ñ?Ô?ˆØˆr*   c                óÚ   — |                       ¦   «          	 | j                             | ¦  «         n# t          $ r t	          ¦   «          Y nw xY wd | _        d| _        d | _        d | _        d S r½  )Ú_reset_annot_refsrê   r  rg   rv   rñ   r^  rÄ   r.   s    r)   rò   zPage._erasee'  s€   € Ø×ÒÑ Ô Ð ð	ØŒK×$Ò$ TÑ*Ô*Ð*Ð*øÝð 	ð 	ð 	ÝÑÔÐØˆDð	øøøð ˆŒØˆŒØˆŒØˆŒ	ˆ	ˆ	s   –1 ±AÁAc                ó8  — t          | ¦  «        }t          j        |                     ¦   «         t          j        ¦  «        }t          j        |                     ¦   «         t          j        ¦  «        }t          | j        ¦  «        }t          j        |||¦  «        S )a”  Count missing graphic state pushs and pops.

        Returns:
            A pair of integers (push, pop). Push is the number of missing
            PDF "q" commands, pop is the number of "Q" commands.
            A balanced graphics state for the page will be reached if its
            /Contents is prepended with 'push' copies of string "q
"
            and appended with 'pop' copies of "
Q".
        )	rÚ   r�   r  r  rG  ÚPDF_ENUM_NAME_ContentsrÎ   rê   Ú pdf_count_q_balance_outparams_fn)r(   rÖ   r  rì  rZ  s        r)   Ú_count_q_balancezPage._count_q_balanceq'  s�   € õ ˜DÑ!Ô!ˆÝÔ Ø�HŠH‰JŒJÝÔ)ñ
ô 
ˆõ Ô!Ø�HŠH‰JŒJÝÔ(ñ
ô 
ˆõ ˜tœ{Ñ+Ô+ˆõ Ô5°c¸3ÀÑEÔEÐEr*   rÅ  r¡  rÎ  r¾  c                ó¬  — |�|dk    rd S | j         }|                     |d¬¦  «        }d|v sd|v st          d¦  «        ‚i }|                      ¦   «         D ]
\  }}|||<   Œ||                     ¦   «         v r||         S d}d|d›�}||                     ¦   «         v r!|d	z  }d|d›�}||                     ¦   «         v °!|                      ||¦  «         |S )
Nr   Tr…  ú	/Type/OCGrv  zbad optional content: 'oc'ÚMCr
  r   )rê   rˆ  rÃ   Ú_get_resource_propertiesrË  r  Ú_set_resource_property)	r(   rÅ  r*  ÚcheckÚpropsr¢  r(  r®   Úmcs	            r)   Ú_get_optional_contentzPage._get_optional_content‰'  s  € Øˆ:˜˜qš˜Ø�4ØŒkˆØ—’ ¨t�Ñ4Ô4ˆØ˜uÐ$Ð$¨¸Ð(=Ð(=åÐ9Ñ:Ô:Ð:àˆØ×1Ò1Ñ3Ô3ð 	ð 	‰DˆAˆqØˆE�!‰HˆHØ�—’‘”ÐÐØ˜”9ÐØˆØ�!ˆZˆZˆZˆØ�E—L’L‘N”NÐ"Ð"Ø�‰FˆAØ�a���ˆBð �E—L’L‘N”NÐ"Ð"ð 	×#Ò# B¨Ñ+Ô+Ð+àˆ	r*   c                óp   — |                       ¦   «         }t          |                     ¦   «         ¦  «        }|S )z/
        page list Resource/Properties
        )ra  ÚJM_get_resource_propertiesr  )r(   rÖ   r    s      r)   rÎ  zPage._get_resource_properties '  s-   € ð �~Š~ÑÔˆÝ'¨¯ª©
¬
Ñ3Ô3ˆØˆ	r*   c                óh   — 	 t          j        | j        |||¦  «        }t	          j        |¦  «        }|S r,   )r  r   Úpage_get_textpagerÄ   r�   r  rþ  r   Úfz_bound_pagerÓ  rµ  Ú_globalsrˆ   Úfz_enable_device_hintsÚFZ_NO_CACHEr>   rÔ   rÓ   rÇ   rÈ   Úfz_run_pagerÉ  Úfz_close_device)r(   r  r¾  rÙ  Úll_tpageÚtpagerÖ   r  r÷   rÞ  Údevs              r)   Ú_get_textpagezPage._get_textpage¨'  s4   € ð	ÝÔ.¨t¬y¸$ÀÀvÑNÔNˆHÝÔ% hÑ/Ô/ˆEØˆLr*   r1  c                ó$  — t          j        ¦   «         }|                      ¦   «         }|                     ¦   «         }|
}|}|}d}d}d}d}d}d}|dk    rÀt          j        ||d¦  «        }t          j        t          j        |t          d¦  «        t          d¦  «        ¦  «        ¦  «        }t          j        t          j        |t          d¦  «        t          d¦  «        ¦  «        ¦  «        }||z   dk    rt          t          ¦  «        ‚d}d}d}d}n,|rt          |¦  «        }d}n|rt          j        |¦  «        }d}|�rx|j        }|                     ¦   «         }|                     ¦   «         }t          j        |¦  «        }|} |                     | d ¦  «        }!|!�1|!}t          j        |                     ¦   «         |d¦  «        }d}d}d}nê|                     ¦   «         dk    r't          j        |t          j        ¦   «         ¦  «        }"n§t          j        |t          j        ¦   «         t          j        ¦   «         t          j        d ¦  «        t          j        ¦   «         d¦  «        }#d|#_        d |#_        t          j        |#t          j        ¦   «         ¦  «        }$t          j        ||$¦  «        }"d}d}|�ràt          j        ¦   «         }%t4          rt          j        |%|¦  «         n*t          j        |%|j        j        |j        j        ¦  «         |rVt          |¦  «        }t4          rt          j        |%|¦  «         n*t          j        |%|j        j        |j        j        ¦  «         t          j         |%¦  «        }tC          |¦  «        } |                     | d ¦  «        }!|!�³|!}t          j        |                     ¦   «         |d¦  «        }t          j        t          j        |t          d¦  «        t          d¦  «        ¦  «        ¦  «        }t          j        t          j        |t          d¦  «        t          d¦  «        ¦  «        ¦  «        }d}d}n@t          j"        |¦  «        }"|"                     ¦   «         }|"                     ¦   «         }|sd}|r´t          j#        |"¦  «        }&|&j        st          d¦  «        ‚|" $                    ¦   «         }'|"                     ¦   «         }(t          j%        |"¦  «        \  })}*t          j"        |¦  «        }$t          j&        |||'|(|)|*ddtO          ¦   «         tO          ¦   «         |&|$¦  «        }"|rCt          j(        ||"¦  «        }|	rtS          |||	¦  «         t          j*        |¦  «        }||| <   d}|�rlt          j+        | ,                    ¦   «         t          d¦  «        ¦  «        }+|+j        s5t          j-        | ,                    ¦   «         t          d¦  «        d	¦  «        }+t          j.        |+t          d
¦  «        ¦  «        },|,j        s#t          j-        |+t          d
¦  «        d	¦  «        },t_          |||||¦  «        }-t          j0        |,||¦  «         t          j1        d¦  «        }.dte          |-j3        |-j4        |-j5        |-j6        |-j7        |-j8        f¦  «        › d|› d�}/t          j9        |.|/¦  «         tu          || ,                    ¦   «         |.|¦  «         |r||fS |d fS )Nr   r   ÚWidthrî	  ÚHeightr:  z#uncompressed image cannot have maskr5  r   ÚXObjectr×  ú
q
z cm
/z Do
Q
);r�   rr  ra  r*  r‰  r  r  r  rÃ   ÚMSG_IS_NO_IMAGEr'  Úfz_read_filerÄ   r   rÆ  Úfz_md5_pixmap2r8   rÜ  Úfz_new_image_from_pixmapÚFzImageÚfz_convert_pixmapr–  ÚFzDefaultColorspacesÚFzColorParamsrÛ  ÚFzMd5rœ   Úfz_md5_update_bufferÚfz_md5_updaterÌ   r}  r7   Úfz_md5_final2r  r§  Úfz_compressed_image_bufferÚbpcÚfz_image_resolutionÚ$fz_new_image_from_compressed_buffer2r´   Úpdf_add_imager›  r  rF  r  rR  r  Úcalc_image_matrixr�  rã  r¶   r!   rÑ
  r¼  r
  r`  rÎ  Úfz_append_stringÚJM_insert_contents)0r(   rf   Úpixmapr	   Úimaskr  ÚoverlayrY  Úkeep_proportionrÅ  r]  rÕ  r  rÜ  Ú_imgnameÚdigestsÚmaskbufrÖ   rZ  r   rÆ  Úimg_xrefÚ	rc_digestÚdo_process_pixmapÚdo_process_streamÚdo_have_imaskÚdo_have_imageÚdo_have_xrefÚrefÚimgbufÚarg_pixÚdigestÚmd5_pyr€  Úimager·  ÚmaskÚstateÚcbuf1rô  rÛ  ÚxresÚyresra  Úxobjectrv  Únresrr  s0                                                   r)   Ú_insert_imagezPage._insert_imageÁ'  sŸ  € õ
 ”.Ñ"Ô"ˆØ�~Š~ÑÔˆð �hŠh‰jŒjˆØˆØˆØˆØˆ	àÐØÐØˆØˆØˆà�!Š8ˆ8ÝÔ(¨¨d°AÑ6Ô6ˆCÝÔ ¥%Ô"5°s½HÀWÑ<MÔ<MÍxÐX[É}Ì}Ñ"]Ô"]Ñ^Ô^ˆAÝÔ ¥%Ô"5°s½HÀXÑ<NÔ<NÕPXÐY\ÑP]ÔP]Ñ"^Ô"^Ñ_Ô_ˆAØ�1‰u˜ŠzˆzÝ ¥/Ñ2Ô2Ð2à !ÐØ !ÐØˆMØˆMˆMð ð *Ý+¨FÑ3Ô3�Ø$%Ð!Ð!àð *Ý"Ô/°Ñ9Ô9�Fà()Ð%àñ "	"ð ”kˆGØ—	’	‘”ˆAØ—	’	‘”ˆAÝÔ)¨'Ñ2Ô2ˆFØˆFØ—;’;˜v tÑ,Ô,ˆDØÐØ�ÝÔ,¨T¯XªX©Z¬Z¸À1ÑEÔE�à$%Ð!Ø !�Ø !��à—=’=‘?”? aÒ'Ð'Ý!Ô:¸7ÅEÄMÁOÄOÑTÔT�E�EåÔ0Ø#Ý!Ô.Ñ0Ô0Ý!Ô.Ñ0Ô0Ý!Ô6°tÑ<Ô<Ý!Ô/Ñ1Ô1Øñô �Bð  !�B”HØ$(�B”MÝ Ô9¸"½e¼m¹o¼oÑNÔN�DÝ!Ô:¸7ÀDÑIÔI�Eà$%Ð!Ø !�àñ 	&õ ”K‘M”MˆEÝð ZÝÔ*¨E°6Ñ:Ô:Ð:Ð:åÔ# E¨6Ô+<Ô+AÀ6ÔCTÔCXÑYÔYÐYØð `Ý,¨UÑ3Ô3�Ýð `ÝÔ.°°wÑ?Ô?Ð?Ð?åÔ'¨¨wÔ/AÔ/FÈÔHZÔH^Ñ_Ô_Ð_ÝÔ(¨Ñ/Ô/ˆFÝ˜6‘]”]ˆFØ—;’;˜v tÑ,Ô,ˆDØÐØ�ÝÔ,¨T¯XªX©Z¬Z¸À1ÑEÔE�ÝÔ$¥eÔ&9¸3ÅÈÑ@QÔ@QÕS[Ð\_ÑS`ÔS`Ñ&aÔ&aÑbÔb�ÝÔ$¥eÔ&9¸3ÅÈÑ@RÔ@RÕT\Ð]`ÑTaÔTaÑ&bÔ&bÑcÔc�à !�Ø !��åÔ6°vÑ>Ô>�Ø—G’G‘I”I�Ø—G’G‘I”I�Øð &à$%�Màð 	õ Ô4°eÑ<Ô<ˆEØÔ#ð IÝ Ð"GÑHÔHÐHØ—)’)‘+”+ˆCØ×)Ò)Ñ+Ô+ˆJÝÔ2°5Ñ9Ô9‰JˆD�$ÝÔ1°'Ñ:Ô:ˆDÝÔ>ØØØØØØØØÝ‘F”FÝ‘F”FØØñô ˆEð ð 	åÔ% c¨5Ñ1Ô1ˆCØð /Ý   c¨2Ñ.Ô.Ð.ÝÔ'¨Ñ,Ô,ˆHØ&ˆG�F‰OØˆIàñ 	?åÔ6°t·x²x±z´zÅ8ÈKÑCXÔCXÑYÔYˆIØÔ'ð ZÝ!Ô3°D·H²H±J´JÅÈÑ@UÔ@UÐWXÑYÔY�	ÝÔ(¨µH¸YÑ4GÔ4GÑHÔHˆGØÔ%ð UÝÔ1°)½XÀiÑ=PÔ=PÐRSÑTÔT�Ý# A q¨$°¸ÑHÔHˆCÝÔ ¨°3Ñ7Ô7Ð7ÝÔ& rÑ*Ô*ˆDØg�	 3¤5¨#¬%°´¸¼¸s¼uÀcÄeÐ"LÑMÔMÐgÐgÐU]ÐgÐgÐgˆAåÔ" 4¨Ñ+Ô+Ð+Ý˜s D§H¢H¡J¤J°°gÑ>Ô>Ð>àð 	"Ø˜WÐ$Ð$à˜T�>Ð!r*   c                ó"  — |                       ¦   «         }|                     ¦   «         }t          |||||||||	|
¦
  «
        }t          j        |                     ¦   «         t          d¦  «        ¦  «        }|                     ¦   «         s5t          j        |                     ¦   «         t          d¦  «        d¦  «        }t          j	        |t          d¦  «        ¦  «        }|j
        sXt          j        |d¦  «        }t          j        |                     ¦   «         |t          d¦  «        t          d¦  «        ¦  «         t          |d¦  «        \  }}|st          d¦  «        ‚t          j        ||d¦  «        }t          j        |||¦  «         |S )Nr5  r   r2  r   zcannot insert font)ra  r*  rR  r�   rF  r  r  rz  rR  r  rÌ   rS  r  rB  rÞ   r‰  r�  )r(   rù   r  rS  rT  Ú
set_simpler8  rÈ
  rÓ
  rë  r  rÖ   rZ  r¸   ra  r6  r  r  Úfont_objs                      r)   Ú_insertFontzPage._insertFontm(  s]  € Ø�~Š~ÑÔˆØ�hŠh‰jŒjˆå˜s F¨H°ZÀÈSÐRWÐY^Ð`hÐjrÑsÔsˆåÔ2°4·8²8±:´:½xÈÑ?TÔ?TÑUÔUˆ	Ø×$Ò$Ñ&Ô&ð 	VÝÔ/°·²±
´
½HÀ[Ñ<QÔ<QÐSTÑUÔUˆIÝÔ" 9­h°vÑ.>Ô.>Ñ?Ô?ˆØÔð 	\ÝÔ& s¨AÑ.Ô.ˆEÝÔ §¢¡
¤
¨Eµ8¸KÑ3HÔ3HÍ(ÐSYÑJZÔJZÑ[Ô[Ð[å˜e QÑ'Ô'‰ˆˆ4Øð 	6ÝÐ 4Ñ5Ô5Ð5ÝÔ)¨#¨t°QÑ7Ô7ˆÝÔ˜E 8¨XÑ6Ô6Ð6Øˆr*   c                óž   — |                       ¦   «         }|dk    rt          ||¦  «        }nt          ||¦  «        }|rt          |¦  «        S d S r‡   )ra  ÚJM_get_annot_by_nameÚJM_get_annot_by_xrefrâ   )r(   r   r  rÖ   rß   s        r)   Ú_load_annotzPage._load_annot‚(  sX   € Ø�~Š~ÑÔˆØ�1Š9ˆ9Ý(¨¨tÑ4Ô4ˆEˆEå(¨¨tÑ4Ô4ˆEØð 	 Ý˜‘<”<Ðð	 ð 	 r*   c           	     óT   — t          || j        |||||¦  «        }t          |¦  «        S r,   )ÚJM_pixmap_from_pagerÄ   r×  )r(   r*  rÞ  rß  rÜ  rŸ  r  rà  s           r)   Ú_makePixmapzPage._makePixmap‹(  s)   € Ý! # t¤y°#°r¸5À&È$ÑOÔOˆÝ�c‰{Œ{Ðr*   c                ój  — t          j        t           j        j        ¦  «        }t          | j        d¬¦  «        }|j        rOt          j        |                     ¦   «         |¦  «        }t          j        |¦  «        rt          j	        |¦  «        }t          j
        |¦  «        rd S t          |¦  «        S ©NFr.  )r�   rh  ri  rÚ   rÄ   rÌ   rþ   r  rŽ  Úpdf_to_rectr¯  rg  )r(   Úboxtyper÷   rÖ   r  s        r)   Ú
_other_boxzPage._other_box�(  s—   € ÝŒ|�Uœ\Ô8Ñ9Ô9ˆÝ˜DœI°Ð6Ñ6Ô6ˆØŒ?ð 	.ÝÔ% t§x¢x¡z¤z°7Ñ;Ô;ˆCÝÔ! #Ñ&Ô&ð .ÝÔ(¨Ñ-Ô-�ÝÔ$ dÑ+Ô+ð 	ØˆFÝ˜tÑ$Ô$Ð$r*   Tc                ó.   — t          | j        |¬¦  «        S )Nr.  )rÚ   rÄ   )r(   rÍ   s     r)   ra  zPage._pdf_pageš(  s   € Ý˜DœI°Ð9Ñ9Ô9Ð9r*   c                ó8   — | j                              ¦   «          dS )z,Invalidate / delete all annots of this page.N)r8  r‚  r.   s    r)   rÆ  zPage._reset_annot_refs�(  s   € àÔ×ÒÑ Ô Ð Ð Ð r*   c                ól  — |dk    r
|dk    r|€d S t          t          t          |d¦  «        dz  ¦  «        ¦  «        }|dk    rd}t          t          t          |d¦  «        dz  ¦  «        ¦  «        }|dk    rd}d|d›|d›�}|sd S t          | j        ¦  «        }t          j        |                     ¦   «         t          d¦  «        ¦  «        }|j	        s5t          j
        |                     ¦   «         t          d¦  «        d¦  «        }t          j        |t          d	¦  «        ¦  «        }	|	j	        s#t          j
        |t          d	¦  «        d¦  «        }	t          j        |	¦  «        }
t          |
¦  «        D ]5}t          j        |	|¦  «        }t          j        |¦  «        }||k    r|c S Œ6t          j        |                     ¦   «         d
¦  «        }t          j        |t          d¦  «        |¦  «         t          j        |t          d¦  «        |¦  «         t          j        |	||¦  «         |S )Nr   r   rŸ  éc   ÚfitzcaÚ02dr5  r   r9  r   r6  r7  )r4   r`  rê  rÚ   rÄ   r�   r  r  r  rÌ   rR  r{  rL  r}  ry  rS  r*  rT  r�  )r(   Úgstater6  r7  rƒ  ÚtCAÚtcarÖ   ra  rc  rE   r®   r/  r   Úopas                  r)   Ú_set_opacityzPage._set_opacity¡(  s  € à�Š7ˆ7�r˜Q’w�w 9Ð#4ØˆFÝ•%�˜B ™œ cÑ)Ñ*Ô*Ñ+Ô+ˆØ�#Š:ˆ:ØˆCÝ•%�˜B ™
œ
 SÑ(Ñ)Ô)Ñ*Ô*ˆØ�#Š:ˆ:ØˆCØ,˜#Ð,Ð, 3Ð,Ð,Ð,ˆàð 	ØˆFÝ˜DœIÑ&Ô&ˆÝÔ& t§x¢x¡z¤zµ8¸KÑ3HÔ3HÑIÔIˆ	ØÔ#ð 	VÝÔ/°·²±
´
½HÀ[Ñ<QÔ<QÐSTÑUÔUˆIÝÔ! )­X°kÑ-BÔ-BÑCÔCˆØŒð 	PÝÔ*¨9µh¸{Ñ6KÔ6KÈQÑOÔOˆDÝÔ˜tÑ$Ô$ˆÝ�q‘”ð 	ð 	ˆAÝÔ'¨¨aÑ0Ô0ˆBÝÔ$ RÑ(Ô(ˆDØ�vŠ~ˆ~Ø���ð åÔ  §¢¡¤¨QÑ/Ô/ˆÝÔ ¥X¨d¡^¤^°RÑ8Ô8Ð8ÝÔ ¥X¨d¡^¤^°RÑ8Ô8Ð8ÝÔ˜D &¨#Ñ.Ô.Ð.Øˆr*   c           
     ón  — | j         }|€t          d¦  «        ‚|j        st          d¦  «        ‚d}||vrt          d¦  «        ‚t          |¦  «        }| j        }t          |d         |j        |d         z
  |d         |j        |d         z
  ¦  «        }|j        |j        cxk    r|j        cxk     r|j        k    r-n n*|j        |j        cxk    r|j        cxk     r|j        k    sn t          |› d	�¦  «        ‚| 	                    | j
        |d
t          t          |¦  «        ¦  «        › d�¦  «         d S )Nr.  rÙ  )ÚCropBoxÚBleedBoxÚTrimBoxÚArtBoxzbad boxtyper   r   r   r   z not in MediaBoxrl  rm  )rê   rÃ   rÛ  r$  rv  r  r
  r	  r  rn  r  r¶   rµ   )r(   r%  r÷   r*  Úvalid_boxesÚmbs         r)   Ú_set_pageboxzPage._set_pageboxÂ(  sS  € ØŒkˆØˆ;ÝÐ>Ñ?Ô?Ð?àŒzð 	*Ý˜[Ñ)Ô)Ð)àBˆà˜+Ð%Ð%Ý˜]Ñ+Ô+Ð+å�D‰zŒzˆØŒ]ˆÝ�D˜”G˜RœU T¨!¤W™_¨d°1¬g°r´u¸tÀA¼w±ÑGÔGˆØ”˜œÐ3Ð3Ò3Ð3 4¤7Ð3Ð3Ò3Ð3¨b¬eÒ3Ð3Ð3Ð3Ð3¸¼ÀÄÐ8[Ð8[Ò8[Ð8[È4Ì7Ð8[Ð8[Ò8[Ð8[ÐVXÔV[Ò8[Ð8[Ð8[Ð8[Ý Ð9Ð9Ð9Ñ:Ô:Ð:à×Ò˜œ GÐ-Jµ½5À¹;¼;Ñ1GÔ1GÐ-JÐ-JÐ-JÑKÔKÐKÐKÐKr*   c                ót   — |                       ¦   «         }t          |                     ¦   «         ||¦  «         d S r,   )ra  ÚJM_set_resource_propertyr  )r(   r   r  rÖ   s       r)   rÏ  zPage._set_resource_property×(  s1   € Ø�~Š~ÑÔˆÝ  §¢¡¤¨T°4Ñ8Ô8Ð8Ð8Ð8r*   c	                óö  — t          |¦  «        }	t          |¦  «        }
|}t          | j        ¦  «        }|                     ¦   «         }|                     ¦   «         }t          |¦  «         t          ||||j        ¦  «        }|st          j	        |¦  «        }t          j
        |d¦  «        }t          j        |d|¦  «         t          j
        |d¦  «        }t          j        |t          d¦  «        |¦  «         t          j        d¦  «        }t          j        |d¦  «         t          j        ||	|
||¦  «        }|dk    r#t#          |t          j        |¦  «        |¦  «         t          j        |t          d¦  «        ¦  «        }|j        s#t          j        |t          d¦  «        d¦  «        }t          j        |t          d¦  «        ¦  «        }|j        s#t          j        |t          d¦  «        d¦  «        }t          j        |||¦  «         t          j        d¦  «        }t          j        |d	¦  «         t          j        ||¦  «         t          j        |d
¦  «         t/          ||||¦  «         |S )Nr   Úfullpagerå  é   z/fullpage Dor   r5  r×  z q /z Do Q )r   rÓ  rÚ   rÄ   r  r*  rd  ÚJM_xobject_from_pager�   r  rS  r�  rN  r  rã  rù  Úpdf_new_xobjectr›  r-  rF  rÌ   rR  r  rú  )r(   Ú
fz_srcpagerý  rÙ  r  rÅ  r  rÌ  rÿ  ry  rv  Úrc_xrefrß  Útpagerefræ  Úxobj1Úsubres1Úsubresr  Úxobj2ra  r  s                         r)   Ú_show_pdf_pagezPage._show_pdf_pageÛ(  s@  € Ý! $Ñ'Ô'ˆÝ Ñ'Ô'ˆØˆÝ˜TœYÑ'Ô'ˆØ—9’9‘;”;ˆØ—’‘”ˆÝ˜Ñ Ô Ð õ % V¨Z¸¸x¼}ÑMÔMˆØð 	.ÝÔ& uÑ-Ô-ˆGõ Ô$ V¨QÑ/Ô/ˆÝÔ˜G Z°Ñ7Ô7Ð7ÝÔ# F¨AÑ.Ô.ˆÝÔ˜6¥8¨IÑ#6Ô#6¸Ñ@Ô@Ð@åÔ! "Ñ%Ô%ˆÝÔ˜s NÑ3Ô3Ð3åÔ% f¨g°s¸FÀCÑHÔHˆØ�Š6ˆ6Ý˜V¥UÔ%?ÀÑ%FÔ%FÈÑKÔKÐKõ Ô2°8½XÀkÑ=RÔ=RÑSÔSˆ	ØÔ#ð 	SÝÔ/°½À+Ñ9NÔ9NÐPQÑRÔRˆIÝÔ# I­x¸	Ñ/BÔ/BÑCÔCˆØÔ ð 	PÝÔ,¨Y½ÀÑ8KÔ8KÈQÑOÔOˆFåÔ˜F H¨eÑ4Ô4Ð4õ
 Ô" 2Ñ&Ô&ˆÝÔ˜t VÑ,Ô,Ð,ÝÔ˜t XÑ.Ô.Ð.ÝÔ˜t XÑ.Ô.Ð.å˜6 8¨T°7Ñ;Ô;Ð;Øˆr*   r-  rº   râ   c                ó,  — t          | ¦  «        }	 |                      |¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          |¦  «        }t	          | |¦  «         t          |d¦  «        sJ ‚|S )zAdd a 'Caret' annotation.r   rê   )Úannot_preprocessr_  r¶  râ   Úannot_postprocessr;   )r(   r-  Úold_rotationrß   s       r)   Úadd_caret_annotzPage.add_caret_annot)  sª   € å'¨Ñ-Ô-ˆð	0Ø×)Ò)¨%Ñ0Ô0ˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå�u‘”ˆÝ˜$ Ñ&Ô&Ð&Ý˜˜xÑ(Ô(Ð(Ð(Ð(Øˆó   ‘A ÁA r÷   r¼   c                ó   — t          | ¦  «        }	 |                      |t          j        ¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )z*Add a 'Circle' (ellipse, oval) annotation.r   )rJ  r•  r�   r=  r¶  rK  ©r(   r÷   rL  rß   s       r)   Úadd_circle_annotzPage.add_circle_annot!)  óŽ   € å'¨Ñ-Ô-ˆð	0Ø×.Ò.¨tµUÔ5KÑLÔLˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&Øˆó   ‘ A ÁA+r-  rà  rf   rÑ  r  r¹  ri  c                óö   — t          | ¦  «        }	 |                      ||||||¬¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )z"Add a 'FileAttachment' annotation.)r  r¹  ri  r   )rJ  rl  r¶  rK  )	r(   r-  r-  rf   r  r¹  ri  rL  rß   s	            r)   Úadd_file_annotzPage.add_file_annot,)  s¥   € õ (¨Ñ-Ô-ˆð
	0Ø×(Ò(¨ØØØ'ØØð )ñ ô ˆEð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&Øˆs   ‘A ÁA&©rú   rù   rø   rX  rÁ  rÖ  r_  ru  rv  rV  r  rY  rw  r^  r   rú   ro  rù   rø   rÀ  rX  rÁ  rÖ  r_  ru  rv  r4   rV  r  rY  c               ó
  — t          | ¦  «        }	 |                      |||||||||	|
||||||¬¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )zAdd a 'FreeText' annotation.rV  r   )rJ  rz  r¶  rK  )r(   r÷   r   rú   rù   rø   rX  rÁ  rÖ  r_  ru  rv  rV  r  rY  rw  r^  rL  rß   s                      r)   Úadd_freetext_annotzPage.add_freetext_annotE)  sÄ   € õ, (¨Ñ-Ô-ˆð	0Ø×,Ò,ØØØ%Ø%Ø)Ø)Ø!-Ø!-Ø!Ø#Ø%Ø#ØØ!Ø%Øð! -ñ ô ˆEð& ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&Øˆs   ‘%A ÁA0c                ó�   — |€t          | |||¬¦  «        }nt          |¦  «        }|                      |t          j        ¦  «        }|S )zAdd a 'Highlight' annotation.N©r•  rß  r  )Úget_highlight_selectionÚCheckMarkerArgr²  r�   ÚPDF_ANNOT_HIGHLIGHT)r(   rk	  r•  rß  r  r’  rG   s          r)   Úadd_highlight_annotzPage.add_highlight_annotu)  sK   € ð ˆ=Ý'¨°EÀÈ4ÐPÑPÔPˆAˆAå˜uÑ%Ô%ˆAØ×#Ò# A¥uÔ'@ÑAÔAˆØˆ
r*   Úhandwritingr´   c                óê   — t          | ¦  «        }	 |                      |¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )znAdd a 'Ink' ('handwriting') annotation.

        The argument must be a list of lists of point_likes.
        r   )rJ  r„  r¶  rK  )r(   r_  rL  rß   s       r)   Úadd_ink_annotzPage.add_ink_annot)  s‹   € õ
 (¨Ñ-Ô-ˆð	0Ø×'Ò'¨Ñ4Ô4ˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&ØˆrN  r  r  c                óì   — t          | ¦  «        }	 |                      ||¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )zAdd a 'Line' annotation.r   )rJ  r‡  r¶  rK  )r(   r  r  rL  rß   s        r)   Úadd_line_annotzPage.add_line_annot�)  s‹   € å'¨Ñ-Ô-ˆð	0Ø×(Ò(¨¨RÑ0Ô0ˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&Øˆó   ‘A ÁA!r  c                ó   — t          | ¦  «        }	 |                      |t          j        ¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )zAdd a 'Polygon' annotation.r   )rJ  r‹  r�   r@  r¶  rK  ©r(   r  rL  rß   s       r)   Úadd_polygon_annotzPage.add_polygon_annot˜)  sŽ   € å'¨Ñ-Ô-ˆð	0Ø×'Ò'¨µÔ0GÑHÔHˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&ØˆrS  c                ó   — t          | ¦  «        }	 |                      |t          j        ¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )zAdd a 'PolyLine' annotation.r   )rJ  r‹  r�   r?  r¶  rK  rf  s       r)   Úadd_polyline_annotzPage.add_polyline_annot£)  sŽ   € å'¨Ñ-Ô-ˆð	0Ø×'Ò'¨µÔ0IÑJÔJˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&ØˆrS  c                ó   — t          | ¦  «        }	 |                      |t          j        ¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )z&Add a 'Square' (rectangle) annotation.r   )rJ  r•  r�   r<  r¶  rK  rP  s       r)   Úadd_rect_annotzPage.add_rect_annot®)  rR  rS  rû   rÂ  rç   c	                ód  — d}	|rÑt          t          j        ¦  «                             |¦  «        s¥t	          |¦  «         t	          |¦  «         |sd}|sd}|sd}t          |d¦  «        r|||f}t          |¦  «        dk    r
|dd…         }d}
 |
j        |||dœŽ}	|€d	}|r2t          |d¦  «        r|||f}t          |¦  «        dk    r
|dd…         }nd}t          | ¦  «        }	 |  	                    |||	||¬
¦  «        }|dk    r|  
                    |¦  «         n!# |dk    r|  
                    |¦  «         w w xY wt          | |¦  «         |rß|                     ¦   «                              ¦   «         dd…         }|\  }}}}}|                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         |                     d¦  «         d                     |¦  «        }|                     |d¦  «         |S )zAdd a 'Redact' annotation.NrÔ  rú  rÓ  rj  r   r#  r$  ©r   r   r   )r   r‘  r  rû   r   r1  rÑ  rÓ  )rØ  rú	  Ú
whitespacer�	  rp  r;   r7   rÆ  rJ  r“  r¶  rK  r"  rÞ  rk   rÜ  r0  )r(   r  r   rù   rú   r  rû   rø   rÂ  r‘  r±   rL  rß   r   r  r  r  r  r  r!  s                       r)   r[	  zPage.add_redact_annot¹)  sˆ  € ð ˆØð 	��FÔ-Ñ.Ô.×9Ò9¸$Ñ?Ô?ð 	Ý�tÑÔÐÝ�zÑ"Ô"Ð"Øð "Ø!�Øð Ø�Øð 'Ø&�
Ý�z ;Ñ/Ô/ð BØ(¨*°jÐA�
Ý�:‰Œ Ò"Ð"Ø'¨¨¨œ^�
Ø5ˆCØ�S”Z ¨x¸8ÐDÐDÐDˆFØˆ|Ø �Øð $Ý˜4 Ñ-Ô-ð .Ø  $¨Ð-�DÝ�t‘9”9˜q’=�=Ø   œ8�DøàˆDå'¨Ñ-Ô-ˆð	0Ø×*Ò*¨4°dÀ6Ø"¨ð +ñ /ô /ˆEð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&ð ð 
	 Ø—\’\‘^”^×.Ò.Ñ0Ô0°°"°Ô5ˆFØ &ÑˆAˆr�2�r˜2Ø�MŠM˜"ÑÔÐØ�MŠM˜"ÑÔÐØ�MŠM˜"ÑÔÐØ�MŠM˜"ÑÔÐØ�MŠM˜"ÑÔÐØ�MŠM˜$ÑÔÐØ—’˜FÑ#Ô#ˆBØ�LŠL˜˜QÑÔÐØˆs   Ã(D ÄD<c                óŒ   — |€t          | |||¬¦  «        }nt          |¦  «        }|                      |t          j        ¦  «        S )zAdd a 'Squiggly' annotation.NrZ  )r[  r\  r²  r�   ÚPDF_ANNOT_SQUIGGLY©r(   rk	  r•  rß  r  r’  s         r)   Úadd_squiggly_annotzPage.add_squiggly_annot÷)  sG   € ð ˆ=Ý'¨°EÀÈ4ÐPÑPÔPˆAˆAå˜uÑ%Ô%ˆAØ×$Ò$ Q­Ô(@ÑAÔAÐAr*   c                óì   — t          | ¦  «        }	 |                      ||¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )z$Add a ('rubber') 'Stamp' annotation.r   )rJ  r­  r¶  rK  )r(   r÷   r©  rL  rß   s        r)   Úadd_stamp_annotzPage.add_stamp_annot*  s‹   € å'¨Ñ-Ô-ˆð	0Ø×)Ò)¨$°Ñ6Ô6ˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&Øˆrd  c                óŒ   — |€t          | |||¬¦  «        }nt          |¦  «        }|                      |t          j        ¦  «        S )zAdd a 'StrikeOut' annotation.NrZ  )r[  r\  r²  r�   ÚPDF_ANNOT_STRIKE_OUTrq  s         r)   Úadd_strikeout_annotzPage.add_strikeout_annot*  sE   € àˆ=Ý'¨°EÀÈ4ÐPÑPÔPˆAˆAå˜uÑ%Ô%ˆAØ×$Ò$ Q­Ô(BÑCÔCÐCr*   ÚNotec                óð   — t          | ¦  «        }	 |                      |||¬¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          | |¦  «         |S )z&Add a 'Text' (sticky note) annotation.)ri  r   )rJ  r¯  r¶  rK  )r(   r-  r   ri  rL  rß   s         r)   Úadd_text_annotzPage.add_text_annot*  s�   € å'¨Ñ-Ô-ˆð	0Ø×(Ò(¨°¸4Ð(Ñ@Ô@ˆEà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜$ Ñ&Ô&Ð&Øˆs   ‘A ÁA#c                óŒ   — |€t          | |||¬¦  «        }nt          |¦  «        }|                      |t          j        ¦  «        S )zAdd a 'Underline' annotation.NrZ  )r[  r\  r²  r�   ÚPDF_ANNOT_UNDERLINErq  s         r)   Úadd_underline_annotzPage.add_underline_annot#*  sE   € àˆ=Ý'¨°EÀÈ4ÐPÑPÔPˆAˆAå˜uÑ%Ô%ˆAØ×$Ò$ Q­Ô(AÑBÔBÐBr*   r<  r:  c                óŠ  — t          | ¦  «         | j        }|j        st          d¦  «        ‚|                     ¦   «          |                      |j        |j        ¦  «        }|sdS d|_        t          j
        | ¦  «        |_        || j        t          |¦  «        <   |j        |_        ||_        |                     ¦   «          |S )zAdd a 'Widget' (form field).rÙ  NT)rf  rê   rÛ  rÃ   r
  r»  rß  rÚ  rñ   r  r  r8  r9  r  r  )r(   r<  r*  rß   s       r)   Ú
add_widgetzPage.add_widget+*  s´   € å�DÑÔÐØŒkˆØŒzð 	*Ý˜[Ñ)Ô)Ð)Ø×ÒÑÔÐØ—’ Ô 1°6Ô3DÑEÔEˆØð 	Ø�4ØˆŒÝ”} TÑ*Ô*ˆŒØ&+ˆÔ�˜E™œÑ#ØœˆŒØˆŒØ�Š‰ŒˆØˆr*   c                ó~   — 	 t          | ¦  «         |                      d¬¦  «        }|j        sg S t          |¦  «        S )z.
        page get list of annot names
        Fr.  )rf  ra  rÌ   ÚJM_get_annot_id_list©r(   rÖ   s     r)   Úannot_nameszPage.annot_names=*  sE   € ð 	>Ý�DÑÔÐØ�~Š~ uˆ~Ñ-Ô-ˆØŒð 	ØˆIÝ# DÑ)Ô)Ð)r*   c                ó    — t          | ¦  «        S )zH
        List of xref numbers of annotations, fields and links.
        )ÚJM_get_annot_xref_list2r.   s    r)   rÊ  zPage.annot_xrefsH*  s   € õ ' tÑ,Ô,Ð,r*   c              #  óF  ‡‡K  — t           j        t           j        t           j        fŠt	          ‰d¦  «        s!ˆfd„|                      ¦   «         D ¦   «         }n!ˆˆfd„|                      ¦   «         D ¦   «         }|D ]$}|                      |¦  «        }|rd|_        |V — Œ%dS )a   Generator over the annotations of a page.

        Args:
            types: (list) annotation types to subselect from. If none,
                   all annotations are returned. E.g. types=[PDF_ANNOT_LINE]
                   will only yield line annotations.
        ra  c                ó4   •— g | ]}|d          ‰v¯|d         ‘ŒS r8  r-   )r­   r!   Ú
skip_typess     €r)   r¯   zPage.annots.<locals>.<listcomp>X*  s+   ø€ ÐVÐVÐV A¸qÀ¼tÈ:Ð?UÐ?U˜1˜Qœ4Ð?UÐ?UÐ?Ur*   c                óH   •— g | ]}|d          ‰v ¯|d          ‰v¯|d         ‘ŒS r8  r-   )r­   r!   rˆ  Útypess     €€r)   r¯   zPage.annots.<locals>.<listcomp>Z*  s;   ø€ ÐhÐhÐh A¸qÀ¼tÀu¸}¸}ÐQRÐSTÔQUÐ]gÐQgÐQg˜1˜Qœ4ÐQgÐQgÐQgr*   TN)r�   r¿  ÚPDF_ANNOT_POPUPr4  r;   rÊ  Ú
load_annotÚ_yielded)r(   rŠ  rÊ  r  rß   rˆ  s    `   @r)   rŸ  zPage.annotsN*  sÄ   øøè è € õ Ô*­EÔ,AÅ5ÔCYÐZˆ
Ý�u˜mÑ,Ô,ð 	iØVÐVÐVÐV¨×)9Ò)9Ñ);Ô);ÐVÑVÔVˆKˆKàhÐhÐhÐhÐh¨×)9Ò)9Ñ);Ô);ÐhÑhÔhˆKØð 	ð 	ˆDØ—O’O DÑ)Ô)ˆEàð Ø#�”Ø���øð	ð 	r*   r   rÖ   ú'Page'r^	  rÂ  c           	     ó–  — d„ }t          | ¦  «         | j        }|j        s|j        rt	          d¦  «        ‚|j        st	          d¦  «        ‚g }|                      t          j        f¬¦  «        D ])}| 	                    | 
                    ¦   «         ¦  «         Œ*|g k    rdS |                      |||¦  «        }|st	          d¦  «        ‚|                      ¦   «         }	|D ]Ô}
|
d         }|
d         }|r,|	                     |¦  «         |	                     ||¬	¦  «         d
|
                     ¦   «         v r~|
d
         }|
                     dd¦  «        }|
d         }|
d         }|
d         } |||||¦  «        }d}|dk     r2|dk    r,|	                     ||||||¬¦  «        }|dz  }|dk     r|dk    °,ŒÕ|	                     ¦   «          dS )aD  Apply the redaction annotations of the page.

        Args:
            page: the PDF page.
            images:
                  0 - ignore images
                  1 - remove all overlapping images
                  2 - blank out overlapping image parts
                  3 - remove image unless invisible
            graphics:
                  0 - ignore graphics
                  1 - remove graphics if contained in rectangle
                  2 - remove all overlapping graphics
            text:
                  0 - remove text
                  1 - ignore text
        c                óp  — |r| j         t          k    r| S 	 t          |||¦  «        }n3# t          t          j        f$ r t          rt          ¦   «          | cY S w xY w|dz  }| j         }t          j	        ||z  ¦  «        |z  }|| j
        k    r| S | }| j        j        | j        j        z   |z
  dz  }	|	|_        |S )a¼  Calculate minimal sub-rectangle for the overlay text.

            Notes:
                Because 'insert_textbox' supports no vertical text centering,
                we calculate an approximate number of lines here and return a
                sub-rect with smaller height, which should still be sufficient.
            Args:
                annot_rect: the annotation rectangle
                new_text: the text to insert.
                font: the fontname. Must be one of the CJK or Base-14 set, else
                    the rectangle is returned unchanged.
                fsize: the fontsize
            Returns:
                A rectangle to use instead of the annot rectangle.
            ç333333ó?ç      à?)r]  r‰  Úget_text_lengthrÃ   r�   ÚFzErrorBaser
  rv   rJ  ÚceilrÕ  rí  r)  Úblr  )
Ú
annot_rectÚnew_textrW  rù  Ú
text_widthÚline_heightr  rÆ  r  r)  s
             r)   Úcenter_rectz*Page.apply_redactions.<locals>.center_rectz*  sç   € ð  ð "˜zÔ/µ7Ò:Ð:Ø!Ð!ð"Ý,¨X°t¸UÑCÔC�
�
øÝ¥Ô 1Ð2ð "ð "ð "Ý'ð %Ý"Ñ$Ô$Ð$Ø!Ð!Ð!Ð!ð"øøøð   #™+ˆKØÔ$ˆEÝ”	˜* uÑ,Ñ-Ô-°Ñ;ˆAØ�JÔ%Ò%Ð%Ø!Ð!ØˆAØ”” :¤=¤?Ñ2°QÑ6¸#Ñ=ˆAØˆAŒDØˆHs   –( ¨-AÁAr-  rÙ  )rŠ  FzError applying redactions.r÷   rû   )rû   r  r   r  r   rù   rú   rø   r1  rK  )rù   rú   r  r  r’  T)rf  rê   r   rÂ   rÃ   rÛ  rŸ  r�   rý   rk   r  rÄ  Ú	new_shapeÚ	draw_rectÚfinishrË  r8   Úinsert_textboxÚcommit)rÖ   r^	  rÂ  r   r›  r*  Úredact_annotsrß   r    ÚshapeÚredactr—  rû   r˜  r  rø  rù  r  Útrects                      r)   re	  zPage.apply_redactionsb*  s0  € ð0 	ð  	ð  	õD 	�DÑÔÐØŒkˆØÔð 	=˜sœ}ð 	=ÝÐ;Ñ<Ô<Ð<ØŒzð 	*Ý˜[Ñ)Ô)Ð)àˆØ—[’[ÝÔ)Ð+ð !ñ 
ô 
ð 	=ð 	=ˆEð × Ò  ×!9Ò!9Ñ!;Ô!;Ñ<Ô<Ð<Ð<à˜BÒÐØ�5à×#Ò# D¨&°(Ñ;Ô;ˆØð 	;ÝÐ9Ñ:Ô:Ð:ð —’Ñ Ô ˆØ#ð 	!ð 	!ˆFØ œˆJØ˜&”>ˆDØð 4Ø—’ 
Ñ+Ô+Ð+Ø—’ $¨d�Ñ3Ô3Ð3Ø˜Ÿš™œÐ&Ð&Ø! &œ>�ØŸ
š
 7¨AÑ.Ô.�Ø˜zÔ*�Ø˜zÔ*�Ø˜|Ô,�à#˜ J°¸%ÀÑGÔG�à�Ø˜1’f�f ¨!¢ à×-Ò-ØØ Ø!&Ø!&Ø#Ø#ð .ñ ô �Bð ˜S‘L�Eð ˜1’f�f ¨!¢ øð 	�Š‰ŒˆØˆtr*   c                óæ   — |dvrt          d¦  «        ‚t          | j        ¦  «        }t          j        ¦   «         }||_        t          j        |¦  «        }t          j        || j        |¦  «         dS )zbConvert colorspaces of objects on the page.
        
        Valid values are 1, 3 and 4.
        rk  z!components must be one of 1, 3, 4N)	rÃ   rÎ   rê   r�   Úpdf_recolor_optionsÚnum_compÚPdfRecolorOptionsÚpdf_recolor_pager^  )r(   rÜ  ÚpdfdocÚroptÚroptss        r)   rÌ  zPage.recolorÑ*  so   € ð
 ˜YÐ&Ð&ÝÐ@ÑAÔAÐAÝ! $¤+Ñ.Ô.ˆÝÔ(Ñ*Ô*ˆØ"ˆŒÝÔ'¨Ñ-Ô-ˆÝÔ˜v t¤{°EÑ:Ô:Ð:Ð:Ð:r*   c                ó  — t          |¦  «        }|j        s|| j        z  j        rt	          d¦  «        ‚t
          dk     r
|| j        z  }t          | ¦  «        }t          |¦  «        }t          j
        ||¦  «         t          |¦  «         dS )z-Clip away page content outside the rectangle.z"rect must not be infinite or empty)r   é   r   N)r$  rZ	  r÷   rY	  rÃ   Úmupdf_version_tuplerk  rÚ   r   r�   Úpdf_clip_pagerI
  )r(   r÷   r  r«  Úpclips        r)   Úclip_to_rectzPage.clip_to_rectÞ*  s“   € å�D‰zŒzˆØÔð 	C  t¤yÑ 0Ô:ð 	CÝÐAÑBÔBÐBÝ Ò+Ð+Ø�DÔ.Ñ.ˆDÝ˜tÑ$Ô$ˆÝ Ñ%Ô%ˆÝÔ˜G UÑ+Ô+Ð+Ý˜Ñ!Ô!Ð!Ð!Ð!r*   c                ó<   — t           rt          | fi |¤Ž| _        dS dS )z!Try to access layout information.N)rŽ   Úlayout_information©r(   rø  s     r)   Ú
get_layoutzPage.get_layoutê*  s5   € åð 	BÝ&1°$Ð&AÐ&A¸&Ð&AÐ&AˆDÔ#Ð#Ð#ð	Bð 	Br*   c                óÀ   — |                       d¦  «        }|€| j        S | j        }t          |d         |j        |d         z
  |d         |j        |d         z
  ¦  «        S )z
The ArtBoxr6  Nr   r   r   r   ©r&  ry  rv  r$  r  ©r(   r÷   r8  s      r)   ÚartboxzPage.artboxï*  sY   € ð �Š˜xÑ(Ô(ˆØˆ<Ø”<ÐØŒ]ˆÝ�D˜”G˜RœU T¨!¤W™_¨d°1¬g°r´u¸tÀA¼w±ÑGÔGÐGr*   c                óÀ   — |                       d¦  «        }|€| j        S | j        }t          |d         |j        |d         z
  |d         |j        |d         z
  ¦  «        S )zThe BleedBoxr4  Nr   r   r   r   r¸  r¹  s      r)   ÚbleedboxzPage.bleedboxø*  sY   € ð �Š˜zÑ*Ô*ˆØˆ<Ø”<ÐØŒ]ˆÝ�D˜”G˜RœU T¨!¤W™_¨d°1¬g°r´u¸tÀA¼w±ÑGÔGÐGr*   c                ó¤  — t          | ¦  «         t          | j        ¦  «        }t          j        |¦  «        }t          |¦  «        }|j        r‚| j        j        rv| j	        }|j
        |j        }}| j        dvr||}}t          dd||¦  «        }t                               d¬¦  «                             ¦   «         d         }t!          |¦  «         |S )zGet page rectangle.©r   é´   r   F)rc	  r1  )rf  r×   rÄ   r�   rØ  r$  rZ	  rê   rÛ  ry  r]  rÕ  rP  r  Úmupdf_warningsrÞ  rr   )r(   rÖ   r  Úcbr   rÆ  r˜   s          r)   Úboundz
Page.bound+  sÄ   € å�DÑÔÐÝ˜4œ9Ñ%Ô%ˆÝÔ! $Ñ'Ô'ˆÝ�3‰iŒiˆàŒ?ð 	˜tœ{Ô1ð 	Ø”ˆBØ”8˜RœYˆqˆAØŒ} HÐ,Ð,Ø˜!�1�Ý�q˜!˜Q Ñ"Ô"ˆCÝ×&Ò&¨UÐ&Ñ3Ô3×>Ò>Ñ@Ô@ÀÔDˆCÝ�C‰LŒLˆLàˆ
r*   c                óð   — |s| j         s|                      ¦   «          t          | j        d¬¦  «        }|j        sd S t          d|¬¦  «        }t          j        |                     ¦   «         ||¦  «         d S )NFr.  r   )rŠ  r�  )	Ú
is_wrappedÚwrap_contentsrÚ   rÄ   rÌ   r�  r�   Úpdf_filter_page_contentsr*  )r(   r�  rÖ   r‘  s       r)   r’  zPage.clean_contents+  s}   € Øð 	! ¤ð 	!Ø×ÒÑ Ô Ð Ý˜TœY°Ð7Ñ7Ô7ˆØŒð 	ØˆFÝ(°¸XÐFÑFÔFˆÝÔ&¨¯ª©
¬
°D¸'ÑBÔBÐBÐBÐBr*   c                óò   — t          | ¦  «         |                      d¬¦  «        }|j        st          j        | j        ¦  «        }n!t          |                     ¦   «         ¦  «        }t          |¦  «        }|S )zThe CropBox.Fr.  )	rf  ra  rÌ   r�   rØ  rÄ   rx  r  r$  )r(   rÖ   r  s      r)   ry  zPage.cropbox+  sh   € õ 	�DÑÔÐØ�~Š~ uˆ~Ñ-Ô-ˆØŒð 	)ÝÔ% d¤iÑ0Ô0ˆCˆCå˜TŸXšX™ZœZÑ(Ô(ˆCÝ�3‰iŒiˆàˆ
r*   c                ó   — | j         j        S r,   )ry  rí  r.   s    r)   Úcropbox_positionzPage.cropbox_position)+  s   € àŒ|ŒÐr*   c                óø  — t          | ¦  «         t          |¦  «         |                      ¦   «         }	 t          |j        ¦  «        }|snt	          j        ||j        ¦  «         Œ2t	          j        |j        ¦  «        }t	          j        ||j        ¦  «         t          |¦  «        }|r<d|_        t          j
        | ¦  «        |_        ||j        j        t          |¦  «        <   |                     ¦   «          |S )z!Delete annot and return next one.r   T)rf  ra  r™  rÄ   r�   rš  r5  râ   rñ   r  r  rê   r8  r9  rò   )r(   rß   rÖ   rž  Ú	nextannotr  s         r)   Údelete_annotzPage.delete_annot-+  sã   € å�DÑÔÐÝ�EÑÔÐà�~Š~ÑÔˆð	9å)¨%¬*Ñ5Ô5ˆIØð ØÝÔ" 4¨¬Ñ8Ô8Ð8ð	9õ Ô(¨¬Ñ4Ô4ˆ	ÝÔ˜t U¤ZÑ0Ô0Ð0Ý�IÑÔˆàð 	2ØˆCŒKÝ œ tÑ,Ô,ˆCŒJØ.1ˆCŒJÔ"¥2 c¡7¤7Ñ+Ø�Š‰ŒˆØˆ
r*   r  c                óˆ   — t          t          dd¦  «        }|                     ¦   «          |                      ||¬¦  «         dS )zÅDelete the image referred to by xef.

        Actually replaces by a small transparent Pixmap using method Page.replace_image.

        Args:
            xref: xref of the image to delete.
        ©r   r   r   r   r   )rû  N)r×  rÎ  Ú
clear_withÚreplace_image)rÖ   r  rà  s      r)   Údelete_imagezPage.delete_imageD+  sD   € õ •V˜\¨1Ñ-Ô-ˆØ�ŠÑÔÐØ×Ò˜4¨ÐÑ,Ô,Ð,Ð,Ð,r*   c                ór  ‡ ‡— t          ‰ ¦  «         t          ‰t          ¦  «        sdS ˆˆ fd„}t          ‰ j        d¬¦  «        }|j        s
 |¦   «         S ‰t                   }|dk     r
 |¦   «         S t          j        | 	                    ¦   «         t          d¦  «        ¦  «        }|j        s
 |¦   «         S t          j        |¦  «        }|dk    r
 |¦   «         S d}t          |¦  «        D ]1}t          j        t          j        ||¦  «        ¦  «        }||k    r nŒ2||k    r
 |¦   «         S t          j        ||¦  «         t          j        |                     ¦   «         |¦  «         t          j        | 	                    ¦   «         t          d¦  «        |¦  «         t'          |¦  «          |¦   «         S )zDelete a Link.Nc                 óÌ   •— ‰d         dk    rd S 	 ‰d         } ‰j         |          }|                     ¦   «          d S # t          $ r t          dk    rt	          ¦   «          Y d S w xY w)Nr  r   r9  r   )r8  rò   rg   r
  rv   )ÚlinkidÚlinkobjÚlinkdictr(   s     €€r)   Úfinishedz"Page.delete_link.<locals>.finishedW+  s€   ø€ Ø˜Ô 1Ò$Ð$ f fðØ! $œ�ØÔ*¨6Ô2�Ø—’Ñ Ô Ð Ð Ð øÝð ð ð å'¨!Ò+Ð+µÑ0@Ô0@Ð0@Ø��ðøøøs   ‘)< ¼#A#Á"A#Fr.  r   r—  r   )rf  r>   r5   rÚ   rÄ   rÌ   r  r�   r  r  r  r›  rL  r  rœ  r�  rA  r*  rN  rI
  )	r(   rÖ  r×  rÖ   r  rŸ  r  Úoxrefr®   s	   ``       r)   rd	  zPage.delete_linkQ+  s¾  øø€ å�DÑÔÐÝ˜8¥TÑ*Ô*ð 	ØˆFð		ð 		ð 		ð 		ð 		ð 		õ ˜DœI°Ð6Ñ6Ô6ˆØŒð 	Ø�8‘:”:ÐØ�Ô%ˆØ�!Š8ˆ8Ø�8‘:”:ÐÝÔ# T§X¢X¡Z¤Zµ¸(Ñ1CÔ1CÑDÔDˆØÔ ð 	Ø�8‘:”:ÐÝÔ" FÑ+Ô+ˆØ�1Š9ˆ9Ø�8‘:”:ÐØˆÝ˜‘”ð 	ð 	ˆAÝÔ$¥eÔ&9¸6À1Ñ&EÔ&EÑFÔFˆEØ�uŠ}ˆ}Ø�ð ð �5Š=ˆ=Ø�8‘:”:ÐÝÔ ¨Ñ*Ô*Ð*ÝÔ §¢¡¤¨TÑ2Ô2Ð2ÝÔ˜DŸHšH™JœJ­°Ñ(:Ô(:¸FÑCÔCÐCÝ˜$ÑÔÐàˆx‰zŒzÐr*   c                ó  — t          | ¦  «         t          |dd¦  «        }|€t          d¦  «        ‚|j        }|                      |¦  «         d|j        _        t          |j         	                    ¦   «         ¦  «        }|D ]
}|j        |= Œ|S )z0Delete widget from page and return the next one.r  Nzbad type: widget)
rf  rì   rÃ   r=  rÌ  r  rê   r´   r‚
  rË  )rÖ   r<  rß   Ú
nextwidgetÚkeylistr  s         r)   Údelete_widgetzPage.delete_widget}+  s—   € å�DÑÔÐÝ˜ ¨$Ñ/Ô/ˆØˆ=ÝÐ/Ñ0Ô0Ð0Ø”[ˆ
Ø×Ò˜%Ñ Ô Ð Ø#ˆŒÔÝ�v”×+Ò+Ñ-Ô-Ñ.Ô.ˆØð 	%ð 	%ˆCØ” Ð$Ð$ØÐr*   ru  c                ó.  — t           r&t          t          j        | j        ¦  «        ¦  «        S |                      d¬¦  «        }|j        s0t          t          j        t          j        j	        ¦  «        ¦  «        S t          t          |¦  «        ¦  «        S )zReflects page de-rotation.Fr.  )r  ru  r   ÚPage_derotate_matrixrÄ   ra  rÌ   r�   rh  ÚUNITr$  )r(   r«  s     r)   rl  zPage.derotation_matrix‹+  sz   € õ ð 	BÝ�%Ô4°d´iÑ@Ô@ÑAÔAÐAØ—.’.¨%�.Ñ0Ô0ˆØÔ!ð 	;Ý�%œ,¥u¤|Ô'8Ñ9Ô9Ñ:Ô:Ð:ÝÕ-¨gÑ6Ô6Ñ7Ô7Ð7r*   r1  Úp3Úp4r  r]  rð  Ú	closePathÚlineCapÚlineJoinrý  Ústroke_opacityÚfill_opacityrì  c                ó0  — |                       ¦   «         }|                     t          |¦  «        t          |¦  «        t          |¦  «        t          |¦  «        ¦  «        }|                     |||||||	|
|||¬¦  «         |                     |¦  «         |S )zODraw a general cubic Bezier curve from p1 to p4 using control points p2 and p3.©r  rû   r_  r]  rã  rä  rð  râ  rå  ræ  rÅ  )rœ  Údraw_bezierrì  rž  r   )rÖ   r  r  rà  rá  r  rû   r_  r]  rð  râ  rã  rä  rý  rå  ræ  rÅ  rÔ  rö   s                      r)   ré  zPage.draw_bezier•+  s—   € ð( �nŠnÑÔˆØ�OŠO�E "™IœI¥u¨R¡y¤yµ%¸±)´)½UÀ2¹Y¼YÑGÔGˆØ�
Š
ØØØØØØ!ØØ#Ø-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   r=  Úradiusc                óÜ   — |                       ¦   «         }|                     t          |¦  «        |¦  «        }|                     ||||||	||||¬¦
  «
         |                     |
¦  «         |S )ú*Draw a circle given its center and radius.©
r  rû   r_  r]  rã  rä  rð  rå  ræ  rÅ  )rœ  Údraw_circlerì  rž  r   )rÖ   r=  rê  r  rû   rð  r_  r]  rã  rä  rý  rå  ræ  rÅ  rÔ  rö   s                   r)   rî  zPage.draw_circle¼+  s~   € ð" �nŠnÑÔˆØ�OŠO�E &™MœM¨6Ñ2Ô2ˆØ�
Š
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐØˆr*   c                ó  — |                       ¦   «         }|                     t          |¦  «        t          |¦  «        t          |¦  «        ¦  «        }|                     |||||
|||	|||¬¦  «         |                     |¦  «         |S )zdDraw a special Bezier curve from p1 to p3, generating control points on lines p1 to p2 and p2 to p3.rè  )rœ  Ú
draw_curverì  rž  r   )rÖ   r  r  rà  r  rû   r_  r]  rð  râ  rã  rä  rý  rå  ræ  rÅ  rÔ  rö   s                     r)   rð  zPage.draw_curveÞ+  s�   € ð& �nŠnÑÔˆØ�NŠN�5 ™9œ9¥e¨B¡i¤iµ°r±´Ñ;Ô;ˆØ�
Š
ØØØØØØ!ØØ#Ø-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   c                óö   — |                       ¦   «         }|                     t          |¦  «        t          |¦  «        ¦  «        }|                     |||d|||	|
||¬¦
  «
         |                     |¦  «         |S )z&Draw a line from point p1 to point p2.F©
r  r_  r]  râ  rã  rä  rð  rå  ræ  rÅ  )rœ  Ú	draw_linerì  rž  r   )rÖ   r  r  r  r_  r]  rã  rä  rý  rð  rå  ræ  rÅ  rÔ  r¢  s                  r)   ró  zPage.draw_line,  s„   € ð  �nŠnÑÔˆØ�MŠM�% ™)œ)¥U¨2¡Y¤YÑ/Ô/ˆØ�
Š
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   ú"typing.Union[rect_like, quad_like]c                óÀ   — |                       ¦   «         }|                     |¦  «        }|                     ||||||||
||¬¦
  «
         |                     |	¦  «         |S )z4Draw an oval given its containing rectangle or quad.rí  )rœ  Ú	draw_ovalrž  r   )rÖ   r÷   r  rû   r_  rð  r]  rã  rä  rý  rå  ræ  rÅ  rÔ  rö   s                  r)   rö  zPage.draw_oval&,  sv   € ð  �nŠnÑÔˆØ�MŠM˜$ÑÔˆØ�
Š
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   c                óÂ   — |                       ¦   «         }|                     |¦  «        }|                     ||||||||
|||¬¦  «         |                     |	¦  «         |S )z&Draw multiple connected line segments.rè  )rœ  Údraw_polylinerž  r   )rÖ   r  r  rû   r_  r]  rð  rã  rä  rý  râ  rå  ræ  rÅ  rÔ  rö   s                   r)   rø  zPage.draw_polylineH,  s{   € ð" �nŠnÑÔˆØ×Ò˜fÑ%Ô%ˆØ�
Š
ØØØØØØ!ØØ#Ø-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   r  r»   c                óÚ   — |                       ¦   «         }|                     t          |¦  «        ¦  «        }|                     ||||||||
||¬¦
  «
         |                     |	¦  «         |S )zDraw a quadrilateral.rí  )rœ  Ú	draw_quadÚQuadrž  r   )rÖ   r  r  rû   r_  r]  rã  rä  rð  rý  rå  ræ  rÅ  rÔ  rö   s                  r)   rú  zPage.draw_quadl,  s|   € ð  �nŠnÑÔˆØ�MŠM�$˜t™*œ*Ñ%Ô%ˆØ�
Š
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   c                óÞ   — |                       ¦   «         }|                     t          |¦  «        |¬¦  «        }|                     ||||||||
||¬¦
  «
         |                     |	¦  «         |S )zG
        Draw a rectangle. See Shape class method for details.
        ©rê  rí  )rœ  r�  r$  rž  r   )rÖ   r÷   r  rû   r_  r]  rã  rä  rð  rý  rå  ræ  rÅ  rê  rÔ  rö   s                   r)   r�  zPage.draw_rectŽ,  s€   € ð& �nŠnÑÔˆØ�MŠM�$˜t™*œ*¨VˆMÑ4Ô4ˆØ�
Š
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   ÚbetaÚ
fullSectorc                óþ   — |                       ¦   «         }|                     t          |¦  «        t          |¦  «        ||¬¦  «        }|                     ||||	||||
|||¬¦  «         |                     |¦  «         |S )a  Draw a circle sector given circle center, one arc end point and the angle of the arc.

        Parameters:
            center -- center of circle
            point -- arc end point
            beta -- angle of arc (degrees)
            fullSector -- connect arc ends with center
        ©rÿ  rè  )rœ  Údraw_sectorrì  rž  r   )rÖ   r=  r-  rþ  r  rû   r_  rÿ  rð  r]  râ  rã  rä  rý  rå  ræ  rÅ  rÔ  rö   s                      r)   r  zPage.draw_sector³,  s�   € ð6 �nŠnÑÔˆØ�OŠO�E &™MœM­5°©<¬<¸È*ˆOÑUÔUˆØ�
Š
ØØØØØØ!ØØ#Ø-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   Úbreadthc                óú   — |                       ¦   «         }|                     t          |¦  «        t          |¦  «        |¬¦  «        }|                     |||d|||
|||¬¦
  «
         |                     |	¦  «         |S )z/Draw a squiggly line from point p1 to point p2.©r  Frò  )rœ  Údraw_squigglerì  rž  r   ©rÖ   r  r  r  r  r_  r]  rã  rä  rý  rð  rå  ræ  rÅ  rÔ  r¢  s                   r)   r  zPage.draw_squiggleá,  s‹   € ð" �nŠnÑÔˆØ×Ò�e B™iœi­¨r©¬¸GÐÑDÔDˆØ�
Š
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   c                óú   — |                       ¦   «         }|                     t          |¦  «        t          |¦  «        |¬¦  «        }|                     |||d|||
|||¬¦
  «
         |                     |	¦  «         |S )z-Draw a zigzag line from point p1 to point p2.r  Frò  )rœ  Údraw_zigzagrì  rž  r   r  s                   r)   r	  zPage.draw_zigzag-  sˆ   € ð" �nŠnÑÔˆØ�OŠO�E "™IœI¥u¨R¡y¤y¸'ˆOÑBÔBˆØ�
Š
ØØØØØØ!ØØ-Ø)Øð 	ñ 	ô 	ð 	ð 	�
Š
�7ÑÔÐàˆr*   c                óN  — | j         }|j         }t          |t          j        ¦  «        sJ ‚t          j        ¦   «         }||_        t          |¦  «        }t          j        ||¦  «        }t          j        |||t          j	        ¦   «         ¦  «         t          j
        |¦  «         d S r,   )rÄ   r>   r�   r  rþ  r¾  rÓ  r®  rÜ  rÉ  rÝ  )	r(   rß  r¾  rÙ  rÖ   r¸  r  rÞ  rà  s	            r)   Úextend_textpagezPage.extend_textpage'-  s’   € ØŒyˆØŒZˆÝ˜2�uÔ0Ñ1Ô1Ð1Ð1Ð1ÝÔ&Ñ(Ô(ˆØˆŒÝ Ñ'Ô'ˆÝŒn˜R Ñ)Ô)ˆÝÔ˜4  c­5¬>Ñ+;Ô+;Ñ<Ô<Ð<ÝÔ˜sÑ#Ô#Ð#Ð#Ð#r*   c                ó&   — t          j        | fi |¤ŽS r,   )ÚtableÚfind_tablesrµ  s     r)   r  zPage.find_tables2-  s   € ÝÔ  Ð0Ð0¨Ð0Ð0Ð0r*   c                ó(  — t          | ¦  «         |                      d¬¦  «        }|j        sdS t          j        |¦  «        }|j        sdS t          |¦  «        }d|_        t          j        | ¦  «        |_	        || j
        t          |¦  «        <   |S )zFirst annotation.Fr.  NT)rf  ra  rÌ   r�   Úpdf_first_annotrâ   rñ   r  r  rê   r8  r9  )r(   rÖ   rß   r  s       r)   Úfirst_annotzPage.first_annot5-  s�   € õ 	�DÑÔÐØ�~Š~ uˆ~Ñ-Ô-ˆØŒð 	ØˆFÝÔ% dÑ+Ô+ˆØÔð 	ØˆFÝ�E‰lŒlˆØˆŒÝ”] 4Ñ(Ô(ˆŒ
Ø$'ˆÔ�˜C™œÑ!Øˆ
r*   c                ó*   — |                       ¦   «         S )z$
        First link on page
        )Ú
load_linksr.   s    r)   Ú
first_linkzPage.first_linkE-  s   € ð
 �ŠÑ Ô Ð r*   c                ó‚  — t          | ¦  «         d}|                      d¬¦  «        }|j        sdS t          j        |¦  «        }|j        sdS t          |¦  «        }d|_        t          j        | ¦  «        |_	        || j
        t          |¦  «        <   t          ¦   «         }t                               ||¦  «         |}|S )zFirst widget/field.r   Fr.  NT)rf  ra  rÌ   r�   Úpdf_first_widgetrâ   rñ   r  r  rê   r8  r9  r:  r  r;  )r(   rß   rÖ   r  r<  s        r)   Úfirst_widgetzPage.first_widgetL-  s¸   € õ 	�DÑÔÐØˆØ�~Š~ uˆ~Ñ-Ô-ˆØŒð 	ØˆFÝÔ& tÑ,Ô,ˆØÔð 	ØˆFÝ�E‰lŒlˆØˆŒÝ”] 4Ñ(Ô(ˆŒ
Ø$'ˆÔ�˜C™œÑ!Ý‘”ˆÝ×Ò˜3 Ñ'Ô'Ð'ØˆØˆ
r*   c                óv  — t          | ¦  «         | j        }|dk    r|                      d¦  «         | j        }g }|rdnd}t	          ||¦  «        }t          j        ||t          j        ¦   «         t          j        ¦   «         ¦  «         t          j	        |¦  «         |dk    r|                      |¦  «         |S )Nr   TF)
rf  rP  r¶  rÄ   ÚJM_new_bbox_devicer�   rÜ  rr  rÉ  rÝ  )r(   ÚlayersrL  rÖ   r    Ú
inc_layersrà  s          r)   Úget_bboxlogzPage.get_bboxlog`-  s»   € Ý�DÑÔÐØ”}ˆØ˜1ÒÐØ×Ò˜aÑ Ô Ð ØŒyˆØˆØ#Ð.�T�T¨ˆ
Ý  " jÑ1Ô1ˆÝÔ˜4 ¥e¤nÑ&6Ô&6½¼Ñ8HÔ8HÑIÔIÐIÝÔ˜sÑ#Ô#Ð#à˜1ÒÐØ×Ò˜lÑ+Ô+Ð+Øˆ	r*   c                óê  — t          | ¦  «         | j        }|dk    r|                      d¦  «         | j        }t	          |t
          j        ¦  «        rt          j        |¦  «        }t	          |t
          j        ¦  «        sJ d| j        ›�¦   «         ‚|rdnd}t          j        |¦  «        }	 t          j        ||||¦  «        }|dk    r|                      |¦  «         t          |¦  «        s|�dS |S )z3Extract vector graphics ("line art") from the page.r   z
self.this=TFr   N)rf  rP  r¶  rÄ   r>   r�   rÓ   rÔ   rØ  r  r   Úget_cdrawingsr´   ÚcallableÚJM_new_lineart_device_Devicerr  r  ÚptmrÜ  rÉ  rÝ  )
r(   ÚextendedÚcallbackÚmethodrL  rÖ   ÚclipsÚprectr    rà  s
             r)   r  zPage.get_cdrawingsp-  s  € å�DÑÔÐØ”}ˆØ˜1ÒÐØ×Ò˜aÑ Ô Ð ØŒyˆÝ�d�EœMÑ*Ô*ð 	&å”< Ñ%Ô%ˆDÝ˜$¥¤Ñ-Ô-Ð>Ð>¨°$´)¨¨Ñ>Ô>Ð-Ø Ð+�� eˆÝÔ# DÑ)Ô)ˆð
	'ÝÔ$ T¨8°X¸vÑFÔFˆBð ˜1ÒÐØ×Ò˜lÑ+Ô+Ð+Ý�HÑÔð 	 Ð!3ØˆFØˆ	r*   c                ó  — t          | ¦  «         g }t          | j        ¦  «        }|                     ¦   «         }t	          j        |t          j        ¦  «        }t	          j        |¦  «        ret	          j        |¦  «        }t          |¦  «        D ]@}t	          j
        ||¦  «        }t	          j        |¦  «        }|                     |¦  «         ŒAn0|j        r)t	          j        |¦  «        }|                     |¦  «         |S )zGet xrefs of /Contents objects.)rf  rÚ   rÄ   r  r�   r  rÈ  rŽ  r›  rL  rœ  r  rk   rÌ   )	r(   rG   rÖ   r  rw  rE   r®   Úicontr  s	            r)   Úget_contentszPage.get_contents�-  sî   € å�DÑÔÐØˆÝ˜DœIÑ&Ô&ˆØ�hŠh‰jŒjˆÝÔ% c­5Ô+GÑHÔHˆÝÔ˜hÑ'Ô'ð 	ÝÔ# HÑ-Ô-ˆAÝ˜1‘X”Xð !ð !�ÝÔ+¨H°aÑ8Ô8�ÝÔ'¨Ñ.Ô.�Ø—
’
˜4Ñ Ô Ð Ð ð!ð Ô ð 	ÝÔ# HÑ-Ô-ˆDØ�JŠJ˜ÑÔÐØˆ
r*   c                ó¨   — t          | ¦  «         |rt          j        | j        ¦  «        }nt          j        | j        ¦  «        }t          |¦  «        S )z|
        Make a DisplayList from the page for Pixmap generation.

        Include (default) or exclude annotations.
        )rf  r�   Úfz_new_display_list_from_pagerÄ   Ú&fz_new_display_list_from_page_contentsr»  )r(   rŸ  r¿  s      r)   Úget_displaylistzPage.get_displaylist¡-  sM   € õ 	�DÑÔÐØð 	IÝÔ4°T´YÑ?Ô?ˆBˆBåÔ=¸d¼iÑHÔHˆBÝ˜2‰ŒÐr*   r"  c                óê  — d}|                       |¬¦  «        }t          t          |¦  «        ¦  «        D �]<}||         }|d                              d¦  «        st	          |d         ¦  «        |d<   nt	          |d         ¦  «        |d<   |d         dk    r­|d         }g }|D ]›}|d	         }	|d
d…         }
|	dk    r1dt	          |
d	         ¦  «                             ¦   «         |
d
         f}n;|	dk    rdt          |
d	         ¦  «        f}nt          |	gd„ |
D ¦   «         z   ¦  «        }|                     |¦  «         Œœ||d<   |d         dv r|D ]}| 	                    |¦  «        ||<   Œ|||<   �Œ>|S )a<  Retrieve vector graphics. The extended version includes clips.

        Note:
        For greater comfort, this method converts point-likes, rect-likes, quad-likes
        of the C version to respective Point / Rect / Quad objects.
        It also adds default items that are missing in original path types.
        )
râ  rû   r  r]  rã  rä  r_  rå  ræ  Úeven_odd)r"  rÈ   r  r÷   ÚscissorrÇ  rB   r   r   NrÆ  Úquc                ó,   — g | ]}t          |¦  «        ‘ŒS r-   ©rì  r¬   s     r)   r¯   z%Page.get_drawings.<locals>.<listcomp>Ô-  s   € Ð-EÐ-EÐ-E¸1­e°A©h¬hÐ-EÐ-EÐ-Er*   r$  )r  rL  r7   r3   r$  Ú	normalizerû  rµ   rk   r8   Úobject)r(   r"  Úallkeysr  r®   ÚnpathrB   ÚnewitemsrC   ÚcmdÚrestrŸ  ÚDrawpathÚDrawpathlistÚget_linearts                  r)   Úget_drawingszPage.get_drawings®-  s£  € ðˆð × Ò ¨(Ð Ñ3Ô3ˆÝ•s˜3‘x”x‘”ð 	ñ 	ˆAØ˜”FˆEØ˜”=×+Ò+¨FÑ3Ô3ð :Ý $ U¨6¤]Ñ 3Ô 3��f‘�å#'¨¨iÔ(8Ñ#9Ô#9��iÑ Ø�VŒ}˜gÒ%Ð%Ø˜gœ�Ø�Ø!ð 	*ð 	*�DØ˜qœ'�CØ   œ8�DØ˜tš˜Ø $¥d¨4°¬7¡m¤m×&=Ò&=Ñ&?Ô&?ÀÀaÄÐI˜˜Ø š˜Ø $¥d¨4°¬7¡m¤mÐ4˜˜å$ c UÐ-EÐ-EÀÐ-EÑ-EÔ-EÑ%EÑFÔF˜Ø—O’O DÑ)Ô)Ð)Ð)Ø!)��g‘Ø�VŒ} 
Ð*Ð*Ø ð ,ð ,�AØ$Ÿyšy¨™|œ|�E˜!‘H�HàˆC�‰F‰FØˆ
r*   ÚhashesrC  c                ó  — | j         }|r	|j        rd}|j        sd}t          | dd¦  «        }|r|s|S |s;|                      t          ¬¦  «        }|                     |¬¦  «        }~|r|| _        |r|j        s|S |                      ¦   «         }i }|D ]%}|d         }	t          ||	¦  «        }
|	||
j	        <   ~
Œ&t          t          |¦  «        ¦  «        D ]0}||         }|                     |d         d¦  «        }	|	|d	<   |||<   Œ1|S )
zßExtract image information only from a pymupdf.TextPage.

        Args:
            hashes: (bool) include MD5 hash for each image.
            xrefs: (bool) try to find the xref for each image. Sets hashes to true.
        TFÚ_image_infoNrS	  ©r?  r   r  r  )rê   rÛ  rì   r  ÚTEXT_PRESERVE_IMAGESÚextractIMGINFOrA  Ú
get_imagesr×  r  rL  r7   r8   )rÖ   r?  rC  r*  Úimginfor¸  Úimglistr   rC   r  rà  r®   s               r)   Úget_image_infozPage.get_image_infol.  sU  € ð ŒkˆØð 	�S”Zð 	ØˆFØŒzð 	ØˆEÝ˜$ ¨tÑ4Ô4ˆØð 	˜5ð 	ØˆNØð 	+Ø×"Ò"Õ)=Ð"Ñ>Ô>ˆBØ×'Ò'¨vÐ'Ñ6Ô6ˆGØØð +Ø#*�Ô Øð 	˜CœJð 	ØˆNØ—/’/Ñ#Ô#ˆØˆØð 	ð 	ˆDØ˜”7ˆDÝ˜˜dÑ#Ô#ˆCØ"&ˆG�C”JÑØ�Ý•s˜7‘|”|Ñ$Ô$ð 	ð 	ˆAØ˜1”:ˆDØ—;’;˜t Hœ~¨qÑ1Ô1ˆDØˆD�‰LØˆG�A‰JˆJØˆr*   c                óö  ‡‡— t          ‰¦  «        t          t          fv r	‰d         }n~t          ‰¦  «        t          u r‰}neˆfd„|                      ¦   «         D ¦   «         }|g k    rt          d¦  «        ‚t          |¦  «        dk    rt          d¦  «        ‚|d         d         }t          | j        |¦  «        }|j	        Š~|  
                    d¬¦  «        }|sˆfd„|D ¦   «         }nˆfd	„|D ¦   «         }|S )
a¹  Return list of image positions on a page.

        Args:
            name: (str, list, int) image identification. May be reference name, an
                  item of the page's image list or an xref.
            transform: (bool) whether to also return the transformation matrix.
        Returns:
            A list of pymupdf.Rect objects or tuples of (pymupdf.Rect, pymupdf.Matrix)
            for all image locations on the page.
        r   c                ó,   •— g | ]}|d          ‰k    ¯|‘ŒS ©rÅ  r-   ©r­   r®   r   s     €r)   r¯   z(Page.get_image_rects.<locals>.<listcomp>¥.  s"   ø€ ÐDÐDÐD˜Q°q¸´t¸t²|°|�q°|°|°|r*   úbad image namer   zmultiple image names foundTrB  c                óR   •— g | ]#}|d          ‰k    ¯t          |d         ¦  «        ‘Œ$S )r  r/  ©r$  ©r­   Úimr  s     €r)   r¯   z(Page.get_image_rects.<locals>.<listcomp>°.  s3   ø€ ÐQÐQÐQ¨2¸"¸X¼,È&Ò:PÐ:P•d˜2˜fœ:Ñ&Ô&Ð:PÐ:PÐ:Pr*   c                ó|   •— g | ]8}|d          ‰k    ¯t          |d         ¦  «        t          |d         ¦  «        f‘Œ9S )r  r/  rJ  )r$  ru  rP  s     €r)   r¯   z(Page.get_image_rects.<locals>.<listcomp>².  sO   ø€ ð ð ð àØ�h”< 6Ò)Ð)õ �b˜”jÑ!Ô!¥6¨"¨[¬/Ñ#:Ô#:Ð;à)Ð)Ð)r*   )rÈ   r´   rµ   r4   rE  rÃ   r7   r×  rê   r  rH  )	rÖ   r   rJ  r  rG  rà  ÚinfosÚbboxesr  s	    `      @r)   Úget_image_rectszPage.get_image_rects•.  s)  øø€ õ �‰:Œ:�$¥˜Ð&Ð&Ø˜”7ˆDˆDÝ�$‰ZŒZ�3ÐÐØˆDˆDàDÐDÐDÐD $§/¢/Ñ"3Ô"3ÐDÑDÔDˆGØ˜"Š}ˆ}Ý Ð!1Ñ2Ô2Ð2Ý�W‘” Ò"Ð"Ý Ð!=Ñ>Ô>Ð>Ø˜1”:˜a”=ˆDÝ�T”[ $Ñ'Ô'ˆØ”ˆØØ×#Ò#¨4Ð#Ñ0Ô0ˆØð 	ØQÐQÐQÐQ°ÐQÑQÔQˆFˆFðð ð ð àðñ ô ˆFð
 ˆr*   c                ó˜   — | j                              ¦   «         }|sdS |                     ¦   «          t          j        | j        |¦  «        S )z³Return the label for this PDF page.

        Args:
            page: page object.
        Returns:
            The label (str) of the page. Errors return an empty string.
        r\   )rê   r1  rÙ  rô  r–  r^  )rÖ   rŠ  s     r)   Ú	get_labelzPage.get_label¹.  sF   € ð ”×-Ò-Ñ/Ô/ˆØð 	Ø�2Ø�Š‰ŒˆÝÔ" 4¤;°Ñ7Ô7Ð7r*   c                óÚ  — t          | ¦  «         | j        }g }|r8t          j        || j        ¦  «        }|                     |¦  «         |j        }|°8|g k    r’| j        j        r†d„ t          | ¦  «        D ¦   «         }t          |¦  «        t          |¦  «        k    rMt          t          |¦  «        ¦  «        D ]0}||         d         ||         d<   ||         d         ||         d<   Œ1|S )z~Create a list of all links contained in a PDF page.

        Notes:
            see PyMuPDF ducmentation for details.
        c                ó>   — g | ]}|d          t           j        k    ¯|‘ŒS r2  r9  ró  s     r)   r¯   z"Page.get_links.<locals>.<listcomp>Ø.  s7   € ð ð ð ˜qð ˜”t�uÔ3Ò3Ð3ð ð 4Ð3Ð3r*   r   r  r   r9  )rf  r  rô  r²  rê   rk   r=  rÛ  r…  r7   rL  )rÖ   Úlnr}  ÚnlÚ	linkxrefsr®   s         r)   rr  zPage.get_linksÉ.  sÿ   € õ 	�DÑÔÐØŒ_ˆØˆØð 	ÝÔ" 2 t¤{Ñ3Ô3ˆBØ�LŠL˜ÑÔÐØ”ˆBð ð 	ð �BŠ;ˆ;˜4œ;Ô-ˆ;ðð å+¨DÑ1Ô1ðñ ô ˆIõ
 �9‰~Œ~¥ U¡¤Ò+Ð+Ý�s 9™~œ~Ñ.Ô.ð 5ð 5�AØ'0°¤|°A¤�E˜!”H˜VÑ$Ø%.¨q¤\°!¤_�E˜!”H˜T‘N�NØˆr*   r›  rÙ  r¹   rÛ  r”  r  rÜ  rŸ  rœ  c               óÂ  — |€t           }|r|dz  }t          ||¦  «        }t          |¦  «        t          u rG|                     ¦   «         dk    rt
          }n'|                     ¦   «         dk    rt          }nt           }|j        dvrt          d¦  «        ‚|  	                    |¬¦  «        }| 
                    ||||¬¦  «        }	d}|r|	                     ||¦  «         |	S )	aÏ  Create pixmap of page.

        Keyword args:
            matrix: Matrix for transformation (default: Identity).
            dpi: desired dots per inch. If given, matrix is ignored.
            colorspace: (str/Colorspace) cmyk, rgb, gray - case ignored, default csRGB.
            clip: (irect-like) restrict rendering to this area.
            alpha: (bool) whether to include alpha channel
            annots: (bool) whether to also render annotations
        NrÍ  rž  r   rk  zunsupported colorspace)rŸ  )rÙ  rÛ  rÜ  r  )rÏ  ru  rÈ   rÑ  r	  rÎ  rÐ  rE   rÃ   r-  rá  rØ  )
rÖ   rÙ  rÚ  rÛ  r  rÜ  rŸ  r]  r¿  rà  s
             r)   rá  zPage.get_pixmapã.  sõ   € ð( ÐÝˆJØð 	(Ø˜‘8ˆDÝ˜D $Ñ'Ô'ˆFå�
ÑÔ�sÐ"Ð"Ø×ÒÑ!Ô! VÒ+Ð+Ý#�
�
Ø×!Ò!Ñ#Ô# vÒ-Ð-Ý#�
�
å"�
ØŒ<˜yÐ(Ð(ÝÐ5Ñ6Ô6Ð6à×!Ò!¨Ð!Ñ0Ô0ˆØ�mŠm 6°jÈÐTXˆmÑYÔYˆØˆØð 	"Ø�KŠK˜˜SÑ!Ô!Ð!Øˆ
r*   c           	     ó†  — | j         }|dk    rt          S | j        }|dk    r2t          dddd|j        |j        z
  |j        z
  |j        z
  d¦  «        }n\|dk    r2t          ddddd|j        |j        z
  |j        z
  |j        z
  ¦  «        }n$t          ddddd|j        z  d|j        z  ¦  «        }|| j        z  }t          t          |¦  «        ¦  «        dz   }|                     d¦  «        }t                               | |d¦  «        }|d	v r8|\  }}}	}
||_        ||_        |
|_        |	|_        |                      |¦  «         |                      d¦  «         | }|                      ¦   «         D ]!}|j        |z  }|                     |¦  «         Œ"|                      ¦   «         D ]M}|d
         |z  }|                      |¦  «         ||d
<   	 |                      |¦  «         Œ># t,          $ r Y ŒJw xY w|                      ¦   «         D ]6}|j        |z  }|j        s|j        rŒ||_        |                     ¦   «          Œ7|S )z;Set page rotation to 0 while maintaining visual appearance.r   rµ  r   é  r×  z cm r
  F©rµ  r_  rY  )rP  rž  rv  ru  r  r	  r
  r  rl  r¶   rµ   rÈ  r  Ú_insert_contentsÚset_mediaboxr¶  rŸ  r÷   r²  rr  rd	  Úinsert_linkrg   r½  rY	  rZ	  r  )r(   rS  r8  Úmat0rv  r9  r  r
  r  r	  r  rß   r  r·  r<  s                  r)   Úremove_rotationzPage.remove_rotation/  st  € àŒmˆØ�!Š8ˆ8ÝÐð Œ]ˆà�"Š9ˆ9å˜!˜Q  1 b¤e¨b¬e¡m°b´eÑ&;¸b¼eÑ&CÀQÑGÔGˆDˆDØ�CŠZˆZå˜!˜Q  1 a¨¬°´©¸¼Ñ)>ÀÄÑ)FÑGÔGˆDˆDå˜!˜Q  1 b¨2¬5¡j°"°r´u±*Ñ=Ô=ˆDð �TÔ+Ñ+ˆÝ�˜c™
œ
Ñ#Ô# fÑ,ˆØ�jŠj˜Ñ Ô ˆÝ×"Ò" 4¨¨eÑ4Ô4ˆð �)ÐÐØ‰NˆB��B˜ØˆBŒEØˆBŒEØˆBŒEØˆBŒEØ×Ò˜bÑ!Ô!Ð!à×Ò˜!ÑÔÐØˆdˆà—[’[‘]”]ð 	ð 	ˆEØ”
˜SÑ ˆAà�NŠN˜1ÑÔÐÐØ—N’NÑ$Ô$ð 	ð 	ˆDØ�V”˜sÑ"ˆAØ×Ò˜TÑ"Ô"Ð"ØˆD�‰LðØ× Ò  Ñ&Ô&Ð&Ð&øÝð ð ð Ø�ðøøøà—l’l‘n”nð 	ð 	ˆFØ”˜cÑ!ˆAØŒzð ˜Qœ]ð ØØˆFŒKØ�MŠM‰OŒOˆOˆOØˆ
s   ÇG&Ç&
G3Ç2G3r   Úx_toleranceÚy_toleranceÚfinal_filterc                ó   ‡‡‡— t          | ¦  «         | j        Š|�t          |¦  «        Š|Š|Š|€|                      ¦   «         }ˆˆfd„}ˆfd„|D ¦   «         }t	          d„ |D ¦   «         d„ ¬¦  «        }g }	|r¥|d         
 }
d}|r_d	}t          t          |¦  «        d
z
  dd¦  «        D ]9} |||         |
¦  «        r%|
||         j        z  }
|
||         j        z  }
||= d}Œ:|°_|	 	                    |
¦  «         |d= t	          t          |¦  «        d„ ¬¦  «        }|°¥t	          t          |	¦  «        d„ ¬¦  «        }	|s|	S ˆˆfd„|	D ¦   «         S )aÊ  Join rectangles of neighboring vector graphic items.

        Args:
            clip: optional rect-like to restrict the page area to consider.
            drawings: (optional) output of a previous "get_drawings()".
            x_tolerance: horizontal neighborhood threshold.
            y_tolerance: vertical neighborhood threshold.

        Notes:
            Vector graphics (also called line-art or drawings) usually consist
            of independent items like rectangles, lines or curves to jointly
            form table grid lines or bar, line, pie charts and similar.
            This method identifies rectangles wrapping these disparate items.

        Returns:
            A list of Rect items, each wrapping line-art items that are close
            enough to be considered forming a common vector graphic.
            Only "significant" rectangles will be returned, i.e. having both,
            width and height larger than the tolerance values.
        Nc                óÐ  •— | j         | j        k    r| j        | j         fn| j         | j        f\  }}| j        | j        k    r| j        | j        fn| j        | j        f\  }}|j         |j        k    r|j        |j         fn|j         |j        f\  }}|j        |j        k    r|j        |j        fn|j        |j        f\  }}		 	 ||‰
z
  k     s||‰
z   k    s||‰z
  k     s	||	‰z   k    rdS dS )z÷Detect whether r1, r2 are "neighbors".

            Items r1, r2 are called neighbors if the minimum distance between
            their points is less-equal delta.

            Both parameters must be (potentially invalid) rectangles.
            r   FT©r	  r
  r  r  )Úr1Úr2Úrr1_x0Úrr1_x1Úrr1_y0Úrr1_y1Úrr2_x0Úrr2_x1Úrr2_y0Úrr2_y1Údelta_xÚdelta_ys             €€r)   Úare_neighborsz,Page.cluster_drawings.<locals>.are_neighborsg/  sÿ   ø€ ð 02¬u°r´uª}¨}˜bœe R¤U˜^˜^À2Ä5È"Ì%À.‰NˆF�FØ/1¬u°r´uª}¨}˜bœe R¤U˜^˜^À2Ä5È"Ì%À.‰NˆF�FØ/1¬u°r´uª}¨}˜bœe R¤U˜^˜^À2Ä5È"Ì%À.‰NˆF�FØ/1¬u°r´uª}¨}˜bœe R¤U˜^˜^À2Ä5È"Ì%À.‰NˆF�Fàðà˜F WÑ,Ò,Ð,Ø˜F WÑ,Ò,Ð,Ø˜F WÑ,Ò,Ð,Ø˜F WÑ,Ò,Ð,ð �uð �tr*   c                óÈ   •— g | ]^}	 	 |d         j         ‰j         k    rD|d         j        ‰j        k    r.|d         j        ‰j        k    r|d         j        ‰j        k    ¯\|‘Œ_S )r   r÷   ©r
  r	  r  r  )r­   r¢  Úpareas     €r)   r¯   z)Page.cluster_drawings.<locals>.<listcomp>‚/  s{   ø€ ð 
ð 
ð 
àØð
ð �&”	” ¤Ò(Ð(Ø�&”	” ¤Ò(Ð(Ø�&”	” ¤Ò(Ð(Ø�&”	” ¤Ò(Ð(ð ð )Ð(Ð(r*   c                ó   — g | ]
}|d          ‘ŒS rØ  r-   r�  s     r)   r¯   z)Page.cluster_drawings.<locals>.<listcomp>�/  s   € Ð2Ð2Ð2 q˜˜6œÐ2Ð2Ð2r*   c                ó   — | j         | j        fS r,   ©r  r
  ©r  s    r)   r­	  z'Page.cluster_drawings.<locals>.<lambda>�/  s   € À1Ä4ÈÌÀ,€ r*   rÏ	  r   TFr   r1  c                ó   — | j         | j        fS r,   r~  r  s    r)   r­	  z'Page.cluster_drawings.<locals>.<lambda>¢/  s   € ¸¼¸a¼d°|€ r*   c                ó   — | j         | j        fS r,   r~  r  s    r)   r­	  z'Page.cluster_drawings.<locals>.<lambda>¤/  s   € ¸!¼$ÀÄ¸€ r*   c                ó@   •— g | ]}|j         ‰k    ¯|j        ‰k    ¯|‘ŒS r-   rl  )r­   r  rv  rw  s     €€r)   r¯   z)Page.cluster_drawings.<locals>.<listcomp>§/  s1   ø€ ÐQÐQÐQ�a¨¬°'Ò(9Ð(9¸a¼hÈÒ>PÐ>P�Ð>PÐ>PÐ>Pr*   )rf  r÷   r$  r>  r
  rL  r7   rí  rî  rk   rØ  )r(   r  Údrawingsrf  rg  rh  rx  ÚpathsÚprectsÚ	new_rectsr  Úrepeatr®   rv  rw  r{  s                @@@r)   Úcluster_drawingszPage.cluster_drawingsF/  sé  øøø€ õ0 	�DÑÔÐØ”	ˆØÐÝ˜‘J”JˆEØˆØˆØÐØ×(Ò(Ñ*Ô*ˆHð	ð 	ð 	ð 	ð 	ð 	ð6
ð 
ð 
ð 
àð
ñ 
ô 
ˆõ Ð2Ð2¨EÐ2Ñ2Ô2Ð8NÐ8NÐOÑOÔOˆàˆ	ð
 ð 	EØ˜”�
ˆAØˆFØð &Ø�Ý�s 6™{œ{¨Q™°°2Ñ6Ô6ð &ð &�AØ$�} V¨A¤Y°Ñ2Ô2ð &Ø˜V AœYœ\Ñ)˜Ø˜V AœYœ\Ñ)˜Ø" 1˜IØ!%˜øð ð &ð ×Ò˜QÑÔÐØ�q�	Ý�C ™KœKÐ-CÐ-CÐDÑDÔDˆFð ð 	Eõ  �3˜y™>œ>Ð/EÐ/EÐFÑFÔFˆ	Øð 	ØÐØQÐQÐQÐQÐQ˜9ÐQÑQÔQÐQr*   c                ób   — t          | ¦  «         | j                             | j        |¬¦  «        S )z)List of fonts defined in the page object.r%
  )rf  rê   rŒ  r^  ©r(   r…  s     r)   Ú	get_fontszPage.get_fonts©/  s-   € å�DÑÔÐØŒ{×)Ò)¨$¬+¸DÐ)ÑAÔAÐAr*   c           	     ó¶  ‡— t          | ¦  «         | j        }|j        s|j        rt	          d¦  «        ‚t          dddd¦  «        }t          ¦   «         }|r||f}n|}t          ‰¦  «        t          t          fv r.t          ‰d         ¦  «        t          urt	          d¦  «        ‚‰}nkˆfd„|                     | j        d¦  «        D ¦   «         }t          |¦  «        dk    r	|d         }n(|g k    rt	          d¦  «        ‚t	          d	‰› d
�¦  «        ‚|d         }	|	dk    s|r>	 |                      ||¬¦  «        d         S # t          $ r t!          ¦   «          |cY S w xY w|                      ¦   «         }
t%          |
¦  «        }t'          |¦  «        s|S |D ]¾}|d         |d         k    rŒt)          |d         ¦  «        }|j        }|dk    r|} n„t          t-          |j        |j        ¦  «        ¦  «        }t3          |j        |j        z
  ¦  «        }t3          |j        |j        z
  ¦  «        }t          d|z  ddd|z  dd¦  «        }||z   }||f} |}|S )zòGet rectangle occupied by image 'name'.

        'name' is either an item of the image list, or the referencing
        name string - elem[7] of the resp. item.
        Option 'transform' also returns the image transformation matrix.
        r-  r   r1  z!need item of full page image listc                ó,   •— g | ]}‰|d          k    ¯|‘ŒS rK  r-   rL  s     €r)   r¯   z'Page.get_image_bbox.<locals>.<listcomp>Æ/  s%   ø€ ÐYÐYÐY˜QÈDÐTUÐVWÔTXÊLÈL�qÈLÈLÈLr*   Tr   rM  zfound multiple images named 'r\  )rJ  éýÿÿÿ)rf  rê   rÂ   r   rÃ   r$  ru  rÈ   r´   rµ   r4   r�  r^  r7   rU  rg   rv   ra  ÚJM_image_reporterrç   rû  r÷   Úutil_hor_matrixÚllÚlrrï  r¤  Úur)r(   r   rJ  r*  Úinf_rectÚnull_matr    rC   rG  r  r\  r  rF   r’  r/  ÚhmrÆ  r   Úm0r€  s    `                  r)   Úget_image_bboxzPage.get_image_bbox®/  s˜  ø€ õ 	�DÑÔÐØŒkˆØŒ=ð 	=˜CÔ,ð 	=ÝÐ;Ñ<Ô<Ð<å˜˜1˜b "Ñ%Ô%ˆÝ‘8”8ˆØð 	Ø˜HÐ%ˆBˆBàˆBå�‰:Œ:�$¥˜Ð&Ð&Ý˜˜Rœ‘>”>¥SÐ(Ð(Ý Ð!DÑEÔEÐEØˆDˆDàYÐYÐYÐY #×"5Ò"5°d´kÀ4Ñ"HÔ"HÐYÑYÔYˆGÝ�7‰|Œ|˜qÒ Ð Ø˜q”z��Ø˜B’�Ý Ð!1Ñ2Ô2Ð2å Ð!IÀÐ!IÐ!IÐ!IÑJÔJÐJØ�BŒxˆØ�1Š9ˆ9˜	ˆ9ð Ø×+Ò+¨D¸IÐ+ÑFÔFÀqÔIÐIøÝð  ð  ð  ÝÑ Ô Ð Ø���ð øøøð —>’>Ñ#Ô#ˆÝ Ñ)Ô)ˆå�C‰yŒyð 	ØˆIàð 	ð 	ˆAØ�Œt�t˜B”xÒÐØÝ�Q�q”T‘
”
ˆAØ”6ˆDØ˜AŠ~ˆ~Ø�Ø�å�¨¬¨a¬dÑ3Ô3Ñ4Ô4ˆBÝ�A”D˜1œ4‘KÑ Ô ˆAÝ�A”D˜1œ4‘KÑ Ô ˆAÝ˜˜A™˜q ! Q¨¡U¨A¨qÑ1Ô1ˆBØ�r‘'�
ˆAØ˜�ˆBØØˆàˆ
s   Ä%E ÅEÅEc                ób   — t          | ¦  «         | j                             | j        |¬¦  «        S )z*List of images defined in the page object.r%
  )rf  rê   r�  r^  rŠ  s     r)   rE  zPage.get_imagesî/  s-   € å�DÑÔÐØŒ{×*Ò*¨4¬;¸TÐ*ÑBÔBÐBr*   c                óÄ   — g }|                       ¦   «         D ]H\  }}| j                             |d¬¦  «        }d|v rd}nd|v rd}nŒ0|                     |||f¦  «         ŒI|S )zÈGet OCGs and OCMDs used in the page's contents.

        Returns:
            List of items (name, xref, type), where type is one of "ocg" / "ocmd",
            and name is the property name.
        Tr…  rÌ  r¬  rv  Úocmd)rÎ  rê   rˆ  rk   )r(   r    Úpnamer  r   Úoctypes         r)   Úget_oc_itemszPage.get_oc_itemsó/  sŠ   € ð ˆØ×8Ò8Ñ:Ô:ð 	-ð 	-‰KˆE�4Ø”;×*Ò*¨4¸DÐ*ÑAÔAˆDØ˜dÐ"Ð"Ø��Ø Ð%Ð%Ø��àØ�IŠI�u˜d FÐ+Ñ,Ô,Ð,Ð,Øˆ	r*   c                óZ  — t          | ¦  «         t          j        | j        ¦  «        }t	          |¦  «        }|}|dk    rt          j        nt          j        }t          j        ||¦  «        }t          j        d¦  «        }t          j	        |¦  «        }t          j
        ||j        |j        z
  |j        |j        z
  |d¦  «        }	t          j        | j        |	|t          j        ¦   «         ¦  «         t          j        |	¦  «         |                     ¦   «          t'          |¦  «        }
|
S )zMake SVG image from page.r   é   )rf  r�   rØ  rÄ   rÓ  ÚFZ_SVG_TEXT_AS_PATHÚFZ_SVG_TEXT_AS_TEXTr©  rã  rä  Úfz_new_svg_devicer	  r
  r  r  rÜ  rÉ  rÝ  r  ru
  )r(   rÙ  Útext_as_pathrv  rÞ  ÚtboundsÚtext_optionr  r  rà  r   s              r)   Úget_svg_imagezPage.get_svg_image0  s
  € å�DÑÔÐÝÔ& t¤yÑ1Ô1ˆÝ Ñ'Ô'ˆØˆØ3?À1Ò3DÐ3D•eÔ/Ð/Í%ÔJcˆÝÔ)¨'°3Ñ7Ô7ˆåÔ! $Ñ'Ô'ˆÝŒn˜SÑ!Ô!ˆÝÔ%ØØ”
˜7œ:Ñ%Ø”
˜7œ:Ñ%ØØñô ˆõ 	Ô˜$œ) S¨#­u¬~Ñ/?Ô/?Ñ@Ô@Ð@ÝÔ˜cÑ"Ô"Ð"Ø×ÒÑÔÐÝ% cÑ*Ô*ˆØˆr*   c                ó®   — |}|€|                       ¦   «         }n#t          |d¦  «        | k    rt          d¦  «        ‚|                     |¦  «        }|€~|S )Nrê   únot a textpage of this page)r  rì   rÃ   ÚextractTextbox)rÖ   r÷   r¢  r¸  r    s        r)   rû  zPage.get_textbox0  sf   € ð
 ˆØˆ:Ø×"Ò"Ñ$Ô$ˆBˆBÝ�R˜Ñ"Ô" dÒ*Ð*ÝÐ:Ñ;Ô;Ð;Ø×Ò˜tÑ$Ô$ˆØÐØØˆ	r*   c                ó,   — t          j        | g|¢R i |¤ŽS r,   ró  rö  s      r)   rõ  zPage.get_text-0  rù  r*   c                ó,   — t          j        | g|¢R i |¤ŽS r,   )rô  Úget_text_blocksrö  s      r)   r­  zPage.get_text_blocks00  s#   € ÝÔ$ TÐ;¨DÐ;Ð;Ð;°FÐ;Ð;Ð;r*   c                ó,   — t          j        | g|¢R i |¤ŽS r,   )rô  Úget_text_selectionrö  s      r)   r¯  zPage.get_text_selection30  s#   € ÝÔ'¨Ð>¨tÐ>Ð>Ð>°vÐ>Ð>Ð>r*   c                ó,   — t          j        | g|¢R i |¤ŽS r,   )rô  Úget_text_wordsrö  s      r)   r±  zPage.get_text_words60  s#   € ÝÔ# DÐ:¨4Ð:Ð:Ð:°6Ð:Ð:Ð:r*   c                ó,   — t          j        | g|¢R i |¤ŽS r,   )rô  Úget_textpage_ocrrö  s      r)   r³  zPage.get_textpage_ocr90  s#   € ÝÔ% dÐ<¨TÐ<Ð<Ð<°VÐ<Ð<Ð<r*   r¾  r£  c                óˆ  — t          | ¦  «         |€t          dd¦  «        }| j        }|dk    r|                      d¦  «         	 |                      |||¬¦  «        }|dk    r|                      |¦  «         n!# |dk    r|                      |¦  «         w w xY wt          |¦  «        }t          j        | ¦  «        |_        |S )Nr   r   )r¾  rÙ  )	rf  ru  rP  r¶  rá  r  r  r  rê   )r(   r  r¾  rÙ  rL  r¢  s         r)   r  zPage.get_textpage<0  s×   € Ý�DÑÔÐØˆ>Ý˜A˜q‘\”\ˆFØ”}ˆØ˜1ÒÐØ×Ò˜aÑ Ô Ð ð	0Ø×)Ò)¨$°eÀFÐ)ÑKÔKˆHà˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/øøð ˜qÒ Ð Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð !øøøå˜HÑ%Ô%ˆÝ!œ-¨Ñ-Ô-ˆŒØˆs   ÁA9 Á9Bc                óâ  — t          | ¦  «         | j        }|dk    r|                      d¦  «         | j        }g }	 t          j        |¦  «        }t          j        |¦  «        }t          j	        ddddd|j
        ¦  «        |_        t          j        ||t          j	        ¦   «         t          j        ¦   «         ¦  «         t          j        |¦  «         |dk    r|                      |¦  «         |S ©Nr   r   r1  )rf  rP  r¶  rÄ   r  r   ÚJM_new_texttrace_devicer�   rØ  rr  r  r!  rÜ  rÉ  rÝ  )r(   rL  rÖ   r    rà  r&  s         r)   r8
  zPage.get_texttraceL0  sâ   € å�DÑÔÐØ”}ˆØ˜1ÒÐØ×Ò˜aÑ Ô Ð ØŒyˆØˆð	.ÝÔ/°Ñ3Ô3ˆCõ Ô# DÑ)Ô)ˆÝ”.  A q¨"¨a°´Ñ:Ô:ˆŒÝÔ˜$ ¥U¤^Ñ%5Ô%5µu´~Ñ7GÔ7GÑHÔHÐHÝÔ˜cÑ"Ô"Ð"à˜1ÒÐØ×Ò˜lÑ+Ô+Ð+Øˆ	r*   c                ó^   — t          | ¦  «         | j                             | j        ¦  «        S )z,List of xobjects defined in the page object.)rf  rê   r¨  r^  r.   s    r)   Úget_xobjectszPage.get_xobjectsa0  s(   € å�DÑÔÐØŒ{×,Ò,¨T¬[Ñ9Ô9Ð9r*   rÔ  c                ó  — | j         }|€t          d¦  «        ‚d}|                     d¦  «        r
|dd …         }t                               |¦  «        }	|	t          ¦   «         k    rt          d|	› �¦  «        ‚t          | |¦  «        }
|
�1|
d         }t          ||¦  «        r|S |                     |¦  «         |S t           
                    |                     ¦   «         d ¦  «        }d}d}g d¢}g d¢}	 |                     |¦  «        }d}n)# t          $ r t          dk    rt          ¦   «          Y nw xY w|dk     rB	 |                     |¦  «        }d}n)# t          $ r t          dk    rt          ¦   «          Y nw xY w|                     ¦   «         t                                ¦   «         v rdd l}|                     |¦  «        }~|�`t)          |¦  «        t*          u r|}nIt-          |d	¦  «        rt+          |¦  «        }n)t-          |d
¦  «        r|j        }nt          d¦  «        ‚d }|                      ||||||||||¦
  «
        }|s|S |d         }|d         }t          ||¦  «        r|S |                     ||¬¦  «         |S )Nr.  r   rW  r   zbad fontname chars r1  )rª
  r¬
  r®
  r­
  )r«
  úchina-ssújapan-súkorea-srü  r   zbad fontfile)r:  )rê   rÃ   r3   rw
  rx
  rØ  Ú	CheckFontrN  rX  r²
  r8   rÒ  rd  rg   r
  rv   r¯
  rË  r°
  r±
  rÈ   rÑ  r;   r   r  )r(   rù   rS  rT  r  rÈ
  rë  r*  r8  Ú	inv_charsrW  r  r  rÓ
  Ú
CJK_numberÚ
CJK_list_nÚ
CJK_list_sr°
  Úfontfile_strr  r:  s                        r)   Úinsert_fontzPage.insert_fontf0  sú  € àŒkˆØˆ;ÝÐ>Ñ?Ô?Ð?Øˆà×Ò˜sÑ#Ô#ð 	$Ø   ”|ˆHÝ&×3Ò3°HÑ=Ô=ˆ	Ø�™œÒÐÝÐ>°9Ð>Ð>Ñ?Ô?Ð?å˜˜xÑ(Ô(ˆØÐØ˜”7ˆDÝ˜S $Ñ'Ô'ð Ø�à×Ò Ñ%Ô%Ð%ØˆKõ !×$Ò$ X§^¢^Ñ%5Ô%5°tÑ<Ô<ˆàˆØˆ
Ø=Ð=Ð=ˆ
ØCÐCÐCˆ
ð	Ø#×)Ò)¨(Ñ3Ô3ˆJØˆEˆEøÝð 	ð 	ð 	å# aÒ'Ð'­NÑ,<Ô,<Ð,<ØˆDð	øøøð
 ˜Š>ˆ>ðØ'×-Ò-¨hÑ7Ô7�
Ø��øÝð ð ð å'¨!Ò+Ð+µÑ0@Ô0@Ð0@Ø�ðøøøð
 �>Š>ÑÔÕ3×8Ò8Ñ:Ô:Ð:Ð:Ø Ð Ð Ð Ø&×-Ò-¨hÑ7Ô7ˆJØð ÐÝ�H‰~Œ~¥Ð$Ð$Ø'��Ý˜ :Ñ.Ô.ð 1Ý" 8™}œ}��Ý˜ 6Ñ*Ô*ð 1Ø'œ}��å  Ñ0Ô0Ð0àˆLØ×Ò˜x¨°¸zÈ:ÐWZØ$ e¨X°zñCô Cˆð ð 	ØˆJà�1ŒvˆØ�q”6ˆå˜˜dÑ#Ô#ð 	ØˆKð 	×Ò˜D¨8ÐÑ4Ô4Ð4Øˆs$   Ã5D Ä#D3Ä2D3Ä=E Å#E;Å:E;)	r;  Ú	scale_lowr$  rY  rÅ  rV  rý  Ú_scale_word_widthÚ_verboserµ   c       	   	     óŒ  ‡— |dz  dk    st          d¦  «        ‚|dk     r|dz  }|dk     °|dk    r|dz  }|dk    °d|cxk    rdk    sn t          d¦  «        ‚|€d}t          |¦  «        }|d	v rt          dd|j        |j        ¦  «        }nt          dd|j        |j        ¦  «        }d
|z   }t	          |t
          ¦  «        rt          |||¬¦  «        }n't	          |t          ¦  «        r|}nt          d¦  «        ‚|dk    rdnd|z  }|                     |d||
rt          j	        nd|¬¦  «        Š‰j
        sd‰j        z  }d|fS t          ‰j        ¦  «        ‰_        ‰j        j        ‰j        j        fdk    sJ ‚‰j        j        ‰j        j        fdk    sJ ‚d‰j        z  }||k    sJ d|›d|›�¦   «         ‚t!          ‰j        j        ‰j        j        z
  |z  d¦  «        }ˆfd„}|                     |¦  «        }d|cxk    rdk     rVn nS|d         }|                     ||¬¦  «        }d|› d�}t(                               ||                     ¦   «         d¦  «         |                      ||d|||	¬¦  «         ‰j        j        ‰j        j        z   dz  |z  }|j        |j        z   dz  }t5          |dd||j         |j         ¦  «        t5          | ¦  «        z  t5          dddd|j        |j        ¦  «        z  }|d                              ¦   «         D ]'}|dxx         |z  cc<   |                      |¦  «         Œ(||fS )as  Insert text with optional HTML tags and stylings into a rectangle.

        Args:
            rect: (rect-like) rectangle into which the text should be placed.
            text: (str) text with optional HTML tags and stylings.
            css: (str) CSS styling commands.
            scale_low: (float) force-fit content by scaling it down. Must be in
                range [0, 1]. If 1, no scaling will take place. If 0, arbitrary
                down-scaling is acceptable. A value of 0.1 would mean that content
                may be scaled down by at most 90%.
            archive: Archive object pointing to locations of used fonts or images
            rotate: (int) rotate the text in the box by a multiple of 90 degrees.
            oc: (int) the xref of an OCG / OCMD (Optional Content).
            opacity: (float) set opacity of inserted content.
            overlay: (bool) put text on top of page content.
            _scale_word_width: internal, for testing only.
            _verbose: internal, for testing only.
        Returns:
            A tuple of floats (spare_height, scale).
            spare_height:
                The height of the remaining space in <rect> below the
                text, or -1 if we failed to fit.
            scale:
                The scaling required; `0 < scale <= 1`.
                Will be less than `scale_low` if we failed to fit.
        rµ  r   zbad rotation angler´  r   z'scale_low' must be in [0, 1]Nr\   r`  zbody {margin:1px;})ÚhtmlÚuser_cssr$  z"'text' must be a string or a Story)Ú	scale_minÚ	scale_maxr¾  rè	  r1  rÐ  z
scale_low=z scale=c                 ó"   •— ‰j         ‰j         d fS r,   rØ  )r÷  Úfits    €r)   Úrect_functionz*Page.insert_htmlbox.<locals>.rect_function 1  s   ø€ Ø”8˜SœX tÐ+Ð+r*   ©r6  r7  rW  ú gs
)rY  rÅ  rý  r   rY  )rÃ   r$  rÕ  r]  r>   rÑ  ÚStoryÚ	fit_scaler�   ÚFZ_PLACE_STORY_FLAG_NO_OVERFLOWÚ
big_enoughÚ	parameterrN	  r÷   r
  r  rê  r  Úwrite_with_linksr1  r  ra  rÈ  Úshow_pdf_pagerí  rî  ru  r(  r)  rr  rc  )rÖ   r÷   r   r;  rÅ  r$  rY  rÅ  rV  rý  rÆ  rÇ  Ú	temp_rectÚmycssÚstoryÚrect_scale_maxr¬  Úspare_heightrÏ  r*  rß  rb  rr  Úmp1Úmp2rv  r·  rÎ  s                              @r)   Úinsert_htmlboxzPage.insert_htmlbox¹0  só  ø€ ðT ˜‰{˜aÒÐÝÐ1Ñ2Ô2Ð2Ø�qŠjˆjØ�c‰MˆFð �qŠjˆjà˜ŠmˆmØ�c‰MˆFð ˜Šmˆmð �IÐ"Ð"Ò"Ð" Ò"Ð"Ð"Ð"ÝÐ<Ñ=Ô=Ð=àˆ;ØˆCå�D‰zŒzˆØ�YÐÐÝ˜Q  4¤;°´
Ñ;Ô;ˆIˆIå˜Q  4¤:¨t¬{Ñ;Ô;ˆIð % sÑ*ˆõ �d�CÑ Ô ð 	CÝ˜t¨e¸WÐEÑEÔEˆEˆEÝ˜�eÑ$Ô$ð 	CØˆEˆEåÐAÑBÔBÐBð "+¨a¢ ˜˜°Q¸±]ˆà�oŠoØØØ(Ø?PÐW•eÔ;Ð;ÐVWØ ð ñ ô ˆð Œ~ð 	Ø˜œÑ%ˆEØ˜�;Ðõ ˜#œ*Ñ%Ô%ˆŒ
Ø””˜SœXœ[Ð)¨VÒ3Ð3Ð3Ð3Ø”
”˜sœzœ}Ð-°Ò7Ð7Ð7Ð7à�C”MÑ!ˆØ˜	Ò!Ð!Ð!Ð#; iÐ#;Ð#;°5Ð#;Ð#;Ñ!Ô!Ð!å˜CœHœK¨#¬*¬-Ñ7¸5Ñ@À!ÑDÔDˆð	,ð 	,ð 	,ð 	,ð 	,ð ×$Ò$ ]Ñ3Ô3ˆð �ÐÐÒÐ˜!ÒÐÐÐÐØ˜”FˆEà×%Ò%¨°WÐ%Ñ=Ô=ˆDØ�D���ˆAÝ×"Ò" 5¨!¯(ª(©*¬*°aÑ8Ô8Ð8ð 	×Ò˜4  a°¸2ÀwÐÑOÔOÐOð ŒxŒ{˜SœXœ[Ñ(¨AÑ-°Ñ5ˆð Œw˜œÑ  AÑ%ˆõ �5˜!˜Q ¨¬ v°´¨vÑ6Ô6Ý�f�W‰oŒoñå�Q˜˜1˜a ¤¨¬Ñ.Ô.ñ/ð 	ð ˜”F×$Ò$Ñ&Ô&ð 	#ð 	#ˆDØ�ˆLˆLŒL˜CÑˆLˆL‰LØ×Ò˜TÑ"Ô"Ð"Ð"à˜UÐ"Ð"r*   )rÜ  rf   rÕ  rþ  r  rÅ  rý  rû  rY  r	   r]  r  c               ó  — t          | ¦  «         | j        }|j        st          d¦  «        ‚|dk    rBt	          |¦  «        t	          |¦  «        z   t	          |	¦  «        z   dk    rt          d¦  «        ‚|r^t          |¦  «        t          u rnGt          |d¦  «        rt          |¦  «        }n't          |d¦  «        r|j        }nt          d¦  «        ‚|r2t          j
                             |¦  «        st          d|› d	�¦  «        ‚|r7t          |¦  «        t          t          t          j        fvrt          d
¦  «        ‚|	r%t          |	¦  «        t"          urt          d¦  «        ‚|r|s|st          d¦  «        ‚|r7t          |¦  «        t          t          t          j        fvrt          d¦  «        ‚|
dk     r|
dz  }
|
dk     °|
dk    r|
dz  }
|
dk    °|
dvrt          d¦  «        ‚t%          |¦  «        }|j        s|j        rt          d¦  «        ‚|| j         z  }d„ |                     | j        ¦  «        D ¦   «         }|d„ |                     | j        ¦  «        D ¦   «         z  }|d„ |                     | j        ¦  «        D ¦   «         z  }d}d}|dz   }||v r|dz  }|t          |¦  «        z   }||v °|r|                      ¦   «          |j        }|                      ||	|||||||
||||||¬¦  «        \  }}|�||_        |S )a‹  Insert an image for display in a rectangle.

        Args:
            rect: (rect_like) position of image on the page.
            alpha: (int, optional) set to 0 if image has no transparency.
            filename: (str, Path, file object) image filename.
            height: (int)
            keep_proportion: (bool) keep width / height ratio (default).
            mask: (bytes, optional) image consisting of alpha values to use.
            oc: (int) xref of OCG or OCMD to declare as Optional Content.
            overlay: (bool) put in foreground (default) or background.
            pixmap: (pymupdf.Pixmap) use this as image.
            rotate: (int) rotate by 0, 90, 180 or 270 degrees.
            stream: (bytes) use this as image.
            width: (int)
            xref: (int) use this as image.

        'page' and 'rect' are positional, all other parameters are keywords.

        If 'xref' is given, that image is used. Other input options are ignored.
        Else, exactly one of pixmap, stream or filename must be given.

        'alpha=0' for non-transparent images improves performance significantly.
        Affects stream and filename only.

        Optimum transparent insertions are possible by using filename / stream in
        conjunction with a 'mask' image of alpha values.

        Returns:
            xref (int) of inserted image. Re-use as argument for multiple insertions.
        rÙ  r   r   z4xref=0 needs exactly one of filename, pixmap, streamrü  r   zbad filenamezNo such file: 'rë   z#stream must be bytes-like / BytesIOzpixmap must be a Pixmapz mask requires stream or filenamez!mask must be bytes-like / BytesIOr´  )r   rµ  r¿  r_  úbad rotate valueú!rect must be finite and not emptyc                ó   — g | ]
}|d          ‘ŒS rK  r-   r¬   s     r)   r¯   z%Page.insert_image.<locals>.<listcomp>¥1  s   € Ð?Ð?Ð?˜��!”Ð?Ð?Ð?r*   c                ó   — g | ]
}|d          ‘ŒS r2  r-   r¬   s     r)   r¯   z%Page.insert_image.<locals>.<listcomp>¦1  s   € ÐBÐBÐB˜!��1”ÐBÐBÐBr*   c                ó   — g | ]
}|d          ‘ŒS ©rK  r-   r¬   s     r)   r¯   z%Page.insert_image.<locals>.<listcomp>§1  ó   € Ð?Ð?Ð?˜!��1”Ð?Ð?Ð?r*   ÚfzImgrz   )rf   rû  r	   rü  r  rý  rÅ  r  rY  rþ  r]  rÕ  rÜ  rÿ  r   )rf  rê   rÛ  rÃ   rç   rÈ   rÑ  r;   r   rd   r
   r  r  r  r]  r9   r^  r×  r$  rY	  rZ	  rk  r�  r^  r¨  rŒ  rÅ  r  r  )rÖ   r÷   rÜ  rf   rÕ  rþ  r  rÅ  rý  rû  rY  r	   r]  r  r*  r  r  ÚilstrE   r®   rÿ  r   s                         r)   Úinsert_imagezPage.insert_imageL1  sŽ  € õ` 	�DÑÔÐØŒkˆØŒzð 	*Ý˜[Ñ)Ô)Ð)à�1Š9ˆ9�$˜x™.œ.­4°©<¬<Ñ7½$¸v¹,¼,ÑFÈ!ÒKÐKÝÐSÑTÔTÐTàð 	1Ý�H‰~Œ~¥Ð$Ð$ØÝ˜ :Ñ.Ô.ð 1Ý˜x™=œ=��Ý˜ 6Ñ*Ô*ð 1Ø#œ=��å  Ñ0Ô0Ð0àð 	8�BœGŸNšN¨8Ñ4Ô4ð 	8Ý#Ð$A°hÐ$AÐ$AÐ$AÑBÔBÐBØð 	8�˜V™œ­UµI½r¼zÐ,JÐJÐJÝÐBÑCÔCÐCØð 	8�˜V™œ­FÐ2Ð2ÝÐ6Ñ7Ô7Ð7Øð 	A˜ð 	A 8ð 	AÝÐ?Ñ@Ô@Ð@Øð 	B•D˜‘J”J¥u­i½¼Ð&DÐDÐDÝÐ@ÑAÔAÐAØ�qŠjˆjØ�c‰MˆFð �qŠjˆjà˜ŠmˆmØ�c‰MˆFð ˜ŠmˆmàÐ*Ð*Ð*ÝÐ/Ñ0Ô0Ð0å�‰JŒJˆØŒ:ð 	B˜œð 	BÝÐ@ÑAÔAÐAØ�DÔ.Ð.Ñ.ˆð @Ð?˜c×1Ò1°$´+Ñ>Ô>Ð?Ñ?Ô?ˆØÐBÐB˜s×4Ò4°T´[ÑAÔAÐBÑBÔBÑBˆØÐ?Ð?˜s×1Ò1°$´+Ñ>Ô>Ð?Ñ?Ô?Ñ?ˆØˆØˆØ�s‘7ˆØ˜$ÐÐØ�‰FˆAØ�3˜q™6œ6‘zˆHð ˜$ÐÐð ð 	!Ø×ÒÑ Ô Ð ØÔ$ˆØ×*Ò*ØØØØØØØØØØ+ØØØØØð +ñ 
ô 
‰ˆˆgð" ÐØ!(ˆCÔàˆr*   ri  r5   rM  r×  c                ó¤   — t          | ¦  «         t          j        | |¦  «        }|dk    rt          d¦  «        ‚|                      |f¦  «         dS )z'Insert a new link for the current page.r\   úlink kind not supportedN)rf  rô  ÚgetLinkTextrÃ   rt  )rÖ   ri  rM  rß   s       r)   rc  zPage.insert_linkÈ1  sV   € å�DÑÔÐÝÔ! $¨Ñ,Ô,ˆØ�BŠ;ˆ;ÝÐ6Ñ7Ô7Ð7Ø×!Ò! 5 (Ñ+Ô+Ð+Ð+Ð+r*   çš™™™™™©?)rú   rk  rù   rS  r  rë  r  rû   rÖ  Úmiter_limitÚrender_moderY  rð  rý  rå  ræ  rÅ  útyping.Union[str, list]rk  r¿  rS  r  rë  rð  rñ  c               ó²   — |                       ¦   «         }|                     |||||||||	|
||||||||¬¦  «        }|dk    r|                     |¦  «         |S )N)rú   rk  rù   rS  r  rë  r  rû   rÖ  rñ  rð  rY  rð  rå  ræ  rÅ  r   )rœ  r)  r   )rÖ   r-  r   rú   rk  rù   rS  r  rë  r  rû   rÖ  rð  rñ  rY  rð  rý  rå  ræ  rÅ  rÔ  r    s                         r)   r)  zPage.insert_textÐ1  sƒ   € ð0 �nŠnÑÔˆØ�_Š_ØØØØ!ØØØ!ØØØØ%Ø#Ø#ØØØ)Ø%Øð% ñ 
ô 
ˆð( �Š7ˆ7Ø�JŠJ�wÑÔÐØˆ	r*   )r  rÖ  r  rë  Ú
expandtabsræ  rû   rS  rù   rú   rk  rð  rð  rÅ  rý  rñ  rY  r  rå  ræ  rô  c               ó¶   — |                       ¦   «         }|                     ||||||
||||	||||||||||¬¦  «        }|dk    r|                     |¦  «         |S )a3  Insert text into a given rectangle.

        Notes:
            Creates a Shape object, uses its same-named method and commits it.
        Parameters:
            rect: (rect-like) area to use for text.
            buffer: text to be inserted
            fontname: a Base-14 font, font name or '/name'
            fontfile: name of a font file
            fontsize: font size
            lineheight: overwrite the font property
            color: RGB color triple
            expandtabs: handles tabulators with string function
            align: left, center, right, justified
            rotate: 0, 90, 180, or 270 degrees
            morph: morph box with a matrix and a fixpoint
            overlay: put text in foreground or background
        Returns:
            unused or deficit rectangle area (float)
        )rú   rk  rù   rS  r  rë  r  rû   rô  rñ  rð  rÖ  r  rY  rð  rå  ræ  rÅ  r   )rœ  rŸ  r   )rÖ   r÷   ræ  r  rÖ  r  rë  rô  ræ  rû   rS  rù   rú   rk  rð  rð  rÅ  rý  rñ  rY  r  rå  rÔ  r    s                           r)   rŸ  zPage.insert_textbox2  sŒ   € ðZ �nŠnÑÔˆØ×ÒØØØØ!ØØØ!ØØØØ!Ø#Ø#Ø%ØØØØ)Ø%Øð)  ñ 
ô 
ˆð, �Š7ˆ7Ø�JŠJ�wÑÔÐØˆ	r*   c                ó2   — |                       ¦   «         dk    S )z3Check if /Contents is in a balanced graphics state.rÐ  )rÊ  r.   s    r)   rÄ  zPage.is_wrappedI2  s   € ð ×$Ò$Ñ&Ô&¨&Ò0Ð0r*   c                óâ   — t          | j        d¬¦  «        }|j        sdS t          j        |                     ¦   «         t          d¦  «        ¦  «        }|j        sdS t          j        |¦  «        S )zPage language.Fr.  NÚLang)rÚ   rÄ   rÌ   r�   rF  r  r  Úpdf_to_str_buf)r(   r«  r*  s      r)   r+  zPage.languageN2  sj   € õ ˜tœy°5Ð9Ñ9Ô9ˆØÔ!ð 	ØˆFÝÔ-¨g¯kªk©m¬m½XÀfÑ=MÔ=MÑNÔNˆØŒð 	ØˆFÝÔ# DÑ)Ô)Ð)r*   c              #  ó\   K  — |                       ¦   «         }|D ]}|�
|d         |v r|V — ŒdS )zì Generator over the links of a page.

        Args:
            kinds: (list) link kinds to subselect from. If none,
                   all links are returned. E.g. kinds=[LINK_URI]
                   will only yield URI links.
        NrZ  )rr  )r(   ÚkindsÚ	all_linksr·  s       r)   r}  z
Page.linksY2  sM   è è € ð —N’NÑ$Ô$ˆ	Øð 	ð 	ˆDØˆ}  V¤°Ð 5Ð 5Ø���øð	ð 	r*   Úidentútyping.Union[str, int]c                óP  — t          | ¦  «         t          |¦  «        t          u rd}|}n*t          |¦  «        t          u r|}d}nt	          d¦  «        ‚|                      ||¦  «        }|s|S d|_        t          j        | ¦  «        |_	        || j
        t          |¦  «        <   |S )z€Load an annot by name (/NM key) or xref.

        Args:
            ident: identifier, either name (str) or xref (int).
        r   Nz&identifier must be a string or integerT)rf  rÈ   rÑ  r4   rÃ   r  rñ   r  r  rê   r8  r9  )r(   rý  r  r   r  s        r)   rŒ  zPage.load_annotf2  s­   € õ 	�DÑÔÐÝ�‰;Œ;�#ÐÐØˆDØˆDˆDÝ�%‰[Œ[�CÐÐØˆDØˆDˆDåÐEÑFÔFÐFØ×Ò˜t TÑ*Ô*ˆØð 	ØˆJØˆŒÝ”] 4Ñ(Ô(ˆŒ
Ø$'ˆÔ�˜C™œÑ!Øˆ
r*   c                óÎ  — t          | ¦  «         t          j        | j        ¦  «        }|j        sdS t          |¦  «        }d|_        t          j        | ¦  «        |_	        || j
        t          |¦  «        <   d|_        d|_        | j	        j        rE|                      ¦   «         }d„ |D ¦   «         }|r"|d         }|d         |_        |d         |_        nd|_        d|_        |S )zGet first Link.NTr   r\   c                ó>   — g | ]}|d          t           j        k    ¯|‘ŒS r2  r9  ró  s     r)   r¯   z#Page.load_links.<locals>.<listcomp>‹2  s)   € ÐFÐFÐF˜1¨¨1¬µÔ1EÒ)EÐ)E�QÐ)EÐ)EÐ)Er*   r   )rf  r�   Úfz_load_linksrÄ   rÌ   r  rñ   r  r  rê   r8  r9  r  rÛ  rÊ  )r(   r  rC  Úlink_ids       r)   r  zPage.load_links}2  sá   € å�DÑÔÐÝÔ! 4¤9Ñ-Ô-ˆØŒ~ð 	ØˆFÝ�C‰jŒjˆØˆŒÝ”] 4Ñ(Ô(ˆŒ
Ø$'ˆÔ�˜C™œÑ!ØˆŒØˆŒØŒ;Ôð 		Ø×$Ò$Ñ&Ô&ˆEØFÐF ÐFÑFÔFˆEØð $Ø œ(�Ø" 1œ:�”Ø  œ�”øàˆCŒHØˆCŒFØˆ
r*   c                ó<  — t          | ¦  «         t          | j        ¦  «        }t          ||¦  «        }|}|s|S d|_        t          j        | ¦  «        |_        || j        t          |¦  «        <   t          ¦   «         }t                               ||¦  «         |}|S )zLoad a widget by its xref.T)rf  rÚ   rÄ   ÚJM_get_widget_by_xrefrñ   r  r  rê   r8  r9  r:  r  r;  )r(   r  rÖ   rß   r  r<  s         r)   Úload_widgetzPage.load_widget˜2  s”   € å�DÑÔÐå˜DœIÑ&Ô&ˆÝ% t¨TÑ2Ô2ˆàˆØð 	ØˆJØˆŒÝ”] 4Ñ(Ô(ˆŒ
Ø$'ˆÔ�˜C™œÑ!Ý‘”ˆÝ×Ò˜3 Ñ'Ô'Ð'ØˆØˆ
r*   c                óî   — t          | ¦  «         |                      d¬¦  «        }|j        st          j        | j        ¦  «        }n!t          |                     ¦   «         ¦  «        }t          |¦  «        S )zThe MediaBox.Fr.  )	rf  ra  rÌ   r�   rØ  rÄ   ÚJM_mediaboxr  r$  )r(   rÖ   r÷   s      r)   rv  zPage.mediaboxª2  sd   € õ 	�DÑÔÐØ�~Š~ uˆ~Ñ-Ô-ˆØŒð 	,ÝÔ&¨¬	Ñ2Ô2ˆDˆDå §¢¡
¤
Ñ+Ô+ˆDÝ�D‰zŒzÐr*   c                óJ   — t          | j        j        | j        j        ¦  «        S r,   )rì  rv  r	  r  r.   s    r)   Úmediabox_sizezPage.mediabox_sizeµ2  s   € å�T”]Ô% t¤}Ô'7Ñ8Ô8Ð8r*   c                ó    — t          | ¦  «        S r,   )ÚShaper.   s    r)   rœ  zPage.new_shape¹2  ó   € Ý�T‰{Œ{Ðr*   c                ó6   — t                                | ¦  «        S )z7All /Contents streams concatenated to one bytes object.)r  Ú_get_all_contentsr.   s    r)   Úread_contentszPage.read_contentsÃ2  s   € å×&Ò& tÑ,Ô,Ð,r*   c                ój   — t          | ¦  «         | j        }|                     | ¦  «        }|| _        dS )z-Refresh page after link/annot/widget updates.N)rf  rê   r¥  rÄ   )r(   r*  rÖ   s      r)   ÚrefreshzPage.refreshÇ2  s3   € å�DÑÔÐØŒkˆØ�Š˜tÑ$Ô$ˆàˆŒ	ˆ	ˆ	r*   )rf   rû  r	   c               ó¶  — | j         }|                     |¦  «        st          d¦  «        ‚t          |¦  «        t          |¦  «        z   t          |¦  «        z   dk    rt          d¦  «        ‚|                      | j        |||¬¦  «        }|                     ||¦  «         |                      ¦   «         d         }|                     |d¦  «         d| _	        dS )aò  Replace the image referred to by xref.

        Replace the image by changing the object definition stored under xref. This
        will leave the pages appearance instructions intact, so the new image is
        being displayed with the same bbox, rotation etc.
        By providing a small fully transparent image, an effect as if the image had
        been deleted can be achieved.
        A typical use may include replacing large images by a smaller version,
        e.g. with a lower resolution or graylevel instead of colored.

        Args:
            xref: the xref of the image to replace.
            filename, pixmap, stream: exactly one of these must be provided. The
                meaning being the same as in Page.insert_image.
        zxref not an imager   z3Exactly one of filename/stream/pixmap must be given)rf   r	   rû  r1  r0  N)
rê   rn
  rÃ   rç   rë  r÷   r`
  r)  rf	  rA  )rÖ   r  rf   rû  r	   r*  r{  Úlast_contents_xrefs           r)   rÐ  zPage.replace_imageÏ2  sß   € ð. ŒkˆØ× Ò  Ñ&Ô&ð 	2ÝÐ0Ñ1Ô1Ð1Ý�‰>Œ>�D ™LœLÑ(­4°©<¬<Ñ7¸1Ò<Ð<ÝÐRÑSÔSÐSØ×$Ò$ØŒI °Àð %ñ 
ô 
ˆð 	�Š�h Ñ%Ô%Ð%Ø!×.Ò.Ñ0Ô0°Ô4Ðð 	×ÒÐ,¨dÑ3Ô3Ð3ØˆÔÐÐr*   c                ó|   — t          | ¦  «         t          | j        d¬¦  «        }|j        sdS t	          |¦  «        S )zPage rotation.r   r.  )rf  rÚ   rÄ   rÌ   ÚJM_page_rotationr‚  s     r)   rP  zPage.rotationõ2  sC   € õ 	�DÑÔÐÝ˜DœI°Ð2Ñ2Ô2ˆØŒð 	Ø�1Ý Ñ%Ô%Ð%r*   c                óP   — t          t                               | ¦  «        ¦  «        S )zReflects page rotation.)ru  r  Ú_rotate_matrixr.   s    r)   rR  zPage.rotation_matrixþ2  s    € õ •e×*Ò*¨4Ñ0Ô0Ñ1Ô1Ð1r*   c                ó¢   — t          | ¦  «         t          j        | j        |j        t          |¦  «        t          j        ¦   «         ¦  «         dS )z=Run page through a device.
        dw: DeviceWrapper
        N)rf  r�   rÜ  rÄ   r¶  rÓ  rÉ  )r(   rÊ  r€  s      r)   rÌ  zPage.run3  sD   € õ 	�DÑÔÐÝÔ˜$œ) R¤YÕ0AÀ!Ñ0DÔ0DÅeÄnÑFVÔFVÑWÔWÐWÐWÐWr*   )r  rk	  r¾  r¢  c               ó@  — |€"dt           z  t          z  t          z  t          z  }|�t	          |¦  «        }t          | ¦  «         |}|€|                      ||¬¦  «        }n#t          |d¦  «        | k    rt          d¦  «        ‚| 	                    ||¬¦  «        }|€~|S )a¢  Search for a string on a page.

        Args:
            text: string to be searched for
            clip: restrict search to this rectangle
            quads: (bool) return quads instead of rectangles
            flags: bit switches, default: join hyphened words
            textpage: a pre-created pymupdf.TextPage
        Returns:
            a list of rectangles or quads, each containing one occurrence.
        Nr   )r  r¾  rê   r©  )rk	  )
rm	  ro	  rn	  rp	  r$  rf  r  rì   rÃ   Úsearch)rÖ   r   r  rk	  r¾  r¢  r¸  Úrlists           r)   rq	  zPage.search_for
3  s¾   € ð( ˆ=ØÝ"ñ#å*ñ+õ *ñ*õ %ñ	%ˆEð ÐÝ˜‘:”:ˆDå�DÑÔÐØˆØˆ:Ø×"Ò"¨°EÐ"Ñ:Ô:ˆBˆBÝ�R˜Ñ"Ô" dÒ*Ð*ÝÐ:Ñ;Ô;Ð;Ø—	’	˜$ e�	Ñ,Ô,ˆØÐØØˆr*   c                ó.   — |                       d|¦  «        S )zSet the ArtBox.r6  ©r9  ©r(   r÷   s     r)   Ú
set_artboxzPage.set_artbox33  s   € à× Ò  ¨4Ñ0Ô0Ð0r*   c                ó.   — |                       d|¦  «        S )zSet the BleedBox.r4  r  r  s     r)   Úset_bleedboxzPage.set_bleedbox73  s   € à× Ò  ¨TÑ2Ô2Ð2r*   c                óx  — t          | ¦  «         | j        }|j        rt          d¦  «        ‚|j        st          d¦  «        ‚|t          d|                     ¦   «         ¦  «        vrt          d¦  «        ‚|                     |¦  «        st          d¦  «        ‚|                     | j	        d|d›d�¦  «         d	S )
z-Set object at 'xref' as the page's /Contents.r¾   rÙ  r   ru  zxref is no streamr  r
  ry  N)
rf  rê   rÂ   rÃ   rÛ  rL  r|  r^
  rn  r  )r(   r  r*  s      r)   Úset_contentszPage.set_contents;3  sÂ   € å�DÑÔÐØŒkˆØŒ=ð 	0ÝÐ.Ñ/Ô/Ð/ØŒzð 	*Ý˜[Ñ)Ô)Ð)Ø•u˜Q §¢Ñ 1Ô 1Ñ2Ô2Ð2Ð2Ý˜ZÑ(Ô(Ð(Ø×!Ò! $Ñ'Ô'ð 	2ÝÐ0Ñ1Ô1Ð1Ø×Ò˜œ J°4°°°°Ñ@Ô@Ð@Ð@Ð@r*   c                ó.   — |                       d|¦  «        S )z,Set the CropBox. Will also change Page.rect.r3  r  r  s     r)   Úset_cropboxzPage.set_cropboxI3  ó   € à× Ò  ¨DÑ1Ô1Ð1r*   c                ó†  — t          | ¦  «         t          | j        ¦  «        }|s6t          j        |                     ¦   «         t          d¦  «        ¦  «         dS t          j        |¦  «        }t          t          d¦  «        sJ ‚t          j	        |j        t          d¦  «        t          j
        |¦  «        ¦  «         dS )zSet PDF page default language.rø  r&  N)rf  rÚ   rÄ   r�   rA  r  r  r�  r;   r€  r&  )r(   r+  r«  r*  s       r)   r’  zPage.set_languageM3  s´   € å�DÑÔÐÝ˜tœyÑ)Ô)ˆØð 		ÝÔ˜wŸ{š{™}œ}­h°vÑ.>Ô.>Ñ?Ô?Ð?Ð?Ð?åÔ5°hÑ?Ô?ˆDÝ�5Ð"AÑBÔBÐBÐBÐBÝÔ*Ø”KÝ˜VÑ$Ô$ÝÔ7¸Ñ=Ô=ñô ð ð ð r*   c                óì  — t          | ¦  «         |                      ¦   «         }t          |¦  «        }t          j        |¦  «        st          j        |¦  «        rt          t          ¦  «        ‚t          j        | 	                    ¦   «         t          d¦  «        |¦  «         t          j        | 	                    ¦   «         t          d¦  «        ¦  «         t          j        | 	                    ¦   «         t          d¦  «        ¦  «         t          j        | 	                    ¦   «         t          d¦  «        ¦  «         t          j        | 	                    ¦   «         t          d¦  «        ¦  «         dS )zSet the MediaBox.ÚMediaBoxr3  r6  r4  r5  N)rf  ra  r   r�   r®  r¯  rÃ   r°  r,  r  r  rA  )r(   r÷   rÖ   rv  s       r)   rb  zPage.set_mediabox\3  s  € å�DÑÔÐØ�~Š~ÑÔˆÝ" 4Ñ(Ô(ˆÝÔ" 8Ñ,Ô,ð 	,ÝÔ,¨XÑ6Ô6ð	,õ �lÑ+Ô+Ð+ÝÔ §¢¡¤­X°jÑ-AÔ-AÀ8ÑLÔLÐLÝÔ˜DŸHšH™JœJ­°Ñ(;Ô(;Ñ<Ô<Ð<ÝÔ˜DŸHšH™JœJ­°Ñ(:Ô(:Ñ;Ô;Ð;ÝÔ˜DŸHšH™JœJ­°Ñ(<Ô(<Ñ=Ô=Ð=ÝÔ˜DŸHšH™JœJ­°Ñ(;Ô(;Ñ<Ô<Ð<Ð<Ð<r*   c                óÔ   — t          | ¦  «         t          | j        ¦  «        }t          |¦  «        }t	          j        |                     ¦   «         t          d¦  «        |¦  «         dS )zSet page rotation.r4  N)rf  rÚ   rÄ   ÚJM_norm_rotationr�   rI  r  r  )r(   rP  rÖ   rS  s       r)   r¶  zPage.set_rotationk3  sW   € å�DÑÔÐÝ˜DœIÑ&Ô&ˆÝ˜xÑ(Ô(ˆÝÔ §¢¡
¤
­H°XÑ,>Ô,>ÀÑDÔDÐDÐDÐDr*   c                ó.   — |                       d|¦  «        S )zSet the TrimBox.r5  r  r  s     r)   Úset_trimboxzPage.set_trimboxr3  r'  r*   c	           
     ó.  — dd„}	t          | ¦  «         | j        }
|
j        r|j        st          d¦  «        ‚|j        s|j        rt          d¦  «        ‚|dk     r||j        z  }|dk     °||         }|| j         z  }|s|j        n	|j        |z  }|j        s|j        rt          d¦  «        ‚||j         z  } |	||||¬¦  «        }d„ |
 	                    | j
        ¦  «        D ¦   «         }|d	„ |
                     | j
        ¦  «        D ¦   «         z  }|d
„ |
                     | j
        ¦  «        D ¦   «         z  }d}d}|dz   }||v r|dz  }|t          |¦  «        z   }||v °|j        }|
j        |k    rt          d¦  «        ‚|
j                             |d¦  «        }|€t#          |
¦  «        }||
j        |<   ||f}|
j                             |d¦  «        }|r|                      ¦   «          |                      ||||||||¬¦  «        }||
j        |<   |S )av  Show page number 'pno' of PDF 'docsrc' in rectangle 'rect'.

        Args:
            rect: (rect-like) where to place the source image
            docsrc: (document) source PDF
            pno: (int) source page number
            keep_proportion: (bool) do not change width-height-ratio
            overlay: (bool) put in foreground
            oc: (xref) make visibility dependent on this OCG / OCMD (which must be defined in the target PDF)
            rotate: (int) degrees (multiple of 90)
            clip: (rect-like) part of source page rectangle
        Returns:
            xref of inserted object (for reuse)
        Tr   c           	     óž  — | j         | j        z   dz  }|j         |j        z   dz  }t          dddd|j         |j         ¦  «        t          |¦  «        z  }| |z  }|j        |j        z  }|j        |j        z  }	|rt          ||	¦  «        x}}	|t          ||	¦  «        z  }|t          dddd|j        |j        ¦  «        z  }t          |¦  «        S )ah  Calculate transformation matrix from source to target rect.

            Notes:
                The product of four matrices in this sequence: (1) translate correct
                source corner to origin, (2) rotate, (3) scale, (4) translate to
                target's top-left corner.
            Args:
                sr: source rect in PDF (!) coordinate system
                tr: target rect in PDF coordinate system
                keep: whether to keep source ratio of width to height
                rotate: rotation angle in degrees
            Returns:
                Transformation matrix.
            ç       @r   r   )	rí  rî  ru  r(  r)  r]  rÕ  rÜ  ÚJM_TUPLE)
ÚsrÚtrrZ
  rY  ÚsmpÚtmpr€  Úsr1ÚfwÚfhs
             r)   Úcalc_matrixz'Page.show_pdf_page.<locals>.calc_matrix�3  sÑ   € ð  ”5˜2œ5‘= CÑ'ˆCà”5˜2œ5‘= CÑ'ˆCõ �q˜!˜Q  C¤E 6¨C¬E¨6Ñ2Ô2µV¸F±^´^ÑCˆAà�q‘&ˆCà”˜CœIÑ%ˆBØ”˜SœZÑ'ˆBØð &Ý˜b "™+œ+Ð%��Rà•˜˜B‘”ÑˆAØ•˜˜1˜a  C¤E¨3¬5Ñ1Ô1Ñ1ˆAÝ˜A‘;”;Ðr*   rÙ  rã  z!clip must be finite and not empty)rZ
  rY  c                ó   — g | ]
}|d          ‘ŒS r2  r-   r¬   s     r)   r¯   z&Page.show_pdf_page.<locals>.<listcomp>È3  s   € ÐAÐAÐA˜��!”ÐAÐAÐAr*   c                ó   — g | ]
}|d          ‘ŒS rK  r-   r¬   s     r)   r¯   z&Page.show_pdf_page.<locals>.<listcomp>É3  s   € Ð@Ð@Ð@˜!��1”Ð@Ð@Ð@r*   c                ó   — g | ]
}|d          ‘ŒS rç  r-   r¬   s     r)   r¯   z&Page.show_pdf_page.<locals>.<listcomp>Ê3  rè  r*   ÚfzFrmrz   r   z%source document must not equal targetN)rý  rÙ  r  rÅ  r  rÌ  rÿ  )Tr   )rf  rê   rÛ  rÃ   rY	  rZ	  rÐ  rk  r÷   r¨  r^  r�  rŒ  rÑ  r  r  r8   rÞ  r  rÅ  rH  )rÖ   r÷   rá  rÕ  rþ  rý  rÅ  rY  r  r:  r*  r×  Útar_rectÚsrc_rectrÙ  rê  rE   r®   rÿ  ÚisrcÚgmapÚpno_idr  s                          r)   rØ  zPage.show_pdf_pagev3  s¬  € ð2 	ð  	ð  	ð  	õD 	�DÑÔÐØŒkˆàŒzð 	* ¤ð 	*Ý˜[Ñ)Ô)Ð)àŒ=ð 	B˜DÔ,ð 	BÝÐ@ÑAÔAÐAà�AŠgˆgØ�6Ô$Ñ$ˆCð �AŠgˆgà˜#”;ˆà˜4Ô5Ð5Ñ5ˆà(,ÐF�8”=�=°(´-À$Ñ2FˆØÔð 	B Ô 4ð 	BÝÐ@ÑAÔAÐAØ˜xÔ=Ð=Ñ=ˆà�˜X x°oÈfÐUÑUÔUˆð BÐA˜c×3Ò3°D´KÑ@Ô@ÐAÑAÔAˆØÐ@Ð@˜s×2Ò2°4´;Ñ?Ô?Ð@Ñ@Ô@Ñ@ˆØÐ?Ð?˜s×1Ò1°$´+Ñ>Ô>Ð?Ñ?Ô?Ñ?ˆð ˆØˆØ�s‘7ˆØ˜$ÐÐØ�‰FˆAØ�3˜q™6œ6‘zˆHð ˜$ÐÐð ÔˆØŒ=˜DÒ Ð ÝÐDÑEÔEÐEð Œ}× Ò   tÑ,Ô,ˆØˆ<Ý˜C‘=”=ˆDØ"&ˆCŒM˜$Ñð ˜�ˆØŒ~×!Ò! &¨!Ñ,Ô,ˆàð 	!Ø×ÒÑ Ô Ð Ø×"Ò"ØØØØØØØØð #ñ 	
ô 	
ˆð "&ˆŒ�vÑàˆr*   c                óª  — t          | ¦  «         t          j        ¦   «         }|                      d¬¦  «        }|j        st          |¦  «        S t          j        t          j        j        ¦  «        }t          j        |||¦  «         t          |¦  «        }| j	        dz  dk    rt          |¦  «        }nt          ddddd| j        j        ¦  «        }|S )zPage transformation matrix.Fr.  r´  r   r   r1  )rf  r�   rr  ra  rÌ   rq  rh  rq  r#  rP  ru  ry  rÕ  )r(   rÞ  rÖ   rv  r  s        r)   rk  zPage.transformation_matrixò3  sÀ   € õ 	�DÑÔÐåŒnÑÔˆØ�~Š~ uˆ~Ñ-Ô-ˆØŒð 	*Ý$ SÑ)Ô)Ð)Ý”<¥¤Ô 7Ñ8Ô8ˆÝÔ   x°Ñ5Ô5Ð5Ý Ñ$Ô$ˆàŒ=˜3Ñ !Ò#Ð#Ý˜‘+”+ˆCˆCå˜˜A˜q " a¨¬Ô)<Ñ=Ô=ˆCØˆ
r*   c                óÀ   — |                       d¦  «        }|€| j        S | j        }t          |d         |j        |d         z
  |d         |j        |d         z
  ¦  «        S )zThe TrimBoxr5  Nr   r   r   r   r¸  r¹  s      r)   ÚtrimboxzPage.trimbox4  sY   € ð �Š˜yÑ)Ô)ˆØˆ<Ø”<ÐØŒ]ˆÝ�D˜”G˜RœU T¨!¤W™_¨d°1¬g°r´u¸tÀA¼w±ÑGÔGÐGr*   c                ó¾   — t          | ¦  «         t          j        | |¦  «        }|dk    rt          d¦  «        ‚| j                             |d         || ¬¦  «         dS )z"Update a link on the current page.r\   rí  r  rÕ   N)rf  rô  rî  rÃ   rê   r‰  )rÖ   ri  rß   s      r)   Úupdate_linkzPage.update_link4  sa   € å�DÑÔÐÝÔ! $¨Ñ,Ô,ˆØ�BŠ;ˆ;ÝÐ6Ñ7Ô7Ð7àŒ×!Ò! # f¤+¨u¸4Ð!Ñ@Ô@Ð@Ð@Ð@r*   c              #  ó˜   K  — d„ |                       ¦   «         D ¦   «         }|D ]&}|                      |¦  «        }|�	|j        |v r|V — Œ'dS )a    Generator over the widgets of a page.

        Args:
            types: (list) field types to subselect from. If none,
                    all fields are returned. E.g. types=[PDF_WIDGET_TYPE_TEXT]
                    will only yield text fields.
        c                óJ   — g | ] }|d          t           j        k    ¯|d         ‘Œ!S r8  r¿  )r­   r!   s     r)   r¯   z Page.widgets.<locals>.<listcomp>!4  s-   € Ð[Ð[Ð[ ¸A¸a¼DÅEÔDZÒ<ZÐ<Z˜˜!œÐ<ZÐ<ZÐ<Zr*   N)rÊ  r  rß  )r(   rŠ  Úwidget_xrefsr  r<  s        r)   r½  zPage.widgets4  sp   è è € ð \Ð[ d×&6Ò&6Ñ&8Ô&8Ð[Ñ[Ô[ˆà ð 	ð 	ˆDØ×%Ò% dÑ+Ô+ˆFØˆ} Ô 1°UÐ :Ð :Ø���øð	ð 	r*   c                óÚ   — |                       ¦   «         \  }}|dk    r!d|z  }t                               | |d¦  «         |dk    r&d|z  dz   }t                               | |d¦  «         dS dS )z,Ensure page is in a balanced graphics state.r   rÖ  Fs   
QrÓ  TN)rÊ  r  ra  )r(   ÚpushÚpopÚprependrk   s        r)   rÅ  zPage.wrap_contents(4  s}   € à×)Ò)Ñ+Ô+‰	ˆˆcØ�!Š8ˆ8Ø˜t‘mˆGÝ×"Ò" 4¨°%Ñ8Ô8Ð8Ø�Š7ˆ7Ø˜c‘\ EÑ)ˆFÝ×"Ò" 4¨°Ñ6Ô6Ð6Ð6Ð6ð ˆ7r*   c	           
     óò  — t          | t          ¦  «        sJ ‚|st          d¦  «        ‚t          |¦  «        t          u r&|dk    r|€|                     | |||¬¦  «         dS |f}|d         j        }	t          ¦   «         }
|
                     | j	        j
        | j	        j        ¬¦  «        }|D ]$}|	|j        z  }	|                     |||¬¦  «         Œ%|€|	}|                      ||
d||||	|¬¦  «         d}
d}dS )aÄ  Write the text of one or more pymupdf.TextWriter objects.

        Args:
            rect: target rectangle. If None, the union of the text writers is used.
            writers: one or more pymupdf.TextWriter objects.
            overlay: put in foreground or background.
            keep_proportion: maintain aspect ratio of rectangle sides.
            rotate: arbitrary rotation angle.
            oc: the xref of an optional content object
        z$need at least one pymupdf.TextWriterr   N)rV  r  rý  rl  )rV  r  )rý  rþ  rY  r  rÅ  )r>   rÒ   rÃ   rÈ   Ú
TextWriterÚ
write_textÚ	text_rectrÁ   rØ  r÷   r]  rÕ  rØ  )rÖ   r÷   Úwritersrý  r  rV  rþ  rY  rÅ  r  Útextdocrß  Úwriters                r)   rR  zPage.write_text24  s:  € õ* ˜$¥Ñ%Ô%Ð%Ð%Ð%Øð 	EÝÐCÑDÔDÐDÝ�‰=Œ=�JÐ&Ð&Ø˜Š{ˆ{˜t˜|Ø×"Ò" 4°ÀÈwÐ"ÑWÔWÐWØ�tà"˜*�Ø�qŒzÔ#ˆÝ‘*”*ˆØ× Ò  t¤y¤¸t¼yÔ?OÐ ÑPÔPˆØð 	Cð 	CˆFØ�FÔ$Ñ$ˆDØ×Ò˜e¨W¸EÐÑBÔBÐBÐBØˆ<ØˆDØ×ÒØØØØØ+ØØØð 	ñ 		
ô 		
ð 		
ð ˆØˆˆˆr*   c                ó^   — t          | ¦  «         | j                             | j        ¦  «        S rW
  rX
  r.   s    r)   r  z	Page.xrefe4  rY
  r*   zpage rectangle)r*  r3  r‡
  r,   )rÅ  r¡  rÎ  r¾  )Nr   N)NNNNNr   r   r   r   r   r   r   r1  NN)r   r   Nr�  )Nr   r   N)r   Nr   r   NNN)r-  rº   rÎ  râ   )r÷   r¼   rÎ  râ   )r-  rº   r-  rà  rf   rÑ  r  r¾  r¹  r¾  ri  r¾  rÎ  râ   )r÷   r¼   r   rÑ  rú   ro  rù   r¾  rø   rÀ  rX  rÀ  rÁ  rÀ  rÖ  ro  r_  rÀ  ru  rÀ  rv  r4   rV  ro  r  r4   rY  r4   rÎ  râ   r5  )rÎ  râ   )r_  r´   rÎ  râ   )r  rº   r  rº   rÎ  râ   )r  r´   rÎ  râ   )NNrú  r   NNT)r   r¾  rù   r¾  rú   ro  r  r4   rû   rÀ  rø   rÀ  rÂ  rç   rÎ  râ   )rx  )r-  rº   r   rÑ  ri  rÑ  rÎ  râ   )r<  r:  rÎ  râ   )r   r   r   )
rÖ   rŽ  r^	  r4   rÂ  r4   r   r4   rÎ  rç   r2  )rÖ   rŽ  r  r4   )rÖ   rŽ  r<  r:  rÎ  r:  )rÎ  ru  )r1  NNr   NFr   r   Tr   r   r   )$rÖ   rŽ  r  rº   r  rº   rà  rº   rá  rº   r  rÀ  rû   rÀ  r_  r¾  r]  ro  rð  r¾  râ  rç   rã  r4   rä  r4   rý  rç   rå  ro  ræ  ro  rÅ  r4   rÎ  rì  )r1  NNNr   r   r   Tr   r   r   )rÖ   rŽ  r=  rº   rê  ro  r  rÀ  rû   rÀ  rð  rÀ  r_  r¾  r]  ro  rã  r4   rä  r4   rý  rç   rå  ro  ræ  ro  rÅ  r4   rÎ  rì  )"rÖ   rŽ  r  rº   r  rº   rà  rº   r  rÀ  rû   rÀ  r_  r¾  r]  ro  rð  rÀ  râ  rç   rã  r4   rä  r4   rý  rç   rå  ro  ræ  ro  rÅ  r4   rÎ  rì  )
r1  Nr   r   r   TNr   r   r   )rÖ   rŽ  r  rº   r  rº   r  rÀ  r_  r¾  r]  ro  rã  r4   rä  r4   rý  rç   rð  rÀ  rå  ro  ræ  ro  rÎ  rì  )rÖ   rŽ  r÷   rô  r  rÀ  rû   rÀ  r_  r¾  rð  rÀ  r]  ro  rã  r4   rä  r4   rý  rç   rå  ro  ræ  ro  rÅ  r4   rÎ  rì  )r1  NNr   Nr   r   TFr   r   r   )rÖ   rŽ  r  r´   r  rÀ  rû   rÀ  r_  r¾  r]  ro  rð  rÀ  rã  r4   rä  r4   rý  rç   râ  rç   rå  ro  ræ  ro  rÅ  r4   rÎ  rì  )r1  NNr   r   r   NTr   r   r   )rÖ   rŽ  r  r»   r  rÀ  rû   rÀ  r_  r¾  r]  ro  rã  r4   rä  r4   rð  rÀ  rý  rç   rå  ro  ræ  ro  rÅ  r4   rÎ  rì  )r1  NNr   r   r   NTr   r   r   N)rÖ   rŽ  r÷   r¼   r  rÀ  rû   rÀ  r_  r¾  r]  ro  rã  r4   rä  r4   rð  rÀ  rý  rç   rå  ro  ræ  ro  rÅ  r4   rÎ  rì  )r1  NNTNr   Fr   r   Tr   r   r   )$rÖ   rŽ  r=  rº   r-  rº   rþ  ro  r  rÀ  rû   rÀ  r_  r¾  rÿ  rç   rð  rÀ  r]  ro  râ  rç   rã  r4   rä  r4   rý  rç   rå  ro  ræ  ro  rÅ  r4   rÎ  rì  )r   r1  Nr   r   r   TNr   r   r   )rÖ   rŽ  r  rº   r  rº   r  ro  r  rÀ  r_  r¾  r]  ro  rã  r4   rä  r4   rý  rç   rð  rÀ  rå  ro  ræ  ro  rÅ  r4   rÎ  rì  ©r   NrÆ  )r"  rç   rÎ  r´   rŠ
  )rÖ   rŽ  r?  rç   rC  rç   rÎ  r´   )rÖ   rŽ  rÎ  r´   )rÖ   rŽ  rÙ  r¹   rÛ  r”  r  r¼   rÜ  rç   rŸ  rç   rÎ  rœ  )NNr   r   T)rf  ro  rg  ro  rh  rç   rÎ  r´   rˆ
  rQ  )rÖ   rÒ   r÷   r¼   rÎ  rÑ  )r  r¼   r¾  r4   rÎ  r£  )rÔ  NNFr   r   )rÎ  rµ   )rÖ   rŽ  ri  r5   rM  rç   rÎ  r×  )(rÖ   rŽ  r-  rº   r   rò  rú   ro  rk  r¿  rù   rÑ  rS  r¾  r  r4   rë  r4   r  rÀ  rû   rÀ  rÖ  ro  rð  ro  rñ  r4   rY  r4   rð  rÀ  rý  rç   rå  ro  ræ  ro  rÅ  r4   ).rÖ   rŽ  r÷   r¼   ræ  rò  r  r4   rÖ  ro  r  rÀ  rë  r4   rô  r4   ræ  ro  rû   rÀ  rS  r¾  rù   rÑ  rú   ro  rk  r¿  rð  ro  rð  rÀ  rÅ  r4   rý  rç   rñ  r4   rY  r4   r  r4   rå  ro  rÎ  ro  )rý  rþ  rÎ  râ   )r   TTr   r   Nr„
  )rÖ   rŽ  ri  r5   rÎ  r×  )NNTNNTr   r   )rÖ   rŽ  rÎ  r×  )�r/   r0   r1   rŒ   rí   rï   r_  rl  r�   ÚPDF_ANNOT_LE_OPEN_ARROWrz  r„  r‡  r‹  r“  r•  r­  r¯  r²  rt  r»  rÄ  rò   rÊ  rÓ  rÎ  rá  r  r  r  r!  r&  ra  rÆ  r1  r9  rÏ  rH  rM  rQ  rU  rX  r^  ra  rc  rg  ri  rk  r[	  rr  rt  rw  rz  r}  r  rƒ  rÊ  rŸ  re	  rÌ  r²  r¶  r6  rº  r¼  rÂ  r’  ry  rÉ  rÌ  rÑ  rd	  rÜ  rl  ré  rî  rð  ró  rö  rø  rú  r�  r  r  r	  r  r  r  r  r  r  r  r)  r-  r>  rH  rU  rW  rr  rž  rá  re  rˆ  r‹  r˜  rE  rž  r§  rû  rõ  r­  r¯  r±  r³  r  r8
  r¹  rÄ  rà  rë  rc  r)  rŸ  rÄ  r+  r}  rŒ  r  r  rv  r
  rœ  r  r  rÐ  rP  rR  rÌ  rq	  r   r"  r$  r&  r’  rb  r¶  r.  rØ  rk  rF  rH  r½  rÅ  rR  r  r÷   r´  r-   r*   r)   rÒ   rÒ   Ê%  s  € € € € € ðð ð ð ð ð ðð ð ð&ð ð ñð ð ð ð< ØØØØØØØØÔ2ØØØØØð!Nð Nð Nð Nð`ð ð ð@	ð 	ð 	ðð ð ñð ð ð ð<
ð 
ð 
ðBð Bð Bð BñHð ð ð ðð ð ð Dð  Dð  DðDð ð ðð ð ð
ð 
ð 
ðFð Fð Fñ0ð ð ð ð.ð ð ñð ð ð ð4 GKØJKØ59ñj"ð j"ð j"ð j"ðXð ð ð* ð  ð  ñð ð ð ð	%ð 	%ð 	%ñ:ð :ð :ð :ð!ð !ð !ñð ð ð ðBLð Lð Lð*9ð 9ð 9ñ7ð 7ð 7ð 7ñrð ð ð ñ	ð 	ð 	ð 	ð   $ØØññ ð ð ð ð<  Ø"Ø $Ø $Ø"&Ø!"Ø Ø!ØÔ7ØØØØØð%.ð .ñ .ð .ð .ð .ð` 59Ø*.ññ ð ð ð ñð ð ð ñ	ð 	ð 	ð 	ñ	ð 	ð 	ð 	ñ	ð 	ð 	ð 	ñ	ð 	ð 	ð 	ð Ø"ØØØØ $Ø!ñ<ñ <ð <ð <ð <ð@ ØØØñBñ Bð Bð Bð Bð	ñ 	ð 	ð 	ð 	ñDñ Dð Dð Dð Dñ	ñ 	ð 	ð 	ð 	ñCñ Cð Cð Cð Cñð ð ð ð$	*ð 	*ð 	*ð-ð -ð -ñð ð ð ð, ØØñ	mñ mð mð mð mñ^;ð ;ð ;ð ;ð
"ð 
"ð 
"ðBð Bð Bð
 ðHð Hñ „XðHð ðHð Hñ „XðHðð ð ñ$Cð Cð Cð Cð ð
ð 
ñ „Xð
ð ðð ñ „Xððð ð ñ.-ð -ð -ð -ð*ð *ð *ñXð ð ð ð ñ8ð 8ð 8ñ „Xð8ð !ØØ!ØØ Ø#ØØØ Ø$%Ø"#Øñ#%ñ %ð %ð %ð %ðV !ØØ Ø!ØØØØ Ø$%Ø"#Øñ ñ  ð  ð  ð  ðN !ØØ!ØØ Ø#ØØØ Ø$%Ø"#Øñ!$ñ $ð $ð $ð $ðT !Ø!ØØØØ Ø Ø$%Ø"#Øñ ñ  ð  ð  ð  ðJ !ØØ!Ø ØØØØ Ø$%Ø"#Øñ ñ  ð  ð  ð  ðJ !ØØ!ØØ ØØØ Ø#Ø$%Ø"#Øñ"ñ "ð "ð "ð "ðN !ØØ!ØØØØ Ø Ø$%Ø"#Øñ ñ  ð  ð  ð  ðJ !ØØ!ØØØØ Ø Ø$%Ø"#ØØñ#ñ #ð #ð #ð #ðT !ØØ!Ø#Ø ØØ#ØØØ Ø$%Ø"#Øñ#,ñ ,ð ,ð ,ð ,ðd Ø Ø!ØØØØ Ø Ø$%Ø"#Øñ!ñ !ð !ð !ð !ðN Ø Ø!ØØØØ Ø Ø$%Ø"#Øñ!ñ !ð !ð !ð !ñF	$ð 	$ð 	$ð 	$ð1ð 1ð 1ð ðð ñ „Xðð ð!ð !ñ „Xð!ð ðð ñ „Xðñ&ð ð ð ñ ð ð ð ð>ð ð ñ$ð ð ð ñ|ñ |ð |ð |ð |ð@ !Øñ'ñ 'ð 'ð 'ð 'ñR"ñ "ð "ð "ð "ðH8ð 8ð 8ñ ð ð ð ð: %-ØØ'+Ø $Ø!Ø!ð)ð )ñ )ð )ð )ð )ðV6ð 6ð 6ðr VWØ!ñaRñ aRð aRð aRð aRñFBð Bð Bð Bð
>ð >ð >ð >ñ@Cð Cð Cð Cñ
ð ð ð ñ&ð ð ð ð6 ññ ð ð ð ð5ð 5ð 5ð<ð <ð <ð?ð ?ð ?ð;ð ;ð ;ð=ð =ð =ññ ð ð ð ð ð ð ð*:ð :ð :ð
 FJØ78ñQð Qð Qð Qðp ØØØØØØØØðQ#ð Q#ñ Q#ð Q#ð Q#ð Q#ðn ØØØ ØØØØØØØØðzð zð zð zð zñx,ñ ,ð ,ð ,ð ,ð !Ø#'Ø"Ø#ØØØ ØØ"&Ø!"Ø ØØ Ø Ø$%Ø"#Øð+/ð /ñ /ð /ð /ð /ðl Ø"&Ø ØØØ"#ØØ#Ø"Ø Ø#'Ø!"Ø ØØ Ø ØØØ$%ð/Fð Fñ Fð Fð Fð FðP ð1ð 1ñ „Xð1ð ð*ð *ñ „Xð*ñð ð ð ñð ð ð ð.ð ð ð6ð ð ð$ ðð ñ „Xðð ð9ð 9ñ „Xð9ðð ð ð-ð -ð -ðð ð ð ØØð$ ð $ ñ $ ð $ ð $ ð $ ðL ð&ð &ñ „Xð&ð ñ2ð 2ð 2ñ „Xð2ðXð Xð Xð ØØØð'ð 'ñ 'ð 'ð 'ð 'ðR1ð 1ð 1ñ3ð 3ð 3ñAð Að Añ2ð 2ð 2ññ ð ð ñ=ð =ð =ñEð Eð Eñ2ð 2ð 2ð Ø ØØØØñzñ zñ zð zð zðx ñð ñ „Xðð$ ñHð Hñ „XðHñAñ Að Að Aññ ð ð ñ"7ð 7ð 7ð ØØØØØ ØØñ1ñ 1ñ 1ð 1ð 1ðf ñ2ð 2ñ „Xð2ð
 ˆ8�EÑ/Ñ0Ñ0Ô0€Dð ÐÐÐr*   rÒ   c                  ód  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Z	d9d„Z
d:d
„Zd;d„Zed„ ¦   «         Zd„ Zed„ ¦   «         Zd„ Zed„ ¦   «         Zd;d„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd<d„Zd=d„Zd„ Zd„ Zd„ Zd„ Zed>d!„¦   «         Zed"„ ¦   «         Zd#„ Zed$„ ¦   «         Z d?d&„Z!d@d'„Z"dAd)„Z#d*„ Z$d+„ Z%d,„ Z&d-„ Z'd.„ Z(ed/„ ¦   «         Z)ed0„ ¦   «         Z*d1„ Z+ed2„ ¦   «         Z,d3„ Z-ed4„ ¦   «         Z.ed5„ ¦   «         Z/ed6„ ¦   «         Z0ed7„ ¦   «         Z1e,Z2eZ3d8„ Z4dS )Br×  c                óT  — d| _         d| _        	 t          |t          t          j        ft          j        t          j        t          t          t          f¦  «        rF|\  }}d}t	          j        |t          |¦  «        t	          j        d¦  «        |¦  «        }|| _        dS t          |t          t          j        ft          j        t          j        t          t          t          ft          t           f¦  «        rE|\  }}}t	          j        |t          |¦  «        t	          j        d¦  «        |¦  «        }|| _        dS t          |t          t          j        t#          d¦  «        ft$          t          j        f¦  «        �r|\  }}t)          |t          ¦  «        r|j        }n|€t	          j        d¦  «        }t)          |t$          ¦  «        r|j        }t	          j        |¦  «        j        st/          d¦  «        ‚|j        rTt	          j        ||t	          j        ¦   «         t	          j        d¦  «        t	          j        ¦   «         d¦  «        | _        dS t	          j        |¦  «        | _        | j        j        st9          t:          ¦  «        ‚dS t          |t$          t          j        ft$          t          j        f¦  «        r–|\  }}t)          |t$          ¦  «        r|j        }t)          |t$          ¦  «        r|j        }|}|}	|j        s0t	          j        |	¦  «        }
|
j        st9          t:          ¦  «        ‚nt	          j        ||	¦  «        }
|
| _        dS t          |t$          t          j        ft>          t          ft>          t          fd¦  «        s<t          |t$          t          j        ft>          t          ft>          t          f¦  «        �r tA          |¦  «        dk    r%|\  }}}t	          j        t          j!        ¦  «        }n|\  }}}}t          |¦  «        }t)          |t$          ¦  «        r|j        n|}t	          j"        |¦  «        s>t	          j#        || $                    ¦   «         | %                    ¦   «         |||¦  «        }nYt	          j#        || $                    ¦   «         | %                    ¦   «         ||t	          j        t          j!        ¦  «        ¦  «        }|| _        dS t          |tL          t$          t          j        f¦  «        r6|d         dk    r*|\  }}t)          |t$          ¦  «        r|j        }|| _        dS t          |t$          t          j        ft          df¦  «        �rx|d         }tA          |¦  «        dk    r|d         nd}t)          |t$          ¦  «        r|j        n|}tO          |dd¦  «        st/          d¦  «        ‚t	          j        |¦  «        }|j        s|st/          d	¦  «        ‚t	          j        ¦   «         }t	          j(        |¦  «        }t	          j)        |¦  «        }t	          j*        |¦  «        }t	          j+        |||||¦  «        }|j        j$        |j        _$        |j        j%        |j        _%        |j        j,        |j        _,        |j        j-        |j        _-        	 t]          j/        |j        |j        |¦  «         || _        dS t          |t          j        t          ft          t          dt          t           f¦  «        �rd|\  }}}}$}t)          |t          ¦  «        r#|j        }t)          |t          j        ¦  «        sJ ‚t	          j7        |¦  «        }||z   |z  }%t	          j        ¦   «         }t	          j+        |||||¦  «        }t)          |$tp          tr          f¦  «        r$t	          j:        |$¦  «        }&tA          |$¦  «        }nPtw          |$¦  «        }'|'j        st/          d¦  «        ‚t	          j<        |'¦  «        \  }}(t	          j:        |$¦  «        }&|%|z  |k    r!t/          d|›d|›d|›d|›d|%›d|›�¦  «        ‚t	          j=        |j        |&¦  «         || _        dS t          |d¦  «        �r”|\  })d}*t}          |)d¦  «        r+|) ?                    ¦   «         }+|+rt	          j@        |+¦  «        },n�t}          |)|*¦  «        r|)jA        }+|+rt	          j@        |+¦  «        },not)          |)tL          ¦  «        rt	          j@        |)¦  «        },nEtw          |)¦  «        }'|'j        r|'j        j         st/          d¦  «        ‚t	          jB        |'¦  «        },t	          jC        |,t	          j        tˆ          tˆ          tŠ          tŠ          ¦  «        t	          jF        |, G                    ¦   «         dd|, H                    ¦   «         dd¦  «        ¦  «        \  }}}t	          jI        |,¦  «        \  }-}.|-|j        _,        |.|j        _-        || _        dS t          |t”          t          jK        ft          ¦  «        �rž|\  }/}0t™          |/¦  «        }1t	          jM        |1¦  «        }2tO          |0d|2dz
  ¦  «        st/          tœ          ¦  «        ‚t	          jO        |1|0d¦  «        }3t	          jP        |3t£          d¦  «        ¦  «        }4t	          jR        |4t£          d¦  «        ¦  «        sXt	          jR        |4t£          d¦  «        ¦  «        s6t	          jR        |4t£          d¦  «        ¦  «        st/          t¦          ¦  «        ‚t	          jT        |1|3¦  «        },t	          jC        |,t	          j        tˆ          tˆ          tŠ          tŠ          ¦  «        t	          jF        |, G                    ¦   «         dd|, H                    ¦   «         dd¦  «        ¦  «        \  }5}}|5| _        dS d}6|D ]}7|6dt#          |7¦  «        › d|7› d�z  }6Œt«          |6¦  «        ‚)a  
        Pixmap(colorspace, irect, alpha) - empty pixmap.
        Pixmap(colorspace, src) - copy changing colorspace.
        Pixmap(src, width, height,[clip]) - scaled copy, float dimensions.
        Pixmap(src, alpha=1) - copy and add or drop alpha channel.
        Pixmap(filename) - from an image in a file.
        Pixmap(image) - from an image in memory (bytes).
        Pixmap(colorspace, width, height, samples, alpha) - from samples data.
        Pixmap(PDFdoc, xref) - from an image at xref in a PDF document.
        Nr   z"source colorspace must not be Noner   r   Úrawr   zbad alpha valuez'cannot drop alpha for 'NULL' colorspacer
  zbad samples datazbad samples length w=z h=ú alpha=z n=z stride=z size=r   r¶  úbad image datar†  r
  ÚAlphaÚ
Luminosityz+Unrecognised args for constructing Pixmap:
ú    r{   r%   )VÚ_samples_mvÚ_memory_viewr­  r”  r�   r–  rh  ÚFzIrectÚIRectr$  rµ   Úfz_new_pixmap_with_bboxr¯  rÖ  rÄ   r4   rç   rÈ   r×  ÚFzPixmapr>   Úfz_pixmap_colorspacerÌ   rÃ   rì  rí  rî  Ú fz_new_pixmap_from_alpha_channelrÞ   ÚMSG_PIX_NOALPHAÚ!fz_new_pixmap_from_color_and_maskro  r7   Úfz_infinite_irectr°  Úfz_scale_pixmapr(  r)  rÑ  r   Úfz_pixmap_colorantsÚfz_pixmap_widthÚfz_pixmap_heightÚfz_new_pixmapr  r  r   Úpixmap_copyÚfz_pixmap_samples_memoryviewrÜ  ÚstriderE   rL  Úfz_samples_setÚfz_samples_getr¦  r  r]  r  r'  r  Úll_fz_pixmap_copy_rawr;   rï   Úfz_new_image_from_filer   r§  Úfz_get_pixmap_from_imageÚFZ_MIN_INF_RECTÚFZ_MAX_INF_RECTrr  r   rÆ  rõ  rÁ   rÅ   rÎ   r‡  rˆ  r‰  r  r  rý  rç  r  rg   )8r(   r÷  rß  r÷   rÜ  r·  ÚspixÚmpixÚspmÚmpmr  r   rÆ  r/  r  Úsrc_pixr  ÚsepsrE   Úsrc_viewÚpm_viewr¸  ÚtptrÚsptrÚ	pm_strideÚpm_nÚpm_alphaÚ
src_strideÚsrc_nr)  r(  Úpm_iÚsrc_ir®   Úsrc_pix_alphar�  Úsamplesrt  Úsamples2r  r¼  Ú	imagedatar   rø  rÔ  r  r  r*  r  rZ  rJ
  r	  r[  rà  r   Úargs8                                                           r)   rŒ   zPixmap.__init__s4  së
  € ð  ˆÔð
 !ˆÔðA	#õ ˜Ý�UÔ/Ð0Ý”�uœ}­eµT½5ÐAñô ð ~	#ð
 ‰HˆB�ØˆEÝÔ.¨rÕ3CÀDÑ3IÔ3IÍ5ÔK^Ð_`ÑKaÔKaÐchÑiÔiˆBØˆDŒIˆIˆIå˜Ý�UÔ/Ð0Ý”�uœ}­eµT½5ÐAÝ•d�ñô ð t	#ð #‰OˆB��eÝÔ.¨rÕ3CÀDÑ3IÔ3IÍ5ÔK^Ð_`ÑKaÔKaÐchÑiÔiˆBØˆDŒIˆIˆIå˜�z­5Ô+=½tÀD¹z¼zÐJÍVÕUZÔUcÐLdÑeÔeñ j	#à‰HˆB�Ý˜"�jÑ)Ô)ð .Ø”W��Ø�ÝÔ'¨Ñ-Ô-�Ý˜$¥Ñ'Ô'ð !Ø”y�ÝÔ-¨dÑ3Ô3Ô>ð HÝ Ð"FÑGÔGÐGàŒ}ð 9Ý!Ô3ØØÝÔ*Ñ,Ô,ÝÔ2°4Ñ8Ô8ÝÔ+Ñ-Ô-Øñô �”	�	�	õ "ÔBÀDÑIÔI�”	Ø”yÔ+ð 9Ý&­Ñ8Ô8Ð8ð9ð 9õ ˜�v¥u¤~Ð6½ÅÄÐ8PÑQÔQð P	#à‰JˆD�$Ý˜$¥Ñ'Ô'ð !Ø”y�Ý˜$¥Ñ'Ô'ð !Ø”y�ØˆCØˆCØ”?ð HÝÔ<¸SÑAÔA�Ø”~ð 9Ý&­Ñ8Ô8Ð8ð9õ Ô=¸cÀ3ÑGÔG�ØˆDŒIˆIˆIå˜¥­¬Ð7½%Å¸ÍÍsÀ|ÐUYÑZÔZð 	#Ý˜�v¥u¤~Ð6½Å¸ÅuÍcÀlÑSÔSñ	#õ �4‰yŒy˜AŠ~ˆ~Ø!‘
��a˜Ý”}¥UÔ%<Ñ=Ô=��à#'Ñ ��a˜˜DÝ'¨Ñ-Ô-�å#-¨dµFÑ#;Ô#;ÐE�d”i�iÀˆGÝÔ-¨dÑ3Ô3ð |ÝÔ*¨7°G·I²I±K´KÀÇÂÁÄÈaÐQRÐTXÑYÔY��åÔ*¨7°G·I²I±K´KÀÇÂÁÄÈaÐQRÕTYÔTaÕbgÔbyÑTzÔTzÑ{Ô{�ØˆDŒIˆIˆIå˜�c¥F­E¬NÐ#;Ñ<Ô<ð n	#ÀÀaÄÈEÒAQÐAQà‰EˆAˆrÝ˜"�fÑ%Ô%ð Ø”W�ØˆDŒIˆIˆIå˜�v¥u¤~Ð6½¸d¸ÑDÔDñ g	#ð ˜”7ˆDÝ" 4™yœy¨Aš~˜~�D˜”G�G°1ˆEÝ#-¨dµFÑ#;Ô#;ÐE�d”i�iÀˆGÝ˜E 1 aÑ(Ô(ð 5Ý Ð"3Ñ4Ô4Ð4ÝÔ+¨GÑ4Ô4ˆBØ”=ð M¨ð MÝ Ð"KÑLÔLÐLÝÔ&Ñ(Ô(ˆDÝÔ)¨'Ñ2Ô2ˆAÝÔ% gÑ.Ô.ˆAÝÔ& wÑ/Ô/ˆAÝÔ$ R¨¨A¨t°UÑ;Ô;ˆBØ%Ô0Ô2ˆBŒMŒOØ%Ô0Ô2ˆBŒMŒOØ!(Ô!3Ô!8ˆBŒMÔØ!(Ô!3Ô!8ˆBŒMÔð62õ Ô! 2¤=°'Ô2DÀaÑHÔHÐHðh ˆDŒIˆIˆIå˜�uÔ1µ:Ð>ÅÅSÈ$ÕQTÕVZÐP[Ñ\Ô\ñ X	#à'+Ñ$ˆB��1�g˜uÝ˜"�jÑ)Ô)ð :Ø”W�Ý! "¥eÔ&8Ñ9Ô9Ð9Ð9Ð9ÝÔ% bÑ)Ô)ˆAØ˜%‘i 1‘_ˆFÝÔ&Ñ(Ô(ˆDÝÔ$ R¨¨A¨t°UÑ;Ô;ˆBå˜7¥U­IÐ$6Ñ7Ô7ð 	=å Ô3°GÑ<Ô<�Ý˜7‘|”|��å(¨Ñ1Ô1�Ø”~ð :Ý$Ð&8Ñ9Ô9Ð9ÝÔ1°#Ñ6Ô6‘��aÝ Ô3°GÑ<Ô<�Ø˜‰z˜TÒ!Ð!Ý Ð"a¸Ð"aÐ"a¸QÐ"aÐ"aÀ%Ð"aÐ"aÈ1Ð"aÐ"aÐPVÐ"aÐ"aÐZ^Ð"aÐ"aÑbÔbÐbÝÔ'¨¬¸ÑAÔAÐAØˆDŒIˆIˆIå˜˜dÑ#Ô#ñ >	#à‰JˆIØˆDÝ�y )Ñ,Ô,ð :Ø!×)Ò)Ñ+Ô+�Øð >ÝÔ6°uÑ=Ô=�CøÝ˜ DÑ)Ô)ð 
:Ø!œ�Øð >ÝÔ6°uÑ=Ô=�CøÝ˜I¥sÑ+Ô+ð :ÝÔ2°9Ñ=Ô=��å(¨Ñ3Ô3�Ø”~ð 8¨S¬^Ô-?ð 8Ý$Ð&6Ñ7Ô7Ð7ÝÔ4°SÑ9Ô9�õ
 Ô5ØÝ”M¥/µ?ÅOÕUdÑeÔeÝ”N C§E¢E¡G¤G¨Q°°3·5²5±7´7¸A¸qÑAÔAñô ‰HˆB��1õ
 Ô2°3Ñ7Ô7‰JˆD�$Ø!%ˆBŒMÔØ!%ˆBŒMÔØˆDŒIˆIˆIå˜�x­Ô)9Ð:½CÑ@Ô@ñ 	#à‰IˆC�Ý" 3Ñ'Ô'ˆCÝÔ(¨Ñ-Ô-ˆGÝ˜D ! W¨Q¡YÑ/Ô/ð 0Ý ¥,Ñ/Ô/Ð/ÝÔ(¨¨d°AÑ6Ô6ˆCÝÔ& s­H°YÑ,?Ô,?Ñ@Ô@ˆEÝÔ% e­X°gÑ->Ô->Ñ?Ô?ð 3Ý!Ô-¨eµX¸gÑ5FÔ5FÑGÔGð3å!Ô-¨eµX¸lÑ5KÔ5KÑLÔLð3õ !¥/Ñ2Ô2Ð2ÝÔ& s¨CÑ0Ô0ˆCõ Ô6ØÝ”M¥/µ?ÅOÕUdÑeÔeÝ”N 3§5¢5¡7¤7¨A¨q°#·%²%±'´'¸1¸aÑ@Ô@ñô ‰IˆC��Að
 ˆDŒIˆIˆIð BˆDØð 4ð 4�ØÐ3�t C™yœyÐ3Ð3¨CÐ3Ð3Ð3Ñ3��Ý˜TÑ"Ô"Ð"r*   c                ó   — | j         S r,   )r¸  r.   s    r)   r)  zPixmap.__len__‹5  s
   € ØŒyÐr*   c                óœ   — t          | ¦  «        t          urd S d}| j        r| j        j        j        j        }d|› d| j        › d| j        › d�S )Nr�	  zPixmap(z, r˜  )rÈ   r×  rÛ  rÄ   rÌ   r   ÚirectrÜ  )r(   rÛ  s     r)   rí   zPixmap.__repr__Ž5  s\   € Ý�D‰zŒz�VÐ#Ð#ØˆFØˆ
ØŒ?ð 	>ØœÔ-Ô8Ô=ˆJàB˜ÐBÐB t¤zÐBÐB°T´ZÐBÐBÐBÐBr*   c                óz  — | j         }t          j        |¦  «        |                     ¦   «         z  }t          j        |¦  «        }t          j        |¦  «        }|dk    rt          j        ||¦  «         n£|dk    rt          j        ||¦  «         n‡|dk    rt          j        ||¦  «         nk|dk    rt          j	        ||¦  «         nO|dk    rt          j
        ||¦  «         n3|dk    rt          j        |||d¦  «         nt          j        ||¦  «         |                     ¦   «          t          |¦  «        }|S )z!
        Pixmap._tobytes
        r   r   r   r   rô  rÅ  r   )rÄ   r�   Úfz_pixmap_striderÆ  rã  rä  Úfz_write_pixmap_as_pngÚfz_write_pixmap_as_pnmÚfz_write_pixmap_as_pamÚfz_write_pixmap_as_psdÚfz_write_pixmap_as_psÚfz_write_pixmap_as_jpegr  r  )r(   Úformat_Újpg_qualityr·  r¸  r  r  Úbarrays           r)   Ú_tobyteszPixmap._tobytes—5  s7  € ð ŒYˆÝÔ% bÑ)Ô)¨B¯DªD©F¬FÑ2ˆÝÔ! $Ñ'Ô'ˆÝŒn˜SÑ!Ô!ˆØ˜Š\ˆ\�EÔ8¸¸bÑAÔAÐAÐAØ˜Š\ˆ\�EÔ8¸¸bÑAÔAÐAÐAØ˜Š\ˆ\�EÔ8¸¸bÑAÔAÐAÐAØ˜Š\ˆ\�EÔ8¸¸bÑAÔAÐAÐAØ˜Š\ˆ\�EÔ7¸¸RÑ@Ô@Ð@Ð@Ø˜Š\ˆ\ÝÔ)¨#¨r°;ÀÑBÔBÐBÐBåÔ(¨¨bÑ1Ô1Ð1Ø×ÒÑÔÐÝ! #Ñ&Ô&ˆØˆr*   c                óœ  — | j         }|dk    rt          j        ||¦  «         d S |dk    rt          j        ||¦  «         d S |dk    rt          j        ||¦  «         d S |dk    rt          j        ||¦  «         d S |dk    rt          j        ||¦  «         d S |dk    rt          j        |||¦  «         d S t          j        ||¦  «         d S )Nr   r   r   r   rô  rÅ  )rÄ   r�   Úfz_save_pixmap_as_pngÚfz_save_pixmap_as_pnmÚfz_save_pixmap_as_pamÚfz_save_pixmap_as_psdÚfz_save_pixmap_as_psÚfz_save_pixmap_as_jpeg)r(   rf   r�  rž  r·  s        r)   Ú	_writeIMGzPixmap._writeIMG¬5  sê   € ØŒYˆØ˜Š\ˆ\�EÔ7¸¸HÑEÔEÐEÐEÐEØ˜Š\ˆ\�EÔ7¸¸HÑEÔEÐEÐEÐEØ˜Š\ˆ\�EÔ7¸¸HÑEÔEÐEÐEÐEØ˜Š\ˆ\�EÔ7¸¸HÑEÔEÐEÐEÐEØ˜Š\ˆ\�EÔ6°r¸8ÑDÔDÐDÐDÐDØ˜Š\ˆ\�EÔ8¸¸XÀ{ÑSÔSÐSÐSÐSÝ!Ô7¸¸HÑEÔEÐEÐEÐEr*   c                ó4   — t          j        | j        ¦  «        S )z$Indicates presence of alpha channel.)r�   Úfz_pixmap_alpharÄ   r.   s    r)   rÜ  zPixmap.alpha¶5  r§  r*   Nc                óÂ   — |€t          j        | j        ¦  «         dS |€t          j        | j        |¦  «         dS t	          | j        |t          |¦  «        ¦  «         dS )z*Fill all color components with same value.N)r�   Úfz_clear_pixmaprÄ   Úfz_clear_pixmap_with_valueÚJM_clear_pixmap_rect_with_valuer¯  )r(   r¸   r/  s      r)   rÏ  zPixmap.clear_with»5  sc   € àˆ=ÝÔ! $¤)Ñ,Ô,Ð,Ð,Ð,Øˆ\ÝÔ,¨T¬Y¸Ñ>Ô>Ð>Ð>Ð>å+¨D¬I°uÕ>NÈtÑ>TÔ>TÑUÔUÐUÐUÐUr*   r   c                óV   — | j         }t          ||¦  «        }|st          |¦  «        S |S )z-
        Return count of each color.
        )rÄ   ÚJM_color_countr7   )r(   r  r  r·  r    s        r)   Úcolor_countzPixmap.color_countÄ5  s2   € ð ŒYˆÝ˜R Ñ&Ô&ˆØð 	Ý˜‘8”8ˆOØˆ	r*   c                ó
  — d}d}|�| j         t          |¦  «        v r| j         }|                      d|¬¦  «                             ¦   «         D ]\  }}||z  }||k    r|}|}Œ|sdt	          dg| j        z  ¦  «        fS ||z  |fS )z/Return most frequent color and its usage ratio.r   NT)r  r  r   r
  )r”  r$  r±  rB   r  rE   )r(   r  Ú	allpixelsÚcntÚpixelr  Úmaxpixels          r)   Úcolor_topusagezPixmap.color_topusageÎ5  s­   € àˆ	ØˆØÐ ¤
­d°4©j¬jÐ 8Ð 8Ø”:ˆDØ ×,Ò,°D¸dÐ,ÑCÔC×IÒIÑKÔKð 	!ð 	!‰LˆE�5Ø˜ÑˆIØ�sŠ{ˆ{Ø�Ø �øØð 	.Ø•u˜c˜U T¤V™^Ñ,Ô,Ð-Ð-Ø�i‘ Ð*Ð*r*   c                ól   — t          t          j        | j        ¦  «        ¦  «        }|j        dk    rdS |S )zPixmap Colorspace.r×  N)r”  r�   rh  rÄ   r   )r(   rß  s     r)   rÛ  zPixmap.colorspaceÝ5  s5   € õ �Ô2°4´9Ñ=Ô=Ñ>Ô>ˆØŒ7�fÒÐØ�4Øˆ	r*   c                óF  — | j         }|j         }t          j        |¦  «        st          d¦  «        ‚|                     ¦   «         |                     ¦   «         k    rt          d¦  «        ‚t          j        ||t          |¦  «        t          j        d¦  «        ¦  «         dS )zCopy bbox from another Pixmap.z'cannot copy pixmap with NULL colorspacez%source and target alpha must be equalN)rÄ   r�   rh  rÃ   rÜ  Úfz_copy_pixmap_rectr¯  rí  )r(   rÖ  r/  r·  r€  s        r)   rc  zPixmap.copyå5  s�   € àŒYˆØ”(ˆÝÔ)¨'Ñ2Ô2ð 	IÝÐGÑHÔHÐHØ�8Š8‰:Œ:˜Ÿš™œÒ(Ð(ÝÐEÑFÔFÐFÝÔ! " gÕ/?ÀÑ/EÔ/EÅuÔGaÐbfÑGgÔGgÑhÔhÐhÐhÐhr*   c                óR   — t          j        | j        ¦  «        }t          |¦  «        S )zMD5 digest of pixmap (bytes).)r�   ré  rÄ   r  r   s     r)   r  zPixmap.digestï5  s"   € õ Ô" 4¤9Ñ-Ô-ˆÝ�S‰zŒzÐr*   c                óŽ   — t          j        | j        ¦  «        st          d¦  «         dS t          j        | j        |¦  «         dS )z=Apply correction with some float.
        gamma=1 is a no-op.zcolorspace invalid for functionN)r�   rh  rÄ   r   Úfz_gamma_pixmap)r(   Úgammas     r)   Ú
gamma_withzPixmap.gamma_withõ5  sH   € õ Ô)¨4¬9Ñ5Ô5ð 	ÝÐ=Ñ>Ô>Ð>ØˆFÝÔ˜tœy¨%Ñ0Ô0Ð0Ð0Ð0r*   c                ó4   — t          j        | j        ¦  «        S )zThe height.)r�   rp  rÄ   r.   s    r)   rÆ  zPixmap.hý5  r¾
  r*   c                ó  — | j         }t          j        |¦  «        j        st	          d¦  «         dS t          |¦  «        }t          j        |¦  «        rt          j        |¦  «         dS t          j        ||¦  «         dS )z Invert the colors inside a bbox.zignored for stencil pixmapFT)	rÄ   r�   rh  rÌ   r   r¯  r°  Úfz_invert_pixmapÚfz_invert_pixmap_rect)r(   r/  r·  r  s       r)   Úinvert_irectzPixmap.invert_irect6  s�   € àŒYˆÝÔ)¨"Ñ-Ô-Ô8ð 	ÝÐ8Ñ9Ô9Ð9Ø�5Ý˜TÑ"Ô"ˆÝÔ% aÑ(Ô(ð 	ÝÔ" 2Ñ&Ô&Ð&Ø�4ÝÔ# B¨Ñ*Ô*Ð*Øˆtr*   c                óR   — t          j        | j        ¦  «        }t          |¦  «        S )zPixmap bbox - an IRect object.)r�   Úfz_pixmap_bboxrÄ   ÚJM_py_from_irectrO  s     r)   r”  zPixmap.irect6  s$   € õ Ô" 4¤9Ñ-Ô-ˆÝ Ñ%Ô%Ð%r*   c                ó4   — t          j        | j        ¦  «        S )zCheck if pixmap is monochrome.)r�   Úfz_is_pixmap_monochromerÄ   r.   s    r)   Úis_monochromezPixmap.is_monochrome6  s   € õ Ô,¨d¬iÑ8Ô8Ð8r*   c                ó  — | j         }|                     ¦   «         }|                     ¦   «         |                     ¦   «         z  |z  }d„ }t	          d||¦  «        D ],}|dk    r ||d|¦  «        }Œ ||||¦  «        }||k    r dS Œ-dS )z5
        Check if pixmap has only one color.
        c                óœ   — t          ¦   «         }t          |¦  «        D ]-}|                     t          j        | ||z   ¦  «        ¦  «         Œ.|S r,   )r´   rL  rk   r�   rv  )r·  ÚoffsetrE   rG   r®   s        r)   Ú_pixmap_read_samplesz0Pixmap.is_unicolor.<locals>._pixmap_read_samples"6  sK   € Ý‘&”&ˆCÝ˜1‘X”Xð ?ð ?�Ø—
’
�5Ô/°°F¸1±HÑ=Ô=Ñ>Ô>Ð>Ð>ØˆJr*   r   FT)rÄ   rE   r   rÆ  rL  )r(   r·  rE   r  rÎ  rÍ  Úsample0Úsamples           r)   Úis_unicolorzPixmap.is_unicolor6  s±   € ð
 ŒYˆØ�DŠD‰FŒFˆØ—’‘”˜Ÿš™œ‘ !Ñ#ˆð	ð 	ð 	õ
 ˜Q  qÑ)Ô)ð 	!ð 	!ˆFØ˜Š{ˆ{Ø.Ð.°°A°qÑ9Ô9��à-Ð-¨r°6¸1Ñ=Ô=�Ø˜WÒ$Ð$Ø ˜5˜5ð %àˆtr*   c                óˆ   — t           r#d„ }t          |¦  «        | j        _        | j        S t	          j        | j        ¦  «        S )zThe size of one pixel.c                ó4   — t          j        | j        ¦  «        S r,   )r   Úpixmap_nrÄ   r.   s    r)   Ún2zPixmap.n.<locals>.n276  s   € Ý”~ d¤iÑ0Ô0Ð0r*   )r  r6  rD  rE   r�   Úfz_pixmap_componentsrÄ   )r(   rÕ  s     r)   rE   zPixmap.n06  sE   € õ ð 	ð1ð 1ð 1å'¨™|œ|ˆDŒNÔØ”6ˆMÝÔ)¨$¬)Ñ4Ô4Ð4r*   r   c                óÄ  — t          |¦  «        }t          j        ¦   «         }||_        |r|                     |¦  «         |r|                     |¦  «         | j        }t          |t          ¦  «        rt          j	        ||d|¦  «         dS t          |¦  «        }	 t          j        |||¦  «         |                     ¦   «          dS # |                     ¦   «          w xY w)z4
        Save pixmap as an OCR-ed PDF page.
        r   N)Úget_tessdatar�   ÚFzPdfocrOptionsrN
  Úlanguage_set2Údatadir_set2rÄ   r>   rÑ  Úfz_save_pixmap_as_pdfocrr  Úfz_write_pixmap_as_pdfocrr  )r(   rf   rN
  r+  Útessdatar¹  rà  r  s           r)   Úpdfocr_savezPixmap.pdfocr_save=6  së   € õ   Ñ)Ô)ˆÝÔ$Ñ&Ô&ˆØ ˆŒØð 	*Ø×Ò Ñ)Ô)Ð)Øð 	)Ø×Ò˜xÑ(Ô(Ð(ØŒiˆÝ�h¥Ñ$Ô$ð 	&ÝÔ*¨C°¸1¸dÑCÔCÐCÐCÐCå'¨Ñ2Ô2ˆCð&ÝÔ/°°c¸4Ñ@Ô@Ð@à×#Ò#Ñ%Ô%Ð%Ð%Ð%ø�×#Ò#Ñ%Ô%Ð%Ð%øøøs   ÂC	 Ã	CTÚengc                óš   — t          |¦  «        }ddlm}  |¦   «         }|                      ||||¬¦  «         |                     ¦   «         S )a¾  Save pixmap as an OCR-ed PDF page.

        Args:
            compress: (bool) compress, default 1 (True).
            language: (str) language(s) occurring on page, default "eng" (English),
                    multiples like "eng+ger" for English and German.
            tessdata: (str) folder name of Tesseract's language support. If None
                    we use environment variable TESSDATA_PREFIX or search for
                    Tesseract installation.
        Notes:
            On failure, make sure Tesseract is installed and you have set
            <tessdata> or environment variable "TESSDATA_PREFIX" to the folder
            containing your Tesseract's language support data.
        r   rS
  )rN
  r+  rÞ  )rØ  r9   r^  rß  rv  )r(   rN
  r+  rÞ  r^  rT
  s         r)   Úpdfocr_tobyteszPixmap.pdfocr_tobytesR6  sY   € õ   Ñ)Ô)ˆØÐÐÐÐÐØˆg‰iŒiˆØ×Ò˜ x¸(ÈXÐÑVÔVÐVØ�|Š|‰~Œ~Ðr*   c                ó  — 	 ddl m} n# t          $ r t          d¦  «         ‚ w xY w| j        }|sd}n0|j        dk    r| j        sdnd}n|j        dk    r| j        sdnd	}nd
}|                     || j        | j	        f| j
        ¦  «        }|S )z&Create a Pillow Image from the Pixmap.r   )r
  zPIL/Pillow not installedr  r   ÚLAr   rŸ  ÚRGBAr   )ÚPILr
  r

  rr   rÛ  rE   rÜ  Ú	frombytesr]  rÕ  rŽ  )r(   r
  Úcspacer   rÔ  s        r)   Ú	pil_imagezPixmap.pil_imageg6  sÅ   € ð	Ø!Ð!Ð!Ð!Ð!Ð!Ð!øÝð 	ð 	ð 	ÝÐ.Ñ/Ô/Ð/Øð	øøøð ”ˆØð 	ØˆDˆDØŒX˜Š]ˆ]Ø"œjÐ2�3�3¨dˆDˆDØŒX˜Š]ˆ]Ø $¤
Ð6�5�5°ˆDˆDàˆDà�oŠo˜d T¤Z°´Ð$=¸t¼|ÑLÔLˆØˆ
s   ‚	 ‰$c                ó–   — |                       ¦   «         }d|                     ¦   «         vr| j        | j        f|d<    |j        |i |¤Ž dS )a6  Write to image file using Pillow.

        An intermediate PIL Image is created, and its "save" method is used
        to store the image. See Pillow documentation to learn about the
        meaning of possible positional and keyword parameters.
        Use this when other output formats are desired.
        rÚ  N)ré  rË  r  r  r)  )r(   r÷  rø  rÔ  s       r)   Úpil_savezPixmap.pil_save|6  sU   € ð �nŠnÑÔˆà˜Ÿš™œÐ%Ð%Ø!œY¨¬	Ð2ˆF�5‰MàˆŒ�$Ð!˜&Ð!Ð!Ð!Ð!Ð!r*   c                óè   — t          j        ¦   «         }|                      ¦   «         }d|                     ¦   «         vr| j        | j        f|d<    |j        |g|¢R i |¤Ž |                     ¦   «         S )a?  Convert to an image in memory using Pillow.

        An intermediate PIL Image is created, and its "save" method is used
        to store the image. See Pillow documentation to learn about the
        meaning of possible positional or keyword parameters.
        Use this when other output formats are desired.
        rÚ  )r9   r^  ré  rË  r  r  r)  rv  )r(   r÷  rø  Ú	bytes_outrÔ  s        r)   Úpil_tobyteszPixmap.pil_tobytes‹6  sw   € õ ”J‘L”Lˆ	Ø�nŠnÑÔˆà˜Ÿš™œÐ%Ð%Ø!œY¨¬	Ð2ˆF�5‰MàˆŒ�Ð,˜TÐ,Ð,Ð, VÐ,Ð,Ð,Ø×!Ò!Ñ#Ô#Ð#r*   c                óŽ  — t           r t          j        | j        j        ||¦  «        S 	 |dk     s0|| j        j        j        k    s|dk     s|| j        j        j        k    rt          t          t          ¦  «         | j        j        j
        }| j        j        j        }||z  ||z  z   }t          | j        |||z   …         ¦  «        }|S )zXGet color tuple of pixel (x, y).
        Last item is the alpha if Pixmap.alpha is true.r   )r  r   Úpixmap_pixelrÄ   rÌ   r   rÆ  r°  ÚMSG_PIXEL_OUTSIDErp  rE   rt  rµ   Ú
samples_mv)r(   r(  r)  rE   rt  r®   rG   s          r)   rµ  zPixmap.pixelœ6  sÃ   € õ ð 	BÝÔ% d¤iÔ&:¸A¸qÑAÔAÐAð	9Ø�q’5�5Ø˜œ	Ô,Ô.Ò.Ð.Ø�q’5�5Ø˜œ	Ô,Ô.Ò.Ð.åÕ%Õ'7Ñ8Ô8Ð8ØŒIÔ Ô"ˆØ”Ô%Ô,ˆØ�Q‰J˜˜Q™ÑˆÝ�T”_ a¨¨1© fÔ-Ñ.Ô.ˆØˆ
r*   rÎ  r  c                ó.   — | j         }t          |¦  «        S r,   )rò  r  )r(   Úmvs     r)   rŽ  zPixmap.samples®6  s   € àŒ_ˆÝ�b‰zŒzÐr*   c                óZ   — | j         €t          j        | j        ¦  «        | _         | j         S )z,
        Pixmap samples memoryview.
        )rb  r�   rs  rÄ   r.   s    r)   rò  zPixmap.samples_mv³6  s+   € ð ÔÐ#Ý$ÔAÀ$Ä)ÑLÔLˆDÔØÔÐr*   c                óJ   — | j         r| j                              ¦   «          d S d S r,   ©rb  Úreleaser.   s    r)   Ú_samples_mv_releasezPixmap._samples_mv_releaseÀ6  ó2   € ØÔð 	'ØÔ×$Ò$Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r*   c                ó4   — t          j        | j        ¦  «        S r,   )r�   Úfz_pixmap_samples_intrÄ   r.   s    r)   Úsamples_ptrzPixmap.samples_ptrÄ6  s   € åÔ*¨4¬9Ñ5Ô5Ð5r*   é_   c                óâ  — dddddddddddœ
}t          |¦  «        t          u rn7t          |d¦  «        rt          |¦  «        }nt          |d	¦  «        r|j        }|€,t          j                             |¦  «        \  }}|dd
…         }|                     |                     ¦   «         d
¦  «        }|€4t          d|› dt          |                     ¦   «         ¦  «        › �¦  «        ‚| j        r|dv rt          d|› d�¦  «        ‚| j        r'| j        j        dk    r|dv rt          d|› d�¦  «        ‚|dk    r |                      | j        | j        ¦  «         |                      |||¦  «        S )zòOutput as image in format determined by filename extension.

        Args:
            output: (str) only use to overrule filename extension. Default is PNG.
                    Others are JPEG, JPG, PNM, PGM, PPM, PBM, PAM, PSD, PS.
        r   r   r   r   rô  rÅ  )
rÌ  ÚpnmÚpgmÚppmÚpbmÚpamÚpsdÚpsÚjpgÚjpegrü  r   NúImage format ú not in ©r   rô  rÅ  rë   z' cannot have alpha©r   r   rK  úunsupported colorspace for ')rÈ   rÑ  r;   r   rd   r
   Úsplitextr8   rÒ  rÃ   rµ   rË  rÜ  rÛ  rE   rØ  r  r  r¨  )r(   rf   rç  rž  Úvalid_formatsr  r  r8  s           r)   r)  zPixmap.saveÈ6  sŸ  € ð ØØØØØØØØØðð ˆõ �‰>Œ>�SÐ Ð ØÝ�X˜zÑ*Ô*ð 	%Ý˜8‘}”}ˆHˆHÝ�X˜vÑ&Ô&ð 	%Ø”}ˆHØˆ>Ý”W×%Ò% hÑ/Ô/‰FˆAˆsØ˜˜˜”WˆFà×Ò §¢¡¤°Ñ5Ô5ˆØˆ;ÝÐZ¨VÐZÐZ½UÀ=×CUÒCUÑCWÔCWÑ=XÔ=XÐZÐZÑ[Ô[Ð[ØŒ:ð 	>˜# Ð*Ð*ÝÐ< Ð<Ð<Ð<Ñ=Ô=Ð=ØŒ?ð 	G˜tœÔ0°1Ò4Ð4¸À	Ð9IÐ9IÝÐE¸FÐEÐEÐEÑFÔFÐFØ�!Š8ˆ8Ø�LŠL˜œ D¤IÑ.Ô.Ð.Ø�~Š~˜h¨¨[Ñ9Ô9Ð9r*   c                ó¨  — | j         }d}d}|                     ¦   «         dk    rt          t          ¦  «        ‚t	          j        |¦  «        }t	          j        |¦  «        }	t	          j        |¦  «        }
|	|
z  |dz   z  }g d¢}g d¢}d}d}|rNt          |t          t          f¦  «        r2t          |¦  «        |k    rt          |¦  «        D ]}||         ||<   Œd}|rNt          |t          t          f¦  «        r2t          |¦  «        |k    rt          |¦  «        D ]}||         ||<   Œd}t          ¦   «         }d}|r`t          |t          t          f¦  «        r|}t          |¦  «        }nJ dt          |¦  «        › �¦   «         ‚||	|
z  k     rt          d¦  «        ‚	 t	          j        ||||t	          j        |¦  «        |j        ||||¦
  «
         dS )	a©  Set alpha channel to values contained in a byte array.
        If omitted, set alphas to 255.

        Args:
            alphavalues: (bytes) with length (width * height) or 'None'.
            premultiply: (bool, True) premultiply colors with alpha values.
            opaque: (tuple, length colorspace.n) this color receives opacity 0.
            matte: (tuple, length colorspace.n)) preblending background color.
        r   r   ©r   r   r   r   z!unexpected type for alphavalues: zbad alpha valuesr
  c                ó,   — | |z  dz   }||dz  z  }|dz  S )Né€   r  r-   )r!   rÑ
  r(  s      r)   Ú	fz_mul255z#Pixmap.set_alpha.<locals>.fz_mul255;7  s%   € Ø ™E C™K˜Ø˜Q #™X™˜Ø  C™x˜r*   N)rÄ   rÜ  rÃ   rj  r�   rn  ro  rp  r>   r´   rµ   r7   rL  r  r]  rÈ   ÚPixmap_set_alpha_helperr  rÌ   rv  ru  )r(   ÚalphavaluesÚpremultiplyÚopaqueÚmatterà  rÜ  r€  rE   r   rÆ  Úbalenr  rw  Úzero_outÚbgroundr®   r}  Údata_lenrŸ  r�  Údata_fixr  s                          r)   Ú	set_alphazPixmap.set_alphañ6  s  € ð ŒiˆØˆØˆØ�9Š9‰;Œ;˜!ÒÐÝ�oÑ.Ô.Ð.ÝÔ% cÑ*Ô*ˆÝÔ! #Ñ&Ô&ˆÝÔ" 3Ñ'Ô'ˆØ�A‘˜˜1™‘ˆØ��ˆØ�,�,ˆØˆØˆØð 	•j ­$µ¨Ñ7Ô7ð 	½CÀ¹K¼KÈ1Ò<LÐ<LÝ˜1‘X”Xð &ð &�Ø" 1œI��q‘	�	ØˆHØð 	•Z ­µ¨Ñ6Ô6ð 	½3¸u¹:¼:Èº?¸?Ý˜1‘X”Xð &ð &�Ø" 1œX�˜‘
�
ØˆGÝ‰wŒwˆØˆØð 	6õ ˜+­­yÐ'9Ñ:Ô:ð RØ"�Ý˜{Ñ+Ô+��àQÐQ½dÀ;Ñ>OÔ>OÐQÐQÑQÔQ�qØ˜!˜a™%ÒÐÝ Ð"4Ñ5Ô5Ð5ð.	åÔ)ØØØØÝÔ,¨dÑ3Ô3Ø”NØØØØñô ð ð ð r*   rÌ  c                óè  — dddddddddddddœ}|                      |                     ¦   «         d	¦  «        }|€4t          d
|› dt          |                     ¦   «         ¦  «        › �¦  «        ‚| j        r|dv rt          d¦  «        ‚| j        r'| j        j        dk    r|dv rt          d|› d�¦  «        ‚|dk    r |                      | j	        | j
        ¦  «         |                      ||¦  «        }|S )zA
        Convert to binary image stream of desired type.
        r   r   r   rK  r   rô  rÅ  )rÌ  r   r  r  r  r  ÚtgaÚtpicr  r  r  r  Nr	  r
  r  z'{output}' cannot have alphar  r  rë   )r8   rÒ  rÃ   rµ   rË  rÜ  rÛ  rE   rØ  r  r  r   )r(   rç  rž  r  r8  rŸ  s         r)   rÏ  zPixmap.tobytesP7  s%  € ð
 ØØØØØØØØØØØðð ˆð ×Ò §¢¡¤°Ñ5Ô5ˆØˆ;ÝÐZ¨VÐZÐZ½UÀ=×CUÒCUÑCWÔCWÑ=XÔ=XÐZÐZÑ[Ô[Ð[ØŒ:ð 	=˜# Ð*Ð*ÝÐ;Ñ<Ô<Ð<ØŒ?ð 	G˜tœÔ0°1Ò4Ð4¸À	Ð9IÐ9IÝÐE¸FÐEÐEÐEÑFÔFÐFØ�!Š8ˆ8Ø�LŠL˜œ D¤IÑ.Ô.Ð.Ø—’˜s KÑ0Ô0ˆØˆr*   c                óD   — | j         }||j        _        ||j        _        dS )z"Set resolution in both dimensions.N)rÄ   rÌ   r  r  )r(   r  r  r·  s       r)   rØ  zPixmap.set_dpin7  s#   € àŒYˆØ!ˆŒÔØ!ˆŒÔÐÐr*   c                óD   — | j         }||j        _        ||j        _        dS )zSet top-left coordinates.N)rÄ   rÌ   r(  r)  )r(   r(  r)  r·  s       r)   Ú
set_originzPixmap.set_origint7  s   € àŒYˆØˆŒŒØˆŒŒˆˆr*   c                ól  — t           r!t          j        | j        j        |||¦  «        S | j        }t          |d|                     ¦   «         dz
  ¦  «        r&t          |d|                     ¦   «         dz
  ¦  «        st          t          ¦  «        ‚| 
                    ¦   «         }t          |¦  «        D ]/}||         }t          |dd¦  «        st          t          ¦  «        ‚Œ0t          j        |¦  «        }||z  ||z  z   }	 t          |¦  «        D ]!}|                     ||z   ||         ¦  «         Œ"dS )zSet color of pixel (x, y).r   r   r
  N)r  r   Ú	set_pixelrÄ   rÌ   r   r   rÆ  rÃ   rñ  rE   rL  ÚMSG_BAD_COLOR_SEQr�   r–  rc  rò  ru  )	r(   r(  r)  r  r·  rE   r�  r®   rt  s	            r)   r'  zPixmap.set_pixelz7  s7  € åð 	FÝ”? 4¤9Ô#7¸¸A¸uÑEÔEÐEØŒYˆÝ˜˜1˜bŸdšd™fœf q™jÑ)Ô)ð 	1µ¸!¸QÀÇÂÁÄÈÁ
Ñ1KÔ1Kð 	1ÝÕ/Ñ0Ô0Ð0Ø�DŠD‰FŒFˆÝ�q‘”ð 	5ð 	5ˆAØ�a”ˆAÝ˜A˜q #Ñ&Ô&ð 5Ý Õ"3Ñ4Ô4Ð4ð5åÔ'¨Ñ,Ô,ˆØ�Q‰J˜˜Q™Ñˆð		3õ ˜1‘X”Xð 3ð 3�Ø×!Ò! ! a¡%¨¨q¬Ñ2Ô2Ð2Ð2ð3ð 3r*   c                óF  — | j         }|                     ¦   «         }g }t          |¦  «        D ]D}||         }t          |dd¦  «        st	          t
          ¦  «        ‚|                     |¦  «         ŒEt          |¦  «        }t          |||¦  «        }t          |¦  «        }|S )z Set color of all pixels in bbox.r   r
  )
rÄ   rE   rL  r   rÃ   r(  rk   r¯  ÚJM_fill_pixmap_rect_with_colorrç   )	r(   r/  r  r·  rE   r¼  r�  r®   r    s	            r)   r²  zPixmap.set_rect“7  s›   € àŒYˆØ�DŠD‰FŒFˆØˆÝ�q‘”ð 	ð 	ˆAØ�a”ˆAÝ˜A˜q #Ñ&Ô&ð 5Ý Õ"3Ñ4Ô4Ð4Ø�HŠH�Q‰KŒKˆKˆKÝ Ñ%Ô%ˆÝ*¨2¨q°$Ñ7Ô7ˆÝ�!‰WŒWˆØˆ	r*   c                óž   — |dk     rt          d¦  «         dS t          j        | j        |¦  «         d| _        |                      ¦   «          dS )zgDivide width and height by 2**factor.
        E.g. factor=1 shrinks to 25% of original size (in place).r   zignoring shrink factor < 1N)r   r�   Úfz_subsample_pixmaprÄ   rc  rù  )r(   Úfactors     r)   ÚshrinkzPixmap.shrink¢7  sV   € ð �AŠ:ˆ:ÝÐ8Ñ9Ô9Ð9ØˆFÝÔ! 4¤9¨fÑ5Ô5Ð5à ˆÔØ× Ò Ñ"Ô"Ð"Ð"Ð"r*   c                ó4   — t          j        | j        ¦  «        S )zPixmap size.)r�   Úfz_pixmap_sizerÄ   r.   s    r)   r¸  zPixmap.size­7  s   € õ Ô$ d¤iÑ0Ô0Ð0r*   c                ó4   — | j                              ¦   «         S )z%Length of one image line (width * n).)rÄ   rt  r.   s    r)   rt  zPixmap.stride²7  s   € ð Œy×ÒÑ!Ô!Ð!r*   c                óˆ   — | j         r| j         j        dk    rt          d¦  «         dS t          j        | j        ||¦  «        S )z/Tint colors with modifiers for black and white.r   z(warning: colorspace invalid for functionN)rÛ  rE   rr   r�   Úfz_tint_pixmaprÄ   )r(   ÚblackÚwhites      r)   Ú	tint_withzPixmap.tint_with·7  sF   € àŒð 	 $¤/Ô"3°aÒ"7Ð"7ÝÐ>Ñ?Ô?Ð?ØˆFÝÔ# T¤Y°°uÑ=Ô=Ð=r*   c                ó4   — t          j        | j        ¦  «        S )z
The width.)r�   ro  rÄ   r.   s    r)   r   zPixmap.w¾7  r§  r*   c                óÖ   — |j         st          d¦  «        ‚t          |¦  «        }|j        |j        |j        |j        g}t          j        | j	        |||¦  «        }t          |¦  «        S )z!Return pixmap from a warped quad.zquad must be convex)Ú	is_convexrÃ   rŽ  r¤  r“  r’  r‘  r�   Úfz_warp_pixmaprÄ   r×  )r(   r  r]  rÕ  r’  r  r  s          r)   ÚwarpzPixmap.warpÃ7  s_   € àŒ~ÐF¥ZÐ0EÑ%FÔ%FÐFÝ˜DÑ!Ô!ˆØ”4˜œ˜qœt Q¤TÐ*ˆÝÔ" D¤I¨v°u¸fÑEÔEˆÝ�s‰|Œ|Ðr*   c                ó4   — t          j        | j        ¦  «        S )zx component of Pixmap origin.)r�   Úfz_pixmap_xrÄ   r.   s    r)   r(  zPixmap.xË7  ó   € õ Ô  ¤Ñ+Ô+Ð+r*   c                ó4   — | j                              ¦   «         S )zResolution in x direction.)rÄ   r  r.   s    r)   r  zPixmap.xresÐ7  ó   € ð Œy�~Š~ÑÔÐr*   c                ó4   — t          j        | j        ¦  «        S )zy component of Pixmap origin.)r�   Úfz_pixmap_yrÄ   r.   s    r)   r)  zPixmap.yÕ7  r>  r*   c                ó4   — | j                              ¦   «         S )zResolution in y direction.)rÄ   r  r.   s    r)   r  zPixmap.yresÚ7  r@  r*   c                óJ   — | j         r| j                              ¦   «          d S d S r,   r÷  r.   s    r)   r¾  zPixmap.__del__â7  rú  r*   rí	  rX  r,   )r   NN)Trà  N©rÎ  r  )Nrþ  )Nr   NN)rÌ  rþ  )5r/   r0   r1   rŒ   r)  rí   r   r¨  r6  rÜ  rÏ  r±  r·  rÛ  rc  r  r¿  rÆ  rÄ  r”  rÊ  rÑ  rE   rß  râ  ré  rë  rî  rµ  rŽ  rò  rù  rý  r)  r  rÏ  rØ  r%  r'  r²  r.  r¸  rt  r6  r   r;  r(  r  r)  r  r]  rÕ  r¾  r-   r*   r)   r×  r×  q4  s  € € € € € ðV#ð V#ð V#ðpð ð ðCð Cð Cðð ð ð*Fð Fð Fð ð0ð 0ñ „Xð0ðVð Vð Vð Vðð ð ð ð+ð +ð +ð +ð ðð ñ „Xððið ið ið ðð ñ „Xðð
1ð 1ð 1ð ð1ð 1ñ „Xð1ðð ð ð ð ð&ð &ñ „Xð&ð
 ð9ð 9ñ „Xð9ð ðð ñ „Xðð* ð
5ð 
5ñ „Xð
5ð&ð &ð &ð &ð*ð ð ð ð*ð ð ð*"ð "ð "ð$ð $ð $ð"ð ð ð$ ðð ð ñ „Xðð ð
 ð 
 ñ „Xð
 ð'ð 'ð 'ð ð6ð 6ñ „Xð6ð':ð ':ð ':ð ':ðR]ð ]ð ]ð ]ð~ð ð ð ð<"ð "ð "ðð ð ð3ð 3ð 3ð2ð ð ð	#ð 	#ð 	#ð ð1ð 1ñ „Xð1ð ð"ð "ñ „Xð"ð>ð >ð >ð ð0ð 0ñ „Xð0ðð ð ð ð,ð ,ñ „Xð,ð ð ð  ñ „Xð ð ð,ð ,ñ „Xð,ð ð ð  ñ „Xð ð €EØ€Fð'ð 'ð 'ð 'ð 'r*   r×  c                  ó¶   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdddœd	„Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ Zd„ Zed„ ¦   «         ZeZeZdS )rì  c                ód   — t          j        | j        | j        z  | j        | j        z  z   ¦  «        S r,   )rJ  rK  r(  r)  r.   s    r)   rM  zPoint.__abs__é7  s'   € ÝŒy˜œ $¤&™¨4¬6°D´F©?Ñ:Ñ;Ô;Ð;r*   c                óþ   — t          |d¦  «        r t          | j        |z   | j        |z   ¦  «        S t	          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z   | j        |d         z   ¦  «        S ©Nrj  r   úPoint: bad seq lenr   r   ©r;   rì  r(  r)  r7   rÃ   ©r(   r¢  s     r)   rT  zPoint.__add__ì7  ór   € Ý�1�kÑ"Ô"ð 	1Ý˜œ !™ T¤V¨a¡ZÑ0Ô0Ð0Ýˆq‰6Œ6�QŠ;ˆ;ÝÐ1Ñ2Ô2Ð2Ý�T”V˜a œd‘] D¤F¨Q¨q¬T¡MÑ2Ô2Ð2r*   c                óX   — t          | ¦  «        t          | ¦  «        cxk    odk    nc  S r‡   rW  r.   s    r)   rè   zPoint.__bool__ó7  rX  r*   c                óX   — t          |d¦  «        sdS t          |¦  «        dk    o| |z
   S )Nr)  Fr   rZ  rL  s     r)   r[  zPoint.__eq__ö7  s4   € Ý�q˜)Ñ$Ô$ð 	Ø�5Ý�1‰vŒv˜Š{Ð- D¨1¡H˜~Ð-r*   c                ó*   — | j         | j        f|         S r,   ©r(  r)  ré  s     r)   ra  zPoint.__getitem__û7  s   € Ø”˜œÐ Ô"Ð"r*   c                ó:   — t          t          | ¦  «        ¦  «        S r,   ©rŸ  rµ   r.   s    r)   r   zPoint.__hash__þ7  ó   € Ý•E˜$‘K”KÑ Ô Ð r*   NrQ  c               óä  — |sd| _         d| _        �nIt          |¦  «        dk    rt          d¦  «        ‚t          |¦  «        dk    r5t	          |d         ¦  «        | _         t	          |d         ¦  «        | _        nßt          |¦  «        dk    r½|d         }t          |t          j        t          j        f¦  «        r|j         | _         |j        | _        n…t          |d¦  «        st          d¦  «        ‚t          |¦  «        dk    rt          d¦  «        ‚t	          |d         ¦  «        | _         t	          |d         ¦  «        | _        nt          d¦  «        ‚|�|| _         |�	|| _        dS dS )	zÎ
        Point() - all zeros
        Point(x, y)
        Point(Point) - new copy
        Point(sequence) - from 'sequence'

        Explicit keyword args x, y override earlier settings if not None.
        rž  r   rJ  r   r   ra  zPoint: bad argsN)
r(  r)  r7   rÃ   ro  r>   r�   r&  Úfz_pointr;   )r(   r(  r)  r÷  r  s        r)   rŒ   zPoint.__init__8  sD  € ð ð 	3ØˆDŒFØˆDŒF‰FÝ�‰YŒY˜Š]ˆ]ÝÐ1Ñ2Ô2Ð2Ý�‰YŒY˜!Š^ˆ^Ý˜4 œ7‘^”^ˆDŒFÝ˜4 œ7‘^”^ˆDŒFˆFÝ�‰YŒY˜!Š^ˆ^Ø�Q”ˆAÝ˜!�eœm­U¬^Ð<Ñ=Ô=ð 	%Øœ�”Øœ�”�å˜q -Ñ0Ô0ð 8Ý$Ð%6Ñ7Ô7Ð7Ý�q‘6”6˜Q’;�;Ý$Ð%9Ñ:Ô:Ð:Ý˜q œt™œ�”Ý˜q œt™œ�”�åÐ1Ñ2Ô2Ð2Øˆ= Q˜DœFØˆ= Q˜DœF˜F˜Fˆ=ˆ=r*   c                ó   — dS ©Nr   r-   r.   s    r)   r)  zPoint.__len__#8  rk  r*   c                ó2  — t          |d¦  «        r t          | j        |z  | j        |z  ¦  «        S t          |d¦  «        r4t	          |¦  «        dk    r!| j        |d         z  | j        |d         z  z   S t          | ¦  «        }|                     |¦  «        S )Nrj  ra  r   r   r   )r;   rì  r(  r)  r7   rJ  )r(   r€  r¢  s      r)   rn  zPoint.__mul__&8  sŠ   € Ý�1�kÑ"Ô"ð 	1Ý˜œ !™ T¤V¨a¡ZÑ0Ô0Ð0Ý�1�mÑ$Ô$ð 	1­¨Q©¬°1ª¨à”6˜A˜aœD‘= 4¤6¨A¨a¬D¡=Ñ0Ð0Ý�$‰KŒKˆØ�{Š{˜1‰~Œ~Ðr*   c                ó:   — t          | j         | j         ¦  «        S r,   )rì  r(  r)  r.   s    r)   rp  zPoint.__neg__/8  s   € Ý�d”f�W˜tœv˜gÑ&Ô&Ð&r*   c                óX   — t          | ¦  «        t          | ¦  «        cxk    odk    nc  S r‡   rW  r.   s    r)   rr  zPoint.__nonzero__28  rX  r*   c                ó    — t          | ¦  «        S r,   r3  r.   s    r)   rt  zPoint.__pos__58  r  r*   c                ó@   — dt          t          | ¦  «        ¦  «        z   S )Nrì  rv  r.   s    r)   rí   zPoint.__repr__88  ó   € Ø��U 4™[œ[Ñ)Ô)Ñ)Ð)r*   c                óz   — t          |¦  «        }|dk    r|| _        n|dk    r|| _        nt          d¦  «        ‚d S )Nr   r   rx  )ro  r(  r)  rø  ry  s      r)   rz  zPoint.__setitem__;8  sC   € Ý�!‰HŒHˆØ�!ŠVˆV˜a�T”V�VØ�!ŠVˆV˜a�T”V�VåÐ1Ñ2Ô2Ð2Øˆtr*   c                óþ   — t          |d¦  «        r t          | j        |z
  | j        |z
  ¦  «        S t	          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z
  | j        |d         z
  ¦  «        S rI  rK  rL  s     r)   r|  zPoint.__sub__C8  rM  r*   c                ó  — t          |d¦  «        r&t          | j        dz  |z  | j        dz  |z  ¦  «        S t	          |¦  «        d         }|st          d¦  «        ‚t          | ¦  «        }|                     |¦  «        S r~  )r;   rì  r(  r)  r  r€  rJ  )r(   r€  rh  r¢  s       r)   r‚  zPoint.__truediv__J8  s|   € Ý�1�kÑ"Ô"ð 	7Ý˜œ "™ Q™¨¬°©°A©Ñ6Ô6Ð6Ý Ñ"Ô" 1Ô%ˆØð 	=Ý#Ð$;Ñ<Ô<Ð<Ý�$‰KŒKˆØ�{Š{˜2‰ŒÐr*   c                ó  — | j         | j         z  | j        | j        z  z   }|t          k     rt          dd¦  «        S t	          j        |¦  «        }t          t          | j         ¦  «        |z  t          | j        ¦  «        |z  ¦  «        S )z&Unit vector with positive coordinates.r   )r(  r)  r‰  rì  rJ  rK  rï  ©r(   rr  s     r)   Úabs_unitzPoint.abs_unitS8  sj   € ð ŒF�T”V‰O˜dœf t¤v™oÑ-ˆØ�wŠ;ˆ;Ý˜˜1‘:”:ÐÝŒI�a‰LŒLˆÝ•S˜œ‘[”[ 1‘_¥c¨$¬&¡k¤k°A¡oÑ6Ô6Ð6r*   c                ó”  — t          |¦  «        dk    st          d¦  «        ‚|d         }t          |¦  «        dk    rt          |¦  «        }n2t          |¦  «        dk    rt          |¦  «        }nt          d¦  «        ‚t          |¦  «        dk    r	|d         }nd}dd	d
ddœ}||         d         ||         d         z  }t	          |¦  «        t          u rt          | |z
  ¦  «        |z  S t          |j        |j        ¦  «        }||j        z  }| |v rdS | j        |j	        k    rh| j
        |j        k    r|                      |j        |¦  «        S | j
        |j        k    r|                      |j        |¦  «        S | j        |j	        z
  |z  S |j        | j        cxk    r|j	        k    r7n n4| j
        |j        k    r| j
        |j        z
  |z  S |j        | j
        z
  |z  S | j
        |j        k    r|                      |j        |¦  «        S | j
        |j        k    r|                      |j        |¦  «        S |j        | j        z
  |z  S )z.Return distance to rectangle or another point.r   z$at least one parameter must be givenr   rK  z$arg1 must be point-like or rect-liker   rZ  )rŸ  rŸ  ©rŸ  ç      R@©gR¸…ëQ@rg  ©gffffff9@rg  ©rZ  ÚinÚcmÚmmrž  )r7   rÃ   rì  r$  rÈ   rï  Útop_leftÚbottom_rightr(  r	  r)  r  Údistance_tor  Ú	top_rightr
  Úbottom_left)r(   r÷  r(  ÚunitÚurÎ  r  s          r)   rp  zPoint.distance_to\8  s6  € å�4‰yŒy˜1Š}ˆ}ÝÐCÑDÔDÐDà�ŒGˆÝˆq‰6Œ6�QŠ;ˆ;Ý�a‘”ˆAˆAÝ�‰VŒV�qŠ[ˆ[Ý�Q‘”ˆAˆAåÐCÑDÔDÐDåˆt‰9Œ9�qŠ=ˆ=Ø˜”7ˆDˆDàˆDØ (°+Øð ð  ˆàˆdŒG�AŒJ˜˜4œ œÑ#ˆå�‰7Œ7•eÐÐÝ�t˜a‘x‘=”= 1Ñ$Ð$õ �”˜QœZÑ(Ô(ˆØ�”ÑˆØ�1ˆ9ˆ9Ø�3ØŒ6�A”DŠ=ˆ=ØŒv˜œŠ~ˆ~Ø×'Ò'¨¬¸Ñ=Ô=Ð=Ø”˜1œ4’�Ø×'Ò'¨¬°TÑ:Ô:Ð:àœ ¤™¨Ñ*Ð*ØŒT�T”VÐ#Ð#Ò#Ð#˜qœtÒ#Ð#Ð#Ð#Ð#ØŒv˜œŠ~ˆ~Øœ ¤™¨Ñ*Ð*àœ˜tœv™¨Ñ*Ð*àŒv˜œŠ~ˆ~Ø×'Ò'¨¬°tÑ<Ô<Ð<Ø”˜1œ4’�Ø×'Ò'¨¬
°DÑ9Ô9Ð9àœ˜tœv™¨Ñ*Ð*r*   c                ó„   — t          |¦  «        dk    rt          d¦  «        ‚t          | |¦  «        \  | _        | _        | S )z7Replace point by its transformation with matrix-like m.rô  rQ  )r7   rÃ   Úutil_transform_pointr(  r)  rS  s     r)   rJ  zPoint.transformŽ8  s<   € åˆq‰6Œ6�QŠ;ˆ;ÝÐ2Ñ3Ô3Ð3Ý-¨d°AÑ6Ô6‰ˆŒ�”Øˆr*   c                óÞ   — | j         | j         z  | j        | j        z  z   }|t          k     rt          dd¦  «        S t	          j        |¦  «        }t          | j         |z  | j        |z  ¦  «        S )zUnit vector of the point.r   )r(  r)  r‰  rì  rJ  rK  rc  s     r)   rs  z
Point.unit•8  s^   € ð ŒF�T”V‰O˜dœf t¤v™oÑ-ˆØ�wŠ;ˆ;Ý˜˜1‘:”:ÐÝŒI�a‰LŒLˆÝ�T”V˜a‘Z ¤¨!¡Ñ,Ô,Ð,r*   )r/   r0   r1   rM  rT  rè   r[  ra  r   rŒ   r)  rn  rp  rr  rt  rí   rz  r|  r‚  r6  rd  rp  rJ  rs  rš  r›  r-   r*   r)   rì  rì  ç7  sq  € € € € € ð<ð <ð <ð3ð 3ð 3ð1ð 1ð 1ð.ð .ð .ð
#ð #ð #ð!ð !ð !ð !%¨ð  'ð  'ð  'ð  'ð  'ðDð ð ðð ð ð'ð 'ð 'ð1ð 1ð 1ðð ð ð*ð *ð *ðð ð ð3ð 3ð 3ðð ð ð ð7ð 7ñ „Xð7ð0+ð 0+ð 0+ðdð ð ð ð-ð -ñ „Xð-ð €GØ€D€D€Dr*   rì  c                  ó.  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	ddddd	œd
„Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         Zd„ ZeZ ed„ ¦  «        Z ed„ ¦  «        ZdS )rû  c                ó†   — | j         rdS t          | j        | j        z
  ¦  «        t          | j        | j        z
  ¦  «        z  S ©Nrž  )rY	  rï  r¤  r“  r‘  r.   s    r)   rM  zQuad.__abs__¤8  s>   € ØŒ=ð 	Ø�3Ý�4”7˜TœWÑ$Ñ%Ô%­¨D¬G°d´gÑ,=Ñ(>Ô(>Ñ>Ð>r*   c                ó^  — t          |d¦  «        r2t          | j        |z   | j        |z   | j        |z   | j        |z   ¦  «        S t          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z   | j        |d         z   | j        |d         z   | j        |d         z   ¦  «        S ©Nrj  rK  úQuad: bad seq lenr   r   r   r   ©r;   rû  r¤  r“  r‘  r’  r7   rÃ   ©r(   r’  s     r)   rT  zQuad.__add__©8  óœ   € Ý�1�kÑ"Ô"ð 	LÝ˜œ !™ T¤W¨q¡[°$´'¸A±+¸t¼wÈ¹{ÑKÔKÐKÝˆq‰6Œ6�QŠ;ˆ;ÝÐ0Ñ1Ô1Ð1Ý�D”G˜a œd‘N D¤G¨a°¬d¡N°D´G¸aÀ¼d±NÀDÄGÈaÐPQÌdÁNÑSÔSÐSr*   c                ó   — | j          S r,   ©rY	  r.   s    r)   rè   zQuad.__bool__°8  ó   € Ø”=Ð Ð r*   c                óä  — 	 |                      ¦   «         }n*# t          $ r t          dk    rt          ¦   «          Y dS w xY w|dk    rt	          || ¦  «        S |dk    rdS t          |¦  «        rFt          |¦  «        j        rdS t	          |d d…         | ¦  «        ot	          |dd …         | ¦  «        S t          |¦  «        r-t          d¦  «        D ]}t	          ||         | ¦  «        s dS ŒdS dS )Nr   Fr   rK  T)
r)  rg   r
  rv   Úutil_point_in_quadÚ	CheckRectr$  rY	  Ú	CheckQuadrL  )r(   r(  r  r®   s       r)   rÖ  zQuad.__contains__³8  s  € ð	Ø—	’	‘”ˆAˆAøÝð 	ð 	ð 	Ý# aÒ'Ð'­NÑ,<Ô,<Ð,<Ø�5�5ð	øøøð �Š6ˆ6Ý% a¨Ñ.Ô.Ð.Ø�Š6ˆ6Ø�5Ý�Q‰<Œ<ð 	WÝ�A‰wŒwÔð Ø�tÝ% a¨¨¨¤e¨TÑ2Ô2ÐVÕ7IÈ!ÈAÈBÈBÌ%ÐQUÑ7VÔ7VÐVÝ�Q‰<Œ<ð 	Ý˜1‘X”Xð !ð !�Ý)¨!¨A¬$°Ñ5Ô5ð !Ø ˜5˜5ð!à�4Øˆus   ‚ —#>½>c                óÔ   — t          |d¦  «        sdS t          |¦  «        dk    oC| j        |d         k    o2| j        |d         k    o!| j        |d         k    o| j        |d         k    S ©Nr)  FrK  r   r   r   r   )r;   r7   r¤  r“  r‘  r’  )r(   r  s     r)   r[  zQuad.__eq__È8  sy   € Ý�t˜YÑ'Ô'ð 	Ø�5Ý�4‰yŒy˜AŠ~ð 
ØŒG�t˜A”wÒð ØŒG�t˜A”wÒðàŒG�t˜A”wÒðð ŒG�t˜A”wÒð		
r*   c                óB   — | j         | j        | j        | j        f|         S r,   ©r¤  r“  r‘  r’  ré  s     r)   ra  zQuad.__getitem__Ò8  ó   € Ø”˜œ $¤'¨4¬7Ð3°AÔ6Ð6r*   c                ó:   — t          t          | ¦  «        ¦  «        S r,   rS  r.   s    r)   r   zQuad.__hash__Õ8  rT  r*   Nr‹  c               ó$  — |s*t          ¦   «         x| _        x| _        x| _        | _        �n‰t          |¦  «        dk    rt          d¦  «        ‚t          |¦  «        dk    r0t          t           |¦  «        \  | _        | _        | _        | _        �n$t          |¦  «        dk    �r|d         }t          |t          j
        ¦  «        ro|| _        t          |j        ¦  «        t          |j        ¦  «        t          |j        ¦  «        t          |j        ¦  «        f\  | _        | _        | _        | _        nt          |d¦  «        st          d¦  «        ‚t          |¦  «        dk    rt          d¦  «        ‚t          t           |¦  «        \  | _        | _        | _        | _        nt          d¦  «        ‚|�t          |¦  «        | _        |�t          |¦  «        | _        |�t          |¦  «        | _        |�t          |¦  «        | _        dS dS )zð
        Quad() - all zero points
        Quad(ul, ur, ll, lr)
        Quad(quad) - new copy
        Quad(sequence) - from 'sequence'

        Explicit keyword args ul, ur, ll, lr override earlier settings if not
        None.
    
        rK  r}  r   r   ra  zQuad: bad argsN)rì  r¤  r“  r‘  r’  r7   rÃ   rÝ  r>   r�   ÚFzQuadrÄ   r;   )r(   r¤  r“  r‘  r’  r÷  r  s          r)   rŒ   zQuad.__init__Ø8  s´  € ð ð 	/Ý49±G´GÐ;ˆDŒGÐ;�d”gÐ; ¤¨$¬'©'Ý�‰YŒY˜Š]ˆ]ÝÐ0Ñ1Ô1Ð1Ý�‰YŒY˜!Š^ˆ^Ý14µU¸DÑ1AÔ1AÑ.ˆDŒG�T”W˜dœg t¤w¡wÝ�‰YŒY˜!Š^‰^Ø�Q”ˆAÝ˜!�Uœ\Ñ*Ô*ð CØ�”	Ý5:¸1¼4±[´[Å%ÈÌÁ+Ä+ÍuÐUVÔUYÉ{Ì{Õ\aÐbcÔbfÑ\gÔ\gÐ5gÑ2�”˜œ $¤'¨4¬7¨7Ý˜Q Ñ.Ô.ð CÝ Ð!1Ñ2Ô2Ð2Ý�Q‘”˜1’�Ý Ð!4Ñ5Ô5Ð5å58½À±]´]Ñ2�”˜œ $¤'¨4¬7¨7åÐ-Ñ.Ô.Ð.Øˆ>¥e¨B¡i¤i˜DœGØˆ>¥e¨B¡i¤i˜DœGØˆ>¥e¨B¡i¤i˜DœGØˆ>¥e¨B¡i¤i˜DœG˜G˜Gˆ>ˆ>r*   c                ó   — dS ©NrK  r-   r.   s    r)   r)  zQuad.__len__û8  rk  r*   c                óN   — t          | ¦  «        }|                     |¦  «        }|S r,   )rû  rJ  )r(   r€  r’  s      r)   rn  zQuad.__mul__þ8  s!   € Ý�‰JŒJˆØ�KŠK˜‰NŒNˆØˆr*   c                óV   — t          | j         | j         | j         | j         ¦  «        S r,   )rû  r¤  r“  r‘  r’  r.   s    r)   rp  zQuad.__neg__9  ó&   € Ý�T”W�H˜tœw˜h¨¬¨°4´7°(Ñ;Ô;Ð;r*   c                ó   — | j          S r,   r‚  r.   s    r)   rr  zQuad.__nonzero__9  rƒ  r*   c                ó    — t          | ¦  «        S r,   )rû  r.   s    r)   rt  zQuad.__pos__	9  ó   € Ý�D‰zŒzÐr*   c                ó@   — dt          t          | ¦  «        ¦  «        z   S )Nrû  rv  r.   s    r)   rí   zQuad.__repr__9  ó   € Ø��E $™KœKÑ(Ô(Ñ(Ð(r*   c                óü   — |dk    rt          |¦  «        | _        n`|dk    rt          |¦  «        | _        nE|dk    rt          |¦  «        | _        n*|dk    rt          |¦  «        | _        nt          d¦  «        ‚d S ©Nr   r   r   r   rx  )rì  r¤  r“  r‘  r’  rø  ry  s      r)   rz  zQuad.__setitem__9  sr   € Ø�!ŠVˆV�u Q™xœx�T”W�WØ�!ŠVˆV�u Q™xœx�T”W�WØ�!ŠVˆV�u Q™xœx�T”W�WØ�!ŠVˆV�u Q™xœx�T”W�WåÐ1Ñ2Ô2Ð2Øˆtr*   c                ó^  — t          |d¦  «        r2t          | j        |z
  | j        |z
  | j        |z
  | j        |z
  ¦  «        S t          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z
  | j        |d         z
  | j        |d         z
  | j        |d         z
  ¦  «        S r|  r~  r  s     r)   r|  zQuad.__sub__9  r€  r*   c                óÆ   — t          |d¦  «        rd|z  }n&t          |¦  «        d         }|st          d¦  «        ‚t          | ¦  «        }|                     |¦  «        }|S )Nrj  rŸ  r   zMatrix not invertible)r;   r  r€  rû  rJ  )r(   r€  rQ  r’  s       r)   r‚  zQuad.__truediv__9  si   € Ý�1�kÑ"Ô"ð 	AØ�a‘ˆBˆBå# AÑ&Ô& qÔ)ˆBØð AÝ'Ð(?Ñ@Ô@Ð@Ý�‰JŒJˆØ�KŠK˜‰OŒOˆØˆr*   c                ó  — t          | j        | j        ¦  «        }| j        |z  }| j        |z  }|j        |j        z  dk    rdS t          | j        | j        ¦  «        }| j        |z  }| j        |z  }|j        |j        z  dk    rdS dS )zêCheck if quad is convex and not degenerate.

        Notes:
            Check that for the two diagonals, the other two corners are not
            on the same side of the diagonal.
        Returns:
            True or False.
        r   FT)Úplanish_liner¤  r’  r‘  r“  r)  )r(   r€  r  r  s       r)   r9  zQuad.is_convex*9  s‡   € õ ˜œ $¤'Ñ*Ô*ˆØŒW�q‰[ˆØŒW�q‰[ˆØŒ4�"”$‰;˜Š?ˆ?Ø�5Ý˜œ $¤'Ñ*Ô*ˆØŒW�q‰[ˆØŒW�q‰[ˆØŒ4�"”$‰;˜Š?ˆ?Ø�5Øˆtr*   c                óB   — | j         t          k     p| j        t          k     S )zsCheck whether all quad corners are on the same line.

        This is the case if width or height is zero.
        )r]  r‰  rÕ  r.   s    r)   rY	  zQuad.is_empty@9  s   € ð Œz�GÒ#Ð< t¤{µWÒ'<Ð<r*   c                ó   — | j         j        S )z(Check whether this is the infinite quad.)r÷   rZ	  r.   s    r)   rZ	  zQuad.is_infiniteH9  s   € ð ŒyÔ$Ð$r*   c                ót  — t          | j        | j        | j        ¦  «        }t	          |dz
  ¦  «        t
          k    rdS t          | j        | j        | j        ¦  «        }t	          |dz
  ¦  «        t
          k    rdS t          | j        | j        | j        ¦  «        }t	          |dz
  ¦  «        t
          k    rdS dS )zïCheck if quad is rectangular.

        Notes:
            Some rotation matrix can thus transform it into a rectangle.
            This is equivalent to three corners enclose 90 degrees.
        Returns:
            True or False.
        r   FT)Úutil_sine_betweenr¤  r“  r’  rï  r‰  r‘  )r(   Úsines     r)   Úis_rectangularzQuad.is_rectangularM9  sœ   € õ ! ¤¨$¬'°4´7Ñ;Ô;ˆÝˆt�a‰x‰=Œ=�7Ò"Ð"Ø�5å  ¤¨$¬'°4´7Ñ;Ô;ˆÝˆt�a‰x‰=Œ=�7Ò"Ð"Ø�5å  ¤¨$¬'°4´7Ñ;Ô;ˆÝˆt�a‰x‰=Œ=�7Ò"Ð"Ø�5àˆtr*   c                ó¤   — | j         rt          ¦   «         S t          dd¦  «                             |j        |j        ¦  «        }| | z  |z  |z  }|S )zSMorph the quad with matrix-like 'm' and point-like 'p'.

        Return a new quad.r   )rZ	  ÚINFINITE_QUADru  r˜  r(  r)  )r(   r¢  r€  Údeltar’  s        r)   rð  z
Quad.morphf9  sT   € ð Ôð 	#Ý ‘?”?Ð"Ý�q˜!‘”×)Ò)¨!¬#¨q¬sÑ3Ô3ˆØ�E�6‰M˜AÑ Ñ%ˆØˆr*   c                ó  — t          ¦   «         }t          | j        j        | j        j        | j        j        | j        j        ¦  «        |_        t          | j        j        | j        j        | j        j        | j        j        ¦  «        |_	        t          | j        j        | j        j        | j        j        | j        j        ¦  «        |_        t          | j        j        | j        j        | j        j        | j        j        ¦  «        |_        |S r,   )r$  rÜ  r¤  r(  r“  r’  r‘  r
  r)  r  rê  r	  r  ©r(   r  s     r)   r÷   z	Quad.rectp9  s¤   € å‰FŒFˆÝ�4”7”9˜dœgœi¨¬¬°D´G´IÑ>Ô>ˆŒÝ�4”7”9˜dœgœi¨¬¬°D´G´IÑ>Ô>ˆŒÝ�4”7”9˜dœgœi¨¬¬°D´G´IÑ>Ô>ˆŒÝ�4”7”9˜dœgœi¨¬¬°D´G´IÑ>Ô>ˆŒØˆr*   c                óì   — t          |d¦  «        rn"t          |¦  «        dk    rt          d¦  «        ‚| xj        |z  c_        | xj        |z  c_        | xj        |z  c_        | xj        |z  c_        | S )z1Replace quad by its transformation with matrix m.rj  rô  rQ  )r;   r7   rÃ   r¤  r“  r‘  r’  rS  s     r)   rJ  zQuad.transformy9  sv   € å�1�kÑ"Ô"ð 	4ØÝ�‰VŒV�qŠ[ˆ[ÝÐ2Ñ3Ô3Ð3ØˆŒ�1‰ˆŒØˆŒ�1‰ˆŒØˆŒ�1‰ˆŒØˆŒ�1‰ˆŒØˆr*   c                óŠ   — t          t          | j        | j        z
  ¦  «        t          | j        | j        z
  ¦  «        ¦  «        S r,   )rê  rï  r¤  r“  r‘  r’  r.   s    r)   r­	  zQuad.<lambda>†9  ó2   € ¥3¥s¨4¬7°T´WÑ+<Ñ'=Ô'=½sÀ4Ä7ÈTÌWÑCTÑ?UÔ?UÑ#VÔ#V€ r*   c                óŠ   — t          t          | j        | j        z
  ¦  «        t          | j        | j        z
  ¦  «        ¦  «        S r,   )rê  rï  r¤  r‘  r“  r’  r.   s    r)   r­	  zQuad.<lambda>‡9  r­  r*   )r/   r0   r1   rM  rT  rè   rÖ  r[  ra  r   rŒ   r)  rn  rp  rr  rt  rí   rz  r|  r‚  r6  r9  rY	  rZ	  r¥  rð  r÷   rJ  rš  r]  rÕ  r-   r*   r)   rû  rû  ¢8  sû  € € € € € ð?ð ?ð ?ð
Tð Tð Tð!ð !ð !ðð ð ð*
ð 
ð 
ð7ð 7ð 7ð!ð !ð !ð "&¨$°4¸Dð !0ð !0ð !0ð !0ð !0ðFð ð ðð ð ð
<ð <ð <ð!ð !ð !ðð ð ð)ð )ð )ðð ð ðTð Tð Tð	ð 	ð 	ð ðð ñ „Xðð* ð=ð =ñ „Xð=ð ð%ð %ñ „Xð%ð ðð ñ „Xðð0ð ð ð ðð ñ „Xðð
ð 
ð 
ð €GØˆXÐVÐVÑWÔW€EØˆXÐVÐVÑWÔW€F€F€Fr*   rû  c                  óà  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	d	d	d	d	d	d
œd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         Zd.d„Zd„ Zd„ Zd„ Zd „ Zed!„ ¦   «         Z ed"„ ¦   «         Z!ed#„ ¦   «         Z"d$„ Z#d%„ Z$d&„ Z%ed'„ ¦   «         Z&d(„ Z'ed)„ ¦   «         Z(ed*„ ¦   «         Z)d+„ Z*d,„ Z+ed-„ ¦   «         Z,eZ-eZ.eZ/ ee'¦  «        Z0e(Z1e)Z2d	S )/r$  c                ó`   — | j         s| j        rdS | j        | j        z
  | j        | j        z
  z  S rz  )rY	  rZ	  r	  r
  r  r  r.   s    r)   rM  zRect.__abs__Œ9  s8   € ØŒ=ð 	˜DÔ,ð 	Ø�3Ø”˜$œ'Ñ! d¤g°´Ñ&7Ñ8Ð8r*   c                ó^  — t          |d¦  «        r2t          | j        |z   | j        |z   | j        |z   | j        |z   ¦  «        S t          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z   | j        |d         z   | j        |d         z   | j        |d         z   ¦  «        S ©Nrj  rK  úRect: bad seq lenr   r   r   r   ©r;   r$  r
  r  r	  r  r7   rÃ   rL  s     r)   rT  zRect.__add__‘9  r€  r*   c                ó¦   — t          |d¦  «        st          d¦  «        ‚t          |¦  «        }t          | ¦  «        }|                     |¦  «        S )Nr)  úbad operand 2)r;   rÃ   r$  Ú	intersect)r(   r(  rl  r  s       r)   Ú__and__zRect.__and__˜9  sH   € Ý�q˜)Ñ$Ô$ð 	.Ý˜_Ñ-Ô-Ð-å�!‰WŒWˆÝ�‰JŒJˆØ�{Š{˜2‰ŒÐr*   c                óX   — t          | ¦  «        t          | ¦  «        cxk    odk    nc  S r‡   rW  r.   s    r)   rè   zRect.__bool__ 9  rX  r*   c                ó  — t          |d¦  «        r|t          | ¦  «        v S t          |¦  «        }|dk    rt          || ¦  «        S |dk    r²t	          ¦   «         }	 t          |¦  «        }n=# t          $ r0 t          dk    rt          ¦   «          t          |¦  «        j
        }Y nw xY w| j        |j        cxk    o|j        cxk    o
| j        k    nc o*| j        |j        cxk    o|j        cxk    o
| j        k    nc S dS )Nrj  r   rK  r   F)r;   rµ   r7   Úutil_is_point_in_rectÚINFINITE_RECTr$  rg   r
  rv   rû  r÷   r
  r	  r  r  )r(   r(  r  r  s       r)   rÖ  zRect.__contains__£9  s*  € Ý�1�kÑ"Ô"ð 	$Ø�˜d™œÐ#Ð#Ý�‰FŒFˆØ�Š6ˆ6Ý(¨¨DÑ1Ô1Ð1Ø�Š6ˆ6Ý‘”ˆAð!Ý˜‘G”G��øÝð !ð !ð !Ý'¨!Ò+Ð+µÑ0@Ô0@Ð0@Ý˜‘G”G”L���ð!øøøð ”G˜qœtÐ6Ð6Ò6Ð6 q¤tÐ6Ð6Ò6Ð6¨t¬wÒ6Ð6Ð6Ð6ð 7Ø”G˜qœtÐ6Ð6Ò6Ð6 q¤tÐ6Ð6Ò6Ð6¨t¬wÒ6Ð6Ð6Ð6ð8àˆus   ÁA, Á,7B&Â%B&c                óX   — t          |d¦  «        sdS t          |¦  «        dk    o| |z
   S )Nr)  FrK  rZ  r  s     r)   r[  zRect.__eq__´9  s5   € Ý�t˜YÑ'Ô'ð 	Ø�5Ý�4‰yŒy˜AŠ~Ð3 t¨d¡{Ð"3Ð3r*   c                óB   — | j         | j        | j        | j        f|         S r,   ©r
  r  r	  r  ré  s     r)   ra  zRect.__getitem__¹9  rŒ  r*   c                ó:   — t          t          | ¦  «        ¦  «        S r,   rS  r.   s    r)   r   zRect.__hash__¼9  rT  r*   N©r€  r  r
  r  r	  r  c          
     óÒ   — t          |||||||dœŽ\  }}}}t          |¦  «        | _        t          |¦  «        | _        t          |¦  «        | _        t          |¦  «        | _        dS )aa  
        Rect() - all zeros
        Rect(x0, y0, x1, y1)
        Rect(top-left, x1, y1)
        Rect(x0, y0, bottom-right)
        Rect(top-left, bottom-right)
        Rect(Rect or IRect) - new copy
        Rect(sequence) - from 'sequence'
    
        Explicit keyword args p0, p1, x0, y0, x1, y1 override earlier settings
        if not None.
        rÁ  N)Úutil_make_rectro  r
  r  r	  r  ©r(   r€  r  r
  r  r	  r  r÷  s           r)   rŒ   zRect.__init__¿9  sa   € õ (¨$°2¸"ÀÈÈrÐVXÐYÐYÐY‰ˆˆB��BÝ˜‘*”*ˆŒÝ˜‘*”*ˆŒÝ˜‘*”*ˆŒÝ˜‘*”*ˆŒˆˆr*   c                ó   — dS r‘  r-   r.   s    r)   r)  zRect.__len__Ò9  rk  r*   c                óÒ   — t          |d¦  «        r2t          | j        |z  | j        |z  | j        |z  | j        |z  ¦  «        S t          | ¦  «        }|                     |¦  «        }|S )Nrj  )r;   r$  r
  r  r	  r  rJ  )r(   r€  r  s      r)   rn  zRect.__mul__Õ9  s`   € Ý�1�kÑ"Ô"ð 	LÝ˜œ !™ T¤W¨q¡[°$´'¸A±+¸t¼wÈ¹{ÑKÔKÐKÝ�‰JŒJˆØ�KŠK˜‰NŒNˆØˆr*   c                óV   — t          | j         | j         | j         | j         ¦  «        S r,   )r$  r
  r  r	  r  r.   s    r)   rp  zRect.__neg__Ü9  r”  r*   c                óX   — t          | ¦  «        t          | ¦  «        cxk    odk    nc  S r‡   rW  r.   s    r)   rr  zRect.__nonzero__ß9  rX  r*   c                ó  — t          |d¦  «        st          d¦  «        ‚t          | ¦  «        }t          |¦  «        dk    r|                     |¦  «        S t          |¦  «        dk    r|                     |¦  «        S t          d¦  «        ‚)Nr)  r¶  r   rK  )r;   rÃ   r$  r7   Úinclude_pointÚinclude_rect)r(   r(  r  s      r)   Ú__or__zRect.__or__â9  s}   € Ý�q˜)Ñ$Ô$ð 	.Ý˜_Ñ-Ô-Ð-Ý�‰JŒJˆÝˆq‰6Œ6�QŠ;ˆ;Ø—?’? 1Ñ%Ô%Ð%Ýˆq‰6Œ6�QŠ;ˆ;Ø—>’> !Ñ$Ô$Ð$Ý˜Ñ)Ô)Ð)r*   c                ó    — t          | ¦  «        S r,   rO  r.   s    r)   rt  zRect.__pos__ì9  r—  r*   c                ó@   — dt          t          | ¦  «        ¦  «        z   S )Nr$  rv  r.   s    r)   rí   zRect.__repr__ï9  r™  r*   c                ó²   — t          |¦  «        }|dk    r|| _        n9|dk    r|| _        n+|dk    r|| _        n|dk    r|| _        nt          d¦  «        ‚d S r›  )ro  r
  r  r	  r  rø  ry  s      r)   rz  zRect.__setitem__ò9  se   € Ý�!‰HŒHˆØ�!ŠVˆV˜q�T”W�WØ�!ŠVˆV˜q�T”W�WØ�!ŠVˆV˜q�T”W�WØ�!ŠVˆV˜q�T”W�WåÐ1Ñ2Ô2Ð2Øˆtr*   c                ó^  — t          |d¦  «        r2t          | j        |z
  | j        |z
  | j        |z
  | j        |z
  ¦  «        S t          |¦  «        dk    rt          d¦  «        ‚t          | j        |d         z
  | j        |d         z
  | j        |d         z
  | j        |d         z
  ¦  «        S r²  r´  rL  s     r)   r|  zRect.__sub__ü9  r€  r*   c                ó<  — t          |d¦  «        r>t          | j        dz  |z  | j        dz  |z  | j        dz  |z  | j        dz  |z  ¦  «        S t          |¦  «        d         }|st          d|› �¦  «        ‚t          | ¦  «        }|                     |¦  «        }|S )Nrj  rŸ  r   zMatrix not invertible: )	r;   r$  r
  r  r	  r  r  r€  rJ  )r(   r€  rQ  r  s       r)   r‚  zRect.__truediv__:  s¤   € Ý�1�kÑ"Ô"ð 	XÝ˜œ "™ Q™¨¬°"©°Q©¸¼À"¹ÀQ¹ÈÌÐRTÉÐUVÉÑWÔWÐWÝ Ñ"Ô" 1Ô%ˆØð 	CÝ#Ð$A¸aÐ$AÐ$AÑBÔBÐBÝ�‰JŒJˆØ�KŠK˜‰OŒOˆØˆr*   c                ó6   — t          | j        | j        ¦  «        S ©zBottom-left corner.©rì  r
  r  r.   s    r)   rr  zRect.bottom_left:  ó   € õ �T”W˜dœgÑ&Ô&Ð&r*   c                ó6   — t          | j        | j        ¦  «        S ©zBottom-right corner.©rì  r	  r  r.   s    r)   ro  zRect.bottom_right:  rÕ  r*   c                ó,   — |                       |¦  «        S )z.Check if containing point-like or rect-like x.©rÖ  r¡  s     r)   ÚcontainszRect.contains:  ó   € à× Ò  Ñ#Ô#Ð#r*   c                ó<   — t          d| j        | j        z
  ¦  «        S r‡   ©rê  r  r  r.   s    r)   rÕ  zRect.height:  ó   € å�1�d”g ¤Ñ'Ñ(Ô(Ð(r*   rÎ  ro  c                ó8   — t          | j        | j        |¦  «        S ©zUCalculate area of rectangle.
parameter is one of 'px' (default), 'in', 'cm', or 'mm'.©Ú
_rect_arear]  rÕ  r>  s     r)   Úget_areazRect.get_area:  ó   € å˜$œ* d¤k°4Ñ8Ô8Ð8r*   c                óœ   — t          |¦  «        dk    rt          d¦  «        ‚t          | |¦  «        \  | _        | _        | _        | _        | S )zExtend to include point-like p.r   rJ  )r7   rÃ   Úutil_include_point_in_rectr
  r  r	  r  rL  s     r)   rÊ  zRect.include_point#:  sE   € åˆq‰6Œ6�QŠ;ˆ;ÝÐ1Ñ2Ô2Ð2Ý-GÈÈaÑ-PÔ-PÑ*ˆŒ�”˜$œ' 4¤7Øˆr*   c                óÆ  — t          |¦  «        dk    rt          d¦  «        ‚t          |¦  «        }|j        s| j        r4t          t          t
          t
          f\  | _        | _        | _        | _	        nm|j
        r| S | j
        r4|j        |j        |j        |j	        f\  | _        | _        | _        | _	        n)t          | |¦  «        \  | _        | _        | _        | _	        | S )zExtend to include rect-like r.rK  r³  )r7   rÃ   r$  rZ	  rz  r{  r
  r  r	  r  rY	  Úutil_union_rectrª  s     r)   rË  zRect.include_rect*:  sÍ   € åˆq‰6Œ6�QŠ;ˆ;ÝÐ0Ñ1Ô1Ð1Ý�‰GŒGˆØŒ=ð 	J˜DÔ,ð 	JÝ1@Å/ÕSbÕdsÐ1sÑ.ˆDŒG�T”W˜dœg t¤w wØŒZð 	JØˆKØŒ]ð 	JØ12´°q´t¸Q¼TÀ1Ä4Ð1GÑ.ˆDŒG�T”W˜dœg t¤w wå1@ÀÀqÑ1IÔ1IÑ.ˆDŒG�T”W˜dœg t¤wØˆr*   c                óÊ  — t          |¦  «        dk    st          d¦  «        ‚t          |¦  «        }|j        r| S | j        r4|j        |j        |j        |j        f\  | _        | _        | _        | _        nm|j        r4|j        |j        |j        |j        f\  | _        | _        | _        | _        n2| j        r| S t          | |¦  «        \  | _        | _        | _        | _        | S )z)Restrict to common rect with rect-like r.rK  r³  )
r7   rÃ   r$  rZ	  r
  r  r	  r  rY	  Úutil_intersect_rectrª  s     r)   r·  zRect.intersect9:  sÙ   € å�1‰vŒv˜Š{ˆ{ÝÐ0Ñ1Ô1Ð1Ý�‰GŒGˆØŒ=ð 		NØˆKØÔð 	NØ12´°q´t¸Q¼TÀ1Ä4Ð1GÑ.ˆDŒG�T”W˜dœg t¤w wØŒZð 	NØ12´°q´t¸Q¼TÀ1Ä4Ð1GÑ.ˆDŒG�T”W˜dœg t¤w wØŒ]ð 	NØˆKå1DÀTÈ1Ñ1MÔ1MÑ.ˆDŒG�T”W˜dœg t¤wØˆr*   c                óâ   — t          |¦  «        }	 | j         oW| j         oO|j         oG|j         o?| j        |j        k     o/|j        | j        k     o| j        |j        k     o|j        | j        k     S )z4Check if intersection with rectangle x is not empty.)r$  rY	  rZ	  r
  r	  r  r  )r(   r(  Úrect2s      r)   Ú
intersectszRect.intersectsJ:  s˜   € å�Q‘”ˆð'ØœÐ%ð'àÔ(Ð(ð'ð œÐ&ð'ð Ô)Ð)ð	'ð
 ”G˜eœhÒ&ð'ð ”H˜tœwÒ&ð'ð ”G˜eœhÒ&ð'ð ”H˜tœwÒ&ð		r*   c                óB   — | j         | j        k    p| j        | j        k    S ©z True if rectangle area is empty.rz  r.   s    r)   rY	  zRect.is_emptyX:  ó!   € ð Œw˜$œ'Ò!Ð7 T¤W°´Ò%7Ð7r*   c                ó~   — | j         | j        cxk    o
t          k    nc o| j        | j        cxk    o
t
          k    nc S )z'True if this is the infinite rectangle.©r
  r  rz  r	  r  r{  r.   s    r)   rZ	  zRect.is_infinite]:  óO   € ð Œw˜$œ'Ð4Ð4Ò4Ð4¥_Ò4Ð4Ð4Ð4Ð^¸¼ÀDÄGÐ9^Ð9^Ò9^Ð9^ÍÒ9^Ð9^Ð9^Ð9^Ð^r*   c                óB   — | j         | j        k    o| j        | j        k    S ©zTrue if rectangle is valid.rz  r.   s    r)   Úis_validzRect.is_validb:  ó!   € ð Œw˜$œ'Ò!Ð8 d¤g°´Ò&8Ð8r*   c                ób   — | j         rt          ¦   «         S | j                             ||¦  «        S ©zGMorph with matrix-like m and point-like p.

        Returns a new quad.©rZ	  r§  r  rð  ©r(   r¢  r€  s      r)   rð  z
Rect.morphg:  ó/   € ð Ôð 	#Ý ‘?”?Ð"ØŒy�Š˜q !Ñ$Ô$Ð$r*   c                óX   — t          j        t          d„ | D ¦   «         ¦  «        ¦  «        S )Nc                ó   — g | ]}||z  ‘ŒS r-   r-   rG  s     r)   r¯   zRect.norm.<locals>.<listcomp>p:  rH  r*   rI  r.   s    r)   r›  z	Rect.normo:  rN  r*   c                óª   — | j         | j        k     r| j         | j        c| _        | _         | j        | j        k     r| j        | j        c| _        | _        | S )z*Replace rectangle with its finite version.rk  r.   s    r)   r4  zRect.normalizer:  óM   € àŒ7�T”WÒÐØ#œw¨¬ÐˆDŒG�T”WØŒ7�T”WÒÐØ#œw¨¬ÐˆDŒG�T”WØˆr*   c                óN   — t          | j        | j        | j        | j        ¦  «        S ©z!Return Quad version of rectangle.©rû  rí  r4  r–  rî  r.   s    r)   r  z	Rect.quadz:  ó    € õ �D”G˜TœW d¤g¨t¬wÑ7Ô7Ð7r*   c                ó:   — t          t          | ¦  «        ¦  «        S )zReturn the IRect.)re  Úutil_round_rectr.   s    r)   r`  z
Rect.round:  s   € å•_ TÑ*Ô*Ñ+Ô+Ð+r*   c                ó6   — t          | j        | j        ¦  «        S ©zTop-left corner.©rì  r
  r  r.   s    r)   rn  zRect.top_leftƒ:  rÕ  r*   c                ó6   — t          | j        | j        ¦  «        S ©zTop-right corner.©rì  r	  r  r.   s    r)   rq  zRect.top_rightˆ:  rÕ  r*   c           	     óJ  — t          |¦  «        }| j        s| j        s|j        s|j        rt          d¦  «        ‚t	          dddd| j         | j         ¦  «        t	          |j        | j        z  |j        | j        z  ¦  «        z  t	          dddd|j        |j        ¦  «        z  S ©z+Return matrix that converts to target rect.z'rectangles must be finite and not emptyr   r   ©	r$  rZ	  rY	  rÃ   ru  r
  r  r]  rÕ  rª  s     r)   ÚtorectzRect.torect�:  s­   € õ �‰GŒGˆØÔð 	H˜tœ}ð 	H°´ð 	HÀÄð 	HÝÐFÑGÔGÐGå�1�a˜˜A ¤˜x¨$¬'¨Ñ2Ô2Ý�Q”W˜tœzÑ)¨1¬8°d´kÑ+AÑBÔBñCå�Q˜˜1˜a ¤ q¤tÑ,Ô,ñ-ð	
r*   c                óœ   — t          |¦  «        dk    st          d¦  «        ‚t          | |¦  «        \  | _        | _        | _        | _        | S )z1Replace with the transformation by matrix-like m.rô  rQ  )r7   rÃ   Úutil_transform_rectr
  r  r	  r  rS  s     r)   rJ  zRect.transform™:  sE   € å�1‰vŒv˜Š{ˆ{ÝÐ2Ñ3Ô3Ð3Ý-@ÀÀqÑ-IÔ-IÑ*ˆŒ�”˜$œ' 4¤7Øˆr*   c                ó<   — t          d| j        | j        z
  ¦  «        S r‡   ©rê  r	  r
  r.   s    r)   r]  z
Rect.width :  rß  r*   ©rÎ  ro  )3r/   r0   r1   rM  rT  r¸  rè   rÖ  r[  ra  r   rŒ   r)  rn  rp  rr  rÌ  rt  rí   rz  r|  r‚  r6  rr  ro  rÛ  rÕ  rä  rÊ  rË  r·  rî  rY	  rZ	  r÷  rð  r›  r4  r  r`  rn  rq  r  rJ  r]  rš  r–  rî  r”  rí  r4  r-   r*   r)   r$  r$  Š9  s<  € € € € € ð9ð 9ð 9ð
Tð Tð Tðð ð ð1ð 1ð 1ðð ð ð"4ð 4ð 4ð
7ð 7ð 7ð!ð !ð !ð "&¨$°4¸DÀTÈdð ð ð ð ð ð&ð ð ðð ð ð<ð <ð <ð1ð 1ð 1ð*ð *ð *ðð ð ð)ð )ð )ðð ð ðTð Tð Tðð ð ð ð'ð 'ñ „Xð'ð ð'ð 'ñ „Xð'ð$ð $ð $ð ð)ð )ñ „Xð)ð9ð 9ð 9ð 9ðð ð ðð ð ðð ð ð"ð ð ð ð8ð 8ñ „Xð8ð ð_ð _ñ „Xð_ð ð9ð 9ñ „Xð9ð%ð %ð %ð3ð 3ð 3ðð ð ð ð8ð 8ñ „Xð8ð,ð ,ð ,ð ð'ð 'ñ „Xð'ð ð'ð 'ñ „Xð'ð

ð 

ð 

ðð ð ð ð)ð )ñ „Xð)ð €Gà	€BØ	€BØˆH�U‰OŒO€EØ	€BØ	€B€B€Br*   r$  c                  ó(  — e Zd ZdZed„ ¦   «         Zd[d„Zd„ Zd\d„Zd]d„Z	d^d„Z
d_d„Zd`d„Zdad„Z	 dbdcd „Zd!d"œddd%„Zded(„Z	 dfdgd+„Z	 dfd\d,„Zd-d!d.d!d/d/d!d!d/d0d1d/d!d1d1d/d2œdhdJ„Zd/d0d!d/d1d1d!d!d.d-d!d1d!d/d/d/d/d1dKœdidN„Z	 	 	 	 	 	 	 	 	 	 	 	 djdkdX„ZdbdldZ„Zd!S )mr  zCreate a new shape.c                ó  — t          || z
  ¦  «        j        }t          j        t	          |j        ¦  «        ¦  «        }|j        dk     r,|j        dk    rt          j        |z
   }nt          j        |z
  }n|j        dk    rn| }|S )zÞReturn the angle to the horizontal for the connection from C to P.
        This uses the arcus sine function and resolves its inherent ambiguity by
        looking up in which quadrant vector S = P - C is located.
        r   )rì  rs  rJ  Úasinrï  r)  r(  Úpi)ræ  rÂ  r`	  Úalfas       r)   Úhorizontal_anglezShape.horizontal_angle°:  sz   € õ �!�a‘%‰LŒLÔˆÝŒy�˜QœS™œÑ"Ô"ˆØŒ3�Š7ˆ7ØŒs�aŠxˆxÝœ 4™Ð(��å”w ‘~��àŒs�aŠxˆxØà�u�Øˆr*   rÖ   rÒ   c                ó€  — t          |¦  «         || _        |j        | _        | j        j        st          d¦  «        ‚|j        j        | _        |j        j	        | _
        |j        j	        | _	        |j        j        | _        |j        | _        | j         | _        d| _        d| _        d| _        d | _        d | _        d S )NrÙ  r\   )rf  rÖ   rê   r*  rÛ  rÃ   r
  r)  rÕ  r(  r]  rÉ  rk  ÚpctmÚipctmrX  Ú	text_contÚ	totalcontrW  r÷   r‚  s     r)   rŒ   zShape.__init__Ä:  sª   € Ý�DÑÔÐØˆŒ	Ø”;ˆŒØŒxŒð 	*Ý˜[Ñ)Ô)Ð)ØÔ(Ô*ˆŒØÔ'Ô)ˆŒ
ØÔ&Ô(ˆŒØÔ&Ô(ˆŒàÔ.ˆŒ	Ø”i�ZˆŒ
àˆŒØˆŒØˆŒØˆŒØˆŒ	ˆ	ˆ	r*   c                óŠ  — | j         €@t          |¦  «        dk    rt          ||¦  «        | _         d S t          |¦  «        | _         d S t          |¦  «        dk    rµt          |¦  «        }t	          | j         j        |j        ¦  «        | j         _        t	          | j         j        |j        ¦  «        | j         _        t          | j         j
        |j        ¦  «        | j         _
        t          | j         j        |j        ¦  «        | j         _        d S t          |¦  «        }t	          | j         j        |j        ¦  «        | j         _        t	          | j         j        |j        ¦  «        | j         _        t          | j         j
        |j
        ¦  «        | j         _
        t          | j         j        |j        ¦  «        | j         _        d S rX  )r÷   r7   r$  rì  rÜ  r
  r(  r  r)  rê  r	  r  r¡  s     r)   Ú
updateRectzShape.updateRectØ:  s4  € ØŒ9ÐÝ�1‰vŒv˜Š{ˆ{Ý   A™JœJ�”	�	�	å  ™GœG�”	�	�	õ �1‰vŒv˜Š{ˆ{Ý˜!‘H”H�Ý" 4¤9¤<°´Ñ5Ô5�”	”Ý" 4¤9¤<°´Ñ5Ô5�”	”Ý" 4¤9¤<°´Ñ5Ô5�”	”Ý" 4¤9¤<°´Ñ5Ô5�”	”��å˜‘G”G�Ý" 4¤9¤<°´Ñ6Ô6�”	”Ý" 4¤9¤<°´Ñ6Ô6�”	”Ý" 4¤9¤<°´Ñ6Ô6�”	”Ý" 4¤9¤<°´Ñ6Ô6�”	”��r*   r  rº   r  rÎ  rì  c                ó¦  — t          |¦  «        }t          |¦  «        }| j        |k    sQ| xj        t          t	          || j        z  ¦  «        ¦  «        dz   z  c_        || _        |                      |¦  «         | xj        t          t	          || j        z  ¦  «        ¦  «        dz   z  c_        |                      |¦  «         || _        | j        S )zDraw a line between two points.ú m
ú l
)rì  rW  rX  r¶   r2  r  r#  )r(   r  r  s      r)   ró  zShape.draw_lineí:  sµ   € å�2‰YŒYˆÝ�2‰YŒYˆØ” 2Ò%Ð%ØˆNŒN�i­°°d´j±Ñ(AÔ(AÑBÔBÀVÑKÑKˆNŒNØ ˆDŒOØ�OŠO˜BÑÔÐàˆŒ�)¥H¨R°$´*©_Ñ$=Ô$=Ñ>Ô>ÀÑGÑGˆŒØ�Š˜ÑÔÐØˆŒØŒÐr*   r  r´   c           
     ó  — t          |¦  «        D ]Ñ\  }}|dk    ro| j        t          |¦  «        k    sV| xj        t	          t          t          |¦  «        | j        z  ¦  «        ¦  «        dz   z  c_        t          |¦  «        | _        nB| xj        t	          t          t          |¦  «        | j        z  ¦  «        ¦  «        dz   z  c_        |                      |¦  «         ŒÒt          |d         ¦  «        | _        | j        S )z%Draw several connected line segments.r   r%  r&  r1  )ró  rW  rì  rX  r¶   r2  r  r#  )r(   r  r®   r¢  s       r)   rø  zShape.draw_polylineû:  sÜ   € å˜fÑ%Ô%ð 	ð 	‰DˆAˆqØ�AŠvˆvØœ­5°©8¬8Ò3Ð3Ø�N”N¥iµ½¸q¹¼ÀDÄJÑ9NÑ0OÔ0OÑ&PÔ&PÐSYÑ&YÑY�N”NÝ&+¨A¡h¤h�D”Oøà�”¥)­HµU¸1±X´XÀÄ
Ñ5JÑ,KÔ,KÑ"LÔ"LÈvÑ"UÑU�”Ø�OŠO˜AÑÔÐÐå  r¤
Ñ+Ô+ˆŒØŒÐr*   rà  rá  c                ó¦  — t          |¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }| j        |k    s5| xj        t          t	          || j        z  ¦  «        ¦  «        dz   z  c_        t	          t          || j        z  ¦  «        t          || j        z  ¦  «        z   t          || j        z  ¦  «        z   ¦  «        }| xj        t          |¦  «        dz   z  c_        |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         || _        | j        S )z#Draw a standard cubic Bezier curve.r%  ú c
)rì  rW  rX  r¶   r2  r  r´   r#  )r(   r  r  rà  rá  r÷  s         r)   ré  zShape.draw_bezier	;  s  € õ �2‰YŒYˆÝ�2‰YŒYˆÝ�2‰YŒYˆÝ�2‰YŒYˆØ” 2Ò%Ð%ØˆNŒN�i­°°d´j±Ñ(AÔ(AÑBÔBÀVÑKÑKˆNŒNÝ�˜R $¤*™_Ñ-Ô-µ°R¸$¼*±_Ñ0EÔ0EÑEÍÈRÐRVÔR\É_ÑH]ÔH]Ñ]Ñ^Ô^ˆØˆŒ�) D™/œ/¨FÑ2Ñ2ˆŒØ�Š˜ÑÔÐØ�Š˜ÑÔÐØ�Š˜ÑÔÐØ�Š˜ÑÔÐØˆŒØŒÐr*   Útetraú"typing.Union[quad_like, rect_like]c                óH  — t          |¦  «        dk    rt          d¦  «        ‚t          |d         d¦  «        rt          |¦  «        j        }nt          |¦  «        }|j        |j        |j        z
  dz  z   }|j        |j        |j        z
  dz  z   }|j	        |j        |j	        z
  dz  z   }|j        |j	        |j        z
  dz  z   }| j
        |k    s<| xj        t          t          || j        z  ¦  «        ¦  «        dz   z  c_        || _
        |                      ||j	        |¦  «         |                      ||j        |¦  «         |                      ||j        |¦  «         |                      ||j        |¦  «         |                      |j        ¦  «         || _
        | j
        S )z"Draw an ellipse inside a tetrapod.rK  zinvalid arg lengthr   rj  r’  r%  )r7   rÃ   r;   r$  r  rû  r¤  r“  r’  r‘  rW  rX  r¶   r2  r  rð  r#  r÷   )r(   r*  r’  ÚmtÚmrr8  Úmls          r)   rö  zShape.draw_oval ;  sw  € åˆu‰:Œ:˜Š?ˆ?ÝÐ1Ñ2Ô2Ð2Ý�5˜”8˜[Ñ)Ô)ð 	Ý�U‘”Ô ˆAˆAå�U‘”ˆAàŒT�Q”T˜AœD‘[ CÑ'Ñ'ˆØŒT�Q”T˜AœD‘[ CÑ'Ñ'ˆØŒT�Q”T˜AœD‘[ CÑ'Ñ'ˆØŒT�Q”T˜AœD‘[ CÑ'Ñ'ˆØ” 2Ò%Ð%ØˆNŒN�i­°°d´j±Ñ(AÔ(AÑBÔBÀVÑKÑKˆNŒNØ ˆDŒOØ�Š˜˜AœD "Ñ%Ô%Ð%Ø�Š˜˜AœD "Ñ%Ô%Ð%Ø�Š˜˜AœD "Ñ%Ô%Ð%Ø�Š˜˜AœD "Ñ%Ô%Ð%Ø�Š˜œÑÔÐØˆŒØŒÐr*   r=  rê  ro  c                ó”   — |t           k    st          d¦  «        ‚t          |¦  «        }||dfz
  }|                      ||dd¬¦  «        S )rì  úradius must be positiver   r´  Fr  )r‰  rÃ   rì  r  )r(   r=  rê  r  s       r)   rî  zShape.draw_circle8;  sR   € à�ÒÐÝÐ6Ñ7Ô7Ð7Ý�v‘”ˆØ�v˜q�kÑ!ˆØ×Ò ¨¨C¸EÐÑBÔBÐBr*   c                ó¼   — d}t          |¦  «        }t          |¦  «        }t          |¦  «        }|||z
  |z  z   }|||z
  |z  z   }|                      ||||¦  «        S )z4Draw a curve between points using one control point.ç7.SQ¬á?)rì  ré  )r(   r  r  rà  ÚkappaÚk1Úk2s          r)   rð  zShape.draw_curve@;  sj   € ð ˆÝ�2‰YŒYˆÝ�2‰YŒYˆÝ�2‰YŒYˆØ�2˜‘7˜eÑ#Ñ#ˆØ�2˜‘7˜eÑ#Ñ#ˆØ×Ò  B¨¨BÑ/Ô/Ð/r*   Tr-  rþ  rÿ  rç   c                ó*  — t          |¦  «        }t          |¦  «        }d„ }d„ }d„ }t          j        | ¦  «        }t          j        t          j        d|¦  «        ¦  «        dz  }	t          j        t          j        d|¦  «        ¦  «        }
|
dz  }t	          |¦  «        dt          j        z  k    r%||	z  }t	          |¦  «        dt          j        z  k    °%| j        |k    s/| xj         |t          || j	        z  ¦  «        Ž z  c_        || _        t          dd¦  «        }|}|}||z
  }t	          |¦  «        }|t          k    st          d	¦  «        ‚|                      ||¦  «        }t	          |¦  «        t	          |
¦  «        k    �r¿|j        t          j        ||
z   ¦  «        |z  z   }|j        t          j        ||
z   ¦  «        |z  z   }t          ||¦  «        }|j        t          j        ||z   ¦  «        |z  t          j        |¦  «        z  z   }|j        t          j        ||z   ¦  «        |z  t          j        |¦  «        z  z   }t          ||¦  «        }d
t          j        |¦  «        z
  dz  dz  t	          ||z
  ¦  «        z  }|t	          ||z
  ¦  «        z  }|||z
  |z  z   }|||z
  |z  z   }| xj         |t          t#          || j	        z  ¦  «        t#          || j	        z  ¦  «        z   t#          || j	        z  ¦  «        z   ¦  «        Ž z  c_        ||
z  }||
z  }|}t	          |¦  «        t	          |
¦  «        k    �°¿t	          |¦  «        dk    �r¯|dz  }|j        t          j        ||z   ¦  «        |z  z   }|j        t          j        ||z   ¦  «        |z  z   }t          ||¦  «        }|j        t          j        ||z   ¦  «        |z  t          j        |¦  «        z  z   }|j        t          j        ||z   ¦  «        |z  t          j        |¦  «        z  z   }t          ||¦  «        }d
t          j        |¦  «        z
  dz  dz  t	          ||z
  ¦  «        z  }|t	          ||z
  ¦  «        z  d
t          j        |¦  «        z
  z  }|||z
  |z  z   }|||z
  |z  z   }| xj         |t          t#          || j	        z  ¦  «        t#          || j	        z  ¦  «        z   t#          || j	        z  ¦  «        z   ¦  «        Ž z  c_        |rx| xj         |t          || j	        z  ¦  «        Ž z  c_        | xj         |t          || j	        z  ¦  «        Ž z  c_        | xj         |t          || j	        z  ¦  «        Ž z  c_        || _        | j        S )zDraw a circle sector.c                ó*   — t          | |f¦  «        dz   S )Nr%  ©r¶   ©r!   rÑ
  s     r)   r­	  z#Shape.draw_sector.<locals>.<lambda>Y;  ó   € �) Q¨ FÑ+Ô+¨fÑ4€ r*   c                ó2   — t          | |||||f¦  «        dz   S )Nr)  r9  r]  s         r)   r­	  z#Shape.draw_sector.<locals>.<lambda>Z;  s    € ¥i°°A°q¸!¸QÀÐ0BÑ&CÔ&CÀfÑ&L€ r*   c                ó*   — t          | |f¦  «        dz   S )Nr&  r9  r:  s     r)   r­	  z#Shape.draw_sector.<locals>.<lambda>[;  r;  r*   r´  r1  rµ  r   r   r1  r   rK  r   çü©ñÒMbP?)rì  rJ  r_  Úcopysignrï  r  rW  rX  r2  r  r‰  rÃ   r  r(  ra  r)  rb  r´   )r(   r=  r-  rþ  rÿ  Úl3Úl4Úl5ÚbetarÚw360Úw90Úw45rö   ræ  rÂ  r`	  rŒ  r  Úq1Úq2rl  rm  rä  Úkappahr4  Úcp1Úcp2Úbeta2s                               r)   r  zShape.draw_sectorO;  s5  € õ �v‘”ˆÝ�e‘”ˆØ4Ð4ˆØLÐLˆØ4Ð4ˆÝ”˜d˜UÑ#Ô#ˆÝŒ|�DœM¨#¨uÑ5Ô5Ñ6Ô6¸"Ñ=ˆÝŒl�4œ=¨¨UÑ3Ô3Ñ4Ô4ˆØ�A‰gˆÝ�%‰jŒj˜1�tœw™;Ò&Ð&Ø�T‰MˆEõ �%‰jŒj˜1�tœw™;Ò&Ð&à” 5Ò(Ð(ØˆNŒN˜b˜b¥(¨5°4´:Ñ+=Ñ">Ô">Ð?Ñ?ˆNŒNØ#ˆDŒOÝ�!�Q‰KŒKˆØˆØˆØ�‰EˆÝ�!‰fŒfˆà•WŠ}ˆ}ÝÐ6Ñ7Ô7Ð7à×$Ò$ V¨UÑ3Ô3ˆÝ�%‰jŒj�3˜s™8œ8Ò#Ñ#Ø”•t”x  s¡
Ñ+Ô+¨cÑ1Ñ1ˆBØ”•t”x  s¡
Ñ+Ô+¨cÑ1Ñ1ˆBÝ�b˜"‘”ˆAØ”•t”x  s¡
Ñ+Ô+¨cÑ1µD´H¸S±M´MÑAÑAˆBØ”•t”x  s¡
Ñ+Ô+¨cÑ1µD´H¸S±M´MÑAÑAˆBÝ�b˜"‘”ˆAØ�$œ( 3™-œ-Ñ'¨1Ñ,¨qÑ0µ3°q¸1±u±:´:Ñ=ˆFØ�S  Q¡™ZœZÑ'ˆEØ�q˜1‘u ‘oÑ%ˆCØ�q˜1‘u ‘oÑ%ˆCØˆNŒN˜b˜b¥(Ý�S˜4œ:Ñ%Ñ&Ô&­¨c°D´JÑ.>Ñ)?Ô)?Ñ?Å$ÀqÈ4Ì:Á~ÑBVÔBVÑVñ#ô #ð ñ ˆNŒNð �S‰LˆEØ�C‰KˆDØˆAõ# �%‰jŒj�3˜s™8œ8Ò#Ñ#õ& ˆu‰:Œ:˜ÒÑØ˜A‘IˆEØ”•t”x  u¡Ñ-Ô-°Ñ3Ñ3ˆBØ”•t”x  u¡Ñ-Ô-°Ñ3Ñ3ˆBÝ�b˜"‘”ˆAØ”•t”x  u¡Ñ-Ô-°Ñ3µd´h¸u±o´oÑEÑEˆBØ”•t”x  u¡Ñ-Ô-°Ñ3µd´h¸u±o´oÑEÑEˆBÝ�b˜"‘”ˆAà�$œ( 5™/œ/Ñ)¨QÑ.°Ñ2µS¸¸Q¹±Z´ZÑ?ˆFØ�S  Q¡™ZœZÑ'¨1­t¬x¸©¬Ñ+>Ñ?ˆEØ�q˜1‘u ‘oÑ%ˆCØ�q˜1‘u ‘oÑ%ˆCØˆNŒN˜b˜b¥(Ý�S˜4œ:Ñ%Ñ&Ô&­¨c°D´JÑ.>Ñ)?Ô)?Ñ?Å$ÀqÈ4Ì:Á~ÑBVÔBVÑVñ#ô #ð ñ ˆNŒNð ð 	<ØˆNŒN˜b˜b¥(¨5°4´:Ñ+=Ñ">Ô">Ð?Ñ?ˆNŒNØˆNŒN˜b˜b¥(¨6°D´JÑ+>Ñ"?Ô"?Ð@Ñ@ˆNŒNØˆNŒN˜b˜b¥(¨1¨t¬z©>Ñ":Ô":Ð;Ñ;ˆNŒNØˆŒØŒÐr*   Nrý  r÷   r¼   c          
     óJ  — t          |¦  «        }|€~| xj        t          t          t	          |j        | j        z  ¦  «        |j        |j        gz   ¦  «        ¦  «        dz   z  c_        |  	                    |¦  «         |j
        | _        | j        S t          |d¦  «        rE|dk    s|dk    rt          d|› d�¦  «        ‚t          |j        |j        ¦  «        |z  }|df}d|f}n�t          |d¦  «        rlt          |¦  «        d	k    rY|\  }}||j        z  df}d||j        z  f}t          ||¦  «        dk    st!          ||¦  «        dk    rt          d|› d�¦  «        ‚nt          d|› d�¦  «        ‚|                      |j
        |z   |j        |z
  ¦  «        }	|                      |	|j        |j        |z   ¦  «        }	|                      |	|j        |z
  ¦  «        }	|                      |	|j        |j        |z
  ¦  «        }	|                      |	|j        |z   ¦  «        }	|                      |	|j        |j        |z
  ¦  «        }	|                      |	|j
        |z   ¦  «        }	|                      |	|j
        |j
        |z   ¦  «        | _        |  	                    |¦  «         | j        S )
að  Draw a rectangle.

        Args:
            radius: if not None, the rectangle will have rounded corners.
                This is the radius of the curvature, given as percentage of
                the rectangle width or height. Valid are values 0 < v <= 0.5.
                For a sequence of two values, the corners will have different
                radii. Otherwise, the percentage will be computed from the
                shorter side. A value of (0.5, 0.5) will draw an ellipse.
        Nz re
rj  r   r’  zbad radius value r   r)  r   )r$  rX  r¶   r2  r´   r–  r  r]  rÕ  r#  rí  rW  r;   rÃ   rÜ  r7   rê  ró  rð  rî  r4  )
r(   r÷   rê  r  r
  rZ  ÚpyÚrxÚryr�  s
             r)   r�  zShape.draw_rect™;  s›  € õ �‰JŒJˆØˆ>ØˆNŒN�i­Ý�Q”T˜DœJÑ&Ñ'Ô'¨1¬7°A´HÐ*=Ñ=ñ)ô )ñ ô àññ ˆNŒNð �OŠO˜AÑÔÐØœdˆDŒOØ”?Ð"õ �6˜;Ñ'Ô'ð 	<Ø˜Š{ˆ{˜f sšl˜lÝ Ð!>°VÐ!>Ð!>Ð!>Ñ?Ô?Ð?Ý�A”G˜QœXÑ&Ô&¨Ñ/ˆAØ�Q�ˆBØ�Q�ˆBˆBÝ�V˜YÑ'Ô'ð 	<­C°©K¬K¸1Ò,<Ð,<Ø‰FˆB�Ø�q”w‘, Ð"ˆBØ�R˜!œ(‘]Ð#ˆBÝ�2�r‰{Œ{˜aÒÐ¥3 r¨2¡;¤;°Ò#4Ð#4Ý Ð!>°VÐ!>Ð!>Ð!>Ñ?Ô?Ð?ð $5õ Ð:°Ð:Ð:Ð:Ñ;Ô;Ð;à�^Š^˜AœD 2™I q¤t¨b¡yÑ1Ô1ˆØ�_Š_˜R ¤ q¤t¨b¡yÑ1Ô1ˆà�^Š^˜B ¤ r¡	Ñ*Ô*ˆØ�_Š_˜R ¤ q¤t¨b¡yÑ1Ô1ˆà�^Š^˜B ¤ r¡	Ñ*Ô*ˆØ�_Š_˜R ¤ q¤t¨b¡yÑ1Ô1ˆà�^Š^˜B ¤ r¡	Ñ*Ô*ˆØŸ/š/¨"¨a¬d°A´D¸2±IÑ>Ô>ˆŒà�Š˜ÑÔÐØŒÐr*   r  r»   c                ó†   — t          |¦  «        }|                      |j        |j        |j        |j        |j        g¦  «        S )zDraw a Quad.)rû  rø  r¤  r‘  r’  r“  )r(   r  r’  s      r)   rú  zShape.draw_quadÌ;  s6   € å�‰JŒJˆØ×!Ò! 1¤4¨¬¨q¬t°Q´T¸1¼4Ð"@ÑAÔAÐAr*   r   r  c                ó4  — t          |¦  «        }t          |¦  «        }||z
  }t          |¦  «        }dt          t          |d|z  z  d¦  «        ¦  «        z  }|dk     rt	          d¦  «        ‚||z  }t          t          ||¦  «        ¦  «        }| }	g }
t          d|¦  «        D ]U}|dz  dk    rt          |d¦  «        |z  }n|dz  dk    rt          |d¦  «        |z  }nŒ=|
                     ||	z  ¦  «         ŒV|  	                    |g|
z   |gz   ¦  «         |S )z%Draw a zig-zagged line from p1 to p2.rK  r   úpoints too closer   r1  r   )
rì  rï  r4   r`  rÃ   ru  r�  rL  rk   rø  )r(   r  r  r  r`	  rŒ  r´  r8  rÙ  Úi_matr  r®   r¢  s                r)   r	  zShape.draw_zigzagÑ;  s2  € õ �2‰YŒYˆÝ�2‰YŒYˆØ�‰GˆÝ�!‰fŒfˆØ•#•e˜C 1 w¡;Ñ/°Ñ3Ô3Ñ4Ô4Ñ4ˆØ�Š7ˆ7ÝÐ/Ñ0Ô0Ð0Ø�3‰YˆÝ�¨¨BÑ/Ô/Ñ0Ô0ˆØ�ˆØˆÝ�q˜#‘”ð 	%ð 	%ˆAØ�1‰u˜ŠzˆzÝ˜!˜R‘L”L 2Ñ%��Ø�Q‘˜!’�Ý˜!˜Q‘K”K "Ñ$��àØ�MŠM˜!˜e™)Ñ$Ô$Ð$Ð$Ø×Ò˜B˜4 &™=¨B¨4Ñ/Ñ0Ô0Ð0Øˆ	r*   c                óæ  — t          |¦  «        }t          |¦  «        }||z
  }t          |¦  «        }dt          t          |d|z  z  d¦  «        ¦  «        z  }|dk     rt	          d¦  «        ‚||z  }t          t          ||¦  «        ¦  «        }| }	d}
g }t          d|¦  «        D ]h}|dz  dk    rt          ||
 ¦  «        |z  }n0|dz  dk    rt          ||
¦  «        |z  }nt          |d¦  «        |z  }|                     ||	z  ¦  «         Œi|g|z   |gz   }t          |¦  «        }d}|dz   |k     r=|  
                    ||         ||dz            ||dz            ¦  «         |dz  }|dz   |k     °=|S )z#Draw a squiggly line from p1 to p2.rK  r   rS  gh¼?3OP@r   r   r   )rì  rï  r4   r`  rÃ   ru  r�  rL  rk   r7   rð  )r(   r  r  r  r`	  rŒ  r´  r8  rÙ  rT  rŸ  r  r®   r¢  s                 r)   r  zShape.draw_squiggleî;  sš  € õ �2‰YŒYˆÝ�2‰YŒYˆØ�‰GˆÝ�!‰fŒfˆØ•#•e˜C 1 w¡;Ñ/°Ñ3Ô3Ñ4Ô4Ñ4ˆØ�Š7ˆ7ÝÐ/Ñ0Ô0Ð0Ø�3‰YˆÝ�¨¨BÑ/Ô/Ñ0Ô0ˆØ�ˆØˆàˆÝ�q˜#‘”ð 	%ð 	%ˆAØ�1‰u˜ŠzˆzÝ˜!˜a˜R‘L”L 2Ñ%��Ø�Q‘˜!’�Ý˜!˜Q‘K”K "Ñ$��å˜!˜Q‘K”K "Ñ$�Ø�MŠM˜!˜e™)Ñ$Ô$Ð$Ð$à�˜‘ " Ñ%ˆÝ�&‰kŒkˆØˆØ�!‰e�cŠkˆkØ�OŠO˜F 1œI v¨a°!©e¤}°f¸QÀ¹U´mÑDÔDÐDØ�‰FˆAð �!‰e�cŠkˆkð ˆ	r*   rú  rÔ  r   rï  r   )rú   rk  rù   rS  r  rë  r  rû   rñ  rÖ  rð  rY  rð  rå  ræ  rÅ  ræ  rò  rú   rk  r¿  rù   rÑ  rS  r¾  r  rë  r4   r  rÀ  rû   rñ  rÖ  rð  rY  rð  rå  ræ  rÅ  c          
     óæ	  — t          |¦  «        sdS t          |¦  «        t          t          fvr|                     ¦   «         }n|}t          |¦  «        dk    sdS t          |¦  «        }	 t          d„ d                     |¦  «        D ¦   «         ¦  «        }n# t          $ r t          ¦   «          Y dS w xY w|}|                     d¦  «        r
|dd …         }| j                             ||||¬¦  «        }t          | j        |¦  «        }|d         }|d         }|d         }|d	         }|d
         }|d         }|r||z  }n||z
  dk    r|dz  }n|||z
  z  }|dk    r| j                             ||dz   ¦  «        }n|d         }g } |D ]2}!|r|dvrd }"n|}"|                      t%          |!|"||¦  «        ¦  «         Œ3| }t'          |	d¦  «        }#t'          |
d¦  «        }$|
s|dk    r|	}
t'          |	d¦  «        }$t)          |¦  «        }%|}&|&dz  dk    rt+          d¦  «        ‚|&dk     r|&dz  }&|&dk     °|&dz  }&d„ }'d„ }(d})d}*d}+| j        },| j        }-|%rlt1          dddd|d         j        | j        z   |,|d         j        z
  | j        z
  ¦  «        }.|. |d         z  |.z  }/t7          t9          |/¦  «        ¦  «        dz   }0nd}0|,|j        z
  | j        z
  }1|j        | j        z   }2|1}3|&dk    r:|,|j        z
  | j        z
  }2|j         | j        z
  }1|0|)z  }0|-t;          |1¦  «        z
  }3n‡|&dk    r7|, |j        z   | j        z   }2|j        | j        z   }1|0|*z  }0t;          |1¦  «        }3nJ|&dk    rD|j         | j        z
  }2|, |j        z   | j        z   }1|0|+z  }0t;          |j        | j        z   ¦  «        }3| j                             |¦  «        }4|4�	d|4› d�}5d }6ndx}5}6| j                             ||¬!¦  «        }7|7€d}7nd|7› d"�}7 |'|5|7|0|2|1||¦  «        }8|dk    r7|8|› d#�z  }8|8t7          ||z  ¦  «        d$z   z  }8|�|8t7          |¦  «        d%z   z  }8|	�|8|#z  }8|
�|8|$z  }8|8|d         z  }8d}9t          |¦  «        dk    r|8 |(|¦  «        z  }8n|8d&z  }8tA          dt          |¦  «        ¦  «        D ]-}:|3|k     r n$|:dk    r|8d'z  }8|8||:         d&z   z  }8|3|z  }3|9dz  }9Œ.|8d(|6› d)�z  }8| xj!        |8z  c_!        |9S )*Nr   c                ó,   — g | ]}t          |¦  «        ‘ŒS r-   ©rÅ
  rG  s     r)   r¯   z%Shape.insert_text.<locals>.<listcomp>;<  s   € Ð:Ð:Ð: a�3˜q™6œ6Ð:Ð:Ð:r*   r³   rW  r   ©rù   rS  rë  r  r  r?  r   r=  r>  r‘  r
  rM  ©rL  rK  r¼  rÎ  rµ  râ  r´  c                ób   — d| › |› d|› dt          ||f¦  «        › d|› dt          |¦  «        › d�S )Nræ  úBT
ú1 0 0 1 z Tm
/r³   ú Tf r9  ©r!   rÑ
  r¼  r
  r`  rÎ  rþ  s          r)   r­	  z#Shape.insert_text.<locals>.<lambda>t<  sQ   € Ð-y°QÐ-y¸Ð-yÐ-y¸qÐ-yÐ-yÍ)ÐUVÐXYÐTZÑJ[ÔJ[Ð-yÐ-yÐcdÐ-yÐ-yÕgpÐqrÑgsÔgsÐ-yÐ-yÐ-y€ r*   c                ó(   — dt          | ¦  «        › d�S )NzTJ
0 -z TD
r9  ©r!   s    r)   r­	  z#Shape.insert_text.<locals>.<lambda>u<  s   € Ð8¥Y¨q¡\¤\Ð8Ð8Ð8€ r*   ú0 1 -1 0 0 0 cm
ú0 -1 1 0 0 0 cm
ú-1 0 0 -1 0 0 cm
ú cm
r\   r_  r¿  ú/OC /ú BDC
úEMC
rÐ  rÑ  ú Tr ú w ú M ÚTJz
T* z
ET
úQ
)"rç   rÈ   r´   rµ   rÞ  r7   rì  rê  rÜ  rg   rv   r3   rÖ   rÄ  rN  r*  rX  rk   ÚgetTJstrrÇ  Ú
CheckMorphrÃ   rÕ  r]  ru  r(  r)  r¶   r2  rï  rÓ  r1  rL  r   );r(   r-  ræ  rú   rk  rù   rS  r  rë  r  rû   rñ  rÖ  rð  rY  rð  rå  ræ  rÅ  r   Úmaxcoderø  r  rS  r:  r  r?  r  r=  r>  ÚlheightrM  ÚtabrD  rþ  Ú	color_strÚfill_strÚmorphingrS  Útempl1Útempl2Úcmp90Úcmm90Úcm180rÕ  r]  rh  rv  rl  r	  r  ÚspaceÚoptcontÚbdcÚemcrÜ  r  Únlinesr®   s;                                                              r)   r)  zShape.insert_text<  s2  € õ0 �F‰|Œ|ð 	Ø�1å�‰<Œ<¥¥e˜}Ð,Ð,Ø×$Ò$Ñ&Ô&ˆDˆDàˆDå�4‰yŒy˜1Š}ˆ}Ø�1å�e‘”ˆð	ÝÐ:Ð:¨3¯8ª8°D©>¬>Ð:Ñ:Ô:Ñ;Ô;ˆGˆGøÝð 	ð 	ð 	ÝÑÔÐØ�1�1ð	øøøð
 ˆØ×Ò˜CÑ Ô ð 	Ø˜!˜"˜"”IˆEàŒy×$Ò$Ø X¸ÈZð %ñ 
ô 
ˆõ ! ¤¨4Ñ0Ô0ˆà˜A”;ˆØ˜JÔ'ˆØ˜(Ô#ˆØ˜&Ô!ˆØ˜JÔ'ˆØ˜[Ô)ˆ	Øð 	8Ø Ñ+ˆGˆGØ˜	Ñ! QÒ&Ð&Ø ‘nˆGˆGà (¨YÑ"6Ñ7ˆGà�SŠ=ˆ=Ø”X×-Ò-¨d°G¸a±KÑ@Ô@ˆFˆFà˜hÔ'ˆFàˆØð 	9ð 	9ˆAØð ˜&Ð(BÐBÐBØ��à�Ø�JŠJ•x  1 f¨hÑ7Ô7Ñ8Ô8Ð8Ð8Øˆå˜e SÑ)Ô)ˆ	Ý˜T 3Ñ'Ô'ˆØð 	-˜ qÒ(Ð(ØˆDÝ  ¨Ñ,Ô,ˆHå˜eÑ$Ô$ˆØˆØ�‰8�qŠ=ˆ=ÝÐ/Ñ0Ô0Ð0à�AŠgˆgØ�3‰JˆCð �AŠgˆgà�C‰iˆàyÐyˆØ8Ð8ˆØ#ˆØ#ˆØ$ˆØ”ˆØ”
ˆð ð 	Ý˜˜1˜a  E¨!¤H¤J°´Ñ$7¸À%ÈÄ(Ä*Ñ9LÈtÌvÑ9UÑVÔVˆBØ�#˜˜aœ‘. 2Ñ%ˆCÝ�8 C™=œ=Ñ)Ô)¨GÑ3ˆBˆBàˆBØ�u”wÑ ¤Ñ'ˆØŒw˜œÑˆØˆà�"Š9ˆ9Ø˜EœGÑ# d¤fÑ,ˆDØ”7�(˜TœVÑ#ˆCØ�%‰KˆBØ�C ™HœHÑ$ˆEˆEð �CŠZˆZØ�7˜UœWÑ$ t¤vÑ-ˆDØ”'˜DœFÑ"ˆCØ�%‰KˆBÝ˜‘H”HˆEˆEð �CŠZˆZØ”G�8˜dœfÑ$ˆDØ�'˜EœGÑ# d¤fÑ,ˆCØ�%‰KˆBÝ˜œ $¤&Ñ(Ñ)Ô)ˆEð ”)×1Ò1°"Ñ5Ô5ˆØÐØ)˜'Ð)Ð)Ð)ˆCØˆCˆCàˆNˆC�#à”	×&Ò&¨.¸\Ð&ÑJÔJˆØˆ=ØˆEˆEà$˜Ð$Ð$Ð$ˆEØˆv�c˜5 " d¨C°¸ÑAÔAˆà˜Š?ˆ?Ø�{Ð(Ð(Ð(Ñ(ˆDØ•I˜l¨XÑ5Ñ6Ô6¸Ñ>Ñ>ˆDØÐ&Ø�	 +Ñ.Ô.°Ñ6Ñ6�ØÐØ�IÑˆDØÐØ�HÑˆDð
 	��Q”‰ˆØˆÝˆt‰9Œ9�qŠ=ˆ=Ø�F�F˜7‘O”OÑ#ˆDˆDà�D‰LˆDÝ�q�#˜d™)œ)Ñ$Ô$ð 	ð 	ˆAØ�wŠˆØ�Ø�1ŠuˆuØ˜‘�Ø�D˜”G˜d‘NÑ"ˆDØ�WÑˆEØ�a‰KˆFˆFàÐ!˜Ð!Ð!Ð!Ñ!ˆð 	ˆŒ˜$ÑˆŒØˆs   Á+,B ÂB4Â3B4)r  rÖ  r  rë  rô  ræ  rû   rS  rù   rú   rk  rð  rð  rÅ  rñ  rY  r  rå  r  rô  c          
     ó¤  ‡‡P‡Q— t          |¦  «        }|j        s|j        rt          d¦  «        ‚t	          |d¦  «        }t	          |	d¦  «        }|	€|dk    r|}	t	          |d¦  «        }| j                             |¦  «        }|�	d|› d�}d}nd	x}}| j                             ||¬
¦  «        }|€d	}nd|› d�}|dz  dk    rt          d¦  «        ‚|}|dk     r|dz  }|dk     °|dz  }t          |¦  «        s|dv r|j	        n|j
        S d}d}d}| j	        }|} |                      d¦  «        r
| dd…         } | j                             | |
||¬¦  «        }!t          | j        |!¦  «        }"|"d         }#|#d         ŠQ|#d         }$|#d         ŠP|#d         }%|#d         }&|#d         }'|r|}(n|&|'z
  dk    rd}(n|&|'z
  }(‰|(z  })t          |¦  «        t           t"          fv rd                     |¦  «        }*n|}*t'          d„ |*D ¦   «         ¦  «        }+|$r%|+dk    rd	                     d „ |*D ¦   «         ¦  «        }*|*                     ¦   «         }*| j                             |!|+dz   ¦  «        ŠP|$r|%d!vrd},n‰P},ˆˆPˆQfd"„}-‰Qdk     r‰Pd#         d         ‰z  }.n‰}.d	}/t-          |¦  «        rqt/          dddd|d         j        | j        z   | j	        |d         j        z
  | j        z
  ¦  «        }0|0 |d         z  |0z  }1t5          t7          |1¦  «        ¦  «        d$z   }2nd	}2d}3t9          d‰|&z  ¦  «        }4|dk    r|j        |4z   }5|j
        }6|j	        }7n¤|dk    r1t9          ‰|&z  d¦  «        }4|j        |4z   }5|j	        }6|j
        }7|2|z  }2nm|d%k    r4t9          d‰|&z  ¦  «         }4|j        |4z   }5|j
        }6d&}3|j	        }7|2|z  }2n3t9          ‰|&z  d¦  «         }4|j         |4z   }5|j	        }6d&}3|j
        }7|2|z  }2g }8tC          |*¦  «        D �]ƒ\  }9}:|: "                    |¦  «         #                    d'¦  «        };tI          |;¦  «        }<d	}=|6}>tK          |<¦  «        D ]é}?|;|?         }@ |-|@¦  «        }A|>|Ak    r|=|@d'z   z  }=|>|A|.z   z  }>Œ,|=r1|= &                    ¦   «         dz   }=|/|=z  }/|8 '                    d(¦  «         d	}=|6}>|A|6k    r|@d'z   }=|6|Az
  |.z
  }>ŒwtI          |8¦  «        dk    rd)|8d&<   |@D ]D}B |-|=¦  «        |6 |-|B¦  «        z
  k    r|=|Bz  }=Œ#|=dz  }=|/|=z  }/|8 '                    d)¦  «         |B}=ŒE|=d'z  }=|6 |-|=¦  «        z
  }>Œê|=r,|/|= &                    ¦   «         z  }/|8 '                    d)¦  «         |9tI          |*¦  «        dz
  k     r|/dz  }/�Œ…|/ (                    d¦  «        r
|/dd&…         }/|/ )                    d¦  «        dz   }C|)|Cz  |'‰z  z
  }D|D|7z
  }E|EtT          k    rd&|Ez  S tW          |E¦  «        }E|EtT          k     rd}Ed*|› |› d+�|2z   }Fd,„ }G|/                     ¦   «         }Hd)|8d&<   tC          |H¦  «        D �]ó\  }9}Id}J|6 |-|I¦  «        z
  }K|5|4|9|(z  z  z   }L|dk    r8|dv r|Lt9          |Kd-z  d¦  «        |3z  z   }Lnƒ|Lt9          d|Kd-z  ¦  «        |3z  z
  }Lni|d-k    r2|dv r|Lt9          |Kd¦  «        |3z  z   }LnH|Lt9          d|K¦  «        |3z  z
  }Ln1|d.k    r+|I )                    d'¦  «        }M|Mdk    r|8|9         r|K|Mz  }Jnd}J||Lj        z
  | j        z
  }N|Lj        | j        z   }O|dk    r#||Lj        z
  | j        z
  }O|Lj         | j        z
  }NnR|d/k    r#| |Lj        z   | j        z   }O|Lj        | j        z   }Nn)|d%k    r#|Lj         | j        z
  }O| |Lj        z   | j        z   }N|F |G|O|N| ‰¦  «        z  }F|dk    r7|F|› d0�z  }F|Ft5          |‰z  ¦  «        d1z   z  }F|�|Ft5          |¦  «        d2z   z  }F|d.k    r|Ft5          |J¦  «        d3z   z  }F|�|F|z  }F|	�|F|z  }F|FtY          |I|,|$‰Q¦  «        › d4�z  }F�Œõ|Fd5|› d6�z  }F| xj-        |Fz  c_-        |  .                    |¦  «         |ES )7aQ  Insert text into a given rectangle.

        Args:
            rect -- the textbox to fill
            buffer -- text to be inserted
            fontname -- a Base-14 font, font name or '/name'
            fontfile -- name of a font file
            fontsize -- font size
            lineheight -- overwrite the font property
            color -- RGB stroke color triple
            fill -- RGB fill color triple
            render_mode -- text rendering control
            border_width -- thickness of glyph borders as percentage of fontsize
            expandtabs -- handles tabulators with string function
            align -- left, center, right, justified
            rotate -- 0, 90, 180, or 270 degrees
            morph -- morph box with a matrix and a fixpoint
        Returns:
            unused or deficit rectangle area (float)
        z%text box must be finite and not emptyr¼  rÎ  Nr   rf  rg  rh  r\   rÐ  rW  rÑ  rµ  zrotate must be multiple of 90r´  r¾  rb  rc  rd  r   rY  r  r?  rM  r   r=  r>  r‘  r%   c                ó,   — g | ]}t          |¦  «        ‘ŒS r-   rX  rG  s     r)   r¯   z(Shape.insert_textbox.<locals>.<listcomp>G=  s   € Ð*Ð*Ð* !•s˜1‘v”vÐ*Ð*Ð*r*   r
  c                ó<   — g | ]}t          |¦  «        d k     r|nd‘ŒS )r  ú?rX  rG  s     r)   r¯   z(Shape.insert_textbox.<locals>.<listcomp>J=  s*   € ÐAÐAÐA¸�s 1™vœv¨š|˜|˜!˜!°ÐAÐAÐAr*   rZ  c                óp   •— ‰dk     rt          ˆfd„| D ¦   «         ¦  «        ‰z  S t          | ¦  «        ‰z  S )zCalculate pixel length of x.r   c                óF   •— g | ]}‰t          |¦  «                 d          ‘ŒS r2  rX  ©r­   r¼  rM  s     €r)   r¯   z8Shape.insert_textbox.<locals>.pixlen.<locals>.<listcomp>Z=  s(   ø€ Ð9Ð9Ð9°!˜F¥3 q¡6¤6œN¨1Ô-Ð9Ð9Ð9r*   )rL  r7   )r(  rú   rM  r  s    €€€r)   Úpixlenz$Shape.insert_textbox.<locals>.pixlenW=  sE   ø€ à˜!Š|ˆ|ÝÐ9Ð9Ð9Ð9°qÐ9Ñ9Ô9Ñ:Ô:¸XÑEÐEå˜1‘v”v Ñ(Ð(r*   é    re  r¿  r1  r³   TFræ  r\  c                óR   — dt          | |f¦  «        › d|› dt          |¦  «        › d�S )Nr]  z Tm /r³   r^  r9  )r!   rÑ
  r¼  r
  s       r)   r­	  z&Shape.insert_textbox.<locals>.<lambda>Ü=  s5   € Ð#\­i¸¸A¸Ñ.?Ô.?Ð#\Ð#\ÀaÐ#\Ð#\Í)ÐTUÉ,Ì,Ð#\Ð#\Ð#\€ r*   r   r   r_  ri  rj  rk  z Tw zTJ
zET
rm  )/r$  rY	  rZ	  rÃ   rÇ  rÖ   rÓ  r1  rç   rÕ  r]  r3   rÄ  rN  r*  rÈ   r´   rµ   rÜ  rê  rÞ  rX  ro  ru  r(  r)  r¶   r2  rì  rí  r–  rî  r4  ró  rô  r6   r7   rL  r&   rk   rß  r  r‰  rï  rn  r   r#  )Rr(   r÷   ræ  r  rÖ  r  rë  rô  ræ  rû   rS  rù   rú   rk  rð  rð  rÅ  rñ  rY  r  rå  rs  rt  r|  r}  r~  rÜ  rS  rx  ry  rz  rÕ  rø  r  rS  r:  r?  r  r=  r>  Úlheight_factorrq  rÙ	  rp  Ú	tj_glyphsr‡  Úblenr   rh  rv  rl  ÚprogrÚc_pntr-  ÚmaxwidthÚ	maxheightÚjust_tabr®   ro   Úline_tÚ	num_wordsÚlbuffr:  r�  ÚwordÚpl_wr¼  Úlb_countÚtext_heightÚmorer  ÚtemplÚtext_trD  rh  Úplrm  Úspacesr	  r  rM  r  sR               `                                                                   @@r)   rŸ  zShape.insert_textboxÓ<  se
  øøø€ õX �D‰zŒzˆØŒ=ð 	F˜DÔ,ð 	FÝÐDÑEÔEÐEå˜e SÑ)Ô)ˆ	Ý˜T 3Ñ'Ô'ˆØˆ<˜K¨1Ò,Ð,ØˆDÝ  ¨Ñ,Ô,ˆHà”)×1Ò1°"Ñ5Ô5ˆØÐØ)˜'Ð)Ð)Ð)ˆCØˆCˆCàˆNˆC�#ð ”	×&Ò&¨.¸\Ð&ÑJÔJˆØˆ=ØˆEˆEà$˜Ð$Ð$Ð$ˆEà�B‰;˜!ÒÐÝÐ<Ñ=Ô=Ð=àˆØ�AŠgˆgØ�3‰JˆCð �AŠgˆgà�C‰iˆõ �F‰|Œ|ð 	BØ"%¨ / /�4”;�;°t´zÐAà#ˆØ#ˆØ$ˆØ”ˆàˆØ×Ò˜CÑ Ô ð 	Ø˜!˜"˜"”IˆEàŒy×$Ò$Ø X¸ÈZð %ñ 
ô 
ˆõ ! ¤¨4Ñ0Ô0ˆà˜A”;ˆØ˜JÔ'ˆØ˜(Ô#ˆØ˜(Ô#ˆØ˜&Ô!ˆØ˜JÔ'ˆØ˜[Ô)ˆ	àð 	2Ø'ˆNˆNØ˜	Ñ! QÒ&Ð&Ø ˆNˆNà%¨	Ñ1ˆNØ˜^Ñ+ˆõ �‰<Œ<�D¥%˜=Ð(Ð(Ø—’˜6Ñ"Ô"ˆBˆBàˆBåÐ*Ð* rÐ*Ñ*Ô*Ñ+Ô+ˆàð 	C�g ’m�mØ—’ÐAÐA¸bÐAÑAÔAÑBÔBˆBà�]Š]‰_Œ_ˆà”×)Ò)¨$°¸!±Ñ<Ô<ˆØð 	�fÐ$>Ð>Ð>ØˆIˆIàˆIð
	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð �aŠ<ˆ<Ø˜"”:˜a”= 8Ñ+ˆDˆDàˆDàˆå�eÑÔð 	ÝØ�1�a˜˜E !œHœJ¨¬Ñ/°´¸uÀQ¼x¼zÑ1IÈDÌFÑ1Rñô ˆBð �#˜˜aœ‘. 2Ñ%ˆCÝ�8 C™=œ=Ñ)Ô)¨GÑ3ˆBˆBàˆBð
 ˆÝ�a˜ HÑ,Ñ-Ô-ˆØ�!Š8ˆ8Ø”G˜e‘OˆEØ”zˆHØœˆIˆIà�BŠYˆYÝ˜( XÑ-¨qÑ1Ô1ˆEØ”G˜e‘OˆEØ”{ˆHØœ
ˆIØ�%‰KˆBˆBà�CŠZˆZå˜1˜h¨Ñ1Ñ2Ô2Ð2ˆEØ”G˜e‘OˆEØ”zˆHØˆEØ”{ˆIØ�%‰KˆBˆBõ ˜8 hÑ.°Ñ2Ô2Ð2ˆEØ”G˜e‘OˆEØ”{ˆHØˆEØœ
ˆIØ�%‰KˆBð
 ˆå  ‘}”}ð 2	ñ 2	‰GˆAˆtØ—_’_ ZÑ0Ô0×6Ò6°sÑ;Ô;ˆFÝ˜F™œˆIØˆEØˆDõ ˜9Ñ%Ô%ð #0ð #0�Ø˜a”y�Ø�v˜d‘|”|�Ø˜4’<�<Ø˜T C™ZÑ'�EØ˜D 4™KÑ'�DØð ð *Ø!ŸLšL™NœN¨TÑ1�EØ˜E‘M�DØ—O’O DÑ)Ô)Ð)à�Ø�à˜8Ò#Ð#Ø  3™J�EØ# d™?¨TÑ1�DØõ �x‘=”= 1Ò$Ð$Ø#(�H˜R‘LØð "ð "�AØ�v˜e‘}”}¨°6°6¸!±9´9Ñ(<Ò<Ð<Ø ™
˜˜à ™˜Ø ™˜Ø Ÿš¨Ñ.Ô.Ð.Ø !˜˜à˜‘�Ø & &¨¡-¤-Ñ/��àð 'Ø˜Ÿš™œÑ&�Ø—’ Ñ&Ô&Ð&à•3�r‘7”7˜Q‘;ŠˆØ˜‘�ùð �=Š=˜ÑÔð 	Ø˜˜˜”9ˆDØ—:’:˜dÑ#Ô# aÑ'ˆð  Ñ(¨9°xÑ+?Ñ?ˆà˜YÑ&ˆØ•'Š>ˆ>Ø˜$‘;Ðå�4‰yŒyˆØ•'Š>ˆ>ØˆDØ'�sÐ'˜EÐ'Ð'Ð'¨"Ñ,ˆØ\Ð\ˆà—’Ñ"Ô"ˆØˆ�‰Ý˜fÑ%Ô%ð /	Fñ /	F‰DˆAˆqØˆGØ˜F˜F 1™IœIÑ%ˆBØ˜% 1 ~Ñ#5Ñ6Ñ6ˆCØ˜ŠzˆzØ˜(�?�?Ø¥ b¨1¡f¨aÑ 0Ô 0°5Ñ 8Ñ8�C�Cà¥ a¨¨a©Ñ 0Ô 0°5Ñ 8Ñ8�C�CØ˜!’�Ø˜(�?�?Ø¥ b¨!¡¤¨uÑ 4Ñ4�C�Cà¥ a¨¡¤¨uÑ 4Ñ4�C�CØ˜!’�ØŸš ™œ�Ø˜A’:�: (¨1¤+�:Ø  6™k�G�Gà�GØ˜3œ5‘. 4¤6Ñ)ˆCØ”5˜4œ6‘>ˆDØ�bŠyˆyØ ¤‘~¨¬Ñ.�Ø”u�f˜tœv‘o��Ø˜’�Ø�w ¤‘¨¬Ñ/�Ø”e˜dœf‘n��Ø˜’�Øœ�v ¤‘�Ø�g ¤‘o¨¬Ñ.�à�E�E˜$  U¨HÑ5Ô5Ñ5ˆDà˜QŠˆØ˜;Ð,Ð,Ð,Ñ,�Ø�	 ,°Ñ"9Ñ:Ô:¸UÑBÑB�ØÐ*Ø�I kÑ2Ô2°UÑ:Ñ:�Dà˜ŠzˆzØ�	 'Ñ*Ô*¨VÑ3Ñ3�àÐ Ø˜	Ñ!�ØÐØ˜Ñ �Ø•x  9¨f°hÑ?Ô?ÐEÐEÐEÑEˆD‰Dà��s���ÑˆàˆŒ˜$ÑˆŒØ�Š˜ÑÔÐØˆr*   r1  Fr]  rã  rä  r_  r/  râ  r×  c           
     óà  — | j         dk    rdS |dk    rd}n|€d}t          |d¦  «        }t          |d¦  «        }| j                             |¦  «        }|�d|› d�| j         z   | _         d}nd}| j                             ||
¬	¦  «        }|�d
|› d�| j         z   | _         |dk    r&|dk    r | xj         t          |¦  «        dz   z  c_         |dk    r|› d�| j         z   | _         |dk    r|› d�| j         z   | _         |dvr|› d�| j         z   | _         |	r| xj         dz  c_         d| _        |�| xj         |z  c_         |�Z| xj         |z  c_         |�$|s| xj         dz  c_         nE| xj         dz  c_         n4|s| xj         dz  c_         n!| xj         dz  c_         n| xj         dz  c_         | xj         |z  c_         t          |¦  «        r}t          dddd|d         j	        | j	        z   | j
        |d         j        z
  | j        z
  ¦  «        }| |d         z  |z  }t          t          |¦  «        ¦  «        dz   | j         z   | _         | xj        d| j         z   dz   z  c_        d| _         d| _        dS )zäFinish the current drawing segment.

        Notes:
            Apply colors, opacity, dashes, line style and width, or
            morphing. Also whether to close the path
            by connecting last to first point.
        r\   Nr   r¼  rÎ  rf  rg  rh  rÐ  rW  rÑ  r   ú w
z J
z j
)Nr\   ú[] 0z d
zh
zB
zB*
zf
zf*
zS
re  ræ  rm  )rX  rÇ  rÖ   rÓ  r1  r¶   rW  ro  ru  r(  rÕ  r)  r2  r!  )r(   r]  r  rû   rã  rä  r_  r/  rð  râ  ræ  rå  rÅ  rs  rt  r|  r~  rÜ  rh  rv  s                       r)   rž  zShape.finish>  sÔ  € ð, Œ>˜RÒÐØˆFà�AŠ:ˆ:ØˆEˆEØˆ]ØˆEõ ˜e SÑ)Ô)ˆ	Ý˜T 3Ñ'Ô'ˆà”)×1Ò1°"Ñ5Ô5ˆØÐØ4 WÐ4Ð4Ð4°t´~ÑEˆDŒNØˆCˆCàˆCà”	×&Ò&¨.¸\Ð&ÑJÔJˆØÐØ- Ð-Ð-Ð-°´Ñ>ˆDŒNà�AŠ:ˆ:˜% 1š*˜*ØˆNŒN�i¨Ñ.Ô.°Ñ7Ñ7ˆNŒNà�aŠ<ˆ<Ø 'Ð-Ð-Ð-°´Ñ>ˆDŒNØ�qŠ=ˆ=Ø (Ð.Ð.Ð.°´Ñ?ˆDŒNàÐ+Ð+Ð+Ø &˜_˜_˜_¨t¬~Ñ=ˆDŒNàð 	#ØˆNŒN˜eÑ#ˆNŒNØ"ˆDŒOàÐØˆNŒN˜iÑ'ˆNŒNàÐØˆNŒN˜hÑ&ˆNŒNØÐ Øð -Ø�N”N eÑ+�N”N�Nà�N”N fÑ,�N”N�Nàð -Ø�N”N eÑ+�N”N�Nà�N”N fÑ,�N”N�NàˆNŒN˜eÑ#ˆNŒNàˆŒ˜#ÑˆŒÝ�eÑÔð 	QÝØ�1�a˜˜E !œHœJ¨¬Ñ/°´¸uÀQ¼x¼zÑ1IÈDÌFÑ1Rñô ˆBð �#˜˜aœ‘. 2Ñ%ˆCÝ&¥x°¡}¤}Ñ5Ô5¸Ñ?À$Ä.ÑPˆDŒNàˆŒ˜' D¤NÑ2°UÑ:Ñ:ˆŒØˆŒØˆŒØˆr*   rý  c                ó   — t          | j        ¦  «         | xj        | j        z  c_        | j                             ¦   «         | _        | j        r\|r| j                             ¦   «          t                               | j        d|¦  «        }| j         	                    || j        ¦  «         d| _
        d| _        d| _        d| _        d| _        dS )zžUpdate the page's /Contents object with Shape data.

        The argument controls whether data appear in foreground (default)
        or background.
        r0  Nr\   )rf  rÖ   r!  r   rÈ  rÅ  r  ra  r*  rf	  rW  r÷   rX  )r(   rý  r  s      r)   r   zShape.commitr>  s»   € õ 	�D”IÑÔÐØˆŒ˜$œ.Ñ(ˆŒØœ×.Ò.Ñ0Ô0ˆŒàŒ>ð 	9Øð *Ø”	×'Ò'Ñ)Ô)Ð)å×)Ò)¨$¬)°T¸7ÑCÔCˆDàŒH×"Ò" 4¨¬Ñ8Ô8Ð8àˆŒØˆŒ	ØˆŒØˆŒØˆŒˆˆr*   r†
  )r  rº   r  rº   rÎ  rì  )r  r´   rÎ  rì  )
r  rº   r  rº   rà  rº   rá  rº   rÎ  rì  )r*  r+  rÎ  rì  )r=  rº   rê  ro  rÎ  rì  )r  rº   r  rº   rà  rº   rÎ  rì  r�  )
r=  rº   r-  rº   rþ  ro  rÿ  rç   rÎ  rì  )r÷   r¼   rÎ  rì  )r  r»   rÎ  rì  )r   )r  rº   r  rº   r  ro  rÎ  rì  )&r-  rº   ræ  rò  rú   ro  rk  r¿  rù   rÑ  rS  r¾  r  rç   rë  r4   r  rÀ  rû   rÀ  rñ  r4   rÖ  ro  rð  ro  rY  r4   rð  rÀ  rå  ro  ræ  ro  rÅ  r4   rÎ  r4   )*r÷   r¼   ræ  rò  r  r4   rÖ  ro  r  rÀ  rë  r4   rô  r4   ræ  ro  rû   rÀ  rS  r¾  rù   r¾  rú   ro  rk  r¿  rð  ro  rð  rÀ  rÅ  r4   rñ  r4   rY  r4   r  rç   rå  ro  rÎ  ro  )r   r1  Nr   r   NFNTr   r   r   )r]  ro  r  rÀ  rû   rÀ  rã  r4   rä  r4   r_  r¾  r/  rç   rð  rÀ  râ  rç   ræ  ro  rå  ro  rÅ  r4   rÎ  r×  )rý  rç   rÎ  r×  )r/   r0   r1   rª  r7  r  rŒ   r#  ró  rø  ré  rö  rî  rð  r  r�  rú  r	  r  r)  rŸ  rž  r   r-   r*   r)   r  r  ­:  s‚  € € € € € ØÐàðð ñ „\ðð&ð ð ð ð(7ð 7ð 7ð*ð ð ð ðð ð ð ðð ð ð ð.ð ð ð ð0Cð Cð Cð Cð0ð 0ð 0ð 0ð(  ðHð Hð Hð Hð HðT 48ð 1ð 1ð 1ð 1ð 1ð 1ðfBð Bð Bð Bð ð	ð ð ð ð ðB ð	#ð #ð #ð #ð #ðZ Ø#ØØØØØØØØ"ØØØØ !ØØð)xð xð xð xð xð xðD Ø"ØØØØØØØ!ØØ#ØØØØØØØ !ð-Bð Bð Bð Bð Bð BðL
 ØØØØØØØØØØ !ØðYð Yð Yð Yð Yðvð ð ð ð ð ð r*   r  c                  óæ   — e Zd Zdd„Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Z	dd	„Z
dd
„Zdd„Zd„ Zdd„Zed d„¦   «         Zed d„¦   «         Zdd„Z G d„ d¦  «        Zd!d„Zd"d„Zd#d„Zd#d„ZdS )$rÒ  r\   NrÍ  c                óx  — t          j        |                     d¦  «        ¦  «        }|r$t          |t          ¦  «        st	          |¦  «        }|r|j        nt          j        d ¦  «        }t          t           d¦  «        rt          j        ||||¦  «        | _        d S t          j	        ||||¦  «        | _        d S )NrÏ  ÚFzStoryS)
r�   r‘  rÈ  r>   r9  rÄ   Ú	FzArchiver;   r¤  ÚFzStory)r(   rÉ  rÊ  Úemr$  r-  Úarchs          r)   rŒ   zStory.__init__�>  s§   € ÝÔ6¸¿ºÀGÑ8LÔ8LÑMÔMˆØð 	'�: g­wÑ7Ô7ð 	'Ý˜gÑ&Ô&ˆGØ&ÐBˆwŒ|ˆ|­E¬O¸TÑ,BÔ,BˆÝ•5˜*Ñ%Ô%ð 	DÝœ¨°¸2¸tÑDÔDˆDŒIˆIˆIåœ w°¸"¸dÑCÔCˆDŒIˆIˆIr*   c                óN  — | j         }d}|                     ddd¦  «        }|r‚|j        }t          |¦  «        dk    rM|d         dk    rA|d         dv r7|                     d¦  «        }|s d|› �}|                     d|¦  «         |dz  }|                     ddd¦  «        }|°€dS dS )	zt
        Look for `<h1..6>` items in `self` and adds unique `id`
        attributes if not already present.
        r   Nr   rÆ  r   Ú123456r9  Úh_id_)rŠ  r¡   rš  r7   r®  r°  r  )r(   Údomr®   r(  r   ÚattrÚid_s          r)   Úadd_header_idszStory.add_header_ids—>  sÓ   € ð
 ŒiˆØˆØ�HŠH�T˜4 Ñ&Ô&ˆØð 		.Ø”9ˆDÝ�4‰yŒy˜AŠ~ˆ~ $ q¤'¨3¢, ,°4¸´7¸hÐ3FÐ3FØ×,Ò,¨TÑ2Ô2�Øð Ø% !˜+˜+�Cà—O’O D¨#Ñ.Ô.Ð.Ø˜‘F�AØ—’˜D $¨Ñ-Ô-ˆAð ð 		.ð 		.ð 		.ð 		.ð 		.r*   c                óx  — t          | t          ¦  «        r| }nt          d| ¦  «        }t          ¦   «         }|D ]'}|j        dz  r|j        r|j        |v rŒ|||j        <   Œ(|D �]U}|j        dz  �rG|j        �r?t          ¦   «         }t          |j        ¦  «        |d<   |j                             d¦  «        r’|j        dd…         }	 ||         }nA# t          $ r4}	t          dk    rt          ¦   «          t          d|› d|› �¦  «        |	‚d}	~	ww xY w	 t          |d<   |j        \  }
}}}t          |
|¦  «        |d<   |j        dz
  |d<   nK|j                             d¦  «        rt"          |d<   |j        dd…         |d<   nt$          |d<   |j        |d<   ||j        dz
                                |¦  «         �ŒW|S )aÆ  
        Adds links to PDF document.
        Args:
            document_or_stream:
                A PDF `Document` or raw PDF content, for example an
                `io.BytesIO` instance.
            positions:
                List of `ElementPosition`'s for `document_or_stream`,
                typically from Story.element_positions(). We raise an
                exception if two or more positions have same id.
        Returns:
            `document_or_stream` if a `Document` instance, otherwise a
            new `Document` instance.
        We raise an exception if an `href` in `positions` refers to an
        internal position `#<name>` but no item in `positions` has `id =
        name`.
        rZ  r   rY  r
  NzNo destination with id=z, required by position_from: r   z"add_pdf_links(): making link from:zadd_pdf_links():    zadd_pdf_links(): to:rZ  r\  rÖ   zname:r   r   ra  )r>   rÁ   r5   Ú
open_closer9  rÚ  r$  r÷   r3   rg   r
  rv   rÞ   r'   rb  rì  Úpage_numrÅ  rh  rc  )Údocument_or_streamÚ	positionsrÉ   Úid_to_positionÚpositionÚposition_fromr·  Ú	target_idÚposition_tor`  r
  r  r	  r  s                 r)   Úadd_pdf_linkszStory.add_pdf_linksª>  s+  € õ& Ð(­(Ñ3Ô3ð 	;Ø)ˆHˆHå Ð'9Ñ:Ô:ˆHõ
 ™œˆà!ð 	<ð 	<ˆHàÔ# aÑ'ð <¨X¬[ð <à”; .Ð0Ð0àà3;�N H¤KÑ0øð 'ð (	Gñ (	GˆMàÔ(¨1Ñ,ñ &G°-Ô2Dñ &Gõ ‘v”v�Ý# MÔ$6Ñ7Ô7��V‘à Ô%×0Ò0°Ñ5Ô5ð 9à -Ô 2°1°2°2Ô 6�IðEØ&4°iÔ&@˜˜øÝ$ð Eð Eð EÝ/°!Ò3Ð3½Ñ8HÔ8HÐ8HÝ*Ð+|ÀYÐ+|Ð+|ÐmzÐ+|Ð+|Ñ}Ô}ð  DEð  EøøøøðEøøøð
Bõ
 $-�D˜‘LØ%0Ô%5‘N�B˜˜B õ "' r¨2¡¤�D˜‘JØ#.Ô#7¸!Ñ#;�D˜‘L�Lð %Ô)×4Ò4°WÑ=Ô=ð 9Ý'1˜˜V™Ø'4Ô'9¸!¸"¸"Ô'=˜˜V™˜å'/˜˜V™Ø&3Ô&8˜˜U™ð ˜Ô/°!Ñ3Ô4×@Ò@ÀÑFÔFÐFùàˆs   ÃCÃ
DÃ/D
Ä
Dc                óR   — |                       ¦   «         }|                     ¦   «         S r,   )rÉ   rý  ©r(   r¬  s     r)   rŠ  z
Story.bodyÿ>  s   € à�mŠm‰oŒoˆØ�{Š{‰}Œ}Ðr*   c                óR   — t          j        | j        ¦  «        }t          |¦  «        S r,   )r�   Úfz_story_documentrÄ   rˆ  r¼  s     r)   rÉ   zStory.document?  s    € ÝÔ% t¤yÑ1Ô1ˆÝ�C‰yŒyÐr*   c                ó”   — t          |¦  «        }|r|j        nt          j        d ¦  «        }t          j        | j        ||¦  «         d S r,   )rÓ  rÄ   r�   r®  Úfz_draw_story)r(   r¶  rÙ  Úctm2rà  s        r)   Údrawz
Story.draw?  sF   € Ý  &Ñ)Ô)ˆØ#Ð>ˆfŒkˆk­¬¸Ñ)>Ô)>ˆÝÔ˜TœY¨¨TÑ2Ô2Ð2Ð2Ð2r*   c                ó€  ‡‡— t          ‰¦  «        t          u rU‰                     ¦   «         D ]?}t          |¦  «        t          u r|                     ¦   «         st          d|› d�¦  «        ‚Œ@ni Št          ‰¦  «        r‰j        j        dk    rt          d¦  «        ‚ˆˆfd„}t          j
        | j        |¦  «         dS )zU
        Trigger a callback function to record where items have been placed.
        zinvalid key 'rë   r   z@callback 'function' must be a callable with exactly one argumentc                ó€  •—  G d„ d¦  «        } |¦   «         }| j         |_         | j        |_        | j        |_        t          | j        ¦  «        |_        | j        |_        | j        |_        | j        |_        | j	        |_	        ‰r+‰ 
                    ¦   «         D ]\  }}t          |||¦  «         Œ ‰|¦  «         d S )Nc                  ó   — e Zd ZdS )ú=Story.element_positions.<locals>.function2.<locals>.Position2N©r/   r0   r1   r-   r*   r)   Ú	Position2rÆ  ?  s   € € € € € Ø�r*   rÈ  )r2  Úheadingr9  rg  r÷   r   r±  Úrectangle_numÚrect_numrÚ  rB   Úsetattr)r¶  rÈ  Ú	position2rŸ  rF   r÷  ri   s        €€r)   Ú	function2z*Story.element_positions.<locals>.function2?  sÚ   ø€ ðð ð ð ð ñ ô ð à!˜	™œˆIØ&œnˆIŒOØ (Ô 0ˆIÔØ#œ;ˆIŒLÝ,¨X¬]Ñ;Ô;ˆIŒNØ%œ]ˆIŒNØ#+Ô#6ˆIÔ Ø!)Ô!7ˆIÔØ%œ]ˆIŒNØð .Ø ŸJšJ™LœLð .ð .‘D�A�qÝ˜Y¨¨1Ñ-Ô-Ð-Ð-ØˆH�iÑ Ô Ð Ð Ð r*   N)rÈ   r5   rË  rÑ  ÚisidentifierrÃ   r  Ú__code__Úco_argcountr�   Úfz_story_positionsrÄ   )r(   ri   r÷  rŸ  rÎ  s    ``  r)   Úelement_positionszStory.element_positions?  sá   øø€ õ �‰:Œ:�ÐÐØ—Y’Y‘[”[ð ;ð ;�Ý˜Q™œ¥3˜˜¨1¯>ª>Ñ+;Ô+;˜Ý$Ð%9°QÐ%9Ð%9Ð%9Ñ:Ô:Ð:ð 'ð;ð ˆDÝ˜Ñ!Ô!ð 	a XÔ%6Ô%BÀaÒ%GÐ%GÝÐ_Ñ`Ô`Ð`ð	!ð 	!ð 	!ð 	!ð 	!ð 	!õ  	Ô  $¤)¨YÑ7Ô7Ð7Ð7Ð7r*   r   c                ó    — t          |¦  «        }t          j        ¦   «         }t          j        | j        |||¦  «        }|t          |¦  «        fS )z5
        Wrapper for fz_place_story_flags().
        )r   r�   rh  Úfz_place_story_flagsrÄ   rg  )r(   Úwherer¾  rN	  r™  s        r)   ÚplacezStory.place,?  sG   € õ   Ñ'Ô'ˆÝ”‘”ˆÝÔ)¨4¬9°e¸VÀUÑKÔKˆØ•_ fÑ-Ô-Ð-Ð-r*   c                ó8   — t          j        | j        ¦  «         d S r,   )r�   Úfz_reset_storyrÄ   r.   s    r)   rc	  zStory.reset5?  s   € ÝÔ˜dœiÑ(Ô(Ð(Ð(Ð(r*   c                ó(  ‡‡— d }dŠd}t          dddd¦  «        }	  |||¦  «        \  }}	}
|dz  }|r‰dz  Š|                      |	¦  «        \  }}‰rˆˆfd„}|                      |¦  «         |rŠ|rK|r$|r |‰||d¦  «         |                     ¦   «          |                     |¦  «        }|r |‰||d¦  «         |                      ||
¦  «         |s$|r |‰||d¦  «         |                     ¦   «          n|                      d |
¦  «         |sd S Œø)Nr   r   c                ó,   •— ‰| _          ‰| ¦  «         d S r,   )r²  )r¶  r²  Ú
positionfns    €€r)   Úpositionfn2z Story.write.<locals>.positionfn2E?  s#   ø€ ð )1�HÔ%Ø�J˜xÑ(Ô(Ð(Ð(Ð(r*   )r$  r×  rÓ  r£
  rž
  rÂ  )r(   rV  ÚrectfnrÜ  Úpagefnrà  rË  rN	  rv  r÷   rÞ  r™  rÝ  r²  s      `         @r)   r   zStory.write8?  s—  øø€ ØˆØˆØˆÝ�a˜˜A˜qÑ!Ô!ˆð 	Ø"( &¨°6Ñ":Ô":ÑˆH�d˜CØ˜‰MˆHØð à˜A‘�ØŸ:š: tÑ,Ô,‰LˆD�&Øð 4ð)ð )ð )ð )ð )ð )ð
 ×&Ò& {Ñ3Ô3Ð3Øð %Øð ;àð *Ø!ð ?Ø"˜F 8¨X°s¸AÑ>Ô>Ð>ØŸšÑ)Ô)Ð)Ø ×+Ò+¨XÑ6Ô6�CØð ;Ø˜˜x¨°3¸Ñ:Ô:Ð:Ø—	’	˜3 Ñ$Ô$Ð$Øð &Øð <Ø˜ ¨(°C¸Ñ;Ô;Ð;Ø—O’OÑ%Ô%Ð%øà—	’	˜$ Ñ$Ô$Ð$Øð Ø�ðA 	r*   Tc	                ó  ‡‡‡— t          ¦   «         Šd }		 |	}
 |‰¦  «        }	dŠ|	|
k    rdŠ|	}t          ||||¦  «        }|r|                     ¦   «          t          ¦   «         Šˆˆˆfd„}|                     ‰r| nd |||¦  «         ‰rd S Œw)Nr   FTc                óX   •— ‰                      | ¦  «         ‰r‰r ‰| ¦  «         d S d S d S r,   ©rk   )r¶  rÜ  r´  Ústables    €€€r)   rÝ  z+Story.write_stabilized.<locals>.positionfn2q?  sP   ø€ à× Ò  Ñ*Ô*Ð*Øð )˜jð )Ø�J˜xÑ(Ô(Ð(Ð(Ð(ð)ð )ð )ð )r*   )r´   rÒ  r¯  r   )rV  Ú	contentfnrÞ  rÊ  r§  rÜ  rß  r$  r¯  rx  Úcontent_prevÚcontent2rÛ  rÝ  r´  rã  s        `        @@r)   Úwrite_stabilizedzStory.write_stabilized_?  sà   øøø€ å‘F”Fˆ	Øˆð	Ø"ˆLØ�i Ñ+Ô+ˆGØˆFØ˜,Ò&Ð&Ø�ØˆHÝ˜( H¨b°'Ñ:Ô:ˆEàð 'Ø×$Ò$Ñ&Ô&Ð&å™œˆIð)ð )ð )ð )ð )ð )ð )ð
 �KŠKØ$Ð.�F�F¨$ØØØñ	ô ð ð ð Ø�ð3	r*   c                ó&  ‡‡— t          j        ¦   «         }t          |¦  «        }	g Šˆˆfd„}
t                               |	| ||||
|||¦	  «	         |	                     ¦   «          |                     d¦  «         t                               |‰¦  «        S )Nc                óP   •— ‰                      | ¦  «         ‰r ‰| ¦  «         d S d S r,   râ  ©r¶  rÜ  r´  s    €€r)   rÝ  z6Story.write_stabilized_with_links.<locals>.positionfn2…?  ó?   ø€ à×Ò˜XÑ&Ô&Ð&Øð %Ø�
˜8Ñ$Ô$Ð$Ð$Ð$ð%ð %r*   r   )r9   r^  r’
  rÒ  rç  ræ  r	  rº  )rä  rÞ  rÊ  r§  rÜ  rß  r$  r¯  r	   rV  rÝ  r´  s       `      @r)   Úwrite_stabilized_with_linksz!Story.write_stabilized_with_links?  sœ   øø€ õ ”‘”ˆÝ Ñ'Ô'ˆØˆ	ð	%ð 	%ð 	%ð 	%ð 	%ð 	%õ
 	×Ò˜v y°&¸(ÀBÈÐU[Ð]dÐftÑuÔuÐuØ�Š‰ŒˆØ�Š�A‰ŒˆÝ×"Ò" 6¨9Ñ5Ô5Ð5r*   c                ó  ‡‡— t          j        ¦   «         }t          |¦  «        }g Šˆˆfd„}|                      ||||¬¦  «         |                     ¦   «          |                     d¦  «         t                               |‰¦  «        S )Nc                óP   •— ‰                      | ¦  «         ‰r ‰| ¦  «         d S d S r,   râ  rê  s    €€r)   rÝ  z+Story.write_with_links.<locals>.positionfn2”?  rë  r*   )rÜ  rß  r   )r9   r^  r’
  r   ræ  r	  rÒ  rº  )r(   rÞ  rÜ  rß  r	   rV  rÝ  r´  s     `    @r)   r×  zStory.write_with_links�?  s�   øø€ å”‘”ˆÝ Ñ'Ô'ˆØˆ	ð	%ð 	%ð 	%ð 	%ð 	%ð 	%ð
 	�
Š
�6˜6¨kÀ&ˆ
ÑIÔIÐIØ�Š‰ŒˆØ�Š�A‰ŒˆÝ×"Ò" 6¨9Ñ5Ô5Ð5r*   c                  ó    — e Zd ZdZdd„Zd„ ZdS )úStory.FitResulta˜  
        The result from a `Story.fit*()` method.
        
        Members:
        
        `big_enough`:
            `True` if the fit succeeded.
        `filled`:
            Tuple (x0, y0, x1, y1) from the last call to `Story.place()`. This
            will be wider than .rect if any single word (which we never split)
            was too wide for .rect.
        `more`:
            `False` if the fit succeeded.
        `numcalls`:
            Number of calls made to `self.place()`.
        `parameter`:
            The successful parameter value, or the largest failing value.
        `rect`:
            The pumupdf.Rect created from `parameter`.
        Nc                óZ   — || _         || _        || _        || _        || _        || _        d S r,   ©rÕ  rN	  r™  ÚnumcallsrÖ  r÷   )r(   rÕ  rN	  r™  ró  rÖ  r÷   s          r)   rŒ   zStory.FitResult.__init__³?  s0   € Ø(ˆDŒOØ ˆDŒKØˆDŒIØ$ˆDŒMØ&ˆDŒNØˆDŒIˆIˆIr*   c                óf   — d| j         › d| j        › d| j        › d| j        › d| j        › d| j        › �S )Nz big_enough=z filled=z more=z
 numcalls=ú parameter=ú rect=rò  r.   s    r)   rí   zStory.FitResult.__repr__»?  sk   € ð) 4¤?ð )ð )Ø#œ{ð)ð )à!œYð)ð )ð "&¤ð)ð )ð #'¤.ð	)ð )ð
 "œYð)ð )ðr*   r4  )r/   r0   r1   rª  rŒ   rí   r-   r*   r)   Ú	FitResultrð  ž?  sA   € € € € € ð	ð 	ð(	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	r*   r÷  r>  Fc                óÈ  ‡ ‡‡‡‡‡‡‡‡— ˆfd„Št          ‰t          t          f¦  «        s‰�J ‚t          ‰t          t          f¦  «        s‰�J ‚ G ˆˆˆfd„d¦  «        } |¦   «         Š‰r ‰d‰j        ›d‰j        ›d�¦  «         ‰                      ¦   «          ˆˆˆˆfd„}ˆˆˆˆ ˆˆfd	„Šd
„ }	‰j        €2‰r ‰d¦  «          |	‰j        d¦  «        }
	  ‰|
¦  «        sn|
dz  }
Œn0 ‰‰j        ¦  «        r ‰r ‰d‰j        ›d�¦  «          |¦   «         S ‰j        €2‰r ‰d¦  «          |	‰j        d¦  «        }
	  ‰|
¦  «        rn|
dz  }
Œn7 ‰‰j        ¦  «        s'd‰_        ‰r ‰d‰j        ›d�¦  «          |¦   «         S ‰r ‰d‰j        ›d‰j        ›d�¦  «         	 ‰j        ‰j        z
  |k     r
 |¦   «         S ‰j        ‰j        z   dz  }
 ‰|
¦  «         Œ;)aÌ  
        Finds optimal rect that contains the story `self`.
        
        Returns a `Story.FitResult` instance.
            
        On success, the last call to `self.place()` will have been with the
        returned rectangle, so `self.draw()` can be used directly.
        
        Args:
        :arg fn:
            A callable taking a floating point `parameter` and returning a
            `pymupdf.Rect()`. If the rect is empty, we assume the story will
            not fit and do not call `self.place()`.

            Must guarantee that `self.place()` behaves monotonically when
            given rect `fn(parameter`) as `parameter` increases. This
            usually means that both width and height increase or stay
            unchanged as `parameter` increases.
        :arg pmin:
            Minimum parameter to consider; `None` for -infinity.
        :arg pmax:
            Maximum parameter to consider; `None` for +infinity.
        :arg delta:
            Maximum error in returned `parameter`.
        :arg verbose:
            If true we output diagnostics.
        :arg flags:
            Passed to mupdf.fz_place_story_flags(). e.g.
            zero or `mupdf.FZ_PLACE_STORY_FLAG_NO_OVERFLOW`.
        c                ó4   •— ‰sJ ‚t          d| › �¦  «         d S )Nzfit(): ©rr   )r   rè	  s    €r)   r'   zStory.fit.<locals>.logä?  s)   ø€ ØˆNˆN�7ÝÐ$˜dÐ$Ð$Ñ%Ô%Ð%Ð%Ð%r*   Nc                  ó   •— e Zd Zˆ ˆˆfd„ZdS )úStory.fit.<locals>.Statec                ó€   •— ‰| _         ‰| _        d | _        d | _        d | _        d| _        ‰r‰| _        ‰| _        d S d S r‡   )ÚpminÚpmaxÚpmin_resultÚpmax_resultr   ró  Úpmin0Úpmax0)r(   rÿ  rþ  rè	  s    €€€r)   rŒ   z!Story.fit.<locals>.State.__init__ì?  sS   ø€ Ø �”	Ø �”	Ø#'�Ô Ø#'�Ô Ø"�”Ø !�”Øð &Ø!%�D”JØ!%�D”J�J�Jð&ð &r*   Nr�   )rÿ  rþ  rè	  s   €€€r)   ÚStaterü  ë?  s8   ø€ € € € € ð	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&r*   r  zstarting. state.pmin=ú state.pmax=r   c            
     ó4  •— ‰j         �9‰j        ‰j         k    r!‰r ‰d¦  «          ‰‰j         ¦  «        } | sJ ‚‰j        }n.‰j        r‰j        nt                               ‰j        ¬¦  «        }‰r& ‰d‰j        ›d‰j        ›d‰j         ›d|›�¦  «         |S )NzCCalling update() with pmax, because was overwritten by later calls.)ró  zfinished. state.pmin0=z state.pmax0=r  z: returning result=)	rÿ  Úlast_pr  r   rÒ  r÷  ró  r  r  )rÕ  r   r'   r  r  rè	  s     €€€€r)   rG   zStory.fit.<locals>.retý?  sÇ   ø€ ØŒzÐ%Ø”< 5¤:Ò-Ð-Øð dØ˜ÐbÑcÔcÐcØ!' ¨¬
Ñ!3Ô!3�JØ%Ð%Ð%˜:ØÔ*��à.3Ô.?Ðm˜Ô*Ð*ÅUÇ_Â_Ð^cÔ^lÀ_ÑEmÔEm�Øð cØ�Ða ¤ÐaÐa°´ÐaÐa¸u¼zÐaÐaÐX^ÐaÐaÑbÔbÐbØˆMr*   c                ó   •—  ‰| ¦  «        }t          |t          ¦  «        sJ dt          |¦  «        ›d|›�¦   «         ‚|j        r1d}t                               | ‰
j        ¬¦  «        }‰r ‰d¦  «         nq‰	                     |‰¦  «        \  }}‰
xj        dz  c_        | }t                               ||‰
j        | ||¬¦  «        }‰r ‰d‰
j        d	›d
|›d| ›d|›d�	¦  «         |r| ‰
_        |‰
_	        n| ‰
_
        |‰
_        | ‰
_        |S )a  
            Evaluates `more, _ = self.place(fn(parameter))`. If `more` is
            false, then `rect` is big enough to contain `self` and we
            set `state.pmax=parameter` and return True. Otherwise we set
            `state.pmin=parameter` and return False.
            ztype(rect)=rö  F)rÖ  ró  z9update(): not calling self.place() because rect is empty.r   )rN	  r™  ró  rÖ  r÷   rÕ  zupdate(): called self.place(): z>2dz: more=rõ  r   )r>   r$  rÈ   rY	  rÒ  r÷  ró  r×  rÿ  r  rþ  r   r  )rÖ  r÷   rÕ  r   r™  rN	  r¾  Úfnr'   r(   r  rè	  s         €€€€€€r)   r  zStory.fit.<locals>.update@  s`  ø€ ð �2�i‘=”=ˆDÝ˜d¥DÑ)Ô)ÐCÐCÐ+C­d°4©j¬jÐ+CÐ+C¸DÐ+CÐ+CÑCÔCÐ)ØŒ}ð oØ"�
ÝŸš°9ÀuÄ~˜ÑVÔV�Øð VØ�CÐTÑUÔUÐUøà#Ÿzšz¨$°Ñ6Ô6‘��fØ�” !Ñ#�”Ø!%˜X�
ÝŸšØ%Ø!Ø!&¤Ø"+Ø!Ø#-ð )ñ ô �ð ð oØ�CÐm¸%¼.ÐmÐmÐmÐPTÐmÐmÐXaÐmÐmÐeiÐmÐmÐmÑnÔnÐnØð +Ø&�”
Ø$*�Ô!Ð!à&�”
Ø$*�Ô!Ø$ˆEŒLØÐr*   c                ó8   — | �| dk    r|S || z  dk    rd| z  S |  S )z•
            Returns same sign as `direction`, larger or smaller than `p` if
            direction is positive or negative respectively.
            Nr   r   r-   )r¢  Ú	directions     r)   ÚoppositezStory.fit.<locals>.opposite0@  s6   € ð
 ˆy˜A˜qšD˜DØ Ð Ø˜1‰}˜qÒ Ð Ø˜1‘u�Ø�2ˆIr*   zfinding pmin.r1  r   r   zstate.pmin=z is big enough.zfinding pmax.z No solution possible state.pmax=z$doing binary search with state.pmin=)r>   r4   ro  rþ  rÿ  rc	  )r(   r	  rþ  rÿ  r¨  rè	  r¾  r  rG   r  rÖ  r'   r  r  s   ```` ``    @@@r)   rÎ  z	Story.fitÅ?  s  øøøøøøøøø€ ð>	&ð 	&ð 	&ð 	&ð 	&õ ˜$¥¥e Ñ-Ô-Ð=°°°Ð=Ý˜$¥¥e Ñ-Ô-Ð=°°°Ð=ð
	&ð 
	&ð 
	&ð 
	&ð 
	&ð 
	&ð 
	&ð 
	&ð 
	&ñ 
	&ô 
	&ð 
	&ð �‘”ˆàð 	;ØˆCÐ9˜UœZÐ9Ð9¨5¬:Ð9Ð9Ð9Ñ:Ô:Ð:à�
Š
‰Œˆð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð#	ð #	ð #	ð #	ð #	ð #	ð #	ð #	ð #	ð #	ðJ		ð 		ð 		ð Œ:ÐàÐ-˜˜Ð,Ñ-Ô-Ð-Ø ˜ ¤¨RÑ0Ô0ˆIðØ�v˜iÑ(Ô(ð ØØ˜Q‘�	ðàð ˆv�e”jÑ!Ô!ð ØÐ@˜C˜CÐ ? 5¤:Ð ?Ð ?Ð ?Ñ@Ô@Ð@Ø�s‘u”u�àŒ:ÐàÐ-˜˜Ð,Ñ-Ô-Ð-Ø ˜ ¤¨RÑ0Ô0ˆIðØ�6˜)Ñ$Ô$ð ØØ˜Q‘�	ðàð �6˜%œ*Ñ%Ô%ð à!�”
ØÐG˜C˜CÐ F¸¼
Ð FÐ FÐ FÑGÔGÐGØ�s‘u”u�ð ÐQ�C�CÐP°E´JÐPÐPÀ%Ä*ÐPÐPÐPÑQÔQÐQð	ØŒz˜EœJÑ&¨Ò.Ð.Ø�s‘u”u�Øœ e¤jÑ0°AÑ5ˆIØˆF�9ÑÔÐð		r*   c                óp   ‡
‡‡‡— |\  ŠŠ}}|‰z
  Š|‰z
  Š
ˆ
ˆˆˆfd„}	|                       |	|||||¦  «        S )aÉ  
        Finds smallest value `scale` in range `scale_min..scale_max` where
        `scale * rect` is large enough to contain the story `self`.

        Returns a `Story.FitResult` instance with `.parameter` set to `scale`.

        :arg width:
            width of rect.
        :arg height:
            height of rect.
        :arg scale_min:
            Minimum scale to consider; must be >= 0.
        :arg scale_max:
            Maximum scale to consider, must be >= scale_min or `None` for
            infinite.
        :arg delta:
            Maximum error in returned scale.
        :arg verbose:
            If true we output diagnostics.
        :arg flags:
            Passed to Story.place().
        c                ó@   •— t          ‰‰‰| ‰z  z   ‰| ‰z  z   ¦  «        S r,   rO  )r¬  rÕ  r]  r
  r  s    €€€€r)   r	  zStory.fit_scale.<locals>.fny@  s)   ø€ Ý˜˜B  U¨5¡[Ñ 0°"°u¸V±|Ñ2CÑDÔDÐDr*   ©rÎ  )r(   r÷   rË  rÌ  r¨  rè	  r¾  r	  r  r	  rÕ  r]  r
  r  s             @@@@r)   rÓ  zStory.fit_scale_@  ss   øøøø€ ð. ‰ˆˆB��BØ�R‘ˆØ�b‘ˆð	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eà�xŠx˜˜I y°%¸À%ÑHÔHÐHr*   rÐ  c                ó\   ‡‡	‡
— |\  ŠŠ
‰|z   Š	ˆˆ	ˆ
fd„}|                       |||||¦  «        S )a�  
        Finds smallest height in range `height_min..height_max` where a rect
        with size `(width, height)` is large enough to contain the story
        `self`.

        Returns a `Story.FitResult` instance.

        :arg width:
            width of rect.
        :arg height_min:
            Minimum height to consider; must be >= 0.
        :arg height_max:
            Maximum height to consider, must be >= height_min or `None` for
            infinite.
        :arg origin:
            `(x0, y0)` of rect.
        :arg delta:
            Maximum error in returned height.
        :arg verbose:
            If true we output diagnostics.
        c                ó.   •— t          ‰‰‰‰| z   ¦  «        S r,   rO  )rÕ  r
  r	  r  s    €€€r)   r	  zStory.fit_height.<locals>.fn•@  s   ø€ Ý˜˜B  B v¡IÑ.Ô.Ð.r*   r  )r(   r]  Ú
height_minÚ
height_maxÚoriginr¨  rè	  r	  r
  r	  r  s           @@@r)   Ú
fit_heightzStory.fit_height}@  sV   øøø€ ð, ‰ˆˆBØ�%‰Zˆð	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/à�xŠx˜˜J¨
°E¸7ÑCÔCÐCr*   c                ó\   ‡‡	‡
— |\  ŠŠ	‰	|z   Š
ˆˆ	ˆ
fd„}|                       |||||¦  «        S )a©  
        Finds smallest width in range `width_min..width_max` where a rect with size
        `(width, height)` is large enough to contain the story `self`.

        Returns a `Story.FitResult` instance.
        Returns a `FitResult` instance.

        :arg height:
            height of rect.
        :arg width_min:
            Minimum width to consider; must be >= 0.
        :arg width_max:
            Maximum width to consider, must be >= width_min or `None` for
            infinite.
        :arg origin:
            `(x0, y0)` of rect.
        :arg delta:
            Maximum error in returned width.
        :arg verbose:
            If true we output diagnostics.
        c                ó.   •— t          ‰‰‰| z   ‰¦  «        S r,   rO  )r]  r
  r  r  s    €€€r)   r	  zStory.fit_width.<locals>.fn±@  s   ø€ Ý˜˜B  5¡¨"Ñ-Ô-Ð-r*   r  )r(   rÕ  Ú	width_minÚ	width_maxr  r¨  rè	  r	  r
  r  r  s           @@@r)   Ú	fit_widthzStory.fit_width™@  sV   øøø€ ð, ‰ˆˆBØ�&‰[ˆð	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.à�xŠx˜˜I y°%¸ÑAÔAÐAr*   )r\   NrÍ  Nr,   r1  rí	  )NrÍ  NNNT)NNr>  Fr   )r   Nr>  Fr   )r   NrÐ  r>  F)r/   r0   r1   rŒ   r¯  r7  rº  r6  rŠ  rÉ   rÂ  rÓ  r×  rc	  r   rç  rì  r×  r÷  rÎ  rÓ  r  r  r-   r*   r)   rÒ  rÒ  ‹>  sÄ  € € € € € ðDð Dð Dð Dð.ð .ð .ð& ðRð Rñ „\ðRðh ðð ñ „Xððð ð ð3ð 3ð 3ð 3ð
8ð 8ð 8ð 8ð>.ð .ð .ð .ð)ð )ð )ð%ð %ð %ð %ðN ðð ð ñ „\ðð> ð6ð 6ð 6ñ „\ð6ð6ð 6ð 6ð 6ð%ð %ð %ð %ð %ñ %ô %ð %ðNXð Xð Xð XðtIð Ið Ið Ið<Dð Dð Dð Dð8Bð Bð Bð Bð Bð Br*   rÒ  c                  ó¼   — e Zd Zd„ Zd„ Zd„ Zdd„Zd„ Zddd
„Zdd„Z	d d„Z
ddd„Zddd„Zddd„Zd„ Zddd„Zd„ Zd!d„Zdd„Zdd„Zd„ Zed„ ¦   «         Zd"d„ZeZdS )#r  c                ó  — t          |t          j        ¦  «        r"|d         }t          j        |¦  «        | _        n:t          |t          j        ¦  «        r|d         | _        nt          d|› �¦  «        ‚d| _        d | _        d S )Nr   úUnrecognised args: T)r­  r�   rh  r  rÄ   rg   rñ   rê   )r(   r÷  rv  s      r)   rŒ   zTextPage.__init__¸@  s~   € Ý�d�EœLÑ)Ô)ð 	:Ø˜A”wˆHÝÔ)¨8Ñ4Ô4ˆDŒIˆIÝ˜�eÔ/Ñ0Ô0ð 	:Ø˜QœˆDŒIˆIåÐ8°$Ð8Ð8Ñ9Ô9Ð9ØˆŒØˆŒˆˆr*   c                óx  — | j         }t          j        d¦  «        }t          j        |¦  «        }|dk    rt          j        ||d¦  «         nJ|dk    rt          j        ||d¦  «         n-|dk    rt          j        ||d¦  «         nt          ||¦  «         |                     ¦   «          t          |¦  «        }|S )Nr   r   r   r   rK  )
rÄ   r�   rã  rä  Úfz_print_stext_page_as_htmlÚfz_print_stext_page_as_xmlÚfz_print_stext_page_as_xhtmlÚJM_print_stext_page_as_textr  ru
  )r(   r�  Ú
this_tpager  r  r   s         r)   Ú_extractTextzTextPage._extractTextÃ@  sÁ   € Ø”Yˆ
ÝÔ! $Ñ'Ô'ˆÝŒn˜cÑ"Ô"ˆð �aŠ<ˆ<ÝÔ-¨c°:¸qÑAÔAÐAÐAØ˜Š\ˆ\ÝÔ,¨S°*¸aÑ@Ô@Ð@Ð@Ø˜Š\ˆ\ÝÔ.¨s°JÀÑBÔBÐBÐBå'¨¨ZÑ8Ô8Ð8Ø×ÒÑÔÐÝ% cÑ*Ô*ˆØˆr*   c                ó2   — t          | j        ||¦  «         d S r,   )ÚJM_make_textpage_dictrÄ   )r(   Ú	page_dictr\  s      r)   Ú_getNewBlockListzTextPage._getNewBlockListØ@  s   € Ý˜dœi¨°CÑ8Ô8Ð8Ð8Ð8r*   Fc                ód   — | j         j        | j         j        dœ}|                      ||¦  «         |S )Nrl  )r÷   r]  rÕ  r(  )r(   r\  r'  s      r)   Ú_textpage_dictzTextPage._textpage_dictÛ@  s4   € Ø"œiœo¸¼Ô9IÐJÐJˆ	Ø×Ò˜i¨Ñ-Ô-Ð-ØÐr*   c                ó6   — 	 t          j        | j        ¦  «        S )z*Return a list with text block information.)"r  r   ÚextractBLOCKSrÄ   r�   rh  rÌ   rv  rã  ÚFixed_EMPTYrÈ   ÚFZ_STEXT_BLOCK_TEXTÚfz_clear_bufferÚJM_char_bboxÚJM_rects_overlapr¯  ÚJM_append_runer¼  Úfz_union_rectr®  Úfz_append_byteru
  r/  Úi_imagerÛ  r£  r   rÆ  rô  r
  r  r	  r  rk   )r(   Úblock_nr#  Útp_rectr  rô  r\	  Ú	blockrectÚline_nÚ	last_charro   Úlinerectrú  Úcbboxr   rÔ  rß  Úlitems                     r)   r,  zTextPage.extractBLOCKSà@  s   € ð	2ÝÔ& t¤yÑ1Ô1Ð1r*   NrÎ  r5   c                óª   — |                       d¬¦  «        }|�|j        |d<   |j        |d<   |r$|d         }|                     d„ ¬¦  «         ||d<   |S )	z>Return page content as a Python dict of images and text spans.F©r\  Nr]  rÕ  rT	  c                ó:   — | d         d         | d         d         fS ©Nr/  r   r   r-   ©rÑ
  s    r)   r­	  z&TextPage.extractDICT.<locals>.<lambda>A  ó   €  q¨¤y°¤|°Q°v´Y¸q´\Ð&B€ r*   rÏ	  ©r*  r]  rÕ  rÙ  ©r(   rÁ  rÙ  r  rT	  s        r)   ÚextractDICTzTextPage.extractDICTA  sj   € à×!Ò! eÐ!Ñ,Ô,ˆØˆ>Øœ8ˆC�‰LØœIˆC�‰MØð 	#Ø˜”]ˆFØ�KŠKÐBÐBˆKÑCÔCÐCØ"ˆC�‰MØˆ
r*   rÑ  c                ó,   — |                       d¦  «        S )z%Return page content as a HTML string.r   ©r$  r.   s    r)   ÚextractHTMLzTextPage.extractHTML A  rÜ  r*   r   c           	     ó<  — d}| j         }g }|D �]}|dz  }|j        j        t          j        k    rŒ#|                     ¦   «         }d}|                     ¦   «         }|j        rd}	nd}	t          j        |¦  «        }
|
j        r|
                     ¦   «         }d}
|rÿt          j	        t          t          t          t          ¦  «        }t          j        |¦  «        sJ ‚t          j        |                     ¦   «         dd|                     ¦   «         dd¦  «        }t          j        |||¦  «        \  }}}t          j        |¦  «        }t%          |¦  «        }|dk    r>|                     ¦   «         |                     ¦   «         z  |                     ¦   «         z  }t          j        t          j        |j        j        ¦  «        ¦  «        }t/          ¦   «         }||t0          <   t3          |j        j        ¦  «        |t6          <   t9          |                     ¦   «         ¦  «        |t<          <   |                     ¦   «         |t>          <   |                     ¦   «         |t@          <   t          j!        |¦  «        |tD          <   t          j#        |¦  «        |tH          <   | %                    ¦   «         |tL          <   | '                    ¦   «         |tP          <   | )                    ¦   «         |tT          <   ||tV          <   |r||d<   |	|d<   | ,                    |¦  «         �Œ|S )	z*Return a list with image meta information.r1  r   r   TFNr  zhas-mask)-rÄ   rÌ   rÈ   r�   r.  r5  r  ró  Úfz_compressed_buffer_sizerd  rz  r{  r°  rr  r   rÆ  ry  ré  r  rE   r–  Úll_fz_keep_colorspacerÛ  r5   Údictkey_numberrg  r/  rX	  rq  Úi_transformÚdictkey_matrixÚdictkey_widthÚdictkey_heightr¦  Údictkey_colorspacer£  r  r  Údictkey_xresr  Údictkey_yresrô  Údictkey_bpcr¶  rk   )r(   r?  r6  r#  r    r\	  rÔ  Úimg_sizer  Úhas_maskÚ
compr_buffr  r€  rà  r   rÆ  r  rß  Ú
block_dicts                      r)   rD  zTextPage.extractIMGINFO$A  s™  € àˆØ”Yˆ
ØˆØð (	"ñ (	"ˆEØ�q‰LˆGØÔÔ$­Ô(AÒAÐAØØ—-’-‘/”/ˆCØˆHØ—8’8‘:”:ˆDØŒð !Ø��à �ÝÔ9¸#Ñ>Ô>ˆJØÔ$ð "Ø%×?Ò?ÑAÔA�Ø!�
Øð ;Ý”M¥/µ?ÅOÕUdÑeÔe�ÝÔ1°!Ñ4Ô4Ð4Ð4Ð4Ý”N 3§5¢5¡7¤7¨A¨q°#·%²%±'´'¸1¸aÑ@Ô@�Ý!Ô:¸3ÀÀ1ÑEÔE‘	��Q˜ÝÔ-¨cÑ2Ô2�Ý˜v™œ�Ø˜q’=�=Ø"Ÿušu™wœw¨¯ª©¬Ñ0°3·5²5±7´7Ñ:�HÝÔ#¥EÔ$?ÀÄÔ@YÑ$ZÔ$ZÑ[Ô[ˆBÝ™œˆJØ)0ˆJ•~Ñ&Ý'6°uÔ7GÔ7LÑ'MÔ'MˆJ•|Ñ$Ý):¸5×;LÒ;LÑ;NÔ;NÑ)OÔ)OˆJ•~Ñ&Ø(+¯ª©¬ˆJ•}Ñ%Ø),¯ª©¬ˆJ•~Ñ&Ý-2Ô-BÀ2Ñ-FÔ-FˆJÕ)Ñ*Ý*/Ô*BÀ2Ñ*FÔ*FˆJ•Ñ'Ø'*§x¢x¡z¤zˆJ•|Ñ$Ø'*§x¢x¡z¤zˆJ•|Ñ$Ø&)§g¢g¡i¤iˆJ•{Ñ#Ø'/ˆJ•|Ñ$Øð .Ø'-�
˜8Ñ$Ø%-ˆJ�zÑ"Ø�IŠI�jÑ!Ô!Ð!Ñ!Øˆ	r*   c                ó  ‡— ddl Šddl}|                      d¬¦  «        } G ˆfd„d|j        ¦  «        }|�|j        |d<   |j        |d<   |r$|d	         }|                     d
„ ¬¦  «         ||d	<   |                     |d|d¬¦  «        }|S )z.Return 'extractDICT' converted to JSON format.r   NFr?  c                  ó   •— e Zd Zˆ fd„ZdS )ú'TextPage.extractJSON.<locals>.b64encodec                ó�   •— t          |¦  «        t          t          fv r'‰                     |¦  «                             ¦   «         S d S r,   ©rÈ   r  r]  Ú	b64encoderò  ©r(   rr  Úbase64s     €r)   r   z/TextPage.extractJSON.<locals>.b64encode.default[A  óA   ø€ Ý˜‘7”7�u¥iÐ0Ð0Ð0Ø!×+Ò+¨AÑ.Ô.×5Ò5Ñ7Ô7Ð7ð 1Ð0r*   N©r/   r0   r1   r   ©ra  s   €r)   r_  r\  ZA  ó.   ø€ € € € € ð8ð 8ð 8ð 8ð 8ð 8ð 8r*   r_  r]  rÕ  rT	  c                ó:   — | d         d         | d         d         fS rA  r-   rB  s    r)   r­	  z&TextPage.extractJSON.<locals>.<lambda>dA  rC  r*   rÏ	  ©r   r_   r   ©Ú
separatorsr±  ry  ©ra  r}  r*  ÚJSONEncoderr]  rÕ  rÙ  Údumps©r(   rÁ  rÙ  r}  r  r_  rT	  ra  s          @r)   ÚextractJSONzTextPage.extractJSONTA  sÏ   ø€ àˆˆˆØˆˆˆØ×!Ò! eÐ!Ñ,Ô,ˆð	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8˜Ô(ñ 	8ô 	8ð 	8ð
 ˆ>Øœ8ˆC�‰LØœIˆC�‰MØð 	#Ø˜”]ˆFØ�KŠKÐBÐBˆKÑCÔCÐCØ"ˆC�‰Mà�jŠj˜¨¸È1ˆjÑMÔMˆØˆ
r*   c                óª   — |                       d¬¦  «        }|�|j        |d<   |j        |d<   |r$|d         }|                     d„ ¬¦  «         ||d<   |S )	zCReturn page content as a Python dict of images and text characters.Tr?  Nr]  rÕ  rT	  c                ó:   — | d         d         | d         d         fS rA  r-   rB  s    r)   r­	  z)TextPage.extractRAWDICT.<locals>.<lambda>rA  rC  r*   rÏ	  rD  rE  s        r)   ÚextractRAWDICTzTextPage.extractRAWDICTjA  sj   € à×!Ò! dÐ!Ñ+Ô+ˆØˆ>Øœ8ˆC�‰LØœIˆC�‰MØð 	#Ø˜”]ˆFØ�KŠKÐBÐBˆKÑCÔCÐCØ"ˆC�‰MØˆ
r*   c                ó  ‡— ddl Šddl}|                      d¬¦  «        } G ˆfd„d|j        ¦  «        }|�|j        |d<   |j        |d<   |r$|d	         }|                     d
„ ¬¦  «         ||d	<   |                     |d|d¬¦  «        }|S )z1Return 'extractRAWDICT' converted to JSON format.r   NTr?  c                  ó   •— e Zd Zˆ fd„ZdS )ú*TextPage.extractRAWJSON.<locals>.b64encodec                ó�   •— t          |¦  «        t          t          fv r'‰                     |¦  «                             ¦   «         S d S r,   r^  r`  s     €r)   r   z2TextPage.extractRAWJSON.<locals>.b64encode.default}A  rb  r*   Nrc  rd  s   €r)   r_  rt  |A  re  r*   r_  r]  rÕ  rT	  c                ó:   — | d         d         | d         d         fS rA  r-   rB  s    r)   r­	  z)TextPage.extractRAWJSON.<locals>.<lambda>†A  rC  r*   rÏ	  rg  r   rh  rj  rm  s          @r)   ÚextractRAWJSONzTextPage.extractRAWJSONvA  sÏ   ø€ àˆˆˆØˆˆˆØ×!Ò! dÐ!Ñ+Ô+ˆð	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8˜Ô(ñ 	8ô 	8ð 	8ð
 ˆ>Øœ8ˆC�‰LØœIˆC�‰MØð 	#Ø˜”]ˆFØ�KŠKÐBÐBˆKÑCÔCÐCØ"ˆC�‰MØ�jŠj˜¨¸È1ˆjÑMÔMˆØˆ
r*   c                óz   — t          |¦  «        }t          |¦  «        }t          j        | j        ||d¦  «        }|S r‡   )r`  r�   Úfz_copy_selectionrÄ   )r(   ÚpointaÚpointbr!   rÑ
  r   s         r)   ÚextractSelectionzTextPage.extractSelection‹A  s9   € Ý˜VÑ$Ô$ˆÝ˜VÑ$Ô$ˆÝÔ'¨¬	°1°a¸Ñ;Ô;ˆØˆr*   c                óÔ   — |s|                       d¦  «        S |                      ¦   «         dd…         }|                     d„ ¬¦  «         d                     d„ |D ¦   «         ¦  «        S )z%Return simple, bare text on the page.r   Nc                ó"   — | d         | d         fS )Nr   r   r-   rB  s    r)   r­	  z&TextPage.extractText.<locals>.<lambda>–A  s   €  1 Q¤4¨¨1¬ ,€ r*   rÏ	  r\   c                ó   — g | ]
}|d          ‘ŒS rç  r-   )r­   rÑ
  s     r)   r¯   z(TextPage.extractText.<locals>.<listcomp>—A  s   € Ð-Ð-Ð- ˜˜!œÐ-Ð-Ð-r*   )r$  r,  rÙ  rÜ  )r(   rÙ  rT	  s      r)   ÚextractTextzTextPage.extractText‘A  sq   € àð 	(Ø×$Ò$ QÑ'Ô'Ð'Ø×#Ò#Ñ%Ô% a a aÔ(ˆØ�ŠÐ.Ð.ˆÑ/Ô/Ð/Ø�wŠwÐ-Ð- fÐ-Ñ-Ô-Ñ.Ô.Ð.r*   c                ó¨   — | j         }t          |t          j        ¦  «        sJ ‚t	          |¦  «        }t          ||¦  «        }t          |¦  «        }|S r,   )rÄ   r>   r�   r  r   ÚJM_copy_rectangleÚ PyUnicode_DecodeRawUnicodeEscape)r(   r÷   r#  rË  r   r    s         r)   rª  zTextPage.extractTextbox™A  sP   € Ø”Yˆ
Ý˜*¥eÔ&7Ñ8Ô8Ð8Ð8Ð8Ý˜tÑ$Ô$ˆÝ! *¨dÑ3Ô3ˆÝ-¨eÑ4Ô4ˆØˆ	r*   c                ó8   — 	 t          j        | j        |¦  «        S )z)Return a list with text word information.)r  r   ÚextractWORDSrÄ   r�   rh  r-  rÌ   rv  rã  rÈ   r.  r/  r0  r1  r¯  r¼  ÚJM_is_word_delimiterÚJM_is_rtl_charr®  ÚJM_append_wordr2  r3  )r(   Ú
delimitersÚbuflenÚlast_char_rtlr6  Úwbboxr#  r7  rô  rN  r\	  r9  ro   Úword_nrú  r<  Úword_delimiterÚthis_char_rtls                     r)   r…  zTextPage.extractWORDS¡A  s   € ð	=ÝÔ% d¤i°Ñ<Ô<Ð<r*   c                ó,   — |                       d¦  «        S )z&Return page content as a XHTML string.rK  rH  r.   s    r)   ÚextractXHTMLzTextPage.extractXHTMLÙA  rÜ  r*   c                ó,   — |                       d¦  «        S )z$Return page content as a XML string.r   rH  r.   s    r)   Ú
extractXMLzTextPage.extractXMLÝA  rÜ  r*   c                ó†   — | j         }t          j        |j        j        ¦  «        }t          j        |¦  «        }d|_        |S )zTextPage current poolsize.N)rÄ   r�   ÚPoolrÌ   ÚpoolÚfz_pool_size)r(   rß  r–  r¸  s       r)   ÚpoolsizezTextPage.poolsizeáA  s:   € à”	ˆÝŒz˜%Ô*Ô/Ñ0Ô0ˆÝÔ! 4Ñ(Ô(ˆØˆŒØˆr*   c                óh   — | j         }|j        j        }t          |¦  «        }t	          |¦  «        }|S )zPage rectangle.)rÄ   rÌ   rv  rg  r$  )r(   r#  rv  r  s       r)   r÷   zTextPage.rectéA  s3   € ð ”Yˆ
ØÔ(Ô1ˆÝ˜hÑ'Ô'ˆÝ�3‰iŒiˆàˆ
r*   r   c                ó„  — t          | j        |¦  «        }|s|S t          |¦  «        }t          |¦  «        D ])}t	          ||         ¦  «        }|r|||<   Œ|j        ||<   Œ*|r|S d}||dz
  k     rO||         }||dz            }	|j        |	j        k    s
||	z  j        r|dz  }Œ<||	z  ||<   ||dz   = |dz  }||dz
  k     °O|S )z)Locate 'needle' returning rects or quads.r   r   )ÚJM_search_stext_pagerÄ   r7   rL  rû  r÷   r  rY	  )
r(   ÚneedleÚhit_maxrk	  r  rB   r®   r’  Úv1Úv2s
             r)   r  zTextPage.searchóA  sÿ   € å" 4¤9¨fÑ5Ô5ˆØð 	ØˆJÝ�C‘”ˆÝ�u‘”ð 	 ð 	 ˆAÝ�S˜”V‘”ˆAØð  Ø��A‘�àœ��A‘�Øð 	ØˆJØˆØ�%˜!‘)ŠmˆmØ�Q”ˆBØ�Q˜‘U”ˆBØŒu˜œŠ~ˆ~ " r¡'Ô!3ˆ~Ø�Q‘�ØØ˜"‘WˆC�‰FØ�A˜‘E�
Ø�Q‰JˆEð �%˜!‘)Šmˆmð ˆ
r*   rÆ  r½  r‰
  r…
  r1  r,   )r   r   )r/   r0   r1   rŒ   r$  r(  r*  r,  rF  rI  rD  rn  rq  rw  r|  r€  rª  r…  r‘  r“  r˜  r6  r÷   r  ÚextractTEXTr-   r*   r)   r  r  ¶@  s¥  € € € € € ð	ð 	ð 	ðð ð ð*9ð 9ð 9ðð ð ð ð
2ð 2ð 2ðh
ð 
ð 
ð 
ð 
ð$ð $ð $ð $ð.ð .ð .ð .ð`ð ð ð ð ð,
ð 
ð 
ð 
ð 
ðð ð ð ð ð*ð ð ð/ð /ð /ð /ð /ðð ð ð6ð 6ð 6ð 6ðp$ð $ð $ð $ð$ð $ð $ð $ðð ð ð ðð ñ „Xððð ð ð ð4 €K€K€Kr*   r  c                  ód   — e Zd Zd$d„Zed„ ¦   «         Zd%d„Zd&d	„Zd
„ Z	 	 	 	 	 	 	 	 d'd(d!„Z	d)d#„Z
dS )*rQ  r   Nc                óŠ  — t          j        ¦   «         | _        || _        || _        t          |¦  «        | _        t          ddddd| j        j        ¦  «        | _	        | j	         | _
        t          ¦   «         | _        d| j        _        t          ¦   «         | _        d| j        _        t          ¦   «         | _        d| _        dS )z;Stores text spans for later output on compatible PDF pages.r   r   r1  z'Position following last text insertion.zAccumulated area of text spans.TN)r�   Úfz_new_textrÄ   rV  r  r$  r÷   ru  rÕ  rÞ  r€  rì  rW  rª  rS  rØ  Ú
used_fontsrñ   )r(   rð  rV  r  s       r)   rŒ   zTextWriter.__init__B  s–   € åÔ%Ñ'Ô'ˆŒ	àˆŒØˆŒ
Ý˜‘O”OˆŒ	Ý˜!˜Q  2 q¨$¬)Ô*:Ñ;Ô;ˆŒØ”X�IˆŒ	Ý™'œ'ˆŒØ"KˆŒÔÝ™œˆŒà!BˆŒÔÝ™%œ%ˆŒØˆŒˆˆr*   c                óº   — t          t          j        | j        t          j        d ¦  «        t          j        ¦   «         ¦  «        ¦  «        }t          |¦  «        }|S r,   )rg  r�   Úfz_bound_textrÄ   ÚFzStrokeStaterr  r$  rO  s     r)   Ú_bboxzTextWriter._bbox#B  sF   € å�uÔ2°D´I½uÔ?RÐSWÑ?XÔ?XÕZ_ÔZhÑZjÔZjÑkÔkÑlÔlˆÝ�3‰iŒiˆØˆ
r*   rú  r   c           
     ó8  — t          |¦  «        | j        z  }|€t          d¦  «        }|j        s	 t'          d|j        › d�¦  «        ‚|r9|                      |¦  «        }d                     t-          |¦  «        ¦  «        }d}t/          j        |¦  «        }	t3          |¦  «        }
t/          j        |dd||
j        |
j        ¦  «        }d}d}|dk    r&t/          j        | j        |j        ||||||	¦  «        }n t=          | j        |j        ||||||	¦  «        }t?          |¦  «        }t          |dd…         ¦  «        | j         z  | _!        | j"        | j         z  | _#        | j#        | j!        f}|j$        d         dk    r| j%         &                    |¦  «         |S )z8Store 'text' at point 'pos' using 'font' and 'fontsize'.NrÔ  r   zfont.this.m_internal.name=zfont.this.m_internal.t3matrix=zfont.this.m_internal.bbox=z!font.this.m_internal.glyph_count=z$font.this.m_internal.use_glyph_bbox=z!font.this.m_internal.width_count=z#font.this.m_internal.width_default=z font.this.m_internal.has_digest=zUnsupported font font.name=zAUnsupported font cppyy.gbl.mupdf_font_name(font.this.m_internal)=zUnsupported font 'r\  r\   r×  rÒ
  r   )'rì  r€  r2  rý
  r'   rÄ   rÌ   r   Út3matrixr/  r
  Úuse_glyph_bboxÚwidth_countÚwidth_defaultÚ
has_digestrœ   rø
  rù
  Úmupdf_font_namerÃ   Ú	clean_rtlrÜ  rÜ  r�   r�  r`  Úfz_make_matrixr(  r)  Úfz_show_stringÚJM_show_string_csrq  rÞ  rW  r¨  rS  r¾  r¤  r=  )r(   rk  r   rW  rú   r+  Úright_to_leftrÉ
  rø
  r*  r¢  ÚtrmÚ
markup_dirrÈ
  r  s                  r)   rk   zTextWriter.append)B  s“  € å�C‰jŒj˜4œ9Ñ$ˆàˆ<Ý˜‘<”<ˆDØÔð 	Aðaõ Ð?°$´)Ð?Ð?Ð?Ñ@Ô@Ð@Øð 	Ø—>’> $Ñ'Ô'ˆDØ—7’7�8 D™>œ>Ñ*Ô*ˆDØˆMåÔ1°(Ñ;Ô;ˆÝ˜SÑ!Ô!ˆÝÔ" 8¨Q°°8¸Q¼SÀ!Ä#ÑFÔFˆØˆ
ØˆØ˜Š?ˆ?ÝÔ&¨¬	°4´9¸cÀ4ÈÐP]Ð_iÐkoÑpÔpˆCˆCå# T¤Y°´	¸3ÀÀeÈ]Ð\fÐhlÑmÔmˆCÝ Ñ$Ô$ˆå  B C C¤™/œ/¨D¬HÑ4ˆŒØœ d¤hÑ.ˆŒØŒn˜dœoÐ-ˆØŒ:�fÔ Ò"Ð"ØŒO×Ò Ñ%Ô%Ð%Øˆ
r*   Fc           	     óˆ   — |dz  }|D ]-}|                       ||||||¬¦  «         |xj        |z  c_        Œ.| j        | j        fS )Nr‘  )rW  rú   r+  rÉ
  )rk   r)  rS  rW  )	r(   rk  r   rW  rú   r+  rÉ
  rq  r¼  s	            r)   ÚappendvzTextWriter.appendvUB  sc   € Ø˜S‘.ˆØð 	ð 	ˆAØ�KŠK˜˜Q T°HØ!¨jð ñ :ô :ð :àˆEŒE�WÑˆEŒEˆEØŒ~˜tœÐ.Ð.r*   c                óF  — |s|S |                      d¦  «        }g }t          t          |¦  «        ¦  «        D ]t}||         }t          |¦  «        dk     sWt          d„ |D ¦   «         ¦  «        dk    s:d                     t          |¦  «        ¦  «        ||<   |                     |¦  «         Œug }t          t          |¦  «        ¦  «        D ]À}|g k    r|                     ||         ¦  «         Œ$||         |d         dz   k    rWt          |¦  «        dk    r:t          ||d         |d         dz   …         ¦  «        ||d         |d         dz   …<   ||         g}Œ�||         |d         dz   k    r|                     ||         ¦  «         ŒÁd                     |¦  «        }|S )	a)  Revert the sequence of Latin text parts.

        Text with right-to-left writing direction (Arabic, Hebrew) often
        contains Latin parts, which are written in left-to-right: numbers, names,
        etc. For output as PDF text we need *everything* in right-to-left.
        E.g. an input like "<arabic> ABCDE FG HIJ <arabic> KL <arabic>" will be
        converted to "<arabic> JIH GF EDCBA <arabic> LK <arabic>". The Arabic
        parts remain untouched.

        Args:
            text: str
        Returns:
            Massaged string.
        r³   r   c                ó,   — g | ]}t          |¦  «        ‘ŒS r-   rX  rG  s     r)   r¯   z(TextWriter.clean_rtl.<locals>.<listcomp>tB  s   € Ð&9Ð&9Ð&9°!¥s¨1¡v¤vÐ&9Ð&9Ð&9r*   r
  r\   r1  r   r   )r6   rL  r7   rê  rÜ  rÜ  rk   )r(   r   Úwordsr8  r®   r   Úidx2s          r)   r°  zTextWriter.clean_rtl]B  sŸ  € ð ð 	ØˆKà—
’
˜3‘”ˆØˆÝ•s˜5‘z”zÑ"Ô"ð 	ð 	ˆAØ�a”ˆAå˜‘F”F˜Q’J�J¥#Ð&9Ð&9°qÐ&9Ñ&9Ô&9Ñ":Ô":¸SÒ"@Ð"@ØŸ7š7¥8¨A¡;¤;Ñ/Ô/��a‘Ø—
’
˜1‘”�øð ˆÝ•s˜3‘x”x‘”ð 	$ð 	$ˆAØ�rŠzˆzØ—’˜C œFÑ#Ô#Ð#Ð#à�Q”˜$˜rœ( Q™,Ò&Ð&Ý�t‘9”9˜q’=�=Ý4<Ø˜d 1œg¨¨R¬°1©Ð4Ô5ñ5ô 5�E˜$˜qœ' D¨¤H¨q¡LÐ0Ñ1ð ˜Aœ�x��à�Q”˜4 œ8 a™<Ò'Ð'Ø—’˜C œFÑ#Ô#Ð#øà�xŠx˜‰ŒˆØˆr*   rV  ú'TextWriter'r÷   r¼   r   rò  rk  rº   rW  útyping.Optional[Font]rú   ro  rk  r¿  r  r4   Úwarnrç   r´  rÉ
  rÎ  rµ   c                ó|	  ‡ ‡‡‡
‡%‡&‡'‡(— t          |¦  «        }|j        rt          d¦  «        ‚t          ‰¦  «        t          urt	          d¦  «        Šˆˆˆ
fd„Š(ˆˆˆ
fd„Š&ˆˆˆ
ˆ fd„Š%‰dz  } ‰(d¦  «        }|j        |z
  Š'|j        |z   }ˆ&fd„}ˆ%ˆ'ˆ(fd	„}‰j        }‰j        }|s||z
  d
k    rd}n||z
  }n|}‰|z  }‰'}|�t          |¦  «        }n|j
        |‰|z  fz   }||vrt          d¦  «        ‚|t          k    rd}n|t          k    rd}nd}t          |¦  «        t          u r|                     ¦   «         }n.g }|D ])}|                     |                     ¦   «         ¦  «         Œ*t!          |j        |j        z
  |z  ¦  «        d
z   }g }g }t'          |¦  «        D �]¨\  }}|dv rG|                     ||f¦  «         |j        |z
  }|                     t+          |¦  «        d
z
  ¦  «         ŒQ|dk    r|j        |j        z
  }n
|j        |z
  }|	r‰                      |¦  «        } ‰(|¦  «        }||k    r=|                     ||f¦  «         |                     t+          |¦  «        d
z
  ¦  «         ŒÖ|                     d¦  «        } |||¦  «        \  }}t+          |¦  «        }	 d                     |d|…         ¦  «        } t7          |d|…         ¦  «        ||d
z
  z  z   }!|!|k    r=|                     | |!f¦  «         ||d…         }||d…         }t+          |¦  «        }d} n|d
z  }t+          |¦  «        dk    rn|sJ ‚Œž�Œªt+          |¦  «        }"|"|k    r0d|› d|"› d�}#|€n$|rt9          d|#z   ¦  «         nt          |#¦  «        ‚t          ¦   «         }$|t+          |¦  «        d
z
  gz  }t;          |¦  «        D ]õ}	 |                     d¦  «        \  }}n*# t>          $ r t@          dk    rtC          ¦   «          Y  n´w xY w|	r"d                     tE          |¦  «        ¦  «        }|dk    r|}$|tF          k    r.||vr*|‰'k     r$ ||$|¦  «         ||$_        |$xj        |z  c_        Œ«|dk    s|j        |k    r|$xj        ||z
  |z  z  c_         ‰%|$|¦  «         ||$_        |$xj        |z  c_        Œö|S )ay  Fill a rectangle with text.

        Args:
            writer: pymupdf.TextWriter object (= "self")
            rect: rect-like to receive the text.
            text: string or list/tuple of strings.
            pos: point-like start position of first word.
            font: pymupdf.Font object (default pymupdf.Font('helv')).
            fontsize: the fontsize.
            lineheight: overwrite the font property
            align: (int) 0 = left, 1 = center, 2 = right, 3 = justify
            warn: (bool) text overflow action: none, warn, or exception
            right_to_left: (bool) indicate right-to-left language.
        zfill rect must not empty.rÔ  c                ó4   •— ‰                      | ‰‰¬¦  «        S )zReturn length of a string.©rú   rÉ
  )r  ©r(  rW  rú   rÉ
  s    €€€r)   r  z(TextWriter.fill_textbox.<locals>.textlen¬B  s'   ø€ à×#Ò#Ø˜H°ð $ñ ô ð r*   c                ó4   •— ‰                      | ‰‰¬¦  «        S )z5Return list of single character lengths for a string.rÂ  )rË
  rÃ  s    €€€r)   rË
  z-TextWriter.fill_textbox.<locals>.char_lengths²B  s   ø€ à×$Ò$ Q°ÀjÐ$ÑQÔQÐQr*   c                ó<   •— ‰                      | |‰‰‰¬¦  «        }|S )N)rW  rú   rÉ
  râ  )rk  r   rG   rW  rú   rÉ
  rV  s      €€€€r)   Úappend_thisz,TextWriter.fill_textbox.<locals>.append_this¶B  s-   ø€ Ø—-’-Ø˜ D°8È
ð  ñ ô ˆCð ˆJr*   çš™™™™™É?r³   c                óÚ  •— g }g }|D ]à} ‰|¦  «        }t          |¦  «        }|| k    r+|                     |¦  «         |                     |¦  «         ŒMt          |¦  «        }|dk    r~t          |d|…         ¦  «        }|| k    rV|                     |d|…         ¦  «         |                     |¦  «         ||d…         }||d…         }t          |¦  «        }n|dz  }|dk    °~Œá||fS )z.Cut any word in pieces no longer than 'width'.r   Nr   )rL  rk   r7   )	r]  r»  ÚnwordsÚword_lengthsr   Úwl_lstÚwlrE   rË
  s	           €r)   Ú
norm_wordsz+TextWriter.fill_textbox.<locals>.norm_wordsÁB  s  ø€ àˆFØˆLØð ð �Ø%˜ a™œ�Ý˜‘[”[�Ø˜’;�;Ø—M’M !Ñ$Ô$Ð$Ø ×'Ò'¨Ñ+Ô+Ð+Øõ ˜‘K”K�Ø˜!’e�eÝ˜V B Q BœZ™œ�BØ˜U’{�{ØŸš a¨¨¨¤eÑ,Ô,Ð,Ø$×+Ò+¨BÑ/Ô/Ð/Ø˜a˜b˜bœE˜Ø!'¨¨¨¤˜Ý ™KœK˜˜à˜Q™˜ð ˜!’e�eøð ˜<Ð'Ð'r*   c                ó>  •— d„ |                      d¦  «        D ¦   «         }t          |¦  «        }|dk    rdS |dk    r ‰
| |d         ¦  «         dS t          ˆfd„|D ¦   «         ¦  «        }|dz
  }‰|z
  |z  }|D ] } ‰
| |¦  «        \  }}	|	j        |z   | _        Œ!dS )zJustified output of a line.c                ó   — g | ]
}|d k    ¯|‘ŒS r¤
  r-   )r­   r   s     r)   r¯   zCTextWriter.fill_textbox.<locals>.output_justify.<locals>.<listcomp>ÞB  s   € Ð;Ð;Ð;˜1°1¸²7°7�Q°7°7°7r*   r³   r   Nr   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r-   r-   )r­   r   r  s     €r)   r¯   zCTextWriter.fill_textbox.<locals>.output_justify.<locals>.<listcomp>åB  s!   ø€ Ð0Ð0Ð0 Q�g�g˜a‘j”jÐ0Ð0Ð0r*   )r6   r7   rL  r(  )r•  ro   r»  rÉ  rí  ÚgapsÚgaplr   r  r�  rÆ  Ú	std_widthr  s             €€€r)   Úoutput_justifyz/TextWriter.fill_textbox.<locals>.output_justifyÛB  sÐ   ø€ ð <Ð; §
¢
¨3¡¤Ð;Ñ;Ô;ˆEÝ˜‘Z”ZˆFØ˜Š{ˆ{Ø�Ø˜Š{ˆ{Ø�˜E 5¨¤8Ñ,Ô,Ð,Ø�ÝÐ0Ð0Ð0Ð0¨%Ð0Ñ0Ô0Ñ1Ô1ˆBØ˜A‘:ˆDØ ‘N dÑ*ˆDØð &ð &�Ø#˜ E¨1Ñ-Ô-‘��2Øœ$ ™+�”�ØˆFr*   r   r‘  NzText must start in rectangle.r’  rŸ  r   )r\   r³   TzOnly fitting ú of z lines.z	Warning: r   r\   )$r$  rY	  rÃ   rÈ   r2  r]  r
  r=  r>  rì  rí  rA  rB  rÑ  rÞ  rd  r4   r  r)  ró  rk   r7   r	  r(  r°  r6   rÜ  rL  rr   rL  rN  rø  r
  rv   rÜ  rC  ))rV  r÷   r   rk  rW  rú   rk  r  r¿  r´  rÉ
  Ú	toleranceÚ	space_lenÚ	std_startrÍ  rÔ  rU  rV  rq  Ú
LINEHEIGHTr]  r-  Ú	textlinesro   Ú	max_linesÚ	new_linesÚ
no_justifyr®   rí  r»  rÊ  rE   Úline0rÌ  r  r˜   r•  rÆ  rË
  rÓ  r  s)   `   ``    `                          @@@@r)   Úfill_textboxzTextWriter.fill_textbox‹B  s  øøøøøøøø€ õ6 �D‰zŒzˆØŒ=ð 	:ÝÐ8Ñ9Ô9Ð9Ý�‰:Œ:�TÐ!Ð!Ý˜‘<”<ˆDð	ð 	ð 	ð 	ð 	ð 	ð 	ð	Rð 	Rð 	Rð 	Rð 	Rð 	Rð 	Rð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð ˜s‘Nˆ	Ø�G˜C‘L”Lˆ	Ø”J Ñ*ˆ	Ø”G˜iÑ'ˆ	ð	(ð 	(ð 	(ð 	(ð 	(ð4	ð 	ð 	ð 	ð 	ð 	ð 	ð$ ŒmˆØŒnˆØð 	!Ø�S‰y˜AŠ~ˆ~Ø��à ™)��à ˆGà Ñ'ˆ
Øˆð ˆ?Ý˜‘*”*ˆCˆCà”'˜Y¨°3©Ð7Ñ7ˆCØ�dˆ?ˆ?ÝÐ<Ñ=Ô=Ð=ð Õ%Ò%Ð%ØˆFˆFØÕ&Ò&Ð&ØˆFˆFàˆFõ �‰:Œ:�ÐÐØŸšÑ)Ô)ˆIˆIàˆIØð 4ð 4�Ø× Ò  §¢Ñ!2Ô!2Ñ3Ô3Ð3Ð3å˜œ 3¤5™¨JÑ6Ñ7Ô7¸!Ñ;ˆ	àˆ	Øˆ
Ý  Ñ+Ô+ð (	ñ (	‰GˆAˆtØ�yÐ Ð Ø× Ò  $¨	Ð!2Ñ3Ô3Ð3Øœ
 YÑ.�Ø×!Ò!¥3 y¡>¤>°AÑ#5Ñ7Ô7Ð7ØØ�AŠvˆvØœ #¤%™��àœ
 YÑ.�àð .Ø×'Ò'¨Ñ-Ô-�Ø�˜‘”ˆBØ�UŠ{ˆ{Ø× Ò  $¨ Ñ,Ô,Ð,Ø×!Ò!¥3 y¡>¤>°AÑ#5Ñ7Ô7Ð7Øð —J’J˜s‘O”OˆEð #- *¨U°EÑ":Ô":ÑˆE�<å�E‘
”
ˆAðØŸš  r¨ r¤Ñ+Ô+�Ý˜ b q bÔ)Ñ*Ô*¨Y¸!¸a¹%Ñ-@Ñ@�Ø˜’;�;Ø×$Ò$ e¨R [Ñ1Ô1Ð1Ø! ! " "œI�EØ#/°°°Ô#3�LÝ˜E™
œ
�AØ �E�Eà˜‘F�Aå�u‘:”: ’?�?ØØ���qðñ õ �Y‘”ˆØ�IÒÐØ@ )Ð@Ð@°Ð@Ð@Ð@ˆCØˆ|ØØð &Ý˜ cÑ)Ñ*Ô*Ð*Ð*å  ‘o”oÐ%å‘”ˆØ•s˜9‘~”~¨Ñ)Ð*Ñ*ˆ
Ý�yÑ!Ô!ð 	"ð 	"ˆAðØ$Ÿ=š=¨Ñ+Ô+‘��b�bøÝð ð ð Ý'¨1Ò,Ð,µÑ0@Ô0@Ð0@Ø��ðøøøð ð /Ø—w’w�x¨™~œ~Ñ.Ô.�à�AŠvˆvØ�àÕ*Ò*Ð*¨q¸
Ð/BÐ/BÀrÈIÂ~À~Ø�˜u dÑ+Ô+Ð+Ø#�”Ø�”˜:Ñ%�”Øà�1Šuˆu˜œ Ò*Ð*Ø�”˜E B™J¨&Ñ0Ñ0�”àˆK˜˜tÑ$Ô$Ð$ØˆEŒGØˆGŒG�zÑ!ˆGŒGˆGàÐs   Ï	O"Ï"#P	ÐP	r1  c	                ó(  — t          |¦  «         t          | j        |j        z
  ¦  «        dk    rt          d¦  «        ‚|�dt	          |¦  «        t
          t          fvs8t	          |d         ¦  «        t          ust	          |d         ¦  «        t          urt          d¦  «        ‚|�|�t          d¦  «        ‚t          |dd¦  «        �|d	k    r| j
        }|€| j        }	 |                     ¦   «         }	d}
|dk    r|dk     r|}
d}g d
¢}|rt          |¦  «        \  }}|dk    rt          j        ¦   «         }n-|dk    rt          j        ¦   «         }nt          j        ¦   «         }t          j        |	                     ¦   «         d¦  «        }t          j        d¦  «        }t          j        |	                     ¦   «         t          j        ¦   «         ||¦  «        }t          j        || j        t          j        ¦   «         |||
t          j        t          j        ¦  «        ¦  «         t          j        |¦  «         t9          |	|¦  «        }t;          |¦  «        }||f}|}|d         }|d         }|\  }}|                     ¦   «         }|                     |¦  «        }|�	d|› d�}d}ndx}}dg}|r|                      |¦  «         |j!        }|j"        dv r|j        j#        |j        j$        z
  }nd}|j%        }tM          |¦  «        s|j'        dk    s|dk    r=|                      dtQ          |j)        |j*        |j'        z   |z
  f¦  «        › d�¦  «         |rM|d         | j+        z  } t          dd¦  «         ,                    | j)        | j*        ¦  «        }| |d         z  |z  }|s|r2|                      tQ          t[          |¦  «        ¦  «        dz   ¦  «         |D �]&}!|! .                    d¦  «        rŒ|!dk    r/|                      |!¦  «         |                      |d›d�¦  «         ŒN|! .                    d¦  «        r;t_          |! 0                    ¦   «         d         dd…         ¦  «        |z   }"d|"d›d�}!�ns|! .                    d¦  «        r¢|! 0                    ¦   «         }#tc          |#d         ¦  «        }$|dk    r|$dz  }%nd}%|                      tQ          |%¦  «        dz   ¦  «         t_          |#d         dd…         ¦  «        |z   }&d  2                    d!|&d›�g|#dd…         z   ¦  «        }!n¼|! .                    d"¦  «        r*|                      |! 3                    d#d$¦  «        ¦  «         n}|! .                    d%¦  «        r*|                      |! 3                    d%d&¦  «        ¦  «         n>|! .                    d'¦  «        r)|                      |! 3                    d'd(¦  «        ¦  «         |                      |!¦  «         �Œ(|r|                      |¦  «         |                      d)¦  «         d* 2                    |¦  «         4                    d+¦  «        }tj           6                    |||¬,¦  «         d}| j7        D ]}&tq          ||&¦  «         Œ|S )-aÚ  Write the text to a PDF page having the TextWriter's page size.

        Args:
            page: a PDF page having same size.
            color: override text color.
            opacity: override transparency.
            overlay: put in foreground or background.
            morph: tuple(Point, Matrix), apply a matrix with a fixpoint.
            matrix: Matrix to be used instead of 'morph' argument.
            render_mode: (int) PDF render mode operator 'Tr'.
        r>  zincompatible page rectNr   r   z%morph must be (Point, Matrix) or Nonez$only one of matrix, morph is allowedrj  r1  r  r   rK  r   r   rf  z BDCÚEMCr\   r’  r`  r]  z cmÚBTr
  z Trz gsz/Alpú Tfrï  z wr   r³   z/Fz rgrÿ  ÚRGz gz Gz kz Krm  r%   rÏ  )rý  )9rf  rï  r÷   rÃ   rÈ   rµ   r´   rì  ru  rì   rV  r  ra  r;  r�   rÔ  Úfz_device_cmykÚfz_device_grayrS  r*  rã  Úpdf_new_pdf_devicerr  Úfz_fill_textrÄ   rî  Úfz_default_color_paramsrÝ  ÚJM_merge_resourcesru
  rÞ  rÓ  rk   rÉ  rP  rÕ  r]  rv  rç   r  r¶   r(  r)  r€  r˜  r2  rß  r4   r6   ro  rÜ  rà  rÈ  r  ra  r¤  Úrepair_mono_font)'r(   rÖ   r  rV  rý  rð  rÙ  rñ  rÅ  r«  rÜ  ÚncolÚ	dev_colorrÛ  ra  rw  rà  Úmax_numsÚcont_stringr   r  rx  Úmax_alpÚmax_fontÚold_cont_linesr|  r}  r~  Únew_cont_linesrÁ  r¨  r8  r¢  ro   Úalpr€  rù  r   rW  s'                                          r)   rR  zTextWriter.write_textmC  s©  € õ 	�DÑÔÐÝˆtŒy˜4œ9Ñ$Ñ%Ô%¨Ò,Ð,ÝÐ5Ñ6Ô6Ð6ØÐÝ�U‘”¥E­4 =Ð0Ð0Ý˜E !œH‘~”~­UÐ2Ð2Ý˜E !œH‘~”~­VÐ3Ð3å Ð!HÑIÔIÐIØÐ %Ð"3ÝÐCÑDÔDÐDÝ�7˜K¨Ñ.Ô.Ð6¸'ÀRº-¸-Ø”lˆGØˆ=Ø”JˆEð#	Ø—n’nÑ&Ô&ˆGØˆEØ˜!Š|ˆ| ¨!¢ Ø�ØˆDØ$˜˜ˆIØð ?Ý"7¸Ñ">Ô">‘��iØ�qŠyˆyÝ"Ô0Ñ2Ô2�
�
Ø˜’�Ý"Ô1Ñ3Ô3�
�
å"Ô1Ñ3Ô3�
åÔ*¨7¯;ª;©=¬=¸!Ñ<Ô<ˆIÝÔ*¨4Ñ0Ô0ˆHÝÔ*¨G¯KªK©M¬M½5¼>Ñ;KÔ;KÈYÐX`ÑaÔaˆCåÔØØ”IÝ”NÑ$Ô$ØØØÝÔ'­Ô(EÑFÔFñô ð õ Ô! 3Ñ'Ô'Ð'õ *¨7°IÑ>Ô>ˆHÝ0°(Ñ;Ô;ˆKØ Ð,ˆFØˆCà�q”6ˆØ�a”&ˆØ$Ñˆ�Ø ×+Ò+Ñ-Ô-ˆà×,Ò,¨RÑ0Ô0ˆØÐØ'˜'Ð'Ð'Ð'ˆCØˆCˆCàˆNˆC�#à˜ˆØð 	'Ø×!Ò! #Ñ&Ô&Ð&àÔ"ˆØŒ=˜IÐ%Ð%Ø”IÔ$ t¤y¤Ñ6ˆEˆEàˆEØŒ]ˆÝ�‰8Œ8ð 	[�r”u ’z�z U¨a¢Z ZØ×!Ò!Ð"Y­Y¸¼¸b¼dÀRÄU¹lÈUÑ>RÐ7SÑ-TÔ-TÐ"YÐ"YÐ"YÑZÔZÐZàð 	/Ø�a”˜4œ9Ñ$ˆAÝ˜1˜a‘L”L×-Ò-¨a¬c°1´3Ñ7Ô7ˆEØ�V˜e AœhÑ&¨Ñ.ˆFØð 	G�Fð 	GØ×!Ò!¥)­H°VÑ,<Ô,<Ñ"=Ô"=ÀÑ"EÑFÔFÐFà"ð 	(ñ 	(ˆDØ�}Š}˜UÑ#Ô#ð ØØ�tŠ|ˆ|Ø×%Ò% dÑ+Ô+Ð+Ø×%Ò%¨Ð&;Ð&;Ð&;Ð&;Ñ<Ô<Ð<ØØ�}Š}˜UÑ#Ô#ð @Ý˜$Ÿ*š*™,œ, qœ/¨!¨"¨"Ô-Ñ.Ô.°Ñ8�Ø(˜cÐ(Ð(Ð(Ð(�‘Ø—’˜uÑ%Ô%ð @Ø—z’z‘|”|�Ý˜d 1œg™œ�Ø !Ò#Ð#Ø ™�A�Aà�AØ×%Ò%¥i°¡l¤l°TÑ&9Ñ:Ô:Ð:Ý˜4 œ7 1 2 2œ;Ñ'Ô'¨(Ñ2�Ø—x’x  d    °$°q°r°r´(Ñ :Ñ;Ô;��Ø—’˜uÑ%Ô%ð @Ø×%Ò% d§l¢l°4¸Ñ&>Ô&>Ñ?Ô?Ð?Ð?Ø—’˜tÑ$Ô$ð @Ø×%Ò% d§l¢l°4¸Ñ&>Ô&>Ñ?Ô?Ð?Ð?Ø—’˜tÑ$Ô$ð @Ø×%Ò% d§l¢l°4¸Ñ&>Ô&>Ñ?Ô?Ð?Ø×!Ò! $Ñ'Ô'Ð'Ñ'Øð 	'Ø×!Ò! #Ñ&Ô&Ð&Ø×Ò˜eÑ$Ô$Ð$Ø—)’)˜NÑ+Ô+×2Ò2°7Ñ;Ô;ˆÝ×Ò˜t W°gÐÑ>Ô>Ð>ØˆØ”Oð 	)ð 	)ˆDÝ˜T 4Ñ(Ô(Ð(Ð(Øˆ
r*   rŽ  )Nrú  Nr   r   )Nrú  NF)NNrú  Nr   NFF)rV  r½  r÷   r¼   r   rò  rk  rº   rW  r¾  rú   ro  rk  r¿  r  r4   r¿  rç   r´  rç   rÉ
  rç   rÎ  rµ   )Nr1  r   NNr   r   )r/   r0   r1   rŒ   r6  r¨  rk   r¸  r°  rß  rR  r-   r*   r)   rQ  rQ  B  sÏ   € € € € € ðð ð ð ð" ðð ñ „Xðð
*ð *ð *ð *ðX/ð /ð /ð /ð,ð ,ð ,ðd #Ø*.Ø Ø#'ØØØ"'Ø$ð`ð `ð `ð `ð `ðDDð Dð Dð Dð Dð Dr*   rQ  c                  óÈ  — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	ddddddd	œd
„Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd,d„Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zed „ ¦   «         Zed!„ ¦   «         Z d"„ Z!d#„ Z"d$„ Z#ed%„ ¦   «         Z$ed&„ ¦   «         Z%ed'„ ¦   «         Z&ed(„ ¦   «         Z'd)„ Z(d*„ Z)ed+„ ¦   «         Z*eZ+eZ,e&Z-e'Z.dS )-re  a  
    IRect() - all zeros
    IRect(x0, y0, x1, y1) - 4 coordinates
    IRect(top-left, x1, y1) - point and 2 coordinates
    IRect(x0, y0, bottom-right) - 2 coordinates and point
    IRect(top-left, bottom-right) - 2 points
    IRect(sequ) - new from sequence or rect-like
    c                ó\   — t                                | |¦  «                             ¦   «         S r,   )r$  rT  r`  rL  s     r)   rT  zIRect.__add__þC  ó"   € Ý�|Š|˜D !Ñ$Ô$×*Ò*Ñ,Ô,Ð,r*   c                ó\   — t                                | |¦  «                             ¦   «         S r,   )r$  r¸  r`  r¡  s     r)   r¸  zIRect.__and__D  r÷  r*   c                ó8   — t                                | |¦  «        S r,   )r$  rÖ  r¡  s     r)   rÖ  zIRect.__contains__D  s   € Ý× Ò   qÑ)Ô)Ð)r*   c                óÔ   — t          |d¦  «        sdS t          |¦  «        dk    oC| j        |d         k    o2| j        |d         k    o!| j        |d         k    o| j        |d         k    S r‰  )r;   r7   r
  r  r	  r  rª  s     r)   r[  zIRect.__eq__D  sn   € Ý�q˜)Ñ$Ô$ð 	Ø�5Ý�1‰vŒv˜Š{Ðj˜tœw¨!¨A¬$šÐj°4´7¸aÀ¼d²?ÐjÀtÄwÐRSÐTUÔRVÂÐjÐ[_Ô[bÐfgÐhiÔfjÒ[jÐjr*   c                óB   — | j         | j        | j        | j        f|         S r,   r¿  ré  s     r)   ra  zIRect.__getitem__D  rŒ  r*   c                ó:   — t          t          | ¦  «        ¦  «        S r,   rS  r.   s    r)   r   zIRect.__hash__D  rT  r*   NrÁ  c          
     óZ   — t          |||||||dœŽ\  | _        | _        | _        | _        d S )NrÁ  )Úutil_make_irectr
  r  r	  r  rÄ  s           r)   rŒ   zIRect.__init__D  s7   € Ý-<¸tÈÈrÐVXÐ]_ÐdfÐkmÐ-nÐ-nÐ-nÑ*ˆŒ�”˜$œ' 4¤7 7 7r*   c                ó   — dS r‘  r-   r.   s    r)   r)  zIRect.__len__D  rk  r*   c                ó\   — t                                | |¦  «                             ¦   «         S r,   )r$  rn  r`  rS  s     r)   rn  zIRect.__mul__D  r÷  r*   c                óV   — t          | j         | j         | j         | j         ¦  «        S r,   )re  r
  r  r	  r  r.   s    r)   rp  zIRect.__neg__D  s&   € Ý�d”g�X ¤˜x¨$¬'¨°D´G°8Ñ<Ô<Ð<r*   c                ó\   — t                                | |¦  «                             ¦   «         S r,   )r$  rÌ  r`  r¡  s     r)   rÌ  zIRect.__or__D  s"   € Ý�{Š{˜4 Ñ#Ô#×)Ò)Ñ+Ô+Ð+r*   c                ó    — t          | ¦  «        S r,   )re  r.   s    r)   rt  zIRect.__pos__!D  r  r*   c                ó@   — dt          t          | ¦  «        ¦  «        z   S )Nre  rv  r.   s    r)   rí   zIRect.__repr__$D  r^  r*   c                ó²   — t          |¦  «        }|dk    r|| _        n9|dk    r|| _        n+|dk    r|| _        n|dk    r|| _        nt          d¦  «        ‚d S r›  )r4   r
  r  r	  r  rø  ry  s      r)   rz  zIRect.__setitem__'D  se   € Ý�‰FŒFˆØ�!ŠVˆV˜q�T”W�WØ�!ŠVˆV˜q�T”W�WØ�!ŠVˆV˜q�T”W�WØ�!ŠVˆV˜q�T”W�WåÐ1Ñ2Ô2Ð2Øˆtr*   c                ó\   — t                                | |¦  «                             ¦   «         S r,   )r$  r|  r`  rL  s     r)   r|  zIRect.__sub__1D  r÷  r*   c                ó\   — t                                | |¦  «                             ¦   «         S r,   )r$  r‚  r`  rS  s     r)   r‚  zIRect.__truediv__4D  s$   € Ý×Ò  aÑ(Ô(×.Ò.Ñ0Ô0Ð0r*   c                ó6   — t          | j        | j        ¦  «        S rÓ  rÔ  r.   s    r)   rr  zIRect.bottom_left7D  rÕ  r*   c                ó6   — t          | j        | j        ¦  «        S r×  rØ  r.   s    r)   ro  zIRect.bottom_right<D  rÕ  r*   c                ó<   — t          d| j        | j        z
  ¦  «        S r‡   rÞ  r.   s    r)   rÕ  zIRect.heightAD  rß  r*   c                ó,   — |                       |¦  «        S )zCheck if x is in the rectangle.rÚ  r¡  s     r)   rÛ  zIRect.containsED  rÜ  r*   rÎ  ro  c                ó8   — t          | j        | j        |¦  «        S rá  râ  r>  s     r)   rä  zIRect.get_areaID  rå  r*   c                óD   — | j                              |¦  «        }|j        S )z$Extend rectangle to include point p.)r÷   rÊ  r”  )r(   r¢  r÷   s      r)   rÊ  zIRect.include_pointMD  s   € àŒy×&Ò& qÑ)Ô)ˆØŒzÐr*   c                óD   — | j                              |¦  «        }|j        S )z(Extend rectangle to include rectangle r.)r÷   rË  r”  )r(   r  r÷   s      r)   rË  zIRect.include_rectRD  s   € àŒy×%Ò% aÑ(Ô(ˆØŒzÐr*   c                ó\   — t                                | |¦  «                             ¦   «         S )z4Restrict rectangle to intersection with rectangle r.)r$  r·  r`  rª  s     r)   r·  zIRect.intersectWD  s"   € å�~Š~˜d AÑ&Ô&×,Ò,Ñ.Ô.Ð.r*   c                ó8   — t                                | |¦  «        S r,   )r$  rî  r¡  s     r)   rî  zIRect.intersects[D  s   € Ý�Š˜t QÑ'Ô'Ð'r*   c                óB   — | j         | j        k    p| j        | j        k    S rð  rz  r.   s    r)   rY	  zIRect.is_empty^D  rñ  r*   c                ó~   — | j         | j        cxk    o
t          k    nc o| j        | j        cxk    o
t
          k    nc S )zTrue if rectangle is infinite.ró  r.   s    r)   rZ	  zIRect.is_infinitecD  rô  r*   c                óB   — | j         | j        k    o| j        | j        k    S rö  rz  r.   s    r)   r÷  zIRect.is_validhD  rø  r*   c                ób   — | j         rt          ¦   «         S | j                             ||¦  «        S rú  rû  rü  s      r)   rð  zIRect.morphmD  rý  r*   c                óX   — t          j        t          d„ | D ¦   «         ¦  «        ¦  «        S )Nc                ó   — g | ]}||z  ‘ŒS r-   r-   rG  s     r)   r¯   zIRect.norm.<locals>.<listcomp>vD  rH  r*   rI  r.   s    r)   r›  z
IRect.normuD  rN  r*   c                óª   — | j         | j        k     r| j         | j        c| _        | _         | j        | j        k     r| j        | j        c| _        | _        | S )z)Replace rectangle with its valid version.rk  r.   s    r)   r4  zIRect.normalizexD  r  r*   c                óN   — t          | j        | j        | j        | j        ¦  «        S r  r  r.   s    r)   r  z
IRect.quad€D  r  r*   c                ó    — t          | ¦  «        S r,   rO  r.   s    r)   r÷   z
IRect.rect…D  s   € å�D‰zŒzÐr*   c                ó6   — t          | j        | j        ¦  «        S r	  r
  r.   s    r)   rn  zIRect.top_left‰D  rÕ  r*   c                ó6   — t          | j        | j        ¦  «        S r  r  r.   s    r)   rq  zIRect.top_rightŽD  rÕ  r*   c           	     óJ  — t          |¦  «        }| j        s| j        s|j        s|j        rt          d¦  «        ‚t	          dddd| j         | j         ¦  «        t	          |j        | j        z  |j        | j        z  ¦  «        z  t	          dddd|j        |j        ¦  «        z  S r  r  rª  s     r)   r  zIRect.torect“D  s«   € å�‰GŒGˆØÔð 	H˜tœ}ð 	H°´ð 	HÀÄð 	HÝÐFÑGÔGÐGå�q˜!˜Q  D¤G 8¨d¬g¨XÑ6Ô6Ý˜œ 4¤:Ñ-¨q¬x¸$¼+Ñ/EÑFÔFñGå˜˜A˜q ! Q¤T¨1¬4Ñ0Ô0ñ1ð	r*   c                ó\   — t                                | |¦  «                             ¦   «         S r,   )r$  rJ  r`  rS  s     r)   rJ  zIRect.transformžD  s"   € Ý�~Š~˜d AÑ&Ô&×,Ò,Ñ.Ô.Ð.r*   c                ó<   — t          d| j        | j        z
  ¦  «        S r‡   r  r.   s    r)   r]  zIRect.width¡D  rß  r*   r  )/r/   r0   r1   rª  rT  r¸  rÖ  r[  ra  r   rŒ   r)  rn  rp  rÌ  rt  rí   rz  r|  r‚  r6  rr  ro  rÕ  rÛ  rä  rÊ  rË  r·  rî  rY	  rZ	  r÷  rð  r›  r4  r  r÷   rn  rq  r  rJ  r]  rî  r–  rí  r4  r-   r*   r)   re  re  ôC  s  € € € € € ðð ð-ð -ð -ð-ð -ð -ð*ð *ð *ðkð kð kð
7ð 7ð 7ð!ð !ð !ð "&¨$°4¸DÀTÈdð oð oð oð oð oðð ð ð-ð -ð -ð=ð =ð =ð,ð ,ð ,ðð ð ð*ð *ð *ðð ð ð-ð -ð -ð1ð 1ð 1ð ð'ð 'ñ „Xð'ð ð'ð 'ñ „Xð'ð ð)ð )ñ „Xð)ð$ð $ð $ð9ð 9ð 9ð 9ðð ð ð
ð ð ð
/ð /ð /ð(ð (ð (ð ð8ð 8ñ „Xð8ð ð_ð _ñ „Xð_ð ð9ð 9ñ „Xð9ð%ð %ð %ð3ð 3ð 3ðð ð ð ð8ð 8ñ „Xð8ð ðð ñ „Xðð ð'ð 'ñ „Xð'ð ð'ð 'ñ „Xð'ð	ð 	ð 	ð/ð /ð /ð ð)ð )ñ „Xð)ð 
€BØ	€BØ	€BØ	€B€B€Br*   re  )ÚPDF_ÚUCDN_SCRIPT_ÚPDF_ENUM_NAME_)ÚCourierúCourier-ObliqueúCourier-BoldúCourier-BoldObliqueÚ	HelveticaúHelvetica-ObliqueúHelvetica-BoldúHelvetica-BoldObliqueúTimes-RomanúTimes-Italicú
Times-BoldúTimes-BoldItalicrL  rK  r&  rÔ  r'  Úheitr(  Úhebor)  Úhebir"  Úcourr#  Úcoitr$  Úcobor%  Úcobir*  Útiror,  Útibor+  Útiitr-  ÚtibirL  ÚsymbrK  ÚzadbrÙ  i   €i€ÿÿÚfitzr   r   rK  r   r   r
  rˆ  é@   rô  rÅ  rê  é
   rú  rÍ  é   )r   é   r   )r   r?  r   ÚColorÚ	ColorBurnÚ
ColorDodgeÚDarkenÚ
DifferenceÚ	ExclusionÚ	HardLightÚHueÚLightenr`  ÚMultiplyÚNormalÚOverlayÚ
SaturationÚScreenÚ	Softlightc                ó:   — d| › dt          |||f¦  «        › d|› d�S )Nz<</A<</S/GoTo/D[z	 0 R/XYZ z	]>>/Rect[ú]/BS<</W 0>>/Subtype/Link>>r9  )r!   rÑ
  r¼  r
  r`  s        r)   r­	  r­	  ÔE  sM   € ð  (D¸!ð  (Dð  (DÅiÐQRÐTUÐWXÐPYÑFZÔFZð  (Dð  (DÐefð  (Dð  (Dð  (D€ r*   c                ó   — d| › d|› d�S )Nz<</A<</S/GoTo/Dz>>/Rect[rP  r-   r:  s     r)   r­	  r­	  ÕE  s   € ÐY°ÐYÐY¸1ÐYÐYÐY€ r*   c                óF   — d| › dt          |||f¦  «        › d|› d|› d|› d�S )Nz<</A<</S/GoToR/D[z /XYZ z]/F<</F(ú)/UF(ú)/Type/Filespec>>>>/Rect[rP  r9  r_  s          r)   r­	  r­	  ÖE  so   € ð  /lÀ!ð  /lð  /lÍ9ÐVWÐYZÐ\]ÐU^ÑK_ÔK_ð  /lð  /lÐijð  /lð  /lÐqrð  /lð  /lð  NOð  /lð  /lð  /l€ r*   c                ó   — d| › d|› d|› d�S )Nz<</A<</S/GoToR/Dz/F(ú	)>>/Rect[rP  r-   ©r!   rÑ
  r¼  s      r)   r­	  r­	  ×E  s"   € Ð"e°QÐ"eÐ"e¸1Ð"eÐ"eÀqÐ"eÐ"eÐ"e€ r*   c                ó   — d| › d|› d|› d�S )Nz<</A<</S/Launch/F<</F(rS  rT  rP  r-   rW  s      r)   r­	  r­	  ØE  s#   € Ð"}¸1Ð"}Ð"}À1Ð"}Ð"}Ð_`Ð"}Ð"}Ð"}€ r*   c                ó   — d| › d|› d�S )Nz<</A<</S/URI/URI(rV  rP  r-   r:  s     r)   r­	  r­	  ÙE  s   € ÐZ°ÐZÐZ¸AÐZÐZÐZ€ r*   c                ó   — d| › d|› d�S )Nz<</A<</S/GoTo/D(z)/Type/Action>>/Rect[rP  r-   r:  s     r)   r­	  r­	  ÚE  s   € Ðg°ÐgÐgÈÐgÐgÐg€ r*   )r[  Úgoto2r^  r_  r`  ra  r  c                  ó   — e Zd ZdZdS )r  z0Raised for documents with file structure issues.N©r/   r0   r1   rª  r-   r*   r)   r  r  ÝE  s   € € € € € Ø:Ð:Ø€Dr*   r  c                  ó   — e Zd ZdZdS )r  zRaised if file does not exist.Nr]  r-   r*   r)   r  r  áE  s   € € € € € Ø(Ð(Ø€Dr*   r  c                  ó   — e Zd ZdZdS )r  z5Raised when creating documents from zero-length data.Nr]  r-   r*   r)   r  r  åE  s   € € € € € Ø?Ð?Ø€Dr*   r  r  r=  Úbidir/  rT	  rô  r¼  r6
  r  rÛ  rx  rz  zcs-nameÚdar_  Údescriptionr>  rh  Úeffectr  rf   rû   r¾  rM	  rW  r'  rÕ  r9  r  rB   r·  rô  rJ  r{  r   r^  r  r÷   r¸  r  Úspansrh  r^  r|  r   ry  rÈ   r  r]  rÈ
  r  r  r  )ÚfontdescriptorsÚfontbuffersÚloader(   ©é·   gq=
×£pÝ?rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  )rˆ  ç      Ð?)r5
  çZd;ßOÕ?)é"   ç7‰A`åÐæ?)é#   r’  )rÕ	  çÅ °rh‘á?)é%   ç-²�ï§ê?)é&   gL7‰A`åè?)é'   çj¼t“Ü?)r	  rk  )é)   rk  )é*   r’  )é+   ro  )é,   rj  )é-   ro  )é.   rj  )é/   ç˜nƒÀÊÑ?)é0   r’  )é1   r’  )r×  r’  )é3   r’  )é4   r’  )é5   r’  )é6   r’  )é7   r’  )é8   r’  )é9   r’  )é:   r|  )é;   r|  )é<   ro  )é=   ro  )é>   ro  )é?   gÑ"Ûù~jÜ?)r<  ro  )éA   ç´Èv¾Ÿç?)éB   çòÒMbXå?)éC   r�  )éD   g/Ý$�•ã?)éE   çZd;ßO�ã?)éF   çÑ"Ûù~jè?)éG   ç²�ï§ÆKã?)rÍ  r�  )éI   rk  )éJ   çþÔxé&1ä?)éK   r�  )éL   çÁÊ¡E¶óå?)éM   g¦›Ä °rì?)éN   r�  )éO   r�  )éP   çú~j¼t“è?)éQ   gƒÀÊ¡E¶ç?)éR   g˜nƒÀÊá?)éS   g‹lçû©ñâ?)éT   r“  )éU   ç®Gázæ?)éV   rt  )éW   r¢  )éX   g¤p=
×£ä?)éY   çq=
×£pé?)rµ  r“  )é[   rk  )é\   gV-²�ë?)é]   rk  )é^   çu“Vå?)rþ  r’  )é`   r’  )éa   rš  )éb   ro  )r*  ro  )rŸ  çV-²�ß?)ée   rt  )éf   çyé&1¬à?)ég   ççû©ñÒMÚ?)éh   r—  )éi   çu“VÕ?)éj   r—  )ék   ro  )él   ro  )ém   ç;ßO�—nâ?)én   r¹  )éo   ro  )ép   ro  )éq   r¹  )ér   ro  )és   r—  )ét   rt  )éu   rÃ  )év   rm  )éw   r�  )éx   gZd;ßO�ß?)éy   r�  )éz   r¶  )é{   ç¸…ëQ¸Þ?)é|   rÇ  )é}   rÒ  )é~   ro  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  rh  )é    rj  )é¡   g×£p=
×ã?)é¢   gV-²�Ï?)é£   ro  )é¤   gÇK7‰A`Å?)é¥   rm  )é¦   r’  )é§   çj¼t“è?)é¨   rÞ  )é©   rÞ  )éª   rÞ  )é«   çyé&1¬ð?)é¬   rm  )é­   r—  )é®   ç/Ý$�•ï?)é¯   r—  )é°   gš™™™™™Ù?)é±   ro  )é²   r»  )é³   ro  )r¿  ro  )éµ   rÃ  )é¶   r¶  rh  )é¸   ro  )é¹   ro  )éº   ro  )é»   ro  )é¼   r   )r
  r—  )é¾   r   )é¿   r²  )éÀ   ç¼t“Vê?)éÁ   r�  )éÂ   r­  )éÃ   rç  )éÄ   r¢  )éÅ   r¢  )éÆ   r÷  )éÇ   r¢  )éÈ   r¢  )éÉ   rm  )éÊ   rm  )éË   rm  )éÌ   rm  )éÍ   rm  )éÎ   rm  )éÏ   rm  )éÐ   r¢  )éÑ   rm  )éÒ   çHáz®Gé?)éÓ   r
  )éÔ   g{®Gázì?)éÕ   r÷  )éÖ   ro  )é×   ro  )éØ   rm  )éÙ   r—  )éÚ   r—  )éÛ   rã  )éÜ   rç  )éÝ   r—  )éÞ   rç  )éß   r—  )éà   r¶  )éá   r¾  )éâ   r
  )éã   r
  )éä   çôýÔxé&é?)éå   rm  )éæ   çú~j¼t“Ø?)éç   r   )éè   r   )éé   r   )éê   r   )éë   r   )éì   r¶  )éí   r¶  )éî   r¶  )éï   r¶  rh  )éñ   r¾  )éò   gð§ÆK7‰Ñ?)éó   r�  )éô   r�  )éõ   r�  )éö   r   )é÷   ro  )éø   r   )éù   r   )éú   r   )éû   r   )éü   r¶  )éý   r¶  )éþ   r¶  rh  (   ©ri  çžï§ÆK7é?r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  )rˆ  r|  )r5
  ç^ºI+ï?)rl  g�—nƒÀî?)rn  r:  )rÕ	  g\�Âõ(\ï?)rp  g5^ºIç?)rr  çsh‘í|?é?)rs  r
  )r	  çZd;ßOé?)ru  r¨  )rv  g¸…ëQ¸î?)rw  g?5^ºIî?)rx  ro  )ry  g\�Âõ(\ë?)rz  çôýÔxé&í?)r{  gB`åÐ"Ûí?)r}  r=  )r~  g=
×£p=î?)r×  r:  )r  g)\�Âõ(è?)r€  gßO�—në?)r�  çü©ñÒMbè?)r‚  ç'1¬Zè?)rƒ  gƒÀÊ¡Eâ?)r„  gD‹lçû©å?)r…  r•  )r†  çR¸…ëQè?)r‡  ç}?5^ºIè?)rˆ  gTã¥›Ä è?)r‰  r¶  )rŠ  gD‹lçû©á?)r‹  gÉv¾Ÿ/á?)r<  gX9´Èvâ?)rŒ  g¾Ÿ/Ý$æ?)rŽ  r  )r�  r9  )r‘  r9  )r’  r
  )r”  gÇK7‰A`é?)r–  gœÄ °rhé?)rÍ  çé&1¬ê?)r˜  r÷  )r™  r;  )r›  g¶óýÔxéê?)rœ  r÷  )rž  rq  )rŸ  rB  )r   çd;ßO�—ê?)r¡  gð§ÆK7‰í?)r£  g+‡ÙÎç?)r¤  g‰A`åÐ"ç?)r¥  g+‡ÙÎ÷ç?)r¦  r
  )r§  çòÒMbXé?)r©  g=
×£p=æ?)rª  ç¢E¶óýÔè?)r«  r¢  )r¬  rD  )rµ  rA  )r®  ç9´Èv¾Ÿæ?)r¯  g-²�ï§æ?)r°  gmçû©ñÒå?)r±  g;ßO�—næ?)rþ  g;ßO�—nê?)r³  g®Gázê?)r´  r;  )rµ  r;  )r*  rF  )rŸ  g–C‹lçûå?)r·  çƒÀÊ¡Eæ?)r¸  g?5^ºIæ?)rº  r  )r¼  gÉv¾Ÿ/é?)r½  rm  )r¿  r<  )rÀ  g…ëQ¸é?)rÁ  r<  )rÂ  çV-²�ïë?)rÄ  r?  )rÅ  r>  )rÆ  r>  )rÇ  rA  )rÈ  rA  )rÉ  ç%�•C‹ì?)rÊ  rI  )rË  r9  )rÌ  gJ+‡é?)rÍ  gÕxé&1Ü?)rÎ  gD‹lçû©Á?)rÏ  gî|?5^ºÑ?)rÐ  g�Âõ(\�Ú?)rÑ  çJ+‡Ù?)rÓ  rJ  )rÔ  çÇK7‰A`å?)rÕ  rK  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  r8  )r×  g�•C‹lç?)rØ  çœÄ °rhá?)rÙ  rL  )rÚ  g…ëQ¸í?)rÛ  r�  )rÜ  r@  )rÝ  r@  )rß  rE  )rà  g
×£p=
ã?)rá  gh‘í|?5æ?)râ  gÕxé&1ä?)rä  r9  )rå  r9  )ræ  r9  )rè  r9  )ré  r9  )rê  r9  )rë  r9  )rì  r9  )r¿  r9  )rí  r9  )rî  r9  r8  )rï  r9  )rð  r9  )rñ  r9  )rò  r9  )ró  r9  )r
  r9  )rô  r9  )rõ  r9  )rö  r9  )rø  r9  )rù  r9  )rú  r9  )rû  r9  )rü  r9  )rý  r9  )rþ  r9  )rÿ  r9  )r   r9  )r  r9  )r  r9  )r  r9  )r  r9  )r  r9  )r  r9  )r  r9  )r  r9  )r	  r9  )r  r9  )r  gÏ÷Sã¥›ì?)r  g7‰A`åÐê?)r  g¨ÆK7‰Að?)r  gZd;ßOÝ?)r  çV-²�ïç?)r  çÅ °rh‘í?)r  rM  )r  gÇK7‰A`í?)r  çD‹lçû©í?)r  çV-²í?)r  rP  )r  gã¥›Ä °ê?)r  rH  )r  gåÐ"Ûù~ê?)r  rN  )r  rN  )r  gòÒMbXí?)r  gÃõ(\�Âí?)r  g˜nƒÀÊí?)r!  goƒÀÊ¡Ý?)r"  g¨ÆK7‰Aì?)r#  ç�—nƒÀê?)r$  rQ  )r%  çX9´Èv¾ë?)r&  rR  )r'  rG  )r(  rG  )r)  ç+‡ÙÎ÷ë?r8  )r*  rS  )r+  r@  )r,  gƒÀÊ¡Eî?)r-  çyé&1¬è?)r.  g®Gáz®ë?)r/  rT  )r0  çÑ"Ûù~jì?)r1  g‹lçû©ñî?)r2  rU  )r3  rC  )r4  rH  )r5  rO  )r6  g
×£p=
ï?r8  r8  c                óx   — |r|d         nd}dddddœ}||         d         ||         d         z  d	z  }|| z  |z  S )
Nr   rZ  )r   r   rf  rh  ri  rj  r   r   r-   )r]  rÕ  r÷  rs  rt  rÎ  s         r)   rã  rã  ?H  sS   € àÐ$ˆ4�Œ7ˆ7 €DØ˜[°ÀLÐQÐQ€AØ	
ˆ4Œ�Œ�a˜”g˜a”jÑ	  QÑ&€AØˆu‰9�vÑÐr*   c                óÊ   — g }|                       ¦   «         s|S t          |¦  «        D ]-}|                     t          j        | ||z   ¦  «        ¦  «         Œ.t          |¦  «        S r,   )rŽ  rL  rk   r�   rv  r  )rû  rÍ  rE   rG   r®   s        r)   Ú_read_samplesrX  FH  sg   € ð €CØ�>Š>ÑÔð àˆ
Ý�A‰YŒYð ?ð ?ˆØ�
Š
•EÔ(¨&°&¸1±*Ñ=Ô=Ñ>Ô>Ð>Ð>Ý�#‰;Œ;Ðr*   c                ó   — || k    o| |k    S r,   r-   )rF   ÚlowÚhighs      r)   r   r   RH  s   € Ø�!Š8Ð!˜˜Tš	Ð!r*   c           
     óÄ  — t          j        | ¦  «        }t          |¦  «        D �]:}|}||v rŒ
t          j        | |¦  «        }t          j        |t          d¦  «        ¦  «        }|j        sŒIt          j        |¦  «        }t          |dz
  dd¦  «        D �]Ç}t          j        ||¦  «        }	t          j	        t          j        |	t          d¦  «        ¦  «        t          d¦  «        ¦  «        sŒ[t          j        |	t          d¦  «        ¦  «        }
t          j        |	t          d¦  «        ¦  «        }|
j        ret          j	        t          j        |
t          d¦  «        ¦  «        t          d	¦  «        ¦  «        sŒét          j        |
t          d
¦  «        ¦  «        }d}t          j
        |¦  «        r+t          j        |d¦  «        }t          j        | |¦  «        }nXt          j        |¦  «        rDt          j        |                      ¦   «         t          j        |¦  «        ¦  «        \  }}}|j        }|dk     r�Œ¬|}||v rt          j        ||¦  «         �ŒÉ�Œ<d S )Nr—  r   r1  r†  r  r  r  r`	  ÚGoTor  r   )r�   rB  rL  rE  r  r  rÌ   r›  rœ  rý  rŽ  Úpdf_lookup_page_numberre
  r«  rÇ   r  rÖ   r�  )rZ  r{  Ú	pagecountr®   rƒ  rK  rŸ  r  r�  r¡  rŽ  rê  rÕ  r\
  r-  r  s                   r)   rz  rz  VH  s8  € ÝÔ% cÑ*Ô*€IÝ�9ÑÔð 3ñ 3ˆØˆØ�ˆ=ˆ=ØåÔ+¨S°!Ñ4Ô4ˆÝÔ# W­h°xÑ.@Ô.@ÑAÔAˆØÔ ð 	ØÝÔ" 6Ñ*Ô*ˆÝ�t˜a‘x  RÑ(Ô(ð 	3ñ 	3ˆAÝÔ# V¨QÑ/Ô/ˆAÝÔ$¥eÔ&8¸!½XÀiÑ=PÔ=PÑ&QÔ&QÕS[Ð\bÑScÔScÑdÔdð ØÝÔ'¨­H°S©M¬MÑ:Ô:ˆFÝÔ% q­(°6Ñ*:Ô*:Ñ;Ô;ˆDØÔ ð BÝÔ(­%Ô*<¸fÅhÈsÁmÄmÑ*TÔ*TÕV^Ð_eÑVfÔVfÑgÔgð ØÝÔ)¨6µ8¸C±=´=ÑAÔA�ØˆCÝÔ! 4Ñ(Ô(ð $ÝÔ,¨d°AÑ6Ô6�ÝÔ2°C¸Ñ@Ô@��ÝÔ$ dÑ+Ô+ð $Ý!&Ô!6¸¿	º	¹¼ÅUÔE]Ð_cÑEdÔEdÑ!eÔ!e‘�˜!˜QØ”m�Ø�QŠwˆwÙØˆBØ�Wˆ}ˆ}ÝÔ&¨°Ñ2Ô2Ð2ùñ+	3ð3ð 3r*   c                óÂ   — t          | t          j        t          j        f¦  «        sJ dt	          | ¦  «        ›d| ›�¦   «         ‚| j        st          t          ¦  «        ‚d S )Nztype(cond)=z cond=)r>   r�   rÓ   rÆ   rÈ   rÌ   rg   ÚMSG_IS_NO_PDF)Úconds    r)   Ú
ASSERT_PDFrc  zH  sd   € Ý�d�Uœ]­EÔ,=Ð>Ñ?Ô?ÐYÐYÐAYÅDÈÁJÄJÐAYÐAYÐRVÐAYÐAYÑYÔYÐ?ØŒ?ð 'Ý�Ñ&Ô&Ð&ð'ð 'r*   c                 óN   — t          t          t          t          t          ¦  «        S r,   )re  r{  rz  r-   r*   r)   ÚEMPTY_IRECTre  €H  ó   € Ý•¥/µ?ÅOÑTÔTÐTr*   c                 ó(   — t          ¦   «         j        S r,   )Ú
EMPTY_RECTr  r-   r*   r)   Ú
EMPTY_QUADri  „H  s   € Ý‰<Œ<ÔÐr*   c                 óN   — t          t          t          t          t          ¦  «        S r,   )r$  r{  rz  r-   r*   r)   rh  rh  ˆH  ó   € Ý•¥µ/Å?ÑSÔSÐSr*   c                óB   — t          | ¦  «        st          d¦  «        ‚d S )Nz No journalling operation started)ÚJM_have_operationrg   ©rZ  s    r)   rd  rd  ŒH  s+   € Ý˜SÑ!Ô!ð <ÝÐ:Ñ;Ô;Ð;ð<ð <r*   c                 óN   — t          t          t          t          t          ¦  «        S r,   )re  rz  r{  r-   r*   r)   ÚINFINITE_IRECTrp  ‘H  rf  r*   c                 ó(   — t          ¦   «         j        S r,   )r¼  r  r-   r*   r)   r§  r§  •H  s   € Ý‰?Œ?ÔÐr*   c                 óN   — t          t          t          t          t          ¦  «        S r,   )r$  rz  r{  r-   r*   r)   r¼  r¼  ™H  rk  r*   c                óf   — t          | t          j        ¦  «        sJ ‚t          j        | ¦  «        }|S )z3
    Turn fz_buffer into a Python bytes object
    )r>   r�   rr  rÃ
  )r-  rG   s     r)   r  r  �H  s1   € õ �g�uœ~Ñ.Ô.Ð.Ð.Ð.Ý
Ô
& wÑ
/Ô
/€CØ€Jr*   c                óÊ   — | €dS t          | t          ¦  «        sJ dt          | ¦  «        ›�¦   «         ‚|                      dd¦  «        }d}|D ]}|t	          |¦  «        z  }Œ|S )Nr\   ztype(c)=r
  Úsurrogateescape)r>   rÑ  rÈ   rÈ  r
  )r¼  rÑ
  rG   Úbbs       r)   r²  r²  ¦H  sv   € ð& 	€yØˆrÝ�a�ÑÔÐ,Ð,˜}¥$ q¡'¤'˜}˜}Ñ,Ô,ÐØ	�Š�Ð*Ñ+Ô+€AØ
€CØð ð ˆØ�s�2‰wŒw‰ˆˆØ€Jr*   c                ó¢  — t          | t          t          f¦  «        r| }n�t          | d¦  «        rz|                      ¦   «         }t          |t
          ¦  «        r|                     d¦  «        }t          |t          t          f¦  «        st          dt          |¦  «        › �¦  «        ‚nt          j
        ¦   «         S t          j        |¦  «        S )zŽ
    Make fz_buffer from a PyBytes, PyByteArray or io.BytesIO object. If a text
    io.BytesIO, we convert to binary by encoding as utf8.
    rv  rÏ  z&.getvalue() returned unexpected type: )r>   r  r]  r;   rv  rÑ  rÈ  rg   rÈ   r�   rr  r‘  )r	   r}  s     r)   r'  r'  ÃH  sÂ   € õ
 �&�5¥)Ð,Ñ-Ô-ð 	 ØˆˆÝ	�˜Ñ	$Ô	$ð  Ø�ŠÑ Ô ˆÝ�d�CÑ Ô ð 	(Ø—;’;˜wÑ'Ô'ˆDÝ˜$¥­	Ð 2Ñ3Ô3ð 	SÝÐQÅTÈ$ÁZÄZÐQÐQÑRÔRÐRð	Sõ Œ~ÑÔÐÝÔ/°Ñ5Ô5Ð5r*   c                óN   — t          | ¦  «        sd S t          | |         ¦  «        S r,   )r|  ro  )r  r8  s     r)   ÚJM_FLOAT_ITEMry  ÕH  s'   € Ý˜CÑ Ô ð ØˆtÝ��S”‰?Œ?Ðr*   c                ó|   — |t          | ¦  «        k     r(| |         }t          |t          t          f¦  «        rd|fS dS )Nr   rŽ  )r7   r>   r4   ro  )r  r8  r€  s      r)   rB  rB  ÚH  s>   € Ø
�S�‰XŒX‚~€~Ø�3ŒxˆÝ�d�S¥%˜LÑ)Ô)ð 	Ø�d�7ˆNØˆ7r*   c                ó   — d}d}d}	d}
|
r|}n|}d}|}t          |¦  «        }t          j        |¦  «        }t          |¦  «        }t          j        ||¦  «        }t          j        ||¦  «        }t          j        |¦  «        }t          j        | ¦  «        }|j        r>t          j	        |¦  «        t          j	        |¦  «        k    rt          j
        |¦  «        }||k    �r	t          j        |¦  «        }|j        r€t          j        |¦  «        }||	k    r3t          |¦  «        D ]"}t          j        ||t          j        ¦  «         Œ#n¡t          |¦  «        D ]"}t          j        ||t          j        ¦  «         Œ#nnt          j        |¦  «        rt          j        d¦  «        }nE|j        r>t          j	        |¦  «        t          j	        |¦  «        k    rt          j        d¦  «        }t          j        ||||¦  «        }|rt          j        |¦  «         nt          j        |d¦  «         t          j        ||¦  «        }|r:t          j        ||t          j        ¦   «         t          j        ¦   «         ¦  «         n9t          j        ||t          j        ¦   «         t          j        ¦   «         ¦  «         t          j        |¦  «         |S )zf
    Pixmap creation directly using a short-lived displaylist, so we can support
    separations.
    r   r   r   TNr
  )rÓ  r�   rØ  r   Úfz_intersect_rectr©  Úfz_round_rectÚfz_document_output_intentrÌ   r¦  Úfz_keep_colorspaceÚfz_page_separationsÚfz_count_separationsrL  Úfz_set_separation_behaviorÚFZ_SEPARATION_SPOTÚFZ_SEPARATION_COMPOSITEÚfz_page_uses_overprintÚfz_new_separationsrf  r¬  r­  r±  rÜ  rr  rÉ  Úfz_run_page_contentsrÝ  )r*  rÖ   rÞ  rß  rÜ  rŸ  r  Ú
SPOTS_NONEÚSPOTS_OVERPRINT_SIMÚ
SPOTS_FULLÚFZ_ENABLE_SPOT_RENDERINGÚspotsr�  rÛ  rÙ  r÷   Úrclipr/  ÚoirE   r®   rà  rà  s                          r)   r   r   âH  sÂ  € ð
 €JØÐØ€Jà#ÐØð Ø#ˆˆàˆà€DØ€Jå˜sÑ#Ô#€FÝÔ˜tÑ$Ô$€DÝ˜DÑ!Ô!€EÝÔ" 4¨Ñ/Ô/€DÝÔ" 4¨Ñ0Ô0€DÝÔ˜tÑ$Ô$€Dõ 
Ô	(¨Ñ	-Ô	-€Bà	„}ð 6ÝÔ  Ñ$Ô$­Ô(=¸bÑ(AÔ(AÒAÐAÝÔ1°"Ñ5Ô5ˆJð �
ÒÑÝÔ(¨Ñ.Ô.ˆØŒ?ð 	/ÝÔ*¨4Ñ0Ô0ˆAØ˜
Ò"Ð"Ý˜q™œð Xð X�AÝÔ4°T¸1½eÔ>VÑWÔWÐWÐWðXõ ˜q™œð ]ð ]�AÝÔ4°T¸1½eÔ>[Ñ\Ô\Ð\Ð\ð]åÔ)¨$Ñ/Ô/ð 		/õ Ô+¨AÑ.Ô.ˆDˆDØŒ]ð 	/�uÔ4°RÑ8Ô8½EÔ<QÐR\Ñ<]Ô<]Ò]Ð]õ
 Ô+¨AÑ.Ô.ˆDå
Ô
'¨
°D¸$ÀÑ
FÔ
F€Càð 4ÝÔ˜cÑ"Ô"Ð"Ð"åÔ(¨¨dÑ3Ô3Ð3å
Ô
" 6¨3Ñ
/Ô
/€CØð RÝÔ˜$ ¥U¤^Ñ%5Ô%5µu´~Ñ7GÔ7GÑHÔHÐHÐHåÔ" 4¨­e¬nÑ.>Ô.>ÅÄÑ@PÔ@PÑQÔQÐQÝ	Ô˜#ÑÔÐØ€Jr*   c                ó   — | S r,   r-   r_  s    r)   rµ  rµ  (I  s   € à€Hr*   r¡  útyping.SequencerÎ  rµ   c                ó>   — t          t          d„ | ¦  «        ¦  «        S )Nc                óL   — t          | ¦  «        dk    rt          | d¦  «        ndS )Ng-Cëâ6?r   r   ©rï  r`  r_  s    r)   r­	  zJM_TUPLE.<locals>.<lambda>/I  ó    € ­c°!©f¬f¸ªn¨n�u Q¨™{œ{˜{À!€ r*   ©rµ   rÝ  ©r¡  s    r)   r2  r2  .I  ó   € Ý•ÐCÐCÀQÑGÔGÑHÔHÐHr*   c                ó>   — t          t          d„ | ¦  «        ¦  «        S )Nc                óL   — t          | ¦  «        dk    rt          | d¦  «        ndS )Nr>  r   r   r“  r_  s    r)   r­	  zJM_TUPLE3.<locals>.<lambda>3I  r”  r*   r•  r–  s    r)   Ú	JM_TUPLE3rš  2I  r—  r*   c                óÆ   — | €dS t          | t          ¦  «        r|                      d¦  «        } t          | t          ¦  «        sJ dt	          | ¦  «        ›d| ›�¦   «         ‚| S )Nr\   r
  ztype(s)=z s=)r>   r  rò  rÑ  rÈ   ©rr  s    r)   r  r  6I  si   € Ø€yØˆrÝ�!•UÑÔð Ø�HŠH�VÑÔˆÝ�a�ÑÔÐ1Ð1Ð1¥$ q¡'¤'Ð1Ð1¨QÐ1Ð1Ñ1Ô1ÐØ€Hr*   c                ó¤  — t          | t          j        ¦  «        sJ ‚t          | ¦  «        }t          j        | ¦  «        }t          |¦  «        }d}	 t          › d|› |› �}||vrn|dz  }Œt          |¦  «        }t          j        |t          |¦  «        ¦  «        }t          j
        |d|¦  «         d|                     ¦   «         j        _        dS )z
    Add a unique /NM key to an annotation or widget.
    Append a number to 'stem' such that the result is a unique name.
    r   r   ú-r  N)r>   r�   rä   rà   rÿ   r�  ÚJM_annot_id_stemrµ  Úpdf_new_stringr7   r�  r*  rÌ   rQ  )	rß   ÚstemrÖ   r   r³  r®   Ústem_idÚresponser   s	            r)   rd  rd  ?I  sÙ   € õ
 �e�Uœ^Ñ,Ô,Ð,Ð,Ð,Ý˜5Ñ!Ô!€DÝÔ# UÑ+Ô+€IÝ  Ñ&Ô&€EØ	€AðÝ%Ð1Ð1¨Ð1¨aÐ1Ð1ˆØ˜%ÐÐØØ	ˆQ‰ˆð	õ
 ˜GÑ$Ô$€HÝÔ ­3¨x©=¬=Ñ9Ô9€DÝ	Ô˜	 4¨Ñ.Ô.Ð.Ø-.€D‡H‚H�J„JÔÔ*Ð*Ð*r*   c                óè  — t          j        | |d¦  «        }t          j        |¦  «        st          t          t
          ¦  «         t          j        |t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        dk    s&t          j        |t          d¦  «        ¦  «        dk    r%t          j	        |t          d¦  «        |¦  «         dS t          t          t
          ¦  «         dS )z1
    Add OC object reference to a dictionary
    r   r6  r™  ÚOCMDrÃ  N)
r�   r‰  rz  r°  ÚMSG_BAD_OC_REFrp  r  r  r~  rN  )rZ  r	  r  Úindobjr[  s        r)   r›  r›  TI  sÌ   € õ Ô# C¨¨qÑ1Ô1€FÝÔ˜VÑ$Ô$ð 2Ý•Õ 0Ñ1Ô1Ð1ÝÔ˜v¥x°Ñ'7Ô'7Ñ8Ô8€EÝÔ˜¥¨¡¤Ñ0Ô0°AÒ5Ð5ÝÔ ¥x°Ñ'7Ô'7Ñ8Ô8¸AÒ=Ð=åÔ˜3¥¨¡¤°Ñ7Ô7Ð7Ð7Ð7å•Õ 0Ñ1Ô1Ð1Ð1Ð1r*   c                ó€  — t          ¦   «         }d }d}d}d }t          j        | t          d¦  «        ¦  «        }t          j        |¦  «        r´t          j        t          j        |d¦  «        ¦  «        }t          j        |¦  «        dk    rut          j        |d¦  «        }t          t          j        |¦  «        ¦  «        D ]>}t          j	        t          j        ||¦  «        ¦  «        }| 
                    |¦  «         Œ?t          j        | t          d¦  «        ¦  «        }	|	j        rùt          j        t          j        |	t          d¦  «        ¦  «        ¦  «        }t          j        t          j        |	t          d¦  «        ¦  «        ¦  «        }|d	k    rd }t          j        |	t          d
¦  «        ¦  «        }|j        r`t          t          j        |¦  «        ¦  «        D ]>}t          j	        t          j        ||¦  «        ¦  «        }| 
                    |¦  «         Œ?t          j        | t          d¦  «        ¦  «        }|j        r4t          j	        t          j        |t          d¦  «        ¦  «        ¦  «        }t          ¦   «         }
||
t          <   t          |¦  «        |
t           <   ||
t"          <   ||
d<   |
S )Nr1  ÚBorderr   rK  r   ÚBSrî	  r`	  r\   r  ÚBEÚIr`  )r´   r�   r  r  rŽ  rï  rœ  r›  rL  r  rk   rÌ   ry  r5   rP  rµ   Údictkey_dashesÚdictkey_style)r   Údash_pyr^  r]  r`  r  Údashr®   r  Úbs_or  s              r)   r…  r…  dI  sR  € Ý‰fŒf€GØ€EØ€EØ€FØ
€Cå
Ô
˜i­°(Ñ);Ô);Ñ
<Ô
<€CÝÔ˜3ÑÔð %ÝÔ!¥5Ô#6¸¸QÑ#?Ô#?Ñ@Ô@ˆÝÔ Ñ$Ô$¨Ò)Ð)ÝÔ&¨¨QÑ/Ô/ˆDÝ�EÔ/°Ñ6Ô6Ñ7Ô7ð %ð %�ÝÔ&­Ô(;¸TÀ1Ñ(EÔ(EÑFÔF�Ø—’ Ñ$Ô$Ð$Ð$åÔ˜y­(°4©.¬.Ñ9Ô9€DØ„ð 	%ÝÔ!¥5Ô#5°t½XÀc¹]¼]Ñ#KÔ#KÑLÔLˆÝÔ!¥5Ô#5°t½XÀc¹]¼]Ñ#KÔ#KÑLÔLˆØ�BŠ;ˆ;ØˆEÝÔ  $­°©¬Ñ6Ô6ˆØŒ>ð 	%Ý�EÔ/°Ñ5Ô5Ñ6Ô6ð %ð %�ÝÔ&­Ô(;¸SÀ!Ñ(DÔ(DÑEÔE�Ø—’ Ñ$Ô$Ð$Ð$å
Ô
˜i­°$©¬Ñ
8Ô
8€CØ
„~ð LÝÔ!¥5Ô#5°s½HÀS¹M¼MÑ#JÔ#JÑKÔKˆå
‰&Œ&€CØ€C�ÑÝ  '™?œ?€C�ÑØ€C�ÑØ€Cˆ�NØ€Jr*   c                óÂ  — t          ¦   «         }t          ¦   «         }t          ¦   «         }t          j        | t          j        ¦  «        }t          j        |¦  «        rbt          j        |¦  «        }t          |¦  «        D ]>}t          j        t          j	        ||¦  «        ¦  «        }| 
                    |¦  «         Œ?||t          <   t          j        | d¦  «        }t          j        |¦  «        rbt          j        |¦  «        }t          |¦  «        D ]>}t          j        t          j	        ||¦  «        ¦  «        }| 
                    |¦  «         Œ?||t          <   |S )Nr3  )r5   r´   r�   r  ÚPDF_ENUM_NAME_CrŽ  r›  rL  rï  rœ  rk   Údictkey_strokerþ   Údictkey_fill)r   r  ÚbcÚfcr¡  rE   r®   r_  s           r)   r”  r”  ŒI  s)  € Ý
‰&Œ&€CÝ	‰Œ€BÝ‰Œ€BÝÔ˜9¥eÔ&;Ñ<Ô<€AÝÔ˜!ÑÔð ÝÔ Ñ"Ô"ˆÝ�q‘”ð 	ð 	ˆAÝÔ#¥UÔ%8¸¸AÑ%>Ô%>Ñ?Ô?ˆCØ�IŠI�c‰NŒNˆNˆNØ€C�ÑåÔ˜I tÑ,Ô,€AÝÔ˜!ÑÔð ÝÔ Ñ"Ô"ˆÝ�q‘”ð 	ð 	ˆAÝÔ#¥UÔ%8¸¸AÑ%>Ô%>Ñ?Ô?ˆCØ�IŠI�c‰NŒNˆNˆNà€C�ÑØ€Jr*   c                óv  — t          | t          ¦  «        sJ ‚d }d}|                      t          ¦  «        }|                      t          ¦  «        }|                      t
          ¦  «        }|                      dd¦  «        }t          |¦  «        }	t          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        ¦  «         |dk     r|	                     t          ¦  «        }|€|	                     t          ¦  «        }|€|	                     t
          ¦  «        }|dk     r|	                     dd¦  «        }t          |t          ¦  «        r‚t          |¦  «        dk    rot          |¦  «        }t          j        ||¦  «        }
|D ]}t          j        |
|¦  «         Œt          j        ||
t          d¦  «        t          d¦  «        ¦  «         t          j        |t          j        |¦  «        t          d¦  «        t          d¦  «        ¦  «         |dk    rt!          |¦  «        }nt          d¦  «        }t          j        ||t          d¦  «        t          d	¦  «        ¦  «         |dk    ršt          j        |t          d¦  «        d
¦  «         t          j        |t          d¦  «        ¦  «        }t          j        |t          d	¦  «        t          d¦  «        ¦  «         t          j        |t          d¦  «        |¦  «         d S d S )Nr   r`  r1  rª  r«  r©  r  rî	  r`	  r   ræ  r¬  )r>   r5   r8   rP  r­  r®  r…  r�   rA  r  rµ   r7   rK  Úpdf_array_push_intr  Úpdf_new_realÚJM_get_border_stylerR  r  rN  rI  )rˆ  r*  r   r  ÚdashlenÚnwidthÚndashesÚnstyleÚncloudsÚoborderÚdarrr
  s               r)   rc  rc  £I  s·  € Ý�f�dÑ#Ô#Ð#Ð#Ð#Ø
€CØ€GØ�ZŠZ�Ñ'Ô'€FØ�jŠj�.Ñ)Ô)€GØ�ZŠZ�Ñ'Ô'€FØ�zŠz˜8 RÑ(Ô(€Gõ ˜yÑ)Ô)€Gõ 
Ô˜	¥8¨D¡>¤>Ñ2Ô2Ð2Ý	Ô˜	¥8¨D¡>¤>Ñ2Ô2Ð2Ý	Ô˜	¥8¨HÑ#5Ô#5Ñ6Ô6Ð6ð �‚z€zØ—’�mÑ,Ô,ˆØ€Ø—+’+�~Ñ.Ô.ˆØ€~Ø—+’+�}Ñ-Ô-ˆØ�‚{€{Ø—;’; ¨"Ñ-Ô-ˆå�7�EÑ"Ô"ð M¥s¨G¡}¤}°qÒ'8Ð'8Ý�w‘-”-ˆÝÔ" C¨Ñ1Ô1ˆØð 	/ð 	/ˆAÝÔ$ d¨AÑ.Ô.Ð.Ð.ÝÔ˜Y¨­h°t©n¬n½hÀs¹m¼mÑLÔLÐLå	ÔØÝÔ Ñ'Ô'Ý�T‰NŒNÝ�S‰MŒMñ	ô ð ð �!‚|€|Ý! 6Ñ*Ô*ˆˆå�s‰mŒmˆÝ	Ô˜ C­°$©¬½À#¹¼ÑGÔGÐGà�‚{€{ÝÔ ­H°T©N¬N¸AÑ>Ô>Ð>ÝÔ  )­X°d©^¬^Ñ<Ô<ˆÝÔ˜C¥¨#¡¤µ¸±´Ñ>Ô>Ð>ÝÔ ¥X¨c¡]¤]°GÑ<Ô<Ð<Ð<Ð<ð	 €{r*   c                ó¢   — | dk    rdS d| cxk    rdk    sn | dk    rt          | ¦  «        S d| cxk    rdk    rn ndS | d	k    rd
| d›�S d| d›�S )Nr¯  z\u005crˆ  é   r=  i Ø  iÿß  z\ufffdéÿÿ  z\ur
  z\UÚ08x©r
  ©rú  s    r)   Úmake_escaperÉ  ÙI  s†   € Ø	ˆR‚x€xØˆyØ	ˆrˆˆŠˆ�SŠˆˆˆ˜B "šH˜HÝ�2‰wŒwˆØ	�2Ð	Ð	Ò	Ð	˜Ò	Ð	Ð	Ð	Ð	ØˆyØ	ˆvŠˆØ�Rˆ~ˆ~ˆ~Ðà�Rˆ~ˆ~ˆ~Ðr*   c                óJ   — t          j        | t          |¦  «        ¦  «         dS )zG
    APPEND non-ascii runes in unicode escape format to fz_buffer.
    N)r�   rù  rÉ  )rN  rú  s     r)   r2  r2  æI  s#   € õ 
Ô˜4¥¨R¡¤Ñ1Ô1Ð1Ð1Ð1r*   c                óÖ   — t          |¦  «        }|j        |j        |j        |j        ||||f}|                      |¦  «         |dz   t          j        t          j        j        ¦  «        fS )z'
    Functions for wordlist output
    r   )	ru
  r
  r  r	  r  rk   r�   rh  r-  )rô  rN  rŒ  r6  r9  r�  rr  r=  s           r)   rˆ  rˆ  íI  sj   € õ 	˜tÑ$Ô$€AàŒHØŒHØŒHØŒHØØØØð	€Eð 
‡L‚L�ÑÔÐØ�A‰:•u”|¥E¤LÔ$<Ñ=Ô=Ð=Ð=r*   c                ó¤  — t          | ¦  «        }t          j        |t          d¦  «        ¦  «        }t          j        |¦  «        s#t          j        |t          d¦  «        d¦  «        }t          j        | d¦  «        }t          j        |t          d¦  «        |¦  «         |�#t          j        |t          d¦  «        |¦  «         t          j        |t          d¦  «        t          d¦  «        ¦  «         t          j        |t          d	¦  «        d¦  «        }|snŸt          j        |t          d
¦  «        ¦  «        }t          |¦  «        }	t          |	¦  «        D ]^}
d}t          ||
¦  «        \  }}|dk    rŒt          j        | |d¦  «        }t          j        ||¦  «        rt          j        ||¦  «         Œ_t          j        ||¦  «         dS )z1
    Add OC configuration to the PDF catalog
    r£  r   r   r  NrŸ  Ú	BaseStater¦  r¥  r¢  r   )r§  r�   r  r  rŽ  rœ  rS  r€  rN  r7   rL  rB  r‰  Úpdf_array_containsr�  )rZ  r   r•  r¥  r²  Úconfigsr  Úonarrayrp  rE   r®   r  r`  Úinds                 r)   r“  r“   J  s©  € õ ! #Ñ
&Ô
&€CÝÔ  #¥x°	Ñ':Ô':Ñ;Ô;€GÝÔ˜wÑ'Ô'ð IÝÔ*¨Cµ¸)Ñ1DÔ1DÀaÑHÔHˆÝÔ˜C Ñ#Ô#€AÝ	Ô" A¥x°Ñ'7Ô'7¸Ñ>Ô>Ð>ØÐÝÔ&¨­8°IÑ+>Ô+>ÀÑHÔHÐHÝ	Ô˜�8 KÑ0Ô0µ(¸5±/´/ÑBÔBÐBÝÔ&¨­8°D©>¬>¸1Ñ=Ô=€GØð 4ØåÔ! 3­°Ñ(8Ô(8Ñ9Ô9ˆÝ�‰GŒGˆÝ�q‘”ð 	4ð 	4ˆAØˆDÝ! " aÑ(Ô(‰GˆAˆtØ�AŠvˆvØÝÔ(¨#¨t°QÑ7Ô7ˆCÝÔ'¨¨sÑ3Ô3ð 4ÝÔ$ g¨sÑ3Ô3Ð3øÝ	Ô˜' 1Ñ%Ô%Ð%Ð%Ð%r*   c                óÖ   — t          | |¦  «        }t          j        |¦  «        }| j        j        s|S |j        |j        |j        j        z   k     r|j        |j        j        z
  |_        |S )z"
    return rect of char quad
    )ÚJM_char_quadr�   r�  rÌ   rÈ
  r  r  r¸  )ro   rú  r’  r  s       r)   r0  r0  J  sf   € õ 	�T˜2ÑÔ€AÝÔ Ñ"Ô"€AØŒ?Ô ð ØˆØ„tˆaŒd�R”]Ô'Ñ'Ò'Ð'ØŒt�b”mÔ(Ñ(ˆŒØ€Hr*   c                ó0  — d}|r|r|t          ||¦  «        z  }|t          j        | ¦  «        t          z  z  }|t          j        | ¦  «        t
          z  z  }|t          j        | ¦  «        t          z  z  }|t          j        | ¦  «        t          z  z  }|S r‡   )
Údetect_super_scriptr�   rñ
  ÚTEXT_FONT_ITALICrö
  ÚTEXT_FONT_SERIFEDró
  ÚTEXT_FONT_MONOSPACEDrï
  ÚTEXT_FONT_BOLD)rW  ro   rú  r¾  s       r)   ÚJM_char_font_flagsrÚ  +J  s›   € Ø€EØð /�ð /ØÕ$ T¨2Ñ.Ô.Ñ.ˆØ	�UÔ$ TÑ*Ô*Õ-=Ñ=Ñ=€EØ	�UÔ# DÑ)Ô)Õ,=Ñ=Ñ=€EØ	�UÔ(¨Ñ.Ô.Õ1EÑEÑE€EØ	�UÔ" 4Ñ(Ô(­>Ñ9Ñ9€EØ€Lr*   c                óH  — t           r1t          j        t          j        | j        |j        ¦  «        ¦  «        S t          | t          j        ¦  «        sJ ‚t          |t          j        ¦  «        sJ ‚t          j
        r|j        S | j        j        r|j        S t          j        t          j        |j        j        ¦  «        ¦  «        }t!          |¦  «        }t#          |¦  «        }|j        j        }||z
  t&          z   }|dk    r.t          j        dk    rt          j        |j        j        ¦  «        S |j        j        }t          j        |¦  «        }|j        |j        z
  }|dk     rd}d}d}t          j        s|dk     r
||z  }||z  }||z
  }||z  |z  }||z  |z  }| j        j        j        }	| j        j        j        }
t          j        |	|
 |
|	dd¦  «        }t          j        |	|
|
 |	dd¦  «        }|	dk    rd|_        d|_        t          j        dddd|j        j        j         |j        j        j         ¦  «        }t          j        dddd|j        j        j        |j        j        j        ¦  «        }t          j        t          j        |j        j        ¦  «        |¦  «        }t          j        ||¦  «        }|	dk    rA|j        j        dk    r1||j        _        ||j         _        ||j!        _        ||j"        _        n4| |j        _        | |j         _        | |j!        _        | |j"        _        |j!        j        dk     rd|j!        _        d|j        _        |j"        j        |j!        j        z
  }|t&          k     rst          j#        ||j        j$        ¦  «        }|rRt          j%        ||| j        j        ¦  «        }|j!        j        ||z  z   |j"        _        |j"        j        |j         _        t          j        ||¦  «        }t          j        ||¦  «        }|S )zI
    re-compute char quad if ascender/descender values make no sense
    r   r   r>  çš™™™™™¹¿çÍÌÌÌÌÌì?rŸ  r1  )&r  r�   r�  r   rÓ  rÌ   r>   ÚFzStextLineÚFzStextCharrÙ  r‹   r  rÈ
  ÚFzFontÚll_fz_keep_fontrW  ÚJM_font_ascenderÚJM_font_descenderr¸  ÚFLT_EPSILONr‰   rÀ
  r	  r
  rh  r(  r)  r±  r
  r  Úfz_transform_quadr¤  r“  r‘  r’  r#  r¼  r$  )ro   rú  rW  rU  rV  rù  Úasc_dscr/  Úfwidthr¼  rr  Útrm1Útrm2Úxlate1Úxlate2r  Úcwidthr'  s                     r)   rÓ  rÓ  6J  s²  € õ ð Qõ Œ|�EÔ.°´ÀÄÑOÔOÑPÔPÐPå�d�EÔ-Ñ.Ô.Ð.Ð.Ð.Ý�b�%Ô+Ñ,Ô,Ð,Ð,Ð,ÝÔ%ð ØŒwˆØ„Ôð ØŒwˆÝŒ<�Ô-¨b¬mÔ.@ÑAÔAÑBÔB€DÝ
˜4Ñ
 Ô
 €CÝ
˜DÑ
!Ô
!€CØŒMÔ€EØ�C‰i�+Ñ%€GØ�!‚|€|�Ô4¸Ò9Ð9ÝŒ|˜BœMÔ.Ñ/Ô/Ð/ð
 ŒMÔ€EÝÔ˜dÑ#Ô#€DØŒW�t”wÑ€FØ
ˆT‚z€zØˆØˆØˆåÔ#ð  w°¢{ {Ø�G‰mˆØ�G‰mˆØ�C‰i€GØ
�‰+˜Ñ
€CØ
�‰+˜Ñ
€Cð
 	ŒÔÔ€AØŒÔÔ€AÝÔ  A 2 q¨!¨Q°Ñ2Ô2€DÝÔ  1 q b¨!¨Q°Ñ2Ô2€DØ	ˆRŠˆØˆŒØˆŒÝÔ! ! Q¨¨1¨r¬}Ô/CÔ/EÐ.EÈÌÔH\ÔH^ÐG^Ñ_Ô_€FÝÔ! ! Q¨¨1¨b¬mÔ.BÔ.DÀbÄmÔFZÔF\Ñ]Ô]€FåÔ"¥5¤<°´Ô0BÑ#CÔ#CÀVÑLÔL€DÝÔ" 4¨Ñ.Ô.€Dð 	ˆA‚v€v�$”'”)˜a’-�-ØˆŒŒ	ØˆŒŒ	ØˆŒŒ	ØˆŒŒ	ˆ	à�DˆŒŒ	Ø�DˆŒŒ	Ø�DˆŒŒ	Ø�DˆŒŒ	ð
 „w„y�1‚}€}ØˆŒŒ	ØˆŒŒ	àŒWŒY˜œœÑ"€FØ•ÒÐÝÔ)¨4°´´ÑAÔAˆØð 	"ÝÔ+¨T°5¸$¼/Ô:OÑPÔPˆFØœœ	 F¨U¡NÑ2ˆDŒGŒIØœœ	ˆDŒGŒIåÔ" 4¨Ñ.Ô.€DÝÔ" 4¨Ñ0Ô0€DØ€Kr*   c           
     óâ  — t          j        | j        ¦  «        }t          j        | d¦  «        }t	          |¦  «        }|dk    rdS t          j        |t          d¦  «        ¦  «        }g }t          |¦  «        D ]õ}t          j        t          j	        ||¦  «        ¦  «        }|dk    rŠt          j
        t          j	        t          j	        ||¦  «        d¦  «        ¦  «        t          j
        t          j	        t          j	        ||¦  «        d¦  «        ¦  «        f}|                     |¦  «         Œ¹t          j
        t          j	        ||¦  «        ¦  «        }|                     |¦  «         Œö|S )z8
    return list of choices for list or combo boxes
    r   NÚOptr   r   )r�   rÿ   rÄ   Úpdf_choice_widget_options2r7   rF  r  rL  r›  rœ  r  rk   )	rß   r   r¹  rE   ÚoptarrrM  r®   r€  r  s	            r)   ÚJM_choice_optionsrñ  �J  sD  € õ Ô# U¤ZÑ0Ô0€IåÔ+¨U°AÑ6Ô6€DÝˆT‰
Œ
€AØˆA‚v€vØˆåÔ+¨Y½À¹¼ÑHÔH€FØ€Eå�A‰YŒYð 
ð 
ˆÝÔ¥Ô!4°f¸aÑ!@Ô!@ÑAÔAˆØ�Š6ˆ6åÔ,­eÔ.AÅ5ÔCVÐX^Ð`aÑCbÔCbÐdeÑ.fÔ.fÑgÔgÝÔ,­eÔ.AÅ5ÔCVÐX^Ð`aÑCbÔCbÐdeÑ.fÔ.fÑgÔgðˆCð �LŠL˜#ÑÔÐÐåÔ*­EÔ,?ÀÈÑ,KÔ,KÑLÔLˆCØ�LŠL˜#ÑÔÐÐØ€Lr*   c                óÆ  — t          j        |t          j        | ¦  «        ¦  «        }|j        |j        z
  }|j        |j        z
  }|dk    s|dk    rdS |                      ¦   «         }||j        |                      ¦   «         z
  z  |  	                    ¦   «         |j        |  
                    ¦   «         z
  z  z   }t          j        |                      ¦   «         ¦  «        dk    rÊd|z
  }	 |}t          d|¦  «        D ]�}t          j        | |d¦  «         |dz  }t          j        | |d¦  «         |dz  }t          j        | |d¦  «         |dz  }t          j        | ||¦  «         |dz  }|                      ¦   «         rt          j        | |d¦  «         |dz  }Œž||z  }|dk    rn|dz  }ŒÂdS 	 |}t          |¦  «        D ]�}t          |  	                    ¦   «         dz
  ¦  «        D ]}	t          j        | ||¦  «         |dz  }Œ|                      ¦   «         rt          j        | |d¦  «         |dz  }Œtt          j        | ||¦  «         |dz  }Œ�||z  }|dk    rn|dz  }Œ³dS )zO
    Clear a pixmap rectangle - my version also supports non-alpha pixmaps
    r   rK  r
  r   )r�   Úfz_intersect_irectrÆ  r	  r
  r  r  rt  r)  rE   r(  r¦  rÛ  rL  ru  rÜ  )
rê  r¸   rÑ
  r   r)  ÚdestspanÚdestprr  r(  rŸ  s
             r)   r®  r®  «J  s‘  € õ 	Ô  ¥EÔ$8¸Ñ$>Ô$>Ñ?Ô?€AØ	ŒˆqŒt‰€AØ	ŒˆqŒt‰€AØˆA‚v€v��a’�Øˆqà�{Š{‰}Œ}€HØ˜œ˜tŸvšv™xœx™Ñ(¨4¯6ª6©8¬8°q´t¸d¿fºf¹h¼h±Ñ+GÑG€Eõ Ô˜TŸ_š_Ñ.Ô.Ñ/Ô/°1Ò4Ð4Ø�e‘ˆð	ØˆAÝ˜1˜a‘[”[ð ð �ÝÔ$ T¨1¨aÑ0Ô0Ð0Ø�Q‘�ÝÔ$ T¨1¨aÑ0Ô0Ð0Ø�Q‘�ÝÔ$ T¨1¨aÑ0Ô0Ð0Ø�Q‘�ÝÔ$ T¨1¨eÑ4Ô4Ð4Ø�Q‘�Ø—:’:‘<”<ð ÝÔ(¨¨q°#Ñ6Ô6Ð6Ø˜‘F�AøØ�XÑˆEØ�AŠvˆvØØ�‰FˆAð#	ð$ ˆqðØˆÝ�q‘”ð 		ð 		ˆAÝ˜4Ÿ6š6™8œ8 A™:Ñ&Ô&ð ð �ÝÔ$ T¨1¨eÑ4Ô4Ð4Ø�Q‘��Ø�zŠz‰|Œ|ð ÝÔ$ T¨1¨cÑ2Ô2Ð2Ø�Q‘��åÔ$ T¨1¨eÑ4Ô4Ð4Ø�Q‘��Ø�ÑˆØ�Š6ˆ6ØØ	ˆQ‰ˆðð  ˆ1r*   c                óX  — t          | t          t          f¦  «        r| g} t          | t          t          f¦  «        sdg fS t          | ¦  «        dvrdg fS | d d …         }t          t          |¦  «        ¦  «        D ]}||         dk     s||         dk    rd||<   Œ t          |¦  «        |fS )Nr1  )r   r   r   rK  r   r   )r>   r4   ro  r´   rµ   r7   rL  )r  rG   r®   s      r)   r;  r;  âJ  s³   € å�%�#�u˜Ñ&Ô&ð Ø�ˆå�u�t¥U˜mÑ,Ô,ð Ø�2ˆvˆå
ˆ5�z„z˜Ð%Ð%Ø�2ˆvˆà
���Œ(€CÝ•3�s‘8”8‰_Œ_ð ð ˆØˆqŒ6�AŠ:ˆ:˜˜Qœ !š˜ØˆC�‰FøÝˆs‰8Œ8�Sˆ=Ðr*   c                ó8   — 	 t          j        | j        |¦  «        S r,   )r  r   Úll_JM_color_countrÌ   r5   r�   rÆ  ró  r}  r   rt  r	  r
  r  r  rE   r)  r(  rX  Úfz_is_empty_irectrL  r8   )r·  r  r    r´  r”  rt  r]  rÕ  rE   Ú	substriderr  Úoldpixr®   r�  Únewpixrµ  r¼  s                    r)   r°  r°  ôJ  s   € ð<ÝÔ& r¤}°dÑ;Ô;Ð;r*   c                óÖ   — t          j        | t           j        ¦  «        \  }}|r|dk    rdS t          j        t          j        ||¦  «        ¦  «        }t          j        ||¦  «         |S )z*
    compress char* into a new buffer
    r   N)r�   Ú fz_new_deflated_data_from_bufferÚFZ_DEFLATE_BESTrr  Úfz_new_buffer_from_dataÚfz_resize_buffer)Úinbufferr}  Úcompressed_lengthrÀ  s       r)   ÚJM_compress_bufferr  K  su   € õ $ÔDØÝÔ!ñô Ñ€DÐ
ð
 ð Ð$¨Ò)Ð)ØˆtÝ
Œ.�Ô6°tÐ=NÑOÔOÑ
PÔ
P€CÝ	Ô˜3Ð 1Ñ2Ô2Ð2Ø€Jr*   c                ó†  — d}t          j        ¦   «         }| D ]”}|j        j        t          j        k    rŒ|D ]t}d}|D ]i}t          ||¦  «        }t          ||¦  «        rGd}|r|                     d¦  «         d}|                     t          |j        j
        ¦  «        ¦  «         Œj|rd}ŒuŒ•|                     ¦   «         }	|	S )Nr   r   r%   )r9   ÚStringIOrÌ   rÈ   r�   r.  r0  r1  r   rÉ  r¼  rv  )
rÖ   rË  Úneed_new_lineræ  r\	  ro   Úline_had_textrú  r  rr  s
             r)   r‚  r‚  ,K  sè   € Ø€MÝŒ[‰]Œ]€FØð "ð "ˆØÔÔ ¥EÔ$=Ò=Ð=ØØð 	"ð 	"ˆDØˆMØð ?ð ?�Ý   rÑ*Ô*�Ý# D¨!Ñ,Ô,ð ?Ø$%�MØ$ð *ØŸš TÑ*Ô*Ð*Ø()˜Ø—L’L¥¨R¬]¬_Ñ!=Ô!=Ñ>Ô>Ð>øØð "Ø !�øð	"ð 	�ŠÑÔ€AØ€Hr*   r  c                ó²  — t          j        ¦   «         }d}|}|}||k    rd}|}|}t          |¦  «        }|}	g }
	 t          |	||¦  «        s�nÊt          j        | |	¦  «        }t          j        |¦  «        }t          j        ||¦  «        \  }}}t          j        ||t          j        ¦   «         t          j	        ¦   «         ¦  «         t          j
        |¦  «         d}t          j        |||||¦  «        }t          j        |d|¦  «         t          j        ||	¦  «        }t          j        |¦  «        }|j        rÔ|                     ¦   «         }t          j        |                     ¦   «         ¦  «        }t          j        |¦  «        }|rt          j        |||¦  «         nRt          j        | |¦  «        \  }}}|	|||j        |j        z
  |j        |j        z
  ||dœ}|
                     |¦  «         |                     ¦   «         }|j        °Ô|	|z  }	�ŒÝ|
D ]à}t          j        ||d         ¦  «        }|d         }t          j        ¦   «         }d|_        |j        |j        _        |j         |j        _         |d         |_!        |d	         |_"        |d
         |_#        |d         |_$        d|_%        |d         }t          j&        t          j'        |¦  «        ¦  «        }t          j        |||¦  «         Œát          j(        ¦   «         }d|_)        d|_*        d|_+        d|_,        d|_-        d|_.        d|_/        d|_0        d|_1        d|_2        d|_3        t          j4        d¦  «        }t          j5        |¦  «        }t          j6        |||¦  «         | 7                    ¦   «          t          j8        |¦  «        }ts          |tt          ¦  «        sJ ‚|S )zx
    Convert any MuPDF document to a PDF
    Returns bytes object containing the PDF, created via 'write' function.
    r   r1  N)rÖ   rG   rY  rÆ  r   r¬  r­  rÖ   rG   rÅ  rÆ  r   r¬  r­  r   rY  r   i    );r�   rÆ   r,  r   r@  rØ  Úpdf_page_writerÜ  rr  rÉ  rÝ  rt  ru  Úpdf_load_pager  rÌ   ra  rh  r÷   r3  Úpdf_create_linkr«  r  r  r	  r
  rk   r=  Úfz_link_destrÈ   rÔ  rÓ  rÖ   rÆ  r   r(  r)  r]  Úpdf_new_uri_from_explicit_destÚ
FzLinkDestr	  r	  r	  r	  r	  r#	  r	  r	  r	  r!	  r"	  r 	  rã  rä  r.	  r  rÃ
  r>   r  )r*  ru  r¸  rY  ræ  ru  rr  r`  rS  r®   Úinternal_linksrÖ   rv  rà  ra  rw  rx  r\  r·  ra  r÷   r°  rG   r¬  r­  Úilinkrê  r¹  r  r  r¼  s                                  r)   rÊ  rÊ  CK  s¹  € õ
 ÔÑ Ô €FØ€DØ
€AØ
€AØ	ˆB‚w€wØˆØˆØˆÝ
˜6Ñ
"Ô
"€CØ
€AØ€Nð Ý˜˜1˜aÑ Ô ð 	ÙÝÔ! # qÑ)Ô)ˆÝÔ& tÑ,Ô,ˆÝ#(Ô#7¸ÀÑ#IÔ#IÑ ˆˆY˜ÝÔ˜$ ¥U¤^Ñ%5Ô%5µu´~Ñ7GÔ7GÑHÔHÐHÝÔ˜cÑ"Ô"Ð"ØˆÝÔ% f¨h¸¸YÈÑQÔQˆÝÔ˜f b¨(Ñ3Ô3Ð3õ Ô& v¨qÑ1Ô1ˆõ Ô" 4Ñ(Ô(ˆØŒoð 	Ø—(’(‘*”*ˆCÝ”< §	¢	¡¤Ñ,Ô,ˆDÝÔ3°CÑ8Ô8ˆKàð -ÝÔ% h°°cÑ:Ô:Ð:Ð:õ $Ô3°C¸Ñ=Ô=‘��R˜Ø ¨°dÀÄÈÌÁÐW[ÔW^Ð_cÔ_fÑWfÐnpÐxzÐ{Ð{�Ø×%Ò% eÑ,Ô,Ð,Ø—9’9‘;”;ˆDð Œoð 	ð 	
ˆT‰	ˆñA ðH  ð 3ð 3ˆÝÔ& v¨u°V¬}Ñ=Ô=ˆØ�EŒlˆÝÔ!Ñ#Ô#ˆØˆŒ	Øœ;ˆŒÔØœˆŒŒØ�s”ˆŒØ�s”ˆŒØ�t”ˆŒØ�t”ˆŒØˆŒ	Ø�6Œ]ˆÝÔ2µ5Ô3CÀDÑ3IÔ3IÑJÔJˆÝÔ˜h¨¨cÑ2Ô2Ð2Ð2åÔ Ñ"Ô"€DØ€D„OØ€DÔØ€DÔØ€DÔØ€DÔØ€DÔØ€D„MØ€DÔØ€D„NØ€D„MØ€D„Nå
Ô
˜dÑ
#Ô
#€CÝ
Œ.˜Ñ
Ô
€CÝ	Ô˜V S¨$Ñ/Ô/Ð/Ø×ÒÑÔÐÝÔ$ SÑ)Ô)€AÝ�a�ÑÔÐÐÐØ€Hr*   c           
     óþ  — t          j        t          j        t          j        | ¦  «        d¦  «        ¦  «        }t          j        |t           j        ¦  «        }t          j        |¦  «        }	 t          | ||¦  «         t          j        |t          d¦  «        |¦  «         |t           j
        k    ru|t          t          z  z  }t          j        t          j        | ¦  «        t          j        |¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «         t          j        t          j        | ¦  «        d¦  «        }|j        sft          j        | d¦  «        }t          j        t          j        | ¦  «        |t          d¦  «        t          d¦  «        t          d¦  «        ¦  «         t          j        ||¦  «         n¬# t$          $ rŸ t&          rt)          ¦   «          t          j        ||¦  «         |t           j
        k    rct          j        t          j        | ¦  «        t          j        |¦  «        t          d¦  «        t          d¦  «        t          d¦  «        ¦  «         ‚ w xY w|S )	NzRoot/AcroForm/SigFlagsr  r/  r0  rª  zRoot/AcroForm/Fieldsr   r½  )r�   r  r»  r3  Úpdf_create_annot_rawr4  rÿ   ÚJM_set_field_typer€  r  ÚPDF_WIDGET_TYPE_SIGNATUREÚSigFlag_SignaturesExistÚSigFlag_AppendOnlyr  r  rÌ   rK  r�  rg   r
  rv   rš  )	r*  rÖ   rÈ   Ú	fieldnameÚold_sigflagsrß   r   r«  rf  s	            r)   rº  rº  ŸK  s;  € ÝÔ#¥EÔ$7½Ô8IÈ#Ñ8NÔ8NÐPhÑ$iÔ$iÑjÔj€Lõ
 Ô& t­UÔ-CÑDÔD€EÝÔ# EÑ*Ô*€Ið&Ý˜#˜y¨$Ñ/Ô/Ð/ÝÔ& yµ(¸3±-´-ÀÑKÔKÐKà•5Ô2Ò2Ð2Ø#Õ'>ÕASÑ'SÑTˆHÝÔÝÔ% cÑ*Ô*ÝÔ% hÑ/Ô/Ý˜VÑ$Ô$Ý˜ZÑ(Ô(Ý˜ZÑ(Ô(ñô ð õ Ô"¥5Ô#4°SÑ#9Ô#9Ð;QÑRÔRˆØŒð 	ÝÔ& s¨AÑ.Ô.ˆDÝÔÝÔ% cÑ*Ô*ØÝ˜VÑ$Ô$Ý˜ZÑ(Ô(Ý˜XÑ&Ô&ñô ð õ 	Ô˜T 9Ñ-Ô-Ð-Ð-øÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4ÝÔ˜t UÑ+Ô+Ð+à•5Ô2Ò2Ð2ÝÔÝÔ% cÑ*Ô*ÝÔ% lÑ3Ô3Ý˜VÑ$Ô$Ý˜ZÑ(Ô(Ý˜ZÑ(Ô(ñô ð ð 	ðøøøð €Ls   Á.E"G ÇB)I:c                ón  — t           rt          j        | ¦  «        S t          | ¦  «        }t	          j        t	          j        | t          d¦  «        ¦  «        ¦  «        }t	          j        |¦  «        st	          j	        |¦  «        r|}|j
        |j
        z
  }|j
        |j        z
  }||_        ||_
        |S )z%
    return a PDF page's CropBox
    r3  )r  r   rx  r  r�   r$  rF  r  r¯  r®  r  r  )rx  rv  ry  r  r  s        r)   rx  rx  ÑK  s¯   € õ ð *ÝÔ Ñ)Ô)Ð)å˜8Ñ$Ô$€HÝÔÝÔ.¨x½À)Ñ9LÔ9LÑMÔMñô €Gõ Ô  Ñ)Ô)ð ­UÔ-CÀGÑ-LÔ-Lð ØˆØ	Œ�w”zÑ	!€BØ	Œ�w”zÑ	!€BØ€G„JØ€G„JØ€Nr*   c                ó¾   — t          | ¦  «        }t          |j        |j        z
  ¦  «        }t          |j        |j        z
  ¦  «        }t          j        ||¦  «        }|S r,   )rx  rï  r	  r
  r  r  r�   Úfz_make_point)rx  r÷   r   rÆ  r¸  s        r)   ÚJM_cropbox_sizer  åK  sR   € Ý�hÑÔ€DÝˆDŒG�d”gÑÑÔ€AÝˆDŒG�d”gÑÑÔ€AÝÔ˜q !Ñ$Ô$€DØ€Kr*   c                óH   — t          | ¦  «        }t          j        |¦  «        S )z&
    just the inverse of rotation
    )r¨  r�   rs  )rÖ   Úmps     r)   r$  r$  íK  s"   € õ 
˜tÑ	$Ô	$€BÝÔ! "Ñ%Ô%Ð%r*   c                ó  — d}t          j        | d¦  «        }t          j        |t          d¦  «        d¦  «         t          j        |t          d¦  «        d¦  «        }t          j        |t          d¦  «        |¦  «         t          j        |t          d¦  «        |¦  «         t          j        |t          d¦  «        |¦  «         t          j        |t          d	¦  «        t          d
¦  «        ¦  «         d}	t          j        | t          j        |	¦  «        t          j        ¦   «         d¦  «        }
t          j        |t          d¦  «        |
¦  «         t          | |
||¦  «         t          j
        |¦  «        \  }}t          j        |
t          d¦  «        |¦  «         t          j        |
t          d¦  «        |¦  «         t          j        |
t          d¦  «        d¦  «        }t          j        |t          d¦  «        |¦  «         |S )zE
    embed a new file in a PDF (not only /EmbeddedFiles entries)
    r   rô  rû  rK  r¦  r§  r©  rª  r6  ÚFilespecs     r  r«  r¬  r­  )r�   rS  rR  r  r€  rN  r4  r‘  r5  r)  r  rI  )rZ  rÀ  rf   r  r¹  rN
  r  r  ÚefÚbsrÎ  r  rË  s                r)   rõ  rõ  õK  s·  € ð €DÝ
Ô
˜S !Ñ
$Ô
$€CÝ	Ô˜C¥¨$¡¤°Ñ3Ô3Ð3Ý	Ô	  ¥h¨t¡n¤n°aÑ	8Ô	8€BÝ	Ô" 3­°©¬°xÑ@Ô@Ð@Ý	Ô" 3­°©¬¸	ÑBÔBÐBÝ	Ô" 3­°Ñ(8Ô(8¸$Ñ?Ô?Ð?Ý	Ô�s�H VÑ,Ô,­h°zÑ.BÔ.BÑCÔCÐCØ	€BÝÔØåÔ0°Ñ4Ô4ÝŒL‰NŒNØñ	ô 	€Aõ 
Ô�r�8 C™=œ=¨!Ñ,Ô,Ð,Ý�S˜!˜S (Ñ+Ô+Ð+ÝÔ% cÑ*Ô*�G€Dˆ!Ý	Ô˜1�h t™nœn¨dÑ3Ô3Ð3Ý	Ô˜1�h xÑ0Ô0°$Ñ7Ô7Ð7ÝÔ$ Q­°Ñ(:Ô(:¸AÑ>Ô>€FÝ	Ô˜6¥8¨FÑ#3Ô#3°TÑ:Ô:Ð:Ø€Jr*   c                ó  — t          j        t          j        | ¦  «        t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        }|j        r:t          j        |¦  «        dk    r"t          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }|j        r%t          j        |t          d¦  «        d¦  «         dS dS )	z°
    perform some cleaning if we have /EmbeddedFiles:
    (1) remove any /Limits if /Names exists
    (2) remove any empty /Collection
    (3) set /PageMode/UseAttachments
    r/  Ú
Collectionr   rè  ré  r‡  rÅ	  N)	r�   r  r3  r  rÌ   r{  rA  r  rU  )rZ  r;  ÚcollÚefiless       r)   r+	  r+	  L  só   € õ Ô�uÔ0°#Ñ6Ô6½ÀÑ8HÔ8HÑIÔI€Dõ Ô˜d¥H¨\Ñ$:Ô$:Ñ;Ô;€DØ„ð 9�5Ô-¨dÑ3Ô3°qÒ8Ð8ÝÔ˜4¥¨,Ñ!7Ô!7Ñ8Ô8Ð8åÔ ØÝ�WÑÔÝ�_Ñ%Ô%Ý�WÑÔñ	ô €Fð Ôð NÝÔ ¥h¨zÑ&:Ô&:Ð<LÑMÔMÐMÐMÐMðNð Nr*   c                ób   — | j         sdS t          j        | ¦  «        }t          |d¬¦  «        }|S )Nr\   rà  ©Úerrors)rÌ   r�   rÃ
  rƒ  )rN  rr  r  s      r)   ru
  ru
  2L  s8   € ØŒ?ð ØˆrÝÔ$ TÑ*Ô*€AÝ
*¨1°YÐ
?Ñ
?Ô
?€CØ€Jr*   c           	     ó  — t          j        t          j        | ¦  «        t          d¦  «        ¦  «        }|j        sÎt          j        d¦  «        }d}|D ]}|t          |¦  «        z  }Œt          j        t          j        | ¦  «        t          d¦  «        d¦  «        }t          j        |t          j	        |t          |¦  «        ¦  «        ¦  «         t          j        |t          j	        |t          |¦  «        ¦  «        ¦  «         dS dS )z!
    Store ID in PDF trailer
    r:  r
  r\   r   N)r�   r  r3  r  rÌ   Ú
fz_memrnd2r
  rœ  r�  r   r7   )rZ  r®  Úrnd0Úrndr®   s        r)   r,	  r,	  :L  sí   € õ Ô
�eÔ/°Ñ4Ô4µh¸t±n´nÑ
EÔ
E€CØŒ>ð 	IÝÔ Ñ#Ô#ˆð ˆØð 	ð 	ˆAØ•3�q‘6”6‰MˆCˆCÝÔ&­Ô(9¸3Ñ(?Ô(?ÅÈ$ÁÄÐQRÑSÔSˆÝÔ˜c¥5Ô#7¸½cÀ#¹h¼hÑ#GÔ#GÑHÔHÐHÝÔ˜c¥5Ô#7¸½cÀ#¹h¼hÑ#GÔ#GÑHÔHÐHÐHÐHð	Ið 	Ir*   c                ó  — t          j        t          j        t          j        | ¦  «        t          d¦  «        ¦  «        t          d¦  «        ¦  «        }|j        r|S t          j        t          j        | ¦  «        t          d¦  «        ¦  «        }t          j        |t          d¦  «        d¦  «        }t          j        |t          d¦  «        d¦  «         t          j        |t          d¦  «        d¦  «        }t          j        |t          d¦  «        d¦  «         t          j        |t          d	¦  «        d¦  «         t          j        |t          d
¦  «        d¦  «         t          j        |t          d¦  «        d¦  «         |S )z7
    Ensure OCProperties, return /OCProperties key
    r/  rZ  r   r¢  r   r  r   r¥  r¦  r¤  ÚRBGroups)r�   r  r3  r  rÌ   rR  rœ  )rZ  r²  r;  r  s       r)   r§  r§  JL  s=  € õ Ô
�UÔ/µÔ0AÀ#Ñ0FÔ0FÍÐQWÑHXÔHXÑYÔYÕ[cÐdrÑ[sÔ[sÑ
tÔ
t€CØ
„~ð Øˆ
ÝÔ�eÔ/°Ñ4Ô4µh¸vÑ6FÔ6FÑGÔG€DÝ
Ô
! $­°Ñ(@Ô(@À!Ñ
DÔ
D€CÝ	Ô˜S¥(¨6Ñ"2Ô"2°AÑ6Ô6Ð6ÝÔ ¥X¨c¡]¤]°AÑ6Ô6€AÝ	Ô˜Q¥¨¡¤°Ñ2Ô2Ð2Ý	Ô˜Q¥¨¡¤°Ñ3Ô3Ð3Ý	Ô˜Q¥¨Ñ 1Ô 1°1Ñ5Ô5Ð5Ý	Ô˜Q¥¨Ñ 4Ô 4°aÑ8Ô8Ð8Ø€Jr*   c                ó~  — | sdS |                       d¦  «        rdS |                       d¦  «        rdS |                       d¦  «        rdS |                       d¦  «        rdS |                       d¦  «        rd	S |                       d
¦  «        rd	S |                       d¦  «        rdS |                       d¦  «        rdS dS )z'
    Make /DA string of annotation
    rÔ  ÚCorð  ÚcoÚTirñ  ÚtiÚSyÚSymbr‘  ÚZarò  Úza©r3   r»
  s    r)   ÚJM_expand_fnamer;  \L  sÃ   € ð Ð!˜6˜6Ø‡‚�tÑÔÐ- v vØ‡‚�tÑÔÐ- v vØ‡‚�tÑÔÐ- v vØ‡‚�tÑÔÐ- v vØ‡‚�tÑÔÐ- v vØ‡‚�tÑÔÐ- v vØ‡‚�tÑÔÐ- v vØ‡‚�tÑÔÐ- v vØˆ6r*   c                ó  — | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS dS )	z!
    String from widget type
    ÚButtonÚCheckBoxÚRadioButtonÚTextÚListBoxÚComboBoxÚ	Signaturerb
  )r�   r  r  rø  ÚPDF_WIDGET_TYPE_TEXTÚPDF_WIDGET_TYPE_LISTBOXÚPDF_WIDGET_TYPE_COMBOBOXr  )rÁ  s    r)   ÚJM_field_type_textrG  lL  sŽ   € ð •Ô,Ò,Ð,ØˆxØ•Ô.Ò.Ð.ØˆzØ•Ô1Ò1Ð1Øˆ}Ø•Ô*Ò*Ð*ØˆvØ•Ô-Ò-Ð-ØˆyØ•Ô.Ò.Ð.ØˆzØ•Ô/Ò/Ð/Øˆ{Øˆ9r*   c                ó†  — t          | t          j        ¦  «        sJ ‚t          j        |t          j        | ¦  «        ¦  «        }|j        |j        z
  }|j        |j        z
  }|dk    s|dk    rdS |  	                    ¦   «         }||j        |  
                    ¦   «         z
  z  |                      ¦   «         |j        |                      ¦   «         z
  z  z   }	 |}t          |¦  «        D ]G}t          |                      ¦   «         ¦  «        D ]#}	t          j        | |||	         ¦  «         |dz  }Œ$ŒH||z  }|dz  }|dk    rnŒkdS r  )r>   r�   rg  ró  rÆ  r	  r
  r  r  rt  r)  rE   r(  rL  ru  )
rê  r_  rÑ
  r   r)  rô  rõ  rr  r(  r®   s
             r)   r*  r*  �L  s@  € Ý�d�EœNÑ+Ô+Ð+Ð+Ð+åÔ  ¥EÔ$8¸$Ñ$?Ô$?Ñ@Ô@€AØ	ŒˆqŒt‰€AØ	ŒˆqŒt‰€AØˆA‚v€v��a’�ØˆqØ�{Š{‰}Œ}€HØ˜œ˜tŸvšv™xœx™Ñ(¨4¯6ª6©8¬8°q´t¸d¿fºf¹h¼h±Ñ+GÑG€Eð	ØˆÝ�q‘”ð 	ð 	ˆAÝ˜DŸFšF™HœHÑ%Ô%ð ð �ÝÔ$ T¨1¨c°!¬fÑ5Ô5Ð5Ø�Q‘��ðð 	�ÑˆØ	ˆQ‰ˆØ�Š6ˆ6Øð	ð ˆ1r*   c                óÀ  — t          | t          j        ¦  «        sJ ‚d}t          j        | ¦  «        }d}t	          | ¦  «        }t          j        |¦  «        }	 t          |t          j        ¦  «        sJ ‚|j        sn]t          j        |¦  «        }t          j        |d¦  «        }|j        rt          j        ||¦  «        sd}nt          j	        |¦  «        }Œ�|r|S dS )z•
    Return the first annotation whose /IRT key ("In Response To") points to
    annot. Used to remove the response chain of a given annotation.
    Nr   r   r  )
r>   r�   rä   rÿ   rà   r  rÌ   rþ   r~  r5  )rß   rž  r   r   rÖ   Úirt_annot_objr¡  s          r)   r™  r™  ˜L  sö   € õ
 �e�Uœ^Ñ,Ô,Ð,Ð,Ð,Ø€IÝÔ# EÑ*Ô*€IØ€Eå˜5Ñ!Ô!€DÝÔ% dÑ+Ô+€Ið
4Ý˜)¥U¤^Ñ4Ô4Ð4Ð4Ð4ØÔ#ð 	ØÝÔ+¨IÑ6Ô6ˆÝÔ ¨uÑ5Ô5ˆØŒ<ð 	ÝÔ# A yÑ1Ô1ð Ø�ØÝÔ(¨Ñ3Ô3ˆ	ð
4ð ð ØÐðð r*   c                ó~   — t          | t          j        ¦  «        sJ ‚t          j        rdS t          j        | ¦  «        S )ú3
    need own versions of ascender / descender
    r~  )r>   r�   rà  rÙ  r‹   r½
  )rW  s    r)   râ  râ  ³L  s=   € õ �d�EœLÑ)Ô)Ð)Ð)Ð)ÝÔ%ð ØˆsÝÔ! $Ñ'Ô'Ð'r*   c                ó‚   — t          | t          j        ¦  «        sJ ‚t          j        rdS t          j        | ¦  «        }|S )rL  gš™™™™™É¿)r>   r�   rà  rÙ  r‹   rÍ
  )rW  rG   s     r)   rã  rã  ½L  sA   € õ �d�EœLÑ)Ô)Ð)Ð)Ð)ÝÔ%ð ØˆtÝ
Ô
! $Ñ
'Ô
'€CØ€Jr*   c                ó†   — 	 | dk    s| dk    sd| cxk    rdk    rn ndS |sdS t          | ¦  «        }|D ]}||k    r dS ŒdS )z7Check if ch is an extra word delimiting character.
    r   rˆ  rÖ  i*   i.   TFrÇ  )rú  r‰  rç
  r
  s       r)   r†  r†  ÈL  sƒ   € ðØ�Š8ˆ8Ø�Š9ˆ9Ø�RÐ!Ð!Ò!Ð!˜6Ò!Ð!Ð!Ð!Ð!ð ˆtØð ØˆuÝˆr‰7Œ7€DØð ð ˆØ�Š9ˆ9Ø�4�4ð àˆ5r*   c                ó"   — | dk     s| dk    rdS dS )Ni�  i 	  FTr-   rÈ  s    r)   r‡  r‡  ÜL  s   € Ø	ˆE‚z€z�R˜%’Z�ZØˆuØˆ4r*   c                óÚ   — t          | t          j        ¦  «        sJ ‚t          j        | ¦  «        }|                     d¦  «        }t
          j        s|dk    s|dk    r|S ||dz   d …         S )NrI	  r1  rô  r   )r>   r�   rà  rÿ
  r¡   rÙ  rŠ   )rW  r   rr  s      r)   ÚJM_font_namerQ  âL  sk   € Ý�d�EœLÑ)Ô)Ð)Ð)Ð)ÝÔ˜dÑ#Ô#€DØ�	Š	�#‰Œ€AÝÔ ð  A¨¢G G¨q°Aªv¨vØˆØ��A‘��Œ<Ðr*   c           	     ó&  — d}t          j        |¦  «        }t          |¦  «        D �]é}t          j        ||¦  «        }t          j        ||¦  «        }t          j        |¦  «        s@t          j        dt          j        |¦  «        › dt          j        |¦  «        › d�¦  «         Œ�t          j	        |t           j
        ¦  «        }	t          j	        |t           j        ¦  «        }
|
j        rt          j        |
¦  «        r t          j	        |t           j        ¦  «        }n|
}t          j	        |t           j        ¦  «        }t          j        |¦  «        rt          j	        |t           j        ¦  «        }t          j        |¦  «        }d}|rt#          | |¦  «        }||t          j        |	¦  «        t%          t          j        |¦  «        ¦  «        t          j        |¦  «        t          j        |¦  «        |f}|                     |¦  «         �Œë|S )Nr   rë   z' is no font dict (ú 0 R)rü  )r�   r{  rL  r}  r|  rz  Úfz_warnry  r  r  ÚPDF_ENUM_NAME_SubtypeÚPDF_ENUM_NAME_BaseFontrÌ   rþ  ÚPDF_ENUM_NAME_NameÚPDF_ENUM_NAME_EncodingÚPDF_ENUM_NAME_BaseEncodingrÿ  r²  rk   )rZ  Údict_ÚfontlistÚstream_xrefr    rE   r®   Úrefnamer:  r  r  r   rë  r  r  rê  s                   r)   ÚJM_gather_fontsr^  ëL  sÚ  € Ø	
€BÝÔ˜5Ñ!Ô!€AÝ�1‰XŒXð ñ ˆåÔ(¨°Ñ2Ô2ˆÝÔ)¨%°Ñ3Ô3ˆÝÔ  Ñ*Ô*ð 	ÝŒMÐo�uÔ0°Ñ9Ô9ÐoÐoÍeÔN^Ð_gÑNhÔNhÐoÐoÐoÑpÔpÐpØåÔ$ X­uÔ/JÑKÔKˆÝÔ% hµÔ0LÑMÔMˆØÔ"ð 	¥eÔ&7¸Ñ&AÔ&Að 	ÝÔ% hµÔ0HÑIÔIˆDˆDàˆDÝÔ% hµÔ0LÑMÔMˆÝÔ˜XÑ&Ô&ð 	VÝÔ)¨(µEÔ4TÑUÔUˆHÝÔ Ñ)Ô)ˆØˆØð 	2Ý& s¨DÑ1Ô1ˆCàØÝÔ! 'Ñ*Ô*Ý#¥EÔ$5°dÑ$;Ô$;Ñ<Ô<ÝÔ! 'Ñ*Ô*ÝÔ! (Ñ+Ô+Øðˆð 	�Š˜ÑÔÐÑØ€Ir*   rZ  úmupdf.PdfObjr\  r4   c           	     ó>  — t          | t          j        ¦  «        sJ ‚d}t          j        |¦  «        }t	          |¦  «        D �]Ù}t          j        ||¦  «        }t          j        ||¦  «        }t          j        |¦  «        s@t          j        dt          j	        |¦  «        › dt          j
        |¦  «        › d�¦  «         Œ�t          j        |t          d¦  «        ¦  «        }	t          j        |	t          d¦  «        ¦  «        sŒÆt          j        |t          d¦  «        ¦  «        }
t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        }nt          j        ¦   «         }|
j        r(t          j        t          j        |
¦  «        |¦  «        }n#t          j        t          j        j        ¦  «        }t          j
        |¦  «        }|t          j	        |¦  «        |t+          |¦  «        f}|                     |¦  «         �ŒÛ|S )	z6
    Store info of a /Form xobject in Python list
    r   rë   z' is no form dict (rS  r†  ÚFormr%  ru  )r>   r�   rÆ   r{  rL  r}  r|  rz  rT  ry  r  r  r  rý  rÌ   Úpdf_to_matrixrr  r©  r$  rh  ri  rg  rk   )r*  rZ  Ú	imagelistr\  r    rE   r®   r]  Ú	imagedictr[  r¡  r€  rv  r/  r  rê  s                   r)   ÚJM_gather_formsre  M  sæ  € õ �c�5Ô,Ñ-Ô-Ð-Ð-Ð-Ø	
€BÝÔ˜5Ñ!Ô!€AÝ�1‰XŒXð  ñ  ˆÝÔ(¨%°Ñ3Ô3ˆÝÔ*¨5°!Ñ4Ô4ˆ	ÝÔ  Ñ+Ô+ð 	ÝŒMÐp�uÔ0°Ñ9Ô9ÐpÐpÍeÔN^Ð_hÑNiÔNiÐpÐpÐpÑqÔqÐqØåÔ" 9­h°yÑ.AÔ.AÑBÔBˆÝÔ  ­°Ñ(8Ô(8Ñ9Ô9ð 	ØåÔ˜y­(°6Ñ*:Ô*:Ñ;Ô;ˆÝÔ˜y­(°8Ñ*<Ô*<Ñ=Ô=ˆØŒ<ð 	#ÝÔ% aÑ(Ô(ˆCˆCå”.Ñ"Ô"ˆCØŒ<ð 	=ÝÔ*­EÔ,=¸aÑ,@Ô,@À#ÑFÔFˆDˆDå”<¥¤Ô ;Ñ<Ô<ˆDÝÔ 	Ñ*Ô*ˆð ÝÔ! 7Ñ+Ô+ØÝ Ñ%Ô%ð	ˆð 	×Ò˜ÑÔÐÑØ€Ir*   r*  úmupdf.PdfDocumentc                óü  — d}t          j        |¦  «        }t          |¦  «        D �]Ô}t          j        ||¦  «        }t          j        ||¦  «        }t          j        |¦  «        s@t          j        dt          j        |¦  «        › dt          j        |¦  «        › d�¦  «         Œ�t          j	        |t          d¦  «        ¦  «        }	t          j        |	t          d¦  «        ¦  «        sŒÆt          j        |¦  «        }
d}t          j        |t          d¦  «        t          d	¦  «        ¦  «        }|j        rt          j        |¦  «        }t          j        |t          d
¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        rt          j        |d¦  «        }t          j        d¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        r™|}t          j        |d¦  «        }t          j        |t          d¦  «        ¦  «        s"t          j        |t          d¦  «        ¦  «        r>t          j        |d¦  «        }t          j        |¦  «        rt          j        |d¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |t          d¦  «        t          d¦  «        ¦  «        }|
|t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t%          t          j        |¦  «        ¦  «        t%          t          j        |¦  «        ¦  «        t%          t          j        |¦  «        ¦  «        t%          t          j        |¦  «        ¦  «        |f
}|                     |¦  «         �ŒÖ|S )z/
    Store info of an image in Python list
    r   rë   z' is no image dict (rS  r†  r
  r   r  r  ÚFilterr§  Ú
ColorSpaceÚCSÚDeviceNÚ
Separationr   rã  rî	  rä  r:  ÚBitsPerComponentÚBPC)r�   r{  rL  r}  r|  rz  rT  ry  r  r  r  rý  r  rÌ   rŽ  rœ  r5  r  r²  rk   )r*  rZ  rc  r\  r    rE   r®   r]  rd  r[  r  Úgenr  r‘  Úaltcsrß  Úcsesr]  rÕ  rô  rê  s                        r)   ÚJM_gather_imagesrr  8M  s^  € ð 
€BÝÔ˜EÑ"Ô"€AÝ�1‰XŒXð 0 ñ 0 ˆÝÔ(¨°Ñ2Ô2ˆÝÔ*¨5°!Ñ4Ô4ˆ	ÝÔ  Ñ+Ô+ð 	ÝŒMÐp�eÔ/°Ñ8Ô8ÐpÐpÍeÔN^Ð_hÑNiÔNiÐpÐpÐpÑqÔqÐqØåÔ" 9­h°yÑ.AÔ.AÑBÔBˆÝÔ  ­°Ñ(9Ô(9Ñ:Ô:ð 	ØåÔ 	Ñ*Ô*ˆØˆÝÔ# I­x¸Ñ/@Ô/@Å(È6ÑBRÔBRÑSÔSˆØÔð 	*ÝÔ" 5Ñ)Ô)ˆCåÔ% iµ¸(Ñ1CÔ1CÅXÈcÁ]Ä]ÑSÔSˆÝÔ˜gÑ&Ô&ð 	6ÝÔ)¨'°1Ñ5Ô5ˆGå”˜Q‘”ˆÝÔ  ­H°\Ñ,BÔ,BÅHÈTÁNÄNÑSÔSˆÝÔ˜bÑ!Ô!ð 	:ØˆDÝÔ$ T¨1Ñ-Ô-ˆBÝÔ! "¥h¨yÑ&9Ô&9Ñ:Ô:ð :ÝÔ(¨­X°lÑ-CÔ-CÑDÔDð:õ Ô+¨D°!Ñ4Ô4�ÝÔ% eÑ,Ô,ð :Ý!Ô/°°qÑ9Ô9�EÝÔ# I­x¸Ñ/@Ô/@Å(È3Á-Ä-ÑPÔPˆÝÔ$ Yµ¸Ñ0BÔ0BÅHÈSÁMÄMÑRÔRˆÝÔ! )­XÐ6HÑ-IÔ-IÍ8ÐTYÉ?Ì?Ñ[Ô[ˆð ØÝÔ  Ñ'Ô'ÝÔ  Ñ(Ô(ÝÔ  Ñ%Ô%Ý#¥EÔ$5°bÑ$9Ô$9Ñ:Ô:Ý#¥EÔ$5°eÑ$<Ô$<Ñ=Ô=Ý#¥EÔ$5°gÑ$>Ô$>Ñ?Ô?Ý#¥EÔ$5°gÑ$>Ô$>Ñ?Ô?Øðˆð 	×Ò˜ÑÔÐÑØ€Ir*   c                ó,  — t          | t          j        ¦  «        sJ ‚d}t          j        | ¦  «        }	 |j        snB|t          j        t          j        |¦  «        ¦  «        k    rd}nt          j        |¦  «        }ŒJ|st          d|d›d�¦  «        ‚|S )z$
    retrieve annot by its xref
    r   r   úxref r
  z is not an annot of this page)	r>   r�   rÓ   r  rÌ   r  rÿ   r5  rg   )rÖ   r  r   rß   s       r)   r  r  rM  s¯   € õ �d�EœMÑ*Ô*Ð*Ð*Ð*Ø€EåÔ! $Ñ'Ô'€Eð-ØÔð 	ØØ•5Ô#¥EÔ$7¸Ñ$>Ô$>Ñ?Ô?Ò?Ð?ØˆEØÝÔ$ eÑ,Ô,ˆð-ð ð GÝÐE ÐEÐEÐEÐEÑFÔFÐFØ€Lr*   c                ób  — t          | t          j        ¦  «        sJ ‚|sdS d}t          j        | ¦  «        }	 |j        snZt          j        t          j        t          j        |¦  «        d¦  «        ¦  «        \  }}||k    rd}nt          j        |¦  «        }Œb|st          d|› d�¦  «        ‚|S )z*
    retrieve annot by name (/NM key)
    Nr   r   r  rë   z' is not an annot of this page)
r>   r�   rÓ   r  rÌ   Úpdf_to_stringrþ   rÿ   r5  rg   )rÖ   r   r   rß   r£  r  s         r)   r  r  †M  sÑ   € õ �d�EœMÑ*Ô*Ð*Ð*Ð*Øð ØˆØ€EåÔ! $Ñ'Ô'€Eð,ØÔð 	ØåÔ,­UÔ-@ÅÔATÐUZÑA[ÔA[Ð]aÑ-bÔ-bÑcÔc‰ˆ�$Ø�8ÒÐØˆEØÝÔ$ UÑ+Ô+ˆð,ð ð BÝÐ@˜DÐ@Ð@Ð@ÑAÔAÐAØ€Lr*   c                óv  — g }t          j        |                      ¦   «         t           j        ¦  «        }|j        s|S t          t          j        |¦  «        ¦  «        D ]Z}t          j        ||¦  «        }t          j        |d¦  «        }|j        r'| 	                    t          j
        |¦  «        ¦  «         Œ[|S )Nr  )r�   r  r  ÚPDF_ENUM_NAME_AnnotsrÌ   rL  r›  rœ  rþ   rk   r  )rÖ   r³  rŸ  r®   r   r   s         r)   r�  r�  žM  s°   € Ø€EÝÔ §¢¡¤­UÔ-GÑHÔH€FØÔð ØˆÝ•EÔ'¨Ñ/Ô/Ñ0Ô0ð ð ˆÝÔ'¨°Ñ2Ô2ˆ	ÝÔ" 9¨dÑ3Ô3ˆØŒ?ð 	Ø�LŠLÝÔ(¨Ñ.Ô.ñô ð øð €Lr*   c                óf  — t           rt          j        | ¦  «        }|S g }t          j        | t          d¦  «        ¦  «        }t          j        |¦  «        }t          |¦  «        D ]Ë}t          j        ||¦  «        }t          j	        |¦  «        }t          j        |t          d¦  «        ¦  «        }|j
        sŒUt          j        t          j        |¦  «        ¦  «        }|t          j        k    rŒŒt          j        |d¦  «        }	|                     ||t          j        |	¦  «        f¦  «         ŒÌ|S )zK
    return the xrefs and /NM ids of a page's annots, links and fields
    r—  r†  r  )r  r   ru  r�   r  r  r›  rL  rœ  r  rÌ   rŠ  ry  ÚPDF_ANNOT_UNKNOWNrþ   rk   r  )
rx  r³  rŸ  rE   r®   r   r  r  r[  r®  s
             r)   ru  ru  ¬M  s  € õ ð ÝÔ,¨hÑ7Ô7ˆØˆà€EÝÔ ­8°HÑ+=Ô+=Ñ>Ô>€FÝÔ˜VÑ$Ô$€AÝ�A‰YŒYð 
Eð 
EˆÝÔ'¨°Ñ3Ô3ˆ	ÝÔ Ñ+Ô+ˆÝÔ$ iµ¸)Ñ1DÔ1DÑEÔEˆØÔ!ð 	ØÝÔ0µ%Ô2CÀWÑ2MÔ2MÑNÔNˆØ•EÔ+Ò+Ð+ØÝÔ! 9¨dÑ3Ô3ˆØ�Š�t˜U¥EÔ$<¸cÑ$BÔ$BÐCÑDÔDÐDÐDØ€Lr*   c                óš   — |                       d¬¦  «        } | j        st          ¦   «         S t          |                      ¦   «         ¦  «        S r#  )ra  rÌ   r´   ru  r  rÕ   s    r)   r…  r…  ÅM  s>   € Ø�>Š> 5ˆ>Ñ)Ô)€DØŒ?ð Ý‰vŒvˆÝ! 4§8¢8¡:¤:Ñ.Ô.Ð.r*   c                óN  — t           j        }| €|S | }|                     d¦  «        s|                     d¦  «        rt           j        }nÛ|                     d¦  «        s|                     d¦  «        rt           j        }n¤|                     d¦  «        s|                     d¦  «        rt           j        }nm|                     d¦  «        s|                     d	¦  «        rt           j        }n6|                     d
¦  «        s|                     d¦  «        rt           j        }|S )z7
    return pdf_obj "border style" from Python str
    NrÑ
  rè  r
  r  r®   r¬  rt  ÚUrr  r`	  )r�   ÚPDF_ENUM_NAME_Sr3   ÚPDF_ENUM_NAME_BÚPDF_ENUM_NAME_DÚPDF_ENUM_NAME_IÚPDF_ENUM_NAME_U)r^  r  rr  s      r)   r»  r»  ÌM  s  € õ Ô
€CØ€}Øˆ
Ø€AØ	
�Š�cÑ	Ô	ð P˜aŸlšl¨3Ñ/Ô/ð P½%Ô:O°C°CØ	
�Š�cÑ	Ô	ð P˜aŸlšl¨3Ñ/Ô/ð P½%Ô:O°C°CØ	
�Š�cÑ	Ô	ð P˜aŸlšl¨3Ñ/Ô/ð P½%Ô:O°C°CØ	
�Š�cÑ	Ô	ð P˜aŸlšl¨3Ñ/Ô/ð P½%Ô:O°C°CØ	
�Š�cÑ	Ô	ÐO˜aŸlšl¨3Ñ/Ô/ÐO½%Ô:O°CØ€Jr*   c
                óÂ  ‡	— ˆ	fd„}
d}d}|r"t          j        d||d¦  «        } |
|¦  «        S |r1t          |¦  «        }t          j        d||d¦  «        } |
|¦  «        S |dk    rt          j        |¦  «        } |
|¦  «        S | rGt          j        | ¦  «        }|j        r |
|¦  «        S t          j        | ||¦  «        } |
|¦  «        S t          dk    rt          j	        ||¦  «        \  }}}}}nt          j	        ||¦  «        \  }}}d}|rt          j
        d|||d¦  «        }|j        r |
|¦  «        S t          j        |||||¦  «        } |
|¦  «        S )z6
    return a fz_font from a number of parameters
    c                óŠ   •— | j         st          t          ¦  «        ‚| j         j        j        st          j        | ‰¦  «         | S r,   )rÌ   rÞ   ÚMSG_FONT_FAILEDr¾  rá
  r�   Úfz_set_font_embedding)rW  r¸
  s    €r)   ÚfertigzJM_get_font.<locals>.fertigëM  sC   ø€ ØŒð 	0Ý�Ñ/Ô/Ð/àŒÔ$Ô0ð 	5ÝÔ'¨¨eÑ4Ô4Ð4Øˆr*   r   Nr1  )r   é   )r�   Úfz_new_font_from_filer'  r"  Úfz_new_cjk_fontÚfz_new_base14_fontrÌ   Úfz_new_builtin_fontr¯  Úfz_lookup_noto_fontr  Úfz_load_fallback_font)rù   rS  rT  r´
  r*  r  rµ
  r¶
  r·
  r¸
  r‡  rd  rW  r  r}  r¸  r­  Ú
noto_indexs            `        r)   r³
  r³
  ÜM  s²  ø€ ðð ð ð ð ð €EØ€DØð åÔ*¨D°(¸EÀ1ÑEÔEˆØˆv�d‰|Œ|Ðàð å  Ñ,Ô,ˆÝÔ,¨d°C¸ÀÑBÔBˆØˆv�d‰|Œ|Ðà�"‚}€}åÔ$ XÑ.Ô.ˆØˆv�d‰|Œ|Ðàð õ Ô'¨Ñ1Ô1ˆØŒ?ð 	 Ø�6˜$‘<”<ÐÝÔ(¨°7¸IÑFÔFˆØˆv�d‰|Œ|Ðõ ˜gÒ%Ð%Ý.3Ô.GÈÐPTÑ.UÔ.UÑ+ˆˆd�E˜4  å!Ô5°f¸dÑCÔCÑˆˆd�EØ€DØð JÝÔ,¨d°D¸$ÀÀqÑIÔIˆØ„ð Øˆv�d‰|Œ|ÐÝÔ&¨°°hÀÈÑSÔS€DØˆ6�$‰<Œ<Ðr*   c                ó¤  — |dk     rdS t          j        | |¦  «        }t          j        |t          d¦  «        ¦  «        }|j        rJt          j        t          j        |d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        }n"t          j        |t          d¦  «        ¦  «        }|j        st          d¦  «         dS |}d}t          j        |t          d¦  «        ¦  «        }|j        r|}t          j        |t          d¦  «        ¦  «        }|j        r|}t          j        |t          d	¦  «        ¦  «        }|j        rÝ|}t          j        |t          d
¦  «        ¦  «        }|j        r%t          j        |¦  «        st          d¦  «         dS t          j	        |t          d¦  «        ¦  «        rnjt          j	        |t          d¦  «        ¦  «        rnGt          j	        |t          d¦  «        ¦  «        rn$t          dt          j
        |¦  «        ›�¦  «         |st          d¦  «         dS t          j        |¦  «        S )z@
    Return the contents of a font file, identified by xref
    r   Nrì	  r   rø	  z%invalid font - FontDescriptor missingÚFontFileÚ	FontFile2Ú	FontFile3r†  úinvalid font descriptor subtypeÚType1CÚCIDFontType0CÚOpenTypezwarning: unhandled font type zwarning: unhandled font type)r�   r�  r  r  rÌ   r-  rœ  rr   r»  rý  ry  r  )r*  r  r¡  Údesftr  r	   s         r)   r!  r!  N  s@  € ð ˆa‚x€xØˆÝÔ˜c 4Ñ(Ô(€AÝÔ˜q¥(Ð+<Ñ"=Ô"=Ñ>Ô>€EØÔð @ÝÔ(­Ô)<¸UÀAÑ)FÔ)FÑGÔGˆÝÔ  ¥hÐ/?Ñ&@Ô&@ÑAÔAˆˆåÔ  ¥HÐ-=Ñ$>Ô$>Ñ?Ô?ˆàŒ>ð ÝÐ8Ñ9Ô9Ð9Øˆà€Aà€Få
Ô
˜Q¥¨Ñ 4Ô 4Ñ
5Ô
5€CØ
„~ð Øˆå
Ô
˜Q¥¨Ñ 5Ô 5Ñ
6Ô
6€CØ
„~ð Øˆå
Ô
˜Q¥¨Ñ 5Ô 5Ñ
6Ô
6€CØ
„~ð PØˆåÔ  ¥h¨yÑ&9Ô&9Ñ:Ô:ˆØŒ>ð 	¥%Ô"3°CÑ"8Ô"8ð 	ÝÐ5Ñ6Ô6Ð6ØˆFåÔ˜S¥(¨8Ñ"4Ô"4Ñ5Ô5ð 	PØÝÔ˜s¥H¨_Ñ$=Ô$=Ñ>Ô>ð 	PØÝÔ˜s¥H¨ZÑ$8Ô$8Ñ9Ô9ð 	PØåÐNµEÔ4EÀcÑ4JÔ4JÐNÐNÑOÔOÐOàð ÝÐ.Ñ/Ô/Ð/ØˆåÔ  Ñ(Ô(Ð(r*   c                óª  — t          j        | t          d¦  «        t          d¦  «        ¦  «        }|j        sdS t          j        |¦  «        }|dk     rdS g }t          |¦  «        D ]k}t          j        ||¦  «        }t          j        ||¦  «        }t          j        |¦  «        }t          j	        |¦  «        }| 
                    ||f¦  «         Œl|S )z…
    Return the items of Resources/Properties (used for Marked Content)
    Argument may be e.g. a page object or a Form XObject
    r5  Ú
Propertiesr-   r   )r�   r  r  rÌ   r{  rL  r}  r|  ry  r  rk   )	r	  Ú
propertiesrE   r    r®   r  r  r¼  r  s	            r)   rÕ  rÕ  TN  sÒ   € õ
 Ô$ S­(°;Ñ*?Ô*?ÅÈ,ÑAWÔAWÑXÔX€JØÔ ð !ØˆråÔ˜zÑ*Ô*ˆØˆqŠ5ˆ5Ø�2ØˆÝ�q‘”ð 	!ð 	!ˆAÝÔ(¨°QÑ7Ô7ˆCÝÔ(¨°QÑ7Ô7ˆCÝÔ! #Ñ&Ô&ˆAÝÔ# CÑ(Ô(ˆDØ�IŠI�q˜$�iÑ Ô Ð Ð Ø€Ir*   c                ó  — d}t          j        | ¦  «        }|j        rJt          j        |¦  «        }|t          j        |¦  «        k    rd}nt          j        |¦  «        }|j        °J|st          d|› d�¦  «        ‚t          |¦  «        S )z%
    retrieve widget by its xref
    FTrt  z is not a widget of this page)r�   r  rÌ   rÿ   r  r6  rg   râ   )rÖ   r  r   rß   r   s        r)   r  r  jN  s    € ð €EÝÔ" DÑ)Ô)€EØ
Ô
ð .ÝÔ'¨Ñ/Ô/ˆ	Ø•5Ô# YÑ/Ô/Ò/Ð/ØˆEØÝÔ% uÑ-Ô-ˆð Ô
ð .ð ð FÝÐD ÐDÐDÐDÑEÔEÐEÝ�%‰=Œ=Ðr*   c                ó’  ‡— t          j        | j        ¦  «        }t          | j        ¦  «        }|                     ¦   «         }| }ˆfd„}d„ }t          j        |j        ¦  «        }|‰_        |t           j        k    r/t          j        ||¦  «        r |dd¦  «         n |dd¦  «         n |dd¦  «          |‰dt          t          j
        |¦  «        ¦  «        ¦  «          |‰dt          t          |¦  «        ¦  «        ¦  «         t          j        |¦  «        }	 |‰d	|	¦  «         d
„ }
 |
|t          d¦  «        ¦  «        }|� |‰d|¦  «         d}|t           j        k    r…t          j        |t          d¦  «        ¦  «        }|j        r |‰dt          j        |¦  «        ¦  «         t          j        |t          d¦  «        ¦  «        }|j        rt          j        |¦  «        }|st          j        |¦  «        } |‰dt          |¦  «        ¦  «          |‰dt          j        |¦  «        ¦  «         t          j        t          j        |t          d¦  «        t          d¦  «        ¦  «        ¦  «        }|dk    rd} |‰d|¦  «         t          j        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        rct          j        |¦  «        }dg|z  }t3          |¦  «        D ],}t          j        t          j        ||¦  «        ¦  «        ||<   Œ- |‰d|¦  «          |‰dt          j        |j        ¦  «        ¦  «          |‰dt          j        |j        ¦  «        ¦  «         t          j        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        rct          j        |¦  «        }dg|z  }t3          |¦  «        D ],}t          j        t          j        ||¦  «        ¦  «        ||<   Œ- |‰d|¦  «         t          j        |t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        rct          j        |¦  «        }dg|z  }t3          |¦  «        D ],}t          j        t          j        ||¦  «        ¦  «        ||<   Œ- |‰d|¦  «          |‰d t=          | ¦  «        ¦  «         t          j        t          j         |t          d!¦  «        ¦  «        ¦  «        } |‰d"t          |¦  «        ¦  «         t          j        |t          d¦  «        t          d#¦  «        ¦  «        }|j        r, |‰d$t          t          j        |¦  «        ¦  «        ¦  «          |‰d%t          j!        |¦  «        ¦  «         ‰ "                    ¦   «          t          j        |t          d&¦  «        ¦  «        }tG          |¦  «        } |‰d'|¦  «          |‰d(tG          t          j        |t          d)¦  «        t          d*¦  «        ¦  «        ¦  «        ¦  «          |‰d+tG          t          j        |t          d)¦  «        t          d,¦  «        ¦  «        ¦  «        ¦  «          |‰d-tG          t          j        |t          d)¦  «        t          d.¦  «        ¦  «        ¦  «        ¦  «          |‰d/tG          t          j        |t          d)¦  «        t          d0¦  «        ¦  «        ¦  «        ¦  «          |‰d1tG          t          j        |t          d)¦  «        t          j$        d2¦  «        ¦  «        ¦  «        ¦  «          |‰d3tG          t          j        |t          d)¦  «        t          j$        d4¦  «        ¦  «        ¦  «        ¦  «         dS )5z…
    Populate a Python Widget object with the values from a PDF form field.
    Called by "Page.first_widget" and "Widget.next".
    c                ó*   •— t          ‰| |¦  «         d S r,   ©rÌ  )r  r¸   r:  s     €r)   ÚSETATTRz)JM_get_widget_properties.<locals>.SETATTR‡N  s   ø€ Ý�˜˜UÑ#Ô#Ð#Ð#Ð#r*   c                ó(   — t          | ||¦  «         d S r,   rŸ  )Úmodr  r¸   s      r)   ÚSETATTR_DROPz.JM_get_widget_properties.<locals>.SETATTR_DROPŠN  s   € õ 	��S˜%Ñ Ô Ð Ð Ð r*   râ  TFNrÕ  rà  rÚ  c                óh  — | }d}	 | j         sdS t          j        | |¦  «        }|j         rt          j        |¦  «        }|r|S t          j        | t	          d¦  «        ¦  «        } | j         |j         k    rt          d¦  «        ‚|dz  }|dk    r$t          j        |t	          d¦  «        ¦  «        }d}Œ®)a  
        This is a modified version of MuPDF's pdf_dict_get_inheritable(), with
        some changes:
        * Returns string from pdf_to_text_string() or None if not found.
        * Recurses to parent if current node exists but with empty string
          value.
        rú  r   Nr˜  zcycle in resourcesr   r   )rÌ   r�   r  r  r  rg   )r�  r  ÚslowÚhalfbeatr  r—  s         r)   Ú'pdf_dict_get_inheritable_nonempty_labelzIJM_get_widget_properties.<locals>.pdf_dict_get_inheritable_nonempty_label¡N  sÉ   € ð ˆØˆð	Ø”?ð Ø�ÝÔ$ T¨3Ñ/Ô/ˆCØŒ~ð !ÝÔ0°Ñ5Ô5�Øð !Ø �LÝÔ% d­H°XÑ,>Ô,>Ñ?Ô?ˆDØŒ $¤/Ò1Ð1ÝÐ 4Ñ5Ô5Ð5Ø˜‰MˆHØ˜1Š}ˆ}ÝÔ)¨$µ¸Ñ0BÔ0BÑCÔC�Ø�ð	r*   ÚTUrÛ  r˜  rÙ  r÷  rÜ  rÞ  rª  rî	  r   r   rÖ  r  r×  rå  ræ  ÚMKÚBGrX  ÚBCrÁ  rØ  r�  rç  r6  rá  rÝ  r  r´
  rè  r›  ÚKré  r§  rê  ÚVrë  ræ  rì  ÚBlrí  ÚFo)%r�   rÿ   rÄ   rà   r*  Úpdf_widget_typerß  r  Úpdf_signature_is_signedr  Úpdf_field_border_stylerG  Úpdf_load_field_namer  rø  r  rÌ   r  ry  Úpdf_field_valueÚpdf_field_displayrï  r  rŽ  r›  rL  r  rœ  Úpdf_text_widget_max_lenÚpdf_text_widget_formatrñ  r  rF  Úpdf_field_flagsr  ÚJM_get_scriptr4  )rß   r:  r   rÖ   rZ  Útwr   r£  rß  rÚ  r§  r—  Úfvaluer  rÖ  rE   r
  r®   r_  ra  rr  Ússs    `                    r)   ÚJM_get_widget_propertiesr½  {N  s’  ø€ õ Ô# E¤JÑ/Ô/€Iå˜5œ:Ñ&Ô&€DØ
�(Š(‰*Œ*€CØ	€Bð$ð $ð $ð $ð $ð!ð !ð !õ Ô& r¤wÑ/Ô/€Jà"€FÔØ•UÔ4Ò4Ð4ÝÔ(¨¨iÑ8Ô8ð 	'ØˆG�K Ñ&Ô&Ð&Ð&àˆG�K Ñ&Ô&Ð&Ð&àˆ�˜TÑ"Ô"Ð"Ø€L�˜Õ):½5Ô;WÐXaÑ;bÔ;bÑ)cÔ)cÑdÔdÐdØ€L�Ð,Õ.?Õ@RÐS]Ñ@^Ô@^Ñ._Ô._Ñ`Ô`Ð`åÔ*¨9Ñ5Ô5€JØ€L�˜ zÑ2Ô2Ð2ðð ð ð8 4Ð3°I½xÈ¹~¼~ÑNÔN€EØÐØˆ�V˜]¨EÑ2Ô2Ð2à€FØ•UÔ6Ò6Ð6ÝÔ  )­X°hÑ-?Ô-?Ñ@Ô@ˆØŒ>ð 	FØˆL˜ ­eÔ.>ÀÑ.DÔ.DÑEÔEÐEÝÔ  ­H°T©N¬NÑ;Ô;ˆØŒ>ð 	,ÝÔ& sÑ+Ô+ˆFØð 2ÝÔ& yÑ1Ô1ˆØ€L�˜Õ(9¸&Ñ(AÔ(AÑBÔBÐBà€L�˜­%Ô*AÀ)Ñ*LÔ*LÑMÔMÐMåÔ$¥UÔ%8¸ÅHÈTÁNÄNÕT\Ð]`ÑTaÔTaÑ%bÔ%bÑcÔc€LØ�qÒÐØˆØ€L�˜¨Ñ6Ô6Ð6å
Ô
˜i­°$©¬½À#¹¼Ñ
GÔ
G€CÝÔ˜#ÑÔð 1ÝÔ Ñ$Ô$ˆØˆC�!‰GˆÝ�q‘”ð 	Að 	AˆAÝÔ#¥EÔ$7¸¸QÑ$?Ô$?Ñ@Ô@ˆAˆa‰DˆDØˆ�V˜_¨aÑ0Ô0Ð0à€L�˜­Ô(EÀbÄgÑ(NÔ(NÑOÔOÐOà€L�˜­Ô(DÀRÄWÑ(MÔ(MÑNÔNÐNå
Ô
˜i­°$©¬½À$¹¼Ñ
HÔ
H€CÝÔ˜#ÑÔð 0ÝÔ Ñ$Ô$ˆØˆc�A‰gˆÝ�q‘”ð 	Dð 	DˆAÝÔ&¥uÔ':¸3ÀÑ'BÔ'BÑCÔCˆC�‰FˆFØˆ�V˜\¨3Ñ/Ô/Ð/å
Ô
˜i­°$©¬½À$¹¼Ñ
HÔ
H€CÝÔ˜#ÑÔð 2ÝÔ Ñ$Ô$ˆØˆc�A‰gˆÝ�q‘”ð 	Dð 	DˆAÝÔ&¥uÔ':¸3ÀÑ'BÔ'BÑCÔCˆC�‰FˆFØˆ�V˜^¨SÑ1Ô1Ð1à€L�˜Õ*;¸EÑ*BÔ*BÑCÔCÐCå	Ô	!¥%Ô"@ÀÍHÐUYÉNÌNÑ"[Ô"[Ñ	\Ô	\€BØ€L�˜Õ%6°rÑ%:Ô%:Ñ;Ô;Ð;å
Ô
˜i­°$©¬½À$¹¼Ñ
HÔ
H€CØ
„~ð aØˆ�VÐ-Õ/@ÅÔAYÐZ]ÑA^ÔA^Ñ/_Ô/_Ñ`Ô`Ð`à€L�˜­Ô(=¸iÑ(HÔ(HÑIÔIÐIð ×ÒÑÔÐõ 	Ô˜9¥h¨s¡m¤mÑ4Ô4€AÝ	�qÑ	Ô	€BØ€L�˜ 2Ñ&Ô&Ð&à€L�˜Ý�%Ô-¨i½À$¹¼ÍÐRUÉÌÑWÔWÑXÔXñô ð ð €L�˜Ý�%Ô-¨i½À$¹¼ÍÐRUÉÌÑWÔWÑXÔXñô ð ð €L�˜Ý�%Ô-¨i½À$¹¼ÍÐRUÉÌÑWÔWÑXÔXñô ð ð €L�˜Ý�%Ô-¨i½À$¹¼ÍÐRUÉÌÑWÔWÑXÔXñô ð ð €L�˜Ý�%Ô-¨i½À$¹¼ÍÔI[Ð\`ÑIaÔIaÑbÔbÑcÔcñô ð ð €L�˜Ý�%Ô-¨i½À$¹¼ÍÔI[Ð\`ÑIaÔIaÑbÔbÑcÔcñô ð ð ð r*   c                ó<  — |dk     rdS t          j        | |¦  «        }t          j        |t          d¦  «        ¦  «        }|j        rJt          j        t          j        |d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        }n"t          j        |t          d¦  «        ¦  «        }|j        sdS |}t          j        |t          d¦  «        ¦  «        }|j        rdS t          j        |t          d¦  «        ¦  «        }|j        rd	S t          j        |t          d
¦  «        ¦  «        }|j        rßt          j        |t          d¦  «        ¦  «        }|j        r%t          j        |¦  «        st          d¦  «         dS t          j	        |t          d¦  «        ¦  «        rdS t          j	        |t          d¦  «        ¦  «        rdS t          j	        |t          d¦  «        ¦  «        rdS t          dt          j
        |¦  «        › d�¦  «         dS )zF
    Return the file extension of a font file, identified by xref
    r   rü  rì	  r   rø	  r‘  Úpfar’  r'
  r“  r†  r”  r•  Úcffr–  Úcidr—  r&
  zunhandled font type 'rë   )r�   r�  r  r  rÌ   r-  rœ  r»  rr   rý  ry  )r*  r  r¡  r˜  r  s        r)   rÿ  rÿ  O  s  € ð ˆa‚x€xØˆuÝÔ˜c 4Ñ(Ô(€AÝÔ˜q¥(Ð+<Ñ"=Ô"=Ñ>Ô>€EØÔð @ÝÔ(­Ô)<¸UÀAÑ)FÔ)FÑGÔGˆÝÔ  ¥hÐ/?Ñ&@Ô&@ÑAÔAˆˆåÔ  ¥HÐ-=Ñ$>Ô$>Ñ?Ô?ˆØŒ>ð Øˆuà€Aå
Ô
˜Q¥¨Ñ 4Ô 4Ñ
5Ô
5€CØ
„~ð Øˆuå
Ô
˜Q¥¨Ñ 5Ô 5Ñ
6Ô
6€CØ
„~ð Øˆuå
Ô
˜Q¥¨Ñ 5Ô 5Ñ
6Ô
6€CØ
„~ð GÝÔ  ¥h¨yÑ&9Ô&9Ñ:Ô:ˆØŒ>ð 	¥%Ô"3°CÑ"8Ô"8ð 	ÝÐ5Ñ6Ô6Ð6Ø�5ÝÔ˜S¥(¨8Ñ"4Ô"4Ñ5Ô5ð 	GØ�5ÝÔ˜s¥H¨_Ñ$=Ô$=Ñ>Ô>ð 	GØ�5ÝÔ˜s¥H¨ZÑ$8Ô$8Ñ9Ô9ð 	GØ�5åÐE­EÔ,=¸cÑ,BÔ,BÐEÐEÐEÑFÔFÐFàˆ5r*   c                ó  — t          ¦   «         }t          j        | ¦  «        rht          j        | ¦  «        }t	          |¦  «        D ]D}t          j        | |¦  «        }t          j        |¦  «        }||vr|                     |¦  «         ŒE|S )z„
    Get OCG arrays from OC configuration
    Returns dict {"basestate":name, "on":list, "off":list, "rbg":list, "locked":list}
    )r´   r�   rŽ  r›  rL  rœ  r  rk   )rL  Úlist_rE   r®   r  rC   s         r)   ÚJM_get_ocg_arrays_imprÄ  HO  sŠ   € õ
 ‰FŒF€EÝÔ˜3ÑÔð #ÝÔ Ñ%Ô%ˆÝ�q‘”ð 	#ð 	#ˆAÝÔ% s¨AÑ.Ô.ˆCÝÔ# SÑ)Ô)ˆDØ˜5Ð Ð Ø—’˜TÑ"Ô"Ð"øØ€Lr*   c                óJ  — t          ¦   «         }t          j        | t          d¦  «        ¦  «        }t	          |¦  «        }|r||d<   t          j        | t          d¦  «        ¦  «        }t	          |¦  «        }|r||d<   t          j        | t          d¦  «        ¦  «        }t	          |¦  «        }|r||d<   t          ¦   «         }t          j        | t          d¦  «        ¦  «        }t          j        |¦  «        r_t          j        |¦  «        }t          |¦  «        D ];}t          j	        ||¦  «        }t	          |¦  «        }| 
                    |¦  «         Œ<|r||d<   t          j        | t          d	¦  «        ¦  «        }|j        rt          j        |¦  «        }||d
<   |S )Nr¥  r–  r¦  r‚	  ÚLockedr3  r0  rƒ	  rÍ  r�	  )r5   r�   r  r  rÄ  r´   rŽ  r›  rL  rœ  rk   rÌ   ry  )	Úconfr    rL  rÃ  rE   r®   r  Úlist1r  s	            r)   r[  r[  XO  s‘  € å	‰Œ€BÝ
Ô
˜d¥H¨T¡N¤NÑ
3Ô
3€CÝ! 3Ñ'Ô'€EØð Øˆˆ4‰Ý
Ô
˜d¥H¨U¡O¤OÑ
4Ô
4€CÝ! 3Ñ'Ô'€EØð Øˆˆ5‰	Ý
Ô
˜d¥H¨XÑ$6Ô$6Ñ
7Ô
7€CÝ! 3Ñ'Ô'€EØð Øˆˆ8‰Ý‰FŒF€EÝ
Ô
˜d¥H¨ZÑ$8Ô$8Ñ
9Ô
9€CÝÔ˜3ÑÔð  ÝÔ Ñ%Ô%ˆÝ�q‘”ð 	 ð 	 ˆAÝÔ% s¨AÑ.Ô.ˆCÝ)¨3Ñ/Ô/ˆEØ�LŠL˜ÑÔÐÐØð Øˆˆ:‰Ý
Ô
˜d¥H¨[Ñ$9Ô$9Ñ
:Ô
:€Cà
„~ð  ÝÔ! 3Ñ'Ô'ˆØˆˆ;‰Ø€Ir*   c                óð  — t          j        |¦  «        }t          d|d¦  «        D ]Ï}t          j        t          j        ||¦  «        ¦  «        }t          j        |¦  «        }t          j        t          j        ||dz   ¦  «        ¦  «        }t          |dd¦  «        }t          j        |¦  «        }t          |t          ¦  «        sJ ‚| 
                    d¦  «        }|                      ||f¦  «         ŒÐd S )Nr   r   r   rÏ  )r�   r›  rL  r-  rœ  r  rf
  Úfz_buffer_extractr>   r  rò  rk   )	rM  r0  rE   r®   r  rÕ  r  r  r¼  s	            r)   r.  r.  yO  sä   € ÝÔ˜DÑ!Ô!€AÝ�1�a˜‰^Œ^ð  ð  ˆÝÔ(­%Ô*=¸dÀAÑ*FÔ*FÑGÔGˆÝÔ˜sÑ#Ô#ˆÝÔ(­%Ô*=¸dÀAÈÁEÑ*JÔ*JÑKÔKˆÝ! # q¨!Ñ,Ô,ˆÝÔ# CÑ(Ô(ˆÝ˜!�UÑ#Ô#Ð#Ð#Ð#Ø�HŠH�WÑÔˆØ�Š�s˜A�hÑÔÐÐð ð  r*   c                óÔ  — | j         sdS t          j        | t          d¦  «        ¦  «        }t          j        |¦  «        }|dk    r,t          j        | t          d¦  «        ¦  «        }|j         sdS ndS t          j        |¦  «        r"t          t          j        |¦  «        ¦  «        }n:t          j        |¦  «        r$t          j	        |¦  «        }t          |¦  «        }ndS |r|S dS )zà
    JavaScript extractor
    Returns either the script source or None. Parameter is a PDF action
    dictionary, which must have keys /S and /JS. The value of /S must be
    '/JavaScript'. The value of /JS is returned.
    Nr`	  Ú
JavaScriptÚJS)rÌ   r�   r  r  ry  re
  r  r  r  r  ru
  )r  r�  ÚjjÚjsr´
  r  s         r)   r¹  r¹  †O  sï   € ð Œ>ð ØˆåÔ˜3¥¨¡¤Ñ.Ô.€AÝ	Ô	˜1Ñ	Ô	€BØ	ˆ\ÒÐÝÔ ¥X¨d¡^¤^Ñ4Ô4ˆØŒ}ð 	ØˆFð	ð 	ˆåÔ˜2ÑÔð Ý"¥5Ô#;¸BÑ#?Ô#?Ñ@Ô@ˆˆÝ	Ô	˜RÑ	 Ô	 ð ÝÔ# BÑ'Ô'ˆÝ'¨Ñ,Ô,ˆˆàˆØð ØˆØ
€Fr*   c                óL   — | j         j        rt          j        | d¦  «        sdS dS )z(
    Ensure valid journalling state
    r   r   )rÌ   r  r�   r  rn  s    r)   rm  rm  ¥O  s/   € ð „~Ôð ¥eÔ&=¸cÀ1Ñ&EÔ&Eð ØˆqØˆ1r*   c                óþ  — | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j	        k    rd	S | t           j
        k    rd
S | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS | t           j        k    rdS dS )z/
    return extension for MuPDF image type
    Úfaxr\  ÚflateÚlzwÚrldÚbmpÚgifÚjb2r  ÚjpxÚjxrrÌ  r   Útiffrü  )r�   ÚFZ_IMAGE_FAXÚFZ_IMAGE_RAWÚFZ_IMAGE_FLATEÚFZ_IMAGE_LZWÚFZ_IMAGE_RLDÚFZ_IMAGE_BMPÚFZ_IMAGE_GIFÚFZ_IMAGE_JBIG2ÚFZ_IMAGE_JPEGÚFZ_IMAGE_JPXÚFZ_IMAGE_JXRÚFZ_IMAGE_PNGÚFZ_IMAGE_PNMÚFZ_IMAGE_TIFF)r[  s    r)   ÚJM_image_extensionrê  ®O  s  € ð •Ô"Ò"Ð"¨u¨uØ•Ô"Ò"Ð"¨u¨uØ•Ô$Ò$Ð$¨w¨wØ•Ô"Ò"Ð"¨u¨uØ•Ô"Ò"Ð"¨u¨uØ•Ô"Ò"Ð"¨u¨uØ•Ô"Ò"Ð"¨u¨uØ•Ô$Ò$Ð$¨u¨uØ•Ô#Ò#Ð#¨v¨vØ•Ô"Ò"Ð"¨u¨uØ•Ô"Ò"Ð"¨u¨uØ•Ô"Ò"Ð"¨u¨uØ•Ô"Ò"Ð"¨u¨uØ•Ô#Ò#Ð#¨v¨vàˆ5r*   c                ó\  — t          |t          j        ¦  «        sJ ‚t          j        t          j        j        ¦  «        }t          j        t          j        |¦  «        |¦  «        }t          j        |t          ¦  «        }|t          |¦  «        f}t           
                    |¦  «         d S r,   )r>   r�   rr  rh  rq  rå  Úfz_quad_from_rectÚg_img_info_matrixÚJM_py_from_quadÚ
g_img_infork   )r  rÞ  r   r  r  r’  r€  s          r)   ÚJM_image_filterrð  ÈO  sŠ   € Ý�c�5œ>Ñ*Ô*Ð*Ð*Ð*ÝŒ•U”\Ô,Ñ-Ô-€AÝÔ¥Ô!8¸Ñ!;Ô!;¸SÑAÔA€AÝÔ Õ$5Ñ6Ô6€AØ• Ñ#Ô#Ð#€DÝ×Ò�dÑÔÐÐÐr*   c                ó¬  — | sdS t          | ¦  «        }|dk     rt          d¦  «         dS | }t          j        |¦  «        }|t          j        k    rdS |rt          j        ||¦  «        }nt          j        ||¦  «        }t          j        |¦  «        }t          j        |¦  «        }t          j	        |¦  «        \  }}	t          j
        |¦  «        }
t          j        |                     ¦   «         ¦  «        }t          ¦   «         }|                     ¦   «         |t          <   |                     ¦   «         |t"          <   |
|d<   t%          |¦  «        |t&          <   ||t(          <   |	|t*          <   |                     ¦   «         |t.          <   |                     ¦   «         |t2          <   t5          |¦  «        |t6          <   ||t8          <   |r
||t:          <   |S )zŒ
    Return basic properties of an image provided as bytes or bytearray
    The function creates an fz_image and optionally returns it.
    Nr   r^  Úorientation)r7   rr   r�   Úfz_recognize_image_formatÚFZ_IMAGE_UNKNOWNr‘  Úfz_new_buffer_from_shared_datar§  Úfz_image_orientation_matrixrõ  Úfz_image_orientationr£  rÛ  r5   r   rP  rÆ  rQ  rq  rO  rS  rT  rE   rR  rô  rU  rê  r   r  Údictkey_image)r�  Ú
keep_imager  r¼  r[  r  r  rÞ  r  r  rò  Úcs_namer   s                r)   ÚJM_image_profilerû  ÑO  s¤  € ð
 ð Øˆtå�	‰?Œ?€DØˆa‚x€xÝÐ!Ñ"Ô"Ð"ØˆtØ€AåÔ+¨QÑ/Ô/€EØ•Ô&Ò&Ð&Øˆtàð =ÝÔ2°A°tÑ<Ô<ˆˆåÔ2°A°tÑ<Ô<ˆÝÔ*¨CÑ0Ô0€EÝ
Ô
+¨UÑ
3Ô
3€CÝÔ*¨5Ñ1Ô1�J€Dˆ$ÝÔ,¨eÑ4Ô4€KÝÔ&¨×(8Ò(8Ñ(:Ô(:Ñ;Ô;€GÝ‰VŒV€FØ"ŸWšW™YœY€F�MÑØ#Ÿgšg™iœi€F�NÑØ(€FˆMÑÝ/°Ñ4Ô4€F�NÑØ €F�LÑØ €F�LÑØ"'§'¢'¡)¤)€FÕÑØ Ÿ9š9™;œ;€F�KÑÝ-¨eÑ4Ô4€F�KÑØ&€F�OÑàð 'Ø!&ˆ•ÑØ€Mr*   c                óx  — |                       ¦   «         }t          j        ¦   «         at          j        ¦   «         }t          j        | |t          ¦  «          G d„ dt          j        ¦  «        } |¦   «         }t          dddd|¬¦  «        }g at          j	        || |¦  «         t          t          ¦  «        }g a|S )Nc                  ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ú0JM_image_reporter.<locals>.SanitizeFilterOptionsc                óp   •— t          ¦   «                              ¦   «          |                      ¦   «          d S r,   ©rÇ   rŒ   Úuse_virtual_image_filter©r(   rD  s    €r)   rŒ   z9JM_image_reporter.<locals>.SanitizeFilterOptions.__init__P  s1   ø€ Ý‰GŒG×ÒÑÔÐØ×)Ò)Ñ+Ô+Ð+Ð+Ð+r*   c                óN   — t          d t          j        |¦  «        ||¦  «         d S r,   )rð  r�   rr  )r(   rG  rÞ  r   r  r0  s         r)   Úimage_filterz=JM_image_reporter.<locals>.SanitizeFilterOptions.image_filterP  s&   € Ý˜D¥%¤.°Ñ"5Ô"5°t¸UÑCÔCÐCÐCÐCr*   ©r/   r0   r1   rŒ   r  rL  ©rD  s   @r)   ÚSanitizeFilterOptionsrþ  P  sN   ø€ € € € € ð	,ð 	,ð 	,ð 	,ð 	,ð	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Dr*   r  r   )r‹  rŒ  rO  r�  rC  )r*  r�   rr  rí  rh  r#  ÚPdfSanitizeFilterOptions2r�  rï  rÆ  rµ   )rÖ   r*  rv  r  Úsanitize_filter_optionsÚfilter_optionsr    s          r)   r�  r�  ýO  sÚ   € Ø
�(Š(‰*Œ*€CåœÑ(Ô(ÐÝŒ|‰~Œ~€HÝ	Ô˜T 8Õ->Ñ?Ô?Ð?ðDð Dð Dð Dð D¥Ô ?ñ Dô Dð Dð 4Ð3Ñ5Ô5Ðå+ØØØØØ)ðñ ô €Nð €Jå	Ô" C¨¨~Ñ>Ô>Ð>å	�zÑ	Ô	€BØ€JØ€Ir*   c                 óF  — t          t          d¦  «         } t          t          d¦  «         }t          t          d¦  «         }t          t          d¦  «         }t          t          d¦  «         }t          t          d¦  «         }t          t          d¦  «         }t          t          d¦  «         }t          t          d	¦  «         }t          ¦   «         }	||	d
<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j	        ¦  «        |	d<   t          t          j
        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t          j        ¦  «        |	d<   t          t           ¦  «        |	d<   t          t          j        ¦  «        |	d<   | |	d<   ||	d<   ||	d<   ||	d<   ||	d<   ||	d<   ||	d<   ||	d <   t          t          j        ¦  «        |	d!<   |	S )"NÚTOFUÚTOFU_BASE14ÚTOFU_CJKÚTOFU_CJK_EXTÚTOFU_CJK_LANGÚ
TOFU_EMOJIÚTOFU_HISTORICÚTOFU_SILÚTOFU_SYMBOLÚbase14ÚcbzÚepubrÉ  ÚiccrÔ  rÙ  rÏ  rZ  zplotter-cmykz	plotter-gz	plotter-nzplotter-rgbz	py-memoryrý  Útofuztofu-cjkztofu-cjk-extztofu-cjk-langz
tofu-emojiztofu-historicztofu-silztofu-symbolÚxps)r;   r�   r5   rç   ÚFZ_ENABLE_CBZÚFZ_ENABLE_EPUBÚFZ_ENABLE_HTMLÚFZ_ENABLE_ICCÚFZ_ENABLE_IMGÚFZ_ENABLE_JPXÚFZ_ENABLE_JSÚFZ_ENABLE_PDFÚFZ_PLOTTERS_CMYKÚFZ_PLOTTERS_GÚFZ_PLOTTERS_NÚFZ_PLOTTERS_RGBÚ	JM_MEMORYÚFZ_ENABLE_SVGÚFZ_ENABLE_XPS)
Ú	have_TOFUÚhave_TOFU_BASE14Úhave_TOFU_CJKÚhave_TOFU_CJK_EXTÚhave_TOFU_CJK_LANGÚhave_TOFU_EMOJIÚhave_TOFU_HISTORICÚhave_TOFU_SILÚhave_TOFU_SYMBOLrG   s
             r)   ÚJM_fitz_configr3  P  s9  € Ý%¥e¨VÑ4Ô4Ð4€IÝ%¥e¨]Ñ;Ô;Ð;ÐÝ%¥e¨ZÑ8Ô8Ð8€MÝ%¥e¨^Ñ<Ô<Ð<ÐÝ%¥e¨_Ñ=Ô=Ð=ÐÝ%¥e¨\Ñ:Ô:Ð:€OÝ%¥e¨_Ñ=Ô=Ð=ÐÝ%¥e¨ZÑ8Ô8Ð8€MÝ%¥e¨]Ñ;Ô;Ð;Ðå
‰&Œ&€CØ.€Cˆ�MÝ"¥5Ô#6Ñ7Ô7€Cˆ�JÝ"¥5Ô#7Ñ8Ô8€Cˆ�KÝ"¥5Ô#7Ñ8Ô8€Cˆ�KÝ"¥5Ô#6Ñ7Ô7€Cˆ�JÝ"¥5Ô#6Ñ7Ô7€Cˆ�JÝ"¥5Ô#6Ñ7Ô7€Cˆ�JÝ"¥5Ô#5Ñ6Ô6€Cˆ�IÝ"¥5Ô#6Ñ7Ô7€Cˆ�JÝ"¥5Ô#9Ñ:Ô:€CˆÑÝ"¥5Ô#6Ñ7Ô7€CˆÑÝ"¥5Ô#6Ñ7Ô7€CˆÑÝ"¥5Ô#8Ñ9Ô9€CˆÑÝ"¥9™oœo€CˆÑÝ"¥5Ô#6Ñ7Ô7€Cˆ�JØ'€Cˆ�KØ+€Cˆ
�OØ/€CˆÑØ0€CˆÑØ-€CˆÑØ0€CˆÑØ+€Cˆ
�OØ.€CˆÑÝ"¥5Ô#6Ñ7Ô7€Cˆ�JØ€Jr*   c                ó‚  — t          j        |t          d¦  «        ¦  «        }t          j        | |t          j        ¦   «         d¦  «        }t          j        |¦  «        }t          j        |¦  «        r/|rt          j        ||¦  «         n´t          j        ||d¦  «         n�t          j	        | d¦  «        }|r2|j
        rt          j        ||¦  «         t          j        ||¦  «         n1t          j        ||¦  «         |j
        rt          j        ||¦  «         t          j        |t          d¦  «        |¦  «         |S )ag  
    Insert a buffer as a new separate /Contents object of a page.
    1. Create a new stream object from buffer 'newcont'
    2. If /Contents already is an array, then just prepend or append this object
    3. Else, create new array and put old content obj and this object into it.
       If the page had no /Contents before, just create a 1-item array.
    r  r   r   )r�   r  r  r4  r5  r  rŽ  r�  r^  rK  rÌ   rN  )rZ  rK  Únewcontrý  rw  Únewcontsr  Úcarrs           r)   rú  rú  FP  s5  € õ Ô! '­8°JÑ+?Ô+?Ñ@Ô@€HÝÔ# C¨µ%´,±.´.À!ÑDÔD€HÝÔ˜HÑ%Ô%€DÝÔ˜(Ñ#Ô#ð @Øð 	:ÝÔ  ¨8Ñ4Ô4Ð4Ð4åÔ" 8¨X°qÑ9Ô9Ð9Ð9åÔ" 3¨Ñ*Ô*ˆØð 	5ØÔ"ð 5ÝÔ$ T¨8Ñ4Ô4Ð4ÝÔ   xÑ0Ô0Ð0Ð0åÔ   xÑ0Ô0Ð0ØÔ"ð 5ÝÔ$ T¨8Ñ4Ô4Ð4ÝÔ˜7¥H¨ZÑ$8Ô$8¸$Ñ?Ô?Ð?Ø€Kr*   c
           
     ó¤  — d}
d}d}d}d}d}d}d}d}d}t          | ¦  «         |	dk    rt          j        |	¦  «        \  }}}|r5t          j        d|||d¦  «        }
t          j        | |
|	||¦  «        }d}d}ná|rt          j        |¦  «        \  }}|r3t          j        |||dd¦  «        }
t          j        | |
|¦  «        }d}d}n“|rt          j        d||d¦  «        }
nGt          |¦  «        }|j	        st          t          t          ¦  «         t          j        d||d¦  «        }
|st          j        | |
¦  «        }d}nt          j        | |
|¦  «        }d}t          j        |¦  «        }t!          t          j        t          j        |t'          d¦  «        ¦  «        ¦  «        ¦  «        }t)          t          j        t          j        |t'          d¦  «        ¦  «        ¦  «        ¦  «        }|st)          t+          | |¦  «        ¦  «        }t          j        |
¦  «        }t          j        |
¦  «        }||||t1          |¦  «        |	||d	œg}|S )
z 
    Insert a font in a PDF
    Nr   r1  rü  r   r   rû  r†  )r   rÈ   r  r?  r  r=  r>  )rd  r�   r  r  Úpdf_add_cjk_fontr   Úpdf_add_simple_fontr‰  r'  rÌ   r°  rQ  rp  r"  Úpdf_add_cid_fontr  r²  ry  r  r  r  rÿ  r½
  rÍ
  rç   )rZ  r  rS  rT  r  r8  rÈ
  rÓ
  rë  r  rW  r  r}  Úixrefrd  r?  r¸   r   rŒ  Úextor¸  r  rU  rV  s                           r)   rR  rR  dP  s‡  € ð €DØ
€CØ€DØ€EØ€EØ€FØ
€EØ	€DØ	€DØ€Då�SÑÔÐà�"‚}€}Ý!Ô4°XÑ>Ô>Ñˆˆd�EØð  ÝÔ,¨T°4¸¸uÀaÑHÔHˆÝÔ)¨#¨t°X¸uÀeÑLÔLˆØˆØˆˆð
 ð 	=ÝÔ4°VÑ<Ô<‰JˆD�$Øð 	ÝÔ0°¸¸tÀQÈÑJÔJˆDÝÔ0°°d¸HÑEÔEˆHØˆDØˆFˆFð ð HÝÔ2°4¸À3ÈÑJÔJ��å(¨Ñ4Ô4�Ø”~ð BÝÕ.Õ0@ÑAÔAÐAÝÔ4°T¸3ÀÀQÑGÔG�àð Ý Ô1°#°tÑ<Ô<�Ø��å Ô4°S¸$ÀÑIÔI�Ø�åÔ˜XÑ&Ô&€EÝ¥Ô 1µ5Ô3EÀhÕPXÐYcÑPdÔPdÑ3eÔ3eÑ fÔ fÑgÔg€Då�eÔ/µÔ1CÀXÍxÐXaÑObÔObÑ1cÔ1cÑdÔdÑeÔe€Dàð CÝ Õ!5°c¸5Ñ!AÔ!AÑBÔBˆå
Ô
  Ñ
&Ô
&€CÝ
Ô
! $Ñ
'Ô
'€CààØØÝ˜v™,œ,Ø$ØØ ðð ð€Eð €Lr*   c                óª  — t          | t          j        ¦  «        r| S t          | t          ¦  «        r-t          j        | j        | j        | j        | j        ¦  «        } | S t          | t          ¦  «        rAt          j	        | j        | j        | j        | j        ¦  «        }t          j        |¦  «        }|S t          | t          j	        ¦  «        rt          j        | ¦  «        }|S | r"t          | ¦  «        rt          | ¦  «        dk    rt          j        t          j        ¦  «        S g d¢}t          d¦  «        D ]k}| |         ||<   ||         € t          j        t          j        ¦  «        c S ||         t          k     r
t          ||<   ||         t          k    r
t          ||<   Œlt          j        |d         |d         |d         |d         ¦  «        S )z>
    PySequence to mupdf.FzIrect. Default: infinite irect
    rK  r  Nr   r   r   r   )r>   r�   rd  re  r
  r  r	  r  r$  rh  r|  r~  rl  rL  rz  r{  Úfz_make_irect)r  rG   rÎ  r®   s       r)   r¯  r¯  ±P  sž  € õ �!•U”]Ñ#Ô#ð ØˆÝ�!•UÑÔð ÝŒM˜1œ4 ¤ q¤t¨Q¬TÑ2Ô2ˆØˆÝ�!•TÑÔð ÝŒl˜1œ4 ¤ q¤t¨Q¬TÑ2Ô2ˆÝŒm˜CÑ Ô ˆØˆ
Ý�!•U”\Ñ"Ô"ð ÝŒm˜AÑÔˆØˆ
Øð 6Õ$ QÑ'Ô'ð 6­?¸1Ñ+=Ô+=ÀÒ+BÐ+BÝŒ}�UÔ4Ñ5Ô5Ð5Øˆˆ€AÝ�1‰XŒXð #ð #ˆØ�Œtˆˆ!‰ØˆQŒ4ˆ<Ý”=¥Ô!8Ñ9Ô9Ð9Ð9Ð9ØˆQŒ4•/Ò!Ð!Ý"ˆAˆa‰DØˆQŒ4•/Ò!Ð!Ý"ˆAˆa‰DøÝÔ˜q œt Q q¤T¨1¨Q¬4°°1´Ñ6Ô6Ð6r*   c                óö  — t          j        | ¦  «        }t          j        |t          d¦  «        ¦  «        }t          j        |¦  «        rt          j        |¦  «        S t          j        |¦  «        }g }t          |¦  «        D ]t}t          j        ||¦  «        }t          j	        |¦  «        rt          j        |d¦  «        }| 
                    t          t          j        |¦  «        ¦  «        ¦  «         Œu|S )z 
    ListBox retrieve value
    r­  r   )r�   rÿ   r  r  re
  r  r›  rL  rœ  rŽ  rk   r  )rß   r   rð  rE   rM  r®   Úelems          r)   ÚJM_listbox_valuerB  ÎP  så   € õ
 Ô# UÑ+Ô+€IÝÔ ­H°S©M¬MÑ:Ô:€FÝÔ˜FÑ#Ô#ð 1ÝÔ'¨Ñ0Ô0Ð0õ 	Ô˜VÑ$Ô$€AØ€Eõ �A‰YŒYð Kð KˆÝÔ" F¨AÑ.Ô.ˆÝÔ˜tÑ$Ô$ð 	1ÝÔ&¨¨aÑ0Ô0ˆDØ�ŠÕ'­Ô)AÀ4Ñ)HÔ)HÑIÔIÑJÔJÐJÐJØ€Lr*   c           	     ó¢  — d}|dk     r|dz  }nu|dk    r||d         d›d�z  }n_|dk    rJ ‚|dk    r$||d         d›d	|d         d›d	|d         d›d
�z  }n-||d         d›d	|d         d›d	|d         d›d	|d         d›d�z  }|dt          |¦  «        › d	|› d�z  }t          j        t          j        | ¦  «        t          j        |¦  «         d S )Nr\   r   z0 g r   rþ  z g r   r   r³   z rg z k rW  rã  )r;  r�   r€  rÿ   ÚPDF_ENUM_NAME_DA)rß   rì  r_  rù   rú   rÀ  s         r)   rÛ  rÛ  æP  s*  € ð
 €CØˆa‚x€xØˆw‰ˆˆØ	�ŠˆØ�#�a”&ÐÐÐÐÑˆˆØ	�ŠˆØˆqØ	�ŠˆØ�#�a”&Ð6Ð6Ð6˜S œVÐ6Ð6Ð6¨¨A¬Ð6Ð6Ð6Ð6Ñ6ˆˆà�#�a”&Ð@Ð@Ð@˜S œVÐ@Ð@Ð@¨¨A¬Ð@Ð@Ð@°3°q´6Ð@Ð@Ð@Ð@Ñ@ˆØÐ8�˜xÑ(Ô(Ð8Ð8¨8Ð8Ð8Ð8Ñ8€CÝ	Ô"¥5Ô#6°uÑ#=Ô#=½uÔ?UÐWZÑ[Ô[Ð[Ð[Ð[r*   c                ó4   — 	 t          j        | ||||¦  «        S r,   )4r  r   ÚJM_make_spanlistr�   r/  rh  r-  r0  r1  r¯  rÚ  rà  rá  rÌ   rW  r&  r  r¸  r¾  ÚFZ_STEXT_SYNTHETICrM	  rQ  Úargbrâ  rU  rã  r¹  r`  Údictkey_charsru
  r  ÚJM_py_from_pointÚdictkey_originrg  rX	  r3  rk   r5   r¶  Údictkey_flagsÚdictkey_bidirL	  r²  rK	  r  r
  r¼  Ú	dictkey_crç   r2  r®  rW	  )Ú	line_dictro   r\  rN  r7  Ú	char_listÚ	span_listÚ	span_rectÚ	line_rectÚ
char_styleÚ	old_styler^  rç  Úspan_originrú  r  r¾  r  rU  r¹  Ú	char_dicts                        r)   rF  rF  úP  s!   € ðKÝÔ% i°°s¸DÀ'ÑJÔJÐJr*   c                óþ  — |                       ¦   «         }t          |¦  «        }t          j        | j        ¦  «        }	 |r*|t          j        t          j        fv s|t          j        k     r4t          j        | t          j	        t          j
        ¦  «        ¦  «        }d}n}|dk    rL|                      ¦   «         dk    r4t          j        | t          j	        t          j
        ¦  «        dd¦  «        }n+t          j        t          j        |j        ¦  «        ¦  «        }t!          |¦  «        }|                      ¦   «         |t$          <   |                      ¦   «         |t(          <   ||t*          <   |                      ¦   «         |t,          <   |                      ¦   «         |t0          <   |                      ¦   «         |t4          <   |                      ¦   «         |t8          <   t;          |¦  «        |t<          <   ||t>          <   dS )zÒPopulate a dictionary with information extracted from a given image.

    Used by 'Document.extract_image' and by 'JM_make_image_block'.
    Both of these functions will add some more specific information.
    r   rÌ  r  rK  rþ  r   N) Úfz_compressed_image_typerê  r�   Úll_fz_compressed_image_bufferrÌ   rã  rô  rá  Úfz_new_buffer_from_image_as_pngrî  ré  rE   Ú fz_new_buffer_from_image_as_jpegrr  rÂ
  ræ  r  r   rP  rÆ  rQ  r   rR  r  rS  r  rT  rô  rU  r7   r¶  rø  )rÔ  Úimg_dictÚimg_typer  Úll_cbufr  r  s          r)   r  r  �Q  s£  € ð ×+Ò+Ñ-Ô-€HÝ
˜XÑ
&Ô
&€Cõ Ô1°#´.ÑAÔA€GðFØðFà�Ô,­eÔ.DÐEÐEÐEØ•eÔ(Ò(Ð(õ Ô3ØÝÔ'­Ô(EÑFÔFñô ˆð ˆˆØ	�Šˆ˜3Ÿ5š5™7œ7 aš<˜<åÔ4Ø�Ô,­UÔ-JÑKÔKÈRÐQRñTô Tˆˆõ Œn�UÔ4°W´^ÑDÔDÑEÔEˆå˜cÑ"Ô"€FØ!Ÿeše™gœg€H�]ÑØ"Ÿušu™wœw€H�^ÑØ€H�[ÑØ#&§5¢5¡7¤7€HÕÑ Ø ŸXšX™ZœZ€H�\ÑØ ŸXšX™ZœZ€H�\ÑØŸGšG™IœI€H�[ÑÝ  ™[œ[€H�\ÑØ$€H�]ÑÐÐr*   c                ór  — |                       ¦   «         }t          ||¦  «         |                     ¦   «         }|j        rI|                     t          j        t
          j        ¦  «        ¦  «        }|                     ¦   «         |d<   nd |d<   t          |  
                    ¦   «         ¦  «        |t          <   d S )Nr  )r5  r  r  rÌ   r[  r�   rî  ré  rÊ  rq  rN  rO  )r\	  rY  rÔ  r  rN  s        r)   ÚJM_make_image_blockra  ºQ  sž   € Ø
�-Š-‰/Œ/€CÝ�S˜*Ñ%Ô%Ð%à�8Š8‰:Œ:€DØ„ð "Ø×3Ò3µEÔ4GÍÔHeÑ4fÔ4fÑgÔgˆØ!×3Ò3Ñ5Ô5ˆ
�6ÑÐà!ˆ
�6ÑÝ!2°5×3DÒ3DÑ3FÔ3FÑ!GÔ!G€J�~ÑÐÐr*   c                óR   — 	 t          j        | j        |||j        |j        ¦  «        S r,   )r  r   ÚJM_make_text_blockrÌ   r�   rh  r-  r®  r|  r/  r¯  r5   rF  r3  rÈ
  Údictkey_wmoderJ  rh  Údictkey_dirrg  rX	  rk   Údictkey_lines)
r\	  rY  r\  rN  r7  Ú	line_listÚ
block_rectro   rO  rS  s
             r)   rc  rc  ÇQ  s*   € ðpÝÔ'¨Ô(8¸*ÀcÈ4Ì?Ð\cÔ\nÑoÔoÐor*   c                ó:   — 	 t          j        | j        ||¦  «        S r,   )r  r   r&  rÌ   r�   rã  rh  rv  Úfz_contains_rectr/  r¯  rÈ   ÚFZ_STEXT_BLOCK_IMAGEr®  r|  r5   rM  r  rg  rX	  ra  rc  rk   Údictkey_blocks)	r¸  r'  r\  Útext_bufferÚ
block_listr7  r6  r\	  rY  s	            r)   r&  r&  ÞQ  s   € ðJÝÔ*¨2¬=¸)ÀSÑIÔIÐIr*   c           	     óF  — g d¢}t          | t          j        ¦  «        r| S t          | t          ¦  «        r7t          j        | j        | j        | j        | j        | j        | j	        ¦  «        S | r"t          | ¦  «        rt          | ¦  «        dk    rt          j        ¦   «         S t          d¦  «        D ]2}t          | |¦  «        ||<   ||         €t          j        ¦   «         c S Œ3t          j        |d         |d         |d         |d         |d         |d         ¦  «        S )	N)r   r   r   r   r   r   rô  r   r   r   r   rK  r   )r>   r�   rr  ru  r!   rÑ
  r¼  r
  r`  rÎ  r|  r~  rL  ry  rh  )r€  r!   r®   s      r)   rÓ  rÓ  ÿQ  s  € ØÐÐ€AÝ�!•U”^Ñ$Ô$ð ØˆÝ�!•VÑÔð <ÝŒ~˜aœc 1¤3¨¬¨Q¬S°!´#°q´sÑ;Ô;Ð;Øð  Õ$ QÑ'Ô'ð  ­?¸1Ñ+=Ô+=ÀÒ+BÐ+BÝŒ~ÑÔÐÝ�1‰XŒXð "ð "ˆÝ˜Q Ñ"Ô"ˆˆ!‰ØˆQŒ4ˆ<Ý”<‘>”>Ð!Ð!Ð!ð åŒ>˜!˜Aœ$  !¤ a¨¤d¨A¨a¬D°!°A´$¸¸!¼Ñ=Ô=Ð=r*   c           	     óä  — t          j        t           j        j        ¦  «        }t          j        t          j        | t          d¦  «        ¦  «        ¦  «        }t          j        |¦  «        st          j        |¦  «        rd|_        d|_	        d|_
        d|_        t          j        t          j        |j        |j
        ¦  «        t          j        |j	        |j        ¦  «        t          j        |j        |j
        ¦  «        t          j        |j	        |j        ¦  «        ¦  «        }|j
        |j        z
  dk     s|j        |j	        z
  dk     r#t          j        t           j        j        ¦  «        }|S )z&
    return a PDF page's MediaBox
    r*  r   éd  é  r   )r�   rh  rq  r$  rF  r  r®  r¯  r
  r  r	  r  Úfz_minÚfz_max)rx  Úpage_mediaboxrv  s      r)   r  r  R  s*  € õ ”L¥¤Ô!8Ñ9Ô9€MÝÔ ÝÔ*¨8µX¸jÑ5IÔ5IÑJÔJñô €Hõ Ô˜hÑ'Ô'ð ­5Ô+DÀXÑ+NÔ+Nð ØˆŒØˆŒØˆŒØˆŒå”LÝŒL˜œ h¤kÑ2Ô2ÝŒL˜œ h¤kÑ2Ô2ÝŒL˜œ h¤kÑ2Ô2ÝŒL˜œ h¤kÑ2Ô2ñ	ô €Mð 	Ô˜=Ô+Ñ+¨aÒ/Ð/ØÔ -Ô"2Ñ2°QÒ6Ð6åœ¥U¤\Ô%<Ñ=Ô=ˆàÐr*   c
                ó  — t           rt          j        | |||||||||	¦
  «
        S |}
d}t          j        ||z
  ¦  «        dz   }||k     r\|}||k    rRt          | |||
||||	¦  «         |dz  }|dk    r||z  dk    rt          d|› d|› d�¦  «         |dz  }|
dz  }
||k    °PdS dS |}||k    rRt          | |||
||||	¦  «         |dz  }|dk    r||z  dk    rt          d|› d|› d�¦  «         |dz  }|
dz  }
||k    °PdS dS )z·
    Copy a range of pages (spage, epage) from a source PDF to a specified
    location (apage) of the target PDF.
    If spage > epage, the sequence of source pages is reversed.
    r   r   z	Inserted rÕ  z pages.N)r  r   rà  r�   Úfz_absiÚ
page_mergerr   )Údoc_desÚdoc_srcÚspageÚepageÚapagerY  r}  rŸ  rÍ  Ú	graft_mapÚ	afterpageÚcounterr  rÖ   s                 r)   rà  rà  +R  s˜  € õ" ð ÝÔ#ØØØØØØØØØØñô ð 	ð €IØ€GÝŒM˜% %™-Ñ(Ô(¨1Ñ,€Eàˆu‚}€}ØˆØ�eŠmˆmÝ�w ¨¨y¸&À%ÈÐQZÑ[Ô[Ð[Ø�q‰LˆGØ˜qÒ Ð  W¨}Ñ%<ÀÒ%AÐ%AÝÐ? GÐ?Ð?°Ð?Ð?Ð?Ñ@Ô@Ð@Ø�A‰IˆDØ˜‰NˆIð �eŠmˆmˆmˆmˆmˆmð ˆØ�eŠmˆmÝ�w ¨¨y¸&À%ÈÐQZÑ[Ô[Ð[Ø�q‰LˆGØ˜qÒ Ð  W¨}Ñ%<ÀÒ%AÐ%AÝÐ? GÐ?Ð?°Ð?Ð?Ð?Ñ@Ô@Ð@Ø�A‰IˆDØ˜‰NˆIð �eŠmˆmˆmˆmˆmˆmr*   c                ó   — t          j        |                      ¦   «         t          d¦  «        ¦  «        }|j        s5t          j        |                      ¦   «         t          d¦  «        d¦  «        }t          j        |t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        }t          j        |t          d¦  «        ¦  «        }d}d}t          j        |¦  «        �r^t          j        |¦  «        }	t          j        |¦  «        r†t          t          j        |¦  «        ¦  «        D ]c}
t          j	        t          j
        ||
¦  «        ¦  «        }|                     d¦  «        sŒ?t          j        |dd…         ¦  «        }||k    r|}Œdn#t          j        |t          d¦  «        |	¦  «        }|d	z  }t          |	¦  «        D ]x}
t          j	        t          j
        ||
¦  «        ¦  «        }t          j        |dd…         ¦  «        |z   }d|› �}t          j        ||
¦  «        }t          j        |||¦  «         Œyt          j        |¦  «        r†t          t          j        |¦  «        ¦  «        D ]c}
t          j	        t          j
        ||
¦  «        ¦  «        }|                     d
¦  «        sŒ?t          j        |d	d…         ¦  «        }||k    r|}Œdn#t          j        |t          d¦  «        d¦  «        }|d	z  }t          t          j        |¦  «        ¦  «        D ]x}
t          j	        t          j
        ||
¦  «        ¦  «        }t          j        |d	d…         ¦  «        |z   }d
|› �}t          j        ||
¦  «        }t          j        |||¦  «         Œy||fS )aW  
    Merge the /Resources object created by a text pdf device into the page.
    The device may have created multiple /ExtGState/Alp? and /Font/F? objects.
    These need to be renamed (renumbered) to not overwrite existing page
    objects from previous executions.
    Returns the next available numbers n, m for objects /Alp<n>, /F<m>.
    r5  r   r9  r2  r1  ÚAlpr   Nr   r§  r   )r�   r  r  r  rÌ   rR  rz  r{  rL  ry  r}  r3   Úfz_atoir|  r�  )rÖ   Útemp_resra  Ú	main_extgÚ
main_fontsÚ	temp_extgÚ
temp_fontsrð  Ú	max_fontsrE   r®   rô  r�  r   r  rW  s                   r)   rê  rê  aR  s†  € õ Ô" 4§8¢8¡:¤:­x¸Ñ/DÔ/DÑEÔE€IØÔð RÝÔ+¨D¯HªH©J¬J½ÀÑ8MÔ8MÈqÑQÔQˆ	ÝÔ" 9­h°{Ñ.CÔ.CÑDÔD€IÝÔ# I­x¸Ñ/?Ô/?Ñ@Ô@€Jõ Ô" 8­X°kÑ-BÔ-BÑCÔC€IÝÔ# H­h°vÑ.>Ô.>Ñ?Ô?€Jà€GØ€Iõ Ô˜Ñ#Ô#ñ 6ÝÔ˜yÑ)Ô)ˆÝÔ˜YÑ'Ô'ð 
	UÝ�5Ô-¨iÑ8Ô8Ñ9Ô9ð  ð  �åÔ'­Ô)?À	È1Ñ)MÔ)MÑNÔN�Ø—~’~ eÑ,Ô,ð ØÝ”M # a b b¤'Ñ*Ô*�Ø�w’;�;Ø�Gøð õ Ô/°	½8ÀKÑ;PÔ;PÐRSÑTÔTˆIà�1‰ˆÝ�q‘”ð 	6ð 	6ˆAÝÔ#¥UÔ%;¸YÈÑ%JÔ%JÑKÔKˆCÝ”˜c ! " "œgÑ&Ô&¨Ñ0ˆAØ˜�9�9ˆDÝÔ(¨)°QÑ7Ô7ˆCÝÔ 	¨4°Ñ5Ô5Ð5Ð5åÔ˜Ñ$Ô$ð 	MÝ•uÔ)¨*Ñ5Ô5Ñ6Ô6ð 	ð 	ˆAÝÔ$¥eÔ&<¸jÈ!Ñ&LÔ&LÑMÔMˆDØ—?’? 3Ñ'Ô'ð ØÝ”˜d 1 2 2œhÑ'Ô'ˆAØ�9Š}ˆ}Ø�	øð	õ Ô,¨Y½ÀÑ8HÔ8HÈ!ÑLÔLˆ
à��N€IÝ•5Ô% jÑ1Ô1Ñ2Ô2ð 3ð 3ˆÝÔ ¥%Ô"8¸*ÀaÑ"HÔ"HÑIÔIˆÝŒM˜$˜q˜r˜rœ(Ñ#Ô# iÑ/ˆØ�1ˆwˆwˆÝÔ$ Z°Ñ3Ô3ˆÝÔ˜J¨¨cÑ2Ô2Ð2Ð2Ø�YÐÐr*   c                óp   — t                                | ¦  «         t          rt          d| › �¦  «         dS dS )z!
    redirect MuPDF warnings
    zMuPDF warning: N)rÉ  rk   ÚJM_mupdf_show_warningsrr   rq   s    r)   ÚJM_mupdf_warningrŒ  £R  sG   € õ ×"Ò" 4Ñ(Ô(Ð(Ýð *ÝÐ( $Ð(Ð(Ñ)Ô)Ð)Ð)Ð)ð*ð *r*   c                ór   — t                                | ¦  «         t          rt          d| › d�¦  «         d S d S )NzMuPDF error: r%   )rÉ  rk   rÿ  rr   rq   s    r)   ÚJM_mupdf_errorrŽ  ¬R  sH   € Ý×"Ò" 4Ñ(Ô(Ð(Ýð *ÝÐ( Ð(Ð(Ð(Ñ)Ô)Ð)Ð)Ð)ð*ð *r*   c                óP   — t          | t          ¦  «        sJ ‚t          | |¦  «        S r,   )r>   r´   ÚJM_new_bbox_device_Device)r    r  s     r)   r  r  ²R  s(   € Ý�b�$ÑÔÐÐÐÝ$ b¨*Ñ5Ô5Ð5r*   c           
     ó   — t          | t          j        ¦  «        sJ ‚t          j        | j        j        ¦  «        }t          j        d¦  «        }| D ]¼}|j        j        t          j        k    r |D ]{}|D ]T}t          |t          ||¦  «        ¦  «        st          j        |¦  «        sŒ5t          j        ||j        j        ¦  «         ŒUt          j        |t          d¦  «        ¦  «         Œ|t          j        |t          d¦  «        ¦  «         Œ½|S )z1
    make a buffer from an stext_page's text
    r  r%   )r>   r�   r  rh  rÌ   rv  rã  rÈ   r.  r1  r0  r¯  Úfz_append_runer¼  r4  rÅ
  )rÖ   r÷   rÀ  r\	  ro   rú  s         r)   ÚJM_new_buffer_from_stext_pager“  ·R  s  € õ �d�EÔ-Ñ.Ô.Ð.Ð.Ð.ÝŒ<˜œÔ0Ñ1Ô1€DÝ
Ô
˜cÑ
"Ô
"€CØð 
1ð 
1ˆØÔÔ ¥EÔ$=Ò=Ð=Øð 5ð 5�Øð ?ð ?�BÝ,¨Tµ<ÀÀbÑ3IÔ3IÑJÔJð !Ý$)Ô$=¸dÑ$CÔ$Cð!ð !ÝÔ(¨¨b¬m¬oÑ>Ô>Ð>Ð>ÝÔ$ S­#¨d©)¬)Ñ4Ô4Ð4Ð4ÝÔ  ¥c¨$¡i¤iÑ0Ô0Ð0øØ€Jr*   c                ó¬  — |€dS t          |¦  «        }|€dS t          j        |                     d¦  «        ¦  «        }t          j        | |t          j        ¦   «         d¦  «        }t          j        | d¦  «        }t          j        |t          d¦  «        t          j	        d¦  «        ¦  «         t          j        |t          d¦  «        |¦  «         |S )z“
    make new PDF action object from JavaScript source
    Parameters are a PDF document and a Python string.
    Returns a PDF action object.
    Nr
  r   rK  r`	  rÌ  rÍ  )
rµ  r�   r‘  rÈ  r4  r5  rs  rN  r  r4  )rZ  r¸   r}  r  r[
  Ú	newactions         r)   ÚJM_new_javascriptr–  ÌR  s¶   € ð €}àˆÝ˜ÑÔ€DØ€|àˆå
Ô
.¨t¯{ª{¸6Ñ/BÔ/BÑ
CÔ
C€CÝÔ! # s­E¬L©N¬N¸AÑ>Ô>€FÝÔ& s¨AÑ.Ô.€IÝ	Ô�y¥(¨3¡-¤-µÔ1CÀLÑ1QÔ1QÑRÔRÐRÝ	Ô�y¥(¨4¡.¤.°&Ñ9Ô9Ð9ØÐr*   c                ó    — t          | ¦  «        S r,   )ÚJM_new_output_fileptr_Output)rT
  s    r)   r  r  âR  s   € Ý'¨Ñ-Ô-Ð-r*   c                ó`   — | dk     r| dz  } | dk     °| dk    r| dz  } | dk    °| dz  dk    rdS | S )zB
    # return normalized /Rotate value:one of 0, 90, 180, 270
    r   r´  rµ  r-   )rY  s    r)   r,  r,  æR  sW   € ð �1Š*ˆ*Ø�#‰ˆð �1Š*ˆ*à
�CŠ-ˆ-Ø�#‰ˆð �CŠ-ˆ-à��{�aÒÐØˆqØ€Mr*   c                óÔ   — t          j        d¦  «        }t          j        |¦  «        }t          j        || ||¦  «         |                     ¦   «          t          j        |¦  «         |S )Nrâ  )r�   rã  rä  rå  r  Úfz_terminate_buffer)rI  rN
  rŒ  r  r  s        r)   rf
  rf
  óR  s`   € Ý
Ô
˜cÑ
"Ô
"€CÝ
Œ.˜Ñ
Ô
€CÝ	Ô˜˜T 8¨UÑ3Ô3Ð3Ø×ÒÑÔÐÝ	Ô˜cÑ"Ô"Ð"Ø€Jr*   c                ó"  — | j         s|S | }|j         rüt          j        |¦  «        }||v s't          j        |t	          d¦  «        ¦  «        j         rn¼|                     |¦  «         t          j        |t	          d¦  «        ¦  «        }t          j        |¦  «        rt          ||¦  «        }t          j        |t	          d¦  «        ¦  «        }t          j        |t	          d¦  «        ¦  «        }t          j        |¦  «        s|}|j         °ü|S )zƒ
    Return list of outline xref numbers. Recursive function. Arguments:
    'obj' first OL item
    'xrefs' empty Python list
    r6  r?  ÚNextr˜  )rÌ   r�   r  r  r  rk   rz  r@  )r  rC  ÚthisobjÚnewxrefrE  rê   s         r)   r@  r@  üR  s  € ð Œ>ð ØˆØ€GØ
Ô
ð ÝÔ" GÑ,Ô,ˆØ�eÐÐ�uÔ1°7½HÀVÑ<LÔ<LÑMÔMÔXÐàØ�Š�gÑÔÐÝÔ" G­X°gÑ->Ô->Ñ?Ô?ˆÝÔ˜eÑ$Ô$ð 	4Ý$ e¨UÑ3Ô3ˆEÝÔ$ g­x¸Ñ/?Ô/?Ñ@Ô@ˆÝÔ# W­h°xÑ.@Ô.@ÑAÔAˆÝÔ  'Ñ*Ô*ð 	ØˆGð Ô
ð ð €Lr*   c                ó²   — d}t          j        |                      ¦   «         t           j        ¦  «        }t          j        |¦  «        }t          |¦  «        }|S )zE
    return a PDF page's /Rotate value: one of (0, 90, 180, 270)
    r   )r�   rF  r  rO  r  r,  )rÖ   rY  r  s      r)   r  r  S  sH   € ð €Få
Ô
(¨$¯(ª(©*¬*µeÔ6PÑ
QÔ
Q€CÝÔ˜cÑ"Ô"€FÝ˜fÑ%Ô%€FØ€Mr*   c                óÚ   — t          j        t          |d¦  «        ¦  «        }t          j        |¦  «        }t          j        t           j        ¦  «        }t          j        | ||¦  «        }|S )zP
    create PDF object from given string (new in v1.14.0: MuPDF dropped it)
    r
  )r�   r‘  r  rW  Ú	PdfLexbufÚPDF_LEXBUF_SMALLÚpdf_parse_stm_obj)r*  rÖ  r-  r	   Úlexbufr   s         r)   r5  r5  !S  sY   € õ Ô2µ5¸¸fÑ3EÔ3EÑFÔF€GÝÔ! 'Ñ*Ô*€FÝŒ_�UÔ3Ñ4Ô4€FÝÔ$ S¨&°&Ñ9Ô9€FØ€Mr*   c                óf  — t          | t          j        ¦  «        sJ ‚|€t          j        ¦   «         }|�7t          |t          j        ¦  «        sJ dt	          |¦  «        ›d|› �¦   «         ‚t          j        | ¦  «        }t          |¦  «        }t          |¦  «        }t          j        ||¦  «        }t          j	        ||¦  «        }t          j
        |¦  «        }	t          |t          j        ¦  «        sJ ‚t          j        ||	||¦  «        }
|rt          j        |
¦  «         nt          j        |
d¦  «         t          j        |¦  «        sQt          j        ||
|	¦  «        }t          j        | |t          j        ¦   «         |t          j        ¦   «         ¦  «         npt          j        ||
¦  «        }t          j        | |t          j        ¦   «         t          j        t          j        j        ¦  «        t          j        ¦   «         ¦  «         t          j        |¦  «         t1          d|
¦  «        S )z�
    Version of fz_new_pixmap_from_display_list (util.c) to also support
    rendering of only the 'clip' part of the displaylist rectangle
    Nztype(seps)=r{   r
  r\  )r>   r�   r³  rÖ  rÈ   rÆ  rÓ  r   r|  r©  r}  r–  rf  r¬  r­  r¯  r²  rÈ  rr  rÉ  r±  rh  ri  rÝ  r×  )rÃ  rÞ  rß  rÜ  r  r�  r÷   rÙ  r�  r”  rà  rà  s               r)   rÂ  rÂ  /S  sæ  € õ �e�UÔ0Ñ1Ô1Ð1Ð1Ð1Ø€|ÝÔ"Ñ$Ô$ˆØˆ<�: d­EÔ,?Ñ@Ô@ˆ<ˆ<ÐBZÅTÈ$ÁZÄZÐBZÐBZÐTXÐBZÐBZ‰<Œ<Ð@åÔ& uÑ-Ô-€DÝ˜sÑ#Ô#€FÝ˜DÑ!Ô!€EÝÔ" 4¨Ñ/Ô/€DåÔ" 4¨Ñ0Ô0€DÝÔ Ñ%Ô%€Eå�r�5Ô-Ñ.Ô.Ð.Ð.Ð.å
Ô
'¨¨E°4¸Ñ
?Ô
?€CØð 4ÝÔ˜cÑ"Ô"Ð"Ð"åÔ(¨¨dÑ3Ô3Ð3åÔ$ UÑ+Ô+ð }ÝÔ0°¸¸eÑDÔDˆÝÔ! %¨­e¬nÑ.>Ô.>ÀÅuÄ~ÑGWÔGWÑXÔXÐXÐXåÔ& v¨sÑ3Ô3ˆÝÔ! %¨­e¬nÑ.>Ô.>ÅÄÍUÌ\ÔMhÑ@iÔ@iÕkpÔkyÑk{Ôk{Ñ|Ô|Ð|å	Ô˜#ÑÔÐå�5˜#ÑÔÐr*   c                ó   — t          | t          j        ¦  «        r| S t          | t          ¦  «        rt          j        | j        | j        ¦  «        S t          rt          j        | ¦  «        S t          j        dd¦  «        }t          | d¦  «        }t          | d¦  «        }|�|€|S t          |t          ¦  «        }t          |t          ¦  «        }t          |t          ¦  «        }t          |t          ¦  «        }t          j        ||¦  «        S )zM
    PySequence to fz_point. Default: (FZ_MIN_INF_RECT, FZ_MIN_INF_RECT)
    r   r   )r>   r�   r&  rì  r(  r)  r  r   r`  ry  rê  rz  rÜ  r{  )r¢  r€  r(  r)  s       r)   r`  r`  \S  sé   € õ �!•U”]Ñ#Ô#ð ØˆÝ�!•UÑÔð 'ÝŒ}˜QœS !¤#Ñ&Ô&Ð&Ýð *ÝÔ% qÑ)Ô)Ð)å	Œ�q˜!Ñ	Ô	€BÝ�a˜ÑÔ€AÝ�a˜ÑÔ€AØ€y�A�IØˆ	ÝˆQ•Ñ Ô €AÝˆQ•Ñ Ô €AÝˆQ•Ñ Ô €AÝˆQ•Ñ Ô €AÝŒ=˜˜AÑÔÐr*   c                ó  — t           rt          j        | |¦  «        S t          | t          j        ¦  «        sJ ‚t          |t          j        ¦  «        sJ ‚t	          j        |j        j	        ¦  «        }d}d}d}d}t          |¦  «        D ]X\  }}|j        j        t          j        k    r4t          |¦  «        D ]\  }	}
t          |
¦  «        D ]\  }}Œ||z  }Œ ||	z  }||z  }ŒY|D ]™}|j        j        t          j        k    r}|D ]z}
d}|
D ]R}t          |
|¦  «        }t	          j        |¦  «        st          ||¦  «        r|j        j        }t#          | |¦  «         ŒS|dk    r|dk    rt	          j        | d¦  «         Œ{ŒšdS )zÉ
    Plain text output. An identical copy of fz_print_stext_page_as_text,
    but lines within a block are concatenated by space instead a new-line
    character (which else leads to 2 new-lines).
    r   r   r=  r%   N)r  r   r"  r>   r�   rr  r  rh  rÌ   rv  ró  rÈ   r.  r0  r¯  r1  r¼  r2  rù  )r  rÖ   r÷   r:  Ún_blocksÚn_linesÚn_charsÚ	n_blocks2r\	  Ún_lines2ro   Ún_chars2rú  Úchbboxs                 r)   r"  r"  sS  sÉ  € õ ð <ÝÔ0°°dÑ;Ô;Ð;å�c�5œ>Ñ*Ô*Ð*Ð*Ð*Ý�d�EÔ-Ñ.Ô.Ð.Ð.Ð.ÝŒ<˜œÔ0Ñ1Ô1€DØ€Ià€HØ€GØ€GÝ% tÑ,Ô,ð ð Ñˆ	�5ØÔÔ ¥EÔ$=Ò=Ð=Ý"+¨UÑ"3Ô"3ð $ð $‘�˜$Ý$-¨tÑ$4Ô$4ð ð ‘L�H˜bØØ˜8Ñ#��Ø�xÑˆGØ�IÑˆˆàð 6ð 6ˆØÔÔ ¥EÔ$=Ò=Ð=Øð 6ð 6�Ø�	Øð 7ð 7�BÝ)¨$°Ñ3Ô3�FÝÔ1°$Ñ7Ô7ð 7Ý/°°fÑ=Ô=ð7ð %'¤M¤O˜	å& s¨IÑ6Ô6Ð6øØ ’?�? y°1¢} }ÝÔ*¨3°Ñ5Ô5Ð5øøð6ð 6r*   c                óò  — t          j        | |¦  «        }t          j        | ¦  «        }|s=|�|j        st          j        | |¦  «         n|j        rt          j        ||¦  «         dS |j        r|j        st          |¦  «        }n"t          t          j        ||¦  «        ¦  «        }||k    rHt          ||¦  «        }|j        st          j        | ||¦  «         dS t          j        | |||¦  «         dS dS )a   
    Create a JavaScript PDF action.
    Usable for all object types which support PDF actions, even if the
    argument name suggests annotations. Up to 2 key values can be specified, so
    JavaScript actions can be stored for '/A' and '/AA/?' keys.
    N)	r�   r  rŽ  rÌ   rA  r¹  r–  rN  r  )r   Úkey1Úkey2r¸   Úkey1_objrZ  r´
  r•  s           r)   ÚJM_put_scriptr´  žS  s  € õ Ô! )¨TÑ2Ô2€HÝ
Ô
& yÑ
1Ô
1€Cð ð Øˆ<˜tœˆ<ÝÔ˜y¨$Ñ/Ô/Ð/Ð/ØÔ ð 	/ÝÔ˜x¨Ñ.Ô.Ð.Øˆð Œ?ð C (Ô"5ð CÝ˜xÑ(Ô(ˆˆå�uÔ1°(¸DÑAÔAÑBÔBˆð �‚€Ý% c¨5Ñ1Ô1ˆ	ØŒð 	BÝÔ˜y¨$°	Ñ:Ô:Ð:Ð:Ð:åÔ 	¨9°d¸DÑAÔAÐAÐAÐAð €r*   c                ó6   — | j         | j        | j        | j        fS r,   r¿  r  s    r)   rÇ  rÇ  ¿S  ó   € ØŒ4�”�q”t˜QœTÐ!Ð!r*   c                óN   — | j         | j        | j        | j        | j        | j        fS r,   r]  )r€  s    r)   rq  rq  ÃS  s!   € ØŒ3�”�Q”S˜!œ#˜qœs A¤CÐ'Ð'r*   c                ó   — | j         | j        fS r,   rQ  )r¢  s    r)   rJ  rJ  ÇS  s   € ØŒ3�”ˆ8€Or*   c                ó¾   — | j         j        | j         j        f| j        j        | j        j        f| j        j        | j        j        f| j        j        | j        j        ffS )z"
    PySequence from fz_quad.
    )r¤  r(  r)  r“  r‘  r’  )r’  s    r)   rî  rî  ËS  sN   € ð
 ŒTŒV�Q”T”VÐØŒTŒV�Q”T”VÐØŒTŒV�Q”T”VÐØŒTŒV�Q”T”VÐð	ð r*   c                ó6   — | j         | j        | j        | j        fS r,   r¿  r  s    r)   rg  rg  ×S  r¶  r*   c           
     ób  — t          | t          j        ¦  «        r| S t          | d¦  «        rDt	          | ¦  «        dk    r1t          | d         d¦  «        rt          j        t          | ¦  «        Ž } t          | t          j        ¦  «        rt          j        | ¦  «        S t          | t          ¦  «        rkt          j	        | j
        j        | j
        j        | j        j        | j        j        | j        j        | j        j        | j        j        | j        j        ¦  «        S t          j	        dddddddd¦  «        }g d¢}| r/t          | t          t           f¦  «        rt	          | ¦  «        dk    r|S t#          | d¦  «        €!t          j        t%          | ¦  «        ¦  «        S t'          d¦  «        D �]H}|t	          | ¦  «        k    r|c S | |         }t)          |¦  «        rt+          |¦  «        dk    r|c S t#          |d¦  «        ||         _        t#          |d¦  «        ||         _        ||         j        �||         j        €|c S t-          ||         j        t.          ¦  «        ||         _        t-          ||         j        t.          ¦  «        ||         _        t1          ||         j        t2          ¦  «        ||         _        t1          ||         j        t2          ¦  «        ||         _        �ŒJ|d         |_
        |d         |_        |d         |_        |d         |_        |S )	Nra  rK  r   rj  r  r   r   r   )r>   r�   r�  r;   r7   rh  rµ   rì  rû  Úfz_make_quadr¤  r(  r)  r“  r‘  r’  r´   ry  r   rL  r|  r~  rê  rz  rÜ  r{  )r  r’  r¢  r®   r  s        r)   rŽ  rŽ  ÛS  s©  € Ý�!•U”\Ñ"Ô"ð Øˆåˆq�-Ñ Ô ð $¥S¨¡V¤V¨q¢[ [µW¸Q¸q¼TÀ;Ñ5OÔ5O [ÝŒL�% ™(œ(Ð#ˆÝ�1•e”lÑ#Ô#ð +ÝÔ&¨Ñ*Ô*Ð*Ý�1•dÑÔð ÝÔ!Ø””˜œœØ””˜œœØ””˜œœØ””˜œœñ	ô ð 	õ 	Ô˜1˜a  A q¨!¨Q°Ñ2Ô2€AØˆ	ˆ	€AØð •J˜q¥5­$ -Ñ0Ô0ð µC¸±F´F¸a²K°KØˆå�Q˜ÑÔÐ"ÝÔ&¥°qÑ'9Ô'9Ñ:Ô:Ð:å�1‰XŒXð /ñ /ˆØ•�A‘”Š;ˆ;ØˆHˆHˆHØ�ŒdˆÝ Ñ$Ô$ð 	­¸Ñ(<Ô(<ÀÒ(AÐ(AØˆHˆHˆHå˜s AÑ&Ô&ˆˆ!ŒŒÝ˜s AÑ&Ô&ˆˆ!ŒŒØˆQŒ4Œ6ˆ>˜Q˜qœTœV˜^ØˆHˆHˆHÝ�a˜”d”f�oÑ.Ô.ˆˆ!ŒŒÝ�a˜”d”f�oÑ.Ô.ˆˆ!ŒŒÝ�a˜”d”f�oÑ.Ô.ˆˆ!ŒŒÝ�a˜”d”f�oÑ.Ô.ˆˆ!ŒŒ‰ØˆQŒ4€A„DØˆQŒ4€A„DØˆQŒ4€A„DØˆQŒ4€A„DØ€Hr*   c                ó|  — t          | t          j        ¦  «        sJ t          | ¦  «        › ¦   «         ‚t          j        | t          j        ¦  «        }t          j        |¦  «        r¦t          j        d¦  «        }t          t          j	        |¦  «        ¦  «        D ]o}|dk    rt          j
        |d¦  «         t          j        ||¦  «        }t          j        |¦  «        r)t          j        |¦  «        }t          j        ||¦  «         Œpn0|j        rt          j        |¦  «        }nt          j        d¦  «        }|S )zK
    Read and concatenate a PDF page's /Contents object(s) in a buffer
    r   r   rˆ  )r>   r�   r5  rÈ   r  rÈ  rŽ  rr  rL  r›  r4  rœ  r  r  Úfz_append_bufferrÌ   )rK  rw  r  r®   r  r  s         r)   r3  r3  T  s#  € õ �g�uœ|Ñ,Ô,Ð@Ð@µ°g±´Ð.@Ñ@Ô@Ð,ÝÔ! '­5Ô+GÑHÔH€HÝÔ˜(Ñ#Ô#ð  ÝŒn˜TÑ"Ô"ˆÝ•uÔ*¨8Ñ4Ô4Ñ5Ô5ð 	2ð 	2ˆAØ�1ŠuˆuÝÔ$ S¨"Ñ-Ô-Ð-ÝÔ% h°Ñ2Ô2ˆCÝÔ" 3Ñ'Ô'ð 2ÝÔ,¨SÑ1Ô1�ÝÔ& s¨DÑ1Ô1Ð1øð	2ð 
Ô	ð  ÝÔ# HÑ-Ô-ˆˆåŒn˜QÑÔˆØ€Jr*   c                óš  — t          | t          j        ¦  «        r| S t          | t          j        ¦  «        rt          j        | ¦  «        S t          | t          ¦  «        r+t          j        | j        | j        | j        | j	        ¦  «        S t          | t          ¦  «        r+t          j        | j        | j        | j        | j	        ¦  «        S | r"t          | ¦  «        rt          | ¦  «        dk    r#t          j        t          j        j        ¦  «        S g d¢}t          d¦  «        D ]x}t          | |¦  «        ||<   ||         €%t          j        t          j        j        ¦  «        c S ||         t           k     r
t           ||<   ||         t"          k    r
t"          ||<   Œyt          j        |d         |d         |d         |d         ¦  «        S )NrK  r  r   r   r   r   )r>   r�   rh  rd  r$  rf  r
  r  r	  r  re  r|  r~  ri  rL  ry  rz  r{  )r  rÎ  r®   s      r)   r   r   T  s‹  € Ý�!•U”\Ñ"Ô"ð ØˆÝ�!•U”]Ñ#Ô#ð ÝŒ|˜A‰ŒÐÝ�!•TÑÔð :ÝÔ! !¤$¨¬¨a¬d°A´DÑ9Ô9Ð9Ý�!•UÑÔð :ÝÔ! !¤$¨¬¨a¬d°A´DÑ9Ô9Ð9Øð 9Õ$ QÑ'Ô'ð 9­?¸1Ñ+=Ô+=ÀÒ+BÐ+BÝŒ|�EœLÔ7Ñ8Ô8Ð8Øˆˆ€AÝ�1‰XŒXð #ð #ˆÝ˜Q Ñ"Ô"ˆˆ!‰ØˆQŒ4ˆ<Ý”<¥¤Ô ;Ñ<Ô<Ð<Ð<Ð<ØˆQŒ4•/Ò!Ð!Ý"ˆAˆa‰DØˆQŒ4•/Ò!Ð!Ý"ˆAˆa‰DøÝÔ˜a œd A a¤D¨!¨A¬$°°!´Ñ5Ô5Ð5r*   c                óŒ   — 	 | j         |j        k    s0| j        |j        k    s | j        |j         k    s| j        |j        k    rdS dS r  rz  r:  s     r)   r1  r1  5T  sE   € ðØŒt�q”tŠ|ˆ|ØŒt�q”tŠ|ˆ|ØŒt�q”tŠ|ˆ|ØŒt�q”tŠ|ˆ|àˆqØˆ1r*   c                óú  — | �| j         sdS t          j        |                      ¦   «         t	          d¦  «        ¦  «        }|j         r´|                      ¦   «         }t          j        ||                      ¦   «         ¦  «        }t          j        ¦   «         }t          j        ¦   «         }t          j	        | ||¦  «         t          j
        || |||¦  «        }t          j        |j         ¦  «        | j         _        dS dS )z<
    refreshes the link and annotation tables of a page
    Nr—  )rÌ   r�   r  r  r  r*  r^  rh  rr  r#  Úpdf_load_link_annotsÚll_fz_keep_linkr}  )rÖ   r  rZ  r^  ru  r*  r·  s          r)   rI
  rI
  @T  sÖ   € ð €|˜4œ?€|ØˆÝ
Ô
˜dŸhšh™jœj­(°8Ñ*<Ô*<Ñ
=Ô
=€CØ
„~ð HØ�hŠh‰jŒjˆÝÔ-¨s°D·H²H±J´JÑ?Ô?ˆÝœ™œˆÝ”>Ñ#Ô#ˆÝÔ  $¨°xÑ@Ô@Ð@ÝÔ)¨3°°c¸6À8ÑLÔLˆÝ %Ô 5°t´Ñ GÔ GˆŒÔÐÐðHð Hr*   c                óš  — | j         st          j        ¦   «         S t          | ¦  «        }|dk    rt          j        ¦   «         S t	          |                      ¦   «         ¦  «        }|j        }|j        }|dk    rt          j        dddd|d¦  «        }n9|dk    rt          j        dddd||¦  «        }nt          j        ddddd|¦  «        }|S )z*
    calculate page rotation matrices
    r   rµ  r   r1  r¿  )	rÌ   r�   rr  r  r  r  r(  r)  r±  )rÖ   rP  Úcb_sizer   rÆ  r€  s         r)   r¨  r¨  QT  sÌ   € ð Œ?ð  ÝŒ~ÑÔÐÝ Ñ%Ô%€Hà�1‚}€}ÝŒ~ÑÔÐÝ˜dŸhšh™jœjÑ)Ô)€GØŒ	€AØŒ	€Aà�2‚~€~ÝÔ   A r¨1¨a°Ñ3Ô3ˆˆØ	�SŠˆÝÔ   Q¨¨2¨q°!Ñ4Ô4ˆˆåÔ   B¨¨1¨a°Ñ3Ô3ˆà€Hr*   c                ó8   — 	 t          j        | j        |¦  «        S r,   )r  r   r›  rÌ   r�   rh  rv  r7   rk	  ÚhfuzzÚvfuzzr“  Úfz_string_from_bufferÚfind_stringrÈ   r.  r¯  r0  r1  Úon_highlight_char)rÖ   rœ  r÷   rk	  ÚHitsÚhitsr-  Úhaystack_stringÚhaystackÚbeginr–  Úinsider®   r\	  ro   rú  r  s                    r)   r›  r›  iT  s   € ðCÝÔ)¨$¬/¸6ÑBÔBÐBr*   c           	     óÆ  — t          j        |¦  «        rt          j        d¦  «         dS 	 t          j        |t           j        ¦  «        }|dk    r2t          j        |t           j        ¦  «        }t          | |||¦  «         nI|dk    rt          | |||¦  «         n0|dk    rt          | |||¦  «         n	 t          j	        |¦  «         dS t          j
        |¦  «        }t          |¦  «        D ]Ã}	t          j        ||	¦  «        }
t          j        |
¦  «        rt          j        |
¦  «        }nd}t          j        |
t           j        ¦  «        }|j        r[|}||vr*|                     |¦  «         t%          | |||||¦  «         Œ˜t          j        d¦  «          t          j	        |¦  «         dS ŒÄ	 t          j	        |¦  «         dS # t          j	        |¦  «         w xY w)zP
    Step through /Resources, looking up image, xobject or font information
    z.Circular dependencies! Consider page cleaning.Nr   r   r   r   )r�   Úpdf_mark_objrT  r  ÚPDF_ENUM_NAME_XObjectÚPDF_ENUM_NAME_Fontr^  rr  re  Úpdf_unmark_objr{  rL  r|  r  r  rG  rÌ   rk   rH  )rZ  rL  rM  rI  r\  rN  ÚxobjrW  rE   r®   r  ÚsxrefÚsubrsrcÚsxref_ts                 r)   rH  rH  ²T  sý  € õ Ô˜$ÑÔð ÝŒÐFÑGÔGÐGØˆð#ÝÔ! $­Ô(CÑDÔDˆà�1Š9ˆ9ÝÔ% d­EÔ,DÑEÔEˆDÝ˜C  u¨kÑ:Ô:Ð:Ð:Ø�QŠYˆYÝ˜S $¨¨{Ñ;Ô;Ð;Ð;Ø�QŠYˆYÝ˜C  u¨kÑ:Ô:Ð:Ð:àõ( 	Ô˜TÑ"Ô"Ð"Ð"Ð"õ# Ô˜tÑ$Ô$ˆÝ�q‘”ð 	ð 	ˆAÝÔ(¨¨qÑ1Ô1ˆCÝÔ" 3Ñ'Ô'ð ÝÔ(¨Ñ-Ô-��à�ÝÔ(¨­eÔ.KÑLÔLˆGØÔ!ð Ø�Ø &Ð(Ð(Ø—M’M 'Ñ*Ô*Ð*Ý% s¨G°U¸DÀ%ÈÑPÔPÐPÐPå”MÐ"RÑSÔSÐSØåÔ˜TÑ"Ô"Ð"Ð"Ð"ðð	õ  	Ô˜TÑ"Ô"Ð"Ð"Ð"ø�Ô˜TÑ"Ô"Ð"Ð"øøøs   ¬B	G
 ÃCG
 Æ2G
 Ç
G c                óÜ  — |sdS t          |t          t          f¦  «        sJ ‚t          |¦  «        }|dk    rdS t	          j        | ¦  «        }t	          j        |¦  «        }t	          j        ||¦  «        }t          |¦  «        D ]Â}||         }|}t          |t          ¦  «        rt	          j
        ||¦  «         Œ7t          |t          t          f¦  «        rt          |¦  «        dk    s
J d¦   «         ‚|\  }	}
|	r|
s
J d¦   «         ‚t	          j        |d¦  «        }t	          j
        ||	¦  «         t	          j
        ||
¦  «         ŒÃt	          j        |t          d¦  «        |¦  «         dS )z'
    set ListBox / ComboBox values
    Nr   r   zbad choice field listrî  )r>   rµ   r´   r7   r�   rÿ   rŽ  rK  rL  rÑ  Úpdf_array_push_text_stringÚpdf_array_push_arrayrN  r  )rß   rM  rE   r   rZ  rð  r®   r  ÚoptÚopt1Úopt2Ú	optarrsubs               r)   ÚJM_set_choice_optionsrâ  ÛT  sm  € ð ð ØˆÝ�u�u¥d˜mÑ,Ô,Ð,Ð,Ð,ÝˆU‰Œ€AØˆA‚v€vØˆÝÔ# UÑ+Ô+€IÝ
Ô
&¨	Ñ
2Ô
2€CÝÔ  # qÑ)Ô)€FÝ�1‰XŒXð ?ð ?ˆØ�AŒhˆØˆÝ�c�3ÑÔð 	?ÝÔ,¨f°cÑ:Ô:Ð:Ð:å˜s¥U­D MÑ2Ô2Ð^µs¸C±y´yÀA²~°~°~ÐG^±~´~ÐEØ‰JˆD�$ØÐ9˜DÐ9Ð9Ð"9Ñ9Ô9�=ÝÔ2°F¸AÑ>Ô>ˆIÝÔ,¨i¸Ñ>Ô>Ð>ÝÔ,¨i¸Ñ>Ô>Ð>Ð>Ý	Ô˜	¥8¨E¡?¤?°FÑ;Ô;Ð;Ð;Ð;r*   c                ó�  — d}d}d}|t           j        k    rt          d¦  «        }t           j        }�n|t           j        k    r(t          d¦  «        }t           j        }t           j        }nÐ|t           j        k    r)t          d¦  «        }t           j        t           j        z  }n—|t           j        k    rt          d¦  «        }nw|t           j        k    rt          d¦  «        }t           j	        }nK|t           j
        k    rt          d¦  «        }t           j	        }n|t           j        k    rt          d¦  «        }|�*|j        r#t          j        |t          d¦  «        |¦  «         |dk    s|dk    rRt          j        |t          d¦  «        ¦  «        }|| z  }||z  }t          j        |t          d¦  «        |¦  «         dS dS )	z
    Set the field type
    r   NÚBtnÚTxÚChÚSigrš  r  )r�   r  r  ÚPDF_BTN_FIELD_IS_PUSHBUTTONrø  ÚPDF_BTN_FIELD_IS_RADIOr  rD  rE  ÚPDF_CH_FIELD_IS_COMBOrF  r  rÌ   rN  r_  rI  )r*  r  rÈ   ÚsetbitsÚ	clearbitsÚtypenamerÐ
  s          r)   r  r  ÷T  s•  € ð €GØ€IØ€HØ�uÔ+Ò+Ð+Ý˜E‘?”?ˆÝÔ3ˆ‰Ø	•Ô2Ò	2Ð	2Ý˜E‘?”?ˆÝÔ5ˆ	ÝÔ.ˆˆØ	•Ô/Ò	/Ð	/Ý˜E‘?”?ˆÝÔ6½Ô9UÑUˆ	ˆ	Ø	•Ô+Ò	+Ð	+Ý˜D‘>”>ˆˆØ	•Ô.Ò	.Ð	.Ý˜D‘>”>ˆÝÔ/ˆ	ˆ	Ø	•Ô/Ò	/Ð	/Ý˜D‘>”>ˆÝÔ-ˆˆØ	•Ô0Ò	0Ð	0Ý˜E‘?”?ˆàÐ Ô 3ÐÝÔ˜3¥¨¡¤°Ñ9Ô9Ð9à�!‚|€|�y A’~�~ÝÔ% c­8°D©>¬>Ñ:Ô:ˆØ��
ÑˆØ�‰ˆÝÔ˜s¥H¨T¡N¤N°DÑ9Ô9Ð9Ð9Ð9ð	 &�~r*   c                óÖ  — d}t          j        | ¦  «        }|                     d¦  «        }t          |¦  «        }|dz
  }||         }||= t          |¦  «        }t          j        | |¦  «        }	|	j        sŠ|dk    r„d                     |¦  «        }
t          j        t          j        | t          |
¦  «        ¦  «        ¦  «        r t          dt          |¦  «        › d�¦  «        ‚||dz
  = t          |¦  «        }|dk    °„t          j
        | |t          j        |¦  «        ¦  «         t          j        | |¦  «        }	t          j        |	¦  «        st          d|› d�¦  «        ‚t          j        |	¦  «        }||k    rt          d|› d�¦  «        ‚t          | dd¦  «        }t          |¦  «        }d|› d	|› d
�}d|› d|› �}|                     ||d¦  «        }t#          ||¦  «        }|S )z*
    Set a PDF dict key to some value
    zfitz: replace me!rW  r   r   z	path to 'z' has indirectszcannot insert value for 'rë   r—  r˜  r³   )r�   rŽ  r6   r7   r»  rÌ   rÜ  r 	  rµ  rg   Úpdf_dict_putpr‚  re
  r  rf
  ru
  rà  r5  )r  r  r¸   Ú
eyecatcherrZ  rÃ  r  r®   ÚskeyÚtestkeyrD  r€  r  ÚobjstrÚnullvalÚnewvalÚnewstrr¡  s                     r)   ry
  ry
  U  s  € ð %€JÝ
Ô
& sÑ
+Ô
+€Cà�IŠI�c‰NŒN€EÝˆu‰:Œ:€DØˆq‰€AØ�Œ8€DàˆaˆÝˆu‰:Œ:€DÝÔ! # sÑ+Ô+€GØÔð 	ð �QŠhˆhØ—’˜‘”ˆAÝÔ$¥UÔ%8¸½lÈ1¹o¼oÑ%NÔ%NÑOÔOð QÝÐ O­L¸Ñ,>Ô,>Ð OÐ OÐ OÑPÔPÐPØ�d˜Q‘h�Ý�u‘:”:ˆDð �QŠhˆhõ 
Ô˜˜S¥%Ô";¸JÑ"GÔ"GÑHÔHÐHÝÔ! # sÑ+Ô+€GÝÔ˜wÑ'Ô'ð <ÝÐ:°CÐ:Ð:Ð:Ñ;Ô;Ð;ÝÔ# GÑ,Ô,€DØˆzÒÐÝÐ:°CÐ:Ð:Ð:Ñ;Ô;Ð;å
˜c 1 aÑ
(Ô
(€CÝ# CÑ(Ô(€Fð '�$Ð&Ð&˜Ð&Ð&Ð&€GØ�ÐÐ˜ÐÐ€FØ�^Š^˜G V¨QÑ/Ô/€Fõ " # vÑ.Ô.€GØ€Nr*   c                óœ  — |r#t          j        | t          d¦  «        |¦  «         |�Wt          j        | t          d¦  «        ¦  «         |r3t          j        | t          d¦  «        d¦  «        }t          ||¦  «         |�Wt          j        | t          d¦  «        ¦  «         |r3t          j        | t          d¦  «        d¦  «        }t          ||¦  «         |�Wt          j        | t          d¦  «        ¦  «         |r3t          j        | t          d¦  «        d¦  «        }t          ||¦  «         |�•t          j        | t          d¦  «        ¦  «         |rst          j        | t          d¦  «        d¦  «        }t          |¦  «        }t          |¦  «        D ]3}||         }	t          j        |d¦  «        }
t          |
|	¦  «         Œ0d S d S d S )NrÍ  r¥  r   r¦  rÆ  r0  )	r�   rU  r  rA  rœ  ÚJM_set_ocg_arrays_impr7   rL  rÝ  )rÇ  r�	  r–  r‚	  rƒ	  r3  rL  rE   r®   Úitem0r  s              r)   r€	  r€	  MU  sÌ  € Øð IÝÔ ¥x°Ñ'<Ô'<¸iÑHÔHÐHà	€~ÝÔ˜D¥(¨4¡.¤.Ñ1Ô1Ð1Øð 	,ÝÔ*¨Dµ(¸4±.´.À!ÑDÔDˆCÝ! 3¨Ñ+Ô+Ð+Ø
€ÝÔ˜D¥(¨5¡/¤/Ñ2Ô2Ð2Øð 	-ÝÔ*¨Dµ(¸5±/´/À1ÑEÔEˆCÝ! 3¨Ñ,Ô,Ð,ØÐÝÔ˜D¥(¨8Ñ"4Ô"4Ñ5Ô5Ð5Øð 	0ÝÔ*¨Dµ(¸8Ñ2DÔ2DÀaÑHÔHˆCÝ! 3¨Ñ/Ô/Ð/ØÐÝÔ˜D¥(¨:Ñ"6Ô"6Ñ7Ô7Ð7Øð 	3ÝÔ*¨Dµ(¸:Ñ2FÔ2FÈÑJÔJˆCÝ�8‰}Œ}ˆAÝ˜1‘X”Xð 3ð 3�Ø  œ�ÝÔ0°#°qÑ9Ô9�Ý% s¨EÑ2Ô2Ð2Ð2ð Ðð	3ð 	3ð3ð 3r*   c                óŽ   — t          j        | ¦  «        }|D ]-}t          j        ||d¦  «        }t          j        | |¦  «         Œ.dS )z�
    Set OCG arrays from dict of Python lists
    Works with dict like {"basestate":name, "on":list, "off":list, "rbg":list}
    r   N)r�   rŽ  r‰  r�  )rL  rÃ  rZ  r  r  s        r)   rø  rø  kU  sW   € õ
 Ô
& sÑ
+Ô
+€CØð 'ð 'ˆÝÔ$ S¨$°Ñ2Ô2ˆÝÔ˜S #Ñ&Ô&Ð&Ð&ð'ð 'r*   c                ó  — t          j        | ¦  «        }t          j        ||d¦  «        }|j        st	          t
          t          ¦  «         t          j        | t          d¦  «        ¦  «        }|j        s#t          j	        | t          d¦  «        d¦  «        }t          j        |t          d¦  «        ¦  «        }|j        s#t          j	        |t          d¦  «        d¦  «        }t          j
        |t          j        |¦  «        |¦  «         dS )zã
    Insert an item into Resources/Properties (used for Marked Content)
    Arguments:
    (1) e.g. page object, Form XObject
    (2) marked content name
    (3) xref of the referenced object (insert as indirect reference)
    r   r5  r   rš  N)r�   rŽ  r‰  rÌ   r°  rˆ  rp  r  r  rR  rN  r4  )r	  r   r  rZ  rÑ  ra  r›  s          r)   r;  r;  vU  sî   € õ Ô
& sÑ
+Ô
+€CÝ
Ô
   d¨AÑ
.Ô
.€CØŒ>ð 0Ý•Õ.Ñ/Ô/Ð/ÝÔ" 3­°Ñ(=Ô(=Ñ>Ô>€IØÔð KÝÔ+¨Cµ¸+Ñ1FÔ1FÈÑJÔJˆ	ÝÔ# I­x¸Ñ/EÔ/EÑFÔF€JØÔ ð SÝÔ,¨Y½ÀÑ8NÔ8NÐPQÑRÔRˆ
Ý	Ô�z¥5Ô#5°dÑ#;Ô#;¸SÑAÔAÐAÐAÐAr*   c                óê  ‡— t          | t          ¦  «        r| j        } t          | t          j        ¦  «        s"J dt          | ¦  «        ›dt
          ›�¦   «         ‚t          | ¦  «        }|j        s
J d¦   «         ‚t          j        | ¦  «        }| 	                    ¦   «         }ˆfd„} |d¦  «        }|} |d¦  «        }t          |¦  «        }t          |¦  «        }	t          j        ||	¦  «        }t          j        | |¦  «          |d¦  «        }|ryt          |¦  «        rjt          |¦  «        }
t          j        ||
¦  «        }d}t#          |
¦  «        D ]}||         }t          j        ||¦  «         Œ t          j        ||¦  «          |d	¦  «        }|r‘t          |¦  «        r‚t          |¦  «        }
t          j        ||
¦  «        }t#          |
¦  «        D ]}t          j        |||         ¦  «         Œt          j        ||t-          d
¦  «        t-          d¦  «        ¦  «          |d¦  «        }|r•t          |¦  «        r†t          |¦  «        }
t          j        ||
¦  «        }d}t#          |
¦  «        D ]}||         }t          j        ||¦  «         Œ t          j        ||t-          d¦  «        t-          d¦  «        ¦  «          |d¦  «        }|�2t/          |¦  «        }t          j        |t-          d¦  «        |¦  «          |d¦  «        }|�Lt/          |¦  «        }t          j        |¦  «        }||k    r#t          j        |t-          d¦  «        |¦  «         |t          j        k    r2 |d¦  «        }|}|r#t          j        |t-          d¦  «        |¦  «          |d¦  «        }|}t          j        ||¦  «         |t          j        t          j        fv r |d¦  «        }t?          | |¦  «          |d¦  «        }tA          |¦  «        }t          j        ||t-          d
¦  «        t-          d¦  «        ¦  «          |d¦  «        }|}t          j        |t          j!        |¦  «        t-          d
¦  «        t-          d¦  «        ¦  «          |d¦  «        }t/          |¦  «        }t          j        |t-          d¦  «        |¦  «         t          j"        |t-          d¦  «        ¦  «         t          j"        |t-          d¦  «        ¦  «          |d ¦  «        }|�‚|t          j        k    r|t          j#        z  }n?|t          j$        k    r|t          j%        z  }n|t          j&        k    r|t          j'        z  }t          j        |t-          d!¦  «        |¦  «          |d"¦  «        }t/          |¦  «        }|rt          j(        ||¦  «          |d#¦  «        }tS          |t-          d$¦  «        t          j*        ¦   «         |¦  «          |d%¦  «        }tS          |t-          d&¦  «        t-          d'¦  «        |¦  «          |d(¦  «        }tS          |t-          d&¦  «        t-          d)¦  «        |¦  «          |d*¦  «        }tS          |t-          d&¦  «        t-          d+¦  «        |¦  «          |d,¦  «        }tS          |t-          d&¦  «        t-          d-¦  «        |¦  «          |d.¦  «        }tS          |t-          d&¦  «        t          j+        d/¦  «        |¦  «          |d0¦  «        }tS          |t-          d&¦  «        t          j+        d1¦  «        |¦  «          |d2¦  «        }t/          |¦  «        }|t          j$        k    rÐ|s<t          j,        ||d3d4¦  «         t          j-        |t-          d5¦  «        d3¦  «         �nÐt          j.        |¦  «        }|j        rPt          j/        |¦  «        }t          j,        |||d4¦  «         t          j-        |t-          d5¦  «        |¦  «         �ne|r#t          j-        |t-          d5¦  «        |¦  «         �n>|t          j0        k    rÙt          j.        |¦  «        }| /                    ¦   «         }|d6|fv s|d7k    r^t          j,        |||d4¦  «         t          j-        |t-          d5¦  «        |¦  «         t          j-        |t-          d+¦  «        |¦  «         nœt          j-        |t-          d5¦  «        d3¦  «         t          j-        |t-          d+¦  «        d3¦  «         nU|rSt          j,        |||d4¦  «         |t          j        t          j        fv r"t          j"        |t-          d8¦  «        ¦  «         t          j1        | ¦  «         t          j2        | d4¦  «         t          j3        | d4¦  «         t          j4        | ¦  «         dS )9z�
    Update the PDF form field with the properties from a Python Widget object.
    Called by "Page.add_widget" and "Annot.update_widget".
    ztype(annot)=rœ  rÜ   c                ó&   •— t          ‰| d ¦  «        S r,   )rì   )r   r:  s    €r)   ÚGETATTRz)JM_set_widget_properties.<locals>.GETATTR—U  s   ø€ Ý�v˜t TÑ*Ô*Ð*r*   rß  r÷   rX  r   r×  rª  r  rÁ  r©  r«  rÛ  Nr¨  rÚ  r  rå  ÚMaxLenrÞ  rØ  rÕ  r`	  rÖ  rî	  rç  r�  rn  rÄ  rÝ  r  rá  r´
  r  rè  r›  r¬  ré  r§  rê  r­  rë  ræ  rì  r®  rí  r¯  rÜ  rö  r   r÷  TÚYesr¬  )5r>   râ   rÄ   r�   rä   rÈ   rà   rÌ   rÿ   r*  r   r¨  r©  r±  r|  r7   rK  rL  rM  Úpdf_field_set_fill_colorr¹  r  r  rµ  r€  r³  rD  rI  Úpdf_field_set_displayrE  rF  râ  r»  rº  rA  rê  rø  ré  r  rè  Úpdf_field_set_button_captionr´  r5  r4  Úpdf_set_field_valuerU  Úpdf_button_field_on_statery  r  rO  Úpdf_set_annot_hotÚpdf_set_annot_activerP  )rß   r:  rÖ   r   rZ  rþ  r¸   rß  r÷   Úrot_matrE   Úfill_colr_  r®   r_  Ú
border_colr—  r   Úold_namerå  r
  r  rÖ  ra  rÝ  r7  r   Úonstater–  s    `                           r)   ÚJM_set_widget_propertiesr  ‹U  sœ	  ø€ õ
 �5�%Ñ Ô ð Ø”
ˆÝ�u�eœnÑ-Ô-ÐHÐHÐ/Hµ$°u±+´+Ð/HÐ/HÅÐ/HÐ/HÑHÔHÐ-Ý˜5Ñ!Ô!€DØŒ?Ð:Ð:Ð:Ñ:Ô:ˆ?ÝÔ# EÑ*Ô*€IØ
�(Š(‰*Œ*€Cð+ð +ð +ð +ð +ð ˆG�LÑ!Ô!€EØ€Jð ˆG�F‰OŒO€EÝ˜5Ñ!Ô!€DÝ# DÑ)Ô)€GÝÔ" 4¨Ñ1Ô1€DÝ	Ô˜U DÑ)Ô)Ð)ð ˆG�LÑ!Ô!€EØð <Õ! %Ñ(Ô(ð <Ý�‰JŒJˆÝÔ& s¨AÑ.Ô.ˆØˆÝ�q‘”ð 	5ð 	5ˆAØ˜”(ˆCÝÔ% h°Ñ4Ô4Ð4Ð4ÝÔ& y°(Ñ;Ô;Ð;ð ˆG�OÑ$Ô$€EØð NÕ! %Ñ(Ô(ð NÝ�‰JŒJˆÝÔ$ S¨!Ñ,Ô,ˆÝ�q‘”ð 	7ð 	7ˆAÝÔ$ V¨U°1¬XÑ6Ô6Ð6Ð6ÝÔ˜I v­x¸©~¬~½xÈ¹}¼}ÑMÔMÐMð ˆG�NÑ#Ô#€EØð SÕ! %Ñ(Ô(ð SÝ�‰JŒJˆÝÔ(¨¨aÑ0Ô0ˆ
ØˆÝ�q‘”ð 	7ð 	7ˆAØ˜”(ˆCÝÔ% j°#Ñ6Ô6Ð6Ð6ÝÔ˜I zµ8¸D±>´>Å8ÈDÁ>Ä>ÑRÔRÐRð ˆG�MÑ"Ô"€EØÐÝ˜UÑ#Ô#ˆÝÔ& yµ(¸4±.´.À%ÑHÔHÐHð ˆG�LÑ!Ô!€EØÐÝ˜EÑ"Ô"ˆÝÔ,¨YÑ7Ô7ˆØ�8ÒÐÝÔ*¨9µh¸s±m´mÀTÑJÔJÐJð •UÔ/Ò/Ð/Ø�˜Ñ&Ô&ˆØˆØð 	OÝÔ" 9­h°xÑ.@Ô.@À+ÑNÔNÐNØˆG�OÑ$Ô$€EØ€AÝ	Ô 	¨1Ñ-Ô-Ð-ð •eÔ3µUÔ5SÐTÐTÐTØ�˜Ñ(Ô(ˆÝ˜e UÑ+Ô+Ð+ð ˆG�NÑ#Ô#€EÝ
˜eÑ
$Ô
$€CÝ	Ô˜	 3­°©¬½À¹¼ÑFÔFÐFð ˆG�NÑ#Ô#€EØ€LÝ	ÔØÝÔ˜|Ñ,Ô,Ý�T‰NŒNÝ�S‰MŒMñ	ô ð ð ˆG�JÑÔ€EÝ	�eÑ	Ô	€BÝ	Ô" 9­h°t©n¬n¸bÑAÔAÐAÝ	Ô�y¥(¨4¡.¤.Ñ1Ô1Ð1Ý	Ô�y¥(¨4¡.¤.Ñ1Ô1Ð1ð �'˜-Ñ(Ô(€KØÐØ�Ô7Ò7Ð7Ø�5Ô6Ñ6ˆKˆKØ�5Ô<Ò<Ð<Ø�5Ô7Ñ7ˆKˆKØ�5Ô7Ò7Ð7Ø�5Ô<Ñ<ˆKÝÔ 	­8°D©>¬>¸;ÑGÔGÐGð ˆGÐ$Ñ%Ô%€EÝ	�eÑ	Ô	€BØ	ð :ÝÔ*¨9°bÑ9Ô9Ð9ð ˆG�HÑÔ€EÝ�)�X c™]œ]­E¬L©N¬N¸EÑBÔBÐBð ˆG�OÑ$Ô$€EÝ�)�X d™^œ^­X°c©]¬]¸EÑBÔBÐBð ˆG�OÑ$Ô$€EÝ�)�X d™^œ^­X°c©]¬]¸EÑBÔBÐBð ˆG�OÑ$Ô$€EÝ�)�X d™^œ^­X°c©]¬]¸EÑBÔBÐBð ˆG�MÑ"Ô"€EÝ�)�X d™^œ^­X°c©]¬]¸EÑBÔBÐBð ˆG�MÑ"Ô"€EÝ�)�X d™^œ^­UÔ-?ÀÑ-EÔ-EÀuÑMÔMÐMð ˆG�NÑ#Ô#€EÝ�)�X d™^œ^­UÔ-?ÀÑ-EÔ-EÀuÑMÔMÐMð ˆG�MÑ"Ô"€EÝ˜ÑÔ€DØ•UÔ6Ò6Ð6Øð 	IÝÔ% c¨9°e¸QÑ?Ô?Ð?ÝÔ# I­x¸©~¬~¸uÑEÔEÐEÑEõ Ô5°iÑ@Ô@ˆGØÔ!ð IÝÔ& wÑ/Ô/�ÝÔ)¨#¨y¸"¸aÑ@Ô@Ð@ÝÔ'¨	µ8¸D±>´>À2ÑFÔFÐFÑFØð IÝÔ'¨	µ8¸D±>´>À4ÑHÔHÐHùØ	•uÔ5Ò	5Ð	5ÝÔ1°)Ñ<Ô<ˆØ× Ò Ñ"Ô"ˆØ�T˜2�JÐÐ $¨%¢- -ÝÔ% c¨9°b¸!Ñ<Ô<Ð<ÝÔ# I­x¸©~¬~¸rÑBÔBÐBÝÔ# I­x¸©}¬}¸bÑAÔAÐAÐAåÔ# Yµ¸±´ÀÑFÔFÐFÝÔ# Yµ¸±´¸uÑEÔEÐEÐEàð 	=ÝÔ% c¨9°d¸AÑ>Ô>Ð>Ø�eÔ<½eÔ>[Ð\Ð\Ð\ÝÔ" 9­h°s©m¬mÑ<Ô<Ð<Ý	Ô˜%Ñ Ô Ð Ý	Ô˜E 1Ñ%Ô%Ð%Ý	Ô˜u aÑ(Ô(Ð(Ý	Ô˜5Ñ!Ô!Ð!Ð!Ð!r*   c                óÚ  — d}|t          |¦  «        k     rÕt          j        ||d …         ¦  «        \  }	}
||	z  }t          j        ||
¦  «        }|dk    rt          j        ||
d|¦  «        \  }}n|}t          j        | ||||
||||¦	  «	         t          j        |||¦  «        }|dk    rt          j        ||d¦  «        }nt          j        |d| ¦  «        }|t          |¦  «        k     °Õ|S r‡   )r7   r�   Úfz_chartorunerÆ
  rÇ
  Úfz_show_glyphr$  Úfz_pre_translate)r   Ú	user_fontrµ  rr  rÈ
  Ú
bidi_levelr¶  r+  r®   r  r  rÊ
  rW  r(  s                 r)   r³  r³  MV  sþ   € ð 	
€AØ
�c�!‰fŒfŠ*ˆ*ÝÔ$ Q q r r¤UÑ+Ô+‰ˆˆ3Ø	ˆQ‰ˆÝÔ*¨9°cÑ:Ô:ˆØ�!Š8ˆ8ÝÔ?À	È3ÐPQÐS[Ñ\Ô\‰IˆC��àˆDÝÔ˜D $¨¨S°#°u¸jÈ*ÐV^Ñ_Ô_Ð_ÝÔ$ T¨3°Ñ6Ô6ˆØ�AŠ:ˆ:ÝÔ(¨¨c°1Ñ5Ô5ˆCˆCåÔ(¨¨a°#°Ñ6Ô6ˆCð �c�!‰fŒfŠ*ˆ*ð €Jr*   c                ó¾   — t          j        | ¦  «        }|                     d¬¦  «        }|                     t	          d¦  «        ¦  «        }|dk    r
|d |…         }|S )Nrà  r)  r   )r�   rÃ
  rò  r¡   r
  )rN  Ú
buff_bytesr  r  s       r)   rº  rº  iV  sZ   € ÝÔ-¨dÑ3Ô3€JØ
×
Ò
 9Ð
Ñ
-Ô
-€CØ�Š•�Q‘”ÑÔ€AØˆA‚v€vØ�"�1�"ŒgˆØ€Jr*   c                ó*   — t          d| › �¦  «         dS )z
    Generate a warning.
    z	warning: Nrú  rq   s    r)   r   r   rV  s!   € õ Ð˜ÐÐÑÔÐÐÐr*   c                ó–  — |r¯t          j        |¦  «        \  }}|dk    r’t          |¦  «        }t          |t           j        ¦  «        sJ ‚|j        r`t          j        |¦  «        \  }}||k     rCt          j        |t           j        t           j        ¦  «         t          j	        | ||d¦  «         dS t          j	        | ||d¦  «         dS )zD
    update a stream object
    compress stream when beneficial
    é   r   Nr   )
r�   r  r  r>   rr  rÌ   rN  ÚPDF_ENUM_NAME_FilterÚPDF_ENUM_NAME_FlateDecodeÚpdf_update_stream)r*  r  r-  rN
  r·  r  Úbuffer_compressedÚlength_compresseds           r)   r)  r)  yV  sÝ   € ð
 ð ÝÔ+¨GÑ4Ô4‰	ˆ�Ø�BŠ;ˆ;Ý 2°7Ñ ;Ô ;ÐÝÐ/µ´Ñ@Ô@Ð@Ð@Ð@Ø Ô+ð 	Ý',Ô'>Ð?PÑ'QÔ'QÑ$Ð! 1Ø$ vÒ-Ð-ÝÔ&ØÝ!Ô6Ý!Ô;ñô ð õ
 Ô+¨C°Ð6GÈÑKÔKÐKØ�Få	Ô˜C  g¨qÑ1Ô1Ð1Ð1Ð1r*   c                ó  — t          |t          j        ¦  «        sJ dt          |¦  «        ›�¦   «         ‚|dk    rt          j        | |d¦  «        }�n/t          |j        ¦  «        }|                     ¦   «         }t          j        t          j	        |t          d¦  «        ¦  «        ¦  «        }t          j	        |t          d¦  «        ¦  «        }|j        rt          j        ||¦  «        }	nt          j        | |¦  «        }	t          |¦  «        }
t          j        | |t          j        ¦   «         t          j        d¦  «        |
¦  «        }t%          | ||
d¦  «         t          j        |t          d¦  «        |	¦  «         |S )zl
    Make an XObject from a PDF page
    For a positive xref assume that its object can be used instead
    ztype(gmap)=r   r*  r5  r   )r>   r�   ÚPdfGraftMaprÈ   r‰  rÚ   rÄ   r  r$  rF  r  rÌ   rÉ  Úpdf_graft_objectr3  r@  rr  r5  r)  rN  )ræ  Úfsrcpager  rB  rD  ÚsrcpageÚspagerefrv  r¡  ra  r  s              r)   r?  r?  ‘V  sR  € õ
 �d�EÔ-Ñ.Ô.Ð@Ð@Ð0@µ4¸±:´:Ð0@Ð0@Ñ@Ô@Ð.Øˆa‚x€xÝÔ& v¨t°QÑ7Ô7ˆ‰å˜xœ}Ñ-Ô-ˆØ—;’;‘=”=ˆÝÔ$¥UÔ%CÀHÍhÐWaÑNbÔNbÑ%cÔ%cÑdÔdˆåÔ*¨8µX¸kÑ5JÔ5JÑKÔKˆØŒ?ð 	:åÔ5°d¸AÑ>Ô>ˆIˆIåÔ.¨v°qÑ9Ô9ˆIõ ˜xÑ(Ô(ˆõ
 Ô% f¨h½¼Ñ8HÔ8HÍ%Ì,ÐWXÉ/Ì/Ð[^Ñ_Ô_ˆå˜ ¨¨QÑ/Ô/Ð/õ 	Ô˜5¥(¨;Ñ"7Ô"7¸ÑCÔCÐCØ€Lr*   c                ó:   — t          | t          t          f¦  «        S r,   )r>   rµ   r´   rœ  s    r)   r|  r|  ´V  s   € Ý�a�%¥˜Ñ'Ô'Ð'r*   c                ó    — t          | ¦  «        S r,   )r7   rœ  s    r)   r~  r~  ¸V  s   € Ýˆq‰6Œ6€Mr*   zbad annot typezbad or missing annot AP/Nz%arg must be seq of seq of float pairszbad seq of pointszbad type: 'buffer'zbad color sequencerþ  zbad filetypezbad locationzbad config numberzbad layer numberzbad 'oc' referencezbad page idrÚ  zPDF has no rootzrect is infinite or emptyzbad type: 'text'ru  zcolor count failedzneed font file or bufferzcannot create fontzis no annotationzis no imagerÙ  zobject is no PDF dictzsource pixmap has no alphazpixel(s) outside imagerÃ   c                ó    — t          | ¦  «        ‚r,   )rg   )r˜   Úexcs     r)   r°  r°  ÞV  s   € õ �S‰/Œ/Ðr*   Ústrictc                óÔ   — | sdS t          | t          ¦  «        r|                      d|¬¦  «        }nt          | t          ¦  «        r
| d d …         }|                     d|¬¦  «        }|S )Nr\   r
  r)  Úraw_unicode_escape)r>   rÑ  rÈ  r  rò  )rr  r*  r    rG   s       r)   rƒ  rƒ  äV  sr   € àð ØˆrÝ�!•SÑÔð Ø�XŠX�f VˆXÑ,Ô,ˆˆÝ	�A•uÑ	Ô	ð ØˆqˆqˆqŒTˆØ
�)Š)Ð(°ˆ)Ñ
8Ô
8€CØ€Jr*   rÀ  c                óÔ   — | rct          | ¦  «        t          t          fvs7t          | ¦  «        dvs&t	          | ¦  «        dk     st          | ¦  «        dk    rt          d¦  «        ‚d S d S )Nrk  r   r   z/need 1, 3 or 4 color components in range 0 to 1)rÈ   r´   rµ   r7   rÜ  rê  rÃ   ©r¼  s    r)   rp  rp  ðV  sq   € Øð På�‰GŒG�D¥%˜=Ð(Ð(Ý�1‰vŒv˜YÐ&Ð&Ý�1‰vŒv˜ŠzˆzÝ�1‰vŒv˜ŠzˆzåÐNÑOÔOÐOðPð Pð
 ˆzr*   rÖ   rù   rÑ  c                óT   — |                       ¦   «         D ]}|d         |k    r|c S ŒdS )zGReturn an entry in the page's font list if reference name matches.
    rK  N)r‹  )rÖ   rù   rÎ  s      r)   r¾  r¾  ûV  sD   € ð �^Š^ÑÔð ð ˆØˆQŒ4�8ÒÐØˆHˆHˆHð ðð r*   r´   c                ó:   — | j         D ]}||d         k    r|c S ŒdS )z3Return a font info if present in the document.
    r   N)r  )r*  r  rÎ  s      r)   rN  rN  W  s:   € ð Œ]ð ð ˆØ�1�Q”4Š<ˆ<ØˆHˆHˆHð ðð r*   rk	  r¤  c                óÚ   — t          | ¦  «        rt          | ¦  «        }|j        fS t          | ¦  «        r| fS | D ]/}t          |¦  «        st          |¦  «        st	          d¦  «        ‚Œ0| S )Nzbad quads entry)r†  r$  r  r‡  rÃ   )rk	  r  r’  s      r)   r\  r\  W  s}   € Ý�ÑÔð Ý�‰KŒKˆØ”ˆyÐÝ�ÑÔð ØˆxˆØð 0ð 0ˆÝ˜!‘”ð 	0¥	¨!¡¤ð 	0ÝÐ.Ñ/Ô/Ð/øØ€Lr*   rç   c                ó”  — t          | ¦  «        sdS t          | ¦  «        t          t          fv rt	          | ¦  «        dk    st          d¦  «        ‚t	          | d         ¦  «        dk    rt	          | d         ¦  «        dk    st          d¦  «        ‚| d         d         | d         d	         cxk    rdk    sn t          d
¦  «        ‚dS )NFr   z$morph must be a sequence of length 2r   r   rô  zinvalid morph param 0rK  r   zinvalid morph param 1T)rç   rÈ   r´   rµ   r7   rÃ   r–  s    r)   ro  ro  W  s¾   € Ý�‰7Œ7ð ØˆuÝ�‰GŒG��e�}Ð$Ð$­¨Q©¬°1ª¨ÝÐ?Ñ@Ô@Ð@Ý��!”‰IŒI˜ŠNˆN�s 1 Q¤4™yœy¨Aš~˜~ÝÐ0Ñ1Ô1Ð1ØˆQŒ4�Œ7�a˜”d˜1”gÐ"Ð"Ò"Ð" Ò"Ð"Ð"Ð"ÝÐ0Ñ1Ô1Ð1Øˆ4r*   c                ó   — d S r,   )r;   rê   rÃ   rÈ   r–  s    r)   rf  rf  #W  s   € Ø
€Fr*   r’  c                ó†   — 	 t          | ¦  «        }n*# t          $ r t          dk    rt          ¦   «          Y dS w xY w|j        S )zkCheck whether an object is convex, not empty  quad-like.

    It must be a sequence of 4 number pairs.
    r   F)rû  rg   r
  rv   r9  )r’  Úq0s     r)   r‡  r‡  )W  sV   € ð
Ý�!‰WŒWˆˆøÝð ð ð Ý !Ò#Ð#­Ñ(8Ô(8Ð(8Øˆuˆuðøøøð Œ<Ðó   ‚ ’#9¸9r  c                ó–   — 	 t          | ¦  «        } n*# t          $ r t          dk    rt          ¦   «          Y dS w xY w| j        p| j         S )zbCheck whether an object is non-degenerate rect-like.

    It must be a sequence of 4 numbers.
    r   F)r$  rg   r
  rv   rY	  rZ	  r  s    r)   r†  r†  6W  s`   € ð
Ý�‰GŒGˆˆøÝð ð ð Ý !Ò#Ð#­Ñ(8Ô(8Ð(8Øˆuˆuðøøøð ”
Ð+˜aœmÐ,Ð,r4  ú&typing.Union[list, tuple, float, None]rÎ  c                ó¦  — | sdS t          | d¦  «        r| f} t          | ¦  «         t          | ¦  «        dk    r(t          | d         ¦  «        dz   }|dk    r|dz   n|dz   S t          | ¦  «        d	k    r/t          t	          | ¦  «        ¦  «        dz   }|dk    r|d
z   n|dz   S t          t	          | ¦  «        ¦  «        dz   }|dk    r|dz   n|dz   S )Nr\   rj  r   r   r³   r¼  zG zg r   zRG zrg zK zk )r;   rp  r7   r¶   rµ   )r¼  rÎ  rr  s      r)   rÇ  rÇ  CW  sã   € Øð ØˆrÝˆq�+ÑÔð ØˆDˆÝˆq�M„M€MÝ
ˆ1�v„v�‚{€{Ý�a˜”d‰OŒO˜cÑ!ˆØ š8˜8ˆq�4‰xˆx¨¨T©Ð1å
ˆ1�v„v�‚{€{Ý•e˜A‘h”hÑÔ #Ñ%ˆØ šH˜Hˆq�5‰yˆy¨!¨e©)Ð3å•%˜‘(”(ÑÔ˜cÑ!€AØ˜C’x�xˆ1ˆt‰8ˆ8 Q¨¡XÐ-r*   c                ó(  ‡‡— |                       ¦   «         Št          ‰¦  «        Šˆˆfd„}	 ‰dk    r5t          j        ‰                     ¦   «         t          d¦  «        d¦  «         t          j        ‰|¦  «        }|D ]&}t          |¦  «        }t          j        ||¦  «         Œ't          j	        |¦  «         t          |d¦  «          |¦   «          n0# t          $ r# t          rt          ¦   «           |¦   «          Y d S w xY wt          |¦  «        S )Nc                 ó‚   •— ‰dk    r7t          j        ‰                      ¦   «         t          d¦  «        ‰¦  «         d S d S )Nr   r4  )r�   rI  r  r  )r«  rP  s   €€r)   rÎ  z$Page__add_text_marker.<locals>.finalXW  s>   ø€ Ø�qŠ=ˆ=ÝÔ" 7§;¢;¡=¤=µ(¸8Ñ2DÔ2DÀhÑOÔOÐOÐOÐOð ˆ=r*   r   r4  r  )ra  r  r�   rI  r  r  rb  rŽ  Úpdf_add_annot_quad_pointrP  rd  rg   r
  rv   râ   )	r(   rk	  rò  rÎ  rß   rC   r’  r«  rP  s	          @@r)   r±  r±  UW  s5  øø€ Ø�nŠnÑÔ€GÝ Ñ(Ô(€HðPð Pð Pð Pð Pð PðØ�qŠ=ˆ=ÝÔ" 7§;¢;¡=¤=µ(¸8Ñ2DÔ2DÀaÑHÔHÐHÝÔ& w°
Ñ;Ô;ˆØð 	5ð 	5ˆDÝ Ñ%Ô%ˆAÝÔ*¨5°!Ñ4Ô4Ð4Ð4ÝÔ˜uÑ%Ô%Ð%Ý˜˜sÑ#Ô#Ð#Øˆ‰ŒˆˆøÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øˆ‰ŒˆØˆˆðøøøõ �‰<Œ<Ðs   ­B'C Ã)DÄDc                ód   — t          | t          ¦  «        sJ ‚t          t          d| › �¦  «        }|S )Nr!  )r>   rÑ  rì   r�   )r(  rG   s     r)   r  r  lW  s7   € Ý�a�ÑÔÐÐÐÝ
•%Ð-¨!Ð-Ð-Ñ
.Ô
.€Cð €Jr*   r  c                ó¾   — |d         }d}t          | j        ¦  «        D ]\  }}|d         |k    rd} nŒ|r|| j        |<   d S | j                             |¦  «         d S )Nr   FT)ró  r  rk   )r*  r  r  r   r®   Úfis         r)   rR  rR  zW  s�   € Ø�Œ7€DØ€EÝ˜3œ=Ñ)Ô)ð ð ‰ˆˆ2ØˆaŒ5�DŠ=ˆ=ØˆEØˆEð ð ð #ØˆŒ�aÑÐÐàŒ×Ò˜TÑ"Ô"Ð"Ð"Ð"r*   c                ó"  — d}t          t          |¦  «        ¦  «        D ]Z}||         }|t          | ¦  «        k    rt          |t          ¦  «        rd|v rŒ7 dS |�t          | |         |¦  «        s dS |dz  }Œ[|t          | ¦  «        k    rdS dS )zý
    Returns true if <args> matches <types>.

    Each item in <types> is a type or tuple of types. Any of these types will
    match an item in <args>. `None` will match anything in <args>. `type(None)`
    will match an arg whose value is `None`.
    r   NFr   T)rL  r7   r>   rµ   )r÷  rŠ  r�  r®   r[  s        r)   r­  r­  ‡W  s¦   € ð 	
€AÝ•3�u‘:”:ÑÔð 
ð 
ˆØ�a”ˆØ•�D‘	”	Š>ˆ>Ý˜%¥Ñ'Ô'ð ¨D°E¨M¨Màà�u�uØÐ¥Z°°Q´¸Ñ%?Ô%?ÐØ�5�5Ø	ˆQ‰ˆˆØ�C�‰IŒI‚~€~ØˆuØˆ4r*   c                ó   — t          |¦  «        }t          j        |¦  «        }|j        |j        z
  }|j        |j        z
  }|}	|}
|rt          | |¦  «        }| |z  }||z  }ndx}}t          ||¦  «        }|dk    r|dk    r|}|}|}|dk     r||z  ||z  k    r||z  }	|}
n.|}	||z  }
n&||k    r||z  ||z  k    r||z  }	|}
n|}	||z  }
n|}	|}
t          j	        |j        |j        z   dz  |j        |j        z   dz  ¦  «        }t          j
        dddddd¦  «        }t          j        ||¦  «        }t          j        |t          j        |	|
¦  «        ¦  «        }t          j        |t          j        |j        |j        ¦  «        ¦  «        }|S )z*
    # compute image insertion matrix
    r   r   r¿  r   g      à¿)r   r�   Ú	fz_rotater	  r
  r  r  rê  rÜ  r  r±  r%  Úfz_scaleÚfz_translater(  r)  )r]  rÕ  r4  rY  rZ
  r¤  rS  ÚtrwÚtrhr   rÆ  Úlarger8  r9  ÚsmallrÎ  r6  rv  s                     r)   rø  rø   W  sÎ  € õ ˜BÑÔ€EÝ
Œ/˜&Ñ
!Ô
!€CØ
Œ(�U”XÑ
€CØ
Œ(�U”XÑ
€CØ€AØ€AØð Ý�E˜6Ñ"Ô"ˆØ�U‰]ˆØ�e‰^ˆˆàˆˆˆRÝ��B‰KŒK€EØ�‚{€{�v ’}�}ØˆØˆØˆØ	ˆA‚v€vØ�‰8�c˜B‘hÒÐØ�e‘ˆAØˆAˆAàˆAØ�e‘ˆAˆAØ	ˆrŠˆØ�‰8�c˜B‘hÒÐØ�e‘ˆAØˆAˆAàˆAØ�e‘ˆAˆAàˆØˆÝ
Ô
ØŒX˜œÑ  AÑ%ØŒX˜œÑ  AÑ%ñô €Cõ Ô
˜q ! Q¨¨4°Ñ
6Ô
6€CÝ
Œ/˜#˜sÑ
#Ô
#€CÝ
Œ/˜#�uœ~¨a°Ñ3Ô3Ñ
4Ô
4€CÝ
Œ/˜#�uÔ1°#´%¸¼Ñ?Ô?Ñ
@Ô
@€CØ€Jr*   c                óì   — | j         j        dk    rc| j         j        j        dk    rN| j         j        j        dk    r9|j         j        j        | j         j        j        j        |j         j        dz  z
  k     S dS )Nr   r   çš™™™™™¹?)rÌ   rÈ
  rh  r(  r)  r  Ú
first_charr¸  )ro   rú  s     r)   rÕ  rÕ  ÑW  sj   € Ø„Ô Ò!Ð! d¤oÔ&9Ô&;¸qÒ&@Ð&@ÀTÄ_ÔEXÔEZÐ^_ÒE_ÐE_ØŒ}Ô#Ô%¨¬Ô(BÔ(IÔ(KÈbÌmÔN`ÐcfÑNfÑ(fÒfÐfØˆ1r*   c           	     ó    — | › dt          | ¦  «        › dt          t          | ¦  «        ¦  «        › d�}t          | ¦  «        D ]}|d|› d�z  }Œ|S )Nr³   ú (z):
ra  r%   )rÈ   r7   rh  )r(  rG   r®   s      r)   Údir_strrL  ×W  s`   € ØÐ
-Ð
-•�a‘”Ð
-Ð
-�C¥ A¡¤™KœKÐ
-Ð
-Ð
-€CÝ�‰VŒVð ð ˆØˆ|�aˆ|ˆ|ˆ|ÑˆˆØ€Jr*   rM  útyping.Union[list, tuple, None]r?  r  c                ó¶  ‡— |                       d¦  «        r|                      d¦  «        r| S t          | ¦  «        sdS |rK‰€ d                     d„ | D ¦   «         ¦  «        }n!d                     ˆfd„| D ¦   «         ¦  «        }d|z   dz   S |dk     r"d                     ˆfd	„| D ¦   «         ¦  «        }nd                     d
„ | D ¦   «         ¦  «        }d|z   dz   S )aý   Return a PDF string enclosed in [] brackets, suitable for the PDF TJ
    operator.

    Notes:
        The input string is converted to either 2 or 4 hex digits per character.
    Args:
        simple: no glyphs: 2-chars, use char codes as the glyph
                glyphs: 2-chars, use glyphs instead of char codes (Symbol,
                ZapfDingbats)
        not simple: ordering < 0: 4-chars, use glyphs not char codes
                    ordering >=0: a CJK font! 4 chars, use char codes as glyphs
    z[<z>]z[<>]Nr\   c                óZ   — g | ](}t          |¦  «        d k     rt          |¦  «        d›nd‘Œ)S )r  Ú02xÚb7rX  rG  s     r)   r¯   zgetTJstr.<locals>.<listcomp>óW  s4   € ÐTÐTÐTÈ!­s°1©v¬v¸ª|¨|�s 1™vœv˜O˜O˜OÀÐTÐTÐTr*   c                ót   •— g | ]4}t          |¦  «        d k     r‰t          |¦  «                 d         d›nd‘Œ5S )r  r   rP  rQ  rX  r†  s     €r)   r¯   zgetTJstr.<locals>.<listcomp>öW  sA   ø€ ÐTÐTÐTÈ!­s°1©v¬v¸ª|¨|�F�3˜q™6œ6”N 1Ô%Ð+Ð+Ð+ÀÐTÐTÐTr*   r   c                óJ   •— g | ]}‰t          |¦  «                 d          d›‘Œ S )r   r
  rX  r†  s     €r)   r¯   zgetTJstr.<locals>.<listcomp>üW  s.   ø€ ÐAÐAÐA°q˜6¥# a¡&¤&œ>¨!Ô,Ð2Ð2ÐAÐAÐAr*   c                ó0   — g | ]}t          |¦  «        d ›‘ŒS )r
  rX  rG  s     r)   r¯   zgetTJstr.<locals>.<listcomp>þW  s"   € Ð6Ð6Ð6¨A�3˜q™6œ6˜˜Ð6Ð6Ð6r*   )r3   rß  rç   rÜ  )r   rM  r?  r  Úotxts    `   r)   rn  rn  ÞW  s  ø€ ð ‡‚�tÑÔð  §¢¨tÑ!4Ô!4ð Øˆå�‰:Œ:ð Øˆvàð "Øˆ>Ø—7’7ÐTÐTÈtÐTÑTÔTÑUÔUˆDˆDà—7’7ØTÐTÐTÐTÈtÐTÑTÔTñô ˆDð �d‰{˜TÑ!Ð!ð �!‚|€|Ø�wŠwÐAÐAÐAÐA¸DÐAÑAÔAÑBÔBˆˆà�wŠwÐ6Ð6°Ð6Ñ6Ô6Ñ7Ô7ˆà�$‰;˜ÑÐr*   rr  c                ód  — t          | ¦  «        sdS d„ }d}| D ]�}t          |¦  «        }|dk    r || ¦  «        c S |dk    r|dk     r|dv r|dz  }||z  }Œ?|dk    r
|d|d	›�z  }ŒO|d
k    r|dz  }Œ[|dk    r|dz  }Œg|dk    r|dz  }Œs|dk    r|dz  }Œ|dk    r|dz  }Œ‹|dz  }Œ‘d|z   dz   S )až   Return a PDF string depending on its coding.

    Notes:
        Returns a string bracketed with either "()" or "<>" for hex values.
        If only ascii then "(original)" is returned, else if only 8 bit chars
        then "(original)" with interspersed octal strings 
nn is returned,
        else a string "<FEFF[hexstring]>" is returned, where [hexstring] is the
        UTF-16BE encoding of the original.
    z()c                óz   — t          ddg¦  «        t          | d¦  «        z   }d|                     ¦   «         z   dz   S )Nr7  r
  zUTF-16BEú<r[  )r]  Úhex)rr  r  s     r)   Úmake_utf16bez!get_pdf_str.<locals>.make_utf16beX  s9   € Ý�s˜C�jÑ!Ô!¥I¨a°Ñ$<Ô$<Ñ<ˆØ�Q—U’U‘W”W‰}˜sÑ"Ð"r*   r\   r
  é   rÄ  )r—  r˜  r¨
  r¨
  Ú03or   z\brê  z\tr=  r  rÍ  z\fr>  z\rz\267r—  r˜  )rç   rÅ
  )rr  rZ  r  r¼  rÅ  s        r)   rf  rf  X  s3  € õ �‰7Œ7ð Øˆtð#ð #ð #ð 	€AØð ð ˆÝ�‰VŒVˆØ�Š8ˆ8Ø�< ‘?”?Ð"Ð"Ð"à�Š7ˆ7�r˜C’x�xØÐ$Ð$Ð$Ø�T‘	�Ø�‰FˆAØà�Š8ˆ8Ø��b���ÑˆAØð �Š7ˆ7Ø�‰JˆAˆAØ�1ŠWˆWØ�‰JˆAˆAØ�2ŠXˆXØ�‰JˆAˆAØ�2ŠXˆXØ�‰JˆAˆAØ�2ŠXˆXØ�‰JˆAˆAà�‰LˆAˆAà�‰7�S‰=Ðr*   c                óŠ  — | r| S t          j        d¦  «        } | r| S ddl}|                     ddddd¬¦  «        }|j        dk    r3t          j        d|j        ¦  «        }|r|                     d¦  «        } | S t          j
        d	k    r¾|                     d
dddd¬¦  «        }|j                             ¦   «         }|j        s|st          d¦  «        ‚t           j                             |¦  «        }t           j                             |d¦  «        } t           j                             | ¦  «        r| S t          d| › d�¦  «        ‚t#          ¦   «         }dD ]¾}|                     d|› �dddd¬¦  «        }|j        dk    r”|j                             ¦   «                              ¦   «         }t'          |¦  «        dk    rV|d         }|› d�}|                     |¦  «         t+          j        |¦  «        }	|	                     ¦   «          |	r
|	d         c S Œ¿|rd}
|D ]
}|
d|› �z  }
Œt          |
¦  «        ‚t          d¦  «        ‚)aã  Detect Tesseract language support folder.

    This function is used to enable OCR via Tesseract even if the language
    support folder is not specified directly or in environment variable
    TESSDATA_PREFIX.

    * If <tessdata> is set we return it directly.
    
    * Otherwise we return `os.environ['TESSDATA_PREFIX']` if set.
    
    * Otherwise we search for a Tesseract installation and return its language
      support folder.

    * Otherwise we raise an exception.
    ÚTESSDATA_PREFIXr   Nztesseract --list-langsr   T)ÚshellÚcapture_outputrÐ  r   z%List of available languages in "(.+)"Úwin32zwhere tesseractz4No tessdata specified and Tesseract is not installedrÞ  z8No tessdata specified and Tesseract installation has no z folder)ztesseract-ocrÚ	tesseractzwhereis r   z/*/tessdatar1  z(No tessdata specified and no match for:
ra  )rd   r”   Ú
subprocessrÌ  Ú
returncoderÆ  r  ÚstdoutrÇ  r�
  Úplatformr  rÞ   r
   ÚdirnamerÜ  r  r´   r6   r7   rk   ÚglobrÙ  )rÞ  rc  Úcpr€  r£  rg  Úattemptsr
   ÚpatternÚ	tessdatasr   Úattempts               r)   rØ  rØ  8X  s�  € ð  ð ØˆÝŒyÐ*Ñ+Ô+€HØð Øˆð ÐÐÐà	�ŠÐ0¸È!ÐSTÐ[_ˆÑ	`Ô	`€BØ	„}˜ÒÐÝŒIÐ=¸r¼yÑIÔIˆØð 	Ø—w’w˜q‘z”zˆHØˆOõ „|�wÒÐØ�^Š^Ð-°QÀqÐPQÐX\ˆ^Ñ]Ô]ˆØ”9—?’?Ñ$Ô$ˆØŒ=ð 	W ð 	WÝÐUÑVÔVÐVÝ”'—/’/ (Ñ+Ô+ˆÝ”7—<’< ¨Ñ4Ô4ˆÝŒ7�>Š>˜(Ñ#Ô#ð 	mØˆOåÐkÐZbÐkÐkÐkÑlÔlÐlõ ‰vŒv€HØ,ð )ð )ˆØ�^Š^Ð- tÐ-Ð-°QÀqÐPQÐX\ˆ^Ñ]Ô]ˆØŒ=˜AÒÐØ”y—’Ñ(Ô(×.Ò.Ñ0Ô0ˆHÝ�8‰}Œ} Ò!Ð!à" 1œ+�Ø$Ð1Ð1Ð1�Ø—’ Ñ(Ô(Ð(Ý œI gÑ.Ô.�	Ø—’Ñ Ô Ð Øð )Ø$ Rœ=Ð(Ð(Ð(øØð SØ:ˆØð 	%ð 	%ˆGØÐ$˜7Ð$Ð$Ñ$ˆDˆDÝ˜4Ñ Ô Ð åÐQÑRÔRÐRr*   )ÚCSSr$  r   Úfontcodern  r¾  r$  ÚAnyTypec               óæ  ‡ — d}t          |¦  «        t          urt          d¦  «        ‚|€d}ˆ fd„t                               ¦   «         D ¦   «         }|g k    rt          d‰ › d�¦  «        ‚t          |¦  «        dk    rt          d	¦  «        ‚|€‰ }|D ]]}t          |         }|d
         }|d         }	 |d         ¦   «         }
|                     |
|¦  «         |rdnd}|	rdnd}||||||fz  z  }Œ^|S )a  Create @font-face items for the given fontcode of pymupdf-fonts.

    Adds @font-face support for fonts contained in package pymupdf-fonts.

    Creates a CSS font-family for all fonts starting with string 'fontcode'.

    Note:
        The font naming convention in package pymupdf-fonts is "fontcode<sf>",
        where the suffix "sf" is either empty or one of "it", "bo" or "bi".
        These suffixes thus represent the regular, italic, bold or bold-italic
        variants of a font. For example, font code "notos" refers to fonts
        "notos" - "Noto Sans Regular"
        "notosit" - "Noto Sans Italic"
        "notosbo" - "Noto Sans Bold"
        "notosbi" - "Noto Sans Bold Italic"

        This function creates four CSS @font-face definitions and collectively
        assigns the font-family name "notos" to them (or the "name" value).

    All fitting font buffers of the pymupdf-fonts package are placed / added
    to the archive provided as parameter.
    To use the font in pymupdf.Story, execute 'set_font(fontcode)'. The correct
    font weight (bold) or style (italic) will automatically be selected.
    Expects and returns the CSS source, with the new CSS definitions appended.

    Args:
        fontcode: (str) font code for naming the font variants to include.
                  E.g. "fig" adds notos, notosi, notosb, notosbi fonts.
                  A maximum of 4 font variants is accepted.
        CSS: (str) CSS string to add @font-face definitions to.
        archive: (Archive, mandatory) where to place the font buffers.
        name: (str) use this as family-name instead of 'fontcode'.
    Returns:
        Modified CSS, with appended @font-face statements for each font variant
        of fontcode.
        Fontbuffers associated with "fontcode" will be added to 'archive'.
    z1
@font-face {font-family: %s; src: url(%s);%s%s}
z'archive' must be an ArchiveNr\   c                ó>   •— g | ]}|                      ‰¦  «        ¯|‘ŒS r-   r:  )r­   rŸ  ro  s     €r)   r¯   z(css_for_pymupdf_font.<locals>.<listcomp>¯X  s*   ø€ ÐRÐRÐR�q¸1¿<º<ÈÑ;QÔ;QÐR�ÐRÐRÐRr*   zNo font code 'z' found in pymupdf-fonts.rK  zfontcode too shortrL  r`  rg  zfont-weight: bold;zfont-style: italic;)rÈ   r9  rÃ   r¯
  rË  r7   r=  )ro  rn  r$  r   ÚCSSFONTÚ	font_keysÚfkeyrW  rL  r`  ÚfbuffÚ	bold_textÚitalic_texts   `            r)   Úcss_for_pymupdf_fontry  ~X  s;  ø€ ðR D€Gå�‰=Œ=�GÐ#Ð#ÝÐ7Ñ8Ô8Ð8Ø
€{Øˆð SÐRÐRÐRÕ0×5Ò5Ñ7Ô7ÐRÑRÔR€IØ�B‚€ÝÐM¨(ÐMÐMÐMÑNÔNÐNÝ
ˆ9�~„~˜ÒÐÝÐ-Ñ.Ô.Ð.Ø€|Øˆàð >ð >ˆÝ# DÔ)ˆØ�FŒ|ˆØ�h”ˆØ��X”Ñ Ô ˆØ�Š�E˜4Ñ Ô Ð Ø,0Ð8Ð(Ð(°bˆ	Ø/5Ð=Ð+Ð+¸2ˆØˆw˜$  i°Ð=Ñ=Ñ=ˆˆØ€Jr*   rú   ro  rë  c                ó   ‡— |                      ¦   «         }t                               |d¦  «        }dŠ|dk    rt          Š|dk    rt          Š‰� t          ˆfd„| D ¦   «         ¦  «        }||z  S |t                               ¦   «         v rt          | t          |         ||¦  «        S |dv rt          | ¦  «        |z  S t          d|› d�¦  «        ‚)a  Calculate length of a string for a built-in font.

    Args:
        fontname: name of the font.
        fontsize: font size points.
        encoding: encoding to use, 0=Latin (default), 1=Greek, 2=Cyrillic.
    Returns:
        (float) length of text.
    NrL  rK  c                óˆ   •— g | ]>}t          |¦  «        d k     r‰t          |¦  «                 d         n‰d         d         ‘Œ?S )r  r   ri  rX  r†  s     €r)   r¯   z#get_text_length.<locals>.<listcomp>ÖX  sC   ø€ ÐUÐUÐUÈ1¥c¨!¡f¤f¨s¢l l��˜A™œ” Ô"Ð"¸¸s¼ÀA¼ÐUÐUÐUr*   )rª
  r¬
  r«
  r»  r®
  r¼  r­
  r½  zFont 'z' is unsupported)
rÒ  r²
  r8   rQ  rP  rL  rË  Úutil_measure_stringr7   rÃ   )r   rù   rú   rë  rÝ  r   rM  s         @r)   r“  r“  ÃX  sù   ø€ ð �~Š~ÑÔ€HÝ×"Ò" 8¨TÑ2Ô2€Hà€FØ�8ÒÐÝˆØ�>Ò!Ð!ÝˆØÐÝÐUÐUÐUÐUÐPTÐUÑUÔUÑVÔVˆØ�8‰|Ðà•?×'Ò'Ñ)Ô)Ð)Ð)Ý"Ø•/ (Ô+¨X°xñ
ô 
ð 	
ð ð 	ð 	ð 	õ �4‰yŒy˜8Ñ#Ð#å
Ð8˜hÐ8Ð8Ð8Ñ
9Ô
9Ð9r*   rÔ  rà  r5   c                ó>  — t          | ¦  «        t          j        u r|                      ¦   «         }nTt	          | d¦  «        r|                      ¦   «         }n/t          | ¦  «        t          t          fv r| }nt          d¦  «        ‚t           
                    |¦  «        S )aG   Return basic properties of an image.

    Args:
        img: bytes, bytearray, io.BytesIO object or an opened image file.
    Returns:
        A dictionary with keys width, height, colorspace.n, bpc, type, ext and size,
        where 'type' is the MuPDF image type (0 to 14) and 'ext' the suitable
        file extension.
    rr  zbad argument 'img')rÈ   r9   r^  rv  r;   rr  r  r]  rÃ   r  Úimage_profile)rÔ  r	   s     r)   r~  r~  íX  s‡   € õ ˆC�y„y•B”JÐÐØ—’‘”ˆˆÝ	��fÑ	Ô	ð /Ø—’‘”ˆˆÝ	ˆc‰Œ•u�iÐ(Ð	(Ð	(ØˆˆåÐ-Ñ.Ô.Ð.å×Ò˜vÑ&Ô&Ð&r*   c                óÀ  ‡ — t          ‰ j        t          ¦  «        sJ ‚t          ‰ j        ¦  «        s‰ j        rK‰ j        €J ‚ t          ‰ j        ‰ j        ¦  «        ‰ j        ¦  «        }|st          d¦  «         d‰ _        dS ˆ fd„}t          ‰ j        t          ¦  «        sJ ‚t          ‰ j        ¦  «        }|dk    r
 |¦   «         S ‰ j        t                   }|dk    r
 |¦   «         S ‰ j        |dz
           }|t                   }|dk    r
 |¦   «         S |t                   }‰ j        t                   }||k    r
 |¦   «         S 	 ‰ j                             ¦   «         D ]\  }	}
|	|vr|
||	<   Œd}n'# t          $ r t          rt          ¦   «          d}Y nw xY w|dk    r%d	|t          <   ‰ j                             ¦   «          dS t          d
¦  «          |¦   «          dS )aq  
    Append current path to list or merge into last path of the list.
    (1) Append if first path, different item lists or not a 'stroke' version
        of previous path
    (2) If new path has the same items, merge its content into previous path
        and change path["type"] to "fs".
    (3) If "out" is callable, skip the previous and pass dictionary to it.
    Nr   z2calling cdrawings callback function/method failed!c                 óœ   •— ‰ j                              ‰ j                             ¦   «         ¦  «         ‰ j                             ¦   «          d S r,   )r  rk   Úpathdictrc  r‚  )rà  s   €r)   rk   zjm_append_merge.<locals>.appendY  s?   ø€ àŒ�Š�s”|×(Ò(Ñ*Ô*Ñ+Ô+Ð+ØŒ×ÒÑÔÐÐÐr*   rr  r   rÎ  r1  rº  z$could not merge stroke and fill path)r>   r  r´   r  r$  rì   r�  rr   r7   r  Údictkey_itemsrB   rg   r
  rv   r‚  )rà  Úresprk   r  Úthistyper¸  ÚprevtypeÚ	previtemsÚ	thisitemsrŸ  rF   r    s   `           r)   Újm_append_mergerˆ  Y  s  ø€ õ �c”g�tÑ$Ô$Ð$Ð$Ð$õ �”
ÑÔð ˜sœzð àŒ:Ðà�1ð 0•7˜3œ7 C¤JÑ/Ô/°´Ñ=Ô=ˆDØð 	JÝÐHÑIÔIÐIØˆŒØˆðð ð ð ð õ �c”g�tÑ$Ô$Ð$Ð$Ð$ÝˆsŒw‰<Œ<€Dàˆq‚y€yØˆv‰xŒxˆàŒ|�\Ô*€Hà�3‚€Øˆv‰xŒxˆØŒ7�D˜‘FÔ€Dà•\Ô"€Hà�3‚€Øˆv‰xŒxˆà•mÔ$€IØ”�mÔ,€IØ�IÒÐØˆv‰xŒxˆðØ”L×&Ò&Ñ(Ô(ð 	ð 	‰DˆAˆqØ˜ˆ}ˆ}Ø��Q‘øØˆˆøÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4àˆˆˆðøøøð 
ˆQ‚w€wØ"ˆ�lÑØŒ×ÒÑÔÐÐÐåÐ6Ñ7Ô7Ð7Øˆ‰Œˆˆˆs   Å*E3 Å3!FÆFc                óÈ   — | j         s+| j                             |t          |¦  «        f¦  «         d S | j                             |t          |¦  «        | j        f¦  «         d S r,   )r  r   rk   rg  Ú
layer_name)rà  rG  r÷   rÉ  s       r)   Újm_bbox_add_rectr‹  JY  sc   € ØŒ:ð JØŒ
×Ò˜D¥/°$Ñ"7Ô"7Ð8Ñ9Ô9Ð9Ð9Ð9àŒ
×Ò˜D¥/°$Ñ"7Ô"7¸¼ÐHÑIÔIÐIÐIÐIr*   c                ó¾   — t          j        t           j        j        ¦  «        }t          j        |                     ¦   «         |¦  «        }t          | ||d¦  «         d S )Nz
fill-image)r�   rh  rq  Úll_fz_transform_rectr  r‹  )rà  rG  r  rÞ  rÜ  Úcolor_paramsr  s          r)   Újm_bbox_fill_imager�  QY  sJ   € ÝŒ•U”\Ô,Ñ-Ô-€AÝÔ" A§J¢J¡L¤L°#Ñ6Ô6€AÝ�c˜3  <Ñ0Ô0Ð0Ð0Ð0r*   c                ó®   — 	 t          | |t          j        t          j        |¦  «        d¦  «         d S # t          $ r t
          rt          ¦   «          ‚ w xY w)Nzfill-imgmask)r‹  r�   r�  Úfz_unit_rectrg   r
  rv   )rà  rG  r  rÞ  rÛ  r  rÜ  rŽ  s           r)   Újm_bbox_fill_image_maskr’  WY  sb   € ðÝ˜#˜s¥EÔ$>½uÔ?QÐSVÑ$WÔ$WÐYgÑhÔhÐhÐhÐhøÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøs	   ‚/3 ³!Ac	           	     ó¨   — |rdnd}	 t          | |t          j        |d |¦  «        d¦  «         d S # t          $ r t          rt          ¦   «          ‚ w xY w)NTFz	fill-path©r‹  r�   Úll_fz_bound_pathrg   r
  rv   ©	rà  rG  r
   r/  rÞ  rÛ  r  rÜ  rŽ  s	            r)   Újm_bbox_fill_pathr—  _Y  sm   € ØÐ*ˆtˆt U€HðÝ˜#˜s¥EÔ$:¸4ÀÀsÑ$KÔ$KÈ[ÑYÔYÐYÐYÐYøÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøs	   ˆ&0 °!Ac                óš   — 	 t          | |t          j        ||¦  «        d¦  «         d S # t          $ r t          rt          ¦   «          ‚ w xY w)Nz
fill-shade)r‹  r�   Úll_fz_bound_shaderg   r
  rv   )rà  rG  ÚshaderÞ  rÜ  rŽ  s         r)   Újm_bbox_fill_shader›  hY  s]   € ðÝ˜#˜s¥EÔ$;¸UÀCÑ$HÔ$HÈ,ÑWÔWÐWÐWÐWøÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøs	   ‚%) ©!A
c           	     óœ   — 	 t          | |t          j        |||¦  «        d¦  «         d S # t          $ r t          rt          ¦   «          ‚ w xY w)Nzstroke-text©r‹  r�   Úll_fz_bound_textrg   r
  rv   )rà  rG  r   rh  rÞ  r÷  s         r)   Újm_bbox_stroke_textrŸ  pY  ó`   € ðÝ˜#˜s¥EÔ$:¸DÀ&È#Ñ$NÔ$NÐP]Ñ^Ô^Ð^Ð^Ð^øÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøó	   ‚&* ª!Ac           	     óœ   — 	 t          | |t          j        |d |¦  «        d¦  «         d S # t          $ r t          rt          ¦   «          ‚ w xY w)Nz	fill-textr�  )rà  rG  r   rÞ  r÷  s        r)   Újm_bbox_fill_textr£  xY  s_   € ðÝ˜#˜s¥EÔ$:¸DÀ$ÈÑ$LÔ$LÈkÑZÔZÐZÐZÐZøÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøør¡  c           	     óR   — t          | |t          j        |d |¦  «        d¦  «         d S )Nzignore-text)r‹  r�   rž  )rà  rG  r   rÞ  s       r)   Újm_bbox_ignore_textr¥  €Y  s+   € Ý�c˜3¥Ô 6°t¸TÀ3Ñ GÔ GÈÑWÔWÐWÐWÐWr*   c	           	     óœ   — 	 t          | |t          j        |||¦  «        d¦  «         d S # t          $ r t          rt          ¦   «          ‚ w xY w)Nzstroke-pathr”  )	rà  rG  r
   rh  rÞ  rÛ  r  rÜ  rŽ  s	            r)   Újm_bbox_stroke_pathr§  „Y  r   r¡  c                óP  — | j         t                   }t          |¦  «        }dgdz  }t          d¦  «        D ]W}||dz
  |z            }t	          |d         ¦  «        }|j        ||dz  <   |j        ||dz  dz   <   t	          |d         ¦  «        }ŒX|j        |d         k    s|j        |d         k    rdS d| _        t          j	        |d         |d         |d         |d         |d         |d         |d         |d	         ¦  «        }d
t          |¦  «        f}	|	||dz
  <   ||dz
  |…= dS )a  
    Check whether the last 4 lines represent a quad.
    Because of how we count, the lines are a polyline already, i.e. last point
    of a line equals 1st point of next line.
    So we check for a polygon (last line's end point equals start point).
    If not true we return 0.
    r   r   rK  r   r   rô  rÅ  r   r   r1  )r�  r‚  r7   rL  r`  r(  r)  Ú	linecountr�   r¼  rî  )
rà  rB   r  rÎ  r®   ro   r€  r�  r’  r÷   s
             r)   Újm_checkquadrª  ŒY  s5  € ð ŒL�-Ô(€EÝˆu‰:Œ:€DØ	
ˆˆa‰€Aå�A‰YŒYð )ð )ˆØ�d˜Q‘h ‘lÔ#ˆÝ  a¤Ñ)Ô)ˆØ”6ˆˆ!ˆa‰%‰Ø”vˆˆ!ˆa‰%�!‰)‰Ý˜t QœxÑ(Ô(ˆˆØ	„tˆq�Œt‚|€|�r”t˜q œt’|�|ð ˆqð €C„Mõ 	Ô˜1˜Qœ4  1¤ q¨¤t¨Q¨q¬T°1°Q´4¸¸1¼¸qÀ¼tÀQÀqÄTÑJÔJ€AØ•/ !Ñ$Ô$Ð%€Dà€Eˆ4�!‰8ÑØˆt�a‰x˜$ˆÐØˆ1r*   c                óÎ  — d| _         d}| j        t                   }t          |¦  «        }||dz
           }t	          |d         ¦  «        }t	          |d         ¦  «        }||dz
           }t	          |d         ¦  «        }t	          |d         ¦  «        }		 |j        |j        k    s0|j        |	j        k    s |j        |	j        k    s|j        |j        k    rdS |	j        |j        k     r.t          j        |	j        |	j        |j        |j        ¦  «        }
d}n-t          j        |j        |j        |j        |j        ¦  «        }
d}dt          |
¦  «        |f}|||dz
  <   ||dz
  |…= dS )z}
    Check whether the last 3 path items represent a rectangle.
    Returns 1 if we have modified the path, otherwise 0.
    r   r   r   r   r1  rÆ  )
r©  r�  r‚  r7   r`  r)  r(  r�   rf  rg  )rà  rò  rB   r  rÞ  r‘  r’  Úline2r“  r¤  r  r÷   s               r)   Újm_checkrectr­  ³Y  sU  € ð €C„MØ€KØŒL�-Ô(€EÝˆu‰:Œ:€Dà�4˜!‘8Ô€EÝ	˜5 !œ9Ñ	%Ô	%€BÝ	˜5 !œ9Ñ	%Ô	%€Bð �4˜!‘8Ô€EÝ	˜5 !œ9Ñ	%Ô	%€BÝ	˜5 !œ9Ñ	%Ô	%€BðØŒt�r”tŠ|ˆ|ØŒt�r”tŠ|ˆ|ØŒt�r”tŠ|ˆ|ØŒt�r”tŠ|ˆ|àˆqð 
„tˆbŒd‚{€{ÝÔ˜rœt R¤T¨2¬4°´Ñ6Ô6ˆØˆˆåÔ˜rœt R¤T¨2¬4°´Ñ6Ô6ˆØˆà•? 1Ñ%Ô% {Ð3€DØ€Eˆ4�!‰8ÑØˆt�a‰x˜$ˆÐØˆ1r*   c           
     óV   — |j         }	 |sd S t          | |||||||¦  «         |j        }Œ"r,   )ÚheadÚjm_trace_text_spanr=  )	rà  r   r[  rÞ  rÛ  r  rÜ  Úseqnorç  s	            r)   Újm_trace_textr²  äY  sC   € ØŒ9€DðØð 	ØˆEÝ˜C  u¨c°:¸uÀeÈUÑSÔSÐSØŒyˆð	r*   c                óX  — d}t          |t          j        ¦  «        sJ ‚t          j        |¦  «        }t          |t          j        ¦  «        sJ ‚t          j        |¦  «        }t          |                     ¦   «         ¦  «        }	t          j        | 	                    ¦   «         |¦  «        }
t          j
        t          j        dd¦  «        |
¦  «        }t          j        |j        |j        z  |j        |j        z  z   ¦  «        }t          j        |¦  «        }d}t#          |                     ¦   «         ¦  «        }t%          |                     ¦   «         ¦  «        }|dk     rd}d}||z  ||z
  z  }||z  ||z
  z  }d}t          j        |                     ¦   «         ¦  «        }||t(          z  z  }|t          j        |                     ¦   «         ¦  «        t,          z  z  }|t          j        |                     ¦   «         ¦  «        t0          z  z  }|t          j        |                     ¦   «         ¦  «        t4          z  z  }d}t          j        ¦   «         }t          j        |j        |j        |j         |j        dd¦  «        }|j        dk    rd|_        g }t=          |j        j         ¦  «        D �]ˆ}d}| !                    |¦  «        j"        dk    rJt          j#        |                     ¦   «         | !                    |¦  «        j"        |j        j$        ¦  «        }||z  }|}| !                    |¦  «        j%        dk    r|}t          j        | !                    |¦  «        j        | !                    |¦  «        j        ¦  «        }t          j&        ||¦  «        }t          j        dddd|j         |j         ¦  «        }t          j        ||¦  «        }t          j        |t          j        dddd|j        |j        ¦  «        ¦  «        }|j        }||z   }|
j        dk    r|j        dk    s'|j        dk    s|
j'        dk    r&|
j'        |
j(         k    r|j        |z   }|j        |z   }n|j        |z
  }|j        |z
  }t          j)        ||||¦  «        } t          j*        | |¦  «        } | +                    | !                    |¦  «        j%        | !                    |¦  «        j"        |j        |j        f| j,        | j-        | j.        | j/        ff¦  «         |dk    rt          j0        || ¦  «        }�Œ†| }�ŒŠtc          |¦  «        }|st|t(          z  sht          j2        |                     ¦   «         ddd¦  «        \  }!}t          j#        |                     ¦   «         |!|j        j$        ¦  «        }||z  }|s|}n|}tg          ¦   «         }"ti          |¦  «        |"d	<   tk          |	¦  «        |"d
<   |j        j$        |"d<   ||"d<   |j        j6        |"d<   |j        j7        |"d<   ||"d<   ||"d<   d|"d<   |rzt          j8        t          j9        t          j:        |¦  «        ¦  «        |t          j;        ¦   «         t          j9        ¦   «         t          j<        ¦   «         ¦  «        }#|#dd…         }#nd}#| j=        dk    r| j=        }$n|dz  }$|#|"d<   ||"d<   ||"d<   |$|"d<   ||"d<   ||"d<   t}          |¦  «        |"d<   | j?        |"d<   ||"d<   ||"d<   | j@         +                    |"¦  «         dS )z³
    jm_trace_text_span(fz_context *ctx, PyObject *out, fz_text_span *span, int type, fz_matrix ctm, fz_colorspace *colorspace, const float *color, float alpha, size_t seqno)
    Nr   r   r>  rÜ  rÝ  r1  rˆ  rh  rW  rÈ
  r¾  Úbidi_lvlÚbidi_dirr=  r>  r   rÛ  rÓ  rï  r  r¸  rV  Ú	linewidthÚ
spacewidthrÈ   r/  Úlayerr±  r6
  )Ar>   r�   Úfz_text_spanÚ
FzTextSpanÚ	fz_matrixrr  rQ  rW  r%  rµ  Úfz_transform_vectorr  rJ  rK  r(  r)  Úfz_normalize_vectorrâ  rã  ró
  rØ  rñ
  rÖ  rö
  r×  rï
  rÙ  rh  r±  r
  rL  rÌ   r7   rB   rÊ
  r$  rÈ
  r  r'  rÑ
  r¼  rf  r©  rk   r
  r  r	  r  r3  rµ   rÇ
  r5   rJ  r²  r  r¶  Úfz_convert_colorr–  rL  rÔ  rî  r¶  rg  rŠ  r  )%rà  rç  r[  rÞ  rÛ  r  rÜ  r±  Úout_fontrù   rv  rh  rù  Ú	space_advrU  rV  ÚascsizeÚdscsizeÚfflagsrÒ
  Úlast_advÚ	span_bboxrS  r6
  r®   r(  Ú	char_origrh  r
  r	  r  r  Ú	char_bboxr¼  Ú	span_dictrË  r¶  s%                                        r)   r°  r°  íY  s§  € ð €HÝ�t�UÔ/Ñ0Ô0Ð0Ð0Ð0ÝÔ˜TÑ"Ô"€DÝ�s�EœOÑ,Ô,Ð,Ð,Ð,Ý
Œ.˜#Ñ
Ô
€CÝ˜TŸYšY™[œ[Ñ)Ô)€Hõ Œ/˜$Ÿ(š(™*œ* cÑ
*Ô
*€CÝ
Ô
#¥EÔ$7¸¸1Ñ$=Ô$=¸sÑ
CÔ
C€CÝŒI�c”e˜cœe‘m c¤e¨c¬e¡mÑ3Ñ4Ô4€Eå
Ô
# CÑ
(Ô
(€Cà€IÝ
˜DŸIšI™KœKÑ
(Ô
(€CÝ
˜TŸYšY™[œ[Ñ
)Ô
)€CØ
ˆT‚z€zØˆØˆð �E‰k˜S 3™YÑ'€GØ�E‰k˜S 3™YÑ'€GØ€FÝÔ&¨¯	ª	©¬Ñ4Ô4€DØ
ˆdÕ)Ñ)Ñ)€FØ
�eÔ% t§y¢y¡{¤{Ñ3Ô3Õ6FÑFÑF€FØ
�eÔ$ d§i¢i¡k¤kÑ2Ô2Õ5FÑFÑF€FØ
�eÔ# T§Y¢Y¡[¤[Ñ1Ô1µNÑBÑB€Fà€Hõ ”‘”€IÝ
Ô
˜sœu c¤e¨c¬e¨V°S´U¸A¸qÑ
AÔ
A€CØ
„u�‚{€{ØˆŒà€EÝ�D”OÔ'Ñ(Ô(ð ."ñ ."ˆØˆØ�:Š:�a‰=Œ=Ô Ò!Ð!ÝÔ(¨$¯)ª)©+¬+°t·z²zÀ!±}´}Ô7HÈ$Ì/ÔJ_Ñ`Ô`ˆCØˆu‰ˆØˆØ�:Š:�a‰=Œ=Ô Ò"Ð"ØˆIÝÔ'¨¯
ª
°1©¬¬¸¿ºÀA¹¼¼ÑIÔIˆ	ÝÔ,¨Y¸Ñ<Ô<ˆ	ÝÔ! ! Q¨¨1¨y¬{¨l¸Y¼[¸LÑIÔIˆÝŒ_˜R Ñ%Ô%ˆÝŒ_˜R¥¤°°1°a¸¸I¼KÈÌÑ!UÔ!UÑVÔVˆØŒ[ˆØ�#‰Xˆà”˜’� ¤¨¢
 
¨c¬e°rªk¨kà”˜!’� ¤¨#¬%¨¢ à”˜wÑ&ˆBØ”˜wÑ&ˆBˆBà”˜wÑ&ˆBØ”˜wÑ&ˆBÝÔ& r¨2¨r°2Ñ6Ô6ˆ	ÝÔ+¨I°rÑ:Ô:ˆ	Ø�Šà—J’J˜q‘M”MÔ%Ø—J’J˜q‘M”MÔ%à!œØ!œðð
 "œØ!œØ!œØ!œð	ðñ	ô 	ð 	ð  ˆqŠ5ˆ5ÝÔ+¨I°yÑAÔAˆI‰Ià!ˆI‰IÝ�%‰LŒL€Eàð !ØÕ-Ñ-ð 	!ÝÔAÀ4Ç9Â9Á;Ä;ÐPRÐTUÐWXÑYÔY‰KˆAˆxÝÔ.Ø—I’I‘K”KØØ”OÔ)ñô ˆIð
 ˜ÑˆIØð %Ø$�	øà ˆIõ ‘”€IÝ(¨Ñ-Ô-€IˆuÑÝ,¨XÑ6Ô6€IˆvÑØœ/Ô/€IˆwÑØ€IˆwÑØ œOÔ6€IˆzÑØ!œ_Ô7€IˆzÑØ €IˆzÑØ!€Iˆ{ÑØ €Iˆ|Ñàð 
ÝÔ$ÝÔ"¥EÔ$?ÀÑ$LÔ$LÑMÔMØÝÔ#Ñ%Ô%ÝÔ"Ñ$Ô$ÝÔ#Ñ%Ô%ñô ˆð �"�1�"Œgˆˆàˆà
„}�qÒÐØ”Mˆ	ˆ	à˜D‘Lˆ	ð €IˆwÑØ€IˆvÑØ!€IˆyÑØ'€Iˆ{ÑØ(€Iˆ|ÑØ€IˆvÑÝ(¨Ñ3Ô3€IˆvÑØœ.€IˆwÑØ€IˆwÑØ€IˆwÑà„G‡N‚N�IÑÔÐÐÐr*   c                ó4  — | r•	 t          j        t           j        j        ¦  «        }t          j        ¦   «         }t          j        | ||j        d |                     ¦   «         ¦  «        }n$# t          $ r t          rt          ¦   «          ‚ w xY w|d d…         S dS )Nr   r-   )
r�   r–  rœ  rî  Úll_fz_convert_colorrÌ   r  rg   r
  rv   )rÛ  r  rß  ri  rË  s        r)   Újm_lineart_colorrË  …Z  s§   € àð ð	õ Ô#¥UÔ%7Ô%AÑBÔBˆBÝÔ$Ñ&Ô&ˆBÝÔ+ØØØ”MØØ—K’K‘M”Mñô ˆCˆCøõ ð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð	øøøð �2�A�2ŒwˆØˆ2s   „A%A* Á*!Bc                óV   — t          | j        t          ¦  «        rg | _        g | _        d S r,   )r>   r  r´   Úscissors©rà  rG  s     r)   Újm_lineart_drop_devicerÏ  ¡Z  s(   € Ý�#”'�4Ñ Ô ð ØˆŒØ€C„L€L€Lr*   c	                óp  — |rdnd}	 t          |t          j        ¦  «        sJ ‚t          j        |¦  «        | _        t
          | _        t          | ||¦  «         | j        €d S d| j        t          <   || j        d<   || j        d<   t          ||¦  «        | j        d<   t          | j        ¦  «        | j        t          <   | j        | j        d<   | j        | j        d<   | j        r| j        | j        d	<   t%          | ¦  «         | xj        d
z  c_        d S # t&          $ r t(          rt+          ¦   «          ‚ w xY w)NTFrÎ  r/  ræ  rû   r±  r¸  r   r   )r>   r�   r»  rr  rÞ  Útrace_device_FILL_PATHÚ	path_typeÚjm_lineart_pathr�  r  rË  rg  ÚpathrectÚdictkey_rectr±  rŠ  r%  r2  rˆ  rg   r
  rv   r–  s	            r)   Újm_lineart_fill_pathrÖ  §Z  s>  € ð  Ð*ˆtˆt U€HðÝ˜3¥¤Ñ0Ô0Ð0Ð0Ð0Ý”. #Ñ&Ô&ˆŒÝ.ˆŒÝ˜˜c 4Ñ(Ô(Ð(ØŒ<ÐØˆFð &)ˆŒ•lÑ#Ø$,ˆŒ�jÑ!Ø(-ˆŒ�nÑ%õ !1°*¸eÑ DÔ DˆŒ�fÑÝ&5°c´lÑ&CÔ&CˆŒ•lÑ#Ø!$¤ˆŒ�gÑà!$¤ˆŒ�gÑØŒ9ð 	/Ø%(¤YˆCŒL˜'Ñ"Ý˜ÑÔÐØˆ	Œ	�Q‰ˆ	Œ	ˆ	ˆ	øåð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøs   ˆAD Á#B/D Ä!D5c           
     ó^   — 	 t          | |d||||| j        ¦  «         | xj        dz  c_        d S )Nr   z
type(ctx)=z ctx=z
type(dev)=z dev=ztype(text)=z text=z
type(ctm)=z ctm=ztype(colorspace)=z colorspace=ztype(color)=z color=ztype(alpha)=r]  ztype(color_params)=z color_params=r   )r'   rÈ   r²  r±  )rà  rG  r   rÞ  rÛ  r  rÜ  rŽ  s           r)   Újm_lineart_fill_textrØ  ÎZ  s:   € ð6õ �#�t˜Q  Z°¸¸s¼yÑIÔIÐIØ€I„I��N€I„I€I€Ir*   c           
     ó\   — t          | |d|d d d| j        ¦  «         | xj        dz  c_        d S )Nr   r   ©r²  r±  )rà  r   rÞ  s      r)   Újm_lineart_ignore_textrÛ  ÜZ  s3   € å�#�t˜Q  T¨4°°C´IÑ>Ô>Ð>Ø€I„I��N€I„I€I€Ir*   c                  ó6   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚWalkerc                óö   •— t          ¦   «                              ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          || _        d S r,   )rÇ   rŒ   Úuse_virtual_movetoÚuse_virtual_linetoÚuse_virtual_curvetoÚuse_virtual_closepathrà  )r(   rà  rD  s     €r)   rŒ   zWalker.__init__äZ  sl   ø€ Ý‰Œ×ÒÑÔÐØ×ÒÑ!Ô!Ð!Ø×ÒÑ!Ô!Ð!Ø× Ò Ñ"Ô"Ð"Ø×"Ò"Ñ$Ô$Ð$ØˆŒˆˆr*   c                ó<  — 	 | j         j        dk    rt          | j         ¦  «        rd S d| j         _        | j         j        r�| j         j        | j         j        k    rsdt          | j         j        ¦  «        t          | j         j        ¦  «        f}| j         j        t                    	                    |¦  «         | j         j        | j         _        d| j         j        d<   nd| j         j        d<   d| j         _        d S # t          $ r t          rt          ¦   «          ‚ w xY w)Nr   r   r  Frâ  T)rà  r©  r­  ÚhavemoveÚ	lastpointÚ
firstpointrJ  r�  r‚  rk   rg   r
  rv   )r(   rG  rC   s      r)   Ú	closepathzWalker.closepathìZ  s  € ð	ØŒxÔ! QÒ&Ð&Ý ¤Ñ)Ô)ð à�FØ!"ˆDŒHÔàŒxÔ ð 
7Ø”8Ô%¨¬Ô)<Ò<Ð<ØÕ!1°$´(Ô2DÑ!EÔ!EÝ!1°$´(Ô2EÑ!FÔ!FðH�Dà”HÔ%¥mÔ4×;Ò;¸DÑAÔAÐAØ)-¬Ô)<�D”HÔ&Ø16�”Ô! +Ñ.Ð.ð 37�”Ô! ;Ñ/ð !"ˆDŒHÔÐÐøåð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð	øøøs   ‚$C: ¨CC: Ã:!Dc                óŒ  — 	 d| j         _        t          j        ||¦  «        }t          j        ||¦  «        }	t          j        ||¦  «        }
t          j        || j         j        ¦  «        }t          j        |	| j         j        ¦  «        }	t          j        |
| j         j        ¦  «        }
t          j        | j         j        |¦  «        | j         _        t          j        | j         j        |	¦  «        | j         _        t          j        | j         j        |
¦  «        | j         _        dt          | j         j	        ¦  «        t          |¦  «        t          |	¦  «        t          |
¦  «        f}|
| j         _	        | j         j
        t                                        |¦  «         d S # t          $ r t          rt          ¦   «          ‚ w xY w)Nr   r¼  )rà  r©  r�   r  r'  rÞ  Úfz_include_point_in_rectrÔ  rJ  rå  r�  r‚  rk   rg   r
  rv   )r(   rG  r	  r  Úx2Úy2Úx3Úy3r  r  rà  rÃ  s               r)   ÚcurvetozWalker.curveto[  s|  € ð	Ø!"ˆDŒHÔÝÔ$ R¨Ñ,Ô,ˆBÝÔ$ R¨Ñ,Ô,ˆBÝÔ$ R¨Ñ,Ô,ˆBÝÔ)¨"¨d¬h¬lÑ;Ô;ˆBÝÔ)¨"¨d¬h¬lÑ;Ô;ˆBÝÔ)¨"¨d¬h¬lÑ;Ô;ˆBÝ %Ô >¸t¼xÔ?PÐRTÑ UÔ UˆDŒHÔÝ %Ô >¸t¼xÔ?PÐRTÑ UÔ UˆDŒHÔÝ %Ô >¸t¼xÔ?PÐRTÑ UÔ UˆDŒHÔð Ý$ T¤XÔ%7Ñ8Ô8Ý$ RÑ(Ô(Ý$ RÑ(Ô(Ý$ RÑ(Ô(ðˆEð "$ˆDŒHÔØŒHÔ�}Ô-×4Ò4°eÑ<Ô<Ð<Ð<Ð<øÝð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð	øøøs   ‚FF" Æ"!Gc                ól  — 	 t          j        t          j        ||¦  «        | j        j        ¦  «        }t          j        | j        j        |¦  «        | j        _        dt          | j        j        ¦  «        t          |¦  «        f}|| j        _        | j        j	        t                   }|                     |¦  «         | j        xj        dz  c_        | j        j        dk    r+| j        j        t          k    rt          | j        ¦  «         d S d S d S # t           $ r t"          rt%          ¦   «          ‚ w xY w)Nr  r   rK  )r�   r'  r  rà  rÞ  ré  rÔ  rJ  rå  r�  r‚  rk   r©  rÒ  rÑ  rª  rg   r
  rv   )r(   rG  r(  r)  r  rÃ  rB   s          r)   ÚlinetozWalker.lineto#[  s$  € ð	ÝÔ)­5Ô+>¸qÀ!Ñ+DÔ+DÀdÄhÄlÑSÔSˆBÝ %Ô >ÀÄÔ@QÐSUÑ VÔ VˆDŒHÔàÝ$ d¤hÔ&8Ñ9Ô9Ý$ RÑ(Ô(ðˆEð
 "$ˆDŒHÔØ”HÔ%¥}Ô5ˆEØ�LŠL˜%Ñ Ô Ð ØŒHÐÔ !Ñ#ÐÔØŒxÔ! QÒ&Ð&¨4¬8Ô+=ÕAWÒ+WÐ+Wå˜TœXÑ&Ô&Ð&Ð&Ð&ð 'Ð&Ð+WÐ+Wøõ ð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð	øøøs   ‚D
D Ä!D3c                ó  — 	 	 t          j	        t          j
        ||¦  «        | j        j        ¦  «        | j        _        t          j        | j        j        ¦  «        r]t          j        | j        j        j        | j        j        j        | j        j        j        | j        j        j        ¦  «        | j        _        | j        j        | j        _        d| j        _        d| j        _        d S # t*          $ r t,          rt/          ¦   «          ‚ w xY w)Nr   zself.dev.pathdict:z    type(n)=z len(n)=r³   r{   r   )r>   rà  r�  r5   r'   rB   rÈ   r7   r�   r'  r  rÞ  rå  r¯  rÔ  rf  r(  r)  ræ  rä  r©  rg   r
  rv   )r(   rG  r(  r)  rE   rF   s         r)   ÚmovetozWalker.moveto8[  sò   € ð	Gð	å!&Ô!9ÝÔ'¨¨1Ñ-Ô-Ø”H”Lñ"ô "ˆDŒHÔõ Ô(¨$¬(Ô*;Ñ<Ô<ð Ý$)Ô$6ØœÔ*Ô,ØœÔ*Ô,ØœÔ*Ô,ØœÔ*Ô,ñ	%ô %�”Ô!ð #'¤(Ô"4ˆDŒHÔØ !ˆDŒHÔØ!"ˆDŒHÔÐÐøÝð 	ð 	ð 	Ý#Ð8­Ñ(8Ô(8Ð(8Øð	øøøs   ƒC%C* Ã*!D)	r/   r0   r1   rŒ   rç  rî  rð  rò  rL  r  s   @r)   rÝ  rÝ  âZ  st   ø€ € € € € ðð ð ð ð ðð ð ð8ð ð ð6ð ð ð*ð ð ð ð ð ð r*   rÝ  c                óø  — 	 t          j        t           j        j        ¦  «        | _        d| _        t          j        dd¦  «        | _        t          ¦   «         | _        g | j        t          <   t          | ¦  «        }t          j        t          j        t          j        |¦  «        ¦  «        ||j        ¦  «         | j        t                   s	d| _        dS dS # t          $ r t           rt#          ¦   «          ‚ w xY w)a#  
    Create the "items" list of the path dictionary
    * either create or empty the path dictionary
    * reset the end point of the path
    * reset count of consecutive lines
    * invoke fz_walk_path(), which create the single items
    * if no items detected, empty path dict again
    r   N)r�   rh  ri  rÔ  r©  r&  rå  r5   r�  r‚  rÝ  Úfz_walk_pathÚFzPathÚll_fz_keep_pathrÌ   rg   r
  rv   )rà  rG  r
   Úwalkers       r)   rÓ  rÓ  U[  sÝ   € ðÝ”|¥U¤\Ô%@ÑAÔAˆŒØˆŒÝœ q¨!Ñ,Ô,ˆŒÝ‘v”vˆŒØ')ˆŒ•mÑ$õ ˜‘”ˆõ 	Ô�EœL­Ô)>¸tÑ)DÔ)DÑEÔEÀvÈvÔO`ÑaÔaÐaàŒ|�]Ô+ð 	 ØˆCŒLˆLˆLð	 ð 	 øåð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøs   ‚CC Ã!C9c	                óN  — 	 t          |t          j        ¦  «        sJ ‚t          j        t          |j        |j        z  |j        |j	        z  z
  ¦  «        ¦  «        | _
        t          j        |¦  «        | _        t          | _        t          | ||¦  «         | j        €d S d| j        t"          <   || j        d<   t%          ||¦  «        | j        d<   | j
        |j        z  | j        t(          <   |j        |j        |j        f| j        d<   t1          |j        ¦  «        | j        d<   d| j        vr
d| j        d<   |j        rÄt          j        d¦  «        }	t          j        |	d	¦  «         t;          |j        ¦  «        D ]I}
t          j        |j        |
¦  «        }t          j        |	tA          | j
        |z  ¦  «        › d
�¦  «         ŒJt          j        |	dtA          | j
        |j!        z  ¦  «        › �¦  «         |	| j        d<   n
d| j        d<   tE          | j#        ¦  «        | j        tH          <   | j%        | j        d<   | j&        | j        d<   | j'        r| j(        | j        d<   tS          | ¦  «         | xj&        dz  c_&        d S # tT          $ r tV          rtY          ¦   «          ‚ w xY w)Nrr  rå  r  rã  rä  râ  Fr  z[ r³   z] r_  r   r¸  r±  r   r   )-r>   r�   r»  rJ  rK  rï  r!   r
  rÑ
  r¼  Ú
pathfactorrr  rÞ  Útrace_device_STROKE_PATHrÒ  rÓ  r�  r  rË  r¶  rP  Ú	start_capÚdash_capÚend_capro  ÚlinejoinÚdash_lenrã  rù  rL  Úfloats_getitemÚ	dash_listr¶   Ú
dash_phaserg  rÔ  rÕ  rŠ  r±  r%  r2  rˆ  rg   r
  rv   )rà  rG  r
   rh  rÞ  rÛ  r  rÜ  rŽ  rN  r®   r¸   s               r)   Újm_lineart_stroke_pathr  y[  sŠ  € ð.Ý˜3¥¤Ñ0Ô0Ð0Ð0Ð0Ýœ¥3 s¤u¨s¬u¡}°s´u¸s¼u±}Ñ'DÑ#EÔ#EÑFÔFˆŒÝ”. #Ñ&Ô&ˆŒÝ0ˆŒå˜˜c 4Ñ(Ô(Ð(ØŒ<ÐØˆFØ&)ˆŒ•lÑ#Ø*/ˆŒÐ&Ñ'Ý!1°:¸uÑ!EÔ!EˆŒ�gÑØ'*¤~¸Ô8HÑ'HˆŒ•mÑ$àÔ Ø”Ø”ð$ˆŒ�iÑ õ
 %*¨&¬/Ñ$:Ô$:ˆŒ�jÑ!Ø˜cœlÐ*Ð*à(-ˆCŒL˜Ñ%ð Œ?ð 	-ÝÔ&¨Ñ,Ô,ˆDÝÔ" D¨$Ñ/Ô/Ð/Ý˜FœOÑ,Ô,ð Wð W�õ Ô,¨fÔ.>ÀÑBÔB�ÝÔ&¨µ¸3¼>ÈEÑ;QÑ1RÔ1RÐ.UÐ.UÐ.UÑVÔVÐVÐVÝÔ" DÐ*^­y¸¼È&ÔJ[Ñ9[Ñ/\Ô/\Ð*^Ð*^Ñ_Ô_Ð_Ø&*ˆCŒL˜(Ñ#Ð#à&,ˆCŒL˜(Ñ#Ý&5°c´lÑ&CÔ&CˆŒ•lÑ#Ø #¤ˆŒ�WÑØ!$¤ˆŒ�gÑØŒ9ð 	/Ø%(¤YˆCŒL˜'Ñ"Ý˜ÑÔÐØˆ	Œ	�Q‰ˆ	Œ	ˆ	ˆ	øåð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøs   ‚BJ Â G!J Ê!J$c                óÊ  — | j         sd S t          j        |¦  «        | _        t          | _        t          | ||¦  «         | j        €d S d| j        t          <   t          |¦  «        | j        d<   d| j        vr
d| j        d<   t          t          | ¦  «        ¦  «        | j        d<   | j        | j        d<   | j        | j        d<   t          | ¦  «         | xj        dz  c_        d S )	Nr  r/  râ  Fr0  r   r¸  r   )r%  r�   rr  rÞ  Útrace_device_CLIP_PATHrÒ  rÓ  r�  r  rç   rg  Úcompute_scissorr2  rŠ  rˆ  )rà  rG  r
   r/  rÞ  r0  s         r)   Újm_lineart_clip_pathr  ¬[  sØ   € ØŒ9ð ØˆÝŒn˜SÑ!Ô!€C„GÝ*€C„MÝ�C˜˜dÑ#Ô#Ð#Ø
„|ÐØˆØ"(€C„L•,ÑÝ $ X¡¤€C„L�*ÑØ˜#œ,Ð&Ð&à$)ˆŒ�[Ñ!å-­o¸cÑ.BÔ.BÑCÔC€C„L�ÑØœI€C„L�ÑØœN€C„L�ÑÝ�CÑÔÐØ€I„I��N€I„I€I€Ir*   c                ó¦  — | j         sd S t          j        |¦  «        | _        t          | _        t          | ||¦  «         | j        €d S d| j        d<   d | j        d<   d| j        vr
d| j        d<   t          t          | ¦  «        ¦  «        | j        d<   | j
        | j        d<   | j        | j        d<   t          | ¦  «         | xj
        d	z  c_
        d S )
Nr  r  r/  râ  Fr0  r   r¸  r   )r%  r�   rr  rÞ  Útrace_device_CLIP_STROKE_PATHrÒ  rÓ  r�  rg  r  r2  rŠ  rˆ  )rà  rG  r
   rh  rÞ  r0  s         r)   Újm_lineart_clip_stroke_pathr
  Á[  sÒ   € ØŒ9ð ØˆÝŒn˜SÑ!Ô!€C„GÝ1€C„MÝ�C˜˜dÑ#Ô#Ð#Ø
„|ÐØˆØ#)€C„L�Ñ Ø#€C„L�ÑØ˜#œ,Ð&Ð&à$)ˆŒ�[Ñ!Ý-­o¸cÑ.BÔ.BÑCÔC€C„L�ÑØœI€C„L�ÑØœN€C„L�ÑÝ�CÑÔÐØ€I„I��N€I„I€I€Ir*   c                óV   — | j         sd S t          | ¦  «         | xj        dz  c_        d S rQ  ©r%  r  r2  )rà  rG  r   rh  rÞ  r0  s         r)   Újm_lineart_clip_stroke_textr  Õ[  ó2   € ØŒ9ð ØˆÝ�CÑÔÐØ€I„I��N€I„I€I€Ir*   c                óV   — | j         sd S t          | ¦  «         | xj        dz  c_        d S rQ  r  )rà  rG  r   rÞ  r0  s        r)   Újm_lineart_clip_textr  Ü[  r  r*   c                óV   — | j         sd S t          | ¦  «         | xj        dz  c_        d S rQ  r  )rà  rG  r  rÞ  r0  s        r)   Újm_lineart_clip_image_maskr  ã[  r  r*   c                óŽ   — | j         r| j        sd S t          | j        ¦  «        }|dk     rd S | j        d= | xj        dz  c_        d S )Nr   r1  )r%  rÍ  r7   r2  )rà  rG  r  s      r)   Újm_lineart_pop_clipr  ê[  sT   € ØŒ9ð ˜CœLð ØˆÝˆsŒ|ÑÔ€DØˆa‚x€xØˆØŒ�RÐØ€I„I��N€I„I€I€Ir*   c                ó*   — |r	|| _         d S d| _         d S ©Nr\   ©rŠ  )rà  rG  r   s      r)   Újm_lineart_begin_layerr  ô[  s    € Øð ØˆŒˆˆàˆŒˆˆr*   c                ó   — d| _         d S r  r  rÎ  s     r)   Újm_lineart_end_layerr  û[  s   € Ø€C„N€N€Nr*   c           	     óü   — | j         sd S dt          |¦  «        t          |¦  «        t          |¦  «        t          j        |¦  «        || j        | j        dœ| _        t          | ¦  «         | xj        dz  c_        d S )NrÇ  )rÈ   r÷   ÚisolatedÚknockoutrƒ  rV  r   r¸  r   )	r%  rg  rç   r�   Úfz_blendmode_namer2  rŠ  r�  rˆ  )rà  rG  r/  rß  r  r  rƒ  rÜ  s           r)   Újm_lineart_begin_groupr  ÿ[  s}   € àŒ9ð ØˆàÝ# DÑ)Ô)Ý˜X™œÝ˜X™œÝÔ0°Ñ;Ô;ØØ”YØ”^ð	ð 	€C„Lõ �CÑÔÐØ€I„I��N€I„I€I€Ir*   c                ó8   — | j         sd S | xj        dz  c_        d S rQ  )r%  r2  rÎ  s     r)   Újm_lineart_end_groupr!  \  s$   € àŒ9ð ØˆØ€I„I��N€I„I€I€Ir*   c	           
     ó\   — t          | |d||||| j        ¦  «         | xj        dz  c_        d S rQ  rÚ  )	rà  rG  r   rh  rÞ  rÛ  r  rÜ  rŽ  s	            r)   Újm_lineart_stroke_textr#  \  s3   € Ý�#�t˜Q  Z°¸¸s¼yÑIÔIÐIØ€I„I��N€I„I€I€Ir*   c	                ó>   — |j         | _         t          | |¦  «         d S r,   )r¶  Újm_increase_seqno)	rà  rG  r
   rh  rÙ  rÛ  r  rÜ  rŽ  s	            r)   Újm_dev_linewidthr&  \  s"   € ØÔ$€C„MÝ�s˜CÑ Ô Ð Ð Ð r*   c                óp   — 	 | xj         dz  c_         d S # t          $ r t          rt          ¦   «          ‚ w xY wrQ  )r±  rg   r
  rv   )rà  rG  Úvargss      r)   r%  r%  "\  sI   € ðØˆ	Œ	�Q‰ˆ	Œ	ˆ	ˆ	øÝð ð ð ÝÐ4¥NÑ$4Ô$4Ð$4Øðøøøs   ‚ ”!5r  r  c                óx   — t          | ¦  «        } t          |¦  «        }t          t          | |¦  «        ¦  «        S )am  Compute matrix which maps line from p1 to p2 to the x-axis, such that it
    maintains its length and p1 * matrix = Point(0, 0).

    Args:
        p1, p2: point_like
    Returns:
        Matrix which maps p1 to Point(0, 0) and p2 to a point on the x axis at
        the same distance to Point(0,0). Will always combine a rotation and a
        transformation.
    )rì  ru  r�  )r  r  s     r)   rŸ  rŸ  *\  s2   € õ 
ˆr‰Œ€BÝ	ˆr‰Œ€BÝ•/ " bÑ)Ô)Ñ*Ô*Ð*r*   c                  ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚJM_image_reporter_Filterc                óp   •— t          ¦   «                              ¦   «          |                      ¦   «          d S r,   r   r  s    €r)   rŒ   z!JM_image_reporter_Filter.__init__;\  s1   ø€ Ý‰Œ×ÒÑÔÐØ×%Ò%Ñ'Ô'Ð'Ð'Ð'r*   c                ó˜   — t          |t          j        ¦  «        sJ ‚t          | t          j        |¦  «        ||¦  «         t
          rdS d S r‡   )r>   r�   r»  rð  rr  rœ   )r(   rG  rÞ  r   r  s        r)   r  z%JM_image_reporter_Filter.image_filter?\  sQ   € Ý˜#�uœÑ/Ô/Ð/Ð/Ð/Ý˜�eœn¨SÑ1Ô1°4¸Ñ?Ô?Ð?Ýð 	ð �1ð	ð 	r*   r  r  s   @r)   r+  r+  :\  sG   ø€ € € € € ð(ð (ð (ð (ð (ðð ð ð ð ð ð r*   r+  c                  óF   ‡ — e Zd Zˆ fd„ZeZeZeZ	e
ZeZeZeZeZeZeZˆ xZS )r�  c                ó  •— t          ¦   «                              ¦   «          || _        || _        d| _        |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |  	                    ¦   «          |  
                    ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          d S r  )rÇ   rŒ   r   r  rŠ  Úuse_virtual_fill_pathÚuse_virtual_stroke_pathÚuse_virtual_fill_textÚuse_virtual_stroke_textÚuse_virtual_ignore_textÚuse_virtual_fill_shadeÚuse_virtual_fill_imageÚuse_virtual_fill_image_maskÚuse_virtual_begin_layerÚuse_virtual_end_layer)r(   r   r  rD  s      €r)   rŒ   z"JM_new_bbox_device_Device.__init__I\  sè   ø€ Ý‰Œ×ÒÑÔÐØˆŒØˆŒØˆŒØ×"Ò"Ñ$Ô$Ð$Ø×$Ò$Ñ&Ô&Ð&Ø×"Ò"Ñ$Ô$Ð$Ø×$Ò$Ñ&Ô&Ð&Ø×$Ò$Ñ&Ô&Ð&Ø×#Ò#Ñ%Ô%Ð%Ø×#Ò#Ñ%Ô%Ð%Ø×(Ò(Ñ*Ô*Ð*à×$Ò$Ñ&Ô&Ð&Ø×"Ò"Ñ$Ô$Ð$Ð$Ð$r*   )r/   r0   r1   rŒ   r  Úbegin_layerr  Ú	end_layerr—  Ú	fill_pathr§  Ústroke_pathr£  Ú	fill_textrŸ  Ústroke_textr¥  Úignore_textr›  Ú
fill_shader�  Ú
fill_imager’  Úfill_image_maskrL  r  s   @r)   r�  r�  H\  s`   ø€ € € € € ð%ð %ð %ð %ð %ð" )€KØ$€Ià!€IØ%€KØ!€IØ%€KØ%€KØ#€JØ#€JØ-€O€O€O€O€Or*   r�  c                  ó6   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )r˜  c                óö   •— t          ¦   «                              ¦   «          || _        |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          d S r,   )rÇ   rŒ   rT
  Úuse_virtual_writeÚuse_virtual_seekÚuse_virtual_tellÚuse_virtual_truncate)r(   rT
  rD  s     €r)   rŒ   z%JM_new_output_fileptr_Output.__init__h\  sn   ø€ Ý‰Œ×ÒÑÔÐØˆŒØ×ÒÑ Ô Ð Ø×ÒÑÔÐØ×ÒÑÔÐØ×!Ò!Ñ#Ô#Ð#Ð#Ð#r*   c                ó8   — | j                              ||¦  «        S r,   )rT
  r	  )r(   rG  rÍ  Úwhences       r)   r	  z!JM_new_output_fileptr_Output.seekp\  s   € ØŒx�}Š}˜f fÑ-Ô-Ð-r*   c                ó8   — | j                              ¦   «         }|S r,   )rT
  Útell)r(   rG  rG   s      r)   rM  z!JM_new_output_fileptr_Output.tells\  s   € ØŒh�mŠm‰oŒoˆØˆ
r*   c                ó4   — | j                              ¦   «         S r,   )rT
  Útruncate)r(   rG  s     r)   rO  z%JM_new_output_fileptr_Output.truncatew\  s   € ØŒx× Ò Ñ"Ô"Ð"r*   c                ó`   — t          j        ||¦  «        }| j                             |¦  «        S r,   )r�   Úraw_to_python_bytesrT
  r   )r(   rG  Údata_rawÚdata_lengthr}  s        r)   r   z"JM_new_output_fileptr_Output.writez\  s(   € ÝÔ(¨°;Ñ?Ô?ˆØŒx�~Š~˜dÑ#Ô#Ð#r*   )	r/   r0   r1   rŒ   r	  rM  rO  r   rL  r  s   @r)   r˜  r˜  g\  st   ø€ € € € € ð$ð $ð $ð $ð $ð.ð .ð .ðð ð ð#ð #ð #ð$ð $ð $ð $ð $ð $ð $r*   r˜  c                ó>  — | j         €t          ¦   «         | _         t          | j         ¦  «        }|dk    r:| j         |dz
           }t          |¦  «        }t	          j        || j        ¦  «        }n| j        }| j                              t          |¦  «        ¦  «         |S )zs
    Every scissor of a clip is a sub rectangle of the preceding clip scissor
    if the clip level is larger.
    Nr   r   )	rÍ  r´   r7   r   r�   r|  rÔ  rk   rg  )rà  Únum_scissorsÚlast_scissorr0  s       r)   r  r  \  sŽ   € ð
 „|ÐÝ‘v”vˆŒÝ�s”|Ñ$Ô$€LØ�aÒÐØ”| L°¡NÔ3ˆÝ! ,Ñ/Ô/ˆÝÔ)¨'°3´<Ñ@Ô@ˆˆà”,ˆØ„L×Ò�¨Ñ0Ô0Ñ1Ô1Ð1Ø€Nr*   c                  ój   ‡ — e Zd ZdZˆ fd„ZeZeZe	Z
eZeZeZeZeZeZeZeZeZeZeZeZeZe Z!e"Z#ˆ xZ$S )r   z?
    LINEART device for Python method Page.get_cdrawings()
    c                ó   •— t          ¦   «                              ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          | j	         | j
         | j         |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          || _        d| _        d| _        || _        || _        d | _        d| _        d | _        d| _        t;          j        ¦   «         | _        t;          j        ¦   «         | _         t;          j        ¦   «         | _!        t;          j"        ¦   «         | _#        t;          j"        ¦   «         | _$        d| _%        t;          j&        ¦   «         | _        d| _'        d| _(        d| _)        d S ©Nr   r\   )*rÇ   rŒ   r0  r1  Úuse_virtual_clip_pathÚuse_virtual_clip_image_maskÚuse_virtual_clip_stroke_pathÚuse_virtual_clip_stroke_textÚuse_virtual_clip_textr2  r3  r4  r5  r6  r7  Úuse_virtual_pop_clipÚuse_virtual_begin_groupÚuse_virtual_end_groupr8  r9  r  r±  r2  r%  r$  rÍ  rŠ  rÔ  r¶  r�   rr  r!  rÞ  rS  r&  rå  ræ  rä  rh  rù  r©  rÒ  )r(   r  r%  r$  rD  s       €r)   rŒ   z%JM_new_lineart_device_Device.__init__–\  s÷  ø€ å‰Œ×ÒÑÔÐð 	×"Ò"Ñ$Ô$Ð$Ø×$Ò$Ñ&Ô&Ð&Ø×"Ò"Ñ$Ô$Ð$Ø×(Ò(Ñ*Ô*Ð*Ø×)Ò)Ñ+Ô+Ð+Ø×)Ò)Ñ+Ô+Ð+Ø×"Ò"Ñ$Ô$Ð$àÔ"Ð"ØÔ$Ð$ØÔ$Ð$à×#Ò#Ñ%Ô%Ð%Ø×#Ò#Ñ%Ô%Ð%Ø×(Ò(Ñ*Ô*Ð*à×!Ò!Ñ#Ô#Ð#à×$Ò$Ñ&Ô&Ð&Ø×"Ò"Ñ$Ô$Ð$à×$Ò$Ñ&Ô&Ð&Ø×"Ò"Ñ$Ô$Ð$àˆŒØˆŒ
ØˆŒ
ØˆŒ
ØˆŒàˆŒØˆŒØˆŒàˆŒÝ”>Ñ#Ô#ˆŒÝ”>Ñ#Ô#ˆŒÝ”>Ñ#Ô#ˆŒÝœ™œˆŒÝœ-™/œ/ˆŒØˆŒÝœ™œˆŒØˆŒØˆŒØˆŒˆˆr*   )%r/   r0   r1   rª  rŒ   rÖ  r<  r  r=  r  Úclip_image_maskr  Ú	clip_pathr
  Úclip_stroke_pathr  Ú	clip_textr  Úclip_stroke_textr%  r>  r?  r@  rA  rB  rC  r  Úpop_clipr  Úbegin_groupr!  Ú	end_groupr  r:  r  r;  rL  r  s   @r)   r   r   ‘\  s•   ø€ € € € € ðð ð1ð 1ð 1ð 1ð 1ðj /€IØ0€KØ4€OØ.€IØ5ÐØ.€IØ5Ðà+€IØ+€KØ+€Kà+€JØ+€JØ+€Oà-€Hà0€KØ.€Ià0€KØ.€I€I€I€I€Ir*   r   c                  óJ   ‡ — e Zd ZdZˆ fd„ZeZeZe	Z
eZeZeZeZeZeZeZˆ xZS )r·  zB
    Trace TEXT device for Python method Page.get_texttrace()
    c                ó®  •— t          ¦   «                              ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |  	                    ¦   «          |  
                    ¦   «          |                      ¦   «          || _        d| _        d| _        d| _        d | _        d| _        t#          ¦   «         | _        t'          ¦   «         | _        d| _        t-          j        ¦   «         | _        t-          j        ¦   «         | _        t-          j        ¦   «         | _        t-          j        ¦   «         | _        t-          j        ¦   «         | _        d| _        d| _         d| _!        d| _"        d S rY  )#rÇ   rŒ   r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r  r±  r2  r%  r$  r5   r�  r´   rÍ  r¶  r�   rr  r!  rÞ  rS  r&  rå  rh  rÔ  rù  r©  rÒ  rŠ  )r(   r  rD  s     €r)   rŒ   z JM_new_texttrace_device.__init__é\  s{  ø€ Ý‰Œ×ÒÑÔÐØ×"Ò"Ñ$Ô$Ð$Ø×$Ò$Ñ&Ô&Ð&Ø×"Ò"Ñ$Ô$Ð$Ø×$Ò$Ñ&Ô&Ð&Ø×$Ò$Ñ&Ô&Ð&Ø×#Ò#Ñ%Ô%Ð%Ø×#Ò#Ñ%Ô%Ð%Ø×(Ò(Ñ*Ô*Ð*à×$Ò$Ñ&Ô&Ð&Ø×"Ò"Ñ$Ô$Ð$àˆŒàˆŒ
ØˆŒ
ØˆŒ
ØˆŒàˆŒ
å™œˆŒÝ™œˆŒØˆŒÝ”>Ñ#Ô#ˆŒÝ”>Ñ#Ô#ˆŒÝ”>Ñ#Ô#ˆŒÝœ™œˆŒÝœ™œˆŒØˆŒØˆŒØˆŒØˆŒˆˆr*   )r/   r0   r1   rª  rŒ   r%  r<  r&  r=  rØ  r>  r#  r?  rÛ  r@  rA  rB  rC  r  r:  r  r;  rL  r  s   @r)   r·  r·  ä\  sk   ø€ € € € € ðð ð"ð "ð "ð "ð "ðH "€IØ"€KØ$€IØ(€KØ(€KØ"€JØ"€JØ'€Oà(€KØ$€I€I€I€I€Ir*   r·  rb
  r®   c                ó  — |                       ¦   «         }dd l}|                     d¦  «        }|                     d|› d�¦  «        }|                     d¦  «        }d}d|› d�}|d	k    r|}	n|d
k    r|}	n|dk    r|}	n|dk    r|}	n|}	|	S )Nr   a^  
            <!DOCTYPE html>
            <html>
            <head>
            <style>
            body{background-color:gray}
            div{position:relative;background-color:white;margin:1em auto}
            p{position:absolute;margin:0}
            img{position:absolute}
            </style>
            </head>
            <body>
            z?
            <?xml version="1.0"?>
            <document name="z">
            aÏ  
            <?xml version="1.0"?>
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            <style>
            body{background-color:gray}
            div{background-color:white;margin:1em;padding:1em}
            p{white-space:pre-wrap}
            </style>
            </head>
            <body>
            r\   z{"document": "z", "pages": [
rÉ  r}  r»  Úxhtml)rÒ  ÚtextwrapÚdedent)
r®   rf   rD  rn  rÉ  r»  rm  r   r}  r  s
             r)   ÚConversionHeaderrp  ]  s×   € Ø	�Š‰	Œ	€AØ€O€O€OØ�?Š?ð ñ ô €Dð �/Š/ð à%ðð ð ñ ô €Cð
 �OŠOð ñ ô €Eð €DØ6˜XÐ6Ð6Ð6€DØˆF‚{€{ØˆˆØ	
ˆfŠˆØˆˆØ	
ˆeŠˆØˆˆØ	
ˆgŠˆØˆˆàˆà€Hr*   c                óŽ   — |                       ¦   «         }d}d}d}d}|}|dk    r|}n|dk    r|}n|dk    r|}n|dk    r|}n|}|S )	Nr\   z]
}z</body>
</html>
z</document>
rÉ  r}  r»  rm  )rÒ  )r®   rD  r   r}  rÉ  r»  rm  r  s           r)   ÚConversionTrailerrr  N]  sr   € Ø	�Š‰	Œ	€AØ€DØ€DØ€DØ
€CØ€EØˆF‚{€{ØˆˆØ	
ˆfŠˆØˆˆØ	
ˆeŠˆØˆˆØ	
ˆgŠˆØˆˆàˆà€Hr*   rŽ  c                óž   — t          | ¦  «         | j        j        st          d¦  «        ‚| j        }|dk    r|                      d¦  «         |S )z�Prepare for annotation insertion on the page.

    Returns:
        Old page rotation value. Temporarily sets rotation to 0 when required.
    rÙ  r   )rf  rê   rÛ  rÃ   rP  r¶  )rÖ   rL  s     r)   rJ  rJ  c]  sY   € õ �ÑÔÐØŒ;Ôð &Ý˜Ñ%Ô%Ð%Ø”=€LØ�qÒÐØ×Ò˜!ÑÔÐØÐr*   rß   ú'Annot'r×  c                ó¬   — t          | t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚| |_        || j        t          |¦  «        <   d|_        dS )zuClean up after annotation insertion.

    Set ownership flag and store annotation in page annotation dictionary.
    TN)r>   rÒ   râ   rê   r8  r9  rñ   )rÖ   rß   s     r)   rK  rK  r]  sU   € õ �t�TÑ"Ô"Ð"Ð"Ð"Ý�u�eÑ$Ô$Ð$Ð$Ð$Ø€E„LØ"'€DÔ•R˜‘Y”YÑØ€E„M€M€Mr*   c                ó–  — t          | t          ¦  «        sJ ‚| dk    s| dk    s| dk    rt          d¦  «        S | t          d¦  «        k    s&| t          d¦  «        k    s| t          d¦  «        k    rt          d¦  «        S | t          d¦  «        k    r5| t          d	¦  «        k    r"| t          d¦  «        z
  t          d
¦  «        z   S | S )NrÖ  i(   i)   r³   úr%   ú	r  ÚZr!   )r>   r4   rÅ
  r,  s    r)   Úcanonrz  ]  s±   € Ý�a�ÑÔÐÐÐð 	ˆD‚y€y�A˜’K�K 1¨¢; ;Ý�3‰xŒxˆØ�C�‰IŒI‚~€~˜�c $™iœiš˜¨1µ°D±	´	ª>¨>Ý�3‰xŒxˆØ�C�‰HŒH‚}€}˜�c #™hœhš˜Ø•3�s‘8”8‰|�c #™hœhÑ&Ð&Ø€Hr*   c                ó„   — t          | t          ¦  «        sJ ‚t          j        | ¦  «        \  }}t	          |¦  «        }||fS r,   )r>   rÑ  r�   r  rz  )rr  rE   r¼  s      r)   Úchartocanonr|  Œ]  s@   € Ý�a�ÑÔÐÐÐÝÔ˜qÑ!Ô!�D€A€qÝˆa‰Œ€AØˆaˆ4€Kr*   c                ó  — t          j        | t          d¦  «        ¦  «        }t          j        t          j        |t          d¦  «        ¦  «        t          d¦  «        ¦  «        r2t	          t          j        |t          d¦  «        ¦  «        |¦  «        sdS t          j        | t          d¦  «        ¦  «        }|j        snJt          j        |¦  «        rt	          ||¦  «        S t          t          j        |d¦  «        ||¦  «        sdS dS )Nr  r`	  r]  r  r   r  r   )	r�   r  r  rý  Ústring_in_names_listrÌ   re
  Údest_is_valid_pagerœ  )r¡  rÐ  Úpage_object_numsÚ
names_listr¢  s        r)   Údest_is_validr‚  “]  s  € ÝÔ˜A�x¨™}œ}Ñ-Ô-€AåÔÝÔ" A¥x°¡}¤}Ñ5Ô5Ý˜Ñ Ô ñô ð
õ
 )ÝÔ" A¥x°¡}¤}Ñ5Ô5Øñô ð
ð ˆqåÔ˜A�x¨Ñ/Ô/Ñ0Ô0€AØŒ<ð 	ØÝ	Ô	˜aÑ	 Ô	 ð Ý# Q¨
Ñ3Ô3Ð3ÝÝÔ  AÑ&Ô&ØØñô ð ð
 ˆqØˆ1r*   c                ó€   — t          j        | ¦  «        }|dk    rdS t          |¦  «        D ]}||         |k    r dS ŒdS r  )r�   r  rL  )r  r€  r_  Únumr®   s        r)   r  r  ¯]  sX   € Ý
Ô
˜3Ñ
Ô
€Cà
ˆa‚x€xØˆqÝ�9ÑÔð ð ˆØ˜AÔ #Ò%Ð%Ø�1�1ð &àˆ1r*   c                ó¼   — t          | t          ¦  «        sJ ‚t          t          | ¦  «        ¦  «        D ]'}t	          | |d …         |¦  «        }|�||z  }||fc S Œ(dS )Nrí	  )r>   rÑ  rL  r7   Úmatch_string)rr  rœ  r®   r–  s       r)   rÊ  rÊ  º]  sq   € Ý�a�ÑÔÐÐÐÝ•3�q‘6”6‰]Œ]ð ð ˆÝ˜1˜Q˜R˜Rœ5 &Ñ)Ô)ˆØˆ?Ø�1‰HˆCØ�c�6ˆMˆMˆMð ð ˆ:r*   c                 ó’  — ddl } t          t          | j        dz  ¦  «        ¦  «                             dd¦  «        }t          t          | j        dz  ¦  «        dz  ¦  «                             dd¦  «        }|› d|› d�} | j        d | j        ¦   «         ¦  «        }| j        dk    r	|d	|z   z  }n| j        dk     r	|d
|z   z  }n	 |S )z'
    "Now" timestamp in PDF Format
    r   Ni  r   rz   rˆ  rë   zD:%Y%m%d%H%M%Srž  rI	  )ÚtimerÑ  rï  ÚaltzoneÚrjustÚstrftimeÚ	localtime)rˆ  r!   rÑ
  ÚtzÚtstamps        r)   rå  rå  Ä]  sÛ   € ð €K€K€KÝ�C�” Ñ$Ñ%Ô%Ñ&Ô&×,Ò,¨Q°Ñ4Ô4€AÝ�S�” Ñ#Ñ$Ô$ rÑ)Ñ+Ô+×1Ò1°!°SÑ9Ô9€AØˆˆ�ˆˆˆ€BØˆTŒ]Ð+¨^¨T¬^Ñ-=Ô-=Ñ>Ô>€FØ„|�aÒÐØ�#˜‘(ÑˆˆØ	Œ˜Ò	Ð	Ø�#˜‘(ÑˆˆàØ€Mr*   c                  ó   — e Zd ZdZd„ ZdS )ÚElementPositionzDConvert a dictionary with element position information to an object.c                ó   — d S r,   r-   r.   s    r)   rŒ   zElementPosition.__init__Ù]  rŽ  r*   NrÐ  r-   r*   r)   r�  r�  Ö]  s)   € € € € € ØNÐNðð ð ð ð r*   r�  c                 ó   — t          ¦   «         S r,   )r�  r-   r*   r)   Úmake_story_elposr“  Ý]  s   € ÝÑÔÐr*   r•  rß  r  c                ó8  — |€| j         }t          |¦  «        }|€|j        }|€|j        }|j        |_        |j        |_        |j        s|j        rg S |  	                    dd|¬¦  «        d         }g }|D ]j}t          |d         ¦  «        }|j        s|j        rŒ&|d         D ];}t          |d         ¦  «        }|j        s|j        rŒ&| 
                    |¦  «         Œ<Œk|g k    r|S |                     d„ ¬	¦  «         |                     d¦  «        }	|	j        |j        z
  d
|	j        z  k    rEt          |j        |	j        |	j        ¦  «        }
|
j        s|
j        s|                     d|
¦  «         n|                     d|	¦  «         |g k    r|S |                     ¦   «         }|j        |j        z
  d
|j        z  k    rDt          |j        |j        |j        ¦  «        }
|
j        s|
j        s| 
                    |
¦  «         n| 
                    |¦  «         |S )aÃ  Return rectangles of text lines between two points.

    Notes:
        The default of 'start' is top-left of 'clip'. The default of 'stop'
        is bottom-reight of 'clip'.

    Args:
        start: start point_like
        stop: end point_like, must be 'below' start
        clip: consider this rect_like only, default is page rectangle
    Returns:
        List of line bbox intersections with the area established by the
        parameters.
    Nr5   r   )r¾  r  rT	  r/  rô  c                ó   — | j         S r,   )r  )r/  s    r)   r­	  z)get_highlight_selection.<locals>.<lambda>^  s   €  ¤€ r*   rÏ	  rH  )r÷   r$  rí  rî  r)  r  r  rY	  rZ	  rõ  rk   rÙ  rN  rÕ  r(  Úinsert)rÖ   r•  rß  r  rT	  rô  rÑ
  r/  ro   Úbboxfr  Úbboxls               r)   r[  r[  á]  sH  € ð  €|ØŒyˆÝ�‰:Œ:€DØ€}Ø”ˆØ€|ØŒwˆØŒg€D„GØŒf€D„GØ„}ð ˜Ô(ð Øˆ	ð �]Š]Ø�a˜dð ñ ô àô€Fð €EØð ð ˆÝ�A�f”I‰ŒˆØÔð 	˜tœ}ð 	ØØ�g”Jð 	ð 	ˆDÝ˜˜VœÑ%Ô%ˆDØÔð  4¤=ð ØØ�LŠL˜ÑÔÐÐð		ð �‚{€{Øˆà	‡J‚JÐ'Ð'€JÑ(Ô(Ð(ð �IŠI�a‰LŒL€EØ„x�%”'Ñ˜S 5¤<Ñ/Ò/Ð/Ý�”˜%œ( E¤HÑ-Ô-ˆØ”
ð 	˜aœmð 	Ø�LŠL˜˜AÑÔÐøà�Š�Q˜ÑÔÐà�‚{€{Øˆð �IŠI‰KŒK€EØ„v�”Ñ˜C %¤,Ñ.Ò.Ð.Ý�”˜4œ6 5¤8Ñ,Ô,ˆØ”
ð 	˜aœmð 	Ø�LŠL˜‰OŒOˆOøà�Š�UÑÔÐà€Lr*   c                óz   — ddl }	 t          |                     | ¦  «        ¦  «        }n# t          $ r d}Y nw xY w|S )z+Convenience function accessing unicodedata.r   Nr
  )ÚunicodedatarÅ
  Úlookuprg   )r   rš  r
  s      r)   rë
  rë
  *^  sY   € àÐÐÐðÝ�+×$Ò$ TÑ*Ô*Ñ+Ô+ˆˆøÝð ð ð Øˆˆˆðøøøà€Jó   †") ©8·8c                óŒ   — |j         |j         z
  }|j        |j        z
  }t          j        || j         z  || j        z  z   ¦  «        S r,   ©r(  r)  r�   Úfz_abs©rh  r!   rÑ
  ÚdxÚdys        r)   Úhdistr£  4^  ó=   € Ø	
ŒˆqŒs‰€BØ	
ŒˆqŒs‰€BÝŒ<˜˜SœU™
 R¨#¬%¡ZÑ/Ñ0Ô0Ð0r*   rÎ  rT  Úrowsc                óø  — t          | ¦  «        } | j        s| j        rt          d¦  «        ‚| j        }| j        |z  }| j        |z  }|d|df}d|d|f}t          ||j        |z   |j        |z   ¦  «        }|g}	t          d|¦  «        D ]}
||z  }|	 
                    |¦  «         Œ|	g}t          d|¦  «        D ]A}
||
dz
           }	g }|	D ]}| 
                    ||z   ¦  «         Œ| 
                    |¦  «         ŒB|S )a†  Return a list of (rows x cols) equal sized rectangles.

    Notes:
        A utility to fill a given area with table cells of equal size.
    Args:
        rect: rect_like to use as the table area
        rows: number of rows
        cols: number of columns
    Returns:
        A list with <rows> items, where each item is a list of <cols>
        PyMuPDF Rect objects of equal sizes.
    rã  r   r   )r$  rY	  rZ	  rÃ   rí  rÕ  r]  r(  r)  rL  rk   )r÷   rT  r¥  rí  rÕ  r]  Údelta_hÚdelta_vr  Úrowr®   ÚrectsÚnrows                r)   Ú
make_tabler¬  :^  s8  € õ �‰:Œ:€DØ„}ð >˜Ô(ð >ÝÐ<Ñ=Ô=Ð=Ø	Œ€BàŒ[˜4Ñ€FØŒJ˜Ñ€EØ�a˜ Ð"€GØ�&˜!˜VÐ$€GåˆR�”˜‘˜rœt f™}Ñ-Ô-€Að ˆ#€CÝ�1�d‰^Œ^ð ð ˆØ	ˆW‰ˆØ�
Š
�1‰Œˆˆð ˆE€EÝ�1�d‰^Œ^ð ð ˆØ�A˜‘EŒlˆØˆØð 	%ð 	%ˆAØ�KŠK˜˜G™Ñ$Ô$Ð$Ð$Ø�Š�TÑÔÐÐà€Lr*   c                ó¾  — t          j        | j        ¦  «        }t          j        |¦  «        }t          j        d¦  «        }t          j        t          j        |¦  «        t          d¦  «        t          d¦  «        ¦  «        }t          j        ||¦  «        }t          j	        |¦  «        st          j
        ||d¦  «        }t          j        |¦  «        }d}t          j        |¦  «        }t          |¦  «        D ]3}	t          j        t          j        ||	¦  «        ¦  «        }
||
k    rd} nŒ4|s+t          j        |t          j        ||d¦  «        ¦  «         dS dS )zL
    Ensure that widgets with /AA/C JavaScript are in array AcroForm/CO
    rì  r/  r0  r   r   r   N)r�   rÿ   rÄ   rŽ  r4  r  r3  r  r  rŽ  rœ  r›  r  rL  rœ  r�  r‰  )rß   r   rZ  Ú
PDFNAME_COrÏ  rì  rE   r   r  r®   r  s              r)   r%  r%  e^  sU  € õ Ô# E¤JÑ/Ô/€IÝ
Ô
& yÑ
1Ô
1€CÝÔ# DÑ)Ô)€JÝÔÝÔ˜cÑ"Ô"Ý�VÑÔÝ�ZÑ Ô ñô €Dõ 
Ô	˜D *Ñ	-Ô	-€BÝÔ˜bÑ!Ô!ð ;ÝÔ% d¨J¸Ñ:Ô:ˆÝÔ˜BÑÔ€AØ€EÝÔ˜IÑ&Ô&€DÝ�1‰XŒXð ð ˆÝÔ ¥Ô!4°R¸Ñ!;Ô!;Ñ<Ô<ˆØ�5Š=ˆ=ØˆEØˆEð ð ð GÝÔ˜R¥Ô!7¸¸TÀ1Ñ!EÔ!EÑFÔFÐFÐFÐFðGð Gr*   rÁ  c                ó¬   ‡‡‡— d„ Šd„ Šˆˆˆfd„} |¦   «         \  }}	}
}| � ‰| ¦  «        \  }}	|� ‰|¦  «        \  }
}|�|}|�|}	|�|}
|�|}||	|
|fS )aß  
    Helper for initialising rectangle classes.
    
    2022-09-02: This is quite different from PyMuPDF's util_make_rect(), which
    uses `goto` in ways that don't easily translate to Python.

    Returns (x0, y0, x1, y1) derived from <args>, then override with p0, p1,
    x0, y0, x1, y1 if they are not None.

    Accepts following forms for <args>:
        () returns all zeros.
        (top-left, bottom-right)
        (top-left, x1, y1)
        (x0, y0, bottom-right)
        (x0, y0, x1, y1)
        (rect)

    Where top-left and bottom-right are (x, y) or something with .x, .y
    members; rect is something with .x0, .y0, .x1, and .y1 members.

    2023-11-18: we now override with p0, p1, x0, y0, x1, y1 if not None.
    c                óø   — t          | t          t          f¦  «        r#t          | ¦  «        dk    r| d         | d         fS t          | t          t
          j        t
          j        f¦  «        r| j        | j	        fS dS )Nr   r   r   rí	  )
r>   r´   rµ   r7   rì  r�   r&  rV  r(  r)  )r‘  s    r)   Úget_xyzutil_make_rect.<locals>.get_xy˜^  sh   € Ý�s�T¥5˜MÑ*Ô*ð 	"­s°C©y¬y¸Aª~¨~Ø�q”6˜3˜qœ6�>Ð!Ý�s�U¥E¤Mµ5´>ÐBÑCÔCð 	 Ø”5˜#œ%�<ÐØˆzr*   c                óP  — t          | t          ¦  «        r| S t          | t          ¦  «        r| j        | j        fS t          | t
          t          t          j        t          j	        f¦  «        r| j
        | j        | j        | j        fS t          | t          t          f¦  «        s| f} | S r,   )r>   rµ   rì  r(  r)  r$  re  r�   rh  Úfz_rectr
  r  r	  r  r´   ra  s    r)   Ú
make_tuplez"util_make_rect.<locals>.make_tuplež^  s�   € Ý�q�%Ñ Ô ð 	ØˆHÝ�q�%Ñ Ô ð 	*Ø”3˜œ�8ˆOÝ˜�T¥5­%¬,½¼ÐFÑGÔGð 	*Ø”4˜œ˜qœt Q¤TÐ)Ð)Ý˜1�t¥U˜mÑ,Ô,ð 	Ø�ˆAØˆr*   c                 óV  •— t          ‰¦  «        dk    rdS t          ‰¦  «        dk    �r ‰d         } t          | t          t          f¦  «        r6t          | ¦  «        dk    r#| \  }}g |¢|¢R }t          |¦  «        dk    sJ ‚|S t          | t          t          f¦  «        rZt          | ¦  «        dk    rG| \  }}} ‰|¦  «        } ‰|¦  «        } ‰|¦  «        }g |¢|¢|¢R }t          |¦  «        dk    sJ ‚|S  ‰| ¦  «        }t          |¦  «        dk    sJ d| ›d|›�¦   «         ‚|S t          ‰¦  «        dk    r: ‰‰d         ¦  «         ‰‰d         ¦  «        z   }t          |¦  «        dk    sJ ‚|S t          ‰¦  «        dk    r] ‰‰d         ¦  «        \  }}||fd	k    r||‰d         ‰d         fS  ‰‰d         ¦  «        \  }	}
|	|
fd	k    r‰d         ‰d         |	|
fS n1t          ‰¦  «        dk    r‰d         ‰d         ‰d         ‰d         fS t	          d
‰› �¦  «        ‚)Nr   r  r   r   rK  r   zarg=z ret=rí	  r  )r7   r>   r´   rµ   rg   )r‘  r  r  rG   r!   rÑ
  r¼  r
  r  r	  r  r÷  r±  r´  s              €€€r)   Úhandle_argsz#util_make_rect.<locals>.handle_args¨^  sb  ø€ Ýˆt‰9Œ9˜Š>ˆ>Ø�:Ý�‰YŒY˜!Š^‰^Ø�q”'ˆCÝ˜3¥¥u Ñ.Ô.ð µ3¸±9´9À²>°>Ø‘��BØ�r�h˜B�h�h�Ý˜3‘x”x 1’}�}�}�}Ø�
Ý˜3¥¥u Ñ.Ô.ð µ3¸±9´9À²>°>Ø‘��1�aØ�J˜q‘M”M�Ø�J˜q‘M”M�Ø�J˜q‘M”M�Ø �q�j˜1�j˜q�j�j�Ý˜3‘x”x 1’}�}�}�}Ø�
Ø�*˜cÑ"Ô"ˆCÝ�s‘8”8˜q’=�=�=Ð"2 SÐ"2Ð"2¨CÐ"2Ð"2‘=”=�=ØˆJÝ�‰YŒY˜!Š^ˆ^Ø�&˜$˜qœ'Ñ"Ô" V V¨T°!¬WÑ%5Ô%5Ñ5ˆCÝ�s‘8”8˜q’=�=�=�=ØˆJÝ�‰YŒY˜!Š^ˆ^Ø�V˜T !œWÑ%Ô%‰FˆB�Ø�Bˆx˜<Ò'Ð'Ø˜2˜t Aœw¨¨Q¬Ð/Ð/Ø�V˜T !œWÑ%Ô%‰FˆB�Ø�Bˆx˜<Ò'Ð'Ø˜A”w  Q¤¨¨RÐ/Ð/ð (å�‰YŒY˜!Š^ˆ^Ø˜”7˜D œG T¨!¤W¨d°1¬gÐ5Ð5ÝÐ5¨tÐ5Ð5Ñ6Ô6Ð6r*   r-   )r€  r  r
  r  r	  r  r÷  r¶  Úret_x0Úret_y0Úret_x1Úret_y1r±  r´  s         `     @@r)   rÃ  rÃ  �^  sº   øøø€ ð.ð ð ð	ð 	ð 	ð"7ð "7ð "7ð "7ð "7ð "7ð "7ðF &1 [¡]¤]Ñ"€FˆF�F˜FØ	€~¨¨°©¬™˜ Ø	€~¨¨°©¬™˜ Ø	€~ ˜Ø	€~ ˜Ø	€~ ˜Ø	€~ ˜Ø�6˜6 6Ð)Ð)r*   c           
     ó    — t          || |||||dœŽ\  }}}	}
d„ } ||d¦  «        } ||d¦  «        } ||	d¦  «        }	 ||
d¦  «        }
|||	|
fS )NrÁ  c                óŠ   — |r!t          t          j        | ¦  «        ¦  «        S t          t          j        | ¦  «        ¦  «        S r,   )r4   rJ  r•  Úfloor)r(  r•  s     r)   Úconvertz util_make_irect.<locals>.convert×^  s6   € Øð 	&Ý•t”y ‘|”|Ñ$Ô$Ð$å•t”z !‘}”}Ñ%Ô%Ð%r*   FT)rÃ  )r€  r  r
  r  r	  r  r÷  r!   rÑ
  r¼  r
  r¾  s               r)   rþ  rþ  Õ^  s‰   € Ý $¨2°"¸ÀÀrÈbÐQÐQÐQ�J€A€qˆ!ˆQð&ð &ð &ð
 	ˆ��5ÑÔ€AØˆ��5ÑÔ€AØˆ��4ÑÔ€AØˆ��4ÑÔ€AØˆa��Aˆ:Ðr*   c                ó^   — t          t          j        t          | ¦  «        ¦  «        ¦  «        S r,   )rÇ  r�   r}  r   rØ  s    r)   r  r  ã^  s#   € Ý�EÔ/µÀÑ0EÔ0EÑFÔFÑGÔGÐGr*   c                ó²   — t           rt          j        | |¦  «        S t          t	          j        t          | ¦  «        t          |¦  «        ¦  «        ¦  «        S r,   )r  r   r  rg  r�   r©  r   rÓ  )r÷   rÙ  s     r)   r  r  ç^  sJ   € Ýð 8ÝÔ(¨$°Ñ7Ô7Ð7Ý�5Ô2µ?À4Ñ3HÔ3HÕJ[Ð\bÑJcÔJcÑdÔdÑeÔeÐer*   c                óz   — t          t          j        t          | ¦  «        t          |¦  «        ¦  «        ¦  «        S r,   )rg  r�   r|  r   ©rl  rm  s     r)   rë  rë  í^  s:   € ÝÝÔ#Ý Ñ#Ô#Ý Ñ#Ô#ñô ñô ð r*   c                ó`   — t          j        t          | ¦  «        t          |¦  «        ¦  «        S r,   )r�   Úfz_is_point_inside_rectr`  r   )r¢  r  s     r)   r»  r»  ö^  s-   € ÝÔ(Ý  Ñ#Ô#Ý Ñ"Ô"ñô ð r*   c                óz   — t          t          j        t          | ¦  «        t	          |¦  «        ¦  «        ¦  «        S r,   )rg  r�   ré  r   r`  )r  r¢  s     r)   rç  rç  ü^  s:   € ÝÝÔ*Ý Ñ"Ô"Ý  Ñ#Ô#ñô ñô ð r*   c                óh   — t          | ¦  «        }t          |¦  «        }t          j        ||¦  «        S r,   )r`  rŽ  r�   Úfz_is_point_inside_quad)rÂ  rö   r¢  r’  s       r)   r…  r…  _  s/   € Ý˜ÑÔ€AÝ˜ÑÔ€AÝÔ(¨¨AÑ.Ô.Ð.r*   c                óz   — t          t          j        t          | ¦  «        t	          |¦  «        ¦  «        ¦  «        S r,   )rJ  r�   r'  r`  rÓ  )r-  rÙ  s     r)   rv  rv  _  s:   € ÝÝÔ$Ý  Ñ'Ô'Ý! &Ñ)Ô)ñô ñô ð r*   c                óz   — t          t          j        t          | ¦  «        t          |¦  «        ¦  «        ¦  «        S r,   )rg  r�   r3  r   rÂ  s     r)   ré  ré  _  s:   € ÝÝÔÝ Ñ#Ô#Ý Ñ#Ô#ñô ñô ð r*   c                óz   — t          t          j        t          | ¦  «        t          |¦  «        ¦  «        ¦  «        S r,   )rq  r�   r%  rÓ  )rh  r�  s     r)   r„  r„  _  s9   € ÝÝŒOÝ! "Ñ%Ô%Ý! "Ñ%Ô%ñô ñô ð r*   c                óH  — 	 t'          | ¦  «        }|j        }||j
        z  |j        |j	        z  z
  }|t           j        j         k     s|t           j        j        k    rÅt          j        ¦   «         }d|z  }|j
        |z  |_        |j         |z  |_        |j	         |z  |_	        ||z  |_
        |j         |j        z  |j        |j	        z  z
  }|j         |j        z  |j        |j
        z  z
  |_        ||_        d|j        |j        |j	        |j
        |j        |j        ffS dS )Nr   ztype(matrix)=r{   r   )r   r-   )r>   rµ   r´   r�   rr  r»  ru  r!   rÑ
  r¼  r
  r`  rÎ  rÈ   rs  rï  r�
  Ú
float_infoÚepsilonrÓ  )rÙ  rG   rÖ  r!   Údetr  Úrdets          r)   r  r  &_  s  € ð=õ( ˜FÑ
#Ô
#€CØŒ€AØ
ˆcŒe‰)�c”e˜cœe‘mÑ
#€CØ
�cŒnÔ$Ð$Ò$Ð$¨­c¬nÔ.DÒ(DÐ(DÝŒnÑÔˆØ�3‰wˆØ”˜‘ˆŒØ”�˜‘ˆŒØ”�˜‘ˆŒØ�D‘ˆŒØŒUˆF�S”U‰N˜SœU S¤U™]Ñ*ˆØ”�˜œ‘ ¤¨¬¡Ñ.ˆŒØˆŒØ�3”5˜#œ% ¤¨¬¨s¬u°c´eÐ<Ð<Ð<àˆ5r*   c                ó   — t          j        |¦  «        }d}d}|t          | ¦  «        k     rÍt          j        | |d …         ¦  «        \  }}||z  }|t           j        k    rt          j        |¦  «        }n9|t           j        k    rt          j        |¦  «        }nt          j        |¦  «        }|dk     rd}t          j	        ||¦  «        }	t          j
        ||	d¦  «        }
||
z  }|t          | ¦  «        k     °Í||z  }|S )Nr   ri  )r�   r‹  r7   r  ÚPDF_SIMPLE_ENCODING_GREEKÚfz_iso8859_7_from_unicodeÚPDF_SIMPLE_ENCODING_CYRILLICÚfz_windows_1251_from_unicodeÚfz_windows_1252_from_unicoder#  r$  )r   rù   rú   rë  rW  r   rk  rD  r¼  rþ  rÊ  rG   s               r)   r|  r|  M_  sþ   € ÝÔ# HÑ-Ô-€DØ	€AØ
€CØ
•�D‘	”	Š/ˆ/ÝÔ" 4¨¨¨¤:Ñ.Ô.‰ˆˆ1Øˆq‰ˆØ•uÔ6Ò6Ð6ÝÔ/°Ñ2Ô2ˆAˆAØ�Ô;Ò;Ð;ÝÔ2°1Ñ5Ô5ˆAˆAåÔ2°1Ñ5Ô5ˆAØˆqŠ5ˆ5ØˆAÝÔ% d¨AÑ.Ô.ˆÝÔ# D¨!¨QÑ/Ô/ˆØ	ˆR‰ˆð •�D‘	”	Š/ˆ/ð ˆh‰,€CØ€Jr*   c                ó  — t          | ¦  «        }t          |¦  «        }t          |¦  «        }t          j        t          j        |j        |j        z
  |j        |j        z
  ¦  «        ¦  «        }t          j        dddd|j         |j         ¦  «        }t          j        |j        |j         |j        |j        dd¦  «        }t          j        ||¦  «        }t          j        ||¦  «        }t          j        |¦  «        }|j        S )Nr   r   )	r`  r�   r½  r  r(  r)  r±  r%  r'  )	ræ  rÂ  rö   r¼  r¢  r’  rr  rh  r�  s	            r)   r£  r£  c_  sÖ   € å˜ÑÔ€AÝ˜ÑÔ€AÝ˜ÑÔ€AÝÔ!¥%Ô"5°a´c¸A¼C±iÀÄÀqÄsÁÑ"KÔ"KÑLÔL€AÝ	Ô	˜a  A q¨1¬3¨$°´°Ñ	5Ô	5€BÝ	Ô	˜aœc A¤C 4¨¬¨a¬c°1°aÑ	8Ô	8€BÝ	Œ˜˜RÑ	 Ô	 €BÝÔ   BÑ'Ô'€AÝÔ! !Ñ$Ô$€AØŒ3€Jr*   c                óª  — t          | ¦  «        }t          |¦  «        }t          j        t          j        |j        |j        z
  |j        |j        z
  ¦  «        ¦  «        }t          j        dddd|j         |j         ¦  «        }t          j        |j        |j         |j        |j        dd¦  «        }t          t          j        ||¦  «        ¦  «        S )z‡
    Return the matrix that maps two points C, P to the x-axis such that
    C -> (0,0) and the image of P have the same distance.
    r   r   )	r`  r�   r½  r  r(  r)  r±  rq  r%  )ræ  rÂ  r¼  r¢  rr  rh  r�  s          r)   r�  r�  q_  s­   € õ
 	˜ÑÔ€AÝ˜ÑÔ€Aõ 	Ô!¥%Ô"5°a´c¸A¼C±iÀÄÀqÄsÁÑ"KÔ"KÑLÔL€Aå	Ô	˜a  A q¨1¬3¨$°´°Ñ	5Ô	5€BÝ	Ô	˜aœc A¤C 4¨¬¨a¬c°1°aÑ	8Ô	8€BÝ�Uœ_¨R°Ñ4Ô4Ñ5Ô5Ð5r*   c                óZ  — d}d}|}t          | |d …         ¦  «        \  }}||z  }t          ||d …         ¦  «        \  }}||z  }||k    rØ|}|t          d¦  «        k    r6	 t          | |d …         ¦  «        \  }}||z  }|t          d¦  «        k    rnŒ4nt          | |d …         ¦  «        \  }}||z  }|t          d¦  «        k    r6	 t          ||d …         ¦  «        \  }}||z  }|t          d¦  «        k    rnŒ4nt          ||d …         ¦  «        \  }}||z  }||k    °Ø|dk    rd n|S )Nr   r³   )r|  rÅ
  )	Úh0r€  rÆ  rE   r`  r§  ÚhcÚdelta_nÚncs	            r)   r†  r†  �_  sj  € Ø	€AØ	€AØ	€AÝ˜b   œfÑ%Ô%�K€GˆRØˆ�L€AÝ˜b   œfÑ%Ô%�K€GˆRØˆ�L€AØ
�Š(ˆ(ØˆØ•�S‘”Š>ˆ>ðÝ)¨"¨Q¨R¨R¬&Ñ1Ô1‘�˜Ø�W‘�Ø�˜S™œ’>�>Øð	ð å% b¨¨¨¤fÑ-Ô-‰KˆG�RØ�‰LˆAØ•�S‘”Š>ˆ>ðÝ)¨"¨Q¨R¨R¬&Ñ1Ô1‘�˜Ø�W‘�Ø�˜S™œ’>�>Øð	ð å% b¨¨¨¤fÑ-Ô-‰KˆG�RØ�‰LˆAð' �Š(ˆ(ð( ˜’7�7ˆ4ˆ4 Ð!r*   c                óD  — | sJ ‚t          |t          j        ¦  «        sJ ‚t          |t          j        ¦  «        sJ ‚|j        j        | j        z  }|j        j        | j        z  }t          ||¦  «        }| j	        dk    rö| j
        | j	        dz
           }t          |¦  «        }	 t          |j        j        |j        |j        ¦  «        |k     r¨t!          |j        j        |j        |j        ¦  «        |k     rt          |j        j        |j        |j        ¦  «        |k     rVt!          |j        j        |j        |j        ¦  «        |k     r-|j        |_        |j        |_        | j
        d         |k    sJ ‚d S | j
                             |¦  «         | xj	        dz  c_	        d S r¶  )r>   r�   rÞ  rß  rÌ   r¸  rÈ  rÇ  rÓ  r7   rk	  rŽ  r£  rh  r’  r‘  Úvdistr“  r¤  rk   )rÍ  ro   rú  rÈ  rÇ  Úch_quadr  r–  s           r)   rË  rË   _  st  € Ø€K€Kˆ4Ý�d�EÔ-Ñ.Ô.Ð.Ð.Ð.Ý�b�%Ô+Ñ,Ô,Ð,Ð,Ð,ØŒMÔ ¤Ñ+€EØŒMÔ ¤Ñ+€EÝ˜4 Ñ$Ô$€GØ„x�!‚|€|àŒz˜$œ( Q™,Ô'ˆÝ˜dÑ#Ô#ˆð		Ý˜$œ/Ô-¨s¬v°w´zÑBÔBÀUÒJÐJÝ˜$œ/Ô-¨s¬v°w´zÑBÔBÀUÒJÐJÝ˜$œ/Ô-¨s¬v°w´zÑBÔBÀUÒJÐJÝ˜$œ/Ô-¨s¬v°w´zÑBÔBÀUÒJÐJà”ZˆCŒFØ”ZˆCŒFØ”:˜b”> SÒ(Ð(Ð(Ð(ØˆFØ„J×Ò�gÑÔÐØ€H„H��M€H„H€H€Hr*   c                ób  — t           rt          j        | |||||||¦  «        S t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d¦  «        t          d	¦  «        g	}t	          j        ||¦  «        }	t	          j        | d
¦  «        }
t	          j        |
t          d¦  «        t          d¦  «        ¦  «         t          t          |¦  «        ¦  «        D ]X}t	          j
        |	||         ¦  «        }|j        r4t	          j        |
||         t	          j        |j        |¦  «        ¦  «         ŒY|�ræt	          j        |	t          d¦  «        ¦  «        }t	          j        |¦  «        }|dk    �r©t	          j        |
t          d¦  «        |¦  «        }t          |¦  «        D �]u}t	          j        ||¦  «        }|j        rt	          j        |¦  «        sŒ4t	          j        |d¦  «        j        rŒOt	          j        |t          d¦  «        ¦  «        }t	          j        |t          d¦  «        ¦  «        rŒ”t	          j        |t          d¦  «        ¦  «        rŒ·t	          j        |t          d¦  «        ¦  «        rŒÚt	          j        |t          d¦  «        ¦  «         t	          j        |t          d¦  «        ¦  «         t	          j        |j        |¦  «        }t	          j        | t	          j        |¦  «        d¦  «        }t	          j        ||¦  «         �Œw|dk    r#t	          j        |
t          d¦  «        |¦  «         t	          j        | |
¦  «        }t	          j        | ||¦  «         dS )z¹
    Deep-copies a source page to the target.
    Modified version of function of pdfmerge.c: we also copy annotations, but
    we skip some subtypes. In addition we rotate output.
    r  r5  r*  r3  r4  r5  r6  r4  ÚUserUnitrK  r6  rÒ   r—  r   r  r†  r  r–  r:  rÂ  r1  N)r  r   rx  r  r�   rE  rS  rN  rL  r7   rF  rÌ   rÉ  rÄ   r  r›  rœ  rœ  rz  rþ   rý  rA  r‰  r  r�  rI  r�  ru  )ry  rz  Ú	page_fromÚpage_torY  r}  Úcopy_annotsr~  Úknown_page_objsÚpage_refr'  r®   r  r6  rE   r7  r¡  r  r8  rß   r	  s                        r)   rx  rx  ¹_  sc  € õ ð nåÔ ¨'°9¸gÀvÈuÐVaÐclÑmÔmÐmõ 	�ÑÔÝ�ÑÔÝ�ÑÔÝ�ÑÔÝ�ÑÔÝ�ÑÔÝ�ÑÔÝ�ÑÔÝ�ÑÔð

€Oõ Ô(¨°)Ñ<Ô<€Hõ Ô" 7¨AÑ.Ô.€IÝ	Ô�y¥(¨6Ñ"2Ô"2µH¸VÑ4DÔ4DÑEÔEÐEõ •C˜Ñ(Ô(Ñ)Ô)ð sð sˆÝÔ,¨h¸ÈÔ8JÑKÔKˆØŒ>ð 	såÔ 	¨?¸1Ô+=½uÔ?\Ð]fÔ]kÐmpÑ?qÔ?qÑrÔrÐrøð ñ 9ÝÔ'¨µ8¸HÑ3EÔ3EÑFÔFˆ
ÝÔ Ñ,Ô,ˆØˆqŠ5‰5ÝÔ1°9½hÀxÑ>PÔ>PÐRSÑTÔTˆJÝ˜1‘X”Xð 9ñ 9�ÝÔ'¨°QÑ7Ô7�Ø”|ð ­5Ô+<¸QÑ+?Ô+?ð ØÝÔ&¨¨5Ñ1Ô1Ô<ð ØÝÔ,¨aµ¸)Ñ1DÔ1DÑEÔE�ÝÔ$ g­x¸Ñ/?Ô/?Ñ@Ô@ð ØÝÔ$ g­x¸Ñ/@Ô/@ÑAÔAð ØÝÔ$ W­h°xÑ.@Ô.@ÑAÔAð ØÝÔ" A¥x°Ñ'8Ô'8Ñ9Ô9Ð9ÝÔ" A¥x°¡}¤}Ñ5Ô5Ð5ÝÔ6¸	¼ÈÑJÔJ�ÝÔ.°½Ô9IÈ6Ñ9RÔ9RÐTUÑVÔV�ÝÔ$ j°%Ñ8Ô8Ð8Ñ8ð �‚|€|ÝÔ 	­8°HÑ+=Ô+=¸vÑFÔFÐFå
Ô
 ¨Ñ
3Ô
3€Cõ 
Ô˜7 G¨SÑ1Ô1Ð1Ð1Ð1r*   c                óJ   — t          | ¦  «        \  }}t          dd||¦  «        S )z‰Return a Rect for the paper size indicated in string 's'. Must conform to the argument of method 'PaperSize', which will be invoked.
    rž  )Ú
paper_sizer$  )rr  r]  rÕ  s      r)   Ú
paper_rectré   `  s'   € õ ˜q‘M”M�M€Eˆ6Ý��S˜% Ñ(Ô(Ð(r*   c                ó"  — |                       ¦   «         }d}|                     d¦  «        rd}|dd…         }|                     d¦  «        r
|dd…         }t          ¦   «                              |d¦  «        }|dk    r|S |d         |d	         fS )
zÑReturn a tuple (width, height) for a given paper format string.

    Notes:
        'A4-L' will return (842, 595), the values for A4 landscape.
        Suffix '-P' and no suffix return the portrait tuple.
    r¢  z-lr  Nr×  z-prª  r   r   )rÒ  rß  Úpaper_sizesr8   )rr  r¸  rÎ  r    s       r)   rè  rè  `  s–   € ð �7Š7‰9Œ9€DØ€AØ‡}‚}�TÑÔð ØˆØ�C�R�CŒyˆØ‡}‚}�TÑÔð Ø�C�R�CŒyˆÝ	‰Œ×	Ò	˜4 Ñ	*Ô	*€BØˆC‚x€xØˆ	ØˆqŒE�2�a”5ˆ>Ðr*   c                 óð   — i dd“dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd “d!d"“i d#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d8“d9d:“d;d<“d=d>“d?d@“dAdB“dCdD“¥dEdFdGdHdIdJdKdLdMdNdOœ
¥S )Pa6  Known paper formats @ 72 dpi as a dictionary. Key is the format string
    like "a4" for ISO-A4. Value is the tuple (width, height).

    Information taken from the following web sites:
    www.din-formate.de
    www.din-formate.info/amerikanische-formate.html
    www.directtools.de/wissen/normen/iso.htm
    Úa0)éP	  i*  Úa1)é”  rî  Úa10)r™  r½  Úa2)é§  rð  Úa3)rn  ró  Úa4)rm  rn  Úa5)é¤  rm  Úa6)é*  r÷  Úa7)r	  rù  Úa8)é“   r	  Úa9)r½  rü  Úb0)é  i¨  Úb1)éÔ  rÿ  Úb10)r«  rÔ  Úb2)é‰  r  Úb3)éé  r  Úb4)éÅ  r  Úb5)éó  r  Úb6)éb  r
  rQ  )r2  r  Úb8)ré  r2  Úb9)rÔ  ré  Úc0)é'
  i]  Úc1)é-  r  Úc10)r   rÇ  Úc2)é  r  Úc3)é–  r  Úc4)é‰  r  Úc5)éË  r  Úc6)éC  r  Úc7)r  r  Úc8)rØ  r  Úc9)rÇ  rØ  zcard-4x6)i   i°  )r´  iø  )i)  i¬  )i
  iô  )iŒ  rq  )rr  iÈ  )rq  ið  )rq  i¨  )rq  rr  )i  i  )i`  i  )
zcard-5x7Ú
commercialÚ	executiveÚinvoiceÚledgerÚlegalzlegal-13ÚletterÚmonarchztabloid-extrar-   r-   r*   r)   rë  rë  `  sá  € ð-
Øˆlð-
àˆlð-
ð 	ˆyð-
ð 	ˆlð	-
ð
 	ˆkð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆjð-
ð 	ˆlð-
ð 	ˆlð-
ð 	ˆyð-
ð 	ˆlð-
ð  	ˆlð!-
ð" 	ˆkð#-
ð -
ð$ 	ˆjð%-
ð& 	ˆjð'-
ð( 	ˆjð)-
ð* 	ˆjð+-
ð, 	ˆjð--
ð. 	ˆlð/-
ð0 	ˆlð1-
ð2 	ˆyð3-
ð4 	ˆlð5-
ð6 	ˆkð7-
ð8 	ˆjð9-
ð: 	ˆjð;-
ð< 	ˆjð=-
ð> 	ˆjð?-
ð@ 	ˆjðA-
ðB 	ˆjðC-
ðD 	�JðE-
ð -
ðF Ø ØØØØØØØØ$ðY-
ð -
ð -
ð -
r*   c                ó,   — t          j        | |¦  «        S r,   )r�   r]  )r*  rœ  s     r)   r]  r]  S`  s   € ÝÔ$ S¨&Ñ1Ô1Ð1r*   c                ó   — J d¦   «         ‚)zH
    Returns description of mupdf.PdfObj (wrapper for pdf_obj) <o>.
    r   zuse mupdf.pdf_debug_obj() ?)r�   rŽ  r›  rL  rœ  Úpdfobj_stringr`  Úarray_get_boolrz  r{  r}  r  Úpdf_is_embedded_fileÚembedded_file_namer 	  rc
  r  Úpdf_is_jpx_imager»  ry  rþ  rd
  rï  r  re
  rv  )r¡  rÊ	  rG   r  r®   Úoor  r¸   s           r)   r*  r*  W`  s   € ð ,Ð+Ñ+Ô+ˆ1r*   ú'Font'c                ó‚  ‡— ‰j         d         sdS | j        }|                      ¦   «         }ˆfd„|D ¦   «         }|g k    rdS t          |¦  «        }t	          t          ‰                     d¦  «        dz  ¦  «        ¦  «        }|D ]9}t                               |||¦  «        st          d‰j
        › d|d›�¦  «         Œ:dS )	aÞ  Repair character spacing for mono fonts.

    Notes:
        Some mono-spaced fonts are displayed with a too large character
        distance, e.g. "a b c" instead of "abc". This utility adds an entry
        "/W[0 65535 w]" to the descendent font(s) of font. The float w is
        taken to be the width of 0x20 (space).
        This should enforce viewers to use 'w' as the character width.

    Args:
        page: pymupdf.Page object.
        font: pymupdf.Font object.
    rÒ
  Nc                ó®   •— g | ]Q}|d          ‰j         k    ¯|d                              d¦  «        ¯.|d                              d¦  «        ¯I|d         ‘ŒRS )r   rK  r§  r   rž  r   )r   r3   )r­   rÎ  rW  s     €r)   r¯   z$repair_mono_font.<locals>.<listcomp>›`  sb   ø€ ð ð ð àØˆaŒD�D”IÒÐ ! A¤$§/¢/°#Ñ"6Ô"6Ð¸1¸Q¼4¿?º?È:Ñ;VÔ;VÐð 	
ˆ!ŒàÐÐr*   rˆ  iè  zCannot set width for 'z
' in xref r
  )r¾  rê   r‹  rØ  r4   r`  rä
  r  Úset_font_widthr'   r   )rÖ   rW  r*  r[  rC  r]  r  s    `     r)   rë  rë  ‰`  s÷   ø€ ð Œ:�fÔð ØˆtØ
Œ+€CØ�~Š~ÑÔ€Hðð ð ð àðñ ô €Eð
 �‚{€{ØˆÝ�‰JŒJ€EÝ•�t×)Ò)¨"Ñ-Ô-°Ñ4Ñ6Ô6Ñ7Ô7€EØð Hð HˆÝ×#Ò# C¨¨uÑ5Ô5ð 	HÝÐF¨¬ÐFÐF¸dÐFÐFÐFÑGÔGÐGøðHð Hr*   Úsrgbc                ó`   — t          | ¦  «        }|d         dz  |d         dz  |d         dz  fS )a  Convert sRGB color code to a PDF color triple.

    There is **no error checking** for performance reasons!

    Args:
        srgb: (int) RRGGBB (red, green, blue), each color in range(255).
    Returns:
        Tuple (red, green, blue) each item in interval 0 <= item <= 1.
    r   g     ào@r   r   )r  )r4  rD  s     r)   ÚsRGB_to_pdfr6  ©`  s6   € õ 	�DÑÔ€AØˆQŒ4�%‰<˜˜1œ ™ q¨¤t¨e¡|Ð3Ð3r*   c                óR   — | dz  } | dz	  }| |dz  z
  dz	  }| |dz  z
  |dz  z
  }|||fS )aI  Convert sRGB color code to an RGB color triple.

    There is **no error checking** for performance reasons!

    Args:
        srgb: (int) SSRRGGBB (red, green, blue), each color in range(255).
        With MuPDF < 1.26, `s` is always 0.
    Returns:
        Tuple (red, green, blue) each item in interval 0 <= item <= 255.
    iÿÿÿ r
  r   r-   )r4  r  rþ  rÑ
  s       r)   r  r  ·`  sM   € ð 	ˆHÑ€DØ�‰
€AØ	��b‘Ñ	˜aÑ€AØ��R‘Ñ˜A ™FÑ#€AØˆq�!ˆ9Ðr*   c                óâ   — |rt          j        |¦  «        nd}t          j        | ¦  «        }t          d|d¦  «        D ]0}t          j        t          j        ||¦  «        ¦  «        |k    r dS Œ1dS )Nr   r   r   )r�   r›  r  rL  rœ  )r¢  r�  rE   Ústr_r®   s        r)   r~  r~  É`  sz   € Ø,6Ð=�Ô˜ZÑ(Ô(Ð(¸A€AÝÔ# QÑ'Ô'€DÝ�1�a˜‰^Œ^ð ð ˆÝÔ#¥UÔ%8¸*ÀaÑ%HÔ%HÑIÔIÈTÒQÐQØ�1�1ð Ràˆ1r*   c                óV  — d}d}|}d}|j         �r•t          | ||||¦  «        }	t          ||||¦  «        �s3|	dk    rÆt          j        |t          d¦  «        ¦  «        }
|
j         s*|j         r"t          j        |t          d¦  «        ¦  «         np|j         rGt          j        |t          d¦  «        |
¦  «         t          j        |
t          d¦  «        |¦  «         n"t          j        |
t          d¦  «        ¦  «         |
}n›t          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        ¦  «        }n4|r|j         s|}|}t          j        |t          d¦  «        ¦  «        }|dz  }|j         �°•|||fS )z'
    Returns (count, first, prev).
    Nr   r�  ÚPrevr  r  r   )rÌ   Ústrip_outlinesr‚  r�   r  r  rA  rN  )r*  ÚoutlinesrÐ  r€  r�  rE  r  Úcurrentr¸  rÜ  r=  s              r)   Ústrip_outliner?  Ò`  sÁ  € ð €EØ€EØ€GØ€DØ
Ô
ñ õ ˜C ¨*Ð6FÈ
ÑSÔSˆå˜W jÐ2BÀJÑOÔOñ 	Ø�QŠwˆwõ Ô)¨'µ8¸FÑ3CÔ3CÑDÔD�Ø”ð ?à”ð CÝÔ*¨4µ¸&Ñ1AÔ1AÑBÔBÐBøØ”_ð ?ÝÔ& t­X°fÑ-=Ô-=¸tÑDÔDÐDÝÔ& t­X°fÑ-=Ô-=¸tÑDÔDÐDÐDåÔ& t­X°fÑ-=Ô-=Ñ>Ô>Ð>Ø��õ Ô" 7­H°VÑ,<Ô,<Ñ=Ô=Ð=ÝÔ" 7­H°S©M¬MÑ:Ô:Ð:ÝÔ,¨Wµh¸vÑ6FÔ6FÑGÔG��ð ð   Ô 0ð  Ø�ØˆDÝÔ(¨µ(¸6Ñ2BÔ2BÑCÔCˆGØ�Q‰JˆEð? Ô
ñ ðB �%˜ÐÐr*   c                óè  — |j         sdS t          j        |t          d¦  «        ¦  «        }|j         sd}nt	          | ||||¦  «        \  }}}|dk    rgt          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        ¦  «         t          j        |t          d¦  «        ¦  «         n¸t          j        t          j        |t          d¦  «        ¦  «        ¦  «        }t          j        |t          d¦  «        |¦  «         t          j        |t          d¦  «        |¦  «         t          j        |t          d¦  «        t          j        |dk    r|n| ¦  «        ¦  «         |S )Nr   r?  ÚLastr
  )	rÌ   r�   r  r  r?  rA  r  rN  r  )	r*  r=  rÐ  r€  r�  rE  rÜ  rÔ	  Ú	old_counts	            r)   r<  r<  þ`  sY  € ØÔð ØˆqåÔ˜x­°'Ñ):Ô):Ñ;Ô;€EØÔð ^Øˆˆå'¨¨U°JÐ@PÐR\Ñ]Ô]‰ˆˆE�4à	ˆQ‚w€wÝÔ˜8¥X¨gÑ%6Ô%6Ñ7Ô7Ð7ÝÔ˜8¥X¨fÑ%5Ô%5Ñ6Ô6Ð6ÝÔ˜8¥X¨gÑ%6Ô%6Ñ7Ô7Ð7Ð7åÔ$¥UÔ%7¸Å(È7ÑBSÔBSÑ%TÔ%TÑUÔUˆ	ÝÔ˜8¥X¨gÑ%6Ô%6¸Ñ>Ô>Ð>ÝÔ˜8¥X¨fÑ%5Ô%5°tÑ<Ô<Ð<ÝÔ˜8¥X¨gÑ%6Ô%6½Ô8IÐPYÐ\]ÒP]ÐP]È"È"ÐdfÐcfÑ8gÔ8gÑhÔhÐhØ€Ir*   rú  c                óz   — ddl }	 |                     t          | ¦  «        ¦  «        }n# t          $ r d}Y nw xY w|S )z5
    Convenience function accessing unicodedata.
    r   Nz.notdef)rš  r   r
  rÃ   )rú  rš  r   s      r)   r  r  a  sY   € ð ÐÐÐðØ×Ò¥ B¡¤Ñ(Ô(ˆˆøÝð ð ð Øˆˆˆðøøøà€Krœ  c                óŒ   — |j         |j         z
  }|j        |j        z
  }t          j        || j        z  || j         z  z   ¦  «        S r,   rž  r   s        r)   rÞ  rÞ  &a  r¤  r*   r-   Úsingle)	Úpagefn_argsÚpagefn_kwargsÚinitfnÚinitfn_argsÚinitfn_kwargsrƒ  r$  ÚconcurrencyÚ_statsc       	        óà  — |
rt          j         ¦   «         }|dk    ru|r ||i |¤Ž t          ¦   «         }t          | ¦  «        }|€t          t	          |¦  «        ¦  «        }|D ]+}||         } ||g|¢R i |¤Ž}|                     |¦  «         Œ,�n2ddlm} |€’|
rt          j         ¦   «         }t          | ¦  «        5 }t	          |¦  «        }t          t          |¦  «        ¦  «        }ddd¦  «         n# 1 swxY w Y   |
r)t          j         ¦   «         |z
  }t          |d›d�¦  «         |
rt          j         ¦   «         }|dk    r| 	                    | ||||||||	|
¦
  «
        }n3|dk    r| 
                    | ||||||||	|
¦
  «
        }nJ d
|›d�¦   «         ‚|
r)t          j         ¦   «         |z
  }t          |d›d�¦  «         |
r)t          j         ¦   «         |z
  }t          |d›d�¦  «         |S )a˜  
    Returns list of results from `pagefn()`, optionally using concurrency for
    speed.
    
    Args:
        path:
            Path of document.
        pagefn:
            Function to call for each page; is passed (page, *pagefn_args,
            **pagefn_kwargs). Return value is added to list that we return. If
            `method` is not 'single', must be a top-level function - nested
            functions don't work with concurrency.
        pagefn_args
        pagefn_kwargs:
            Additional args to pass to `pagefn`. Must be picklable.
        initfn:
            If true, called once in each worker process; is passed
            (*initfn_args, **initfn_kwargs).
        initfn_args
        initfn_kwargs:
            Args to pass to initfn. Must be picklable.
        pages:
            List of page numbers to process, or None to include all pages.
        method:
            'single'
                Do not use concurrency.
            'mp'
                Operate concurrently using Python's `multiprocessing` module.
            'fork'
                 Operate concurrently using custom implementation with
                 `os.fork()`. Does not work on Windows.
        concurrency:
            Number of worker processes to use when operating concurrently. If
            None, we use the number of available CPUs.
        _stats:
            Internal, may change or be removed. If true, we output simple
            timing diagnostics.
    
    Note: We require a file path rather than a Document, because Document
    instances do not work properly after a fork - internal file descriptor
    offsets are shared between the parent and child processes.
    rE  Nr   )Ú_apply_pagesz.2fzs: count pages.r  Úforkr   zUnrecognised method=r   zs: work.z	s: total.)rˆ  r´   rÁ   rL  r7   rk   r\   rN  r'   Ú_multiprocessingÚ_fork)r
   rß  rF  rG  rH  rI  rJ  rƒ  r$  rK  rL  rÙ	  rG   rÉ   rÕ  rÖ   r  rN  rD  Ú	num_pagess                       r)   Úapply_pagesrS  ,a  s¬  € ðp ð ÝŒY‰[Œ[ˆà�ÒÐØð 	2ØˆF�KÐ1 =Ð1Ð1Ð1Ý‰fŒfˆÝ˜D‘>”>ˆØˆ=Ý�#˜h™-œ-Ñ(Ô(ˆEØð 	ð 	ˆCØ˜C”=ˆDØ��tÐ;˜kÐ;Ð;Ð;¨]Ð;Ð;ˆAØ�JŠJ�q‰MŒMˆMˆMñ	ð 	#Ð"Ð"Ð"Ð"Ð"àˆ=Øð  Ý”I‘K”K�Ý˜$‘”ð / 8Ý ™MœM�	Ý�U 9Ñ-Ô-Ñ.Ô.�ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð ð /Ý”I‘K”K !‘O�Ý�qÐ-Ð-Ð-Ð-Ñ.Ô.Ð.àð 	Ý”	‘”ˆAà�TŠ>ˆ>Ø×/Ò/ØØØØØ!ØØØ!ØØñô ˆCˆCð �vÒÐØ×$Ò$ØØØØØ!ØØØ!ØØñô ˆCˆCð 1Ð0 fÐ0Ð0Ð0Ñ0Ô0�1àð 	$Ý”	‘”˜a‘ˆAÝ�1Ð"Ð"Ð"Ð"Ñ#Ô#Ð#àð !ÝŒI‰KŒK˜"ÑˆÝˆqÐÐÐÐÑ Ô Ð Ø€Js   Â=,C5Ã5C9Ã<C9)
rƒ  r$  rK  r   r  r¾  r¢  rÙ  r‰  rL  c       
   	     ól   — t          ||||||	¬¦  «        }t          | t          j        |||||
¬¦  «        S )ag  
    Returns list of results from `Page.get_text()`, optionally using
    concurrency for speed.
    
    Args:
        path:
            Path of document.
        pages:
            List of page numbers to process, or None to include all pages.
        method:
            'single'
                Do not use concurrency.
            'mp'
                Operate concurrently using Python's `multiprocessing` module.
            'fork'
                 Operate concurrently using custom implementation with
                 `os.fork`. Does not work on Windows.
        concurrency:
            Number of worker processes to use when operating concurrently. If
            None, we use the number of available CPUs.
        option
        clip
        flags
        textpage
        sort
        delimiters:
            Passed to internal calls to `Page.get_text()`.
    )r   r  r¾  r¢  rÙ  r‰  )rG  rƒ  r$  rK  rL  )r5   rS  rÒ   rõ  )r
   rƒ  r$  rK  r   r  r¾  r¢  rÙ  r‰  rL  Ú	args_dicts               r)   rõ  rõ  ®a  s[   € õX ØØØØØØ!ðñ ô €Iõ ØÝŒMØ#ØØØ#Øðñ ô ð r*   c                  ó¦  — e Zd ZdZd„ Zed„ ¦   «         Zed„ ¦   «         Zed/d„¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed0d„¦   «         Zed1d„¦   «         Zed1d„¦   «         Zed„ ¦   «         Zed/d„¦   «         Zed „ ¦   «         Z ed!„ ¦   «         Z!ed1d"„¦   «         Z"ed#„ ¦   «         Z#ed$„ ¦   «         Z$ed0d%„¦   «         Z%ed1d&„¦   «         Z&ed1d'„¦   «         Z'ed1d(„¦   «         Z(ed)„ ¦   «         Z)ed*„ ¦   «         Z*ed+„ ¦   «         Z+ed,„ ¦   «         Z,ed1d-„¦   «         Z-d.Z. e/¦   «         Z0dS )2r  zU
    We use @staticmethod to avoid the need to create an instance of this class.
    c                ó®   — t          | t          j        ¦  «        rt          t	          | ¦  «        ¦  «        S t          t          j        ¦   «         ¦  «        S r,   )r>   r�   rÓ   rq  r$  rr  rÕ   s    r)   Ú_derotate_matrixzTOOLS._derotate_matrixóa  sC   € Ý�d�EœMÑ*Ô*ð 	7Ý$Õ%<¸TÑ%BÔ%BÑCÔCÐCå$¥U¤^Ñ%5Ô%5Ñ6Ô6Ð6r*   c                óZ  — t          | |¦  «        }t          | j        ¦  «        |_        | j        |_        | j        |_        | |_        |j        sd |_        |j        sd |_        |j        sd |_        |j	        sd |_	        |j
        sd |_
        |j        sd |_        |j        sd |_        |S r,   )r½  r$  r÷   r  rê   r  r´
  rè  ré  rê  rë  rì  rí  )rß   r<  r  s      r)   r;  zTOOLS._fill_widgetùa  sÃ   € å& u¨fÑ5Ô5ˆå˜5œ:Ñ&Ô&ˆŒØ”jˆŒØœˆŒØˆŒØŒ}ð 	!Ø ˆFŒMØÔ#ð 	(Ø#'ˆFÔ ØÔ#ð 	(Ø#'ˆFÔ ØÔ#ð 	(Ø#'ˆFÔ ØÔ!ð 	&Ø!%ˆFÔØÔ!ð 	&Ø!%ˆFÔØÔ"ð 	'Ø"&ˆFÔØˆ
r*   c                óŽ   — t          | j        ¦  «        } t          |                      ¦   «         ¦  «        }t	          |¦  «        }|S r,   )rÚ   rÄ   r3  r  r  )rÖ   r  r   s      r)   r  zTOOLS._get_all_contentsb  s8   € å˜DœIÑ&Ô&ˆÝ˜tŸxšx™zœzÑ*Ô*ˆÝ! 3Ñ'Ô'ˆØˆr*   r   c                ó²   — t          | d¬¦  «        }t          |¦  «        }t          |                     ¦   «         |                     ¦   «         ||¦  «        }|S )zDAdd bytes as a new /Contents object for a page, and return its xref.r   r.  )rÚ   r'  rú  r*  r  )rÖ   r5  rý  r«  Úcontbufr  s         r)   ra  zTOOLS._insert_contentsb  sK   € õ ˜t¨aÐ0Ñ0Ô0ˆÝ$ WÑ-Ô-ˆÝ! '§+¢+¡-¤-°·²±´ÀÈÑQÔQˆàˆr*   c                óº  — | j         d         }| j        d         }|sd}d                     t          t          |¦  «        ¦  «        dz   }|r|}n| j        d         }|sd}d                     t          t          |¦  «        ¦  «        dz   }|}	|}
t          t          |	|
¦  «        ¦  «        }| }|	|z  }|
|z  }d	| j        cxk    rd
k     rn nd}nd}||||||||fS )as  Get common parameters for making annot line end symbols.

        Returns:
            m: matrix that maps p1, p2 to points L, P on the x-axis
            im: its inverse
            L, P: transformed p1, p2
            w: line width
            scol: stroke color string
            fcol: fill color store_shrink
            opacity: opacity string (gs command)
        r]  rh  rÓ  r³   z RG
rû   rm  z rg
r   r   rÌ  r\   )rˆ  r  rÜ  rÝ  rÑ  ru  r�  rV  )rß   r  r  rX  r   ÚscÚscolr·  r]  Únp1Únp2r€  rQ  r  rä  rV  s                   r)   Ú_le_annot_parmszTOOLS._le_annot_parms!b  s  € ð ŒL˜Ô!ˆØŒ\˜(Ô#ˆØð 	ØˆBØ�xŠx��C ™œÑ%Ô%¨Ñ/ˆØð 	&ØˆBˆBà”˜fÔ%ˆBØð 	ØˆBØ�xŠx��C ™œÑ%Ô%¨Ñ/ˆàˆØˆÝ•? 3¨Ñ,Ô,Ñ-Ô-ˆØˆRˆØ�!‰GˆØ�!‰GˆØ�”Ð!Ð!Ò!Ð! Ò!Ð!Ð!Ð!Ð!ØˆGˆGàˆGØ�"�a˜˜A˜t T¨7Ð2Ð2r*   c                óT  — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r|n|}|d| dz  fz   |z  }|d|dz  fz   |z  }d|› |j        d›d|j        d›d�}||j        d›d|j        d›d	�z  }|t          |	¦  «        d
z   z  }||
dz   z  }|S )zaMake stream commands for butt line end symbol. "lr" denotes left (False) or right point.
        r   r   r   r1  ræ  rÎ  r³   r%  r&  rŸ  ús
Q
©r  rb  rê  r(  r)  r¶   )rß   r  r  r’  rX  r€  rQ  r  rä  r   r_  r]  rV  rž  r
  r  r	  Úbotr!  s                      r)   ræ  zTOOLS._le_buttGb  sõ   € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØˆNˆAˆA˜ˆØ�A˜�r˜"‘u�:‰~ Ñ#ˆØ�A�q˜‘t�9‰} Ñ"ˆØ5�WÐ5˜cœeÐ5Ð5Ð5¨¬Ð5Ð5Ð5Ð5ˆØ
�”Ð(Ð(Ð(˜3œ5Ð(Ð(Ð(Ð(Ñ(ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�X‰oÑˆØˆ	r*   c                ó   — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r
||dz  dfz
  n	||dz  dfz   }t          ||¦  «        | | ||fz   }d|z   t                                |j        |z  |j        |z  |j        |z  |j        |z  ¦  «        z   }|t          |	¦  «        dz   z  }||
|z   dz   z  }|S )zcMake stream commands for circle line end symbol. "lr" denotes left (False) or right point.
        ç      @r   r1  r   úq
rŸ  úb
Q
)
r  rb  rê  r$  Ú_oval_stringrí  r4  rî  r–  r¶   )rß   r  r  r’  rX  r€  rQ  r  rä  r   r_  r]  rV  rž  r
  r  r  r!  s                     r)   râ  zTOOLS._le_circleWb  sõ   € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØÐ2ˆA��2‘�q�	‰MˆM Q¨!¨B©$°¨¡]ˆÝ��A‰JŒJ˜1˜"˜q˜b ! Q˜Ñ'ˆØ�W‰_�u×1Ò1°!´$¸±)¸Q¼TÀB¹YÈÌÈrÉ	ÐSTÔSWÐZ\ÑS\Ñ]Ô]Ñ]ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r*   c                óì  — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r
||dz  dfz   n	||dz  dfz
  }|r|d|z  | fz   n
|d|z  | fz   }|r
|d|z  |fz   n	|d|z  |fz   }||z  }||z  }||z  }d|› |j        d›d	|j        d›d
�}||j        d›d	|j        d›d�z  }||j        d›d	|j        d›d�z  }|t          |	¦  «        dz   z  }||
|z   dz   z  }|S )ziMake stream commands for closed arrow line end symbol. "lr" denotes left (False) or right point.
        rh  r   r1  r   r×  r   ræ  rÎ  r³   r%  r&  rŸ  rj  re  ©rß   r  r  r’  rX  r€  rQ  r  rä  r   r_  r]  rV  rž  r
  rà  r!  s                    r)   rå  zTOOLS._le_closedarroweb  su  € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØ Ð3ˆQ�!�B‘$˜�‰]ˆ] a¨1¨R©4°¨)¡mˆØ "Ð6ˆR�2�a‘4˜!˜�*‰_ˆ_¨¨a°©c°A°2¨Y©ˆØ!Ð4ˆR�2�a‘4˜�)‰^ˆ^ r¨Q¨q©S°!¨H¡}ˆØ
ˆb‰ˆØ
ˆb‰ˆØ
ˆb‰ˆØ3�WÐ3˜bœdÐ3Ð3Ð3 r¤tÐ3Ð3Ð3Ð3ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r*   c                óº  — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r
||dz  dfz
  n	||dz  dfz   }t          ||¦  «        | | ||fz   }|j        |j        |j        z
  dz  z   |z  }d|› |j        d›d|j        d›d	�}|j        |j        |j        z
  dz  z   |z  }||j        d›d|j        d›d
�z  }|j        |j	        |j        z
  dz  z   |z  }||j        d›d|j        d›d
�z  }|j	        |j        |j	        z
  dz  z   |z  }||j        d›d|j        d›d
�z  }|t          |	¦  «        dz   z  }||
|z   dz   z  }|S )zdMake stream commands for diamond line end symbol. "lr" denotes left (False) or right point.
        rh  r   r1  r   r’  ri  rÎ  r³   r%  r&  rŸ  rj  )r  rb  rê  r$  rí  r–  r(  r)  r4  rî  r¶   ©rß   r  r  r’  rX  r€  rQ  r  rä  r   r_  r]  rV  rž  r
  r  r  r¢  r!  s                      r)   rã  zTOOLS._le_diamondyb  sÅ  € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØÐ2ˆA��2‘�q�	‰MˆM Q¨!¨B©$°¨¡]ˆÝ��A‰JŒJ˜1˜"˜q˜b ! Q˜Ñ'ˆàŒT�Q”T˜AœD‘[ CÑ'Ñ'¨2Ñ-ˆØ/�7Ð/˜AœCÐ/Ð/Ð/ A¤CÐ/Ð/Ð/Ð/ˆØŒT�Q”T˜AœD‘[ CÑ'Ñ'¨2Ñ-ˆØ
�”Ð$Ð$Ð$˜œÐ$Ð$Ð$Ð$Ñ$ˆØŒT�Q”T˜AœD‘[ CÑ'Ñ'¨2Ñ-ˆØ
�”Ð$Ð$Ð$˜œÐ$Ð$Ð$Ð$Ñ$ˆØŒT�Q”T˜AœD‘[ CÑ'Ñ'¨2Ñ-ˆØ
�”Ð$Ð$Ð$˜œÐ$Ð$Ð$Ð$Ñ$ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r*   c                óæ  — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r
||dz  dfz   n	||dz  dfz
  }|r|d|z  | fz   n
|d|z  | fz   }|r
|d|z  |fz   n	|d|z  |fz   }||z  }||z  }||z  }d|› |j        d›d	|j        d›d
�}||j        d›d	|j        d›d�z  }||j        d›d	|j        d›d�z  }|t          |	¦  «        dz   z  }||
dz   z  }|S )zgMake stream commands for open arrow line end symbol. "lr" denotes left (False) or right point.
        rh  r   r1  r   r×  r   ræ  rÎ  r³   r%  r&  rŸ  úS
Q
re  rm  s                    r)   rä  zTOOLS._le_openarrow�b  sp  € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØ Ð3ˆQ�!�B‘$˜�‰]ˆ] a¨1¨R©4°¨)¡mˆØ "Ð6ˆR�2�a‘4˜!˜�*‰_ˆ_¨¨a°©c°A°2¨Y©ˆØ!Ð4ˆR�2�a‘4˜�)‰^ˆ^ r¨Q¨q©S°!¨H¡}ˆØ
ˆb‰ˆØ
ˆb‰ˆØ
ˆb‰ˆØ3�WÐ3˜bœdÐ3Ð3Ð3 r¤tÐ3Ð3Ð3Ð3ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�X‰oÑˆØˆ	r*   c                óì  — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r
|d|z  dfz
  n	|d|z  dfz   }|r|d|z  | fz   n
|d|z  | fz   }|r
|d|z  |fz   n	|d|z  |fz   }||z  }||z  }||z  }d|› |j        d›d|j        d›d	�}||j        d›d|j        d›d
�z  }||j        d›d|j        d›d
�z  }|t          |	¦  «        dz   z  }||
|z   dz   z  }|S )zoMake stream commands for right closed arrow line end symbol. "lr" denotes left (False) or right point.
        rh  r   r   r   r×  ræ  rÎ  r³   r%  r&  rŸ  rj  re  rm  s                    r)   rè  zTOOLS._le_rclosedarrow£b  su  € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØÐ1ˆQ�!�A‘#�q�‰\ˆ\ Q¨!¨A©#¨q¨¡\ˆØ!Ð6ˆR�1�Q‘3˜˜�)‰^ˆ^ r¨R°©T°A°2¨J¡ˆØ Ð4ˆR�1�Q‘3˜�(‰]ˆ] b¨B¨q©D°!¨9¡nˆØ
ˆb‰ˆØ
ˆb‰ˆØ
ˆb‰ˆØ3�WÐ3˜bœdÐ3Ð3Ð3 r¤tÐ3Ð3Ð3Ð3ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r*   c                óì  — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r
||dz  dfz
  n	||dz  dfz   }|r|d|z  | fz   n
|d|z  | fz   }|r
|d|z  |fz   n	|d|z  |fz   }||z  }||z  }||z  }d|› |j        d›d	|j        d›d
�}||j        d›d	|j        d›d�z  }||j        d›d	|j        d›d�z  }|t          |	¦  «        dz   z  }||
|z   dz   z  }|S )zmMake stream commands for right open arrow line end symbol. "lr" denotes left (False) or right point.
        rh  r   g      @r   r   r×  ræ  rÎ  r³   r%  r&  rŸ  rq  re  rm  s                    r)   rç  zTOOLS._le_ropenarrow·b  su  € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØ Ð3ˆQ�!�B‘$˜�‰]ˆ] a¨1¨R©4°¨)¡mˆØ!Ð6ˆR�1�Q‘3˜˜�)‰^ˆ^ r¨R°©T°A°2¨J¡ˆØ Ð4ˆR�1�Q‘3˜�(‰]ˆ] b¨B¨q©D°!¨9¡nˆØ
ˆb‰ˆØ
ˆb‰ˆØ
ˆb‰ˆØ3�WÐ3˜bœdÐ3Ð3Ð3 r¤tÐ3Ð3Ð3Ð3ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�”Ð&Ð&Ð&˜"œ$Ð&Ð&Ð&Ð&Ñ&ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r*   c                ó¸  — t                                | |||¦  «        \  }}}}}	}
}}dt          d|	¦  «        z  dz  }|r|n|}t          |j        |z
  |j        d|	z  z
  |j        |z   |j        d|	z  z   ¦  «        }|j        |z  }|j        |z  }d|› |j        d›d|j        d›d�}||j        d›d|j        d›d	�z  }|t          |	¦  «        d
z   z  }||
dz   z  }|S )zbMake stream commands for slash line end symbol. "lr" denotes left (False) or right point.
        g(µ¦yò?r   rŸ  r   ræ  rÎ  r³   r%  r&  rŸ  rd  )	r  rb  rê  r$  r(  r)  rí  rî  r¶   )rß   r  r  r’  rX  r€  rQ  r  rä  r   r_  r]  rV  Úrwr  r  r	  rf  r!  s                      r)   ré  zTOOLS._le_slashËb  s  € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØ•c˜!˜Q‘i”iÑ #Ñ%ˆØˆNˆAˆA˜ˆÝ�”�r‘˜1œ3  Q¡™;¨¬¨b©°!´#¸¸A¹±+Ñ>Ô>ˆØŒd�R‰iˆØŒd�R‰iˆØ5�WÐ5˜cœeÐ5Ð5Ð5¨¬Ð5Ð5Ð5Ð5ˆØ
�”Ð(Ð(Ð(˜3œ5Ð(Ð(Ð(Ð(Ñ(ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�X‰oÑˆØˆ	r*   c                ó"  — t                                | |||¦  «        \  }}}}}	}
}}d}|t          d|	¦  «        z  }|r
||dz  dfz
  n	||dz  dfz   }t          ||¦  «        | | ||fz   }|j        |z  }d|› |j        d›d|j        d›d�}|j        |z  }||j        d›d|j        d›d	�z  }|j        |z  }||j        d›d|j        d›d	�z  }|j	        |z  }||j        d›d|j        d›d	�z  }|t          |	¦  «        d
z   z  }||
|z   dz   z  }|S )zcMake stream commands for square line end symbol. "lr" denotes left (False) or right point.
        rh  r   r1  r   ri  rÎ  r³   r%  r&  rŸ  rj  )r  rb  rê  r$  rí  r(  r)  r4  rî  r–  r¶   ro  s                      r)   rá  zTOOLS._le_squareÛb  sy  € õ /4×.CÒ.CÀEÈ2ÈrÐS]Ñ.^Ô.^Ñ+ˆˆ2ˆq�!�Q˜˜d GØˆØ•C˜˜1‘I”IÑˆØÐ2ˆA��2‘�q�	‰MˆM Q¨!¨B©$°¨¡]ˆÝ��A‰JŒJ˜1˜"˜q˜b ! Q˜Ñ'ˆàŒD�2‰IˆØ/�7Ð/˜AœCÐ/Ð/Ð/ A¤CÐ/Ð/Ð/Ð/ˆØŒD�2‰IˆØ
�”Ð$Ð$Ð$˜œÐ$Ð$Ð$Ð$Ñ$ˆØŒD�2‰IˆØ
�”Ð$Ð$Ð$˜œÐ$Ð$Ð$Ð$Ñ$ˆØŒD�2‰IˆØ
�”Ð$Ð$Ð$˜œÐ$Ð$Ð$Ð$Ñ$ˆØ
�i˜‰lŒl˜VÑ#Ñ#ˆØ
ˆd�T‰k˜HÑ$Ñ$ˆØˆ	r*   c                óÀ  — d„ }d}| || z
  dz  z   }| || z
  dz  z   }|||z
  dz  z   }|||z
  dz  z   }	|| |z
  |z  z   }
|| |z
  |z  z   }|||z
  |z  z   }|||z
  |z  z   }|||z
  |z  z   }|	||	z
  |z  z   }|	||	z
  |z  z   }|||z
  |z  z   }|j         d›d|j        d›d�}| ||
||¦  «        z  }| ||||¦  «        z  }| ||||	¦  «        z  }| ||||¦  «        z  }|S )zQReturn /AP string defining an oval within a 4-polygon provided as points
        c                ór   — | j         d›d| j        d›d|j         d›d|j        d›d|j         d›d|j        d›d�S )NrÎ  r³   r)  rQ  )r¢  r’  r  s      r)   Úbezierz"TOOLS._oval_string.<locals>.bezierõb  sW   € Ø”cÐIÐIÐI˜aœcÐIÐIÐI a¤cÐIÐIÐI¨a¬cÐIÐIÐI°a´cÐIÐIÐI¸a¼cÐIÐIÐIÐIÐIr*   r3  r’  rÎ  r³   r%  rQ  )r  r  rà  rá  ry  r4  r/  Úmor.  ÚmuÚol1Úol2Úor1Úor2Úur1Úur2Úul1Úul2r!  s                      r)   rk  zTOOLS._oval_stringñb  s€  € ð	Jð 	Jð 	Jð ˆØ�2˜‘7˜c‘/Ñ!ˆØ�2˜‘7˜c‘/Ñ!ˆØ�2˜‘7˜c‘/Ñ!ˆØ�2˜‘7˜c‘/Ñ!ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆØ�B˜‘G˜uÑ$Ñ$ˆà”Ð%Ð%Ð%˜œÐ%Ð%Ð%Ð%ˆØ
ˆfˆf�S˜#˜rÑ"Ô"Ñ"ˆØ
ˆfˆf�S˜#˜rÑ"Ô"Ñ"ˆØ
ˆfˆf�S˜#˜rÑ"Ô"Ñ"ˆØ
ˆfˆf�S˜#˜rÑ"Ô"Ñ"ˆØˆ	r*   c                ó¸  — t           rt          j        | j        ¦  «        }nd„ } || ¦  «        }|sdS d}d}d}|                     ¦   «         }t          |¦  «        D ]÷\  }}|dk    rA||dz
           dd …         }t          ||dz
           ¦  «        }d	x||<   x||dz
  <   ||dz
  <   ŒL|d
k    r't          ||dz
           ¦  «        g}d	x||<   ||dz
  <   Œy|dk    r5d„ ||dz
  |…         D ¦   «         }d	x||<   x||dz
  <   x||dz
  <   ||dz
  <   Œ´|dk    r=d„ ||dz
  |…         D ¦   «         }d	x||<   x||dz
  <   x||dz
  <   x||dz
  <   ||dz
  <   Œ÷Œø|||f}|S )Nc                ó
  — | j         }t          |t          j        ¦  «        sJ ‚t          j        |¦  «        }t          j        |¦  «        }	 t          j        |t          d¦  «        ¦  «        }|j        sRt          j	        |¦  «        }t          j
        |t          d¦  «        t          d¦  «        t          d¦  «        ¦  «        }t          j        |¦  «        }n&# t          $ r t          rt          ¦   «          Y d S w xY w|S )Nr�  r/  r0  )rÄ   r>   r�   rä   rÿ   rŽ  rF  r  rÌ   r3  r  r  rg   r
  rv   )rß   r)  Úthis_annot_objrZ  ra  r   r‘  s          r)   ÚTools__parse_daz(TOOLS._parse_da.<locals>.Tools__parse_dac  sú   € Ø"œZ�
Ý! *­e¬nÑ=Ô=Ð=Ð=Ð=Ý!&Ô!4°jÑ!AÔ!A�ÝÔ2°NÑCÔC�ðÝÔ7¸ÍÐRVÉÌÑXÔX�BØœ=ð "Ý"'Ô"3°CÑ"8Ô"8˜Ý"Ô0°Ý (¨Ñ 0Ô 0Ý (¨Ñ 4Ô 4Ý (¨¡¤ñ"ô "˜õ
 #Ô5°bÑ9Ô9�F�FøÝ ð ð ð Ý+Ð@µÑ0@Ô0@Ð0@Ø�F�Fðøøøð �s   ÁBC ÃD Ã?D )r1  r\   r   rÔ  rÍ  rÓ  rý  r   r   r\   rþ  rÿ  c                ó,   — g | ]}t          |¦  «        ‘ŒS r-   r  r  s     r)   r¯   z#TOOLS._parse_da.<locals>.<listcomp>9c  r  r*   r   rŸ  c                ó,   — g | ]}t          |¦  «        ‘ŒS r-   r  r  s     r)   r¯   z#TOOLS._parse_da.<locals>.<listcomp>=c  r  r*   rK  )r  r   ÚTools_parse_darÄ   r6   ró  ro  )	rß   r  r‡  rW  rù  r_  r  r®   rC   s	            r)   r  zTOOLS._parse_dac  sð  € õ ð 	)ÝÔ&¨¬
Ñ3Ô3ˆCˆCðð ð ð& "�/ %Ñ(Ô(ˆCàð 	!Ø �=ØˆØˆØˆØ�iŠi‰kŒkˆÝ  ‘~”~ð 	ð 	‰GˆAˆtØ�tŠ|ˆ|Ø˜1˜q™5”z ! " "”~�Ý˜c ! a¡%œjÑ)Ô)�Ø/1Ð1��A‘Ð1˜˜Q˜q™S™ C¨¨!©¡HØØ�sŠ{ˆ{Ý˜c ! a¡%œjÑ)Ô)Ð+�Ø$&Ð&��A‘˜˜Q˜q™S™ØØ�tŠ|ˆ|Ø6Ð6¨¨Q°©U°1¨W¬Ð6Ñ6Ô6�Ø:<Ð<��A‘Ð<˜˜Q˜q™S™Ð< C¨¨!©¡H¨s°1°Q±3©xØØ�sŠ{ˆ{Ø6Ð6¨¨Q°©U°1¨W¬Ð6Ñ6Ô6�ØEGÐG��A‘ÐG˜˜Q˜q™S™ÐG C¨¨!©¡HÐG¨s°1°Q±3©x¸#¸aÀ¹c¹(Øð ð
 �D˜%Ð ˆØˆ
r*   c                ó„   — | }t          j        |¦  «        }t          j        |¦  «        }t          j        ||¦  «         d S r,   )r�   rÿ   rŽ  Úpdf_field_reset)rß   r)  r†  rZ  s       r)   r!  zTOOLS._reset_widgetDc  s@   € àˆ
ÝÔ,¨ZÑ8Ô8ˆÝÔ*¨>Ñ:Ô:ˆÝÔ˜c >Ñ2Ô2Ð2Ð2Ð2r*   c                ó´   — |                       d¬¦  «        }|j        s t          t          j        ¦   «         ¦  «        S t          t          |¦  «        ¦  «        S r#  )ra  rÌ   rq  r�   rr  r¨  )rÖ   r«  s     r)   r  zTOOLS._rotate_matrixKc  sM   € à—.’.¨%�.Ñ0Ô0ˆØÔ!ð 	7Ý$¥U¤^Ñ%5Ô%5Ñ6Ô6Ð6Ý Õ!6°wÑ!?Ô!?Ñ@Ô@Ð@r*   c                ó&   — t          | |¦  «         d S r,   )r  )rß   r<  s     r)   r&  zTOOLS._save_widgetRc  s   € å  ¨Ñ/Ô/Ð/Ð/Ð/r*   c                ó  — t           rt          j        | j        |¦  «         d S 	 | j        }t	          |t
          j        ¦  «        sJ ‚t          j        t          j        |¦  «        t          d¦  «        |¦  «         t          j
        t          j        |¦  «        t          d¦  «        ¦  «         t          j
        t          j        |¦  «        t          d¦  «        ¦  «         n&# t          $ r t          rt          ¦   «          Y d S w xY wd S )Nr�  rn  rÄ  )r  r   ÚTools_update_darÄ   r>   r�   rä   r€  rÿ   r  rA  rg   r
  rv   )rß   r‘  r)  s      r)   Ú
_update_dazTOOLS._update_daVc  sù   € Ýð 	ÝÔ! 5¤:¨vÑ6Ô6Ð6Ð6Ð6ðØ"œZ�
Ý! *­e¬nÑ=Ô=Ð=Ð=Ð=ÝÔ.­uÔ/BÀ:Ñ/NÔ/NÕPXÐY]ÑP^ÔP^Ð`fÑgÔgÐgÝÔ"¥5Ô#6°zÑ#BÔ#BÅHÈTÁNÄNÑSÔSÐSÝÔ"¥5Ô#6°zÑ#BÔ#BÅHÈTÁNÄNÑSÔSÐSÐSøÝð ð ð Ý'Ð<­NÑ,<Ô,<Ð,<Ø��ðøøøð ˆFs   ¥C C& Ã&D	ÄD	c                 ó$   — t           dz  a t           S rQ  )ÚTOOLS_JM_UNIQUE_IDr-   r*   r)   r  zTOOLS.gen_idec  s   € õ 	˜aÑÐÝ!Ð!r*   c                 ó,   — t          j        ¦   «          dS )z(
        Empty the glyph cache.
        N)r�   Úfz_purge_glyph_cacher-   r*   r)   Úglyph_cache_emptyzTOOLS.glyph_cache_emptykc  s   € õ
 	Ô"Ñ$Ô$Ð$Ð$Ð$r*   r   c                ó"   — t          | |¦  «        S )z5
        Metadata of an image binary stream.
        )rû  )r	   rù  s     r)   r~  zTOOLS.image_profilerc  s   € õ
   ¨
Ñ3Ô3Ð3r*   Nc                ó2   — | �t          | ¦  «        at          S )z;
        Set MuPDF error display to True or False.
        )rç   rÿ  ©r–  s    r)   Úmupdf_display_errorszTOOLS.mupdf_display_errorsyc  s   € ð ˆ>Ý#'¨¡8¤8Ð Ý#Ð#r*   c                ó2   — | �t          | ¦  «        at          S )z>
        Set MuPDF warnings display to True or False.
        )rç   r‹  r™  s    r)   Úmupdf_display_warningszTOOLS.mupdf_display_warningsƒc  s   € ð ˆ>Ý%)¨"¡X¤XÐ"Ý%Ð%r*   c                 ó   — t           j        S )z"Get version of MuPDF binary build.)r�   Ú
FZ_VERSIONr-   r*   r)   rÿ  zTOOLS.mupdf_version�c  s   € õ ÔÐr*   c                ó–   — t          j        ¦   «          d                     t          ¦  «        }| rt                               ¦   «          |S )zN
        Get the MuPDF warnings/errors with optional reset (default).
        r%   )r�   Úfz_flush_warningsrÜ  rÉ  r  Úreset_mupdf_warnings)rc	  rG   s     r)   rÀ  zTOOLS.mupdf_warnings’c  sD   € õ 	ÔÑ!Ô!Ð!Ø�iŠiÕ0Ñ1Ô1ˆØð 	)Ý×&Ò&Ñ(Ô(Ð(Øˆ
r*   c                 ó"   — t          ¦   «         ad S r,   )r´   rÉ  r-   r*   r)   r¡  zTOOLS.reset_mupdf_warningsžc  s   € õ #'¡&¤&ÐÐÐr*   c                ó.   — t          j        | ¦  «         dS )z*
        Set anti-aliasing level.
        N)r�   Úfz_set_aa_level)r   s    r)   Úset_aa_levelzTOOLS.set_aa_level£c  s   € õ
 	Ô˜eÑ$Ô$Ð$Ð$Ð$r*   c                ój   — | €t           S t          | ¦  «        dz   }|dk    rd}| d d…         a t           S )Nr   r×  )rŸ  r7   )r¡  r  s     r)   Úset_annot_stemzTOOLS.set_annot_stemªc  s@   € ð ˆ<Ý#Ð#Ý�4‰yŒy˜1‰}ˆØ�"Š9ˆ9ØˆDØ   œ9ÐÝÐr*   c                ó   — t          | d¬¦  «        }|j        sdS t          j        ||¦  «        }t          j        |t          d¦  «        ¦  «        }t          j        |¦  «        rèt          j        |¦  «        }t          |¦  «        D ]Ä}t          j	        ||¦  «        }t          j
        |d¦  «        }	t          j        |	t          j        d¦  «        ¦  «         t          j        |	t          j        d¦  «        ¦  «         t          j        |	t          j        |¦  «        ¦  «         t          j        |t          d¦  «        |	¦  «         ŒÅdS )	Nr   r.  Frì	  r   rÅ  rî	  T)rÎ   rÌ   r�   r�  r  r  rŽ  r›  rL  rœ  rK  r�  r  rN  )
r*  r  r]  rZ  rW  ÚdfontsrE   r®   ÚdfontÚwarrays
             r)   r3  zTOOLS.set_font_widthµc  s,  € å˜s¨QÐ/Ñ/Ô/ˆØŒ~ð 	Ø�5ÝÔ$ S¨$Ñ/Ô/ˆÝÔ# D­(Ð3DÑ*EÔ*EÑFÔFˆÝÔ˜fÑ%Ô%ð 	AÝÔ# FÑ+Ô+ˆAÝ˜1‘X”Xð Að A�ÝÔ+¨F°AÑ6Ô6�ÝÔ,¨S°!Ñ4Ô4�ÝÔ$ V­UÔ->¸qÑ-AÔ-AÑBÔBÐBÝÔ$ V­UÔ->¸uÑ-EÔ-EÑFÔFÐFÝÔ$ V­UÔ->¸uÑ-EÔ-EÑFÔFÐFÝÔ" 5­(°3©-¬-¸Ñ@Ô@Ð@Ð@Øˆtr*   c                ó.   — t          j        | ¦  «         dS )z6
        Set the graphics minimum line width.
        N)r�   Úfz_set_graphics_min_line_width)Úmin_line_widths    r)   Úset_graphics_min_line_widthz!TOOLS.set_graphics_min_line_widthÇc  s   € õ
 	Ô,¨^Ñ<Ô<Ð<Ð<Ð<r*   c                ó¼   — | r8t           j        rt          j        ¦   «          dS t          dt          ¦  «         dS t           j        rt          j        ¦   «          dS dS )z!Set ICC color handling on or off.zMuPDF built w/o ICC supportN)r�   r  Úfz_enable_iccr°  rp  Úfz_disable_iccr™  s    r)   Úset_icczTOOLS.set_iccÎc  so   € ð ð 	#ÝÔ"ð IÝÔ#Ñ%Ô%Ð%Ð%Ð%åÐ6Õ7GÑHÔHÐHÐHÐHÝÔ ð 	#ÝÔ Ñ"Ô"Ð"Ð"Ð"ð	#ð 	#r*   c                óP   — | �t          | ¦  «        t          _        t          j        S )z!Set / unset MuPDF device caching.)rç   rÙ  rˆ   r™  s    r)   Úset_low_memoryzTOOLS.set_low_memoryÙc  s    € ð ˆ>Ý)-¨b©¬�HÔ&ÝÔ)Ð)r*   c                óš   — | �>t          | ¦  «        t          _        t          rt	          j        t          j        ¦  «         t          j        S )z Set / unset small glyph heights.)rç   rÙ  r‰   r  r   Úset_small_glyph_heightsr™  s    r)   r·  zTOOLS.set_small_glyph_heightsàc  s=   € ð ˆ>Ý+/°©8¬8�HÔ(Ýð LÝÔ-­hÔ.JÑKÔKÐKÝÔ+Ð+r*   c                óš   — | �>t          | ¦  «        t          _        t          rt	          j        t          j        ¦  «         t          j        S )zK
        Set / unset returning fontnames with their subset prefix.
        )rç   rÙ  rŠ   r  r   Úset_subset_fontnamesr™  s    r)   r¹  zTOOLS.set_subset_fontnameséc  s=   € ð
 ˆ>Ý(,¨R©¬�HÔ%Ýð FÝÔ*­8Ô+DÑEÔEÐEÝÔ(Ð(r*   c                 óŒ   — t          t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         ¬¦  «        S )z,
        Show anti-aliasing values.
        )rÂ  r   Úgraphics_min_line_width)r5   r�   Úfz_graphics_aa_levelÚfz_text_aa_levelÚfz_graphics_min_line_widthr-   r*   r)   Úshow_aa_levelzTOOLS.show_aa_levelôc  s?   € õ
 Ý Ô5Ñ7Ô7ÝÔ-Ñ/Ô/Ý*/Ô*JÑ*LÔ*Lðñ ô ð 	r*   c                 ó   — dS )z)
        MuPDF store size limit.
        Nr-   r-   r*   r)   Ústore_maxsizezTOOLS.store_maxsizeÿc  ó	   € ð ˆtr*   c                óz   — | dk    rt          j        ¦   «          dS | dk    rt          j        d| z
  ¦  «         dS dS )z7
        Free 'percent' of current store size.
        rŸ  r   N)r�   Úfz_empty_storeÚfz_shrink_store)Úpercents    r)   r¡  zTOOLS.store_shrinkd  sL   € ð
 �cŠ>ˆ>ÝÔ Ñ"Ô"Ð"Ø�1Ø�QŠ;ˆ;ÝÔ! 3¨¡=Ñ1Ô1Ð1Ð1Ð1ð ˆ;r*   c                 ó   — dS )z+
        MuPDF current store size.
        Nr-   r-   r*   r)   Ú
store_sizezTOOLS.store_sized  rÂ  r*   c                óš   — | �>t          | ¦  «        t          _        t          rt	          j        t          j        ¦  «         t          j        S )zA
        Set ascender / descender corrections on or off.
        )rç   rÙ  r‹   r  r   Úset_skip_quad_correctionsr™  s    r)   Úunset_quad_correctionszTOOLS.unset_quad_correctionsd  s=   € ð
 ˆ>Ý-1°"©X¬X�HÔ*Ýð PÝÔ/µÔ0NÑOÔOÐOÝÔ-Ð-r*   r;  r2  r1  r,   )1r/   r0   r1   rª  rX  r7  r;  r  ra  rb  ræ  râ  rå  rã  rä  rè  rç  ré  rá  rk  r  r!  r  r&  r‘  r  r–  r~  rš  rœ  rÿ  rÀ  r¡  r¥  r§  r3  r¯  r³  rµ  r·  r¹  r¿  rÁ  r¡  rÈ  rË  rŸ  r3  Úfitz_configr-   r*   r)   r  r  îa  s¤  € € € € € ðð ð7ð 7ð 7ð ðð ñ „\ðð. ðð ñ „\ðð ðð ð ñ „\ðð ð#3ð #3ñ „\ð#3ðJ ðð ñ „\ðð ðð ñ „\ðð ðð ñ „\ðð& ðð ñ „\ðð* ðð ñ „\ðð& ðð ñ „\ðð& ðð ñ „\ðð& ðð ñ „\ðð ðð ñ „\ðð* ðð ñ „\ðð6 ð4ð 4ñ „\ð4ðl ð3ð 3ñ „\ð3ð ðAð Añ „\ðAð ð0ð 0ñ „\ð0ðð ð ð ð"ð "ñ „\ð"ð
 ð%ð %ñ „\ð%ð ð4ð 4ð 4ñ „\ð4ð ð$ð $ð $ñ „\ð$ð ð&ð &ð &ñ „\ð&ð ð ð  ñ „\ð ð ð	ð 	ð 	ñ „\ð	ð ð)ð )ñ „\ð)ð ð%ð %ñ „\ð%ð ð ð  ð  ñ „\ð ð ðð ñ „\ðð" ð=ð =ñ „\ð=ð ð#ð #ð #ñ „\ð#ð ð*ð *ð *ñ „\ð*ð ð,ð ,ð ,ñ „\ð,ð ð)ð )ð )ñ „\ð)ð ðð ñ „\ðð ðð ñ „\ðð ð2ð 2ñ „\ð2ð ðð ñ „\ðð ð.ð .ð .ñ „\ð.ð Ðà �.Ñ"Ô"€K€K€Kr*   r  c                 ó|   — t          j        ¦   «          t          j        d ¦  «         t          j        d ¦  «         d S r,   )r�   r   Úfz_set_warning_callbackÚfz_set_error_callbackr-   r*   r)   Ú_atexitrÐ  Cd  s9   € å	ÔÑÔÐÝ	Ô! $Ñ'Ô'Ð'Ý	Ô Ñ%Ô%Ð%Ð%Ð%r*   ©Ú	_wxcolorsr
  c                 ó   — t           S )z�
    Returns dict mapping from name to (red, green, blue).
        name: lower-case name.
        red, green, blue: float in range 0..1.
    )Úpdfcolorr-   r*   r)   Úcolors_pdf_dictrÕ  ]d  s	   € õ €Or*   c                 ó   — t           S )z�
    Returns list of (name, red, green, blue) tuples:
        name: upper-case name.
        red, green, blue: integers in range 0..255.
    rÑ  r-   r*   r)   Úcolors_wx_listr×  fd  s
   € õ Ðr*   c                ó®  — ddl }t          dt          ›�¦  «         t          j                             t          › d�¦  «        }|› d�}|                     ¦   «         dk    r|› d�}n|}t          d¦  «         t          d	|›�¦  «         t          d
|›�¦  «         t          j                             |¦  «        sJ d|›d�¦   «         ‚t          j                             |¦  «        sJ d|›d�¦   «         ‚|                     ¦   «         dk    �rE| �rBt          d|›dt          › d�¦  «         t           	                    d¦  «        dd…         }d 
                    |¦  «        }d|› d�}t          d|›d�¦  «         t          j        |¦  «        D ]Â}t          j        ||¦  «        }|r©|› d|                     d¦  «        › �}	t          j                             |	¦  «        st          j                             |	¦  «        r't          d|	›d�¦  «         t          j        |	¦  «         t          d|	› d|› �¦  «         t          j        ||	¦  «         ŒÃ||fS )aù  
    Allows PyMuPDF installation to be used to compile and link programmes that
    use the MuPDF C/C++ API.
    
    Args:
        make_links:
            If true, then on non-windows we also create softlinks to any shared
            libraries that are supplied with a version suffix; this allows them
            to be used in a link command.

            For example we create links such as:

            site-packages/pymupdf/
                libmupdf.so -> libmupdf.so.26.7
                libmupdfcpp.so -> libmupdfcpp.so.26.7
    
    Returns: (mupdf_include, mupdf_lib).
        mupdf_include:
            Path of MuPDF include directory within PyMuPDF install.
        mupdf_lib
            Path of MuPDF library directory within PyMuPDF install.
    r   Nzmupdf_version=z/..z/mupdf-devel/includeÚWindowsz/mupdf-devel/libzWithin installed PyMuPDF:z    mupdf_include=z    mupdf_lib=zNot a directory: mupdf_include=r   zNot a directory: mupdf_lib=zCreating symlinks in mupdf_lib=z for MuPDF-z .so files.r   r   z[.]z^(lib[^.]+[.]so)[.]ú$zmupdf_lib_regex=rW  zRemoving existing link pfrom=zCreating symlink: z -> )rf  r'   rÿ  rd   r
   ÚnormpathÚ__file__Úsystemro  r6   rÜ  rp  rÆ  r  rÇ  Úislinkr  r6  Úsymlink)
Ú
make_linksrf  r¢  Úmupdf_includeÚ	mupdf_libÚregex_suffixÚmupdf_lib_regexÚleafr€  Úpfroms
             r)   Ú_mupdf_develrç  od  s�  € ð. €O€O€OåÐ�=ÐÐÑÔÐå
Œ×Ò�HÐ)Ð)Ð)Ñ*Ô*€AàÐ.Ð.Ð.€Mà‡‚ÑÔ˜IÒ%Ð%àÐ*Ð*Ð*ˆ	ˆ	ð ˆ	ÝÐ$Ñ%Ô%Ð%ÝÐˆ}ÐÐÑ Ô Ð ÝÐˆyÐÐÑÔÐåŒ7�=Š=˜Ñ'Ô'ÐNÐNÐ)N¸]Ð)NÐ)NÐ)NÑNÔNÐ'ÝŒ7�=Š=˜Ñ#Ô#ÐFÐFÐ%F¸Ð%FÐ%FÐ%FÑFÔFÐ#à‡‚ÑÔ˜IÒ%Ñ%¨*Ñ%õ 	ÐU IÐUÐU½=ÐUÐUÐUÑVÔVÐVÝ$×*Ò*¨3Ñ/Ô/°°!°Ô4ˆØ—z’z ,Ñ/Ô/ˆØ?°Ð?Ð?Ð?ˆÝÐ"ˆÐ"Ð"Ð"Ñ#Ô#Ð#Ý”J˜yÑ)Ô)ð 	(ð 	(ˆDÝ”˜¨$Ñ/Ô/ˆAØð 	(Ø$Ð3Ð3 q§w¢w¨q¡z¤zÐ3Ð3�õ ”7—>’> %Ñ(Ô(ð %­B¬G¯NªN¸5Ñ,AÔ,Að %ÝÐ;°%Ð;Ð;Ð;Ñ<Ô<Ð<Ý”I˜eÑ$Ô$Ð$ÝÐ:¨Ð:Ð:°DÐ:Ð:Ñ;Ô;Ð;Ý”
˜4 Ñ'Ô'Ð'øà˜)Ð#Ð#r*   )rô  )r  c                  ó   — e Zd ZdS )ÚFitzDeprecationNrÇ  r-   r*   r)   ré  ré  Ìd  s   € € € € € Ø€Dr*   ré  c                 óê  — t          j        dt          ¬¦  «         dþd„} | t           _        dÿd„} |t          dd¦  «          |t          d¦  «          |t          dd	¦  «          |t          d
¦  «          |t          d¦  «          |t          dd¦  «          |t          d¦  «          |t          dd¦  «          |t          d¦  «          |t          d¦  «          |t          d¦  «          |t          d¦  «          |t          d¦  «          |t          d¦  «          |t          dd¦  «          |t          d¦  «          |t          d¦  «          |t          dd¦  «          |t
          d¦  «          |t
          dd¦  «          |t          d¦  «          |t          d¦  «          |t          dd ¦  «          |t          d!¦  «          |t          d"¦  «          |t          d#d$¦  «          |t          d%d&¦  «          |t          d'd(¦  «          |t          d)d*¦  «          |t          d+d,¦  «          |t          d-d.¦  «          |t          d/d0¦  «          |t          d1d2¦  «          |t          d3¦  «          |t          d4¦  «          |t          d5¦  «          |t          d6¦  «          |t          d7¦  «          |t          d8d9¦  «          |t          d:d;¦  «          |t          d<d=¦  «          |t          d>¦  «          |t          d?¦  «          |t          d@dA¦  «          |t          dBdC¦  «          |t          dDdE¦  «          |t          dF¦  «          |t          dG¦  «          |t          dHdI¦  «          |t          dJ¦  «          |t          dKdL¦  «          |t          dMdN¦  «          |t          dO¦  «          |t          dP¦  «          |t          dQ¦  «          |t          dR¦  «          |t          dS¦  «          |t          dT¦  «          |t          dU¦  «          |t          dV¦  «          |t          dW¦  «          |t          dX¦  «          |t          dYdZ¦  «          |t          d[¦  «          |t          d\d]¦  «          |t          d^d_¦  «          |t          d`da¦  «          |t          db¦  «          |t          dc¦  «          |t          dd¦  «          |t          de¦  «          |t          dfdg¦  «          |t          dh¦  «          |t          di¦  «          |t          dj¦  «          |t          dkdl¦  «          |t          dm¦  «          |t          dn¦  «          |t          do¦  «          |t          dp¦  «          |t          dqdr¦  «          |t          ds¦  «          |t          dsdt¦  «          |t          du¦  «          |t          dv¦  «          |t          dw¦  «          |t          dx¦  «          |t          dy¦  «          |t          d¦  «          |t          d¦  «          |t          dz¦  «          |t          d{d|¦  «          |t          d}d~¦  «          |t          dd€¦  «          |t          d�d‚¦  «          |d dƒd„¦  «          |d d…d†¦  «          |d d‡¦  «          |d d‡dˆ¦  «          |d d‰dŠ¦  «          |d d‹dŒ¦  «          |d d�dŽ¦  «          |d d�¦  «          |d d�¦  «          |t          dy¦  «          |t          d‘¦  «          |t          d’¦  «          |t          d“¦  «          |t          d”¦  «          |t          d•¦  «          |t          d–¦  «          |t          d—¦  «          |t          d˜¦  «          |t          d™¦  «          |t          dš¦  «          |t          d›¦  «          |t          dœ¦  «          |t          d�¦  «          |t          dž¦  «          |t          dŸ¦  «          |t          d ¦  «          |t          d¡¦  «          |t          d¢¦  «          |t          d£¦  «          |t          d¤d¥¦  «          |t          d¦d§¦  «          |t          d¨¦  «          |t          d©¦  «          |t          dª¦  «          |t          d«¦  «          |t          d¬¦  «          |t          d­¦  «          |t          d®¦  «          |t          d¯¦  «          |t          d°¦  «          |t          d±¦  «          |t          d²¦  «          |t          d³¦  «          |t          d´¦  «          |t          dµ¦  «          |t          d¶¦  «          |t          d·¦  «          |t          d¸¦  «          |t          d¹¦  «          |t          dº¦  «          |t          d»d¼¦  «          |t          d½¦  «          |t          d¾d¿¦  «          |t          dÀ¦  «          |t          dÁdÂ¦  «          |t          dÃ¦  «          |t          d¦  «          |t          dÄdÅ¦  «          |t          d
¦  «          |t          dÆ¦  «          |t          dÇ¦  «          |t          d¦  «          |t          dd¦  «          |t          dÈ¦  «          |t          dÉ¦  «          |t          dÊ¦  «          |t          dË¦  «          |t          dÌ¦  «          |t          dÍdÎ¦  «          |t          dÏ¦  «          |t          dÐ¦  «          |t          dÑdÒ¦  «          |t          dÓdÔ¦  «          |t          dÕ¦  «          |t          dÖ¦  «          |t          d×¦  «          |t          dØ¦  «          |t          dÙdÚ¦  «          |t          dÛdÜ¦  «          |t          dÝ¦  «          |t          dÞdß¦  «          |t          dà¦  «          |t          dá¦  «          |t          dâ¦  «          |t          dã¦  «          |t          dä¦  «          |t          dådæ¦  «          |t          dç¦  «          |t          dèdé¦  «          |t          dêdë¦  «          |t          dìdí¦  «          |t          dîdï¦  «          |t          dîdð¦  «          |t          dñ¦  «          |t          dòdó¦  «          |t          dô¦  «          |t          dõ¦  «          |t          d¦  «          |t          dö¦  «          |t          d÷dø¦  «          |t          d÷dù¦  «          |t          d÷dú¦  «          |t          dû¦  «          |t          dw¦  «          |t          dü¦  «          |t          ds¦  «          |t          dsdt¦  «          |t          du¦  «          |t          dv¦  «          |t          dw¦  «          |t          dx¦  «          |t          dý¦  «          |t          dã¦  «          |t           d¬¦  «          |t           d­¦  «          |t           d®¦  «          |t           d¯¦  «          |t           d°¦  «          |t           d±¦  «          |t           d²¦  «          |t           d³¦  «          |t           d´¦  «          |t           dµ¦  «          |t           d¶¦  «          |t           dË¦  «          |t           dÌ¦  «         d S (   NÚonce©Úcategoryc                ó  — t          j        | ||||¬¦  «        }|                     d¦  «        }|dk     rt          |¦  «         d S ||d …                              ¦   «         d         dd …         }t          |¦  «         d S )N)ro   ré  r   rK  )ÚwarningsÚformatwarningr¡   r'   rÞ  )r˜   Úcatrf   rh   ra   ro   r   rr  s           r)   Úshowthisz!restore_aliases.<locals>.showthisÒd  s~   € ÝÔ% c¨3°¸&ÀtÐLÑLÔLˆØ�IŠIÐ'Ñ(Ô(ˆØˆqŠ5ˆ5Ý�‰IŒIˆIØˆFØ�A�B�BŒx×"Ò"Ñ$Ô$ QÔ'¨¨¨Ô+ˆÝˆD‰	Œ	ˆ	ˆ	ˆ	r*   c                ó¦  ‡ ‡‡‡— ‰ €t           j        t                   Š ‰s3dŠd}‰D ],}|dk    rd}Œ|r‰|                     ¦   «         z  Šd}Œ'‰|z  ŠŒ-t	          ‰ ‰¦  «        Št	          ‰ ‰d¦  «        rJ d‰ › d‰› �¦   «         ‚t          ‰¦  «        r-ˆ ˆˆˆfd„}t          ‰ ‰|¦  «         d	‰› d
‰j        › �|_        dS t          ‰ ‰‰¦  «         dS )a¹  
        Adds an alias for a class_ or module item clled <class_>.<new>.

        class_:
            Class/module to modify; use None for the current module.
        new_name:
            String name of existing item, e.g. name of method.
        legacy_name:
            Name of legacy object to create in <class_>. If None, we generate
            from <item> by removing underscores and capitalising the next
            letter.
        Nr\   Fr  Tzclass z already has c            	     ó^   •— t          j        d‰›d‰› d‰› d�t          ¬¦  «          ‰| i |¤ŽS )Nz"legacy_name=z" removed from z after v1.19.0 - use "z".rì  )rï  r¿  ré  )r÷  rø  Úclass_Úlegacy_nameÚnew_nameÚ
new_objects     €€€€r)   Údeprecated_functionz<restore_aliases.<locals>._alias.<locals>.deprecated_functionúd  sU   ø€ Ý”Øc˜KÐcÐc¸ÐcÐcÐW_ÐcÐcÐcÝ!0ðñ ô ð ð "�z DÐ3¨FÐ3Ð3Ð3r*   z;*** Deprecated and removed in version after v1.19.0 - use "z". ***
)r�
  Úmodulesr/   r	  rì   r  rÌ  rª  )rõ  r÷  rö  Úcapitalise_nextr¼  rù  rø  s   ```   @r)   Ú_aliaszrestore_aliases.<locals>._aliasÝd  sO  øøøø€ ð ˆ>Ý”[¥Ô*ˆFØð 
	%ØˆKØ#ˆOØð %ð %�Ø˜’8�8Ø&*�O�OØ$ð %Ø 1§7¢7¡9¤9Ñ,�KØ&+�O�Oà 1Ñ$�K�KÝ˜f hÑ/Ô/ˆ
Ý˜F K°Ñ6Ô6ÐcÐcÐ8cÀÐ8cÐ8cÐVaÐ8cÐ8cÑcÔcÐ6Ý�ZÑ Ô ð 	6ð4ð 4ð 4ð 4ð 4ð 4ð 4ð 4õ �V˜[Ð*=Ñ>Ô>Ð>ð,ÐRZð ,ð ,Ø!Ô)ð,ð ,ð  Ô'Ð'Ð'õ
 �V˜[¨*Ñ5Ô5Ð5Ð5Ð5r*   rÁ  ÚfileGetrá  rñ  ÚsoundGetrõ  rû  r  ÚgetTextPager2  rZ  ÚsetBlendModere  rs  rv  r„  r—  r™  rœ  ÚsetOCr£  r²  r  ÚfileUpdrÑ  rÒ  r  ÚconvertToPDFrÒ  rÜ  rÝ  ÚdeletePageRangerç  ÚembeddedFileAddré  ÚembeddedFileCountrì  ÚembeddedFileDelrî  ÚembeddedFileGetrô  ÚembeddedFileInforð  ÚembeddedFileNamesrø  ÚembeddedFileUpdr  r  r.  r9  rX  rs  ÚgetOCGsrŒ  ÚgetPageFontListr�  ÚgetPageImageListrŸ  r¦  r¨  ÚgetPageXObjectListr­  ÚgetSigFlagsrÛ  ÚgetToCr¼  rÙ  rÐ  Ú	insertPDFrë  rÇ  Ú	isFormPDFrÛ  ÚisPDFr÷  rú  r.  rù  rN  r\  r  rØ  rs  rÐ  rz  ÚpageCropBoxrq  r‡  Ú
PDFCatalogr3  Ú
PDFTrailerr�  ÚpreviousLocationr±  rr	  r’  rb	  rà	  ÚsetToCrç	  r‰  rf	  r^
  ÚisStreamr|  rˆ  r}
  r_
  r�
  ÚmetadataXMLrä  ÚgetRectArearÊ  rË  rY	  rZ	  r°  rŠ  r�  Ú	preRotater’  ÚpreScaler”  ÚpreShearr˜  ÚpreTranslaterå  Ú	getPDFnowrf  Ú	getPDFstrr“  ÚgetTextlengthr~  ÚImagePropertiesré  Ú	PaperRectrè  Ú	PaperSizerë  rŸ  r$  rM  rQ  rU  rX  r^  ra  rc  rg  ri  rk  r[	  rr  rt  rw  rz  r}  r  r’  ry  r3  rÉ  ÚCropBoxPositionrÌ  rd	  rÜ  rl  ré  rî  rð  ró  rö  rø  rú  r�  r  r  r	  r  r  r  r)  r-  ÚgetDisplayListr>  r‹  ÚgetFontListr˜  rE  ÚgetImageListrr  r§  ÚgetSVGimager­  r±  rÄ  rë  rc  r)  rŸ  rÄ  Ú
_isWrappedrŒ  r  rv  r*  r
  ÚMediaBoxSizerœ  r  rR  rq	  r&  Ú
setCropBoxrb  ÚsetMediaBoxr¶  rØ  ÚshowPDFpagerk  rH  rÅ  rR  rÏ  rc  Ú
copyPixmapr¿  rÄ  ÚinvertIRectrë  ÚpillowWriterî  Ú
pillowDatar)  Ú
writeImageÚwritePNGr  rØ  ÚsetResolutionr%  r'  r6  rÏ  ÚgetImageDataÚ
getPNGDataÚ
getPNGdatar9  r¥  rß  rí	  r,   )rï  Úfilterwarningsré  Úshowwarningrâ   r»  rÁ   re  r  ru  rX  rÒ   r×  rû  r$  rQ  r  )rò  rü  s     r)   Úrestore_aliasesr=  Ïd  s�  € ÝÔ˜V­oÐ>Ñ>Ô>Ð>ðð ð ð ð $…HÔð)6ð )6ð )6ð )6ðV €F�E�:¨IÑ6Ô6Ð6Ø
€F�E�<Ñ Ô Ð Ø
€F�E�;¨JÑ7Ô7Ð7Ø
€F�E�:ÑÔÐØ
€F�E�=Ñ!Ô!Ð!Ø
€F�E�>¨MÑ:Ô:Ð:Ø
€F�E�;ÑÔÐØ
€F�E�?¨NÑ;Ô;Ð;Ø
€F�E�<Ñ Ô Ð Ø
€F�E�<Ñ Ô Ð Ø
€F�E�;ÑÔÐØ
€F�E�:ÑÔÐØ
€F�E�?Ñ#Ô#Ð#Ø
€F�E�:ÑÔÐØ
€F�E�8˜WÑ%Ô%Ð%Ø
€F�E�=Ñ!Ô!Ð!Ø
€F�E�:ÑÔÐØ
€F�E�=¨IÑ6Ô6Ð6Ø
€F�K˜Ñ&Ô&Ð&Ø
€F�K˜¨MÑ:Ô:Ð:Ø
€F�H�oÑ&Ô&Ð&Ø
€F�HÐ*Ñ+Ô+Ð+Ø
€F�HÐ&¨NÑ;Ô;Ð;Ø
€F�H�kÑ"Ô"Ð"Ø
€F�H�mÑ$Ô$Ð$Ø
€F�H�nÐ,=Ñ>Ô>Ð>Ø
€F�H�mÐ,=Ñ>Ô>Ð>Ø
€F�H�oÐ,?Ñ@Ô@Ð@Ø
€F�H�mÐ,=Ñ>Ô>Ð>Ø
€F�H�mÐ,=Ñ>Ô>Ð>Ø
€F�H�nÐ,>Ñ?Ô?Ð?Ø
€F�H�oÐ,?Ñ@Ô@Ð@Ø
€F�H�mÐ,=Ñ>Ô>Ð>Ø
€F�H�nÑ%Ô%Ð%Ø
€F�H�oÑ&Ô&Ð&Ø
€F�H�oÑ&Ô&Ð&Ø
€F�H�oÑ&Ô&Ð&Ø
€F�HÐ'Ñ(Ô(Ð(Ø
€F�H�j¨IÑ6Ô6Ð6Ø
€F�HÐ&Ð,=Ñ>Ô>Ð>Ø
€F�HÐ'Ð,>Ñ?Ô?Ð?Ø
€F�HÐ'Ñ(Ô(Ð(Ø
€F�H�oÑ&Ô&Ð&Ø
€F�HÐ)Ð,@ÑAÔAÐAØ
€F�H�n¨MÑ:Ô:Ð:Ø
€F�H�i Ñ*Ô*Ð*Ø
€F�HÐ(Ñ)Ô)Ð)Ø
€F�H�mÑ$Ô$Ð$Ø
€F�H�l¨KÑ8Ô8Ð8Ø
€F�H�jÑ!Ô!Ð!Ø
€F�H�m¨KÑ8Ô8Ð8Ø
€F�H�h Ñ(Ô(Ð(Ø
€F�H�oÑ&Ô&Ð&Ø
€F�H�mÑ$Ô$Ð$Ø
€F�H�oÑ&Ô&Ð&Ø
€F�H�kÑ"Ô"Ð"Ø
€F�H�oÑ&Ô&Ð&Ø
€F�H�kÑ"Ô"Ð"Ø
€F�H�lÑ#Ô#Ð#Ø
€F�H�jÑ!Ô!Ð!Ø
€F�H�oÑ&Ô&Ð&Ø
€F�H�lÑ#Ô#Ð#Ø
€F�H�n¨MÑ:Ô:Ð:Ø
€F�H�kÑ"Ô"Ð"Ø
€F�H�m¨LÑ9Ô9Ð9Ø
€F�H�m¨LÑ9Ô9Ð9Ø
€F�H�oÐ,>Ñ?Ô?Ð?Ø
€F�H�nÑ%Ô%Ð%Ø
€F�HÐ'Ñ(Ô(Ð(Ø
€F�H�nÑ%Ô%Ð%Ø
€F�H�nÑ%Ô%Ð%Ø
€F�H�i Ñ*Ô*Ð*Ø
€F�HÐ(Ñ)Ô)Ð)Ø
€F�H�oÑ&Ô&Ð&Ø
€F�H�oÑ&Ô&Ð&Ø
€F�HÐ&¨JÑ7Ô7Ð7Ø
€F�H�mÑ$Ô$Ð$Ø
€F�H�mÑ$Ô$Ð$Ø
€F�H�mÑ$Ô$Ð$Ø
€F�HÐ'Ñ(Ô(Ð(Ø
€F�HÐ)¨MÑ:Ô:Ð:Ø
€F�E�:ÑÔÐØ
€F�E�:¨MÑ:Ô:Ð:Ø
€F�E�?Ñ#Ô#Ð#Ø
€F�E�>Ñ"Ô"Ð"Ø
€F�E�:ÑÔÐØ
€F�E�=Ñ!Ô!Ð!Ø
€F�D�-Ñ Ô Ð Ø
€F�D�,ÑÔÐØ
€F�D�,ÑÔÐØ
€F�FÐ$Ñ%Ô%Ð%Ø
€F�F�K¨KÑ8Ô8Ð8Ø
€F�F�J¨JÑ7Ô7Ð7Ø
€F�F�J¨JÑ7Ô7Ð7Ø
€F�F�N¨NÑ;Ô;Ð;Ø
€FˆD�-¨KÑ8Ô8Ð8Ø
€FˆD�-¨KÑ8Ô8Ð8Ø
€FˆDÐ#Ñ$Ô$Ð$Ø
€FˆDÐ#¨OÑ<Ô<Ð<Ø
€FˆD�/Ð,=Ñ>Ô>Ð>Ø
€FˆD�,¨KÑ8Ô8Ð8Ø
€FˆD�,¨KÑ8Ô8Ð8Ø
€FˆD�-Ñ Ô Ð Ø
€FˆD�.Ñ!Ô!Ð!Ø
€F�G�]Ñ#Ô#Ð#Ø
€F�G�YÑÔÐØ
€F�DÐ#Ñ$Ô$Ð$Ø
€F�DÐ$Ñ%Ô%Ð%Ø
€F�DÐ"Ñ#Ô#Ð#Ø
€F�DÐ&Ñ'Ô'Ð'Ø
€F�DÐ'Ñ(Ô(Ð(Ø
€F�D�/Ñ"Ô"Ð"Ø
€F�DÐ"Ñ#Ô#Ð#Ø
€F�DÐ%Ñ&Ô&Ð&Ø
€F�DÐ&Ñ'Ô'Ð'Ø
€F�DÐ"Ñ#Ô#Ð#Ø
€F�DÐ$Ñ%Ô%Ð%Ø
€F�DÐ&Ñ'Ô'Ð'Ø
€F�DÐ#Ñ$Ô$Ð$Ø
€F�DÐ'Ñ(Ô(Ð(Ø
€F�DÐ"Ñ#Ô#Ð#Ø
€F�DÐ'Ñ(Ô(Ð(Ø
€F�D�,ÑÔÐØ
€F�DÐ"Ñ#Ô#Ð#Ø
€F�D�)¨IÑ6Ô6Ð6Ø
€F�DÐ$Ð,=Ñ>Ô>Ð>Ø
€F�D�.Ñ!Ô!Ð!Ø
€F�D�-Ñ Ô Ð Ø
€F�D�/Ñ"Ô"Ð"Ø
€F�DÐ%Ñ&Ô&Ð&Ø
€F�D�-Ñ Ô Ð Ø
€F�D�-Ñ Ô Ð Ø
€F�D�,ÑÔÐØ
€F�D�+ÑÔÐØ
€F�D�+ÑÔÐØ
€F�D�/Ñ"Ô"Ð"Ø
€F�D�+ÑÔÐØ
€F�D�+ÑÔÐØ
€F�D�-Ñ Ô Ð Ø
€F�D�/Ñ"Ô"Ð"Ø
€F�D�-Ñ Ô Ð Ø
€F�D�-Ñ Ô Ð Ø
€F�D�,ÑÔÐØ
€F�D�.Ñ!Ô!Ð!Ø
€F�D�.Ñ!Ô!Ð!Ø
€F�DÐ#Ð,<Ñ=Ô=Ð=Ø
€F�D�.Ñ!Ô!Ð!Ø
€F�D�+¨MÑ:Ô:Ð:Ø
€F�DÐ"Ñ#Ô#Ð#Ø
€F�D�,¨NÑ;Ô;Ð;Ø
€F�D�+ÑÔÐØ
€F�D�,ÑÔÐØ
€F�D�/¨MÑ:Ô:Ð:Ø
€F�D�*ÑÔÐØ
€F�DÐ#Ñ$Ô$Ð$Ø
€F�DÐ"Ñ#Ô#Ð#Ø
€F�D�-Ñ Ô Ð Ø
€F�D�.¨MÑ:Ô:Ð:Ø
€F�D�-Ñ Ô Ð Ø
€F�D�.Ñ!Ô!Ð!Ø
€F�D�-Ñ Ô Ð Ø
€F�D�-Ñ Ô Ð Ø
€F�DÐ"Ñ#Ô#Ð#Ø
€F�D�,¨LÑ9Ô9Ð9Ø
€F�D�,ÑÔÐØ
€F�D�,ÑÔÐØ
€F�D�*¨JÑ7Ô7Ð7Ø
€F�D�/¨NÑ;Ô;Ð;Ø
€F�D�+ÑÔÐØ
€F�D�/Ñ"Ô"Ð"Ø
€F�DÐ#Ñ$Ô$Ð$Ø
€F�D�,ÑÔÐØ
€F�D�-¨LÑ9Ô9Ð9Ø
€F�D�.¨MÑ:Ô:Ð:Ø
€F�D�.Ñ!Ô!Ð!Ø
€F�D�/¨MÑ:Ô:Ð:Ø
€F�DÐ)Ñ*Ô*Ð*Ø
€F�D�-Ñ Ô Ð Ø
€F�D�/Ñ"Ô"Ð"Ø
€F�D�,ÑÔÐØ
€F�F�LÑ!Ô!Ð!Ø
€F�F�F¨LÑ9Ô9Ð9Ø
€F�F�LÑ!Ô!Ð!Ø
€F�F�N¨MÑ:Ô:Ð:Ø
€F�F�J¨MÑ:Ô:Ð:Ø
€F�F�M¨LÑ9Ô9Ð9Ø
€F�F�F¨LÑ9Ô9Ð9Ø
€F�F�F¨JÑ7Ô7Ð7Ø
€F�F�KÑ Ô Ð Ø
€F�F�I¨OÑ<Ô<Ð<Ø
€F�F�LÑ!Ô!Ð!Ø
€F�F�KÑ Ô Ð Ø
€F�F�JÑÔÐØ
€F�F�KÑ Ô Ð Ø
€F�F�I¨NÑ;Ô;Ð;Ø
€F�F�I¨LÑ9Ô9Ð9Ø
€F�F�I¨LÑ9Ô9Ð9Ø
€F�D�+ÑÔÐØ
€F�D�*ÑÔÐØ
€F�DÐ"Ñ#Ô#Ð#Ø
€F�D�*ÑÔÐØ
€F�D�*¨MÑ:Ô:Ð:Ø
€F�D�/Ñ"Ô"Ð"Ø
€F�D�.Ñ!Ô!Ð!Ø
€F�D�*ÑÔÐØ
€F�D�-Ñ Ô Ð Ø
€F�J˜Ñ'Ô'Ð'Ø
€F�J˜Ñ%Ô%Ð%Ø
€F�E�=Ñ!Ô!Ð!Ø
€F�E�=Ñ!Ô!Ð!Ø
€F�E�<Ñ Ô Ð Ø
€F�E�;ÑÔÐØ
€F�E�;ÑÔÐØ
€F�E�?Ñ#Ô#Ð#Ø
€F�E�;ÑÔÐØ
€F�E�;ÑÔÐØ
€F�E�=Ñ!Ô!Ð!Ø
€F�E�?Ñ#Ô#Ð#Ø
€F�E�=Ñ!Ô!Ð!Ø
€F�E�=Ñ!Ô!Ð!Ø
€F�EÐ#Ñ$Ô$Ð$Ð$Ð$r*   zPyMuPDF z : Python bindings for the MuPDF z library.
Python z running on rK  l        z-bit).
)r\   r   r¤
  r�  )r   r   r   r   r   N)r¡  r�  rÎ  rµ   rE  )rZ  r_  r\  r4   )r*  rf  rZ  r_  r\  r4   )r(  )r¼  rÀ  )rÖ   rÒ   rù   rÑ  rÎ  rµ   )r*  rÁ   r  r4   rÎ  r´   )rk	  r¤  rÎ  rµ   )r¡  r¤  rÎ  rç   )r¡  r¤  )r’  r¤  rÎ  rç   )r  r¤  rÎ  rç   )r¼  r6  rÎ  rÑ  rÎ  rÑ  )r*  rÁ   r  r�  )
r   rÑ  rM  rM  r?  rç   r  r4   rÎ  rÑ  )rr  rÑ  rÎ  rÑ  r,   )
ro  rÑ  rn  r¾  r$  rp  r   r¾  rÎ  rÑ  )rÔ  rú  r   )
r   rÑ  rù   rÑ  rú   ro  rë  r4   rÎ  ro  )rÔ  rà  rÎ  r5   )r  rº   r  rº   rÎ  ru  )rb
  )r®   rÑ  rf   r¾  )r®   rÑ  )rÖ   rŽ  rÎ  r4   )rÖ   rŽ  rß   rt  rÎ  r×  r…
  r3  )r•  rº   rß  rº   r  r¼   rÎ  r´   )r   rÑ  rÎ  r4   )rÎ  r   r   )r÷   r¼   rT  r4   r¥  r4   rÎ  r´   )rr  rÑ  rÎ  r$  )rr  rÑ  rÎ  rµ   )rÖ   rŽ  rW  r0  rÎ  r×  )r4  r4   rÎ  rµ   )rú  r4   rÎ  rÑ  (Ì  rª  Ú
__future__r   Úatexitr;  Úcollectionsrh  Úimportlib.utilr•   rb   r9   rJ  rd   rm  rÆ  rú	  r�
  rx  rˆ  r‹
  rï  r  rs  r\   r   rH   r}   r8   re  rW   rZ   r´   rM   rP   rN   rR   rT   rX   r[   r'   rr   rv   rØ  rn  r
  rw
  r   r�   r
  r  r…   rÙ  rŽ   Ú__annotations__r�   r‘   r™   rœ   rÜ  Ú	machineryÚSourceFileLoaderÚload_modulerø
  rù
  r�   rg   r;   rž   Úreinit_singlethreadedr¢   Ú_buildr£   r¤   r¥   r¦   r§   r¨   r©   rª   rž  rÿ  Úpymupdf_daterµ   r6   r¯  ÚFZ_VERSION_MAJORÚFZ_VERSION_MINORÚFZ_VERSION_PATCHÚversionÚVersionFitzÚVersionBindÚVersionDater¶   Úformat_grà  rÈ  r  r]  r  ÚOptionalrö  r5   r;  ro  r¿  ÚUnionr4   r¡  ÚSequencerÀ  rÑ  r¾  r¹   rº   r»   r¼   rÊ   rÎ   r×   rÚ   rà   r'  râ   r9  rˆ  r”  r«  r»  ÚFzDocument_insert_pdfrß  rÁ   r:   r’
  r2  rÞ  r  ru  r�  rž  r/  r:  r(  rX  r�  rÒ   r×  rì  rû  r$  r  rÒ  r  rQ  re  rú  r/   Ú_selfr‚
  rB   r¤  Ú_valuer3   rÌ  Ú
getmembersÚPDF_SIGNATURE_SHOW_LABELSÚPDF_SIGNATURE_SHOW_DNÚPDF_SIGNATURE_SHOW_DATEÚPDF_SIGNATURE_SHOW_TEXT_NAMEÚPDF_SIGNATURE_SHOW_GRAPHIC_NAMEÚPDF_SIGNATURE_SHOW_LOGOÚ PDF_SIGNATURE_DEFAULT_APPEARANCEÚUCDN_EAST_ASIAN_HÚPDF_TX_FIELD_IS_MULTILINEÚUCDN_SCRIPT_ADLAMÚAnyrp  ÚBase14_fontnamesr²
  rÎ  rÒ  r‰  rä  rz  r{  rŸ  rÉ  rÿ  r‹  ÚFZ_RECOMPRESS_NEVERÚFZ_RECOMPRESS_SAMEÚFZ_RECOMPRESS_LOSSLESSr·  ÚFZ_RECOMPRESS_J2Kr°  r²  ÚFZ_SUBSAMPLE_BICUBICÚ	PDF_OC_ONÚPDF_OC_TOGGLEÚ
PDF_OC_OFFrÖ	  rb  rh  rg  rÅ  re  r¼  r»  ÚLINK_FLAG_R_VALIDÚLINK_FLAG_B_VALIDÚLINK_FLAG_FIT_HÚLINK_FLAG_FIT_VÚLINK_FLAG_R_IS_ZOOMr  r  ÚSTAMP_ApprovedÚ
STAMP_AsIsÚSTAMP_ConfidentialÚSTAMP_DepartmentalÚSTAMP_ExperimentalÚSTAMP_ExpiredÚSTAMP_FinalÚSTAMP_ForCommentÚSTAMP_ForPublicReleaseÚSTAMP_NotApprovedÚSTAMP_NotForPublicReleaseÚ
STAMP_SoldÚSTAMP_TopSecretÚSTAMP_Draftr@  rA  rB  rC  ÚTEXT_FONT_SUPERSCRIPTrÖ  r×  rØ  rÙ  ÚTEXT_OUTPUT_TEXTÚTEXT_OUTPUT_HTMLÚTEXT_OUTPUT_JSONÚTEXT_OUTPUT_XMLÚTEXT_OUTPUT_XHTMLÚFZ_STEXT_PRESERVE_LIGATURESrn	  ÚFZ_STEXT_PRESERVE_WHITESPACEro	  ÚFZ_STEXT_PRESERVE_IMAGESrC  ÚFZ_STEXT_INHIBIT_SPACESÚTEXT_INHIBIT_SPACESÚFZ_STEXT_DEHYPHENATErm	  ÚFZ_STEXT_PRESERVE_SPANSrU	  ÚFZ_STEXT_MEDIABOX_CLIPrp	  Ú$FZ_STEXT_USE_CID_FOR_UNKNOWN_UNICODEÚ TEXT_USE_CID_FOR_UNKNOWN_UNICODEÚFZ_STEXT_COLLECT_STRUCTUREÚTEXT_COLLECT_STRUCTUREÚFZ_STEXT_ACCURATE_BBOXESÚTEXT_ACCURATE_BBOXESÚFZ_STEXT_COLLECT_VECTORSÚTEXT_COLLECT_VECTORSÚFZ_STEXT_IGNORE_ACTUALTEXTÚTEXT_IGNORE_ACTUALTEXTÚFZ_STEXT_SEGMENTÚTEXT_SEGMENTÚFZ_STEXT_CLIPÚ	TEXT_CLIPÚFZ_STEXT_LAZY_VECTORSÚTEXT_LAZY_VECTORSÚFZ_STEXT_FUZZY_VECTORSÚTEXT_FUZZY_VECTORSÚFZ_STEXT_PARAGRAPH_BREAKÚTEXT_PARAGRAPH_BREAKÚFZ_STEXT_TABLE_HUNTÚTEXT_TABLE_HUNTÚFZ_STEXT_COLLECT_STYLESrV	  Ú$FZ_STEXT_USE_GID_FOR_UNKNOWN_UNICODEÚ TEXT_USE_GID_FOR_UNKNOWN_UNICODErý  ÚTEXT_CLIP_RECTÚFZ_STEXT_ACCURATE_ASCENDERSÚTEXT_ACCURATE_ASCENDERSÚFZ_STEXT_ACCURATE_SIDE_BEARINGSÚTEXT_ACCURATE_SIDE_BEARINGSÚTEXT_STEXT_SEGMENTÚTEXT_CID_FOR_UNKNOWN_UNICODEÚTEXTFLAGS_WORDSÚTEXTFLAGS_BLOCKSÚTEXTFLAGS_DICTÚTEXTFLAGS_RAWDICTÚTEXTFLAGS_SEARCHÚTEXTFLAGS_HTMLÚTEXTFLAGS_XHTMLÚTEXTFLAGS_XMLÚTEXTFLAGS_TEXTÚTEXT_ENCODING_LATINÚTEXT_ENCODING_GREEKÚTEXT_ENCODING_CYRILLICr“  r›  r—  r™  ÚPDF_BM_ColorÚPDF_BM_ColorBurnÚPDF_BM_ColorDodgeÚPDF_BM_DarkenÚPDF_BM_DifferenceÚPDF_BM_ExclusionÚPDF_BM_HardLightÚ
PDF_BM_HueÚPDF_BM_LightenÚPDF_BM_LuminosityÚPDF_BM_MultiplyÚPDF_BM_NormalÚPDF_BM_OverlayÚPDF_BM_SaturationÚPDF_BM_ScreenÚPDF_BM_SoftLightrc  rÞ   r  r  r  rÏ  rÎ  rÐ  r	  Údictkey_ascrM  rX	  rl  rU  rN  rI  r  rR  r  r  r  Ú
dictkey_dar­  r´  Údictkey_descre  Údictkey_effectr   r³  rµ  rL  rL	  rK	  Údictkey_glyphrQ  r  rø  r‚  rµ  rf  rO  r  r  rM  rK  rÕ  r¶  r  rW	  r´  r®  r  r  r  r  rý  rP  rd  r  rS  rT  r°
  re  rf  rc  r¯
  rË  rŸ  r

  rQ  rP  rã  rX  r   rz  rc  re  ri  rh  rd  rp  r§  r¼  r  r²  r'  ry  rB  r   rµ  r2  rš  r  rd  r›  r…  r”  rc  rÉ  r2  rˆ  r“  r0  rÚ  rÓ  rñ  r®  r;  r°  r  r‚  rÊ  rº  rx  r  r$  rõ  r+	  ru
  r,	  r§  r;  rG  r*  r™  râ  rã  r†  r‡  rQ  r^  re  rr  r  r  r�  ru  r…  r»  r³
  r!  rÕ  r  r½  rÿ  rÄ  r[  r.  r¹  rm  rê  rï  rð  rû  r�  r3  rú  rR  r¯  rB  rÛ  rF  r  ra  rc  r&  rÓ  r  rà  rê  rŒ  rŽ  r  r“  r–  r  r,  rf
  r@  r  r5  rÂ  r`  r"  r´  rÇ  rq  rJ  rî  rg  rŽ  r3  r   r1  rI
  r¨  r›  rH  râ  r  ry
  r€	  rø  r;  r  r³  rº  r   r)  r?  r|  r~  r¯  r&  r}  r‰  r(  r(  ÚMSG_BAD_DOCUMENTÚMSG_BAD_FILETYPEÚMSG_BAD_LOCATIONr¨  rB
  r¦  ro  rD  ræ	  r°  r  rˆ  ÚMSG_COLOR_COUNT_FAILEDrQ  r…  r‹  rç  ra  rL
  rj  rñ  r±  rp  r°  rƒ  rp  r¾  rN  r\  ro  rf  r‡  r†  rÇ  r±  r  rR  r­  rø  rÕ  rL  rn  rf  rØ  ry  r“  r~  rˆ  r‹  r�  r’  r—  r›  rŸ  r£  r¥  r§  rª  r­  r²  r°  rË  rÏ  rÖ  rØ  rÛ  ÚFzPathWalker2rÝ  rÓ  r  r  r
  r  r  r  r  r  r  r  r!  r#  r&  r%  rŸ  ÚPdfFilterOptions2r+  Ú	FzDevice2r�  Ú	FzOutput2r˜  r  r   r·  rp  rr  rJ  rK  rz  r|  r‚  r  rÊ  rå  r5  r�  r“  r[  rë
  r£  r¬  r%  rÃ  rþ  r  r  rë  r»  rç  r…  rv  ré  r„  r  r|  r£  r�  r†  rË  rx  ré  rè  rë  r]  r*  rë  r6  r  r~  r?  r<  rÑ  rú  r  r	  r  rÞ  rS  rõ  r  rÎ  rÏ  rÐ  ÚregisterrÒ  rÔ  r   r  rþ  rÑ
  rÕ  r×  rç  rô  Úrecover_bbox_quadÚrecover_char_quadÚrecover_line_quadÚrecover_quadÚrecover_span_quadr  ÚDeprecationWarningré  r=  Ú__version__rŽ
  rf  Úmaxsizer-   r*   r)   ú<module>rß     se*  ððð ð ð #Ð "Ð "Ð "Ð "Ð "ð €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€à Ð Ð Ð Ð Ð ð ØØØØØØØØØðsð sð sð sð sðl � 2¤:§>¢>Ð2CÑ#DÔ#DÈcÌjÐYÑYÔY€ð ˆ\˜rœzŸ~š~¨mÑ<Ô<ÀcÄjÐQÑQÔQ€
ð ˆt‰vŒv€ØÐ ðð ð ð!ð !ð !ðð ð ð ØØØØØØØØðð ð ð ð ð> ØØØØØØØØðð ð ð ð ñ<.ð .ð .ð .ñ22ð 2ð 2ð 2ð ð  ð  ð �S˜Ô*¨\Ñ9¸C¸CÀ¹F¼FÑBÑCÔCÐ ðð ð ð$ð ð ð  #�{Ð$@À!ÑDÔDÐ ð ˆlÐ/°Ñ6Ô6€ð'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ð ˆ8‰:Œ:€à04€Ð 4Ð 4Ð 4Ñ 4ð Ð ðð ð ð"ð "ð "ð. Œj�nŠn˜mÑ,Ô,€ØÐà€CˆHÐ	YÐ	Y [Ð	YÐ	YÐ	YÑZÔZÐZØ€CˆHÐ	>Ð	> B¤J¨|Ô$<Ð	>Ð	>Ñ?Ô?Ð?Ø�bÒÐØÐÐÐÐàÐÐÐØÔ)×:Ò:ØØñô ÷ ’+‘-”-ð 	ð ÔÔ!Ô'€E€EðØÐÐÐÐÐÐøØð ð ð Øˆˆˆˆˆðøøøà€wˆuÐ-Ñ.Ô.ð &Ø#ˆÔ#Ñ%Ô%Ð%Ø€EÔÑ!Ô!Ð!ðð ð ð #Ð "Ð "Ð "Ð "Ð "Ø &Ð &Ð &Ð &Ð &Ð &Ø $Ð $Ð $Ð $Ð $Ð $Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #Ø )Ð )Ð )Ð )Ð )Ð )Ø  Ð  Ð  Ð  Ð  Ð  Ø &Ð &Ð &Ð &Ð &Ð &àÔ €ð €ð �eÐKÐK°-×2EÒ2EÀcÑ2JÔ2JÐKÑKÔKÑLÔLÐ à˜uÔ5°uÔ7MÈuÔOeÐfÒfÐfÐfð 	UÐ/Bð  	Uð  	UÈ%ÔJ`ÐbgÔbxÐzô  {Qð  JRð  	Uð  	Uñ gÔfÐfð
 ˜M¨4Ð
0€Ø€Ø€Ø€ð
 !ð 2ð 2ð 2ð 2ð 2ð$ €ð0ØÔ"€J€JøØð 0ð 0ð 0Ø˜Ñ" ZÑ/€J€J€Jð0øøøð Œ?˜:Ô&€Ø
Œ/˜$Ô
€ØŒ?˜5Ô!€Ø	Œ�c˜4�iÔ	 €Ø	Œ˜œÔ	)€Ø	Œ˜Ô	€à€Ø€
Ø€	Ø€	ð4ð 4ð 4ñ$4ð 4ð 4ð 4ð.0ð 0ð 0ñ0ð 0ð 0ð 0ð*ð ð ð  €	ð
Z<ð Z<ð Z<ð Z<ð Z<ñ Z<ô Z<ð Z<ðz*c'ð c'ð c'ð c'ð c'ñ c'ô c'ð c'ðLP	ð P	ð P	ð P	ð P	ñ P	ô P	ð P	ðfð ð ð ð ñ ô ð ðBOð Oð Oð Oð Oñ Oô Oð Oð.+ð +ð +ð +ð +ñ +ô +ð +ðZ ð >Ø"'Ô"=ÐðeTð eTð eTð eTð eTñ eTô eTð eTðNi €ð)&ð )&ð )&ð )&ð )&ñ )&ô )&ð )&ðX|"ð |"ð |"ð |"ð |"ñ |"ô |"ð |"ð~ð ð ð ð ñ ô ð ðtð tð tð tð tñ tô tð tðnoð oð oð oð oñ oô oð oðd:ð :ð :ð :ð :�Vñ :ô :ð :ð. ˆ>ÑÔ€ðu,ð u,ð u,ð u,ð u,ñ u,ô u,ð u,ðnNð Nð Nð Nð Nñ Nô Nð Nðb
 Ð Ð Ð Ð Ð ðOð Oð Oð Oð Oñ Oô Oð Oðf ØØØØØñ;ð ;ð ;ð ;ð|d:ð d:ð d:ð d:ð d:ñ d:ô d:ð d:ðNus'ð s'ð s'ð s'ð s'ñ s'ô s'ð s'ðlxð xð xð xð xñ xô xð xðveXð eXð eXð eXð eXñ eXô eXð eXðP`ð `ð `ð `ð `ñ `ô `ð `ðF	[ð [ð [ð [ð [ñ [ô [ð [ð|hBð hBð hBð hBð hBñ hBô hBð hBðVWð Wð Wð Wð Wñ Wô Wð Wðt
að að að að añ aô að aðHtð tð tð tð tñ tô tð tðt.ØŒK˜Ô!€Eð2Ø"œ^×1Ò1Ñ3Ô3ð 	2ð 	2‰MˆE�6Ø×ÒÐ 8Ñ9Ô9ð 2Ø×#Ò#Ð$4Ñ5Ô5ð 2àð �G˜E 5¨&Ñ1Ô1Ð1øð	2ð2 )*ØÔ-ñ).àÔ)ñ)*ð Ô+ñ),ð Ô0ñ	)1ð
 Ô3ñ)4ð Ô+ñ),Ð$ð Ô" aÒ'Ð'Ð'Ð'ð %¨Ô(GÒGÐGÐGÐGØ Ô 7Ò7Ð7Ð7Ð7Øˆu�fà
Œ*€ðÐ ð" €Ø	ð #ð #€AØ!"€O�A—G’G‘I”IÑÐØ%€�Ñ Ø-€�Ñ Ø*€�Ñ Ø1€�Ñ Ø#€�Ñ Ø+€�Ñ Ø(€�Ñ Ø/€�Ñ Ø'€�Ñ Ø&€�Ñ Ø(€�Ñ Ø,€�Ñ Ø"€�Ñ Ø(€�Ñ à
€Ø€ð €Ø€àÐ ØÐ ØÐ ØÐ ð Ô/Ð ØÔ-Ð ØÔ5Ð ØÔ-Ð ØÔ+Ð ØÔ+Ð ØÔ1Ð ØÔ1Ð ð
 €	Ø€Ø€
ð
 €	Ø€	Ø€Ø€Ø€
Ø€
ØÐ ØÐ ØÐ ØÐ Ø€Ø€ØÐ àÐ ØÐ à€Ø€
ØÐ ØÐ ØÐ Ø€Ø€ØÐ ØÐ ØÐ ØÐ Ø€
Ø€Ø€à€ØÐ ØÐ ØÐ àÐ ØÐ ØÐ ØÐ Ø€àÐ ØÐ ØÐ Ø€ØÐ àÔ;Ð Ø Ô=Ð ØÔ5Ð ØÔ3Ð ØÔ-Ð ØÔ3Ð ØÔ1Ð Ø#(Õ#MÑ  ØÕ9Ñ ØÕ5Ñ ØÕ5Ñ ØÕ9Ñ ØÕ%�ØÕ�	Ø˜*Ò$Ð$ØÕ3ÑØ˜*Ò$Ð$ØÕ5ÑàÕ5Ñ ØÕ+�ØÕ3Ñ Ø#(Õ#MÑ  ØÕ)�ØÕ;Ñ Ø#ÕCÑ ñ "Ñ Ù?Ñ àØ
!ñ"à
"ñ#ð ññ +ñ	+�ð Ø
!ñ"à
"ñ#ð ññ +ñ	+Ñ ð Ø
!ñ"à
"ñ#ð ñð ñ	ñ
 +ñ+�ñ #Ñ àØ
"ñ#à
ñð ññ +ñ	+Ñ ð Ø
!ñ"à
"ñ#ð ñð ñ	ñ
 +ñ+�ð Ø
!ñ"à
"ñ#ð ñð ñ	ñ
 +ñ+�ð Ø
!ñ"à
"ñ#ð ññ +ñ	+�ð Ø
!ñ"à
"ñ#ð ññ +ñ	+�ð Ñ ØÑ ØÑ àÑ ð 
�Ø
�Ø
�ð �ØÑ Ø Ñ Ø�Ø Ñ ØÑ ØÑ Ø�
Ø�Ø Ñ Ø�Ø�Ø�Ø Ñ Ø�ØÑ ð Dð  DØYÐYð lð  lØeÐeØ}Ð}ØZÐZØgÐgð
ð 
�
ð	ð 	ð 	ð 	ð 	‘Lñ 	ô 	ñ 	ð	ð 	ð 	ð 	ð 	™ñ 	ô 	ñ 	ð	ð 	ð 	ð 	ð 	‘]ñ 	ô 	ñ 	ð 	ˆ
‘6ÑÔ�Ø	ˆ‘GÑ	Ô	�Ø	ˆ‘GÑ	Ô	�ð
 �Ø�Ø�Ø�Ø�Ø�Ø�	Ø�Ø�Ø!Ñ Ø�Ø%Ñ Ø�Ø�
Ø�Ø�Ø�Ø�Ø�Ø�ØÑ Ø�Ø�Ø!Ñ Ø�Ø�Ø�Ø�
Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�ØÑ Ø�Ø�Ø�Ø�Ø�ðØ:Ñ:Ñ:Ñ:Ñ:Ñ:Ñ:Ð:à/™?Õ/Ñ1Ô1ÑÙ!×&Ó&Ñ(Ô(ð ;ð ;‰Ù,7¹¬NÑ™QÔ¡Ñ)Ð)Ù™˜øÙð ð ð ØÑÐÐðøøøñA
�ñHA
�ñNð ñ ñ	ð 	ñ 	ñ"ð "ñ "ñ!3ð !3ñ !3ñH'ð 'ñ 'ñUð Uñ Uñð ñ ñTð Tñ Tñ<ð <ñ <ñ
Uð Uñ Uñ ð  ñ  ñTð Tñ Tñð ñ ñð ñ ñ:6ð 6ñ 6ñ$ð ñ ñ
ð ñ ñCð Cñ CñLð ñ ñIñ Ið Iñ IñIñ Ið Iñ Iñð ñ ñ/ð /ñ /ñ*2ð 2ñ 2ñ %ð %ñ %ñPð ñ ñ.3=ð 3=ñ 3=ñl
ð 
ñ 
ñ2ð 2ñ 2ñ>ð >ñ >ñ&&ð &ñ &ñ<
ð 
ñ 
ñð ñ ñVð Vñ Vñrð ñ ñ84ð 4ñ 4ñnð ñ ñ$%ð %ñ %ñPð ñ ñ ð ñ ñ.Wñ Wð Wñ Wñx/ð /ñ /ñdð ñ ñ(ð ñ ñ&ð &ñ &ñ"ð "ñ "ñJNð Nñ Nñ0ð ñ ñIð Iñ Iñ ð ñ ñ$ð ñ ñ ð ñ ñ*ð ñ ñ.ð ñ ñ6(ð (ñ (ñð ñ ñð ñ ñ(ð ñ ñð ñ ñ"ð "ñ "ñJ%ñ %ð %ñ %ñP7ñ 7ð 7ñ 7ñtð ñ ñ(ð ñ ñ0ð ñ ñð ñ ñ2/ð /ñ /ñð ñ ñ >ð >ñ >ñB4)ð 4)ñ 4)ñnð ñ ñ,ð ñ ñ"^ð ^ñ ^ñB)ð )ñ )ñXð ñ ñ ð ñ ñB
 ð 
 ñ 
 ñð ñ ñ>ð ñ ñð ñ ð. �
ñð ñ ñ)ð )ñ )ñXð ñ ñD$ð $ñ $ñNð ñ ñ<Kð Kñ KñZ7ð 7ñ 7ñ:ð ñ ñ0\ð \ñ \ñ(Tð Tñ Tñl(%ð (%ñ (%ñT
Hð 
Hñ 
Hñ*ð *ñ *ñ.+ð +ñ +ñB>ð >ñ >ñð ñ ñ:3ð 3ñ 3ñl? ð ? ñ ? ñD*ð *ñ *ñ*ð *ñ *ñ6ð 6ñ 6ñ
ð ñ ñ*ð ñ ñ,.ð .ñ .ñ
ð 
ñ 
ñð ñ ñð ñ ñ2	ð 	ñ 	ñð ñ ñ*ð *ñ *ñZð ñ ñ.(6ð (6ñ (6ñVBð Bñ BñB"ð "ñ "ñ(ð (ñ (ñð ñ ñ	ð 	ñ 	ñ"ð "ñ "ñ*ð *ñ *ñZð ñ ñ,6ð 6ñ 6ñ.ð ñ ñHð Hñ Hñ"ð ñ ñ0Fð Fñ FñR&#ð &#ñ &#ñR<ð <ñ <ñ8#:ð #:ñ #:ñL-ð -ñ -ñ`3ð 3ñ 3ñ<'ð 'ñ 'ñBð Bñ Bñ*"ð "ñ "ñDð ñ ñ8ð ñ ñ ð  ñ  ñ2ð 2ñ 2ñ0 ð  ñ  ñF(ð (ñ (ñð ñ ñ &Ñ Ù)�Ù?Ñ Ù(Ñ Ù%�Ù(Ñ Ù0Ñ Ù!Ñ Ù!Ñ Ù'Ñ Ù%Ñ Ù%�Ù�Ù%�Ù#�Ù*�Ù!�Ù�Ù-Ñ Ù/Ñ Ù&�Ù$�Ù�Ù�Ù(�Ù.�Ù,Ñ ð 'Ñ ÙÑ ñð ñ ñ	ñ 	ð 	ñ 	ñPñ Pð Pñ Pññ ð ñ ññ ð ñ ñ	ñ 	ð 	ñ 	ñ	ñ 	ð 	ñ 	ñHñ Hð Hñ Hñ
ñ 
ð 
ñ 
ñ
-ñ 
-ð 
-ñ 
-ñ.ñ .ð .ñ .ñ$ð ñ ñ.ð ñ ñ
#ñ 
#ð 
#ñ 
#ñð ñ ñ2.ð .ñ .ñbð ñ ñð ñ ñ"ñ "ð "ñ "ñJ2ñ 2ð 2ñ 2ñjCSñ CSð CSñ CSðN %)¸TÐRVñBð Bñ Bñ Bð Bñ BñJ':ñ ':ñ ':ð ':ñ ':ñT'ñ 'ð 'ñ 'ñ,Dð Dñ DñNJð Jñ Jñ1ð 1ñ 1ñð ñ ñð ñ ñð ñ ñð ñ ñð ñ ñXð Xñ Xñð ñ ñ$ð $ñ $ñN.ð .ñ .ñbð ñ ñUð Uñ Uñpð ñ ñ8ð ñ ñð ñ ñNð ñ ñð ñ ðpð pñ pð pñ pˆUÕ ñ pô pñ pñf!ð !ñ !ñH0ð 0ñ 0ñfð ñ ñ*ð ñ ñ(ð ñ ñð ñ ñð ñ ñð ñ ñð ñ ñð ñ ñð ñ ñ$ð ñ ñð ñ ñ
!ð !ñ !ñ
ð ñ ñ+ñ +ð +ñ +ð ð ñ ð ñ ˜uÕ6ñ ô ñ ð.ð .ñ .ð .ñ . ¥ñ .ô .ñ .ð>$ð $ñ $ð $ñ $ 5¥?ñ $ô $ñ $ñ0ð ñ ð$P/ð P/ñ P/ð P/ñ P/ 5¥?ñ P/ô P/ñ P/ðf3%ð 3%ñ 3%ð 3%ñ 3%˜e�oñ 3%ô 3%ñ 3%ñl1ñ 1ñ 1ð 1ñ 1ñhñ ð ñ ñ*ñ ð ñ ñ
ñ 
ð 
ñ 
ñ
ð 
ñ 
ñð ñ ñð ñ ñ8ð ñ ñð ñ ññ ð ñ ð$ð ñ ð ñ ‘fñ ô ñ ñð ñ ñFñ Fñ Fð Fñ FñRñ ð ñ ñ1ð 1ñ 1ñ(ñ (ñ (ð (ñ (ñVGð Gñ Gð8 # t°¸À$È4ñ Q*ð Q*ñ Q*ð Q*ñ Q*ðh  $¨°¸$À4ÈDñ ð ñ ð ñ ñHð Hñ Hñfð fñ fñð ñ ñð ñ ñð ñ ñ/ð /ñ /ñð ñ ñð ñ ñð ñ ñ$ð $ñ $ñNð ñ ñ,ð ñ ñ6ð 6ñ 6ñ "ð "ñ "ñ>ð ñ ñ2D2ð D2ñ D2ñN)ñ )ð )ñ )ññ ð ñ ñ(6
ð 6
ñ 6
ñp2ð 2ñ 2ñ/ñ /ð /ñ /ñdHñ Hð Hñ Hñ@4ñ 4ð 4ñ 4ññ ð ñ ñ$ð ñ ñ)ð )ñ )ñXð ñ ð, Ñ ØÑ ØÑ Ø !Ñ ñ	ñ 	ð 	ñ 	ñ1ð 1ñ 1ñ Ø�d‘f”fØÙØ�d‘f”fØÙØØñð ñ ð ñ ðJ ÙØàØØØØØàñ=ð =ñ =ð =ñ =ð@{#ð {#ñ {#ð {#ñ {#ñ {#ô {#ñ {#ð~ ð 0Ø!€EÕ!Ñ"2Ñ3Ô3Ð3Ø€EÕ¡Ñ/Ô/Ð/ñ(&ð &ñ &ð €…‘Ñ Ô Ð ð Ñ Ð Ñ Ñ Ð ÙÕ�	ð ˆ4‰6Œ6�Ùð 3ð 3�M�D‰!‰Q‘Ù¡™e¡Q¡s¡U©A©c©EÐ2�H‰T�ZŠZ‰\Œ\ÑÐñð ñ ñð ñ ñI$ñ I$ð I$ñ I$ð^ Ñ Ð Ñ Ñ Ð ñ
 $Õ5Ñ Ù#Õ5Ñ Ù#Õ5Ñ Ù#Õ0�Ù#Õ5Ñ à Ñ Ð Ñ Ñ Ð ð	ð 	ñ 	ð 	ñ 	Ñ(ñ 	ô 	ñ 	ñU%ð U%ñ U%ðnð �ñ	E�;ð 	Eñ 	EÀð 	Eñ 	EØÕ" 1Ô%ð	Eð 	EØ(+Õ(8¸Ô(;ð	Eñ 	EØILÍð	Eñ 	EØ_bÕ_jÑmrÒ_rÐ_rÐY[ÐY[Ðxzð	Eñ 	Eð 	Eð €€s7   Ç7G> Ç>	H
È	H
Ë)K1 Ë1LÌ Lå3Ag ç	gçg