§
    }Štjäc  ã                   óØ  — 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dlm	Z	m
Z
 ddlmZmZ ddlmZ ddlmZ ddlmZmZ ddlZddlmZmZmZ dd	lmZmZ d
dlmZ d
dlmZm Z  d
dl!m"Z" dZ# ed¦  «        Z$dZ%dZ& ee&¬¦  «        Z'dZ(dZ)dZ* ej+        e,¦  «        Z- G d„ de.e¦  «        Z/e
 G d„ d¦  «        ¦   «         Z0e' 1                    dg d¢¬¦  «        	 dkdej2        dee. ed ¬¦  «        f         d!ee3 e d"d#¬¦  «        f         d$dfd%„¦   «         Z4e' 1                    d&g d'¢¬¦  «        	 dld(ee.dz   ed)¬¦  «        f         d$dfd*„¦   «         Z5e' 1                    d+d,dd,d-œd.d/g¬0¦  «        dej2        d(ee. ed1¬¦  «        f         d$dfd2„¦   «         Z6e' 1                    d3d4g¬¦  «        dmd5„¦   «         Z7e' 1                    d6d7g¬¦  «        dmd8„¦   «         Z8e' 1                    d9d:g¬¦  «        d(ee. ed;¬¦  «        f         d$dfd<„¦   «         Z9d$e:e0         fd=„Z;d$e:e<e.e.f                  fd>„Z=d?e:e.         d@e>e.         d$e?dz  fdA„Z@dBe.d$edz  fdC„ZAd(e.d$e0fdD„ZBdEe0d$e/fdF„ZCdddGœdHe.dIe.dBe.dJe.dKe.dz  dLe.dz  d$e0fdM„ZDd,dNœdHe.dIe.dJe.dOe3d$e.dz  f
dP„ZEdHe.dIe.dJe.dBe.d$eFf
dQ„ZGdRedBe.dSeFd$efdT„ZHdRedHe.dIe.dBe.dJe.d$efdU„ZIdHe.dIe.dJe.dVe.dz  d$e.dz  f
dW„ZJdBe.d$efdX„ZKdddYœdZe.d[eLdz  d\eLdz  fd]„ZMdHe.dIe.d$e<e.e.dz  f         fd^„ZNdBe.d$e.fd_„ZOdBe.d$efd`„ZPdaedbe.d$efdc„ZQ ejR        dd¦  «        ZSdBe.dee.d$e.fdf„ZTde.d$e<e.e.e.f         fdg„ZUd(e.d$e.fdh„ZVdied?e:e.         d$e?fdj„ZWdS )nz0Contains helper utilities for hf CLI extensions.é    N)ÚasdictÚ	dataclass)ÚdatetimeÚtimezone)ÚEnum)ÚPath)Ú	AnnotatedÚLiteral)ÚCLIErrorÚCLIExtensionInstallErrorÚConfirmationError)Úget_sessionÚloggingé   )Útyper_factory)ÚArgumentÚOption)ÚoutÚhuggingfacez~/.local/share/hf/extensionszmanifest.jsonzŒManage hf CLI extensions.

Security Warning: extensions are third-party executables or Python packages. Install only from sources you trust.)Úhelpzhf-extensioné
   i,  c                   ó   — e Zd ZdZdZdZdS )Ú_ExtensionUpdateStatusÚupdatedÚ
up_to_dateÚskippedN)Ú__name__Ú
__module__Ú__qualname__ÚUPDATEDÚ
UP_TO_DATEÚSKIPPED© ó    ú\/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/huggingface_hub/cli/extensions.pyr   r   7   s   € € € € € Ø€GØ€JØ€G€G€Gr$   r   c                   óº   — e Zd ZU eed<   eed<   eed<   eed<   eed<   ed         ed<   eed<   d	Zed	z  ed
<   d	Zed	z  ed<   e	de
dd fd„¦   «         Zde
dd	fd„Zd	S )ÚExtensionManifestÚownerÚrepoÚrepo_idÚ
short_nameÚexecutable_path)ÚbinaryÚpythonÚtypeÚinstalled_atNÚdescriptionÚ
commit_shaÚpathÚreturnc                 óD  ‡ — |t           z  }|                     ¦   «         st          d|› d�¦  «        ‚t          j        |                     ¦   «         ¦  «        }ˆ fd„|                     ¦   «         D ¦   «         }t          j        |d         ¦  «        |d<   t          di |¤ŽS )NzManifest file not found at z". Your extension may be corrupted.c                 ó.   •— i | ]\  }}|‰j         v ¯||“ŒS r#   )Ú__dataclass_fields__)Ú.0ÚkeyÚvalueÚclss      €r%   ú
<dictcomp>z*ExtensionManifest.load.<locals>.<dictcomp>P   s,   ø€ Ð]Ð]Ð]™z˜s E¸SÀCÔD\Ð=\Ð=\��UÐ=\Ð=\Ð=\r$   r0   r#   )
ÚMANIFEST_FILENAMEÚis_filer   ÚjsonÚloadsÚ	read_textÚitemsr   Úfromisoformatr'   )r;   r3   Úmanifest_pathÚdatas   `   r%   ÚloadzExtensionManifest.loadI   s§   ø€ àÕ0Ñ0ˆØ×$Ò$Ñ&Ô&ð 	lÝÐj¸ÐjÐjÐjÑkÔkÐkÝŒz˜-×1Ò1Ñ3Ô3Ñ4Ô4ˆà]Ð]Ð]Ð]¨T¯ZªZ©\¬\Ð]Ñ]Ô]ˆÝ'Ô5°d¸>Ô6JÑKÔKˆˆ^ÑÝ Ð(Ð( 4Ð(Ð(Ð(r$   c                 óü   — |t           z  }|j                             dd¬¦  «         t          | ¦  «        }| j                             ¦   «         |d<   |                     t          j        |dd¬¦  «        ¦  «         d S )NT©ÚparentsÚexist_okr0   é   )ÚindentÚ	sort_keys)	r=   ÚparentÚmkdirr   r0   Ú	isoformatÚ
write_textr?   Údumps)Úselfr3   rD   rE   s       r%   ÚsavezExtensionManifest.saveT   sx   € ØÕ0Ñ0ˆØÔ×"Ò"¨4¸$Ð"Ñ?Ô?Ð?Ý�d‰|Œ|ˆØ#Ô0×:Ò:Ñ<Ô<ˆˆ^ÑØ× Ò ¥¤¨D¸ÀdÐ!KÑ!KÔ!KÑLÔLÐLÐLÐLr$   )r   r   r   ÚstrÚ__annotations__r
   r   r1   r2   Úclassmethodr   rF   rT   r#   r$   r%   r'   r'   =   sã   € € € € € € à€J€J�JØ
€I€I�IØ€L€L�LØ€O€O�OØÐÐÑØ
Ð$Ô
%Ð%Ð%Ñ%ØÐÐÑØ"€K��t‘Ð"Ð"Ñ"Ø!€J��d‘
Ð!Ð!Ñ!àð)˜ð )Ð!4ð )ð )ð )ñ „[ð)ðM˜ð M $ð Mð Mð Mð Mð Mð Mr$   r'   Úinstall)zhf extensions install hf-claudez-hf extensions install hanouticelina/hf-claudez(hf extensions install alvarobartt/hf-mem)ÚexamplesFÚctxr*   z:GitHub extension repository in `[OWNER/]hf-<name>` format.Úforcez--forcezOverwrite if already installed.r4   c                 ó¦  — t          |¦  «        \  }}}|                      ¦   «         }t          t          |j        di ¦  «                             ¦   «         ¦  «        }||v rt          d|› d|› d�¦  «        ‚t          |¦  «        }|                     ¦   «         r|st          d|› d�¦  «        ‚t          ||¬¦  «        \  }	}
|                     ¦   «         rt          j        |¦  «         t          ||||	|
¬¦  «        }|j                             ¦   «         }t          j        |› d	�|› d
|› �d|› �¬¦  «         t          j        d|› �¦  «         dS )z´Install an extension from a public GitHub repository.

    Security warning: this installs a third-party executable or Python package.
    Install only from sources you trust.
    ÚcommandszCannot install extension 'z,' because it conflicts with an existing `hf z
` command.úExtension 'z1' is already installed. Use --force to overwrite.©r(   Ú	repo_name©r(   r`   r+   Úbranchr1   z extension installedú/úhf )ÚsourceÚcommandzRun it with: hf N)Ú_normalize_repo_idÚ	find_rootÚsetÚgetattrrf   Úkeysr   Ú_get_extension_dirÚexistsÚ_fetch_github_repo_infoÚshutilÚrmtreeÚ_install_extensionr/   Ú
capitalizer   ÚresultÚhint)rZ   r*   r[   r(   r`   r+   Úroot_ctxÚreserved_commandsÚextension_dirrb   r1   ÚmanifestÚext_types                r%   Úextension_installrz   \   s›  € õ* $6°gÑ#>Ô#>Ñ €Eˆ9�jØ�}Š}‰Œ€HÝ�G HÔ$4°jÀ"ÑEÔE×JÒJÑLÔLÑMÔMÐØÐ&Ð&Ð&ÝØw¨ÐwÐwÐakÐwÐwÐwñ
ô 
ð 	
õ ' zÑ2Ô2€MØ×ÒÑÔð d eð dÝÐb ZÐbÐbÐbÑcÔcÐcå1¸ÈÐSÑSÔSÑ€FˆKØ×ÒÑÔð %åŒ�mÑ$Ô$Ð$Ý!Ø˜y°ZÈÐ\gðñ ô €Hð Œ}×'Ò'Ñ)Ô)€HÝ„JØÐ)Ð)Ð)ØÐ%Ð%˜)Ð%Ð%Ø"�jÐ"Ð"ðñ ô ð õ
 „HÐ, 
Ð,Ð,Ñ-Ô-Ð-Ð-Ð-r$   Úupdate)zhf extensions updatezhf extensions update hf-claudez'hf extensions update alvarobartt/hf-memÚnamez¨Extension to update (with or without `hf-` prefix, optionally as `OWNER/hf-<name>`). If omitted, all installed extensions are checked and the outdated ones are updated.c                 ó
  — | �št          | ¦  «        }t          |¦  «        }|xt          j        k    r# t	          j        d|j        |j        ¬¦  «         nFxt          j        k    r& t	          j        d|j        › d�|j        ¬¦  «         nt          j	        k    r	 dS t          ¦   «         }|s*t	          j        d¦  «         t	          j        d¦  «         dS g }g }|D ]à}t	          j        d	|j        › d
|j        › d�¦  «         	 t          |¦  «        }n?# t          $ r2}t	          j        d|j        › d
|j        › d|› d�¦  «         Y d}~Œod}~ww xY w|xt          j        k    r |                     |j        ¦  «         Œ¤xt          j        k    r |                     |j        ¦  «         ŒÐt          j	        k    rŒàŒát	          j        d|rd                     |¦  «        nd|rd                     |¦  «        nd¬¦  «         dS )z6Update installed extension(s) to their latest version.NzExtension updated)r|   re   r^   z' is already up to date©r|   zNo extensions installed.z1Install one with: hf extensions install <repo_id>z
Checking 'ú' (z)...zCould not update 'ú): ú. Skipping.zExtensions update completez, )r   r   )Ú$_load_installed_extension_for_updateÚ_update_installed_extensionr   r    r   rs   r+   r*   r!   r"   Ú_list_installed_extensionsÚwarningrt   ÚlogÚ	ExceptionÚappendÚjoin)r|   rx   Úupdate_statusÚ	manifestsr   r   Úerrors          r%   Úextension_updater�   �   sa  € ð( ÐÝ7¸Ñ=Ô=ˆÝ3°HÑ=Ô=ˆØØ/Õ'Ô/Ò/Ð/Ð/Ý”
Ð.°XÔ5HÐQYÔQaÐbÑbÔbÐbÐbØ2Õ'Ô2Ò2Ð2Ð2Ý”
ÐU¨Ô)<ÐUÐUÐUÐ\dÔ\oÐpÑpÔpÐpÐpÝ'Ô/Ò/Ð/ØØˆå*Ñ,Ô,€IØð ÝŒÐ.Ñ/Ô/Ð/ÝŒÐDÑEÔEÐEØˆà€GØ€JØð ð ˆÝŒÐK˜XÔ0ÐKÐK°XÔ5EÐKÐKÐKÑLÔLÐLð	Ý7¸ÑAÔAˆMˆMøÝð 	ð 	ð 	åŒKÐl¨XÔ-@ÐlÐlÀXÔEUÐlÐlÐZ_ÐlÐlÐlÑmÔmÐmØˆHˆHˆHˆHøøøøð	øøøð Ø/Õ'Ô/Ò/Ð/Ð/Ø—’˜xÔ2Ñ3Ô3Ð3Ð3Ø2Õ'Ô2Ò2Ð2Ð2Ø×!Ò! (Ô"5Ñ6Ô6Ð6Ð6Ý'Ô/Ò/Ð/Øð 0å„JØ$Ø&-Ð7�—	’	˜'Ñ"Ô"Ð"°4Ø,6Ð@�4—9’9˜ZÑ(Ô(Ð(¸Dðñ ô ð ð ð s   ÄDÄ
EÄ(EÅEÚexecT)Úallow_extra_argsÚallow_interspersed_argsÚignore_unknown_optionsz#hf extensions exec claude -- --helpz/hf extensions exec claude --model zai-org/GLM-5)Úcontext_settingsrY   z.Extension name (with or without `hf-` prefix).c                 ó  — t          |¦  «        }t          |¦  «        }|                     ¦   «         st          d|› d�¦  «        ‚t	          |t          | j        ¦  «        ¬¦  «        }t          j         	                    |¬¦  «        ‚)zExecute an installed extension.r^   ú' is not installed.©r,   Úargs)Úcode)
Ú_normalize_extension_nameÚ"_resolve_installed_executable_pathr>   r   Ú_execute_extension_binaryÚlistr–   ÚclickÚ
exceptionsÚExit)rZ   r|   r+   r,   Ú	exit_codes        r%   Úextension_execr    Ë   s†   € õ  +¨4Ñ0Ô0€JÝ8¸ÑDÔD€Oà×"Ò"Ñ$Ô$ð FÝÐD ZÐDÐDÐDÑEÔEÐEå)¸/ÕPTÐUXÔU]ÑP^ÔP^Ð_Ñ_Ô_€IÝ
Ô
×
Ò
 YÐ
Ñ
/Ô
/Ð/r$   z	list | lszhf extensions listc                  ób   — d„ t          ¦   «         D ¦   «         } t          j        | d¬¦  «         dS )z"List installed extension commands.c                 ó°   — g | ]S}d |j         › �t          |j        ¦  «        t          |j        ¦  «        |j                             d¦  «        |j        dœ‘ŒTS )rd   z%Y-%m-%d)rf   re   r/   Ú	installedr1   )r+   rU   r*   r/   r0   Ústrftimer1   )r8   rx   s     r%   ú
<listcomp>z"extension_list.<locals>.<listcomp>è   st   € ð 	ð 	ð 	ð ð 3˜XÔ0Ð2Ð2Ý˜(Ô*Ñ+Ô+Ý˜œÑ&Ô&Ø!Ô.×7Ò7¸
ÑCÔCØ#Ô/ð	
ð 	
ð	ð 	ð 	r$   rf   ©Úid_keyN)r„   r   Útable)Úrowss    r%   Úextension_listrª   å   sE   € ð	ð 	õ 3Ñ4Ô4ð	ñ 	ô 	€Dõ „Iˆd˜9Ð%Ñ%Ô%Ð%Ð%Ð%r$   Úsearchzhf extensions searchc            	      óÒ  — t          ddt          › �ddddœ¬¦  «        } |                      ¦   «         }d„ t          ¦   «         D ¦   «         }g }|                     d	g ¦  «        D ]m}|d
                              d¦  «        }|                     ||d         |                     dd¦  «        |                     d¦  «        pd||v rdnddœ¦  «         Œnt          j        |d¬¦  «         dS )zISearch extensions available on GitHub (tagged with 'hf-extension' topic).z*https://api.github.com/search/repositoriesztopic:ÚstarsÚdescéd   )ÚqÚsortÚorderÚper_page)Úparamsc                 ó   — h | ]	}|j         ’Œ
S r#   ©r+   )r8   Úms     r%   ú	<setcomp>z#extension_search.<locals>.<setcomp>þ   s   € ÐDÐDÐD !�”ÐDÐDÐDr$   rB   r|   úhf-Ú	full_nameÚstargazers_countr   r1   Ú Úyes)r|   r)   r­   r1   r£   r)   r¦   N)	Ú_github_getÚ_EXTENSIONS_GITHUB_TOPICr?   r„   ÚgetÚremoveprefixrˆ   r   r¨   )ÚresponserE   r£   r©   r)   r+   s         r%   Úextension_searchrÃ   õ   s  € õ Ø4Ø8Õ6Ð8Ð8À'ÐTZÐhkÐlÐlðñ ô €Hð �=Š=‰?Œ?€DàDÐDÕ'AÑ'CÔ'CÐDÑDÔD€Ià€DØ—’˜ "Ñ%Ô%ð 

ð 

ˆØ˜&”\×.Ò.¨uÑ5Ô5ˆ
Ø�Šà"Ø˜[Ô)ØŸšÐ"4°aÑ8Ô8Ø#Ÿxšx¨Ñ6Ô6Ð<¸"Ø&0°IÐ&=Ð&=˜U˜UÀ2ðð ñ	
ô 	
ð 	
ð 	
õ „Iˆd˜6Ð"Ñ"Ô"Ð"Ð"Ð"r$   zremove | rmzhf extensions remove claudez8Extension name to remove (with or without `hf-` prefix).c                 óä   — t          | ¦  «        }t          |¦  «        }|                     ¦   «         st          d|› d�¦  «        ‚t	          j        |¦  «         t          j        d|¬¦  «         dS )zRemove an installed extension.r^   r”   zExtension removedr~   N)r˜   rl   Úis_dirr   ro   rp   r   rs   )r|   r+   rw   s      r%   Úextension_removerÆ     sy   € õ +¨4Ñ0Ô0€JÝ& zÑ2Ô2€Mà×ÒÑ!Ô!ð FÝÐD ZÐDÐDÐDÑEÔEÐEå
„M�-Ñ Ô Ð Ý„JÐ"¨Ð4Ñ4Ô4Ð4Ð4Ð4r$   c                  óâ  — t                                ¦   «         } |                      ¦   «         sg S g }t          |                      ¦   «         ¦  «        D ]›}|                     ¦   «         r|j                             d¦  «        sŒ1	 |                     t           	                    |¦  «        ¦  «         Œ`# t          $ r/}t                               d|j        › d|› �¦  «         Y d}~Œ”d}~ww xY w|S )zPReturn manifests for all validly-installed extensions, sorted by directory name.r¹   z'Failed to load manifest for extension 'ú': N)ÚEXTENSIONS_ROOTÚ
expanduserrÅ   ÚsortedÚiterdirr|   Ú
startswithrˆ   r'   rF   r‡   ÚloggerÚdebug)Úroot_dirr‹   rw   Úes       r%   r„   r„   %  s  € å×)Ò)Ñ+Ô+€HØ�?Š?ÑÔð Øˆ	Ø€IÝ × 0Ò 0Ñ 2Ô 2Ñ3Ô3ð ð ˆØ×#Ò#Ñ%Ô%ð 	¨]Ô-?×-JÒ-JÈ5Ñ-QÔ-Qð 	Øð	Ø×ÒÕ.×3Ò3°MÑBÔBÑCÔCÐCÐCøÝð 	ð 	ð 	Ý�LŠLÐ]À=ÔCUÐ]Ð]ÐZ[Ð]Ð]Ñ^Ô^Ð^ØˆHˆHˆHˆHøøøøð	øøøð Ðs   Â-B3Â3
C,Â=%C'Ã'C,c                  ó¤   — g } t          ¦   «         D ]>}d|j        › d�}|j        �|j        › d|› �n|}|                      |j        |f¦  «         Œ?| S )Nz[extension ú]ú )r„   r*   r1   rˆ   r+   )Úentriesrx   ÚtagÚ	help_texts       r%   Ú"list_installed_extensions_for_helprØ   6  su   € Ø€GÝ.Ñ0Ô0ð 9ð 9ˆØ/˜HÔ,Ð/Ð/Ð/ˆØ7?Ô7KÐ7W�xÔ+Ð3Ð3¨cÐ3Ð3Ð3Ð]`ˆ	Ø�Š˜Ô+¨YÐ7Ñ8Ô8Ð8Ð8Ø€Nr$   r–   Úknown_commandsc                 ó¶  — | sd S | d         }|                      d¦  «        rd S d„ |D ¦   «         }||v rd S 	 t          |                     d¦  «        |¬¦  «        }n# t          $ r Y d S w xY w	 t	          |¦  «        }n# t
          $ r t          |¦  «        }Y nw xY w|�|                     ¦   «         sd S t          |t          | dd …         ¦  «        ¬¦  «        S )Nr   ú-c                 óf   — h | ].}|                      d ¦  «        D ]}|                     ¦   «         ’ŒŒ/S )ú|)ÚsplitÚstrip)r8   ÚcmdÚas      r%   r¸   z7dispatch_unknown_top_level_extension.<locals>.<setcomp>F  s7   € ÐMÐMÐM˜s¸c¿iºiÈ¹n¼nÐMÐM¸�—’‘”ÐMÐMÐMÐMr$   r¹   ©Úoriginal_inputr   r•   )
rÍ   Ú_validate_extension_short_namerÁ   r   r™   r‡   Ú _auto_install_official_extensionr>   rš   r›   )r–   rÙ   Úcommand_nameÚ	all_knownr+   r,   s         r%   Ú$dispatch_unknown_top_level_extensionrè   ?  s)  € Øð Øˆtà˜”7€LØ×Ò˜sÑ#Ô#ð ØˆtØMÐM nÐMÑMÔM€IØ�yÐ Ð ØˆtðÝ3°L×4MÒ4MÈeÑ4TÔ4TÐeqÐrÑrÔrˆ
ˆ
øÝð ð ð ØˆtˆtðøøøðGÝ<¸ZÑHÔHˆˆøÝð Gð Gð GÝ:¸:ÑFÔFˆˆˆðGøøøð Ð o×&=Ò&=Ñ&?Ô&?ÐØˆtå$°_Í4ÐPTÐUVÐUWÐUWÔPXÉ>Ì>ÐZÑZÔZÐZs#   ·$A Á
A*Á)A*Á.A> Á>BÂBr+   c           	      ó¨  — t           d| › �}}t          | ¦  «                             ¦   «         rdS 	 t          ||¬¦  «        \  }}n# t          $ r Y dS w xY w	 t          j        d| › d|› d|› d�¦  «         n# t          $ r Y dS w xY w	 t          ||| ||¬¦  «        }t          |j
        ¦  «                             ¦   «         S # t          $ r Y dS w xY w)	zKTry to auto-install huggingface/hf-<name>. Returns executable path or None.r¹   Nr_   ú'z)' is an official Hugging Face extension (rc   z). Install it?ra   )ÚDEFAULT_EXTENSION_OWNERrl   rm   rn   r‡   r   Úconfirmr   rq   r   r,   rÊ   )r+   r(   r`   rb   r1   rx   s         r%   rå   rå   [  s2  € å.Ð0B°jÐ0BÐ0Bˆ9€EÝ˜*Ñ%Ô%×,Ò,Ñ.Ô.ð ØˆtðÝ5¸EÈYÐWÑWÔWÑˆ��øÝð ð ð ØˆtˆtðøøøðÝŒÐn˜
ÐnÐnÈUÐnÐnÐU^ÐnÐnÐnÑoÔoÐoÐoøÝð ð ð ØˆtˆtðøøøðÝ%Ø 9¸ÈFÐ`kð
ñ 
ô 
ˆõ �HÔ,Ñ-Ô-×8Ò8Ñ:Ô:Ð:øÝð ð ð Øˆtˆtðøøøs5   ±A Á
AÁAÁA7 Á7
BÂBÂ	9C Ã
CÃCc                 ó6  — t          | ¦  «        }t          |¦  «        }|                     ¦   «         sN|                      ¦   «                              d¦  «        \  }}}|r|› d|› �nd|› �}t          d|› d|› �¦  «        ‚t                               |¦  «        S )Nrc   z/hf-r¹   r^   zA' is not installed. Install it first with: hf extensions install )r˜   rl   rÅ   rß   Ú
rpartitionr   r'   rF   )r|   r+   rw   r(   Ú_Úinstall_targets         r%   r‚   r‚   s  s³   € Ý*¨4Ñ0Ô0€JÝ& zÑ2Ô2€MØ×ÒÑ!Ô!ð 
Ø—j’j‘l”l×-Ò-¨cÑ2Ô2‰ˆˆq�!Ø7<ÐT˜EÐ3Ð3 zÐ3Ð3Ð3ÐBTÈ
ÐBTÐBTˆÝØw˜*ÐwÐwÐguÐwÐwñ
ô 
ð 	
õ ×!Ò! -Ñ0Ô0Ð0r$   rx   c                 óÎ  — | j         | j        | j        }}}	 t          ||¬¦  «        \  }}nD# t          $ r7}t          j        d|› d|› d|› d|› d�	¦  «         t          j        cY d }~S d }~ww xY wt          |||d¬¦  «        }|€*t          j        d|› d|› d|› d	�¦  «         t          j        S || j
        k    rt          j        S t          ||||||¬
¦  «         t          j        S )Nr_   zCould not check updates for 'r   rc   r€   r�   F)r(   r`   rb   Úwarnz#): GitHub is unreachable. Skipping.)r(   r`   r+   rb   r1   r2   )r(   r)   r+   rn   r‡   r   r…   r   r"   Ú_fetch_latest_commit_shar2   r!   rq   r    )rx   r(   r`   r+   rb   r1   rŒ   Ú
latest_shas           r%   rƒ   rƒ     sH  € Ø#+¤>°8´=À(ÔBU�jˆ9€Eð.Ý5¸EÈYÐWÑWÔWÑˆ��øÝð .ð .ð .ÝŒÐk°JÐkÐkÀ5ÐkÐkÈ9ÐkÐkÐY^ÐkÐkÐkÑlÔlÐlÝ%Ô-Ð-Ð-Ð-Ð-Ð-Ð-øøøøð.øøøõ *°ÀÐSYÐ`eÐfÑfÔf€JØÐÝŒØq¨JÐqÐq¸5ÐqÐqÀ9ÐqÐqÐqñ	
ô 	
ð 	
õ &Ô-Ð-à�XÔ(Ò(Ð(Ý%Ô0Ð0åØØØØØØðñ ô ð õ "Ô)Ð)s   —, ¬
A-¶,A(Á"A-Á(A-)r1   r2   r(   r`   rb   r1   r2   c                 ó¤  — t          |¦  «        }|                     ¦   «          }d}	 	 t          | |||¬¦  «        }	n# t          $ r d}	Y nw xY w|	�t	          |||	¬¦  «        }
nt          || |||¬¦  «        }
t          | || › d|› �|t          |
¦  «        |	�dndt          j	        t          j        ¦  «        t          | |||¬	¦  «        |pt          | ||¬
¦  «        ¬¦	  «	        }|                     |¦  «         d}||s|rt          j        |d¬¦  «         S S S # t"          $ r ‚ t$          j        $ r$}t)          dt*          › d| › d|› d�¦  «        |‚d}~wt$          j        $ r$}t)          d| › d|› d|j        › d�¦  «        |‚d}~wt          $ r}t)          d| › d|› d|› �¦  «        |‚d}~ww xY w# |s|rt          j        |d¬¦  «         w w w xY w)a  Fetch and install an extension (binary or Python package), then persist its manifest.

    Installs in place: an existing install is overwritten without being removed first, so a failed
    update keeps the previous version working. A failed fresh install is cleaned up entirely.
    F)r(   r`   rb   r+   N)rw   r+   r-   )rw   r(   r`   r+   rb   rc   r-   r.   )r(   r`   rb   Úcandidate_description)r(   r`   rb   )	r(   r)   r*   r+   r,   r/   r0   r1   r2   T)Úignore_errorszPip install timed out after zs for 'z$'. See pip output above for details.z$Failed to install pip package from 'z' (exit code z$). See pip output above for details.z"Failed to install extension from 'rÈ   )rl   rm   Ú_fetch_remote_binaryr‡   Ú_install_binary_extensionÚ_install_python_extensionr'   rU   r   Únowr   ÚutcÚ_try_fetch_remote_descriptionró   rT   ro   rp   r   Ú
subprocessÚTimeoutExpiredr   Ú_EXTENSIONS_PIP_INSTALL_TIMEOUTÚCalledProcessErrorÚ
returncode)r(   r`   r+   rb   r1   r2   rw   Úfresh_installr£   r-   r,   rx   rÑ   s                r%   rq   rq   �  sû  € õ ' zÑ2Ô2€MØ%×,Ò,Ñ.Ô.Ð.€MØ€Ið/=ð	Ý)°ÀÐSYÐfpÐqÑqÔqˆFˆFøÝð 	ð 	ð 	ØˆFˆFˆFð	øøøð ÐÝ7Ø+¸
È6ðñ ô ˆOˆOõ 8Ø+°5ÀIÐZdÐmsðñ ô ˆOõ %ØØØÐ*Ð*˜yÐ*Ð*Ø!Ý Ñ0Ô0Ø#Ð/��°XÝ!œ¥h¤lÑ3Ô3Ý5Ø y¸ÐWbðñ ô ð "ÐnÕ%=ÀEÐU^ÐgmÐ%nÑ%nÔ%nð
ñ 
ô 
ˆð 	�Š�mÑ$Ô$Ð$Øˆ	Øð  ð 	=˜]ð 	=ÝŒM˜-°tÐ<Ñ<Ô<Ð<Ð<ð	=ð 	=øõ ð ð ð ØÝÔ$ð ð ð Ý&ð0Õ+Jð 0ð 0ÐSXð 0ð 0Ð[dð 0ð 0ð 0ñ
ô 
ð ð	øøøøõ Ô(ð ð ð Ý&ð0°5ð 0ð 0¸9ð 0ð 0ÐSTÔS_ð 0ð 0ð 0ñ
ô 
ð ð	øøøøõ ð nð nð nÝ&Ð'eÈEÐ'eÐ'eÐT]Ð'eÐ'eÐbcÐ'eÐ'eÑfÔfÐlmÐmøøøøðnøøøøð ð 	=˜]ð 	=ÝŒM˜-°tÐ<Ñ<Ô<Ð<Ð<ð	=ð 	=øøøsW   ©= ¼D ½AÁ	D ÁAÁB1D ÄF.Ä3EÅF.Å$FÆF.ÆF)Æ)F.Æ.F1 Æ1G)rò   rò   c                 óæ   — 	 t          d| › d|› d|› �ddi¬¦  «        }|j                             ¦   «         pdS # t          $ r-}|r t	          j        d|› d	| › d|› d
|› �¦  «         Y d}~dS d}~ww xY w)zZBest-effort fetch of the latest commit SHA for a branch, used to detect available updates.úhttps://api.github.com/repos/rc   z	/commits/ÚAcceptzapplication/vnd.github.sha)ÚheadersNz'Could not fetch latest commit SHA for 'r   r€   )r¾   Útextrß   r‡   r   r…   )r(   r`   rb   rò   rÂ   rŒ   s         r%   ró   ró   à  sÃ   € ð	ÝØP¨EÐPÐP°IÐPÐPÈÐPÐPØÐ;Ð<ð
ñ 
ô 
ˆð Œ}×"Ò"Ñ$Ô$Ð,¨Ð,øÝð ð ð Øð 	oÝŒKÐmÀ)ÐmÐmÐPUÐmÐmÐXaÐmÐmÐfkÐmÐmÑnÔnÐnØˆtˆtˆtˆtˆtøøøøðøøøs   ‚69 ¹
A0Á"A+Á+A0c                 óh   — t          |¦  «        }d| › d|› d|› d|› �}t          |¦  «        }|j        S )Nú"https://raw.githubusercontent.com/rc   ú/refs/heads/)Ú_get_executable_namer¾   Úcontent)r(   r`   rb   r+   Úexecutable_nameÚraw_urlrÂ   s          r%   rø   rø   î  sL   € Ý*¨:Ñ6Ô6€OØl°5ÐlÐl¸9ÐlÐlÐRXÐlÐlÐ[jÐlÐl€GÝ˜7Ñ#Ô#€HØÔÐr$   rw   r-   c                 óÌ   — |                       dd¬¦  «         | t          |¦  «        z  }|                     |¦  «         t          j        dk    rt          j        |d¦  «         |S )NTrH   Úntií  )rO   r  Úwrite_bytesÚosr|   Úchmod)rw   r+   r-   r,   s       r%   rù   rù   õ  se   € Ø×Ò ¨tÐÑ4Ô4Ð4Ø#Õ&:¸:Ñ&FÔ&FÑF€OØ×Ò Ñ'Ô'Ð'å	„w�$‚€Ý
Œ� %Ñ(Ô(Ð(àÐr$   c           	      óà  — d|› d|› d|› d�}| dz  }t          |t          j        dk    rdnd¦  «        }t          j        d	¦  «        }t          j        ¦   «         }	|                     ¦   «         s¥|	                     d
|› �¦  «         |  	                    dd¬¦  «         |r't          j        |dt          |¦  «        gd¬¦  «         n5t          j        d¬¦  «                             t          |¦  «        ¦  «         |	                     d|› �¦  «         |	                     d|› �¦  «         |r|ddddt          |¦  «        |g}
nt          |¦  «        dddddd|g}
t          j        |
dt"          ¬¦  «         |	                     d|› �¦  «         t%          |¦  «        }t          ||¦  «        }|                     ¦   «         st'          d|› d|› d|› d�¦  «        ‚|                     ¦   «         S )Nzhttps://github.com/rc   z/archive/refs/heads/z.zipÚvenvr  z
python.exer.   Úuvz Creating virtual environment in TrH   )Úcheck)Úwith_pipzVirtual environment created in zInstalling package from ÚpiprX   z--reinstallz--pythonz-mz--disable-pip-version-checkz
--no-inputz--force-reinstall)r  ÚtimeoutzPackage installed from zInstalled package from 'z/' does not expose the required console script 'ú'.)Ú_get_venv_bin_pathr  r|   ro   Úwhichr   Ústatusr>   r{   rO   rþ   ÚrunrU   r  Ú
EnvBuilderÚcreateÚdoner   r  r   Úresolve)rw   r(   r`   r+   rb   Ú
source_urlÚvenv_dirÚvenv_pythonÚuv_pathr  Úinstall_cmdr  Úvenv_executables                r%   rú   rú      sF  € ð [ uÐZÐZ¨yÐZÐZÈfÐZÐZÐZ€JØ˜vÑ%€HÝ$ X½r¼wÈ$º¸¨|¨|ÐT\Ñ]Ô]€KÝŒl˜4Ñ Ô €GåŒZ‰\Œ\€FØ×ÒÑ Ô ð BØ�ŠÐC¸ÐCÐCÑDÔDÐDØ×Ò D°4ÐÑ8Ô8Ð8Øð 	AÝŒN˜G V­S°©]¬]Ð;À4ÐHÑHÔHÐHÐHåŒO TÐ*Ñ*Ô*×1Ò1µ#°h±-´-Ñ@Ô@Ð@Ø�ŠÐ@°hÐ@Ð@ÑAÔAÐAà
‡M‚MÐ9¨ZÐ9Ð9Ñ:Ô:Ð:Øð 
à  y°-ÀÍSÐQ\ÑM]ÔM]Ð_iÐjˆˆõ �ÑÔØØØØ)ØØØð	
ˆõ „N�; dÕ4SÐTÑTÔTÐTØ
‡K‚KÐ6¨*Ð6Ð6Ñ7Ô7Ð7å*¨:Ñ6Ô6€OÝ(¨°?ÑCÔC€OØ×"Ò"Ñ$Ô$ð 
Ýð$ uð $ð $¨yð $ð $Øð$ð $ð $ñ
ô 
ð 	
ð ×"Ò"Ñ$Ô$Ð$r$   rö   c                 óD  — d| › d|› d|› �}	 t          |› dt          › �¦  «        }|                     ¦   «                              d¦  «        }t	          |t
          ¦  «        r|S n# t          $ r Y nw xY w	 t          |› d�¦  «        }|j                             ¦   «         D ]m}| 	                    ¦   «         }| 
                    d¦  «        rB|                     d¦  «        \  }}}	|	 	                    ¦   «          	                    d¦  «        c S Œnn# t          $ r Y nw xY w|S )z…Try to fetch project description either from:
    - manifest.json
    - pyproject.toml

    Only best effort, no error handling.
    r
  rc   r  r1   z/pyproject.tomlú=z"')r¾   r=   r?   rÀ   Ú
isinstancerU   r‡   r  Ú
splitlinesrß   rÍ   Ú	partition)
r(   r`   rb   rö   ÚbaserÂ   r1   Úlinerï   r:   s
             r%   rý   rý   .  sc  € ð X°ÐWÐW¸	ÐWÐWÈvÐWÐW€DðÝ $Ð<Ð<Õ):Ð<Ð<Ñ=Ô=ˆØ—m’m‘o”o×)Ò)¨-Ñ8Ô8ˆÝ�k¥3Ñ'Ô'ð 	ØÐð	øåð ð ð Øˆðøøøð
Ý $Ð7Ð7Ð7Ñ8Ô8ˆð ”M×,Ò,Ñ.Ô.ð 	2ð 	2ˆDØ—:’:‘<”<ˆDØ�Š˜}Ñ-Ô-ð 2Ø"Ÿnšn¨SÑ1Ô1‘��1�eØ—{’{‘}”}×*Ò*¨5Ñ1Ô1Ð1Ð1Ð1ð2ð	2øõ
 ð ð ð Øˆðøøøð !Ð s+   �AA% Á%
A2Á1A2Á6BD ÄD Ä
DÄDc                 ób   — t          | | ¬¦  «         t                               ¦   «         d| › �z  S )Nrâ   r¹   )rä   rÉ   rÊ   r¶   s    r%   rl   rl   S  s7   € õ # :¸jÐIÑIÔIÐIÝ×%Ò%Ñ'Ô'Ð*<°
Ð*<Ð*<Ñ<Ð<r$   )r´   r  Úurlr´   r  c                ó„   — t          ¦   «                              | ||dt          ¬¦  «        }|                     ¦   «          |S )z†Perform a GitHub GET request.

    Shared by every GitHub/Raw fetch in this module so the timeout and redirect policy are shared.
    T)r´   r  Úfollow_redirectsr  )r   rÀ   Ú_EXTENSIONS_DOWNLOAD_TIMEOUTÚraise_for_status)r3  r´   r  rÂ   s       r%   r¾   r¾   Z  sJ   € õ
 ‰}Œ}× Ò ØØØØÝ,ð !ñ ô €Hð ×ÒÑÔÐØ€Or$   c                 óŽ   — t          d| › d|› �¦  «        }|                     ¦   «         }|d         |                     d¦  «        fS )zZFetch `default_branch` + `description` for a GitHub repo from `GET /repos/{owner}/{repo}`.r  rc   Údefault_branchr1   )r¾   r?   rÀ   )r(   r`   rÂ   rE   s       r%   rn   rn   j  sJ   € åÐN¸5ÐNÐNÀ9ÐNÐNÑOÔO€HØ�=Š=‰?Œ?€DØÐ Ô! 4§8¢8¨MÑ#:Ô#:Ð:Ð:r$   c                 ó:   — d| › �}t           j        dk    r|dz  }|S )Nr¹   r  z.exe©r  r|   )r+   r|   s     r%   r  r  q  s(   € Ø�ÐÐ€DÝ	„w�$‚€Ø�‰ˆØ€Kr$   c                 ó    — t          | ¦  «        }t                               |¦  «        }t          |j        ¦  «                             ¦   «         S ©N)rl   r'   rF   r   r,   rÊ   )r+   rw   rx   s      r%   r™   r™   x  s?   € Ý& zÑ2Ô2€MÝ ×%Ò% mÑ4Ô4€HÝ�Ô(Ñ)Ô)×4Ò4Ñ6Ô6Ð6r$   r&  r  c                 óB   — t           j        dk    r| dz  |z  S | dz  |z  S )Nr  ÚScriptsÚbinr;  )r&  r  s     r%   r  r  ~  s-   € Ý	„w�$‚€Ø˜)Ñ# oÑ5Ð5Ø�eÑ˜oÑ-Ð-r$   z^[A-Za-z0-9][A-Za-z0-9._-]*$rã   c                ó>  ‡— |                       ¦   «         Š‰st          d¦  «        ‚t          ˆfd„dD ¦   «         ¦  «        rt          d|› d�¦  «        ‚d‰v sd‰v rt          d|› d�¦  «        ‚t                               ‰¦  «        st          d|› d�¦  «        ‚‰S )	NzExtension name cannot be empty.c              3   ó    •K  — | ]}|‰v V — Œ	d S r=  r#   )r8   Úsepr|   s     €r%   ú	<genexpr>z1_validate_extension_short_name.<locals>.<genexpr>‹  s'   øè è € Ð
.Ð
.˜3ˆ3�$ˆ;Ð
.Ð
.Ð
.Ð
.Ð
.Ð
.r$   )rc   ú\zInvalid extension name 'r  z..ú:z9'. Allowed characters: letters, digits, '.', '_' and '-'.)rß   r   ÚanyÚ_ALLOWED_EXTENSION_NAMEÚ	fullmatch)r+   rã   r|   s     @r%   rä   rä   ‡  sÓ   ø€ Ø×ÒÑÔ€DØð :ÝÐ8Ñ9Ô9Ð9Ý
Ð
.Ð
.Ð
.Ð
. +Ð
.Ñ
.Ô
.Ñ.Ô.ð FÝÐD°.ÐDÐDÐDÑEÔEÐEØˆt€|€|�s˜d�{�{ÝÐD°.ÐDÐDÐDÑEÔEÐEÝ"×,Ò,¨TÑ2Ô2ð 
ÝØp ~ÐpÐpÐpñ
ô 
ð 	
ð €Kr$   c                 óÖ  — d| v rt          d¦  «        ‚|                      d¦  «        }t          |¦  «        dk    rt          }|d         }n;t          |¦  «        dk    rt	          |¦  «        r|\  }}nt          d| › d�¦  «        ‚|                     d	¦  «        st          d
|› d�¦  «        ‚|                     d	¦  «        }|st          d¦  «        ‚t          || ¬¦  «         |||fS )Nz://zEOnly GitHub repositories in `[OWNER/]hf-<name>` format are supported.rc   r   r   rK   z%Expected `[OWNER/]REPO` format, got 'r  r¹   z6Extension repository name must start with 'hf-', got 'z(Invalid extension repository name 'hf-'.râ   )r   rÞ   Úlenrë   ÚallrÍ   rÁ   rä   )r*   Úpartsr(   r`   r+   s        r%   rg   rg   –  s  € Ø�ÐÐÝÐ^Ñ_Ô_Ð_à�MŠM˜#ÑÔ€EÝ
ˆ5�z„z�Q‚€Ý'ˆØ˜!”Hˆ	ˆ	Ý	ˆU‰Œ�qŠˆ�S ™ZœZˆØ ÑˆˆyˆyåÐJ¸wÐJÐJÐJÑKÔKÐKà×Ò Ñ&Ô&ð _ÝÐ]ÐPYÐ]Ð]Ð]Ñ^Ô^Ð^à×'Ò'¨Ñ.Ô.€JØð CÝÐAÑBÔBÐBÝ" :¸gÐFÑFÔFÐFà�)˜ZÐ'Ð'r$   c                 ó¦   — |                       ¦   «                              dd¦  «        d         }t          |                     d¦  «        | ¬¦  «        S )Nrc   r   éÿÿÿÿr¹   râ   )rß   Úrspliträ   rÁ   )r|   r`   s     r%   r˜   r˜   ®  sF   € Ø—
’
‘”×#Ò# C¨Ñ+Ô+¨BÔ/€IÝ)¨)×*@Ò*@ÀÑ*GÔ*GÐX\Ð]Ñ]Ô]Ð]r$   r,   c                 ó  — 	 t          j        t          | ¦  «        g|z   ¦  «        S # t          $ rV}t          j        dk    s|j        t          j        k    r‚ t          j        dt          | ¦  «        g|z   ¦  «        cY d }~S d }~ww xY w)Nr  Úsh)rþ   ÚcallrU   ÚOSErrorr  r|   ÚerrnoÚENOEXEC)r,   r–   rÑ   s      r%   rš   rš   ³  s˜   € ðDÝŒ¥ OÑ 4Ô 4Ð5¸Ñ<Ñ=Ô=Ð=øÝð Dð Dð DÝŒ7�dŠ?ˆ?˜aœg­¬Ò6Ð6ØÝŒ ¥c¨/Ñ&:Ô&:Ð;¸dÑBÑCÔCÐCÐCÐCÐCÐCÐCøøøøðDøøøs   ‚$' §
B±ABÁ<BÂB)Fr=  )r4   N)XÚ__doc__rU  r?   r  Úrero   rþ   r  Údataclassesr   r   r   r   Úenumr   Úpathlibr   Útypingr	   r
   rœ   Úhuggingface_hub.errorsr   r   r   Úhuggingface_hub.utilsr   r   Ú
_cli_utilsr   Ú
_frameworkr   r   Ú_outputr   rë   rÉ   r=   ÚEXTENSIONS_HELPÚextensions_clir¿   r6  r   Ú
get_loggerr   rÎ   rU   r   r'   rf   ÚContextÚboolrz   r�   r    rª   rÃ   rÆ   r›   r„   ÚtuplerØ   ri   Úintrè   rå   r‚   rƒ   rq   ró   Úbytesrø   rù   rú   rý   rl   Údictr¾   rn   r  r™   r  ÚcompilerH  rä   rg   r˜   rš   r#   r$   r%   ú<module>rl     sE	  ðð 7Ð 6à €€€Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€à XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6à %Ð %Ð %Ð %Ð %Ð %Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð ð (Ð Ø�$Ð5Ñ6Ô6€Ø#Ð ð+ð ð
 � OÐ4Ñ4Ô4€Ø)Ð Ø!Ð Ø"%Ð à	ˆÔ	˜HÑ	%Ô	%€ðð ð ð ð ˜S $ñ ô ð ð ðMð Mð Mð Mð Mñ Mô Mñ „ðMð< ×ÒØðð ð ð ñ ô ð Y^ð&.ð &.Ø	Œð&.àØØˆÐRÐSÑSÔSð	Uôð&.ð �T˜6˜6 )Ð2SÐTÑTÔTÐTÔUð&.ð 
ð&.ð &.ð &.ñô ð&.ðR ×ÒØðð ð ð ñ ô ð" 	ð3ð 3Ø
Øˆd‰
Øˆðfð	
ñ 	
ô 	
ð	ôð3ð 
ð3ð 3ð 3ñô ð3ðl ×ÒØ
Ø*.È5ÐlpÐqÐqà-Ø9ðð ñ ô ð0Ø	Œð0à
ØØˆÐFÐGÑGÔGð	Iôð0ð 
ð0ð 0ð 0ñô ð0ð$ ×Ò˜Ð/CÐ.DÐÑEÔEð&ð &ð &ñ FÔEð&ð ×Ò˜Ð,BÐ+CÐÑDÔDð#ð #ð #ñ EÔDð#ð4 ×Ò˜Ð1NÐ0OÐÑPÔPð5Ø
ØØˆÐPÐQÑQÔQð	Sôð5ð
 
ð5ð 5ð 5ñ QÔPð5ð( DÐ):Ô$;ð ð ð ð ð"¨D°°s¸C°x´Ô,Að ð ð ð ð[¨t°C¬yð [È#ÈcÌ(ð [ÐWZÐ]aÑWað [ð [ð [ð [ð8°ð ¸À¹ð ð ð ð ð0	1¨sð 	1Ð7Hð 	1ð 	1ð 	1ð 	1ð*Ð*;ð *Ð@Vð *ð *ð *ð *ðH #Ø!ð@=ð @=ð @=àð@=ð ð@=ð ð	@=ð
 ð@=ð �t‘ð@=ð �d‘
ð@=ð ð@=ð @=ð @=ð @=ðF W[ð ð ð  sð °sð ÀCð Ètð Ð_bÐeiÑ_ið ð ð ð ð 3ð °3ð Àð ÐQTð ÐY^ð ð ð ð ð°ð À#ð Èuð ÐY]ð ð ð ð ð+%Øð+%Ø#&ð+%Ø36ð+%ØDGð+%ØQTð+%à	ð+%ð +%ð +%ð +%ð\"!Øð"!Øð"!Ø(+ð"!ØDGÈ$ÁJð"!àˆ4�Zð"!ð "!ð "!ð "!ðJ= 3ð =¨4ð =ð =ð =ð =ð 48ÐPTð ð ð �Sð  T¨D¡[ð À$ÈÁ+ð ð ð ð ð ; cð ;°cð ;¸eÀCÈÈtÉÀOÔ>Tð ;ð ;ð ;ð ;ð Sð ¨Sð ð ð ð ð7°3ð 7¸4ð 7ð 7ð 7ð 7ð. ð .¸ð .Àð .ð .ð .ð .ð %˜"œ*Ð%DÑEÔEÐ ð¨sð Àsð Èsð ð ð ð ð( ð (¨¨c°3¸¨mÔ(<ð (ð (ð (ð (ð0^ Cð ^¨Cð ^ð ^ð ^ð ^ð
D¨tð D¸4À¼9ð DÈð Dð Dð Dð Dð Dð Dr$   