ó
    x[hª>  ã                   óV  • S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	J
r
JrJrJr  \R                  " \5      rSrSrS/rSr " S S\R*                  5      r " S	 S
\5      r " S S\5      r " S S5      rS rS rS rSS jrSS jrS r \r!\\RD                  44/r#S r$g)é    N)Úatomic_helperÚnetÚsourcesÚsubpÚutilziid-dsopennebulaÚnobodyú
context.sh)ÚEPOCHREALTIMEÚEPOCHSECONDSÚRANDOMÚLINENOÚSECONDSÚ_ÚSRANDOMÚ__vc                   óJ   • \ rS rSrSrS rS rS rS r\	S 5       r
SS jrS	rg
)ÚDataSourceOpenNebulaé+   Ú
OpenNebulac                 ó¾   • [         R                  R                  XX#5        S U l        [        R
                  R                  UR                  S5      U l        S U l        g )NÚ
opennebula)	r   Ú
DataSourceÚ__init__ÚseedÚosÚpathÚjoinÚseed_dirÚnetwork)ÚselfÚsys_cfgÚdistroÚpathss       ÚH/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceOpenNebula.pyr   ÚDataSourceOpenNebula.__init__/   s@   € Ü×Ñ×#Ñ# D°6ÔAØˆŒ	ÜŸ™Ÿ™ U§^¡^°\ÓBˆŒØˆ�ó    c                 ó„   • [         R                  R                  U 5      nU< SU R                  < SU R                  < S3$ )Nz [seed=z	][dsmode=Ú])r   r   Ú__str__r   Údsmode)r    Úroots     r$   r)   ÚDataSourceOpenNebula.__str__5   s-   € Ü×!Ñ!×)Ñ)¨$Ó/ˆÛ,0°$·)´)¸T¿[¼[ÐIÐIr&   c                 óV  • S[         0nS nS n[        nSU R                  ;   a  U R                  R                  S5      nU R                  /nUR                  [        5       5        U H¸  n [        R                  R                  U R                  5      (       a  [        X`R                  US9nOPUR                  S5      (       a:  [        R                  " [        UU R                  S9n[        R                   " Xg5      nU(       d  M   Un[(        R-                  SU5          O   U(       d  gUS	   n	[        R.                  " X‘/5      n	U R1                  UR                  S
5      U R                  R                  S5      /5      U l        U R2                  [4        R6                  :X  a  gX0l        UR                  S5      U l        X�l        UR                  S5      U l        g! ["         a     GM†  [$         a  nUeS nAf[        R&                   a    [(        R+                  SU5         GN*f = f)Nzinstance-idÚ	parseuser©Úasuserz/dev)r0   r"   z%s was not mountablezfound datasource in %sFÚmetadataÚDSMODEr*   únetwork-interfacesÚuserdataT) ÚDEFAULT_IIDÚDEFAULT_PARSEUSERÚds_cfgÚgetr   ÚextendÚfind_candidate_devsr   r   ÚisdirÚread_context_disk_dirr"   Ú
startswithÚ	functoolsÚpartialr   Úmount_cbÚNonContextDiskDirÚBrokenContextDiskDirÚMountFailedErrorÚLOGÚwarningÚdebugÚmergemanydictÚ_determine_dsmoder*   r   ÚDSMODE_DISABLEDr   r   r1   Úuserdata_raw)
r    ÚdefaultsÚresultsr   r.   Ú
candidatesÚcdevÚpartially_applied_funcÚexcÚmds
             r$   Ú	_get_dataÚDataSourceOpenNebula._get_data9   sÍ  € Ø!¤;Ð/ˆØˆØˆô &ˆ	Ø˜$Ÿ+™+Ó%ØŸ™Ÿ™¨Ó4ˆIà—m‘m�_ˆ
Ø×ÑÔ-Ó/Ô0ÛˆDð:Ü—7‘7—=‘= §¡×/Ñ/Ü3ØŸk™k°)ñ‘Gð —_‘_ V×,Ñ,ô .7×->Ò->Ü-Ø(Ø#Ÿ{™{ñ.Ð*ô
 #Ÿmšm¨DÓI�G÷ ˆwØ�Ü—	‘	Ð2°DÔ9Ùñ5 ö8 Øð �ZÑ ˆÜ×Ò  Ó/ˆð ×,Ñ,Ø�[‰[˜Ó" D§K¡K§O¡O°HÓ$=Ð>ó
ˆŒð �;‰;œ'×1Ñ1Ó1ØàŒ	Ø—{‘{Ð#7Ó8ˆŒØŒØ#ŸK™K¨
Ó3ˆÔØøô? %ó ÛÜ'ó Ø�	ûÜ×(Ñ(ó :Ü—‘Ð2°D×9ð:ús,   Á*AGÂ-AGÇ
H(Ç,	H(Ç5G7Ç7-H(È'H(c                 óh   • U R                   U R                  ;   a  SnOSnU< SU R                  < S3$ )z/Return the subplatform metadata source details.zseed-dirzconfig-diskz (Ú))r   r   )r    Úsubplatform_types     r$   Ú_get_subplatformÚ%DataSourceOpenNebula._get_subplatformv   s-   € à�=‰=˜DŸI™IÓ%Ø)Ñà,ÐÛ,¨d¯i¬iÐ8Ð8r&   c                 ó6   • U R                   b  U R                   $ g ©N)r   )r    s    r$   Únetwork_configÚ#DataSourceOpenNebula.network_config~   s   € à�<‰<Ñ#Ø—<‘<Ðàr&   c                 óŽ   • Uc#  U R                   [        R                  :X  a  SnOSn[        R                  R	                  XU5      $ )NTF)r*   r   ÚDSMODE_NETWORKr   Úget_hostname)r    ÚfqdnÚ
resolve_ipÚmetadata_onlys       r$   r_   Ú!DataSourceOpenNebula.get_hostname…   s=   € ØÑØ�{‰{œg×4Ñ4Ó4Ø!‘
à"�
Ü×!Ñ!×.Ñ.¨t¸:ÓFÐFr&   )r*   r1   r   r   r   rJ   N)FFF)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Údsnamer   r)   rR   rW   Úpropertyr[   r_   Ú__static_attributes__© r&   r$   r   r   +   s7   † à€FòòJò;òz9ð ñó ð÷Gr&   r   c                   ó   • \ rS rSrSrg)rA   éŽ   rk   N©rd   re   rf   rg   rj   rk   r&   r$   rA   rA   Ž   ó   † Úr&   rA   c                   ó   • \ rS rSrSrg)rB   é’   rk   Nrn   rk   r&   r$   rB   rB   ’   ro   r&   rB   c                   ód   • \ rS rSrSS jrS rS rS rS rS r	S	 r
S
 rS rS rSS jrS rSrg)ÚOpenNebulaNetworké–   Nc                 ó”  • Xl         Uc  [        U5      n[        R                  " [	        UR                  5       S S9 Vs/ s H  nUPM     sn5      U l        0 U l        UR                  5        HQ  u  pE[        R                  " SU5      nU(       d  M%  UR                  S5      U R                  UR                  5       '   MS     g s  snf )Nc                 ó4   • [         R                  " U S   5      $ )Né   )r   Únatural_sort_key)Úks    r$   Ú<lambda>Ú,OpenNebulaNetwork.__init__.<locals>.<lambda>    s   € ¤#×"6Ò"6°q¸±tÔ"<r&   )Úkeyz
^(.+)_MAC$rw   )ÚcontextÚget_physical_nics_by_macÚcollectionsÚOrderedDictÚsortedÚitemsÚifacesÚcontext_devnameÚreÚmatchÚgroupÚlower)r    r}   r"   Úsystem_nics_by_macry   ÚvÚms          r$   r   ÚOpenNebulaNetwork.__init__—   s³   € ØŒØÑ%Ü!9¸&Ó!AÐÜ!×-Ò-ô  Ø&×,Ñ,Ó.Ù<òóò�Aó ññó
ˆŒð  "ˆÔØ—M‘M–O‰DˆAÜ—’˜¨Ó*ˆAßˆqØ23·'±'¸!³*�×$Ñ$ Q§W¡W£YÓ/ò $ùòs   Á Cc                 óš   • SR                  UR                  S5      SS   Vs/ s H  n[        [        US5      5      PM     sn5      $ s  snf )NÚ.Ú:é   é   )r   ÚsplitÚstrÚint)r    ÚmacÚcs      r$   Úmac2ipÚOpenNebulaNetwork.mac2ip­   s>   € Ø�x‰x°#·)±)¸C³.ÀÀÑ2DÓEÒ2D¨QœœS  B›ZžÑ2DÑEÓFÐFùÒEs   ¢Ac                 ó,  • 0 nU R                  USS5      R                  5       nUR                  U R                  R	                  SS5      R                  5       5        U(       a  X2S'   U R                  USS5      R                  5       nU(       a  XBS'   U$ )NÚdnsÚ ÚDNSÚ	addressesÚsearch_domainÚsearch)Ú	get_fieldr’   r9   r}   r8   )r    ÚdevÚnameserversrš   rž   s        r$   Úget_nameserversÚ!OpenNebulaNetwork.get_nameservers°   s   € ØˆØ�n‰n˜S %¨Ó,×2Ñ2Ó4ˆØ�
‰
�4—<‘<×#Ñ# E¨2Ó.×4Ñ4Ó6Ô7ÞØ'*˜Ñ$ØŸ™ s¨O¸RÓ@×FÑFÓHˆÞØ$1˜Ñ!ØÐr&   c                 ó&   • U R                  US5      $ )NÚmtu©r    ©r    r¡   s     r$   Úget_mtuÚOpenNebulaNetwork.get_mtu»   s   € Ø�~‰~˜c 5Ó)Ð)r&   c                 óF   • U R                  USU R                  U5      5      $ )NÚip)r    r—   )r    r¡   r•   s      r$   Úget_ipÚOpenNebulaNetwork.get_ip¾   s   € Ø�~‰~˜c 4¨¯©°SÓ)9Ó:Ð:r&   c                 ó²   • / nU R                  US5      nU(       a  UR                  U5        U R                  US5      nU(       a  UR                  U5        U$ )NÚip6Úip6_ula)r    Úappend)r    r¡   Ú
addresses6r°   r±   s        r$   Úget_ip6ÚOpenNebulaNetwork.get_ip6Á   sO   € Øˆ
Ø�n‰n˜S %Ó(ˆÞØ×Ñ˜cÔ"Ø—.‘.  iÓ0ˆÞØ×Ñ˜gÔ&ØÐr&   c                 ó(   • U R                  USS5      $ )NÚip6_prefix_lengthÚ64r§   r¨   s     r$   Úget_ip6_prefixÚ OpenNebulaNetwork.get_ip6_prefixË   s   € Ø�~‰~˜cÐ#6¸Ó=Ð=r&   c                 ó&   • U R                  US5      $ )NÚgatewayr§   r¨   s     r$   Úget_gatewayÚOpenNebulaNetwork.get_gatewayÎ   s   € Ø�~‰~˜c 9Ó-Ð-r&   c                 óH   • U R                  USU R                  US5      5      $ )NÚip6_gatewayÚgateway6r§   r¨   s     r$   Úget_gateway6ÚOpenNebulaNetwork.get_gateway6Ñ   s'   € ð �~‰~Ø� §¡¨s°JÓ ?ó
ð 	
r&   c                 ó(   • U R                  USS5      $ )NÚmaskz255.255.255.0r§   r¨   s     r$   Úget_maskÚOpenNebulaNetwork.get_maskÙ   s   € Ø�~‰~˜c 6¨?Ó;Ð;r&   c                 óŠ   • U R                   R                  SR                  UU45      R                  5       5      nUS;   a  U$ U$ )z”return the field name in context for device dev.

context stores <dev>_<NAME> (example: eth0_DOMAIN).
an empty string for value will return default.r   )Nr›   )r}   r8   r   Úupper)r    r¡   ÚnameÚdefaultÚvals        r$   r    ÚOpenNebulaNetwork.get_fieldÜ   sL   € ð
 �l‰l×ÑØ�H‰HàØðó÷
 ‰e‹gó
ˆð  Ó+ˆwÐ4°Ð4r&   c                 ó0  • 0 nSUS'   0 US'   0 nU R                   R                  5        GH_  u  p4UR                  5       nU R                  R	                  X45      n0 nSU0US'   / US'   U R                  U5      n[        [        R                  " U5      5      nUS   R                  U R                  XS5      S-   U-   5        U R                  U5      n	U	(       a;  U R                  U5      n
US   R                  U	 Vs/ s H
  o»S-   U
-   PM     sn5        U R                  U5      nU(       a  XÆS'   U R                  U5      nU(       a  XÖS	'   U R!                  U5      nU(       a  XæS
'   U R#                  U5      nU(       a  XöS'   XbU'   GMb     X!S'   U$ s  snf )Nr�   ÚversionÚ	ethernetsÚ
macaddressr†   r�   Ú/Úgateway4rÁ   r¢   r¦   )rƒ   r‚   rˆ   r„   r8   rÆ   r“   r   Úipv4_mask_to_net_prefixr²   r­   r´   r¹   r9   r½   rÂ   r£   r©   )r    ÚnetconfrÐ   r•   r¡   Úc_devÚdevconfrÅ   Úprefixr³   Úprefix6Úir¼   rÁ   r¢   r¦   s                   r$   Úgen_confÚOpenNebulaNetwork.gen_confì   s¤  € ØˆØˆ�	ÑØ!ˆ�Ñàˆ	ØŸ™×)Ñ)×+‰HˆCØ—)‘)“+ˆCð ×(Ñ(×,Ñ,¨SÓ6ˆEàˆGð !-¨cÐ2ˆG�GÑð $&ˆG�KÑ Ø—=‘= Ó'ˆDÜœ×4Ò4°TÓ:Ó;ˆFØ�KÑ ×'Ñ'¨¯©°EÓ(?À#Ñ(EÈÑ(NÔOð Ÿ™ eÓ,ˆJÞØ×-Ñ-¨eÓ4�Ø˜Ñ$×+Ñ+Ù0:Ó;²
¨1˜‘W˜wÔ&±
Ñ;ôð
 ×&Ñ& uÓ-ˆGÞØ&-˜
Ñ#ð ×(Ñ(¨Ó/ˆHÞØ&.˜
Ñ#ð ×.Ñ.¨uÓ5ˆKÞØ)4˜Ñ&ð —,‘,˜uÓ%ˆCÞØ!$˜‘à$�cŒNñ] ,ð`  )�ÑØˆùò5 <s   Ã<F
)r}   r„   rƒ   rZ   )rd   re   rf   rg   r   r—   r£   r©   r­   r´   r¹   r½   rÂ   rÆ   r    rÛ   rj   rk   r&   r$   rs   rs   –   s?   † ô=ò,Gò	ò*ò;òò>ò.ò
ò<ô5õ 7r&   rs   c                  óª   • / n S HJ  n[         R                  " U5      nUR                  5         U H  nX0;  d  M
  U R                  U5        M     ML     U $ )z=
Return a list of devices that may contain the context disk.
)zLABEL=CONTEXTzLABEL=CDROMzTYPE=iso9660)r   Úfind_devs_withÚsortr²   )ÚcombinedÚfÚdevsÚds       r$   r:   r:   &  sO   € ð €HÛ=ˆÜ×"Ò" 1Ó%ˆØ�	‰	ŒÛˆAØÕ Ø—‘ Ö"ó ñ >ð €Or&   c                 ó   • SSU /$ )NÚsudoz-urk   ©Úusers    r$   Úswitch_user_cmdrè   5  s   € Ø�D˜$ÐÐr&   c                  ó.   • [         R                  " S5      $ )zDprint the shell environment variables within delimiters to be parsedzŸ
        printf "%s\0" _start_
        [ $0 != 'sh' ] && set -o posix
        set
        [ $0 != 'sh' ] && set +o posix
        printf "%s\0" _start_
        )ÚtextwrapÚdedentrk   r&   r$   Ú
varprinterrì   9  s   € ä�?Š?ð	óð r&   c                 óð  • SU R                  5       ;   a  [        R                  S5        [        5       SU -  -   [        5       -   S-   n/ nUb  [	        U5      nUR                  SS/5        [        R                  " X2S9R                  n0 nUR                  S	5      S
S nUS   US   p‡[        S [        R                  " U5       5       5      n	[        S [        R                  " U5       5       5      n
[        U	R                  5       5      R                  [        U
R                  5       5      5       H?  nU[        ;   a  M  U
R                  U5      nUc  M%  XÉR                  U5      :w  d  M;  XÅU'   MA     U$ )a$  run content and return environment variables which changed

WARNING: the special variable _start_ is used to delimit content

a context.sh that defines this variable might break in unexpected
ways

compatible with posix shells such as dash and ash and any shell
which supports `set -o posix`
s   _start_ zYUser defined _start_ variable in context.sh, this may breakcloud-init in unexpected ways.z{
%s

:
} > /dev/null
Ú
NÚshz-e)Údataz_start_ rw   r   r�   c              3   ó@   #   • U  H  oR                  S SS9v •  M     g7f©Ú=rw   )ÚmaxsplitN©r’   ©Ú.0Úvariables     r$   Ú	<genexpr>Ú%parse_shell_config.<locals>.<genexpr>}  s   é € ð Ú8K¨H�‰�s QˆÕ'Ò8Kùó   ‚c              3   ó@   #   • U  H  oR                  S SS9v •  M     g7frò   rõ   rö   s     r$   rù   rú   €  s   é € ð Ú8J¨H�‰�s QˆÕ'Ò8Jùrû   )ÚencoderD   rE   rì   rè   r9   r   Ústdoutr’   ÚdictÚshlexÚsetÚkeysÚunionÚEXCLUDED_VARSr8   )Úcontentr0   ÚbcmdÚcmdÚoutputÚretÚsectionsÚbeforeÚafterÚpre_envÚpost_envr|   Úvalues                r$   Úparse_shell_configr  F  se  € ð ˜Ÿ™Ó)Ó)Ü�‰ð-ô	
ô$ 	‹Ø
'¨'Ñ
1ñ	2ä
‹,ñ	ð ñ	ð 	ð €CØÑÜ˜fÓ%ˆØ‡J�J��dˆ|Ôä�YŠY�sÑ&×-Ñ-€Fð €Cð �|‰|˜MÓ*¨1¨2Ð.€Hð
 ˜Q‘K ¨!¡ˆEäñ Ü8=¿ºÀFÔ8Kóó €Gô ñ Ü8=¿ºÀEÔ8Jóó €Hô �7—<‘<“>Ó"×(Ñ(¬¨X¯]©]«_Ó)=Ö>ˆØ”-ÓÙØ—‘˜SÓ!ˆØÓ ¯+©+°cÓ*:Õ!:Ø�‹Hñ ?ð €Jr&   c                 óÎ  • 0 n[          HL  n[        R                  R                  X5      n[        R                  R	                  U5      (       d  MH  XSU'   MN     U(       d  [        U < SS< 35      e0 nS0 S.nSU;   a[  Ub   [        R                  " U5         [        R                  R                  U S5      n	[        R                  " U	5      n
[        X¢S9nO[        S5      eU(       d  U$ XgS'   SnSU;   a  SnOSU;   a  SnU(       ab  UR#                  U5      R%                  5       nU Vs/ s H/  n['        U5      (       d  M  UR)                  S5      (       a  M-  UPM1     snUS   S'   S H  nXæ;   d  M
  Xn   US   S'     O   SU;   a	  US   US'   OSU;   a  US   US'   SU;   aD  UR#                  SUR#                  S5      5      nUS:X  a   [*        R,                  " US   5      US'   U Vs/ s H#  n[4        R6                  " SU5      (       d  M!  UPM%     nnU(       a  [9        Xa5      nUR;                  5       US'   U$ ! [         a  n[        SR                  US95      UeSnAff = f! [        R                   a  n[        S	U-  5      UeSnAf[          a  n[        S
U-  5      UeSnAff = fs  snf ! [.         a    [0        R3                  S5         Nïf = fs  snf )z©
read_context_disk_dir(source_dir):
read source_dir and return a tuple with metadata dict and user-data
string populated.  If not a valid dir, raise a NonContextDiskDir
z: zno files foundN)r4   r1   r	   z'configured user '{user}' does not existræ   r/   zError processing context.sh: %szError reading context.sh: %szMissing context.shr1   ÚSSH_KEYÚSSH_PUBLIC_KEYÚ#zpublic-keys)ÚSET_HOSTNAMEÚHOSTNAMEÚ	PUBLIC_IPÚ	IP_PUBLICÚETH0_IPzlocal-hostnameÚ	USER_DATAr4   ÚUSERDATAÚUSERDATA_ENCODINGÚUSER_DATA_ENCODINGÚbase64z"Failed base64 decoding of userdataz^ETH\d+_IP.*$r3   )ÚCONTEXT_DISK_FILESr   r   r   ÚisfilerA   ÚpwdÚgetpwnamÚKeyErrorrB   Úformatr   Úload_text_filer  r   ÚProcessExecutionErrorÚIOErrorr8   Ú
splitlinesÚlenr=   r   Úb64dÚ	TypeErrorrD   rE   r…   r†   rs   rÛ   )Ú
source_dirr"   r0   ÚfoundÚafÚfnr}   rL   Úer   r  Ússh_key_varÚlinesÚlinery   ÚencodingÚipaddr_keysÚonets                     r$   r<   r<   �  sì  € ð €Eß ˆÜ�W‰W�\‰\˜*Ó)ˆÜ�7‰7�>‰>˜"×ÓØ�"‹Iñ !ö
 Ü«JÒ8HÐ IÓJÐJà€GØ¨RÑ0€Gà�uÓØÑðÜ—’˜VÔ$ð	Ü—7‘7—<‘< 
¨LÓ9ˆDÜ×)Ò)¨$Ó/ˆGÜ(¨Ñ@‰Gô  Ð 4Ó5Ð5æØˆà!ˆJÑð €KØ�GÓØ‰Ø	˜WÓ	$Ø&ˆæØ—‘˜KÓ(×3Ñ3Ó5ˆá"ó.
Ú"�T¤c¨$§i‹D¸¿¹È×8L�D™Uñ.
ˆ�
Ñ˜MÑ*ó OˆØ�<Ø4;±JˆG�JÑÐ 0Ñ1Ùñ Oð �gÓØ% kÑ2ˆ�
ÒØ	�wÓ	Ø% jÑ1ˆ�
Ñð �WÓØ—;‘;Ø §¡Ð-AÓ!Bó
ˆð �xÓðBÜ&3×&8Ò&8¸ÀÑ9LÓ&M�˜
Ñ#ñ &ÓGšg˜¬¯ªÐ2BÀA×)F—1™g€KÐGÞÜ  Ó1ˆØ(,¯©«ˆÐ$Ñ%à€NøôO ó Ü*Ø=×DÑDØ#ð Eð óð ð	ûðûô ×)Ñ)ó 	Ü&Ø1°QÑ7óàðûô ó 	Ü#Ø.°!Ñ4óàðûð	üò*.
øô2 ó BÜ—‘Ð@ÖAðBüò Hsl   ÂI Â?I1 Ä/J8ÅJ8ÅJ8ÇJ= Ç3 K"ÈK"É
I.ÉI)É)I.É1J5ÊJÊJ5Ê!J0Ê0J5Ê=KËKc           	      óÚ   • [         R                  " 5       n[        UR                  5        VVs/ s H*  u  p#U R                  R                  U5      (       d  M'  X#4PM,     snn5      $ s  snnf rZ   )r   Úget_interfaces_by_macrÿ   r‚   Ú
networkingÚis_physical)r"   râ   r‹   Úns       r$   r~   r~   í  sQ   € Ü×$Ò$Ó&€DÜØ ŸJ™JœLÔMšL‘D�A¨F×,=Ñ,=×,IÑ,IÈ!×,L‹ˆ!‹™LÒMóð ùÛMs   ®&A'
ÁA'
c                 ó8   • [         R                  " U [        5      $ rZ   )r   Úlist_from_dependsÚdatasources)Údependss    r$   Úget_datasource_listr@  þ  s   € Ü×$Ò$ W¬kÓ:Ð:r&   rZ   )%r   r>   Úloggingr   r!  r…   r   rê   Ú	cloudinitr   r   r   r   r   Ú	getLoggerrd   rD   r5   r6   r  r  r   r   Ú	ExceptionrA   rB   rs   r:   rè   rì   r  r<   r~   ÚDataSourceOpenNebulaNetÚDEP_FILESYSTEMr>  r@  rk   r&   r$   Ú<module>rG     sÔ   ðó Û Û Û 	Û 
Û 	Û Û ç =Õ =à×Ò˜Ó!€à €ØÐ Ø"�^Ð ð	€ô`G˜7×-Ñ-ô `GôF	˜	ô 	ô	˜9ô 	÷Mñ Mò`ò ò
ôDôN]ò@ð /Ð ð ˜G×2Ñ2Ð4Ð5ð€ó;r&   