§
    [�’j¿¡  ã                   ó²  — U 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 d dlm	Z	 d dl
mZ d dlmZ d dl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dlmZmZmZmZmZm Z  ddl!m"Z" erddl#m$Z$ ddl%m&Z& ddl'm(Z(  e¦   «         r
d dl)Z)d dl*m+Z+  ej,        e-¦  «        Z.de› de› de› d�Z/ej0         1                    dd¦  «         2                    ¦   «         Z3e3ev Z4ddddddddœZ5 e¦   «         rbd dl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl6m?Z@ d dl6mAZB d d l6mCZD d d!l6mEZF d"eGfd#„ZCd$eHe         ez  fd%„ZEd"eGfd&„ZIdaJeKdz  eLd'<   d(eKfd)„ZMd(eKfd*„ZNddd+„ZOn;d,Z4d-„ ZCd.„ ZEd/„ ZI G d0„ d1¦  «        Z9 G d2„ d3¦  «        Z: G d4„ d5¦  «        ZPd6„ Z=d7„ Z<d8„ ZOd9d:d;œd<dd;œd=d>d?œd@œZQeKeGeKeGeGf         f         eLdA<   i ZReKeGedz  f         eLdB<   dCeGdz  d(eSfdD„ZT	 dedCeGdEedz  dFeSd(edz  fdG„ZUeRfdHeGdIeKeGedz  f         fdJ„ZVdddfdO„ZA	 	 	 dgdHeGdPeGdz  dQeWeGz  dz  dFeSd(ef
dR„Z?dddSeGdTeGdUeGdz  fdV„ZXd,aYe	dW„ ¦   «         ZZdXe[dYeHeG         dZe[d(e[fd[„Z\	 	 	 	 	 	 	 	 dhdb„Z]g dc¢Z^dS )ié    N)ÚCallable)Úcontextmanager)ÚPath)Ú
ModuleType)ÚTYPE_CHECKINGé   )Ú!get_checkpoint_conversion_mappingÚ&register_checkpoint_conversion_mapping)Úregister_patch_mapping)ÚENV_VARS_TRUE_VALUESÚlogging)Úis_flash_attention_requested)ÚKERNELS_MAX_VERSIONÚKERNELS_MIN_VERSIONÚis_kernels_availableÚis_rocm_platformÚis_torch_availableÚresolve_internal_importé   )Úflash_attention_forward)ÚPretrainedConfig)ÚPreTrainedModel)ÚKernelConfigzh`kernels` is either not installed or uses an incompatible version. Please install a compatible version (z <= version < z), e.g. `pip install kernels==ú`ÚUSE_HUB_KERNELSÚYESzops.gated_delta_rulezops.triton.ssd_combinedz!ops.triton.selective_state_updatezops.selective_scan_interface)Úchunk_gated_delta_ruleÚrecurrent_gated_delta_ruleÚ mamba_split_conv1d_scan_combinedÚselective_state_updateÚmamba_chunk_scan_combinedÚmamba_inner_fnÚselective_scan_fn)ÚCUDAPropertiesÚDeviceÚLayerRepositoryÚLocalLayerRepositoryÚModeÚregister_kernel_mappingÚreplace_kernel_forward_from_hubÚuse_kernel_mapping)Ú
get_kernel)Ú	kernelize)Úuse_kernel_forward_from_hub)Úuse_kernelized_funcÚ
layer_namec                 óx   — t           rt          | ¦  «        S t                               dt          › �¦  «         d„ S )NúFkernels hub usage is disabled through the environment USE_HUB_KERNELS=c                 ó   — | S ©N© ©Úclss    úSC:\Projects\DSCons\.venv\Lib\site-packages\transformers\integrations\hub_kernels.pyú<lambda>z-use_kernel_forward_from_hub.<locals>.<lambda>i   ó   € ˜s€ ó    )Ú_kernels_enabledÚ$_kernels_use_kernel_forward_from_hubÚloggerÚwarning_onceÚ_TRANSFORMERS_USE_HUB_KERNELS©r0   s    r8   r.   r.   b   sF   € Ýð 	#Ý7¸
ÑCÔCÐCå×ÒØxÕYvÐxÐxñô ð ð #�?Ð"r;   Úmodule_namesc                 óœ   — t           r!t          | t          ¦  «        r| g} t          | Ž S t                               dt          › �¦  «         d„ S )Nr2   c                 ó   — | S r4   r5   r6   s    r8   r9   z%use_kernelized_func.<locals>.<lambda>t   r:   r;   )r<   Ú
isinstancer   Ú_kernels_use_kernelized_funcr>   r?   r@   )rB   s    r8   r/   r/   k   s\   € Ýð 	#Ý˜,­Ñ1Ô1ð .Ø ,˜~�Ý/°Ð>Ð>å×ÒØxÕYvÐxÐxñô ð ð #�?Ð"r;   c                 ó¬   — t           r)t                               d¦  «         t          | ¦  «        S t                               dt          › �¦  «         d„ S )Nz“`use_kernel_func_from_hub` is deprecated in transformers v5.16 and will be removed in the future. Please use `use_kernel_forward_from_hub` instead.r2   c                 ó   — | S r4   r5   r6   s    r8   r9   z*use_kernel_func_from_hub.<locals>.<lambda>€   r:   r;   )r<   r>   r?   r=   r@   rA   s    r8   Úuse_kernel_func_from_hubrI   v   sf   € Ýð 		#Ý×Òð fñô ð õ 8¸
ÑCÔCÐCå×ÒØxÕYvÐxÐxñô ð ð #�?Ð"r;   Ú_KERNEL_MAPPING_CACHEÚreturnc                  óR  — i ddt          ddd¬¦  «        i“dt          dt          dd¬¦  «        ¬	¦  «        t          d
ddd¬¦  «        i“ddt          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        ii“ddt          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        ii“ddt          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        ii“ddt          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        ii“ddt          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        ii“ddt          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        ii“ddt          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        ii“ddt          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        ii“ddt          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        ii“ddt          j        t          j        z  t          ddd¬¦  «        t          j        t          j        z  t          ddd¬¦  «        ii“ddt          j        t          j        z  t          dd d¬¦  «        t          j        t          j        z  t          dd!d¬¦  «        ii“d"dt          j        t          j        z  t          dd#d¬¦  «        ii“d$t          j        t          dd%d¬¦  «        t          j        t          dd%d¬¦  «        it          j        t          dd%d¬¦  «        t          j        t          dd%d¬¦  «        it          j        t          d&d$d¬¦  «        it          j        t          d'd$d¬¦  «        it          j        t          dd%d¬¦  «        t          j        t          dd%d¬¦  «        id(œ“d)dt          j        t          dd*d¬¦  «        t          j        t          dd*d¬¦  «        ii“d+t          j        t          d,d+d¬¦  «        t          j        t          d,d+d¬¦  «        it          j        t          d,d+d¬¦  «        t          j        t          d,d+d¬¦  «        it          j        t          d,d+d¬¦  «        it          j        t          d,d-d¬¦  «        id.œ“dt          j        t          j        z  t          d/d0d¬¦  «        iidt          j        t          j        z  t          d/d1d¬¦  «        iidt          j        t          j        z  t          d/d2d¬¦  «        iidt          j        t          j        z  t          d/d3d¬¦  «        iidt          j        t          j        z  t          d/d4d¬¦  «        iidt          j        t          j        z  t          d/d5d¬¦  «        iit          j        t          d6d7d¬¦  «        it          d6d7d¬¦  «        t          j        t          d8d7d¬¦  «        id9œdt          j        t          j        z  t          dd:d¬¦  «        iid;œ¥} | S )<NÚMultiScaleDeformableAttentionÚcudaz!kernels-community/deformable-detrr   )Úrepo_idr0   ÚversionÚQwen3_5GatedDeltaNetéy   )Úmin_capabilityÚmax_capability)ÚtypeÚ
propertieszAtlas-Inference/gdnÚ(ef12347fc77d6ddf1cb72c0bd0af1c7d6cc69172T)rO   r0   ÚrevisionÚtrust_remote_codeÚcausal_conv1d_fnzkernels-community/mamba-ssmr   Úcausal_conv1d_updater   zkernels-community/flar   r!   r   r"   r#   r    Ú	SwiGLUMLPzkernels-community/liger-kernelsÚLigerSwiGLUMLPé   ÚLigerTiledSwiGLUMLPÚGeGLUMLPÚLigerGEGLUMLPÚLigerTiledGEGLUMLPÚLinearÚLigerLinearÚRMSNormÚLigerRMSNormzkernels-community/rmsnormzkernels-community/mlx_rmsnorm)rN   ÚrocmÚxpuÚmpsÚnpuÚRMSNormGatedÚFusedRMSNormGatedÚMegaBlocksMoeMLPzkernels-community/megablocksÚCPUMegaBlocksMoeMLP)rN   rg   rh   Úcpuzkernels-community/activationÚFastGELUÚ	QuickGELUÚNewGELUÚSiluÚGeluÚGeluTanhzkernels-community/rotaryÚapply_rotary_transformerszkernels-community/aiter-rope)rh   rN   rg   ÚLigerForCausalLMLossLayer)rp   rq   rr   ÚSiLUÚGeLUru   Úrotary_pos_embÚForCausalLMLoss)r&   r%   r$   r(   ÚTRAININGÚ	INFERENCEÚTORCH_COMPILE)Ú_KERNEL_MAPPINGs    r8   Ú_build_kernel_mappingr€   ˆ   sg	  € ðqi
Ø+Ø�Ø?Ø>Øðñ ô ð.ðqi
ð" #ÝØÝ-¸SÐQTÐUÑUÔUðñ ô õ #Ø1Ø5ØGà&*ðñ ô ð	%ð#qi
ð: ØÝ”M¥?Ø =Ø#5Ø !ð$ñ $ô $õ
 ”N¥OØ =Ø#5Ø !ð%ñ %ô %ðð!ð;qi
ðV #ØÝ”M¥?Ø =Ø#9Ø !ð$ñ $ô $õ
 ”N¥OØ =Ø#9Ø !ð%ñ %ô %ðð%ðWqi
ðr %ØÝ”M¥?Ø 7Ø#;Ø !ð$ñ $ô $õ
 ”N¥OØ 7Ø#;Ø !ð%ñ %ô %ðð'ðsqi
ðN )ØÝ”M¥?Ø 7Ø#?Ø !ð$ñ $ô $õ
 ”N¥OØ 7Ø#?Ø !ð%ñ %ô %ðð+ðOqi
ðj (ØÝ”M¥?Ø =Ø#>Ø !ð$ñ $ô $õ
 ”N¥OØ =Ø#>Ø !ð%ñ %ô %ðð*ðkqi
ðF /ØÝ”M¥?Ø =Ø#EØ !ð$ñ $ô $õ
 ”N¥OØ =Ø#EØ !ð%ñ %ô %ðð1ðGqi
ðb ØÝ”M¥?Ø =Ø#3Ø !ð$ñ $ô $õ
 ”N¥OØ =Ø#3Ø !ð%ñ %ô %ðððcqi
ð~  ØÝ”M¥?Ø =Ø#6Ø !ð$ñ $ô $õ
 ”N¥OØ =Ø#6Ø !ð%ñ %ô %ðð"ðqi
ðZ %ØÝ”M¥?Ø =Ø#;Ø !ð$ñ $ô $õ
 ”N¥OØ =Ø#;Ø !ð%ñ %ô %ðð'ð[qi
ðv ØÝ”N¥TÔ%7Ñ7½Ø AØ#3Ø !ð:ñ :ô :õ
 ”M¥DÔ$6Ñ6½Ø AØ#8Ø !ð9ñ 9ô 9ðððwqi
ðR ØÝ”N¥TÔ%7Ñ7½Ø AØ#2Ø !ð:ñ :ô :õ
 ”M¥DÔ$6Ñ6½Ø AØ#7Ø !ð9ñ 9ô 9ðððSqi
ðn ØÝ”M¥DÔ$6Ñ6½Ø AØ#0Ø !ð9ñ 9ô 9ðððoqi
ð@ õ ”M¥?Ø AØ#1Ø !ð$ñ $ô $õ
 ”N¥OØ AØ#1Ø !ð%ñ %ô %ðõ ”M¥?Ø AØ#1Ø !ð$ñ $ô $õ
 ”N¥OØ AØ#1Ø !ð%ñ %ô %ðõ ”N¥OØ ;Ø#,Ø !ð%ñ %ô %ðõ ”N¥OØ ?Ø#,Ø !ð%ñ %ô %ðõ ”M¥?Ø AØ#1Ø !ð$ñ $ô $õ
 ”N¥OØ AØ#1Ø !ð%ñ %ô %ððQ4ð 4ðAqi
ðj ØÝ”M¥?Ø 7Ø#6Ø !ð$ñ $ô $õ
 ”N¥OØ 7Ø#6Ø !ð%ñ %ô %ðððkqi
ðF å”M¥?Ø >Ø#5Ø !ð$ñ $ô $õ
 ”N¥OØ >Ø#5Ø !ð%ñ %ô %ðõ ”M¥?Ø >Ø#5Ø !ð$ñ $ô $õ
 ”N¥OØ >Ø#5Ø !ð%ñ %ô %ðõ ”N¥OØ >Ø#5Ø !ð%ñ %ô %ðõ ”N¥OØ >Ø#8Ø !ð%ñ %ô %ððA'!ð '!ðGqi
ðX	 Ý”N¥TÔ%7Ñ7½Ø >Ø#-Ø !ð:ñ :ô :ððð Ý”N¥TÔ%7Ñ7½Ø >Ø#.Ø !ð:ñ :ô :ððð Ý”N¥TÔ%7Ñ7½Ø >Ø#,Ø !ð:ñ :ô :ððð Ý”N¥TÔ%7Ñ7½Ø >È6Ð[\ð:ñ :ô :ððð Ý”N¥TÔ%7Ñ7½Ø >È6Ð[\ð:ñ :ô :ððð Ý”N¥TÔ%7Ñ7½Ø >È:Ð_`ð:ñ :ô :ððõ ”N¥OØ :ÐGbÐlmð%ñ %ô %ðõ
 (Ø6ÐC^Ðhiðñ ô õ ”N¥OØ >ÐKfÐpqð%ñ %ô %ððð ð  Ý”M¥DÔ$6Ñ6½Ø AÐNiÐstð9ñ 9ô 9ðð ðUqi
ð qi
ð qi
ˆðf Ðr;   c                  ó:   — t           €t          ¦   «         a t           S )zPReturn the default transformers kernel mapping, building it lazily on first use.)rJ   r€   r5   r;   r8   Úget_kernel_mapping_transformersr‚   þ  s   € õ !Ð(Ý$9Ñ$;Ô$;Ð!Ý$Ð$r;   c                 óD   — | €t          ¦   «         } t          | ¦  «         d S r4   )r‚   r)   )Úmappings    r8   Ú$register_kernel_mapping_transformersr…     s&   € Øˆ?Ý5Ñ7Ô7ˆGÝ Ñ(Ô(Ð(Ð(Ð(r;   Fc                  ó   — d„ }|S )Nc                 ó   — | S r4   r5   r6   s    r8   Ú	decoratorz.use_kernel_forward_from_hub.<locals>.decorator  ó   € ØˆJr;   r5   ©ÚargsÚkwargsrˆ   s      r8   r.   r.     ó   € ð	ð 	ð 	ð Ðr;   c                  ó   — d„ }|S )Nc                 ó   — | S r4   r5   r6   s    r8   rˆ   z&use_kernelized_func.<locals>.decorator  r‰   r;   r5   rŠ   s      r8   r/   r/     r�   r;   c                  ó   — d„ }|S )Nc                 ó   — | S r4   r5   r6   s    r8   rˆ   z+use_kernel_func_from_hub.<locals>.decorator  r‰   r;   r5   rŠ   s      r8   rI   rI     r�   r;   c                   ó   — e Zd Zd„ Zd„ ZdS )r&   c                 ó    — t          d¦  «        ‚)NzNLayerRepository requires `kernels` to be installed. Run `pip install kernels`.©ÚRuntimeError©Úselfr‹   rŒ   s      r8   Ú__init__zLayerRepository.__init__"  s   € ÝÐoÑpÔpÐpr;   c                 ó    — t          d¦  «        ‚)NzMLayerRepository requires `kernels` to be installed. Run `pip install kernels.©ÚNotImplementedError©r—   s    r8   ÚloadzLayerRepository.load%  s   € Ý%Ð&uÑvÔvÐvr;   N©Ú__name__Ú
__module__Ú__qualname__r˜   r�   r5   r;   r8   r&   r&   !  s:   € € € € € ð	qð 	qð 	qð	wð 	wð 	wð 	wð 	wr;   r&   c                   ó   — e Zd Zd„ Zd„ ZdS )r'   c                 ó    — t          d¦  «        ‚)NzSLocalLayerRepository requires `kernels` to be installed. Run `pip install kernels`.r”   r–   s      r8   r˜   zLocalLayerRepository.__init__)  s   € ÝÐtÑuÔuÐur;   c                 ó    — t          d¦  «        ‚)NzRLocalLayerRepository requires `kernels` to be installed. Run `pip install kernels.rš   rœ   s    r8   r�   zLocalLayerRepository.load,  s   € Ý%Ødñô ð r;   Nrž   r5   r;   r8   r'   r'   (  s5   € € € € € ð	vð 	vð 	vð	ð 	ð 	ð 	ð 	r;   r'   c                   ó   — e Zd Zd„ ZdS )ÚFuncRepositoryc                 ó    — t          d¦  «        ‚)NzMFuncRepository requires `kernels` to be installed. Run `pip install kernels`.r”   r–   s      r8   r˜   zFuncRepository.__init__2  s   € ÝÐnÑoÔoÐor;   N)rŸ   r    r¡   r˜   r5   r;   r8   r¦   r¦   1  s(   € € € € € ð	pð 	pð 	pð 	pð 	pr;   r¦   c                  ó    — t          d¦  «        ‚)Nz^replace_kernel_forward_from_hub requires `kernels` to be installed. Run `pip install kernels`.r”   ©r‹   rŒ   s     r8   r*   r*   5  s   € ÝØlñ
ô 
ð 	
r;   c                  ó    — t          d¦  «        ‚)NzVregister_kernel_mapping requires `kernels` to be installed. Run `pip install kernels`.r”   r©   s     r8   r)   r)   :  s   € ÝÐsÑtÔtÐtr;   c                  ó    — t          d¦  «        ‚)Nzcregister_kernel_mapping_transformers requires `kernels` to be installed. Run `pip install kernels`.r”   r©   s     r8   r…   r…   =  s   € ÝØqñ
ô 
ð 	
r;   z!kernels-community/finegrained-fp8é   )rO   rP   zkernels-community/deep-gemmzkernels-community/sonic-moez
ep-support)rO   rX   )zfinegrained-fp8z	deep-gemmz	sonic-moeÚ_HUB_KERNEL_MAPPINGÚ_KERNEL_MODULE_MAPPINGÚattn_implementationc                 ó8   — | duot          j        d| ¦  «        duS )zJCheck whether `attn_implementation` matches a kernel pattern from the hub.Nz'^[^/:]+/[^/:]+(?:@[^/:]+)?(?::[^/:]+)?$)ÚreÚsearch)r¯   s    r8   Ú	is_kernelr³   L  s.   € ð 	 4Ð'ð 	cÝŒIÐ@ÐBUÑVÔVÐ^bÐbðr;   Úattention_wrapperÚallow_all_kernelsc                 ó¨  — ddl m} ddlm} d| v r|                      d¦  «        d         n| }t          |¦  «        sdS t          ¦   «         st          t          ¦  «        ‚d|v r-|                     d¦  «        \  }}| 	                    ¦   «         }n|}d}| 	                    ¦   «         }| 
                    d¦  «        \  }}}	| 	                    ¦   «         }|	r|	 	                    ¦   «         nd}	d}
|	€t          |d	¬
¦  «        }|rdnd}
	 t          ||	|
|¬¦  «        }n2# t          $ r ‚ t          $ r}t          d|› d|› d�¦  «        ‚d}~ww xY wd}t          |d¦  «        r|€t           }|}n1t          |d¦  «        rddlm} |�|n|}d}n|�t'          ||¦  «        }|                     | |¦  «         |                     | ||         ¦  «         |S )a  
    Load and register the kernel associated to `attn_implementation`.

    Args:
        attn_implementation: A string, usually a kernel repo like "kernels-community/flash-mla".
        attn_wrapper: a callable for the wrapper around the attention implementation. In `transformers` we
            have a wrapper around the `flash_attn_var_len` call, and the same goes for `sdpa` and `eager`.
            They just prepare the arguments properly. This is mostly used for continuous batching, where we
            want the `paged` wrapper, which calls the paged cache.
        allow_all_kernels (`bool`, optional):
            Whether to load kernels from unverified hub repos, if it is a custom kernel outside of the `kernels-community`
            hub repository.
    r   )ÚALL_MASK_ATTENTION_FUNCTIONS)ÚALL_ATTENTION_FUNCTIONSú|r   Nú:ú@r¬   )Ú"requested_attention_implementationrP   r   ©rX   rP   rµ   z-An error occurred while trying to load from 'z': ú.Úflash_attention_2Úflash_attn_varlen_funcÚsparse_atten_func)Úmsa_attention_forwardÚsdpa)Úmasking_utilsr·   Úmodeling_utilsr¸   Úsplitr³   r   ÚImportErrorÚ_MISSING_KERNELS_MESSAGEÚstripÚ	partitionr   r,   Ú
ValueErrorÚ	ExceptionÚhasattrr   Úmsa_attentionrÂ   ÚgetattrÚregister)r¯   r´   rµ   r·   r¸   Úactual_attn_namerO   Úkernel_nameÚ_ÚrevrP   Úis_fa4ÚkernelÚeÚmask_implementationÚkernel_functionrÂ   s                    r8   Úload_and_register_attn_kernelrÚ   T  sz  € ð  =Ð<Ð<Ð<Ð<Ð<Ø8Ð8Ð8Ð8Ð8Ð8à<?ÐCVÐ<VÐ<VÐ*×0Ò0°Ñ5Ô5°aÔ8Ð8Ð\oÐÝÐ%Ñ&Ô&ð ØˆtÝÑ!Ô!ð 4ÝÕ2Ñ3Ô3Ð3ð ÐÐÐØ/×5Ò5°cÑ:Ô:Ñˆ�Ø!×'Ò'Ñ)Ô)ˆˆà"ˆØˆØ�mŠm‰oŒo€Gà×'Ò'¨Ñ,Ô,�O€GˆQ�Ø�mŠm‰oŒo€Gð Ð
&ˆ#�)Š)‰+Œ+ˆ+ $€CØ€GØ
€{å-ÐQXÐbcÐdÑdÔdˆØÐ$�!�! 1ˆð[Ý˜G¨c¸7ÐVgÐhÑhÔhˆˆøÝð ð ð ØÝð [ð [ð [ÝÐYÈÐYÐYÐUVÐYÐYÐYÑZÔZÐZøøøøð[øøøð .ÐÝˆvÐ/Ñ0Ô0ð 7ØÐ$Ý 7ÐØ+ˆˆÝ	�Ð,Ñ	-Ô	-ð 
7ð
 	9Ð8Ð8Ð8Ð8Ð8à/@Ð/LÐ+Ð+ÐRgˆØ$ÐÐØ	Ð	 Ý! &¨+Ñ6Ô6ˆð ×$Ò$Ð%8¸/ÑJÔJÐJØ ×)Ò)Ð*=Ð?[Ð\oÔ?pÑqÔqÐqà€Ms   ÄD ÄEÄ3E	Å	ErÒ   r„   c                 óÈ  — | |v r#t          ||          t          ¦  «        r||          S | t          vr%t                               d| › d�¦  «         d || <   d S t          ¦   «         rÍt          rÆ	 t          |          d         }t          |                               dd ¦  «        }t          |                               dd ¦  «        }|€|€d}t          |||t          ¬¦  «        }||| <   n÷# t          $ r/}d || <   t                               d| › d	|› �¦  «         Y d }~nÃd }~wt          $ r d || <   Y n¯w xY w|                      d
d¦  «        }d|› d�}	 t          j        dt          ¦  «        }	t!          |	|d ¦  «        }
n# t"          $ r d }
Y nw xY wt%          |
¦  «        r< |
¦   «         r2	 t          j        |› ¦  «        }||| <   |S # t"          $ r d || <   Y n	w xY wd || <   ||          S )NzKernel z! not found in _HUB_KERNEL_MAPPINGrO   rX   rP   r   r½   zFailed to load kernel z: ú-rÓ   Úis_Ú
_availablez..utils.import_utils)rE   r   r­   r>   r?   r   r<   Úgetr,   ÚALLOW_ALL_KERNELSÚFileNotFoundErrorÚAssertionErrorÚreplaceÚ	importlibÚimport_moduleÚ__package__rÏ   rÌ   Úcallable)rÒ   r„   rO   rX   rP   rÖ   r×   Únew_kernel_nameÚ	func_nameÚ	utils_modÚis_kernel_availableÚmodules               r8   Úlazy_load_kernelrí   ¢  s‚  € Ø�gÐÐ¥*¨W°[Ô-AÅ:Ñ"NÔ"NÐØ�{Ô#Ð#ØÕ-Ð-Ð-Ý×ÒÐT kÐTÐTÐTÑUÔUÐUØ#ˆ�ÑØˆtÝÑÔð &(Õ"2ð &(ð	(Ý)¨+Ô6°yÔAˆGÝ*¨;Ô7×;Ò;¸JÈÑMÔMˆHÝ)¨+Ô6×:Ò:¸9ÀdÑKÔKˆGàˆ 8Ð#3Ø�å °(ÀGÕ_pÐqÑqÔqˆFØ#)ˆG�KÑ Ð øÝ ð 	Mð 	Mð 	MØ#'ˆG�KÑ Ý×ÒÐ K¸Ð KÐ KÈÐ KÐ KÑLÔLÐLÐLÐLÐLÐLÐLøøøøÝð 	(ð 	(ð 	(à#'ˆG�KÑ Ð Ð ð	(øøøð &×-Ò-¨c°3Ñ7Ô7ˆØ5˜/Ð5Ð5Ð5ˆ	ð	'Ý!Ô/Ð0FÍÑTÔTˆIÝ")¨)°YÀÑ"EÔ"EÐÐøÝð 	'ð 	'ð 	'Ø"&ÐÐÐð	'øøøõ Ð'Ñ(Ô(ð 		(Ð-@Ð-@Ñ-BÔ-Bð 		(ð,Ý"Ô0°OÐ1EÑFÔF�Ø'-�˜Ñ$Ø�øÝð ,ð ,ð ,Ø'+�˜Ñ$Ð$Ð$ð,øøøð $(ˆG�KÑ à�;ÔÐsC   Á,A8C% Ã%
D.Ã/%DÄD.Ä-D.Å+E: Å:F	ÆF	Æ&G ÇGÇGÚmodelr   ÚmodeúMode | Nonec                 ó¦  — t          ¦   «         st          t          ¦  «        ‚d„ }| j        st          j        n|€t          j        n|} || j        j        ¦  «        }| j	        �S| j	        j
         }t          | j	        j        |¬¦  «        5  t          | ||¬¦  «         ddd¦  «         n# 1 swxY w Y   nt          | ||¬¦  «         d| _        dS )zYTemporarily register hidden kernel wrappers so `kernelize` can discover and replace them.c                 óN   — | dk    rt          ¦   «         rd} t          | ¬¦  «        S )NrN   rg   )rU   )r   r%   )Údevice_types    r8   Ú
get_devicezkernelize.<locals>.get_deviceÙ  s/   € Ø˜&Ò Ð Õ%5Ñ%7Ô%7Ð Ø ˆKÝ˜;Ð'Ñ'Ô'Ð'r;   N)Úinherit_mapping)Údevicerï   T)r   rÇ   rÈ   Útrainingr(   r}   r|   rö   rU   Úkernel_configÚuse_local_kernelr+   Úkernel_mappingÚ_kernels_kernelizeÚ_use_kernels)rî   rï   rô   rö   rõ   s        r8   r-   r-   Ô  s3  € åÑ!Ô!ð 4ÝÕ2Ñ3Ô3Ð3ð(ð (ð (ð
 "'¤Ð\�4Œ>ˆ>ÀdÀlµT´]°]ÐX\€DØˆZ˜œÔ)Ñ*Ô*€FàÔÐ&Ø#Ô1ÔBÐBˆÝ Ô 3Ô BÐTcÐdÑdÔdð 	@ð 	@Ý˜u¨V¸$Ð?Ñ?Ô?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@øõ 	˜5¨°dÐ;Ñ;Ô;Ð;à€EÔÐÐs   ÂB,Â,B0Â3B0rX   rP   c                 ó†   — ddl m} t          ¦   «         st          t          ¦  «        ‚d|| dœ}t          | ||||¬¦  «        S )Nr   )Ú__version__Útransformers)Ú	frameworkrP   rO   )rX   rP   Ú
user_agentrY   )Ú rþ   r   rÇ   rÈ   Úget_kernel_hub)rÒ   rX   rP   rµ   rþ   r  s         r8   r,   r,   ë  sf   € ð ÐÐÐÐÐåÑ!Ô!ð 4ÝÕ2Ñ3Ô3Ð3à-¸+ÐR]Ð^Ð^€JÝØ˜h°ÀJÐbsðñ ô ð r;   ré   ÚpackageÚinternal_pathc                 ó¢   ‡‡‡— t          | ¦  «        Št                               | |¦  «        }|€| n|› d| › �Šdt          dt          fˆˆˆfd„}|S )a¢  
    The same as `use_kernel_forward_from_hub` but with the optional fallback to an original package if it exists, e.g.,
    FLA for Gated Delta Rule, mamba-ssm for mamba2, etc.

    This combines all options with kernels, enabling kernels on top of the original package if requested as well.
    The order of priority is
        1. Hf kernels (if requested)
        2. Original package
        3. Torch only path
    Nr¾   Útorch_functionrK   c                 óB  •‡‡— d Š	 t          j        ‰¦  «        }t          |‰¦  «        Šn# t          $ r | ŠY nw xY w‰€| n‰Šn# ‰€| n‰Šw xY wt	          t          j        ‰¦  «        j        ¦  «        Št          j	        | ¦  «        ˆˆfd„¦   «         } ‰|¦  «        S )Nc                  óT   •— ˆfd„|                      ¦   «         D ¦   «         } ‰| i |¤ŽS )Nc                 ó$   •— i | ]\  }}|‰v ¯	||“ŒS r5   r5   )Ú.0ÚkÚvÚapplicable_paramss      €r8   ú
<dictcomp>z^use_kernel_func_from_hub_with_fallback.<locals>.decorator.<locals>.wrapped.<locals>.<dictcomp>  s*   ø€ ÐPÐPÐP™t˜q !¸Ð>OÐ9OÐ9O�a˜Ð9OÐ9OÐ9Or;   )Úitems)r‹   rŒ   r  Úimplementations     €€r8   ÚwrappedzJuse_kernel_func_from_hub_with_fallback.<locals>.decorator.<locals>.wrapped  s9   ø€ àPÐPÐPÐP v§|¢|¡~¤~ÐPÑPÔPˆFØ!�> 4Ð2¨6Ð2Ð2Ð2r;   )
rä   rå   r   rÌ   ÚtupleÚinspectÚ	signatureÚ
parametersÚ	functoolsÚwraps)r  rì   r  r  r  Ú	full_pathÚkernel_wrapper_decoratorr  s      @@€€€r8   rˆ   z9use_kernel_func_from_hub_with_fallback.<locals>.decorator  så   øøø€ Øˆð	ZÝÔ,¨WÑ5Ô5ˆFÝ4°V¸YÑGÔGˆNˆNøÝð 	,ð 	,ð 	,Ø+ˆNˆNˆNð	,øøøð 0>Ð/E˜^˜^È>ˆNˆNø¨~Ð/E˜^˜^È>ˆNÐYÐYÐYÐYõ "¥'Ô"3°NÑ"CÔ"CÔ"NÑOÔOÐå	Œ˜Ñ	(Ô	(ð	3ð 	3ð 	3ð 	3ð 	3ñ 
)Ô	(ð	3ð (Ð'¨Ñ0Ô0Ð0s!   ‡$, «A ¬;¸A º;»A ÁA)r.   Ú_KERNELS_INTERNAL_PATH_MAPPINGSrß   r   )ré   r  r  rˆ   r  r  s    `  @@r8   Ú&use_kernel_func_from_hub_with_fallbackr  ü  s†   øøø€ õ  ;¸9ÑEÔEÐõ 4×7Ò7¸	À=ÑQÔQ€MØ*Ð2�	�	¸=Ð8VÐ8VÈ9Ð8VÐ8V€Ið1¥(ð 1­xð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð( Ðr;   c               #   ó*   K  — 	 da dV — da dS # da w xY w)zã
    Context manager used to adjust the value of the global `ALLOW_HUB_KERNELS`. This is needed, as this argument
    cannot be forwarded directly to the `__init__` of the models, where we set the attention implementation.
    TNF)rà   r5   r;   r8   Úallow_all_hub_kernelsr  (  s:   è è € ð"Ø Ðàˆˆˆð "ÐÐÐø˜EÐÐ!Ð!Ð!Ð!s   „ ŽÚ
parent_clsÚchild_namesÚ
kernel_clsc                 ó~   ‡‡‡— | j         Šˆˆˆfd„}t          d| j        › �| fd|i¦  «        }d| j        › �|_        |S )a6  
    Create a new class that inherits from `parent_cls` and fuses the child modules specified in `child_names
    with the provided `kernel_cls`.
    The first child in `child_names` will be replaced with the `kernel_cls`, and the rest will be replaced with
    `nn.Identity()` to keep the same interface.
    c                 óÔ   •‡ —  ‰‰ g|¢R i |¤Ž ˆ fd„‰D ¦   «         } ‰|Ž }t          ‰ ‰d         |¦  «         ‰dd …         D ]$}t          ‰ |t          j        ¦   «         ¦  «         Œ%d S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r5   )rÏ   )r  Únamer—   s     €r8   ú
<listcomp>zMmake_parent_class_for_kernel_fusion.<locals>.patched_init.<locals>.<listcomp>H  s#   ø€ Ð@Ð@Ð@¨D•G˜D $Ñ'Ô'Ð@Ð@Ð@r;   r   r   )ÚsetattrÚnnÚIdentity)	r—   r‹   rŒ   ÚchildrenÚkernel_instancer%  r   r!  Úoriginal_inits	   `     €€€r8   Úpatched_initz9make_parent_class_for_kernel_fusion.<locals>.patched_initF  s›   øø€ Øˆ�dÐ,˜TÐ,Ð,Ð, VÐ,Ð,Ð,Ø@Ð@Ð@Ð@°KÐ@Ñ@Ô@ˆØ$˜* hÐ/ˆÝ��k !”n oÑ6Ô6Ð6Ø   ”Oð 	/ð 	/ˆDÝ�D˜$¥¤¡¤Ñ.Ô.Ð.Ð.ð	/ð 	/r;   ÚFusedr˜   )r˜   rU   rŸ   r¡   )r  r   r!  r-  Úpatched_clsr,  s    ``  @r8   Ú#make_parent_class_for_kernel_fusionr0  9  sr   øøø€ ð Ô'€Mð/ð /ð /ð /ð /ð /ð /õ Ð4˜zÔ2Ð4Ð4°z°mÀjÐR^ÐE_Ñ`Ô`€KØ@ zÔ'>Ð@Ð@€KÔØÐr;   r7   útype[PreTrainedModel]Úconfigr   rø   r   c           
      óô	  ‡ — t          | d¦  «        rt          | j        d¦  «        st          d| j        › d�¦  «        ‚| j        j        }i }i }d }|j                             ¦   «         D �]…\  }}t          |t          t          f¦  «        rd |i}t          |t          ¦  «        r8t          |                     ¦   «         ¦  «        dk    rt          d|› �¦  «        ‚nt          d|›d|›�¦  «        ‚t          t          |                     ¦   «         ¦  «        ¦  «        }t          |t          ¦  «        rd|\  }	}
|
                     d	d ¦  «        }|
                     d
d ¦  «        }|
                     dd¦  «        pt           }|�d
|ind	|i}
|
d|iz  }
|	|
f}n|}	dt           dœ}
|	|
f}|	                     d¦  «        \  }}}|r|st          d|	›d|›�¦  «        ‚|j        rt'          t)          |¦  «        |¬¦  «        }nt+          d+||dœ|
¤Ž}|                     ¦   «         }|€t          d|›�¦  «        ‚t.          j                             |j        ¦  «        }|rt5          ||j        › d�d ¦  «        nd }|�2d|j        vr)t9          j        |j        ¦  «        d„ ¦   «         }||_        t          |t          ¦  «        r&|€|||<   �Œa|j        |_        |||<   |||j        <   �n t          |t          ¦  «        �rŠ|€ t          d|j        ›d|j        › d�¦  «        ‚|j        |_        d„ |D ¦   «         }d„ |D ¦   «         }t          tA          |¦  «        ¦  «        dk    rt          d|› �¦  «        ‚|d          !                    dd¦  «        }d„ |D ¦   «         }|€7tE          j#        d ¦  «        5   | |¦  «        }d d d ¦  «         n# 1 swxY w Y   d}| $                    ¦   «         D ]}\  }Š tK          j&        ||¦  «        sŒtO          ˆ fd!„|D ¦   «         ¦  «        st          d"|›d#|› d$|j        ›�¦  «        ‚d%}tQ          ‰ ¦  «        }tS          |||¦  «        ||j        <   Œ~|st          d&|›d'|j        ›d(�¦  «        ‚tU          |d%¬)¦  «         t          |d*¦  «        r<tW          |¦  «        }tY          |j-        ¦  «        }|�||z   }t]          ||d%¬)¦  «         |||j        <   �Œ‡||_        d S ),NÚconfig_classÚ
model_typezModel z# has no config_class or model_type.r   zLExpected exactly one kernel repo regardless of device/mode specificity, got zInvalid hub repo z for layer rX   rP   rY   F)rP   rY   rº   zInvalid kernel repo string )Ú	repo_pathr0   )rO   r0   z*Could not load kernel class from hub_repo=ÚLayoutÚforwardc                 ó   — d S r4   r5   r–   s      r8   Ú_noop_forwardz?register_kernel_replacements_and_fusions.<locals>._noop_forward›  s   € à�r;   zFused kernel z* requires a companion layout class named 'zLayout' in the same module.c                 ó   — g | ]
}|d          ‘ŒS )r   r5   )r  Úitems     r8   r&  z<register_kernel_replacements_and_fusions.<locals>.<listcomp>¹  s   € Ð<Ð<Ð<¨˜T !œWÐ<Ð<Ð<r;   c                 óF   — g | ]}|                      d d¦  «        d         ‘ŒS )r¾   r   r   ©Úrsplit©r  Úps     r8   r&  z<register_kernel_replacements_and_fusions.<locals>.<listcomp>º  s+   € ÐJÐJÐJ°q˜qŸxšx¨¨QÑ/Ô/°Ô2ÐJÐJÐJr;   zGAll patterns for a fused kernel must share the same parent module, got r   Ú*z\w+c                 óF   — g | ]}|                      d d¦  «        d         ‘ŒS )r¾   r   r>  r@  s     r8   r&  z<register_kernel_replacements_and_fusions.<locals>.<listcomp>Â  s+   € ÐFÐFÐF°1˜1Ÿ8š8 C¨Ñ+Ô+¨AÔ.ÐFÐFÐFr;   Úmetac              3   ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r4   )rÍ   )r  Úchildrì   s     €r8   ú	<genexpr>z;register_kernel_replacements_and_fusions.<locals>.<genexpr>Ì  s-   øè è € ÐKÐK°e�7 6¨5Ñ1Ô1ÐKÐKÐKÐKÐKÐKr;   zModule z* does not have the expected child modules z required for the fused kernel TzNo module matched pattern z for fused kernel z3. Provide the full dotted path from the model root.)Ú	overwriteÚconversion_mappingr5   )/rÍ   r4  rË   rŸ   r5  rú   r  rE   Ústrr  ÚdictÚlenÚvaluesÚnextÚiterrß   rà   rÊ   rù   r'   r   r&   r�   ÚsysÚmodulesr    rÏ   Ú__dict__r  r  r8  Úkernel_layer_nameÚsetrã   Útorchrö   Únamed_modulesr±   Ú	fullmatchÚallrU   r0  r   r	   ÚlistrI  r
   )!r7   r2  rø   r5  Úpatch_mappingÚnew_mappingÚ
meta_modelr0   Úhub_repoÚrepo_strÚmetadatarX   rP   rY   Ú
final_reporO   rÓ   Úlayer_name_in_repoÚrepor!  Ú
kernel_modÚ
layout_clsr:  Úglob_patternsÚparent_patternsÚparent_patternr   Úmatched_anyr%  Ú
module_clsÚexistingÚ
transformsrì   s!                                   @r8   Ú(register_kernel_replacements_and_fusionsrl  S  s¯  ø€ õ
 �3˜Ñ'Ô'ð U­w°sÔ7GÈÑ/VÔ/Vð UÝÐS #¤,ÐSÐSÐSÑTÔTÐTØÔ!Ô,€Jà%'€MØ€Kð €Jà -Ô <× BÒ BÑ DÔ Dð C6ñ C6Ñˆ
�HÝ�h¥¥e Ñ-Ô-ð 	(Ø˜hÐ'ˆHå�h¥Ñ%Ô%ð 	XÝ�8—?’?Ñ$Ô$Ñ%Ô%¨Ò*Ð*Ý ØmÐckÐmÐmñô ð ð +õ
 ÐV°ÐVÐVÈ
ÐVÐVÑWÔWÐWå�˜XŸ_š_Ñ.Ô.Ñ/Ô/Ñ0Ô0ˆõ �h¥Ñ&Ô&ð 	.Ø!)ÑˆH�hà—|’| J°Ñ5Ô5ˆHØ—l’l 9¨dÑ3Ô3ˆGØ (§¢Ð-@À%Ñ HÔ HÐ ]ÕL]ÐØ/6Ð/B˜	 7Ð+Ð+ÈÐU]ÐH^ˆHØÐ,Ð.?Ð@Ñ@ˆHà" HÐ-ˆJˆJàˆHØ#$Õ;LÐMÐMˆHØ" HÐ-ˆJà)1×);Ò);¸CÑ)@Ô)@Ñ&ˆ�Ð&Øð 	bÐ0ð 	bÝÐ`¸8Ð`Ð`ÐR\Ð`Ð`ÑaÔaÐaàÔ)ð 
	Ý'Ý˜w™-œ-Ø-ðñ ô ˆDˆDõ
 #ð ØØ-ðð ð ðð ˆDð —Y’Y‘[”[ˆ
àÐÝÐVÈ(ÐVÐVÑWÔWÐWå”[—_’_ ZÔ%:Ñ;Ô;ˆ
ØR\Ðf•W˜Z¨JÔ,?Ð)GÐ)GÐ)GÈÑNÔNÐNÐbfˆ
àÐ! i°zÔ7JÐ&JÐ&JåŒ_˜ZÔ/Ñ0Ô0ðð ñ 1Ô0ðð "/ˆJÔõ �j¥#Ñ&Ô&ð 9	àÐ!Ø*4�˜JÑ'Ùð ,6Ô+>ˆJÔ(Ø(2ˆM˜*Ñ%ð 0:ˆK˜
Ô+Ñ,Ñ,õ ˜
¥EÑ*Ô*ñ +	ØÐ!Ý ðO JÔ$7ð Oð OØ(Ô1ðOð Oð Oñô ð ð
 ,6Ô+>ˆJÔ(à<Ð<°Ð<Ñ<Ô<ˆMØJÐJ¸MÐJÑJÔJˆOå•3�Ñ'Ô'Ñ(Ô(¨AÒ-Ð-Ý ØmÐ^kÐmÐmñô ð ð -¨QÔ/×7Ò7¸¸VÑDÔDˆNØFÐF¸ÐFÑFÔFˆKàÐ!Ý”\ &Ñ)Ô)ð -ð -Ø!$  V¡¤�Jð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð  ˆKØ *× 8Ò 8Ñ :Ô :ð ð ‘��fÝ”| N°DÑ9Ô9ð ØÝÐKÐKÐKÐK¸{ÐKÑKÔKÑKÔKð Ý$ðD $ð Dð DÐT_ð Dð DØ,6Ô,?ðDð Dñô ð ð #�Ý! &™\œ\�
Ý5XØ ¨Zñ6ô 6�˜jÔ1Ñ2Ð2ð ð Ý ðI°ð Ið IÐU_ÔUhð Ið Ið Iñô ð õ
 	˜}¸Ð=Ñ=Ô=Ð=å�:Ð3Ñ4Ô4ð 	[Ý8¸ÑDÔDˆHÝ˜jÔ;Ñ<Ô<ˆJØÐ#Ø%¨
Ñ2�
Ý2°:¸zÐUYÐZÑZÔZÐZà+5ˆ�JÔ'Ñ(Ñ(à#.€MÔ Ð Ð s   Î4OÏO	ÏO	)r&   r,   r-   rí   r)   r…   rl  r*   r.   rI   r/   r4   )NF)rî   r   rï   rð   )NNF)r7   r1  r2  r   rø   r   rK   N)_r  rä   r  Úosr±   rP  Úcollections.abcr   Ú
contextlibr   Úpathlibr   Útypesr   Útypingr   rI  r	   r
   Úmonkey_patchingr   Úutilsr   r   Úutils.genericr   Úutils.import_utilsr   r   r   r   r   r   Úflash_attentionr   Úconfiguration_utilsr   rÅ   r   Úutils.kernel_configr   rU  Útorch.nnr(  Ú
get_loggerrŸ   r>   rÈ   Úenvironrß   Úupperr@   r<   r  Úkernelsr$   r%   r&   r'   r(   r)   r*   r+   r,   r  r-   rû   r.   r=   r/   rF   rJ  rY  rI   rJ   rK  Ú__annotations__r€   r‚   r…   r¦   r­   r®   Úboolr³   rÚ   rí   Úintr  rà   r  rU   r0  rl  Ú__all__r5   r;   r8   ú<module>rƒ     s–  ðð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø $Ð $Ð $Ð $Ð $Ð $Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à jÐ jÐ jÐ jÐ jÐ jÐ jÐ jØ 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4ð ð 3Ø6Ð6Ð6Ð6Ð6Ð6Ø0Ð0Ð0Ð0Ð0Ð0Ø2Ð2Ð2Ð2Ð2Ð2àÐÑÔð Ø€L€L€LØÐÐÐÐÐð 
ˆÔ	˜HÑ	%Ô	%€ðuØðuð uØ+>ðuð uØ^qðuð uð uð ð !#¤
§¢Ð/@À%Ñ HÔ H× NÒ NÑ PÔ PÐ Ø0Ð4HÐHÐ ð
 5Ø"8Ø(AØAØ!:Ø4Ø7ð#ð #Ð ð ÐÑÔð t
ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ðð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ð LÐKÐKÐKÐKÐKð#°ð #ð #ð #ð #ð	#¨$¨x¬.¸8Ñ*Cð 	#ð 	#ð 	#ð 	#ð
#¨Sð 
#ð 
#ð 
#ð 
#ð  *.Ð˜4 $™;Ð-Ð-Ñ-ðt 4ð tð tð tð tðl%¨Tð %ð %ð %ð %ð)ð )ð )ð )ð )ð Ððð ð ðð ð ðð ð ðwð wð wð wð wñ wô wð wðð ð ð ð ñ ô ð ðpð pð pð pð pñ pô pð pð
ð 
ð 
ð
uð uð uð
ð 
ð 
ð $GÐSTÐUÐUØ:ÀqÐIÐIØ:ÈÐUÐUð2ð 2Ð �T˜#˜t C¨ Hœ~Ð-Ô.ð ð ñ ð 8:Ð ˜˜S *¨tÑ"3Ð3Ô4Ð 9Ð 9Ñ 9ð 3¨¡:ð °$ð ð ð ð ð diðKð KØðKØ19¸D±ðKØ\`ðKà�$ÑðKð Kð Kð Kð\ Pfð / ð /  #ð / °°S¸*ÀtÑ:KÐ5KÔ0Lð / ð / ð / ð / ðdð ð ð ð ð2  Ø $Ø#ð	ð Øðà�D‰jðð �3‰Y˜Ñðð ð	ð
 ðð ð ð ð"%ð %°cð %ÀCð %ÐX[Ð^bÑXbð %ð %ð %ð %ðR Ð ð ð"ð "ñ „ð"ð Øðà�c”ðð ðð 
ð	ð ð ð ð4U/Ø	 ðU/àðU/ð "ðU/ð 
ð	U/ð U/ð U/ð U/ðpð ð €€€r;   