
    ̢j0`                     !   d dl Z d dlZd dlZd dlmZ d dlZd dlZd dl	m
Z
mZ d dlmZ  ee      j                   dz  Z ej$                  ddd	        ej&                  d
d       dZeZ	 d dlmc mZ ej2                  j5                  d      ek7  r# ej                  dd        eej2                  d<    e
e        ee        ee        ej8                  ddgd      \  ZZe5   ej>                  de        ddd       e5   ej@                  ddd      r ejB                          ddd        ejD                  d       d Z#d Z$dde%dejL                  fdZ' e'd      Z( e'd       Z) e'd!      Z* e'd"      Z+ e'd#      Z, e'd$      Z- e'd%      Z.e)j^                  s e0e)d&   d'k(  jc                               nd Z2d(ej2                  vrd)ej2                  d(<    ej8                  d*      \  Z3Z4Z5Z6e3jA                  d+ e7e(       d,d      r d)ej2                  d(<    ejB                          e4jA                  d- e7e*       d.d      r d/ej2                  d(<    ejB                          e5jA                  d0 e7e+       d1d      r d2ej2                  d(<    ejB                          e6jA                  d3e2 d4d      r d2ej2                  d(<    ejB                          ej2                  d(   Z8e8d)k(  rp ej&                  d5        ejD                   e7e(       d6        ejr                          e(j^                  r ejt                  d7       ne(jw                         D ]  \  Z<Z=e=d8   Z>e)j^                  s e0e)d8   e>k(  jc                               nd Z? ej8                  g d9      Z@e@d    j'                  d:e=d;    d<e=d=    d>e=d?    d@e=dA           e@dB   j                  dCe?       e@dD   j                  dEe=d?          e@dF   jA                  dGdHe> d      rBej2                  j5                  dI      ZBeBe>k(  rdne>ej2                  dI<    ejB                          ej2                  j5                  dI      e>k(  r ej&                  dJe=d;           e)e)d8   e>k(     j                         ZDeDj^                  r ejt                  dK       n}eDjw                         D ]i  \  Z<ZE e0eEdL         ZFe+e+dM   eFk(     ZGeGj^                  s eH e0eGj                  d    dN               ndZJeGj^                  s e%eGj                  d    dO         ne=d;   ZK ej                  eEj5                  dP            r e0eEj5                  dP            ndZMeMe*e*dL   eMk(     ne*j                  d d  ZNeNj^                  seNj                  d    neEZO ePeOdQ      r"eOj5                  dR      reOj5                  dR      neEdS   ZQeJsH ej8                  dTd*g      ZReRd    j'                  d:eQ d:       eRdB   j'                  dUeK dVd       _ ej8                  g dW      ZSeSd    jA                   e%eQ      dXe> dYeF d      rBej2                  j5                  dZ      ZBeBeFk(  rdneFej2                  dZ<    ejB                          eSdB   j'                  d[ e#eO       d\ e$eO       d]d       ej2                  j5                  dZ      eFk(  s! ej                  d^      5   ej8                  g dW      ZUeUd    j'                  d_eQ        eUdB   j'                  d` e#eO       d\ e$eO       d]d        ej&                  daeOj5                  db      xs eEj5                  db      xs dc         ej&                  ddeOj5                  de      xs eEj5                  de      xs dc         ej&                  dfeOj5                  dg      xsa eOj5                  dh      xsN eOj5                  di      xs; eEj5                  dg      xs( eEj5                  dh      xs eEj5                  di      xs dc         ej&                  dje=d;            ej&                  dkeEj5                  dl      xs dc        eEj5                  dm      ZVeVrC	  e j                  eV      ZXeXr. ej&                  dn       eXD ]  ZY ej&                  doeY         eEj5                  dq      ZZeZr	  e j                  eZ      Z[e[rx ej&                  dr       e[D ]a  Z\e\j5                  ds      xs$ e\j5                  dt      xs e\j5                  du      Z] ej&                  dve] dwe\j5                  du       dx       c  ej&                  dy       e,j^                  se,e,dM   eFk(  e,d=   dzk7  z     ne,Z^e^j^                  r ejt                  d{       nRe^j                  d    Z_ ej&                  d|e_d}            ej                  d~e_d   ddeF         ejD                  d       e-j^                  se-e-dM   eFk(     ne-Zaeaj^                  seaj                  d    Zb ej&                  d        ej                  debd   	ebd   ddndc        ej&                  debd   xs dc         ej&                  debd   xs dc         ej&                  debd   xs dc         ej&                  debd   xs dc         ej&                  debd   xs dc debd   xs d        ddd       l  ejr                           ne8d/k(  r0 ej                  d        ejD                   e7e*       d e7e+       d       e*j^                  r ejt                  d       n- ed eee(d8   e(d;               Zfg Zge*jw                         D ]o  \  Z<Zh e0ehdL         Zie+e+dP   eik(     j                         ZjejejdN   dBk(     Zkekj^                  sekj                  d    dO   ndcZKg ZlejejdN   dBk7     jw                         D ]3  \  Z<Zmefj5                  emd8   emd8         Zeelvs#elj                  e       5 egj                  ehj5                  dR      xs dcehj5                  db      xs dc e$eh      xs ehj5                  d      xs dc e#eh      ehj5                  de      xs dcehj5                  dh      xs( ehj5                  di      xs ehj5                  dg      xs dceKelrdj                  el      ndc e7ej      d	       r  ejL                  eg      j                  dd       Zq ej                  ddd      Zsesr6eqj                  e%      j                  d       j                  dB      Zweqew   Zq ejD                  d e7eq       d       dddddddddFd	ZxddiZy ezexj                               Z|dge|D  cg c]  } dex|     d c} de|D  cg c];  } d ej                  |        d ej                  eyj5                  | |              d= c} dZ~eqjw                         D ]  \  Z<Ze~j                  d       e|D ]  Z e%ej5                  edc            Zedk(  redvr ej                  ed      Zde dZnMedk(  r6dev r2edvr. ej                  e      Zd ej                  ed       de dZn ej                  e      Ze~j                  de dÝ        e~j                  dī        e~j                  dū        ej&                  dd        ej&                  dj                  e~      d       nSe8d2k(  rN ej                  dǫ       e.j^                  r ejt                  dȫ       ng dɢZ ej                  e.e   ddʫ        ejr                           ejD                  d˫       y# e$ r Y kw xY w# 1 sw Y   (xY w# 1 sw Y   xY w# e$ r  ej&                  dpeV        Y Ww xY w# e$ r Y w xY w# 1 sw Y   xY wc c} w c c} w )    N)Path)init_schemasync_projects)initzemail_agent.dbzLead Engine 2.0wideL)
page_titlelayout	page_icona  
<style>
    .block-container {padding-top: 1.35rem !important;}
    h1 {margin-top: 0 !important; margin-bottom: .15rem !important;}
    div[data-testid="stCaptionContainer"] {margin-bottom: .45rem;}
    div[data-testid="stButton"] button p {text-align:left !important; width:100%;}

    div[data-testid="stButton"] button {justify-content:flex-start !important; text-align:left !important;}
    div[data-testid="stButton"] button > div {justify-content:flex-start !important; width:100% !important;}
    div[data-testid="stButton"] button p {text-align:left !important; width:100% !important; margin-left:0 !important;}

    /* Kompakter Produkt-/Zielmarktkatalog */
    div[data-testid="stHorizontalBlock"]:has(button[kind="secondary"]) {align-items:center;}
    div[data-testid="stMetric"] {padding-top:0 !important; padding-bottom:0 !important;}
    div[data-testid="stMetric"] label {margin-bottom:0 !important;}
    div[data-testid="stMetricValue"] {line-height:1.05 !important;}
    div[data-testid="stVerticalBlock"] > div:has(button[kind="secondary"]) {margin-top:0 !important; margin-bottom:0 !important;}
    hr {margin-top:.35rem !important; margin-bottom:.35rem !important;}
</style>
T)unsafe_allow_htmlz2.2.0ui_version_seenzK<script>window.parent.scrollTo({top:0,left:0,behavior:'instant'});</script>)height   g?center)vertical_alignmentu   Lead Engine 2.0 · vAktualisierenrefresh_lead_engine)keyuse_container_widthuM   Agent Solutions · projektgetriebene Lead-Recherche, Bewertung und Human-Gatec                    dd l g }g }dD ]>  }t        | d      r| j                  |      nd }|s%|j                  t	        |             @ dj                  |      }|j                         }fd}ddg}d}	|D ]  }
j                  |
|      }|s ||j                  d	            }|s2d
}	|dk  r|j                  d       n?|dk  r|j                  d       n(|dk  r|j                  d       n|j                  d        n g d}|D ]M  }
j                  |
|      }|s|j                  d	      j                  dd      }|j                  | d        n t        d |D              sGj                  d|      }|r3|j                  |j                  d	      j                  dd       d       g d}d}|D ]  \  }
}}j                  |
|      }|st        |j                  d	            }d|cxk  r|k  sBn E|dj                  dd      }d|j                  d      v rdnd}|j                  | | d|        d
} n |szi dd	dd	dd	dd d!d"d#d$d%d&d'd&d(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d5}j                  d7|      }|r4|j                  ||j                  d	      j                             d8       g d9}t        |      d"k  rU|D ]P  \  }
}j                  |
|      }|s|j                  |j                  d	      j                  dd       d|         n |sy:d;j                  |d d"       S )<Nr   )company_sizeneed_signalsfit_rationalesources_jsonget c                 P    j                  dd| xs d      }|rt        |      S d S )Nz[^0-9] )subint)rawdigitsres     &/opt/struktur/lead-engine/dashboard.py	clean_numz(company_scale_summary.<locals>.clean_numI   s*    	2syb1$s6{.$.    u   (?i)(?:über|mehr als|ca\.?|rund|etwa)?\s*([0-9][0-9\. ,]*)\+?\s*(?:mitarbeitende|mitarbeiter|beschäftigte|employees|people|experts|professionals|staff)u   (?i)(?:mitarbeitende|mitarbeiter|beschäftigte|employees|people|experts|professionals|staff)\s*[:\-]?\s*(?:über|mehr als|ca\.?|rund|etwa)?\s*([0-9][0-9\. ,]*)F   T2   z/ bis 50   u
   / 51–250i  u   / 251–1.000u   / über 1.000)um   (?i)(?:umsatz|revenue|turnover|sales)\D{0,25}(?:EUR|€)?\s*([0-9]+(?:[\.,][0-9]+)?)\s*(?:mio\.?|million|m\b)ul   (?i)(?:EUR|€)\s*([0-9]+(?:[\.,][0-9]+)?)\s*(?:mio\.?|million|m\b)\D{0,25}(?:umsatz|revenue|turnover|sales)um   (?i)([0-9]+(?:[\.,][0-9]+)?)\s*(?:mio\.?|million|m\b)\s*(?:EUR|€)?\D{0,25}(?:umsatz|revenue|turnover|sales).,u    Mio. € Umsatzc              3   $   K   | ]  }d |v  
 yw)UmsatzN ).0xs     r$   	<genexpr>z(company_scale_summary.<locals>.<genexpr>l   s     ,x1},s   u   (?i)(?:umsatz|revenue|turnover|sales|revenue handled)\D{0,25}(?:EUR|€)?\s*([0-9]+(?:[\.,][0-9]+)?)\s*(?:billion|mrd\.?|bn\b|b\b)u    Mrd. € Umsatz))uE   (?i)\b([0-9]{1,4})\+?\s*(?:hotels?|häuser|haeuser|establishments?)\bHotels  )z+(?i)\b([0-9]{1,5})\+?\s*(?:rooms?|zimmer)\bZimmerP  )u4   (?i)\b([0-9]{1,4})\+?\s*(?:offices?|büros|bueros)\bu   Bürosr3   )zA(?i)\b([0-9]{1,5})\+?\s*(?:stores?|filialen|branches|standorte)\b	Standorter5   )z;(?i)\b([0-9]{1,7})\+?\s*(?:properties|immobilien|objekte)\bObjektei )z;(?i)\b([0-9]{1,6})\+?\s*(?:vehicles|fahrzeuge|cars|autos)\b	Fahrzeugei?B +r   eineineeinenzwei   drei   vier   u   fünf   fuenfsechs   sieben   achtr   neun	   zehn
   elf   u   zwölf   zwoelfu   (?i)\b(ein|eine|einen|zwei|drei|vier|fünf|fuenf|sechs|sieben|acht|neun|zehn|elf|zwölf|zwoelf)\s+(?:[^.;,]{0,20}\s)?(?:hotels?|häuser|haeuser)\bz Hotels))uU   (?i)([0-9]+(?:[\.,][0-9]+)?)\s*(?:mio\.?|million)\s*(?:clients?|kunden|gäste|gaeste)zMio. Kunden/Jahr)zT(?i)([0-9]+(?:[\.,][0-9]+)?)\s*(?:mio\.?|million)\s*(?:reservations?|reservierungen)zMio. Reservierungen/Jahr)u_   (?i)([0-9]+(?:[\.,][0-9]+)?)\s*(?:mio\.?|million)\s*(?:roomnights?|zimmernächte|zimmernaechte)u   Mio. Zimmernächte/Jahrz/ ?    · )r#   hasattrr   appendstrjoinlowersearchgroupreplaceanyr    len)leadpartstextsfieldvaltextlowr%   people_patternsemployee_foundpatmnrevenue_patternsmetricsmetric_addedlabelmax_nshownplus	word_numsvolume_patternsr#   s                         @r$   company_scale_summaryrr   >   s   EEO #!(u!5dhhuo4LLS"# 88E?D
**,C/ 	e 	kO N 
IIc4 !''!*%A!%7ELL4#Xu||L9$Y_ =ll?3

   IIc4 ''!*$$S#.CLLC5 012 ,e,,II  \  ^b  cLLAGGAJ..sC899IJKG L$ 	UEIIc4 AGGAJA1~~Q%((c2!QWWQZ/sRwtfAeW56#	  rU1  rVA  rga  rq  r  r&  r7ST  rU\]^  r_fgh  riqrs  rtz{|  r  ~D  EF  r  GM  NP  r  QV  WY  r  Zb  ce  r  fn  oq  r	II  l  nr  sLLIaggaj&6&6&89:'BCO
 5zA~) 	JC		#t$A
 2 23 <=QugFG		 ;;uRay!!r&   c           	          dj                   fddD              j                         g d}t        fd|D              rydg dfd	g d
fdg dfdg dfdg dfdg dfdg dfg}g }|D ]+  \  }}t        fd|D              s|j                  |       - t	        t        |            dk\  ry|r|d   S dv ryy)Nr   c              3   v   K   | ]0  }t        t        d       rj                  |      ndxs d       2 yw)r   r   N)rU   rS   r   )r/   kr]   s     r$   r1   z"mallorca_region.<locals>.<genexpr>   s5       QPQCU(;!JK  Qs   69)locationr   r   r   )zmultiple mallorcazmallorca-widezacross mallorcazthroughout the islandzisland-wide	inselweitc              3   &   K   | ]  }|v  
 y wNr.   )r/   r0   rb   s     r$   r1   z"mallorca_region.<locals>.<genexpr>   s     
119
1   	InselweitOstmallorca)zcala millorzsa comazs'illotu	   s’illotzporto cristomanacorzcala ratjada	capdeperaartau   artàcanyamelz	cala bonazcalas de mallorcazporto colom
portocolomu   cala d’orzcala dorNordmallorca)alcudiau   alcúdiazport d'alcudiazpuerto de alcudiapollensau	   pollençazport de pollencau   port de pollençazcan picafortzplaya de muromurou   Südmallorca)		llucmajorz	el arenalzs'arenalu
   s’arenalzcolonia de sant jordizses salinescampossantanyiu	   santanyíu   Südwestmallorca)calviau   calvià	palmanovamagalufzsanta ponsazportals nouszpuerto portalsandratxzport d'andratxzpuerto de andratxpaguerapegueraWestmallorca)	solleru   sóllerzport de solleru   port de sóllerdeiau   deiàvalldemossabanyalbufaresporlesPalma)zpalma de mallorcazpalma, mallorca0700070107020703070407050706070707080709Zentralmallorca)	inca
binissalemsineuzsanta maria del camiu   santa maria del camíalarou   alarómarratxiu	   marratxíc              3   &   K   | ]  }|v  
 y wry   r.   )r/   rg   rb   s     r$   r1   z"mallorca_region.<locals>.<genexpr>   s     *QqDy*rz   r>   r   mallorcaMallorcar   )rV   rW   r[   rT   r\   set)r]   islandwide_markersregionshitsregionmarkersrb   s   `     @r$   mallorca_regionr      s$   88  Q  VP  Q  Q  W  W  YD H

10
11 
  k  	l	  z  	{	  R  	S	  z  	{	  G  	H	  	A	  Q  	RG 
D"  *'**KK  3t9~AwTr&   sqlreturnc                     t        j                  t              5 }t        j                  | ||      cd d d        S # 1 sw Y   y xY w)N)params)sqlite3connectDB_PATHpdread_sql_query)r   r   conns      r$   queryr      s7    		! ;T  d6:; ; ;s	   <AzBSELECT * FROM product_catalog ORDER BY potential_score DESC, titlez3SELECT * FROM prospects_v2 ORDER BY created_at DESCz2SELECT * FROM companies_v2 ORDER BY canonical_namez
SELECT m.*, pp.title AS primary_project_title
FROM company_project_matches_v2 m
JOIN company_project_matches_v2 pm ON pm.company_id=m.company_id AND pm.is_primary=1
JOIN product_catalog pp ON pp.project_id=pm.project_id
z6SELECT * FROM email_drafts_v2 ORDER BY updated_at DESCz;SELECT * FROM email_evaluations_v2 ORDER BY updated_at DESCz
SELECT m.*, c.company, c.email, c.website, p.title AS project_title
FROM lead_project_matches m
LEFT JOIN cold_contacts c ON c.id=m.contact_id
LEFT JOIN product_catalog p ON p.project_id=m.project_id
ORDER BY m.lead_score DESC

human_gateapproved	main_viewprojectsrB   zKundenprojekte  nav_projectszKundendatenbank  nav_databasedatabasezProjektzuordnungen  nav_matchesscoringzFreigaben  nav_approvalsz*## Aktueller Produkt- und Zielmarktkatalogu_    Kundenprojekte · jedes Projekt mit eigenem Lead-Pool, eigener Bewertung und eigener Ansprachez$Noch keine Kundenprojekte vorhanden.
project_id)rC   333333?r   皙?z**titlez**  statusu    · Potenzial potential_scoreu    · Konfidenz 
confidencer'   Leadsr>   	Potenzialr@   zLeads ansehenshow_selected_project_idu   ### Leads für: u4   Für dieses Projekt sind noch keine Leads vorhanden.idprospect_id
is_primaryprimary_project_title
company_idr   canonical_namecompanyrC   u_   <div style='white-space:nowrap;padding-top:0.15rem'>Hinweis: vollständig beschrieben unter <b>z
</b></div>)rC   g333333@r   lead__selected_lead_idz{<div style='text-align:left;padding-top:0.55rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis'>u"    · <span style='font-weight:500'>z</span></div>)borderz#### z{<div style='text-align:left;padding-top:0.25rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis'>z**Branche:** industry   —z**Website:** websitez**Kontakt:** contact_pageemailphoneu   **Primärprojekt:** z**Warum interessant:** r   r   z**Bedarfssignale:**z- z**Bedarfssignale:** r   z**Quellen:**claimsource_typeurlz- [z]()z#### Individuelle Erstkontakt-E-Mailblocked_alternate_projectz<Der individuelle E-Mail-Entwurf wird von Hermes vorbereitet.z**Betreff:** subjectzE-Mail-Entwurfbodyi@  draft_)valuer   r   u2   Entwurf zur Prüfung · kein automatischer Versandu!   ### Kritische EmpfängerbewertungGesamtscoreoverall_scorez.1fz/10z**Urteil:** verdictu   **Stärkster Punkt:** strongest_pointu   **Größtes Risiko:** biggest_riskz**Verbesserung:** improvementu   **Würde ich antworten?** would_replyu    – reply_reasonr   Kundendatenbanku    eindeutige Firmen · u0    Projektzuordnungen · zentrale Firmenstammdatenz3Noch keine Firmen in der Kundendatenbank vorhanden.rv   rR   )	FirmaBrancheRegionu   GrößeWebsiteKontaktu   PrimärprojektzWeitere passende ProjekteProjektmatchesr   c                 6    | j                   j                         S ry   )rU   rW   )r0   s    r$   <lambda>r   g  s    quu{{} r&   )r   zFirma suchenu&   Name, Branche, Region oder Projekt …customer_db_search)placeholderr   c                 F    | j                   j                  t        dd      S )NF)casena)rU   containssearch_term)cols    r$   r   r   j  s    SWW=M=Mk`ejo=M=p r&   )axiszAngezeigt: z Firmen      rO   rH   rM      r   zAnz.zI<div class='customer-db-wrap'><table class='customer-db-table'><colgroup>z<col style='width:z%'>z</colgroup><thead><tr>z<th title='z'>z</th>z</tr></thead><tbody>z<tr>r   )r   r   nan)quotez	<a href='u0   ' target='_blank' rel='noopener'>Website ↗</a>r   @z<a href='mailto:z</a>z<td>z</td>z</tr>z</tbody></table></div>aD  
        <style>
        .customer-db-wrap {width:100%; overflow-x:hidden;}
        .customer-db-table {width:100%; table-layout:fixed; border-collapse:collapse; font-size:11.5px;}
        .customer-db-table th,.customer-db-table td,.customer-db-table a {border-bottom:1px solid rgba(128,128,128,.28); padding:6px 7px; text-align:left; vertical-align:top; white-space:normal !important; overflow-wrap:anywhere !important; word-break:break-word !important; hyphens:auto;}
        .customer-db-table th {font-weight:700; position:sticky; top:0; background:#0e1117; color:#fff !important; z-index:1;}
        .customer-db-table td:last-child,.customer-db-table th:last-child {text-align:center; white-space:normal; overflow-wrap:anywhere; word-break:break-word;}
        .customer-db-table a {white-space:nowrap;}
        </style>
        zBewertung und Human-GateznNoch keine neuen Lead-Scores vorhanden. Bewertungen entstehen erst aus neu recherchierten potenziellen Kunden.)r   project_title
lead_scoreindustry_fitproblem_pressurecompany_fiteconomic_valuereachabilityevidence_qualitysale_probabilityr   	rationale)r   
hide_indexuT   Lead Engine 2.0 · projektbezogene Leads bleiben strikt nach Kundenprojekt getrennt.)r.   )jsonr   htmlpathlibr   pandasr   	streamlitst	v2_schemar   r   prospect_store_v2r   init_prospects__file__parentr   set_page_configmarkdownLEAD_ENGINE_VERSIONLEAD_ENGINE_UI_VERSIONstreamlit.components.v1
componentsv1session_stater   	Exceptioncolumnshead_lhead_rr   buttonreruncaptionrr   r   rU   	DataFramer   r   	prospects	companiescompany_matchesdraftsreviewsmatchesemptyr    sumapproved_countnav1nav2nav3nav4r\   viewdividerinfoiterrowsr   projectr   
lead_countcolsmetriccurrentcopyproject_leadsr]   lead_idlinkboolilocr   primary_titlenotnar   master_rowsmasterrS   company_namealt_colsrow_cols	container	head_colssignalsloadsitemsitemsourcessrcssrc	src_label
lead_draftd	text_arealead_reviewr	subheaderdictzipproject_namesdb_rowsr   cidcmprimaryother_titlesmrrT   rV   sort_valuescustomer_db
text_inputr  astypeapplyr[   maskwidthsheaderslistkeys
cols_orderescape
table_htmlrowcr!   hrefra   safe
score_cols	dataframe)rz  s   0r$   <module>r     s         0 4
x.

"2
2   /# N  & ',  , 	00	-.2HH
enop.D*+ G  w  g QI(C ;BHH#$7#89:; ryy&;QUV
 

Z [^"B8;s ;",, ; UVGH	FG	   
G	H
M
N
   LU??i-;@@BC`ab&&&$.B[!#A dD$;;!#h-1~[_;`$.B[!BHHJ;;"3y>"23]a;b$.B[!BHHJ;;%c/&:%;<-ei;j$-B[!BHHJ;;^,-?X\;]$-B[!BHHJ	$:BKK<=BJJ#h-   A  BBJJL~~67"++- [	JAw .JS\SbSbi5CHHJKhiJ2::01DGr''"2!3 4 >'*;"<!=^GT`LaKbd eGNN7J/GNN;0A(BCAw~~oU:,3G]a~b**../DEBIZBW$]g  !67
##$9:jH.ww/?.@AB ))L*AZ*O P U U W &&BGGRS#0#9#9#; GL4"%d4j/.}/MQX/XYRVR\R\T#diil<.H*I%Jbf
Z^ZdZdDIIaL9P,Q(RjqryjzDLBHHTXXVbMcDdS,)?%@jn
R\Rhi	$:0M&Nnwn|n|}~  @A  oB<G<M<M!1!1!!4SWGNvW\G]bhblblm}b~vzz2B'C  EI  JS  ET)'1rzz1a&'9H$QK002l^21FG$QK00  4S  Ta  Sb  bl  2m  AE0  F$#-2::m#<#A;--c,.?uZLXYZaYbEcy}-~&(&6&6&:&:;M&NGKRV]K]4cjB,,-?@$BHHJ ,,  0k  lA  BH  lI  kJ  Jl  m|  }C  mD  lE  ER  .S  gk,  l++//0BCwN!-T!: 0L,6BJJ},E	 )! 5 5l^6L M )! 5 5  9t  uJ  KQ  uR  tS  Su  vE  FL  vM  uN  N[  7\  pt 5  !u +mFJJz<R<sVZV^V^_iVj<sns;t,u v +mFJJy<Q<qUYU]U]^gUh<qlq;r,s t +mFJJ~<V  =TZ`ZdZdelZm  =Tqwq{q{  }D  rE  =T  IM  IQ  IQ  R`  Ia  =T  ei  em  em  nu  ev  =T  z~  zB  zB  CJ  zK  =T  OT  <U  -V  !W +.B77CSBT,U V +.EdhhF_FhchEi,j k*.((>*B#*%V0:

70C+0,7BKK8M,N8= -I0;bK0H-I +/((>*B#*%-/9tzz'/B+/,7BKK,G7; -b<?GGG<L<xPSPWPWXePf<xjmjqjqrwjx	0;c)BswwW\~N^^_<`0a-b
 !,,Q R TZ  T`  T`VVM5Jg5UZ`aiZj  oJ  [J  5K  .L  fl
#-#3#3$+BGG,j$k(2(:A$/BKK-)~0N$O$0BLL1A6[^flmtludv$w$.BJJ/c$ddkdqdq''-:PT[:[2\w~K+6+<+<,7,<,<Q,?(34W(X(1		-cdetcu  dBAoDVWZC[[^A_  HM  )N(3l1Y<CXSXBY4Z([(36LQO`MaMjejLk4l(m(36LQ~M^MgbgLh4i(j(36H=IYIb]bHc4d(e(36PQRS`QaQjejPkkpqr  tB  rC  rI  GI  qJ  5K  )La0L 0L/GLP BJJLw[	z 
ZBLL"#BJJ#i.!!7O8L7MM}~EFS,!7'9JKL#,,. 	JAwgdm$C !>#!EFKKMBL)Q./GLSMMGLLO,CD_dMLB|,12;;= /2%))"\*:B|<LM, ''./ NN %56?%";;z2;e)'2Vgkk*6MVQV09";;y1:U";;w/o7;;w3Go7;;WeKfojo"/JVV[[-F\a"%b'
 
	* #bll7+77E\7]#bmmN@h  oC  D%%c*001pquu{|u}D%d+K

[[!1 2':;
 B!R2)+q

 $V,&++-(
W
;EFa"6!9+S1F
 %
 ]ggWXKDKKN+2kdkk'++a:J.K-LERg	

 #

 "**, 	'FAsf% 
5#''!U+,	>c1C&C&4;;s$7D%dV+[\C)^s
sBT7T&4;;s+D,[T[[D-I,J"TFRVWC%$++c*C!!DU"34
5 g&	' 	23 	  $		% 	BGGJ'4@	YBLL+,}}  A  	B

 	WZ(dtT 


 


a bs  		; ; b ,5 %V(36J7)4T(U%V ,5 %-(,%-90L 0LD Ggs   ,A
A@ )A@%	'A@2F%AA,AA@?AA,BAA %F&AA,AA94A AA>@A@"@!A@"@%A@/@2A@<@?AA	AAA,AAA	AAA,A AA)	A%AA,A(AA)	A)AA,A,AA6