
    ii              %       
   S r SSKrSSKrSSKJr  SSKrSSKJr  SSKJ	r	J
r
JrJrJrJr  SSKJrJrJrJrJr  SSKJrJrJrJr  SS	KJrJr  SS
KJrJr  \R@                  " \!5      r"\" SS9r#S\$S\%4S jr&S\$S\'\$\$4   4S jr(\#RS                  S/ SQS9   S}S\\$\RT                  " SS94   S\\%\RV                  " SSS94   S\\%\RV                  " SSS94   S\SS4
S jj5       r,S\$S\%4S jr-\#RS                  S / S!QS9      S~S\\$S-  \RT                  " S"S94   S#\\%\RV                  " S$S%S&S94   S'\\%\RV                  " S(S)S94   S*\\%\RV                  " S+S,S-S94   S.\S\SS4S/ jj5       r.S0\$S-  S.\$S-  S#\%S'\%S*\%S\$S-  SS4S1 jr/S\$S#\%S'\%S*\%S\$S-  SS4S2 jr0\#RS                  S3S4S5/S9 SS\\$\RT                  " S6S94   S\SS4S7 jj5       r1\#RS                  S8/ S9QS9   S}S\\$\RT                  " S6S94   S:\\%\RV                  " S;S<S=S94   S>\\%\RV                  " S?S@S94   S\SS4
SA jj5       r2\#RS                  SB/ SCQS9      SS\\$\RT                  " SDS94   S*\\%\RV                  " S+S,SES94   S:\\%\RV                  " S;S<S=S94   SF\\%\RV                  " SGSHS94   SI\\3\$   S-  \RV                  " SJS94   SK\\3\$   S-  \RV                  " SLS94   S\SS4SM jj5       r4\#RS                  SN/ SOQS9 SSP\\$\RT                  " SQS94   SR\\$\RT                  " SSS94   S\SS4ST jj5       r5\#RS                  SU/ SVQS9               SSW\\$S-  \RT                  " SXS94   SY\\$S-  \RT                  " SZS94   S8\\%\RV                  " S[S94   S\\\%\RV                  " S]S^S94   S_\\%\RV                  " S`SaS94   Sb\\$S-  \RV                  " ScS94   Sd\\$S-  \RV                  " SeS94   SF\\%\RV                  " SGSfS94   SI\\3\$   S-  \RV                  " SgS94   SK\\3\$   S-  \RV                  " ShS94   Si\\$S-  \RV                  " SjS94   Sk\\%\RV                  " SlSmS94   Sn\\%\RV                  " SoSpS94   Sq\\%\RV                  " SrSsStS94   S\SS4 Su jj5       r6\#RS                  Sv/ SwQS9  SSx\\$\RT                  " SyS94   Sz\\$S-  \RT                  " S{S94   S\SS4S| jj5       r7g)z7Contains commands to interact with buckets via the CLI.    N)	Annotated)logging)BUCKET_PREFIX
BucketFileFilterMatcher_is_bucket_path_parse_bucket_path_split_bucket_id_and_prefix)SoftTemporaryDirectory
StatusLineare_progress_bars_disableddisable_progress_barsenable_progress_bars   )	SearchOptTokenOpt
get_hf_apityper_factory)format_sizeprint_file_listing)OutputFormatWithAutooutz"Commands to interact with buckets.)helppathreturnc                 $    U R                  S5      $ )Nzhf://)
startswith)r   s    P/home/rurouni/.local/lib/python3.13/site-packages/huggingface_hub/cli/buckets.py_is_hf_handler   7   s    ??7##    argumentc                     U R                  [        5      (       a  [        U 5      $  [        U 5      $ ! [         a    [	        SU  S[         S35      ef = f)zParse a bucket argument accepting both 'namespace/name(/prefix)' and 'hf://buckets/namespace/name(/prefix)'.

Returns:
    tuple: (bucket_id, prefix) where bucket_id is "namespace/bucket_name" and prefix may be empty string.
zInvalid bucket argument: -. Must be in format namespace/bucket_name or znamespace/bucket_name)r   r   r	   r
   
ValueError)r!   s    r   _parse_bucket_argumentr%   ;   se     =))!(++
*844 
'z 2 /!68
 	

s	   
2 !Acreate)zhf buckets create my-bucketz hf buckets create user/my-bucketz-hf buckets create hf://buckets/user/my-bucketz*hf buckets create user/my-bucket --privatez+hf buckets create user/my-bucket --exist-ok)nameexamples	bucket_idzTBucket ID: bucket_name, namespace/bucket_name, or hf://buckets/namespace/bucket_nameprivatez	--privatezCreate a private bucket.exist_okz
--exist-okz3Do not raise an error if the bucket already exists.tokenc                    [        US9nU R                  [        5      (       a8   [        U 5      u  pVU(       a!  [
        R                  " SU  S[         S35      eUn UR                  U U(       a  UOSUS9n[        R                  " SUR                  UR                  S9  g! [         a$  n[
        R                  " [        U5      5      eSnAff = f)	zCreate a new bucket.r,   Nz-Cannot specify a prefix for bucket creation: . Use namespace/bucket_name or namespace/bucket_name.)r*   r+   zBucket created)handleurl)r   r   r   r%   r$   typerBadParameterstrcreate_bucketr   resultr1   r2   )	r)   r*   r+   r,   api	parsed_idprefixe
bucket_urls	            r   r&   r&   L   s    D 5
!CM**	- 6y AI $$?	{ K11>?UW  	""" # J
 JJ
(9(9z~~N  	-$$SV,,	-s   B! !
C+C

Cc                 r    U R                  [        5      (       a  U [        [        5      S nSU;   $ U nSU;   $ )zFCheck if argument is a bucket ID (namespace/name) vs just a namespace.N/)r   r   len)r!   r   s     r   _is_bucket_idr@      sB    =))M*,- $; $;r    z	list | ls)
zhf buckets listzhf buckets list huggingfacez$hf buckets list --search "my-prefix"zhf buckets list user/my-bucketz!hf buckets list user/my-bucket -Rz!hf buckets list user/my-bucket -hz%hf buckets list user/my-bucket --treez(hf buckets list user/my-bucket --tree -hz+hf buckets list hf://buckets/user/my-bucketz%hf buckets list user/my-bucket/sub -RzyNamespace (user or org) to list buckets, or bucket ID (namespace/bucket_name(/prefix) or hf://buckets/...) to list files.human_readablez--human-readablez-hz$Show sizes in human readable format.as_treez--treez3List files in tree format (only for listing files).	recursivez--recursivez-Rz0List files recursively (only for listing files).searchc           	          U SL=(       a    [        U 5      nU(       a'  Ub  [        R                  " S5      e[        U UUUUS9  g[	        U UUUUUS9  g)zList buckets or files in a bucket.

When called with no argument or a namespace, lists buckets.
When called with a bucket ID (namespace/bucket_name), lists files in the bucket.
Nz'Cannot use --search when listing files.)r!   rA   rB   rC   r,   )	namespacerD   rA   rB   rC   r,   )r@   r3   r4   _list_files_list_buckets)r!   rA   rB   rC   rD   r,   is_file_modes          r   list_cmdrJ      sg    r 4'CM(,CL$$%NOO)	
 	)	
r    rF   c           	      ,   U(       a  [         R                  " S5      eU(       a  [         R                  " S5      eU b=  U R                  [        5      (       a#  U [	        [        5      S n U R                  S5      n [        US9nUR                  XS9 Vs/ s HZ  nUR                  UR                  U(       a  [        UR                  U5      OUR                  UR                  UR                  S.PM\     nn[        R                  " USSS	.S
9  gs  snf )zList buckets in a namespace.z'Cannot use --tree when listing buckets.z,Cannot use --recursive when listing buckets.Nr>   r.   )rF   rD   )idr*   sizetotal_files
created_atright)rM   rN   )
alignments)r3   r4   r   r   r?   rstripr   list_bucketsrL   r*   r   rM   rN   rO   r   table)	rF   rD   rA   rB   rC   r,   r8   bucketitemss	            r   rH   rH      s       !JKK  !OPP !5!5m!D!Dc-023	$$S)	
5
!C &&&J	 KF ))~~@NK^<TZT_T_!-- ++	
 K 
 	 IIe IJ	s   A!Dc                 l   U(       a8  [         R                  [        R                  :X  a  [        R
                  " S5      e[        US9n [        U 5      u  pg[        UR                  UU=(       d    SUS95      n	[        XX#S9  g! [         a$  n[        R
                  " [        U5      5      eSnAff = f)zList files in a bucket.z%Cannot use --tree with --format json.r.   Nr:   rC   )rA   rB   rC   )r   moder   jsonr3   r4   r   r%   r$   r5   listlist_bucket_treer   )
r!   rA   rB   rC   r,   r8   r)   r:   r;   rV   s
             r   rG   rG      s     3883888  !HII
5
!C)28<	 >T 	 	
E uWb  )  Q(()s   
B 
B3B..B3infozhf buckets info user/my-bucketz+hf buckets info hf://buckets/user/my-bucketzFBucket ID: namespace/bucket_name or hf://buckets/namespace/bucket_namec                     [        US9n [        U 5      u  p4UR                  U5      n[        R                  " USS9  g! [         a$  n[        R                  " [        U5      5      eSnAff = f)zGet info about a bucket.r.   NrL   )id_key)	r   r%   r$   r3   r4   r5   bucket_infor   dict)r)   r,   r8   r9   _r;   rU   s          r   r]   r]     sd    " 5
!C)-i8	 __Y'FHHVD!	  )  Q(()s   ? 
A-	A((A-delete)z hf buckets delete user/my-bucketz-hf buckets delete hf://buckets/user/my-bucketz&hf buckets delete user/my-bucket --yesz-hf buckets delete user/my-bucket --missing-okyesz--yesz-yzSkip confirmation prompt.
missing_okz--missing-okz3Do not raise an error if the bucket does not exist.c                    U R                  [        5      (       a9   [        U 5      u  pEU(       a!  [        R
                  " SU  S[         S35      eUn O'SU ;  a!  [        R
                  " SU  S[         S35      e[        R                  " SU  S	3US
9  [        US9nUR                  XS9  [        R                  " SU S9  g! [         a$  n[        R
                  " [        U5      5      eSnAff = f)zwDelete a bucket.

This deletes the entire bucket and all its contents. Use `hf buckets rm` to remove individual files.
Nz-Cannot specify a prefix for bucket deletion: r/   r0   r>   zInvalid bucket ID: r#   z(Are you sure you want to delete bucket ''?rd   r.   )re   zBucket deleted)r)   )r   r   r%   r$   r3   r4   r5   r   confirmr   delete_bucketr7   )r)   rd   re   r,   r9   r:   r;   r8   s           r   rc   rc   9  s   J M**	- 6y AI $$?	{ K11>?UW  		I	  !) -;;H/I_a
 	

 KK:9+RHcR
5
!Ci7JJ95%  	-$$SV,,	-s   C 
C0C++C0zremove | rm)z)hf buckets remove user/my-bucket/file.txtz2hf buckets rm hf://buckets/user/my-bucket/file.txtz.hf buckets rm user/my-bucket/logs/ --recursivez:hf buckets rm user/my-bucket --recursive --include "*.tmp"z8hf buckets rm user/my-bucket/data/ --recursive --dry-runzBucket path: namespace/bucket_name/path or hf://buckets/namespace/bucket_name/path. With --recursive, namespace/bucket_name is also accepted to target all files.z0Remove files recursively under the given prefix.dry_runz	--dry-runz8Preview what would be deleted without actually deleting.includezQInclude only files matching pattern (can specify multiple). Requires --recursive.excludezLExclude files matching pattern (can specify multiple). Requires --recursive.c                   ^  [        U 5      u  mnUS:X  a$  U(       d  [        R                  " ST ST S35      eU(       d  U(       a  U(       d  [        R                  " S5      e[        US9n	U(       Ga`  [        [        R                  [        R                  :H  S9n
U
R                  S	5        / nU	R                  TUR                  S
5      =(       d    SSS9 HI  n[        U[        5      (       d  M  UR!                  U5        U
R                  S[#        U5       S35        MK     U
R%                  S[#        U5       S35        U(       d  U(       a=  ['        XES9nU Vs/ s H&  oR)                  UR*                  5      (       d  M$  UPM(     nnOUnU Vs/ s H  oR*                  PM     nn[-        S U 5       5      n[/        USS9nU(       d  [        R0                  " S5        g[#        U5       SU 3nU(       dO  U(       dH  [        R0                  " SR3                  S U 5       5      5        [        R4                  " SU ST S3SS9  U(       aJ  [        R0                  " SR3                  U4S jU 5       5      5        [        R0                  " SU S35        gU	R7                  TUS9  [        R8                  " SU ST S 3T[#        U5      US!9  gUR                  S
5      nU(       d  [        R                  " S"5      eU(       a9  [        R0                  " S#[:         T S
U 35        [        R0                  " S$5        g[        R4                  " S%U S&T S3US9  U	R7                  TU/S9  [        R8                  " S'UTS(9  g! [         a$  n[        R                  " [	        U5      5      eSnAff = fs  snf s  snf ))zZRemove files from a bucket.

To delete an entire bucket, use `hf buckets delete` instead.
N z?No file path specified. To remove files, provide a path (e.g. 'zd/FILE') or use --recursive to remove all files. To delete the entire bucket, use `hf buckets delete z`.z,--include and --exclude require --recursive.r.   )enabledzListing files from remoter>   TrX   zListing files from remote (z files))include_patternsexclude_patternsc              3   8   #    U  H  oR                   v   M     g 7fN)rM   ).0fs     r   	<genexpr>remove.<locals>.<genexpr>  s     7As   )rA   zNo files to remove.z file(s) totaling 
c              3   ,   #    U  H
  nS U 3v   M     g7f)z  N )ru   r   s     r   rw   rx     s     BztD6{zs   zRemove z from 'rg   Frh   c              3   @   >#    U  H  nS [          T SU 3v   M     g7f)delete: r>   N)r   )ru   r   r)   s     r   rw   rx     s%     cXbPT-1TFKXbs   z
(dry run) z would be removed.)rc   zRemoved ')r)   files_deletedrM   zFile path cannot be empty.r}   z"(dry run) 1 file would be removed.zRemove 'z' from 'zFile removed)r   r)   )r%   r$   r3   r4   r5   r   r   r   rY   r   humanupdater\   rR   
isinstancer   appendr?   doner   matchesr   sumr   textjoinri   batch_bucket_filesr7   r   )r!   rC   rd   rk   rl   rm   r,   r:   r;   r8   status	all_filesitemmatcherrv   matched_files
file_paths
total_sizesize_strcount_label	file_pathr)   s                        @r   remover   v  s<   z)28<	6 |I   k "DDM;bR
 	
 	7I  !OPP
5
!CCHH0D0J0J$JK12&(	((==%- ) 
D
 $
++  & ;C	N;K7ST
 	1#i.1AIJg#WWG(1M	1__QVV5LQ	MMM%M&34mffm
4777
z$?HH*+Z));H:F7HHTYYBzBBCKK'+gi[COHHTYYcXbccdHHz+.@ABy<

{m79+Q7j/		
 MM#&	$$%ABBHHxyk9+FGHH9:hyk)B?SIy)=

>	YGY  )  Q(()@ N 5s)   N	 !#N:N:N?	
N7N22N7move)z/hf buckets move user/old-bucket user/new-bucketz/hf buckets move user/my-bucket my-org/my-bucketzIhf buckets move hf://buckets/user/old-bucket hf://buckets/user/new-bucketfrom_idzMSource bucket ID: namespace/bucket_name or hf://buckets/namespace/bucket_nameto_idzRDestination bucket ID: namespace/bucket_name or hf://buckets/namespace/bucket_namec                 2   [        U 5      u  p4U(       a!  [        R                  " SU  S[         S35      e[        U5      u  pVU(       a!  [        R                  " SU S[         S35      e[	        US9nUR                  X5S9  [        R                  " SX5S9  g)z2Move (rename) a bucket to a new name or namespace.z)Cannot specify a prefix for bucket move: r/   r0   r.   )r   r   zBucket movedN)r%   r3   r4   r   r   move_bucketr   r7   )r   r   r,   parsed_from_idfrom_prefixparsed_to_id	to_prefixr8   s           r   r   r     s    2 #9"AN  7y A--:O;QS
 	
 5U;L  7w ?--:O;QS
 	

 5
!COONO?JJ~~Jr    sync)z2hf buckets sync ./data hf://buckets/user/my-bucketz2hf buckets sync hf://buckets/user/my-bucket ./dataz;hf buckets sync ./data hf://buckets/user/my-bucket --deletez^hf buckets sync hf://buckets/user/my-bucket ./data --include "*.safetensors" --exclude "*.tmp"zIhf buckets sync ./data hf://buckets/user/my-bucket --plan sync-plan.jsonlz'hf buckets sync --apply sync-plan.jsonlz<hf buckets sync ./data hf://buckets/user/my-bucket --dry-runzChf buckets sync ./data hf://buckets/user/my-bucket --dry-run | jq .sourcezKSource path: local directory or hf://buckets/namespace/bucket_name(/prefix)destzPDestination path: local directory or hf://buckets/namespace/bucket_name(/prefix)z/Delete destination files not present in source.ignore_timesz--ignore-timesz;Skip files only based on size, ignoring modification times.ignore_sizesz--ignore-sizesz<Skip files only based on modification times, ignoring sizes.planz=Save sync plan to JSONL file for review instead of executing.applyz#Apply a previously saved plan file.z5Print sync plan to stdout as JSONL without executing.z6Include files matching pattern (can specify multiple).z6Exclude files matching pattern (can specify multiple).filter_fromz(Read include/exclude patterns from file.existingz
--existingzASkip creating new files on receiver (only update existing files).ignore_existingz--ignore-existingzCSkip updating files that exist on receiver (only create new files).verbosez	--verbosez-vz%Show detailed logging with reasoning.c                     [        US9nUR                  U UUUUUUUU	U
UUUU[        R                  " 5       S9  U(       a6  [        R                  " 5       (       d  [        R                  " SU S35        ggg)z0Sync files between local directory and a bucket.r.   )r   r   rc   r   r   r   r   rl   rm   r   r   r   rk   r   quietzRun `hf buckets sync --apply z` to execute this plan.N)r   sync_bucketr   is_quiethint)r   r   rc   r   r   r   r   rk   rl   rm   r   r   r   r   r,   r8   s                   r   r   r   6  s    X 5
!COO!!'lln  " CLLNN06MNO #tr    cp)
z5hf buckets cp hf://buckets/user/my-bucket/config.jsonz=hf buckets cp hf://buckets/user/my-bucket/config.json ./data/zDhf buckets cp hf://buckets/user/my-bucket/config.json my-config.jsonz7hf buckets cp hf://buckets/user/my-bucket/config.json -z8hf buckets cp my-config.json hf://buckets/user/my-bucketz>hf buckets cp my-config.json hf://buckets/user/my-bucket/logs/zKhf buckets cp my-config.json hf://buckets/user/my-bucket/remote-config.jsonz7hf buckets cp - hf://buckets/user/my-bucket/config.jsonzVhf buckets cp hf://buckets/user/my-bucket/logs/ hf://buckets/user/archive-bucket/logs/zehf buckets cp hf://datasets/user/my-dataset/processed/ hf://buckets/user/my-bucket/dataset/processed/srczMSource: local file, any hf:// handle (model, dataset, bucket), or - for stdindstz@Destination: local path, bucket hf://... handle, or - for stdoutc                 (   [        US9n[        U 5      nUSL=(       a    [        U5      n[        U 5      nUSL=(       a    [        U5      nU S:H  nUS:H  n	U(       a/  U(       a(   UR                  X5        [        R                  " SXS9  gU(       d=  U(       d6  U(       d/  Uc  [
        R                  " S5      e[
        R                  " S5      eU(       a  U(       d  [
        R                  " S5      eU(       aF  U(       a?  [        U5      u  pUS	:X  d  UR                  S
5      (       a  [
        R                  " S5      eU	(       a  U(       d  [
        R                  " S5      eU(       dA  U(       d:  [        R                  R                  U 5      (       a  [
        R                  " S5      eU(       Ga-  [        U 5      u  pUS	:X  d  UR                  S
5      (       a  [
        R                  " S5      eUR                  S
S5      S   nU	(       a  [!        5       nU(       d
  [#        5          [%        5        n[        R                  R'                  UU5      nUR)                  XU4/5        [+        US5       nUR-                  S5      =n(       aC  [.        R0                  R2                  R5                  U5        UR-                  S5      =n(       a  MC  SSS5        SSS5        U(       d  [7        5         ggUc  UnO[        R                  R                  U5      (       d:  UR                  [        R8                  5      (       d  UR                  S
5      (       a   [        R                  R'                  X5      nOUn[        R                  R;                  U5      nU(       a  [        R<                  " USS9  UR)                  XU4/5        [        R                  " SU US9  gU(       a`  [        U5      u  nn[.        R>                  R2                  R-                  5       nURA                  UUU4/S9  [        R                  " SSUS9  g[        R                  RC                  U 5      (       d  [
        R                  " SU  35      e[        U5      u  pUS	:X  a   [        R                  RE                  U 5      nO;UR                  S
5      (       a#  U[        R                  RE                  U 5      -   nOUnURA                  XU4/S9  [        R                  " SU [F         U S
U 3S9  g! [         a$  n
[
        R                  " [        U
5      5      eSn
A
ff = f! , (       d  f       GN= f! , (       d  f       GN= f! U(       d  [7        5         f f = f)zCopy files to or from buckets.r.   N-Copied)r   r   z2Missing destination. Provide a bucket path as DST.z;One of SRC or DST must be a bucket path (hf://buckets/...).z+Stdin upload requires a bucket destination.ro   r>   zAStdin upload requires a full destination path including filename.z"Cannot pipe to stdout for uploads.zNSource must be a file, not a directory. Use `hf buckets sync` for directories.zJSource path must include a file name, not just a bucket or directory path.r   rbi HT)r+   
Downloaded)addUploadedstdinzSource file not found: )$r   r   r   
copy_filesr$   r3   r4   r5   r   r7   r	   endswithosr   isdirrsplitr   r   r   r   download_bucket_filesopenreadsysstdoutbufferwriter   sepdirnamemakedirsr   r   isfilebasenamer   )r   r   r,   r8   	src_is_hf	dst_is_hfsrc_is_bucketdst_is_bucketsrc_is_stdindst_is_stdoutr;   rb   r:   r)   filenamepbar_was_disabledtmp_dirtmp_pathrv   chunk
local_path
parent_dirremote_pathdatas                           r   r   r     sG   2 5
!Cc"I46M#$6I#C(MtO<(<M#:L3JM Y	-NN3$ 	

8. |;$$%YZZ  !^__M  !NOO&s+	R<6??3//$$%hii]  !EFF"''--2D2D  !qrr .s3	R<6??3//$$%qrr==a(, !; <$%'	++-!ww||GX>H--i8:L9MNh-'(vvj'99e9JJ--33E: ()vvj'99e9 . . )(* ) {%
s##s||BFF';';s||C?P?PWW\\#8
 
 4JJ6%%i:2F1GHJJ|*=	!3C!8	;yy$$&yk/B.CD

:74 ww~~c""$$'>se%DEE.s3	R<''**3/K__S!! 277#3#3C#88K Ky[/A.BC

:3}oi[+,WXw  	-$$SV,,	-Z .- .- )(* )sV   %T( ,
U= 6AU+7AUU+U= (
U2UU
U(	#U++
U:5U= =V)FFN)NFFFNNrt   )FFFNNN)NNFFFNNFNNNFFFN)NN)8__doc__r   r   typingr   r3   huggingface_hubr   huggingface_hub._bucketsr   r   r   r   r	   r
   huggingface_hub.utilsr   r   r   r   r   
_cli_utilsr   r   r   r   _file_listingr   r   _outputr   r   
get_logger__name__loggerbuckets_clir5   boolr   tupler%   commandArgumentOptionr&   r@   rJ   rH   rG   r]   rc   r[   r   r   r   r   r{   r    r   <module>r      s
   > 	 
   #    ; . 
		H	% !EF$ $ $
S 
U38_ 
" 	  	. 	 	++Og	
	+O +	
	+O F	
	+O* ++O, 
-+O	+O\C D  	  0 	 	 	 	E>
d
W	
	>
 7	
	>
$ F	
	%>
2 C	
	3>
B C>
D E>
F 
G>
>
B KTz K$J K  K 	 K
  K : K 
 KFccc c 	c
 :c 
c: 	(5   "Y	
	" " 
""* 	  . 	 	-16Y	
	16 
,	
	
16 F	
	16, -16. 
/1616h 	  	6 	 	 	 	 	[AHa	
	AH C	
	AH$ 
,	
	
%AH4 K	
	5AHB S	Dd	
	CAHN S	D_	
	OAHZ [AH\ 
]AH	AHH 	  * "K`	
	"K e	
	"K "K 
"K"KT 		  & 	 	 	 	 	 	 	 	 	 	 	 	 	 	yrPd
^	
	rP d
c	
	rP B	
	rP& N	
	'rP4 O	
	5rPB d
P	
	CrPN d
6	
	OrPZ H	
	[rPh S	DI	
	irPt S	DI	
	urP@ d
;	
	ArPL T	
	MrPZ V	
	[rPh 8	
	irPx yrPz 
{rPrPt 	  * 	rY	U^^!pqq
rY 
d
ENN(jkk
	rY rY 
rYrYr    