
    oiZ                     h   d 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Z	d Z
d Zd Zd 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(i d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJi dKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdli dmdndodpdqdrdsdtdudvdwdvdxdydzd{d|d}d~dddNddddddddddddi ddddddddddddddddddddddddddddddddddi ddddddddddddddddddddddÓddœddǓddɓdd˓dd͓ddϓddddddddd؜ZdddddddddddddߜZi Zej#                         D ]  \  ZZej)                         Zej#                         D ]  \  ZZej1                  ee      Z ej1                  dd      j1                  dd      j1                  dd      j1                  dd      Zde de dee<    ej2                  j5                  dd       ddlmZ d Z ed        e
       Zi Z  e!d e"e            D ]~  Z#ee#   Z$e#dz   Z e"e$      dkD  re$d   jK                         ndZ&e&s0i Z' e!dd      D ]7  Z(e( e"e$      k  re$e(   jK                         ndZ)e)dv s( e*de(z         Z+e(e'e+<   9 e'sxe&e'fe e<     ed e"e                ed      Z,dZ-dZ.i Z/i Z0 ed        e1e j#                               D ]  \  Z\  Z&Z'h dZ2e'j#                         D  ci c]  \  } }| e2v s| | c}} Z3e3s:e&evr?e&e0vree&   Z4 ee4e,      Z5e5e0e&<   e0e&   Z5e5s^e5jm                  di       Z7g Z8d Z9de3v rG e9e7jm                  d            Z:e:r.e:dkD  r)e8jw                  de7d   j1                  dd       df       de3v rG e9e7jm                  d            Z:e:r.e:dkD  r)e8jw                  de7d   j1                  dd       df       de3v rI e9e7jm                  d             Z:e:r/e:dkD  r*e8jw                  de7d    j1                  dd       df       de3v rJ e9e7jm                  d            Z:e:r0e:dkD  r+e8jw                  de7d   j1                  dd       df       de3v rMe7jm                  d      Z:e:r9 e<e:      dvr.e8jw                  d e<e:      j1                  dd       df       de3v rK e9e7jm                  d            Z:e:r1e:dkD  r,e8jw                  de7d   j1                  dd       df       d	e3v rGe7jm                  d
      Z:e:r3 e<e:      jK                         dvre8jw                  d	 e<e:      f       de3v r.e7jm                  d      Z:e:re8jw                  d e<e:      f       de3v re7jm                  d      Z:e:p e<e:      jK                         dvrW e<e:      j)                         dv re8jw                  d       n+ e<e:      j)                         dv re8jw                  d       e8sU ededde&dddd       dZ=e8D ]R  \  Z+Z> ee+ e e>      r ee+ ddd       e=dz  Z=e-dz  Z-n ee+ ddd        ej~                  d       T  ede= d       e.dz  Z.e=e/e&<    ej~                  d         ed         e
       Z@i ZA e!d e"e@            D ]  Z#e@e#   Z$e#dz   Z e"e$      dkD  re$d   jK                         ndZ&e&s0i Z' e!dd      D ]=  Z(e( e"e$      k  re$e(   jK                         ndZ)e)dv s( e*de(z         Z+e+d!v s9e(e'e+<   ? e's~e&e'feAe<     ed" e"eA              i d"d#d)d$d+d%d5d&dd'dd(dd)dd*dd+dȐd,dΐd-d̐d.dʐd/dd0dd1dd2dKd3i dId4dOd5dzd6d]d7d7d8d&d9d1d:d/d;dUd<d|d=dd>dd?dd@ddAddBdĐdCdƐdDi ddEddFddGd-dHddIddJddKddLd dMdWdNddOddPddQddRddSddTdUdVi dudWdXdYdZd[d\d]dQd^dd_dd`ddaddbddcdddddeddfddgddhddidjdki dldmdndodpdqddrdAdsddtd
dudEdvd9dwd;dxd?dyd=dzdCd{dd|dd}d_d~dgdi diddkddmddoddqddsddwddxdd~dd'dd$dddddddddd[ddYddddddddddd	ZB e1eAj#                               D ]  \  Z\  Z&Z'eBjm                  e&      Zese&j)                         Zej#                         D ]  \  ZZCej1                  eeC      Z ej1                  dd      j1                  dd      j1                  dd      j1                  dd      Zde Zde Z4	 ej                  j                  e4ddi      ZFej                  j                  eFd      ZHeHj                  dk7  reHj                         j                  dd      ZL eeL      Z5e5s(g Z8de'v r!de5v re8jw                  de5d    df       de'v r!de5v re8jw                  de5d    df       de'v rde5v re8jw                  de5d   f       de'v rde5v re8jw                  de5d   f       de'v rde5v re8jw                  de5d   f       de'v rde5v re8jw                  de5d    df       de'v rde5v re8jw                  de5d   f       e8s# ededde&dddd       dZ=e8D ]R  \  Z+Z> ee+ e e>      r ee+ ddd       e=dz  Z=e-dz  Z-n ee+ ddd        ej~                  d       T  ede= d       e.dz  Z. ej~                  d         edd         ede. de- d       yc c}} w #  	 ej                  j                  dej                  j                  e&       ddi      ZFej                  j                  eFd      ZHeHj                         j                  dd      ZL ej                  deL      ZOeOsY deOd    ZPej                  j                  ePddi      ZFej                  j                  eFd      ZHeHj                         j                  dd      ZLn	#  Y Y xY wY xY w(  u   
SCPI Batch Filler v3 — Multi-source approach.
1. ideal-investisseur JSON for: K, S, T, U, V, W, M, J, G
2. primaliance.com for: H, Q, X, Y, L, D, P, K (fallback)
    Nz,1dBGv3jIsFDLMJInANzyLvUAF0HYb5iRZ_RQljo-i7XMc                      ddddddt        j                  t        dd      g} t        j                  | d	d	d
      }t        j
                  |j                        j                  dg       S )Ngwssheetsspreadsheetsvaluesget--paramszListing sites!A1:Y111)spreadsheetIdrangeT$/home/shingokuga/.openclaw/workspacecapture_outputtextcwd)jsondumpsSHEET_ID
subprocessrunloadsstdoutr   )cmdrs     /tmp/scpi_batch_v3.py
read_sheetr      s^    (NHetzzHG^"_`bCs4d@fgA::ahh##Hb11    c                     ddddddt        j                  t        d|  dd	      d
t        j                  d|  |ggd      g	}t        j                  |ddd      }d|j
                  v S )Nr   r   r   r   updater	   zListing sites!USER_ENTERED)r
   r   valueInputOptionz--json)r   r   Tr   r   updatedCells)r   r   r   r   r   r   )	range_strvaluer   r   s       r   
gws_updater$      s    (NHhtzzHXaWbGc  zH  #I  JTZZN9+*FTYSZR[ \]_C 	s4d@fgAQXX%%r   c                 z   | j                         j                  dd      j                  dd      j                  dd      }t        j                  dd|      }	 t        j
                  j                  dt        j
                  j                  |        d	d
i      }t        j
                  j                  |d      }|j                  dk7  ry|j                         j                  dd      }t        j                  d|      }|st        j                  d|      }|syd|d    }t        j
                  j                  |d	d
i      }t        j
                  j                  |d      }|j                  dk7  ry|j                         j                  dd      }t        |      S # t        $ r
}Y d}~yd}~ww xY w)z0Fetch data from primaliance.com for a given SCPI' ( )z\s++(https://www.primaliance.com/recherche?q=
User-Agent2Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36headers
   timeout   Nutf-8ignoreerrorsz%href="(/scpi-de-rendement/\d+-[^"]+)"zhref="(/scpi[^"]+)"https://www.primaliance.comr   )lowerreplaceresuburllibrequestRequestquoteurlopenstatusreaddecodefindallextract_primaliance	Exception)	scpi_nameslugreqresphtmllinksurles           r   fetch_primaliancerQ      s    ??$$S#.66sB?GGRPD66&#t$Dnn$$6v~~7K7KI7V6WX!#WX % 
 ~~%%c2%6;;#yy{!!'(!; 

CTJJJ5t<E ,E!H:6nn$$S<Au2v$w~~%%c2%6;;#yy{!!'(!;"4(( s'   A3F' AF' AF' ;+F' '	F:5F:c                 T   i }t        j                  d| t         j                        }|r|j                  d      |d<   t        j                  d| t         j                        }|r|j                  d      |d<   t        j                  d| t         j                        }|r)|j                  d      j	                  dd      }| d	|d
<   t        j                  d| t         j                        }|r"|j                  d      j                         |d<   t        j                  d| t         j                  t         j                  z        }|r"|j                  d      j                         |d<   t        j                  d| t         j                        }|r|j                  d      |d<   t        j                  d| t         j                        }|r|j                  d      |d<   t        j                  d| t         j                        }|r|j                  d      |d<   t        j                  d| t         j                        }|r|j                  d      |d<   t        j                  d| t         j                        }|r7|j                  d      j                         dz   |j                  d      z   |d<   t        j                  d| t         j                        }|r"|j                  d      j                         |d<   t        j                  d| t         j                  t         j                  z        }|r%|j                  d      j                         dz   |d<   t        j                  d | t         j                  t         j                  z        }|r|j                  d      |d!<   |S )"z2Extract structured data from primaliance SCPI pagez1Frais\s+de\s+souscription[^0-9]*(\d+[,.]?\d*)\s*%   comm_souscriptionz,Frais\s+de\s+gestion[^0-9]*(\d+[,.]?\d*)\s*%comm_gestionu,   Délai\s+de\s+jouissance[^0-9]*(\d+[,.]?\d*).,z moisdelai_jouissancez#Nombre\s+de\s+parts[^0-9]*([\d\s]+)nb_partsz)Type\s+de\s+capital[^A-Z]*(Fixe|Variable)capital_typez,Taux\s+d.endettement[^0-9]*(\d+[,.]?\d*)\s*%taux_endettementz+Taux\s+d.occupation[^0-9]*(\d+[,.]?\d*)\s*%tofz$RAN\s+en\s+jours[^0-9]*(\d+[,.]?\d*)	ran_joursu#   Date\s+de\s+création[^0-9]*(\d{4})date_creationu6   Capitalisation[^0-9]*([\d\s,.]+)\s*(M€|Md€|Mds€)r'      capitalisationu4   Valeur\s+de\s+reconstitution[^0-9]*([\d\s,.]+)\s*€valeur_reconstitutionuA   (?:minimum|à\s+partir\s+de)[^0-9]*(\d[\d\s]*)(?:\s*€|\s*euros)u    €souscription_minz (\d+)\s*parts?\s+(?:minimum|min)	min_parts)r<   searchSgroupr;   stripI
capitalize)rM   datamvals       r   rG   rG   >   s   D 			FbddSA$%GGAJ ! 			A4NA wwqz^ 			A4NAggaj  c*&)U%=  			8$EA771:++-Z 			>bdd244iPA wwqz446^ 			A4NA#$771:  			@$MAggajU 			94FAGGAJ[ 			8$EA !
_ 			KTSUSWSWXA!"!1!1!3c!9AGGAJ!F 			I4QSQUQUVA()
(8(8(:$% 			VX\^`^b^bcecgcg^ghA#$771:#3#3#5#>  			5tRTT"$$YGAGGAJ[Kr   Edeni'  Elialysi  	Eurovalysi  zAestiam Agorai  zAestiam Horizoni/  Linaclubi  zAEW Commerces EuropeiJ'  zAEW Diversification Allemagnei)'  u   AEW Opportunités Europei*'  u   AEW Patrimoine Santéi+'  zAtout Pierre Diversificationiz  	Activimmoi'  u   Comètei='  zAllianz Pierrei  zAlta Convictionsi'  zAltixia Cadence XIIzAltixia Commercesi  	Edissimmoi  
Genepierrei5  zRivoli Avenir Patrimoinei  	MomenTimei'  zTransitions Europei8'  New Geni%'  zEpargne Pierrei'  zEpargne Pierre Europei'  zEpargne Pierre Sophiai'  u   Atream Hôtelsi  Upekai'  u   Accès Valeur Pierrei  zAccimmo Pierrei  zImarea Pierrei'  z	Opus Reali_  Optimalei'  zCorum Eurioni'  zCorum Origini  	Corum USAi  zCorum XLiI  zDarwin RE01i'  Edmond de Rothschild Europai'  zElevation Tertiomi'  zEpsicap Explorei#'  zEpsicap Nanoi2'  u   Euryale Horizons Santéi3'  u   Pierval Santéi  u   Buroboutic Métropolesi'     Ficommerce Proximitéi'  !   Logipierre 3 Résidences Servicesi'     Pierre Expansion Santéi'  zSelectipierre 2 - Parisi0  u   Cap Foncières et Territoiresi  zGMA Essentialisi'  u   Affinités Pierrei  zAttraits Pierrei'  u   Elysées Grand Largeiw'  u   Elysées Pierrei  zCristal Lifei1'  zCristal RentezIroko Atlasi'  z	Iroko Zeni'  zKyaneos Pierrei0'  u   Crédit Mutuel Pierre 1i)  u   Epargne Foncièreu   LF Avenir Santéi&  zLF Croissance et Territoiresi'  zLF Europimmoii  zLF Grand Paris PatrimoineiZ  u   LF Opportunité Immoi[  zSelectinvest 1if  u   Foncière Des Praticiensix  zOsmo Energiei{  Reasoni7'  zMy Share Educationi'  zMy Share SCPIiy  zNCap Continenti'  u   NCap Education Santéi'  u   NCap Régionsit  zNovaxia NeoiK  zNovapierre 1i3  z	Paref Evoi'  
Paref Hexai'  zParef Primai'  zPerial Grand Parisi+  u   Perial Hospitalité Europei.  z	Perial O2i,  u   Perial Opportunités Europei*  u    Perial Opportunités TerritoireszPatrimmo Commercei~'  zPraemia Hotels Europeik  Primopierrei9  Primoviei   zPrincipal Insideil  zRemake Livei!'  zRemake UK 2025ig  zEfimmo 1i'  	Immorentei  Sofiboutiquei''  zSofidy Europe Investi'  Sofidynamici'  
Sofipierrei$'  zCoeur d'AveniriN  zCoeur d'Europei:'  u   Coeur de régionsiO  i<'  i'  in  i'  iR  i4'  iu  i'  )Coeur de villeEsprit HorizonESG Pierre Capitale   Mistral SélectionTelamon BoreaLOG INUrban Coeur CommerceWemo OnerP   aiouc)   é   è   ê   ë   â   à   î   ï   ô   û   ü   çr&   r)   r'   -r(   r*   z,https://www.ideal-investisseur.fr/scpi-avis/z.htmlzc/home/shingokuga/.openclaw/workspace/skills/scrapling-web-scraper/venv/lib/python3.12/site-packages)Fetcherc                    	 |j                  | ddi      }|j                  dk7  s$|j                  rt        |j                        dk  ry|j                  j	                  dd	      }t        j                  d
|t
        j                        }|D ]   }	 t        j                  |      }d|v r|c S " y#  Y (xY w#  Y yxY w)z.Fetch ideal-investisseur page and extract JSONr-   z'Mozilla/5.0 (compatible; Googlebot/2.1)r/   r4   i  Nr5   r6   r7   z7<script[^>]*type="application/json"[^>]*>(.*?)</script>latest)
r   rC   bodylenrE   r<   rF   re   r   r   )rO   fetcherpagerM   blocksblockrj   s          r   fetch_ii_jsonr      s    {{37`(a{b;;#TYY#dii.32Fyy9VX\^`^b^bc 	Ezz%(t#K $	 s1   AB: AB: B3-B: 0B: 3B75B: :B>zReading sheet...rS         )r)   zN/Au   Non trouvér   A   zRows needing data: F)
auto_matchz)
=== PHASE 1: ideal-investisseur JSON ===>	   GJKMre   TUVWr   c                     | t        |       j                         dv ry 	 t        t        |       j                  dd      j                  dd            S #  Y y xY w)Nr)   nullNonerW   rV   r'   r)   )strrg   floatr;   )vs    r   	try_floatr     sR    9A*>>	QS199#rBCC	s   3A Ar   r[   rV   rW   %re   r\   r   taux_distributionr   
tri_10_ansr   prix_souscription)00.00r   r)   u   €r   ra   r   parts_en_attente_retrait)r   r   r   r)   z0.0r   r`   r   	label_isrr   )true1ouiyes)r   Oui)falser   nonno)r   NonzRow 3dz (35sz): T)endflushu   ✅ u   ❌ gQ?g?z&
=== PHASE 2: Primaliance metadata ===>   DHr   LPQXYzRows still needing metadata: z16-scpi-allianz-pierrez49-scpi-edissimmoz20-scpi-genepierrez17-scpi-epargne-pierrez29-scpi-primopierrez30-scpi-primoviez9-scpi-efimmo-1z12-scpi-immorentez14-scpi-sofiboutiquez13-scpi-sofipierrez23-scpi-coeur-de-regionsz42-scpi-coeur-d-europez37-scpi-coeur-d-avenirz	scpi-edenzscpi-novaxia-neozscpi-activimmozscpi-corum-originzscpi-corum-eurionzscpi-corum-xlzscpi-iroko-zenzscpi-pierval-santezscpi-epargne-pierre-europezscpi-altixia-cadence-xiizscpi-transitions-europezscpi-momentimezscpi-elevation-tertiomzscpi-kyaneos-pierrezscpi-novapierre-1zscpi-lf-grand-paris-patrimoinezscpi-perial-grand-pariszscpi-perial-o2zscpi-remake-livezscpi-sofidy-europe-investzscpi-sofidynamiczscpi-patrimmo-commercezscpi-selectinvest-1zscpi-epargne-foncierezscpi-rivoli-avenir-patrimoinezscpi-lf-opportunite-immozscpi-aestiam-agorazscpi-aestiam-horizonz!scpi-atout-pierre-diversificationzscpi-cometezscpi-epsicap-explorezscpi-fonciere-des-praticienszscpi-osmo-energiezscpi-my-share-scpizscpi-my-share-educationzscpi-ncap-regionszscpi-reasonr   zscpi-log-inzscpi-cristal-lifer   zscpi-coeur-de-viller   zscpi-wemo-oner   zscpi-mistral-selectionzscpi-darwin-re01zscpi-principal-insidezscpi-praemia-hotels-europezscpi-paref-evozscpi-paref-primazscpi-lf-avenir-santezscpi-perial-hospitalite-europezscpi-lf-europimmozscpi-remake-uk-2025z!scpi-lf-croissance-et-territoireszscpi-perial-opportunites-europez$scpi-perial-opportunites-territoiresr   zscpi-esg-pierre-capitaler   zscpi-esprit-horizonr   zscpi-telamon-borear   zscpi-urban-coeur-commercezscpi-immorentezscpi-accimmo-pierrezscpi-eurovalyszscpi-elialyszscpi-opus-realzscpi-epargne-pierre-sophiazscpi-atream-hotelszscpi-acces-valeur-pierrez
scpi-upekazscpi-imarea-pierrezscpi-ncap-continentzscpi-ncap-education-santezscpi-buroboutic-metropoleszscpi-selectipierre-2-parisz!scpi-cap-foncieres-et-territoireszscpi-gma-essentialiszscpi-affinites-pierrezscpi-attraits-pierrezscpi-elysees-grand-largezscpi-elysees-pierrezscpi-cristal-rentezscpi-iroko-atlaszscpi-credit-mutuel-pierre-1zscpi-altixia-commerceszscpi-alta-convictionszscpi-aew-commerces-europez"scpi-aew-diversification-allemagnezscpi-aew-opportunites-europezscpi-aew-patrimoine-santezscpi-euryale-horizons-santezscpi-epsicap-nanoz scpi-edmond-de-rothschild-europazscpi-corum-usazscpi-paref-hexazscpi-linaclubzscpi-new-genzscpi-ficommerce-proximitez%scpi-logipierre-3-residences-serviceszscpi-pierre-expansion-santezscpi-optimale)	ry   rx   r~   rp   ru   rz   r{   r|   rw   zscpi-z.https://www.primaliance.com/scpi-de-rendement/r-   r.   r/   r1   r2   r4   r5   r6   r7   r,   zMozilla/5.0z!href="(/scpi-de-rendement/[^"]+)"r9   r   rT   z% TTCr   rU   r   rX   r   rY   r   rZ   r   rb   g333333?
z<============================================================u   🏁 GRAND TOTAL: z rows, z cells filled)Q__doc__r   r<   r   timesysosurllib.requestr>   r   r   r$   rQ   rG   MANUAL_URLSACCENTS
II_URL_MAPitemsnameiidr:   rJ   r   r   r;   pathinsert	scraplingr   r   printrowsneedsr   r   r   rowrg   scpiemptyjrl   chrcolr   total_cells
total_rowsresultsii_cachesortedii_colsfillablerO   rj   r   r   col_updatesr   r   appendr   	row_cellsr#   sleeprows2needs2PRIMALIANCE_SLUGSreplr?   r@   rK   rB   rL   rC   rD   rE   rM   rA   rF   rN   
actual_url)r   idxs   00r   <module>r     s;  
 ; : : :92&#JIX4
E4d4$/47F4t4'4/Eu4 $U4 -G4 U	4 %CD	4
 4
 "54
 +;D4 4  5d4 4  +D4 3?4 4 '254 %4 "+E4 e4 5e4 U4 %5d4 U4 +D4 3CD4 U4 (4 0:54 E4 *44 2=d4 4 $U4  "5!4  +>u!4" u#4" -e#4$ u%4$ '7%4& e'4& &=e'4( ()4* u+4* '@+4, $T-4, ,=e-4. /4.  1%/40 E140 $5d142 E342 +E344 5544 &u546 e746 7748 948  2494: #E;4: ,:4;4<  =4< (>t=4> d?4> 7?4@ DA4@ #EA4B %C4B "1$C4D eE4D 5eE4F TG4F )$G4F 1?G4H I4H %eI4H .;EI4J $K4J !=dK4L M4L 5dM4N 'O4P Q4P !8Q4R 4S4R $TS4T U4T ,UU4V dW4V 'W4X Y4X &uY4Z E[4Z $1%[4\ %]4\ *4]4^ e_4^ 1$_4` uuU eg4l #3CScsX[adjmsv
w
""$ XID#::<D "1||Aq!"<<R ((c2::3CKKCQSTDEdV1SEQVWJtX x y (  | 		q#d)	 !A
q'C	AA X\3q6<<>rDE1b\  !CHc!flln"11bd)CE#J	
 %=a! CJ<( )
U
#

 2 3u{{}- hA}e;G).IXS##.SIH:8S'*D>DXXh#FK hfjj!345Q/A(B(J(J3s(S'TTU%VWX hfjj'(Qu(=(=c#(F'Gq%IJK hfjj!456Q/B(C(K(KCPS(T'UUV%WXY hfjj./Q|(<(D(DS(M'Na%PQR hJJ*+Q88As3(?'@%DEF hfjj!89:Q/F(G(O(OPSTW(X'YY\%]^_ hJJ12Q'GGSV}- hJJ'(SV}- hJJ{#=SV\\^3GG1v||~!<<""<0Q#>>""<0	D2bc
#
&Bd;I! 
UaSk5)SE,Bd3NI1KSE,Bd3

4 
Ai[
!OJGDMDJJsOQhV / 0 			q#e*	 "A
(C	AA X\3q6<<>rDE1b\  !CHc!flln"11bd)C>>c
 5Mq	"" %c&k]3 4p.p$p &p .	p
 (p "p !p $p *p &p 3p .p .p Kp %p  !!p" '#p$ '%p& 'p( !)p* *+p, 9-p. 5/p0 31p2 !3p4 15p6 +7p8 '9p:  !A;p< 3=p> !?p@ %ApB 7CpD %EpF 1GpH +IpJ 0KpL  ?MpN 6OpP )QpR -SpT #$GUpV }WpX -YpZ  >[p\ ']p^ )_p` 3apb (cpd mepf mgph 'ipj +kpl mpn 2opp %qpr /spt 9upv !wpx %ypz .{p| !"B}p~ 'p@ +ApB #$GCpD "#DEpF '(NGpH 5IpJ +KpL )MpN 7OpP !QpR +SpT !UpV ~WpX !YpZ 9[p\ *]p^ 6_p` \apb )cpd +epf 8gph :ipj ;kpl $%Hmpn -opp 0qpr -spt 6upv ,wpx )ypz %{p| <}p~ 1p@ /ApB 7CpD $%IEpF  >GpH 8IpJ <KpL 'MpN $F!#8)P<_p d v||~. WA}e  &Dzz|}} 	)GAt<<4(D	)||C$,,S#6>>sBGOOPSUWXtf~:4&
ACnn$$S<Au2v$w~~%%c2%6;;#yy{!!'(!;( t$DK e|+t3CD)<$=#>e!DEF e|$.CD$8#9!?@A e|*d2C&8!9:; e|
d*Cj!123 e|$.Cn!567 e|*d2CD);$<#=Q!?@A e|%T*<%=>?	D2bc
#
&Bd;I! 
UaSk5)SE,Bd3NI1KSE,Bd3

4 
Ai[
!OJDJJsOoWr 6(m  :,gk]-H I[
 JJ	..((:6>>;O;OPT;U:VW%}5 ) C >>))#r):D99;%%gh%?DBJJCTJE6uQxjAJ..((lM=Z([C>>))#r):D99;%%gh%?D	 sE   rrAr,$rv1Bv%6A.v%$v1%v+'v1+v1