§
    ®eîi•7  ã                   ó¬   — d Z ddlZddlZddlZddlmZmZmZmZm	Z	m
Z
mZ ddlZddlmZmZmZ ddlmZ ed         Ze	eef         Z G d„ d	¦  «        ZdS )
zÜ
WebSocket-based watcher for v2 jobs (crawl and batch), mirroring v1 behavior.

Usage:
    watcher = client.watcher(job_id, kind="crawl")
    watcher.add_listener(lambda status: print(status.status))
    watcher.start()
é    N)ÚCallableÚListÚOptionalÚLiteralÚUnionÚDictÚAnyé   )ÚCrawlJobÚBatchScrapeJobÚDocument)Únormalize_document_input)ÚcrawlÚbatchc                   ó  — e Zd Z	 	 	 ddededededee         d	dfd
„Zde	e
gdf         d	dfd„Zde
d	dfd„Zdede	eeef         gdf         d	dfd„Zdedeeef         d	dfd„Zd	efd„Zdd„Zd	efd„Zdd„Zdd„Zdd„ZdS )ÚWatcherr   é   NÚclientÚjob_idÚkindÚpoll_intervalÚtimeoutÚreturnc                 ó`  — || _         || _        || _        || _        || _        g | _        d | _        t          j        ¦   «         | _	        t          |dd ¦  «        }t          |dd ¦  «        | _        t          |dd ¦  «        | _        d| _        g | _        g g g dœ| _        d| _        d| _        d S )NÚhttp_clientÚapi_urlÚapi_keyÚscraping)ÚdoneÚerrorÚdocumentF)Ú_clientÚ_job_idÚ_kindÚ_timeoutÚ_poll_intervalÚ
_listenersÚ_threadÚ	threadingÚEventÚ_stopÚgetattrÚ_api_urlÚ_api_keyÚstatusÚdataÚ_event_handlersÚ
_sent_doneÚ_sent_error)Úselfr   r   r   r   r   r   s          úX/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/firecrawl/v2/watcher.pyÚ__init__zWatcher.__init__   s½   € ð ˆŒØˆŒØˆŒ
ØˆŒØ+ˆÔØ;=ˆŒØ37ˆŒÝ”_Ñ&Ô&ˆŒ
å˜f m°TÑ:Ô:ˆÝ'.¨{¸IÀtÑ'LÔ'LˆŒÝ'.¨{¸IÀtÑ'LÔ'LˆŒð &ˆŒØ*,ˆŒ	àØØðS
ð S
ˆÔð
 !&ˆŒØ!&ˆÔÐÐó    Úcallbackc                 ó:   — | j                              |¦  «         d S ©N)r'   Úappend)r4   r8   s     r5   Úadd_listenerzWatcher.add_listener:   s   € ØŒ×Ò˜xÑ(Ô(Ð(Ð(Ð(r7   r/   c                 ól   — t          | j        ¦  «        D ]}	  ||¦  «         Œ# t          $ r Y Œw xY wd S r:   )Úlistr'   Ú	Exception)r4   r/   Úcbs      r5   Ú_emitzWatcher._emit=   sY   € Ý�t”Ñ'Ô'ð 	ð 	ˆBðØ��6‘
”
�
�
øÝð ð ð Ø�ðøøøð	ð 	s   ˜$¤
1°1Ú
event_typeÚhandlerc                 ó\   — || j         v r"| j         |                              |¦  «         d S d S r:   )r1   r;   )r4   rB   rC   s      r5   Úadd_event_listenerzWatcher.add_event_listenerE   s:   € Ø˜Ô-Ð-Ð-ØÔ  Ô,×3Ò3°GÑ<Ô<Ð<Ð<Ð<ð .Ð-r7   Údetailc                 ót   — || j         v r,| j         |         D ] }	  ||¦  «         Œ# t          $ r Y Œw xY wd S d S r:   )r1   r?   )r4   rB   rF   rC   s       r5   Údispatch_eventzWatcher.dispatch_eventI   sm   € Ø˜Ô-Ð-Ð-ØÔ/°
Ô;ð ð �ðØ�G˜F‘O”O�O�OøÝ ð ð ð Ø�Dðøøøð	 .Ð-ðð s   š&¦
3²3c                 óÔ   — | j         st          d¦  «        ‚| j                              dd¦  «                             ddd¦  «        }| j        dk    r|› d| j        › �S |› d	| j        › �S )
Nz)API URL is required for WebSocket watcherzhttps://zwss://zhttp://zws://r
   r   z
/v2/crawl/z/v2/batch/scrape/)r-   Ú
ValueErrorÚreplacer$   r#   )r4   Úws_bases     r5   Ú_build_ws_urlzWatcher._build_ws_urlQ   s€   € ØŒ}ð 	JÝÐHÑIÔIÐIØ”-×'Ò'¨
°HÑ=Ô=×EÒEÀiÐQXÐZ[Ñ\Ô\ˆØŒ:˜Ò Ð ØÐ7Ð7¨¬Ð7Ð7Ð7ØÐ:Ð:¨D¬LÐ:Ð:Ð:r7   c              ƒ   ób  K  — |                       ¦   «         }g }| j        r|                     dd| j        › �f¦  «         	 t          j        |d |¬¦  «        4 ƒd {V —†}| j        r-t          j        ¦   «                              ¦   «         | j        z   nd }| j	         
                    ¦   «         �	s¿|�Nt          d|t          j        ¦   «                              ¦   «         z
  ¦  «        }t          | j        p||¦  «        }n	| j        pd}	 t          j        |                     ¦   «         |¬¦  «        ƒ d {V —†}�nõ# t          j        $ r  |                      ¦   «         ƒ d {V —†rY �	n	Y ŒÒt          j        $ r Y �nöt&          $ �r© | j	         
                    ¦   «         �s4|                      ¦   «         ƒ d {V —†rZY d d d ¦  «        ƒd {V —† | j        dk    r9| j        s4|                      d| j        | j        | j        d	œ¦  «         d
| _        d S d S d S |�ƒt          j        ¦   «                              ¦   «         |k    rZY d d d ¦  «        ƒd {V —† | j        dk    r9| j        s4|                      d| j        | j        | j        d	œ¦  «         d
| _        d S d S d S t          j        | j        pd¦  «        ƒ d {V —† | j	         
                    ¦   «         �¯4Y d d d ¦  «        ƒd {V —† | j        dk    r9| j        s4|                      d| j        | j        | j        d	œ¦  «         d
| _        d S d S d S w xY w	 t5          j        |¦  «        }n# t&          $ r Y �Œ¼w xY w|                     d¦  «        }	|	dk    ršd| _        |                      d| j        | j        |                     d¦  «        | j        dœ¦  «         d
| _        | j        dk    rt?          ddddd d g ¬¦  «        }
ntA          ddddd d g ¬¦  «        }
|  !                    |
¦  «         �nd|	dk    r‹|                     di ¦  «        }|                     d| j        ¦  «        | _        |                     dg ¦  «        }| j         "                    |¦  «         |D ] }|                      d|| j        dœ¦  «         Œ!�n…|	dk    rd|                     d¦  «        }tG          |tH          ¦  «        r8| j                             |¦  «         |                      d|| j        dœ¦  «         �n|	dk    �rd| _        |                     di ¦  «        pi }|                     dg ¦  «        pg }tG          |tJ          ¦  «        r6|r4|D ]1}tG          |tH          ¦  «        r| j                             |¦  «         Œ2|                      d| j        | j        | j        d	œ¦  «         d
| _        g }| j        D ]E}tG          |tH          ¦  «        r.tM          |¦  «        }|                     tO          di |¤Ž¦  «         ŒF| j        dk    ryt?          d|                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     d¦  «        |                     d¦  «        |¬¦  «        }
nxtA          d|                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     d¦  «        |                     d¦  «        |¬¦  «        }
|  !                    |
¦  «         �nN|                     d|¦  «        }tG          |tH          ¦  «        rd|v pd|v }|s�ŒÂ|                     d|                     d| j        ¦  «        ¦  «        }| j        dk    �rcg }|                     dg ¦  «        D ]E}tG          |tH          ¦  «        r.tM          |¦  «        }|                     tO          di |¤Ž¦  «         ŒFt?          ||                     dd¦  «        |                     dd¦  «        |                     dd¦  «        |                     d¦  «        |                     d¦  «        |¬¦  «        }
|  !                    |
¦  «         |dv rr|dk    r2| j        s+|                      d|| j        | j        d	œ¦  «         d
| _        |dk    r2| j        s+|                      d|| j        | j        d	œ¦  «         d
| _        �n{�n_g }|                     dg ¦  «        D ]E}tG          |tH          ¦  «        r.tM          |¦  «        }|                     tO          di |¤Ž¦  «         ŒFtA          ||                     dd¦  «        |                     dd¦  «        |                     d¦  «        |                     d¦  «        |                     d¦  «        |¬¦  «        }
|  !                    |
¦  «         |dv rq|dk    r2| j        s+|                      d|| j        | j        d	œ¦  «         d
| _        |dk    r2| j        s+|                      d|| j        | j        d	œ¦  «         d
| _        n| j	         
                    ¦   «         �	¯¿	 d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   n# t&          $ r Y nw xY w| j        dk    r9| j        s4|                      d| j        | j        | j        d	œ¦  «         d
| _        d S d S d S # | j        dk    r7| j        s0|                      d| j        | j        | j        d	œ¦  «         d
| _        w xY w)NÚAuthorizationzBearer )Úmax_sizeÚadditional_headersg        é   ©r   Ú	completedr   ©r/   r0   ÚidTr   Útyper    Úfailed)r/   r0   r    rV   r   r   )r/   rT   ÚtotalÚcredits_usedÚ
expires_atÚnextr0   Úcatchupr0   r/   r!   )r0   rV   rY   ÚcreditsUsedÚ	expiresAtr\   ©rT   rX   Ú	cancelled© )(rM   r.   r;   Ú
websocketsÚconnectr%   ÚasyncioÚget_event_loopÚtimer+   Úis_setÚmaxÚminr&   Úwait_forÚrecvÚTimeoutErrorÚ_poll_status_onceÚCancelledErrorr?   r/   r2   rH   r0   r#   ÚsleepÚjsonÚloadsÚgetr3   r$   r   r   rA   ÚextendÚ
isinstanceÚdictr>   r   r   )r4   ÚuriÚheaders_listÚ	websocketÚdeadlineÚ	remainingr   ÚmsgÚbodyÚmsg_typeÚjobÚdÚdocs_inÚdocÚraw_payloadÚdocsÚpayloadÚhas_status_fieldÚ
status_strs                      r5   Ú_run_wszWatcher._run_wsY   s”  è è € Ø× Ò Ñ"Ô"ˆØˆØŒ=ð 	NØ×Ò Ð2K¸D¼MÐ2KÐ2KÐ LÑMÔMÐMðh	'Ý!Ô)¨#¸ÐQ]Ð^Ñ^Ô^ð `"ð `"ð `"ð `"ð `"ð `"ð `"ÐbkØNRÌmÐe�7Ô1Ñ3Ô3×8Ò8Ñ:Ô:¸T¼]ÑJÐJÐae�Øœ*×+Ò+Ñ-Ô-ñ ^"àÐ+Ý$'¨¨X½Ô8NÑ8PÔ8P×8UÒ8UÑ8WÔ8WÑ-WÑ$XÔ$X˜	Ý"% dÔ&9Ð&F¸YÈ	Ñ"RÔ"R˜˜à"&Ô"5Ð":¸˜ðÝ$+Ô$4°Y·^²^Ñ5EÔ5EÈwÐ$WÑ$WÔ$WÐWÐWÐWÐWÐWÐW˜™øÝ"Ô/ð %ð %ð %à!%×!7Ò!7Ñ!9Ô!9Ð9Ð9Ð9Ð9Ð9Ð9ð %Ø!™Eà$˜HÝ"Ô1ð ð ð Ø™Ý$ð ñ ð à"&¤*×"3Ò"3Ñ"5Ô"5ñ JØ%)×%;Ò%;Ñ%=Ô%=Ð=Ð=Ð=Ð=Ð=Ð=ð 'Ø &ð/`"ð `"ð `"ñ `"ô `"ð `"ð `"ð `"ð `"ð `"ð `"ð `"ðJ Œ{˜kÒ)Ð)°$´/Ð)Ø×#Ò# F°t´{ÈDÌIÐ]aÔ]iÐ,jÐ,jÑkÔkÐkØ"&�”��ð *Ð)Ð)Ð)ð[  (Ð3½Ô8NÑ8PÔ8P×8UÒ8UÑ8WÔ8WÐ[cÒ8cÐ8cØ &ð3`"ð `"ð `"ñ `"ô `"ð `"ð `"ð `"ð `"ð `"ð `"ð `"ðJ Œ{˜kÒ)Ð)°$´/Ð)Ø×#Ò# F°t´{ÈDÌIÐ]aÔ]iÐ,jÐ,jÑkÔkÐkØ"&�”��ð *Ð)Ð)Ð)õW #*¤-°Ô0CÐ0HÀqÑ"IÔ"IÐIÐIÐIÐIÐIÐIÐIð #'¤*×"3Ò"3Ñ"5Ô"5ñ Jð ð7`"ð `"ð `"ñ `"ô `"ð `"ð `"ð `"ð `"ð `"ð `"ð `"ðJ Œ{˜kÒ)Ð)°$´/Ð)Ø×#Ò# F°t´{ÈDÌIÐ]aÔ]iÐ,jÐ,jÑkÔkÐkØ"&�”��ð *Ð)Ð)Ð)ðeøøøð!Ý#œz¨#™œ˜˜øÝ$ð !ð !ð !Ø ™ð!øøøð  $Ÿxšx¨Ñ/Ô/�HØ 7Ò*Ð*Ø&.˜œØ×+Ò+¨GØ&*¤kØ$(¤IØ%)§X¢X¨gÑ%6Ô%6Ø"&¤,ð	6ð 6ñ ô ð ð ,0˜Ô(àœ:¨Ò0Ð0Ý"*°(ÀaÈqÐ_`ÐmqÐx|ð  DFð  #Gñ  #Gô  #G˜C˜Cå"0¸ÈAÐUVÐefÐswð  Cð  JLð  #Mñ  #Mô  #M˜CØŸ
š
 3™œ˜ÙØ! YÒ.Ð.Ø ŸHšH V¨RÑ0Ô0˜Ø&'§e¢e¨H°d´kÑ&BÔ&B˜œØ"#§%¢%¨°Ñ"3Ô"3˜Øœ	×(Ò(¨Ñ1Ô1Ð1Ø#*ð _ð _˜CØ ×/Ò/°
ÀSÐPTÔP\Ð<]Ð<]Ñ^Ô^Ð^Ð^ñ_à! ZÒ/Ð/Ø"Ÿhšh vÑ.Ô.˜Ý% c­4Ñ0Ô0ð _Ø œI×,Ò,¨SÑ1Ô1Ð1Ø ×/Ò/°
ÀSÐPTÔP\Ð<]Ð<]Ñ^Ô^Ð^ùØ! VÒ+Ñ+Ø&1˜œà&*§h¢h¨v°rÑ&:Ô&:Ð&@¸b˜Ø"-§/¢/°&¸"Ñ"=Ô"=Ð"CÀ˜Ý% g­tÑ4Ô4ð :¸ð :Ø'.ð :ð : Ý#-¨cµ4Ñ#8Ô#8ð !:Ø$(¤I×$4Ò$4°SÑ$9Ô$9Ð$9øà×+Ò+¨F¸t¼{ÐTXÔT]ÐeiÔeqÐ4rÐ4rÑsÔsÐsØ*.˜œà/1˜Ø#'¤9ð ;ð ;˜CÝ)¨#­tÑ4Ô4ð ;Ý$<¸SÑ$AÔ$A Ø $§¢­H¨M¨M°q¨M¨MÑ :Ô :Ð :øØœ:¨Ò0Ð0Ý"*Ø'2Ø*5¯/ª/¸+ÀqÑ*IÔ*IØ&1§o¢o°g¸qÑ&AÔ&AØ-8¯_ª_¸]ÈAÑ-NÔ-NØ+6¯?ª?¸;Ñ+GÔ+GØ%0§_¢_°VÑ%<Ô%<Ø%)ð#ñ #ô #˜C˜Cõ #1Ø'2Ø*5¯/ª/¸+ÀqÑ*IÔ*IØ&1§o¢o°g¸qÑ&AÔ&AØ-8¯_ª_¸]ÈAÑ-NÔ-NØ+6¯?ª?¸;Ñ+GÔ+GØ%0§_¢_°VÑ%<Ô%<Ø%)ð#ñ #ô #˜Cð Ÿ
š
 3™œ˜Ùà"Ÿhšh v¨tÑ4Ô4�Gå(2°7½DÑ(AÔ(AÐ(YÀhÐRYÐFYÐ'pÐ_gÐkoÐ_oÐ$Ø+ð !Ù Ø!(§¢¨X°t·x²xÀÈ$Ì+Ñ7VÔ7VÑ!WÔ!W�Jà”z WÒ,Ñ,Ø!˜Ø#*§;¢;¨v°rÑ#:Ô#:ð ;ð ;˜CÝ)¨#­tÑ4Ô4ð ;Ý$<¸SÑ$AÔ$A Ø $§¢­H¨M¨M°q¨M¨MÑ :Ô :Ð :øÝ&Ø#-Ø&-§k¢k°+¸qÑ&AÔ&AØ")§+¢+¨g°qÑ"9Ô"9Ø)0¯ª°]ÀAÑ)FÔ)FØ'.§{¢{°;Ñ'?Ô'?Ø!(§¢¨VÑ!4Ô!4Ø!%ðñ ô ˜ð Ÿ
š
 3™œ˜Ø%Ð)MÐMÐMà)¨[Ò8Ð8ÀÄÐ8Ø $× 3Ò 3°FÀzÐ[_Ô[dÐlpÔlxÐ<yÐ<yÑ zÔ zÐ zØ26 ¤Ø)¨XÒ5Ð5¸dÔ>NÐ5Ø $× 3Ò 3°GÈ
Ð\`Ô\eÐmqÔmyÐ=zÐ=zÑ {Ô {Ð {Ø37 Ô 0Ù!ñ Nð  "˜Ø#*§;¢;¨v°rÑ#:Ô#:ð ;ð ;˜CÝ)¨#­tÑ4Ô4ð ;Ý$<¸SÑ$AÔ$A Ø $§¢­H¨M¨M°q¨M¨MÑ :Ô :Ð :øÝ,Ø#-Ø&-§k¢k°+¸qÑ&AÔ&AØ")§+¢+¨g°qÑ"9Ô"9Ø)0¯ª°]Ñ)CÔ)CØ'.§{¢{°;Ñ'?Ô'?Ø!(§¢¨VÑ!4Ô!4Ø!%ðñ ô ˜ð Ÿ
š
 3™œ˜Ø%Ð)MÐMÐMØ)¨[Ò8Ð8ÀÄÐ8Ø $× 3Ò 3°FÀzÐ[_Ô[dÐlpÔlxÐ<yÐ<yÑ zÔ zÐ zØ26 ¤Ø)¨XÒ5Ð5¸dÔ>NÐ5Ø $× 3Ò 3°GÈ
Ð\`Ô\eÐmqÔmyÐ=zÐ=zÑ {Ô {Ð {Ø37 Ô 0Ø!ð} œ*×+Ò+Ñ-Ô-ñ ^"ð ^"ð`"ð `"ð `"ñ `"ô `"ð `"ð `"ð `"ð `"ð `"ð `"ð `"ð `"ð `"ð `"ð `"ð `"ð `"ð `"ð `"ð `"ð `"ð `"øøøð `"ð `"ð `"ð `"øøõB ð 	ð 	ð 	ØˆDð	øøøð Œ{˜kÒ)Ð)°$´/Ð)Ø×#Ò# F°t´{ÈDÌIÐ]aÔ]iÐ,jÐ,jÑkÔkÐkØ"&�”��ð *Ð)Ð)Ð)øˆtŒ{˜kÒ)Ð)°$´/Ð)Ø×#Ò# F°t´{ÈDÌIÐ]aÔ]iÐ,jÐ,jÑkÔkÐkØ"&�”Ð&Ð&Ð&Ð&sÛ   Á j ÁB*j Ä.D8Ä6j Ä8)L*Å!j Å&L*Å4j Å7>L*Æ5j Æ6j È+L*È:j È;j Ê;L*Ëj Ëj Ì)L*Ì*j Ì.MÍj Í
MÍj ÍMÍ\j é.j ê 
j
ê
j êj
êj êk* ê
jêk* êjêk* ë*Al.c              ƒ   óx  K  — 	 | j         dk    r+t          j        | j        j        | j        ¦  «        ƒ d{V —†}n*t          j        | j        j        | j        ¦  «        ƒ d{V —†}n# t          $ r Y dS w xY w|j        | _        |  	                    |¦  «         |j        dv rš|j        dk    rA| j
        s:|                      d|j        d„ |j        D ¦   «         | j        dœ¦  «         d	| _
        |j        d
k    rA| j        s:|                      d|j        d„ |j        D ¦   «         | j        dœ¦  «         d	| _        d	S dS )z9Poll job status over HTTP once. Returns True if terminal.r   NFr`   rT   r   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rb   ©Ú
model_dump©Ú.0r€   s     r5   ú
<listcomp>z-Watcher._poll_status_once.<locals>.<listcomp>  s!   € ÐKmÐKmÐKmÐ_`ÈAÏLÊLÉNÌNÐKmÐKmÐKmr7   rU   TrX   r    c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rb   r‹   r�   s     r5   r�   z-Watcher._poll_status_once.<locals>.<listcomp>  s!   € ÐLnÐLnÐLnÐ`aÈQÏ\Ê\É^Ì^ÐLnÐLnÐLnr7   )r$   re   Ú	to_threadr"   Úget_crawl_statusr#   Úget_batch_scrape_statusr?   r/   rA   r2   rH   r0   r3   )r4   r   s     r5   rn   zWatcher._poll_status_once	  s™  è è € ð	ØŒz˜WÒ$Ð$Ý&-Ô&7¸¼Ô8UÐW[ÔWcÑ&dÔ&dÐ dÐ dÐ dÐ dÐ dÐ d��å,3Ô,=¸d¼lÔ>bÐdhÔdpÑ,qÔ,qÐ&qÐ&qÐ&qÐ&qÐ&qÐ&q�øøÝð 	ð 	ð 	Ø�5�5ð	øøøð ”jˆŒØ�
Š
�3‰ŒˆØŒ:Ð=Ð=Ð=ØŒz˜[Ò(Ð(°´Ð(Ø×#Ò# F°s´zÐKmÐKmÐdgÔdlÐKmÑKmÔKmÐuyô  vBð  -Cð  -Cñ  Dô  Dð  DØ"&�”ØŒz˜XÒ%Ð%¨dÔ.>Ð%Ø×#Ò# G¸¼
ÐLnÐLnÐehÔemÐLnÑLnÔLnÐvzô  wCð  .Dð  .Dñ  Eô  Eð  EØ#'�Ô Ø�4Øˆus   „A A% Á%
A3Á2A3c                 óR   — t          j        |                      ¦   «         ¦  «         d S r:   )re   Úrunrˆ   ©r4   s    r5   Ú_loopzWatcher._loop  s    € ÝŒ�D—L’L‘N”NÑ#Ô#Ð#Ð#Ð#r7   c                 óî   — | j         r| j                              ¦   «         rd S | j                             ¦   «          t	          j        | j        d¬¦  «        | _         | j                              ¦   «          d S )NT)ÚtargetÚdaemon)r(   Úis_aliver+   Úclearr)   ÚThreadr—   Ústartr–   s    r5   rž   zWatcher.start"  sm   € ØŒ<ð 	˜DœL×1Ò1Ñ3Ô3ð 	ØˆFØŒ
×ÒÑÔÐÝ Ô'¨t¬zÀ$ÐGÑGÔGˆŒØŒ×ÒÑÔÐÐÐr7   c                 ó€   — | j                              ¦   «          | j        r| j                             d¬¦  «         d S d S )Nr
   rS   )r+   Úsetr(   Újoinr–   s    r5   ÚstopzWatcher.stop)  sG   € ØŒ
�ŠÑÔÐØŒ<ð 	)ØŒL×Ò aÐÑ(Ô(Ð(Ð(Ð(ð	)ð 	)r7   )r   r   N)r   N)Ú__name__Ú
__module__Ú__qualname__ÚobjectÚstrÚJobKindÚintr   r6   r   ÚJobTyper<   rA   r   r	   rE   rH   rM   rˆ   Úboolrn   r—   rž   r¢   rb   r7   r5   r   r      sÂ  € € € € € ð
  ØØ!%ð'ð 'àð'ð ð'ð ð	'ð
 ð'ð ˜#”ð'ð 
ð'ð 'ð 'ð 'ð@) X¨w¨i¸¨oÔ%>ð )À4ð )ð )ð )ð )ð˜Gð ¨ð ð ð ð ð=¨Sð =¸8ÀTÈ#ÈsÈ(Ä^ÐDTÐVZÐDZÔ;[ð =Ð`dð =ð =ð =ð =ð¨ð °d¸3À¸8´nð Èð ð ð ð ð;˜sð ;ð ;ð ;ð ;ðn'ð n'ð n'ð n'ð`¨ð ð ð ð ð,$ð $ð $ð $ðð ð ð ð)ð )ð )ð )ð )ð )r7   r   )Ú__doc__re   rq   r)   Útypingr   r   r   r   r   r   r	   rc   Útypesr   r   r   Úutils.normalizer   r¨   rª   r   rb   r7   r5   ú<module>r°      sù   ððð ð €€€Ø €€€Ø Ð Ð Ð Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fà Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ð Ð"Ô
#€Ø
�˜.Ð(Ô
)€ðS)ð S)ð S)ð S)ð S)ñ S)ô S)ð S)ð S)ð S)r7   