§
   ‰#Õ…jiã                   ó.  — d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	m
Z
 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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
œ“d0d1d2d3d
œ“d4d5d2d'œ“d-d$d6d
œd1d$d-d
œd1d$d-d
œd7d8d&d
œd-d2d6d
œd1d$d-d
œdddd
œd9œ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d@d'œdd=d'œddd'œdd$d'œdd$d'œd$dAd'œdd$d'œdd@d'œddd'œdBdBd'œdd$d'œdd$d'œdCœd5dDd'œdEdFd'œdGdHd'œdd8d'œd"d#d)d
œd#d$d'œd$dAd'œdd$d'œdd5d1d
œdIdGd'œdJœ
dKœZd^dL„ZdM„ ZdN„ ZdO„ Zi ZdP„ Zd_dR„Zd`dS„ZdTZdUZej                             e
dV¦  «        Zi ZdW„ ZdX„ ZdY„ ZdZ„ Zd^d[„Zd^d\„Zd]„ Z dS )aa?  
AI usage tracking: the price of every AI call and its record in the usage history (wcs/ai/usage_store.py).

The calls are recorded in one place, AIProvider.send_prompt (a failed call too); `describe_session` gives a game's
calls the title of the game. The "Ceny AI" dialog (wcs/ai/DialogAICosts.py) reads the history.
é    N)Úusage_store)Ú	price_for)Ú_profilezgpt-5.2g      ü?gffffffÆ?g      ,@)ÚinputÚcached_inputÚoutputzgpt-5.1g      ô?g      À?ç      $@z
gpt-5-minig      Ð?gš™™™™™™?g       @zgpt-4.1ç      ð?g       @zgpt-4.1-minigš™™™™™Ù?gš™™™™™É?gš™™™™™ù?zgpt-4.1-nanoçš™™™™™¹?gš™™™™™©?zgpt-4og      @zgpt-4o-latestzchatgpt-4o-latestzgpt-4o-minig333333Ã?g333333³?g333333Ó?Úo3g      @)r   r   zo4-minig333333ã?g333333@zo3-miniÚo1g      .@g      @g      N@zo1-minig      @g      ø?g      (@zgpt-35-turbog      à?g     ÀR@gš™™™™™é?g{®Gáz´?)zclaude-opus-4-20250514zclaude-sonnet-4-20250514zclaude-3-5-sonnet-20241022zclaude-3-5-haiku-20241022zclaude-3-opus-20240229zclaude-3-sonnet-20240229zclaude-3-haiku-20240307g×£p=
×Ó?g333333£?gUÁ¨¤N@“?g      @gUÁ¨¤N@ƒ?)zgemini-2.5-prozgemini-2.5-flashzgemini-2.5-flash-litezgemini-2.0-flashzgemini-2.0-flash-litezgemini-1.5-prozgemini-1.5-flashzgemini-1.5-flash-8bg      @gÍÌÌÌÌÌì?g{®Gáz¤?)zmistral-large-latestzmagistral-medium-latestzmistral-medium-latestzmagistral-small-latestzmistral-small-latestzcodestral-latestzdevstral-small-latestzpixtral-large-latestzministral-8b-latestzministral-3b-latestzopen-mistral-nemozmistral-saba-latestg¤p=
×£è?g)\�Âõ(¼?gÃõ(\�ÂÕ?gáz®Gáâ?gHáz®Gé?g�Âõ(\�Ò?)
z-meta-llama/llama-4-maverick-17b-128e-instructz)meta-llama/llama-4-scout-17b-16e-instructzllama-3.3-70b-versatilezllama-3.1-8b-instantzopenai/gpt-oss-120bzopenai/gpt-oss-20bzgroq/compoundzgroq/compound-miniz moonshotai/kimi-k2-instruct-0905zqwen/qwen3-32b)ÚopenaiÚ	anthropicÚgoogleÚmistralÚgroqc                 ó‚   — t          | ||¦  «        p.t                               | i ¦  «                             |i ¦  «        S )uz   CenÃ­k modelu ($/1M tokenÅ¯): aktuÃ¡lnÃ­ model z katalogu (s ohlÃ¡Å¡enÃ½mi zmÄ›nami cen k danÃ©mu dni), jinak historickÃ½.)r   ÚPRICING_TABLESÚget)ÚproviderÚmodelÚtodays      úa/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/ai/UsageTracker.pyÚget_pricingr   W   s;   € å�X˜u eÑ,Ô,Ð_µ×0BÒ0BÀ8ÈRÑ0PÔ0P×0TÒ0TÐUZÐ\^Ñ0_Ô0_Ð_ó    c                 óâ   — |                       dd¦  «        |                       dd¦  «        |                       dd¦  «        z   d|                       dd¦  «        i|                       dd¦  «        dœS )	uv   Gemini usageMetadata na standardnÃ­ usage; thinking tokeny se ÃºÄ�tujÃ­ jako vÃ½stup, cached jsou souÄ�Ã¡stÃ­ promptu.ÚpromptTokenCountr   ÚcandidatesTokenCountÚthoughtsTokenCountÚcached_tokensÚcachedContentTokenCountÚtotalTokenCount)Úprompt_tokensÚcompletion_tokensÚprompt_tokens_detailsÚtotal_tokens)r   )Úmetas    r   Úusage_from_googler(   \   sv   € ð ŸšÐ"4°aÑ8Ô8Ø!ŸXšXÐ&<¸aÑ@Ô@À4Ç8Â8ÐL`ÐbcÑCdÔCdÑdØ"1°4·8²8Ð<UÐWXÑ3YÔ3YÐ!ZØŸšÐ!2°AÑ6Ô6ð	ð ð r   c                 ó  — d| v rŽ|                       dd¦  «        }|                       dd¦  «        }d| v sd| v rB||                       d|                       dd¦  «        ¦  «        |                       dd¦  «        |fS |                       d¦  «        pi }nC|                       dd¦  «        }|                       d	d¦  «        }|                       d
¦  «        pi }|                      dd¦  «        }t          d||z
  ¦  «        |d|fS )u}   (input, cached, cache_write, output) tokeny z usage libovolnÃ©ho poskytovatele; input neobsahuje cached ani zÃ¡pisy do cache.Úinput_tokensr   Úoutput_tokensÚcached_input_tokensÚcache_read_input_tokensÚcache_creation_input_tokensÚinput_tokens_detailsr#   r$   r%   r    )r   Úmax)Ú
usage_datar*   r+   Údetailsr    s        r   Ú_token_countsr3   f   s  € à˜Ð#Ð#Ø!—~’~ n°aÑ8Ô8ˆØ"Ÿš ¸Ñ:Ô:ˆØ  JÐ.Ð.Ð2KÈzÐ2YÐ2Yà Ø—N’NÐ#8¸*¿.º.ÐIbÐdeÑ:fÔ:fÑgÔgØ—N’NÐ#@À!ÑDÔDÀmðUð Uð —.’.Ð!7Ñ8Ô8Ð>¸Bˆˆà!—~’~ o°qÑ9Ô9ˆØ"ŸšÐ':¸AÑ>Ô>ˆØ—.’.Ð!8Ñ9Ô9Ð?¸RˆØ—K’K °Ñ3Ô3€MÝˆq�, Ñ.Ñ/Ô/°ÀÀ=ÐPÐPr   c                 ó˜  — t          |¦  «        \  }}}}t          | |¦  «        }|s4t          j        d| › d|› d�t          j        ¦  «         ddddd||z   ||dœS |                     d¦  «        }|r||z   |z   |d         k    ri |¥|¥}|                     dd¦  «        }	||	z  ||                     d	|	¦  «        z  z   d
z  }
|                     d|	¦  «        }||z  d
z  }||	|z
  z  d
z  }||                     dd¦  «        z  d
z  }|
|z   |z   }t          j        d||z   › d|› d|› d|d›�t          j        ¦  «         |
||||||z   ||dœS )u†  
    VypoÄ�Ã­tÃ¡ nÃ¡klady pro danÃ½ provider/model/usage.
    
    Args:
        provider (str): AI poskytovatel (openai, anthropic, google, mistral, groq)
        model (str): NÃ¡zev modelu
        usage_data (dict): Usage data s tokeny
        
    Returns:
        dict: nÃ¡klady (input_cost, cached_input_cost, output_cost, total_cost), Ãºspora dÃ­ky cache (cache_savings) a tokeny
    z[wcs] No pricing data for ú/z%, returning 0 cost but tracked tokensg        )Ú
input_costÚcached_input_costÚoutput_costÚ
total_costÚcache_savingsr*   r    r+   Úlong_contextÚabover   Úcache_writeé@B r   r   z[wcs] Cost calculation: input=z	, cached=z	, output=z, total_cost=$ú.6f)r3   r   ÚxbmcÚlogÚ
LOGWARNINGr   ÚLOGINFO)r   r   r1   r*   r    Úcache_write_tokensr+   Úpricingr;   Úinput_pricer6   Úcached_pricer7   r:   r8   r9   s                   r   Úcalculate_costrH   y   s  € õ FSÐS]ÑE^ÔE^ÑB€L�-Ð!3°]å˜( EÑ*Ô*€GØð 
ÝŒÐe¨hÐeÐe¸ÐeÐeÐeÕgkÔgvÑwÔwÐwàØ!$ØØØ Ø(Ð+=Ñ=Ø*Ø*ð	
ð 	
ð 		
ð —;’;˜~Ñ.Ô.€LØð .˜ }Ñ4Ð7IÑIÈLÐY`ÔLaÒaÐaØ-�WÐ- Ð-ˆð —+’+˜g sÑ+Ô+€KØ Ñ,Ð/AÀGÇKÂKÐP]Ð_jÑDkÔDkÑ/kÑkÐoxÑx€JØ—;’;˜~¨{Ñ;Ô;€LØ%¨Ñ4°yÑ@ÐØ! [°<Ñ%?Ñ@À9ÑL€MØ '§+¢+¨h¸Ñ"<Ô"<Ñ<¸yÑH€KØÐ/Ñ/°+Ñ=€Jå„Hð  `¨lÐ=OÑ.Oð  `ð  `ÐZgð  `ð  `Ðrð  `ð  `ð  PZð  `ð  `ð  `õ  bfô  bnñ  oô  oð  oð !Ø.Ø"Ø Ø&Ø$Ð'9Ñ9Ø&Ø&ð	ð 	ð 	r   c                 ó*   — | r|r|t           | <   dS dS dS )zBNames a game's calls (the calls of one session id) in the history.N)Ú_session_titles)Ú
session_idÚtitles     r   Údescribe_sessionrM   ³   s5   € àð ,�eð ,Ø&+�˜
Ñ#Ð#Ð#ð,ð ,ð ,ð ,r   Úotherc                 óÄ  — 	 |pi }t          | ||¦  «        }t          j        | |||pd|pt                               |d¦  «        |                     dd¦  «        |d         |d         |d         |d         |d         |d	         |d
         ¬¦  «         t          j        ¦   «          dS # t          $ r-}t          j        d|› �t          j	        ¦  «         Y d}~dS d}~ww xY w)u  
    ZapÃ­Å¡e jedno AI volÃ¡nÃ­ do historie i s cenou. VolÃ¡ se z AIProvider.send_prompt, jinde ne.

    Args:
        provider (str): AI poskytovatel
        model (str): PouÅ¾itÃ½ model
        usage_data (dict): Usage data z API response (volitelnÄ› s latency_ms)
        request_type (str): K Ä�emu volÃ¡nÃ­ slouÅ¾ilo (millionaire_chat, director_tip, quiz, ...)
        session_id (str): ID hernÃ­ session; volÃ¡nÃ­ jednÃ© hry se v historii spojÃ­
        title (str): NÃ¡zev hry; jinak ten, kterÃ½ zadal describe_session
    Ú Ú
latency_msr   r*   r    r+   r6   r7   r8   r:   )
rK   rL   rQ   r*   r    r+   r6   Úcached_costr8   Úsavingsz [wcs] Error recording AI usage: N)
rH   r   Úrecord_callrJ   r   Úprune_if_dueÚ	Exceptionr@   rA   ÚLOGERROR)r   r   r1   Úrequest_typerK   rL   Ú	cost_infoÚes           r   Útrack_ai_usager[   ¹   s  € ðHØÐ% 2ˆ
Ý" 8¨U°JÑ?Ô?ˆ	ÝÔØ�e˜\°jÐ6FÀBØÐ>�?×.Ò.¨z¸2Ñ>Ô>È:Ï>Ê>ÐZfÐhiÑKjÔKjØ" >Ô2À)ÈOÔB\Ø# OÔ4ÀÈ<ÔAXØ!Ð"5Ô6ÀIÈmÔD\Ø˜oÔ.ð	0ñ 	0ô 	0ð 	0õ 	Ô Ñ"Ô"Ð"Ð"Ð"øÝð Hð Hð HÝŒÐ7°AÐ7Ð7½¼ÑGÔGÐGÐGÐGÐGÐGÐGÐGøøøøðHøøøs   ‚B$B( Â(
CÂ2"CÃCc                 ó  — 	 t          j        | ||pd|pdt                               |d¦  «        dt	          |¦  «        |¬¦  «         dS # t
          $ r-}t          j        d|› �t          j        ¦  «         Y d}~dS d}~ww xY w)uE   ZapÃ­Å¡e volÃ¡nÃ­, kterÃ© selhalo (bez tokenÅ¯ a ceny), i s dÅ¯vodem.rN   rP   Úerror)rK   rL   Ústatusr]   rQ   z"[wcs] Error recording AI failure: N)	r   rT   rJ   r   ÚstrrV   r@   rA   rW   )r   r   rX   r]   rK   rQ   rZ   s          r   Útrack_ai_failurer`   Ô   s¹   € ðJÝÔ ¨%°Ð1HÀÐU_ÐUeÐceÝ&5×&9Ò&9¸*ÀbÑ&IÔ&IÐRYÕadÐejÑakÔakØ+5ð	7ñ 	7ô 	7ð 	7ð 	7ð 	7øõ ð Jð Jð JÝŒÐ9°aÐ9Ð9½4¼=ÑIÔIÐIÐIÐIÐIÐIÐIÐIøøøøðJøøøs   ‚AA
 Á

BÁ"A<Á<BgƒÀÊ¡¥5@z�https://www.cnb.cz/en/financial-markets/foreign-exchange-market/central-bank-exchange-rate-fixing/central-bank-exchange-rate-fixing/daily.txtzusd_czk_rate.jsonc                  ó�  — ddl } |                      t          d¬¦  «        }|                     ¦   «          |j                             ¦   «         D ]w}|                     d¦  «        }t          |¦  «        dk    rM|d         dk    rAt          |d          	                    d	d
¦  «        ¦  «        t          |d         ¦  «        z  c S ŒxdS )u[   USD/CZK z dennÃ­ho kurzovnÃ­ho lÃ­stku ÄŒNB (Å™Ã¡dek 'USA|dollar|1|USD|21.647'), nebo None.r   Né   )Útimeoutú|é   ÚUSDé   ú,ú.é   )
Úrequestsr   Ú_CNB_DAILY_URLÚraise_for_statusÚtextÚ
splitlinesÚsplitÚlenÚfloatÚreplace)rk   ÚresponseÚlineÚpartss       r   Ú_fetch_cnb_usd_raterw   æ   sº   € à€O€O€OØ�|Š|�N°Aˆ|Ñ6Ô6€HØ×ÒÑÔÐØ”×(Ò(Ñ*Ô*ð Gð GˆØ—
’
˜3‘”ˆÝˆu‰:Œ:˜Š?ˆ?˜u Qœx¨5Ò0Ð0Ý˜˜qœ×)Ò)¨#¨sÑ3Ô3Ñ4Ô4µu¸UÀ1¼X±´ÑFÐFÐFÐFøØˆ4r   c                  óÖ  — t           j                             ¦   «                              ¦   «         } t                               d¦  «        | k    rt          d         S i }	 t          t          d¬¦  «        5 }t          j	        |¦  «        }ddd¦  «         n# 1 swxY w Y   n# t          t          f$ r Y nw xY w|                     d¦  «        pt          }|                     d¦  «        | k    rß	 t          ¦   «         p|}n<# t          $ r/}t          j        d|› d|› �t          j        ¦  «         Y d}~nd}~ww xY w	 t%          j        t$          j                             t          ¦  «        d	¬
¦  «         t          t          dd¬¦  «        5 }t          j        || dœ|¦  «         ddd¦  «         n# 1 swxY w Y   n# t          $ r Y nw xY wt                               | |¬¦  «         |S )up   Kurz USD/CZK; stahuje se nejvÃ½Å¡e jednou dennÄ›, pÅ™i vÃ½padku platÃ­ poslednÃ­ znÃ¡mÃ½ kurz (nebo zÃ¡loÅ¾nÃ­).ÚdayÚratezutf-8)ÚencodingNÚcheckedz)[wcs] USD/CZK rate refresh failed, using z: T)Úexist_okÚw)rz   r|   )ry   rz   )ÚdatetimeÚdater   Ú	isoformatÚ
_rate_memor   ÚopenÚ
_RATE_FILEÚjsonÚloadÚOSErrorÚ
ValueErrorÚUSD_TO_CZK_FALLBACKrw   rV   r@   rA   rB   ÚosÚmakedirsÚpathÚdirnameÚdumpÚupdate)r   ÚstateÚhandlerz   rZ   s        r   Ú
usd_to_czkr’   ò   s|  € åŒM×ÒÑ!Ô!×+Ò+Ñ-Ô-€EÝ‡~‚~�eÑÔ Ò%Ð%Ý˜&Ô!Ð!Ø€EðÝ•* wÐ/Ñ/Ô/ð 	&°6Ý”I˜fÑ%Ô%ˆEð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&øøå•ZÐ ð ð ð Øˆðøøøà�9Š9�VÑÔÐ3Õ 3€DØ‡y‚y�ÑÔ˜uÒ$Ð$ð	_Ý&Ñ(Ô(Ð0¨DˆDˆDøÝð 	_ð 	_ð 	_ÝŒHÐLÀÐLÐLÈÐLÐLÍdÌoÑ^Ô^Ð^Ð^Ð^Ð^Ð^Ð^øøøøð	_øøøð	ÝŒK�œŸš­
Ñ3Ô3¸dÐCÑCÔCÐCÝ•j #°Ð8Ñ8Ô8ð D¸FÝ”	 4°EÐ:Ð:¸FÑCÔCÐCðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Døøåð 	ð 	ð 	ØˆDð	øøøå×Ò˜% dÐÑ+Ô+Ð+Ø€Ks…   ÁB" Á5BÂ
B" ÂBÂB" ÂBÂB" Â"B6Â5B6Ã/D  Ä 
D9Ä
%D4Ä4D9Ä=AF= ÆF1Æ%F= Æ1F5Æ5F= Æ8F5Æ9F= Æ=
G
Ç	G
c                 óN   — | dk    rdS | dk    rd| d›�n| dk    rd| d›�nd| d›�S )	Nr   z$0r
   ú$ú.2fg{®Gáz„?z.3fr?   © )Úcosts    r   Ú	_usd_textr˜     sK   € Øˆq‚y€yØˆtØ! Sš[˜[ˆ>ˆtˆ>ˆ>ˆ>ˆ>ÀÈÂÀ¨n°$¨n¨n¨n¨nÐR`ÐVZÐR`ÐR`ÐR`Ð`r   c                 óN   — | dk    rdS | dk    r| d›d�n| dk    r| d›d�n| d›d�S )	Nr   u   0 KÄ�r	   z.0fu    KÄ�r   ú.1fr•   r–   )Úczk_costs    r   Ú	_czk_textrœ     s[   € Ø�1‚}€}ØˆwØ$,°Ò$4Ð$4ˆhÐ Ð Ð Ð Ð ÐS[Ð_bÒSbÐSb¸XÐ:OÐ:OÐ:OÐ:OÐ:OÐksÐh}Ðh}Ðh}Ðh}Ð}r   c                 ó8  — d}|rV	 ddddœ                      |                     d¦  «        |                     d¦  «        pd¦  «        }n# t          $ r d}Y nw xY w|dk    rt          | ¦  «        nd}|dk    rt	          | t          ¦   «         z  ¦  «        nd}||fS )zd(USD text, CZK text) of a cost; the part the user's currency setting (ai_cost_currency) hides is ''.zUSD(CZK)rf   ÚCZK)Ú0Ú1Ú2Úai_cost_currencyrP   )r   Ú
getSettingrV   r˜   rœ   r’   )r—   ÚaddonÚcurrency_settingÚusdÚczks        r   Ú
cost_partsr¨     sÙ   € à!ÐØð *ð	*Ø%*°¸ZÐHÐH×LÒLÈU×M]ÒM]Ð^pÑMqÔMqØOT×O_ÒO_Ð`rÑOsÔOsð  PBð  xBñ Cô  CÐÐøåð 	*ð 	*ð 	*Ø)ÐÐÐð	*øøøà-°Ò6Ð6�)�D‰/Œ/ˆ/¸B€CØ,<ÀÒ,EÐ,E�)�D�:™<œ<Ñ'Ñ
(Ô
(Ð
(È2€CØ�ˆ8€Os   †AA	 Á	AÁAc                 óF   — t          | |¦  «        \  }}||r|rd|› d�n|z   S )uD   FormÃ¡tuje nÃ¡klady pro zobrazenÃ­ podle uÅ¾ivatelskÃ©ho nastavenÃ­.z (ú))r¨   )r—   r¤   r¦   r§   s       r   Úformat_costr«   '  s6   € å˜$ Ñ&Ô&�H€CˆØ Ð5¨Ð5�+�s�+�+�+�+°#Ñ6Ð6r   c                 ó\   — | dk    r	| dz  d›d�S | dk    r	| dz  d›d�S t          | ¦  «        S )u)   FormÃ¡tuje poÄ�et tokenÅ¯ pro zobrazenÃ­.r>   rš   ÚMiè  ÚK)r_   )Útokenss    r   Úformat_tokensr°   -  sO   € à�ÒÐØ˜Ñ"Ð)Ð)Ð)Ð)Ð)Ø	�5ŠˆØ˜‘,Ð%Ð%Ð%Ð%Ð%å�6‰{Œ{Ðr   )N)rN   NN)Nr   )!Ú__doc__r   r…   rŠ   r@   Úwcs.air   Úwcs.ai.model_catalogr   Úwcs.user_datar   r   r   r(   r3   rH   rJ   rM   r[   r`   r‰   rl   rŒ   Újoinr„   r‚   rw   r’   r˜   rœ   r¨   r«   r°   r–   r   r   ú<module>r¶      s  ððð ð €€€Ø €€€Ø 	€	€	€	à €€€à Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ø "Ð "Ð "Ð "Ð "Ð "ð
Ø˜T°5ÀEÐJÐJðà˜T°5ÀEÐJÐJðð 	 °eÀtÐLÐLðð 	˜T°4À4ÐHÐHð	ð
 	 $¸ÈÐMÐMðð 	 $¸ÈÐMÐMðð 	˜D°$À%ÐHÐHðð 	 4¸ÈÐOÐOðð 	 t¸TÈUÐSÐSðð 	 °uÈÐMÐMðð 	˜¨Ð-Ð-ðð 	˜T¨TÐ2Ð2ðð 	˜T°5ÀDÐIÐIðð 	˜¨t¸uÐEÐEðð 	˜T°4À5ÐIÐIðð  	 $°$Ð7Ð7ð!ð& -2À4ÐSXÐ"YÐ"YØ.2ÀDÐTYÐ$ZÐ$ZØ04ÀdÐV[Ð&\Ð&\Ø/3ÀTÐUYÐ%ZÐ%ZØ,1À4ÐSXÐ"YÐ"YØ.2ÀDÐTYÐ$ZÐ$ZØ-1À5ÐTXÐ#YÐ#Yðð ð %)¸$È%ÐPÐPØ&*¸EÈTÐRÐRØ+/ÀÐRVÐ!WÐ!WØ&*¸FÈdÐSÐSØ+0À&ÐTXÐ!YÐ!YØ$(¸$È$ÐOÐOØ&+¸VÈtÐTÐTØ)/ÀÐSWÐXÐXð	ð 	ð +/¸$Ð ?Ð ?Ø-1¸TÐ#BÐ#BØ+/¸4Ð!@Ð!@Ø,0¸DÐ"AÐ"AØ*.¸$Ð ?Ð ?Ø&*°dÐ;Ð;Ø+/¸4Ð!@Ð!@Ø*.¸$Ð ?Ð ?Ø)-¸Ð>Ð>Ø)-¸Ð>Ð>Ø'+°tÐ<Ð<Ø)-¸Ð>Ð>ðð ð DHÐSWÐ9XÐ9XØ?CÈtÐ5TÐ5TØ-1¸TÐ#BÐ#BØ*.¸$Ð ?Ð ?Ø)-¸uÐPTÐUÐUØ(-¸Ð>Ð>Ø#'°4Ð8Ð8Ø(,¸Ð=Ð=Ø6:ÈDÐ\`Ð,aÐ,aØ$(°DÐ9Ð9ðð ði@ð @€ðF`ð `ð `ð `ð
ð ð ðQð Qð Qð&5ð 5ð 5ðn €ð,ð ,ð ,ðHð Hð Hð Hð6Jð Jð Jð Jð Ð ðb€àŒW�\Š\˜(Ð$7Ñ8Ô8€
Ø€
ð	ð 	ð 	ðð ð ð6að að að~ð ~ð ~ðð ð ð ð7ð 7ð 7ð 7ðð ð ð ð r   