§
    X›jJ=  ã                   óÞ   — d dl Z d dlmZ d dlmZ d dlmZmZ d dlmZ de	de	de	fd	„Z
 G d
„ d¦  «        Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )é    N)Údatetime)ÚBytesIO)ÚpackÚunpack)ÚAnyÚcrcÚbyteÚreturnc                 ó    — g d¢}|| dz           }| dz	  dz  } | |z  ||dz           z  } || dz           }| dz	  dz  } | |z  ||dz	  dz           z  S )N)r   iÌ  iØ  i   ið  i <  i (  iä  i   i l  i x  i´  i P  iœ  iˆ  i D  é   é   iÿ  © )r   r	   ÚtableÚtmps       úN/home/lighthouse/health/venv/lib/python3.11/site-packages/garminconnect/fit.pyÚ_calcCRCr   	   s�   € ðð ð €Eð& ��c‘	Ô
€CØ�!‰8�vÑ
€CØ
�‰)�e˜D 3™JÔ'Ñ
'€Cà
��c‘	Ô
€CØ�!‰8�vÑ
€CØ�‰9�u˜d a™i¨3Ñ.Ô/Ñ/Ð/ó    c                   ób  — e Zd ZdZdddddddœZdddddddœZd	dd	d
dddœZdddddd	dœZdddddd	dœZdddddddœZ	dddddddœZ
dddddddœZdddddd	dœZd dd!d"d#ddœZd$dd$d%dddœZd&dd'd(dd	dœZd)dd*d+dddœZd,dd,d-dddœZed.ed/efd0„¦   «         Zed.eeef         d1ed/efd2„¦   «         Zd3S )4ÚFitBaseTypezABaseType Definition.

    see FIT Protocol Document(Page.20)
    r   Úenuméÿ   é   )ú#ÚendianÚfieldÚnameÚinvalidÚsizeÚsint8é   é   Úuint8é   éƒ   Úsint16iÿ  r   é„   Úuint16iÿÿ  é   é…   Úsint32iÿÿÿé   é†   Úuint32l   ÿÿ é   Ústringé   éˆ   Úfloat32é	   é‰   Úfloat64l   ÿÿÿÿ é
   Úuint8zé   é‹   Úuint16zé   éŒ   Úuint32zé   r	   Úbasetyper
   c                 ó@   — dddddddddd	dddd
dœ}|| d                  S )NÚBÚbÚhÚHÚiÚIÚsÚfÚdÚc)r   r   r!   r#   r   r(   r+   r.   r0   r3   r6   r8   r;   r>   r   r   )r?   Úformatss     r   Ú
get_formatzFitBaseType.get_format�   sK   € ð ØØØØØØØØØØØØØð
ð 
ˆð  �x ”}Ô%Ð%r   Úvaluec                 óˆ   — | d         dv rt          |¦  «        }t                               | ¦  «        }t          ||¦  «        S )z%Function to avoid DeprecationWarning.r   )	r   r!   r#   r   r(   r+   r6   r8   r;   )Úintr   rL   r   )r?   rM   Úfmts      r   r   zFitBaseType.pack±   sB   € ð �CŒ=Ð:Ð:Ð:Ý˜‘J”JˆEÝ×$Ò$ XÑ.Ô.ˆÝ�C˜ÑÔÐr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r"   r%   r'   r*   r-   r/   r2   r5   r7   r:   r=   r	   ÚstaticmethodrO   ÚstrrL   Údictr   Úbytesr   r   r   r   r   r   &   sI  € € € € € ðð ð ØØØØØðð €Dð ØØØØØðð €Eð ØØØØØðð €Eð ØØØØØðð €Fð ØØØØØðð €Fð ØØØØØðð €Fð ØØØØØðð €Fð ØØØØØðð €Fð ØØØØØðð €Gð ØØØØ%Øðð €Gð ØØØØØðð €Fð ØØØØØðð €Gð ØØØØØðð €Gð ØØØØØðð €Dð ð&˜Sð & Sð &ð &ð &ñ „\ð&ð& ð �t˜C ˜H”~ð  ¨cð  °eð  ð  ð  ñ „\ð ð  ð  r   r   c                   ó"   — e Zd ZdZddddddœZdS )	ÚFitr;   r   é   é   é1   é3   )Úfile_idÚdevice_infoÚweight_scaleÚfile_creatorÚblood_pressureN)rQ   rR   rS   ÚHEADER_SIZEÚ	GMSG_NUMSr   r   r   rZ   rZ   º   s0   € € € € € Ø€Kð ØØØØðð €I€I€Ir   rZ   c                   óÐ  — e Zd ZdZdZdZdZd/d„Zdefd„Z		 	 	 	 	 d0de
de
de
de
deddfd„Zdeeef         defd„Z	 	 	 	 	 d1de
dz  dedz  de
dz  de
dz  de
dz  ddfd„Z	 	 d2de
dz  de
dz  ddfd„Z	 	 	 	 	 	 	 	 	 	 d3dede
dz  de
dz  de
dz  de
dz  de
dz  d e
dz  d!e
dz  d"e
dz  de
dz  d#e
dz  ddfd$„Zd4d&ed'e
defd(„Zde
fd)„Zd/d*„Zde
fd+„Zdefd,„Zd-eez  defd.„ZdS )5Ú
FitEncoderr3   r   r   r!   r
   Nc                 ób   — t          ¦   «         | _        |                      ¦   «          d| _        d S ©NF)r   ÚbufÚwrite_headerÚdevice_info_defined©Úselfs    r   Ú__init__zFitEncoder.__init__Í   s-   € Ý‘9”9ˆŒØ×ÒÑÔÐØ#(ˆÔ Ð Ð r   c                 ól  — | j                              ¦   «         }| j                              d¦  «         g }	 | j                              d¦  «        }|sn3|                     d                     d„ |D ¦   «         ¦  «        ¦  «         ŒP| j                              |¦  «         d                     |¦  «        S )Nr   Té   ú c                 ó0   — g | ]}t          |¦  «        d ›‘ŒS )Ú02x)Úord)Ú.0rJ   s     r   ú
<listcomp>z&FitEncoder.__str__.<locals>.<listcomp>Ú   s"   € Ð">Ð">Ð">°q¥c¨!¡f¤f ? ?Ð">Ð">Ð">r   ú
)rj   ÚtellÚseekÚreadÚappendÚjoin)rn   Úorig_posÚlinesrB   s       r   Ú__str__zFitEncoder.__str__Ò   s©   € Ø”8—=’=‘?”?ˆØŒ�Š�aÑÔÐØˆð	AØ”—’˜bÑ!Ô!ˆAØð ØØ�LŠL˜ŸšÐ">Ð">¸AÐ">Ñ">Ô">Ñ?Ô?Ñ@Ô@Ð@ð		Að
 	Œ�Š�hÑÔÐØ�yŠy˜ÑÔÐr   r;   rq   él   ó   .FITÚheader_sizeÚprotocol_versionÚprofile_versionÚ	data_sizeÚ	data_typec                 ó–   — | j                              d¦  «         t          d|||||¦  «        }| j                              |¦  «         d S )Nr   ÚBBHI4s)rj   rz   r   Úwrite)rn   rƒ   r„   r…   r†   r‡   rG   s          r   rk   zFitEncoder.write_headerÞ   sU   € ð 	Œ�Š�aÑÔÐÝØØØØØØñ
ô 
ˆð 	Œ�Š�qÑÔÐÐÐr   Úcontentc                 óX  — g }g }|D ]z\  }}}}t          d||d         |d         ¦  «        }|                     |¦  «         |€	|d         }n|�||z  }|                     t                                ||¦  «        ¦  «         Œ{d                     |¦  «        d                     |¦  «        fS )NÚBBBr   r   r   r   )r   r|   r   r}   )	rn   r‹   Ú
field_defsÚvaluesÚnumr?   rM   ÚscalerG   s	            r   Ú_build_content_blockzFitEncoder._build_content_blockñ   s½   € Øˆ
ØˆØ+2ð 	=ð 	=Ñ'ˆC�˜5 %Ý�U˜C ¨&Ô!1°8¸GÔ3DÑEÔEˆAØ×Ò˜aÑ Ô Ð Øˆ}à  Ô+��ØÐ"Ø˜‘�Ø�MŠM�+×*Ò*¨8°UÑ;Ô;Ñ<Ô<Ð<Ð<Ø—’˜Ñ$Ô$ c§h¢h¨vÑ&6Ô&6Ð7Ð7r   Úserial_numberÚtime_createdÚmanufacturerÚproductÚnumberc           
      ól  — |€t          j        ¦   «         }dt          j        |d fdt          j        |                      |¦  «        d fdt          j        |d fdt          j        |d fdt          j        |d fdt          j        | j        d fg}|  	                    |¦  «        \  }}| j
        d         }	t          ddd|	t          |¦  «        ¦  «        }
| j                             d	                     |                      d
| j        ¬¦  «        |
||                      | j        ¬¦  «        |g¦  «        ¦  «         d S )Nr#   r   r   r!   r(   r   r_   ÚBBHBr   T©Ú
definitionÚ	lmsg_type©rœ   )r   Únowr   r=   r-   Ú	timestampr'   r   Ú	FILE_TYPEr’   re   r   Úlenrj   rŠ   r}   Úrecord_headerÚLMSG_TYPE_FILE_INFO)rn   r“   r”   r•   r–   r—   r‹   Úfieldsr�   Ú
msg_numberÚfixed_contents              r   Úwrite_file_infozFitEncoder.write_file_infoÿ   sK  € ð ÐÝ#œ<™>œ>ˆLð •Ô# ]°DÐ9Ø•Ô" D§N¢N°<Ñ$@Ô$@À$ÐGØ•Ô" L°$Ð7Ø•Ô" G¨TÐ2Ø•Ô" F¨DÐ1Ø•Ô  $¤.°$Ð7ð
ˆð ×2Ò2°7Ñ;Ô;‰ˆ�ð ”^ IÔ.ˆ
ÝØ�A�q˜*¥c¨'¡l¤lñ
ô 
ˆð 	Œ�ŠØ�HŠHð ×&Ò&Ø#'°4Ô3Kð 'ñ ô ð "Øà×&Ò&°Ô1IÐ&ÑJÔJØð
ñô ñ	
ô 	
ð 	
ð 	
ð 	
r   Úsoftware_versionÚhardware_versionc           
      óš  — dt           j        |d fdt           j        |d fg}|                      |¦  «        \  }}| j        d         }t          ddd|t          |¦  «        ¦  «        }| j                             d 	                    |  
                    d| j        ¬¦  «        |||  
                    | j        ¬¦  «        |g¦  «        ¦  «         d S )	Nr   r   rb   r™   r   Trš   r�   )r   r'   r"   r’   re   r   r¡   rj   rŠ   r}   r¢   ÚLMSG_TYPE_FILE_CREATOR)rn   r¨   r©   r‹   r¤   r�   r¥   r¦   s           r   Úwrite_file_creatorzFitEncoder.write_file_creator*  sî   € ð •Ô"Ð$4°dÐ;Ø•Ô!Ð#3°TÐ:ð
ˆð ×2Ò2°7Ñ;Ô;‰ˆ�à”^ NÔ3ˆ
ÝØ�A�q˜*¥c¨'¡l¤lñ
ô 
ˆð 	Œ�ŠØ�HŠHð ×&Ò&Ø#'°4Ô3Nð 'ñ ô ð "Øà×&Ò&°Ô1LÐ&ÑMÔMØð
ñô ñ	
ô 	
ð 	
ð 	
ð 	
r   rŸ   Úcum_operationg_timeÚbattery_voltageÚdevice_indexÚdevice_typeÚbattery_statusc                 ó&  — dt           j        |                      |¦  «        dfdt           j        |dfdt           j        |dfdt           j        d d fdt           j        |dfdt           j        |dfdt           j        |d	fd
t           j        |dfdt           j        |dfdt           j        |	dfdt           j        |
dfdt           j        |d fg}|                      |¦  «        \  }}| j        sp|                      d| j	        ¬¦  «        }| j
        d         }t          ddd|t          |¦  «        ¦  «        }| j                             ||z   |z   ¦  «         d| _        |                      | j	        ¬¦  «        }| j                             ||z   ¦  «         d S )Néý   r   r#   r.   r0   r!   r   r(   éd   r6   é   r   r+   r8   Trš   r`   r™   r�   )r   r-   rŸ   r=   r'   r"   r’   rl   r¢   ÚLMSG_TYPE_DEVICE_INFOre   r   r¡   rj   rŠ   )rn   rŸ   r“   r­   r•   r–   r¨   r®   r¯   r°   r©   r±   r‹   r¤   r�   Úheaderr¥   r¦   s                     r   Úwrite_device_infozFitEncoder.write_device_infoI  s¡  € ð •+Ô$ d§n¢n°YÑ&?Ô&?ÀÐCØ•Ô# ]°AÐ6Ø•Ô"Ð$7¸Ð;Ø•Ô" D¨$Ð/Ø•Ô" L°!Ð4Ø•Ô" G¨QÐ/Ø•Ô"Ð$4°cÐ:Ø•Ô# _°cÐ:Ø•Ô! <°Ð3Ø•Ô! ;°Ð2Ø•Ô!Ð#3°QÐ7Ø•Ô" N°DÐ9ð
ˆð ×2Ò2°7Ñ;Ô;‰ˆ�àÔ'ð 		,Ø×'Ò'Ø¨4Ô+Eð (ñ ô ˆFð œ¨Ô6ˆJÝ Ø˜˜1˜j­#¨g©,¬,ñô ˆMð ŒH�NŠN˜6 MÑ1°FÑ:Ñ;Ô;Ð;Ø'+ˆDÔ$à×#Ò#¨dÔ.HÐ#ÑIÔIˆØŒ�Š�v ‘Ñ'Ô'Ð'Ð'Ð'r   Fr›   rœ   c                 ó4   — d}|rd}t          d||z   ¦  «        S )Nr   é@   rA   )r   )rn   r›   rœ   Úmsgs       r   r¢   zFitEncoder.record_headeru  s(   € ØˆØð 	ØˆCÝ�C˜˜y™Ñ)Ô)Ð)r   c                 óF  — | j                              ¦   «         }| j                              d¦  «         d}	 | j                              d¦  «        }|sn%t	          |t          d|¦  «        d         ¦  «        }ŒB| j                              |¦  «         t          d|¦  «        S )Nr   Tr   rB   rD   )rj   ry   rz   r{   r   r   r   )rn   r~   r   rB   s       r   r   zFitEncoder.crc{  s’   € Ø”8—=’=‘?”?ˆØŒ�Š�aÑÔÐàˆð	3Ø”—’˜aÑ Ô ˆAØð ØÝ˜3¥ s¨A¡¤¨qÔ 1Ñ2Ô2ˆCð		3ð
 	Œ�Š�hÑÔÐÝ�C˜‰~Œ~Ðr   c                 óü   — |                       ¦   «         | j        z
  }|                      |¬¦  «         |                      ¦   «         }| j                             dd¦  «         | j                             |¦  «         dS )z5re-weite file-header, then append crc to end of file.)r†   r   r!   N)Úget_sizerd   rk   r   rj   rz   rŠ   )rn   r†   r   s      r   ÚfinishzFitEncoder.finishˆ  sk   € à—M’M‘O”O dÔ&6Ñ6ˆ	Ø×Ò IÐÑ.Ô.Ð.Ø�hŠh‰jŒjˆØŒ�Š�a˜ÑÔÐØŒ�Š�sÑÔÐÐÐr   c                 óÔ   — | j                              ¦   «         }| j                              dd¦  «         | j                              ¦   «         }| j                              |¦  «         |S )Nr   r!   )rj   ry   rz   )rn   r~   r   s      r   r¾   zFitEncoder.get_size�  sO   € Ø”8—=’=‘?”?ˆØŒ�Š�a˜ÑÔÐØŒx�}Š}‰ŒˆØŒ�Š�hÑÔÐØˆr   c                 ó4   — | j                              ¦   «         S )N)rj   Úgetvaluerm   s    r   rÂ   zFitEncoder.getvalue—  s   € ØŒx× Ò Ñ"Ô"Ð"r   Útc                 ó‚   — t          |t          ¦  «        r&t          j        |                     ¦   «         ¦  «        }|dz
  S )zbThe timestamp in fit protocol is seconds since
        UTC 00:00 Dec 31 1989 (631065600).
        i L�%)Ú
isinstancer   ÚtimeÚmktimeÚ	timetuple)rn   rÃ   s     r   rŸ   zFitEncoder.timestampš  s7   € õ �a�Ñ"Ô"ð 	+Ý”˜AŸKšK™MœMÑ*Ô*ˆAØ�9‰}Ðr   ©r
   N)r;   rq   r�   r   r‚   )NNNNN)NN)
NNNNNNNNNN)Fr   )rQ   rR   rS   r    r£   r«   r¶   ro   rV   r€   rO   rX   rk   rW   r   r’   r   r§   r¬   r¸   Úboolr¢   r   r¿   r¾   rÂ   ÚfloatrŸ   r   r   r   rg   rg   Ç   s9  € € € € € Ø€IØÐØÐØÐð)ð )ð )ð )ð

 ˜ð 
 ð 
 ð 
 ð 
 ð Ø "Ø"ØØ"ðð àðð ðð ð	ð
 ðð ðð 
ðð ð ð ð&8¨D°°c°¬Nð 8¸uð 8ð 8ð 8ð 8ð  %)Ø(,Ø#'Ø"Ø!ð)
ð )
à˜T‘zð)
ð  ‘oð)
ð ˜D‘jð	)
ð
 �t‘ð)
ð �d‘
ð)
ð 
ð)
ð )
ð )
ð )
ðZ (,Ø'+ð
ð 
à ™*ð
ð  ™*ð
ð 
ð	
ð 
ð 
ð 
ðD %)Ø*.Ø#'Ø"Ø'+Ø&*Ø#'Ø"&Ø'+Ø%)ð*(ð *(àð*(ð ˜T‘zð*(ð ! 4™Zð	*(ð
 ˜D‘jð*(ð �t‘ð*(ð  ™*ð*(ð ˜t™ð*(ð ˜D‘jð*(ð ˜4‘Zð*(ð  ™*ð*(ð ˜d™
ð*(ð 
ð*(ð *(ð *(ð *(ðX*ð *¨ð *Àð *ÈUð *ð *ð *ð *ð�Sð ð ð ð ðð ð ð ð˜#ð ð ð ð ð#˜%ð #ð #ð #ð #ð˜8 eÑ+ð °ð ð ð ð ð ð r   rg   c                   ó–   ‡ — e Zd ZdZdˆ fd„Z	 	 	 	 	 	 	 ddeez  ez  dedz  dedz  dedz  d	edz  d
edz  dedz  dedz  ddfd„Zˆ xZ	S )ÚFitEncoderBloodPressureé   r
   Nc                 óV   •— t          ¦   «                              ¦   «          d| _        d S ri   )Úsuperro   Úblood_pressure_monitor_defined©rn   Ú	__class__s    €r   ro   z FitEncoderBloodPressure.__init__§  s'   ø€ Ý‰Œ×ÒÑÔÐØ.3ˆÔ+Ð+Ð+r   rŸ   Údiastolic_blood_pressureÚsystolic_blood_pressureÚmean_arterial_pressureÚmap_3_sample_meanÚmap_morning_valuesÚmap_evening_valuesÚ
heart_ratec	                 ó®  — dt           j        |                      |¦  «        dfdt           j        |dfdt           j        |dfdt           j        |dfdt           j        |dfdt           j        |dfdt           j        |dfdt           j        |dfg}	|                      |	¦  «        \  }
}| j        sp|                      d	| j        ¬
¦  «        }| j	        d         }t          ddd|t          |	¦  «        ¦  «        }| j                             ||z   |
z   ¦  «         d	| _        |                      | j        ¬¦  «        }| j                             ||z   ¦  «         d S )Nr³   r   r   r!   r#   r   r(   r+   Trš   rc   r™   r�   )r   r-   rŸ   r'   r"   r’   rÑ   r¢   ÚLMSG_TYPE_BLOOD_PRESSUREre   r   r¡   rj   rŠ   )rn   rŸ   rÔ   rÕ   rÖ   r×   rØ   rÙ   rÚ   r‹   r¤   r�   r·   r¥   r¦   s                  r   Úwrite_blood_pressurez,FitEncoderBloodPressure.write_blood_pressure«  si  € ð •+Ô$ d§n¢n°YÑ&?Ô&?ÀÐCØ•Ô"Ð$;¸QÐ?Ø•Ô"Ð$<¸aÐ@Ø•Ô"Ð$:¸AÐ>Ø•Ô"Ð$5°qÐ9Ø•Ô"Ð$6¸Ð:Ø•Ô"Ð$6¸Ð:Ø•Ô! :¨qÐ1ð	
ˆð ×2Ò2°7Ñ;Ô;‰ˆ�àÔ2ð 		7Ø×'Ò'Ø¨4Ô+Hð (ñ ô ˆFð œÐ(8Ô9ˆJÝ Ø˜˜1˜j­#¨g©,¬,ñô ˆMð ŒH�NŠN˜6 MÑ1°FÑ:Ñ;Ô;Ð;Ø26ˆDÔ/à×#Ò#¨dÔ.KÐ#ÑLÔLˆØŒ�Š�v ‘Ñ'Ô'Ð'Ð'Ð'r   rÉ   )NNNNNNN)
rQ   rR   rS   rÜ   ro   r   rO   rË   rÝ   Ú__classcell__©rÓ   s   @r   rÍ   rÍ   £  sð   ø€ € € € € à!Ðð4ð 4ð 4ð 4ð 4ð 4ð 04Ø.2Ø-1Ø(,Ø)-Ø)-Ø!%ð$(ð $(à˜c‘> EÑ)ð$(ð #&¨¡*ð$(ð "% t¡ð	$(ð
 !$ d¡
ð$(ð  ™:ð$(ð   $™Jð$(ð   $™Jð$(ð ˜$‘Jð$(ð 
ð$(ð $(ð $(ð $(ð $(ð $(ð $(ð $(r   rÍ   c                   ó  ‡ — e Zd ZdZdˆ fd„Z	 	 	 	 	 	 	 	 	 	 	 ddeez  ez  deez  deez  dz  deez  dz  d	eez  dz  d
eez  dz  deez  dz  deez  dz  deez  dz  deez  dz  deez  dz  deez  dz  deez  dz  ddfd„Zˆ xZ	S )ÚFitEncoderWeightr#   r
   Nc                 óV   •— t          ¦   «                              ¦   «          d| _        d S ri   )rÐ   ro   Úweight_scale_definedrÒ   s    €r   ro   zFitEncoderWeight.__init__Õ  s'   ø€ Ý‰Œ×ÒÑÔÐØ$)ˆÔ!Ð!Ð!r   rŸ   ÚweightÚpercent_fatÚpercent_hydrationÚvisceral_fat_massÚ	bone_massÚmuscle_massÚ	basal_metÚ
active_metÚphysique_ratingÚmetabolic_ageÚvisceral_fat_ratingÚbmic                 óD  — dt           j        |                      |¦  «        dfdt           j        |dfdt           j        |dfdt           j        |dfdt           j        |dfdt           j        |dfdt           j        |dfd	t           j        |dfd
t           j        |	dfdt           j        |
dfdt           j        |dfdt           j        |dfdt           j        |dfg}|                      |¦  «        \  }}| j        sp|                      d| j        ¬¦  «        }| j	        d         }t          ddd|t          |¦  «        ¦  «        }| j                             ||z   |z   ¦  «         d| _        |                      | j        ¬¦  «        }| j                             ||z   ¦  «         d S )Nr³   r   r   r´   r!   r#   r   r(   r.   r3   r0   r6   r8   r>   Trš   ra   r™   r�   )r   r-   rŸ   r'   r"   r’   rã   r¢   ÚLMSG_TYPE_WEIGHT_SCALEre   r   r¡   rj   rŠ   )rn   rŸ   rä   rå   ræ   rç   rè   ré   rê   rë   rì   rí   rî   rï   r‹   r¤   r�   r·   r¥   r¦   s                       r   Úwrite_weight_scalez#FitEncoderWeight.write_weight_scaleÙ  s°  € ð" •+Ô$ d§n¢n°YÑ&?Ô&?ÀÐCØ•Ô" F¨CÐ0Ø•Ô" K°Ð5Ø•Ô"Ð$5°sÐ;Ø•Ô"Ð$5°sÐ;Ø•Ô" I¨sÐ3Ø•Ô" K°Ð5Ø•Ô" I¨qÐ1Ø•Ô" J°Ð2Ø•Ô! ?°AÐ6Ø•Ô" M°1Ð5Ø•Ô"Ð$7¸Ð;Ø•Ô# S¨"Ð-ð
ˆð ×2Ò2°7Ñ;Ô;‰ˆ�àÔ(ð 		-Ø×'Ò'Ø¨4Ô+Fð (ñ ô ˆFð œ¨Ô7ˆJÝ Ø˜˜1˜j­#¨g©,¬,ñô ˆMð ŒH�NŠN˜6 MÑ1°FÑ:Ñ;Ô;Ð;Ø(,ˆDÔ%à×#Ò#¨dÔ.IÐ#ÑJÔJˆØŒ�Š�v ‘Ñ'Ô'Ð'Ð'Ð'r   rÉ   )NNNNNNNNNNN)
rQ   rR   rS   rñ   ro   r   rO   rË   rò   rÞ   rß   s   @r   rá   rá   Ò  sy  ø€ € € € € ØÐð*ð *ð *ð *ð *ð *ð +/Ø04Ø04Ø(,Ø*.Ø(,Ø)-Ø.2Ø,0Ø26Ø"&ð-(ð -(à˜c‘> EÑ)ð-(ð �e‘ð-(ð ˜5‘[ 4Ñ'ð	-(ð
  ™;¨Ñ-ð-(ð  ™;¨Ñ-ð-(ð ˜‘; Ñ%ð-(ð ˜5‘[ 4Ñ'ð-(ð ˜‘; Ñ%ð-(ð ˜%‘K $Ñ&ð-(ð ˜u™ tÑ+ð-(ð ˜U‘{ TÑ)ð-(ð ! 5™[¨4Ñ/ð-(ð �5‰[˜4Ñð-(ð 
ð-(ð -(ð -(ð -(ð -(ð -(ð -(ð -(r   rá   )rÆ   r   Úior   Ústructr   r   Útypingr   rO   r   r   rZ   rg   rÍ   rá   r   r   r   ú<module>rö      sp  ðà €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð0�#ð 0˜Sð 0 Sð 0ð 0ð 0ð 0ð:Q ð Q ð Q ð Q ð Q ñ Q ô Q ð Q ðh
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ðYð Yð Yð Yð Y�ñ Yô Yð Yðx,(ð ,(ð ,(ð ,(ð ,(˜jñ ,(ô ,(ð ,(ð^4(ð 4(ð 4(ð 4(ð 4(�zñ 4(ô 4(ð 4(ð 4(ð 4(r   